:root {
  color-scheme: dark;
  --bg:#080d17; --panel:#0f1726; --panel2:#131e31; --line:#24324a; --text:#edf4ff; --muted:#8fa1bb;
  --accent:#5eead4; --accent2:#7dd3fc; --good:#86efac; --bad:#fca5a5; --warn:#fcd34d; --radius:22px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
*{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at 80% -10%,#1a3550 0,transparent 30%),var(--bg);color:var(--text);min-height:100vh}
button,input,select,textarea{font:inherit} button{cursor:pointer}.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{padding:28px 18px;border-right:1px solid var(--line);background:rgba(9,14,24,.86);backdrop-filter:blur(16px);position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:4px 10px 28px}.brand-mark{width:40px;height:40px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;color:#07121a;font-weight:900}.brand strong{display:block}.brand small{color:var(--muted)}.nav{display:grid;gap:8px}.nav button{border:0;background:transparent;color:var(--muted);padding:13px 14px;border-radius:14px;text-align:left}.nav button.active,.nav button:hover{background:var(--panel2);color:var(--text)}.sidebar-foot{position:absolute;bottom:24px;left:28px;right:28px;color:var(--muted);font-size:12px}.main{padding:34px clamp(18px,4vw,54px) 90px;max-width:1500px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:28px}.eyebrow{color:var(--accent);font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase}.topbar h1{margin:5px 0 0;font-size:clamp(26px,4vw,42px);letter-spacing:-.04em}.top-actions{display:flex;gap:10px;align-items:center}.select,.field input,.field select,.field textarea{background:#0a1220;border:1px solid var(--line);color:var(--text);border-radius:13px;padding:12px 14px;outline:none}.select:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:13px;padding:11px 15px;font-weight:700}.btn.primary{background:var(--accent);border-color:var(--accent);color:#06201c}.btn.danger{color:var(--bad)}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.card{background:linear-gradient(180deg,rgba(22,34,54,.92),rgba(13,22,37,.92));border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 12px 40px rgba(0,0,0,.15)}.kpi .label{color:var(--muted);font-size:13px}.kpi .value{font-size:clamp(22px,3vw,34px);font-weight:800;margin-top:9px;letter-spacing:-.04em}.kpi .hint{margin-top:8px;font-size:12px;color:var(--muted)}.positive{color:var(--good)}.negative{color:var(--bad)}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.section-title h2{font-size:18px;margin:0}.muted{color:var(--muted)}.chart{height:230px;display:flex;align-items:end;gap:8px;padding-top:22px}.chart-col{flex:1;display:grid;gap:7px;justify-items:center;min-width:0}.bar-wrap{height:170px;width:100%;display:flex;align-items:flex-end;justify-content:center}.bar{width:min(30px,70%);min-height:3px;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--accent2),var(--accent));opacity:.9}.bar.negative-bar{background:linear-gradient(180deg,#fb7185,#fca5a5)}.chart-label{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.breakdown{display:grid;gap:13px}.break-row{display:grid;grid-template-columns:130px 1fr auto;gap:10px;align-items:center;font-size:13px}.track{height:8px;background:#0a1220;border-radius:99px;overflow:hidden}.track span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:99px}.list{display:grid;gap:9px}.tx{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(36,50,74,.65)}.tx:last-child{border-bottom:0}.tx-title{font-weight:700}.tx-meta{font-size:12px;color:var(--muted);margin-top:3px}.badge{font-size:11px;border:1px solid var(--line);padding:5px 8px;border-radius:99px;color:var(--muted)}.amount{font-weight:800}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-head h2{margin:0}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:13px 10px;border-bottom:1px solid var(--line);font-size:13px}.table th{color:var(--muted);font-weight:600}.right{text-align:right!important}.icon-btn{border:0;background:transparent;color:var(--muted);font-size:18px}.empty{padding:38px;text-align:center;color:var(--muted)}.savings-hero{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.big-number{font-size:42px;font-weight:900;letter-spacing:-.05em;margin:8px 0}.funds{grid-template-columns:repeat(3,minmax(0,1fr))}.fund-card .progress{height:10px;background:#0a1220;border-radius:99px;overflow:hidden;margin:14px 0 8px}.fund-card .progress span{height:100%;display:block;background:linear-gradient(90deg,var(--accent),var(--accent2))}.settings{grid-template-columns:1fr 1fr}.field{display:grid;gap:7px}.field label{color:var(--muted);font-size:12px;font-weight:700}.stack{display:grid;gap:14px}.notice{border:1px solid #35546a;background:#102337;padding:14px 16px;border-radius:14px;color:#c9e8ff;font-size:13px;line-height:1.5}.modal-backdrop{position:fixed;inset:0;background:rgba(2,6,12,.72);display:grid;place-items:center;padding:18px;z-index:50;backdrop-filter:blur(8px)}.modal{width:min(560px,100%);max-height:90vh;overflow:auto;background:#0e1727;border:1px solid var(--line);border-radius:24px;padding:22px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal h3{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid .wide{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.toast{position:fixed;right:22px;bottom:22px;background:#13263a;border:1px solid #31506d;padding:13px 16px;border-radius:14px;z-index:80;box-shadow:0 16px 40px rgba(0,0,0,.35)}.bottom-nav{display:none}
@media(max-width:1000px){.shell{grid-template-columns:1fr}.sidebar{display:none}.main{padding-top:24px}.kpis{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.funds{grid-template-columns:1fr 1fr}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;z-index:30;background:rgba(10,16,27,.95);backdrop-filter:blur(18px);border-top:1px solid var(--line);padding:7px max(7px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left))}.bottom-nav button{background:transparent;border:0;color:var(--muted);padding:8px 2px;font-size:10px}.bottom-nav button.active{color:var(--accent)}}
@media(max-width:650px){.topbar{align-items:flex-start;flex-direction:column}.top-actions{width:100%}.select{flex:1;min-width:0}.kpis,.savings-hero,.settings,.funds{grid-template-columns:1fr}.card{padding:16px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.break-row{grid-template-columns:100px 1fr auto}.table-wrap{overflow:auto}.table{min-width:720px}.main{padding-inline:14px}.chart{height:200px}.bar-wrap{height:140px}.tx{grid-template-columns:1fr auto}.tx .badge{display:none}}

/* v0.2 — dashboard, filtri e fondi collegati ai risparmi */
.main{padding-top:calc(34px + env(safe-area-inset-top))}
.dashboard-top-grid{grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr);margin-bottom:16px}
.dashboard-section{margin-top:16px}
.resoconto-card{min-height:100%}
.resoconto-stack{gap:0}
.formula-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid rgba(36,50,74,.55)}
.formula-row:last-child{border-bottom:0}
.formula-total{padding-top:16px;margin-top:5px;border-top:1px solid var(--line);border-bottom:0;font-size:18px}
.compact-chart-card{padding-bottom:14px}
.chart.compact-chart{height:135px;padding-top:4px}
.compact-chart .bar-wrap{height:95px}
.compact-chart .bar{width:min(28px,65%)}
.is-hidden{display:none!important}
.fund-kpis{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}
.fund-flow{display:flex;gap:14px;justify-content:space-between;color:var(--muted);font-size:12px;margin-top:8px}
.fund-flow strong{color:var(--text);display:block;margin-top:4px;font-size:14px}
.fund-no-target{margin-top:14px}
.fund-actions{display:flex;gap:8px;margin-top:16px}
.fund-actions .btn{flex:1}
.fund-movement-list{display:grid}
.fund-tx{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(36,50,74,.65)}
.fund-tx:last-child{border-bottom:0}
.fund-pill{font-size:11px;border:1px solid #356a61;background:#102b28;padding:6px 9px;border-radius:99px;color:#bdf7ea;white-space:nowrap}
.fund-pill.unassigned{border-color:#6d5a2b;background:#2c2512;color:#f8dda0}
.btn.small{padding:7px 10px;font-size:11px}
.unassigned-card{border-color:#6d5a2b}

@media(max-width:1000px){
  .main{padding-top:calc(24px + env(safe-area-inset-top))}
  .dashboard-top-grid{grid-template-columns:1fr}
  .fund-kpis{grid-template-columns:1fr 1fr 1fr}
}
@media(max-width:650px){
  .fund-kpis{grid-template-columns:1fr}
  .fund-tx{grid-template-columns:minmax(0,1fr) auto;gap:8px 10px}
  .fund-tx .fund-pill{grid-column:1/2;width:max-content;max-width:100%;overflow:hidden;text-overflow:ellipsis}
  .fund-tx .amount{grid-column:2/3;grid-row:1/2}
  .fund-tx .btn.small{grid-column:2/3;grid-row:2/3}
  .compact-chart-card{padding-inline:12px}
  .chart.compact-chart{height:125px;gap:4px}
  .compact-chart .bar-wrap{height:88px}
}

/* v0.3 — cicli dinamici e filtri temporali */
.cycle-range{margin-top:5px;color:var(--muted);font-size:12px}
.cycle-picker{display:flex;align-items:center;gap:6px;min-width:min(520px,55vw)}
.cycle-picker .select{min-width:0;flex:1}
.cycle-arrow{padding-inline:13px;font-size:20px;line-height:1}
.filter-group{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid rgba(36,50,74,.55)}
.filter-group:last-of-type{border-bottom:0}
.filter-label{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
.date-control{min-width:150px}
.range-separator{align-self:center;color:var(--muted);padding:0 2px}
.cycle-preview{font-size:12px;color:var(--accent);margin-top:2px}

@media(max-width:900px){
  .top-actions{width:100%;flex-wrap:wrap}
  .cycle-picker{min-width:0;flex:1 1 100%}
  .top-actions>.btn.primary{flex:1 1 auto}
}
@media(max-width:650px){
  .cycle-picker{width:100%}
  .cycle-picker .select{font-size:12px;padding-inline:9px}
  .cycle-arrow{padding:10px 11px}
  .toolbar .date-control{flex:1 1 140px;min-width:0}
  .range-separator{display:none}
}
