:root{
  /* Brand PRC: giallo · nero · bianco */
  --bg:#121212; --panel:#1c1c1c; --panel2:#262626; --line:#343434;
  --ink:#f6f6f4; --muted:#9b9b9b; --accent:#ffd400;
  /* colori funzionali (zone/stati) — restano semantici, non brand */
  --verde:#34d399; --giallo:#fbbf24; --rosso:#fb7185; --blu:#60a5fa; --riposo:#8595a8;
  --ok:#34d399; --draft:#fbbf24;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{margin:0 0 6px;font-size:1.5rem}
h2{margin:0 0 14px;font-size:1.05rem}
.sub{color:var(--muted);margin:0}
.muted{color:var(--muted)}

/* topbar */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 22px;
  background:#000;border-bottom:2px solid var(--accent);position:sticky;top:0;z-index:50}
.brand{display:flex;align-items:center;gap:11px;font-weight:700;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand-logo{width:38px;height:38px;border-radius:50%;object-fit:cover;background:var(--accent)}
.brand-txt{font-size:1rem;letter-spacing:.01em;text-transform:uppercase;font-weight:800}
.brand-txt b{color:var(--accent);font-weight:800}
.topbar nav{display:flex;gap:18px;align-items:center}
.topbar nav a{color:var(--ink)}
.who{color:var(--muted);font-size:.9rem}
.logout{color:var(--muted)}
.bell{position:relative;font-size:1.05rem;text-decoration:none}
.bell-badge{position:absolute;top:-8px;right:-10px;background:var(--muted);color:#000;font-size:.62rem;font-weight:800;
  min-width:16px;height:16px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 4px}
.bell-badge.rosso{background:var(--rosso);color:#fff}
.wrap{max-width:1040px;margin:26px auto;padding:0 20px}
.editor-main{max-width:1400px;margin:0 auto;padding:0 16px 60px}

/* card / login */
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:20px}
.login-card{max-width:380px;margin:8vh auto 0}
.login-card form{display:flex;flex-direction:column;gap:14px;margin-top:16px}
label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted)}
input{padding:11px 12px;border-radius:8px;border:1px solid var(--line);background:#101010;color:var(--ink);font-size:1rem}
input:focus{outline:none;border-color:var(--accent)}
button{cursor:pointer;border:none;border-radius:8px;padding:10px 15px;font-weight:600;
  background:var(--accent);color:#101010;font-size:.9rem}
button:hover{filter:brightness(1.08)}
.alert{background:#3a1414;border:1px solid #7a2626;color:#ffb4b4;padding:10px 12px;border-radius:8px;font-size:.9rem}

/* ===== Cockpit coach ===== */
.page-head{margin:24px 0 22px}
.stato-blocco{margin-bottom:26px}
.stato-titolo{display:flex;align-items:center;gap:9px;font-size:1rem;color:var(--ink);margin-bottom:12px}
.stato-titolo .count{color:var(--muted);font-weight:500;font-size:.85rem}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.dot.attivo{background:var(--verde)} .dot.pausa{background:var(--giallo)}
.dot.infortunato{background:var(--rosso)} .dot.concluso{background:var(--riposo)}
.allievi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.allievo-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.ac-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ac-nome{font-weight:700}
.stato-select{background:#101010;color:var(--muted);border:1px solid var(--line);border-radius:6px;
  padding:4px 6px;font-size:.78rem;font-weight:600;cursor:pointer}
.ac-gara{color:var(--muted);font-size:.88rem;margin:8px 0 14px}
.ac-foot{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ac-weeks{font-size:.8rem;color:var(--muted)}
.btn-small{background:var(--panel2);color:var(--ink);border:1px solid var(--line);padding:6px 10px;
  border-radius:7px;font-size:.8rem;font-weight:600}
.btn-small:hover{border-color:var(--accent);text-decoration:none}
.vuoto{color:var(--muted);font-size:.88rem}

/* ===== Colori casella (condivisi) ===== */
.verde{--c:var(--verde);--bg:rgba(52,211,153,.13)}
.giallo{--c:var(--giallo);--bg:rgba(251,191,36,.13)}
.rosso{--c:var(--rosso);--bg:rgba(251,113,133,.14)}
.blu{--c:var(--blu);--bg:rgba(96,165,250,.13)}
.riposo{--c:var(--riposo);--bg:rgba(133,149,168,.10)}
.sw{width:20px;height:20px;border-radius:5px;padding:0;border:2px solid transparent}
.sw.verde{background:var(--verde)} .sw.giallo{background:var(--giallo)}
.sw.rosso{background:var(--rosso)} .sw.blu{background:var(--blu)} .sw.riposo{background:var(--riposo)}
.sw.sel{border-color:#fff;box-shadow:0 0 0 2px var(--bg)}

/* ===== Editor ===== */
.editor-toolbar{position:sticky;top:53px;z-index:40;display:flex;justify-content:space-between;align-items:center;
  gap:16px;padding:12px 6px;background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap}
.et-left{display:flex;align-items:center;gap:16px}
.back{color:var(--muted);font-size:.85rem}
.et-titolo strong{display:block;font-size:1.05rem}
.et-gara{color:var(--muted);font-size:.82rem}
.et-right{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.legenda{display:flex;gap:12px;flex-wrap:wrap}
.lg{display:flex;align-items:center;gap:5px;font-size:.76rem;color:var(--muted)}
.lg .sw{width:12px;height:12px;border-radius:3px}
.btn-storico{background:var(--panel2);color:var(--ink);border:1px solid var(--line);font-size:.82rem}
.btn-storico:disabled{color:#4b5a68;cursor:default;filter:none}
.btn-salva{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.btn-salva.attivo{background:var(--accent);color:#101010;border-color:var(--accent)}
.editor-hint{color:var(--muted);font-size:.82rem;margin:12px 4px 16px;max-width:900px}

.griglia-editor{display:flex;flex-direction:column;gap:6px;overflow-x:auto;padding-bottom:10px}
.ge-row{display:grid;grid-template-columns:110px repeat(7,minmax(120px,1fr));gap:6px;min-width:940px}
.ge-head{background:var(--bg)}
.ge-day-h{color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:6px 8px;text-align:center}
.ge-wk{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px;display:flex;
  flex-direction:column;gap:3px;position:relative}
.wk-n{font-weight:800;font-size:1rem}
.wk-t{font-size:.64rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.wk-d{font-size:.66rem;color:var(--muted)}
.wk-stato{font-size:.62rem;font-weight:700;padding:1px 6px;border-radius:20px;align-self:flex-start;margin-top:3px}
.wk-stato.approvato{background:rgba(52,211,153,.15);color:var(--ok)}
.wk-stato.bozza{background:rgba(251,191,36,.15);color:var(--draft)}
.wk-approva{margin-top:5px;padding:4px 8px;font-size:.7rem;background:var(--ok);color:#08160d}

.ge-cell{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:9px;
  padding:8px 9px;min-height:96px;cursor:pointer;transition:box-shadow .1s;
  background:color-mix(in srgb,var(--c) 12%,var(--panel))}
.ge-cell:hover{box-shadow:0 0 0 1px var(--c) inset}
.ge-cell.dragging{opacity:.4}
.ge-cell.dragover{outline:2px dashed var(--c);outline-offset:-2px}
.cell-testo{font-size:.76rem;white-space:pre-line;color:#dbe4ec}

/* popover modifica */
.pop{position:absolute;z-index:100;width:300px;background:var(--panel2);border:1px solid var(--line);
  border-radius:11px;padding:12px;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.pop.hidden{display:none}
.pop textarea{width:100%;background:#101010;color:var(--ink);border:1px solid var(--line);border-radius:8px;
  padding:9px;font-size:.82rem;font-family:inherit;resize:vertical}
.pop-colori{display:flex;align-items:center;gap:7px;margin:10px 0}
.sw-auto{background:#101010;color:var(--muted);border:1px solid var(--line);border-radius:5px;
  font-size:.68rem;padding:2px 7px;height:20px}
.pop-azioni{display:flex;gap:6px;flex-wrap:wrap}
.pa{background:var(--panel);color:var(--ink);border:1px solid var(--line);font-size:.76rem;padding:6px 9px}
.pa.primary{background:var(--accent);color:#101010;border-color:var(--accent);margin-left:auto}

/* ===== Vista allievo ===== */
.allievo-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.gara-box{display:flex;flex-direction:column;text-align:right;gap:2px;background:var(--panel);
  border:1px solid var(--line);border-radius:10px;padding:10px 14px}
.gara-label{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.gara-nome{font-weight:700}
.gara-data{color:var(--accent);font-size:.85rem}
.settimana-allievo{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px}
.settimana-allievo.corrente{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.sa-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.sa-num{font-weight:700}
.sa-fase{font-size:.66rem;font-weight:700;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);padding:1px 8px;border-radius:20px}
.sa-tipo{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.sa-now{font-size:.68rem;font-weight:700;background:var(--accent);color:#101010;padding:2px 9px;border-radius:20px}
.sa-data{margin-left:auto;color:var(--muted);font-size:.8rem}
.sa-giorni{display:grid;grid-template-columns:repeat(7,1fr);gap:9px}
@media(max-width:900px){.sa-giorni{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.sa-giorni{grid-template-columns:1fr}}
.sa-cell{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:10px;padding:10px;
  min-height:110px;background:color-mix(in srgb,var(--c) 10%,var(--panel))}
.sa-giorno{font-size:.7rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.sa-testo{font-size:.8rem;white-space:pre-line;color:#dbe4ec}

/* ===== Nuove pagine: nuovo allievo, scheda, check-in ===== */
.page-head-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.btn-primary{background:var(--accent);color:#101010;padding:10px 16px;border-radius:8px;font-weight:700;font-size:.88rem;white-space:nowrap}
.btn-primary:hover{text-decoration:none;filter:brightness(1.08)}
.btn-secondary{background:var(--panel2);color:var(--ink);border:1px solid var(--line);padding:10px 16px;border-radius:8px;font-weight:600;font-size:.88rem}
.btn-secondary:hover{text-decoration:none;border-color:var(--accent)}
a.ac-nome{color:var(--ink);font-weight:700}
a.ac-nome:hover{color:var(--accent);text-decoration:none}
.stato-inline{flex-direction:row;align-items:center;gap:8px;color:var(--muted);font-size:.85rem}
code{background:#101010;padding:1px 6px;border-radius:5px;font-size:.85rem}

/* fitcheck form */
.fitcheck{max-width:900px}
.fitcheck fieldset{border:1px solid var(--line);border-radius:12px;padding:16px 18px 20px;margin:0 0 18px;background:var(--panel)}
.fitcheck legend{padding:0 8px;color:var(--accent);font-weight:700;font-size:.9rem}
.fc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.fc-giorni{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}
.fc-lbl{color:var(--muted);font-size:.85rem;margin-right:6px}
.chk{flex-direction:row;align-items:center;gap:5px;color:var(--ink);font-size:.85rem}
.chk input{width:auto}
select{padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:#101010;color:var(--ink);font-size:.95rem}
textarea{padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:#101010;color:var(--ink);font-size:.95rem;font-family:inherit;resize:vertical;width:100%}
.fc-azioni{display:flex;gap:10px;justify-content:flex-end;align-items:center;max-width:900px}

/* scheda allievo */
.scheda-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:840px){.scheda-cols{grid-template-columns:1fr}}
.prog-list{list-style:none;padding:0;margin:0 0 18px;display:flex;flex-direction:column;gap:8px}
.prog-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:9px}
.prog-meta{color:var(--muted);font-size:.8rem;margin-left:10px}
.nuovo-prog{border-top:1px solid var(--line);padding-top:16px}
.nuovo-prog h3{font-size:.9rem;margin:0 0 12px}
.np-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.fc-view{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 18px}
.fc-view>div{display:flex;flex-direction:column}
.fc-view dt{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.fc-view dd{margin:0;font-size:.9rem}
.fc-view .fc-note{grid-column:1/-1}
.checkin-tab{width:100%;border-collapse:collapse;font-size:.85rem}
.checkin-tab th,.checkin-tab td{text-align:left;padding:8px 9px;border-bottom:1px solid var(--line)}
.checkin-tab th{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.ci-note{color:var(--muted)}
.score-badge{display:inline-block;font-weight:800;font-size:.78rem;padding:2px 9px;border-radius:20px;color:#101010;background:var(--riposo)}
.score-badge.verde{background:var(--verde)} .score-badge.giallo{background:var(--giallo)} .score-badge.rosso{background:var(--rosso);color:#fff}
.score-badge.grande{font-size:1.3rem;padding:8px 16px;border-radius:12px}

/* check-in allievo */
.checkin-form{max-width:640px}
.ci-domanda{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:14px}
.ci-q{font-weight:600;margin-bottom:12px}
.ci-scala{display:flex;gap:8px}
.ci-opt{flex:1;flex-direction:column;align-items:center;cursor:pointer}
.ci-opt input{position:absolute;opacity:0}
.ci-opt span{display:flex;align-items:center;justify-content:center;width:100%;height:46px;border:1px solid var(--line);border-radius:9px;font-weight:700;background:#101010;transition:.1s}
.ci-opt input:checked + span{background:var(--accent);color:#101010;border-color:var(--accent)}
.ci-hint{display:flex;justify-content:space-between;color:var(--muted);font-size:.72rem;margin-top:6px}
.ci-malattia{flex-direction:row;align-items:center;gap:8px;margin-top:12px;color:var(--muted);font-size:.85rem}
.ci-malattia input{width:90px}
.checkin-ok{display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--verde);border-radius:12px;padding:16px 18px;margin-bottom:20px}
.checkin-storico{margin-top:22px}
.checkin-storico ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.checkin-storico li{display:flex;align-items:center;gap:10px;font-size:.88rem}
.cs-data{color:var(--muted)}
.cs-note{color:var(--muted)}
.piano-azioni{margin:0 0 20px}

/* ===== Import programma (scheda) ===== */
.import-prog{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}
.import-prog h3{font-size:.9rem;margin:0 0 8px}
.import-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.import-row input[type=file]{color:var(--muted);font-size:.85rem}

/* ===== Libreria (drawer editor) ===== */
.drawer{position:fixed;top:0;right:0;width:390px;max-width:92vw;height:100vh;z-index:200;
  background:var(--panel);border-left:1px solid var(--line);box-shadow:-12px 0 40px rgba(0,0,0,.45);
  display:flex;flex-direction:column;padding:16px}
.drawer.hidden{display:none}
.drawer-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.drawer-x{background:none;border:none;color:var(--muted);font-size:1rem;padding:4px 8px}
.drawer-hint{color:var(--muted);font-size:.78rem;margin-bottom:10px}
.lib-search{width:100%;margin-bottom:10px}
.lib-filtri{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.lib-chip{background:#101010;color:var(--muted);border:1px solid var(--line);border-radius:20px;
  padding:3px 10px;font-size:.72rem;font-weight:600}
.lib-chip.sel{background:var(--accent);color:#101010;border-color:var(--accent)}
.lib-lista{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:7px;padding-right:4px}
.lib-conteggio{color:var(--muted);font-size:.72rem;padding:2px 0}
.lib-voce{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:8px;padding:8px 10px;
  cursor:pointer;background:color-mix(in srgb,var(--c) 10%,var(--panel2));transition:box-shadow .1s}
.lib-voce:hover{box-shadow:0 0 0 1px var(--c) inset}
.lib-tipo{font-size:.64rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.lib-testo{font-size:.76rem;white-space:pre-line;color:#dbe4ec}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:300;
  background:var(--ink);color:#101010;font-weight:700;font-size:.82rem;padding:9px 16px;border-radius:20px;
  box-shadow:0 8px 30px rgba(0,0,0,.4)}
.toast.hidden{display:none}

/* ===== Strava ===== */
.strava-box{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:20px}
.sb-left{display:flex;align-items:center;gap:12px;font-size:.9rem;color:var(--muted)}
.sb-logo{background:#fc4c02;color:#fff;font-weight:800;font-size:.7rem;letter-spacing:.06em;padding:3px 8px;border-radius:5px}
.btn-strava{background:#fc4c02;color:#fff;font-weight:700;font-size:.88rem;padding:10px 18px;border-radius:8px;white-space:nowrap}
.btn-strava:hover{text-decoration:none;filter:brightness(1.08)}
.ok-banner{background:rgba(52,211,153,.14);border:1px solid var(--verde);color:var(--verde);
  padding:11px 14px;border-radius:9px;font-size:.9rem;margin-bottom:16px}

/* ===== Lista allievi rifinita ===== */
.cerca-allievi{width:100%;max-width:340px;margin-bottom:22px}
.ac-badges{display:flex;align-items:center;gap:6px}
.mini-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:var(--c,var(--riposo))}
.mini-strava{width:16px;height:16px;border-radius:4px;background:#fc4c02;color:#fff;font-size:.6rem;font-weight:800;
  display:flex;align-items:center;justify-content:center}
.ac-countdown{font-size:.72rem;font-weight:700;color:var(--accent);margin-left:6px;white-space:nowrap}
.ac-countdown.oggi{color:var(--rosso)} .ac-countdown.passata{color:var(--muted)}
.ac-progress{display:flex;align-items:center;gap:8px;margin:12px 0 4px}
.ac-bar{flex:1;height:6px;background:#101010;border-radius:20px;overflow:hidden}
.ac-bar span{display:block;height:100%;background:var(--verde);border-radius:20px}
.ac-progress-lbl{font-size:.72rem;color:var(--muted);white-space:nowrap}
.ac-foot{margin-top:12px}
.prog-azioni{display:flex;gap:6px}

/* ===== Esecuzione (pianificato vs eseguito) ===== */
.et-esec{color:var(--accent);font-size:.82rem;margin-left:8px}
.esec-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.esec-sett{display:flex;flex-wrap:wrap;gap:5px}
.esec-wk{background:var(--panel2);color:var(--muted);border:1px solid var(--line);border-radius:7px;
  padding:4px 9px;font-size:.76rem;font-weight:700}
.esec-wk:hover{text-decoration:none;border-color:var(--accent)}
.esec-wk.sel{background:var(--accent);color:#101010;border-color:var(--accent)}
.esec-legenda{display:flex;gap:12px;flex-wrap:wrap}
.el{display:flex;align-items:center;gap:5px;font-size:.74rem;color:var(--muted)}
.esec-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.esec-w{font-weight:800;font-size:1.05rem}
.esec-tipo{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.esec-data{margin-left:auto;color:var(--muted);font-size:.82rem}
.esec-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}
@media(max-width:1000px){.esec-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.esec-grid{grid-template-columns:1fr}}
.esec-giorno{background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--riposo);
  border-radius:11px;padding:11px;display:flex;flex-direction:column;gap:10px}
.esec-giorno.stato-fatto{border-top-color:var(--verde)}
.esec-giorno.stato-parziale{border-top-color:var(--giallo)}
.esec-giorno.stato-mancante{border-top-color:var(--rosso)}
.esec-giorno.stato-extra{border-top-color:var(--blu)}
.eg-top{display:flex;align-items:center;gap:6px}
.eg-nome{font-weight:700;font-size:.8rem}
.eg-data{color:var(--muted);font-size:.7rem}
.eg-stato{margin-left:auto;font-size:.64rem;font-weight:700;padding:1px 7px;border-radius:20px;color:#101010}
.eg-stato.verde{background:var(--verde)} .eg-stato.giallo{background:var(--giallo)}
.eg-stato.rosso{background:var(--rosso);color:#fff} .eg-stato.blu{background:var(--blu)} .eg-stato.riposo{background:var(--riposo)}
.eg-lbl{font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;display:flex;gap:6px;align-items:center}
.eg-strava{background:#fc4c02;color:#fff;font-size:.54rem;padding:0 5px;border-radius:3px;letter-spacing:.04em}
.eg-piano{border-left:3px solid var(--c);border-radius:6px;padding:6px 8px;font-size:.73rem;white-space:pre-line;
  background:color-mix(in srgb,var(--c) 10%,var(--panel2));color:#dbe4ec}
.eg-vuoto{color:var(--muted);font-size:.76rem;padding:4px 0}
.eg-att{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 8px;margin-bottom:5px}
.eg-att-link{display:block;text-decoration:none;color:inherit;transition:border-color .12s,background .12s}
.eg-att-link:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.ea-nome{font-size:.75rem;font-weight:600;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.ea-analisi{font-size:.66rem;font-weight:800;color:var(--accent);white-space:nowrap}
.ea-dati{font-size:.68rem;color:var(--muted)}

/* ===== Riepilogo settimana + grafico km (esecuzione) ===== */
.riepilogo{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;margin-bottom:20px}
@media(max-width:820px){.riepilogo{grid-template-columns:1fr}}
.riep-tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:14px 16px}
.tile-num{font-size:1.9rem;font-weight:800;line-height:1;color:var(--c,var(--ink))}
.tile-num small{font-size:.85rem;font-weight:600;color:var(--muted);margin-left:2px}
.tile-num.muted-num{color:var(--muted)}
.tile-lbl{color:var(--muted);font-size:.74rem;margin-top:7px}
.km-chart-wrap{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:14px 16px}
.km-chart-title{font-size:.78rem;color:var(--muted);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.kmc-legend{font-size:.68rem;display:flex;align-items:center;gap:5px}
.kmc-leg-bar{width:9px;height:9px;border-radius:2px;background:var(--verde);display:inline-block}
.kmc-leg-target{width:12px;height:2px;background:var(--ink);display:inline-block;vertical-align:middle}
.km-chart{display:flex;align-items:flex-end;gap:6px;height:150px}
.kmc-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;height:100%}
.kmc-val{font-size:.66rem;color:var(--muted);height:12px}
.kmc-track{position:relative;width:66%;flex:1;background:#101010;border-radius:4px}
.kmc-bar{position:absolute;left:0;right:0;bottom:0;min-height:2px;border-radius:4px 4px 0 0;background:var(--c)}
.kmc-target{position:absolute;left:-2px;right:-2px;height:2px;background:var(--ink);border-radius:2px}
.kmc-lbl{font-size:.66rem;color:var(--muted);text-transform:uppercase}

/* ===== "La tua settimana" (allievo) ===== */
.mia-settimana{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:20px}
.ms-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}
.ms-head h2{margin:0;font-size:1.05rem}
.ms-score{font-size:1.5rem;font-weight:800;color:var(--c,var(--ink))}
.ms-score.verde{color:var(--verde)} .ms-score.giallo{color:var(--giallo)} .ms-score.rosso{color:var(--rosso)}
.ms-score small{font-size:.8rem;color:var(--muted);font-weight:600}
.ms-stats{display:flex;gap:18px;flex-wrap:wrap;color:var(--muted);font-size:.9rem;margin-bottom:14px}
.ms-strip{display:flex;gap:6px;flex-wrap:wrap}
.ms-day{flex:1;min-width:40px;text-align:center;font-size:.68rem;font-weight:700;color:#101010;padding:6px 0;border-radius:7px;
  text-transform:uppercase;background:var(--c);opacity:.92}
.ms-day.riposo{color:var(--muted);background:var(--panel2);border:1px solid var(--line)}

/* ===== Accesso allievo (scheda) ===== */
.accesso-box{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:11px;padding:13px 16px;margin-bottom:18px}
.ab-lbl{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.ab-riga{font-size:.9rem}
.ab-pwd{background:var(--accent);color:#000;font-weight:700}
.ab-note{font-size:.76rem;color:var(--muted);margin-top:6px}

/* ===== Segnalazioni ===== */
.rosso-txt{color:var(--rosso);font-weight:700}
.notif-list{display:flex;flex-direction:column;gap:8px}
.notif{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--muted);border-radius:9px;padding:11px 14px;color:var(--ink)}
.notif:hover{text-decoration:none;border-color:var(--accent)}
.notif.rosso{border-left-color:var(--rosso);background:rgba(251,113,133,.07)}
.notif.letta{opacity:.55}
.notif-ic{font-size:1rem;width:20px;text-align:center}
.notif-testo{flex:1;font-size:.9rem}
.notif-data{color:var(--muted);font-size:.74rem;white-space:nowrap}

/* codice rosso su card cockpit */
.ac-rosso{background:var(--rosso);color:#fff;font-size:.66rem;font-weight:800;padding:1px 7px;border-radius:20px}

/* ===== Valutazione motore V3 ===== */
.esec-cta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.mot-avviso{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--accent);border-radius:10px;padding:11px 15px;margin-bottom:16px;font-size:.85rem;color:var(--muted)}
.mot-modalita{background:var(--accent);color:#000;font-weight:800;font-size:.66rem;letter-spacing:.05em;padding:3px 9px;border-radius:5px}
.mot-esito{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.mot-esito.ricalcolata{border-left:4px solid var(--giallo)}
.mot-esito.confermata{border-left:4px solid var(--verde)}
.me-badge{font-weight:800;font-size:1.05rem}
.me-meta{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.me-fascia{font-size:.74rem;font-weight:700;padding:2px 10px;border-radius:20px;color:#0d1620}
.me-fascia.verde{background:var(--verde)} .me-fascia.giallo{background:var(--giallo)}
.me-fascia.rosso{background:var(--rosso);color:#fff} .me-fascia.riposo{background:var(--riposo)}
.me-regole{font-size:.76rem;color:var(--muted);font-family:monospace}
.mot-flag{background:rgba(251,113,133,.08);border:1px solid var(--rosso);border-radius:10px;padding:12px 16px;margin-bottom:16px}
.mot-flag ul{margin:6px 0 0;padding-left:20px}
.mot-diff{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.mot-diff li{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:8px;align-items:center;
  background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:.8rem}
.md-giorno{font-weight:700;font-size:.72rem;color:var(--muted);text-transform:uppercase}
.md-da{color:var(--muted);text-decoration:line-through;white-space:pre-line}
.md-freccia{color:var(--accent);font-weight:800}
.md-a{color:var(--ink);white-space:pre-line}
.mot-motivazione{font-size:.92rem;line-height:1.6}
.mot-azioni{display:flex;gap:10px;justify-content:flex-end;align-items:center;margin:18px 0 8px}
.opz{font-size:.72rem;color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}

/* ===== Pianificazione stagione ===== */
.ph-azioni{display:flex;gap:10px;align-items:center}
.gara-riga{margin-bottom:10px;grid-template-columns:1.4fr 1fr .8fr .7fr .9fr}
.fasi-timeline{display:flex;flex-direction:column;gap:8px}
.fase-riga{display:grid;grid-template-columns:170px 200px 1fr;gap:14px;align-items:center;
  background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:9px;padding:11px 14px}
.fase-nome{font-weight:800;font-size:.9rem}
.fase-date{color:var(--muted);font-size:.82rem;font-family:monospace}
.fase-note{font-size:.85rem}

/* ===== Genera programma (scheda) ===== */
.genera-box{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  background:color-mix(in srgb,var(--accent) 8%,var(--panel2));border:1px solid var(--line);
  border-left:3px solid var(--accent);border-radius:10px;padding:13px 16px;margin-bottom:16px}
.gb-titolo{font-weight:700;font-size:.95rem}
.gb-sub{color:var(--muted);font-size:.8rem;margin-top:3px}
.genera-box button:disabled{background:var(--panel2);color:var(--muted);cursor:default;filter:none}

/* ===== Tagliando: nuovi elementi ===== */
.footer{max-width:1040px;margin:36px auto 18px;padding:14px 20px;border-top:1px solid var(--line);
  color:var(--muted);font-size:.78rem}
.footer a{color:var(--muted)}
.btn-small.danger{color:var(--rosso);border-color:rgba(251,113,133,.4)}
.btn-small.danger:hover{border-color:var(--rosso)}
.prog-list li{flex-wrap:wrap}
.prog-azioni{flex-wrap:wrap}
.prog-azioni form{display:inline}
.prog-stato{font-size:.62rem;font-weight:800;padding:1px 7px;border-radius:20px;text-transform:uppercase}
.prog-stato.attivo{background:rgba(52,211,153,.18);color:var(--verde)}
.prog-stato.bozza{background:rgba(251,191,36,.15);color:var(--draft)}
.prog-stato.arch{background:var(--panel2);color:var(--muted)}

/* editor: tipo settimana + approva tutte */
.wk-tsel{background:#101010;color:var(--muted);border:1px solid var(--line);border-radius:5px;
  font-size:.6rem;font-weight:700;padding:2px 3px;width:100%;text-transform:uppercase}
.btn-approva-tutte{background:var(--ok);color:#08160d;font-weight:700}

/* allievo: promemoria check-in */
.checkin-reminder{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  background:color-mix(in srgb,var(--accent) 12%,var(--panel));border:1px solid var(--accent);
  border-radius:12px;padding:14px 18px;margin-bottom:18px}
.checkin-reminder.rinnovo{background:color-mix(in srgb,var(--verde) 14%,var(--panel));border-color:var(--verde)}
.ac-rinnovo{background:var(--verde);color:#053;font-size:.66rem;font-weight:800;padding:1px 7px;border-radius:20px;text-decoration:none}
.ac-rinnovo.soft{background:color-mix(in srgb,var(--verde) 30%,var(--panel));color:var(--verde)}
.fc-resto{margin:6px 0 4px;border:1px dashed var(--bordo,#334);border-radius:12px}
.fc-resto>summary{cursor:pointer;padding:12px 16px;font-weight:600;color:var(--muted);list-style:none}
.fc-resto>summary::-webkit-details-marker{display:none}
.fc-resto>summary::before{content:"▸ ";color:var(--accent)}
.fc-resto[open]>summary::before{content:"▾ "}
.fc-resto[open]>summary{border-bottom:1px solid var(--bordo,#334);margin-bottom:8px}

/* Chat coach <-> allievo */
.nav-msg{position:relative}
.nav-badge{background:var(--rosso);color:#fff;font-size:.6rem;font-weight:800;padding:0 6px;border-radius:20px;margin-left:4px;vertical-align:top}
.ac-chat{background:var(--accent);color:#fff;font-size:.66rem;font-weight:800;padding:1px 7px;border-radius:20px;text-decoration:none}
.chat{display:flex;flex-direction:column;gap:10px}
.chat-thread{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto;padding:4px}
.chat-vuota{color:var(--muted);text-align:center;padding:18px}
.chat-msg{display:flex;flex-direction:column;max-width:78%}
.chat-msg.mio{align-self:flex-end;align-items:flex-end}
.chat-msg.coach,.chat-msg.allievo{align-self:flex-start;align-items:flex-start}
.chat-bolla{padding:8px 12px;border-radius:14px;white-space:pre-wrap;word-break:break-word;line-height:1.35}
.chat-msg.mio .chat-bolla{background:var(--accent);color:#fff;border-bottom-right-radius:4px}
.chat-msg:not(.mio) .chat-bolla{background:color-mix(in srgb,var(--muted) 18%,var(--panel));border-bottom-left-radius:4px}
.chat-meta{font-size:.62rem;color:var(--muted);margin-top:3px}
.chat-form{display:flex;gap:8px;align-items:flex-end}
.chat-form textarea{flex:1;resize:vertical;min-height:44px}
.chat-form button{white-space:nowrap}

/* Segnalazioni */
.segn-lista{display:flex;flex-direction:column;gap:10px}
.segn-riga{background:var(--panel);border:1px solid var(--bordo,#334);border-radius:12px;padding:12px 16px}
.segn-riga.chiusa{opacity:.55}
.segn-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:.8rem;margin-bottom:6px}
.segn-chi{font-weight:700}
.segn-data{color:var(--muted)}
.segn-stato{margin-left:auto;font-size:.66rem;font-weight:800;text-transform:uppercase;color:var(--muted)}
.segn-stato.aperta{color:var(--rosso)}
.segn-testo{white-space:pre-wrap;line-height:1.4}
.segn-pagina{font-size:.72rem;color:var(--muted);margin-top:4px}
.segn-azione{margin-top:8px}

/* Analisi allenamento (stile Strava) */
.an-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.an-stats{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 16px}
.an-stat{flex:1;min-width:88px;background:var(--panel);border:1px solid var(--bordo,#334);border-radius:12px;padding:12px 14px;text-align:center}
.an-v{display:block;font-size:1.5rem;font-weight:800;line-height:1}
.an-l{display:block;font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:5px}
.an-previsto{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:color-mix(in srgb,var(--accent) 12%,var(--panel));
  border:1px solid var(--accent);border-radius:12px;padding:12px 16px;margin-bottom:18px}
.an-p-lbl{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--accent)}
.an-p-zona{font-weight:800;background:var(--accent);color:#fff;padding:1px 9px;border-radius:20px;font-size:.8rem}
.an-p-txt{color:var(--muted)}
.an-splits{display:flex;align-items:flex-end;gap:3px;overflow-x:auto;padding-bottom:6px}
.an-split{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:44px}
.an-s-bar{height:120px;width:22px;display:flex;align-items:flex-end;background:color-mix(in srgb,var(--muted) 12%,transparent);border-radius:5px;overflow:hidden}
.an-s-bar>span{width:100%;background:var(--accent);border-radius:5px 5px 0 0;min-height:3px}
.an-s-km{font-size:.6rem;color:var(--muted)}
.an-s-passo{font-size:.72rem;font-weight:700;font-variant-numeric:tabular-nums}
.an-s-fc,.an-s-dis{font-size:.6rem;color:var(--muted)}
.an-tab-wrap{overflow-x:auto}
.an-tab{width:100%;border-collapse:collapse;font-size:.82rem}
.an-tab th,.an-tab td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--bordo,#2a3342)}
.an-tab th{font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.an-mono{font-variant-numeric:tabular-nums}
/* grafici a serie (quota/passo/FC) */
.an-graf{margin-bottom:14px}
.an-g-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:3px}
.an-g-titolo{font-size:.78rem;font-weight:700}
.an-g-range{font-size:.66rem;color:var(--muted);font-variant-numeric:tabular-nums}
.an-g-svg{width:100%;height:120px;display:block}
.an-g-area{stroke:none;opacity:.20}
.an-g-line{fill:none;stroke-width:1.6}
.an-graf-quota .an-g-area{fill:#34d399}.an-graf-quota .an-g-line{stroke:#34d399}
.an-graf-passo .an-g-area{fill:#60a5fa}.an-graf-passo .an-g-line{stroke:#60a5fa}
.an-graf-fc .an-g-area{fill:#fb7185}.an-graf-fc .an-g-line{stroke:#fb7185}
.an-g-xaxis{position:relative;height:16px;margin-top:2px}
.an-g-tick{position:absolute;transform:translateX(-50%);font-size:.6rem;color:var(--muted)}
.an-g-xunit{position:absolute;right:0;top:0;font-size:.6rem;color:var(--muted)}

/* Ritmi (VDOT + zone FC) */
.sa-target{font-size:.66rem;font-weight:700;color:var(--accent);margin-top:5px;
  border-top:1px dashed color-mix(in srgb,var(--accent) 40%,transparent);padding-top:4px}
.eg-target{font-size:.66rem;font-weight:700;color:var(--accent);margin-top:4px}
.eg-verifica{font-size:.66rem;font-weight:700;margin-top:6px;padding:4px 8px;border-radius:6px}
.eg-verifica.verde{background:color-mix(in srgb,var(--verde) 16%,transparent);color:var(--verde)}
.eg-verifica.giallo{background:color-mix(in srgb,var(--giallo) 16%,transparent);color:var(--giallo)}
.eg-verifica.muted{background:color-mix(in srgb,var(--muted) 14%,transparent);color:var(--muted)}
.rit-tab td{font-size:.9rem;padding:9px 10px}
.rit-val{text-align:right;font-weight:800;font-size:1rem !important}
.rit-fc{color:var(--muted);font-weight:400;font-size:.72rem;margin-left:6px}

/* allievo: settimane collassabili + spunta fatto */
.sa-head{cursor:pointer;user-select:none}
.sa-toggle{color:var(--muted);transition:transform .15s;font-size:.8rem}
.settimana-allievo.chiusa .sa-giorni{display:none}
.settimana-allievo.chiusa .sa-toggle{transform:rotate(-90deg)}
.sa-giorno{display:flex;justify-content:space-between;align-items:center;gap:6px}
.sa-fatto{flex-direction:row;align-items:center;gap:3px;font-size:.64rem;color:var(--muted);text-transform:none;letter-spacing:0;cursor:pointer}
.sa-fatto input{width:auto}

/* storico eventi */
.eventi{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:5px;font-size:.84rem}
.ev-data{color:var(--muted);font-family:monospace;font-size:.78rem}

/* ===== Ottimizzazione telefono (allievi soprattutto) ===== */
@media(max-width:560px){
  .topbar{padding:9px 14px}
  .brand-logo{width:34px;height:34px}
  .brand-txt{display:none}              /* su telefono resta solo il logo: fa spazio al menu */
  .topbar nav{gap:14px}
  .who{display:none}                    /* il nome utente si nasconde: lo spazio serve al menu */
  .wrap{padding:0 14px;margin:16px auto}
  h1{font-size:1.32rem}
  .sub{font-size:.9rem}
  /* intestazioni: da riga a colonna */
  .page-head-row,.allievo-head{flex-direction:column;align-items:stretch}
  .ph-azioni{flex-wrap:wrap}
  .gara-box{text-align:left}
  .mia-settimana .ms-head{flex-wrap:wrap}
  /* strava / promemoria: bottone a tutta larghezza sotto */
  .strava-box,.checkin-reminder{flex-direction:column;align-items:stretch}
  .strava-box .btn-strava,.strava-box form,.checkin-reminder .btn-primary{width:100%;text-align:center}
  .piano-azioni .btn-primary{display:block;text-align:center}
  /* le settimane: una colonna, celle grandi e leggibili */
  .sa-giorni{grid-template-columns:1fr !important;gap:8px}
  .sa-cell{min-height:auto}
  /* tabelle coach: scorrono in orizzontale invece di sfondare */
  .checkin-tab,.weeks{display:block;overflow-x:auto;white-space:nowrap}
  /* editor: barra a capo ordinata (resta uno strumento più comodo su schermo grande) */
  .editor-toolbar{gap:8px}
  .legenda{display:none}
  /* riepilogo esecuzione a colonna singola */
  .riep-tiles{grid-template-columns:1fr 1fr}
}
@media(max-width:380px){
  .ci-scala{gap:5px}
  .ms-day{min-width:34px;font-size:.6rem}
}

/* ===== Rifinitura 360° — allievo mobile-first, coach desktop ===== */

/* Telefono (allievo soprattutto): comfort di tocco, stacking, leggibilità */
@media(max-width:560px){
  h1{font-size:1.38rem}
  .card{padding:16px}
  /* target di tocco ≥44px (linee guida iOS/Android) */
  button,.btn-primary,.btn-secondary,.btn-strava,.btn-small{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .topbar nav a{padding:6px 0;font-size:.92rem}
  /* login a tutta larghezza */
  .login-card{margin:5vh auto 0;max-width:none}
  .login-card button{width:100%}
  .login-card input{font-size:16px}          /* evita lo zoom automatico di iOS */
  input,select,textarea{font-size:16px}
  /* fitcheck: righe gara e checkbox comode */
  .gara-riga{grid-template-columns:1fr 1fr}
  .fc-grid{gap:12px}
  .chk{padding:8px 6px;font-size:.92rem;border:1px solid var(--line);border-radius:8px}
  .chk input{width:20px;height:20px}
  .fc-giorni{gap:8px}
  /* piano allievo: celle giorno più ariose e leggibili */
  .sa-testo{font-size:.86rem}
  .sa-giorno{font-size:.72rem}
  .sa-fatto{font-size:.74rem}
  .sa-fatto input{width:20px;height:20px}
  .settimana-allievo{padding:12px}
  /* check-in: pulsanti grandi da pollice */
  .ci-domanda{padding:14px}
  .ci-opt span{height:54px;font-size:1.1rem}
  /* riepilogo/strip */
  .ms-head h2{font-size:1rem}
}
@media(max-width:420px){
  .gara-riga{grid-template-columns:1fr}
  .riep-tiles{grid-template-columns:1fr}
}

/* Desktop coach: più respiro dove serve, niente cambi sotto i 1040 */
@media(min-width:1100px){
  .allievi-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
}
/* editor su schermo grande: celle un filo più alte e leggibili */
@media(min-width:1200px){
  .ge-cell{min-height:104px}
  .cell-testo{font-size:.8rem}
}

/* Coach su desktop: contenitore più largo per sfruttare lo schermo grande */
.wrap-coach{max-width:1280px;margin:26px auto;padding:0 24px}
@media(max-width:560px){ .wrap-coach{padding:0 14px;margin:16px auto} }
