/* =============================================================================
   PAS — tema unico (rules/ui-theme). Token da PASDoc/design/design-tokens.json.
   Strati: 1 font · 2 token · 3 base · 4 shell · 5 controlli · 6 pianificazione desktop
           7 blocchi intervento · 8 pannello dettaglio · 9 mobile · 10 dialoghi · 11 elenchi
           12 login · 13 stampa · 14 movimento ridotto
   ============================================================================= */

/* 1. Font self-hosted (OFL-1.1, ADR-017) */
@font-face {
    font-family: 'Atkinson Hyperlegible Next Variable';
    font-style: normal;
    font-display: swap;
    font-weight: 200 800;
    src: url('../fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Atkinson Hyperlegible Next Variable';
    font-style: normal;
    font-display: swap;
    font-weight: 200 800;
    src: url('../fonts/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* 2. Token */
:root {
    /* Palette allineata al sito istituzionale progettoassistenzaseregno.it (ADR-024):
       blu notte #0E2A46 = testo e barra del sito, blu #1F5D9C = blu del logo. Il rosso del logo (#E40613)
       resta SOLO nel logo: in interfaccia il rosso significa "conflitto". */
    --pas-bg: #F3F6FA;
    --pas-surface: #FFFFFF;
    --pas-surface-muted: #ECF1F7;
    --pas-ink: #0E2A46;
    --pas-ink-2: #4A5D73;
    --pas-ink-3: #7A8BA0;
    --pas-line: #D6DEE8;
    --pas-line-strong: #B4C1D1;
    --pas-primary: #1F5D9C;
    --pas-primary-hover: #174A7E;
    --pas-primary-soft: #E3EDF7;
    --pas-navy: #0E2A46;
    --pas-brand-red: #E40613;
    --pas-focus: #174A7E;
    --pas-weekend-bg: #F7F9FC;
    --pas-today-bg: #E8F1FA;

    --pas-ok-fg: #2D6A5A;   --pas-ok-bg: #E6F1ED;   --pas-ok-bd: #7FB3A2;
    --pas-todo-fg: #8A5A00; --pas-todo-bg: #FCF1DA; --pas-todo-bd: #D9A441;
    --pas-ko-fg: #A8322A;   --pas-ko-bg: #FBE8E5;   --pas-ko-bd: #D4675E;
    --pas-abs-fg: #5E6A73;  --pas-abs-bg: #ECEFEE;  --pas-abs-hatch: #D3D9D7;
    --pas-off-fg: #7A8590;  --pas-off-bg: #F1F3F2;  --pas-off-bd: #C9D0CD;
    --pas-ns-fg: #7B3D8C;   --pas-ns-bg: #F4EAF6;   --pas-ns-bd: #B98BC6;
    --pas-done-fg: #2D4F6A; --pas-done-bg: #E8EEF4; --pas-done-bd: #9DB2C6;

    --pas-font: 'Atkinson Hyperlegible Next Variable', 'Segoe UI', system-ui, sans-serif;
    --pas-fs-xs: 12px; --pas-fs-sm: 13px; --pas-fs-base: 14px; --pas-fs-md: 16px; --pas-fs-lg: 18px; --pas-fs-xl: 22px;

    --pas-s1: 2px; --pas-s2: 4px; --pas-s3: 8px; --pas-s4: 12px; --pas-s5: 16px; --pas-s6: 24px; --pas-s7: 32px;
    --pas-r-block: 3px; --pas-r-control: 5px; --pas-r-sheet: 12px;
    --pas-h-control: 32px; --pas-h-touch: 44px;
    --pas-col-nome: 208px; --pas-col-giorno: 128px; --pas-panel-w: 348px; --pas-header-h: 56px;
    --pas-shadow-overlay: 0 8px 24px rgba(14, 42, 70, .18);
    --pas-hatch: repeating-linear-gradient(-45deg, var(--pas-abs-bg) 0 6px, var(--pas-abs-hatch) 6px 7px);
}

/* 3. Base */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
    background: var(--pas-bg);
    color: var(--pas-ink);
    font-family: var(--pas-font);
    font-size: var(--pas-fs-base);
    line-height: 1.4;
    font-variant-numeric: tabular-nums;
    -webkit-font-smoothing: antialiased;
    -webkit-text-size-adjust: 100%;
}
h1, h2, h3 { margin: 0; line-height: 1.2; font-weight: 700; }
h1 { font-size: var(--pas-fs-xl); }
h2 { font-size: var(--pas-fs-lg); }
h3 { font-size: var(--pas-fs-md); }
p { margin: 0 0 var(--pas-s3); }
a { color: var(--pas-primary); }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--pas-focus); outline-offset: 2px; }
.pas-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pas-num { font-variant-numeric: tabular-nums; }
.pas-muted { color: var(--pas-ink-2); }
.pas-icon { width: 16px; height: 16px; flex: none; vertical-align: -3px; }
.pas-icon.sm { width: 13px; height: 13px; vertical-align: -2px; }

.pas-avvio { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: var(--pas-s4); text-align: center; }
.pas-avvio-logo { width: 188px; height: auto; }
.pas-avvio-nome { font-size: 28px; font-weight: 700; color: var(--pas-primary); letter-spacing: .02em; }
.pas-avvio-testo { color: var(--pas-ink-2); }

#blazor-error-ui {
    display: none; position: fixed; inset: auto 0 0 0; z-index: 1000;
    padding: var(--pas-s4) var(--pas-s5); background: var(--pas-ko-bg); color: var(--pas-ko-fg);
    border-top: 2px solid var(--pas-ko-bd);
}
#blazor-error-ui .dismiss { float: right; border: 0; background: none; font-size: 20px; cursor: pointer; }

/* 4. Shell */
.pas-shell { min-height: 100vh; display: flex; flex-direction: column; }
/* Header bianco con logo e filo blu notte in alto, come il sito istituzionale (ADR-024) */
.pas-topbar {
    height: var(--pas-header-h); flex: none;
    display: flex; align-items: center; gap: var(--pas-s5);
    padding: 0 var(--pas-s5);
    background: var(--pas-surface); color: var(--pas-ink);
    border-top: 4px solid var(--pas-navy); border-bottom: 1px solid var(--pas-line);
}
.pas-brand { display: flex; align-items: center; gap: var(--pas-s3); white-space: nowrap; color: var(--pas-ink); text-decoration: none; }
.pas-brand img { height: 38px; width: auto; display: block; }
.pas-nav { display: flex; gap: var(--pas-s1); height: 100%; }
.pas-nav a {
    display: flex; align-items: center; padding: 0 var(--pas-s4);
    color: var(--pas-ink); text-decoration: none; border-bottom: 3px solid transparent; border-top: 3px solid transparent; white-space: nowrap;
}
@media (max-width: 1199px) {
    .pas-topbar { gap: var(--pas-s3); }
    .pas-nav a { padding: 0 var(--pas-s3); }
    .pas-topbar-utente > span { display: none; }
}
.pas-nav a:hover { color: var(--pas-primary); }
.pas-nav a.active { color: var(--pas-primary); border-bottom-color: var(--pas-primary); font-weight: 700; }
.pas-topbar-utente { margin-left: auto; display: flex; align-items: center; gap: var(--pas-s3); font-size: var(--pas-fs-sm); color: var(--pas-ink-2); }
.pas-topbar-utente button {
    background: var(--pas-surface); border: 1px solid var(--pas-line-strong); color: var(--pas-ink);
    border-radius: var(--pas-r-control); height: 30px; padding: 0 var(--pas-s3); cursor: pointer;
}
.pas-topbar-utente button:hover { background: var(--pas-surface-muted); }
.pas-menu-btn { display: none; background: none; border: 0; color: var(--pas-ink); width: 40px; height: 40px; cursor: pointer; margin-left: -8px; }
.pas-menu-btn .pas-icon { width: 22px; height: 22px; }
.pas-main { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.pas-pagina { padding: var(--pas-s5) var(--pas-s5) var(--pas-s7); max-width: 1280px; width: 100%; }
.pas-pagina-titolo { display: flex; align-items: baseline; gap: var(--pas-s4); margin-bottom: var(--pas-s5); flex-wrap: wrap; }

.pas-drawer-velo { position: fixed; inset: 0; background: rgba(27, 39, 51, .35); z-index: 90; }
.pas-drawer {
    position: fixed; inset: 0 auto 0 0; width: min(300px, 85vw); z-index: 91;
    background: var(--pas-surface); box-shadow: var(--pas-shadow-overlay);
    display: flex; flex-direction: column; padding: var(--pas-s4) 0;
}
.pas-drawer a, .pas-drawer button.voce {
    display: flex; align-items: center; min-height: var(--pas-h-touch); padding: 0 var(--pas-s5);
    color: var(--pas-ink); text-decoration: none; font-size: var(--pas-fs-md); background: none; border: 0; text-align: left; width: 100%;
}
.pas-drawer a.active { color: var(--pas-primary); font-weight: 700; background: var(--pas-primary-soft); }
.pas-drawer-utente { margin-top: auto; padding: var(--pas-s4) var(--pas-s5); border-top: 1px solid var(--pas-line); color: var(--pas-ink-2); }

/* Modalità DEMO (ADR-028): la parola DEMO è sempre scritta, il colore la rinforza soltanto.
   Blu informativo, non l'ambra: l'ambra in griglia vuol dire "da assegnare". */
.pas-demo-fascia {
    flex: none; display: flex; align-items: center; gap: var(--pas-s3);
    padding: var(--pas-s2) var(--pas-s5); font-size: var(--pas-fs-sm);
    background: var(--pas-primary-soft); color: var(--pas-primary); border-bottom: 1px solid var(--pas-line);
}
.pas-login-form .pas-demo-fascia { border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); margin-bottom: var(--pas-s5); padding: var(--pas-s3); }
.pas-demo-etichetta {
    font-weight: 800; letter-spacing: .08em; font-size: var(--pas-fs-xs); padding: 1px 6px;
    border: 1.5px solid currentColor; border-radius: var(--pas-r-block);
}
.pas-demo-avviso-area { position: fixed; left: 50%; bottom: var(--pas-s6); transform: translateX(-50%); z-index: 120; width: max-content; max-width: calc(100vw - 32px); }
.pas-demo-avviso {
    display: flex; align-items: center; gap: var(--pas-s3); padding: var(--pas-s3) var(--pas-s3) var(--pas-s3) var(--pas-s4);
    background: var(--pas-navy); color: #fff; border-radius: var(--pas-r-control); box-shadow: var(--pas-shadow-overlay);
}
.pas-demo-avviso button { background: none; border: 0; color: inherit; cursor: pointer; width: 32px; height: 32px; display: grid; place-content: center; }
.pas-demo-avviso .pas-icon { width: 18px; height: 18px; }

/* 5. Controlli */
.pas-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: var(--pas-s2);
    height: var(--pas-h-control); padding: 0 var(--pas-s4);
    border: 1px solid var(--pas-line-strong); border-radius: var(--pas-r-control);
    background: var(--pas-surface); color: var(--pas-ink); cursor: pointer; white-space: nowrap; text-decoration: none;
}
.pas-btn:hover { background: var(--pas-surface-muted); }
.pas-btn:disabled { opacity: .5; cursor: not-allowed; }
.pas-btn.primario { background: var(--pas-primary); border-color: var(--pas-primary); color: #fff; font-weight: 600; }
.pas-btn.primario:hover { background: var(--pas-primary-hover); }
.pas-btn.pericolo { color: var(--pas-ko-fg); border-color: var(--pas-ko-bd); }
.pas-btn.pericolo:hover { background: var(--pas-ko-bg); }
.pas-btn.icona { width: var(--pas-h-control); padding: 0; }
.pas-btn.largo { width: 100%; }
.pas-btn.link { border: 0; background: none; color: var(--pas-primary); padding: 0 var(--pas-s2); height: auto; }
.pas-btn.link:hover { text-decoration: underline; background: none; }

.pas-input, .pas-select {
    height: var(--pas-h-control); padding: 0 var(--pas-s3);
    border: 1px solid var(--pas-line-strong); border-radius: var(--pas-r-control); background: var(--pas-surface);
    min-width: 0;
}
.pas-select { padding-right: var(--pas-s6); }
textarea.pas-input { height: auto; min-height: 72px; padding: var(--pas-s3); resize: vertical; width: 100%; }
.pas-input:focus, .pas-select:focus { outline: 2px solid var(--pas-focus); outline-offset: 0; border-color: var(--pas-focus); }
.pas-input[aria-invalid="true"] { border-color: var(--pas-ko-bd); }
.pas-campo { display: flex; flex-direction: column; gap: var(--pas-s2); margin-bottom: var(--pas-s4); }
.pas-campo label { font-size: var(--pas-fs-sm); font-weight: 600; color: var(--pas-ink-2); }
.pas-campi-riga { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: var(--pas-s3); }
.pas-ricerca { position: relative; display: flex; align-items: center; }
.pas-ricerca .pas-icon { position: absolute; left: 9px; color: var(--pas-ink-3); pointer-events: none; }
.pas-ricerca .pas-input { padding-left: 30px; width: 240px; }

.pas-chip {
    display: inline-flex; align-items: center; gap: var(--pas-s2);
    height: 28px; padding: 0 var(--pas-s3); border-radius: 999px;
    border: 1px solid var(--pas-line-strong); background: var(--pas-surface); color: var(--pas-ink); font-size: var(--pas-fs-sm); cursor: pointer;
}
.pas-chip .valore { font-weight: 700; }
.pas-chip.todo { border-color: var(--pas-todo-bd); background: var(--pas-todo-bg); color: var(--pas-todo-fg); }
.pas-chip.ko { border-color: var(--pas-ko-bd); background: var(--pas-ko-bg); color: var(--pas-ko-fg); }
.pas-chip.zero { background: var(--pas-surface); color: var(--pas-ink-2); border-color: var(--pas-line); }
.pas-chip[aria-pressed="true"] { box-shadow: inset 0 0 0 2px currentColor; }
.pas-chip.filtro { background: var(--pas-primary-soft); border-color: transparent; color: var(--pas-primary); }

.pas-segmenti { display: inline-flex; border: 1px solid var(--pas-line-strong); border-radius: var(--pas-r-control); overflow: hidden; background: var(--pas-surface); }
.pas-segmenti button { height: calc(var(--pas-h-control) - 2px); padding: 0 var(--pas-s4); border: 0; background: none; cursor: pointer; color: var(--pas-ink-2); }
.pas-segmenti button + button { border-left: 1px solid var(--pas-line-strong); }
.pas-segmenti button[aria-pressed="true"] { background: var(--pas-primary); color: #fff; font-weight: 600; }

.pas-banner {
    display: flex; align-items: flex-start; gap: var(--pas-s3); padding: var(--pas-s3) var(--pas-s4);
    border-radius: var(--pas-r-control); border: 1px solid; margin-bottom: var(--pas-s3);
}
.pas-banner.errore { background: var(--pas-ko-bg); border-color: var(--pas-ko-bd); color: var(--pas-ko-fg); }
.pas-banner.ok { background: var(--pas-ok-bg); border-color: var(--pas-ok-bd); color: var(--pas-ok-fg); }
.pas-banner.info { background: var(--pas-primary-soft); border-color: transparent; color: var(--pas-primary); }
.pas-banner .azioni { margin-left: auto; display: flex; gap: var(--pas-s2); }

.pas-badge { display: inline-flex; align-items: center; gap: var(--pas-s1); font-size: var(--pas-fs-xs); font-weight: 600; padding: 1px 6px; border-radius: var(--pas-r-block); border: 1px solid; white-space: nowrap; }
.pas-badge.DaAssegnare { color: var(--pas-todo-fg); background: var(--pas-todo-bg); border-color: var(--pas-todo-bd); border-style: dashed; }
.pas-badge.Assegnato { color: var(--pas-ok-fg); background: var(--pas-ok-bg); border-color: var(--pas-ok-bd); }
.pas-badge.Conflitto { color: var(--pas-ko-fg); background: var(--pas-ko-bg); border-color: var(--pas-ko-bd); }
.pas-badge.Svolto { color: var(--pas-done-fg); background: var(--pas-done-bg); border-color: var(--pas-done-bd); }
.pas-badge.Annullato { color: var(--pas-off-fg); background: var(--pas-off-bg); border-color: var(--pas-off-bd); }
.pas-badge.MancataPresenza { color: var(--pas-ns-fg); background: var(--pas-ns-bg); border-color: var(--pas-ns-bd); border-style: dashed; }

.pas-scheletro { background: linear-gradient(90deg, var(--pas-surface-muted), #f7f9f8, var(--pas-surface-muted)); background-size: 200% 100%; animation: pas-onda 1.4s infinite linear; border-radius: var(--pas-r-block); }
@keyframes pas-onda { from { background-position: 200% 0; } to { background-position: -200% 0; } }

.pas-vuoto { padding: var(--pas-s6); text-align: center; color: var(--pas-ink-2); }

/* 6. Pianificazione desktop / tablet */
.pas-plan { flex: 1; min-height: 0; display: flex; }
.pas-plan-centro { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.pas-toolbar {
    display: flex; align-items: center; gap: var(--pas-s3); flex-wrap: wrap;
    padding: var(--pas-s3) var(--pas-s5); background: var(--pas-surface); border-bottom: 1px solid var(--pas-line);
}
.pas-toolbar .spazio { flex: 1; }
.pas-settimana-nav { display: flex; align-items: center; gap: var(--pas-s2); }
.pas-settimana-nav h1 { font-size: var(--pas-fs-md); min-width: 15ch; text-align: center; padding: 0 var(--pas-s2); }
.pas-contatori { display: flex; gap: var(--pas-s2); flex-wrap: wrap; }

.pas-filtri {
    display: flex; align-items: center; gap: var(--pas-s3); flex-wrap: wrap;
    padding: var(--pas-s3) var(--pas-s5); background: var(--pas-surface); border-bottom: 1px solid var(--pas-line);
}
.pas-filtri .attivi { display: flex; gap: var(--pas-s2); flex-wrap: wrap; }

.pas-striscia {
    display: flex; gap: var(--pas-s2); padding: var(--pas-s3) var(--pas-s5); overflow-x: auto;
    background: var(--pas-bg); border-bottom: 1px solid var(--pas-line);
}
.pas-striscia button {
    flex: 1 0 128px; max-width: 180px; text-align: left; cursor: pointer;
    padding: var(--pas-s2) var(--pas-s3); border-radius: var(--pas-r-control);
    border: 1px solid var(--pas-line); background: var(--pas-surface); font-size: var(--pas-fs-xs); color: var(--pas-ink-2);
}
.pas-striscia button .sett { display: block; font-size: var(--pas-fs-sm); font-weight: 600; color: var(--pas-ink); }
.pas-striscia button .stato { display: flex; gap: var(--pas-s3); margin-top: 1px; }
.pas-striscia button .todo { color: var(--pas-todo-fg); font-weight: 600; }
.pas-striscia button .ko { color: var(--pas-ko-fg); font-weight: 600; }
.pas-striscia button .ok { color: var(--pas-ok-fg); }
.pas-striscia button[aria-current="true"] { border-color: var(--pas-primary); box-shadow: inset 0 0 0 1px var(--pas-primary); background: var(--pas-primary-soft); }
.pas-striscia button.non-generata { border-style: dashed; }

.pas-griglia-wrap { flex: 1; min-height: 0; overflow: auto; position: relative; background: var(--pas-surface); }
.pas-griglia {
    display: grid;
    grid-template-columns: var(--pas-col-nome) repeat(7, minmax(var(--pas-col-giorno), 1fr));
    min-width: calc(var(--pas-col-nome) + 7 * var(--pas-col-giorno));
}
.pas-griglia > .cella { border-right: 1px solid var(--pas-line); border-bottom: 1px solid var(--pas-line); padding: var(--pas-s2); min-height: 56px; min-width: 0; }
.pas-griglia > .cella.weekend { background: var(--pas-weekend-bg); }
.pas-griglia > .cella.oggi { background: var(--pas-today-bg); }
.pas-griglia > .cella.nondisp { background-image: radial-gradient(var(--pas-line) 1px, transparent 1px); background-size: 8px 8px; }

.pas-griglia > .intest {
    position: sticky; top: 0; z-index: 3; min-height: 0; height: 40px;
    background: var(--pas-surface); border-bottom: 1px solid var(--pas-line-strong);
    padding: var(--pas-s3) var(--pas-s3); display: flex; align-items: baseline; gap: var(--pas-s2);
}
.pas-griglia > .intest .num { font-size: var(--pas-fs-lg); font-weight: 700; }
.pas-griglia > .intest .fest { font-size: var(--pas-fs-xs); color: var(--pas-ko-fg); font-weight: 600; margin-left: auto; text-align: right; }
.pas-griglia > .intest.oggi { background: var(--pas-today-bg); box-shadow: inset 0 -3px 0 var(--pas-primary); }
.pas-griglia > .intest.weekend { background: var(--pas-weekend-bg); }
.pas-griglia > .angolo { left: 0; z-index: 4; color: var(--pas-ink-2); font-size: var(--pas-fs-sm); font-weight: 600; }

.pas-griglia > .nome {
    position: sticky; left: 0; z-index: 2; background: var(--pas-surface);
    padding: var(--pas-s3) var(--pas-s3); border-right: 1px solid var(--pas-line-strong);
    display: flex; flex-direction: column; gap: 1px;
}
.pas-griglia > .nome .chi { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pas-griglia > .nome .meta { font-size: var(--pas-fs-xs); color: var(--pas-ink-2); display: flex; gap: var(--pas-s2); flex-wrap: wrap; }
.pas-griglia > .nome .assenza { font-size: var(--pas-fs-xs); color: var(--pas-abs-fg); }
.pas-ore-barra { height: 3px; background: var(--pas-surface-muted); border-radius: 2px; margin-top: 3px; overflow: hidden; }
.pas-ore-barra span { display: block; height: 100%; background: var(--pas-primary); opacity: .55; }
.pas-ore-barra span.alto { background: var(--pas-ko-bd); opacity: 1; }

/* Fascia "Da assegnare": l'unico elemento audace (design-direction.md) */
.pas-griglia > .coda {
    position: sticky; top: 40px; z-index: 2;
    background: var(--pas-todo-bg); border-bottom: 2px solid var(--pas-todo-bd);
    max-height: 196px; overflow-y: auto; scrollbar-width: thin;
}
.pas-griglia > .coda.espansa { max-height: none; position: static; }
.pas-griglia > .nome.coda-nome {
    position: sticky; top: 40px; left: 0; z-index: 4;
    background: var(--pas-todo-bg); color: var(--pas-todo-fg); border-bottom: 2px solid var(--pas-todo-bd);
}
.pas-griglia > .nome.coda-nome .chi { display: flex; align-items: center; gap: var(--pas-s2); font-size: var(--pas-fs-md); }
.pas-griglia > .coda.vuota { color: var(--pas-ok-fg); font-size: var(--pas-fs-xs); display: flex; align-items: center; justify-content: center; }

.pas-assenza-cella {
    background: var(--pas-hatch); color: var(--pas-abs-fg); font-size: var(--pas-fs-xs); font-weight: 600;
    padding: 2px 6px; border-radius: var(--pas-r-block); margin-bottom: var(--pas-s2);
}
.pas-cella-vuota-nd { font-size: var(--pas-fs-xs); color: var(--pas-ink-3); padding: 2px; }

/* 7. Blocchi intervento */
.pas-blocco {
    display: block; width: 100%; text-align: left; cursor: pointer;
    padding: 3px 6px 4px; margin-bottom: var(--pas-s2);
    border: 1px solid var(--pas-ok-bd); border-radius: var(--pas-r-block);
    background: var(--pas-ok-bg); color: var(--pas-ink); font-size: var(--pas-fs-sm); line-height: 1.25;
    position: relative; overflow: hidden;
}
.pas-blocco:hover { border-color: var(--pas-primary); }
.pas-blocco .ora { font-weight: 700; display: flex; align-items: center; gap: var(--pas-s2); white-space: nowrap; }
.pas-blocco .ora .pas-icon { margin-left: auto; }
.pas-blocco .chi { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pas-blocco .srv { display: block; font-size: var(--pas-fs-xs); color: var(--pas-ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pas-blocco .motivo { display: block; font-size: var(--pas-fs-xs); font-weight: 600; margin-top: 1px; }
.pas-blocco[aria-pressed="true"] { outline: 2px solid var(--pas-primary); outline-offset: 1px; border-color: var(--pas-primary); }

.pas-blocco.DaAssegnare { background: var(--pas-surface); border: 1.5px dashed var(--pas-todo-bd); }
.pas-blocco.DaAssegnare .ora { color: var(--pas-todo-fg); }
.pas-blocco.Conflitto { background: var(--pas-ko-bg); border-color: var(--pas-ko-bd); border-left: 4px solid var(--pas-ko-fg); }
.pas-blocco.Conflitto .ora, .pas-blocco.Conflitto .motivo { color: var(--pas-ko-fg); }
.pas-blocco.Svolto { background: var(--pas-done-bg); border-color: var(--pas-done-bd); }
.pas-blocco.Svolto .ora .pas-icon { color: var(--pas-done-fg); }
.pas-blocco.MancataPresenza { background: var(--pas-ns-bg); border: 1.5px dashed var(--pas-ns-bd); }
.pas-blocco.MancataPresenza .ora, .pas-blocco.MancataPresenza .motivo { color: var(--pas-ns-fg); }
.pas-blocco.Annullato { background: var(--pas-off-bg); border-color: var(--pas-off-bd); color: var(--pas-off-fg); }
.pas-blocco.Annullato .ora, .pas-blocco.Annullato .chi { text-decoration: line-through; }
.pas-blocco .avviso { color: var(--pas-todo-fg); }
/* Tariffa da sistemare: riga propria con icona e testo, bordo tratteggiato come il badge "Da configurare" */
.pas-blocco .tariffa {
    display: flex; align-items: center; gap: 3px; margin-top: 2px; padding: 0 4px; width: fit-content; max-width: 100%;
    font-size: var(--pas-fs-xs); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    color: var(--pas-todo-fg); background: var(--pas-todo-bg); border: 1px dashed var(--pas-todo-bd); border-radius: var(--pas-r-block);
}
.pas-blocco.Annullato .tariffa { text-decoration: none; }

.pas-coda-altri { font-size: var(--pas-fs-xs); }

/* 8. Pannello dettaglio */
.pas-pannello {
    width: var(--pas-panel-w); flex: none; border-left: 1px solid var(--pas-line);
    background: var(--pas-surface); display: flex; flex-direction: column; min-height: 0;
}
.pas-pannello-testa {
    display: flex; align-items: flex-start; gap: var(--pas-s3); padding: var(--pas-s4) var(--pas-s4) var(--pas-s3);
    border-bottom: 1px solid var(--pas-line);
}
.pas-pannello-testa h2 { font-size: var(--pas-fs-lg); }
.pas-pannello-testa .quando { color: var(--pas-ink-2); font-size: var(--pas-fs-sm); margin-top: 2px; }
.pas-pannello-testa .chiudi { margin-left: auto; }
.pas-pannello-corpo { flex: 1; overflow-y: auto; padding: var(--pas-s3) var(--pas-s4) var(--pas-s5); }
.pas-pannello-piede { border-top: 1px solid var(--pas-line); padding: var(--pas-s3) var(--pas-s4); display: flex; flex-direction: column; gap: var(--pas-s2); }
.pas-sezione { margin-top: var(--pas-s4); }
.pas-sezione > h3 { font-size: var(--pas-fs-sm); color: var(--pas-ink-2); font-weight: 700; margin-bottom: var(--pas-s2); display: flex; align-items: center; gap: var(--pas-s2); }
.pas-dl { display: grid; grid-template-columns: max-content 1fr; gap: 2px var(--pas-s3); font-size: var(--pas-fs-sm); margin: 0; }
.pas-dl dt { color: var(--pas-ink-2); }
.pas-dl dd { margin: 0; }
.pas-problemi { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--pas-s2); }
.pas-problemi li { display: flex; gap: var(--pas-s2); font-size: var(--pas-fs-sm); padding: var(--pas-s2) var(--pas-s3); border-radius: var(--pas-r-block); }
.pas-problemi li.Block { background: var(--pas-ko-bg); color: var(--pas-ko-fg); }
.pas-problemi li.Warning { background: var(--pas-todo-bg); color: var(--pas-todo-fg); }

.pas-assegnato { display: flex; align-items: center; gap: var(--pas-s3); padding: var(--pas-s3); border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); }
.pas-assegnato .nome { font-weight: 700; }
.pas-azioni-rapide { display: flex; flex-wrap: wrap; gap: var(--pas-s2); margin-top: var(--pas-s3); }

.pas-candidati { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--pas-s2); }
.pas-candidato {
    display: block; width: 100%; text-align: left; cursor: pointer;
    padding: var(--pas-s3); border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); background: var(--pas-surface);
}
.pas-candidato:hover { border-color: var(--pas-primary); }
.pas-candidato[aria-pressed="true"] { border-color: var(--pas-primary); box-shadow: inset 0 0 0 1px var(--pas-primary); background: var(--pas-primary-soft); }
.pas-candidato .riga1 { display: flex; align-items: baseline; gap: var(--pas-s2); }
.pas-candidato .pos { font-size: var(--pas-fs-xs); color: var(--pas-ink-3); width: 1.6em; flex: none; }
.pas-candidato .nome { font-weight: 700; }
.pas-candidato .comune { font-size: var(--pas-fs-xs); color: var(--pas-ink-2); margin-left: auto; }
.pas-candidato ul { list-style: none; margin: 3px 0 0 1.6em; padding: 0; font-size: var(--pas-fs-xs); color: var(--pas-ink-2); }
.pas-candidato ul li { display: flex; gap: var(--pas-s2); align-items: center; }
.pas-candidato ul li.pref { color: var(--pas-primary); font-weight: 600; }
.pas-candidato ul li.warn { color: var(--pas-todo-fg); }
.pas-non-elegg { font-size: var(--pas-fs-xs); }
.pas-non-elegg summary { cursor: pointer; color: var(--pas-ink-2); padding: var(--pas-s2) 0; font-size: var(--pas-fs-sm); }
.pas-non-elegg li { display: flex; justify-content: space-between; gap: var(--pas-s3); padding: 3px 0; border-bottom: 1px solid var(--pas-surface-muted); }
.pas-non-elegg li span:last-child { color: var(--pas-ko-fg); text-align: right; }
.pas-eventi { list-style: none; margin: 0; padding: 0; font-size: var(--pas-fs-xs); }
.pas-eventi li { padding: var(--pas-s2) 0; border-bottom: 1px solid var(--pas-surface-muted); }
.pas-eventi .quando { color: var(--pas-ink-3); }
details.pas-dettagli > summary { cursor: pointer; font-size: var(--pas-fs-sm); color: var(--pas-ink-2); font-weight: 700; padding: var(--pas-s2) 0; }

/* Tablet: pannello in sovrapposizione, colonne più strette */
@media (max-width: 1199px) {
    :root { --pas-col-nome: 168px; --pas-col-giorno: 104px; }
    .pas-pannello { position: fixed; top: var(--pas-header-h); right: 0; bottom: 0; z-index: 50; box-shadow: var(--pas-shadow-overlay); max-width: 92vw; }
    .pas-ricerca .pas-input { width: 180px; }
    .pas-blocco .srv { display: none; }
}

/* Tablet portrait: la settimana intera deve stare in larghezza senza troncare gli orari */
@media (min-width: 768px) and (max-width: 1023px) {
    :root { --pas-col-nome: 128px; --pas-col-giorno: 90px; }
    .pas-blocco { padding: 3px 4px; font-size: var(--pas-fs-xs); }
    .pas-blocco .ora .pas-icon { display: none; }
    .pas-griglia > .nome { padding: var(--pas-s2) var(--pas-s3); }
    .pas-griglia > .intest .fest { display: none; }
    .pas-griglia > .nome.coda-nome .chi { font-size: var(--pas-fs-base); }
    .pas-toolbar, .pas-filtri { padding-left: var(--pas-s4); padding-right: var(--pas-s4); }
}

/* 9. Mobile: agenda progettata da zero (calendar-mobile.md) */
@media (max-width: 767px) {
    body { font-size: var(--pas-fs-md); }
    .pas-nav, .pas-topbar-utente { display: none; }
    .pas-menu-btn { display: inline-flex; align-items: center; justify-content: center; }
    .pas-topbar { gap: var(--pas-s3); padding: 0 var(--pas-s4); }
    .pas-btn { height: var(--pas-h-touch); }
    .pas-btn.icona { width: var(--pas-h-touch); }
    .pas-input, .pas-select { height: var(--pas-h-touch); font-size: var(--pas-fs-md); }
    .pas-pagina { padding: var(--pas-s4) var(--pas-s5) var(--pas-s7); }
}
.pas-m { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.pas-m-testa { position: sticky; top: 0; z-index: 5; background: var(--pas-surface); border-bottom: 1px solid var(--pas-line); }
.pas-m-sett { display: flex; align-items: center; gap: var(--pas-s2); padding: var(--pas-s2) var(--pas-s3); }
.pas-m-sett h1 { flex: 1; text-align: center; font-size: var(--pas-fs-md); }
.pas-m-riga { display: flex; align-items: center; gap: var(--pas-s2); padding: 0 var(--pas-s3) var(--pas-s2); }
.pas-m-riga .pas-segmenti { flex: 1; }
.pas-m-riga .pas-segmenti button { flex: 1; height: 42px; font-size: var(--pas-fs-md); }
.pas-m-cerca { padding: 0 var(--pas-s3) var(--pas-s2); }
.pas-m-cerca .pas-ricerca .pas-input { width: 100%; }
.pas-giorni { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; padding: 0 var(--pas-s2) var(--pas-s2); }
.pas-giorni button {
    display: flex; flex-direction: column; align-items: center; gap: 1px;
    min-height: 58px; padding: var(--pas-s2) 0; border: 1px solid transparent; border-radius: var(--pas-r-control);
    background: none; cursor: pointer; color: var(--pas-ink);
}
.pas-giorni button .g { font-size: var(--pas-fs-xs); color: var(--pas-ink-2); }
.pas-giorni button .n { font-size: var(--pas-fs-lg); font-weight: 700; line-height: 1.1; }
.pas-giorni button .seg { font-size: 11px; display: flex; gap: 3px; min-height: 14px; }
.pas-giorni button .seg .todo { color: var(--pas-todo-fg); font-weight: 700; }
.pas-giorni button .seg .ko { color: var(--pas-ko-fg); font-weight: 700; }
.pas-giorni button.oggi .n { color: var(--pas-primary); text-decoration: underline; text-underline-offset: 3px; }
.pas-giorni button.festivo .g { color: var(--pas-ko-fg); }
.pas-giorni button[aria-pressed="true"] { background: var(--pas-primary); color: #fff; }
.pas-giorni button[aria-pressed="true"] .g, .pas-giorni button[aria-pressed="true"] .seg span { color: #fff; }
.pas-m-filtri { display: flex; gap: var(--pas-s2); padding: var(--pas-s2) var(--pas-s3); overflow-x: auto; border-top: 1px solid var(--pas-surface-muted); }
.pas-m-filtri .pas-chip { height: 34px; flex: none; }
.pas-m-filtri-pannello { padding: var(--pas-s3) var(--pas-s4); background: var(--pas-surface-muted); border-top: 1px solid var(--pas-line); }
.pas-m-filtri-pannello .pas-select { width: 100%; }

.pas-agenda { padding: var(--pas-s3) var(--pas-s3) 96px; }
.pas-agenda-titolo { display: flex; justify-content: space-between; align-items: baseline; margin: var(--pas-s3) var(--pas-s2) var(--pas-s3); }
.pas-agenda-titolo h2 { font-size: var(--pas-fs-md); }
.pas-gruppo { margin-bottom: var(--pas-s4); }
.pas-gruppo-testa { display: flex; align-items: baseline; gap: var(--pas-s3); padding: var(--pas-s2) var(--pas-s2); }
.pas-gruppo-testa .chi { font-weight: 700; }
.pas-gruppo-testa .meta { font-size: var(--pas-fs-sm); color: var(--pas-ink-2); margin-left: auto; }
.pas-gruppo.coda { background: var(--pas-todo-bg); border: 1px solid var(--pas-todo-bd); border-radius: var(--pas-r-control); padding: var(--pas-s2); }
.pas-gruppo.coda .pas-gruppo-testa { color: var(--pas-todo-fg); }
.pas-card {
    display: grid; grid-template-columns: 64px 1fr auto; gap: 0 var(--pas-s3); align-items: start;
    width: 100%; text-align: left; cursor: pointer; min-height: var(--pas-h-touch);
    padding: var(--pas-s3); margin-bottom: var(--pas-s2);
    background: var(--pas-surface); border: 1px solid var(--pas-line); border-left: 4px solid var(--pas-ok-bd); border-radius: var(--pas-r-control);
    font-size: var(--pas-fs-md);
}
.pas-card .ora { font-weight: 700; line-height: 1.2; }
.pas-card .ora small { display: block; font-weight: 400; color: var(--pas-ink-2); font-size: var(--pas-fs-sm); }
.pas-card .chi { font-weight: 600; }
.pas-card .srv { display: block; font-size: var(--pas-fs-sm); color: var(--pas-ink-2); }
.pas-card .motivo { display: block; font-size: var(--pas-fs-sm); font-weight: 600; margin-top: 2px; }
.pas-card .stato { align-self: center; display: flex; flex-direction: column; align-items: flex-end; gap: var(--pas-s2); }
.pas-card.DaAssegnare { border-left: 4px dashed var(--pas-todo-bd); }
.pas-card.Conflitto { border-left-color: var(--pas-ko-fg); background: var(--pas-ko-bg); }
.pas-card.Conflitto .motivo { color: var(--pas-ko-fg); }
.pas-card.Svolto { border-left-color: var(--pas-done-bd); }
.pas-card.MancataPresenza { border-left-color: var(--pas-ns-bd); }
.pas-card.Annullato { border-left-color: var(--pas-off-bd); color: var(--pas-off-fg); }
.pas-card.Annullato .ora { text-decoration: line-through; }
.pas-assente-riga { font-size: var(--pas-fs-sm); padding: var(--pas-s2) var(--pas-s3); background: var(--pas-hatch); color: var(--pas-abs-fg); border-radius: var(--pas-r-block); margin-bottom: var(--pas-s2); font-weight: 600; }

/* Bottom sheet / pannello mobile */
.pas-velo { position: fixed; inset: 0; background: rgba(27, 39, 51, .38); z-index: 80; }
.pas-sheet {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 81; max-height: 88vh;
    background: var(--pas-surface); border-radius: var(--pas-r-sheet) var(--pas-r-sheet) 0 0; box-shadow: var(--pas-shadow-overlay);
    display: flex; flex-direction: column; padding-bottom: env(safe-area-inset-bottom);
    animation: pas-sale .18s ease-out;
}
.pas-sheet::before { content: ""; width: 40px; height: 4px; border-radius: 2px; background: var(--pas-line-strong); margin: 8px auto 0; flex: none; }
.pas-sheet .pas-pannello-testa h2 { font-size: var(--pas-fs-lg); }
.pas-sheet .pas-candidato { padding: var(--pas-s4) var(--pas-s3); }
@keyframes pas-sale { from { transform: translateY(24px); opacity: .6; } to { transform: none; opacity: 1; } }

/* 10. Dialoghi */
.pas-dialogo-velo { position: fixed; inset: 0; background: rgba(27, 39, 51, .45); z-index: 100; display: grid; place-items: center; padding: var(--pas-s4); }
.pas-dialogo {
    width: min(520px, 100%); max-height: calc(100vh - 32px); overflow: auto;
    background: var(--pas-surface); border-radius: 8px; box-shadow: var(--pas-shadow-overlay);
    padding: var(--pas-s5);
}
.pas-dialogo.largo { width: min(760px, 100%); }
.pas-dialogo h2 { margin-bottom: var(--pas-s3); }
.pas-dialogo-azioni { display: flex; justify-content: flex-end; gap: var(--pas-s2); margin-top: var(--pas-s5); flex-wrap: wrap; }
.pas-riassunto { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--pas-s2); margin: var(--pas-s3) 0; }
.pas-riassunto div { padding: var(--pas-s3); background: var(--pas-surface-muted); border-radius: var(--pas-r-control); }
.pas-riassunto b { display: block; font-size: var(--pas-fs-xl); }
.pas-riassunto .todo b { color: var(--pas-todo-fg); }
.pas-riassunto .ok b { color: var(--pas-ok-fg); }
@media (max-width: 767px) {
    .pas-dialogo-velo { place-items: end stretch; padding: 0; }
    .pas-dialogo { border-radius: var(--pas-r-sheet) var(--pas-r-sheet) 0 0; max-height: 92vh; }
    .pas-riassunto { grid-template-columns: repeat(2, 1fr); }
}

/* 11. Elenchi anagrafiche (tabella nel contenitore, card sotto 768 px: rules/ui-griglie-responsive) */
.pas-tabella-wrap { background: var(--pas-surface); border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); overflow-x: auto; }
.pas-tabella { width: 100%; border-collapse: collapse; font-size: var(--pas-fs-sm); }
.pas-tabella th { text-align: left; font-weight: 700; color: var(--pas-ink-2); padding: var(--pas-s3); border-bottom: 1px solid var(--pas-line-strong); background: var(--pas-surface); position: sticky; top: 0; white-space: nowrap; }
.pas-tabella td { padding: var(--pas-s3); border-bottom: 1px solid var(--pas-line); vertical-align: top; }
.pas-tabella tr.inattivo td { color: var(--pas-ink-3); }
.pas-tabella .num { text-align: right; }
@media (max-width: 767px) {
    .pas-tabella thead { display: none; }
    .pas-tabella, .pas-tabella tbody, .pas-tabella tr, .pas-tabella td { display: block; width: 100%; }
    .pas-tabella tr { border-bottom: 1px solid var(--pas-line-strong); padding: var(--pas-s2) 0; }
    .pas-tabella td { border: 0; padding: 2px var(--pas-s3); display: flex; gap: var(--pas-s3); }
    .pas-tabella td::before { content: attr(data-label); color: var(--pas-ink-2); min-width: 9em; font-size: var(--pas-fs-sm); }
    .pas-tabella td.num { text-align: left; }
}
.pas-strumenti { display: flex; gap: var(--pas-s3); align-items: center; margin-bottom: var(--pas-s4); flex-wrap: wrap; }

/* 11b. Schede anagrafiche (ADR-020) */
.pas-pagina-titolo .spazio { flex: 1; }
.pas-briciole { font-size: var(--pas-fs-sm); color: var(--pas-ink-2); margin-bottom: var(--pas-s3); }
.pas-briciole a { color: var(--pas-primary); text-decoration: none; }
.pas-briciole a:hover { text-decoration: underline; }
.pas-link-riga { font-weight: 700; color: var(--pas-ink); text-decoration: none; }
.pas-link-riga:hover { color: var(--pas-primary); text-decoration: underline; }
.pas-scheda { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pas-s5); align-items: start; }
.pas-riquadro { background: var(--pas-surface); border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); padding: var(--pas-s5); min-width: 0; }
.pas-riquadro.largo { grid-column: 1 / -1; }
.pas-riquadro > h2 { font-size: var(--pas-fs-md); margin-bottom: var(--pas-s3); }
.pas-riquadro > .pas-muted { font-size: var(--pas-fs-sm); }
.pas-aiuto { font-size: var(--pas-fs-xs); color: var(--pas-ink-2); }
.pas-spunte { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--pas-s2) var(--pas-s4); margin: var(--pas-s3) 0 var(--pas-s4); }
.pas-spunte label { display: flex; gap: var(--pas-s2); align-items: center; min-height: 28px; }
.pas-spunte input, .pas-riga-form input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--pas-primary); }
.pas-settimana-disp { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--pas-s3); }
.pas-settimana-disp .giorno { border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); padding: var(--pas-s3); background: var(--pas-bg); min-width: 0; }
.pas-settimana-disp .nome { font-weight: 700; font-size: var(--pas-fs-sm); margin-bottom: var(--pas-s2); }
.pas-settimana-disp .fascia { display: flex; align-items: center; gap: 2px; margin-bottom: var(--pas-s2); }
.pas-settimana-disp .fascia .pas-input { padding: 0 2px; min-width: 0; flex: 1; font-size: var(--pas-fs-sm); }
.pas-settimana-disp .fascia .pas-btn.icona { width: 26px; height: 26px; flex: none; }
.pas-settimana-disp input[type="time"]::-webkit-calendar-picker-indicator { display: none; }
.pas-colonna { display: flex; flex-direction: column; gap: var(--pas-s5); min-width: 0; }
.pas-elenco { list-style: none; margin: 0 0 var(--pas-s3); padding: 0; }
.pas-elenco li { display: flex; justify-content: space-between; align-items: center; gap: var(--pas-s3); padding: var(--pas-s2) 0; border-bottom: 1px solid var(--pas-surface-muted); font-size: var(--pas-fs-sm); flex-wrap: wrap; }
.pas-elenco li.chiuso { color: var(--pas-ink-3); }
.pas-elenco li.chiuso .pas-badge { opacity: .6; }
.pas-riga-form { display: flex; gap: var(--pas-s2); flex-wrap: wrap; align-items: center; margin-top: var(--pas-s3); }
.pas-riga-form .pas-input, .pas-riga-form .pas-select { flex: 1 1 140px; }
.pas-editor { margin-top: var(--pas-s4); padding-top: var(--pas-s4); border-top: 1px dashed var(--pas-line-strong); }
.pas-editor h3 { font-size: var(--pas-fs-base); margin-bottom: var(--pas-s3); }
.pas-conflitti { margin: var(--pas-s2) 0; padding-left: 18px; font-size: var(--pas-fs-sm); }
.pas-conflitti a { color: inherit; font-weight: 600; }
.pas-nome-azione { all: unset; cursor: pointer; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.pas-nome-azione:hover { color: var(--pas-primary); text-decoration: underline; }
.pas-nome-azione:focus-visible { outline: 2px solid var(--pas-focus); outline-offset: 2px; }
@media (max-width: 1023px) {
    .pas-scheda { grid-template-columns: 1fr; }
    .pas-settimana-disp { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}
@media (max-width: 767px) {
    .pas-riquadro { padding: var(--pas-s4); }
    .pas-settimana-disp { grid-template-columns: 1fr; }
    .pas-settimana-disp .fascia .pas-btn.icona { width: var(--pas-h-touch); height: var(--pas-h-touch); }
    .pas-pagina-titolo .spazio { display: none; }
}

/* 11c. Listini e tariffe (ADR-026): esito sempre con testo, mai solo colore */
.pas-badge.Tariffato { color: var(--pas-ok-fg); background: var(--pas-ok-bg); border-color: var(--pas-ok-bd); }
.pas-badge.DaConfigurare { color: var(--pas-todo-fg); background: var(--pas-todo-bg); border-color: var(--pas-todo-bd); border-style: dashed; }
.pas-badge.NonTariffabile { color: var(--pas-ko-fg); background: var(--pas-ko-bg); border-color: var(--pas-ko-bd); }
.pas-badge.DaVerificare { color: var(--pas-ns-fg); background: var(--pas-ns-bg); border-color: var(--pas-ns-bd); border-style: dashed; }
.pas-badge.Bozza { color: var(--pas-todo-fg); background: var(--pas-todo-bg); border-color: var(--pas-todo-bd); border-style: dashed; }
.pas-badge.Attivo { color: var(--pas-ok-fg); background: var(--pas-ok-bg); border-color: var(--pas-ok-bd); }
.pas-badge.Chiuso { color: var(--pas-off-fg); background: var(--pas-off-bg); border-color: var(--pas-off-bd); }
.pas-listini { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: var(--pas-s5); align-items: start; }
.pas-servizi-listino { list-style: none; margin: 0; padding: 0; background: var(--pas-surface); border: 1px solid var(--pas-line); border-radius: var(--pas-r-control); }
.pas-servizi-listino button { all: unset; box-sizing: border-box; cursor: pointer; display: block; width: 100%; padding: var(--pas-s3) var(--pas-s4); border-bottom: 1px solid var(--pas-surface-muted); }
.pas-servizi-listino button:hover { background: var(--pas-surface-muted); }
.pas-servizi-listino button[aria-current="true"] { background: var(--pas-primary-soft); box-shadow: inset 3px 0 0 var(--pas-primary); }
.pas-servizi-listino button:focus-visible { outline: 2px solid var(--pas-focus); outline-offset: -2px; }
.pas-servizi-listino .nome { font-weight: 700; display: block; }
.pas-servizi-listino .stato { font-size: var(--pas-fs-xs); color: var(--pas-ink-2); display: flex; gap: var(--pas-s2); flex-wrap: wrap; margin-top: 2px; }
.pas-matrice td, .pas-matrice th { vertical-align: middle; }
.pas-matrice th.gruppo { text-align: center; border-left: 1px solid var(--pas-line); }
.pas-matrice td.inizio-gruppo, .pas-matrice th.inizio-gruppo { border-left: 1px solid var(--pas-line); }
.pas-matrice .pas-input { width: 92px; text-align: right; }
.pas-matrice .mancante { color: var(--pas-todo-fg); font-weight: 600; font-size: var(--pas-fs-xs); }
.pas-matrice .margine { color: var(--pas-ink-2); }
.pas-ore-tariffa { width: 100%; font-size: var(--pas-fs-xs); border-collapse: collapse; margin-top: var(--pas-s2); }
.pas-ore-tariffa td { padding: 2px var(--pas-s2) 2px 0; border-bottom: 1px solid var(--pas-surface-muted); }
.pas-ore-tariffa .num { text-align: right; }
@media (max-width: 1023px) { .pas-listini { grid-template-columns: 1fr; } }
@media (max-width: 767px) { .pas-matrice .pas-input { width: 100%; } }

/* 12. Login */
.pas-login { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 440px); }
.pas-login-lato { background: var(--pas-navy); color: #fff; padding: var(--pas-s7); display: flex; flex-direction: column; justify-content: flex-end; }
.pas-login-lato .nome { font-size: 40px; font-weight: 700; line-height: 1.05; max-width: 14ch; }
.pas-login-lato p { opacity: .85; max-width: 46ch; margin-top: var(--pas-s4); font-size: var(--pas-fs-md); }
.pas-login-form { padding: var(--pas-s7) var(--pas-s6); display: flex; flex-direction: column; justify-content: center; background: var(--pas-surface); }
.pas-login-form h1 { margin-bottom: var(--pas-s5); }
.pas-login-logo { width: 220px; max-width: 70%; height: auto; margin-bottom: var(--pas-s6); }
@media (max-width: 767px) { .pas-brand img { height: 32px; } .pas-login-logo { width: 160px; margin-bottom: var(--pas-s4); } }
.pas-login-form .pas-input { height: 40px; width: 100%; }
.pas-login-form .pas-btn { height: 42px; margin-top: var(--pas-s3); }
@media (max-width: 767px) {
    .pas-login { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
    .pas-login-lato { padding: var(--pas-s6) var(--pas-s5); }
    .pas-login-lato .nome { font-size: 28px; }
    .pas-login-lato p { display: none; }
    .pas-login-form { justify-content: flex-start; padding: var(--pas-s6) var(--pas-s5); }
    .pas-login-form .pas-input { height: var(--pas-h-touch); }
}

/* 13. Stampa (la stampa ufficiale sarà PDF lato API, STEP 9) */
@media print {
    .pas-topbar, .pas-toolbar, .pas-filtri, .pas-striscia, .pas-pannello, .pas-menu-btn { display: none !important; }
    .pas-griglia-wrap { overflow: visible; }
    .pas-griglia > .intest, .pas-griglia > .nome, .pas-griglia > .coda { position: static; }
}

/* 14. Movimento ridotto: ultimo blocco */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
