:root{--bg:#0b1020;--panel:#121a2e;--panel2:#17223b;--line:#263452;--text:#f5f7fb;--muted:#94a3b8;--accent:#6ee7d8;--accent2:#8b5cf6;--orange:#fb923c;--red:#fb7185;--green:#4ade80;--blue:#60a5fa;--shadow:0 20px 60px rgba(0,0,0,.24)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 15% 0%,#182744 0,#0b1020 40%);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:24px 18px;background:rgba(9,14,28,.88);border-right:1px solid var(--line);backdrop-filter:blur(18px);display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;color:#07111b;font-weight:900;box-shadow:0 10px 30px rgba(110,231,216,.2)}.brand strong{display:block;font-size:18px}.brand span{display:block;color:var(--muted);font-size:12px;margin-top:2px}.sidebar nav{margin-top:36px;display:grid;gap:8px}.sidebar nav a{padding:12px 14px;border-radius:12px;color:#b9c5d9;font-weight:700}.sidebar nav a:hover,.sidebar nav a.active{background:linear-gradient(90deg,rgba(110,231,216,.13),rgba(139,92,246,.08));color:#fff}.sidebar-foot{margin-top:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(74,222,128,.1)}.link-button{border:0;background:none;color:var(--muted);cursor:pointer;padding:0;margin-left:auto}.topbar{display:flex;justify-content:space-between;align-items:center;padding:34px 38px 18px}.topbar h1{margin:4px 0 0;font-size:32px;letter-spacing:-.04em}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:800;color:var(--accent)}main{min-width:0;padding-bottom:50px}.top-actions{display:flex;gap:10px}.btn{border:1px solid var(--line);border-radius:12px;padding:11px 16px;font-weight:800;color:white;background:var(--panel2);cursor:pointer;box-shadow:0 8px 25px rgba(0,0,0,.12)}.btn:hover{transform:translateY(-1px)}.btn.primary{background:linear-gradient(135deg,#14b8a6,#6366f1);border-color:transparent}.btn.ghost{background:rgba(255,255,255,.04)}.btn:disabled{opacity:.45;cursor:not-allowed}.kpi-grid,.grid-2,.settings-grid,.planner-summary{margin:0 38px 20px;display:grid;gap:16px}.kpi-grid{grid-template-columns:1.4fr repeat(3,1fr)}.kpi,.card,.planner-summary>div{background:linear-gradient(180deg,rgba(23,34,59,.92),rgba(16,24,42,.92));border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.kpi{padding:22px;min-height:145px;display:flex;flex-direction:column;justify-content:center}.kpi strong{font-size:30px;letter-spacing:-.04em}.kpi small{color:var(--muted);margin-top:8px}.kpi-label{color:var(--muted);font-size:12px;font-weight:800;margin-bottom:10px}.hero-kpi{flex-direction:row;align-items:center;justify-content:space-between}.ring{--p:0;position:relative;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p)*1%),rgba(255,255,255,.08) 0)}.ring:after{content:"";position:absolute;inset:8px;border-radius:50%;background:#15203a}.ring span{z-index:1;font-weight:900}.grid-2{grid-template-columns:1fr 1fr}.card{padding:22px}.card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.card h2{margin:4px 0 0;font-size:20px}.text-link{color:var(--accent);font-size:13px;font-weight:800}.today-times{display:grid;grid-template-columns:1fr auto 1fr;gap:15px;align-items:center;background:rgba(255,255,255,.035);padding:18px;border-radius:16px}.today-times span,.today-extra span,.live-row span{color:var(--muted);display:block;font-size:12px}.today-times strong{font-size:30px}.arrow{color:var(--accent);font-size:22px}.today-extra,.live-row{display:flex;justify-content:space-between;padding:14px 4px 0}.today-extra strong{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:12px}.badge{padding:6px 9px;border-radius:999px;background:#25324d;color:#cbd5e1;font-size:11px;font-weight:900;text-transform:uppercase}.badge.work{background:rgba(74,222,128,.13);color:#86efac}.badge.leave{background:rgba(96,165,250,.15);color:#93c5fd}.badge.sick{background:rgba(251,113,133,.15);color:#fda4af}.badge.holiday{background:rgba(139,92,246,.16);color:#c4b5fd}.bars{display:grid;gap:12px}.bar-row{display:grid;grid-template-columns:60px 1fr 54px;gap:10px;align-items:center;font-size:12px}.bar-track{height:8px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.bar-track i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent2));min-width:2px}.compact-list{display:grid}.compact-list>div{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);align-items:center}.compact-list>div:last-child{border:0}.compact-list strong{font-size:13px}.compact-list em{font-style:normal;color:var(--accent);font-weight:900}.sync-state{display:flex;align-items:center;gap:10px}.sync-state .pulse,.sync-state i{width:9px;height:9px;border-radius:50%;background:var(--orange)}.sync-state.ok .pulse,.sync-state.ok i{background:var(--green)}.sync-state.error .pulse,.sync-state.error i{background:var(--red)}.sync-state small{display:block;color:var(--muted);margin-top:3px}.segmented{display:flex;align-items:center;border:1px solid var(--line);border-radius:12px;overflow:hidden}.segmented>*{padding:9px 13px}.segmented a:hover{background:rgba(255,255,255,.06)}.calendar-card{margin:0 38px}.legend{display:flex;flex-wrap:wrap;gap:18px;color:var(--muted);font-size:12px;margin-bottom:16px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;background:#64748b}.dot.work{background:var(--green)}.dot.leave{background:var(--blue)}.dot.sick{background:var(--red)}.dot.holiday{background:var(--accent2)}.day-table{overflow:auto}.day-row{min-width:1050px;display:grid;grid-template-columns:90px 1.3fr 90px 100px 110px 1.6fr 1.1fr;gap:12px;align-items:center;padding:12px 10px;border-bottom:1px solid rgba(38,52,82,.8);font-size:13px}.day-row.head{position:sticky;top:0;background:#18243d;z-index:2;border-radius:10px;color:#9eacc4;font-size:11px;text-transform:uppercase;font-weight:900}.day-row>span:first-child{display:flex;gap:8px;align-items:baseline}.day-row small{display:block;color:var(--muted);font-size:10px}.day-row.status-leave{background:rgba(96,165,250,.04)}.day-row.status-sick{background:rgba(251,113,133,.04)}.day-row.status-holiday{background:rgba(139,92,246,.05)}.day-row.status-rest{opacity:.58}.punches{display:flex;gap:8px;flex-wrap:wrap}.punches b{font-size:11px;background:#202d49;padding:6px 8px;border-radius:8px}.just{color:#bdc8da;font-size:11px}.planner-summary{grid-template-columns:repeat(5,1fr)}.planner-summary>div{padding:18px}.planner-summary span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase}.planner-summary strong{display:block;font-size:23px;margin-top:5px}.planner-table{margin-top:6px}.accent{color:var(--accent);font-weight:900}.settings-grid{grid-template-columns:1fr 1fr}.settings-grid .wide{grid-column:1/-1}.settings-grid label,.stack label{display:grid;gap:7px;color:#c6d1e2;font-size:12px;font-weight:800;margin:12px 0}.settings-grid input,.settings-grid select,.stack input,.inline-form input,.inline-form select{width:100%;padding:11px 12px;border-radius:11px;border:1px solid var(--line);background:#0d1528;color:white;outline:none}.settings-grid input:focus,.settings-grid select:focus,.stack input:focus{border-color:#4fd1c5;box-shadow:0 0 0 3px rgba(79,209,197,.09)}.split{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{display:flex!important;grid-template-columns:none!important;align-items:center;gap:10px!important}.check input{width:auto}.weekday-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.weekday-grid>div{padding:14px;background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:14px}.form-actions{text-align:right}.alert{margin:0 38px 18px;padding:13px 16px;border-radius:12px;border:1px solid var(--line);font-size:13px}.card .alert{margin:12px 0}.alert.success{background:rgba(74,222,128,.09);border-color:rgba(74,222,128,.28);color:#bbf7d0}.alert.danger{background:rgba(251,113,133,.09);border-color:rgba(251,113,133,.28);color:#fecdd3}.alert.warning{background:rgba(251,146,60,.09);border-color:rgba(251,146,60,.28);color:#fed7aa}.inline-form{display:flex;gap:8px;align-items:end}.log-list{display:grid}.log-item{display:grid;grid-template-columns:90px 180px 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px}.log-item p{grid-column:2/-1;margin:0;color:var(--muted)}.empty{color:var(--muted);padding:26px 0;text-align:center}.login-body{display:grid;place-items:center;min-height:100vh;padding:20px}.login-card{width:min(440px,100%);padding:32px;border:1px solid var(--line);background:rgba(18,26,46,.93);border-radius:24px;box-shadow:var(--shadow)}.login-brand{margin-bottom:32px}.login-card h1{font-size:28px;margin:0 0 8px}.login-card .alert{margin:14px 0}.stack{display:grid;gap:8px}.value-out{float:right;color:var(--accent)}
@media(max-width:1100px){.kpi-grid{grid-template-columns:1fr 1fr}.planner-summary{grid-template-columns:repeat(3,1fr)}.weekday-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-shell{display:block}.sidebar{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:14px}.sidebar nav{display:flex;overflow:auto;margin-top:14px}.sidebar nav a{white-space:nowrap}.sidebar-foot{display:none}.topbar{padding:24px 18px 14px}.topbar h1{font-size:26px}.kpi-grid,.grid-2,.settings-grid,.planner-summary{margin-left:18px;margin-right:18px;grid-template-columns:1fr}.calendar-card{margin:0 18px}.settings-grid .wide{grid-column:auto}.weekday-grid{grid-template-columns:1fr 1fr}.alert{margin-left:18px;margin-right:18px}.top-actions .btn{padding:9px 11px}.hero-kpi{min-height:140px}}
/* v0.3 · Cloudflare custom domain + passkey */
.full{display:block;width:100%;text-align:center}.big{padding:14px 18px;font-size:15px}.hidden{display:none!important}.auth-card{text-align:center;width:min(480px,100%)}.wide-auth{width:min(600px,100%)}.auth-card .login-brand{text-align:left}.auth-icon{width:68px;height:68px;border-radius:22px;margin:4px auto 20px;display:grid;place-items:center;font-size:38px;font-weight:900;background:linear-gradient(135deg,rgba(110,231,216,.17),rgba(139,92,246,.2));border:1px solid rgba(110,231,216,.22);color:var(--accent)}.auth-card h1{margin-bottom:10px}.auth-card .btn{margin-top:14px}.auth-status{min-height:22px;margin:12px 0}.auth-recovery{display:inline-block;margin-top:10px}.auth-meta{display:grid;gap:7px;margin:18px 0;text-align:left;padding:13px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid var(--line)}.auth-meta span{font-size:11px;text-transform:uppercase;color:var(--muted);font-weight:800}.auth-meta code{word-break:break-all;color:var(--accent)}.terminal-hint{margin:16px 0;padding:12px;border-radius:12px;background:#090f1d;border:1px solid var(--line);text-align:left;overflow:auto}.terminal-hint code{color:#a7f3d0}.stack-label{display:grid;gap:8px;text-align:left;color:#c6d1e2;font-size:12px;font-weight:800;margin:14px 0}.stack-label input{width:100%;padding:11px 12px;border-radius:11px;border:1px solid var(--line);background:#0d1528;color:white;outline:none}.security-card{margin:0 38px 20px}.passkey-list{display:grid;gap:10px}.passkey-item{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.passkey-item .meta{min-width:0}.passkey-item strong{display:block}.passkey-item small{display:block;color:var(--muted);margin-top:4px;word-break:break-word}.btn.danger{background:rgba(251,113,133,.10);border-color:rgba(251,113,133,.24);color:#fecdd3}.passkey-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.security-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--accent);word-break:break-all}
@media(max-width:760px){.security-card{margin-left:18px;margin-right:18px}.passkey-item{align-items:flex-start;flex-direction:column}.passkey-actions{width:100%}}

/* v0.4.2 - leggibilita dashboard/piano mensile */
.kpi-copy{display:grid;gap:5px;min-width:0}.kpi-copy .kpi-label{display:block;margin:0}.kpi-copy .kpi-value{display:block;line-height:1.05;margin:2px 0}.kpi-copy small{display:block;margin-top:2px}.hero-kpi{gap:22px}.planner-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.month-nav span{min-width:150px;text-align:center;font-weight:800}.planner-month-card{margin:0 38px}.planner-month-head{align-items:center}.month-count{color:var(--muted);font-size:12px;font-weight:700;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.025)}.planner-row{min-width:1180px;grid-template-columns:140px 110px 105px 145px 145px 145px minmax(180px,1fr);column-gap:18px}.planner-row>span:first-child,.planner-date{display:grid!important;gap:4px!important;align-items:start!important}.planner-date strong{line-height:1.15}.planner-date small{font-size:11px;margin:0}.planner-status{display:flex;align-items:center;justify-content:flex-start;min-width:0}.planner-status .badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px}.planner-empty{min-width:0;padding:38px 12px}.day-row:not(.planner-row)>span:first-child{display:grid;gap:3px;align-items:start}.day-row:not(.planner-row)>span:first-child small{margin-top:1px}
@media(max-width:760px){.planner-month-card{margin-left:18px;margin-right:18px}.planner-actions{justify-content:flex-end}.month-nav span{min-width:120px}.hero-kpi{gap:14px}.kpi-copy .kpi-value{font-size:28px}}

/* v0.4.4 - tema chiaro predefinito, stati calendario leggibili e riepiloghi progressivi */
html[data-theme="light"],html:not([data-theme]){
  --bg:#f4f7fb;--bg2:#eaf1f8;--panel:#ffffff;--panel2:#f7f9fc;--line:#d7e1ed;
  --text:#142033;--muted:#65758b;--accent:#0f9f91;--accent2:#7457d9;--orange:#d97706;
  --red:#dc4c64;--green:#219653;--blue:#3478d4;--shadow:0 16px 40px rgba(35,55,80,.10);
  --sidebar:#ffffff;--head:#edf3f9;--field:#ffffff;--punch:#e9f0f8;--just:#475569;
  --work-row:rgba(33,150,83,.085);--leave-row:rgba(52,120,212,.11);--sick-row:rgba(220,76,100,.11);
  --permit-row:rgba(217,119,6,.11);--holiday-row:rgba(116,87,217,.12);--rest-row:rgba(100,116,139,.055);
}
html[data-theme="dark"]{
  --bg:#0b1020;--bg2:#182744;--panel:#121a2e;--panel2:#17223b;--line:#263452;
  --text:#f5f7fb;--muted:#94a3b8;--accent:#6ee7d8;--accent2:#8b5cf6;--orange:#fb923c;
  --red:#fb7185;--green:#4ade80;--blue:#60a5fa;--shadow:0 20px 60px rgba(0,0,0,.24);
  --sidebar:rgba(9,14,28,.92);--head:#18243d;--field:#0d1528;--punch:#202d49;--just:#bdc8da;
  --work-row:rgba(74,222,128,.055);--leave-row:rgba(96,165,250,.08);--sick-row:rgba(251,113,133,.085);
  --permit-row:rgba(251,146,60,.08);--holiday-row:rgba(139,92,246,.095);--rest-row:rgba(148,163,184,.025);
}
html[data-theme="light"] body,html:not([data-theme]) body,html[data-theme="dark"] body{
  background:radial-gradient(circle at 15% 0%,var(--bg2) 0,var(--bg) 42%);color:var(--text);
}
.sidebar{background:var(--sidebar)}
.sidebar nav a{color:var(--muted)}
.sidebar nav a:hover,.sidebar nav a.active{color:var(--text)}
.kpi,.card,.planner-summary>div,.calendar-summary>article{background:var(--panel);border-color:var(--line);box-shadow:var(--shadow)}
.btn{color:var(--text);background:var(--panel2)}
.btn.primary{color:#fff}
.btn.ghost{background:var(--panel2)}
.ring:after{background:var(--panel)}
.today-times,.weekday-grid>div,.passkey-item,.month-count{background:var(--panel2)}
.bar-track{background:color-mix(in srgb,var(--line) 62%,transparent)}
.day-row.head{background:var(--head);color:var(--muted)}
.punches b{background:var(--punch);color:var(--text)}
.just{color:var(--just)}
.settings-grid label,.stack label,.stack-label{color:var(--text)}
.settings-grid input,.settings-grid select,.stack input,.inline-form input,.inline-form select,.stack-label input{background:var(--field);color:var(--text)}
.login-card{background:var(--panel)}
.terminal-hint{background:var(--panel2)}
.auth-meta{background:var(--panel2)}
.link-button{color:var(--muted)}

.theme-toggle{width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--text);display:grid;place-items:center;cursor:pointer;font-size:19px;box-shadow:0 6px 18px rgba(0,0,0,.06)}
.theme-toggle:hover{transform:translateY(-1px)}
.auth-theme-toggle{position:fixed;right:18px;top:18px;z-index:5}

.calendar-summary{margin:0 38px 18px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.calendar-summary>article{padding:16px 17px;border:1px solid var(--line);border-radius:16px}
.calendar-summary span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:850}
.calendar-summary strong{display:block;font-size:22px;margin-top:6px;letter-spacing:-.025em}
.calendar-summary small{display:block;color:var(--muted);font-size:10px;margin-top:5px}
.positive{color:var(--green)}.negative{color:var(--red)}.warning-text{color:var(--orange)}

.calendar-row{min-width:1440px;grid-template-columns:82px 105px 1.3fr 80px 95px 115px 125px minmax(260px,1.55fr) minmax(170px,1fr);column-gap:14px;position:relative;border-left:4px solid transparent;padding-left:12px}
.calendar-date{display:grid!important;gap:3px!important;align-items:start!important}
.calendar-status{display:flex;align-items:center}
.status-chip{display:inline-flex;align-items:center;justify-content:center;min-width:74px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:850;border:1px solid transparent}
.status-chip.work{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent);border-color:color-mix(in srgb,var(--green) 28%,transparent)}
.status-chip.leave{color:var(--blue);background:color-mix(in srgb,var(--blue) 13%,transparent);border-color:color-mix(in srgb,var(--blue) 28%,transparent)}
.status-chip.sick{color:var(--red);background:color-mix(in srgb,var(--red) 13%,transparent);border-color:color-mix(in srgb,var(--red) 28%,transparent)}
.status-chip.permit{color:var(--orange);background:color-mix(in srgb,var(--orange) 13%,transparent);border-color:color-mix(in srgb,var(--orange) 28%,transparent)}
.status-chip.holiday{color:var(--accent2);background:color-mix(in srgb,var(--accent2) 13%,transparent);border-color:color-mix(in srgb,var(--accent2) 28%,transparent)}
.status-chip.rest{color:var(--muted);background:color-mix(in srgb,var(--muted) 10%,transparent);border-color:color-mix(in srgb,var(--muted) 24%,transparent)}
.day-row.status-work{background:var(--work-row);border-left-color:var(--green)}
.day-row.status-leave{background:var(--leave-row);border-left-color:var(--blue)}
.day-row.status-sick{background:var(--sick-row);border-left-color:var(--red)}
.day-row.status-permit{background:var(--permit-row);border-left-color:var(--orange)}
.day-row.status-holiday{background:var(--holiday-row);border-left-color:var(--accent2)}
.day-row.status-rest{background:var(--rest-row);border-left-color:color-mix(in srgb,var(--muted) 55%,transparent);opacity:.72}
.day-row.calendar-row.head{border-left-color:transparent;opacity:1}
.dot.permit{background:var(--orange)}
.overtime-detected,.authorized-cell{display:grid;gap:3px;align-items:center;justify-items:start}
.overtime-detected strong{color:var(--orange)}
.authorized-cell strong{color:var(--green)}
.pending-label,.authorized-label{display:inline-block!important;font-size:9px!important;line-height:1;padding:4px 6px;border-radius:999px;margin:0!important;font-weight:850;text-transform:uppercase;letter-spacing:.03em}
.pending-label{color:var(--orange)!important;background:color-mix(in srgb,var(--orange) 12%,transparent)}
.authorized-label{color:var(--green)!important;background:color-mix(in srgb,var(--green) 12%,transparent)}

.trend-row{grid-template-columns:62px minmax(100px,1fr) 62px;row-gap:3px}
.trend-row>small{grid-column:2/4;color:var(--muted);font-size:10px}

@media(max-width:1200px){.calendar-summary{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.calendar-summary{margin-left:18px;margin-right:18px;grid-template-columns:1fr 1fr}.calendar-summary>article:last-child{grid-column:1/-1}.theme-toggle{width:38px;height:38px}.top-actions{align-items:center}}
html[data-theme="light"] .badge{background:#e8eef6;color:#475569}
html[data-theme="light"] .badge.work{background:#e3f5e9;color:#18743e}
html[data-theme="light"] .badge.leave{background:#e5effd;color:#285f9f}
html[data-theme="light"] .badge.sick{background:#fde8ec;color:#a62f45}
html[data-theme="light"] .badge.holiday{background:#eee9fc;color:#6145b9}
html[data-theme="light"] .badge.permit{background:#fff0dc;color:#9a5a05}
html[data-theme="light"] .alert.success{background:#e8f7ed;border-color:#b6dfc3;color:#166534}
html[data-theme="light"] .alert.danger{background:#fcebef;border-color:#f3c2cc;color:#9f263b}
html[data-theme="light"] .alert.warning{background:#fff3e2;border-color:#f4d0a0;color:#92520a}
html[data-theme="light"] .terminal-hint code{color:#08796f}
.segmented a:hover{background:var(--panel2)}

/* v0.4.5 - autorizzazioni Sigma authoritative + calendario piu semplice */
.calendar-help{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--panel2);font-size:11px;color:var(--muted)}
.calendar-help>strong{color:var(--text);font-size:12px;margin-right:2px}.calendar-help>span{display:flex;align-items:center;gap:7px}
.mini-state{font-size:8px;line-height:1;padding:5px 7px;border-radius:999px;letter-spacing:.035em}.mini-state.ok{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}.mini-state.pending{color:var(--orange);background:color-mix(in srgb,var(--orange) 13%,transparent)}
.compact-legend{padding-top:10px;padding-bottom:10px}.summary-authorized{border-color:color-mix(in srgb,var(--green) 30%,var(--line))!important}.summary-authorized strong{color:var(--green)}.summary-warning{border-color:color-mix(in srgb,var(--orange) 35%,var(--line))!important}
.calendar-row.simple{min-width:1240px;grid-template-columns:82px 108px 1.25fr 115px 155px minmax(330px,1.8fr) minmax(180px,1fr);column-gap:18px}
.hours-cell,.overtime-cell,.plan-cell{display:grid;gap:3px;align-content:center;justify-items:start}.hours-cell strong{font-size:13px}.hours-cell small,.plan-cell small{color:var(--muted);font-size:9px;margin:0}.authorized-value{color:var(--green);font-size:14px}.pending-value{color:var(--orange);font-size:14px}.overtime-cell .authorized-label,.overtime-cell .pending-label{margin-top:1px!important}.calendar-row.simple .just{line-height:1.35}.calendar-row.simple.status-work:has(.authorized-label){background:color-mix(in srgb,var(--green) 11%,var(--panel))}
@media(max-width:760px){.calendar-help{align-items:flex-start;flex-direction:column;gap:8px}.calendar-summary{grid-template-columns:1fr}.calendar-summary>article:last-child{grid-column:auto}}

/* v0.4.6 - import responsive, weekend=festa, riepilogo semplice, calendario iPhone */
.history-import-form{display:grid;grid-template-columns:minmax(140px,.7fr) minmax(220px,1.3fr) auto;gap:12px;align-items:end;margin-top:18px}
.history-import-form label{display:grid;gap:6px;margin:0;color:var(--muted);font-size:11px;font-weight:800}
.history-import-form input,.history-import-form select{height:46px;width:100%;padding:0 13px;border-radius:12px;border:1px solid var(--line);background:var(--field);color:var(--text);outline:none}
.history-import-button{height:46px;min-width:150px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.sync-note{margin:12px 0 0}.sync-log-card{margin:0 38px 20px}.sync-grid .card{min-width:0}
.calendar-summary-simple{grid-template-columns:repeat(4,minmax(0,1fr))}.summary-overtime strong{color:var(--accent)}.text-ok{color:var(--green)}.text-pending{color:var(--orange)}
.compact-help{padding:11px 16px;justify-content:flex-start}.compact-help>span{font-size:10px}.compact-legend{margin:0;padding:10px 16px;border-bottom:1px solid var(--line)}
.pending-label{white-space:nowrap}.overtime-cell .pending-label{text-transform:none;letter-spacing:0}
.iphone-calendar-card{margin:0 38px 20px}.calendar-feed-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin:14px 0}.calendar-feed-box input{width:100%;min-width:0;height:44px;border:1px solid var(--line);border-radius:11px;padding:0 12px;background:var(--field);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
.status-chip.holiday{font-weight:900}.day-row.status-holiday{opacity:1}
@media(max-width:1050px){.history-import-form{grid-template-columns:1fr 1fr}.history-import-button{grid-column:1/-1;width:100%}.calendar-summary-simple{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.history-import-form{grid-template-columns:1fr}.history-import-button{grid-column:auto;width:100%}.sync-log-card,.iphone-calendar-card{margin-left:18px;margin-right:18px}.calendar-summary-simple{grid-template-columns:1fr}.calendar-feed-box{grid-template-columns:1fr}.calendar-feed-box .btn{width:100%}.iphone-calendar-card .card-head{gap:14px;align-items:stretch;flex-direction:column}.iphone-calendar-card .card-head .btn{text-align:center}}

/* v0.4.7 - saldo residuo vs straordinario annuo, breakdown mensile */
.app-version{font-size:10px;color:var(--muted);opacity:.78;margin-left:2px}
.calendar-summary-v047{grid-template-columns:repeat(5,minmax(0,1fr))}
.summary-balance strong{color:var(--text)}
.summary-estimated{border-style:dashed!important}.summary-estimated strong{color:var(--accent)}
.metric-explainer{margin:0 38px 16px;padding:0;overflow:hidden}
.metric-explainer summary{cursor:pointer;padding:13px 17px;font-size:12px;font-weight:850;color:var(--text);background:var(--panel2);list-style-position:inside}
.metric-explainer-body{padding:14px 17px 16px}.metric-explainer-body p{margin:0 0 12px;color:var(--muted);font-size:11px;line-height:1.55}.metric-explainer-body p strong{color:var(--text)}
.month-breakdown{display:flex;gap:7px;flex-wrap:wrap}.month-breakdown span{display:inline-flex;gap:5px;align-items:center;padding:6px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:10px;color:var(--muted)}.month-breakdown span b{color:var(--text)}.month-breakdown .total{color:var(--green);border-color:color-mix(in srgb,var(--green) 30%,var(--line));font-weight:800}
.metric-note{margin:0 38px 18px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--muted);font-size:11px;line-height:1.45}.metric-note strong{color:var(--text)}
@media(max-width:1350px){.calendar-summary-v047{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.calendar-summary-v047{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.calendar-summary-v047{grid-template-columns:1fr}.metric-explainer,.metric-note{margin-left:18px;margin-right:18px}}

/* v0.4.8 - stima economica basata sul saldo progressivo */
.kpi-grid-v048{grid-template-columns:1.35fr repeat(4,minmax(0,1fr))}.money-kpi{border-color:color-mix(in srgb,var(--green) 30%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--green) 7%,var(--panel)),var(--panel))}.money-kpi>strong{color:var(--green)}
.payment-card{margin:0 38px 20px}.payment-card-head{align-items:center}.payment-card-head p{margin:7px 0 0}.payment-current{min-width:190px;text-align:right;padding:12px 15px;border:1px solid color-mix(in srgb,var(--green) 28%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--green) 7%,var(--panel2))}.payment-current span,.payment-current small{display:block;color:var(--muted);font-size:10px}.payment-current strong{display:block;color:var(--green);font-size:26px;letter-spacing:-.03em;margin:3px 0}.payment-rates{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:-2px 0 16px}.payment-rates>span{padding:8px 10px;border-radius:10px;background:var(--panel2);border:1px solid var(--line);font-size:10px;color:var(--muted)}.payment-rates b{color:var(--text)}.payment-rates .text-link{margin-left:auto}.payment-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.payment-row{min-width:760px;display:grid;grid-template-columns:110px 140px 170px 160px 150px;gap:18px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-size:12px}.payment-row:last-child{border-bottom:0}.payment-row>span:first-child{display:grid;gap:2px}.payment-row small{color:var(--muted);font-size:9px}.payment-head{background:var(--panel2);color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase}.payment-row.is-estimated{background:color-mix(in srgb,var(--accent) 5%,var(--panel));border-left:3px dashed var(--accent)}.estimate-disclaimer{font-size:10px;color:var(--muted);line-height:1.55;margin:14px 2px 0}.estimate-disclaimer strong{color:var(--text)}.payment-settings-card .estimate-example{margin-top:12px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);font-size:11px;color:var(--muted)}.payment-settings-card .estimate-example strong{color:var(--green)}
@media(max-width:1450px){.kpi-grid-v048{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi-grid-v048 .hero-kpi{grid-column:span 2}}
@media(max-width:900px){.kpi-grid-v048{grid-template-columns:1fr 1fr}.kpi-grid-v048 .hero-kpi{grid-column:1/-1}.payment-card-head{align-items:stretch;flex-direction:column}.payment-current{text-align:left;min-width:0}.payment-rates .text-link{margin-left:0}}
@media(max-width:760px){.kpi-grid-v048{grid-template-columns:1fr}.kpi-grid-v048 .hero-kpi{grid-column:auto}.payment-card{margin-left:18px;margin-right:18px}.payment-rates{display:grid}.payment-card{padding:17px}.payment-row{min-width:650px;grid-template-columns:90px 120px 145px 140px 130px}}

/* v0.4.9 · calendario live + Web Push iPhone */
.calendar-live-note{margin:12px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--accent) 7%,transparent);font-size:13px;line-height:1.45}
.push-divider{height:1px;background:var(--line);margin:22px 0}
.push-panel{display:grid;gap:12px}
.push-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.push-panel-head h3{margin:4px 0 0;font-size:18px}
.push-count{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:12px;color:var(--muted);white-space:nowrap}
.push-actions{display:flex;gap:10px;flex-wrap:wrap}
.push-status{padding:11px 13px;border-radius:11px;background:var(--field);border:1px solid var(--line);font-size:13px}
.push-status[data-kind="ok"]{border-color:color-mix(in srgb,var(--green) 50%,var(--line));background:color-mix(in srgb,var(--green) 10%,var(--field));color:var(--green)}
.push-status[data-kind="warning"]{border-color:color-mix(in srgb,#f59e0b 45%,var(--line));background:color-mix(in srgb,#f59e0b 8%,var(--field))}
.push-status[data-kind="error"]{border-color:color-mix(in srgb,var(--red) 50%,var(--line));background:color-mix(in srgb,var(--red) 8%,var(--field));color:var(--red)}
.push-check{align-self:end;min-height:44px;display:flex!important;align-items:center;padding-bottom:2px}
@media(max-width:760px){.push-panel-head{align-items:flex-start;flex-direction:column}.push-actions{display:grid;grid-template-columns:1fr;width:100%}.push-actions .btn{width:100%}}
