/* ============================================================================
   CRAnotify — Product Design System (application skin).

   Source of truth for everything visual in app.cranotify.eu. Ported from the
   PDS reference export (src/components/product/**, src/data/pds/**):
   Inter + IBM Plex Mono, cold working grey with white panels, 0–2 px radius,
   1 px borders, 36–40 px rows, semantic compliance colours kept strictly
   separate from the brand blue.

   Rules that must not be broken:
   · brand blue = interaction, selection, navigation. NEVER "compliant".
   · every state carries icon + label + colour, never colour alone.
   · elevation only on overlays (menus, toasts, modals, drawers).
   · legacy class names (.card .btn .inp .stat …) are kept as PDS aliases so
     no page loses styling during the migration.
   ========================================================================== */

@font-face{font-family:'Inter var';font-style:normal;font-weight:100 900;font-display:swap;src:url('/static/fonts/inter-var.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/ibm-plex-mono-400.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/static/fonts/ibm-plex-mono-500.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/ibm-plex-mono-600.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/ibm-plex-mono-700.woff2') format('woff2')}

/* ---------------------------------------------------------------- tokens -- */
:root{
  /* brand — interaction only */
  --blue:#1638A0; --blue-ink:#0D2670; --blue-bg:#E8ECF7; --blue-line:#BCC8E4;

  /* application neutrals */
  --bg:#F2F4F7; --panel:#FFFFFF; --surface2:#F8F9FB;
  --line:#DCE0E6; --line-soft:#E7EAEF; --line-strong:#A5ACB8;
  --ink:#101317; --muted:#464D59; --faint:#767D8A; --faint2:#AEB4BE;

  /* semantic — compliance states only */
  --info:#1F5F8B; --info-bg:#EBF3F8; --info-line:#B9D3E4;
  --green:#16653F; --green-ink:#124D30; --green-bg:#E9F3EE; --green-line:#B3D6C4;
  --amber:#7A5C00; --amber-ink:#7A5C00; --amber-bg:#F8F3E2; --amber-line:#E0D0A0;
  --warn:#A65B12; --warn-bg:#FBF1E7; --warn-line:#E7CBAB;
  --crit:#96161C; --crit-ink:#7C1116; --crit-bg:#F9EAEB; --crit-line:#E4B4B7;
  --red:#B3261E; --red-ink:#8E1E17; --red-bg:#FBECEB; --red-line:#EEC0BC;
  --neutral:#5B6470; --neutral-bg:#F1F3F5; --neutral-line:#D2D7DE;

  /* navigation surface */
  --nav:#101317; --nav-hover:#1C2027; --nav-panel:#1A1E25; --nav-line:#282D35;
  --nav-txt:#B9BFC9; --nav-mut:#868D99;

  /* type */
  --sans:'Inter var',system-ui,-apple-system,sans-serif;
  --disp:var(--sans);
  --mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular',monospace;

  /* geometry */
  --r:2px; --r0:0px;
  --ctl-sm:28px; --ctl:36px; --ctl-lg:44px;
  --el1:0 2px 8px rgba(16,19,23,.12);
  --el2:0 8px 24px rgba(16,19,23,.18);
}

/* ------------------------------------------------------------------ tema -- */
/* Il tema scuro vive qui, come selettore [data-theme="dark"] sull'<html>: la
   fonte di verità è l'attributo, non un <style> iniettato dalla shell. La
   specificità (0,2,0) batte :root (0,1,0), quindi vince anche sul colore del
   brand iniettato inline (--blue resta il blu d'interazione del tema scuro). */
:root{color-scheme:light}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0f1419;--panel:#161d26;--surface2:#1c2530;
  --line:#2a3441;--line-soft:#25303c;--line-strong:#526173;
  --ink:#e6edf3;--muted:#a9b5c3;--faint:#8795a5;--faint2:#667587;
  --blue:#7ea2ff;--blue-ink:#b8caff;--blue-bg:#1c2c55;--blue-line:#405b96;
  --info:#9cc8e4;--info-bg:#152a37;--info-line:#315a70;
  --green:#8ed3ae;--green-ink:#b9e5cc;--green-bg:#152a20;--green-line:#326046;
  --amber:#e7ca6d;--amber-ink:#f1d982;--amber-bg:#302916;--amber-line:#665728;
  --warn:#f0b275;--warn-bg:#332417;--warn-line:#714b29;
  --crit:#f29499;--crit-ink:#ffb0b4;--crit-bg:#35191c;--crit-line:#78343a;
  --red:#ff9b94;--red-ink:#ffb8b3;--red-bg:#371918;--red-line:#7d3632;
  --neutral:#c0c8d1;--neutral-bg:#222b35;--neutral-line:#4a5664
}
:root[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
:root[data-theme="dark"] .pds-panel,
:root[data-theme="dark"] .header{background:var(--panel)!important}
:root[data-theme="dark"] .pds-input,
:root[data-theme="dark"] .inp,
:root[data-theme="dark"] select,
:root[data-theme="dark"] textarea{background:#0f1419;color:var(--ink);border-color:var(--line)}
:root[data-theme="dark"] .pds-table td,
:root[data-theme="dark"] .pds-table th{border-color:var(--line)}
:root[data-theme="dark"] a{color:#7ab7ff}
:root[data-theme="dark"] .pds-toast,
:root[data-theme="dark"] .cmdk__panel,
:root[data-theme="dark"] .timerbar,
:root[data-theme="dark"] .wizbar{background:var(--panel);border-color:var(--line)}
:root[data-theme="dark"] .cmdk__panel input,
:root[data-theme="dark"] .gsearch input{color:var(--ink)}
:root[data-theme="dark"] .crumbs .leaf{color:var(--ink)}

/* ------------------------------------------------------------------ base -- */
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.5;
  font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html.is-panel-loading .content{opacity:.62;transition:opacity .12s ease}
a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
a:hover{color:var(--blue-ink)}
::selection{background:var(--blue);color:#fff}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:var(--r)}
input,textarea,select,button{font-family:var(--sans)}
h1,h2,h3,h4{margin:0;letter-spacing:-.01em}
code,kbd,samp{font-family:var(--mono)}
hr{border:0;border-top:1px solid var(--line);margin:16px 0}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.uc{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.disp,.h{font-family:var(--disp);font-weight:700;letter-spacing:-.01em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ---- brand lockup: notch mark + wordmark, both in currentColor.
   "CRA" and "notify" differ by weight only — never by colour. ---- */
.brand-lockup{display:inline-flex;align-items:center;gap:8px;color:inherit;text-decoration:none;line-height:1}
.brand-mark{flex:none;display:block}
.brand-word{font-weight:500;letter-spacing:-.025em;white-space:nowrap}
.brand-word b{font-weight:700}

/* ============================================================ APP SHELL === */
.app{min-height:100vh;display:flex;align-items:stretch}
.pds-skip{position:absolute;left:-9999px}
.pds-skip:focus{left:12px;top:12px;z-index:70;background:var(--ink);color:#fff;padding:8px 14px;
  font-size:12px;font-weight:700;text-decoration:none;border-radius:var(--r)}
.header .pds-navtoggle{display:none}
.pds-usermenu__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.nav{width:236px;background:#0A0A0A;color:rgba(255,255,255,.65);display:flex;flex-direction:column;flex-shrink:0;
  border-right:1px solid #000;transition:width .18s ease}
.brandbar{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid rgba(255,255,255,.08);padding:12px 16px}
.brandrow{display:flex;align-items:center;gap:8px;text-decoration:none;color:#fff;min-width:0}
.brandrow:hover{color:#fff}
.brandrow img{display:block}
.navtop-toggle{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 24px;
  border:1px solid rgba(255,255,255,.2);background:transparent;color:rgba(255,255,255,.55);cursor:pointer}
.navtop-toggle:hover{border-color:rgba(255,255,255,.5);color:#fff;background:rgba(255,255,255,.04)}
.navtop-toggle__out{display:none}

/* Il selettore del workspace: un `details`, così la freccia apre qualcosa.
   Stato chiuso e pannello seguono `account/OrgSwitcher.tsx`; il contenuto del
   pannello resta limitato alle azioni che il backend supporta davvero. */
.orgsw{position:relative;border-bottom:1px solid rgba(255,255,255,.08)}
.orgsw>summary{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;list-style:none;min-width:0}
.orgsw>summary::-webkit-details-marker{display:none}
.orgsw>summary:hover{background:rgba(255,255,255,.04)}
.orgsw .av{width:28px;height:28px;border-radius:0;background:#fff;color:var(--ink);display:grid;place-items:center;
  font-family:var(--mono);font-size:10px;font-weight:700;flex-shrink:0}
.orgsw__txt{min-width:0;flex:1;display:block}
.orgsw .grp{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgsw .nm{display:block;font-size:12.5px;color:#fff;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgsw .sub{display:block;font-family:var(--mono);font-size:10px;color:rgba(255,255,255,.45);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgsw__caret{flex-shrink:0;color:rgba(255,255,255,.5);transition:transform .15s ease}
.orgsw[open] .orgsw__caret{transform:rotate(180deg)}
.orgsw__panel{position:absolute;left:8px;top:calc(100% - 4px);z-index:60;width:320px;max-width:calc(100vw - 24px);
  border:2px solid var(--ink);background:var(--panel);color:var(--ink);box-shadow:0 2px 0 rgba(0,0,0,.12)}
.orgsw__panelhead{display:flex;flex-direction:column;gap:1px;border-bottom:1px solid var(--line);background:var(--bg);padding:7px 12px}
.orgsw__panelhead span{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.orgsw__panelhead strong{font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgsw__panel a{display:block;border-bottom:1px solid var(--line);padding:10px 12px;font-size:12.5px;font-weight:700;color:var(--ink);text-decoration:none}
.orgsw__panel a:last-child{border-bottom:0}
.orgsw__panel a:hover{background:var(--bg);color:var(--ink)}
.orgsw__panel .orgsw__create{display:flex;align-items:center;gap:8px;border-top:2px solid var(--ink);color:var(--blue);background:var(--blue-bg)}
.orgsw__panel .orgsw__create:hover{background:var(--blue-bg);color:var(--blue-ink)}

.navscroll{display:flex;flex-direction:column}
.navgroup{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.navgroup:last-child{border-bottom:0}
.navgroup .label{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.35);padding:0 16px 6px}
.navitem{display:flex;align-items:center;gap:10px;padding:7px 16px;font-size:13px;cursor:pointer;text-decoration:none;
  background:transparent;color:rgba(255,255,255,.65);border:none;border-left:2px solid transparent;width:100%;text-align:left;font-family:var(--sans);
  transition:background-color .08s linear,color .08s linear}
.navitem:hover{background:rgba(255,255,255,.04);color:#fff}
.navitem[aria-current="page"],.navitem.is-on{background:rgba(255,255,255,.07);color:#fff;font-weight:700;border-left-color:var(--blue)}
.navitem svg{flex-shrink:0}
.navitem .txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navitem .badge{font-family:var(--mono);font-size:10px;color:rgba(255,255,255,.6);background:rgba(255,255,255,.1);border-radius:0;padding:0 6px}
.navitem[aria-current="page"] .badge,.navitem.is-on .badge{color:#fff}
/* I toni dei contatori vengono da AccountShell: attention pieno con testo
   scuro, critical pieno con testo bianco — non velature. */
.navitem .badge.is-alert{color:#0A0A0A;background:var(--amber)}
.navitem .badge.is-crit{color:#fff;background:var(--crit)}

.esercBtn{margin-top:auto;display:flex;gap:8px;align-items:center;border:0;border-top:1px solid var(--nav-line);
  padding:8px 12px;cursor:pointer;color:var(--nav-mut);background:transparent;font-family:var(--sans);font-size:11px;width:100%;text-align:left}
.esercBtn:hover{background:var(--nav-hover);color:#fff}
form.esercBtn{margin-top:auto;padding:0;border-top:1px solid var(--nav-line)}
form.esercBtn>.esercBtn{margin-top:0;border-top:0}

/* diligence index (gamification) — kept, restyled to the nav surface */
/* «Stato operativo: nessun punteggio, nessun livello» (AccountShell.tsx).
   Titolo bianco, quanti passi restano, un collegamento blu in mono. Niente
   barra: era un punteggio travestito. */
.gam{cursor:pointer;padding:12px 16px;background:transparent;border:0;border-top:1px solid rgba(255,255,255,.08);text-align:left;font:inherit;width:100%;color:inherit;display:block}
.gam:hover{background:rgba(255,255,255,.04)}
.gam-title{display:block;font-size:12px;font-weight:700;color:#fff}
.gam-sub{display:block;font-size:11.5px;color:rgba(255,255,255,.55);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gam-link{display:block;font-family:var(--mono);font-size:11px;font-weight:700;color:#7EA0E8;margin-top:6px}
.gam:hover .gam-link{text-decoration:underline}
.gam-done{display:block;font-size:12px;color:rgba(255,255,255,.7)}
.gam-done span{color:#4E9E76}
.gam-bar{display:none}
.gam-bar>div{height:4px}
/* Il riempimento della barra: il colore vive qui e non in un attributo style,
   perche html/template rifiuta un var(--token) interpolato in contesto CSS. */
.gam-bar__fill{display:block;height:4px;background:var(--blue)}
.gam-bar__fill--done{background:var(--green)}
.gam-passi{font-family:var(--mono);font-size:9.5px;color:var(--nav-mut);margin-top:5px}
.gam.is-complete .gam-bar{display:none}
.gam.is-complete .gam-passi{color:#4E9E76}

.gam-modal[hidden]{display:none}
.gam-modal{position:fixed;inset:0;z-index:50;background:rgba(16,19,23,.45);display:grid;place-items:start center;padding:32px 16px;overflow-y:auto}
.gam-dialog{width:100%;max-width:520px;background:var(--panel);color:var(--ink);border:1px solid var(--line-strong);box-shadow:var(--el2);padding:0}
.gam-dialog-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-bottom:1px solid var(--line);padding:14px 16px}
.gam-eyebrow,.gam-heading{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600}
.gam-dialog h2{font-size:14px;font-weight:700;color:var(--ink);margin:4px 0 0}
.gam-close{border:0;background:transparent;color:var(--faint);font:400 20px/1 var(--sans);padding:0 4px;cursor:pointer}
.gam-close:hover{color:var(--ink)}
.gam-dialog-bar{height:4px;background:var(--line);overflow:hidden;margin:0}
.gam-dialog-bar>div{height:100%;transition:width .22s cubic-bezier(.22,1,.36,1)}
.gam-summary{font-size:12px;color:var(--muted);margin:0;padding:10px 16px;line-height:1.55;border-bottom:1px solid var(--line)}
.gam-complete{background:var(--green-bg);border:1px solid var(--green-line);padding:12px 14px;margin:12px 16px 0;display:flex;flex-direction:column;gap:3px}
.gam-complete b{font-size:13px;color:var(--green)}
.gam-complete span{font-size:12px;color:var(--muted)}
.gam-heading{margin:14px 16px 6px;display:block}
.gam-steps{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.gam-step{width:100%;display:flex;gap:10px;align-items:flex-start;background:var(--panel);border:0;border-bottom:1px solid var(--line);
  padding:10px 16px;cursor:pointer;color:var(--ink);text-align:left;font:inherit}
.gam-step:hover{background:var(--surface2)}
.gam-step.is-done{background:var(--surface2)}
.gam-step.has-error{background:var(--red-bg)}
.gam-check{width:18px;height:18px;border-radius:var(--r);border:1px solid var(--line-strong);display:grid;place-items:center;flex-shrink:0;color:var(--faint);margin-top:1px}
.gam-step.is-done .gam-check{background:var(--green);border-color:var(--green);color:#fff}
.gam-step-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.gam-step-copy b{font-size:12.5px;font-weight:600;color:var(--ink)}
.gam-step-copy span{font-size:11.5px;line-height:1.45;color:var(--muted)}
.gam-status{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);white-space:nowrap;font-weight:600}
.gam-step.is-done .gam-status{color:var(--green)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.header{position:sticky;top:0;z-index:30;background:var(--panel);border-bottom:1px solid var(--line-strong);padding:10px 32px;
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.topbar-main{display:flex;align-items:center;gap:16px;min-width:0;flex:1}
.topbar-title{min-width:180px;max-width:360px}
.topbar-title p{margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.topbar-title h1{margin:0;font-size:23px;font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Ricerca globale nella barra superiore: la specifica del guscio la elenca fra
   le tre cose che ci stanno, e ⌘K la mette a fuoco da qualunque schermata. */
.gsearch{display:flex;align-items:center;gap:8px;height:32px;flex:1;max-width:460px;min-width:220px;
  border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface2);padding:0 10px}
.gsearch:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-bg)}
.gsearch>svg{flex-shrink:0;color:var(--faint)}
.gsearch input{flex:1;min-width:0;border:0;background:transparent;font-family:var(--sans);font-size:12px;color:var(--ink)}
.gsearch input:focus{outline:none}
.gsearch input::placeholder{color:var(--faint2)}
.gsearch__k{flex-shrink:0;font-family:var(--mono);font-size:9.5px;color:var(--faint);
  border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:1px 4px}

/* Nome e ruolo su due righe, come nel riferimento. */
.pds-usermenu__id{display:flex;flex-direction:column;min-width:0;line-height:1.25;text-align:left}
.pds-usermenu__role{font-family:var(--mono);font-size:9.5px;color:var(--faint);
  max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.logout{display:inline-flex;gap:6px;align-items:center;height:var(--ctl-sm);font-size:12px;font-weight:600;color:var(--muted);
  border:1px solid var(--line-strong);border-radius:var(--r);padding:0 10px;cursor:pointer;background:var(--panel);font-family:var(--sans);text-decoration:none}
.logout:hover{color:var(--ink);background:var(--surface2)}
.eserc-banner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--amber-bg);border-bottom:1px solid var(--amber-line);padding:9px 20px}
.eserc-banner .t{font-size:12.5px;color:var(--amber);line-height:1.5}
/* AccountShell: contenuto con padding 20 px / 32 px sul fondo app. */
/* `position:relative` non è decorazione: didascalie di tabella e testi
   `sr-only` sono in posizione assoluta, e senza un antenato posizionato il loro
   blocco contenitore è la pagina intera — allungavano il documento di 138 px
   oltre il telaio, cioè una striscia vuota sotto il guscio a schermo pieno. */
.content{padding:20px 32px;max-width:none;width:100%;position:relative}

/* Il guscio è un telaio ad altezza schermo: barra laterale e barra superiore
   restano ferme, scorre il contenuto — la specifica lo chiama «area di contenuto
   scorrevole». Vale solo dove la barra laterale c'è: sotto i 1024 px la barra
   diventa un pannello a scomparsa e la pagina torna a scorrere tutta intera,
   che su un telefono è l'unica cosa che si comporta bene. */
@media(min-width:1024px){
  .app{height:100vh;overflow:hidden}
  .nav{height:100vh}
  .navscroll{flex:1;min-height:0;overflow-y:auto}
  .main{min-height:0}
  .content{flex:1;min-height:0;overflow-y:auto}
}
.clockchip{display:flex;align-items:center;gap:12px;border:1px solid var(--line);padding:8px 12px}
.clockchip .rem{font-family:var(--mono);font-size:17px;font-weight:700;line-height:1.2}
.clockchip .sub{display:flex;flex-direction:column;gap:3px;padding-left:12px;border-left:1px solid var(--line)}


/* Compressa: 64 px, come dice AccountShell. Resta solo ciò che si riconosce da
   un glifo; ogni voce tiene il proprio `title`, che è la condizione con cui la
   specifica ammette lo stato compresso. */
.nav.is-collapsed{width:64px}
.nav.is-collapsed .brandrow .brand-word,.nav.is-collapsed .navgroup .label,.nav.is-collapsed .navitem .txt,
.nav.is-collapsed .navitem .badge,.nav.is-collapsed .esercBtn span,.nav.is-collapsed .gam,
.nav.is-collapsed .orgsw__txt,.nav.is-collapsed .orgsw__caret,.nav.is-collapsed .orgsw__panel,
.nav.is-collapsed .navtop-toggle__in{display:none}
.nav.is-collapsed .navtop-toggle__out{display:block}
.nav.is-collapsed .brandbar{justify-content:center;padding-left:8px;padding-right:8px}
.nav.is-collapsed .brandrow,.nav.is-collapsed .navitem,.nav.is-collapsed .esercBtn,
.nav.is-collapsed .orgsw>summary{justify-content:center}
.nav.is-collapsed .navitem{border-left-width:2px;padding-left:10px;padding-right:10px}
.nav.is-collapsed .orgsw>summary{padding:8px 6px}

/* ---- mobile navigation: one system, three surfaces (see /static/nav.js) ----
   The base rules are surface-independent; where the panel sits and how it slides
   in belongs to each surface, because only the documentation sidebar has a
   desktop life of its own. */
.nav-scrim{position:fixed;inset:0;z-index:90;border:0;background:rgba(16,19,23,.55);cursor:default}
.nav-scrim[hidden]{display:none}
@media(max-width:1023px){html.nav-open{overflow:hidden}}
@media(min-width:1024px){.nav-scrim{display:none!important}}
[data-nav-panel][hidden]{display:none}
.nav-panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none}
.nav-panel__foot{margin-top:auto;flex:none}
/* a group header discloses its own children; the caret states which way it goes */
[data-nav-group]{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  text-align:left;cursor:pointer;font:inherit}
[data-nav-group] .nav-caret{flex:none;transition:transform .16s ease-out}
[data-nav-group][aria-expanded="true"] .nav-caret{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){[data-nav-group] .nav-caret{transition:none}}
/* the off-canvas geometry, applied by each surface to its own panel class */
.nav-offcanvas{position:fixed;top:0;right:0;bottom:0;z-index:100;width:min(340px,88vw);
  display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;
  transform:translateX(100%);transition:transform .22s cubic-bezier(.22,1,.36,1)}
.nav-offcanvas.is-open{transform:none}
@media(prefers-reduced-motion:reduce){.nav-offcanvas{transition:none}}

/* The application panel wears the navigation surface, like the sidebar it stands in for. */
.pds-navpanel{position:fixed;top:0;right:0;bottom:0;z-index:100;width:min(340px,88vw);display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;transform:translateX(100%);transition:transform .22s cubic-bezier(.22,1,.36,1);background:var(--nav);color:var(--nav-txt);border-left:1px solid var(--nav-line)}
.pds-navpanel.is-open{transform:none}
@media(prefers-reduced-motion:reduce){.pds-navpanel{transition:none}}
.pds-navpanel__head{border-bottom:1px solid var(--nav-line);padding:10px 12px;color:#fff}
.pds-navpanel__head .pds-iconbtn{color:var(--nav-mut)}
.pds-navpanel__head .pds-iconbtn:hover{background:var(--nav-hover);color:#fff}
.pds-navpanel__org{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--nav-line);padding:10px 12px}
.pds-navpanel__org .pds-avatar{background:rgba(255,255,255,.1)}
.pds-navpanel__orgname{display:block;font-size:12.5px;font-weight:600;color:#fff;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pds-navpanel__grp{border:0;border-bottom:1px solid var(--nav-line);background:transparent;
  padding:9px 12px;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--nav-mut)}
.pds-navpanel__grp:hover{background:var(--nav-hover);color:#fff}
.pds-navpanel__sub{border-bottom:1px solid var(--nav-line);padding:4px 0}
.pds-navpanel__sub[hidden]{display:none}
.pds-navpanel__sub .navitem{padding:9px 12px;font-size:13px}
.pds-navpanel__foot{border-top:1px solid var(--nav-line)}
.pds-navpanel__act{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;
  padding:11px 12px;font:inherit;font-size:12.5px;color:var(--nav-txt);text-align:left;text-decoration:none;cursor:pointer}
.pds-navpanel__act:hover{background:var(--nav-hover);color:#fff}

/* ======================================================= PDS PRIMITIVES === */

/* --- page scaffolding --- */
.pds-page{display:flex;flex-direction:column;gap:20px;width:100%;max-width:1480px;margin:0 auto}
.pds-stack{display:flex;flex-direction:column;gap:16px}
.pds-stack--tight{gap:10px}
.pds-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pds-row--between{justify-content:space-between}
.pds-spacer{margin-left:auto}

.dash-context{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding-bottom:12px}
.dash-context__main{min-width:0}
.dash-context__main p{margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.dash-context__main h2{margin:2px 0 0;font-size:15px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.dash-context__main span{display:block;margin-top:2px;font-family:var(--mono);font-size:11px;color:var(--faint)}
.dash-actionbar{position:sticky;bottom:-20px;z-index:20;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin:0 -32px -20px;padding:10px 32px;border-top:1px solid var(--line-strong);background:var(--panel)}
.dash-actionbar__updated{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--faint);white-space:nowrap}

.pds-pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:12px}
.pds-pagehead__title{font-size:20px;line-height:1.25;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.pds-pagehead__desc{font-size:12.5px;line-height:1.55;color:var(--muted);margin-top:4px;max-width:70ch}
.pds-pagehead__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex-shrink:0}

.pds-sechead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:12px}
.pds-sechead__title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink)}
.pds-sechead__desc{font-size:12px;line-height:1.5;color:var(--muted);margin-top:4px}

/* --- panel (the only container; no shadows, no rounded cards) --- */
.pds-panel,.card{background:var(--panel);border:1px solid var(--line-strong);border-radius:0;padding:0}
.card{padding:16px}
.card.tight{padding:12px 14px}
.pds-panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:10px 16px}
.pds-panel__title{font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.pds-panel__meta{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:2px}
.pds-panel__actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.pds-panel__body{padding:16px}
.pds-panel__body--flush{padding:0}
.pds-panel__foot{border-top:1px solid var(--line);background:var(--surface2);padding:10px 16px;font-size:12px;color:var(--muted)}
.pds-panel--pad{padding:16px}
.pds-panel--pad>.pds-panel__title+p,.pds-panel--pad>p{font-size:12.5px;color:var(--muted);line-height:1.6}

/* --- buttons --- */
.pds-btn,.btn{display:inline-flex;gap:8px;align-items:center;justify-content:center;height:var(--ctl);
  font-size:12.5px;font-weight:700;border-radius:var(--r);padding:0 16px;cursor:pointer;
  border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);font-family:var(--sans);text-decoration:none;
  transition:background-color .08s linear,border-color .08s linear,color .08s linear;white-space:nowrap}
.pds-btn:hover,.btn:hover{background:var(--surface2);color:var(--ink)}
.pds-btn:disabled,.btn:disabled,.pds-btn[aria-disabled="true"]{cursor:not-allowed;border-color:var(--line);background:var(--surface2);color:var(--faint2)}
.pds-btn--primary,.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}
.pds-btn--primary:hover,.btn-primary:hover{background:var(--blue-ink);border-color:var(--blue-ink);color:#fff}
.pds-btn--secondary,.btn-ghost{background:var(--panel);border-color:var(--line-strong);color:var(--ink)}
.pds-btn--tertiary,.btn-soft{background:transparent;border-color:transparent;color:var(--blue)}
.pds-btn--tertiary:hover,.btn-soft:hover{background:var(--blue-bg);color:var(--blue-ink)}
.pds-btn--ghost{background:transparent;border-color:transparent;color:var(--muted)}
.pds-btn--ghost:hover{background:var(--surface2);color:var(--ink)}
.pds-btn--danger,.btn-danger{background:var(--crit);border-color:var(--crit);color:#fff}
.pds-btn--danger:hover,.btn-danger:hover{background:var(--crit-ink);border-color:var(--crit-ink);color:#fff}
.pds-btn--sm{height:var(--ctl-sm);font-size:12px;padding:0 10px;gap:6px}
.pds-btn--lg{height:var(--ctl-lg);font-size:13.5px;padding:0 20px}
.pds-btn--block{width:100%}
.pds-btn__icon{width:15px;height:15px;flex:0 0 15px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.pds-btn--sm .pds-btn__icon{width:13px;height:13px;flex-basis:13px}.pds-btn--lg .pds-btn__icon{width:17px;height:17px;flex-basis:17px}
.btn-copy{background:var(--panel);border-color:var(--line-strong);color:var(--muted)}
.btn-copy:hover{background:var(--blue-bg);border-color:var(--blue-line);color:var(--blue-ink)}
.btn-copy.is-copied{border-color:var(--green-line);background:var(--green-bg);color:var(--green)}

.pds-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:var(--ctl);height:var(--ctl);
  border:1px solid transparent;border-radius:var(--r);background:transparent;color:var(--muted);cursor:pointer;flex-shrink:0}
.pds-iconbtn:hover{background:var(--surface2);color:var(--ink)}
.pds-iconbtn--sm{width:var(--ctl-sm);height:var(--ctl-sm)}
.pds-iconbtn--outline{border-color:var(--line-strong);background:var(--panel)}
.pds-iconbtn--danger{color:var(--crit)}
.pds-iconbtn--danger:hover{background:var(--crit-bg)}

.pds-link{font-size:12.5px;font-weight:600;color:var(--blue);text-decoration:none}
.pds-link:hover{text-decoration:underline}
.pds-linkbtn{font-size:11px;font-weight:600;color:var(--crit);background:none;border:0;padding:0 0 0 4px;cursor:pointer;font-family:var(--sans)}
.pds-linkbtn:hover{text-decoration:underline}
/* progressive disclosure: secondary forms stay on the page, folded away */
.pds-disclosure{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;font-weight:600;color:var(--blue);
  cursor:pointer;list-style:none}
.pds-disclosure::-webkit-details-marker{display:none}
.pds-disclosure:hover{color:var(--blue-ink);text-decoration:underline}

/* --- semantic status: icon + label + colour, never colour alone --- */
.pds-status{display:inline-flex;align-items:center;gap:6px;border:1px solid;border-radius:var(--r);
  padding:3px 8px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.35}
a.pds-status{text-decoration:none}
a.pds-status:hover{filter:brightness(.94)}
.pds-status svg{flex-shrink:0}
.pds-status--sm{padding:2px 6px;font-size:11px}
.pds-status--inline{border-color:transparent;background:transparent;padding:0}
.pds-status--neutral{background:var(--neutral-bg);border-color:var(--neutral-line);color:var(--neutral)}
.pds-status--info{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}
.pds-status--success{background:var(--green-bg);border-color:var(--green-line);color:var(--green)}
.pds-status--attention{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber)}
.pds-status--warning{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}
.pds-status--critical{background:var(--crit-bg);border-color:var(--crit-line);color:var(--crit)}
.pds-status--error{background:var(--red-bg);border-color:var(--red-line);color:var(--red)}
.pds-status--inline.pds-status--neutral{color:var(--neutral)}
.badge-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;
  padding:2px 7px;border-radius:var(--r);border:1px solid var(--neutral-line);background:var(--neutral-bg);color:var(--neutral);white-space:nowrap}

.pds-tone-neutral{color:var(--neutral)}
.pds-tone-info{color:var(--info)}
.pds-tone-success{color:var(--green)}
.pds-tone-attention{color:var(--amber)}
.pds-tone-warning{color:var(--warn)}
.pds-tone-critical{color:var(--crit)}
.pds-tone-error{color:var(--red)}

/* --- alerts & banners --- */
.pds-alert{display:flex;gap:10px;border:1px solid var(--neutral-line);background:var(--neutral-bg);padding:10px 12px;align-items:flex-start}
.pds-alert svg{flex-shrink:0;margin-top:1px}
.pds-alert__title{font-size:12.5px;font-weight:600}
.pds-alert__body{font-size:12px;line-height:1.55;color:var(--muted);margin-top:3px}
.pds-alert__body a{font-weight:600}
.pds-alert--info{border-color:var(--info-line);background:var(--info-bg)}
.pds-alert--info .pds-alert__title{color:var(--info)}
.pds-alert--success{border-color:var(--green-line);background:var(--green-bg)}
.pds-alert--success .pds-alert__title{color:var(--green)}
.pds-alert--attention{border-color:var(--amber-line);background:var(--amber-bg)}
.pds-alert--attention .pds-alert__title{color:var(--amber)}
.pds-alert--warning{border-color:var(--warn-line);background:var(--warn-bg)}
.pds-alert--warning .pds-alert__title{color:var(--warn)}
.pds-alert--critical{border-color:var(--crit-line);background:var(--crit-bg)}
.pds-alert--critical .pds-alert__title{color:var(--crit)}
.pds-alert--error{border-color:var(--red-line);background:var(--red-bg)}
.pds-alert--error .pds-alert__title{color:var(--red)}

.pds-missing{border-left:2px solid var(--amber-line);background:var(--amber-bg);padding:10px 12px}
.pds-missing__title{font-size:12px;font-weight:600;color:var(--amber)}
.pds-missing ul{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
.pds-missing li{font-size:12px;line-height:1.5;color:var(--muted);padding-left:12px;position:relative}
.pds-missing li::before{content:"";position:absolute;left:0;top:7px;width:4px;height:4px;background:var(--amber)}

/* --- data table --- */
/* `position:relative` sul contenitore, non altrove: la didascalia della tabella
   è nascosta con `position:absolute`, e senza un antenato posizionato QUI si
   ancora al primo che trova risalendo — da quando l'area di contenuto è
   posizionata, sarebbe quella, e una didascalia larga quanto il testo spingeva
   la pagina di lato a 390 px. Il posto giusto per contenerla è la tabella. */
.pds-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative}
.pds-table,.prodtable{width:100%;border-collapse:collapse;font-size:12.5px;text-align:left}
.pds-table caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.pds-table th,.prodtable th{text-align:left;padding:6px 16px;background:var(--surface2);border-bottom:1px solid var(--line-strong);
  font-family:var(--mono);font-size:9.5px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);white-space:nowrap;vertical-align:middle}
.pds-table td,.prodtable td{padding:10px 16px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}
.pds-table tbody tr:hover,.prodtable tbody tr:hover{background:var(--surface2)}
.pds-table tbody tr.is-selected{background:var(--blue-bg)}
/* Variante di un Prodotto gestito: rientro e filo verticale sulla prima cella.
   Il filo è di --line, non di --blue: l'appartenenza a un prodotto non è uno
   stato di conformità e non deve prendersene il colore. */
.pds-table tbody tr.pds-row-nested>th:first-child{box-shadow:inset 12px 0 0 -11px var(--line-strong)}
.pds-table td.pds-td--top,.pds-table th.pds-td--top,.prodtable td.pds-td--top,.prodtable th.pds-td--top{vertical-align:top}
.pds-table th a,.pds-table th button{color:inherit;text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.pds-table th a:hover,.pds-table th button:hover{color:var(--blue)}
.pds-table tfoot td{background:var(--surface2);border-bottom:0;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.pds-cell-id{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--blue);text-decoration:none}
.pds-cell-id:hover{text-decoration:underline}
.pds-cell-sub,.prod-sub{display:block;font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:2px}
.pds-cell-strong{display:block;font-size:12.5px;font-weight:500;color:var(--ink)}
.prod-stato{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;
  padding:2px 7px;border-radius:var(--r);border:1px solid var(--neutral-line);white-space:nowrap}

/* --- table toolbar, filters, pagination --- */
.pds-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding:8px 12px;background:var(--panel)}
.pds-toolbar__search{display:flex;align-items:center;gap:8px;height:32px;min-width:220px;flex:1;
  border:1px solid var(--line-strong);border-radius:var(--r);background:var(--panel);padding:0 8px}
.pds-toolbar__search:focus-within{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.pds-toolbar__search input{border:0;background:transparent;font-size:12.5px;width:100%;color:var(--ink);padding:0}
.pds-toolbar__search input:focus{outline:none}
.pds-toolbar__search svg{flex-shrink:0;color:var(--faint)}
.pds-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding:8px 12px}
.pds-chips__label{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.pds-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--blue);background:var(--blue-bg);color:var(--blue);
  border-radius:var(--r);padding:1px 7px;font-size:11.5px;text-decoration:none}
.pds-chip:hover{border-color:var(--blue-ink);background:var(--blue-line);color:var(--blue-ink)}
.pds-chip--muted{border-color:var(--line-strong);background:var(--panel);color:var(--muted)}
.pds-chip--muted:hover{background:var(--surface2);color:var(--ink)}
button.pds-chip{cursor:pointer}
.pds-chips>.pds-chip{padding:4px 10px;font-size:12px;font-weight:700}
.pds-chip__field{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;opacity:.7}
.pds-count{font-family:var(--mono);font-size:11px;color:var(--faint)}

.pds-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 12px;border-top:1px solid var(--line)}
.pds-pager{display:inline-flex;align-items:stretch;border:1px solid var(--line-strong);border-radius:var(--r)}
.pds-pager a,.pds-pager span{display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 6px;
  border-right:1px solid var(--line);font-family:var(--mono);font-size:11.5px;color:var(--muted);text-decoration:none}
.pds-pager>:last-child{border-right:0}
.pds-pager a:hover{background:var(--surface2);color:var(--ink)}
.pds-pager [aria-current="page"]{background:var(--blue-bg);color:var(--blue);font-weight:700}
.pds-pager .is-disabled{color:var(--faint2);pointer-events:none}

/* --- empty / system states --- */
.pds-empty{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid var(--line);background:var(--panel);padding:36px 24px}
.pds-empty--error{border-color:var(--red-line);background:var(--red-bg)}
.pds-empty svg{color:var(--faint)}
.pds-empty__title{font-size:13.5px;font-weight:700;margin-top:12px}
.pds-empty__body{font-size:12.5px;line-height:1.6;color:var(--muted);margin-top:6px;max-width:440px}
.pds-empty__code{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:8px}
.pds-empty__actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.empty-note{font-size:12px;color:var(--faint);margin-top:10px}

/* --- KPI / metrics ---
   StatStrip e KpiRow sono due primitive diverse nel riferimento: condividono
   la griglia 2/4, non la scala tipografica. */
.pds-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;border:1px solid var(--line-strong);background:var(--line)}
.pds-kpi,.stat{padding:12px 16px;background:var(--panel);min-width:0}
.pds-kpi__label,.stat .uc{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);display:block}
.pds-kpi__value,.stat .n{font-size:20px;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--ink);margin-top:4px;font-variant-numeric:tabular-nums}
.pds-kpi__meta{font-size:11.5px;color:var(--muted);margin-top:4px;display:block}
.pds-kpis--dashboard .pds-kpi{padding:12px 14px}
.pds-kpis--dashboard .pds-kpi__label{font-family:var(--mono);font-size:9.5px;font-weight:400;letter-spacing:.12em}
.pds-kpis--dashboard .pds-kpi__value{font-size:26px;letter-spacing:-.03em;margin-top:6px}
.pds-kpis--dashboard .pds-kpi__meta{font-size:11.5px;margin-top:6px}
@media(min-width:1024px){
  .pds-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .pds-kpis--dashboard{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
}
.stat{flex:1;min-width:150px;border:1px solid var(--line);background:var(--panel)}

/* --- property list / metadata --- */
.pds-props{display:grid;gap:0 32px;margin:0}
.pds-props--2{grid-template-columns:1fr 1fr}
.pds-props__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:7px 0}
.pds-props dt{flex-shrink:0;font-size:11.5px;color:var(--faint);margin:0}
.pds-props dd{margin:0;text-align:right;font-size:12.5px;font-weight:500;color:var(--ink);overflow-wrap:anywhere}
.pds-props dd.mono{font-family:var(--mono);font-size:11.5px;font-weight:400}
.pds-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 20px;list-style:none;margin:0;padding:0}
.pds-meta li{display:flex;align-items:baseline;gap:6px;font-size:11.5px}
.pds-meta span:first-child{color:var(--faint)}
.pds-meta span:last-child{color:var(--ink);font-weight:500}
.pds-meta .mono{font-weight:400;font-size:11px}

/* --- object header (case, product, notification …) --- */
.pds-objhead{border:1px solid var(--line);background:var(--panel)}
.pds-objhead__main{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;padding:12px 16px}
.pds-objhead__icon{width:32px;height:32px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface2);color:var(--muted)}
.pds-objhead__eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0}
.pds-objhead__type{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.pds-objhead__id{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--blue)}
.pds-objhead__title{font-size:15px;font-weight:700;line-height:1.3;margin-top:4px}
.pds-objhead__actions{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}
.pds-objhead__foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;border-top:1px solid var(--line);background:var(--surface2);padding:8px 16px}

/* --- owner / avatar / badges / tags --- */
.pds-owner{display:inline-flex;align-items:center;gap:8px;min-width:0}
.pds-avatar{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:var(--r);
  background:var(--nav);color:#fff;font-family:var(--mono);font-size:10px;font-weight:700}
.pds-avatar--sm{width:20px;height:20px;font-size:9px}
.pds-avatar--empty{background:transparent;border:1px dashed var(--line-strong);color:var(--faint)}
.pds-owner__name{font-size:12px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pds-owner__role{font-family:var(--mono);font-size:10px;color:var(--faint);display:block}
.pds-badge{display:inline-flex;align-items:center;background:var(--surface2);border-radius:var(--r);padding:1px 6px;
  font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.pds-badge--count{background:var(--blue);color:#fff;font-family:var(--mono);min-width:18px;justify-content:center;letter-spacing:0;text-transform:none}
.pds-badge--version{background:var(--surface2);border:1px solid var(--line);font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:0;text-transform:none}
.pds-tag{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface2);
  border-radius:var(--r);padding:1px 7px;font-size:11.5px;color:var(--muted)}
.pds-tag--mono{font-family:var(--mono);font-size:11px}
.pds-code{font-family:var(--mono);font-size:11.5px;color:var(--ink);overflow-wrap:anywhere}

/* --- bande del cruscotto ---
   La pagina è un documento in fasce: adesso → lavoro → segnali → sfondo. Senza
   le fasce dieci pannelli hanno tutti lo stesso peso, e non si legge più niente:
   chi apre la mattina non sa da dove cominciare, che è il modo più silenzioso di
   mancare un termine. */
.pds-band{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 12px;
  border-bottom:2px solid var(--ink);padding-bottom:5px;margin:22px 0 12px}
.pds-band__n{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--blue-ink)}
.pds-band__title{font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin:0}
.pds-band__q{font-size:11.5px;color:var(--muted)}

/* --- strato macchina / strato umano ---
   La differenza fra ciò che una fonte ha OSSERVATO e ciò che una persona ha
   DECISO non può essere affidata alle parole: chi legge in fretta vede la forma.
   Il bordo tratteggiato dice «proposta, non ancora valutata»; il chip pieno con
   autore e data dice «qualcuno ci ha messo la firma». Non usare l'uno per
   l'altro: è la regola d'oro delle integrazioni resa visibile. */
.pds-suggested{display:inline-flex;align-items:baseline;gap:6px}
.pds-suggested__value{border:1px dashed var(--line-strong);background:var(--surface2);
  border-radius:var(--r);padding:1px 7px;font-family:var(--mono);font-size:11px;color:var(--muted)}
.pds-suggested__src{font-family:var(--mono);font-size:10px;color:var(--faint)}
.pds-human{display:inline-flex;flex-direction:column;gap:2px}
.pds-human__top{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.pds-human__by{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted)}
.pds-human__by--pending{color:var(--amber)}
.pds-human__who{font-family:var(--mono);font-size:10px;color:var(--faint)}
.pds-code--blue{color:var(--blue-ink)}

/* --- deadlines --- */
.pds-deadline{border-left:2px solid var(--line-strong);padding:2px 0 2px 10px}
.pds-deadline__label{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;margin:0;flex-wrap:wrap}
.pds-deadline__source{flex-basis:100%;font-family:var(--mono);font-size:10px;font-weight:400;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.pds-deadline__value{font-family:var(--mono);font-size:12px;color:var(--ink);margin:2px 0 0}
.pds-deadline__rest{font-size:11px;color:var(--muted);margin:2px 0 0}
.pds-deadline--upcoming{border-left-color:var(--line-strong)}
.pds-deadline--upcoming .pds-deadline__label{color:var(--neutral)}
.pds-deadline--due-soon{border-left-color:var(--amber-line)}
.pds-deadline--due-soon .pds-deadline__label{color:var(--amber)}
.pds-deadline--due-today{border-left-color:var(--warn-line)}
.pds-deadline--due-today .pds-deadline__label{color:var(--warn)}
.pds-deadline--overdue{border-left-color:var(--crit-line)}
.pds-deadline--overdue .pds-deadline__label{color:var(--crit)}
.pds-deadline--completed{border-left-color:var(--green-line)}
.pds-deadline--completed .pds-deadline__label{color:var(--green)}
.pds-deadline--compact{display:inline-flex;align-items:center;gap:6px;border-left:0;padding:0;font-family:var(--mono);font-size:11.5px}

.pds-countdown{border:1px solid var(--info-line);background:var(--info-bg);padding:10px 12px}
.pds-countdown--attention{border-color:var(--amber-line);background:var(--amber-bg)}
.pds-countdown--warning{border-color:var(--warn-line);background:var(--warn-bg)}
.pds-countdown--critical{border-color:var(--crit-line);background:var(--crit-bg)}
.pds-countdown__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.pds-countdown__label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}
.pds-countdown__value{font-family:var(--mono);font-size:16px;font-weight:700;margin:0}
.pds-countdown__track{height:6px;background:var(--line-soft);margin-top:8px}
.pds-countdown__track>div{height:100%}
.pds-countdown__note{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin:6px 0 0}

/* the running legal clock: the largest number on the screen, in mono */
.pds-clock{font-family:var(--mono);font-size:30px;font-weight:700;line-height:1.15;letter-spacing:-.02em;margin:0}
.pds-runway{position:relative;height:28px;background:var(--surface2);border:1px solid var(--line);overflow:hidden;margin-top:12px}
.pds-runway__fill{position:absolute;top:0;bottom:0;left:0;transition:width 1s linear}
.pds-runway__fill--info{background:var(--info)}
.pds-runway__fill--warning{background:var(--warn)}
.pds-runway__fill--critical{background:var(--crit)}
.pds-runway__label{position:absolute;top:0;bottom:0;right:0;display:grid;place-items:center;font-family:var(--mono);
  font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);transition:width 1s linear}
/* draft text the operator must still verify before it is filed in their name */
.inp.pds-input--draft,.pds-input--draft{border-color:var(--amber-line);background:var(--amber-bg)}
.inp.pds-input--draft:focus,.pds-input--draft:focus{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber)}

.pds-progress__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:4px}
.pds-progress__label{font-size:11.5px;font-weight:500}
.pds-progress__value{font-family:var(--mono);font-size:11px;color:var(--muted)}
.pds-progress__track{height:6px;background:var(--line);overflow:hidden}
.pds-progress__track>div{height:100%;background:var(--blue)}

/* --- column chart: same square geometry as the rest of the system --- */
.pds-bars{display:flex;gap:12px;align-items:flex-end;height:160px}
.pds-bars__col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.pds-bars__n{font-size:11px;font-weight:600;color:var(--muted)}
.pds-bars__bar{width:100%;max-width:44px;background:var(--blue);min-height:2px;display:block}
.pds-bars__lab{font-size:10px;color:var(--faint)}

/* --- evidence & documents --- */
.pds-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);background:var(--panel)}
.pds-list--flush{border:0}
.pds-list>li{border-bottom:1px solid var(--line);padding:10px 12px}
.pds-list>li:last-child{border-bottom:0}
.pds-doc{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.pds-doc:hover{background:var(--surface2)}
.pds-doc__name{font-family:var(--mono);font-size:12px;color:var(--ink);overflow-wrap:anywhere}
.pds-doc__meta{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 12px}
.pds-attach{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface2);
  border-radius:var(--r);padding:3px 8px;font-family:var(--mono);font-size:11px;color:var(--muted);text-decoration:none}
.pds-attach:hover{border-color:var(--blue);color:var(--blue)}

/* --- audit / traceability --- */
.pds-audit{list-style:none;margin:0;padding:0;border:1px solid var(--line);background:var(--panel)}
.pds-audit>li{display:flex;gap:12px;border-bottom:1px solid var(--line);padding:12px}
.pds-audit>li:last-child{border-bottom:0}
.pds-audit__icon{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface2);color:var(--faint);margin-top:1px}
.pds-audit__action{font-size:12.5px;font-weight:600}
.pds-audit__object{font-family:var(--mono);font-size:11px;color:var(--blue)}
.pds-audit__stamp{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 8px}
.pds-audit__delta{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface2);
  padding:3px 8px;font-family:var(--mono);font-size:11px;margin-top:6px}
.pds-audit__from{color:var(--faint);text-decoration:line-through}
.pds-audit__to{font-weight:600;color:var(--ink)}
.pds-audit__reason{border-left:2px solid var(--line-strong);padding-left:8px;font-size:11.5px;line-height:1.55;color:var(--muted);margin-top:6px}
.pds-integrity{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface2);
  padding:7px 12px;font-family:var(--mono);font-size:10.5px;color:var(--faint);margin:0}

/* --- regulatory reference --- */
.pds-regref{border-left:2px solid var(--line-strong);background:var(--surface2);padding:8px 12px}
.pds-regref__kicker{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0}
.pds-regref__ref{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink);margin:4px 0 0}
.pds-regref__title{font-size:12px;line-height:1.55;color:var(--muted);margin:4px 0 0}
.pds-regref--inline{display:inline;border:0;background:none;padding:0;border-bottom:1px dotted var(--line-strong);
  font-family:var(--mono);font-size:11.5px;color:var(--muted);text-decoration:none}
.pds-regref--inline:hover{border-bottom-color:var(--blue);color:var(--blue)}

/* --- verdict: the single most consequential statement on the screen --- */
.pds-verdict{border:1px solid var(--line);border-left-width:3px;background:var(--panel);padding:18px 20px}
.pds-verdict__eyebrow{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;margin:0}
.pds-verdict__title{font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1.25;margin:8px 0 8px;text-wrap:pretty}
.pds-verdict__body{font-size:13.5px;line-height:1.65;color:var(--ink);margin:0;max-width:70ch}
.pds-verdict__norm{font-family:var(--mono);font-size:11px;color:var(--faint);margin:12px 0 0}
.pds-verdict--critical{border-color:var(--crit-line);border-left-color:var(--crit);background:var(--crit-bg)}
.pds-verdict--critical .pds-verdict__eyebrow,.pds-verdict--critical .pds-verdict__title{color:var(--crit)}
.pds-verdict--warning{border-color:var(--warn-line);border-left-color:var(--warn);background:var(--warn-bg)}
.pds-verdict--warning .pds-verdict__eyebrow,.pds-verdict--warning .pds-verdict__title{color:var(--warn)}
.pds-verdict--attention{border-color:var(--amber-line);border-left-color:var(--amber);background:var(--amber-bg)}
.pds-verdict--attention .pds-verdict__eyebrow,.pds-verdict--attention .pds-verdict__title{color:var(--amber)}
.pds-verdict--success{border-color:var(--green-line);border-left-color:var(--green);background:var(--green-bg)}
.pds-verdict--success .pds-verdict__eyebrow,.pds-verdict--success .pds-verdict__title{color:var(--green)}
.pds-verdict--info{border-color:var(--info-line);border-left-color:var(--info);background:var(--info-bg)}
.pds-verdict--info .pds-verdict__eyebrow,.pds-verdict--info .pds-verdict__title{color:var(--info)}

/* --- selectable rows and choice cards (triage, pickers) --- */
.pds-pickrow{display:flex;width:100%;text-align:left;gap:12px;align-items:center;flex-wrap:wrap;
  border:0;border-left:2px solid transparent;background:var(--panel);padding:10px 12px;cursor:pointer;font:inherit;color:inherit}
.pds-pickrow:hover{background:var(--surface2)}
.pds-pickrow.is-current{border-left-color:var(--blue);background:var(--blue-bg)}
.pds-choice{display:block;width:100%;text-align:left;border:1px solid var(--line-strong);border-radius:var(--r);
  background:var(--panel);padding:11px 13px;cursor:pointer;font:inherit;color:inherit}
.pds-choice:hover{background:var(--surface2)}
.pds-choice.is-selected{border-color:var(--blue);background:var(--blue-bg)}
.pds-choice b{display:block;font-weight:600;font-size:13px}
.pds-choice span{display:block;font-size:12.5px;color:var(--muted);line-height:1.55;margin-top:2px}
.pds-choice.is-selected b{color:var(--blue-ink)}

/* --- regulatory engine aside: system reasoning, quoted from the regulation --- */
.pds-engine{border:1px solid var(--line);background:var(--surface2);padding:14px 16px;align-self:start}
.pds-engine__kicker{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--faint);margin:0}
.pds-engine__title{font-size:13px;font-weight:700;margin:6px 0 0}
.pds-engine__item{border-top:1px solid var(--line);padding:10px 0}
.pds-engine__ref{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--blue-ink);margin:0}
.pds-engine__txt{font-size:12.5px;line-height:1.6;color:var(--muted);margin:3px 0 0}
.pds-engine__foot{border-top:1px solid var(--line);padding-top:10px;font-family:var(--mono);font-size:10.5px;line-height:1.6;color:var(--faint);margin:0}

/* --- steps --- */
.pds-steps{list-style:none;margin:0;padding:0;border:1px solid var(--line);background:var(--panel)}
.pds-steps--h{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.pds-steps>li{display:flex;gap:10px;border-bottom:1px solid var(--line);padding:10px 12px}
.pds-steps--h>li{border-bottom:0;border-right:1px solid var(--line)}
.pds-steps--h>li:last-child{border-right:0}
.pds-steps>li:last-child{border-bottom:0}
.pds-steps>li.is-active{background:var(--blue-bg)}
.pds-step__n{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:var(--r);
  font-family:var(--mono);font-size:10px;font-weight:700;background:var(--surface2);border:1px solid var(--line-strong);color:var(--muted);margin-top:1px}
.pds-steps>li.is-active .pds-step__n{background:var(--blue);border-color:var(--blue);color:#fff}
.pds-steps>li.is-done .pds-step__n{background:var(--green);border-color:var(--green);color:#fff}
.pds-step__label{font-size:12.5px;font-weight:600;display:block}
.pds-steps>li.is-active .pds-step__label{color:var(--blue)}
.pds-step__desc{font-size:11.5px;line-height:1.45;color:var(--muted);margin-top:2px;display:block}
.pds-step__meta{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:4px;display:block}

/* --- tabs / secondary nav / breadcrumbs --- */
.pds-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);overflow-x:auto}
.pds-tab{position:relative;padding:8px 12px;font-size:12.5px;font-weight:600;color:var(--muted);text-decoration:none;white-space:nowrap;
  border:0;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.pds-tab:hover{color:var(--ink)}
.pds-tab[aria-current],.pds-tab[aria-selected="true"],.pds-tab.is-on{color:var(--ink);border-bottom-color:var(--blue)}
.pds-tab__count{margin-left:6px;font-family:var(--mono);font-size:10px;background:var(--surface2);color:var(--faint);border-radius:var(--r);padding:0 5px}
.pds-tab[aria-current] .pds-tab__count,.pds-tab.is-on .pds-tab__count{background:var(--blue-bg);color:var(--blue)}
.pds-subnav,.pds-subnav ul{list-style:none;margin:0;padding:0}
.pds-subnav{border:1px solid var(--line);background:var(--panel)}
.pds-subnav a,.pds-subnav button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;
  border:0;border-bottom:1px solid var(--line);border-left:2px solid transparent;background:none;
  padding:8px 12px;font-size:12.5px;color:var(--muted);text-decoration:none;cursor:pointer;font-family:var(--sans)}
.pds-subnav li:last-child a,.pds-subnav li:last-child button{border-bottom:0}
.pds-subnav a:hover,.pds-subnav button:hover{background:var(--surface2);color:var(--ink)}
.pds-subnav [aria-current="page"]{border-left-color:var(--blue);background:var(--blue-bg);color:var(--blue);font-weight:600}
.pds-crumbs{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;padding:0;font-size:11.5px;color:var(--faint)}
.pds-crumbs a{color:var(--faint);text-decoration:none}
.pds-crumbs a:hover{color:var(--blue);text-decoration:underline}
.pds-crumbs [aria-current="page"]{font-weight:600;color:var(--ink)}
.pds-crumbs__sep{color:var(--faint2)}

/* --- forms --- */
.pds-field,.field{display:flex;flex-direction:column;gap:4px}
.pds-field__label,.field label,.field>span,.flabel{font-size:12px;font-weight:600;color:var(--ink);
  letter-spacing:0;text-transform:none;display:block;margin:0}
.pds-field__req{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--crit);margin-left:6px}
.pds-field__opt{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-left:6px}
.pds-help{font-size:11.5px;line-height:1.45;color:var(--faint);margin:2px 0 0}
.pds-error{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;line-height:1.45;color:var(--red);margin:2px 0 0}
.pds-input,.inp,select.inp,textarea.inp,.pds-select,.pds-textarea{
  width:100%;border:1px solid var(--line-strong);border-radius:var(--r);padding:0 10px;height:var(--ctl);
  font-size:13px;background:var(--panel);color:var(--ink);line-height:1.5;font-family:var(--sans)}
textarea.inp,.pds-textarea{height:auto;padding:8px 10px;resize:vertical;line-height:1.55;min-height:88px}
select.inp,.pds-select{padding-right:28px;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23767D8A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center}
.inp:hover,.pds-input:hover{border-color:var(--faint)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.inp[readonly],.inp:disabled{background:var(--surface2);color:var(--faint)}
.inp[aria-invalid="true"],.pds-input--error{border-color:var(--red)}
.inp[aria-invalid="true"]:focus{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
.pds-input--mono,.inp.mono{font-family:var(--mono);font-size:12.5px}
.pds-file{padding:6px 8px;height:auto;font-size:12.5px}
.pds-file::file-selector-button{border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);
  border-radius:var(--r);padding:4px 10px;margin-right:10px;font:600 12px var(--sans);cursor:pointer}
.pds-file::file-selector-button:hover{background:var(--surface2)}
/* File input: allinea verticalmente il bottone nativo (bug allegato disclosure).
   Gli input type=file usano .inp/.pds-input come i campi di testo, ma l'altezza
   fissa dei campi di testo lascia il bottone «Allega» disallineato: qui altezza
   auto, padding simmetrico e bottone coerente con .pds-file. */
.inp[type=file],.pds-input[type=file]{height:auto;padding:6px 8px;font-size:12.5px;
  display:flex;align-items:center;line-height:normal}
.inp[type=file]::file-selector-button,.pds-input[type=file]::file-selector-button{
  border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);
  border-radius:var(--r);padding:4px 10px;margin-right:10px;font:600 12px var(--sans);cursor:pointer}
.inp[type=file]::file-selector-button:hover,.pds-input[type=file]::file-selector-button:hover{background:var(--surface2)}
input[type=checkbox],input[type=radio]{accent-color:var(--blue)}
.pds-fieldset{border:0;border-top:1px solid var(--line);padding:14px 0 0;margin:0}
.pds-fieldset>legend{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink);padding:0 8px 0 0}
.pds-check{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;line-height:1.45}
.pds-check input{width:16px;height:16px;flex:0 0 16px;margin:1px 0 0}
.pds-check small{display:block;font-size:11.5px;color:var(--faint);margin-top:2px}
.consent{display:flex;gap:10px;align-items:flex-start;margin-top:8px;border:1px solid var(--line);padding:10px 12px;font-size:12.5px;line-height:1.55;cursor:pointer}
.consent-required{margin-top:16px}
.consent input{width:16px;height:16px;flex:0 0 16px;margin:1px 0 0}
.pds-inputgroup{display:flex;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--panel)}
.pds-inputgroup:focus-within{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.pds-inputgroup .inp,.pds-inputgroup input{border:0;box-shadow:none}
.pds-inputgroup .inp:focus,.pds-inputgroup input:focus{box-shadow:none}
.pds-inputgroup__unit{display:flex;align-items:center;border-left:1px solid var(--line);background:var(--surface2);
  padding:0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}

/* --- layout helpers --- */
.grid2,.pds-grid--2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pds-grid--3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.pds-grid--4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.split,.pds-split{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
.pds-split--wide{grid-template-columns:minmax(0,1fr) 380px}

/* --- overlays --- */
.pds-modal{position:fixed;inset:0;z-index:50;background:rgba(16,19,23,.45);display:grid;place-items:start center;padding:32px 16px;overflow-y:auto}
.pds-modal[hidden]{display:none}
.pds-dialog{width:100%;max-width:520px;background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--el2)}
.pds-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:12px 16px}
.pds-dialog__title{font-size:14px;font-weight:700}
.pds-dialog__body{padding:16px}
.pds-dialog__foot{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);background:var(--surface2);padding:12px 16px}
.pds-menu{position:relative}
.pds-menu>summary{list-style:none;cursor:pointer}
.pds-menu>summary::-webkit-details-marker{display:none}
.pds-menu__panel{position:absolute;right:0;top:calc(100% + 4px);z-index:40;min-width:220px;background:var(--panel);
  border:1px solid var(--line-strong);box-shadow:var(--el1);padding:4px}
.pds-menu__panel a,.pds-menu__panel button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;
  border:0;background:none;padding:7px 10px;font-size:12.5px;color:var(--ink);text-decoration:none;cursor:pointer;font-family:var(--sans)}
.pds-menu__panel a:hover,.pds-menu__panel button:hover{background:var(--surface2)}
.pds-menu__sep{border-top:1px solid var(--line);margin:4px 0}

/* --- toolbar buttons (products, registry) --- */
.tb-btn{display:inline-flex;align-items:center;gap:6px;height:var(--ctl-sm);font-size:12px;font-weight:600;color:var(--ink);
  border:1px solid var(--line-strong);background:var(--panel);border-radius:var(--r);padding:0 10px;cursor:pointer;list-style:none}
.pds-toolbar>.tb-btn,.pds-toolbar>form>.tb-btn{height:32px;font-weight:400;color:var(--muted)}
.tb-btn:hover{background:var(--surface2)}
.tb-menu>summary::-webkit-details-marker{display:none}

/* ==================================================== AUTH / PUBLIC PAGES = */
/* Standalone documents (sign-in, registration, reset, invitation): the same
   system, one centred panel, no shadow theatre. */
.pds-auth{min-height:100vh;display:grid;place-items:center;padding:28px 20px;background:var(--bg)}
.pds-auth__col{width:100%;max-width:420px}
.pds-auth__col--wide{max-width:560px}
.pds-auth__brand{text-align:center;margin-bottom:20px}
.pds-auth__brand img{height:38px;width:auto;display:inline-block}
.pds-auth__tag{font-family:var(--mono);font-size:10px;line-height:1.6;color:var(--faint);margin-top:8px;
  letter-spacing:.06em;text-transform:uppercase}
.pds-auth__card{background:var(--panel);border:1px solid var(--line);padding:24px}
.pds-auth__title{font-size:17px;font-weight:700;letter-spacing:-.01em;margin:0}
.pds-auth__lead{font-size:12.5px;color:var(--muted);line-height:1.55;margin:4px 0 0}
.pds-auth__foot{border-top:1px solid var(--line);margin-top:18px;padding-top:14px;font-size:12.5px;color:var(--muted);text-align:center}
.pds-auth__legal{font-family:var(--mono);font-size:10px;color:var(--faint);text-align:center;margin-top:14px;line-height:1.8}
.pds-auth__legal a{color:var(--faint);text-decoration:none}
.pds-auth__legal a:hover{color:var(--blue)}
.pds-lang{position:absolute;top:16px;right:16px;display:flex;border:1px solid var(--line-strong);background:var(--panel)}
.pds-lang a{padding:5px 9px;font-size:11px;font-weight:600;text-decoration:none;color:var(--muted);border-right:1px solid var(--line)}
.pds-lang a:last-child{border-right:0}
.pds-lang a[aria-current="true"]{background:var(--blue);color:#fff}

.login-providers{display:flex;flex-direction:column;gap:8px;margin:14px 0 0}
.login-provider{display:flex;gap:10px;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:var(--r);
  height:var(--ctl-lg);cursor:pointer;background:var(--panel);font-size:13px;font-weight:600;color:var(--ink);text-decoration:none}
.login-provider:hover{background:var(--surface2)}
.login-provider-logo,.login-provider-icon{width:18px;height:18px;flex:0 0 18px}
.login-provider-exercise{color:var(--amber);background:var(--amber-bg);border-color:var(--amber-line)}
.login-provider-exercise:hover{background:#F3EDD8}
.login-divider{display:flex;align-items:center;gap:10px;margin:16px 0 12px}
.login-divider span{flex:1;height:1px;background:var(--line)}
.login-divider b{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;white-space:nowrap}
.registration-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.intake-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.hp-field{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden}

/* Auth shell, ported from `data/designsystem/src/components/auth/AuthLayout.tsx`:
   paper page, black rules, twelve-column ruler and a black context rail. Login
   and registration use this newer shell; reset, 2FA and invitations keep the
   compact legacy auth card above. */
.pds-authx{min-height:100vh;display:flex;flex-direction:column;background:#fff;color:#0A0A0A}
.pds-authx__top{display:flex;align-items:stretch;justify-content:space-between;border-bottom:2px solid #0A0A0A}
.pds-authx__brand{display:flex;align-items:center;gap:10px;padding:14px 20px;color:#0A0A0A;text-decoration:none}
.pds-authx__links{display:flex;align-items:stretch}
.pds-authx__links a{display:flex;align-items:center;border-left:1px solid var(--line);padding:0 18px;
  font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#0A0A0A;text-decoration:none}
.pds-authx__links a:hover{background:#F4F5F8}
.pds-authx__lang{display:flex;align-items:stretch;border-left:1px solid var(--line)}
.pds-authx__lang a{min-width:42px;justify-content:center;padding:0 12px}
.pds-authx__lang a[aria-current="true"]{background:var(--blue);color:#fff}
.pds-authx__ruler{display:flex;border-bottom:1px solid var(--line-strong);padding:0 32px}
.pds-authx__ruler span{flex:1;padding:3px 0 3px 4px;border-left:1px solid var(--line);
  font-family:var(--mono);font-size:9px;letter-spacing:.02em;color:var(--line-strong)}
.pds-authx__ruler span:first-child{border-left:0}
.pds-authx__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);flex:1}
.pds-authx__main{display:flex;flex-direction:column;justify-content:center;border-right:1px solid #0A0A0A;padding:40px 32px}
.pds-authx__wrap{width:100%;max-width:520px;margin:0 auto}
.pds-authx__intro{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.pds-authx__idx{background:var(--blue);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;padding:4px 8px}
.pds-authx__eyebrow{border-bottom:2px solid #0A0A0A;padding-bottom:4px;
  font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.pds-authx__title{max-width:20ch;margin:0;font-size:38px;font-weight:700;line-height:1.08;color:#0A0A0A}
.pds-authx__leadrow{display:flex;gap:16px;margin-top:16px}
.pds-authx__leadbar{width:3px;flex:0 0 3px;background:var(--blue)}
.pds-authx__lead{max-width:58ch;margin:0;font-size:14.5px;line-height:1.6;color:#2C2C2C}
.pds-authx__form{margin-top:28px}
.pds-authx .pds-auth__card{background:transparent;border:0;padding:0}
.pds-authx .pds-field{margin-top:0}
.pds-authx .pds-field+.pds-field{margin-top:16px}
.pds-authx .pds-field__label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#6B6B6B}
.pds-authx .inp{height:44px;border-color:#0A0A0A;background:#fff;font-size:14.5px;color:#0A0A0A}
.pds-authx .inp:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(22,56,160,.25)}
.pds-authx__submit{width:100%;height:46px;border:1px solid #0A0A0A;background:#0A0A0A;color:#fff;
  font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.pds-authx__submit:hover{background:#000}
.pds-authx__foot{border-top:1px solid var(--line);margin-top:18px;padding-top:16px;font-size:13px;color:#0A0A0A}
.pds-authx__foot a{border-bottom:2px solid #0A0A0A;color:#0A0A0A;text-decoration:none;font-weight:700}
.pds-authx__muted{color:#6B6B6B}
.pds-authx__aside{background:#0A0A0A;color:#fff;padding:40px 32px}
.pds-authx__asidein{max-width:420px;margin:0 auto}
.pds-authx__asidekick{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.pds-authx__asidetable{margin-top:10px;border:1px solid rgba(255,255,255,.2)}
.pds-authx__asidehead{display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.06);padding:10px 14px;
  font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.pds-authx__pill{background:var(--blue);color:#fff;padding:2px 8px;font-family:var(--mono);font-size:9px;letter-spacing:.06em}
.pds-authx__rows{padding:4px 14px}
.pds-authx__row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid rgba(255,255,255,.12);padding:10px 0}
.pds-authx__row:last-child{border-bottom:0}
.pds-authx__row span:first-child{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.pds-authx__row span:last-child{text-align:right;font-size:12.5px;font-weight:700;line-height:1.4;color:#fff}
.pds-authx__note{margin-top:20px;border-left:4px solid var(--blue);background:rgba(255,255,255,.05);padding:12px 14px}
.pds-authx__note b{display:block;font-size:12.5px}
.pds-authx__note p{margin:4px 0 0;font-size:12px;line-height:1.55;color:rgba(255,255,255,.72)}
.pds-authx__list{margin:10px 0 0;padding:0;list-style:none}
.pds-authx__list li{display:flex;gap:12px;border-bottom:1px solid rgba(255,255,255,.12);padding:10px 0}
.pds-authx__listn{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--blue-bg)}
.pds-authx__list b{display:block;font-size:12.5px}
.pds-authx__list span:last-child{display:block;font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.6)}
.pds-authx__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border-top:2px solid #0A0A0A;
  background:#0A0A0A;color:#A9A9A9;padding:10px 32px;font-family:var(--mono);font-size:10px;letter-spacing:.03em}
.pds-authx__footer a{color:#A9A9A9;text-decoration:none}
.pds-authx__footer a:hover{color:#fff}
.pds-authx__providers{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.pds-authx__provider{display:flex;align-items:center;justify-content:center;gap:10px;height:44px;border:1px solid #0A0A0A;
  background:#fff;color:#0A0A0A;text-decoration:none;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.pds-authx__provider:hover{background:#F4F5F8}
.pds-authx__divider{display:flex;align-items:center;gap:10px;margin:16px 0}
.pds-authx__divider span{height:1px;flex:1;background:var(--line)}
.pds-authx__divider b{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#6B6B6B}
.pds-authx__fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pds-authx__section{border:0;border-top:1px solid #0A0A0A;margin:0;padding:16px 0 0}
.pds-authx__section+.pds-authx__section{margin-top:24px}
.pds-authx__section legend{padding-right:8px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#0A0A0A}
.pds-authx__consent{display:flex;align-items:flex-start;gap:10px;margin-top:14px;font-size:12.5px;line-height:1.55;color:#0A0A0A}
.pds-authx__consent input{width:15px;height:15px;flex:0 0 15px;margin-top:3px}
.pds-authx__consent a{border-bottom:1px solid #0A0A0A;color:#0A0A0A;text-decoration:none;font-weight:700}
@media(min-width:640px){.pds-authx__brand{padding-right:32px;padding-left:32px}}
@media(max-width:1023px){
  .pds-authx__ruler{display:none}
  .pds-authx__grid{grid-template-columns:1fr}
  .pds-authx__main{border-right:0}
}
@media(max-width:639px){
  .pds-authx__brand{padding-right:20px;padding-left:20px}
  .pds-authx__links>a:first-child{display:none}
  .pds-authx__links{overflow-x:auto}
  .pds-authx__links a{min-height:42px;white-space:nowrap}
  .pds-authx__main{padding:40px 20px}
  .pds-authx__aside{padding:36px 20px}
  .pds-authx__title{font-size:32px}
  .pds-authx__fields{grid-template-columns:1fr}
  .pds-authx__footer{padding:10px 20px}
}

.portal-shell{max-width:920px;margin:0 auto;padding:32px 20px;display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px;align-items:start}
.portal-card{background:var(--panel);border:1px solid var(--line);padding:20px}
.portal-intro{font-size:12.5px;color:var(--muted);line-height:1.6;border-left:2px solid var(--line-strong);padding-left:10px}
.portal-field{margin-top:16px;gap:4px}
.portal-success{background:var(--green-bg);border:1px solid var(--green-line);padding:14px;margin-top:14px}
.portal-aside{background:var(--surface2);border:1px solid var(--line);padding:18px}

/* ============================================================ CASE PAGES = */
.product-data{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:16px;border:1px solid var(--line);overflow:hidden}
.product-data>div{padding:9px 12px;border-bottom:1px solid var(--line)}
.product-data>div:nth-child(odd){border-right:1px solid var(--line)}
.product-data span{display:block;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:3px}
.product-data b{font-size:12.5px;font-weight:500;overflow-wrap:anywhere}
.product-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:12px}
.product-row:first-of-type{border-top:0}
.product-row span{font-size:11px;color:var(--faint);text-align:right}
.product-row small,small{display:block;font-size:11px;color:var(--faint);margin-top:2px}

.task-link{display:flex;justify-content:space-between;gap:12px;align-items:baseline;border-top:1px solid var(--line);padding:10px 0;color:inherit;text-decoration:none}
.task-link b{font-size:12.5px;display:block}
.task-link em{font-family:var(--mono);font-size:10px;font-style:normal;letter-spacing:.06em;text-transform:uppercase;
  padding:2px 7px;border-radius:var(--r);background:var(--amber-bg);border:1px solid var(--amber-line);color:var(--amber);white-space:nowrap}
.task-success{margin-top:14px;background:var(--green-bg);border:1px solid var(--green-line);padding:12px;font-size:12px;color:var(--muted)}
.task-success b{display:block;font-size:12.5px;color:var(--green);margin-bottom:3px}
.component-row{border:1px solid var(--line);padding:10px 12px;margin-bottom:8px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline;font-size:12.5px}
.component-row span{font-family:var(--mono);font-size:11.5px;color:var(--muted);overflow-wrap:anywhere}

/* ================================================== DOSSIER (print record) = */
.dossier-wrap{max-width:820px;margin:0 auto}
.dossier-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.dossier-toolbar-note{font-size:11px;color:var(--faint);flex:1;min-width:180px;line-height:1.5}
.dossier{position:relative;background:var(--panel);border:1px solid var(--line);padding:40px 44px;color:var(--ink)}
.dossier-stamp{position:absolute;top:32px;right:36px;transform:rotate(-8deg);border:2px solid var(--crit);color:var(--crit);
  font:700 12px var(--sans);letter-spacing:.14em;padding:5px 11px;opacity:.85}
.dossier-masthead{border-bottom:2px solid var(--ink);padding-bottom:18px}
.dossier-eyebrow{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink)}
.dossier-reg{font-size:12.5px;color:var(--muted);margin-top:4px}
.dossier-title{font:700 24px var(--sans);letter-spacing:-.02em;margin:14px 0 4px}
.dossier-id{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px;border:1px solid var(--line);padding:12px 14px;background:var(--surface2)}
.dossier-id-lab{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.dossier-id-val{font-size:12.5px;line-height:1.7;color:var(--ink)}
.dossier-id-val code,.dossier-foot-sig code{font:11px var(--mono);color:var(--blue-ink)}
.dossier-warning{font-size:11.5px;color:var(--amber);background:var(--amber-bg);border:1px solid var(--amber-line);padding:8px 11px;margin-top:12px;line-height:1.55}
.dossier-section{margin-top:26px}
.dossier-h{display:flex;gap:10px;align-items:center;font:700 14px var(--sans);border-bottom:1px solid var(--ink);padding-bottom:6px;margin-bottom:10px}
.dossier-n{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--r);background:var(--ink);color:#fff;font:700 10px var(--mono)}
.dossier-index{display:flex;gap:12px;align-items:baseline;font-size:12.5px;padding:5px 0;border-bottom:1px solid var(--line-soft)}
.dossier-index span{min-width:18px;font-family:var(--mono);color:var(--faint)}
.dossier-meta{display:grid;grid-template-columns:190px 1fr;gap:14px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;line-height:1.6}
.dossier-meta b{font:600 10.5px var(--sans);letter-spacing:.06em;color:var(--faint);text-transform:uppercase}
.dossier-attach{margin-top:12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.dossier-attach a{font-size:12.5px;font-weight:600;color:var(--blue);text-decoration:none}
.dossier-unver{color:var(--crit);font-weight:600}
.dossier-log{display:grid;grid-template-columns:120px 1fr;gap:14px;padding:9px 0;border-bottom:1px solid var(--line-soft);break-inside:avoid}
.dossier-log-id b{font:600 11px var(--mono);color:var(--blue-ink);overflow-wrap:anywhere;display:block}
.dossier-log-id small,.dossier-log small{font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.dossier-log-txt{font-size:12.5px;line-height:1.55}
.dossier-foot{margin-top:26px;border-top:2px solid var(--ink);padding-top:12px}
.dossier-foot-att{font-size:11px;color:var(--muted);line-height:1.7}
.dossier-foot-sig{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:8px}

/* ======================================================= ACCOUNT / CONFIG = */
.account-layout{display:grid;grid-template-columns:248px minmax(0,1fr);align-items:stretch;width:auto;margin:-20px -32px}
.account-nav{position:sticky;top:0;min-width:0;max-width:100%;height:max-content;border:0;border-right:1px solid var(--line);padding:12px 0}
.account-nav a{align-items:flex-start;gap:8px;padding:8px 16px}
.account-nav__copy{min-width:0;flex:1}
.account-nav__label{display:block;font-size:12.5px;font-weight:700;white-space:normal}
.account-nav__note{display:block;margin-top:1px;font-size:11px;line-height:1.4;color:var(--faint)}
.account-nav__flag{flex-shrink:0;margin-top:2px}
.account-nav [aria-current="page"]{background:var(--bg)}
.account-main{min-width:0;display:flex;flex-direction:column;gap:16px;padding:24px 32px}
.account-form{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px;border-top:1px solid var(--line)}
.account-panel{background:var(--panel);border:1px solid var(--line);padding:18px}
.account-panel p{font-size:12.5px;color:var(--muted);line-height:1.6;margin:4px 0 14px}
.account-code{font:11.5px/1.6 var(--mono);color:var(--blue-ink);background:var(--surface2);border:1px solid var(--line);
  padding:8px 10px;overflow-wrap:anywhere;margin:8px 0}
.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:14px 0;border:1px solid var(--line)}
.account-grid>div{background:var(--panel);border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 12px}
.account-grid>div:nth-child(2n){border-right:0}
.account-grid b,.account-grid span{display:block;font-size:12px}
.account-grid b{font-weight:600}
.account-grid span{font-size:11px;color:var(--muted);line-height:1.5;margin-top:3px}
.channel-list{display:flex;flex-direction:column;gap:0;margin:14px 0;border:1px solid var(--line)}
.channel-list label{border-bottom:1px solid var(--line);padding:10px 12px;font-size:12.5px;display:flex;gap:10px;align-items:flex-start}
.channel-list label:last-child{border-bottom:0}
.channel-list input{margin:2px 0 0;flex:0 0 16px;width:16px;height:16px}
.legal-links{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.legal-links a{padding:10px 0;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:600;text-decoration:none}
.legal-links a:hover{text-decoration:underline}
.api-endpoints{display:grid;grid-template-columns:180px 1fr;gap:6px 12px;margin-top:8px}
.api-endpoints code{font:11px var(--mono);color:var(--blue-ink)}
.api-endpoints span{font-size:11.5px;color:var(--muted)}
.account-config{background:var(--panel);border:1px solid var(--line);padding:18px}
.account-config h2{font:700 15px var(--sans);letter-spacing:-.01em;margin:0}
.account-config .lead{font-size:12.5px;color:var(--muted);line-height:1.6;margin:4px 0 14px}
.account-config>label.field{display:block;margin-top:14px!important}
.config-option{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);padding:10px 12px;margin:0 0 -1px}
.config-option:has(input:checked){background:var(--blue-bg);border-color:var(--blue-line);position:relative;z-index:1}
.config-option b,.config-option small{display:block}
.config-option b{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.config-option small{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:3px}
.config-option input{width:16px;height:16px;flex:0 0 auto}
.config-option .integration-copy{min-width:0}
.config-option .integration-copy b>svg,.config-option b>svg{flex:0 0 auto}
.config-status{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:var(--r);
  background:var(--green-bg);border:1px solid var(--green-line);color:var(--green);white-space:nowrap}
.config-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:20px 0 8px}
.integration-option{min-height:58px}

.module-config{display:grid;grid-template-columns:minmax(500px,1fr) minmax(420px,500px);gap:20px;align-items:start}
.module-preview{position:sticky;top:20px;background:var(--bg);border:1px solid var(--line);padding:16px}
.module-preview-card{background:var(--panel);border:1px solid var(--line);padding:16px}
.module-preview-card .field{margin-top:14px!important}
.module-preview-card .inp{margin:0}
.module-preview-intro{font-size:11px;color:var(--muted);line-height:1.55;border-left:2px solid var(--line-strong);padding-left:8px;margin-top:14px}
.module-anon{display:block;font-size:11px;color:var(--muted);margin-top:16px}
.module-powered{font-family:var(--mono);font-size:9.5px;color:var(--faint);text-align:center;margin-top:10px}
.module-preview [data-preview-field].is-hidden,.module-preview [data-preview-powered].is-hidden{display:none}

.contact-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
.contact-card,.contact-form{background:var(--panel);border:1px solid var(--line)}
.contact-card header{padding:14px 16px;font-size:12.5px;color:var(--muted);line-height:1.55}
.contact-card header .h{color:var(--ink)}
.contact-row{border-top:1px solid var(--line);padding:12px 16px;font-size:12.5px}
.contact-row b{display:block;margin-bottom:3px;font-weight:600}
.contact-row>a,.contact-row>span{font:12.5px var(--sans)}
.contact-hours{display:grid;grid-template-columns:1fr auto;gap:6px 12px;font-size:12.5px;margin-top:8px}
.contact-hours span{color:var(--muted)}
.contact-hours strong{font:600 12.5px var(--mono)}
.contact-row small{display:block;font:11px/1.6 var(--sans);color:var(--faint);margin-top:8px}
.contact-form{padding:18px}
.contact-form>p{font-size:12.5px;color:var(--muted);line-height:1.6;margin:4px 0 14px}
.contact-context{font:11px/1.7 var(--mono);color:var(--muted);background:var(--surface2);border:1px solid var(--line);padding:10px;margin-top:12px}

/* ============================================ IN-APP NOTIFICATIONS (bell) = */
.notif{position:relative}
.notif>summary{list-style:none;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;
  width:var(--ctl-sm);height:var(--ctl-sm);border-radius:var(--r);color:var(--muted)}
.notif>summary::-webkit-details-marker{display:none}
.notif>summary:hover{background:var(--surface2);color:var(--ink)}
.notif-badge{position:absolute;top:0;right:0;min-width:14px;height:14px;padding:0 3px;border-radius:var(--r);background:var(--warn);
  color:#fff;font:700 9px/14px var(--mono);text-align:center;box-sizing:border-box}
.notif-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:40;width:344px;max-width:calc(100vw - 30px);
  background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--el1)}
.notif-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);font-size:12.5px}
.notif-mark{font-size:11.5px;font-weight:600;color:var(--blue);background:none;border:none;cursor:pointer;font-family:var(--sans)}
.notif-list{max-height:360px;overflow-y:auto}
.notif-item{display:block;padding:10px 12px;border-bottom:1px solid var(--line);text-decoration:none;border-left:2px solid transparent}
.notif-item:hover{background:var(--surface2)}
.notif-unread{border-left-color:var(--blue);background:var(--blue-bg)}
.notif-t{font-size:12.5px;font-weight:600;color:var(--ink)}
.notif-x{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:2px}
.notif-ts{font-family:var(--mono);font-size:10px;color:var(--faint);margin-top:3px}
.notif-empty{padding:18px 12px;font-size:12px;color:var(--faint)}

/* ============================================== CRA ASSISTANT (chat bot) = */
.cbot{position:fixed;right:20px;bottom:20px;z-index:60;font-family:var(--sans)}
.cbot-fab{width:44px;height:44px;border-radius:var(--r);background:var(--blue);border:1px solid var(--blue);cursor:pointer;
  box-shadow:var(--el1);display:flex;align-items:center;justify-content:center}
.cbot-fab:hover{background:var(--blue-ink)}
.cbot-panel{position:absolute;right:0;bottom:54px;width:344px;max-width:calc(100vw - 40px);height:468px;max-height:calc(100vh - 120px);
  background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--el2);flex-direction:column;overflow:hidden}
.cbot-panel[hidden]{display:none}
.cbot-panel:not([hidden]){display:flex}
.cbot-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}
.cbot-head b{font-size:13px}
.cbot-quota{font-family:var(--mono);font-size:10px;color:var(--faint);margin-left:8px}
.cbot-x{border:none;background:none;font-size:18px;line-height:1;color:var(--faint);cursor:pointer}
.cbot-note{font-size:10.5px;color:var(--amber);background:var(--amber-bg);border-bottom:1px solid var(--amber-line);padding:6px 12px;line-height:1.4}
.cbot-msgs{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
.cbot-msg{font-size:12.5px;line-height:1.5;padding:8px 10px;border-radius:var(--r);max-width:86%;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.cbot-user{align-self:flex-end;background:var(--blue);color:#fff}
.cbot-bot{align-self:flex-start;background:var(--surface2);border:1px solid var(--line);color:var(--ink)}
.cbot-warn{background:var(--amber-bg);color:var(--amber);border:1px solid var(--amber-line);font-size:11px;align-self:flex-start}
.cbot-thinking{color:var(--faint)}
.cbot-form{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.cbot-input{flex:1;font-size:12.5px;height:var(--ctl-sm)}
.cbot-send{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:var(--r);width:32px;height:var(--ctl-sm);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}
.cbot-msg strong{font-weight:700}
.cbot-msg code{font-family:var(--mono);font-size:11.5px;background:rgba(16,19,23,.07);padding:1px 4px;border-radius:var(--r)}
.cbot-msg.has-table{max-width:96%}
.cbot-tablewrap{overflow-x:auto;margin:6px 0;-webkit-overflow-scrolling:touch}
.cbot-table{border-collapse:collapse;font-size:11px}
.cbot-table th,.cbot-table td{border:1px solid var(--line);padding:3px 7px;text-align:left;white-space:nowrap;vertical-align:top}
.cbot-table th{background:var(--surface2);font-weight:600}
.cbot-copy{display:block;margin-top:6px;border:none;background:none;color:var(--faint);font-size:10px;cursor:pointer;padding:0;font-family:inherit}
.cbot-copy:hover{color:var(--blue);text-decoration:underline}

/* ========================================================== RESPONSIVE === */
@media(max-width:1180px){.module-config{grid-template-columns:1fr}.module-preview{position:static}}
@media(max-width:1023px){
  .nav{display:flex;position:fixed;inset:0 auto 0 0;z-index:100;width:min(300px,88vw);height:100dvh;
    transform:translateX(-101%);transition:transform .18s ease;box-shadow:none}
  .nav.is-openm{transform:none;box-shadow:var(--el2)}
  .header .pds-navtoggle{display:inline-flex}
  .content{padding:20px 32px}
  .dash-actionbar{bottom:-20px;margin:0 -32px -20px;padding:10px 32px}
  .split,.pds-split{grid-template-columns:1fr}
  .pds-usermenu__name{display:none}
}
@media(max-width:900px){.pds-grid--3,.pds-grid--4{grid-template-columns:1fr 1fr}}
@media(max-width:720px){
  [style*="grid-template-columns"]{grid-template-columns:1fr!important}
  .grid2,.pds-grid--2,.pds-grid--3,.pds-grid--4,.pds-props--2{grid-template-columns:1fr}
  .contact-layout{grid-template-columns:1fr}
  .portal-shell{grid-template-columns:1fr;padding:20px 16px}
  .header{padding:10px 32px}
  .topbar-main{flex:1 1 100%;flex-wrap:wrap;gap:10px}
  .topbar-title{min-width:0;flex:1}
  .topbar-title h1{font-size:20px}
  .gsearch{order:3;flex-basis:100%;max-width:none;min-width:0}
  .dash-context{align-items:flex-start;flex-direction:column}
  .eserc-banner{padding:9px 32px}
  .pds-pagehead{flex-direction:column;align-items:stretch}
}
@media(max-width:1023px){
  .account-layout{grid-template-columns:1fr}
  .account-nav{position:static;border-right:0;border-bottom:1px solid var(--line);padding:0}
  .account-nav ul{display:flex;overflow-x:auto}
  .account-nav li{flex:none}
  .account-nav a,.account-nav li:last-child a{height:100%;border-left:0;border-bottom:2px solid transparent;padding:10px 16px}
  .account-nav [aria-current="page"]{border-left-color:transparent;border-bottom-color:var(--blue)}
  .account-nav__label{white-space:nowrap}
  .account-nav__note{display:none}
}
@media(max-width:640px){.account-form,.account-grid{grid-template-columns:1fr}.account-grid>div{border-right:0}}
@media(max-width:620px){.dossier{padding:20px}.dossier-meta,.dossier-log,.dossier-id{grid-template-columns:1fr}
  .dossier-stamp{position:static;display:inline-block;transform:none;margin-bottom:12px}}
@media(max-width:520px){
  .registration-fields,.intake-grid,.product-data{grid-template-columns:1fr}
  .product-data>div:nth-child(odd){border-right:0}
  .api-endpoints{grid-template-columns:1fr;gap:2px}
  .cbot-panel{width:calc(100vw - 32px)}.cbot{right:14px;bottom:14px}
  .dash-actionbar{align-items:stretch}
  .dash-actionbar .pds-btn{width:100%}
  .dash-actionbar form{width:100%}
  .dash-actionbar__updated{width:100%;margin-left:0;text-align:left}
}
@media(max-width:639px){
  .content{padding:20px}
  .header{padding:10px 20px}
  .eserc-banner{padding:9px 20px}
  .dash-actionbar{margin-right:-20px;margin-left:-20px;padding-right:20px;padding-left:20px}
  .account-layout{margin:-20px}
  .account-main{padding:24px 20px}
}

/* ============================================================== PRINT === */
@media print{
  @page{margin:18mm 16mm}
  body{background:#fff}
  .nav,.header,.pds-navpanel,.eserc-banner,.cbot,.no-print,.gam-modal,.pds-toolbar,.pds-pagination{display:none!important}
  .content{padding:0!important;max-width:none!important}
  .dossier-wrap{max-width:none;margin:0}
  .dossier{border:none;padding:0}
  .dossier-section,.dossier-log,.dossier-meta,.dossier-id,.pds-panel{break-inside:avoid}
  .dossier-h{break-after:avoid}
  a{color:var(--ink)!important;text-decoration:none}
}

/* --- product workspace: fatti osservati ---------------------------------- */
/* Una griglia di fatti, non di indicatori: ogni cella porta un valore che si
   riconta a mano nella scheda a cui rimanda. Nessuna cella riassume le altre,
   e non esiste una cella «totale» — un numero unico di sintesi verrebbe letto
   come un giudizio di conformità, che questo prodotto non emette. */
.pds-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:0;border:1px solid var(--line);margin:0}
.pds-facts>div{padding:9px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.pds-facts dt{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 4px}
.pds-facts dd{margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
@media (max-width:640px){.pds-facts{grid-template-columns:1fr}.pds-facts>div{border-right:0}}

/* --- product workspace: le due schede a due strati ------------------------ */
/* Una riga di corrispondenza è fatta di due metà che non devono MAI somigliarsi:
   a sinistra ciò che una fonte ha osservato, a destra ciò che una persona ha
   deciso. La riga si apre in due colonne affiancate, con la frase che dichiara
   in chiaro che cosa il prodotto NON ha stabilito. È un <details>: si apre senza
   JavaScript, come il resto della scheda. */
.pds-layers{border-bottom:1px solid var(--line)}
.pds-layers:last-of-type{border-bottom:0}
.pds-layers__row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;
  padding:10px 2px;cursor:pointer;list-style:none}
.pds-layers__row::-webkit-details-marker{display:none}
.pds-layers__row:hover{background:var(--surface2)}
.pds-layers__cve{font-size:12.5px;font-weight:700;color:var(--blue-ink);flex:0 0 150px}
.pds-layers__comp{font-size:11.5px;color:var(--muted);flex:1 1 168px;min-width:0;overflow-wrap:anywhere}
.pds-layers__match{flex:0 0 auto}
.pds-layers__human{flex:1 1 220px;min-width:0}
.pds-layers__body{display:grid;grid-template-columns:1fr 1fr;gap:1px;
  background:var(--line);border-top:1px solid var(--line);margin-bottom:10px}
.pds-layers__col{background:var(--surface);padding:10px 12px}
.pds-layers__col--machine{background:var(--surface2)}
.pds-layers__caption{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--faint);margin:0 0 6px}
/* La frase che separa il segnale dalla conclusione. Non è una nota a piè di
   pagina: è la riga per cui esiste la separazione fra i due strati. */
.pds-layers__claim{font-size:11.5px;line-height:1.55;color:var(--muted);margin:10px 0 0;
  border-top:1px solid var(--line);padding-top:8px}
@media (max-width:720px){.pds-layers__body{grid-template-columns:1fr}}

/* --- cruscotto: azione richiesta, quiete, cambiamenti, stato di fondo ------ */
/* L'azione richiesta è l'unico elemento forte della prima banda. Il tono viene
   dal motore (quanto manca al termine), mai da questa foglia di stile: qui si
   decide solo come si vede, non che cosa significa. */
.pds-req{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:flex-start;
  border:1px solid var(--line);border-left-width:3px;background:var(--panel);padding:14px 16px;margin:0 0 14px}
/* `info` prende la famiglia SEMANTICA, non il marchio. Era
   `--blue`/`--blue-bg`, ed era l'unica delle cinque righe qui sotto a farlo: le
   altre quattro usano --line-strong, --amber-line, --warn-line, --crit-line. La
   regola in testa a questo foglio dice «brand blue = interaction, selection,
   navigation. NEVER compliant» e «semantic compliance colours kept strictly
   separate from the brand blue» — e questo riquadro porta il tono `info` nei due
   casi che contano: «Serve una decisione umana» e «in attesa della misura
   correttiva». Il blu di marchio li' significava «a posto», che e' un giudizio
   sulla posizione CRA che il prodotto non emette.
   Si vedeva anche a occhio nudo: dentro lo stesso riquadro il fondo era
   --blue-bg mentre etichetta e termine usano `pds-tone-info` = --info. Due blu
   diversi nello stesso pannello. */
.pds-req--info{border-left-color:var(--info);background:var(--info-bg)}
.pds-req--neutral{border-left-color:var(--line-strong);background:var(--panel)}
.pds-req--attention{border-left-color:var(--amber-line);background:var(--amber-bg)}
.pds-req--warning{border-left-color:var(--warn-line);background:var(--warn-bg)}
.pds-req--critical{border-left-color:var(--crit-line);background:var(--crit-bg)}
.pds-req__main{min-width:0;flex:1 1 380px}
.pds-req__lab{margin:0;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.pds-req__title{margin:5px 0 0;font-size:18px;font-weight:700;line-height:1.2;letter-spacing:-.02em}
.pds-req__meta{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px}
.pds-req__body{margin:6px 0 0;max-width:72ch;font-size:12.5px;line-height:1.55;color:var(--muted)}
.pds-req__side{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;align-items:stretch;min-width:190px}
.pds-req__due{border:1px solid var(--line);background:var(--panel);padding:8px 11px}
.pds-req__duelab{margin:0;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.pds-req__duev{margin:3px 0 0;font-family:var(--mono);font-size:16px;font-weight:700;line-height:1.1}
.pds-req__duerest{margin:3px 0 0;font-size:10.5px;color:var(--faint)}
.pds-req__notime{margin:0;border:1px dashed var(--line-strong);background:var(--panel);padding:8px 11px;
  font-size:11.5px;color:var(--muted)}

/* Nessun termine in corso: una riga, non un riquadro vuoto. */
.pds-quiet{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--green-line);
  background:var(--green-bg);padding:11px 14px;margin:0 0 14px}
.pds-quiet__ico{flex:0 0 auto;margin-top:2px;color:var(--green)}
.pds-quiet__title{display:block;font-size:13px;font-weight:700;color:var(--green)}
.pds-quiet__body{display:block;margin-top:2px;font-size:12.5px;color:var(--muted)}

/* «Che cosa è cambiato dall'ultima volta che sei entrato»: un conteggio, una
   riga, un collegamento a dove si guarda. Non è una sintesi di niente. */
.pds-change{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-top:1px solid var(--line);
  text-decoration:none;color:inherit}
.pds-change:first-of-type{border-top:0}
.pds-change:hover{color:var(--blue)}
.pds-change__n{flex:0 0 30px;text-align:right;font-size:13px;font-weight:700}
.pds-change__lab{min-width:0;flex:1;font-size:12.5px;color:var(--muted)}
.pds-change__dot{flex:0 0 auto;font-size:10px}

/* Attività recente: il riassunto del registro, che resta la fonte. */
.pds-act{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 10px;padding:7px 0;
  border-top:1px solid var(--line);text-decoration:none;color:inherit}
.pds-act:first-of-type{border-top:0}
.pds-act:hover .pds-act__what{color:var(--blue)}
.pds-act__what{min-width:0;font-size:12.5px}
.pds-act__when{font-size:10.5px;color:var(--faint);text-align:right}
.pds-act__who{grid-column:1/-1;font-size:10.5px;color:var(--faint)}

/* Fascia di sfondo: moduli compatti, una cifra e una riga ciascuno. Nessuna
   cella «totale»: un numero unico di sintesi si leggerebbe come un voto. */
.pds-strip{display:grid;grid-template-columns:1fr;gap:1px;border:1px solid var(--line-strong);background:var(--line)}
.pds-strip__mod{padding:10px 14px;background:var(--panel);
  text-decoration:none;color:inherit;min-width:0}
.pds-strip__mod:hover{background:var(--surface2)}
.pds-strip__lab{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--faint)}
.pds-strip__val{display:block;margin-top:4px;font-family:var(--mono);font-size:17px;font-weight:700;line-height:1;color:var(--ink)}
.pds-strip__note{display:block;margin-top:4px;font-size:11.5px;color:var(--muted)}
.pds-strip__foot{margin:8px 0 0;font-size:11.5px;color:var(--faint);max-width:88ch}
.pds-strip--summary{grid-template-columns:repeat(2,minmax(0,1fr))}
.pds-strip--summary .pds-strip__mod{padding:8px 12px}
.pds-strip--summary .pds-strip__lab{letter-spacing:.1em}
.pds-strip--summary .pds-strip__val{margin-top:2px}
@media(min-width:640px){.pds-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){
  .pds-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pds-strip--summary{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:640px){.pds-req__side{min-width:0;width:100%}}

/* ---------------------------------------------------- integrazioni: la riga --
   Portata dal riferimento del design system: `data/designsystem/src/components/
   account/IntegrationRow.tsx` e `pages/AccountIntegrations.tsx`. Prima questa
   pagina era una griglia di schede con tutto sempre aperto; il riferimento è un
   ELENCO di righe che si aprono, e la differenza non è estetica — con dodici
   connettori la griglia costringe a leggere dodici pannelli per trovare quello
   che chiede attenzione, mentre la riga chiusa mostra nome, metodo e stato, e si
   apre solo dove c'è da fare qualcosa.

   DUE SCOSTAMENTI DAL RIFERIMENTO, dichiarati qui perché non si scoprano dopo.

   1. NIENTE INTERRUTTORE. Il mockup ne ha uno per riga, ma è `useState` locale:
      non rappresenta un'azione, e `enabled` è solo un'altra lettura di `state`.
      Nel prodotto non esiste un «abilitato» separato dalla connessione —
      `ConnStato` ha lo stato e nient'altro — quindi un interruttore o non
      farebbe niente o scollegherebbe di nascosto, e scollegare revoca un token.
      Al suo posto NON c'e' niente, e ci sono arrivato guardando la pagina resa:
      avevo messo li' l'icona dello stato «per tenere il ritmo del layout», e il
      risultato era lo stesso glifo due volte sulla stessa riga a 1100 px di
      distanza — perche' il badge a destra porta gia' icona ED etichetta. Una
      colonna di cerchietti identici e' rumore, non informazione.
   2. NIENTE «prodotti alimentati» NÉ formati. Il riferimento li mostra; noi non
      li abbiamo nel modello. Un numero inventato è peggio di una riga in meno.
   ------------------------------------------------------------------------- */
.pds-connlist{border:1px solid var(--line);background:var(--panel)}
.pds-conn{border-bottom:1px solid var(--line)}
.pds-conn:last-child{border-bottom:0}
.pds-conn[open]{background:var(--surface2)}
/* `summary` è la riga chiusa: cliccabile per intero, senza JavaScript. */
.pds-conn__row{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;cursor:pointer;list-style:none}
.pds-conn__row::-webkit-details-marker{display:none}
.pds-conn__row:hover{background:var(--surface2)}
.pds-conn__main{min-width:0;flex:1 1 auto}
.pds-conn__hd{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:4px}
.pds-conn__nome{font-size:13.5px;font-weight:700;color:var(--ink)}
.pds-conn__met{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.pds-conn__tag{border:1px solid var(--line);padding:0 6px;font-family:var(--mono);font-size:10px;color:var(--muted)}
.pds-conn__scopo{display:block;margin-top:2px;font-size:12px;line-height:1.5;color:var(--muted)}
.pds-conn__det{display:block;margin-top:4px;font-family:var(--mono);font-size:11px;line-height:1.45;color:var(--faint);overflow-wrap:anywhere}
.pds-conn__det--crit{color:var(--crit)}
.pds-conn__side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.pds-conn__meta{font-family:var(--mono);font-size:10px;color:var(--faint)}
.pds-conn__caret{flex:0 0 auto;margin-top:1px;border:1px solid var(--line);padding:3px;color:var(--muted);display:flex}
.pds-conn[open] .pds-conn__caret svg{transform:rotate(180deg)}
.pds-conn__caret svg{transition:transform .2s}
/* Il pannello aperto è indentato oltre la colonna dell'icona, come nel
   riferimento (`pl-16`): la configurazione appartiene alla riga, e l'occhio deve
   vederlo senza leggere. */
.pds-conn__body{border-top:1px solid var(--line);padding:12px 16px 14px}
.pds-conn__grid{display:grid;gap:12px}
@media(min-width:640px){.pds-conn__grid{grid-template-columns:1fr 1fr}}
.pds-conn__azioni{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pds-conn__vuoto{padding:14px 16px;font-size:13px;color:var(--faint)}


/* ================================================= FUSIONE CSS DI PAGINA ===
   Regole nate nei rifacimenti pixel-perfect delle pagine (12/08/2026), scritte
   dagli agenti su file scratch e fuse qui da una revisione: la provenienza di
   ciascuna e' nel commento. */

/* Dettaglio azione (ActionDetail.tsx:42): colonna principale fluida +
   colonna laterale fissa da 320px; sotto i 1024px si impila. */
.pds-grid--detail{grid-template-columns:minmax(0,1fr) 320px}
@media(max-width:1023px){.pds-grid--detail{grid-template-columns:1fr}}

/* TableTools (appParts.tsx:20-39): la vista attiva e' un chip pieno
   d'inchiostro, non blu — `border-ink bg-ink text-white`. */
.pds-chips .pds-chip[aria-current="page"]{border-color:var(--ink);background:var(--ink);color:#fff;font-weight:700}

/* La riga dei chip puo' essere l'ultima del riquadro: senza questo azzeramento
   il suo filetto raddoppia il bordo del pannello. */
.pds-panel>.pds-chips:last-child{border-bottom:0}

/* productTabs.tsx:70: il riquadro «bozza pronta» porta un bordo d'inchiostro
   da 2px, non il filetto normale del pannello. */
.pds-panel--hero{border:2px solid var(--ink)}
/* ============================================================================
   CRAnotify — auth pages (login, 2FA, registrazione, reset, reset_completa).

   Regole NUOVE che completano il blocco `.pds-authx` già presente in
   app/web/static/app.css (riga ~855). Vanno ACCODATE ad app.css (dopo il
   blocco pds-authx esistente, prima delle sue media query se possibile, ma
   funzionano anche in coda al file): i template riscritti le referenziano già.
   Nessuna regola esistente viene ridefinita in modo conflittuale: sono solo
   selettori nuovi + tre affinamenti additivi (radius 0, accent checkbox,
   <b> bianco nel footer).

   Palette: la stessa del blocco pds-authx (marketing "stone"):
   ink #0A0A0A · stone-gray #6B6B6B · stone-line #D6D6D6 · stone-strong #B7B7B7
   stone-wash #F4F5F8 · blue var(--blue) · blue-soft var(--blue-bg).
   Semantici solo dai token: --crit / --amber / --green (+ *-bg).
   ========================================================================== */

/* --- affinamenti additivi al blocco esistente --------------------------- */
/* Il riferimento auth non ha angoli arrotondati (radius 0, come il sito). */
.pds-authx .inp,
.pds-authx__submit,
.pds-authx__provider,
.pds-authx__ghost{border-radius:0}
.pds-authx input[type="checkbox"]{accent-color:var(--blue)}
.pds-authx__footer b{color:#fff;font-weight:700}

/* --- errore (bordo sinistro critico, come il riferimento) ---------------- */
.pds-authx__error{border-left:4px solid var(--crit);background:var(--crit-bg);
  padding:10px 14px;margin:0 0 16px;font-size:12.5px;line-height:1.5;color:#0A0A0A}

/* --- hint sotto un campo -------------------------------------------------- */
.pds-authx__hint{margin:4px 0 0;font-size:12px;line-height:1.5;color:#6B6B6B}

/* --- riga opzioni (resta collegato · password dimenticata) --------------- */
.pds-authx__optrow{display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:12px;margin-top:16px}
.pds-authx__check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#0A0A0A}
.pds-authx__check input{width:15px;height:15px;flex:0 0 15px}
.pds-authx__link{font-size:12.5px;font-weight:700;color:var(--blue);text-decoration:none}
.pds-authx__link:hover{text-decoration:underline}

/* --- nota sotto i pulsanti SSO ------------------------------------------- */
.pds-authx__ssonote{margin:12px 0 0;font-size:12px;line-height:1.55;color:#6B6B6B}

/* --- codice 2FA (mono grande, spaziato) ----------------------------------- */
.pds-authx .inp.pds-authx__code{font-family:var(--mono);font-size:20px;letter-spacing:.3em}

/* --- riga a due estremi sotto il bordo (2FA: torna / recupero) ------------ */
.pds-authx__footrow{display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:12px;border-top:1px solid var(--line);
  margin-top:18px;padding-top:16px}
.pds-authx__ghostlink{font-size:12.5px;font-weight:700;color:#0A0A0A;text-decoration:none}
.pds-authx__ghostlink:hover{text-decoration:underline}

/* --- azioni secondarie (stato "inviato", link non valido) ----------------- */
.pds-authx__btnrow{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}
.pds-authx__ghost{display:inline-flex;align-items:center;justify-content:center;
  border:1px solid #0A0A0A;background:transparent;padding:10px 20px;cursor:pointer;
  font-family:var(--sans);font-size:12.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.04em;color:#0A0A0A;text-decoration:none;transition:background .15s}
.pds-authx__ghost:hover{background:#F4F5F8}
.pds-authx__ulink{display:inline-flex;align-items:center;padding:10px 20px;
  font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:#0A0A0A;text-decoration:underline;text-decoration-thickness:2px;
  text-underline-offset:4px}

/* --- fieldset con legenda a tutta riga (registrazione) -------------------- */
.pds-authx__fieldset{border:0;margin:24px 0 0;padding:0;min-inline-size:auto}
.pds-authx__fieldset:first-of-type{margin-top:0}
.pds-authx__legend{display:block;width:100%;border-bottom:1px solid #0A0A0A;
  padding:0 0 6px;margin:0 0 12px;font-family:var(--mono);font-size:10px;
  letter-spacing:.12em;text-transform:uppercase;color:#0A0A0A}

/* --- nota mono centrata sotto il submit ----------------------------------- */
.pds-authx__subnote{margin:10px 0 0;text-align:center;font-family:var(--mono);
  font-size:11px;color:#6B6B6B}

/* --- colonna nera: valore mono azzurrino (Quadro, support@) ---------------- */
.pds-authx__monosoft{font-family:var(--mono);font-weight:400;color:var(--blue-bg)}

/* --- colonna nera: scadenze etichetta/valore (dl del riferimento) ---------- */
.pds-authx__dl{margin:20px 0 0}
.pds-authx__dl>div{display:flex;align-items:baseline;justify-content:space-between;
  gap:12px;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:8px;margin-top:10px}
.pds-authx__dl dt{font-size:12.5px;color:rgba(255,255,255,.72)}
.pds-authx__dl dd{margin:0;font-family:var(--mono);font-size:12.5px;font-weight:700;color:#fff}

/* --- colonna nera: chiosa con quadratino "i" ------------------------------- */
.pds-authx__asideinfo{display:flex;align-items:flex-start;gap:8px;margin:16px 0 0;
  font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.55)}
.pds-authx__isq{margin-top:1px;flex:0 0 16px;height:16px;display:flex;align-items:center;
  justify-content:center;border:1px solid rgba(255,255,255,.4);font-size:9px;font-weight:700}

/* --- colonna nera: paragrafo di coda -------------------------------------- */
.pds-authx__asidefoot{margin:20px 0 0;font-size:11.5px;line-height:1.55;
  color:rgba(255,255,255,.55)}

/* --- campo password con misuratore (registrazione, nuova password) ---------
   Il misuratore è enhancement progressivo: la barra e l'occhio nascono
   `hidden` nel markup e li mostra /static/auth.js. Il livello non è mai solo
   colore: glifo + etichetta sempre (× ! · ✓). Il blu qui è interazione
   (livello "adeguata" del riferimento), non uno stato di conformità. */
.pds-pwx__wrap{position:relative}
.pds-pwx__wrap .inp{padding-right:48px}
.pds-pwx__toggle{position:absolute;right:0;top:0;height:44px;width:44px;display:flex;
  align-items:center;justify-content:center;border:0;border-left:1px solid var(--line);
  background:transparent;color:#0A0A0A;cursor:pointer;transition:background .15s}
.pds-pwx__toggle:hover{background:#F4F5F8}
.pds-pwx__meter{display:flex;align-items:center;gap:8px;margin-top:8px}
.pds-pwx__bar{display:flex;height:6px;flex:1;gap:4px}
.pds-pwx__bar span{flex:1;background:#D6D6D6;transition:background .15s}
.pds-pwx__label{flex:0 0 96px;text-align:right;font-family:var(--mono);font-size:10.5px;
  font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#B7B7B7}
.pds-pwx[data-level="0"] .pds-pwx__bar span.on{background:var(--crit)}
.pds-pwx[data-level="1"] .pds-pwx__bar span.on{background:var(--amber)}
.pds-pwx[data-level="2"] .pds-pwx__bar span.on{background:var(--blue)}
.pds-pwx[data-level="3"] .pds-pwx__bar span.on{background:var(--green)}
.pds-pwx[data-level="0"] .pds-pwx__label{color:var(--crit)}
.pds-pwx[data-level="1"] .pds-pwx__label{color:var(--amber)}
.pds-pwx[data-level="2"] .pds-pwx__label{color:var(--blue)}
.pds-pwx[data-level="3"] .pds-pwx__label{color:var(--green)}
.pds-pwx__warn{border-left:2px solid var(--crit);background:var(--crit-bg);
  padding:6px 10px;margin:6px 0 0;font-size:12px;line-height:1.45;color:#0A0A0A}
.pds-pwx__reqs{display:grid;gap:4px 16px;margin:8px 0 0;padding:0;list-style:none}
@media (min-width:640px){.pds-pwx__reqs{grid-template-columns:1fr 1fr}}
.pds-pwx__reqs li{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;
  line-height:1.45;color:#6B6B6B}
.pds-pwx__box{margin-top:1px;flex:0 0 13px;height:13px;display:flex;align-items:center;
  justify-content:center;border:1px solid #B7B7B7;font-size:9px;font-weight:700;color:transparent}
.pds-pwx__reqs li.met{color:#0A0A0A}
.pds-pwx__reqs li.met .pds-pwx__box{border-color:var(--green);background:var(--green);color:#fff}
.pds-pwx__note{margin:6px 0 0;font-size:11.5px;line-height:1.5;color:#6B6B6B}

/* --- mobile ---------------------------------------------------------------- */
@media (max-width:960px){
  .pds-authx__optrow,.pds-authx__footrow{gap:10px}
}


/* Flusso del case (CaseFlow.tsx), fusione dal rifacimento 12/08/2026. */
/* Barra delle azioni di pagina: sticky in fondo, come l'actionBar del guscio
   del riferimento; la nota a destra e' mono e attenuata. */
.cf-actionbar{position:sticky;bottom:0;z-index:20;margin:16px -32px -20px;
  padding:10px 32px;border-top:1px solid var(--line-strong);background:var(--panel)}
.cf-actionbar .cf-actionnote{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--faint)}
/* La ricevuta del deposito: l'input file porta la veste tratteggiata del
   riferimento SENZA toccare il markup — l'input resta byte-identico. */
.pds-file[name="ricevuta"]{border-style:dashed;background:var(--bg);padding:16px 14px}
/* Meta del verdetto sopra un filetto (Verdict di flowParts.tsx). */
.pds-verdict .pds-verdict__norm{border-top:1px solid var(--line);padding-top:8px}

/* ============================================================== P10 layer --
   Overhaul UI/UX: SOLO aggiunte. La palette resta quella del PDS (fonte di
   verità dichiarata in testa al file): la separazione semantica chiesta
   (interaction / critical / warning / success / neutral) esiste già. */

/* --- breadcrumbs (header) --- */
.crumbs{display:flex;align-items:center;gap:6px;min-width:0;font-size:12.5px;color:var(--muted)}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--ink);text-decoration:underline}
.crumbs .sep{color:var(--faint2)}
.crumbs .leaf{font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* --- toast (basso a destra; SOLO additivo: l'alert resta nel DOM) --- */
.pds-toasts{position:fixed;right:16px;bottom:16px;z-index:120;display:flex;flex-direction:column;gap:8px;max-width:380px}
.pds-toast{display:flex;gap:10px;align-items:flex-start;background:var(--panel);border:1px solid var(--line-strong);
  border-left:3px solid var(--blue);box-shadow:var(--el2);padding:10px 14px;font-size:12.5px;
  animation:toastIn .18s ease}
.pds-toast--success{border-left-color:var(--green)}
.pds-toast--error{border-left-color:var(--red)}
.pds-toast__title{font-weight:700;display:block}
.pds-toast__body{color:var(--muted);display:block;margin-top:2px}
.pds-toast.is-leaving{opacity:0;transform:translateY(6px);transition:all .25s ease}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* --- tooltip normativo ("?" sui termini di legge) --- */
.pds-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;
  border:1px solid var(--line-strong);border-radius:50%;font-size:10px;font-weight:700;color:var(--muted);
  cursor:help;vertical-align:middle;margin-left:4px;background:var(--surface2)}
.pds-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);
  width:max-content;max-width:280px;background:var(--nav);color:#fff;font-size:11.5px;font-weight:400;line-height:1.5;
  padding:8px 10px;border-radius:var(--r);box-shadow:var(--el2);opacity:0;pointer-events:none;transition:opacity .12s ease;
  white-space:normal;z-index:80;text-transform:none;letter-spacing:0}
.pds-tip:hover::after,.pds-tip:focus-visible::after{opacity:1}

/* --- sticky timer bar (wizard del caso) --- */
.timerbar{position:sticky;top:53px;z-index:25;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line-strong);border-left:3px solid var(--crit);
  padding:8px 16px;margin-bottom:16px;box-shadow:var(--el1)}
.timerbar--calm{border-left-color:var(--green)}
.timerbar__label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.timerbar__clock{font-family:var(--mono);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}

/* --- sticky bottom action bar (wizard) --- */
.wizbar{position:sticky;bottom:0;z-index:25;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line-strong);box-shadow:0 -4px 16px rgba(16,19,23,.08);
  padding:10px 16px;margin-top:20px}
.wizbar__spacer{margin-left:auto}

/* --- nav: sottosezioni richiudibili (Settings & co.) --- */
.navsub{border-bottom:1px solid rgba(255,255,255,.06)}
.navsub>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:7px 16px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.35)}
.navsub>summary::-webkit-details-marker{display:none}
.navsub>summary::after{content:"▸";margin-left:auto;transition:transform .12s ease;font-size:10px}
.navsub[open]>summary::after{transform:rotate(90deg)}
.navsub>summary:hover{color:#fff}
.nav.is-collapsed .navsub>summary{justify-content:center}
.nav.is-collapsed .navsub>summary::after{display:none}

/* --- Ctrl+K: filtro dei collegamenti di navigazione --- */
.cmdk{position:fixed;inset:0;z-index:110;display:none;align-items:flex-start;justify-content:center;
  background:rgba(16,19,23,.45);padding-top:12vh}
.cmdk.is-open{display:flex}
.cmdk__panel{width:520px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--el2)}
.cmdk__panel input{width:100%;border:0;border-bottom:1px solid var(--line);padding:12px 14px;font-size:14px;background:transparent;color:var(--ink)}
.cmdk__panel input:focus{outline:none}
.cmdk__list{max-height:50vh;overflow:auto}
.cmdk__list a{display:block;padding:9px 14px;font-size:13px;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-soft)}
.cmdk__list a:hover,.cmdk__list a.is-hot{background:var(--blue-bg)}
.cmdk__list a .hint{float:right;font-family:var(--mono);font-size:10.5px;color:var(--faint)}

/* --- righe urgenti nella lista casi --- */
.riga-urgente td:first-child{box-shadow:inset 3px 0 0 var(--crit)}
.riga-attesa td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
@keyframes pulseCrit{0%,100%{opacity:1}50%{opacity:.55}}
.pds-status--critical.is-live{animation:pulseCrit 1.6s ease-in-out infinite}

/* --- responsive: sotto i 900px la sidebar diventa off-canvas --- */
@media(max-width:900px){
  .header .pds-navtoggle{display:inline-flex}
  .content{padding:14px}
  .header{padding:10px 14px}
  .gsearch{min-width:0}
}

/* --- P11: badge ruolo, dropdown account, sub-nav impostazioni, tabelle, SLA --- */
.ruolo-badge{display:inline-block;margin-left:6px;padding:1px 6px;font-family:var(--mono);font-size:9px;
  letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.14);color:#fff;border-radius:2px;vertical-align:1px}
.account{position:relative}
.account>summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 6px;border-radius:var(--r)}
.account>summary::-webkit-details-marker{display:none}
.account>summary:hover{background:var(--surface2)}
.account__avatar{width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;
  font-size:12px;font-weight:700;text-transform:uppercase;flex-shrink:0}
.account__nome{font-size:12.5px;font-weight:600;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.account__menu{position:absolute;right:0;top:calc(100% + 6px);z-index:70;width:280px;background:var(--panel);
  border:1px solid var(--line-strong);box-shadow:var(--el2)}
.account__testa{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface2)}
.account__riga{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;
  border-bottom:1px solid var(--line-soft);font-size:12.5px}
.account__voce{display:block;padding:9px 14px;font-size:12.5px;font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-soft)}
.account__voce:hover{background:var(--surface2);color:var(--ink)}
.account__voce--esci{color:var(--red);border-bottom:0}

.imp-layout{display:grid;grid-template-columns:236px minmax(0,1fr);gap:20px;align-items:start}
.imp-nav{position:sticky;top:0;background:var(--panel);border:1px solid var(--line);padding:8px 0}
.imp-nav__title{padding:7px 14px 11px;font:700 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--line)}
.imp-nav__group{padding:9px 0 5px}
.imp-nav__group+.imp-nav__group{border-top:1px solid var(--line-soft)}
.imp-nav__label{padding:0 14px 5px;font:700 9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.imp-nav a{display:block;padding:7px 14px;font-size:12.5px;color:var(--muted);text-decoration:none;border-left:2px solid transparent}
.imp-nav a:hover{color:var(--ink);background:var(--surface2)}
.imp-nav a[aria-current="page"]{color:var(--ink);font-weight:700;background:var(--blue-bg);border-left-color:var(--blue)}
@media(max-width:1000px){
  .imp-layout{grid-template-columns:1fr}
  .imp-nav{position:static;display:flex;align-items:center;overflow-x:auto;padding:0;scrollbar-width:thin}
  .imp-nav__title{position:sticky;left:0;align-self:stretch;display:flex;align-items:center;z-index:1;background:var(--panel);border:0;border-right:1px solid var(--line);white-space:nowrap}
  .imp-nav__group{display:flex;align-items:center;padding:0;border:0!important}
  .imp-nav__label{display:none}
  .imp-nav a{white-space:nowrap;border:0;border-bottom:2px solid transparent;padding:11px 12px}
  .imp-nav a[aria-current="page"]{border-bottom-color:var(--blue)}
}

/* barra controlli tabella universale (iniettata dal JS) */
.tbctl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--surface2)}
.tbctl__search{display:flex;flex:1;min-width:180px;max-width:360px}
.tbctl input[type="search"]{width:100%;height:28px;border:1px solid var(--line-strong);border-radius:var(--r);padding:0 8px;font-size:12px;background:var(--panel);color:var(--ink)}
.tbctl select{height:28px;border:1px solid var(--line-strong);border-radius:var(--r);font-size:12px;background:var(--panel);color:var(--ink)}
.tbctl__size{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}
.tbctl .conta{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--faint);white-space:nowrap}
.tbctl .pillole{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 6px}
.tbctl .pillola{border:1px solid var(--line-strong);background:var(--panel);border-radius:999px;padding:4px 14px;font-size:11.5px;cursor:pointer;color:var(--muted)}
.tbctl .pillola:hover{background:var(--surface2);color:var(--ink)}
.tbctl .pillola.is-on{background:var(--blue);border-color:var(--blue);color:#fff}
.tbctl__pager{display:inline-flex;align-items:center;border:1px solid var(--line-strong);background:var(--panel)}
.tbctl__pager button{width:28px;height:26px;border:0;background:transparent;color:var(--ink);cursor:pointer;font-size:16px;line-height:1}
.tbctl__pager button:hover:not(:disabled){background:var(--blue-bg);color:var(--blue)}
.tbctl__pager button:disabled{color:var(--faint2);cursor:not-allowed}
.tbctl__page{min-width:46px;border-right:1px solid var(--line);border-left:1px solid var(--line);font:10.5px var(--mono);text-align:center;color:var(--muted)}
.tbctl.has-one-page .tbctl__pager{display:none}
th.ordinabile{padding:0;user-select:none}
.tb-sort{display:flex!important;width:100%;justify-content:flex-start;padding:6px 16px!important}
.tb-sort::after{content:" ↕";margin-left:4px;color:var(--faint2);font-size:10px}
th.ordinabile.asc .tb-sort::after{content:" ↑";color:var(--blue)}
th.ordinabile.desc .tb-sort::after{content:" ↓";color:var(--blue)}
@media(max-width:640px){
  .tbctl__search{flex-basis:100%;max-width:none}
  .tbctl .pillole{order:3;display:flex;gap:6px;overflow-x:auto;flex-basis:100%;padding-bottom:2px}
  .tbctl .conta{margin-left:0}
}

/* pagine operative: gerarchia editoriale e densità controllata */
.pds-eyebrow{margin-bottom:5px;font:600 10px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--faint)}
.pds-kpi__unit{font-size:13px;color:var(--faint);font-weight:500}
.dashboard-kpis{margin-bottom:16px}
.ai-command{margin:0 0 18px}.ai-command__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line)}.ai-command__metrics>div{padding:14px 16px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:3px}.ai-command__metrics>div:last-child{border-right:0}.ai-command__metrics strong{font:700 20px var(--mono)}.ai-command__metrics span{font-size:10.5px;color:var(--muted)}
.dashboard-grid{align-items:start;margin-bottom:16px}
.dashboard-side{display:grid;gap:16px}
.table-primary{display:block;font-weight:650;color:var(--ink);text-decoration:none}
a.table-primary:hover{color:var(--blue);text-decoration:underline}
.table-secondary{display:block;margin-top:3px;font-size:11.5px;color:var(--muted)}
.table-nowrap{white-space:nowrap}
.table-muted,.table-empty{color:var(--faint)}
.table-empty{text-align:center;padding:24px!important}
.pds-empty--compact{border:0;padding:28px 20px}
.quick-links{display:grid}
.quick-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:600;color:var(--ink);text-decoration:none}
.quick-links a:last-child{border-bottom:0}
.quick-links a:hover{background:var(--surface2);color:var(--blue)}
.panel-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none;padding:12px 16px}
.panel-summary:hover{background:var(--surface2)}
.panel-summary::-webkit-details-marker{display:none}
.panel-summary>span:first-child{display:grid;gap:3px}
.panel-summary strong{font-size:13.5px;color:var(--ink)}
.panel-summary small{font-size:11.5px;color:var(--muted)}
.audit-preview[open]>.panel-summary,.archived-cases[open]>.panel-summary,.create-disclosure[open]>.panel-summary{border-bottom:1px solid var(--line)}
.audit-preview[open]>.panel-summary>span:last-child,.archived-cases[open]>.panel-summary>span:last-child,.create-disclosure[open]>.panel-summary>span:last-child{transform:rotate(180deg)}
.archived-cases,.create-disclosure{margin-top:16px}
.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.billing-tool{margin-top:16px}
.billing-tool[open]>.panel-summary{border-bottom:1px solid var(--line)}
.billing-tool[open]>.panel-summary>span:last-child{transform:rotate(180deg)}
.billing-date{font-size:19px!important}
.billing-next{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.gap-date{font-size:15px!important;line-height:1.25!important}
.gap-select{min-width:132px}
.gap-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.audit-filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface2)}
.audit-filterbar input{width:100%;height:30px;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);padding:0 9px}
.audit-filterbar .pds-chips{border:0;padding:0;background:transparent}
.audit-filterbar .pds-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--panel)}
.audit-controls{display:grid}
.audit-control{display:grid;grid-template-columns:46px minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}
.audit-control:last-child{border-bottom:0}
.audit-control[hidden]{display:none}
.audit-control__code{font-size:11px;color:var(--faint)}
.audit-control__copy h3{margin:0;font-size:13px;line-height:1.4;color:var(--ink)}
.audit-control__copy p{margin:3px 0 0;font-size:11.5px;color:var(--muted)}
.audit-integrity .pds-panel__body{display:flex;align-items:flex-start;gap:18px}
.audit-integrity__icon{display:grid;place-items:center;width:44px;height:44px;flex:0 0 auto;border:1px solid var(--green-line);background:var(--green-bg);color:var(--green);font:700 22px var(--mono)}
.audit-integrity__copy{min-width:0;flex:1}
.audit-integrity__copy h2{margin:0;font-size:16px;color:var(--ink)}
.audit-integrity__copy>p{margin:6px 0 14px;max-width:72ch;font-size:12.5px;line-height:1.55;color:var(--muted)}
.audit-downloads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}
.audit-download-card{display:flex;flex-direction:column}
.audit-download-card .pds-panel__body{flex:1}
.audit-download-card h2{margin:12px 0 0;font-size:14px;color:var(--ink)}
.audit-download-card p{margin:6px 0 0;font-size:12.5px;line-height:1.55;color:var(--muted)}
.file-badge{display:inline-flex;border:1px solid var(--line-strong);background:var(--surface2);padding:3px 7px;font:700 10px var(--mono);letter-spacing:.07em;color:var(--muted)}
@media(max-width:900px){.audit-downloads{grid-template-columns:1fr}.audit-control{grid-template-columns:38px minmax(0,1fr) auto}.audit-control__choice{grid-column:2/-1}}
@media(max-width:640px){.audit-control{grid-template-columns:1fr}.audit-control__code{display:none}.audit-control__choice{grid-column:auto}.audit-integrity .pds-panel__body{display:block}.audit-integrity__icon{margin-bottom:12px}}

/* ---------------------------------------------------- schede entità / flussi */
.entity-page{display:flex;flex-direction:column;gap:18px}
.entity-page>.pds-panel,.entity-page>.pds-pagehead{margin:0}
.entity-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);background:var(--panel)}
.entity-summary>div{min-width:0;padding:14px 16px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:5px}
.entity-summary>div:last-child{border-right:0}.entity-summary span,.entity-definition dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint)}
.entity-summary strong{font-size:13px;overflow-wrap:anywhere}.entity-actions-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line)}
.ai-product__body{display:grid;grid-template-columns:minmax(300px,.7fr) minmax(0,1.3fr);border-top:1px solid var(--line)}.ai-product__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-right:1px solid var(--line)}.ai-product__metrics>div{padding:15px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.ai-product__metrics>div:nth-child(2n){border-right:0}.ai-product__metrics>div:nth-last-child(-n+2){border-bottom:0}.ai-product__metrics strong{font:700 18px var(--mono)}.ai-product__metrics span{font-size:10.5px;color:var(--muted)}.ai-action-list{display:flex;flex-direction:column}.ai-action-list>a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);color:var(--ink)}.ai-action-list>a:last-child{border-bottom:0}.ai-action-list>a:hover{background:var(--surface2);text-decoration:none}.ai-action-list>a>span:first-child{display:flex;flex-direction:column;gap:3px}.ai-action-list strong{font-size:11.5px}.ai-action-list small{font-size:10.5px;color:var(--muted)}
.entity-actions-grid>a{min-height:90px;padding:16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:5px;color:var(--ink)}
.entity-actions-grid>a:nth-child(4n){border-right:0}.entity-actions-grid>a:hover{background:var(--surface2);text-decoration:none}.entity-actions-grid strong{font-size:12.5px}.entity-actions-grid span{font-size:11.5px;line-height:1.45;color:var(--muted)}
.entity-columns{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:18px;align-items:start}.entity-columns>.pds-panel{margin:0}.entity-list{display:flex;flex-direction:column;padding:0!important}.entity-list>a,.entity-list>div{display:flex;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line);color:var(--ink)}.entity-list>a:last-child,.entity-list>div:last-child{border-bottom:0}.entity-list>a:hover{background:var(--surface2);text-decoration:none}.entity-list span{display:flex;flex-direction:column;gap:3px}.entity-list strong{font-size:12px}.entity-list small{font-size:10.5px;line-height:1.45;color:var(--muted)}
.entity-definition{margin:0;display:grid;gap:0}.entity-definition>div{display:grid;grid-template-columns:140px 1fr;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}.entity-definition>div:last-child{border-bottom:0}.entity-definition dd{margin:0;font-size:12.5px;line-height:1.5}.wrap-anywhere{overflow-wrap:anywhere;word-break:break-word}
.assessment-results{padding:0!important}.assessment-results>div{display:flex;justify-content:space-between;gap:16px;padding:10px 16px;border-bottom:1px solid var(--line);font-size:12px}.assessment-results>div:last-child{border-bottom:0}.assessment-results strong{font-size:10.5px;color:var(--muted);white-space:nowrap}.assessment-results .result-ok{color:var(--green)}.assessment-results .result-no{color:var(--red)}

/* ------------------------------------------------------- catalogo integrazioni */
.integrations-page{display:flex;flex-direction:column;gap:22px}.integrations-page>.pds-pagehead,.integrations-page>.pds-panel{margin:0}.integration-group{display:flex;flex-direction:column;gap:10px}.integration-group__head h2{margin:0;font-size:17px;letter-spacing:-.015em}.integration-group__head p{margin:5px 0 0;max-width:82ch;font-size:12.5px;line-height:1.5;color:var(--muted)}.integration-group>.pds-panel{margin:0}.integrations-table th:nth-child(1){width:19%}.integrations-table th:nth-child(2){width:37%}.integrations-table th:nth-child(3){width:28%}.integrations-table td{vertical-align:top}.integrations-table td:nth-child(2),.integrations-table td:nth-child(3){font-size:12px;line-height:1.5}.integration-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.connector-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.connector-preview-grid>div{border:1px solid var(--line);background:var(--surface2);padding:14px;display:flex;flex-direction:column;align-items:flex-start;gap:9px}.connector-preview-grid strong{font-size:12.5px}.connector-preview-grid code{font-size:10.5px;line-height:1.45;overflow-wrap:anywhere;color:var(--muted)}

/* ----------------------------------------------------------- settings e form */
.settings-stack{display:flex;flex-direction:column;gap:18px}.settings-stack>.pds-panel{margin:0}.settings-toggle{display:flex;align-items:flex-start;gap:10px;padding:13px;border:1px solid var(--line);background:var(--surface2);margin-bottom:16px}.settings-toggle>input{margin-top:3px}.settings-toggle>span{display:flex;flex-direction:column;gap:3px}.settings-toggle strong{font-size:12.5px}.settings-toggle small{font:10.5px var(--mono);color:var(--muted);overflow-wrap:anywhere}.sticky-form-actions{position:sticky;bottom:10px;z-index:12;display:flex;justify-content:flex-end;align-items:center;gap:16px;padding:11px 12px;border:1px solid var(--line-strong);background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:var(--el1);backdrop-filter:blur(8px)}.sticky-form-actions span{margin-right:auto;font-size:11.5px;color:var(--muted)}.form-actions__help{margin-right:auto}.action-form-card .form-actions{align-items:center}.inline-action-form{display:grid;grid-template-columns:minmax(180px,1.4fr) repeat(3,minmax(120px,.7fr)) auto;gap:12px;align-items:end}.inline-action-form>.pds-btn{margin-bottom:1px}.table-actions{display:flex;gap:6px;align-items:center}.confirm-check{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-size:12.5px;line-height:1.5}.confirm-check input{margin-top:3px}
.payment-methods{border:0;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.payment-methods>legend{margin-bottom:8px}.payment-methods>label{position:relative;display:flex;gap:10px;align-items:flex-start;padding:14px;border:1px solid var(--line-strong);background:var(--surface2);cursor:pointer}.payment-methods>label:has(input:checked){border:2px solid var(--blue);padding:13px;background:var(--blue-bg)}.payment-methods input{margin-top:3px}.payment-methods label>span{display:flex;flex-direction:column;gap:4px}.payment-methods b{font-size:12.5px}.payment-methods small{font-size:10.5px;line-height:1.4;color:var(--muted)}.billing-payment__fields{margin-top:0}

/* --------------------------------------------------- routing e notifiche */
.routing-diagram,.cascade-diagram{display:flex;flex-direction:column;gap:0;max-width:760px;margin:0 auto}.routing-step,.cascade-node{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid var(--line);background:var(--panel)}.routing-step:not(:last-child),.cascade-node:not(:last-child){margin-bottom:22px}.routing-step:not(:last-child)::after,.cascade-node:not(:last-child)::after{content:"↓";position:absolute;left:25px;bottom:-23px;color:var(--faint);font:700 15px var(--mono)}.routing-step__priority,.cascade-node__priority{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line-strong);background:var(--surface2);font:700 11px var(--mono)}.routing-step__body,.cascade-node>div{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:7px 10px}.routing-step__body strong,.cascade-node strong{font-size:12.5px}.routing-step__body small,.cascade-node small{font-size:10.5px;color:var(--muted)}.cascade-node>div{flex-direction:column;align-items:flex-start;gap:3px}.cascade-node>div>span{display:inline-flex;margin-top:4px;padding:2px 6px;background:var(--blue-bg);color:var(--blue);font-size:10.5px}.icon-action{width:28px;height:28px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}.icon-action:hover{border-color:var(--red);color:var(--red)}.routing-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:30px;border:1px dashed var(--line-strong);color:var(--muted)}.routing-empty strong{font-size:13px;color:var(--ink)}.routing-empty span{max-width:58ch;font-size:11.5px;line-height:1.5}.routing-empty .pds-btn{margin-top:4px}
.cascade-events{max-width:760px;margin:0 auto;position:relative}.cascade-event{position:relative;display:grid;grid-template-columns:24px 1fr;gap:12px;padding:0 0 24px}.cascade-event:not(:last-child)::before{content:"";position:absolute;left:7px;top:15px;bottom:0;border-left:1px solid var(--line-strong)}.cascade-event__dot{width:15px;height:15px;margin-top:2px;border:3px solid var(--panel);outline:1px solid var(--line-strong);border-radius:50%;background:var(--blue)}.cascade-event.is-confirmed .cascade-event__dot{background:var(--amber)}.cascade-event.is-patched .cascade-event__dot{background:var(--green)}.cascade-event>div:last-child{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 14px}.cascade-event strong{font-size:12.5px}.cascade-event span{font-size:11.5px;color:var(--muted)}.cascade-event small{grid-column:1/-1;font:10.5px var(--mono);color:var(--faint)}

@media(max-width:1000px){.entity-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.entity-actions-grid>a:nth-child(4n){border-right:1px solid var(--line)}.entity-actions-grid>a:nth-child(2n){border-right:0}.connector-preview-grid{grid-template-columns:1fr}.integration-two{grid-template-columns:1fr}.inline-action-form{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-action-form>.pds-btn{grid-column:1/-1;justify-self:end}}
@media(max-width:760px){.entity-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.entity-summary>div:nth-child(2){border-right:0}.entity-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.entity-columns{grid-template-columns:1fr}.integrations-table{min-width:760px}.sticky-form-actions{bottom:6px}.sticky-form-actions span{display:none}.inline-action-form{grid-template-columns:1fr}.routing-step,.cascade-node{grid-template-columns:44px minmax(0,1fr) auto}.cascade-event>div:last-child{grid-template-columns:1fr}.entity-definition>div{grid-template-columns:1fr;gap:4px}.ai-command__metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-command__metrics>div:nth-child(2){border-right:0}.ai-command__metrics>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.ai-product__body{grid-template-columns:1fr}.ai-product__metrics{border-right:0;border-bottom:1px solid var(--line)}.payment-methods{grid-template-columns:1fr}}
@media(max-width:480px){.entity-actions-grid{grid-template-columns:1fr}.entity-actions-grid>a{border-right:0!important}.entity-summary{grid-template-columns:1fr}.entity-summary>div{border-right:0;border-bottom:1px solid var(--line)}.entity-summary>div:last-child{border-bottom:0}.sticky-form-actions{position:static}.sticky-form-actions .pds-btn{width:100%}}
.vendor-tablewrap{overflow:visible}
.vendors-table td:last-child{width:1%;white-space:nowrap}
.vendor-actions>summary{display:inline-flex;align-items:center;gap:7px}
dialog.pds-dialog{margin:auto;padding:0;color:var(--ink);max-height:min(760px,calc(100vh - 32px));overflow:hidden}
dialog.pds-dialog::backdrop{background:rgba(8,12,18,.52)}
.vendor-dialog>form{display:flex;flex-direction:column;max-height:min(760px,calc(100vh - 32px))}
.vendor-dialog .pds-dialog__body{overflow-y:auto}
.vendor-form-grid{margin-top:14px}
.assessment-list{display:grid;gap:0;padding-top:6px;padding-bottom:6px}
.assessment-item{display:grid;grid-template-columns:minmax(0,1fr) 88px;align-items:center;gap:16px;padding:9px 2px;border-bottom:1px solid var(--line);font-size:12.5px;line-height:1.45}
.assessment-item:last-child{border-bottom:0}
.assessment-item select{height:30px;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink)}
@media(max-width:900px){.vendor-tablewrap{overflow-x:auto;overflow-y:visible}.vendors-table th:nth-child(5),.vendors-table td:nth-child(5){display:none}}
@media(max-width:640px){.vendors-table th:nth-child(2),.vendors-table td:nth-child(2){display:none}.assessment-item{grid-template-columns:1fr}}
@media(max-width:720px){
  .dashboard-grid .pds-table th:nth-child(2),.dashboard-grid .pds-table td:nth-child(2){display:none}
  .incidents-table th:nth-child(5),.incidents-table td:nth-child(5){display:none}
  .panel-summary{align-items:flex-start}
}

/* progress bar SLA (caso) */
.sla-track{position:relative;width:120px;height:6px;background:var(--neutral-bg);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.sla-fill{position:absolute;inset:0 auto 0 0;width:0%;background:var(--green);transition:width .5s ease}
.sla-fill.warn{background:var(--amber)}
.sla-fill.crit{background:var(--crit)}

/* gerarchia prodotti */
tr.prod-figlio td:first-child{padding-left:34px;position:relative}
tr.prod-figlio td:first-child::before{content:"└";position:absolute;left:16px;color:var(--faint2)}
.prod-caret{border:1px solid var(--line-strong);background:var(--panel);cursor:pointer;font-size:10px;
  width:20px;height:20px;border-radius:var(--r);margin-right:6px;vertical-align:middle}
.product-tablewrap{overflow:visible}
.products-table{table-layout:auto}
.products-table td:first-child{min-width:210px}
.products-table td:last-child{width:1%;white-space:nowrap}
.product-actions>summary{display:inline-flex;align-items:center;gap:7px}
.product-actions .pds-menu__panel{min-width:250px;white-space:normal}
.product-sbom-form{padding:7px 10px;border-bottom:1px solid var(--line)}
.product-sbom-form label,.import-file{display:grid;gap:5px;font-size:11.5px;color:var(--muted)}
.product-sbom-form input,.import-file input{max-width:220px;font-size:11px;color:var(--ink)}
.product-sbom-form button{margin-top:5px!important;padding:6px 0!important;color:var(--blue)!important;font-weight:650!important}
.pds-menu__panel .menu-danger{color:var(--red)}
.import-menu{display:inline-block}
.import-menu__panel{min-width:280px;padding:8px}
.import-menu__panel form{display:grid;gap:10px;padding:9px 10px 5px}
@media(max-width:900px){
  .product-tablewrap{overflow-x:auto;overflow-y:visible}
  .products-table th:nth-child(3),.products-table td:nth-child(3){display:none}
}
@media(max-width:640px){
  .products-table th:nth-child(2),.products-table td:nth-child(2){display:none}
}

/* --- P13: auth (SSO demo, checkbox, divisore) --- */
.pds-ssobtn{display:flex;align-items:center;justify-content:center;gap:8px;position:relative}
.pds-ssobtn__demo{position:absolute;right:10px;font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint);border:1px solid var(--line);border-radius:999px;padding:1px 6px}
.pds-auth__or{display:flex;align-items:center;gap:10px;margin:14px 0 4px;color:var(--faint);font-size:11.5px}
.pds-auth__or::before,.pds-auth__or::after{content:"";flex:1;height:1px;background:var(--line)}
.pds-check{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.5;color:var(--muted);cursor:pointer}
.pds-check input{margin-top:2px;flex-shrink:0}

/* --- P13: SLA bar del caso (non-sticky, due timer distinti e leggibili) --- */
.slabar{border-left:3px solid var(--crit);padding:0;margin-bottom:16px}
.slabar--calm{border-left-color:var(--green)}
.slabar__top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:12px 16px;border-bottom:1px solid var(--line)}
.slabar__id{display:flex;flex-direction:column;gap:1px;min-width:0}
.slabar__case{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.slabar__title{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60ch}
.slabar__tags{display:flex;gap:6px;flex-wrap:wrap}
.slabar__timers{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;padding:14px 16px}
.slabar__timer{display:flex;flex-direction:column;gap:8px}
.slabar__lbl{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--faint)}
.slabar__lbl .timerbar__clock{margin-left:auto;font-size:14px}
.sla-track--wide{width:100%;height:8px}

/* --- P13: assistente CRA (chatbot dimostrativo, in basso a sinistra) --- */
.crabot{position:fixed;right:16px;bottom:16px;z-index:115}
.crabot__fab{width:52px;height:52px;border-radius:50%;border:0;background:var(--blue);color:#fff;cursor:pointer;
  box-shadow:var(--el2);display:grid;place-items:center}
.crabot__fab:hover{background:var(--blue-ink)}
.crabot__panel{position:absolute;right:0;bottom:62px;width:340px;max-width:calc(100vw - 32px);height:440px;max-height:70vh;
  background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--el2);display:flex;flex-direction:column}
.crabot__panel[hidden]{display:none}  /* l'attributo hidden vince sul display:flex: senza, il pannello non si chiude */
.crabot__head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface2)}
.crabot__head span{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.crabot__x{border:0;background:transparent;cursor:pointer;font-size:14px;color:var(--muted)}
.crabot__log{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
.crabot__msg{max-width:85%;padding:8px 11px;font-size:12.5px;line-height:1.5;border-radius:10px}
.crabot__msg--bot{align-self:flex-start;background:var(--surface2);border:1px solid var(--line)}
.crabot__msg--me{align-self:flex-end;background:var(--blue);color:#fff}
.crabot__form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}
.crabot__form input{flex:1;border:1px solid var(--line-strong);border-radius:var(--r);padding:0 10px;height:32px;font-size:12.5px;background:var(--panel);color:var(--ink)}

/* --- P13: diagramma di escalation della cascata --- */
.esc-flow{display:flex;flex-direction:column;align-items:center;gap:0;padding:8px 0}
.esc-tier{width:100%;max-width:640px;border:1px solid var(--line-strong);background:var(--surface2);padding:12px 14px}
.esc-tier__badge{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  background:var(--blue);color:#fff;border-radius:999px;padding:2px 10px;margin-bottom:10px}
.esc-tier__nodes{display:flex;gap:10px;flex-wrap:wrap}
.esc-node{flex:1;min-width:200px;border:1px solid var(--line-strong);background:var(--panel);border-left:3px solid var(--neutral);padding:9px 11px}
.esc-node--confirmed{border-left-color:var(--info)}
.esc-node--patched{border-left-color:var(--green)}
.esc-node--attesa{border-left-color:var(--amber)}
.esc-node__name{font-weight:700;font-size:13px}
.esc-node__mail{font-size:11px;color:var(--muted)}
.esc-node__state{font-size:11.5px;margin-top:4px;color:var(--muted)}
.esc-tier__peer{margin-top:8px;font-size:11px;color:var(--warn);font-style:italic}
.esc-arrow{display:flex;flex-direction:column;align-items:center;height:44px;justify-content:center}
.esc-arrow__line{width:2px;height:20px;background:var(--line-strong)}
.esc-arrow__lbl{font-family:var(--mono);font-size:10px;color:var(--faint);white-space:nowrap}

/* --- P14: quota Managed Products --- */
.quota-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--surface2);
  border:1px solid var(--line);border-left:3px solid var(--blue);padding:10px 14px;margin-bottom:16px;font-size:12.5px}
.quota-bar--full{border-left-color:var(--amber);background:var(--amber-bg)}
.quota-bar__track{flex:1;min-width:120px;max-width:260px;height:8px;background:var(--neutral-bg);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.quota-bar__track span{display:block;height:100%;background:var(--blue)}
.quota-bar--full .quota-bar__track span{background:var(--amber)}
.quota-price{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line-strong);
  background:var(--surface2);padding:12px 14px;margin-top:8px}
.quota-price span{font-family:var(--mono);font-size:13px}

/* P14 — simulatore listino + conferma slot in Fatturazione */
.billing-addslot{border-left:3px solid var(--amber)}
.addslot-card{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  border:1px solid var(--line-strong);border-radius:12px;padding:14px 16px;background:var(--surface2)}
.addslot-card__price{display:flex;flex-direction:column;gap:2px}
.addslot-card__price b{font-size:15px}
.addslot-card__price span{font-family:var(--mono);font-size:13px;color:var(--muted)}
.calc-controls{display:flex;gap:28px;align-items:flex-end;flex-wrap:wrap}
.calc-controls .pds-field{flex:1;min-width:240px}
.calc-controls input[type=range]{width:100%;margin-top:8px}
.calc-out{display:flex;gap:28px}
.calc-out__v{font-size:22px;font-weight:700;font-family:var(--mono)}
.calc-breakdown td,.calc-breakdown th{font-size:13px}

/* P14 — cruscotto dinamico per ruolo economico + filtro RBAC */
.dashboard-role{margin-bottom:18px}
.role-card{display:flex;flex-direction:column}
.role-card--legal{border-left:3px solid var(--blue)}
.role-card--man{border-left:3px solid var(--green,#15803d)}
.role-card--imp{border-left:3px solid var(--amber)}
.role-card--dist{border-left:3px solid #7c3aed}
.role-metric{display:flex;flex-direction:column;gap:2px}
.role-metric__v{font-size:26px;font-weight:700;font-family:var(--mono)}
.role-metric__l{font-size:12.5px;color:var(--muted)}
.role-bar{margin-top:10px;height:8px;background:var(--neutral-bg);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.role-bar span{display:block;height:100%;background:var(--green,#15803d)}

/* P15 — schede della pagina Fatturazione */
.billing-tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line-strong);margin-bottom:18px}
.billing-tab{appearance:none;border:0;background:transparent;cursor:pointer;padding:10px 16px;
  font:600 13px var(--sans);color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.billing-tab:hover{color:var(--ink)}
.billing-tab.is-active{color:var(--blue);border-bottom-color:var(--blue)}
.billing-tab:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.billing-tabpanel[hidden]{display:none}

/* P15 — color picker white-label */
.color-field{display:flex;gap:8px;align-items:center}
.color-field input[type=color]{width:44px;height:36px;padding:2px;border:1px solid var(--line-strong);
  border-radius:var(--r);background:var(--panel);cursor:pointer;flex:0 0 auto}
.color-field .inp{flex:1;min-width:0}

/* P15 — form Single Sign-On */
.sso-toggles{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-top:14px}

/* P15 — bottone apri/chiudi tutti (tabella prodotti ad albero) */
.tbctl__tree{appearance:none;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);
  border-radius:var(--r);padding:5px 12px;font:600 12px var(--sans);cursor:pointer;margin-right:auto}
.tbctl__tree:hover{background:var(--surface2)}

/* P15 — azioni in testa alle schede (Notifiche unificate) */
.tabpanel-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:14px}

/* P15 — nodo regola nel diagramma di escalation interno */
.esc-node--rule{position:relative;padding-right:30px}
.esc-node__del{position:absolute;top:6px;right:6px}
.esc-node__del .icon-action{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;padding:2px}
.esc-node__del .icon-action:hover{color:var(--red)}

/* P15 — modalità simulazione (tabletop drill) */
.sim-hero{border:2px solid var(--amber);border-radius:12px;overflow:hidden;background:var(--panel);box-shadow:var(--el2)}
.sim-hero__bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--amber);color:#3a2a00;padding:10px 16px}
.sim-hero__flag{font:800 12.5px var(--mono);letter-spacing:.08em}
.pds-btn--light{background:#fff;border:1px solid rgba(0,0,0,.15);color:#3a2a00;font-weight:700}
.pds-btn--light:hover{background:#f4f4f4}
.sim-hero__body{padding:18px 16px;display:flex;flex-direction:column;gap:16px}
.sim-hero__head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.sim-hero__eyebrow{font:700 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber-ink,#b45309)}
.sim-hero__title{font-size:18px;font-weight:700;margin-top:4px}
.sim-hero__timers{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}
.sim-hero__lbl{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;margin-bottom:8px}
.sim-hero__note{font-size:12.5px;color:var(--muted);margin:0;line-height:1.6}

/* P15 — icone nelle card attività del prodotto */
.entity-actions-grid .entity-ico svg{width:18px;height:18px;color:var(--blue)}
.entity-actions-grid>a .entity-ico{margin-bottom:2px}

/* P16 — profilo utente in Sicurezza e 2FA */
.profilo-grid{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}
.profilo-avatar{width:88px;height:88px;border-radius:50%;object-fit:cover;border:1px solid var(--line-strong);display:block}
.profilo-avatar--iniziali{display:flex;align-items:center;justify-content:center;background:var(--blue);color:#fff;font:700 34px var(--sans);text-transform:uppercase}
.profilo-avatar-col{flex:0 0 auto;text-align:center}
.profilo-dati{flex:1;min-width:240px}

/* P16 — avatar nel dropdown con immagine sovrapposta */
.account__avatar{position:relative;overflow:hidden}

/* ---------------------------------------------------------------------------
   Operatori economici (/economic-operators) — SOLO AGGIUNTE, come il livello
   P10. La pagina e' la piu' densa del prodotto: sei moduli e sei tabelle sulla
   stessa schermata. Prima i moduli erano `<label>` nudi impilati a tutta
   larghezza, senza nessuna delle classi che il resto della dashboard usa: il
   risultato era una colonna indistinta di etichette e caselle.
   I campi ora sono `pds-field` dentro `intake-grid`, che il design system
   aveva gia'. Qui restano solo le tre cose che mancavano davvero: il piede del
   modulo, il campo a tutta riga per le motivazioni, e la lista di spunte —
   che con venti compiti dell'Allegato e N prodotti diventava un elenco lungo
   quanto la pagina.
   --------------------------------------------------------------------------- */
.eo-form{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.eo-form__wide{margin-top:12px}
.eo-form__foot{margin-top:16px;display:flex;justify-content:flex-end}
.eo-fieldset{margin:16px 0 0;padding:14px 16px;border:1px solid var(--line);
  border-radius:10px;background:var(--surface2)}
.eo-fieldset__legend{padding:0 6px;font-size:12px;font-weight:600;color:var(--ink);
  letter-spacing:.02em;text-transform:uppercase}
.eo-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:8px 18px;margin-top:10px}
.eo-checks--inline{margin-top:12px;grid-template-columns:1fr}
.eo-check{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.45;
  cursor:pointer}
.eo-check input{margin-top:2px;flex:0 0 auto}
/* Un compito NON delegabile resta leggibile: si spegne il contrasto, non il
   testo. Nasconderlo lascerebbe credere che l'elenco sia completo. */
.eo-check--off{color:var(--faint);cursor:default}
@media (max-width:720px){.eo-checks{grid-template-columns:1fr}}

/* Stabilimento — le righe «dipendenti per Stato membro» (SOLO AGGIUNTE).
   Erano sei input di fila senza etichetta né layout, che andavano a capo dove
   capitava. Ogni riga è ora una coppia etichettata; su schermo stretto le due
   colonne diventano una, invece di spezzarsi a metà di una coppia. */
.est-org{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.est-org__riga{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:end}
@media (max-width:560px){.est-org__riga{grid-template-columns:1fr}}

/* ---------------------------------------------------------------------------
   Workspace readiness (/settings/readiness) — SOLO AGGIUNTE.

   IL DIFETTO. Il template usava TREDICI classi che nel design system non
   esistevano: `ready-list`, `ready-item` e i suoi elementi, `ready-warnings`,
   `is-todo`, `is-next`, `pds-panel--warning`, e — la piu' grave — TUTTE le
   varianti di `pds-badge`. La base `.pds-badge` c'era, i modificatori no:
   quindi «fatto», «da fare» e «prossimo passo» rendevano IDENTICI, grigi
   uguali. Una lista di stati in cui gli stati non si distinguono e' una lista
   che non dice niente, ed e' il contrario della regola del PDS — ogni stato
   porta icona, etichetta E colore.

   I colori vengono dai token esistenti (green/amber/blue), gli stessi che
   `.pds-status--*` usa gia': non si inventa una seconda tavolozza per dire le
   stesse tre cose.
   --------------------------------------------------------------------------- */
.pds-badge--success{background:var(--green-bg);color:var(--green)}
.pds-badge--warning{background:var(--amber-bg);color:var(--amber)}
.pds-badge--neutral{background:var(--surface2);color:var(--muted)}
.pds-badge--interaction{background:var(--blue);color:#fff}

/* Il pannello d'avviso: la riga colorata a sinistra e' il segnale che si legge
   prima del testo, come le card dei difetti altrove nel prodotto. */
.pds-panel--warning{border-left:3px solid var(--amber)}
.ready-warnings{display:flex;flex-direction:column;gap:12px;margin:16px 0}

.ready-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ready-item{display:grid;grid-template-columns:22px 1fr;gap:12px;align-items:start;
  padding:12px 0;border-bottom:1px solid var(--line)}
.ready-item:last-child{border-bottom:0}
.ready-item__mark{font-size:15px;line-height:1.35;color:var(--faint);text-align:center}
.ready-item.is-done .ready-item__mark{color:var(--green)}
/* `is-next` non e' uno stato in piu': e' UNO degli `is-todo`, quello da fare
   adesso. Si distingue col fondo, non con un colore di testo diverso, o
   sembrerebbe una quarta categoria. */
.ready-item.is-next{background:var(--blue-bg);border-radius:8px;padding-left:10px;padding-right:10px}
.ready-item.is-next .ready-item__mark{color:var(--blue)}
.ready-item__body{min-width:0}
.ready-item__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ready-item__label{font-weight:600;font-size:13.5px;color:var(--ink)}
.ready-item.is-done .ready-item__label{color:var(--muted)}
.ready-item__hint{margin-top:3px;font-size:12.5px;color:var(--muted);line-height:1.5}
/* La premessa della pagina readiness: una nota che si legge, non un tooltip. */
.ready-nota{margin:14px 0 0;padding:10px 14px;background:var(--surface2);
  border-left:3px solid var(--line-strong);border-radius:0 8px 8px 0;
  font-size:12.5px;line-height:1.5;color:var(--muted)}

/* ---------------------------------------------------------------------------
   ASSISTENTE: TESTO A PARAGRAFI E PILLOLE DI PARTENZA
   ---------------------------------------------------------------------------
   Il messaggio del modello finiva in un solo `textContent` dentro
   `.crabot__msg`: i ritorni a capo collassavano e una risposta di tre
   paragrafi arrivava come un muro di parole. Il widget ora costruisce <p> e
   <ul>; qui vivono le loro misure. `max-width` sale da 85% a 92% perche' un
   paragrafo vero ha bisogno di riga piu' lunga di una battuta.

   Le PILLOLE sono la prima cosa che si vede aprendo il pannello: dicono che
   cosa questo assistente sa fare, e la prima parla dello stato reale del
   tenant. Sono bottoni, non finte etichette cliccabili: chi naviga da tastiera
   ci arriva col Tab e le attiva con Invio, senza che si debba aggiungere nulla.
   --------------------------------------------------------------------------- */
.crabot__msg--bot{max-width:92%}
.crabot__msg p{margin:0}
.crabot__msg p + p,
.crabot__msg p + .crabot__list,
.crabot__msg .crabot__list + p{margin-top:8px}
.crabot__list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px}
.crabot__list li{margin:0}

.crabot__sugg{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding-top:2px}
.crabot__chip{max-width:92%;text-align:left;cursor:pointer;font:inherit;font-size:12px;line-height:1.4;
  padding:7px 11px;border-radius:10px;border:1px dashed var(--line-strong);background:transparent;color:var(--blue)}
.crabot__chip:hover{background:var(--blue-bg);border-style:solid}
.crabot__chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
