/* ============================================================================
   HABITUAL TOURIST — LAYOUT.CSS v3.2
   
   v3.2: EMOJI SUPPORT (rimozione Font Awesome)
         - Aggiunto .btn-emoji: wrapper emoji con dimensioni controllate
           per evitare CLS (diverse emoji su Windows/Mac/Android hanno
           larghezze diverse).
         - Aggiunto font-family esplicito per forzare emoji a colori
           (su Windows alcune emoji escono monocromatiche senza
           "Segoe UI Emoji").
         - Fix: rotazione tema in dark mode ora funziona con .btn-emoji
           (non è più un <i>, è uno <span>).
         - Fix: .search-btn .btn-emoji e .search-menu__submit .btn-emoji
           hanno dimensioni dedicate.
   
   v3.1: FIX grid nesting
   v3.0: assorbe da base.css HEADER, SIDEBAR, BOTTONI, LOGIN,
         INFO-BOX, STATS-BAR, BADGE, ALERT, WIP BANNER, EMPTY STATE,
         PAGINAZIONE, THEME BUTTON, USER MENU, SEARCH MENU
   ============================================================================ */

/* === 1. VARIABILI DI SPAZIATURA === */
:root{--bp-tablet:1100px;--bp-mobile:768px;--bp-small:480px;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--s-2xs:var(--space-1);--s-xs:var(--space-2);--s-sm:var(--space-3);--s-md:var(--space-4);--s-lg:var(--space-5);--s-xl:var(--space-6);--s-2xl:var(--space-7);--layout-gap-top:var(--space-2);--layout-gap-side:var(--space-5);--layout-gap-bottom:var(--space-5);--layout-header-pad-y:var(--space-2);--layout-header-pad-x:var(--space-5);--layout-sidebar-pad:var(--space-4);--layout-footer-pad:var(--space-5);--flow-gap:3.5rem;--gap-tra-gruppi:2rem;--gap-header-griglia:var(--space-2)}

/* === 2. SISTEMA .flow === */
.flow > * + *{margin-top:var(--flow-gap)}
.flow > *:first-child{margin-top:0}
.flow > *:last-child{margin-bottom:0}
.flow--tight{--flow-gap:var(--space-4)}
.flow--loose{--flow-gap:var(--space-7)}
.flow--none{--flow-gap:0}

/* === 3. GRIGLIA PRINCIPALE === */
.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;position:relative}
.layout-root::before{content:'';position:absolute;top:0;left:0;width:var(--sidebar-w);height:100%;border-right:var(--bw) solid var(--c-border);pointer-events:none;z-index:0}

/* === 4. HEADER === */
.site-header{grid-area:header;background:var(--c-header);border-bottom:var(--bw) solid var(--c-border);position:sticky;top:0;z-index:100}
.header-inner{padding:var(--layout-header-pad-y) var(--layout-header-pad-x);display:flex;align-items:center;justify-content:space-between;gap: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(--fs-logo-text);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:var(--fs-search-input);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);display:inline-flex;align-items:center;justify-content:center}
.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:var(--fs-btn-icon);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}
.desktop-actions{display:flex;align-items:center;gap:var(--s-xs);flex:0 0 auto}

/* === 5. SEARCH MENU (dropdown mobile) === */
.search-menu{position:relative;display:none}
.search-menu__dropdown{position:absolute;top:100%;left:0;right:0;background:var(--c-card);border-top:var(--bw) solid var(--c-border);border-bottom:var(--bw) solid var(--c-border);padding:var(--s-md);z-index:200;box-shadow:var(--shadow-md);display:block}
.search-menu__dropdown[hidden]{display:none}
.search-menu__form{display:flex;width:100%;max-width:var(--content-max);margin:0 auto}
.search-menu__form input{flex:1;padding:var(--s-sm) var(--s-md);border:var(--bw) solid var(--c-border);border-radius:var(--radius-sm) 0 0 var(--radius-sm);font-size:var(--fs-search-input);min-height:var(--touch);background:var(--c-bg);color:var(--c-text)}
.search-menu__form input:focus{outline:none;border-color:var(--c-accent)}
.search-menu__submit{width:3.5rem;border:none;background:var(--c-accent);color:#fff;border-radius:0 var(--radius-sm) var(--radius-sm) 0;cursor:pointer;min-height:var(--touch);font-size:var(--fs-btn-icon);display:inline-flex;align-items:center;justify-content:center}
.search-menu__submit:hover{opacity:.9}
.search-menu__overlay{display:none;position:fixed;inset:0;background:transparent;z-index:150}
.search-menu__overlay.active{display:block}

/* === 6. SIDEBAR === */
.sidebar{grid-area:sidebar;background:var(--c-card);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;align-self:start}
.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:0 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(--fs-sidebar-link);min-height:var(--touch);height:var(--touch);box-sizing:border-box;overflow:hidden;margin-bottom:var(--s-2xs)}
.sidebar__link:active{background:var(--c-accent);color:#fff}
.sidebar__link i{width:2rem;font-size:var(--fs-icon-sm);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(--fs-sidebar-link);font-weight:600;padding:var(--s-sm);cursor:pointer;min-height:var(--touch)}
.sidebar__link-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;max-height:calc(var(--touch) - 4px);flex-shrink:0;margin-left:auto;border:2px solid rgba(0,0,0,.35);border-radius:50%;font-size:.9375rem;font-weight:700;line-height:1;padding:0;font-family:system-ui,-apple-system,sans-serif}
.sidebar__link.active .sidebar__link-icon-wrap{border-color:rgba(255,255,255,.7);box-shadow:0 0 0 1px rgba(0,0,0,.15)}

/* === 7. BOTTONI === */
.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(--fs-btn);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(--fs-btn-sm);border-radius:var(--radius-sm)}
.btn--xs{padding:var(--s-2xs) var(--s-xs);font-size:var(--fs-btn-xs);border-radius:var(--radius-sm);line-height:1}
.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)}

/* === 7b. EMOJI WRAPPER (v3.2) ===
   Unico punto per il rendering delle emoji-icona.
   - Dimensioni fisse: niente CLS tra browser diversi
   - font-family esplicito: emoji a colori anche su Windows
   - display:inline-flex: centratura perfetta in bottoni/tab */
.btn-emoji{display:inline-flex;align-items:center;justify-content:center;width:1.2em;height:1.2em;line-height:1;flex-shrink:0;font-style:normal;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol",sans-serif;vertical-align:middle}

/* Emoji nel search-btn (form desktop, bottone blu rotondo) */
.search-form .search-btn .btn-emoji{width:1.4em;height:1.4em;font-size:1.1em}

/* Emoji nel search-menu__submit (dropdown mobile) */
.search-menu__submit .btn-emoji{width:1.4em;height:1.4em;font-size:1.1em}

/* === 8. LOGIN (deprecato) === */
.login-section{display:flex;align-items:center;gap:var(--s-xs);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(--fs-btn-sm);border:var(--bw) solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-card);color:var(--c-text);line-height:1}
.user-info{font-size:var(--fs-body-sm);color:var(--c-text);white-space:nowrap;display:inline-flex;align-items:center;gap:var(--s-2xs);padding:var(--s-2xs) var(--s-xs);line-height:1}

/* === 9. INFO-BOX / STATS-BAR === */
.info-box{background:var(--c-card);border-radius:var(--radius-md);border:var(--bw) solid var(--c-border);padding:var(--s-md);margin:0}
.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{border-top:1px solid var(--c-border);color:var(--c-muted);font-size:var(--fs-body-sm);display:flex;align-items:center;gap:var(--s-sm);flex-wrap:wrap;padding-top:var(--space-4);margin:0}

/* === 10. BADGE === */
.badge{display:inline-flex;align-items:center;gap:var(--s-2xs);padding:var(--s-2xs) var(--s-xs);border-radius:1rem;font-size:var(--fs-admin-badge);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:var(--fs-admin-badge-sm);padding:var(--s-2xs) var(--s-xs)}
.badge--accent{background:var(--c-accent);color:#fff}
.stats-grid{display:grid}

/* === 11. ALERT === */
.alert{padding:var(--s-md);border-radius:var(--radius-sm);display:flex;align-items:center;gap:var(--s-sm)}
.alert .btn-emoji{width:1.5em;height:1.5em;font-size:1.1em}
.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,.1);border:1px solid var(--c-wip);color:var(--c-wip)}

/* === 12. WIP BANNER === */
.wip-banner{text-align:center;padding:var(--s-xs) var(--s-md);background:rgba(253,126,20,.15);border:1px solid var(--c-wip);border-radius:var(--radius-md);font-size:var(--fs-body-sm);font-weight:600;color:var(--c-wip);line-height:1.2}
.wip-banner span{display:inline-flex;align-items:center;gap:var(--s-xs)}
.page-grid--wip .grid-right{display:none}
@media (min-width:1101px){.page-grid--wip .grid-left{grid-column:1 / -1;max-width:420px;margin:0 auto}.page-grid--wip .foto-principale img{aspect-ratio:1/1}}

/* === 13. EMPTY STATE === */
.empty-state{text-align:center;padding:var(--s-2xl) var(--s-md);color:var(--c-muted)}
.empty-state i{font-size:var(--fs-admin-empty-icon);opacity:.3;margin-bottom:var(--s-md);display:block}
.empty-state .btn-emoji{font-size:2.5em;opacity:.35;margin:0 auto var(--s-md);width:auto;height:auto;line-height:1}
.empty-state__icon{margin-bottom:var(--s-md);opacity:.3}
.empty-state p{font-size:var(--fs-body);margin:0}
.empty-state__actions{margin-top:var(--s-lg);display:flex;gap:var(--s-sm);justify-content:center;flex-wrap:wrap}

/* === 14. PAGINAZIONE === */
.pagination{display:flex;justify-content:center}
.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(--fs-pagination)}
.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(--fs-pagination)}
.page-link:hover{background:var(--c-bg)}
.page-link.active{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}

/* === 15. THEME BUTTON === */
.theme-btn{display:inline-flex;align-items:center;gap:var(--s-2xs);padding:var(--s-2xs) var(--s-xs);background:var(--c-accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--fs-btn-sm);font-weight:600;cursor:pointer;transition:var(--t);white-space:nowrap;line-height:1;min-height:var(--touch)}
.theme-btn:hover{opacity:.9;transform:translateY(-1px)}
.theme-btn:active{transform:translateY(0);opacity:.8}
.theme-btn__icon{font-size:var(--fs-btn-icon);transition:transform var(--t-fast)}
.theme-btn__text{font-size:var(--fs-btn-sm)}
.theme-btn--sidebar{background:var(--c-card);color:var(--c-text);border:var(--bw) solid var(--c-border);padding:var(--s-xs) var(--s-md);border-radius:var(--radius-pill);min-height:var(--touch);width:100%;justify-content:center;gap:var(--s-xs)}
.theme-btn--sidebar:hover{background:var(--c-bg);border-color:var(--c-accent);opacity:1;transform:none}
.sidebar__theme-toggle{margin-bottom:var(--s-md)}

/* v3.2: rotazione icona tema in dark mode (emoji, non più <i>) */
:root.dark .theme-btn .btn-emoji.theme-btn__icon{transform:rotate(180deg)}

/* === 16. USER MENU (MOBILE) === */
.user-menu{position:relative;display:none}
.user-menu__btn{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;background:transparent;border:none;color:var(--c-text);font-size:var(--fs-user-menu-icon);cursor:pointer;border-radius:var(--radius-circle);transition:var(--t);min-height:var(--touch)}
.user-menu__btn:hover,.user-menu__btn[aria-expanded="true"]{background:rgba(0,0,0,.08)}
.user-menu__btn .btn-emoji{font-size:1.4em}
.user-menu__dropdown{position:absolute;top:calc(100% + var(--s-xs));right:0;min-width:240px;background:var(--c-card);color:var(--c-text);border:var(--bw) solid var(--c-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--s-md);z-index:200}
.user-menu__dropdown[hidden]{display:none}
.user-menu__form{display:flex;flex-direction:column;gap:var(--s-xs)}
.user-menu__form input{width:100%;padding:var(--s-sm);border:var(--bw) solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-text);font-size:var(--fs-search-input)}
.user-menu__form input:focus{outline:none;border-color:var(--c-accent)}
.user-menu__form .btn{width:100%;justify-content:center}
.user-menu__header{display:flex;align-items:center;gap:var(--s-sm);padding-bottom:var(--s-sm);margin-bottom:var(--s-sm);border-bottom:1px solid var(--c-border)}
.user-menu__header .btn-emoji{font-size:1.8em;color:var(--c-accent);flex-shrink:0}
.user-menu__header strong{display:block;font-size:var(--fs-body);line-height:1.2}
.user-menu__header small{display:block;font-size:var(--fs-body-sm);color:var(--c-muted)}
.user-menu__list{display:flex;flex-direction:column;gap:var(--s-2xs)}
.user-menu__footer{margin-top:var(--s-sm);padding-top:var(--s-sm);border-top:1px solid var(--c-border);text-align:center}
.user-menu__link{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-xs) var(--s-sm);color:var(--c-text);text-decoration:none;border-radius:var(--radius-sm);font-size:var(--fs-sidebar-link);font-weight:600;transition:var(--t)}
.user-menu__link:hover{background:var(--c-bg)}
.user-menu__link--danger{color:var(--c-danger)}
.user-menu__link--danger:hover{background:rgba(220,53,69,.1)}

/* === 17. USER MENU DESKTOP === */
.user-menu-desktop{position:relative;display:inline-flex}
.user-menu-desktop__btn{display:inline-flex;align-items:center;gap:var(--s-2xs);padding:var(--s-2xs) var(--s-xs);background:var(--c-accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--fs-btn-sm);font-weight:600;cursor:pointer;transition:var(--t);white-space:nowrap;line-height:1;min-height:var(--touch)}
.user-menu-desktop__btn:hover{opacity:.9;transform:translateY(-1px)}
.user-menu-desktop__btn:active{transform:translateY(0);opacity:.8}
.user-menu-desktop__btn:focus{outline:none;box-shadow:0 0 0 3px rgba(0,102,204,.25)}
.user-menu-desktop__btn .btn-emoji{font-size:1.3em}
.user-menu-desktop__btn span{font-size:var(--fs-btn-sm)}
.user-menu-desktop__btn--logged{max-width:200px}
.user-menu-desktop__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
.user-menu-desktop__dropdown{position:absolute;top:calc(100% + var(--s-xs));right:0;min-width:260px;background:var(--c-card);color:var(--c-text);border:var(--bw) solid var(--c-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--s-md);z-index:200}
.user-menu-desktop__dropdown[hidden]{display:none}
.user-menu-desktop__form{display:flex;flex-direction:column;gap:var(--s-xs)}
.user-menu-desktop__form input{width:100%;padding:var(--s-sm);border:var(--bw) solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-bg);color:var(--c-text);font-size:var(--fs-search-input)}
.user-menu-desktop__form input:focus{outline:none;border-color:var(--c-accent)}
.user-menu-desktop__form .btn{width:100%;justify-content:center}
.user-menu-desktop__header{display:flex;align-items:center;gap:var(--s-sm);padding-bottom:var(--s-sm);margin-bottom:var(--s-sm);border-bottom:1px solid var(--c-border)}
.user-menu-desktop__header .btn-emoji{font-size:1.8em;color:var(--c-accent);flex-shrink:0}
.user-menu-desktop__header strong{display:block;font-size:var(--fs-body);line-height:1.2}
.user-menu-desktop__header small{display:block;font-size:var(--fs-body-sm);color:var(--c-muted)}
.user-menu-desktop__list{display:flex;flex-direction:column;gap:var(--s-2xs)}
.user-menu-desktop__footer{margin-top:var(--s-sm);padding-top:var(--s-sm);border-top:1px solid var(--c-border);text-align:center}
.user-menu-desktop__link{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-xs) var(--s-sm);color:var(--c-text);text-decoration:none;border-radius:var(--radius-sm);font-size:var(--fs-sidebar-link);font-weight:600;transition:var(--t)}
.user-menu-desktop__link:hover{background:var(--c-bg)}
.user-menu-desktop__link--danger{color:var(--c-danger)}
.user-menu-desktop__link--danger:hover{background:rgba(220,53,69,.1)}

/* === 18. WRAPPER TESTATINA / DATE / FILTER BAR === */
.site-testatina-wrapper{grid-area:testatina;display:flex;flex-direction:column;gap:0}
.date-info{padding:var(--space-2) var(--layout-gap-side);margin:0}
.filter-bar__inner{padding:var(--space-1) var(--layout-gap-side)}
.filter-chip{padding:0 var(--space-4)}

/* === 19. MAIN CONTENT === */
.main-content{grid-area:main;padding:var(--layout-gap-top) var(--layout-gap-side) var(--layout-gap-bottom);min-width:0;min-height:0}
.page-container{margin:0;padding:0;min-width:0;width:100%}
.page-content{margin:0;padding:0;min-width:0;width:100%}
body:has(.map-container) .layout-root{height:100vh;overflow:hidden}
body:has(.map-container) .main-content{padding:0;display:flex;min-height:0;height:100%;overflow:hidden}
body:has(.map-container) .page-container{flex:1;display:flex;min-height:0;height:100%;width:100%}
body:has(.map-container) .page-container > .map-container{flex:1;min-height:0;height:100%;width:100%}
body.has-map .layout-root{height:100vh;overflow:hidden}
body.has-map .main-content{padding:0;display:flex;min-height:0;height:100%;overflow:hidden}
body.has-map .page-container{flex:1;display:flex;min-height:0;height:100%;width:100%}
body.has-map .page-container > .map-container{flex:1;min-height:0;height:100%;width:100%}

/* === 20. SEZIONI === */
.section{margin:0;padding:0}
.page-content.flow > .section.flow{margin-top:var(--gap-tra-gruppi)}
.page-content.flow > .section.flow:first-of-type{margin-top:var(--flow-gap)}
.section.flow > .tipo-group-header + *{margin-top:var(--gap-header-griglia)}

/* === 21. FOOTER === */
.site-footer{grid-area:footer;background:var(--c-card);border-top:var(--bw) solid var(--c-border);color:var(--c-muted);font-size:var(--fs-footer);padding:var(--layout-footer-pad)}
.site-footer .page-container{display:flex;flex-direction:column;gap:var(--space-3);align-items:center;text-align:center}
.site-footer .footer-inner{display:flex;flex-direction:column;gap:var(--space-2);align-items:center}
.site-footer .footer-nav{display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:center}
.site-footer .footer-nav a{color:var(--c-muted);text-decoration:none;font-weight:600;transition:var(--t)}
.site-footer .footer-nav a:hover{color:var(--c-accent);text-decoration:underline}
.site-footer .footer-bottom{padding-top:var(--space-3);border-top:1px solid var(--c-border);width:100%;text-align:center;font-size:var(--fs-footer-link);color:var(--c-muted)}
.site-footer .footer-bottom p{margin:0}

/* === 22. UTILITY VARIE === */
.header-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:var(--s-sm)}
.create-form-actions{display:flex;gap:var(--s-sm);align-items:center;margin-top:var(--s-lg)}
.info-box-help{margin-top:var(--s-xl);background:var(--c-bg)}
.info-box-help ul{margin-left:var(--s-lg);margin-top:var(--s-sm)}
.page-title{font-size:var(--fs-h1);font-weight:800;color:var(--c-text);line-height:1.2}
.page-subtitle{font-size:var(--fs-body-sm);color:var(--c-muted)}
.page-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-md)}

/* === 23. RESPONSIVE === */
@media (max-width:1100px){
:root{--layout-gap-top:var(--space-3);--layout-gap-side:var(--space-4);--layout-header-pad-x:var(--space-3);--layout-sidebar-pad:var(--space-4);--layout-footer-pad:var(--space-4);--flow-gap:3rem;--gap-tra-gruppi:1.5rem;--gap-header-griglia:var(--space-2)}
.layout-root{grid-template-columns:1fr;grid-template-areas:"header" "testatina" "main" "footer"}
.layout-root::before{display:none}
body.has-map .main-content,
body:has(.map-container) .main-content{position:relative}
.desktop-only{display:none !important}
.desktop-actions{display:none !important}
.header-inner{flex-wrap:nowrap;gap:var(--s-sm);align-items:center}
.logo{flex:1 1 auto;min-width:0;overflow:hidden;order:1}
.logo img{height:2rem;width:auto}
.logo-text{font-size:var(--fs-logo-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-inner > .user-menu,
.header-inner > .search-menu,
.header-inner > .mobile-menu-toggle{flex-shrink:0}
.user-menu{order:2;display:block;flex:0 0 auto}
.search-menu{order:3;display:block;flex:0 0 auto}
.mobile-search-toggle{display:inline-flex}
.mobile-menu-toggle{order:4;display:flex !important;flex:0 0 auto}
.search-form{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-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)}
body.has-map .sidebar,
body:has(.map-container) .sidebar{position:absolute;top:0;right:-100%;height:100%;width:75%;max-width:20rem;z-index:50;transition:right .3s}
body.has-map .sidebar.active,
body:has(.map-container) .sidebar.active{right:0}
}
@media (min-width:1101px){
.desktop-only{display:flex}
.mobile-menu-toggle,.mobile-search-toggle{display:none}
.sidebar__login,.sidebar__header{display:none}
.user-menu{display:none}
.search-menu{display:none}
.theme-btn--sidebar{display:none}
.sidebar__theme-toggle{display:none}
}
@media (max-width:768px){
:root{--layout-gap-top:var(--space-4);--layout-gap-side:var(--space-3);--layout-gap-bottom:var(--space-4);--layout-header-pad-x:var(--space-3);--flow-gap:2rem;--gap-tra-gruppi:1.25rem;--gap-header-griglia:var(--space-2)}
.admin-bar{display:none}
.mobile-nav-links{padding:var(--s-xs) var(--s-sm);gap:var(--s-xs)}
}