:root{color-scheme:light;--ink:#242c37;--muted:#6b7280;--background:#f5f6f7;--primary:#8d342d;--light:#faeee9;--border:#dcdfe2}*{box-sizing:border-box}body{margin:0;background:var(--background);font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}a{color:var(--primary)}.topbar{display:flex;align-items:center;gap:20px;justify-content:space-between;background:#fff;border-bottom:1px solid var(--border);padding:15px clamp(15px,4vw,70px);flex-wrap:wrap}.brand{font-size:20px;color:var(--primary);display:flex;align-items:center;gap:6px}.brand span{color:var(--ink)}.brand small{font-size:10px;background:var(--light);border-radius:4px;padding:4px 6px;margin-left:8px}.topbar nav{display:flex;gap:18px}.topbar nav a{text-decoration:none;font-weight:600;color:var(--ink)}.topbar .account{display:flex;gap:10px;align-items:center;font-size:13px}.container{max-width:1140px;margin:28px auto;padding:0 20px 40px}h1{font-size:29px;margin:22px 0}h2{margin:0 0 16px;font-size:19px}.notice{background:#faece2;border-left:3px solid #c97a4a;padding:11px 16px;font-size:13px}.entity{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);padding:12px 16px;margin-top:18px;border-radius:8px}.entity strong{margin-right:auto}.entity span:first-child{color:var(--muted)}.role{background:var(--light);color:var(--primary);border-radius:12px;padding:3px 8px;font-size:12px}.panel{background:#fff;padding:24px;border:1px solid var(--border);border-radius:10px;margin:18px 0;box-shadow:0 2px 8px #00000007}.panel.narrow{max-width:530px;margin:25px auto}.panel form>label{display:block;margin:0 0 15px;font-weight:600}input,select{width:100%;margin-top:5px;padding:10px 11px;border:1px solid #bfc3c9;border-radius:6px;background:#fff;color:var(--ink);font:inherit}input:focus,select:focus{outline:2px solid #c18b85;outline-offset:1px}button,.button{display:inline-block;border:1px solid var(--primary);border-radius:6px;padding:10px 14px;background:#fff;color:var(--primary);text-decoration:none;cursor:pointer;font:inherit;font-weight:650}.primary,button:hover,.button:hover{background:var(--primary);color:white}.textbutton{border:0;padding:2px 4px;font-size:13px}.muted{font-size:13px;color:var(--muted)}.message{padding:13px 16px;background:#f4ece4;border-left:3px solid var(--primary);margin:20px 0}.choose{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);padding:14px 0}.choose button{margin-left:12px}.columns{display:grid;grid-template-columns:minmax(280px,1fr) minmax(440px,2fr);gap:16px}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:#4b5563;font-size:12px;letter-spacing:.02em;text-transform:uppercase;background:#f6f6f7}th,td{padding:12px 10px;border-bottom:1px solid var(--border);vertical-align:middle}td small{display:block;color:var(--muted)}.numeric{text-align:right;white-space:nowrap}.inline{display:inline-flex;gap:5px;align-items:center;margin:2px 5px 2px 0}.inline select{max-width:240px}.small{padding:6px;font-size:12px}.danger{color:#972b2b;border-color:#a85252}.password-once{padding:20px;background:#fff4d9;border:1px solid #d9ae4e;border-radius:8px}.password-once code{font-size:17px;overflow-wrap:anywhere}.yearpick,.rowform{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.yearpick label,.rowform label{min-width:160px}.yearpick button,.rowform button{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}.stat{background:#fff;border:1px solid var(--border);border-radius:10px;padding:22px}.stat div{color:var(--muted)}.stat strong{display:block;font-size:25px;margin-top:6px}.movement-form{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:12px}.movement-form label{margin:0}.movement-form button{align-self:end}.void{color:#999;background:#fafafa}.tag{background:#ececec;border-radius:10px;padding:3px 8px}details summary{font-weight:700;cursor:pointer}footer{text-align:center;font-size:12px;color:var(--muted);padding:20px}@media(max-width:820px){.columns,.stats{grid-template-columns:1fr}.movement-form{grid-template-columns:repeat(2,minmax(100px,1fr))}.topbar{gap:10px}.topbar nav{order:3;width:100%;gap:15px}.entity{flex-wrap:wrap}}@media(max-width:460px){.movement-form{grid-template-columns:1fr}h1{font-size:23px}.container{padding:0 12px}.panel{padding:15px}}

.registry-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px;align-items:end}.registry-form label{margin:0}.registry-form button{justify-self:start}@media(max-width:800px){.registry-form{grid-template-columns:repeat(2,minmax(160px,1fr))}}@media(max-width:480px){.registry-form{grid-template-columns:1fr}}

/* 0.10.1: niente margini inferiori nascosti nei moduli a griglia.
   La regola precedente .panel form>label era piu specifica di .registry-form label. */
.panel form.registry-form > label,
.panel form.movement-form > label,
.panel form.rowform > label,
.panel form.yearpick > label { margin:0; }
.registry-form > button,
.movement-form > button { grid-column:1 / -1; justify-self:start; align-self:end; margin:2px 0 0; }
.registry-form > label,.movement-form > label { min-width:0; }
.registry-form > label input,.registry-form > label select,
.movement-form > label input,.movement-form > label select { min-width:0; }
.panel form.rowform > button,.panel form.yearpick > button { align-self:end; margin:0; }
.compact-form { padding-top:12px; }
@media(max-width:800px){.registry-form{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:480px){.registry-form,.movement-form{grid-template-columns:minmax(0,1fr);}}

.inline select { margin-top:0; }
.action-links { display:flex;flex-wrap:wrap;gap:8px;align-items:center; }
.action-links .button { white-space:normal; }

/* 0.10.3: allineamento stabile azioni categorie, con e senza campo input. */
.category-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.category-actions form{display:flex;align-items:center;gap:6px;margin:0;padding:0;min-width:0}
.category-actions input{width:190px;max-width:100%;height:40px;margin:0;padding:8px 10px}
.category-actions button{display:inline-flex;align-items:center;justify-content:center;height:40px;margin:0;padding:8px 10px;line-height:1.2;white-space:nowrap}
@media(max-width:540px){.category-actions{flex-direction:column;align-items:stretch}.category-actions form{width:100%}.category-actions .category-rename-form input{flex:1;width:auto}.category-actions .category-disable-form button{width:100%}}
@media(min-width:541px){.category-actions{flex-wrap:nowrap;min-width:max-content}.category-actions form{flex-shrink:0}}
/* 0.13.0: strumenti di correzione nella tabella movimenti */
details.inline-tool{margin-top:4px;font-size:.85em}
details.inline-tool summary{cursor:pointer;color:#555}
details.inline-tool form{margin-top:6px}

/* 0.15.5: tabelle dentro i moduli a griglia a tutta larghezza; menu leggibili nelle celle. */
.registry-form > .tablewrap { grid-column:1 / -1; }
td select { min-width:200px; }
.dues-counts { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }
tr.dues-open td { background:#fff7f2; }

/* 0.15.7: logo dell'associazione nell'intestazione. */
.brand .logo { height:42px; width:auto; max-width:160px; object-fit:contain; margin-right:6px; }
.brand strong { color:var(--primary); }
.logo-preview { max-height:120px; max-width:100%; border:1px solid var(--border); border-radius:6px; padding:6px; background:#fff; }

/* 0.17.3: menu dell'intestazione. Su schermi larghi le voci vanno a capo; su schermi stretti si apre con il pulsante a tre linee. */
.menu-toggle{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.menu-button{display:none}
.menu{display:flex;align-items:center;gap:20px;flex-wrap:wrap;flex:1;justify-content:flex-end}
.topbar nav{flex-wrap:wrap;row-gap:6px;justify-content:flex-end}
.brand{min-width:0}
.brand strong{overflow-wrap:anywhere}
@media(max-width:900px){
  .topbar{flex-wrap:wrap;gap:10px}
  .topbar .brand{flex:1 1 0;font-size:17px}
  .menu-button{flex:0 0 auto;display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:10px;margin-left:auto;border:1px solid var(--border);border-radius:8px;cursor:pointer;background:#fff}
  .menu-button span{display:block;width:100%;height:2px;transform-origin:center;background:var(--ink);border-radius:2px;transition:transform .2s,opacity .2s}
  .menu-toggle:focus-visible+.menu-button{outline:2px solid #c18b85;outline-offset:2px}
  .menu-toggle:checked+.menu-button span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menu-toggle:checked+.menu-button span:nth-child(2){opacity:0}
  .menu-toggle:checked+.menu-button span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .menu{display:none;flex-basis:100%;flex-direction:column;align-items:stretch;gap:0;border-top:1px solid var(--border);margin-top:4px}
  .menu-toggle:checked~.menu{display:flex}
  .topbar nav{order:0;flex-direction:column;gap:0;width:100%}
  .topbar nav a{padding:12px 4px;border-bottom:1px solid var(--border);font-size:16px}
  .topbar .account{justify-content:space-between;padding:12px 4px;font-size:14px}
}
.panel fieldset{border:1px solid var(--border);border-radius:6px;margin:0 0 15px;padding:10px 14px}.panel fieldset legend{font-size:13px;color:var(--muted);padding:0 4px}.panel fieldset label{display:block;margin:0 0 12px;font-weight:600}
/* 0.19.1: data con freccia che apre il modulo; bollino dei non soci */
details.date-tool{display:inline-block}details.date-tool[open]{display:block}details.date-tool>summary{font-weight:400;color:inherit;list-style:none;cursor:pointer}details.date-tool>summary::-webkit-details-marker{display:none}details.date-tool>summary::after{content:' ▸';color:var(--primary)}details.date-tool[open]>summary::after{content:' ▾'}details.date-tool form{margin-top:6px}.dot{color:#c0392b}
/* 0.20.0: Libro Comune nel piè di pagina e nell’accesso; aiuto «?»; colonna N. stretta */
footer{display:flex;flex-direction:column;align-items:center;gap:6px}footer .product-logo{display:block;width:64px;height:64px}footer a{color:var(--muted)}@media(max-width:820px){footer .product-logo{width:48px;height:48px}}
.login-logo{display:flex;justify-content:center;margin:24px auto 0}.login-logo img{display:block;width:170px;height:auto}
.page-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-title h1{margin-right:0}
details.help>summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1px solid var(--primary);color:var(--primary);font-weight:700;font-size:15px}details.help>summary::-webkit-details-marker{display:none}details.help[open]>summary{background:var(--primary);color:#fff}
details.help[open]{flex-basis:100%;order:3}.helpbox{background:#fff;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:8px;padding:12px 16px;margin-top:8px;max-width:760px}.helpbox p{margin:0 0 6px}
th.num,td.num{width:4.5em;white-space:nowrap;text-align:right}
/* 0.20.1: Quadro generale */
.overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:18px}.overview>.panel,.overview>.message{grid-column:1/-1;margin:0}
.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px 22px;box-shadow:0 2px 8px #00000007}.card h2{font-size:17px;margin:0 0 14px}.card p{margin:8px 0}
.card.attention{border-left:4px solid #c97a4a}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px}
.kpi strong{display:block;font-size:26px;line-height:1.2;color:var(--ink)}.kpi a{text-decoration:none}.kpi a strong{color:var(--primary)}.kpi a:hover strong{text-decoration:underline}.kpi span{font-size:12px;color:var(--muted)}
.progress{height:10px;background:#eee;border-radius:5px;overflow:hidden;margin:4px 0 6px}.progress span{display:block;height:100%;background:var(--primary)}
ul.todo{margin:0;padding-left:18px}ul.todo li{margin:6px 0}
/* 0.21.0: bollini, riquadro documenti, impronta solo su telefono */
.dot-grey{color:#9aa0a6}.ok-line{color:#2e7d32;font-weight:600}
dl.facts{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0 0 6px}dl.facts dt{color:var(--muted);font-size:13px}dl.facts dd{margin:0;font-weight:600}
td.danger{color:#972b2b;font-weight:700}
@media (hover:hover) and (pointer:fine){form[data-passkey],.phone-only{display:none!important}}@media not ((hover:hover) and (pointer:fine)){.desktop-only{display:none}}
/* 0.22.0: sezioni chiuse in fondo alle pagine (preparazione e strumenti stagionali) */
.fold-title{margin:34px 0 4px;font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}details.panel.fold{padding:14px 24px;margin:10px 0}details.panel.fold>summary{font-size:17px;list-style:none}details.panel.fold>summary::-webkit-details-marker{display:none}details.panel.fold>summary::before{content:'▸ ';color:var(--primary)}details.panel.fold[open]>summary::before{content:'▾ '}details.panel.fold[open]{padding-bottom:22px}details.panel.fold[open]>summary{margin-bottom:14px}
/* 0.22.1: menu a gruppi. Desktop: tendine al passaggio del mouse o al tocco; telefono: gruppi in colonna con titolo. */
.topbar nav{align-items:center}.navgroup{position:relative}.navlabel{font-weight:600;cursor:pointer;color:var(--ink);padding:6px 0;display:inline-block}.navlabel::after{content:' ▾';font-size:11px;color:var(--muted)}
.topbar nav>a.current,.navgroup.current>.navlabel{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary)}
.navgroup .drop{display:none;position:absolute;top:100%;left:-12px;z-index:50;min-width:210px;padding:6px 0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001a}
.navgroup:hover .drop,.navgroup:focus-within .drop{display:block}.navgroup .drop a{display:block;padding:9px 16px;font-weight:500}.navgroup .drop a:hover{background:var(--light)}.navgroup .drop a.current{color:var(--primary);font-weight:700}
.topbar .account a.current{font-weight:700}
@media(max-width:900px){
  .navgroup{width:100%}.navlabel{display:block;padding:14px 4px 4px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;cursor:default;pointer-events:none}.navlabel::after{content:''}
  .navgroup.current>.navlabel,.topbar nav>a.current{box-shadow:none}
  .navgroup .drop{display:block;position:static;min-width:0;padding:0;border:0;border-radius:0;box-shadow:none;background:none}
  .navgroup .drop a{padding:12px 4px 12px 16px;border-bottom:1px solid var(--border);font-size:16px;font-weight:600}
}
/* 0.22.2: telefono, voci senza gruppo allineate a sinistra con «›»; spazio sotto «Accedi»; pagina Licenza */
@media(max-width:900px){
  .topbar nav{align-items:stretch}
  .topbar nav>a{display:flex;justify-content:space-between;align-items:center;padding:14px 4px;margin-top:6px;font-size:16px;font-weight:700;text-align:left}
  .topbar nav>a::after{content:'›';color:var(--muted);font-weight:400;font-size:20px;line-height:1}
  .topbar nav>a.current{color:var(--primary)}
}
form[data-passkey]{margin-top:14px}
pre.license-text{white-space:pre-wrap;font-size:12px;line-height:1.45;max-height:60vh;overflow:auto;background:#fafafa;border:1px solid var(--border);border-radius:6px;padding:12px}
/* 0.22.3: correzioni nascoste, storico del riferimento, conferma della rettifica, conto completo */
tr.fix-toggle td{color:var(--muted);font-size:12px;text-align:center;background:#fafafa}
ul.ref-history{margin:8px 0 0;padding-left:18px;font-size:12px;color:var(--muted);max-width:420px}
.panel form.registry-form>label.check{display:flex;gap:8px;align-items:center;font-weight:400}
.registry-form>label.check input{width:auto;margin:0}
.account-sum{font-size:14px}
/* 0.23.0: piè di pagina più grande del 25% su desktop (logo e testo); telefono invariato */
.nowrap{white-space:nowrap}
@media(min-width:821px){footer{font-size:15px}footer .product-logo{width:80px;height:80px}}
/* 0.24.0: note della persona e ricerca nelle liste */
textarea{width:100%;margin-top:5px;padding:10px 11px;border:1px solid #bfc3c9;border-radius:6px;background:#fff;color:var(--ink);font:inherit;resize:vertical}textarea:focus{outline:2px solid #c18b85;outline-offset:1px}
.registry-form>.wide{grid-column:1/-1}
.panel form.searchbar{margin:0 0 14px}.searchbar label{flex:1 1 260px}.searchbar .muted{align-self:center}
td.note-cell{max-width:260px;color:var(--muted)}
/* 0.25.0: anni nei documenti, storico a pagine, utenti, consiglio direttivo */
details.year-block{margin:0 0 10px;border-top:3px solid var(--primary)}
details.year-block>summary.year-head{background:var(--light);padding:10px 12px;font-weight:400;list-style:none;display:flex;gap:12px;align-items:baseline}
details.year-block>summary.year-head::-webkit-details-marker{display:none}
details.year-block>summary.year-head::before{content:'▸';color:var(--primary)}details.year-block[open]>summary.year-head::before{content:'▾'}
details.year-block>summary.year-head strong{font-size:17px;color:var(--primary)}
.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px}
.users-table details.user-tool form{margin:8px 0}.users-table td small{display:block}
.board-form .rowform{margin-bottom:12px}
.board-row{display:grid;grid-template-columns:auto minmax(160px,2fr) minmax(130px,1fr) auto minmax(140px,1.5fr);gap:10px;align-items:end;padding:8px 0;border-top:1px solid var(--border)}
.board-row label{margin:0;font-weight:600}.board-row label.check{display:flex;gap:6px;align-items:center;font-weight:400;white-space:nowrap}.board-row label.check input{width:auto;margin:0}
.board-form>label.check{display:flex;gap:8px;align-items:center;font-weight:400;margin:12px 0}.board-form>label.check input{width:auto;margin:0}
.panel.attention ul{margin:0;padding-left:20px}
@media(max-width:820px){.board-row{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.board-row{grid-template-columns:1fr}}
