/* Font ospitati nel plugin: nessuna richiesta a Google */
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-stretch:62% 125%;
  font-display:swap;src:url(fonts/archivo-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-stretch:62% 125%;
  font-display:swap;src:url(fonts/archivo-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ==========================================================================
   SCALA TIPOGRAFICA - cinque misure, nessuna eccezione
     t1 24px  titolo        Archivo 800 expanded, maiuscolo
     t2 17px  sottotitolo   Archivo 700 expanded, maiuscolo  (nomi esercizio)
     t3 19px  dato          Courier                          (reps, kg, tempo)
     t4 15px  interfaccia   Courier                          (bottoni, tab, input)
     t5 13px  caption       Courier maiuscolo spaziato       (etichette)
   COLORE - solo nero e nero 68%. Il giallo indica solo lo stato attivo.
            Il grigio e sceso al 68% (era 50%): sul fondo crema il 50% dava un
            contrasto di 3,6:1, sotto il minimo di 4,5:1 per il testo piccolo.
   LINEE  - tutte 1px.
   ========================================================================== */
:root{
  --ink:#0A0A0A; --ink50:rgba(10,10,10,.68); --paper:#F4F3EC; --yellow:#EFE600;
  --t1:24px; --t2:17px; --t3:19px; --t4:15px; --t5:13px;
  /* i campi in cui si scrive non scendono mai sotto i 16px: sotto quella
     soglia iOS ingrandisce da solo appena tocchi il campo, e la pagina salta */
  --tin:16px;
  --tap:48px;
}
*{box-sizing:border-box}
/* niente zoom con le dita (pizzico, doppio tocco): sposta la pagina e in palestra non serve */
html,body{touch-action:manipulation}
html{
  -webkit-text-size-adjust:100%;
  overscroll-behavior-y:none;
  -webkit-overflow-scrolling:touch;
}
/* Un elemento con l'attributo hidden deve sparire, punto. Senza questa riga
   un display: scritto in una regola sotto se lo mangia, e l'elemento resta li:
   e successo con il riquadro video e con la barra del cronometro. */
[hidden]{display:none!important}
body{
  max-width:100%;overflow-x:clip;
  margin:0;background:var(--paper);color:var(--ink);
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 300;
  font-size:var(--t4);line-height:1.5;-webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
  padding-top:env(safe-area-inset-top, 0px);
  padding-bottom:env(safe-area-inset-bottom, 0px);
  padding-left:env(safe-area-inset-left, 0px);
  padding-right:env(safe-area-inset-right, 0px);
}
.tab, .btn, .setbtn, .chkbtn, .nav, .top, .who, .wake-btn, .pwa-btn, .coach-btn {
  -webkit-user-select:none; user-select:none; -webkit-touch-callout:none;
}
.wrap{max-width:940px;margin:0 auto;padding:0 16px 132px}
.ex,.exdata,.rx,.log,.field{min-width:0}

.t1{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 122,'wght' 800;
  text-transform:uppercase;letter-spacing:.01em;font-size:var(--t1);line-height:1.05}
.t2{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;letter-spacing:.015em;font-size:var(--t2);line-height:1.2}
.t3{font-family:'Courier New',Courier,monospace;font-size:var(--t3);letter-spacing:.02em}
.t4{font-family:'Courier New',Courier,monospace;font-size:var(--t4);letter-spacing:.1em;
  text-transform:uppercase}
.t5{font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink50)}

a{color:var(--ink)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ---------- barra di identificazione ---------- */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0 12px}
.who{min-width:0}
.who .nm{display:block;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;letter-spacing:.015em;font-size:var(--t2);line-height:1.2}
.who .ct{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink50);margin-top:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- navigazione ----------
   La barra (.nav) e sempre visibile. Il menu (.navmenu) sta sotto, nel flusso
   della pagina: in cima si vede, scorrendo se ne va da solo. Da scorsi in
   basso il tocco sulla barra lo riapre come tendina (.pop). */
.nav{position:sticky;top:0;z-index:60;background:var(--paper);
  border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);
  margin:0 -16px;padding:0 16px}
.ptrack{height:3px;background:none;position:relative}
.pfill{position:absolute;inset:0 auto 0 0;background:var(--yellow);width:0;transition:width .3s}
.navbar{display:flex;align-items:center;height:44px}
.navtoggle{flex:1 1 auto;min-width:0;height:44px;display:flex;align-items:center;gap:12px;
  background:none;border:none;padding:0 16px 0 0;cursor:pointer;color:var(--ink);text-align:left;
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.08em;text-transform:uppercase}
.navtext{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.15;gap:1px}
.navblkname{font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink50);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* il blocco in cui sei lo dice gia la riga dei blocchi sotto: qui non serve ripeterlo */
.navblkname{display:none}
.navwhere{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 700;letter-spacing:.03em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.navpct{flex:0 0 auto;color:var(--ink50)}
.navchev{flex:0 0 auto;width:14px;height:12px;fill:none;stroke:currentColor;
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.nav.expanded .navchev{transform:rotate(180deg)}
.navslot{margin:0 -16px}
.navslot.shut .navmenu:not(.pop){display:none}
.nav .blkrow{border-top:1px solid var(--ink50);padding:4px 0}
.navhome{flex:0 0 auto;width:var(--tap);height:44px;margin-right:-12px;display:flex;
  align-items:center;justify-content:center;cursor:pointer;background:none;border:none;
  border-left:1px solid var(--ink50);color:var(--ink)}
.navhome svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.navhome:active{background:var(--yellow)}
/* messaggi: stesso bottone della casetta, con un pallino giallo quando c'è qualcosa di nuovo */
.navmsg{position:relative;flex:0 0 auto;width:var(--tap);height:44px;margin-right:-12px;display:flex;
  align-items:center;justify-content:center;cursor:pointer;background:none;border:none;
  border-left:1px solid var(--ink50);color:var(--ink)}
.navmsg:has(+ .navhome:not([hidden])){margin-right:0}
.navmsg svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.navmsg:active{background:var(--yellow)}
.navdot{position:absolute;top:8px;right:8px;width:12px;height:12px;border-radius:50%;background:var(--yellow);border:1px solid var(--ink)}
.navmenu{background:var(--paper);border-top:1px solid var(--ink);padding:0 16px}
.navmenu.pop{position:fixed;left:0;right:0;top:var(--navh,48px);z-index:59;
  box-shadow:0 10px 24px rgba(10,10,10,.14);
  padding:0 max(16px, calc((var(--vw, 100vw) - 940px) / 2 + 16px));
  max-height:calc(100vh - var(--navh,48px) - 12px);overflow-y:auto}
@media print{.navmenu,.navslot{display:none!important}}
.navrow{display:flex;align-items:center;padding:8px 0}
.navrow+.navrow{border-top:1px solid var(--ink50)}
/* la riga «Il tuo programma» è nascosta (ci si arriva dalla casetta): la prima visibile non ha linea sopra */
.navrow[hidden]+.navrow{border-top:0}
.navrow .rk{flex:0 0 auto;padding-right:8px;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50)}
.tab{flex:1 1 0;min-width:0;height:44px;margin-right:8px;padding:0 4px;
  cursor:pointer;background:none;border:1px solid var(--ink);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s}
.tab:last-child{margin-right:0}
/* hover e stato attivo cambiano solo colore del testo e sfondo: stesso carattere, stessa forma, stesso bordo */
@media (hover:hover){ .tab:hover{background-color:rgba(10,10,10,.08)} }
/* il pallino sta nel layout solo quando serve: da invisibile rubava 12px al testo
   e tagliava "Giorno 2" sugli schermi stretti */
.tab .dot{display:none;width:5px;height:5px;background:var(--ink);flex:0 0 auto;margin-right:8px}
.tab.done .dot{display:block}

/* ---------- avanzamento ----------
   Giallo pieno = seduta finita. Giallo a meta con la diagonale = iniziata e
   non chiusa. Niente = non toccata. Vale per i giorni, per le settimane e per
   le pastiglie della struttura, cosi si legge a che punto sei senza aprire
   niente. La settimana e finita solo quando lo sono tutte le sue sedute. */
.tab.done,button.chip.done{background:var(--yellow)}
/* seduta chiusa a mano: gialla come quella finita, ma col bordo tratteggiato,
   per distinguere "fatta tutta" da "chiusa con degli esercizi vuoti" */
.tab.closed,button.chip.closed{background:var(--yellow);border-style:dashed}
/* angolo fisso, non "to bottom right": cosi il taglio passa sempre per il
   centro e la meta si legge uguale su una linguetta stretta e su una pastiglia
   larga, che con la diagonale da angolo ad angolo non succedeva */
.tab.part,button.chip.part{background-image:linear-gradient(110deg,
  var(--yellow) 0 calc(50% - .5px),
  var(--ink)    calc(50% - .5px) calc(50% + .5px),
  transparent   calc(50% + .5px))}

/* la scheda aperta vince su tutto: pieno nero, nessun dubbio su dove sei */
.tab.on{background:var(--ink);background-image:none;color:var(--paper)}
.tab.on .dot{background:var(--paper)}
@media (hover:hover){ .tab.on:hover{background-color:var(--ink)} }
#navWeek .tab{margin-right:8px;max-width:64px}
#navDay .tab{max-width:144px;padding:0 12px}
/* più di 4 sedute: la riga scorre di lato e i pulsanti non si stringono; il successivo
   che spunta a destra dice che c'è altro */
#navDay.scorre{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}
#navDay.scorre::-webkit-scrollbar{display:none}
#navDay.scorre .tab{flex:0 0 auto;min-width:104px;max-width:none}
.tab.isplan{flex:1.7 1 0;max-width:168px}

/* Il programma e il livello piu alto della gerarchia e sta in cima. E un
   bottone con la sua forma di bottone - stessa altezza e stesso bordo delle
   linguette sotto - e la barra di avanzamento gli sta accanto, fuori: dentro
   sembrava una decorazione del bottone invece di un dato a se. */
#navProg{align-items:center}
#navProg .tab{flex:0 0 auto;max-width:none;margin-right:12px;padding:0 16px}
.progwrap{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px}
.progbar{flex:1 1 auto;min-width:40px;height:8px;border:1px solid var(--ink);
  position:relative;overflow:hidden;background:none}
.progbarfill{position:absolute;inset:0 auto 0 0;width:0;background:var(--yellow);
  transition:width .3s}
.progpct{flex:0 0 auto;font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.06em;text-align:right}

/* ---------- menu dei blocchi ----------
   Terza riga della barra, scorre in orizzontale quando i blocchi sono tanti.
   Le linguette qui sono piu basse delle altre: e una riga di servizio, non
   deve rubare schermo alla seduta. */
.blkrow{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;
  -webkit-overflow-scrolling:touch}
.blkrow::-webkit-scrollbar{display:none}
.blkrow .rk{position:sticky;left:0;background:var(--paper);z-index:1}
.tab.blk{flex:0 0 auto;height:44px;max-width:none;padding:0 12px;
  font-size:var(--t5);letter-spacing:.12em}
.tab.blk.on{background:var(--ink);color:var(--paper)}

/* ---------- pannelli ---------- */
.panel{display:none;padding-top:24px}
.panel.on{display:block}
.pheader{display:none}

.shead h2{margin:0}

/* ---------- blocco ---------- */
/* doppia linea fra i blocchi, linea singola fra gli esercizi: due livelli
   di separazione che si distinguono a colpo d'occhio */
.block{border-top:3px double var(--ink);margin-top:32px;padding-top:4px}
.bhead{display:flex;align-items:center;padding:12px 0 16px}
.bnum{font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.04em;color:var(--ink50);margin-right:12px;flex:0 0 auto;white-space:nowrap}
.btitle{min-width:0;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;letter-spacing:.03em;font-size:var(--t2)}
.bhead .m{margin-left:auto;padding-left:12px;flex:0 1 auto;text-align:right;font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.16em;text-transform:uppercase;color:var(--ink50)}
/* l'intestazione del blocco e un bottone: tocchi e il blocco si chiude o si apre */
.block>.bhead{cursor:pointer;-webkit-user-select:none;user-select:none}
.block>.bhead:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.bcount{margin-left:auto;flex:0 0 auto;font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.1em;color:var(--ink50)}
.block.bdone>.bhead .bcount{color:var(--ink)}
.block.bdone>.bhead .bcount::before{content:'\2713\00a0'}
.bchev{flex:0 0 auto;width:14px;height:10px;margin-left:12px;fill:none;stroke:currentColor;
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.block.coll .bchev{transform:rotate(-90deg)}
.block.coll .bbody{display:none}
.block.coll>.bhead{padding-bottom:12px}
.bfoot{display:flex;justify-content:flex-end;padding:4px 0 16px}
.markall{height:var(--tap);padding:0 16px;cursor:pointer;
  background:none;border:1px solid var(--ink50);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase;
  display:inline-flex;align-items:center;transition:background .15s,border-color .15s}
.markall:hover{background:var(--yellow);border-color:var(--ink)}
.markall .box{width:16px;height:16px;border:1px solid var(--ink);margin-right:12px;flex:0 0 auto}
.markall.all .box{background:var(--ink)}

/* ---------- esercizio ---------- */
.ex{padding:0 0 24px;margin-bottom:24px;border-bottom:1px solid var(--ink50)}
.ex:last-child{border-bottom:none;margin-bottom:0}
.ex.is-done .exhead .exname{color:var(--ink50)}
.exhead{margin-bottom:12px}
.exrow{display:flex;align-items:flex-start;gap:12px}
.exname{flex:1;min-width:0;padding-top:12px}
.exhead .cue{margin-top:8px}
.exicons{flex:0 0 auto;display:flex;align-items:center;margin-top:4px}
.pairlab{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50);margin-bottom:4px}
.cue{display:block;margin-top:8px;max-width:58ch;
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 300;
  text-transform:none;letter-spacing:0;
  font-size:var(--t4);line-height:1.55;color:var(--ink50)}
.cue strong{font-variation-settings:'wdth' 112,'wght' 700;color:var(--ink)}
.ex.is-done .cue{color:var(--ink50)}
/* Le azioni dell'esercizio sono icone da 40px: il video (quadrato col triangolo)
   e la nota (matita, col puntino giallo quando c'e qualcosa di scritto). */
.vid,.exnote{flex:0 0 auto;width:44px;height:44px;padding:12px;display:flex;align-items:center;
  justify-content:center;position:relative;cursor:pointer;background:none;border:0;
  text-decoration:none;color:var(--ink);margin:0}
.vid svg,.exnote svg{display:block;width:22px;height:22px}
.exnote svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.notedot{display:none;position:absolute;top:8px;right:8px;width:10px;height:10px;
  background:var(--yellow);border:1px solid var(--ink);border-radius:50%}
.exnote.has .notedot{display:block}
@media (hover:hover){ .vid:hover,.exnote:hover{background:var(--yellow)} }
.vid:active,.exnote:active{background:var(--yellow)}
.vid:focus-visible,.exnote:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.gaptag{display:block;height:30px;padding:0 12px;margin-top:8px;cursor:pointer;background:none;
  border:1px dashed var(--ink);color:var(--ink);font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.06em;text-transform:uppercase}
.gaptag:active{background:var(--yellow)}

/* l'esercizio "di adesso": una barra gialla nel margine, che non sposta niente */
.ex{position:relative}
.ex.now::before{content:'';position:absolute;left:-12px;top:0;bottom:20px;width:5px;background:var(--yellow)}
.ex.is-skipped .exname{text-decoration:line-through;color:var(--ink50)}
.ex.is-skipped .exdata,.ex.is-skipped .cue{opacity:.45}

/* ---------- video nel riquadro ---------- */
.vbox{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center}
.vbd{position:absolute;inset:0;background:rgba(10,10,10,.82)}
.vpanel{position:relative;width:min(920px,100%);max-height:100%;outline:none;
  display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--ink)}
.vhead{display:flex;align-items:center;gap:12px;padding:12px 8px 12px 16px;
  border-bottom:1px solid var(--ink)}
.vname{flex:1;min-width:0;font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vx{flex:0 0 auto;width:var(--tap);min-height:var(--tap);padding:0;cursor:pointer;line-height:1;
  background:none;border:none;color:var(--ink);
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 100,'wght' 400;font-size:26px}
@media (hover:hover){ .vx:hover{background:var(--ink);color:var(--paper)} }
.vx:active{background:var(--ink);color:var(--paper)}
.vx:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}
.vframe{position:relative;width:100%;aspect-ratio:16/9;background:var(--ink)}
.vmsg{display:none;margin:0;padding:24px 24px;background:var(--paper);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);line-height:1.6}
.vframe.vko iframe{display:none}
.vframe.vko{background:var(--paper);aspect-ratio:auto}
.vframe.vko .vmsg{display:block}
.vframe iframe{position:absolute;inset:0;display:block;width:100%;height:100%;border:0}
.vfoot{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;
  padding:12px 16px;border-top:1px solid var(--ink)}
.vhint{flex:1;min-width:0;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink50)}
.vout{flex:0 0 auto;min-height:var(--tap);display:inline-flex;align-items:center;padding:0 16px;
  background:var(--yellow);border:1px solid var(--ink);color:var(--ink);text-decoration:none;
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
@media (hover:hover){ .vout:hover{background:var(--ink);color:var(--paper)} }
body.vopen{overflow:hidden}
/* col cronometro aperto il riquadro si alza, cosi il bottone resta raggiungibile */
body.tmron .vpanel{margin-bottom:34vh}
@media(min-width:700px){ .vpanel{max-height:92vh;margin:0 24px} }
/* schermo basso o telefono girato: il riquadro scorre invece di sforare */
@media(max-height:520px){ .vpanel{max-height:96vh;overflow:auto} }

.rx{border:1px solid var(--ink)}
.rxrow{display:flex;border-top:1px solid var(--ink)}
.rxrow:first-child{border-top:none}
.rx .c{flex:1;min-width:0;padding:12px 16px;border-left:1px solid var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t3);
  letter-spacing:.02em;text-transform:uppercase}
.rx .c:first-child{border-left:none}
.rx .c.sub{color:var(--ink50)}
.rx .metlab{flex:none;padding:12px 16px;font-family:'Courier New',Courier,monospace;font-size:var(--t3);
  letter-spacing:.02em;text-transform:uppercase;font-weight:700;background:var(--ink);color:var(--paper,#fff)}
/* ---------- cronometri ---------- */
/* la cella diventa un bottone solo quando c'e una durata da far scorrere */
button.c.tmr{display:block;width:100%;text-align:left;background:transparent;
  border:none;border-left:1px solid var(--ink);cursor:pointer;color:var(--ink);
  box-shadow:inset 0 -3px 0 var(--yellow)}
button.c.tmr:first-child{border-left:none}
button.c.tmr:hover,button.c.tmr:focus-visible{background:var(--yellow);outline:none}
.tmrlink{font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;
  background:var(--yellow);border:none;cursor:pointer;padding:2px 8px;margin:-2px 0}
.tmrlink:hover,.tmrlink:focus-visible{background:var(--ink);color:var(--paper);outline:none}

/* caselle delle serie e bottone Fatto sulla stessa riga */
.serielog{display:flex;align-items:flex-end;justify-content:space-between;
  gap:12px;flex-wrap:wrap}
.serielog .setrow{flex:1 1 auto;min-width:0}
/* Il blocco campo + Fatto non ha piu una larghezza sua: occupa quello che c'e,
   e se accanto alle caselle non ci sta va a capo e prende tutta la riga.
   Prima era flex:0 0 auto e misurava il campo piu il bottone (circa 345px):
   su 320-360px usciva dallo schermo e Fatto veniva tagliato. */
.serielog .log{flex:1 1 230px;min-width:0;width:auto}

/* campo carico: ora occupa tutta la riga, la spunta sta accanto al nome */
.log{margin-top:12px}
.log .field{min-width:0}
.cap{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50);margin-bottom:4px}
input.load{width:100%;height:var(--tap);
  font-family:'Courier New',Courier,monospace;font-size:var(--tin);letter-spacing:.06em;
  color:var(--ink);background:none;text-transform:uppercase;
  border:1px solid var(--ink50);border-radius:0;padding:0 12px;outline:none}
input.load:focus{border-color:var(--ink)}
input.load::placeholder{color:var(--ink50)}
/* la spunta e un quadrato vuoto a sinistra del nome, come sul foglio stampato;
   da fatta si riempie di giallo col segno dentro */
.chkbtn{position:relative;flex:0 0 auto;width:32px;height:32px;margin-top:8px;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:none;border:1px solid var(--ink);color:transparent;transition:background .15s}
/* il quadrato e piccolo, ma il dito lo trova lo stesso: l'area attiva arriva a 48px */
.chkbtn::before{content:'';position:absolute;inset:-8px}
.chkbtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.6;
  stroke-linecap:round;stroke-linejoin:round}
@media (hover:hover){ .chkbtn:hover{background:var(--yellow)} }
.chkbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.ex.is-skipped .chkbtn{border-style:dashed}
.ex.is-skipped .chkbtn::after{content:'';width:12px;height:2px;background:var(--ink50)}
.chkbtn[aria-pressed="true"]{background:var(--yellow);color:var(--ink)}

/* Schermi molto stretti: le linguette perdono un po' di spazio fra le lettere, cosi
   "Giorno 1" non viene tagliato; Fatto va sotto il campo, a tutta larghezza */
@media(max-width:359px){ .tab{font-size:14px;letter-spacing:.01em;margin-right:4px} #navWeek .tab{margin-right:4px} #navDay .tab{padding:0 8px} }
/* ---------- cosa serve oggi ----------
   Si legge una volta, prima che la cliente arrivi, quindi sta in cima e non
   occupa piu spazio di quello che serve a leggerla. */
.kit{border:1px solid var(--ink);box-shadow:inset 4px 0 0 var(--yellow);
  margin-top:16px;padding:0 16px 16px}
.kit .bhead{padding:12px 0}
.kitlist{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.kitlist li{border:1px solid var(--ink50);padding:8px 12px;
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.06em;text-transform:uppercase}
.kitpesi{margin-top:12px;border-top:1px solid var(--ink50);padding-top:12px}
.kitpesi .cap{display:block;margin-bottom:4px}
.kitval{font-family:'Courier New',Courier,monospace;font-size:var(--t3);
  letter-spacing:.02em}

/* ---------- serie ----------
   Una casella per serie, grande abbastanza da prenderla con le mani sudate.
   Piena = fatta. L'ultima piena spunta l'esercizio. */
.setrow{margin-top:12px}
/* nel superset il contatore e del giro: sta staccato dalle righe e allineato
   al bordo del riquadro, come il recupero */
.ssetsets{margin:16px -16px 0;padding:12px 16px 0;border-top:1px solid var(--ink50)}
/* quando il giro non ha recupero, il contatore e l'ultima cosa del riquadro:
   senza questo respiro le caselle restano appiccicate al bordo */
.ssetsets:last-child{padding-bottom:16px}
.ssetsets .setrow{margin-top:0}
/* l'etichetta sta sopra il blocco, come tutti gli altri titoli della scheda */
.setrow .cap{display:block;margin-bottom:8px}
.setbox{display:flex;flex-wrap:wrap;gap:8px}
.setbtn{width:var(--tap);height:var(--tap);flex:0 0 auto;cursor:pointer;
  background:none;border:1px solid var(--ink);color:var(--ink50);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .12s}
.setbtn[aria-pressed="true"]{background:var(--yellow);color:var(--ink)}
@media (hover:hover){ .setbtn:hover{box-shadow:inset 0 0 0 2px var(--ink)} }
.setbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.setrow.piena .cap{color:var(--ink)}

/* una riga per serie: numero, carico, e la linea per la stampa.
   Il numero e lo stesso bottone che conta la serie: non ne servono due. */
.serielista{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.seriga{display:flex;align-items:center;gap:8px}
.seriga .setbtn{width:var(--tap);height:var(--tap)}
.seriga input.load{flex:1;min-width:0;height:var(--tap)}
.seriga .printline{display:none}

/* ---------- recupero ---------- */
/* stessa altezza del campo carico e del bottone Fatto: e il terzo gesto della
   serie, non una nota sulla prescrizione */
.restrow{margin-top:12px}
.restbtn{width:100%;min-height:var(--tap);cursor:pointer;
  display:flex;align-items:center;gap:12px;padding:0 16px;
  background:none;border:1px solid var(--ink);color:var(--ink);
  box-shadow:inset 4px 0 0 var(--yellow);text-align:left}
.restbtn .rk{font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50)}
.restbtn .rv{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 110,'wght' 700;font-size:var(--t3);line-height:1}
/* il cronometro all'estremita destra: dice che si preme, non che si legge */
.restbtn .rico{margin-left:auto;flex:0 0 auto;width:19px;height:19px;
  fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;opacity:.7;
  pointer-events:none}  /* il tocco e del bottone, non dell'icona */
.restbtn .rn{font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.1em;text-transform:uppercase;color:var(--ink50);
  text-align:right}
@media (hover:hover){ .restbtn:hover{background:var(--yellow)} }
.restbtn:active{background:var(--yellow)}
.restbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* ---------- superset ---------- */
/* il riquadro dice da solo che sono esercizi incatenati: il bordo li tiene
   insieme, la freccia dice che non ci si ferma, il recupero sta solo in fondo */
/* il riquadro parte dal primo esercizio: non c'e piu un'intestazione sua */
.sset{border:1px solid var(--ink);padding:16px 16px 0;margin-bottom:24px}
/* avviso di sola vista coach: un superset con giri diversi e un JSON sbagliato */
.ssetko{border:1px solid var(--ink);box-shadow:inset 4px 0 0 var(--yellow);
  padding:12px 12px;margin-bottom:16px;
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);line-height:1.5}
.sset .ex{border-bottom:none;padding-bottom:0;margin-bottom:0}
.ssetlink{display:flex;align-items:center;gap:12px;margin:16px 0 16px;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink50)}
.ssetlink::before{content:"\2193";font-size:var(--t3);line-height:1;color:var(--ink)}
.ssetlink::after{content:"";flex:1;height:1px;background:var(--ink50)}
.ssetnum{display:inline-flex;align-items:center;justify-content:center;
  min-width:30px;height:20px;margin-right:8px;padding:0 4px;vertical-align:2px;
  background:var(--ink);color:var(--paper);
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  font-weight:700;letter-spacing:.1em}
.sset .restrow{margin:16px -16px 0;border-top:1px solid var(--ink50)}
/* Dentro il riquadro il bordo lo mette il riquadro: un secondo bordo qui
   farebbe una cornice dentro la cornice. La barra gialla invece resta, perche
   e il segnale che dice "questo e un cronometro" - lo stesso che e scritto
   sul foglio istruzioni delle clienti. Senza, la riga sembrava un'etichetta
   e nessuno la toccava. */
.sset .restbtn{border:none;box-shadow:inset 4px 0 0 var(--yellow);
  min-height:52px;padding:0 16px}

@media(min-width:820px){
  .ex{display:flex;align-items:flex-start}
  .exhead{flex:1;min-width:0;margin-bottom:0;padding-right:32px}
  .exdata{flex:0 0 400px;width:400px}
}

/* ---------- pager ---------- */
.pager{display:flex;margin-top:32px}
.pager button{flex:1;min-height:var(--tap);cursor:pointer;padding:12px 12px;text-align:left;
  background:none;border:1px solid var(--ink);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
.pager button+button{margin-left:12px;text-align:right}
.pager button:hover{background:var(--yellow)}
.pager button[disabled]{border-color:var(--ink50);color:var(--ink50);cursor:default}
.pager button[disabled]:hover{background:none}
.pager .k{display:block;font-size:var(--t5);letter-spacing:.16em;color:var(--ink50);margin-bottom:4px}

/* ---------- chiudi la seduta ---------- */
.chiudi{margin-top:24px;border-top:1px solid var(--ink);padding:16px 0 0;
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.chiudi-txt{margin:0;flex:1 1 220px;min-width:0;font-size:var(--t4);line-height:1.5;color:var(--ink50)}
.chiudibtn{flex:0 0 auto;max-width:100%;min-height:var(--tap);padding:0 16px;cursor:pointer;
  background:none;border:1px solid var(--ink);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
@media (hover:hover){ .chiudibtn:hover{background:var(--yellow)} }
.chiudibtn:active{background:var(--yellow)}
.chiudi.is-closed{box-shadow:inset 4px 0 0 var(--yellow);padding-left:16px}
.chiudi.is-closed .chiudi-txt{color:var(--ink)}

/* salto al prossimo esercizio non fatto (sedute condotte) */
.fab{position:fixed;right:10px;bottom:calc(14px + env(safe-area-inset-bottom, 0px));z-index:76;
  display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.totop{width:var(--tap);height:var(--tap);display:flex;align-items:center;justify-content:center;
  cursor:pointer;background:var(--paper);border:1px solid var(--ink);color:var(--ink)}
.totop svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.totop:active{background:var(--yellow)}
.nextbtn{min-height:var(--tap);padding:0 16px;
  cursor:pointer;background:var(--ink);color:var(--paper);border:1px solid var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
.nextbtn:active{background:var(--yellow);color:var(--ink)}
body.tmron .fab,body.vopen .fab{display:none}

/* ---------- fine seduta ---------- */
.fine{border-top:3px double var(--ink);margin-top:32px;padding-top:4px}
.fine-riep{margin:0 0 16px;font-family:'Courier New',Courier,monospace;font-size:var(--t3);letter-spacing:.02em}
.fine-feel{margin-bottom:8px}
.feelgrp{margin:0 0 16px}
.feelq{display:block;margin:0 0 8px;font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 100,'wght' 600;font-size:var(--t3)}
.feelrow{display:flex;gap:8px}
.feelcap{display:flex;justify-content:space-between;margin-top:4px;font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.06em;text-transform:uppercase;color:var(--ink50)}
.feelbtn{flex:1 1 0;min-width:0;min-height:var(--tap);padding:0;cursor:pointer;background:none;
  border:1px solid var(--ink);color:var(--ink);font-family:'Courier New',Courier,monospace;
  font-size:var(--t4);letter-spacing:.06em;text-transform:uppercase}
.feelbtn[aria-pressed="true"]{background:var(--yellow)}
@media (hover:hover){ .feelbtn:hover{box-shadow:inset 0 0 0 2px var(--ink)} }
.fine .chiudi{margin-top:16px;border-top:none;padding-top:0}
.fine-wa{display:block;width:100%;min-height:var(--tap);margin-top:16px;cursor:pointer;
  background:var(--ink);color:var(--paper);border:1px solid var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);letter-spacing:.1em;text-transform:uppercase}
.fine-wa:active{background:var(--yellow);color:var(--ink)}

/* ---------- finestra della nota ---------- */
.sheet{position:fixed;inset:0;z-index:125;display:flex;align-items:flex-end;justify-content:center}
.sheet-bd{position:absolute;inset:0;background:rgba(10,10,10,.62)}
.sheet-panel{position:relative;width:min(640px,100%);max-height:92vh;overflow:auto;outline:none;
  background:var(--paper);border-top:1px solid var(--ink);
  padding:16px 16px calc(16px + env(safe-area-inset-bottom, 0px))}
@media(min-width:700px){ .sheet{align-items:center} .sheet-panel{border:1px solid var(--ink)} }
.sheet-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}
.sheet-t{flex:1;min-width:0;padding-top:12px}
.sheet-x{flex:0 0 auto;width:var(--tap);height:var(--tap);cursor:pointer;background:none;border:1px solid var(--ink);
  color:var(--ink);font-size:26px;line-height:1}
.sheet textarea{min-height:130px}
.sheet-skip{display:block;width:100%;margin-top:16px;min-height:var(--tap);padding:0 16px;cursor:pointer;
  background:none;border:1px solid var(--ink);color:var(--ink);font-family:'Courier New',Courier,monospace;
  font-size:var(--t4);letter-spacing:.1em;text-transform:uppercase}
.sheet-skip:active{background:var(--yellow)}
body.sopen{overflow:hidden}
body.sopen .fab{display:none}

/* ---------- note ---------- */
textarea{width:100%;min-height:96px;resize:vertical;
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 300;
  font-size:var(--tin);line-height:1.55;color:var(--ink);background:none;
  border:1px solid var(--ink50);border-radius:0;padding:12px;outline:none}
textarea:focus{border-color:var(--ink)}
textarea::placeholder{color:var(--ink50)}
.notes{border-top:1px solid var(--ink);margin-top:24px}
.notes .bhead{padding:12px 0}
.notes .btitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- struttura ---------- */
.ovlist{border-top:1px solid var(--ink50)}
.ovrow{border-bottom:1px solid var(--ink50);padding:16px 0}
.ovrow .h{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;font-size:var(--t2);letter-spacing:.015em;margin-bottom:12px}
.ovrow .m{font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50);margin-top:2px}
@media(min-width:760px){
  .ovrow{display:flex;align-items:center}
  .ovrow .h{flex:0 0 150px;margin-bottom:0}
  .ovrow .d{flex:1;min-width:0}
  .ovrow .m{flex:0 0 100px;text-align:right;margin-top:0}
}
button.chip,span.chip{display:inline-flex;align-items:center;min-height:var(--tap);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase;text-align:left;
  color:var(--ink);background:none;border:1px solid var(--ink);
  padding:8px 12px;margin:0 8px 8px 0}
button.chip{cursor:pointer;transition:background .15s}
@media (hover:hover){ button.chip:hover{background-color:rgba(10,10,10,.08)} }
.flag{border:1px solid var(--ink);padding:16px;margin-top:24px;font-size:var(--t4);line-height:1.55}
.flag strong{display:block;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  letter-spacing:.03em;text-transform:uppercase;font-size:var(--t2);margin-bottom:8px}

/* ---------- footer e barra azioni ---------- */
.docfoot{border-top:1px solid var(--ink);margin-top:40px;padding:4px 0;
  display:flex;justify-content:space-between;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase}
.docfoot a{display:inline-block;padding:12px 0;text-decoration:none}
/* Stampa sta in fondo alla Struttura, non in una barra fissa: e una cosa che
   si fa una volta, non a ogni serie. Stile dei tab: giallo solo quando lo tocchi. */
.ovprint{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;padding:24px 0 8px}
.printbtn{min-height:var(--tap);padding:0 24px;cursor:pointer;
  background:none;border:1px solid var(--ink);color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
@media (hover:hover){ .printbtn:hover{background:var(--yellow)} }
.printbtn:active{background:var(--yellow)}
.printbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.saved{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:135;
  background:var(--ink);color:var(--paper);padding:8px 16px;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.16em;
  text-transform:uppercase;opacity:0;pointer-events:none;transition:opacity .25s}
.saved.on{opacity:1}
.saved.warn{background:var(--yellow);color:var(--ink);max-width:88vw;text-align:center;line-height:1.35}
.rolepill{position:fixed;left:10px;bottom:14px;z-index:75;width:40px;height:40px;padding:0;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:var(--ink);color:var(--paper);border:none}
.rolepill svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
/* Il cronometro prende un terzo dello schermo: in palestra lo si legge da
   lontano, senza avvicinarsi al telefono. Sta sopra il riquadro video, perche
   un tempo che scorre e piu urgente di un video. */
.tbar{position:fixed;left:0;right:0;bottom:0;z-index:130;
  min-height:50vh;padding:16px 16px calc(16px + env(safe-area-inset-bottom));
  background:var(--ink);color:var(--paper);border-top:1px solid var(--paper);
  display:flex;flex-direction:column;justify-content:center;gap:16px}
.tbar.over{background:var(--yellow);color:var(--ink);border-top-color:var(--ink)}
.tinfo{min-width:0}
.tlab{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;opacity:.6}
.tex{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.tnum{display:block;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 100,'wght' 700;
  font-size:clamp(56px,17vw,104px);line-height:.88;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-transform:uppercase}
.tbar.paused .tnum{opacity:.55}
.trow{display:flex;gap:12px}
.tbtn{flex:1 1 0;min-height:52px;cursor:pointer;
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase;
  background:transparent;color:inherit;border:1px solid currentColor;padding:0 8px}
.tbtn[disabled]{opacity:.35;cursor:default}
@media (hover:hover){
  .tbtn:not([disabled]):hover{background:var(--paper);color:var(--ink)}
  .tbar.over .tbtn:not([disabled]):hover{background:var(--ink);color:var(--paper)}
}
.tbtn:not([disabled]):active{background:var(--paper);color:var(--ink)}
.tbar.over .tbtn:not([disabled]):active{background:var(--ink);color:var(--paper)}
.tbtn:focus-visible{outline:2px solid currentColor;outline-offset:2px}
/* col cronometro aperto l'avviso sale e la pillola del ruolo sparisce:
   spostarla la porterebbe sopra la riga dell'esercizio */
body.tmron .saved{bottom:calc(33vh + 22px)}
body.tmron .rolepill{display:none}
.printline{display:none}

/* ---------- stampa: una seduta per pagina ---------- */
@media print{
  @page{size:A4;margin:13mm 12mm}
  html,body{background:#fff;color:#000;font-size:9pt;line-height:1.3}
  .nav,.saved,.rolepill,.pager,.vid,.top,.bfoot,.tbar,.vbox,.ovprint,.chiudi,.fab,.fine,.exnote,.gaptag,.sheet,.bcount,.bchev{display:none!important}
  .block.coll .bbody{display:block!important}
  .ex.now::before{display:none}
  .wrap{max-width:none;padding:0}
  button.c.tmr{box-shadow:none;border-left:1px solid #000}
  button.c.tmr:first-child{border-left:none}
  .tmrlink{background:none;padding:0;margin:0}
  .panel{display:block!important;page-break-after:always;break-after:page;padding-top:0}
  .panel:last-child{page-break-after:auto;break-after:auto}
  .block,.ex,.shead,.notes,.ovrow{page-break-inside:avoid;break-inside:avoid}
  .pheader{display:block;border-bottom:1px solid #000;padding-bottom:4pt;margin-bottom:8pt;
    font-family:'Courier New',monospace;font-size:7.5pt;letter-spacing:.16em;text-transform:uppercase}
  .shead h2{font-size:16pt}
  .block{margin-top:9pt;border-top:1px solid #000}
  .bhead{padding:5pt 0 5pt}
  .btitle{font-size:9.5pt}
  .ex{padding:0 0 3pt;margin-bottom:3pt;display:flex;align-items:flex-start}
  .exhead{flex:1;min-width:0;margin:0}
  .exdata{flex:0 0 auto;width:96mm;display:flex;align-items:flex-start;margin-left:5mm}
  .exname{font-size:9pt}
  .pairlab{font-size:6.5pt;margin-bottom:1pt}
  .rx{border:none}
  .rxrow{border:none;display:block}
  .rx .c{display:inline;padding:0;border:none;font-size:9.5pt}
  .rx .c+.c::before{content:' / '}
  .rx .c.sub{display:block;font-size:7.5pt}
  .rx{flex:1;min-width:0}
  .log{flex:0 0 auto;width:34mm;margin:0 0 0 5mm;display:block}
  /* la griglia dello schermo ha specificita maggiore di .log: qui va annullata
     a mano, altrimenti la stampa resta a due colonne */
  .prevload{display:none!important}
  .girnum{width:12pt;height:12pt;font-size:7pt}
  input.load,.chkbtn{display:none!important}
  .cap{display:none!important}
  /* in stampa le caselle restano, vuote: si spuntano a penna */
  .setrow{margin-top:4pt}
  .setrow .cap{display:block!important;font-size:6.5pt;margin-bottom:2pt}
  .setbtn{width:14pt;height:14pt;background:none!important;color:#000;font-size:7pt}
  /* in stampa ogni serie ha la sua riga da riempire a penna */
  .serielista{gap:3pt;margin-top:3pt}
  .seriga{gap:6pt}
  .seriga .setbtn{width:12pt;height:12pt}
  .seriga .printline{display:block;flex:1;border-bottom:1px solid #000;height:11pt}
  .restbtn{box-shadow:none;border:none;padding:0;min-height:0}
  .restbtn .rico{display:none}   /* su carta non c'e niente da premere */
  .restbtn .rn{display:none}
  .sset{border:1px solid #000;padding:0 6pt}
  .sset .restrow{margin:4pt 0 0;border-top:1px solid #000}
  .printline{display:block;border-bottom:1px solid #000;height:12pt}
  .log.only-done .printline{display:none}
  .notes{margin-top:6pt;border-top:1px solid #000}
  .notes .bhead{padding:3pt 0 2pt}
  .notes textarea{display:none}
  .notes::after{content:'';display:block;border:1px solid #000;height:24pt}
  .ovrow{padding:5pt 0}
  span.chip,button.chip{min-height:0;padding:2pt 5pt;font-size:7.5pt;margin:0 4pt 2pt 0}
  button.chip.part{background-image:none}
  button.chip.done::after{content:' /fatto'}
  button.chip.part::after{content:' /iniziata'}
  button.chip.closed::after{content:' /chiusa'}
  button.chip.closed{border-style:solid}
  .flag{border:1px solid #000;padding:8pt;font-size:8.5pt}
  .docfoot{margin-top:10pt}
}

/* il riquadro di controllo dei dati: giallo quando il server ha qualcosa */
.flag.ok{box-shadow:inset 4px 0 0 var(--yellow)}

/* Dove sei e cosa viene dopo, sopra il numero. Durante il recupero il telefono
   sta appoggiato a un metro: due righe sole, scritte grandi, niente altro. */
.tctx{border-top:1px solid currentColor;border-bottom:1px solid currentColor}
/* due colonne: l'etichetta a sinistra, e a destra il nome con sotto il
   conteggio. In fila su una riga sola il conteggio finiva fuori schermo. */
.tctx .tr1,.tctx .tr2{display:grid;grid-template-columns:84px minmax(0,1fr);
  gap:4px 16px;padding:12px 0;align-items:baseline}
.tctx .tr2{border-top:1px solid currentColor;opacity:.6;padding:12px 0}
/* le due righe sono bottoni: portano all'esercizio, il timer continua */
button.tgo{display:block;width:100%;margin:0;padding:0;border:0;background:none;color:inherit;text-align:left;
  font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tgo[disabled]{cursor:default}
.tgo:not([disabled]) .tv{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.tgo:not([disabled]):active{background:rgba(127,127,127,.2)}
.tgo:focus-visible{outline:2px solid currentColor;outline-offset:-2px}
/* chiudi: una X in alto a destra, fuori dalla riga dei comandi */
.tx{position:absolute;top:calc(8px + env(safe-area-inset-top, 0px));right:8px;width:var(--tap);height:var(--tap);
  padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:none;border:0;color:inherit}
.tx svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.tx:focus-visible{outline:2px solid currentColor;outline-offset:-4px}
@media (hover:hover){ .tx:hover{background:rgba(127,127,127,.2)} }
.tinfo{padding-right:var(--tap)}
.tctx .cap{grid-column:1;color:inherit;opacity:.55;margin:0;letter-spacing:.1em;white-space:nowrap}
/* Adesso e grande, Poi e piccolo: a un metro di distanza devi leggere in un
   colpo cosa stai facendo, e solo se ti interessa andare a cercare cosa viene. */
.tctx .tv{grid-column:2;min-width:0;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 700;
  text-transform:uppercase;letter-spacing:.015em;line-height:1.1;
  overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.tctx .tr1 .tv{font-size:clamp(19px,5.4vw,27px)}
.tctx .tr2 .tv{font-size:var(--t4);opacity:.85}
.treps{grid-column:2;font-family:'Courier New',Courier,monospace;
  font-size:clamp(16px,4.6vw,22px);letter-spacing:.02em;margin-top:2px}
.treps:empty{display:none}
.tctx .tser{grid-column:2;font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.14em;text-transform:uppercase;
  opacity:.6}
.tctx .tser:empty{display:none}
.tbar.senzapoi .tctx{display:none}

/* ---------- pagina di accesso e di errore (solo WordPress) ---------- */
.gate{padding-top:40px}
.gate p{max-width:52ch;font-size:var(--t4);line-height:1.6}
.gate form{margin-top:24px;max-width:400px}
.gate label{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink50);margin-bottom:8px}
.gate input[type=password]{width:100%;height:var(--tap);border:1px solid var(--ink);border-radius:0;
  background:none;color:var(--ink);padding:0 12px;outline:none;
  font-family:'Courier New',Courier,monospace;font-size:var(--tin)}
.gate input[type=submit]{margin-top:12px;height:var(--tap);padding:0 24px;cursor:pointer;
  border:1px solid var(--ink);border-radius:0;background:var(--yellow);color:var(--ink);
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t4);letter-spacing:.05em;text-transform:uppercase}

/* ---------- top actions & schermo sempre attivo ---------- */
.top-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.wake-btn{
  display:inline-flex;align-items:center;gap:8px;
  position:relative;height:36px;padding:0 12px;background:none;
  border:1px solid var(--ink50);border-radius:0;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink50);
  cursor:pointer;transition:all .15s;
}
/* Lampadina: spenta e un contorno, accesa si riempie e accende i raggi.
   Dice quello che fa - lo schermo resta sveglio - senza bisogno di leggere. */
.wake-btn::before{content:'';position:absolute;inset:-4px}
.wake-ico{width:18px;height:18px;flex:0 0 auto;
  fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.wake-btn[aria-pressed="true"] .wake-ico .wake-glass{fill:var(--ink)}
.wake-btn[aria-pressed="true"]{
  border-color:var(--ink);color:var(--ink);background:var(--yellow);
}


/* ---------- avviso browser whatsapp / instagram ---------- */
.inapp-banner{
  background:var(--ink);color:var(--paper);
  border-bottom:2px solid var(--yellow);
  padding:12px 16px;display:flex;align-items:flex-start;
  justify-content:space-between;gap:12px;
}
.inapp-msg strong{
  color:var(--yellow);display:block;
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t4);letter-spacing:.03em;text-transform:uppercase;margin-bottom:2px;
}
.inapp-msg span{font-family:'Courier New',Courier,monospace;font-size:var(--t4);line-height:1.4}
.inapp-x{
  background:none;border:none;color:var(--paper);font-size:22px;
  line-height:1;cursor:pointer;padding:0 4px;flex:0 0 auto;
}

/* ---------- barra cambio rapido coach ---------- */
.coach-bar{background:var(--yellow);border-bottom:1px solid var(--ink);padding:8px 16px}
.coach-bar-inner{
  max-width:940px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;
}
.coach-tag{
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  font-weight:bold;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);flex:0 0 auto;
}
/* la freccia del menu la disegno io: quella di sistema sta incollata al bordo
   e non si puo spostare */
.coach-select{
  flex:1 1 160px;min-width:0;max-width:320px;height:36px;
  background-color:var(--paper);border:1px solid var(--ink);border-radius:0;
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-size:var(--t4);
  color:var(--ink);padding:0 32px 0 12px;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M0 0h9L4.5 6z' fill='%230A0A0A'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;
}
.coach-select::-ms-expand{display:none}
.coach-btn{
  height:36px;padding:0 10px;background:var(--ink);color:var(--paper);
  border:1px solid var(--ink);border-radius:0;
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.04em;text-transform:uppercase;cursor:pointer;flex:0 0 auto;
}
.coach-btn:hover{background:var(--yellow);color:var(--ink)}

/* ---------- carico dell'ultima volta ----------
   Un riquadro vero, con la barra gialla dei bottoni importanti: il valore e
   grande e c'e un "Usa" che lo scrive nel campo. Prima era una riga di testo
   grigio sotto il campo e non si vedeva. */
.prevload{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--tap);
  padding:8px 12px 8px 16px;margin:0 0 8px;cursor:pointer;text-align:left;
  background:none;border:1px solid var(--ink);color:var(--ink);
  box-shadow:inset 4px 0 0 var(--yellow)}
.pl-t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.pl-k{font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink50)}
.pl-v{font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 110,'wght' 700;font-size:var(--t3);line-height:1.15;
  text-transform:uppercase;overflow-wrap:anywhere}
.pl-a{flex:0 0 auto;padding:8px 12px;background:var(--yellow);border:1px solid var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
@media (hover:hover){ .prevload:hover .pl-a{background:var(--ink);color:var(--paper)} }
.prevload:active .pl-a{background:var(--ink);color:var(--paper)}
.prevload:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* carico per giro nei superset: stessa forma delle serie con i carichi */
.girilog{margin-top:12px}
.girilog .cap{display:block;margin-bottom:8px}
.girnum{flex:0 0 auto;width:var(--tap);height:var(--tap);display:inline-flex;
  align-items:center;justify-content:center;border:1px solid var(--ink50);color:var(--ink50);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4)}

/* ---------- banner installazione pwa ---------- */
.pwa-install{
  position:fixed;bottom:0;left:0;right:0;z-index:90;
  background:var(--paper);border-top:1px solid var(--ink);
  box-shadow:0 -4px 16px rgba(0,0,0,.08);
  padding:12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.pwa-msg{min-width:0}
.pwa-title{
  display:block;font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t4);letter-spacing:.04em;text-transform:uppercase;color:var(--ink);
}
.pwa-sub{display:block;margin-top:2px;font-family:'Courier New',Courier,monospace;
  font-size:var(--t5);letter-spacing:.04em;color:var(--ink50)}
.pwa-sub:empty{display:none}
.pwa-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.pwa-btn{
  height:36px;padding:0 16px;background:var(--yellow);
  border:1px solid var(--ink);border-radius:0;
  font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t4);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  cursor:pointer;
}
.pwa-close{
  height:44px;width:44px;background:none;border:1px solid var(--ink50);
  font-size:18px;line-height:1;color:var(--ink50);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
}

/* ---------- la tua settimana (calendario senza date) ---------- */
.calwrap{margin-top:32px}
.calwrap>.bhead{padding:12px 0 16px}
.cal{border-top:1px solid var(--ink)}
.calg{display:flex;align-items:stretch;gap:12px;border-bottom:1px solid var(--ink50);min-height:64px;
  transition:background .12s}
.calg.over{background:rgba(239,230,0,.35)}
.calgn{flex:0 0 96px;padding:8px 0 0;display:flex;align-items:flex-start;gap:4px}
.calgl{flex:0 0 40px;line-height:var(--tap);font-family:'Courier New',Courier,monospace;font-size:var(--t4);letter-spacing:.1em;text-transform:uppercase}
.calc{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;padding:8px 0}
.calchip{display:block;width:100%;min-height:48px;padding:8px 12px;text-align:left;cursor:grab;
  background:var(--paper);border:1px solid var(--ink);color:var(--ink);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.calchip .cs{display:block;font-family:'Courier New',Courier,monospace;font-size:var(--t4);
  letter-spacing:.1em;text-transform:uppercase}
.calchip .cn{display:block;margin-top:2px;font-family:'Courier New',Courier,monospace;font-size:var(--t5);
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink50);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calchip.next{box-shadow:inset 4px 0 0 var(--yellow);padding-left:16px}
.calchip.dragging{opacity:.35}
.calchip:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media (hover:hover){ .calchip:hover{background-color:rgba(10,10,10,.08)} }
.calghost{position:fixed;z-index:200;pointer-events:none;cursor:grabbing;opacity:.95;
  box-shadow:0 8px 20px rgba(10,10,10,.25)}
body.caldrag{cursor:grabbing;-webkit-user-select:none;user-select:none}
.calnota{width:100%;height:var(--tap);padding:0 12px;border:1px dashed var(--ink50);border-radius:0;background:none;
  color:var(--ink);font-family:'Courier New',Courier,monospace;font-size:var(--tin);letter-spacing:.04em;outline:none}
.calnota:focus{border-color:var(--ink);border-style:solid}
.calnota::placeholder{color:var(--ink50)}
.calplus{flex:0 0 auto;width:var(--tap);height:var(--tap);padding:0;cursor:pointer;background:none;
  border:1px dashed var(--ink50);color:var(--ink50);font-family:'Courier New',Courier,monospace;font-size:var(--t3);line-height:1}
.calplus:active{background:var(--yellow);border-color:var(--ink);color:var(--ink)}
@media (hover:hover){ .calplus:hover{border-color:var(--ink);color:var(--ink)} }
.calhint{margin:12px 0 0;font-size:var(--t4);line-height:1.5;color:var(--ink50)}
@media print{ .calwrap{display:none!important} }

/* ---------- anteprima come cliente ---------- */
a.coach-btn{display:inline-flex;align-items:center;text-decoration:none}
.anteprima{background:var(--yellow);border-bottom:1px solid var(--ink)}
.anteprima-in{max-width:940px;margin:0 auto;padding:8px 16px;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:8px 16px}
.anteprima-t{min-width:0;flex:1 1 220px;display:flex;flex-direction:column;gap:2px}
.anteprima-t strong{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t4);letter-spacing:.03em;text-transform:uppercase}
.anteprima-t span{font-family:'Courier New',Courier,monospace;font-size:var(--t5);line-height:1.4}
.anteprima-b{display:flex;flex-wrap:wrap;gap:8px}
.anteprima .coach-btn{height:44px;padding:0 16px;letter-spacing:.08em}
.anteprima .coach-btn-esci{background:var(--paper);color:var(--ink);border-color:var(--ink)}
@media print{ .anteprima{display:none} }

/* ---------- messaggi ---------- */
.msgbanner{position:fixed;left:0;right:0;bottom:0;z-index:95;display:flex;align-items:stretch;
  background:var(--yellow);border-top:1px solid var(--ink);padding-bottom:env(safe-area-inset-bottom, 0px)}
.msgbanner-b{flex:1 1 auto;min-width:0;min-height:var(--tap);padding:8px 16px;text-align:left;cursor:pointer;background:none;border:0;color:var(--ink);
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 700;font-size:var(--t4);letter-spacing:.03em;text-transform:uppercase}
.msgbanner-x{flex:0 0 auto;width:var(--tap);cursor:pointer;background:none;border:0;color:var(--ink);display:flex;align-items:center;justify-content:center}
.msgbanner-x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
body.msgon .fab{bottom:calc(14px + 56px + env(safe-area-inset-bottom, 0px))}
body.msgon .rolepill{bottom:calc(14px + 56px)}
.chat{position:fixed;inset:0;z-index:140;display:flex;flex-direction:column;background:var(--paper);max-width:100vw}
.chat-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:4px 4px 4px 16px;
  padding-top:calc(4px + env(safe-area-inset-top, 0px));border-bottom:1px solid var(--ink)}
.chat-x{width:var(--tap);height:var(--tap);cursor:pointer;background:none;border:0;color:var(--ink);display:flex;align-items:center;justify-content:center}
.chat-x svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.chat-list{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px;display:flex;flex-direction:column;gap:12px}
.chat-vuoto{margin:auto 0;color:var(--ink50);font-size:var(--t4);line-height:1.5}
.chat-errore{color:var(--ink);background:var(--yellow);padding:8px 12px;margin:0;font-size:var(--t4)}
.msg{max-width:86%;display:flex;flex-direction:column;gap:4px}
.msg.mia{align-self:flex-end;align-items:flex-end}
.msg.altra{align-self:flex-start;align-items:flex-start}
.msg-t{padding:12px 16px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--tin);line-height:1.45}
.msg.mia .msg-t{background:var(--ink);color:var(--paper)}
.msg.altra .msg-t{border:1px solid var(--ink);box-shadow:inset 4px 0 0 var(--yellow);padding-left:20px}
.msg-chi,.msg-q{font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.08em;text-transform:uppercase;color:var(--ink50)}
.chat-form{flex:0 0 auto;display:flex;align-items:flex-end;gap:8px;padding:8px 16px;padding-bottom:calc(8px + env(safe-area-inset-bottom, 0px));border-top:1px solid var(--ink);background:var(--paper)}
.chat-form textarea{flex:1 1 auto;min-width:0;min-height:var(--tap);max-height:140px;resize:none;padding:12px}
.chat-send{flex:0 0 auto;min-height:var(--tap);padding:0 16px;cursor:pointer;background:var(--ink);color:var(--paper);border:1px solid var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t4);letter-spacing:.1em;text-transform:uppercase}
.chat-send[disabled]{opacity:.4;cursor:default}
body.chatopen{overflow:hidden}
body.chatopen .fab,body.chatopen .msgbanner{display:none}
@media print{ .chat,.msgbanner,.navmsg{display:none!important} }
/* barra COACH: «Vedi come cliente» ha la sua riga su telefono */
.coach-vedi{flex:1 1 100%;justify-content:center}
@media(min-width:640px){ .coach-vedi{flex:0 0 auto} }
/* telefoni stretti: con l'icona dei messaggi la barra non deve tagliare «Sett N / Seduta N» */
@media(max-width:359px){
  .navtoggle{gap:8px;padding-right:8px}
  .navmsg,.navhome{width:44px}
  .navwhere{font-size:14px}
}

/* ==========================================================================
   Esercizi e blocchi della seduta (1.32)
   Bordi tutti da 1px, uguali: cambia lo sfondo, non lo spessore. L'esercizio di
   adesso e tutto giallo, a filo dello schermo. Un superset e un'unica cosa: il
   giallo prende anche il titolo del blocco. Solo schermo: la stampa e sopra.
   ========================================================================== */
@media screen{
[hidden]{display:none!important}
.chkbtn{display:none}

/* titolo del blocco: una riga alta, la stessa per tutti */
.block>.bhead{min-height:56px;padding:0}
.block.coll>.bhead{padding:0}
.bbody{padding-bottom:0}

/* ogni esercizio o superset e un'unita, divisa dalle altre da una linea */
.bbody>.ex,.bbody>.sset{border:0;border-top:1px solid var(--ink);padding:16px 0;margin:0}
.bbody>.ex:last-child,.bbody>.sset:last-child{margin:0}
.bfoot{border-top:1px solid var(--ink);padding:16px 0}
.exhead{margin-bottom:0}
.exname{padding-top:6px}
.exicons{margin-top:0;margin-right:-8px}
.exdata{margin-top:4px}
.ex.now::before{display:none}

/* prescrizione: una riga di testo, non una tabella */
.rx{border:0}
.rxrow{display:flex;flex-wrap:wrap;border:0}
.rx .c{flex:0 0 auto;padding:0;border:0;font-size:var(--t4);font-weight:700;letter-spacing:.06em}
.rx .c+.c::before{content:'-';margin:0 8px;font-weight:400}
.rx .c.sub{font-weight:400}
.rx .metlab{padding:0 8px;margin-right:8px;font-size:var(--t5)}
button.c.tmr{display:inline-block;width:auto;box-shadow:none;text-decoration:underline;text-underline-offset:3px;padding:0}

/* il blocco dove sei: tutta la barra gialla, dal titolo all'ultimo esercizio */
.block.ytitle{background:var(--yellow)}
.block.ytitle .cue,.block.ytitle .rx .c.sub,.block.ytitle .bcount,.block.ytitle .bnum{color:var(--ink)}
.block.ytitle .bfoot .markall{border-color:var(--ink)}

/* superset: esercizi separati da una linea, giri e recupero in fondo */
.sset{border:0;margin:0}
.sset>.ex,.sset .ex{border:0;border-top:1px solid var(--ink50);margin:0;padding:16px 0}
.sset>.ex:first-of-type{border-top:0;padding-top:0}
.ssetlink{display:none}
.ssetsets{margin:16px 0 0;padding:16px 0 0;border-top:1px solid var(--ink50)}
.ssetsets:last-child{padding-bottom:0}
.ssetko{margin-bottom:16px}

/* conta-serie / conta-giri: quadri da 56px, il numero e tutta la superficie */
.setrow{margin-top:16px}
.ssetsets .setrow{margin-top:0}
.setrow .cap{margin-bottom:8px}
.setbox{display:grid;gap:8px}
.setbtn{width:auto;height:56px;min-width:0;background:transparent;color:var(--ink);
  border:1px solid var(--ink);text-transform:uppercase;
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 800;font-size:22px}
.setbtn[aria-pressed="true"]{background:var(--ink);color:var(--yellow)}
.block.ytitle .setbtn.now{background:var(--paper)}
.skipbtn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;min-height:44px;
  margin-top:4px;padding:0 4px;cursor:pointer;color:var(--ink);
  font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.14em;
  text-transform:uppercase;text-decoration:underline;text-underline-offset:3px}
.skipbtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* quadri del carico: uno per serie, solo scrittura. Seguono il conteggio. */
.serielista.loadgrid{display:grid;gap:8px;margin-top:16px;flex-direction:initial}
.girilog{margin-top:0}
.seriga{display:block;min-width:0;height:56px;padding:6px 8px;cursor:text;
  border:1px solid var(--ink);background:transparent}
.seriga .sl{display:block;font-family:'Courier New',Courier,monospace;font-size:12px;line-height:1.5;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink50);white-space:nowrap;overflow:hidden}
.seriga input.load{display:block;width:100%;height:auto;padding:0;border:0;background:none;
  font-size:var(--tin);font-weight:700;line-height:1.4;letter-spacing:.02em}
.block.ytitle .seriga.now{background:var(--paper)}
.seriga.ok{background:var(--ink)}
.seriga.ok .sl,.seriga.ok input.load{color:var(--yellow)}
.log{margin-top:16px}

/* recupero a riposo: una barra come i quadri, in Archivo */
.restrow{margin-top:16px}
.sset .restrow{margin:16px 0 0;border-top:0}
.restbtn,.sset .restbtn{min-height:56px;padding:0 16px;box-shadow:none;border:1px solid var(--ink)}
.restbtn .rk{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 600;
  font-size:13px;letter-spacing:.14em;color:var(--ink)}
.restbtn .rv{margin-left:auto;font-variation-settings:'wdth' 118,'wght' 800;font-size:26px;letter-spacing:.02em}
.restbtn .rico{margin-left:0}

/* il timer: un blocco fisso in basso, a tutta larghezza, alto circa un terzo dello schermo.
   Il tempo e tutto cliccabile (pausa / riprendi); "Prossimo" sta accanto, se c'e. */
.rbar{position:fixed;left:0;right:0;bottom:0;z-index:130;display:flex;gap:8px;
  height:calc(clamp(200px,33vh,300px) + env(safe-area-inset-bottom, 0px));
  padding:8px 8px calc(8px + env(safe-area-inset-bottom, 0px));
  background:var(--paper);border-top:1px solid var(--ink)}
.rtb{all:unset;box-sizing:border-box;flex:1;min-width:0;display:flex;flex-direction:column;
  justify-content:space-between;padding:16px;cursor:pointer;border:1px solid var(--ink);
  background:var(--ink);color:var(--yellow);
  font-family:'Archivo',Helvetica,Arial,sans-serif;text-transform:uppercase;
  -webkit-tap-highlight-color:transparent}
.rtb.over{background:var(--yellow);color:var(--ink)}
.rtb:focus-visible{outline:2px solid var(--yellow);outline-offset:-4px}
.rtop{display:flex;justify-content:space-between;gap:12px;white-space:nowrap;
  font-variation-settings:'wdth' 112,'wght' 700;font-size:13px;letter-spacing:.14em}
.rnum{font-variation-settings:'wdth' 118,'wght' 800;font-size:min(20vw,88px);line-height:1;
  text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.rtsub{text-align:center;font-variation-settings:'wdth' 112,'wght' 600;font-size:13px;letter-spacing:.14em;min-height:1em}
.rnxt{all:unset;box-sizing:border-box;flex:0 0 108px;display:flex;align-items:center;justify-content:center;
  text-align:center;padding:0 4px;cursor:pointer;background:var(--paper);color:var(--ink);
  border:1px solid var(--ink);font-family:'Archivo',Helvetica,Arial,sans-serif;
  font-variation-settings:'wdth' 112,'wght' 800;font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.rnxt[hidden]{display:none}
.rnxt:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media screen and (max-width:359px){
  .seriga{padding:6px}
  .seriga .sl{font-size:11px;letter-spacing:.04em}
  .rtb{padding:12px}
  .rtop{font-size:12px;letter-spacing:.06em;gap:8px}
  .rnum{font-size:min(17vw,64px)}
  .rnxt{flex-basis:92px;font-size:12px;letter-spacing:.02em}
}
/* la pagina lascia il posto al timer, cosi niente resta nascosto sotto */
body.tmron .wrap{padding-bottom:calc(clamp(200px,33vh,300px) + 140px)}

/* fatto: visibile e barrato; saltato: barrato e piu chiaro */
.ex.is-done .exname,.ex.is-skipped .exname{text-decoration:line-through;text-decoration-thickness:1px}
.ex.is-done .cue,.ex.is-done .restrow{display:none}
}

@media print{
  .skipbtn,.rtm{display:none!important}
  .serielista.loadgrid{display:block}
  .seriga{display:flex;align-items:center;gap:6pt;height:auto;border:0;padding:0}
  .seriga .sl{font-size:7pt;letter-spacing:.06em;color:#000}
  .setbox{display:flex;gap:3pt}
  .setbtn{width:14pt;height:14pt;font-size:7pt;border:1px solid #000}
}

/* ==========================================================================
   Ogni blocco e una barra (1.32.1)
   Le linee arrivano ai lati dello schermo, anche sui monitor larghi dove la
   scheda e una colonna: --bm esce dalla colonna, --bp rimette il contenuto dentro.
   ========================================================================== */
@media screen{
:root{--bm:calc(50% - var(--vw, 100vw) / 2);--bp:calc(var(--vw, 100vw) / 2 - 50%)}

.nav{margin:0 var(--bm);padding:0 var(--bp)}
.navslot{margin:0 var(--bm)}
.navmenu{padding:0 max(16px, calc((var(--vw, 100vw) - 940px) / 2 + 16px))}
/* la casetta sta all'estremita destra dello schermo, non della colonna */
.navhome{margin-right:var(--bm)}
.navmsg{margin-right:var(--bm)}
.navmsg:has(+ .navhome:not([hidden])){margin-right:0}

.shead{margin-bottom:24px}
.kit{margin-bottom:24px}
.block{margin:0 var(--bm);padding:0 var(--bp);border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.block+.block{border-top:0}
.bbody>.ex,.bbody>.sset,.bfoot,.sset>.ex,.ssetsets{margin-left:var(--bm);margin-right:var(--bm)}
.bbody>.ex{padding:16px var(--bp);border-top:1px solid var(--ink)}
.bbody>.sset{padding:0 var(--bp) 16px;border-top:1px solid var(--ink)}
.sset>.ex,.sset .ex{padding:16px var(--bp);border-top:1px solid var(--ink)}
.sset>.ex:first-of-type{border-top:0}
.ssetsets{padding:16px var(--bp) 0;border-top:1px solid var(--ink)}
.sset .restrow{margin:16px 0 0}
.bfoot{padding:16px var(--bp);border-top:1px solid var(--ink)}

/* in un blocco con piu esercizi, quello di adesso porta una targhetta */
.bbody>.ex.now .exname::before{content:'Ora';display:inline-block;margin-right:8px;padding:0 6px;vertical-align:2px;
  background:var(--ink);color:var(--yellow);font-family:'Courier New',Courier,monospace;font-size:12px;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase}

/* timer della tenuta e sottotitolo del timer */
.sset>.ex:first-of-type{padding-top:16px}
}

/* ==========================================================================
   Barra, menu e blocchi (1.33)
   ========================================================================== */
@media screen{
/* il menu e dentro la barra, fra la riga con la freccia e quella dei blocchi */
.navslot{margin:0}
.nav:not(.expanded) .navslot{display:none}
.navmenu{padding:0;border-top:1px solid var(--ink50);background:none}
.navmenu .navrow{padding:8px 0}
.nav .blkrow{border-top:1px solid var(--ink50)}

/* esercizio singolo: giallo da solo. Superset: giallo tutto il blocco. */
.bbody>.ex.now,.bbody>.sset.now{background:var(--yellow)}
.bbody>.ex.now .exname::before{content:none}
.block.ytitle>.bbody>.sset.now{background:none}
.block:not(.ytitle) .setbtn.now,.block:not(.ytitle) .seriga.now{background:transparent}
.bbody>.ex.now .setbtn.now,.bbody>.sset.now .setbtn.now{background:var(--paper)}
.bbody>.ex.now .seriga.now,.bbody>.sset.now .seriga.now{background:var(--paper)}
.bbody>.ex.now .cue,.bbody>.sset.now .cue,.bbody>.ex.now .rx .c.sub,.bbody>.sset.now .rx .c.sub{color:var(--ink)}

/* home: le due righe sotto il titolo respirano */
.ov .shead,#p-ov .shead{padding:24px 0 16px}
.ov .eyebrow,#p-ov .eyebrow{margin:0 0 16px}
.ov .sdur,#p-ov .sdur{margin-top:16px}

/* il focus della seduta, sotto il titolo */
.sfocus{display:flex;align-items:baseline;gap:12px;margin-top:12px;flex-wrap:wrap}
.sfocus .k,.sfocus .v{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 600;font-size:var(--t3);letter-spacing:0;text-transform:none;color:var(--ink)}
.sfocus{gap:8px}
}

/* ==========================================================================
   Esercizi chiusi, fine seduta e bottoni in fondo (1.34)
   ========================================================================== */
@media screen{
/* un esercizio singolo fatto (o saltato) resta solo la barra con nome e icone; un tocco lo riapre */
.bbody>.ex.is-done:not(.open) .exdata,.bbody>.ex.is-skipped:not(.open) .exdata{display:none}
.bbody>.ex.is-done:not(.open),.bbody>.ex.is-skipped:not(.open){padding-top:8px;padding-bottom:8px;cursor:pointer}
.bbody>.ex.is-done:not(.open) .exname,.bbody>.ex.is-skipped:not(.open) .exname{padding-top:14px}

/* aria nella spiegazione del calendario */
.calhint{margin:24px 0 0;padding:0 0 8px;line-height:1.6}

/* le domande di Fine seduta hanno lo stesso carattere dei titoli: Archivo largo, maiuscolo */
.feelq{font-family:'Courier New',Courier,monospace;font-variation-settings:normal;font-weight:400;
  text-transform:uppercase;letter-spacing:.16em;font-size:var(--t5);line-height:1.5;color:var(--ink50);margin:0 0 8px}

/* Precedente / Successiva: l'etichetta in Courier piccolo, il nome della seduta in Archivo */
.pager button{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 700;
  font-size:var(--t2);letter-spacing:.02em;text-transform:uppercase;line-height:1.2}
.pager .k{font-family:'Courier New',Courier,monospace;font-variation-settings:normal;font-weight:400;
  font-size:var(--t5);letter-spacing:.16em;color:var(--ink50);margin-bottom:8px}

/* Scrivi a Valentina: in fondo, dopo le note */
.fine-wa{margin-top:24px}
}

/* ==========================================================================
   Stampa degli esercizi (1.34): nome a sinistra; a destra prescrizione, descrizione,
   quadri da scrivere a penna, conta-serie e recupero, uno sotto l'altro.
   ========================================================================== */
@media print{
  .exhead{flex:0 0 56mm;margin:0;padding-right:4mm}
  .exdata{display:block;flex:1;width:auto;margin:0}
  .exdata .rx{flex:none;width:auto}
  .rx .c{font-size:9pt;font-weight:700}
  .exhead .cue{display:block;font-size:7.5pt;line-height:1.3;color:#444;margin:1pt 0 3pt;max-width:none}
  .exhead .cue strong{color:#000}
  .excue{display:none!important}
  .girilog{margin:2pt 0 0}
  .serielista.loadgrid{display:flex;flex-direction:row;gap:3pt;margin:2pt 0 0}
  .seriga{flex:1;display:block;height:auto;min-height:20pt;border:1px solid #000;padding:1pt 3pt}
  .seriga .sl{font-size:6.5pt;letter-spacing:.04em;color:#000}
  .seriga .printline{display:none}
  .setrow{margin-top:3pt}
  .setrow .cap{font-size:6.5pt}
  .setbox{display:flex;gap:3pt}
  .setbtn{width:13pt;height:13pt;font-size:7pt;border:1px solid #000}
  .setrow[data-n="1"] .setbtn{font-size:0;width:16pt;height:16pt}
  .skipbtn,.rtm,.rbar,.fine-wa,.ssetlink,.calhint{display:none!important}
  .restrow{margin:3pt 0 0}
  .restbtn{display:flex;gap:6pt;align-items:baseline}
  .restbtn .rk{font-size:6.5pt;letter-spacing:.1em}
  .restbtn .rv{font-size:9pt}
  .sset .restbtn,.restbtn{box-shadow:none!important;border:0!important;min-height:0!important;padding:0!important}
  .sset .restrow{border-top:1px solid #000;padding-top:3pt}
  .sfocus{display:block;margin-top:2pt;font-size:9pt}
  .sfocus .k{margin-right:4pt}
}

/* stampa del superset: i giri a sinistra e il recupero a destra, sulla stessa riga */
@media print{
  .sset{display:grid;grid-template-columns:1fr auto;align-items:center}
  .sset>.ex,.sset>.ssetko{grid-column:1 / -1}
  .ssetsets{margin:0;padding:3pt 0;border-top:1px solid #000}
  .sset .restrow{margin:0;padding:3pt 0 3pt 8pt;border-top:1px solid #000;text-align:right}
  .sset .restbtn{justify-content:flex-end}
}

/* il testo lungo della prescrizione va a capo (tempo, descrizione del metodo...) */
@media screen{
.rx{min-width:0}
.rx .c{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.rx .c.sub{flex:1 1 100%}
}

/* ==========================================================================
   La prescrizione in celle (1.35): serie, rep, carico, tutte uguali
   ========================================================================== */
@media screen{
.rxgrid{display:grid;gap:8px;margin-top:12px}
.rxc{border:1px solid var(--ink);padding:6px 8px 4px;min-width:0;background:transparent}
.rxc small{display:block;font-family:'Courier New',Courier,monospace;font-size:11px;line-height:1.4;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink50);white-space:nowrap;overflow:hidden}
.rxc b{display:block;font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 800;
  font-size:30px;line-height:1.1;white-space:nowrap;text-transform:uppercase}
.rxc b i{font-style:normal;font-size:14px;font-variation-settings:'wdth' 112,'wght' 700;margin-left:2px;text-transform:none}
.rxc.txt b{font-size:15px;line-height:1.2;padding:6px 0 3px;white-space:normal;overflow-wrap:anywhere;font-variation-settings:'wdth' 112,'wght' 700}
.rx .rxrow{margin-top:8px}
}
@media (max-width:359px){ .rxc{padding:6px} .rxc small{font-size:10px;letter-spacing:.06em} .rxc b{font-size:26px} }
@media print{
  .rxgrid{display:flex;gap:4pt;margin:0 0 2pt}
  .rxc{border:1px solid #000;padding:1pt 4pt;min-width:0}
  .rxc small,.rxc b{display:block;white-space:nowrap}
  .rxc small{font-size:6.5pt;letter-spacing:.06em;color:#000}
  .rxc b{font-size:11pt;line-height:1.15}
  .rxc b i{font-size:7pt}
  .rxc.txt b{font-size:8pt;padding:0}
}

/* ==========================================================================
   Regola delle colonne e tre famiglie di blocchi (1.36)
   Ogni riga di quadri riempie la larghezza: n quadri, n colonne uguali (oltre cinque
   si va a capo a righe da 3 o da 4). Un testo lungo va a capo nella sua cella.
   - Informazione: piatta, fondo tenue, niente bordo.
   - Da compilare (carichi): bordo tratteggiato e riga sotto il valore.
   - Bottone (conta-serie, conta-giri): bordo pieno e ombra; chiuso diventa nero.
   ========================================================================== */
@media screen{

/* informazione */
.rxc{border:0;background:rgba(10,10,10,.08)}

/* da compilare */
.seriga{border:1px dashed var(--ink);background:rgba(255,255,255,.55)}
.seriga input.load{border-bottom:2px solid var(--ink);width:100%}
.seriga.ok{border-style:solid}

/* bottoni */
.setbtn{background:var(--paper);box-shadow:3px 3px 0 var(--ink)}
.setbtn[aria-pressed="true"]{background:var(--ink);color:var(--yellow);box-shadow:none;transform:translate(3px,3px)}
@media (hover:hover){ .setbtn:hover{box-shadow:3px 3px 0 var(--ink)} .setbtn[aria-pressed="true"]:hover{box-shadow:none} }
}
@media print{ .rxc{background:none} .rxgrid{display:flex} }

/* ==========================================================================
   Stessa regola per tutta la scheda (1.37)
   - Ogni riga di bottoni riempie la larghezza e parte dal margine della colonna.
   - Spazi: 8 px fra i quadri di una riga, 16 px fra una riga e l'altra.
   - Altezza dei controlli principali: 56 px. Bottoni = bordo pieno + ombra, da premuti neri.
   - Carattere dei bottoni: Archivo, maiuscolo, centrato.
   ========================================================================== */
@media screen{
.markall,.chiudibtn,.printbtn,.fine-wa,.feelbtn,.pager button{box-sizing:border-box;border:1px solid var(--ink);
  background:var(--paper);color:var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:pointer;
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 800;
  letter-spacing:.06em;text-transform:uppercase}
.markall:active,.chiudibtn:active,.printbtn:active,.feelbtn:active,.pager button:not([disabled]):active{background:var(--ink);color:var(--yellow);box-shadow:none;transform:translate(3px,3px)}
@media (hover:hover){ .markall:hover,.chiudibtn:hover,.printbtn:hover,.pager button:not([disabled]):hover{background:var(--paper)} }

/* completa/azzera blocco: tutta la riga */
.bfoot{display:block}
.markall{display:flex;align-items:center;justify-content:center;width:100%;height:56px;padding:0 16px;font-size:14px}
.markall .box{margin-right:12px}
.markall.all{background:var(--ink);color:var(--yellow);box-shadow:none;transform:translate(3px,3px)}
.markall.all .box{background:var(--yellow);border-color:var(--yellow)}

/* fine seduta: le scale sono cinque quadri uguali, il bottone di chiusura una riga intera */
.feelrow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.feelbtn{height:56px;min-height:56px;font-size:22px;letter-spacing:0}
.feelbtn[aria-pressed="true"]{background:var(--ink);color:var(--yellow);box-shadow:none;transform:translate(3px,3px)}
.chiudi{display:block}
.chiudi-txt{margin:0 0 12px}
.chiudibtn{display:block;width:100%;height:56px;min-height:56px;max-width:none;padding:0 16px;font-size:14px;text-align:center}
.fine-wa{display:block;width:100%;height:56px;min-height:56px;font-size:14px;background:var(--ink);color:var(--yellow);box-shadow:none;margin-top:24px}
.fine-wa:active{background:var(--yellow);color:var(--ink)}

/* precedente / successiva: due colonne uguali */
.pager{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pager button+button{margin-left:0}
.pager button{min-height:72px;font-size:var(--t4);letter-spacing:.02em}
.pager button[disabled]{box-shadow:none;border-color:var(--ink50);color:var(--ink50)}

/* stampa e simili: una riga per bottone */
.ovprint{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:24px 0 8px}
.printbtn{width:100%;height:56px;padding:0 16px;font-size:14px}

/* settimane e sedute: le linguette riempiono la riga */
#navWeek .tab,#navDay .tab{max-width:none}
}

/* ==========================================================================
   Descrizione sotto il nome, nascondibile (1.38)
   ========================================================================== */
@media screen{
.exhead .cue{margin-top:4px}
.excue{flex:0 0 auto;width:44px;height:44px;padding:11px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;background:none;border:0;color:var(--ink);margin:0}
.excue svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.excue svg .pt{fill:currentColor;stroke:none}
.exhead .cue{display:none}
.ex.cue-on .exhead .cue{display:block}
.ex.cue-on .excue{background:var(--ink);color:var(--paper)}
@media (hover:hover){ .excue:hover{background:var(--yellow)} }
.excue:active{background:var(--yellow)}
/* "Fatto" e gli altri testi dei bottoni: la misura di "Completa blocco" */
.setrow[data-n="1"] .setbtn{font-size:14px;letter-spacing:.06em}
}

/* le tre icone dell'esercizio (descrizione, video, nota): stesso stile e stessa misura */
@media screen{
.excue,.vid,.exnote{width:44px;height:44px;padding:11px;display:flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--ink);cursor:pointer;margin:0;text-decoration:none}
.excue svg,.vid svg,.exnote svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.vid svg .f{fill:currentColor}
}

/* ==========================================================================
   Barra con casetta e schermo, timer con Chiudi, sbarre della home (1.38)
   ========================================================================== */
@media screen{
/* la barra: casetta a sinistra del titolo, messaggi, e lo schermo a destra (sempre visibile) */
.navhome{order:-1;margin:0 0 0 var(--bm);border-left:0;border-right:1px solid var(--ink50);margin-right:12px;width:var(--tap)}
.navhome svg{width:24px;height:24px}
.navtoggle{padding-left:0}
.navmsg{margin-right:0}
.navmsg:has(+ .navwake){margin-right:0}
.navwake{flex:0 0 auto;width:var(--tap);height:44px;margin:0 0 0 0;margin-right:var(--bm);padding:0;
  display:flex;align-items:center;justify-content:center;border:0;border-left:1px solid var(--ink50);
  background:none;color:var(--ink);gap:0}
.navwake::before{display:none}
.navwake .wake-lbl{display:none}
.navwake .wake-ico{width:22px;height:22px}
.navwake[aria-pressed="true"]{background:var(--yellow);border-color:var(--ink50);color:var(--ink)}
.top{padding-bottom:12px}

/* timer: Prossimo e Chiudi uno sotto l'altro */
.rcol{flex:0 0 108px;display:flex;flex-direction:column;gap:8px;min-width:0}
.rcol .rnxt{flex:1 1 auto}
.rclose{all:unset;box-sizing:border-box;flex:0 0 48px;display:flex;align-items:center;justify-content:center;gap:8px;
  cursor:pointer;border:1px solid var(--ink);background:var(--paper);color:var(--ink);
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 800;
  font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.rclose svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.rclose:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media (max-width:359px){ .rcol{flex-basis:92px} .rclose{font-size:12px;letter-spacing:.02em;gap:4px} }

/* il titolo del blocco aperto e una fascia grigia, come le celle di informazione */
.block:not(.coll)>.bhead{background:rgba(10,10,10,.08);margin:0 var(--bm);padding:0 var(--bp)}

/* niente doppia riga sopra Fine seduta, niente riga sotto il segnaposto dei carichi */
.fine{border-top:0;padding-top:0}
.seriga input.load{border-bottom:0}

/* le tre icone, in alto, allineate alla prima riga del nome */
.exicons{margin-top:-6px;align-items:flex-start}
.bbody>.ex.is-done:not(.open) .exicons,.bbody>.ex.is-skipped:not(.open) .exicons{margin-top:0}

/* home: tre righe sotto il nome, poi le sbarre */
.ovmeta{padding:24px 0 24px;display:grid;gap:4px}
.ovmeta div{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;letter-spacing:.02em;font-size:var(--t2);line-height:1.3}
.sbarra{margin-bottom:0}
.sbarra+.sbarra{margin-top:0}
.sbarra>.bbody{padding:16px 0}
.ovtxt strong{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 116,'wght' 700;
  text-transform:uppercase;letter-spacing:.02em;font-size:var(--t3)}
.ovtxt p{margin:8px 0 0;font-size:var(--t4);line-height:1.6}
#p-ov .calwrap{margin:0}
}

@media screen and (max-width:420px){ .navpct{display:none} }

/* ==========================================================================
   Casetta fissa, niente riga sotto il titolo aperto, struttura senza righe (1.38)
   ========================================================================== */
@media screen{
.navhome.on{background:var(--yellow)}
/* aperto, il titolo grigio basta: sotto non c'e la riga nera (come nella home) */
.block:not(.coll)>.bbody>.ex:first-child,.block:not(.coll)>.bbody>.sset:first-child{border-top:0}
/* la struttura: le settimane una sotto l'altra, senza righe */
.ovlist{border-top:0}
.ovrow{border-bottom:0;padding:12px 0}
}

/* ==========================================================================
   Calendario: sedute con la presa, + a destra, attivita extra larga come seduta + piu (1.38)
   ========================================================================== */
@media screen{
.calhint{margin:0 0 16px;padding:0;line-height:1.6}
.calc{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}
.calc .calchip{grid-column:1;position:relative;padding-right:40px}
.calc .calplus{grid-column:2;grid-row:1;align-self:start;width:var(--tap);height:var(--tap)}
.calc .calnota{grid-column:1 / -1}
.calgrip{position:absolute;right:10px;top:50%;width:22px;height:22px;margin-top:-11px;fill:currentColor;opacity:.55;pointer-events:none}
.calchip.next .calgrip{right:10px}
.nav.ov .ptrack{display:none}
}

/* ==========================================================================
   + a sinistra, barra di avanzamento di Fine seduta (1.38)
   ========================================================================== */
@media screen{
.calc{grid-template-columns:auto minmax(0,1fr);align-items:stretch}
.calc .calplus{grid-column:1;grid-row:1;align-self:stretch;height:auto;min-height:var(--tap);width:var(--tap)}
.calc .calchip{grid-column:2}
.ptrack{display:none}
.fine-riep{margin:0 0 16px}
.pbar{position:relative;height:40px;border:1px solid var(--ink);background:transparent;overflow:hidden}
.pbar-f{position:absolute;inset:0 auto 0 0;background:var(--yellow);transition:width .3s}
.pbar-t{position:relative;display:flex;align-items:center;justify-content:center;height:100%;padding:0 12px;
  font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 112,'wght' 800;
  font-size:14px;letter-spacing:.06em;text-transform:uppercase}
}

/* la riga sotto la barra (casetta, titolo, messaggi, schermo) arriva ai lati dello schermo;
   le righe fra i bottoni del menu non ci sono */
@media screen{
.navbar{position:relative}
.navbar::after{content:'';position:absolute;left:var(--bm);right:var(--bm);bottom:0;height:1px;background:var(--ink50);pointer-events:none}
.navmenu{border-top:0}
.navrow+.navrow,.nav .blkrow{border-top:0}
}

/* la struttura: i quadri delle sedute sono tutti larghi uguali e arrivano al margine
   (uno sotto l'altro sul telefono, in riga sui computer); niente RIR */
@media screen{
.ovrow .d{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.ovrow .d .chip,.ovrow .d button.chip,.ovrow .d span.chip{display:flex;align-items:center;width:100%;min-height:56px;margin:0;
  text-align:left;overflow-wrap:anywhere}
.ovrow .h{margin-bottom:12px}
@media (min-width:760px){
  .ovrow{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:16px}
  .ovrow .h{margin-bottom:0}
  .ovrow .d{grid-template-columns:repeat(var(--n,2),minmax(0,1fr))}
}
}

/* Completa blocco: nel blocco di adesso resta in basso sullo schermo finche il suo posto non si vede */
@media screen{
.block.attuale>.bbody>.bfoot{position:sticky;bottom:0;z-index:30;background:var(--paper)}
.block.attuale.ytitle>.bbody>.bfoot{background:var(--yellow)}
body.tmron .block.attuale>.bbody>.bfoot{bottom:calc(clamp(200px,33vh,300px) + env(safe-area-inset-bottom, 0px))}
body.msgon .block.attuale>.bbody>.bfoot{bottom:64px}
}

/* blocco col timer (AMRAP, EMOM, AFAP): la barra del timer in cima, gli esercizi senza Fatto, tutto giallo quando e il turno */
@media screen{
.block.tblk>.bbody>.blktimer{margin:0;padding:16px 0}
.block.tblk.ytitle>.bbody>.ex.now{background:none}
.block.tblk>.bbody>.ex:first-of-type{border-top:1px solid var(--ink)}
}

/* menu: "Settimane" e "Sedute" in due colonne larghe uguali, e i numeri riempiono tutto lo spazio che resta */
@media screen{
#navCiclo,#navWeek,#navDay{display:grid;gap:8px;align-items:center}
#navCiclo .rk,#navWeek .rk,#navDay .rk{padding:0;white-space:nowrap}
#navCiclo .tab,#navWeek .tab,#navDay .tab{min-width:0;max-width:none;margin:0;padding:0 4px}
#navDay.scorre{grid-auto-columns:minmax(44px,1fr)}
}

/* ==========================================================================
   Lato cliente (2.1): progressi, calendario del telefono, rinnovo.
   Stessi segni della scheda: carta, inchiostro, giallo solo per lo stato
   attivo (la prossima seduta, il record), linee da 1px.
   ========================================================================== */
.cl-cap{font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.12em;text-transform:uppercase;color:var(--ink50);margin:24px 0 8px}
#clprog>.cl-cap:first-child{margin-top:0}
.cl-lab{font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.12em;text-transform:uppercase;color:var(--ink50)}
.cl-num{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:4px 0 2px}
.cl-big{font-family:'Courier New',Courier,monospace;font-size:var(--t3);font-variant-numeric:tabular-nums}
.cl-t2{font-variation-settings:'wdth' 118,'wght' 700;text-transform:uppercase;font-size:var(--t2);letter-spacing:.01em;line-height:1.2}
.cl-nota{font-size:var(--t5);color:var(--ink50);line-height:1.5;margin:8px 0 0}
.cl-qgrid{display:grid;gap:6px;margin-top:10px}
.cl-qrow{display:grid;grid-template-columns:54px repeat(var(--n),minmax(0,1fr));gap:4px;align-items:center}
.cl-qrow>span:first-child{font-family:'Courier New',Courier,monospace;font-size:12px;color:var(--ink50)}
.cl-q{height:22px;border:1px solid var(--ink);display:block}
.cl-q.si{background:var(--ink)}
.cl-q.ora{box-shadow:inset 0 0 0 3px var(--yellow)}
.cl-q.sc{border-style:dashed}
.cl-legq{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-family:'Courier New',Courier,monospace;font-size:12px;color:var(--ink50)}
.cl-legq span{display:flex;align-items:center;gap:6px}
.cl-legq .cl-q{display:inline-block;width:14px;height:14px}
.cl-carta{border-top:1px solid var(--ink);padding:14px 0 18px}
.cl-rec{font-family:'Courier New',Courier,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:var(--yellow);padding:1px 6px;border:1px solid var(--ink)}
.cl-da{font-family:'Courier New',Courier,monospace;font-size:var(--t5);color:var(--ink50)}
.cl-graf{display:block;width:100%;height:auto;margin-top:8px;max-width:520px}
.cl-graf .l{fill:none;stroke:var(--ink);stroke-width:1.6}
.cl-graf .p{fill:var(--ink)} .cl-graf .d{fill:var(--paper);stroke:var(--ink);stroke-width:1.3}
.cl-graf .rec{fill:var(--yellow);stroke:var(--ink);stroke-width:1.3}
.cl-graf .ax{stroke:rgba(10,10,10,.15);stroke-width:1}
.cl-graf .cy{stroke:var(--ink50);stroke-width:1;stroke-dasharray:3 3}
.cl-graf text{font-family:'Courier New',Courier,monospace;font-size:10px;fill:var(--ink50)}
.cl-graf text.v{fill:var(--ink);font-size:11px}
.cl-feelg .s1{fill:none;stroke:var(--ink);stroke-width:1.6} .cl-feelg .s2{fill:none;stroke:var(--ink);stroke-width:1.4;stroke-dasharray:4 3}
.cl-feelg circle{fill:var(--ink)}
.cl-leg{display:flex;gap:16px;font-family:'Courier New',Courier,monospace;font-size:12px;color:var(--ink50);margin-top:4px}
.cl-leg i{display:inline-block;width:22px;border-top:2px solid var(--ink);vertical-align:middle;margin-right:6px}
.cl-leg i.tr{border-top-style:dashed}
.cl-lista{border-top:1px solid var(--ink)}
.cl-lr{display:grid;grid-template-columns:minmax(0,1fr) 70px;gap:4px 10px;padding:10px 0;border-bottom:1px solid rgba(10,10,10,.15);align-items:center}
.cl-lr .n{font-variation-settings:'wdth' 110,'wght' 560;font-size:14px;line-height:1.25}
.cl-lr .k{grid-column:1;font-family:'Courier New',Courier,monospace;font-size:var(--t5);color:var(--ink50)}
.cl-lr svg{grid-column:2;grid-row:1/3}
.cl-spk path{fill:none;stroke:var(--ink);stroke-width:1.4} .cl-spk circle{fill:var(--ink)}
.cl-arr{border:1px solid var(--ink);padding:12px;display:grid;gap:2px;margin-bottom:8px}
.cl-ico{display:flex;gap:16px;flex-wrap:wrap;margin:8px 0 6px;font-family:'Courier New',Courier,monospace;font-size:12px;color:var(--ink50)}
.cl-ico span{display:inline-flex;align-items:center;gap:6px}
.cl-ico svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5}
.cl-tels{margin-top:24px;border:1px solid var(--ink);padding:14px}
.cl-tsed{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid rgba(10,10,10,.15)}
.cl-tsed b{font-family:'Courier New',Courier,monospace;font-weight:400;font-size:14px;line-height:1.2;text-transform:uppercase}
.cl-tsed b small{display:block;font-size:12px;color:var(--ink50);letter-spacing:.06em}
.cl-tsed input{font-family:'Courier New',Courier,monospace;font-size:var(--tin);color:var(--ink);background:var(--paper);border:1px solid var(--ink);min-height:44px;padding:0 6px;width:100%;border-radius:0}
.cl-cal-btn{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.cl-btn{display:flex;align-items:center;justify-content:center;min-height:52px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);
  box-shadow:0 2px 0 var(--ink);font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 118,'wght' 700;text-transform:uppercase;font-size:14px;letter-spacing:.04em;text-decoration:none;text-align:center;padding:0 12px}
.cl-btn:active{transform:translateY(2px);box-shadow:none}
.cl-btn.prim{background:var(--ink);color:var(--paper)}
.cl-btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.cl-rinn{margin:4px 0 24px;border:1px solid var(--ink);box-shadow:0 2px 0 var(--ink)}
.cl-rt{background:var(--ink);color:var(--paper);padding:12px 14px;font-variation-settings:'wdth' 118,'wght' 720;text-transform:uppercase;font-size:var(--t2);line-height:1.2}
.cl-rb{padding:14px;display:grid;gap:12px}
.cl-rb>label{display:grid;gap:4px;font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.08em;text-transform:uppercase;color:var(--ink50)}
.cl-rb textarea,.cl-rb select{font-family:'Courier New',Courier,monospace;font-size:var(--tin);color:var(--ink);background:transparent;border:1px dashed var(--ink);border-bottom-width:2px;padding:8px;border-radius:0;text-transform:none;letter-spacing:0}
.cl-rb textarea{min-height:64px;resize:vertical}
.cl-offerta{border:1px solid var(--ink);padding:12px;display:grid;gap:6px}
.cl-offerta .cl-ico{margin:0}
.cl-prezzo{font-family:'Courier New',Courier,monospace;font-size:var(--t3)}
.cl-prezzo s{color:var(--ink50);font-size:var(--t4);margin-left:6px}
.cl-chk{display:flex;gap:10px;align-items:flex-start;font-size:14px;cursor:pointer}
.cl-chk input{width:20px;height:20px;margin:1px 0 0;accent-color:var(--ink);flex:0 0 auto}
.cl-semplice{border-left:4px solid var(--yellow);padding:4px 0 4px 12px;margin:4px 0 24px}
@media print{ .cl-tels,.cl-rinn,.cl-semplice{display:none!important} }

/* ==========================================================================
   Navigazione più semplice (2.1.4): la prossima seduta in cima alla home,
   il menu chiuso finché non lo apri.
   ========================================================================== */
.prossima{all:unset;box-sizing:border-box;display:grid;gap:4px;width:100%;margin:8px 0 24px;padding:16px;cursor:pointer;
  background:var(--ink);color:var(--paper);box-shadow:0 3px 0 var(--yellow)}
.prossima .k{font-family:'Courier New',Courier,monospace;font-size:var(--t5);letter-spacing:.12em;text-transform:uppercase;color:var(--yellow)}
.prossima b{font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 122,'wght' 800;text-transform:uppercase;font-size:var(--t1);line-height:1.1;font-weight:normal}
.prossima .d{font-family:'Courier New',Courier,monospace;font-size:var(--t5);color:rgba(244,243,236,.8)}
.prossima .vai{justify-self:end;font-family:'Archivo',Helvetica,Arial,sans-serif;font-variation-settings:'wdth' 118,'wght' 720;text-transform:uppercase;font-size:14px;letter-spacing:.04em;margin-top:6px}
.prossima:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
.prossima:active{transform:translateY(2px);box-shadow:none}
.prossima.finita{cursor:default;background:var(--paper);color:var(--ink);border:1px solid var(--ink);box-shadow:none}
.prossima.finita .k{color:var(--ink50)}
@media print{ .prossima{display:none!important} }
