/* TrainDesk — stile ripreso dal prototipo (Apple Fitness: fondo nero, card grigie, colori degli anelli come accento) */
:root{
  /* Apple Fitness: nero puro, card grigie piatte (niente vetro, niente gradienti), colori degli anelli come accento */
  --bg:#000000;
  --glass:#1c1c1e; --glass-2:#2c2c2e; --glass-line:transparent; --glass-shadow:none;
  --surface:#1c1c1e; --chalk:#2c2c2e; --ink:#ffffff; --muted:#a1a1a6; --line:#38383a;
  --move:#fa114f; --exercise:#a6ff00; --stand:#00d8fe; --orange:#ffb340;
  --accent:#a6ff00; --accent-2:#00d8fe; --accent-soft:rgba(166,255,0,.14); --accent-ink:#000000;
  --grad:#fa114f;
  --brand-lime:#c8f031; --brand-ink:#10140f; --brand-paper:#f6f7f2;
  --ok:#a6ff00; --ok-soft:rgba(166,255,0,.13); --warn:#ffb340; --warn-soft:rgba(255,179,64,.15);
  --bad:#ff6b8e; --bad-fill:#fa114f; --bad-soft:rgba(250,17,79,.16); --info:#00d8fe; --info-soft:rgba(0,216,254,.13);
  --f-display:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",sans-serif;
  --f-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",sans-serif;
  --f-mono:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",sans-serif;
  --r:20px; --r-sm:12px;
  color-scheme:dark;
}
html,body{background:var(--bg);color:var(--ink);margin:0;-webkit-text-size-adjust:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
img{max-width:100%}
[hidden]{display:none!important}
a{color:var(--stand)}
body{font-family:var(--f-body);font-size:15px;line-height:1.5;min-height:100%;position:relative}
@keyframes drift{to{transform:translate3d(3%,-2%,0) rotate(4deg)}}
*{box-sizing:border-box}
h1,h2,h3{font-family:var(--f-display);font-weight:800;letter-spacing:-.025em;margin:0;text-wrap:balance;line-height:1.12}
h1{font-size:2rem} h2{font-size:1.35rem} h3{font-size:1.05rem;font-weight:600}
.mono,.num{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.label{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:700}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.glass,.panel,.kpi,.rail,.excard,.log,.modal,.top-in{background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-shadow);}

/* top bar: floating glass pill */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;padding:12px 16px 0;background:#000}
.top-in{max-width:1240px;margin:0 auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px 10px 14px;border-radius:22px}
.brand{display:flex;align-items:center;gap:11px;margin-right:auto;min-width:0}
.brand-mark{width:40px;height:40px;flex:none;display:block}
.wordmark{font-family:Archivo,var(--f-display);font-size:20px;letter-spacing:-.04em;line-height:1;white-space:nowrap}
.wm-train{font-weight:900;color:var(--brand-paper)}
.wm-desk{font-weight:400;color:var(--brand-lime)}
.brand-role{font-size:12px;color:var(--muted);font-weight:600}
.brand-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.brand-sub{font-size:.76rem;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg{display:inline-flex;background:var(--chalk);border-radius:999px;padding:4px;gap:2px}
.seg button{border:0;background:transparent;padding:7px 16px;border-radius:999px;font-weight:700;color:var(--muted);font-size:.88rem;transition:all .2s}
.seg button[aria-pressed="true"]{background:#636366;color:#fff}

/* shell */
.wrap{max-width:1240px;margin:0 auto;padding:22px 16px 70px}
.pt{display:grid;grid-template-columns:280px minmax(0,1fr);gap:22px;align-items:start}
.rail{border-radius:var(--r);padding:14px;position:sticky;top:96px}
.rail-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.clist{display:flex;flex-direction:column;gap:4px;margin-top:10px;max-height:60vh;overflow:auto}
.citem{display:flex;align-items:center;gap:11px;border:1px solid transparent;background:transparent;text-align:left;padding:9px;border-radius:14px;width:100%;transition:background .15s}
.citem:hover{background:var(--chalk)}
.citem[aria-current="true"]{background:var(--glass-2)}
.av{flex:none;width:36px;height:36px;border-radius:12px;display:grid;place-items:center;font-family:var(--f-display);font-weight:600;font-size:.9rem;background:var(--chalk);color:var(--ink)}
.citem[aria-current="true"] .av{background:var(--grad);color:#fff}
.av{border-radius:50%!important}
.citem .n{font-weight:700;line-height:1.2}
.citem .s{font-size:.78rem;color:var(--muted)}
.mobile-pick{display:none}

/* controls */
.btn{white-space:nowrap;border:1px solid var(--line);background:var(--glass-2);padding:8px 15px;border-radius:999px;font-weight:700;font-size:.88rem;display:inline-flex;align-items:center;gap:6px;transition:transform .15s,box-shadow .15s,border-color .15s}
.btn:hover{border-color:var(--muted);transform:translateY(-1px)}
.btn.pri{background:var(--accent);border-color:transparent;color:var(--accent-ink)}
.btn.pri:hover{filter:brightness(1.08)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--chalk);transform:none}
.btn.danger{color:var(--bad)}
.btn.sm{padding:5px 11px;font-size:.8rem}
.btn:disabled{opacity:.5;cursor:default}
.icon-btn{border:0;background:transparent;width:32px;height:32px;border-radius:10px;display:inline-grid;place-items:center;color:var(--muted)}
.icon-btn:hover{background:var(--chalk);color:var(--ink)}
input[type=text],input[type=search],input[type=number],input[type=date],input[type=time],input[type=email],input[type=tel],input[type=password],select,textarea{background:var(--glass-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 11px;width:100%;min-width:0;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
textarea{resize:vertical;min-height:70px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:.76rem;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--chalk);color:var(--muted);white-space:nowrap}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.chip.acc{background:var(--accent-soft);color:var(--accent)}
.chip.bad{background:var(--bad-soft);color:var(--bad)}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.spacer{flex:1}

/* client detail */
.head{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.head .av{width:64px;height:64px;font-size:1.4rem;border-radius:50%;background:var(--grad);color:#fff}
.head-txt{flex:1;min-width:0}
.tabs{display:flex;gap:4px;margin-bottom:20px;overflow-x:auto;padding:4px;border-radius:999px;background:var(--chalk);width:max-content;max-width:100%}
.tabs button{border:0;background:transparent;padding:8px 15px;font-weight:700;color:var(--muted);border-radius:999px;white-space:nowrap;font-size:.88rem;transition:all .2s}
.tabs button[aria-selected="true"]{color:#fff;background:#636366}
.panel{border-radius:var(--r);padding:18px}
.stack{display:flex;flex-direction:column;gap:18px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi{border-radius:var(--r);padding:14px 16px;position:relative;overflow:hidden}
.kpi::after{display:none}
.kpi.ring{display:flex;align-items:center;gap:14px}
.ringsvg{flex:none;width:64px;height:64px}
.ringsvg .trk{fill:none;stroke-width:9;opacity:.22}
.ringsvg .val{fill:none;stroke-width:9;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%}
.kpi .v{font-family:var(--f-display);font-weight:800;font-size:1.75rem;letter-spacing:-.03em;line-height:1.15;margin-top:4px}
.kpi .d{font-size:.8rem}
.up{color:var(--ok)} .down{color:var(--bad)}
.two{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px}

/* plan editor */
.day{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--glass-2)}
.day-h{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--chalk)}
.day-h input{font-family:var(--f-display);font-size:1.02rem;font-weight:600;background:transparent;border-color:transparent;padding:4px 8px}
.day-h input:hover,.day-h input:focus{background:var(--glass-2);border-color:var(--line)}
.tbl-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%}
th{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:700;text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:8px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
.ed td input{padding:6px 8px;border-radius:9px}
.ed .w-s{width:62px}.ed .w-r{width:78px}.ed .w-k{width:76px}.ed .w-rec{width:70px}
.exname{font-weight:700;line-height:1.3}
.exmeta{font-size:.77rem;color:var(--muted)}
.dirty{color:var(--warn);font-weight:700;font-size:.85rem}
.plan-pick{display:flex;gap:8px;flex-wrap:wrap}
.plan-pick button{border:1px solid var(--glass-line);background:var(--glass);border-radius:14px;padding:9px 14px;text-align:left}
.plan-pick button[aria-pressed="true"]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.rx{font-family:var(--f-mono);font-size:.86rem;white-space:nowrap}

/* charts */
.chart{width:100%;height:auto;display:block}
.chart .grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}
.chart .ax{fill:var(--muted);font-family:var(--f-mono);font-size:11px}
.chart .ln{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}

.chart .pt{fill:var(--surface);stroke:var(--exercise);stroke-width:2}
.chart .pt-end{fill:var(--exercise);stroke:var(--surface);stroke-width:3}
.chart .lab{fill:var(--ink);font-family:var(--f-mono);font-size:12px;font-weight:500}
.chart .g1,.chart .g2,.chart .g3{stop-color:var(--exercise)}
.chart .a1,.chart .a2{stop-color:var(--exercise);stop-opacity:.12}

/* logs */
.log{border-radius:16px;padding:13px 16px}
.log summary{cursor:pointer;list-style:none;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.log summary::-webkit-details-marker{display:none}
.sets{display:flex;gap:6px;flex-wrap:wrap}
.set{font-family:var(--f-mono);font-size:.78rem;background:var(--chalk);border-radius:8px;padding:3px 8px}

/* client view */
.cli{max-width:680px;margin:0 auto}
.hello{margin-bottom:18px}
.hello h1{font-size:2.2rem}
.daychips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px}
.daychips button{border:1px solid var(--glass-line);background:var(--glass);border-radius:999px;padding:7px 16px;font-weight:700;white-space:nowrap}
.daychips button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.excard{border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:9px}
.excard-top{display:flex;gap:13px;align-items:flex-start}
.badge{flex:none;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:.95rem;background:rgba(250,17,79,.16);color:var(--move)}
.badge.c1{background:rgba(166,255,0,.14);color:var(--exercise)}
.badge.c2{background:rgba(30,234,239,.14);color:var(--stand)}
.excard details summary{cursor:pointer;color:var(--stand);font-weight:700;font-size:.86rem}
.steps{margin:6px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:4px;max-width:65ch}
.logrow{display:grid;grid-template-columns:40px minmax(0,1fr) minmax(0,1fr) 36px;gap:8px;align-items:center}
.logrow .sn{font-family:var(--f-mono);color:var(--muted);font-size:.85rem}
.done-cb{width:22px;height:22px;accent-color:var(--ok)}
.sticky-foot{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));margin-top:14px;padding:10px 12px;border-radius:999px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:var(--glass-2);border:1px solid var(--glass-line);box-shadow:0 -10px 30px rgba(0,0,0,.6)}
.sticky-foot > span:first-child{padding-left:8px}

/* modal */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:50;display:grid;place-items:center;padding:16px}
.modal{background:var(--glass-2);border-radius:24px;width:min(760px,100%);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}
.modal.sm{width:min(440px,100%)}
.modal-h{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
.modal-b{padding:16px 18px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.libfilters{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:8px}
.libres{display:flex;flex-direction:column}
.libitem{display:flex;gap:11px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line)}
.libitem .badge{width:38px;height:38px;font-size:.8rem;border-radius:11px}
.libitem .txt{flex:1;min-width:0}
.empty{text-align:center;padding:38px 16px;color:var(--muted)}
.empty h3{color:var(--ink);margin-bottom:6px;font-size:1.15rem}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:#3a3a3c;color:#fff;padding:10px 18px;border-radius:999px;font-weight:700;z-index:60;font-size:.88rem}
.banner{background:var(--warn-soft);color:var(--warn);border-radius:14px;padding:9px 14px;font-size:.88rem}
.note-src{font-size:.74rem;color:var(--muted)}

@media (max-width:900px){
  .pt{grid-template-columns:minmax(0,1fr)}
  .rail{display:none}
  .mobile-pick{display:flex;gap:8px;margin-bottom:16px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .two{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:560px){
  .grid2,.grid3{grid-template-columns:minmax(0,1fr)}
  .libfilters{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .libfilters .q{grid-column:1/-1}
  h1{font-size:1.6rem} .hello h1{font-size:1.8rem}
  .top-in{border-radius:18px}
  .head{align-items:flex-start;gap:12px}
  .head .av{width:52px;height:52px;font-size:1.15rem}
  .head-txt{flex:1 1 calc(100% - 70px)}
  .head > .btn{width:100%;justify-content:center}
  .sticky-foot{border-radius:18px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* banner per i messaggi flash */
.banner.ok{background:var(--ok-soft);color:var(--ok)}
.banner.bad{background:var(--bad-soft);color:var(--bad)}
.auth{max-width:420px;margin:24px auto 0}
.err{color:var(--bad);font-size:.8rem}
.linkbox{font-family:var(--f-mono);font-size:.82rem;word-break:break-all;background:var(--chalk);padding:10px 12px;border-radius:var(--r-sm)}
a.btn{text-decoration:none;color:inherit}
a.btn.pri{color:var(--accent-ink)}

/* tab come link, dialog nativi */
.tabs a{padding:8px 15px;font-weight:700;color:var(--muted);border-radius:999px;white-space:nowrap;font-size:.88rem;text-decoration:none;transition:all .2s}
.tabs a[aria-current="page"]{color:#fff;background:#636366}
a.citem{text-decoration:none;color:inherit}
dialog.modal{padding:0;border:1px solid var(--glass-line);color:var(--ink);margin:auto}
dialog.modal:not([open]){display:none}
dialog.modal[open]{display:flex}
dialog.modal > form{display:flex;flex-direction:column;min-height:0;width:100%}
dialog::backdrop{background:rgba(0,0,0,.7)}
.kpi .v small{font-size:.55em;font-weight:600;color:var(--muted)}
.inline{display:inline}
.chart-box{min-height:60px}
.plan-pick a.pp{border:1px solid var(--glass-line);background:var(--glass);border-radius:14px;padding:9px 14px;text-align:left;text-decoration:none;color:inherit}
.plan-pick a.pp[aria-pressed="true"]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.daychips a{border:1px solid var(--glass-line);background:var(--glass);border-radius:999px;padding:7px 16px;font-weight:700;white-space:nowrap;text-decoration:none;color:inherit}
.daychips a[aria-current="page"]{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.logrow.done input[type=text]{opacity:.55}
.logrow input{padding:8px 10px}

/* video degli esercizi */
.excard video,.vidcard video{display:block;width:100%;max-height:60vh;margin-top:8px;border-radius:14px;background:#000;object-fit:contain}
.vidbtn{position:relative}
.vidbtn .n{position:absolute;top:1px;right:1px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;background:var(--accent);color:#000;font-size:.62rem;font-weight:800;line-height:15px;text-align:center}
.vidlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.vidcard{border:1px solid var(--line);border-radius:16px;padding:10px;background:var(--glass-2);display:flex;flex-direction:column;gap:8px;min-width:0}
.vidcard video{margin-top:0;aspect-ratio:9/16;max-height:340px}
.vidcard .ph{aspect-ratio:9/16;max-height:340px;border-radius:14px;background:var(--chalk);display:grid;place-items:center;text-align:center;padding:12px;color:var(--muted);font-size:.85rem}
.vidcard input{font-size:.85rem;padding:6px 9px}
.upbar{height:6px;border-radius:999px;background:var(--chalk);overflow:hidden}
.upbar i{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}
.drop{border:1.5px dashed var(--line);border-radius:16px;padding:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
@media (max-width:420px){.tabs{gap:2px}.tabs a{padding:8px 9px;font-size:.85rem}}

/* area coach: menu laterale */
.coach{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;padding:20px 14px;display:flex;flex-direction:column;gap:18px;border-right:1px solid var(--line);background:#000}
.side .brand{margin:0 6px}
.side-nav{display:flex;flex-direction:column;gap:2px}
.side-nav a{display:flex;align-items:center;min-height:44px;padding:0 14px;border-radius:12px;color:var(--muted);font-weight:600;text-decoration:none}
.side-nav a:hover{color:var(--ink);background:var(--glass)}
.side-nav a[aria-current="page"]{color:var(--ink);background:var(--glass-2)}
.side-card{margin-top:auto;background:var(--glass);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px}
.side-who{display:flex;flex-direction:column;font-size:.85rem;line-height:1.3}
.side-who span{color:var(--muted);font-size:.78rem}
.coach-main{min-width:0;padding:24px 28px 60px;max-width:1360px}
.coach-main .pt{grid-template-columns:250px minmax(0,1fr)}
.coach-main .rail{top:24px}
@media (max-width:900px){
  .coach{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:12px 16px;gap:10px;border-right:0;border-bottom:1px solid var(--line)}
  .side .brand{margin:0 auto 0 0}
  .side-nav{order:3;flex-direction:row;overflow-x:auto;width:100%;gap:4px;scrollbar-width:none}
  .side-nav a{white-space:nowrap;padding:0 12px}
  .side-card{margin:0;flex-direction:row;align-items:center;padding:6px 8px;background:none}
  .side-who{display:none}
  .coach-main{padding:16px 16px 50px}
  .coach-main .pt{grid-template-columns:minmax(0,1fr)}
}
.chip.info{background:var(--info-soft);color:var(--info)}
/* agenda */
.appt{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--line)}
.appt.off{opacity:.55}
.appt-time{display:flex;flex-direction:column;min-width:52px;line-height:1.2}
.appt-act form{display:inline}
@media (max-width:560px){.appt-act{width:100%}}

/* dashboard coach */
.card{background:var(--glass);border-radius:var(--r);padding:20px;min-width:0;height:auto}
/* stessa intestazione per tutte le card: altezza fissa della riga del titolo, con o senza link a destra */
.card-h{display:flex;align-items:center;gap:8px;min-height:44px;margin:-10px 0 8px}
.card-h h2{font-size:1.05rem;font-weight:700;letter-spacing:-.01em}
.card-link{font-size:.88rem;font-weight:600;color:var(--stand);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
/* righe in colonna con spazio fisso; ogni riga è alta quanto il suo contenuto */
.dash,.dash-body{display:flex;flex-direction:column;gap:24px}
.dash-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dash-head h1{font-size:1.9rem;letter-spacing:-.03em}
.dash-date{margin:0 0 2px;font-size:.9rem}
.dash-search{position:relative;flex:0 1 240px}
.dash-search input{min-height:44px}
.dash-search-res{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;background:var(--glass-2);border-radius:12px;overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,.5)}
.dash-search-res a{display:flex;align-items:center;min-height:44px;padding:0 12px;color:var(--ink);text-decoration:none;border-top:1px solid var(--line)}
.dash-search-res a:first-child{border-top:0}
.dash-search-res a:hover,.dash-search-res a:focus{background:var(--line)}
.dash-head .btn{min-height:44px}
.dash-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}
.kpi2 .big,.card .big{font-size:2.1rem;font-weight:800;letter-spacing:-.04em;line-height:1.1;margin:4px 0 2px;font-variant-numeric:tabular-nums}
.sub{font-size:.85rem;color:var(--muted)}
.small{font-size:.8rem}
.pos{color:var(--ok)} .neg{color:var(--bad)}
.meter{height:8px;border-radius:999px;background:var(--glass-2);overflow:hidden;margin:6px 0 6px}
.meter i{display:block;height:100%;background:var(--accent);border-radius:999px}
.dash-row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch}
.dash-row2{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1fr);gap:16px;align-items:stretch}
.empty-line{color:var(--muted);margin:0 0 10px}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;margin-right:6px;vertical-align:middle}
/* anelli */
.rings{display:flex;flex-direction:column;align-items:center;gap:14px}
.rings svg{width:min(200px,70%);height:auto}
.ring-legend{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:8px}
.ring-legend li{display:flex;align-items:center;gap:6px;font-size:.9rem}
.ring-legend b{margin-left:auto;font-variant-numeric:tabular-nums}
/* agenda di oggi */
.ag{list-style:none;margin:0;padding:0}
.ag li{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;min-height:52px}
.ag li+li{border-top:1px solid var(--line)}
.ag li.next{background:var(--glass-2);border-top-color:transparent;outline:1.5px solid var(--accent)}
.ag li.next+li{border-top-color:transparent}
.ag li.off{opacity:.5}
.ag-time{font-weight:700;font-variant-numeric:tabular-nums;min-width:46px}
.ag-who{flex:1;min-width:0;color:var(--ink);text-decoration:none;display:flex;flex-direction:column;line-height:1.25}
.ag-who span{font-size:.8rem;color:var(--muted)}
.badge-st{font-size:.74rem;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap;background:var(--glass-2);color:var(--muted)}
.st-completata{background:var(--ok-soft);color:var(--ok)}
.st-in_corso{background:var(--info-soft);color:var(--info)}
.st-prossima{background:var(--accent);color:#000}
.st-da_confermare,.st-da_registrare{background:var(--warn-soft);color:var(--warn)}
.st-no_show{background:var(--bad-soft);color:var(--bad)}
/* avvisi */
.alerts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.alerts li{display:flex;gap:6px;align-items:flex-start;padding:10px 0}
.alerts li+li{border-top:1px solid var(--line)}
.alerts .dot{margin-top:6px}
.alert-who{font-size:.85rem;color:var(--muted);margin-top:2px}
.alert-who a{color:var(--ink);text-decoration:none;display:inline-block;min-height:28px;line-height:28px}
.alert-who a:hover,.alert-who a:focus-visible{text-decoration:underline}
/* tabella progressi */
.ptable{min-width:600px;font-size:.88rem}
.ptable th,.ptable td{padding:8px 6px}
.ptable td a{color:var(--ink);text-decoration:none;font-weight:600;display:inline-flex;align-items:center;min-height:36px}
.mini{display:inline-block;width:56px;height:6px;border-radius:999px;background:var(--glass-2);overflow:hidden;vertical-align:middle;margin-right:4px}
.mini i{display:block;height:100%;border-radius:999px}
/* incassi */
.inc-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.bars{width:100%;height:auto;margin-top:12px}
.bar-l{fill:var(--muted);font-size:11px}
.split{display:flex;height:12px;border-radius:999px;overflow:hidden;gap:2px;margin-top:8px;background:var(--glass-2)}
.split i{display:block;height:100%}
.legend{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.85rem;color:var(--muted)}
.legend b{color:var(--ink);font-weight:600;margin-left:4px}
/* obiettivi, rinnovi, programmi */
.hbars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.hbars li{display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:.9rem}
.hbar{grid-column:1/-1;height:8px;border-radius:999px;background:var(--glass-2);overflow:hidden}
.hbar i{display:block;height:100%;background:var(--stand);border-radius:999px}
.rlist{list-style:none;margin:0;padding:0}
.rlist li{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.rlist li:first-child{border-top:0}
.rlist a{flex:1;min-width:0;color:var(--ink);text-decoration:none;display:flex;flex-direction:column;min-height:44px;justify-content:center}
.rlist a span{font-size:.8rem;color:var(--muted)}
.rtot{display:flex;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:.95rem}
.stats{list-style:none;margin:0;padding:0}
.stats li{display:flex;justify-content:space-between;align-items:center;min-height:44px;border-top:1px solid var(--line);font-size:.92rem}
.stats li:first-child{border-top:0}
.stats b{font-size:1.25rem;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
@media (max-width:1100px){.dash-row3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dash-row2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .dash-kpis{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .dash-row3{grid-template-columns:minmax(0,1fr)}
  .dash-search{flex:1 1 100%}
}
@media (max-width:420px){.dash-kpis{grid-template-columns:minmax(0,1fr)}}
.ring-legend .over{color:var(--ok)}
.ring-legend .over-txt{display:block;font-size:.72rem;font-weight:600;color:var(--ok);text-align:right}
