/* Griglia oraria condivisa: giorni e servizi simultanei restano sempre affiancati. */
.calendar-timegrid {
    --calendar-axis-width:32px;
    width:100%; max-height:72vh; min-height:380px; overflow:auto;
    border:1px solid #ccd5e1; border-radius:10px; background:#fff;
    overscroll-behavior:contain; overflow-anchor:none; scroll-behavior:auto;
    touch-action:none; -webkit-overflow-scrolling:auto;
}
.calendar-grid-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:4px 10px; margin-bottom:8px; }
.calendar-zoom-controls { display:flex; align-items:center; gap:8px; }
.calendar-zoom-controls .btn { min-width:36px; min-height:36px; font-size:20px; line-height:1; }
.calendar-zoom-controls output { min-width:48px; text-align:center; font-variant-numeric:tabular-nums; }
.calendar-grid-help { margin:0; font-size:11px; line-height:1.35; }
.app-view:has(>.agenda-view) { max-width:none; }
.agenda-view .calendar-timegrid,.agenda-view .calendar-month { width:calc(100% + 24px + var(--kt-sal,0px) + var(--kt-sar,0px)); margin-left:calc(-12px - var(--kt-sal,0px)); margin-right:calc(-12px - var(--kt-sar,0px)); border-left:0; border-right:0; border-radius:0; }
.calendar-search-input,.calendar-operator-input { min-height:40px; }
.calendar-period-strip { display:flex; align-items:center; flex-wrap:wrap; gap:5px 10px; min-height:24px; touch-action:pan-y; }
.calendar-period-strip:focus-visible,.calendar-period-surface:focus-visible { outline:2px solid #174778; outline-offset:3px; }
.calendar-range-label { font-size:12px; color:#59677a; }
.calendar-search-status { display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; font-size:12px; color:#59677a; }
.calendar-search-chip { display:inline-flex; align-items:center; gap:5px; max-width:100%; border:1px solid #b8c9df; border-radius:18px; background:#e8f0fc; color:#174778; padding-left:10px; }
.calendar-search-chip>span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.calendar-search-chip button { flex-shrink:0; border:0; background:transparent; color:inherit; min-width:32px; min-height:32px; border-radius:50%; font-size:21px; line-height:1; }
.calendar-search-chip button:focus-visible { outline:2px solid #174778; outline-offset:1px; }
.calendar-period-surface { touch-action:pan-y; min-height:160px; overflow-anchor:none; }
.calendar-timegrid:focus-visible { outline:3px solid #e5a000; outline-offset:2px; }
.calendar-timegrid-board { display:grid; min-width:100%; width:100%; align-items:stretch; }
.calendar-grid-corner,.calendar-grid-heading {
    position:sticky; top:0; z-index:5; background:#f3f6fa;
    border-bottom:1px solid #ccd5e1; padding:12px 6px;
    font-size:13px; line-height:20px; font-weight:700; text-align:center;
}
.calendar-grid-corner { left:0; z-index:7; color:#647084; font-size:9px; padding-left:1px; padding-right:1px; }
.calendar-grid-heading { border-left:1px solid #dce3ed; }
.calendar-grid-heading.is-today { background:#e8f0ff; color:#174981; }
.calendar-all-label,.calendar-all-day { border-bottom:1px solid #ccd5e1; padding:5px 3px; min-height:30px; background:#fbfcfe; }
.calendar-all-label { position:sticky; left:0; z-index:4; font-size:9px; color:#647084; text-align:center; align-content:center; }
.calendar-all-day { min-width:0; border-left:1px solid #dce3ed; display:flex; flex-direction:column; gap:3px; }
.calendar-time-axis { position:sticky; left:0; z-index:3; background:#f8fafc; border-right:1px solid #ccd5e1; }
.calendar-time-axis span { position:absolute; left:0; right:0; padding:3px 2px 0 0; text-align:right; color:#657187; font-size:9px; line-height:12px; font-variant-numeric:tabular-nums; }
.calendar-time-day {
    position:relative; min-width:0; border-right:1px solid #dce3ed;
    background:repeating-linear-gradient(to bottom,#cfd8e5 0,#cfd8e5 1px,transparent 1px,transparent var(--calendar-half-hour),#e8edf4 var(--calendar-half-hour),#e8edf4 calc(var(--calendar-half-hour) + 1px),transparent calc(var(--calendar-half-hour) + 1px),transparent var(--calendar-hour));
}
.calendar-time-event {
    position:absolute; display:block; box-sizing:border-box; min-width:0; margin:0;
    padding:7px 4px 3px; overflow:hidden; border:1px solid rgba(0,0,0,.16);
    border-radius:5px; background:var(--operator-color); color:var(--event-ink);
    text-decoration:none; line-height:1.2; text-align:left;
}
.calendar-time-event::before { content:""; position:absolute; top:0; left:0; right:0; height:4px; background:var(--operator-stripes); }
.calendar-time-event:hover,.calendar-time-event:active { color:var(--event-ink); filter:brightness(.94); }
.calendar-time-event:focus-visible { outline:3px solid #e5a000; outline-offset:-3px; z-index:2; }
.calendar-event-time { display:block; font-size:10px; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.calendar-event-title { display:block; font-size:12px; overflow-wrap:anywhere; word-break:normal; }
.calendar-all-event { position:relative; min-height:30px; padding:7px 5px 4px; }
.calendar-all-event .calendar-event-time { display:none; }
.calendar-all-event .calendar-event-title { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.calendar-now-line { position:absolute; left:0; right:0; height:2px; background:#df3b43; pointer-events:none; z-index:2; }
.calendar-now-line::before { content:""; position:absolute; left:-3px; top:-3px; width:8px; height:8px; border-radius:50%; background:#df3b43; }
.agenda-view .calendar-month .svc-case-title { overflow-wrap:anywhere; }
.calendar-timegrid[data-calendar-mode=week] .calendar-time-event { padding:5px 1px 1px; border-radius:3px; }
.calendar-timegrid[data-calendar-mode=week] .calendar-event-title { line-height:1.1; word-break:break-word; }
@media(max-width:767px) {
    .calendar-timegrid { --calendar-axis-width:24px; }
    .calendar-grid-heading { padding:8px 1px; font-size:9px; line-height:14px; letter-spacing:0; }
    .calendar-grid-corner { padding-top:8px; padding-bottom:8px; font-size:8px; }
    .calendar-time-axis span { font-size:8px; line-height:10px; }
    .calendar-all-label { padding:5px 1px; font-size:7px; overflow-wrap:anywhere; }
    .calendar-timegrid[data-calendar-mode=week] .calendar-event-title { font-size:9px; }
    .calendar-timegrid[data-calendar-mode=week] .calendar-event-time { font-size:7px; }
}
@media(min-width:900px) {
    .calendar-timegrid { max-height:76vh; }
    .calendar-event-time { font-size:11px; }
    .calendar-event-title { font-size:13px; }
}
