/* ============================================================================
   HABITUAL TOURIST — CALENDARIO.CSS v1.0
   
   Stili per il calendario 4 settimane della home (partial
   views/calendario_settimanale_view.php).
   
   Caricato CONDIZIONALMENTE da Layout::renderStyles() quando
   isCalendarioPage() è true (home con calendario, o /calendario futura).
   NON CRITICO (preload + onload): il calendario è sotto il carosello,
   non è LCP.
   
   Dipendenze: base.css (variabili --c-*, --s-*, --radius-*, --shadow-*),
   text.css (--fs-*), layout.css (.section, .flow, .tipo-group-header,
   .titolo-sub, .badge).
   ============================================================================ */


/* === 1. WRAPPER === */
.calendario-wrapper{background:var(--c-card);border:var(--bw) solid var(--c-border);border-radius:var(--radius-md);padding:var(--s-md);overflow:hidden}


/* === 2. TOOLBAR === */
.calendario-toolbar{display:flex;justify-content:space-between;align-items:center;gap:var(--s-md);margin-bottom:var(--s-md);flex-wrap:wrap}
.calendario-toolbar__nav{display:flex;align-items:center;gap:var(--s-sm)}
.calendario-toolbar__label{font-size:var(--fs-h3);font-weight:700;color:var(--c-text);min-width:8rem;text-align:center;white-space:nowrap}
.calendario-toolbar__meta{display:flex;align-items:center;gap:var(--s-sm);flex-wrap:wrap}
.calendario-nav-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-circle);background:var(--c-bg);border:var(--bw) solid var(--c-border);color:var(--c-text);text-decoration:none;font-size:var(--fs-btn);line-height:1;cursor:pointer;transition:var(--t-fast);min-height:2rem;padding:0}
.calendario-nav-btn:hover{background:var(--c-accent);color:#fff;border-color:var(--c-accent);transform:translateY(-1px)}
.calendario-nav-btn:active{transform:translateY(0)}
.calendario-nav-btn.is-disabled{opacity:.35;cursor:not-allowed;pointer-events:none}
.calendario-today-link{font-size:var(--fs-btn-sm);color:var(--c-accent);text-decoration:underline;font-weight:600}
.calendario-today-link:hover{text-decoration:none}


/* === 3. GRIGLIA === */
.calendario-grid{display:flex;flex-direction:column;gap:2px;background:var(--c-border);border-radius:var(--radius-sm);overflow:hidden}
.calendario-grid__head,.calendario-grid__week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.calendario-grid__head{background:var(--c-bg)}
.calendario-grid__dayname{text-align:center;padding:var(--s-xs) 0;font-size:var(--fs-btn-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--c-muted);background:var(--c-bg)}


/* === 4. CELLE GIORNO === */
.calendario-grid__day{background:var(--c-card);padding:var(--s-xs);min-height:5.5rem;display:flex;flex-direction:column;gap:2px;position:relative;transition:background var(--t-fast)}
.calendario-grid__day.is-outside{background:#f4f6f8;color:var(--c-muted)}
.calendario-grid__day.is-today{background:rgba(0,102,204,.06)}
.calendario-grid__day.is-today .calendario-grid__num time{background:var(--c-accent);color:#fff}
.calendario-grid__day.has-events:hover{background:var(--c-bg)}
.calendario-grid__num{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-btn-sm);color:var(--c-muted);font-weight:600;line-height:1;margin-bottom:2px}
.calendario-grid__num time,.calendario-grid__num span{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:var(--radius-circle)}
.calendario-grid__day.is-today .calendario-grid__num time{font-weight:800}


/* === 5. EVENTI NELLA CELLA === */
.calendario-grid__events{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;min-width:0}
.calendario-grid__events li{min-width:0}
.calendario-evento-pill{display:flex;align-items:center;gap:2px;padding:2px 4px;background:var(--c-accent);color:#fff;border-radius:var(--radius-xs);font-size:11px;line-height:1.2;text-decoration:none;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:filter var(--t-fast)}
.calendario-evento-pill:hover{filter:brightness(.9);text-decoration:none}
.calendario-evento-pill__icon{font-size:10px;flex-shrink:0;line-height:1}
.calendario-evento-pill__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.calendario-evento-more{display:inline-flex;align-items:center;justify-content:center;padding:1px 6px;background:var(--c-bg);color:var(--c-text);border:var(--bw) solid var(--c-border);border-radius:var(--radius-xs);font-size:10px;font-weight:700;line-height:1.2;cursor:help}


/* === 6. EMPTY STATE === */
.calendario-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-sm);padding:var(--s-xl) var(--s-md);text-align:center;color:var(--c-muted)}
.calendario-empty .btn-emoji{font-size:2.5rem;opacity:.35;margin-bottom:var(--s-xs)}
.calendario-empty p{margin:0;font-size:var(--fs-body)}


/* === 7. DARK MODE === */
:root.dark .calendario-wrapper{background:var(--c-card);border-color:var(--c-border)}
:root.dark .calendario-grid{background:#2a2a2a}
:root.dark .calendario-grid__head,
:root.dark .calendario-grid__dayname{background:#1a1a1a}
:root.dark .calendario-grid__day{background:var(--c-card)}
:root.dark .calendario-grid__day.is-outside{background:#141414;color:#666}
:root.dark .calendario-grid__day.is-today{background:rgba(57,153,255,.12)}
:root.dark .calendario-grid__day.is-today .calendario-grid__num time{background:var(--c-accent);color:#fff}
:root.dark .calendario-grid__day.has-events:hover{background:#242424}
:root.dark .calendario-nav-btn{background:#1a1a1a;border-color:#333;color:#e0e0e0}
:root.dark .calendario-nav-btn:hover{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}
:root.dark .calendario-evento-pill{background:var(--c-accent);color:#fff}
:root.dark .calendario-evento-more{background:#1a1a1a;color:#e0e0e0;border-color:#333}


/* === 8. RESPONSIVE — TABLET === */
@media (max-width:1100px){
.calendario-wrapper{padding:var(--s-sm)}
.calendario-grid__day{min-height:4.5rem;padding:4px}
.calendario-evento-pill{font-size:10px;padding:1px 3px}
.calendario-grid__num{font-size:11px}
.calendario-grid__num time,.calendario-grid__num span{width:1.25rem;height:1.25rem}
.calendario-toolbar__label{min-width:6rem;font-size:var(--fs-btn)}
}


/* === 9. RESPONSIVE — MOBILE (scroll orizzontale) === */
@media (max-width:768px){
.calendario-wrapper{padding:var(--s-xs);overflow-x:auto;-webkit-overflow-scrolling:touch}
.calendario-grid{min-width:640px}
.calendario-grid__day{min-height:4rem;padding:3px}
.calendario-grid__dayname{font-size:10px;padding:2px 0}
.calendario-grid__num{font-size:10px}
.calendario-grid__num time,.calendario-grid__num span{width:1.1rem;height:1.1rem}
.calendario-evento-pill{font-size:9px;padding:1px 2px}
.calendario-evento-pill__icon{display:none}
.calendario-evento-more{font-size:9px;padding:0 4px}
.calendario-toolbar{flex-direction:column;align-items:stretch;gap:var(--s-xs)}
.calendario-toolbar__nav{justify-content:space-between;width:100%}
.calendario-toolbar__meta{justify-content:space-between;width:100%}
.calendario-toolbar__label{min-width:0;flex:1;font-size:var(--fs-btn-sm)}
}


/* === 10. RESPONSIVE — MOBILE PICCOLO === */
@media (max-width:480px){
.calendario-grid{min-width:560px}
.calendario-grid__day{min-height:3.5rem}
.calendario-evento-pill__label{display:none}
.calendario-evento-pill{padding:3px;justify-content:center;border-radius:var(--radius-circle);width:1.5rem;height:1.5rem;margin:0 auto}
.calendario-evento-pill__icon{display:inline-flex;font-size:10px}
.calendario-evento-more{width:1.5rem;height:1.5rem;padding:0;border-radius:var(--radius-circle)}
.calendario-grid__events{align-items:center}
}