:root{--navy:#26384a;--navy2:#1f2f3f;--accent:#477b77;--bg:#f4f6f8;--card:#fff;--text:#24323d;--muted:#70808c;--line:#dde3e8;--ok:#36845b;--warn:#b47a26;--danger:#a94a4a;--sidebar:226px}
*{box-sizing:border-box}html,body,form{margin:0;min-height:100%;font-family:"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg)}a{color:inherit}
.topbar{position:fixed;z-index:50;top:0;left:0;right:0;height:56px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 18px;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.4px}.brand-logo{height:38px;width:auto;max-width:132px;object-fit:contain}.brand-title{font-size:13px;font-weight:500;opacity:.78;white-space:nowrap}.top-actions{display:flex;align-items:center;gap:12px;font-size:13px}.logout{border:0;background:rgba(255,255,255,.1);color:#fff;padding:7px 10px;border-radius:7px;cursor:pointer}.menu-toggle{display:none;border:0;background:transparent;color:#fff;font-size:24px;cursor:pointer}
.shell{display:flex;padding-top:56px;min-height:100vh}.sidebar{position:fixed;top:56px;bottom:0;left:0;width:var(--sidebar);background:var(--navy2);color:#eaf0f4;padding:14px 10px;overflow-y:auto;transition:transform .2s ease}.menu-section{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;color:#91a0ac;padding:12px 10px 6px}.nav-link{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:7px;text-decoration:none;margin:2px 0;font-size:14px}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.1)}.nav-ico{width:25px;height:25px;border-radius:6px;background:rgba(255,255,255,.1);display:grid;place-items:center;font-size:15px}.nav-ico i{line-height:1}.sidebar-foot{padding:18px 10px 6px;color:#7f909d;font-size:11px;text-align:center}
.main{margin-left:var(--sidebar);width:calc(100% - var(--sidebar));padding:22px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px}.page-title{margin:0;font-size:25px;font-weight:650}.page-subtitle{margin-top:4px;color:var(--muted);font-size:13px}
.cards{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:13px;margin-bottom:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:0 2px 8px rgba(31,47,63,.04)}.metric-label{font-size:12px;color:var(--muted);margin-bottom:8px}.metric-value{font-size:24px;font-weight:650}.metric-note{font-size:11px;color:var(--muted);margin-top:6px}.grid-2{display:grid;grid-template-columns:1.35fr 1fr;gap:15px}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-head{padding:13px 15px;border-bottom:1px solid var(--line);font-weight:600;display:flex;justify-content:space-between;align-items:center}.panel-body{padding:15px}.status-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.status-pill{padding:12px;border:1px solid var(--line);border-radius:8px;text-align:center}.status-pill strong{display:block;font-size:20px}.status-pill span{font-size:11px;color:var(--muted)}
.btn{border:0;border-radius:7px;padding:9px 13px;cursor:pointer;font-weight:600}.btn-primary{background:var(--navy);color:#fff}.btn-secondary{background:#e9eef2;color:var(--text)}.form-field{margin-bottom:13px}.form-field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.input{width:100%;padding:10px 11px;border:1px solid #cdd5db;border-radius:7px;font:inherit;background:#fff}.input:focus{outline:0;border-color:#7b9694;box-shadow:0 0 0 3px rgba(71,123,119,.12)}.msg{padding:10px 12px;border-radius:7px;margin:10px 0;font-size:13px}.msg.err{background:#fff0f0;color:#8d3131;border:1px solid #efc4c4}.msg.ok{background:#effaf3;color:#286b46;border:1px solid #bfdfca}.empty{padding:30px;text-align:center;color:var(--muted)}
.login-body{background:#dfe8e8}.login-page{position:relative;min-height:100vh;display:grid;place-items:center;padding:20px;background-image:linear-gradient(rgba(25,42,51,.18),rgba(25,42,51,.18)),url("images/login-background.png");background-size:cover;background-position:center center;background-repeat:no-repeat}.login-card{width:min(390px,94vw);background:rgba(255,255,255,.94);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);border:1px solid rgba(255,255,255,.68);border-radius:16px;padding:28px;box-shadow:0 20px 55px rgba(0,0,0,.28)}.login-brand{text-align:center;margin-bottom:24px}.login-logo{display:block;width:min(250px,84%);height:auto;max-height:105px;object-fit:contain;margin:0 auto 10px}.login-brand p{margin:5px 0 0;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.25px}.login-help{text-align:center;font-size:12px;margin-top:14px;color:var(--muted)}
.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.module-card h3{margin:0 0 7px}.module-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.badge{display:inline-block;padding:3px 7px;border-radius:12px;background:#eaf0f4;font-size:10px;color:#52636f}
@media(max-width:1180px){.cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.menu-toggle{display:block}.brand small{display:none}.sidebar{transform:translateX(-100%);z-index:45}.sidebar.open{transform:translateX(0);box-shadow:8px 0 25px rgba(0,0,0,.2)}.main{margin-left:0;width:100%;padding:16px}.cards{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.module-grid{grid-template-columns:1fr}.top-user-role{display:none}.page-head{align-items:flex-start;flex-direction:column}}
@media(max-width:480px){.cards{grid-template-columns:1fr}.topbar{padding:0 11px}.top-actions{gap:6px}.top-user-name{max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-row{grid-template-columns:1fr}.page-title{font-size:22px}}
/* v0.2 - Persone */
.filters-panel{margin-bottom:14px}.filter-row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.filter-row label{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.filter-grow{flex:1;min-width:250px}.filter-select{min-width:155px}.filter-actions{display:flex;gap:7px}.table-wrap{overflow-x:auto}.data-grid{width:100%;border-collapse:collapse;background:#fff}.data-grid th{font-size:11px;text-transform:uppercase;letter-spacing:.45px;color:#71808b;text-align:left;padding:11px 13px;border-bottom:1px solid var(--line);white-space:nowrap}.data-grid td{padding:12px 13px;border-bottom:1px solid #edf0f2;font-size:13px;vertical-align:middle}.data-grid tr:last-child td{border-bottom:0}.data-grid tr:hover td{background:#fafcfd}.cell-muted{font-size:11px;color:var(--muted);margin-top:3px}.role-badge{display:inline-block;padding:4px 7px;border-radius:12px;background:#edf2f4;color:#50636f;font-size:10px;margin:2px 3px 2px 0}.status-badge{display:inline-block;padding:4px 8px;border-radius:12px;font-size:10px;font-weight:600}.status-badge.active{background:#e8f5ed;color:#2d704c}.status-badge.inactive{background:#f1f2f3;color:#737d84}.row-actions-cell{white-space:nowrap;text-align:right}.icon-btn{display:inline-grid;place-items:center;width:31px;height:31px;border-radius:7px;border:1px solid var(--line);text-decoration:none;margin-left:4px;background:#fff;color:#415361;font-size:15px}.icon-btn i{font-size:16px;line-height:1}.icon-btn:hover{background:#f2f6f8;color:var(--accent)}.modal-backdrop{display:none;position:fixed;z-index:150;inset:0;background:rgba(22,34,44,.48);padding:24px;overflow:auto}.modal-backdrop.show{display:flex;align-items:flex-start;justify-content:center}.modal-card{margin:auto;background:#fff;border-radius:12px;box-shadow:0 24px 60px rgba(0,0,0,.28);width:min(620px,100%);overflow:hidden}.modal-lg{width:min(820px,100%)}.modal-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.modal-head h2{margin:0;font-size:19px}.modal-sub{font-size:11px;color:var(--muted);margin-top:3px}.modal-close{border:0;background:transparent;font-size:26px;line-height:1;cursor:pointer;color:#71808b}.modal-body{padding:18px;max-height:70vh;overflow:auto}.modal-foot{padding:13px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fafbfc}.modal-open{overflow:hidden}.form-grid{display:grid;gap:12px}.form-grid-1{grid-template-columns:1fr}.form-grid-2{grid-template-columns:1fr 1fr}.role-checks{width:100%;border-collapse:separate;border-spacing:0 5px}.role-checks td{padding-right:18px;font-size:13px}.role-checks input{margin-right:4px}
@media(max-width:800px){.filter-row{align-items:stretch}.filter-grow,.filter-row>div{width:100%}.filter-select{width:100%}.filter-actions{width:100%}.filter-actions .btn{flex:1}.data-grid th:nth-child(3),.data-grid td:nth-child(3),.data-grid th:nth-child(4),.data-grid td:nth-child(4){display:none}.form-grid-2{grid-template-columns:1fr}.modal-backdrop{padding:8px}.modal-card{margin:20px auto}.modal-body{max-height:none}.role-checks td{display:block}}
/* v0.3 - Donazioni */
.donation-summary{display:grid;grid-template-columns:repeat(3,minmax(170px,240px));gap:10px;margin-bottom:14px}.mini-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:12px 14px}.mini-card span{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.mini-card strong{font-size:20px;font-weight:650}.donation-hint{margin-top:5px;padding:10px 12px;border-radius:7px;background:#f3f6f7;color:#61717c;font-size:11px;line-height:1.45}.donor-anonymous{font-style:italic;color:#7b8790}.data-grid td:nth-child(6){white-space:nowrap}
@media(max-width:800px){.donation-summary{grid-template-columns:1fr 1fr 1fr}.data-grid th:nth-child(4),.data-grid td:nth-child(4),.data-grid th:nth-child(5),.data-grid td:nth-child(5){display:none}}
@media(max-width:520px){.donation-summary{grid-template-columns:1fr}.mini-card{display:flex;align-items:center;justify-content:space-between}.mini-card span{margin:0}.mini-card strong{font-size:18px}}
/* v0.4 - Amministrazione e Raccolte fondi */
.collection-summary,.admin-summary{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px;margin-bottom:14px}.admin-info{margin:0 0 14px;padding:11px 13px;background:#f0f4f6;border:1px solid var(--line);border-radius:8px;color:#586a76;font-size:12px;line-height:1.45}.status-badge.planned{background:#eef2f7;color:#53697b}.goal-bar{height:5px;background:#e5eaed;border-radius:6px;overflow:hidden;margin-top:5px;min-width:95px}.goal-bar span{display:block;height:100%;background:var(--accent);border-radius:6px}.movement-type{display:inline-block;padding:4px 8px;border-radius:12px;font-size:10px;font-weight:650}.movement-type.income{background:#e8f5ed;color:#2d704c}.movement-type.expense{background:#faecec;color:#913f3f}.collection-grid td:first-child{min-width:190px}.collection-grid td:nth-child(7){min-width:110px}
@media(max-width:1000px){.collection-summary,.admin-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.collection-grid th:nth-child(2),.collection-grid td:nth-child(2),.collection-grid th:nth-child(5),.collection-grid td:nth-child(5),.collection-grid th:nth-child(7),.collection-grid td:nth-child(7){display:none}}
@media(max-width:520px){.collection-summary,.admin-summary{grid-template-columns:1fr}.collection-summary .mini-card,.admin-summary .mini-card{display:block}.collection-summary .mini-card strong,.admin-summary .mini-card strong{display:block;margin-top:2px}}

/* v0.4.1 - disponibilita e distinte contanti */
.page-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-summary.admin-summary-6{grid-template-columns:repeat(6,minmax(135px,1fr))}.treasury-card{border-top:3px solid var(--accent)}.cash-count-box{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#f8fafb;margin:8px 0 12px}.cash-count-box .form-field{margin-bottom:0}
@media(max-width:1250px){.admin-summary.admin-summary-6{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.admin-summary.admin-summary-6{grid-template-columns:repeat(2,1fr)}.page-head{gap:10px;align-items:flex-start}.page-actions{width:100%}}
@media(max-width:520px){.admin-summary.admin-summary-6{grid-template-columns:1fr}.page-actions .btn{flex:1 1 auto}}

.filter-actions .btn{white-space:nowrap}.filter-autohint{font-size:10px;color:var(--muted);margin-top:4px}.brand-logo{filter:none}

/* v0.5 - Documenti */
.document-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:14px}.document-grid td:first-child{min-width:210px}.file-name{display:inline-flex;align-items:center;gap:5px;max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-chip{display:inline-block;padding:3px 7px;border-radius:10px;background:#edf2f4;color:#52636f;font-size:10px}.entity-desc{max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.expiry-badge{display:inline-block;padding:4px 7px;border-radius:12px;font-size:10px;font-weight:600;white-space:nowrap}.expiry-ok{background:#edf5f1;color:#47705a}.expiry-soon{background:#fff4df;color:#9a671f}.expiry-expired{background:#fae9e9;color:#934343}.version-current{display:inline-block;padding:2px 6px;border-radius:10px;background:#e8f5ed;color:#2d704c;font-size:9px;margin-left:4px}.current-file{padding:10px 12px;border:1px solid var(--line);background:#f6f9fa;border-radius:7px;font-size:12px;color:#586a76}.file-input{padding:7px 9px}.icon-btn.danger:hover{background:#fff0f0;color:var(--danger);border-color:#e7c2c2}
@media(max-width:950px){.document-summary{grid-template-columns:repeat(2,1fr)}.document-grid th:nth-child(3),.document-grid td:nth-child(3),.document-grid th:nth-child(6),.document-grid td:nth-child(6){display:none}}
@media(max-width:520px){.document-summary{grid-template-columns:1fr}.document-summary .mini-card{display:flex;align-items:center;justify-content:space-between}.document-summary .mini-card span{margin:0}}

/* login logo con claim */
.login-card{width:min(430px,94vw)}.login-logo{width:min(345px,96%);max-height:none;margin-bottom:12px}

/* v0.6 - Utenti e Report */
.admin-summary-3{grid-template-columns:repeat(3,minmax(160px,1fr))}.role-badge{display:inline-block;padding:4px 8px;border-radius:12px;background:#eef4f5;color:#45616c;font-size:10px;font-weight:600}.status-pill{display:inline-block;padding:4px 8px;border-radius:12px;font-size:10px;font-weight:600}.status-active{background:#e8f5ed;color:#2f7250}.status-off{background:#f1f2f3;color:#7b858b}.modal-sm{max-width:500px}.field-note{font-size:10px;color:var(--muted);margin-top:4px}.report-summary{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:10px;margin-bottom:14px}.report-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;margin-bottom:14px}.report-transparency{margin-top:14px}.report-transparency p{margin:0 0 7px}.muted{color:var(--muted)}
@media(max-width:1100px){.report-summary{grid-template-columns:repeat(3,1fr)}.report-grid{grid-template-columns:1fr}}
@media(max-width:700px){.admin-summary-3,.report-summary{grid-template-columns:1fr}}
