/* ============================================================================
   HABITUAL TOURIST v2.9 — BASE CSS
   ============================================================================ */

   :root { --c-bg:#f5f7fa; --c-card:#fff; --c-text:#222; --c-muted:#666; --c-accent:#06c; --c-border:#ddd; --c-header:#A3DBED; --c-success:#28a745; --c-warning:#f39c12; --c-danger:#dc3545; --c-info:#17a2b8; --c-wip:#fd7e14; --s-2xs:.25rem; --s-xs:.5rem; --s-sm:.75rem; --s-md:1rem; --s-lg:1.5rem; --s-xl:2rem; --s-2xl:2.5rem; --sidebar-w:18rem; --content-max:1400px; --radius-sm:.5rem; --radius-md:.75rem; --bw:.0625rem; --text-base:1rem; --text-sm:.875rem; --text-lg:1.25rem; --text-xl:clamp(1.3rem,5vw,2rem); --touch:44px; --header-h:60px; --admin-h:0px; --sticky-top:calc(var(--header-h) + var(--admin-h)); --box-gap:var(--s-xs); --header-offset:120px; --t:all .2s ease; --shadow:0 2px 4px rgba(0,0,0,.05); --shadow-lg:0 4px 12px rgba(0,0,0,.1); }
   :root.dark { --c-bg:#121212; --c-card:#1e1e1e; --c-text:#e0e0e0; --c-muted:#aaa; --c-accent:#39f; --c-border:#333; }
   *,*::before,*::after { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; max-width:100%; }
   html,body { height:100%; width:100%; background:var(--c-bg); color:var(--c-text); font-family:system-ui,-apple-system,sans-serif; font-size:var(--text-base); line-height:1.6; overflow-x:clip; -webkit-font-smoothing:antialiased; }
   img { max-width:100%; display:block; height:auto; }
   .layout-root,.main-content,.page-content { max-width:100vw; overflow-x:clip; }
   body.sidebar-open { overflow:hidden; touch-action:none; }
   .layout-root { display:grid; grid-template-columns:var(--sidebar-w) 1fr; grid-template-rows:auto auto 1fr auto; grid-template-areas:"header header" "sidebar testatina" "sidebar main" "footer footer"; min-height:100vh; }
   .site-header { grid-area:header; background:var(--c-header); border-bottom:var(--bw) solid var(--c-border); position:sticky; top:0; z-index:100; }
   .site-testatina-wrapper { grid-area:testatina; }
   .main-content { grid-area:main; padding:0 var(--s-lg) var(--s-lg); min-width:0; }
   .site-footer { grid-area:footer; background:var(--c-card); border-top:var(--bw) solid var(--c-border); padding:var(--s-lg); text-align:center; }
   .header-inner { display:flex; align-items:center; justify-content:space-between; gap:var(--s-lg); padding:var(--s-xs) var(--s-lg); flex-wrap:wrap; }
   .logo { display:flex; align-items:center; gap:var(--s-sm); text-decoration:none; min-height:var(--touch); flex:0 0 auto; }
   .logo img { height:2.6rem; width:auto; }
   .logo-text { font-weight:800; font-size:var(--text-lg); color:var(--c-text); }
   .search-form { flex:1; max-width:30rem; margin:0 auto; display:flex; }
   .search-input-wrapper { display:flex; width:100%; position:relative; }
   .search-form input { flex:1; padding:var(--s-sm) var(--s-md); border:var(--bw) solid var(--c-border); border-radius:2rem 0 0 2rem; font-size:16px; min-height:var(--touch); }
   .search-form button { width:3.5rem; border:none; background:var(--c-accent); color:#fff; border-radius:0 2rem 2rem 0; cursor:pointer; min-height:var(--touch); }
   .search-form button:hover { opacity:.9; }
   .mobile-menu-toggle,.mobile-search-toggle { display:none; width:2.5rem; height:2.5rem; cursor:pointer; background:none; border:none; color:var(--c-text); font-size:1.3rem; min-height:var(--touch); z-index:101; flex-shrink:0; }
   .mobile-menu-toggle { flex-direction:column; gap:4px; padding:var(--s-2xs); justify-content:center; }
   .mobile-menu-toggle span { height:.2rem; background:var(--c-text); border-radius:.6rem; width:100%; transition:.2s; }
   .mobile-menu-toggle.active span:nth-child(1) { transform:rotate(45deg) translate(5px,5px); }
   .mobile-menu-toggle.active span:nth-child(2) { opacity:0; }
   .mobile-menu-toggle.active span:nth-child(3) { transform:rotate(-45deg) translate(7px,-7px); }
   .mobile-search-toggle { align-items:center; justify-content:center; }
   .mobile-nav-links { display:none; }
   .sidebar { grid-area:sidebar; background:var(--c-card); border-right:var(--bw) solid var(--c-border); padding:var(--s-md); height:calc(100vh - var(--sticky-top) - var(--s-md)); position:sticky; top:var(--sticky-top); overflow-y:auto; scrollbar-width:none; }
   .sidebar::-webkit-scrollbar { display:none; }
   .sidebar__login { display:block; padding:var(--s-sm); background:var(--c-bg); border-radius:var(--radius-md); margin-bottom:var(--s-md); }
   .sidebar__link { display:flex; align-items:center; justify-content:space-between; padding:var(--s-sm) var(--s-md); color:var(--c-text); text-decoration:none; border-radius:var(--radius-md); font-weight:600; transition:.2s; background:var(--c-bg); border:var(--bw) solid var(--c-border); font-size:var(--text-sm); min-height:var(--touch); margin-bottom:var(--s-2xs); }
   .sidebar__link:active { background:var(--c-accent); color:#fff; }
   .sidebar__link i { width:2rem; font-size:1.3rem; text-align:center; margin-right:var(--s-xs); opacity:.7; }
   .sidebar__link.active { background:var(--c-accent); color:#fff; border-color:var(--c-accent); }
   .sidebar__link.active i { opacity:1; }
   .sidebar__overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:999; }
   .sidebar__overlay.active { display:block; touch-action:none; }
   .sidebar__header { display:flex; justify-content:flex-end; padding:0 var(--s-md) var(--s-sm); border-bottom:1px solid var(--c-border); margin-bottom:var(--s-md); }
   .sidebar__close { display:flex; align-items:center; gap:var(--s-xs); background:transparent; border:none; color:var(--c-text); font-size:var(--text-base); font-weight:600; padding:var(--s-sm); cursor:pointer; min-height:var(--touch); }
   .testatina { background:var(--c-card); border:var(--bw) solid var(--c-border); border-radius:var(--radius-md); padding:var(--s-md) var(--s-lg); margin:0; width:100%; }
   .testatina__inner { display:flex; flex-wrap:wrap; align-items:center; gap:var(--s-md); width:100%; }
   .testatina__icon-wrap { display:flex; align-items:center; flex:0 0 auto; }
   .testatina__icon { max-width:4rem; max-height:4rem; object-fit:contain; border-radius:var(--radius-md); }
   .testatina__content { flex:1; min-width:0; overflow:hidden; }
   .testatina__title { font-size:var(--text-xl); font-weight:800; color:var(--c-text); line-height:1.2; word-break:break-word; }
   .testatina__subtitle { font-size:var(--text-sm); color:var(--c-muted); text-transform:uppercase; letter-spacing:1px; }
   .testatina__actions { display:flex; align-items:center; flex:0 0 auto; }
   .card__icon, .tag-card__icon, .tipo-group-header__icon, .filter-chip__icon { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; width:3rem; height:3rem; background:var(--c-bg); border:1px solid var(--c-border); }
   .card__icon img, .tag-card__icon img, .tipo-group-header__icon img { width:2rem; height:2rem; object-fit:contain; }
   .card__icon { border-radius:50%; }
   .tag-card__icon { border-radius:var(--radius-md); }
   .tipo-group-header__icon { width:2.2rem; height:2.2rem; opacity:.7; background:transparent; border:none; }
   .tipo-group-header__icon img { width:1.5rem; height:1.5rem; }
   .filter-chip__icon { width:1.8rem; height:1.8rem; background:transparent; border:none; }
   .btn { display:inline-flex; align-items:center; gap:var(--s-xs); padding:var(--s-sm) var(--s-lg); background:var(--c-accent); color:#fff; border:none; border-radius:var(--radius-md); font-weight:600; text-decoration:none; cursor:pointer; transition:var(--t); font-size:var(--text-base); min-height:var(--touch); white-space:nowrap; }
   .btn:hover { opacity:.9; transform:translateY(-1px); }
   .btn:active { transform:translateY(0); opacity:.8; }
   .btn--sm { padding:var(--s-2xs) var(--s-sm); font-size:var(--text-sm); border-radius:var(--radius-sm); }
   .btn--xs { padding:var(--s-2xs) var(--s-xs); font-size:var(--text-sm); border-radius:var(--radius-sm); }
   .btn--danger { background:var(--c-danger); }
   .btn--warning { background:var(--c-warning); color:#fff; }
   .btn--success { background:var(--c-success); }
   .btn--muted { background:#666; color:#fff; }
   .btn--outline { background:transparent; color:var(--c-accent); border:var(--bw) solid var(--c-accent); }
   .login-section { display:flex; align-items:center; gap:var(--s-sm); flex-wrap:wrap; }
   .login-form { display:flex; gap:var(--s-2xs); }
   .input-mini { width:80px; padding:var(--s-2xs) var(--s-xs); font-size:var(--text-sm); border:var(--bw) solid var(--c-border); border-radius:var(--radius-sm); }
   .user-info { font-size:var(--text-sm); color:var(--c-text); white-space:nowrap; display:flex; align-items:center; gap:var(--s-2xs); }
   .filter-bar { background:var(--c-card); border:var(--bw) solid var(--c-border); border-radius:var(--radius-md); margin:var(--box-gap) 0 0; position:sticky; top:var(--sticky-top); z-index:90; width:100%; }
   .filter-bar__inner { display:flex; flex-wrap:wrap; gap:var(--s-sm); padding:var(--s-sm) var(--s-lg); }
   .filter-chip { display:inline-flex; align-items:center; gap:var(--s-sm); padding:var(--s-xs) var(--s-lg); background:var(--c-bg); border:var(--bw) solid var(--c-border); border-radius:2rem; font-size:var(--text-base); font-weight:500; color:var(--c-text); text-decoration:none; min-height:var(--touch); cursor:pointer; }
   .filter-chip.active,.filter-chip:hover { background:var(--c-accent); color:#fff; border-color:var(--c-accent); }
   .filter-chip__icon { width:1.8rem; height:1.8rem; object-fit:contain; flex-shrink:0; }
   .filter-bar .badge { display:none !important; }
   .page-content { display:flex; flex-direction:column; gap:var(--s-xl); width:100%; padding:0; margin:0; }
   .page-content.py-4 { padding-top:var(--s-lg); padding-bottom:var(--s-lg); }
   .page-content.no-padding-top { padding-top:0; }
   .page-header { margin-bottom:var(--s-lg); display:flex; flex-wrap:wrap; align-items:center; gap:var(--s-md); }
   .page-title { font-size:var(--text-xl); font-weight:800; color:var(--c-text); line-height:1.2; }
   .page-subtitle { font-size:var(--text-sm); color:var(--c-muted); }
   .info-box { background:var(--c-card); border-radius:var(--radius-md); padding:var(--s-md); margin-bottom:var(--s-lg); border:var(--bw) solid var(--c-border); }
   .info-box__item { display:flex; align-items:center; gap:var(--s-sm); margin-bottom:var(--s-xs); flex-wrap:wrap; }
   .info-box__item:last-child { margin-bottom:0; }
   .stats-bar { padding-top:var(--s-md); margin-top:var(--s-md); border-top:1px solid var(--c-border); color:var(--c-muted); font-size:var(--text-sm); display:flex; align-items:center; gap:var(--s-sm); flex-wrap:wrap; }
   .section { margin-bottom:var(--s-xl); width:100%; }
   .section:last-child { margin-bottom:0; }
   .card { height:100%; display:flex; flex-direction:column; background:var(--c-card); border:var(--bw) solid var(--c-border); border-radius:var(--radius-md); padding:var(--s-xs); text-decoration:none; color:inherit; min-width:0; transition:box-shadow .2s; }
   .card:active { transform:scale(.98); }
   .card--draft { background:rgba(0,0,0,.10); }
   .card__header { display:flex; align-items:center; gap:var(--s-xs); padding:var(--s-2xs); flex-shrink:0; overflow:hidden; }
   .card__icon { width:3rem; height:3rem; flex-shrink:0; }
   .card__body { flex:1; min-width:0; overflow:hidden; display:flex; flex-direction:column; justify-content:center; }
   .card__title { font-size:var(--text-sm); font-weight:700; line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; color:var(--c-text); }
   .card__subtitle { font-size:var(--text-sm); opacity:.7; color:var(--c-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.4; }
   .card__media { width:100%; aspect-ratio:1/1; border-radius:var(--radius-sm); overflow:hidden; margin-bottom:var(--s-2xs); position:relative; background:var(--c-bg); }
   .card__media > img,.card__img { width:100%; height:100%; object-fit:cover; }
   .card__grid { display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:2px; width:100%; height:100%; position:absolute; top:0; left:0; }
   .card__grid-item { overflow:hidden; }
   .card__grid-item img { width:100%; height:100%; object-fit:cover; }
   .card__footer { padding:var(--s-2xs); border-top:1px solid rgba(0,0,0,.05); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:var(--s-2xs); min-height:2rem; }
   .card--compact { padding:var(--s-2xs); }
   .card--compact .card__header { height:2.4rem; gap:var(--s-2xs); }
   .card--compact .card__icon { width:2rem; height:2rem; }
   .card--compact .card__icon img { width:1.2rem; height:1.2rem; }
   .card--compact .card__title { font-size:.675rem; }
   .card--compact .card__subtitle { font-size:.525rem; }
   .card--compact .card__media { aspect-ratio:1/1; }
   .card--compact .status { width:.675rem; height:.675rem; top:var(--s-2xs); right:var(--s-2xs); border-width:1px; }
   .card__grid-item--icon img { width:100%; height:100%; max-width:55px; max-height:55px; object-fit:contain; margin:0 auto; }
   .card__grid-item--icon { display:flex; align-items:center; justify-content:center; background:var(--c-card); padding:4px; }
   @media (max-width:768px) { .card__grid-item--icon img { max-width:32px; max-height:32px; } .card__grid-item--icon { padding:2px; } }
   .card__grid-item-inner { display:flex; flex-direction:column; align-items:center; justify-content:center; width:100%; height:100%; gap:4px; }
   .card__grid-item-label { font-size:15px; font-weight:600; color:var(--c-text); text-align:center; line-height:1.3; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:0 4px; }
   @media (max-width:768px) { .card__grid-item-label { font-size:9px; font-weight:500; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; } }
   .carousel, .card-carousel, .cosi-carousel, .related-items { width:100%; overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
   .carousel::-webkit-scrollbar, .card-carousel::-webkit-scrollbar, .cosi-carousel::-webkit-scrollbar, .related-items::-webkit-scrollbar { display:none; }
   .carousel .grid, .card-carousel .grid, .cosi-carousel .grid, .related-items .grid { display:flex; gap:var(--s-md); margin:0; scroll-snap-type:x mandatory; }
   .carousel .grid > *, .card-carousel .grid > *, .cosi-carousel .grid > *, .related-items .grid > * { flex:0 0 280px; scroll-snap-align:start; }
   .status { position:absolute; top:var(--s-xs); right:var(--s-xs); width:.9rem; height:.9rem; border-radius:50%; border:2px solid #fff; z-index:10; box-shadow:0 2px 4px rgba(0,0,0,.3); }
   .status--published { background:var(--c-success); }
   .status--draft { background:#95a5a6; }
   .status--wip { background:var(--c-wip); }
   .status--error { background:var(--c-danger); }
   .badge { display:inline-flex; align-items:center; gap:var(--s-2xs); padding:var(--s-2xs) var(--s-xs); border-radius:1rem; font-size:var(--text-sm); font-weight:700; min-height:1.5rem; background:rgba(0,0,0,.1); color:inherit; }
   .badge--year { background:#e3f2fd; color:#1565c0; }
   .badge--tag { background:#e8f5e9; color:#2e7d32; }
   .badge--sm { font-size:.7rem; padding:var(--s-2xs) var(--s-xs); }
   .badge--accent { background:var(--c-accent); color:#fff; }
   .grid { display:grid; gap:var(--s-md); margin:var(--s-lg) 0; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); }
   .grid--4col { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:1rem; }
   .grid--compact { display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 180px)); gap:var(--s-sm); }
   .grid--compact .card { max-width:100%; }
   .grid--flex { display:flex !important; flex-wrap:wrap; gap:1rem; }
   .stats-grid { margin-bottom:var(--s-lg); }
   .tag-card { display:flex; align-items:center; gap:var(--s-sm); padding:var(--s-sm) var(--s-md); background:var(--c-card); border:var(--bw) solid var(--c-border); border-radius:var(--radius-md); text-decoration:none; color:inherit; min-height:var(--touch); }
   .tag-card:active { transform:scale(.98); }
   .tag-card__icon { width:3rem; height:3rem; background:var(--c-bg); border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; flex-shrink:0; border:1px solid var(--c-border); }
   .tag-card__icon img { width:2rem; height:2rem; object-fit:contain; }
   .tag-card__text { font-size:var(--text-sm); font-weight:600; color:var(--c-text); word-break:break-word; }
   .tag-list { display:flex; flex-wrap:wrap; gap:var(--s-sm); }
   .tipo-group-header { margin-top:var(--s-xl); margin-bottom:var(--s-md); display:flex; align-items:center; gap:var(--s-sm); border-bottom:var(--bw) solid rgba(0,0,0,.05); padding-bottom:var(--s-xs); flex-wrap:wrap; }
   .tipo-group-header__title { margin:0; font-size:var(--text-lg); font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
   .line-decorator { width:var(--s-2xs); height:var(--s-lg); background:var(--c-accent); border-radius:2px; }
   .titolo-sub { font-size:var(--text-sm); color:var(--c-muted); font-weight:800; letter-spacing:1.2px; text-transform:uppercase; }
   .alert { padding:var(--s-md); border-radius:var(--radius-sm); margin-bottom:var(--s-lg); display:flex; align-items:center; gap:var(--s-sm); }
   .alert i { font-size:1.25rem; }
   .alert--success { background:rgba(46,204,113,.1); border:1px solid var(--c-success); color:var(--c-success); }
   .alert--error { background:rgba(231,76,60,.1); border:1px solid var(--c-danger); color:var(--c-danger); }
   .alert--warning { background:rgba(243,156,18,.1); border:1px solid var(--c-warning); color:var(--c-warning); }
   .alert--info { background:rgba(23,162,184,.1); border:1px solid var(--c-info); color:var(--c-info); }
   .alert--wip { background:rgba(253,126,20,0.1); border:1px solid var(--c-wip); color:var(--c-wip); }
   .wip-banner { text-align:center; padding:var(--s-md); margin-bottom:var(--s-lg); background:rgba(253,126,20,0.15); border:1px solid var(--c-wip); border-radius:var(--radius-md); font-size:var(--text-lg); font-weight:600; color:var(--c-wip); }
   .wip-banner span { display:inline-flex; align-items:center; gap:var(--s-sm); }
   .page-grid--wip .grid-right { display:none; }
   .page-grid--wip .grid-left { grid-column:1 / -1; max-width:800px; margin:0 auto; }
   .fotine-griglia, .fotine-griglia-expanded { justify-content:center; }
   .thumb-wrapper { margin:0 auto; }
   .libri-link-grid { display:grid; grid-template-columns:1fr 1fr; gap:2rem; }
   .libri-box, .link-box { background:var(--c-card); border:1px solid var(--c-border); border-radius:var(--radius-md); padding:var(--s-md); }
   .libri-box h3, .link-box h3 { font-size:var(--text-base); font-weight:700; margin-bottom:var(--s-sm); padding-bottom:var(--s-2xs); border-bottom:2px solid var(--c-accent); display:inline-block; }
   .libri-box ul, .link-box ul { list-style:none; margin:0; padding:0; }
   .libri-box li, .link-box li { margin-bottom:var(--s-xs); font-size:var(--text-sm); }
   .libri-box li:last-child, .link-box li:last-child { margin-bottom:0; }
   .libro-testo { line-height:1.4; }
   .link-box a { color:var(--c-accent); text-decoration:none; word-break:break-all; }
   .link-box a:hover { text-decoration:underline; }
   @media (max-width:768px) { .fotine-griglia { display:flex; flex-wrap:nowrap; overflow-x:auto; gap:var(--s-xs); margin-top:var(--s-sm); scrollbar-width:thin; -webkit-overflow-scrolling:touch; justify-content:flex-start; } .fotine-griglia .thumb-wrapper { flex:0 0 80px; aspect-ratio:1/1; margin:0; } .fotine-griglia .thumb-wrapper.album-hidden { display:none; } .album-toggle-btn { display:flex; align-items:center; justify-content:center; gap:var(--s-sm); width:100%; padding:var(--s-sm); margin-top:var(--s-sm); background:var(--c-bg); border:1px solid var(--c-border); border-radius:var(--radius-md); font-size:var(--text-sm); font-weight:500; color:var(--c-text); cursor:pointer; transition:var(--t); } .album-toggle-btn:hover { background:var(--c-accent); color:#fff; border-color:var(--c-accent); } .album-toggle-btn i { transition:transform 0.2s; } .album-toggle-btn.active i { transform:rotate(180deg); } .album-expanded { margin-top:var(--s-sm); } .fotine-griglia-expanded { display:grid; grid-template-columns:repeat(auto-fill, minmax(80px, 1fr)); gap:var(--s-xs); justify-content:center; } .libri-link-grid { grid-template-columns:1fr; gap:var(--s-md); } }
   @media (min-width:769px) { .album-toggle-btn { display:none; } .album-expanded { display:none !important; } .fotine-griglia { display:grid !important; grid-template-columns:repeat(auto-fill, minmax(80px, 1fr)); gap:var(--s-xs); overflow-x:visible; justify-content:center; } .fotine-griglia .thumb-wrapper.album-hidden { display:flex !important; } }
   .empty-state { text-align:center; padding:var(--s-2xl) var(--s-md); color:var(--c-muted); }
   .empty-state i { font-size:3rem; opacity:.3; margin-bottom:var(--s-md); display:block; }
   .empty-state__icon { margin-bottom:var(--s-md); opacity:.3; }
   .empty-state p { font-size:var(--text-base); margin:0; }
   .empty-state__actions { margin-top:var(--s-lg); display:flex; gap:var(--s-sm); justify-content:center; flex-wrap:wrap; }
   .coso-page .page-grid { display:grid; grid-template-columns:1.2fr 2fr; gap:2rem; align-items:start; margin-top:var(--s-xs); }
   .coso-page .grid-left { display:flex; flex-direction:column; gap:.75rem; }
   .coso-page .grid-right { grid-column:2; grid-row:1; }
   .foto-principale { width:100%; border-radius:var(--radius-md); overflow:hidden; position:relative; cursor:pointer; }
   .foto-principale img { width:100%; aspect-ratio:16/9; object-fit:cover; cursor:pointer; transition:opacity 0.2s ease; }
   .foto-principale img.switching { opacity:.4; }
   .fotine-griglia { display:grid; grid-template-columns:repeat(auto-fill, minmax(70px, 1fr)); gap:var(--s-xs); margin-top:var(--s-sm); }
   .thumb-wrapper { aspect-ratio:1/1; overflow:hidden; border-radius:var(--radius-sm); cursor:pointer; }
   .thumb-wrapper img { width:100%; height:100%; object-fit:cover; border:2px solid transparent; transition:border 0.2s ease; }
   .thumb-wrapper img:active { border-color:var(--c-accent); }
   .thumb-click.active-thumb { border:3px solid var(--c-accent); opacity:0.9; transform:scale(0.98); }
   .coso-page .testo-contenuto { line-height:1.8; font-size:1rem; }
   .coso-page .testo-contenuto p { margin-bottom:1.2rem; }
   .coso-page .libri-link-section { margin-top:2.5rem; }
   .nav-arrow { position:absolute; top:50%; transform:translateY(-50%); width:45px; height:45px; background:rgba(0,0,0,0.6); color:white; border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer; z-index:100; transition:all 0.3s ease; font-size:24px; backdrop-filter:blur(4px); opacity:0; pointer-events:none; }
   .nav-arrow:hover { background:rgba(0,0,0,0.9); transform:translateY(-50%) scale(1.1); }
   .nav-arrow-prev { left:15px; }
   .nav-arrow-next { right:15px; }
   .foto-principale:hover .nav-arrow { opacity:0.9; pointer-events:auto; }
   .lightbox { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background-color:rgba(0,0,0,0.95); z-index:10000; opacity:0; transition:opacity 0.3s ease; }
   .lightbox.active { display:flex; opacity:1; }
   .lightbox__container { display:flex; justify-content:center; align-items:center; width:100%; height:100%; position:relative; }
   .lightbox__image { max-width:90%; max-height:90%; object-fit:contain; transition:transform 0.2s ease; cursor:zoom-out; }
   .lightbox__close { position:absolute; top:20px; right:40px; color:white; font-size:40px; font-weight:bold; background:none; border:none; cursor:pointer; z-index:10001; transition:transform 0.2s ease; }
   .lightbox__close:hover { transform:scale(1.1); }
   .lightbox__prev, .lightbox__next { position:absolute; top:50%; transform:translateY(-50%); color:white; font-size:50px; font-weight:bold; background:rgba(0,0,0,0.5); border:none; cursor:pointer; padding:15px 20px; border-radius:50%; transition:all 0.2s ease; z-index:10001; }
   .lightbox__prev:hover, .lightbox__next:hover { background:rgba(0,0,0,0.8); }
   .lightbox__prev { left:20px; }
   .lightbox__next { right:20px; }
   .lightbox__counter { position:absolute; bottom:20px; left:50%; transform:translateX(-50%); color:white; background:rgba(0,0,0,0.7); padding:8px 16px; border-radius:20px; font-size:14px; font-family:monospace; z-index:10001; }
   .map-container { width:100%; height:calc(100vh - var(--header-h)); position:relative; background:var(--c-bg); }
   #map { width:100%; height:100%; z-index:1; }
   .map-context-indicator { position:absolute; bottom:10px; left:10px; background:rgba(0,0,0,0.75); color:#fff; padding:6px 14px; border-radius:8px; font-size:13px; z-index:1000; pointer-events:none; font-weight:500; letter-spacing:0.3px; }
   .map-loading { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background:rgba(0,0,0,.8); color:#fff; padding:var(--s-md) var(--s-lg); border-radius:var(--radius-md); z-index:2000; font-weight:700; display:none; }
   .leaflet-popup-content-wrapper { border-radius:var(--radius-md); }
   .leaflet-popup-content { font-family:system-ui,-apple-system,sans-serif; font-size:var(--text-sm); color:var(--c-text); }
   .leaflet-popup-content a { color:var(--c-accent); font-weight:600; text-decoration:none; }
   .leaflet-popup-content a:hover { text-decoration:underline; }
   .leaflet-popup-content b { font-size:14px; }
   .leaflet-popup-content small { color:var(--c-muted); }
   .ricerche-associate-section { margin-top:var(--s-xl); }
   .ricerche-associate-intro { font-size:var(--text-sm); color:var(--c-muted); margin-bottom:var(--s-md); }
   .ricerche-associate-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:var(--s-md); }
   .ricerche-categoria-group { background:var(--c-card); border:var(--bw) solid var(--c-border); border-radius:var(--radius-md); padding:var(--s-md); }
   .ricerche-categoria-title { font-size:var(--text-base); font-weight:700; margin-bottom:var(--s-sm); }
   .ricerche-categoria-link { color:var(--c-accent); text-decoration:none; display:inline-flex; align-items:center; gap:var(--s-xs); }
   .ricerche-categoria-link:hover { text-decoration:underline; }
   .ricerche-tags-list { list-style:none; display:flex; flex-wrap:wrap; gap:var(--s-sm); margin:0; padding:0; }
   .ricerche-tag-item { flex:0 0 auto; }
   .ricerche-tag-link { display:inline-flex; align-items:center; gap:var(--s-xs); padding:var(--s-xs) var(--s-sm); background:var(--c-bg); border:var(--bw) solid var(--c-border); border-radius:2rem; text-decoration:none; color:var(--c-text); font-size:var(--text-sm); font-weight:500; min-height:var(--touch); transition:var(--t); }
   .ricerche-tag-link:hover { background:var(--c-accent); color:#fff; border-color:var(--c-accent); }
   .ricerche-tag-icon { width:1.5rem; height:1.5rem; object-fit:contain; border-radius:50%; }
   .ricerche-tag-dot { width:.5rem; height:.5rem; border-radius:50%; background:var(--c-accent); flex-shrink:0; }
   .ricerche-tag-name { white-space:nowrap; }
   .text-link { color:var(--c-accent); text-decoration:underline; }
   .text-link:hover { text-decoration:none; }
   .pagination { margin-top:var(--s-lg); }
   .pagination-list { display:flex; justify-content:center; gap:var(--s-xs); list-style:none; flex-wrap:wrap; }
   .pagination-list a { padding:var(--s-sm) var(--s-md); border:var(--bw) solid var(--c-border); border-radius:var(--radius-sm); text-decoration:none; color:var(--c-text); min-height:var(--touch); display:inline-flex; align-items:center; font-size:var(--text-sm); }
   .pagination-list a:hover { background:var(--c-bg); }
   .pagination-list a.active { background:var(--c-accent); color:#fff; }
   .page-link { padding:var(--s-sm) var(--s-md); border:var(--bw) solid var(--c-border); border-radius:var(--radius-sm); text-decoration:none; color:var(--c-text); min-height:var(--touch); display:inline-flex; align-items:center; font-size:var(--text-sm); }
   .page-link:hover { background:var(--c-bg); }
   .page-link.active { background:var(--c-accent); color:#fff; border-color:var(--c-accent); }
   .debug-details { margin-bottom:var(--s-md); }
   .debug-summary { cursor:pointer; color:var(--c-muted); font-size:var(--text-sm); transition:var(--t); }
   .debug-summary:hover { color:var(--c-accent); }
   .debug-console { background:var(--c-bg); padding:var(--s-md); border-radius:var(--radius-sm); font-family:monospace; font-size:.75rem; max-height:300px; overflow-y:auto; white-space:pre-wrap; margin-top:var(--s-xs); }
   .theme-switch { display:flex; align-items:center; }
   .switch { position:relative; display:inline-block; width:50px; height:24px; }
   .switch input { opacity:0; width:0; height:0; }
   .slider { position:absolute; cursor:pointer; inset:0; background:#ccc; transition:.2s; border-radius:24px; }
   .slider:before { content:""; position:absolute; height:18px; width:18px; left:3px; bottom:3px; background:#fff; transition:.2s; border-radius:50%; }
   input:checked+.slider { background:var(--c-accent); }
   input:checked+.slider:before { transform:translateX(26px); }
   :root.dark .tag-card { border-color:#333; }
   :root.dark .badge { background:#2d2d2d; color:#e0e0e0; }
   :root.dark .admin-bar { background:rgba(255,255,255,.05); }
   :root.dark .ricerche-categoria-group { border-color:#333; }
   :root.dark .ricerche-tag-link { border-color:#444; }
   :root.dark .debug-console { background:var(--c-card); }
   @media (min-width:1101px) { .desktop-only { display:flex; } .mobile-menu-toggle,.mobile-search-toggle { display:none; } .sidebar__login,.sidebar__header { display:none; } }
   @media (max-width:1100px) { .layout-root { grid-template-columns:1fr; grid-template-areas:"header" "testatina" "main" "footer"; } .desktop-only,.admin-bar__actions,.theme-switch { display:none !important; } .sidebar { position:fixed; top:var(--header-h); right:-100%; height:calc(100vh - var(--header-h)); width:75%; max-width:20rem; z-index:1000; transition:right .3s; } .sidebar.active { right:0; display:block !important; } .sidebar__overlay.active { display:block; } .sidebar__header { display:flex; justify-content:flex-end; align-items:center; margin-bottom:var(--s-lg); padding-bottom:var(--s-sm); border-bottom:var(--bw) solid var(--c-border); } .sidebar__close { display:flex; color:var(--c-muted); padding:var(--s-sm) var(--s-md); border-radius:var(--radius-sm); } .mobile-menu-toggle { display:flex !important; order:3; } .mobile-search-toggle { display:flex !important; order:2; } .search-form { display:none; order:4; flex:0 0 100%; max-width:100%; margin-top:var(--s-xs); } .search-form.active { display:flex; } .mobile-nav-links { display:flex; justify-content:center; gap:var(--s-sm); padding:var(--s-sm) var(--s-md); background:var(--c-card); border-top:var(--bw) solid var(--c-border); border-bottom:var(--bw) solid var(--c-border); margin-bottom:var(--s-md); } .testatina { border-radius:0; padding:var(--s-xs) var(--s-sm); } .testatina__icon { max-width:2.5rem !important; max-height:2.5rem !important; } .testatina__title { font-size:1.1rem !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .testatina__actions .btn { width:2.5rem; height:2.5rem; padding:0; } .testatina__actions .btn .btn-text { display:none; } .filter-bar { border-radius:0; top:var(--header-offset) !important; z-index:95; } .main-content { padding:0 var(--s-md) var(--s-lg); } .grid--4col { grid-template-columns:repeat(2, minmax(0, 1fr)) !important; } .grid .card__icon { display:none; } .grid--4col .card__icon { display:flex; } .coso-page .page-grid { grid-template-columns:1fr; margin-top:var(--s-2xs); } .coso-page .grid-left,.coso-page .grid-right { grid-column:1; width:100%; } .ricerche-associate-grid { grid-template-columns:1fr; } .carousel .grid > *, .card-carousel .grid > *, .cosi-carousel .grid > *, .related-items .grid > * { flex:0 0 calc(50% - var(--s-sm)); } .nav-arrow { opacity:0.7; pointer-events:auto; width:40px; height:40px; font-size:20px; } .nav-arrow-prev { left:10px; } .nav-arrow-next { right:10px; } .lightbox__prev, .lightbox__next { font-size:30px; padding:10px 15px; } .lightbox__close { top:10px; right:20px; font-size:30px; } }
   @media (max-width:768px) { :root { --text-base:.95rem; --touch:48px; } .grid, .grid--compact, .grid--4col { grid-template-columns:repeat(2, 1fr) !important; } .grid--compact { grid-template-columns:repeat(2, 1fr) !important; } .admin-bar { display:none; } .mobile-nav-links { padding:var(--s-xs) var(--s-sm); gap:var(--s-xs); margin-bottom:var(--s-sm); } .carousel, .card-carousel, .cosi-carousel, .related-items { overflow-x:visible; scroll-snap-type:none; } .carousel .grid, .card-carousel .grid, .cosi-carousel .grid, .related-items .grid { display:grid; grid-template-columns:repeat(2, 1fr) !important; gap:var(--s-sm); } .carousel .grid > *, .card-carousel .grid > *, .cosi-carousel .grid > *, .related-items .grid > * { flex:none; width:100%; scroll-snap-align:none; } .coso-page .page-grid { display:flex; flex-direction:column; gap:1rem; margin-top:0; } .coso-page .grid-left { order:1; width:100%; } .coso-page .grid-right { order:2; width:100%; } .coso-page .grid-left .foto-principale { margin-top:0; } .map-container { height:calc(100vh - var(--header-h) - 50px); } }
   @media (max-width:560px) { .grid, .grid--compact, .grid--4col { grid-template-columns:repeat(2, 1fr) !important; } .carousel .grid, .card-carousel .grid, .cosi-carousel .grid, .related-items .grid { grid-template-columns:repeat(2, 1fr) !important; } }
   @media (max-width:480px) { .grid, .grid--compact, .grid--4col { grid-template-columns:repeat(2, 1fr) !important; } .carousel .grid, .card-carousel .grid, .cosi-carousel .grid, .related-items .grid { grid-template-columns:repeat(2, 1fr) !important; gap:var(--s-xs); } .testatina__icon { max-width:2rem !important; max-height:2rem !important; } .testatina__title { font-size:.95rem !important; } }
   @media print { .sidebar,.site-header,.filter-bar,.btn { display:none; } body { background:#fff; color:#000; } }