/* NEXTYOUGEST: stile Nextyou Broker.
   Navy e argento dal logo, oro come filo conduttore. Il tema segue il sistema.
   Colori solo qui: chiaro in :root, scuro nel blocco subito sotto; la stampa resta sempre chiara. */

@font-face { font-family: Poppins; src: url(/font/Poppins-Regular.woff) format("woff"); font-weight: 400; font-display: swap; }
@font-face { font-family: Poppins; src: url(/font/Poppins-Medium.woff) format("woff"); font-weight: 500; font-display: swap; }
@font-face { font-family: Poppins; src: url(/font/Poppins-Bold.woff) format("woff"); font-weight: 700; font-display: swap; }

:root {
  color-scheme: light;
  --sfondo: #f1f3f8; --superficie: #fff; --tenue: #e8ecf3;
  --testo: #18263c; --titolo: #0f2340; --muto: #5a6780;
  --bordo: #dbe0ea; --bordo-forte: #bdc6d6;
  --primario: #0f2340; --primario-su: #1f3c68; --su-primario: #fff;
  --oro: #b08c32; --oro-testo: #7c5f16; --oro-tenue: #f6efdd;
  --pannello: #0f2340; --pannello-muto: #bcc7da; --pannello-oro: #ecd28c;
  --menu: #0f2340; --menu-su: #1b3357; --menu-testo: #cdd5e3;
  --rosso: #b42318; --rosso-tenue: #fdecea; --verde: #14704a; --verde-tenue: #e4f4ec;
  --linea: #0f2340; --linea-prec: #a9832a;
  --ombra: 0 1px 2px rgb(15 35 64 / .06);
  --ombra-alta: 0 20px 60px rgb(15 35 64 / .28);
  --velo: rgb(15 35 64 / .45);
  --largo-menu: 236px;
  font-family: Poppins, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 14.5px; line-height: 1.5; color: var(--testo);
  -webkit-text-size-adjust: 100%;
}
@media screen and (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --sfondo: #0b1424; --superficie: #131f35; --tenue: #1c2b47;
    --testo: #e4e9f2; --titolo: #f4f6fa; --muto: #9aa7bd;
    --bordo: #25354f; --bordo-forte: #3a4d6d;
    --primario: #dcb85f; --primario-su: #e9cb80; --su-primario: #0b1424;
    --oro: #dcb85f; --oro-testo: #e6c878; --oro-tenue: #27324a;
    --pannello: #1c2b47; --pannello-muto: #a4b1c8; --pannello-oro: #ecd28c;
    --menu: #0e1a2e; --menu-su: #1c2b47; --menu-testo: #b9c4d6;
    --rosso: #f48a80; --rosso-tenue: #3b1d22; --verde: #5ccb96; --verde-tenue: #12352a;
    --linea: #dcb85f; --linea-prec: #93a4c0;
    --ombra: none;
    --ombra-alta: 0 20px 60px rgb(0 0 0 / .6);
    --velo: rgb(4 9 18 / .65);
  }
}

* { box-sizing: border-box; }
html { background: var(--sfondo); }
body { margin: 0; background: var(--sfondo); }
a { color: var(--titolo); text-underline-offset: 2px; }
h1 { font-size: 1.6rem; line-height: 1.25; color: var(--titolo); margin: 0; font-weight: 700; letter-spacing: -.015em; }
h2 { font-size: 1.02rem; color: var(--titolo); margin: 0 0 12px; font-weight: 500; }
h2.spazio { margin-top: 20px; }
h3 { font-size: .95rem; color: var(--titolo); margin: 0 0 8px; font-weight: 500; }
b, strong, th { font-weight: 500; }
:focus-visible { outline: 2px solid var(--oro); outline-offset: 2px; }
.muto { color: var(--muto); }
.piccolo { font-size: .85rem; }
.rosso { color: var(--rosso); }
.num { text-align: right; font-variant-numeric: tabular-nums; }

/* Telaio e menu */
.layout { display: grid; grid-template-columns: var(--largo-menu) minmax(0, 1fr); min-height: 100vh; min-height: 100dvh; }
.barra { display: none; }
.side { position: sticky; top: 0; z-index: 20; height: 100vh; height: 100dvh; overflow: hidden auto; scrollbar-width: none; display: flex; flex-direction: column; gap: 2px; padding: 22px 12px 14px; background: var(--menu); color: var(--menu-testo); }
.side::-webkit-scrollbar { display: none; }
.side::after { content: ""; position: absolute; left: -46px; bottom: -34px; width: 300px; height: 174px; background: url(/logo-ny.png) center / contain no-repeat; opacity: .06; pointer-events: none; }
.side a.brand { display: block; padding: 2px 16px 18px; }
.brand img { display: block; width: 100%; height: auto; }
.menu-altre { display: contents; }
.voce { position: relative; display: flex; align-items: center; gap: 11px; min-height: 42px; padding: 8px 12px; border: 0; border-radius: 9px; background: none; color: var(--menu-testo); font: inherit; font-size: .95rem; text-decoration: none; text-align: left; cursor: pointer; }
.voce svg { flex: none; width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.voce:hover { background: var(--menu-su); color: #fff; }
.voce.on { background: var(--menu-su); color: #fff; font-weight: 500; }
.voce.on::before { content: ""; position: absolute; left: -2px; top: 9px; bottom: 9px; width: 6px; background: #dcb85f; clip-path: polygon(45% 0, 100% 0, 55% 100%, 0 100%); }
.voce-altro { display: none; }
.piede { position: relative; z-index: 1; margin-top: auto; padding-top: 12px; display: flex; flex-direction: column; gap: 2px; }
.utente { padding: 4px 12px 6px; font-size: .82rem; color: var(--menu-testo); overflow-wrap: anywhere; }
main { width: 100%; max-width: 1240px; min-width: 0; padding: 30px 36px 60px; }

/* Blocchi */
.testa { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 20px; flex-wrap: wrap; }
.testa-sez { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.azioni { display: flex; gap: 8px; flex-wrap: wrap; }
.card { background: var(--superficie); border: 1px solid var(--bordo); border-radius: 14px; padding: 20px; margin-bottom: 16px; box-shadow: var(--ombra); }
.card-link { display: block; text-decoration: none; color: inherit; }
.card-link:hover { border-color: var(--oro); }
.griglia-2, .griglia-3, .griglia-4 { display: grid; gap: 16px; }
.griglia-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 16px; }
.griglia-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 16px; }
.griglia-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.griglia-2 > .card, .griglia-3 > .card { margin: 0; min-width: 0; }
.griglia-firma { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 6px 14px; }
.griglia-moduli { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 8px; }
.griglia-rami { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 6px 18px; margin-bottom: 12px; }
.griglia-scelte { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px 22px; }
.griglia-scelte > div { display: flex; flex-direction: column; gap: 6px; }
.sotto { margin-top: 16px; margin-bottom: 0; }
.fine { display: flex; align-items: flex-end; }
.etichetta { font-size: .82rem; color: var(--muto); }
.stat { font-size: 1.95rem; line-height: 1.25; font-weight: 700; letter-spacing: -.02em; color: var(--titolo); font-variant-numeric: tabular-nums; }
.stat-m { font-size: 1.4rem; line-height: 2.5rem; }
.vuoto { padding: 26px 8px; text-align: center; color: var(--muto); }
.periodo select { width: auto; min-width: 150px; }
.periodo-testa { background: var(--superficie); border: 1px solid var(--bordo); border-radius: 14px; padding: 12px 20px; margin-bottom: 16px; align-items: center; box-shadow: var(--ombra); }
.periodo-testa h2 { margin: 0; }
.elenco-lungo { max-height: 380px; overflow: auto; -webkit-overflow-scrolling: touch; }

/* Comandi */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 8px 16px; border-radius: 9px; border: 1px solid var(--primario); background: var(--primario); color: var(--su-primario); font: inherit; font-weight: 500; cursor: pointer; text-decoration: none; transition: background-color .12s; }
.btn:hover { background: var(--primario-su); border-color: var(--primario-su); }
.btn.sec { background: transparent; border-color: var(--bordo-forte); color: var(--titolo); }
.btn.sec:hover { background: var(--tenue); border-color: var(--bordo-forte); }
.btn.perico { background: transparent; color: var(--rosso); border-color: var(--rosso); }
.btn.perico:hover { background: var(--rosso-tenue); }
.btn[disabled] { opacity: .55; cursor: not-allowed; }
.link-btn { align-self: flex-start; border: 0; background: none; padding: 2px 0; color: var(--rosso); font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.file-btn { flex-direction: row; cursor: pointer; }
.seg { display: inline-flex; max-width: 100%; overflow-x: auto; border-radius: 10px; padding: 3px; gap: 2px; background: var(--tenue); margin-bottom: 14px; }
.seg button { border: 0; border-radius: 8px; background: none; color: var(--muto); padding: 7px 14px; font: inherit; cursor: pointer; white-space: nowrap; }
.seg button.on { background: var(--superficie); color: var(--titolo); font-weight: 500; box-shadow: var(--ombra); }
.schede { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 1px solid var(--bordo); margin-bottom: 18px; }
.schede a { padding: 10px 14px; color: var(--muto); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.schede a:hover { color: var(--titolo); }
.schede a.attiva { color: var(--titolo); font-weight: 500; border-bottom-color: var(--oro); }

/* Campi */
.campi { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px 14px; }
label { display: flex; flex-direction: column; gap: 4px; font-size: .82rem; color: var(--muto); min-width: 0; }
label.check { flex-direction: row; align-items: center; gap: 8px; color: var(--testo); font-size: .95rem; }
label.check[hidden] { display: none; }
label.largo { grid-column: 1 / -1; }
.firme-mancanti ul { margin: 6px 0 0; padding-left: 18px; }
input, select, textarea { font: inherit; color: var(--testo); min-height: 40px; padding: 8px 11px; border: 1px solid var(--bordo-forte); border-radius: 9px; background: var(--superficie); width: 100%; accent-color: var(--primario); }
input:focus, select:focus, textarea:focus { border-color: var(--oro); }
input[type=checkbox], input[type=radio] { width: 18px; height: 18px; min-height: 18px; flex: none; padding: 0; }
textarea { min-height: 80px; resize: vertical; }
input.perc { width: 76px; text-align: right; }
.ricerca { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.ricerca label { min-width: 200px; }
.ricerca input { flex: 1; min-width: 200px; }
.ricerca select { width: auto; }
.spunta { display: flex; gap: 8px; align-items: center; }
.spunta input { width: 18px; }
.scelte { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--bordo); }
.scelte[hidden] { display: none; }

/* Tabelle ed elenchi */
.tabella-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table { width: 100%; border-collapse: collapse; }
th { text-align: left; font-size: .8rem; color: var(--muto); padding: 8px 10px; border-bottom: 1px solid var(--bordo-forte); white-space: nowrap; }
th.num { text-align: right; }
td { padding: 11px 10px; border-bottom: 1px solid var(--bordo); vertical-align: top; }
tbody tr.link { cursor: pointer; }
tbody tr.link:hover { background: var(--tenue); }
tfoot th { border-top: 1px solid var(--bordo-forte); border-bottom: 0; color: var(--titolo); font-size: .9rem; }
dl { display: grid; grid-template-columns: minmax(110px, 40%) minmax(0, 1fr); gap: 6px 12px; margin: 0; }
dt { color: var(--muto); font-size: .85rem; }
dd { margin: 0; overflow-wrap: anywhere; }
.badge { display: inline-block; padding: 2px 9px; border-radius: 99px; background: var(--tenue); color: var(--testo); font-size: .78rem; white-space: nowrap; }
.badge.ok { background: var(--verde-tenue); color: var(--verde); }
.badge.ko { background: var(--rosso-tenue); color: var(--rosso); }
.lista-doc { list-style: none; margin: 0 0 12px; padding: 0; }
.lista-doc li { display: flex; justify-content: space-between; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--bordo); align-items: center; }
.compagnia { border-top: 1px solid var(--bordo); padding: 10px 0; }
.compagnia summary { cursor: pointer; padding: 4px 0; }
.compagnia .corpo { margin: 12px 0; }
.ramo-riga { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ramo-riga .check { flex: 1; font-size: .9rem; }
.categoria { padding: 12px 0; border-top: 1px solid var(--bordo); }
.categoria:first-of-type { border-top: 0; padding-top: 0; }
.carica { border-top: 1px solid var(--bordo); padding-top: 14px; margin-top: 4px; }
pre.codici { background: var(--tenue); border-radius: 9px; padding: 12px 14px; font-size: 1rem; letter-spacing: .04em; white-space: pre-wrap; }

/* Avvisi */
.avviso { background: var(--oro-tenue); border: 1px solid var(--oro); border-radius: 10px; padding: 10px 13px; margin-bottom: 14px; }
.errore { background: var(--rosso-tenue); color: var(--rosso); border-radius: 10px; padding: 10px 13px; margin-bottom: 14px; }
.manca { color: var(--rosso); font-weight: 500; font-size: .85rem; }
#toast { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: var(--pannello); color: #fff; border: 1px solid var(--oro); padding: 10px 16px; border-radius: 10px; opacity: 0; pointer-events: none; transition: opacity .2s; max-width: calc(100vw - 32px); z-index: 90; }
#toast.on { opacity: 1; }

/* Polizze */
.schede-polizze { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; }
.polizza { border: 1px solid var(--bordo); border-radius: 14px; padding: 14px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.polizza header { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.polizza header strong { display: block; color: var(--titolo); font-size: 1.05rem; }
.polizza header span:not(.badge) { color: var(--muto); font-size: .85rem; }
.polizza footer { display: flex; gap: 8px; margin-top: auto; }
.polizza footer .btn { flex: 1; }
.premi { border-radius: 11px; overflow: hidden; }
.premi-testa { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; background: var(--pannello); color: #fff; padding: 12px 14px; }
.premi-testa small { display: block; color: var(--pannello-muto); font-size: .74rem; margin-bottom: 2px; }
.premi-testa b { display: block; font-size: 1.28rem; line-height: 1.2; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.premi-rata { border-left: 1px solid var(--pannello-oro); padding-left: 12px; }
.premi-rata b { color: var(--pannello-oro); }
.premi-rata span { display: block; color: var(--pannello-muto); font-size: .74rem; margin-top: 2px; }
.premi-piede { display: grid; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); gap: 12px; background: var(--oro-tenue); padding: 8px 14px; }
.premi-piede small { display: block; color: var(--muto); font-size: .72rem; }
.premi-piede b { color: var(--titolo); font-size: .98rem; font-variant-numeric: tabular-nums; }
.dati-polizza { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 12px; margin: 0; }
.dati-polizza dt { font-size: .75rem; }
.dati-polizza dd { font-size: .9rem; }
.nota-polizza { margin: 0; color: var(--muto); font-size: .8rem; overflow-wrap: anywhere; }
details.altre { margin-top: 14px; border-top: 1px solid var(--bordo); padding-top: 10px; }
details.altre > summary { cursor: pointer; color: var(--titolo); font-weight: 500; margin-bottom: 12px; }
details.garanzie { border-top: 1px solid var(--bordo); padding-top: 8px; }
details.garanzie summary { cursor: pointer; color: var(--titolo); font-weight: 500; font-size: .9rem; min-height: 28px; }
details.garanzie ul { list-style: none; margin: 6px 0; padding: 0; }
details.garanzie li { padding: 5px 0; border-bottom: 1px solid var(--bordo); font-size: .85rem; }
details.garanzie li span { display: block; color: var(--muto); font-size: .78rem; }

/* Documenti: i moduli restano carta bianca anche di sera */
.anteprime { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.anteprima { margin: 0; min-width: 0; }
.anteprima a { display: grid; place-items: center; height: 200px; overflow: hidden; border: 1px solid var(--bordo); border-radius: 10px; background: var(--tenue); }
.anteprima a:hover { border-color: var(--oro); }
.anteprima img, .anteprima canvas { width: 100%; height: 100%; object-fit: contain; display: block; }
.segnaposto { font-weight: 500; color: var(--muto); }
figcaption { display: flex; flex-direction: column; gap: 2px; padding-top: 6px; font-size: .84rem; min-width: 0; }
figcaption > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lettura-doc { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: center; }
.lettura-doc p { margin: 0; }
.lettura-doc #docStato { flex-basis: 100%; }
iframe.modulo { width: 100%; height: calc(100vh - 130px); min-height: 500px; border: 1px solid var(--bordo); border-radius: 12px; background: #fff; color-scheme: light; }

/* Finestre */
dialog { color: var(--testo); background: var(--superficie); border: 1px solid var(--bordo); border-radius: 16px; padding: 22px; width: min(420px, calc(100vw - 32px)); box-shadow: var(--ombra-alta); }
dialog::backdrop { background: var(--velo); }
dialog form { display: flex; flex-direction: column; gap: 12px; }
dialog.finestra { width: min(860px, calc(100vw - 24px)); height: calc(100vh - 32px); max-height: none; padding: 0; overflow: hidden; }
dialog.finestra[open] { display: flex; flex-direction: column; }
dialog.finestra iframe { flex: 1; width: 100%; border: 0; background: #fff; color-scheme: light; }
.finestra-testa { display: flex; justify-content: space-between; align-items: center; padding: 8px 14px; border-bottom: 1px solid var(--bordo); color: var(--titolo); }

/* Area clienti */
.area-testa { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: calc(12px + env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) 12px max(20px, env(safe-area-inset-left)); background: #0f2340; color: #fff; }
.area-testa img { display: block; height: 44px; width: auto; }
.area-testa .btn { min-height: 38px; background: none; border-color: #52668a; color: #fff; }
.area-corpo { max-width: 860px; margin: 0 auto; padding: 26px 18px 60px; }
.area-corpo h1 { margin-bottom: 4px; }
.area-corpo > p { margin: 0 0 20px; }
.area-polizza { padding: 13px 0; border-top: 1px solid var(--bordo); }
.area-polizza:first-of-type { border-top: 0; padding-top: 0; }
.area-polizza header { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.area-polizza strong { display: block; color: var(--titolo); font-weight: 500; }
.area-doc { list-style: none; margin: 8px 0 0; padding: 0; }
.area-doc a { display: flex; align-items: center; min-height: 40px; padding: 4px 0; overflow-wrap: anywhere; }
.scelta-link { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; }
.accesso form .link-btn { color: var(--titolo); align-self: auto; }
.accesso h1 { font-size: 1.25rem; }

/* Collaborazioni: il logo sta sempre su una tessera bianca, anche di sera */
.griglia-collab { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.collab { display: flex; flex-direction: column; margin: 0; }
.collab h3 { margin-top: 14px; }
.collab p { margin: 0 0 10px; }
.collab details { margin-bottom: 10px; }
.collab summary { cursor: pointer; color: var(--titolo); font-weight: 500; min-height: 28px; }
.collab ul { margin: 6px 0 0; padding-left: 18px; }
.collab li { margin-bottom: 3px; }
.collab-dove { margin-top: auto !important; }
.collab-testa { display: flex; align-items: center; gap: 14px; margin-bottom: 4px; }
.collab-testa h2 { margin: 0 0 1px; }
.logo-tessera { flex: none; display: grid; place-items: center; width: 104px; height: 68px; padding: 7px; border: 1px solid var(--bordo); border-radius: 10px; background: #fff; }
.logo-tessera img { display: block; width: 100%; height: 100%; object-fit: contain; }
.logo-tessera span { color: #0f2340; font-size: 1.3rem; font-weight: 700; letter-spacing: .02em; }
.collab-azioni { display: grid; grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); gap: 7px; }
.btn.azione { gap: 6px; padding-left: 8px; padding-right: 8px; font-size: .88rem; }
.btn.azione svg { flex: none; width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

/* Allegati compatti */
.doc-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 2px 18px; }
.doc-riga { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto auto; align-items: center; gap: 10px; min-height: 52px; padding: 4px 0; border-bottom: 1px solid var(--bordo); }
.doc-thumb { display: block; width: 36px; height: 46px; overflow: hidden; border: 1px solid var(--bordo); border-radius: 4px; background: var(--tenue); }
.doc-thumb:hover { border-color: var(--oro); }
.doc-thumb canvas, .doc-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
.doc-thumb .segnaposto { display: grid; place-items: center; height: 100%; font-size: .6rem; }
.doc-info { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.doc-info a { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: .9rem; text-decoration: none; color: var(--testo); }
.doc-info a:hover { color: var(--titolo); text-decoration: underline; }
.doc-info small { font-size: .74rem; }
.doc-vis { flex-direction: row; align-items: center; gap: 5px; font-size: .76rem; cursor: pointer; }
.doc-vis input { width: 16px; height: 16px; min-height: 16px; }
.doc-riga .link-btn { align-self: center; min-height: 0; font-size: .76rem; }
.categoria { padding: 8px 0 6px; border: 0; }
.categoria h3 { margin: 0 0 2px; font-size: .84rem; font-weight: 500; color: var(--muto); }
.altre-copie { margin-top: 4px; font-size: .84rem; }
.altre-copie summary { cursor: pointer; color: var(--muto); }
.campi-up { grid-template-columns: minmax(220px, 2fr) minmax(150px, 1fr) minmax(150px, 1fr) auto; align-items: end; }
.zona-file { position: relative; display: flex; align-items: center; justify-content: center; min-height: 46px; padding: 6px 12px; border: 1.5px dashed var(--bordo-forte); border-radius: 9px; color: var(--muto); font-size: .86rem; text-align: center; cursor: pointer; }
.zona-file:hover, .zona-file:focus-within, .card.trascina .zona-file { border-color: var(--oro); background: var(--oro-tenue); color: var(--titolo); }
.zona-file input { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; opacity: 0; }
.zona-file span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.card.trascina { outline: 2px dashed var(--oro); outline-offset: -4px; }
.btn.perico[id=eliminaPolizza] { margin-left: auto; }

/* Modulistica */
.modulistica { display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--bordo); padding-top: 10px; }
.chips { display: flex; flex-wrap: wrap; gap: 5px; }
.modulistica .btn { min-height: 34px; padding: 4px 11px; font-size: .85rem; }
.gruppo-allegati { margin: 18px 0 6px; font-size: 1rem; }
.gruppo-polizza { border-top: 1px solid var(--bordo); padding: 8px 0; }
.gruppo-polizza > summary { cursor: pointer; color: var(--titolo); font-weight: 500; min-height: 30px; }
.firma-polizza { border-top: 1px solid var(--bordo); padding: 10px 0; }
.firma-polizza > strong { display: block; margin-bottom: 6px; color: var(--titolo); }
.spazio-h3 { margin-top: 16px; }

/* Contabilità */
.totali-rendiconto { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 8px; }
.totali-rendiconto > div { background: var(--tenue); border-radius: 10px; padding: 10px 12px; }
.totali-rendiconto small { display: block; color: var(--muto); font-size: .76rem; }
.totali-rendiconto b { color: var(--titolo); font-size: 1.15rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.totali-rendiconto .netto { background: var(--pannello); }
.totali-rendiconto .netto small { color: var(--pannello-muto); }
.totali-rendiconto .netto b { color: var(--pannello-oro); }
.avanzamento { display: block; width: 100%; height: 10px; margin: 12px 0 6px; accent-color: var(--primario); }

/* Grafico */
.grafico svg { display: block; width: 100%; height: auto; touch-action: pan-y; }
.g-griglia { stroke: var(--bordo); stroke-width: 1; }
.g-testo { fill: var(--muto); font-size: 11px; font-family: inherit; }
.g-linea { fill: none; stroke: var(--linea); stroke-width: 2.25; stroke-linejoin: round; stroke-linecap: round; }
.g-linea-prec { fill: none; stroke: var(--linea-prec); stroke-width: 2; stroke-dasharray: 6 5; stroke-linecap: round; }
.g-punto { fill: var(--linea); stroke: var(--superficie); stroke-width: 2; }
.g-area { fill: transparent; cursor: crosshair; }
.g-mirino { stroke: var(--muto); stroke-width: 1; }
.g-legenda { display: flex; gap: 16px; flex-wrap: wrap; margin: 2px 0 6px; font-size: .82rem; color: var(--muto); }
.g-voce { display: inline-flex; align-items: center; gap: 6px; }
.g-voce i { display: inline-block; width: 22px; height: 0; border-top: 2px solid var(--linea); }
.g-voce i.g-prec { border-top: 2px dashed var(--linea-prec); }

/* Accesso e apertura: sempre sul navy del marchio */
.accesso { position: relative; overflow: hidden; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 26px; padding: 24px 16px; background: #0f2340; }
.accesso::before { content: ""; position: absolute; right: -14vmin; bottom: -16vmin; width: 90vmin; height: 52vmin; background: url(/logo-ny.png) center / contain no-repeat; opacity: .07; pointer-events: none; }
.logo-accesso { position: relative; display: block; width: 216px; max-width: 70vw; }
.accesso form { position: relative; width: min(380px, 100%); margin: 0; padding: 26px; display: flex; flex-direction: column; gap: 14px; background: var(--superficie); border: 0; border-radius: 16px; box-shadow: 0 24px 60px rgb(0 0 0 / .32); }
.accesso form .btn { margin-top: 4px; }
.accesso .link-neutro { align-self: center; color: var(--titolo); }
#apertura { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; background: #0f2340; pointer-events: none; animation: apertura-via .55s ease-in 1.75s forwards; }
.apertura-centro { width: min(320px, 70vw); display: flex; flex-direction: column; align-items: center; gap: 16px; }
.apertura-centro img { width: 100%; height: auto; opacity: 0; animation: apertura-logo .9s cubic-bezier(.2, .8, .2, 1) .1s forwards; }
.apertura-linea { display: block; width: 100%; height: 2px; background: #dcb85f; transform: scaleX(0); transform-origin: left; animation: apertura-tratto .75s ease-in-out .75s forwards; }
@keyframes apertura-logo { from { opacity: 0; transform: translateY(14px) scale(.94); } to { opacity: 1; transform: none; } }
@keyframes apertura-tratto { to { transform: scaleX(1); } }
@keyframes apertura-via { to { opacity: 0; visibility: hidden; } }
@media (prefers-reduced-motion: reduce) {
  #apertura { animation: apertura-via .2s linear .7s forwards; }
  .apertura-centro img { opacity: 1; animation: none; }
  .apertura-linea { transform: none; animation: none; }
  .btn { transition: none; }
}

/* iPad e schermi medi: barra laterale stretta, comandi a misura di dito */
@media (max-width: 1180px) {
  :root { --largo-menu: 92px; font-size: 15.5px; }
  .side { padding: max(12px, env(safe-area-inset-top)) 6px max(10px, env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left)); gap: 3px; }
  .side::after { display: none; }
  .side a.brand { padding: 2px 15px 10px; }
  .side a.brand img { content: url(/logo-ny.png); }
  .voce { flex-direction: column; justify-content: center; gap: 3px; min-height: 58px; padding: 6px 2px; font-size: .62rem; line-height: 1.15; text-align: center; }
  .voce svg { width: 22px; height: 22px; }
  .voce.on::before { left: 0; }
  .utente { display: none; }
  main { padding: max(22px, env(safe-area-inset-top)) max(22px, env(safe-area-inset-right)) 60px 22px; max-width: none; }
  .btn { min-height: 46px; padding: 10px 16px; }
  .link-btn { min-height: 40px; }
  input, select, textarea { min-height: 46px; font-size: 16px; }
  input[type=checkbox], input[type=radio] { width: 22px; height: 22px; min-height: 22px; }
  label.check { min-height: 40px; }
  .seg button { padding: 10px 14px; }
  .griglia-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .schede-polizze { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
  iframe.modulo { height: 72vh; }
}

@media (max-width: 1000px) {
  .card .griglia-2 { grid-template-columns: minmax(0, 1fr); }
  td, th { font-size: .9rem; padding-left: 7px; padding-right: 7px; }
}

/* iPhone: barra in basso con quattro voci più Altro, una colonna, tabelle a schede */
@media (max-width: 700px) {
  :root { --alt-menu: calc(62px + env(safe-area-inset-bottom)); }
  .layout { display: block; }
  .barra { display: flex; align-items: center; gap: 10px; padding: calc(10px + env(safe-area-inset-top)) 16px 2px; color: var(--titolo); font-weight: 500; font-size: .95rem; }
  .barra img { width: 40px; height: auto; }
  .side { position: fixed; top: auto; bottom: 0; left: 0; right: 0; z-index: 40; height: var(--alt-menu); overflow: visible; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; padding: 4px 4px env(safe-area-inset-bottom); box-shadow: 0 -1px 0 rgb(255 255 255 / .06); }
  .side a.brand { display: none; }
  .voce { min-height: 54px; font-size: .66rem; padding: 4px 0; }
  .voce.on::before { display: none; }
  .voce.on { background: none; color: #ecd28c; }
  .voce-altro { display: flex; }
  .side::before { content: ""; position: fixed; inset: 0; bottom: var(--alt-menu); background: var(--velo); opacity: 0; pointer-events: none; transition: opacity .15s; }
  .side.aperto::before { opacity: 1; pointer-events: auto; }
  .menu-altre { position: fixed; left: 0; right: 0; bottom: var(--alt-menu); display: none; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 14px 10px 10px; background: var(--menu); border-radius: 18px 18px 0 0; }
  .side.aperto .menu-altre { display: grid; }
  .menu-altre .voce { min-height: 66px; font-size: .72rem; border-radius: 12px; background: var(--menu-su); color: #fff; }
  .menu-altre .voce.on { color: #ecd28c; }
  .piede { grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: space-between; padding: 6px 2px 2px; margin: 0; }
  .utente { display: block; padding: 0 10px; }
  .piede .voce { flex-direction: row; gap: 6px; min-height: 44px; padding: 0 14px; background: none; font-size: .85rem; color: var(--menu-testo); }
  .piede .voce svg { width: 18px; height: 18px; }
  main { padding: 12px 16px calc(var(--alt-menu) + 28px); }
  h1 { font-size: 1.35rem; }
  .azioni { width: 100%; }
  .azioni .btn { flex: 1 1 46%; }
  .periodo-testa .azioni { align-items: center; }
  .periodo-testa select { flex: 1 1 100%; }
  .periodo-testa .azioni .btn { flex: 1 1 0; min-width: 0; }
  .periodo-testa .azioni label.check { flex: 1 1 100%; }
  .griglia-2, .griglia-3, .griglia-4, .griglia-firma, .schede-polizze { grid-template-columns: minmax(0, 1fr); }
  .schede { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .schede a { white-space: nowrap; }
  .card { padding: 15px; }
  .periodo-testa { padding: 12px 15px; }
  .griglia-collab { grid-template-columns: minmax(0, 1fr); }
  .doc-lista, .campi-up { grid-template-columns: minmax(0, 1fr); }
  .doc-riga { grid-template-columns: 36px minmax(0, 1fr) auto; }
  .doc-riga .link-btn { grid-column: 2 / -1; justify-self: start; }
  table.adatta thead { display: none; }
  table.adatta, table.adatta tbody, table.adatta tfoot { display: block; }
  table.adatta tr { display: block; padding: 11px 2px; border-bottom: 1px solid var(--bordo); }
  table.adatta td, table.adatta th { display: block; border: 0; padding: 2px 0; text-align: left; white-space: normal; }
  table.adatta td:first-child { font-weight: 500; color: var(--titolo); }
  table.adatta td[data-l]::before { content: attr(data-l) ": "; color: var(--muto); font-size: .82rem; }
  #toast { bottom: calc(var(--alt-menu) + 12px); width: calc(100% - 28px); text-align: center; }
  iframe.modulo { height: 70vh; }
}

@media print {
  .area-testa,.side, .barra, .non-stampa, #toast, .testa { display: none !important; }
  .layout { display: block; }
  main { padding: 0; max-width: none; }
  body, html { background: #fff; }
  .card { border: 0; padding: 0; box-shadow: none; }
  body:has(.da-stampare) .foglio:not(.da-stampare) { display: none; }
}
