/* Iron Barbell — THE BOARD (.wb-* / .bw-*)
   The board is a REAL OBJECT, not a UI surface: off-white melamine, faint rule
   lines, black marker, an aluminium tray along the bottom. Everything BELOW the
   tray is the app doing its job — light, plain, tappable.

   Vocabulary carried over from mockups/whiteboard/*.html and the client-IA mock.
   NOTHING here redefines a live class: the phone frame, .m-bar, .m-body, .m-card
   and the morphing tab bar all still come from p1/styles.css. Screens that want
   the board's rhythm opt in with .m-body.wbs. */

:root{--board:#F1F2EF;--marker:#15181B;--marker-soft:#5A6068;--alu-1:#CFD3D7;--alu-2:#9BA1A8;--alu-3:#7C838B;
  --job-vol:#3E5E86;--job-eng:#2C7A88;--job-int:#075DC6;
  --wbf-m:var(--font-mono,"JetBrains Mono",monospace);--wbf-c:var(--font-cond,"Barlow Condensed",sans-serif);--wbf-h:"Caveat",cursive;}

/* the stack: board screens breathe on a 14px grid, not the app's 18px page */
.m-body.wbs{padding:14px 14px 20px;display:flex;flex-direction:column;gap:14px;}
.m-body.wbs>*{min-width:0;}
.m-body.wbs>.m-card{margin-bottom:0;}
.m-body.wbs>.wk-nav{margin-bottom:0;}

/* ══════════════ THE BOARD ══════════════ */
.wb-board{position:relative;background:var(--board);border:1px solid var(--alu-2);border-radius:2px;overflow:hidden;box-shadow:inset 0 0 70px rgba(110,120,132,.13),0 2px 0 rgba(0,0,0,.18);}
.wb-board::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 27px,rgba(90,100,112,.05) 27px 28px);pointer-events:none;}
.wb-bd{position:relative;padding:16px 16px 22px;}
.wb-tray{height:10px;background:linear-gradient(var(--alu-1),var(--alu-2) 55%,var(--alu-3));border-top:1px solid rgba(0,0,0,.14);}
.wb-tray::after{content:"";display:block;height:3px;margin:5px 22% 0 14%;border-radius:2px;background:rgba(20,24,27,.28);}
.wb-mk{font-family:var(--wbf-c);font-weight:900;text-transform:uppercase;color:var(--marker);letter-spacing:.015em;line-height:1;}
.wb-bhead{position:relative;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-family:var(--wbf-m);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--marker-soft);}
.wb-bhead>span{min-width:0;}
.wb-bhead .r{margin-left:auto;}
.wb-btitle{font-size:31px;margin-top:9px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.wb-btitle.big{font-size:36px;letter-spacing:.02em;}
.wb-named{font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker-soft);margin-top:6px;line-height:1.05;}
.wb-bjob{font-size:13.5px;color:var(--marker-soft);line-height:1.45;margin-top:7px;text-wrap:pretty;}
.wb-rule{height:3px;background:var(--marker);opacity:.88;margin:14px 0;transform:rotate(-.12deg);}
.wb-rule.thin{height:1.5px;opacity:.3;}
.wb-jt{display:inline-block;padding:3px 8px 2px;border:2px solid var(--job-int);color:var(--job-int);font-family:var(--wbf-c);font-weight:900;font-size:12px;letter-spacing:.09em;text-transform:uppercase;transform:rotate(-.6deg);}
.wb-jt.vol{border-color:var(--job-vol);color:var(--job-vol);}
.wb-jt.eng{border-color:var(--job-eng);color:var(--job-eng);}
.wb-jt.test{border-color:var(--rust,#C4392E);color:var(--rust,#C4392E);}
.wb-jt.own{border-color:var(--marker-soft);color:var(--marker-soft);}
.wb-scrib{font-family:var(--wbf-h);font-size:19px;color:var(--electric);transform:rotate(-1.5deg);margin-top:13px;line-height:1.15;}
.wb-scrib.soft{color:var(--marker-soft);}
/* the DONE stamp is marker on the board — but it may never land on the coach's
   qualifier chip or the copy [4.3]. It rides in the head row's right slot (which it
   replaces), so it is still a rotated marker stamp and collides with nothing. */
.wb-stamp{margin-left:auto;flex:0 0 auto;transform:rotate(-4deg);border:2.5px solid var(--turf-deep,#146B4A);color:var(--turf-deep,#146B4A);font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.09em;text-transform:uppercase;padding:2px 8px 1px;opacity:.92;}
.wb-ghost{position:absolute;left:14px;bottom:-42px;font-family:var(--wbf-c);font-weight:900;font-size:44px;text-transform:uppercase;color:rgba(90,100,112,.085);pointer-events:none;white-space:nowrap;}

/* the workout as written */
.wb-seg{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--marker-soft);margin-bottom:7px;}
.wb-lead{font-family:var(--wbf-c);font-weight:900;font-size:20px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker-soft);margin:11px 0 3px;line-height:1.1;}
.wb-lead:first-child{margin-top:0;}
/* A WRITTEN ROW IS TWO COLUMNS [4.3]. The rep/distance column is a real column —
   fixed width, tabular figures, right-aligned — so 50 / 750/600m / 30 stack in line
   under each other the way a coach writes them up. A row with no prescription
   ("max-reps push-ups") spans both, never sits indented under the numbers. */
.wb-mv{display:grid;grid-template-columns:74px 1fr;align-items:baseline;column-gap:11px;font-family:var(--wbf-c);font-weight:900;font-size:23px;text-transform:uppercase;color:var(--marker);letter-spacing:.02em;line-height:1.2;padding:2px 0;}
.wb-mv .r{grid-column:1;text-align:right;font-family:var(--wbf-m);font-weight:700;font-size:15px;color:var(--electric);letter-spacing:0;font-variant-numeric:tabular-nums;}
.wb-mv .m{grid-column:2;}
.wb-mv.nor .m{grid-column:1/3;}
.wb-mv .d{grid-column:2;justify-self:end;font-family:var(--wbf-m);font-weight:400;font-size:11.5px;color:var(--marker-soft);letter-spacing:.04em;text-transform:uppercase;text-align:right;}
.wb-cap{margin-top:13px;display:flex;align-items:baseline;gap:9px;}
.wb-cap b{font-family:var(--wbf-c);font-weight:900;font-size:31px;color:var(--rust,#C4392E);line-height:1;}
.wb-cap span{font-family:var(--wbf-c);font-weight:900;font-size:14px;text-transform:uppercase;color:var(--rust,#C4392E);}
.wb-derive{font-family:var(--wbf-m);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--marker-soft);margin-top:8px;}
.wb-notes{margin-top:13px;display:flex;flex-direction:column;gap:6px;}
.wb-notes div{display:flex;gap:8px;font-size:12.5px;line-height:1.45;color:var(--marker-soft);text-wrap:pretty;}
.wb-notes div::before{content:"\2013";flex:0 0 auto;color:var(--electric);}
.wb-bench{margin-top:15px;padding:9px 11px;border:1.5px dashed rgba(21,24,27,.35);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.wb-bench .k{font-family:var(--wbf-c);font-weight:900;font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--electric);flex:0 0 auto;}
.wb-bench .v{font-family:var(--wbf-c);font-weight:900;font-size:21px;letter-spacing:.02em;text-transform:uppercase;color:var(--marker);line-height:1;}
.wb-bench .s{margin-left:auto;font-family:var(--wbf-m);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--marker-soft);}

/* the stat trio + the room, written up */
.wb-rsum{display:flex;border:1.5px solid rgba(21,24,27,.28);margin-top:13px;}
.wb-rsum>div{flex:1 1 0;padding:9px 8px;text-align:center;border-right:1px solid rgba(21,24,27,.18);}
.wb-rsum>div:last-child{border-right:0;}
.wb-rsum .k{font-family:var(--wbf-m);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--marker-soft);}
.wb-rsum .v{font-family:var(--wbf-c);font-weight:900;font-size:23px;line-height:1;margin-top:5px;color:var(--marker);}
.wb-rsum .v.b{color:var(--electric);}
.wb-grp{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--marker-soft);margin:15px 0 6px;display:flex;align-items:center;gap:8px;}
.wb-grp::after{content:"";flex:1 1 auto;height:1px;background:rgba(21,24,27,.18);}
.wb-res{display:flex;align-items:baseline;gap:10px;padding:6px 0;border-bottom:1px solid rgba(21,24,27,.10);}
.wb-res:last-child{border-bottom:0;}
.wb-res .pl{flex:0 0 auto;width:19px;font-family:var(--wbf-m);font-size:10.5px;color:var(--marker-soft);}
.wb-res .nm{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker);line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wb-res .sc{flex:0 0 auto;font-family:var(--wbf-c);font-weight:900;font-size:22px;color:var(--marker);line-height:1;letter-spacing:.01em;}
.wb-res .bn{flex:0 0 auto;min-width:38px;text-align:right;font-family:var(--wbf-c);font-weight:900;font-size:19px;color:var(--electric);line-height:1;}
.wb-res .bn.no{color:rgba(90,100,112,.32);}
.wb-res .tag{font-family:var(--wbf-m);font-size:9.5px;font-weight:400;color:var(--marker-soft);margin-left:3px;letter-spacing:.04em;}
.wb-res.me{background:rgba(7,93,198,.09);box-shadow:inset 3px 0 0 var(--electric);margin:0 -8px;padding:8px;}
.wb-res.me .nm,.wb-res.me .sc{color:var(--electric);}
.wb-res.capd .sc{color:var(--rust,#C4392E);}
.wb-res.pend .nm{color:rgba(90,100,112,.5);}
.wb-res.pend .sc{font-family:var(--wbf-m);font-size:11px;font-weight:400;color:rgba(90,100,112,.5);}
.wb-exp{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;padding:9px 0 0;border:0;border-top:1.5px solid rgba(21,24,27,.3);background:none;font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.05em;text-transform:uppercase;color:var(--electric);cursor:pointer;}
.wb-exp .sm{flex:1 1 auto;min-width:0;font-size:14px;letter-spacing:.03em;color:var(--marker-soft);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ══════════════ BELOW THE TRAY — the app ══════════════ */
.wb-eyeb{font-family:var(--wbf-m);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle);display:flex;align-items:center;gap:8px;}
.wb-eyeb::after{content:"";flex:1 1 auto;height:1px;background:var(--app-border);}
.wb-card{background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;}
.wb-card.pad{padding:13px;}
.wb-tiny{font-size:11.5px;color:var(--app-fg-subtle);line-height:1.5;text-wrap:pretty;}
.wb-tiny b{color:var(--app-fg-muted);font-weight:600;}
.wb-cta{width:100%;min-height:52px;display:flex;align-items:center;justify-content:center;gap:9px;background:var(--electric);border:1px solid var(--electric);color:#fff;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.07em;text-transform:uppercase;border-radius:3px;cursor:pointer;transition:background .12s,border-color .12s;}
.wb-cta:hover{background:var(--electric-h,#1C77E0);border-color:var(--electric-h,#1C77E0);}
.wb-cta:active{transform:translateY(1px);background:var(--electric-deep,#044399);}
.wb-cta.ghost{background:var(--app-surface);color:var(--app-fg);border-color:var(--app-border-strong);}
.wb-cta.ghost:hover{background:var(--app-surface);border-color:var(--electric);color:var(--electric);}
.wb-cta.dark{background:var(--iron);border-color:var(--iron);}
.wb-cta.dark:hover{background:#1C1C1C;border-color:#1C1C1C;}
.wb-cta.lite{background:none;border-color:var(--app-border-strong);color:var(--app-fg-muted);min-height:46px;font-size:14px;}
.wb-cta.lite:hover{border-color:var(--electric);color:var(--electric);background:none;}
.wb-cta[disabled]{opacity:.38;pointer-events:none;}
.wb-back{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;font-family:var(--wbf-m);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle);cursor:pointer;align-self:flex-start;}
.wb-back:hover{color:var(--electric);}
.wb-seg2{display:flex;gap:7px;}
.wb-seg2 button{flex:1 1 0;text-align:center;padding:11px 6px;border:1px solid var(--app-border-strong);background:var(--app-surface);font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg-muted);border-radius:3px;cursor:pointer;}
.wb-seg2 button:hover{border-color:var(--app-fg-subtle);color:var(--app-fg);}
.wb-seg2 button.on{background:var(--electric);border-color:var(--electric);color:#fff;}
.wb-chips{display:flex;gap:7px;flex-wrap:wrap;}
.wb-chip2{flex:1 1 0;min-width:96px;border:1px solid var(--app-border-strong);border-radius:3px;background:var(--app-surface);padding:10px 6px;cursor:pointer;font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg-muted);}
.wb-chip2:hover{border-color:var(--app-fg-subtle);color:var(--app-fg);}
.wb-chip2.on{background:var(--electric);border-color:var(--electric);color:#fff;}
.wb-empty{background:var(--app-surface);border:1px dashed var(--app-border-strong);border-radius:3px;padding:24px 16px;text-align:center;}
.wb-empty .t{font-family:var(--wbf-c);font-weight:900;font-size:17px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg-muted);}
.wb-empty .d{font-size:12px;color:var(--app-fg-subtle);margin-top:7px;line-height:1.5;}
.wb-empty .d b{color:var(--app-fg-muted);font-weight:600;}

/* the day rail */
.wb-rail{background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;padding:11px 11px 10px;}
.wb-rail-h{display:flex;align-items:center;gap:10px;margin-bottom:11px;}
.wb-rail-h .lb{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-rail-h .lb span{display:block;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.05em;color:var(--app-fg-subtle);margin-top:5px;font-weight:400;text-transform:none;}
.wb-nav{width:32px;height:32px;flex:0 0 auto;border:1px solid var(--app-border-strong);border-radius:3px;background:none;color:var(--app-fg-muted);display:grid;place-items:center;cursor:pointer;}
.wb-nav:hover:not(:disabled){border-color:var(--electric);color:var(--electric);}
.wb-nav:disabled{opacity:.3;cursor:default;}
.wb-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;}
.wb-day{background:var(--app-surface);border:1px solid var(--app-border);border-radius:2px;padding:7px 2px 6px;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:5px;position:relative;overflow:hidden;}
/* the check-in flag on its due date [6.5] — an electric corner cut, readable at rail size */
.wb-day .dci{position:absolute;top:0;right:0;width:10px;height:10px;background:var(--electric);clip-path:polygon(0 0,100% 0,100% 100%);}
.wb-day.on .dci{background:#fff;}
.wb-day:hover{border-color:var(--app-border-strong);}
.wb-day .dd{font-family:var(--wbf-m);font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg-subtle);}
.wb-day .dn{font-family:var(--wbf-c);font-weight:900;font-size:16px;color:var(--app-fg);line-height:1;}
.wb-day .dt{height:5px;display:flex;gap:2px;}
.wb-day .dt i{width:5px;height:5px;background:var(--app-border-strong);}
.wb-day.on{background:var(--electric);border-color:var(--electric);}
.wb-day.on .dd,.wb-day.on .dn{color:#fff;}
.wb-day.on .dt i{background:rgba(255,255,255,.6);}
.wb-day.now{box-shadow:inset 0 -3px 0 var(--electric);}
.wb-day.now .dn{color:var(--electric);}
.wb-day.on.now{box-shadow:none;}
.wb-day.on.now .dn{color:#fff;}
.wb-day.none .dn{color:var(--app-border-strong);}

/* the class-time rail on a board */
.wb-slots{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch;}
.wb-slots::-webkit-scrollbar{height:0;}
/* the same strip inside the entry pad: "Which class" [6.3] */
.wb-slots.pad{margin:0 0 4px;flex-wrap:wrap;overflow:visible;}
.wb-slots.pad .wb-slot{padding:8px 11px;font-size:12px;}
.wb-slot{flex:0 0 auto;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:3px;padding:9px 12px;cursor:pointer;font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg-muted);white-space:nowrap;}
.wb-slot:hover{border-color:var(--app-fg-subtle);color:var(--app-fg);}
.wb-slot .c{font-family:var(--wbf-m);font-weight:400;font-size:9.5px;color:var(--app-fg-subtle);margin-left:6px;}
.wb-slot.on{background:var(--iron);border-color:var(--iron);color:#fff;}
.wb-slot.on .c{color:var(--silver);}
.wb-slot.you{border-color:var(--electric);color:var(--electric);}
.wb-slot.you.on{background:var(--electric);border-color:var(--electric);color:#fff;}
.wb-slot.you.on .c{color:rgba(255,255,255,.75);}

/* the entry pad */
.wb-entry{display:flex;align-items:center;gap:12px;width:100%;background:var(--app-surface);border:1px solid var(--app-border-strong);border-left:3px solid var(--app-border-strong);border-radius:3px;padding:13px;cursor:pointer;font-family:inherit;text-align:left;}
.wb-entry.on{border-left-color:var(--electric);}
.wb-entry>span{display:block;min-width:0;}
.wb-entry .ek{display:block;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--app-fg-subtle);}
.wb-entry .ev{display:block;font-family:var(--wbf-c);font-weight:900;font-size:34px;line-height:1;color:var(--app-fg);margin-top:5px;letter-spacing:.02em;}
.wb-entry .ev em{font-style:normal;color:var(--app-border-strong);}
.wb-entry .ev.ph{color:var(--app-border-strong);}
.wb-entry .er{margin-left:auto;text-align:right;font-family:var(--wbf-m);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg-subtle);line-height:1.5;flex:0 0 auto;}
.wb-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;}
.wb-keys button{height:50px;border:1px solid var(--app-border-strong);background:var(--app-surface);border-radius:3px;font-family:var(--wbf-m);font-size:20px;font-weight:700;color:var(--app-fg);cursor:pointer;}
.wb-keys button:hover{border-color:var(--electric);color:var(--electric);}
.wb-keys button:active{background:var(--app-surface-sunk);}
.wb-keys button.act{background:var(--iron);border-color:var(--iron);color:#fff;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.06em;text-transform:uppercase;}
.wb-keys button.act:hover{background:var(--electric);border-color:var(--electric);color:#fff;}
.wb-keys button.act[disabled]{opacity:.35;pointer-events:none;}

/* sheets */
.wb-sh{position:absolute;inset:0;z-index:60;display:flex;flex-direction:column;justify-content:flex-end;}
.wb-sh-sc{position:absolute;inset:0;background:rgba(5,5,5,.66);}
.wb-sh-c{position:relative;background:var(--app-bg);border-top:1px solid var(--app-border-strong);max-height:93%;overflow-y:auto;overflow-x:hidden;padding:16px 14px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:13px;color:var(--app-fg);}
.wb-sh-h{display:flex;align-items:flex-start;gap:12px;}
.wb-sh-h .id{flex:1 1 auto;min-width:0;}
.wb-sh-h .eb{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--electric);}
.wb-sh-h .t{font-family:var(--wbf-c);font-weight:900;font-size:23px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;margin-top:6px;}
.wb-sh-x{flex:0 0 auto;width:32px;height:32px;border:1px solid var(--app-border-strong);border-radius:3px;background:var(--app-surface);color:var(--app-fg-muted);display:grid;place-items:center;cursor:pointer;}
.wb-sh-x:hover{border-color:var(--app-fg);color:var(--app-fg);}
.wb-ok{text-align:center;padding:10px 0 2px;}
.wb-ok .ic{width:50px;height:50px;margin:0 auto 13px;background:var(--electric);color:#fff;display:grid;place-items:center;}
.wb-ok .t{font-family:var(--wbf-c);font-weight:900;font-size:23px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);}
.wb-ok .d{font-size:12.5px;color:var(--app-fg-muted);line-height:1.55;margin-top:9px;text-wrap:pretty;}
.wb-ok .d b{color:var(--app-fg);font-weight:600;}

/* Today: the session rail + the mini board */
.wb-tr{display:flex;gap:11px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -14px;padding:0 14px 4px;-webkit-overflow-scrolling:touch;}
.wb-tr::-webkit-scrollbar{height:0;}
.wb-tr>*{flex:0 0 89%;scroll-snap-align:center;}
.wb-tr.one>*{flex:1 1 100%;}
.wb-mini{position:relative;background:var(--board);border:1px solid var(--alu-2);border-radius:2px;overflow:hidden;box-shadow:inset 0 0 50px rgba(110,120,132,.12),0 2px 0 rgba(0,0,0,.18);width:100%;}
.wb-mini::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 24px,rgba(90,100,112,.05) 24px 25px);pointer-events:none;}
.wb-mini-bd{position:relative;padding:13px 14px 12px;}
.wb-mini-t{font-family:var(--wbf-c);font-weight:900;font-size:32px;letter-spacing:.02em;text-transform:uppercase;line-height:.98;margin-top:7px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.wb-mini-n{font-family:var(--wbf-c);font-weight:900;font-size:17px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker-soft);margin-top:5px;line-height:1.05;}
.wb-mini-f{position:relative;display:flex;align-items:center;gap:10px;margin-top:11px;padding-top:10px;border-top:1.5px solid rgba(21,24,27,.3);}
.wb-mini-f .lf{flex:1 1 auto;min-width:0;font-family:var(--wbf-m);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--marker-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wb-mini-f .go{flex:0 0 auto;display:flex;align-items:center;gap:5px;font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--electric);}
.wb-mini.tap{cursor:pointer;text-align:left;font-family:inherit;padding:0;border-width:1px;display:block;}
.wb-mini.tap:hover .go{color:var(--electric-deep,#044399);}

/* the four Focus tracks */
.wb-trk{border:1px solid var(--app-border);border-radius:3px;overflow:hidden;background:var(--app-surface);}
.wb-trkr{display:flex;align-items:center;gap:11px;padding:12px 13px;border-top:1px solid #EFF1F4;width:100%;background:none;font-family:inherit;text-align:left;cursor:pointer;}
.wb-trkr:first-child{border-top:0;}
.wb-trkr:hover{background:#FAFBFC;}
.wb-trkr .tn{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:17px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-trkr .tn span{display:block;font-family:var(--font-body);font-weight:400;font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--app-fg-subtle);margin-top:5px;line-height:1.4;}
.wb-trkr .tw{flex:0 0 auto;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-subtle);border:1px solid var(--app-border);padding:4px 7px;}
.wb-trkr.on{background:#F5F9FF;}
.wb-trkr.on .tw{border-color:var(--electric);color:var(--electric);}

/* the read-only week + print */
.wb-ro{border:1px solid var(--app-border);border-radius:3px;overflow:hidden;background:var(--app-surface);}
.wb-rorow{display:flex;align-items:center;gap:11px;padding:12px 13px;border-top:1px solid #EFF1F4;width:100%;background:none;font-family:inherit;text-align:left;}
.wb-rorow:first-child{border-top:0;}
.wb-rorow.tap{cursor:pointer;}
.wb-rorow.tap:hover{background:#FAFBFC;}
.wb-rorow.now{background:#F5F9FF;}
.wb-rorow .rd{flex:0 0 44px;}
.wb-rorow .rd b{display:block;font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);}
.wb-rorow .rd span{display:block;font-family:var(--wbf-m);font-size:9.5px;color:var(--app-fg-subtle);margin-top:4px;}
.wb-rorow .rs{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:5px;}
.wb-rosess{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.wb-rosess i{flex:0 0 auto;width:4px;height:16px;border-radius:1px;}
.wb-rosess b{font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-rosess span,.wb-rosess em{font-style:normal;font-family:var(--wbf-m);font-size:10.5px;color:var(--app-fg-subtle);}
.wb-rorow .re{flex:0 0 auto;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:#A8AFB8;}
.wb-print{display:flex;align-items:center;gap:12px;border:1px dashed var(--app-border-strong);border-radius:3px;background:var(--app-surface);padding:13px;width:100%;font-family:inherit;text-align:left;cursor:pointer;}
.wb-print:hover{border-color:var(--electric);}
.wb-print .pi{flex:0 0 auto;width:34px;height:34px;border:1px solid var(--app-border-strong);display:grid;place-items:center;color:var(--app-fg-muted);}
.wb-print:hover .pi{border-color:var(--electric);color:var(--electric);}
.wb-print .pt{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-print .pt span{display:block;font-family:var(--font-body);font-weight:400;font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--app-fg-subtle);margin-top:5px;line-height:1.4;}
.wb-tall{display:grid;grid-template-columns:repeat(auto-fit,minmax(66px,1fr));gap:7px;}
.wb-tl{border:1px solid var(--app-border);border-radius:3px;background:var(--app-surface);padding:10px 6px;text-align:center;}
.wb-tl b{display:block;font-family:var(--wbf-c);font-weight:900;font-size:21px;color:var(--app-fg);line-height:1;}
.wb-tl b em{font-style:normal;font-size:13px;color:var(--app-fg-subtle);}
.wb-tl span{display:block;font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-subtle);margin-top:6px;}
.wb-tl.hit{border-color:var(--turf,#1E9E62);background:rgba(30,158,98,.07);}
.wb-tl.hit b{color:var(--turf-deep,#146B4A);}
.wb-locked{display:flex;align-items:center;gap:11px;border:1px solid var(--turf,#1E9E62);border-left:3px solid var(--turf,#1E9E62);border-radius:3px;background:rgba(30,158,98,.07);padding:12px 13px;}
.wb-locked .li{flex:0 0 auto;width:26px;height:26px;background:var(--turf-deep,#146B4A);color:#fff;display:grid;place-items:center;}
.wb-locked .lt{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--turf-deep,#146B4A);line-height:1;}
.wb-locked .lt span{display:block;font-family:var(--font-body);font-weight:400;font-size:11px;letter-spacing:0;text-transform:none;color:var(--app-fg-muted);margin-top:5px;}
.wb-locked .lu{flex:0 0 auto;background:none;border:0;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);cursor:pointer;}
.wb-locked .lu:hover{color:var(--electric);text-decoration:underline;}

/* meals */
.wb-mrail{display:flex;gap:11px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -14px;padding:0 14px 4px;-webkit-overflow-scrolling:touch;}
.wb-mrail::-webkit-scrollbar{height:0;}
.wb-mrail>*{flex:0 0 89%;scroll-snap-align:center;}
.wb-dots{display:flex;gap:6px;justify-content:center;align-items:center;}
.wb-dots i{width:7px;height:7px;background:var(--app-border-strong);transition:width .15s,background .15s;}
.wb-dots i.did{background:var(--turf,#1E9E62);}
.wb-dots i.on{width:20px;background:var(--electric);}
.wb-dots i.on.did{background:var(--turf-deep,#146B4A);}
.wb-mac{display:flex;border:1.5px solid rgba(21,24,27,.28);margin-top:12px;}
.wb-mac>div{flex:1 1 0;padding:8px 4px;text-align:center;border-right:1px solid rgba(21,24,27,.18);}
.wb-mac>div:last-child{border-right:0;}
.wb-mac .k{font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--marker-soft);}
.wb-mac .v{font-family:var(--wbf-c);font-weight:900;font-size:21px;line-height:1;margin-top:4px;color:var(--marker);}
.wb-mac .v.b{color:var(--electric);}
.wb-ing{list-style:none;padding:0;margin:0;}
.wb-ing li{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px solid rgba(21,24,27,.1);font-size:13.5px;color:var(--marker);line-height:1.35;}
.wb-ing li:last-child{border-bottom:0;}
.wb-ing li::before{content:"";flex:0 0 auto;width:6px;height:6px;border:1.5px solid var(--electric);}
.wb-stp{list-style:none;padding:0;margin:0;counter-reset:s;}
.wb-stp li{counter-increment:s;position:relative;padding:10px 0 10px 30px;border-bottom:1px solid rgba(21,24,27,.1);font-size:13px;line-height:1.55;color:var(--marker);text-wrap:pretty;}
.wb-stp li:last-child{border-bottom:0;}
.wb-stp li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:11px;font-family:var(--wbf-m);font-weight:700;font-size:11px;color:var(--electric);}
.wb-did{display:flex;align-items:center;gap:11px;margin-top:14px;border:1.5px solid var(--turf-deep,#146B4A);padding:11px 12px;}
.wb-did .di{flex:0 0 auto;width:26px;height:26px;background:var(--turf-deep,#146B4A);color:#fff;display:grid;place-items:center;}
.wb-did .dx{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--turf-deep,#146B4A);line-height:1;}
.wb-did .dx span{display:block;font-family:var(--font-body);font-weight:400;font-size:11px;letter-spacing:0;text-transform:none;color:var(--marker-soft);margin-top:5px;}
.wb-did .du{flex:0 0 auto;background:none;border:0;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--marker-soft);cursor:pointer;}
.wb-did .du:hover{color:var(--electric);text-decoration:underline;}
.wb-did.miss{border-color:#8A6410;}
.wb-did.miss .di{background:#8A6410;}
.wb-did.miss .dx{color:#8A6410;}
.wb-opts{display:flex;flex-direction:column;gap:7px;}
.wb-opt{display:flex;align-items:center;gap:12px;border:1px solid var(--app-border-strong);border-radius:3px;background:var(--app-surface);padding:12px 13px;cursor:pointer;font-family:inherit;text-align:left;width:100%;}
.wb-opt:hover{border-color:var(--app-fg-subtle);}
.wb-opt.on{border-color:var(--electric);border-left-width:3px;background:#F5F9FF;}
.wb-opt .ob{flex:0 0 auto;width:22px;height:22px;border:1.5px solid var(--app-border-strong);display:grid;place-items:center;color:transparent;}
.wb-opt.on .ob{border-color:var(--electric);background:var(--electric);color:#fff;}
.wb-opt .ot{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-opt .ot span{display:block;font-family:var(--font-body);font-weight:400;font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--app-fg-subtle);margin-top:5px;}
.wb-opt .oq{flex:0 0 auto;font-family:var(--wbf-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg-subtle);}

/* Extras */
.wb-cats{display:grid;grid-template-columns:1fr 1fr;gap:9px;}
.wb-cat{background:var(--app-surface);border:1px solid var(--app-border);border-top:3px solid var(--app-border-strong);border-radius:3px;padding:13px 12px;cursor:pointer;font-family:inherit;text-align:left;}
.wb-cat:hover{border-top-color:var(--electric);}
.wb-cat .ci{display:block;color:var(--electric);margin-bottom:10px;}
.wb-cat .cn{display:block;font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-cat .cb{display:block;font-size:11px;color:var(--app-fg-subtle);line-height:1.4;margin-top:7px;}
.wb-cat .cc{display:block;font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-border-strong);margin-top:10px;}
.wb-sub{border:1px solid var(--app-border);border-radius:3px;overflow:hidden;background:var(--app-surface);}
.wb-sr{display:flex;align-items:center;gap:11px;padding:12px 13px;border-top:1px solid #EFF1F4;width:100%;background:none;font-family:inherit;text-align:left;}
.wb-sr:first-child{border-top:0;}
.wb-sr.tap{cursor:pointer;}
.wb-sr.tap:hover{background:#FAFBFC;}
.wb-sr .sq{flex:0 0 24px;font-family:var(--wbf-m);font-weight:700;font-size:11.5px;color:var(--electric);}
.wb-sr .sn{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.wb-sr .sn span{display:block;font-family:var(--font-body);font-weight:400;font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--app-fg-subtle);margin-top:5px;line-height:1.4;}
.wb-soon{flex:0 0 auto;font-family:var(--wbf-m);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-fg-subtle);border:1px solid var(--app-border);padding:4px 8px;}
.wb-soon.hot{border-color:var(--electric);color:var(--electric);}
.wb-soon.done{border-color:var(--turf,#1E9E62);color:var(--turf-deep,#146B4A);}

/* ══════════════ THE COACH'S SIDE — paste the week in (.bw-*) ══════════════ */
.bw-wrap{display:flex;flex-direction:column;gap:14px;}
.bw-box{background:var(--app-surface);border:1px solid var(--app-border);border-radius:4px;padding:13px;}
.bw-box>.lbl{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--app-fg-subtle);display:flex;align-items:baseline;gap:8px;margin-bottom:9px;}
.bw-box>.lbl b{color:var(--electric);font-weight:500;}
.bw-box>.lbl .r{margin-left:auto;font-family:var(--wbf-m);font-size:9px;color:var(--app-fg-subtle);}
.bw-ta{width:100%;min-height:172px;resize:vertical;background:#FBFCFD;border:1px solid var(--app-border-strong);border-radius:3px;padding:11px 12px;font-family:var(--wbf-m);font-size:11.5px;line-height:1.65;color:var(--app-fg);}
.bw-ta:focus{outline:none;border-color:var(--electric);background:#fff;}
.bw-ta::placeholder{color:#AEB7C0;}
.bw-fill{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px;}
.bw-mini{background:none;border:1px solid var(--app-border-strong);border-radius:3px;padding:8px 11px;font-family:var(--wbf-m);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-muted);cursor:pointer;}
.bw-mini:hover{border-color:var(--electric);color:var(--electric);}
.bw-read{display:flex;align-items:center;gap:10px;border:1px solid var(--app-border);border-left:3px solid var(--electric);border-radius:3px;background:#F5F9FF;padding:11px 13px;}
.bw-read .n{font-family:var(--wbf-c);font-weight:900;font-size:27px;line-height:1;color:var(--electric);}
.bw-read .x{flex:1 1 auto;min-width:0;font-size:11.5px;line-height:1.45;color:var(--app-fg-muted);}
.bw-read .x b{color:var(--app-fg);font-weight:600;}
.bw-dayrail{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;}
.bw-dd{border:1px solid var(--app-border);border-radius:2px;background:var(--app-surface);padding:8px 2px;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:5px;}
.bw-dd b{font-family:var(--wbf-m);font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg-subtle);font-weight:400;}
.bw-dd i{font-style:normal;font-family:var(--wbf-c);font-weight:900;font-size:15px;color:var(--app-fg);line-height:1;}
.bw-dd .ok{width:6px;height:6px;background:var(--turf,#1E9E62);}
.bw-dd .no{width:6px;height:6px;background:var(--app-border-strong);}
.bw-dd.on{background:var(--iron);border-color:var(--iron);}
.bw-dd.on b,.bw-dd.on i{color:#fff;}
.bw-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:7px;}
.bw-pick{border:1px solid var(--app-border-strong);border-radius:3px;background:var(--app-surface);padding:10px 8px;cursor:pointer;font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg-muted);text-align:center;}
.bw-pick:hover{border-color:var(--app-fg-subtle);color:var(--app-fg);}
.bw-pick.on{background:var(--electric);border-color:var(--electric);color:#fff;}
.bw-pick .h{display:block;font-family:var(--wbf-m);font-weight:400;font-size:9px;letter-spacing:.05em;color:var(--app-fg-subtle);margin-top:5px;text-transform:uppercase;}
.bw-pick.on .h{color:rgba(255,255,255,.75);}
.bw-in{width:100%;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:3px;padding:11px 12px;font-family:var(--wbf-m);font-size:13px;color:var(--app-fg);}
.bw-in:focus{outline:none;border-color:var(--electric);}
.bw-bench{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--app-border-strong);border-radius:3px;background:var(--app-surface);padding:11px 12px;cursor:pointer;font-family:inherit;text-align:left;}
.bw-bench:hover{border-color:var(--electric);}
.bw-bench.set{border-left:3px solid var(--electric);background:#F5F9FF;}
.bw-bench .bn{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.bw-bench .bn span{display:block;font-family:var(--font-body);font-weight:400;font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--app-fg-subtle);margin-top:5px;}
.bw-bench .bx{flex:0 0 auto;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-fg-subtle);}
.bw-stdgrp{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--app-fg-subtle);margin:4px 0 0;}
/* the goal number on a dashboard label — GOAL 01 · BODY COMPOSITION */
.d-lbl .gn{flex:0 0 auto;font-family:var(--wbf-m);font-size:9.5px;font-weight:400;letter-spacing:.12em;color:var(--electric);}
.bw-foot{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:stretch}

/* ══════════════ 4.1 · THE DAY IS A SWIPE, NEVER AN ACCORDION ══════════════ */
/* the four Focus tracks, written up ON the board (never app chrome) */
.wb-tkb{display:flex;align-items:center;gap:10px;width:100%;padding:11px 0;border:0;border-bottom:1px solid rgba(21,24,27,.14);background:none;font-family:inherit;text-align:left;cursor:pointer;color:var(--marker-soft);}
.wb-tkb:last-child{border-bottom:0;}
.wb-tkb:hover .tn{color:var(--electric);}
.wb-tkb .tb{flex:1 1 auto;min-width:0;}
.wb-tkb .tn{display:block;font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker);line-height:1;}
.wb-tkb .tl{display:block;font-family:var(--wbf-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--marker-soft);margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wb-tkb .tw{flex:0 0 auto;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--marker-soft);border:1.5px solid rgba(21,24,27,.25);padding:4px 7px;}
.wb-tkb.mine .tn{color:var(--electric);}
.wb-tkb.mine .tw{border-color:var(--electric);color:var(--electric);}
.wb-tkb .tn em{font-style:normal;font-family:var(--wbf-m);font-weight:400;font-size:9px;letter-spacing:.1em;color:var(--electric);margin-left:8px;vertical-align:2px;}
/* left / right through the day's sessions */
.wb-swipe{display:flex;align-items:center;gap:10px;margin-top:11px;}
.wb-sw{flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:3px;color:var(--app-fg);cursor:pointer;}
.wb-sw:hover:not(:disabled){border-color:var(--electric);color:var(--electric);}
.wb-sw:disabled{opacity:.35;cursor:default;}
.wb-swipe .sx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px;}
.wb-swipe .sl{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);}
/* [4.2] the deck nav sits ABOVE the rail — under it you had to scroll past a whole
   board to discover there was another one */
/* [4.4] THE DECK'S AFFORDANCE IS THE BOARD'S OWN: the next card peeks in at the
   right edge and the position is a rotated marker tally written in the board's head
   row. IN FLOW, never absolute — anchored to the deck it hung off the card (the deck
   is wider by the peek) and landed on the CTA. */
.wb-deck{position:relative;}
.wb-tally{flex:0 0 auto;display:flex;align-items:baseline;gap:5px;transform:rotate(-3deg);border:2px solid var(--electric);padding:2px 7px 1px;}
.wb-tally b{font-family:var(--wbf-c);font-weight:900;font-size:17px;line-height:1;letter-spacing:.03em;color:var(--electric);}
.wb-tally i{font-family:var(--wbf-m);font-style:normal;font-size:8px;letter-spacing:.13em;text-transform:uppercase;color:var(--electric);opacity:.7;}

/* [4.5] THE FOOD HALF OF THE DAY IS ITS OWN MARKER. Same board, same deck, other
   pen: training is written in the session's colour, food in the GREEN marker (Tier 2
   turf — [4.6], the pen the meal dots and the measure stamp were already using), and
   [5.1] the food pen is BLUE again (turf in 4.6): the app’s own accent reads as
   "the other subject" without competing with a Focus track.
   the head row says FOOD. Swiping from a rest day into a meal has to read as a change
   of subject. Amber stays what it always meant on a meal: the MISSED measure. */
.wb-food .wb-board{box-shadow:inset 0 0 50px rgba(7,93,198,.07),0 2px 0 rgba(0,0,0,.18);}
.wb-food .wb-bd::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--electric,#075DC6);}
.wb-food .wb-bhead .fd{color:var(--electric-deep,#054A9E);font-weight:700;}
.wb-food .wb-btitle{color:#053F7C;}
.wb-food .wb-tally{border-color:var(--electric,#075DC6);}
.wb-food .wb-tally b,.wb-food .wb-tally i{color:var(--electric-deep,#054A9E);}
.wb-food .wb-cta{background:var(--electric-deep,#054A9E);border-color:var(--electric-deep,#054A9E);}
.wb-food .wb-cta:hover{background:var(--electric,#075DC6);border-color:var(--electric,#075DC6);}
.wb-food .wb-cta:active{background:#04336B;border-color:#04336B;}
.wb-food .wb-cta.ghost{background:none;color:var(--electric-deep,#054A9E);}
.wb-food .wb-cta.ghost:hover{background:none;border-color:var(--electric,#075DC6);color:var(--electric-deep,#054A9E);}

/* ══════════════ 4.5 · PUT AN EXTRA IN MY WEEK ══════════════ */
.ex-on{display:grid;gap:3px;padding:11px 12px;background:#F5F9FF;border:1px solid var(--electric);border-radius:3px;margin-bottom:13px;}
.ex-on .k{font-family:var(--wbf-m);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--electric);}
.ex-on .v{font-family:var(--wbf-c);font-weight:900;font-size:18px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.ex-on .p{font-size:11.5px;color:var(--app-fg-muted);}
.ex-starts{display:flex;gap:7px;}
.ex-st{flex:1 1 0;padding:9px 6px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;text-align:center;cursor:pointer;color:var(--app-fg);}
.ex-st.on{border-color:var(--electric);box-shadow:inset 0 -3px 0 var(--electric);}
.ex-st b{display:block;font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.03em;text-transform:uppercase;line-height:1;}
.ex-st span{display:block;font-family:var(--wbf-m);font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--app-fg-subtle);margin-top:5px;}
.ex-days{display:flex;gap:5px;}
.ex-dd{flex:1 1 0;padding:11px 2px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--app-fg-muted);cursor:pointer;}
.ex-dd.on{background:var(--electric);border-color:var(--electric);color:#fff;}
.ex-prev{display:grid;gap:3px;padding:11px 12px;background:var(--app-surface-sunk);border-radius:3px;margin:12px 0;}
.ex-prev .k{font-family:var(--wbf-m);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--app-fg-subtle);}
.ex-prev .v{font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.02em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.ex-prev .p{font-size:11.5px;color:var(--app-fg-muted);}
.ex-drop{display:block;width:100%;margin-top:9px;padding:10px;background:none;border:1px solid var(--app-border-strong);border-radius:3px;font-family:var(--wbf-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-rust-deep,#9E2D24);cursor:pointer;}
.ex-drop:hover{border-color:var(--color-rust,#C4392E);}
/* [4.6] THE BASELINE THE PROGRAM PRESCRIBES OFF — a time for a run, a 1RM for a lift */
.ex-base{display:flex;align-items:flex-end;gap:10px;margin:10px 0 2px;}
.ex-base .fl{flex:1 1 auto;min-width:0;}
.ex-base .lb{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-family:var(--wbf-m);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--app-fg-subtle);margin-bottom:6px;}
.ex-base .lb b{color:var(--app-fg-muted);font-weight:400;}
.ex-base input{width:100%;box-sizing:border-box;padding:12px;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:3px;font-family:var(--wbf-c);font-weight:900;font-size:21px;letter-spacing:.02em;color:var(--app-fg);}
.ex-base input:focus{outline:none;border-color:var(--electric);}
.ex-base .un{flex:0 0 auto;padding-bottom:15px;font-family:var(--wbf-m);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-fg-subtle);}
/* [4.7] the program read is a pitch — built to / how it runs / who it's for */
.ex-pitch{display:flex;flex-direction:column;gap:9px;margin:12px 0 4px;}
.ex-pp{border:1px solid var(--app-border);border-radius:3px;background:var(--app-surface);padding:11px 13px;}
.ex-pp .h{font-family:var(--wbf-m);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--electric);margin-bottom:5px;}
.ex-pp .t{font-size:12px;line-height:1.5;color:var(--app-fg);text-wrap:pretty;}
/* the program overview: what it is, what the goal is, the sessions in order */
.ex-ov{border:1px solid var(--app-border);border-radius:3px;background:var(--app-surface);margin:10px 0 4px;}
.ex-ovr{display:flex;align-items:baseline;gap:11px;padding:11px 12px;border-bottom:1px solid var(--app-border);}
.ex-ovr:last-child{border-bottom:0;}
.ex-ovr .no{flex:0 0 24px;font-family:var(--wbf-c);font-weight:900;font-size:17px;line-height:1;color:var(--app-border-strong);}
.ex-ovr.test .no,.ex-ovr.test .t{color:var(--electric);}
.ex-ovr .b{flex:1 1 auto;min-width:0;}
.ex-ovr .t{font-family:var(--wbf-c);font-weight:900;font-size:14.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1.1;}
.ex-ovr .l{font-size:11.5px;color:var(--app-fg-muted);line-height:1.45;margin-top:4px;text-wrap:pretty;}
.ex-ovr .wk{flex:0 0 auto;font-family:var(--wbf-m);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-fg-subtle);}
.ex-soon{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1px dashed var(--app-border-strong);border-radius:3px;background:var(--app-surface);color:var(--app-fg-muted);font-size:12px;line-height:1.5;margin-top:10px;text-wrap:pretty;}
.ex-soon b{color:var(--app-fg);font-weight:600;}
.pt-badge.open{border-color:var(--electric);color:var(--electric);}
.pt-count.on{color:var(--electric);border-color:var(--electric);}
.wb-nav2{display:flex;align-items:center;gap:10px;}
.wb-nav2 .sx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px;}
.wb-nav2 .sl{font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);line-height:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;}
/* Log a Benchmark pins just above the tab bar — the one action on the Road tab */
.d-logstick{position:sticky;bottom:0;z-index:4;margin-top:8px;padding:12px 0 4px;background:linear-gradient(180deg,rgba(244,246,248,0),var(--app-bg) 45%);}
.d-logstick .d-logbtn{margin:0;}
/* the wins blocks read as real subheadings, not captions */
.d-wins>.hd{font-family:var(--wbf-c);font-weight:900;font-size:18px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);}

/* ══════════════ 4.3 · SET BY SET, THEN THE TONNAGE ══════════════
   A load day written as 5-5-5-5-5+ is five working sets: a load per set, reps
   editable because the room scales the scheme, and the score is the total. */
.wb-set{display:flex;align-items:center;gap:9px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;padding:8px 9px;margin-bottom:6px;}
.wb-set.on{border-color:var(--electric);box-shadow:inset 3px 0 0 var(--electric);}
.wb-set .sn{flex:0 0 auto;width:26px;height:26px;display:grid;place-items:center;background:var(--app-surface-sunk);border:0;border-radius:2px;font-family:var(--wbf-m);font-size:11px;color:var(--app-fg-muted);cursor:pointer;}
.wb-set.on .sn{background:var(--electric);color:#fff;}
.wb-set .sr{flex:1 1 auto;display:flex;align-items:center;gap:7px;min-width:0;}
.wb-set .sr button{width:26px;height:26px;display:grid;place-items:center;background:none;border:1px solid var(--app-border-strong);border-radius:2px;font-family:var(--wbf-m);font-size:14px;line-height:1;color:var(--app-fg);cursor:pointer;}
.wb-set .sr button:hover{border-color:var(--electric);color:var(--electric);}
.wb-set .sr b{font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.02em;color:var(--app-fg);min-width:20px;text-align:center;}
.wb-set .sr span{font-family:var(--wbf-m);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--app-fg-subtle);}
/* THE REP TARGET, ON THE PAD [30 Aug 2026] — a paced run is a negative split, so
   every box has its own rung and the member reads it as they type. A rung is a
   TARGET, NOT A CAP: on or under is earned (--turf), over says how much by
   (--rust). Tier-2 functional colours, -deep because the pad is a light surface. */
.wb-set .sr .tgt{margin-left:auto;flex:0 0 auto;font-size:9.5px;letter-spacing:.05em;font-variant-numeric:tabular-nums;color:var(--app-fg-muted);}
.wb-set .sr .tgt.hit{color:var(--turf-deep);font-weight:700;}
.wb-set .sr .tgt.miss{color:var(--rust-deep);font-weight:700;}
.wb-set .sl{flex:0 0 auto;display:flex;align-items:baseline;gap:4px;background:none;border:0;border-bottom:2px solid var(--app-border-strong);padding:0 2px 2px;cursor:pointer;font-family:inherit;}
.wb-set.on .sl{border-bottom-color:var(--electric);}
.wb-set .sl b{font-family:var(--wbf-c);font-weight:900;font-size:22px;letter-spacing:.02em;color:var(--app-fg);line-height:1;}
.wb-set .sl b em{font-style:normal;color:var(--electric);animation:wbcar 1s steps(1,end) infinite;}
.wb-set .sl i{font-family:var(--wbf-m);font-style:normal;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-fg-subtle);}
.wb-set .sx{flex:0 0 auto;width:24px;height:24px;display:grid;place-items:center;background:none;border:0;color:var(--app-fg-subtle);cursor:pointer;}
.wb-set .sx:hover{color:var(--color-rust,#C4392E);}
.wb-addset{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:9px;background:none;border:1px dashed var(--app-border-strong);border-radius:3px;font-family:var(--wbf-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-muted);cursor:pointer;}
.wb-addset:hover{border-color:var(--electric);color:var(--electric);}
.wb-ton{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin:11px 0 3px;padding:11px 12px;background:var(--color-iron,#0A0A0A);border-radius:3px;}
.wb-ton .tt span,.wb-ton .th span{display:block;font-family:var(--wbf-m);font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--color-silver,#9A9A9A);margin-bottom:3px;}
.wb-ton .tt b{font-family:var(--wbf-c);font-weight:900;font-size:34px;letter-spacing:.01em;color:#fff;line-height:.9;}
.wb-ton .th{text-align:right;}
.wb-ton .th b{font-family:var(--wbf-c);font-weight:900;font-size:20px;color:#fff;line-height:1;}
.wb-ton b i{font-family:var(--wbf-m);font-style:normal;font-size:10px;letter-spacing:.08em;color:var(--color-silver,#9A9A9A);margin-left:4px;}

/* ══════════════ 4.3 · WRITING THE WEEK, ONE WORKOUT AT A TIME ══════════════ */
/* the week nav — the same back-and-forth a member reads their own week with */
.bw-wknav{display:flex;align-items:center;gap:10px;margin-bottom:11px;}
.bw-wknav .nb{flex:0 0 auto;width:36px;height:36px;display:grid;place-items:center;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:3px;color:var(--app-fg);cursor:pointer;}
.bw-wknav .nb:hover{border-color:var(--electric);color:var(--electric);}
.bw-wknav .lb{flex:1 1 auto;min-width:0;text-align:center;}
.bw-wknav .rg{font-family:var(--wbf-c);font-weight:900;font-size:20px;letter-spacing:.02em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.bw-wknav .rl{font-family:var(--wbf-m);font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--app-fg-subtle);margin-top:5px;}
.bw-wknav .rl.past{color:var(--color-forge-deep,#8A6410);}
/* what he is writing */
.bw-jobh{display:flex;align-items:center;gap:10px;margin:14px 0 10px;}
.bw-jobh .bk{display:flex;align-items:center;gap:5px;background:none;border:0;padding:0;font-family:var(--wbf-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-muted);cursor:pointer;}
.bw-jobh .bk:hover{color:var(--electric);}
.bw-jobh .jt{margin-left:auto;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);}
/* create new workout */
.bw-kinds{display:flex;flex-direction:column;gap:8px;}
.bw-kind{display:flex;align-items:center;gap:11px;width:100%;padding:13px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;text-align:left;cursor:pointer;color:var(--app-fg);}
.bw-kind:hover:not(:disabled){border-color:var(--electric);}
.bw-kind:disabled{opacity:.5;cursor:default;}
.bw-kind .ki{flex:0 0 auto;width:34px;height:34px;display:grid;place-items:center;background:var(--app-surface-sunk);border-radius:3px;}
.bw-kind .kb{flex:1 1 auto;min-width:0;}
.bw-kind .kn{display:block;font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.03em;text-transform:uppercase;line-height:1;}
.bw-kind .kd{display:block;font-size:11.5px;line-height:1.35;color:var(--app-fg-muted);margin-top:4px;}
/* what is already up, with its two actions */
.bw-onb{margin-bottom:13px;}
.bw-onb .bw-mini{margin:7px 7px 0 0;}

/* ══════════════ THE BLACKBOARD (.wb-board.chalk) ══════════════
   Same object, other surface. The WHITEBOARD is the gym's own standard — the
   workout, the room, the movement board. The BLACKBOARD is for what runs BESIDE
   it: a challenge, a series, anything with its own season. It is the same
   vocabulary (melamine → slate, marker → chalk), so nothing has to be re-learned;
   the variant just re-points the board's own tokens. */
.wb-board.chalk{--board:#1E2325;--marker:#F3F5F2;--marker-soft:#9AA4A7;--alu-1:#4C5356;--alu-2:#383F42;--alu-3:#282E31;
  box-shadow:inset 0 0 90px rgba(0,0,0,.45),0 2px 0 rgba(0,0,0,.35);}
.wb-board.chalk::before{background:repeating-linear-gradient(0deg,transparent 0 27px,rgba(255,255,255,.05) 27px 28px);}
.wb-board.chalk .wb-bd *{border-color:rgba(255,255,255,.24);}
.wb-board.chalk .wb-res.me{background:rgba(79,168,255,.14);}
.wb-board.chalk .wb-res .nm .wb-dv{color:#9AA4A7;}
.wb-board.chalk .wb-res.me .nm .wb-dv{border-color:var(--electric-bright,#4FA8FF);color:var(--electric-bright,#4FA8FF);}
.wb-board.chalk .wb-scrib{color:#8A9497;}
/* the gym leaderboard, on melamine (p1/programs-tab.jsx sits on .m-body, not .wbs) */
.pt-board .wb-slots{margin:11px 0;}
.pt-board .wb-board{margin:0 0 14px;}
/* A DIVISION IS NOT A UNIT. The W / M chip belongs beside the NAME, boxed — put a
   bare capital next to a 22px score and "826 M" reads as metres or watts. */
.wb-res .nm .wb-dv{display:inline-block;margin-left:8px;padding:2px 5px;border:1.5px solid rgba(21,24,27,.25);font-family:var(--wbf-m);font-size:8.5px;font-weight:400;letter-spacing:.08em;color:var(--marker-soft);vertical-align:1px;}
.wb-res.me .nm .wb-dv{border-color:var(--electric);color:var(--electric);}

/* THE NOTES PAD [21 Aug 2026] — a Zone 2 is logged in words, so the entry is a
   real textarea rather than the numeric tile. Same frame as .wb-entry so the
   sheet reads as one thing, but it takes typing and grows to the text. */
.wb-note{display:block;width:100%;background:var(--app-surface);border:1px solid var(--app-border-strong);border-left:3px solid var(--electric);border-radius:3px;padding:13px;font-family:inherit;font-size:15px;line-height:1.5;color:var(--app-fg);resize:vertical;min-height:112px;-webkit-appearance:none;appearance:none;}
.wb-note::placeholder{color:var(--app-fg-subtle);}
.wb-note:focus{outline:none;border-color:var(--electric);}

/* ══════════════ 6.0 · A DAY IS PIECES ══════════════
   A session is not one workout, so the board is written PIECE by piece: a tag,
   a name, where it sits in the day, the work, and what it scores on. Down the
   board is depth; the category pager below is what moves you across. */
.sp-ph{display:flex;align-items:baseline;gap:9px;font-family:var(--wbf-m);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--marker-soft);}
.sp-ph .tg{flex:0 0 auto;font-family:var(--wbf-c);font-weight:900;font-size:22px;letter-spacing:.02em;color:var(--marker);line-height:.8;}
.sp-ph .nm{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:var(--marker);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sp-ph .sl{flex:0 0 auto;margin-left:auto;}
.sp-when{display:inline-block;border:1.5px solid var(--marker-soft);padding:2px 6px 1px;font-family:var(--wbf-c);font-weight:900;font-size:11px;letter-spacing:.09em;}
/* the score line — one row per piece, on the board's own tray line */
.sp-rows{margin-top:15px;border-top:2.5px solid var(--marker);}
.sp-row{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;border-bottom:1px solid rgba(21,24,27,.16);padding:11px 2px;font-family:inherit;text-align:left;cursor:pointer;}
.sp-row:last-child{border-bottom:0;}
.sp-row:hover{background:rgba(7,93,198,.05);}
.sp-row .tg{flex:0 0 20px;font-family:var(--wbf-c);font-weight:900;font-size:19px;color:var(--marker);line-height:1;}
.sp-row .lb{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--marker);line-height:1.1;}
.sp-row .lb span{display:block;font-family:var(--wbf-m);font-weight:400;font-size:9.5px;letter-spacing:.1em;color:var(--marker-soft);margin-top:4px;}
.sp-row .vl{flex:0 0 auto;font-size:26px;color:var(--electric);line-height:1;}
.sp-row .vl.none{font-family:var(--wbf-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--marker-soft);}
/* the score, in the member's own hand */
.sp-mine{margin-top:14px;padding-top:11px;border-top:2.5px solid var(--marker);display:flex;align-items:flex-end;gap:11px;}
.sp-mine .k{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--marker-soft);}
.sp-mine .v{font-size:38px;line-height:.8;color:var(--electric);}
.sp-mine .rx{margin-left:auto;font-family:var(--wbf-c);font-weight:900;font-size:12px;letter-spacing:.09em;border:2px solid var(--marker-soft);color:var(--marker-soft);padding:2px 6px 1px;}
/* THE ROOM IS A GRID — one column per scored piece, the way it gets written up
   in person. A piece only ever ranks against itself; nothing is added together. */
.sp-grid{margin-top:13px;}
.sp-gh,.sp-gr{display:grid;grid-template-columns:1fr repeat(var(--pc,2),52px);column-gap:9px;}
.sp-gh{align-items:end;border-bottom:2.5px solid var(--marker);padding-bottom:6px;}
.sp-gh .nm{font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--marker-soft);}
.sp-gh .nm b{display:block;font-family:var(--wbf-c);font-weight:900;font-size:13px;letter-spacing:.05em;color:var(--electric);margin-top:3px;}
.sp-gh button.h{background:none;border:0;cursor:pointer;padding:0 0 2px;text-align:right;font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--marker-soft);}
.sp-gh button.h b{display:block;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.04em;color:var(--marker);line-height:1;margin-bottom:3px;}
.sp-gh button.h:hover b{color:var(--electric);}
.sp-gh .h.lead,.sp-gh .h.lead b{color:var(--electric);}
.sp-gh .h i.wod{display:block;font-style:normal;font-family:var(--wbf-m);font-size:7.5px;letter-spacing:.12em;color:var(--electric);margin-bottom:2px;}
.sp-gsep{margin-top:10px;padding:0 0 4px;border-bottom:1.5px solid rgba(21,24,27,.28);font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--marker-soft);}
.sp-gr{align-items:baseline;padding:7px 0;border-bottom:1px solid rgba(21,24,27,.1);}
.sp-gr:last-child{border-bottom:0;}
.sp-gr .nm{font-family:var(--wbf-c);font-weight:900;font-size:18px;letter-spacing:.03em;text-transform:uppercase;color:var(--marker);line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sp-gr .nm i{font-style:normal;font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.06em;color:var(--marker-soft);margin-right:8px;}
.sp-gr .v{text-align:right;font-family:var(--wbf-c);font-weight:900;font-size:18px;color:var(--marker);line-height:1;font-variant-numeric:tabular-nums;}
.sp-gr .v i{display:block;font-family:var(--wbf-m);font-weight:400;font-style:normal;font-size:8px;letter-spacing:.07em;color:var(--marker-soft);margin-top:4px;}
.sp-gr .v.dim{color:rgba(21,24,27,.42);font-size:16px;}
.sp-gr .v.no{color:rgba(90,100,112,.3);font-size:15px;}
.sp-gr .v.top{color:var(--electric);}
.sp-gr .v.capd{color:var(--rust,#C4392E);}
.sp-gr.me{background:rgba(7,93,198,.09);box-shadow:inset 3px 0 0 var(--electric);margin:0 -8px;padding:8px;}
.sp-gr.me .nm,.sp-gr.me .nm i{color:var(--electric);}
.sp-mycard{display:flex;gap:9px;}
.sp-myc{flex:1 1 0;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;padding:9px 10px 10px;min-width:0;}
.sp-myc .k{font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);}
.sp-myc .v{font-size:29px;line-height:.85;color:var(--electric);margin-top:7px;}
.sp-myc .r{font-family:var(--wbf-c);font-weight:900;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-subtle);margin-top:5px;}
.sp-myc.none .v{font-family:var(--wbf-m);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--app-border-strong);}
/* the hand-written pen, unquoted: a quoted family name in a computed style breaks
   DOM-serialising screenshot tools mid-attribute. Same face, same result. */
.sp-mine .v,.sp-myc .v,.sp-row .vl,.cv-strip .vl{font-family:Caveat,cursive;}

/* ══════════════ 6.0 · CATEGORIES ACROSS, PIECES DOWN ══════════════
   Swipe left and right for the CATEGORY — the class, the focus session, own
   time, an extra, food. Scroll down for the depth inside it. No chip row to run
   out of room: the header NAMES what sits either side of you, so it holds two
   categories or eight, and a day with one thing on it is simply one pane. */
.cv-nav{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,1fr);align-items:stretch;margin:-4px -14px 0;padding:0 14px;background:var(--app-surface);border-bottom:1px solid var(--app-border);}
.cv-nav .sd{min-width:0;display:flex;align-items:center;gap:5px;background:none;border:0;cursor:pointer;padding:9px 6px;font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);overflow:hidden;}
.cv-nav .sd:hover{color:var(--electric);}
.cv-nav .sd span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cv-nav .sd.off{visibility:hidden;}
.cv-nav .sd.end{justify-content:flex-end;}
.cv-nav .sd i{font-style:normal;font-size:14px;line-height:1;}
.cv-nav .mid{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:8px 10px 7px;}
.cv-nav .mid b{font-family:var(--wbf-c);font-weight:900;font-size:17px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.cv-pips{display:flex;gap:4px;}
.cv-pips i{width:5px;height:5px;background:var(--app-border-strong);}
.cv-pips i.on{background:var(--electric);}
.cv-pips i.clear{background:var(--color-turf,#1E9E62);}
/* THE PANE IS THE PAGE: the viewport takes the height of the category being read,
   so the screen keeps its own single scroll and nothing nests a second one. */
.cv-vp{overflow:hidden;touch-action:pan-y;transition:height 220ms cubic-bezier(.2,.7,.2,1);}
.cv-track{display:flex;align-items:flex-start;width:100%;will-change:transform;}
.cv-track.anim{transition:transform 220ms cubic-bezier(.2,.7,.2,1);}
.cv-col{flex:0 0 100%;min-width:0;display:flex;flex-direction:column;gap:13px;padding-bottom:2px;}
.cv-col>*{flex:0 0 auto;min-width:0;}
.cv-ch{display:flex;align-items:baseline;gap:10px;}
.cv-ch .t{font-family:var(--wbf-c);font-weight:900;font-size:24px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.cv-ch .s{flex:1 1 auto;min-width:0;font-family:var(--wbf-m);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--app-fg-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cv-ch .r{flex:0 0 auto;margin-left:auto;font-family:var(--wbf-m);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--electric);}
.cv-ch .r.clear{color:var(--color-turf-deep,#146B4A);}
.cv-dh{display:flex;align-items:center;gap:10px;font-family:var(--wbf-m);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle);}
.cv-dh::after{content:"";flex:1 1 auto;height:1px;background:var(--app-border);}
.cv-strip{display:flex;align-items:center;gap:11px;width:100%;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;padding:11px 12px;cursor:pointer;font-family:inherit;text-align:left;}
.cv-strip:hover{border-color:var(--electric);}
.cv-strip .tg{flex:0 0 18px;font-family:var(--wbf-c);font-weight:900;font-size:17px;color:var(--app-fg-subtle);line-height:1;}
.cv-strip .lb{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg);line-height:1.1;}
.cv-strip .lb span{display:block;font-family:var(--wbf-m);font-weight:400;font-size:8.5px;letter-spacing:.1em;color:var(--app-fg-subtle);margin-top:4px;}
/* WHAT IT SAID BEFORE IT WAS CORRECTED [6.19 · 30 Aug 2026]. Quiet, not hidden:
   a class result the whole room reads should never change with no mark on it,
   and it should never shout either. Same treatment on .sp-myc/.sp-row, which get
   it inline off the same s0. */
.cv-strip .lb span .cv-was{font-style:normal;color:var(--app-fg-subtle);opacity:.75;}
.cv-strip .vl{flex:0 0 auto;font-size:22px;line-height:1;color:var(--electric);white-space:nowrap;}
.cv-bdg{flex:0 0 auto;border:1.5px solid var(--color-turf-deep,#146B4A);color:var(--color-turf-deep,#146B4A);font-family:var(--wbf-c);font-weight:900;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;padding:3px 6px 2px;}
.cv-bdg.soft{border-color:var(--app-border-strong);color:var(--app-fg-subtle);}
.cv-clear{background:var(--app-surface);border:1px solid var(--app-border);border-top:3px solid var(--color-turf-deep,#146B4A);border-radius:3px;padding:15px 14px;}
.cv-clear .t{font-family:var(--wbf-c);font-weight:900;font-size:19px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg);}
.cv-clear .d{font-size:12.5px;line-height:1.5;color:var(--app-fg-muted);margin-top:6px;text-wrap:pretty;}

/* ══════════════ 6.0 · THE COACH WRITES THE SEGMENTS ══════════════ */
.bw-segs{display:flex;flex-direction:column;gap:8px;}
.bw-seg{display:flex;align-items:flex-start;gap:11px;width:100%;background:var(--app-surface);border:1px solid var(--app-border);border-left:3px solid var(--electric);border-radius:3px;padding:12px 13px;text-align:left;font-family:inherit;color:var(--app-fg);cursor:pointer;}
.bw-seg:hover{border-color:var(--electric);}
.bw-seg.on{background:#F5F9FF;border-color:var(--electric);}
.bw-seg.add{border-left-color:var(--app-border-strong);border-style:dashed;justify-content:center;color:var(--app-fg-subtle);font-family:var(--wbf-c);font-weight:900;font-size:14px;letter-spacing:.06em;text-transform:uppercase;}
.bw-seg .tg{flex:0 0 20px;font-family:var(--wbf-c);font-weight:900;font-size:20px;color:var(--app-fg-subtle);line-height:.95;}
.bw-seg .bd{flex:1 1 auto;min-width:0;}
.bw-seg .ty{display:block;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.05em;text-transform:uppercase;line-height:1;}
.bw-seg .wk{display:block;font-family:var(--wbf-m);font-size:10.5px;line-height:1.5;color:var(--app-fg-muted);margin-top:6px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.bw-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
.bw-tag{border:1px solid var(--app-border-strong);color:var(--app-fg-muted);font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.11em;text-transform:uppercase;padding:3px 6px 2px;}
.bw-tag.blue{border-color:var(--electric);color:var(--electric-deep,#044399);}
.bw-tag.wod{background:var(--color-iron,#0A0A0A);border-color:var(--color-iron,#0A0A0A);color:#fff;}
.bw-segact{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px;}
.bw-segact .bw-mini[disabled]{opacity:.4;pointer-events:none;}

/* ═══ 6.15 · ONE ASK PER PIECE, AND THE BOARD IS THE ROOM ═══════════════ */
/* a piece's two keys: the score (blue, always the same words) and the board */
.sp-cta2{display:grid;grid-template-columns:1fr auto;gap:8px;}
.sp-cta2 .wb-cta{min-height:50px;font-size:13.5px;letter-spacing:.04em;gap:6px;padding:0 11px;white-space:nowrap;margin-top:0;}
/* [6.15b] the scored strip: the read, and the pen that re-opens the pad */
.cv-striprow{display:flex;align-items:stretch;gap:6px;}
.cv-striprow .cv-strip{flex:1 1 auto;width:auto;}
.cv-stripedit{flex:0 0 44px;display:flex;align-items:center;justify-content:center;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;color:var(--app-fg-subtle);cursor:pointer;}
.cv-stripedit:hover{border-color:var(--electric);color:var(--electric);}
/* [6.15c] the identity line the board opens on — the room is the page, not the work */
.sp-idt{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;}
.sp-idt b{font-family:var(--wbf-c);font-weight:900;font-size:22px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg);line-height:1;}
.sp-idt span{font-family:var(--wbf-m);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--app-fg-subtle);}
.sp-idt i{margin-left:auto;font-family:var(--wbf-c);font-style:normal;font-weight:900;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);border:1.5px solid var(--app-border-strong);padding:2px 6px 1px;}
.sp-idt i.done{color:var(--color-turf-deep,#146B4A);border-color:var(--color-turf-deep,#146B4A);}
/* [6.15c] a your-number cell is a BUTTON into the pad now */
button.sp-myc{cursor:pointer;font-family:inherit;text-align:left;}
button.sp-myc:hover{border-color:var(--electric);}

/* v7.0 · THE SCORE HAS A DOOR — the score door (.wb-ask / .wb-askk), lifted from the v7.0 design bundle board.css */
/* [6.63] THE ONE WAY IN — the board's ask, pinned.
   It used to be a white card UNDER the wall, drawn at the same weight as the stat
   cells above it, saying "tap to put it up" in a 10px eyebrow. It is a key now: blue,
   58px, stuck to the bottom of the scroller so it is on screen at every scroll
   position — and it collapses to a slim read the moment there is nothing left to put
   up, because a screen with no ask should not spend 70px stating one. */
.wb-ask{position:sticky;bottom:0;z-index:8;margin:2px -14px -20px;padding:9px 14px 12px;background:var(--chalk,#F5F5F5);border-top:1px solid var(--app-border);}
.wb-askk{width:100%;min-height:58px;display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--electric);border:1px solid var(--electric);border-radius:3px;color:#fff;cursor:pointer;text-align:left;font-family:inherit;}
.wb-askk>span{min-width:0;}
.wb-askk .lb{display:block;font-family:var(--wbf-c);font-weight:900;font-size:18px;letter-spacing:.05em;text-transform:uppercase;line-height:1;}
.wb-askk .sb{display:block;font-family:var(--wbf-m);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.72);margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wb-askk .go{margin-left:auto;flex:0 0 auto;font-family:var(--wbf-m);font-size:10px;letter-spacing:.12em;text-transform:uppercase;border:1px solid rgba(255,255,255,.5);padding:6px 9px;}
.wb-askk:hover{background:var(--electric-h,#1C77E0);border-color:var(--electric-h,#1C77E0);}
.wb-askk:active{transform:translateY(1px);background:var(--electric-deep,#044399);}
.wb-askk.slim{min-height:46px;background:var(--iron);border-color:var(--iron);gap:10px;}
.wb-askk.slim:hover{background:#1C1C1C;border-color:#1C1C1C;}
.wb-askk.slim .v{flex:0 0 auto;font-family:Caveat,cursive;font-size:29px;line-height:.8;color:var(--electric-bright,#4FA8FF);}
.wb-askk.slim .sb{margin-top:0;white-space:normal;}
.wb-askk.read{cursor:default;}
.wb-askk.read:hover{background:var(--iron);border-color:var(--iron);}
/* [6.64] the key is the ONLY door — the blank line on the wall (.wb-mine) came off with
   the combo, and the wall is read-only again. */

/* v7.0 · SORT BY — the one question above the board (.wb-filt) (lifted from the v7.0 design bundle board.css) */
.wb-filt{display:flex;flex-direction:column;gap:8px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:3px;padding:10px 11px;}
.wb-filt .fr{display:flex;align-items:center;gap:10px;min-width:0;}
.wb-filt .fl{flex:0 0 42px;font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--app-fg-subtle);}
.wb-filt .wb-slots{flex:1 1 auto;min-width:0;padding-bottom:1px;}
.wb-filt .wb-slot{padding:7px 10px;font-size:12px;}
.wb-filt .fr.stack{flex-direction:column;align-items:stretch;gap:7px;}
.wb-filt .fr.stack .fl{flex:0 0 auto;}
.wb-filt .fr.stack .wb-slots{flex-wrap:wrap;overflow:visible;}

/* v7.0 · MARKER LINES — your numbers as marker lines (.sp-mks / .sp-mk) (lifted from the v7.0 design bundle board.css) */
.sp-mks{display:flex;flex-direction:column;gap:7px;}
.sp-mk{display:flex;align-items:center;gap:11px;width:100%;min-height:58px;background:var(--app-surface);border:1px solid var(--electric);box-shadow:inset 3px 0 0 var(--electric);border-radius:3px;padding:9px 13px;font-family:inherit;text-align:left;cursor:pointer;}
.sp-mk.up,.sp-mk.off{border-color:var(--app-border);box-shadow:inset 3px 0 0 var(--app-border-strong);}
.sp-mk.off .tg{color:var(--app-fg-subtle);}
.sp-mk .vl.off{font-family:var(--wbf-m);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--app-fg-subtle);}
.sp-mk:hover{background:rgba(7,93,198,.05);}
.sp-mk:active{transform:translateY(1px);}
.sp-mk .tg{flex:0 0 auto;min-width:14px;font-family:var(--wbf-c);font-weight:900;font-size:20px;line-height:1;color:var(--electric);}
.sp-mk.up .tg{color:var(--app-fg);}
.sp-mk .lb{flex:1 1 auto;min-width:0;font-family:var(--wbf-c);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1.05;}
.sp-mk .lb span{display:block;font-family:var(--wbf-m);font-weight:400;font-size:9px;letter-spacing:.1em;color:var(--app-fg-subtle);margin-top:4px;}
.sp-mk .vl{flex:0 0 auto;font-size:30px;line-height:.85;color:var(--electric);}
.sp-mk .vl.blank{font-size:19px;line-height:1;min-width:82px;text-align:right;border-bottom:2px dashed var(--electric);padding:0 2px 4px;}

/* v7.0 · ONE HEADER — the pager’s own middle (.cv-meta) (lifted from the v7.0 design bundle board.css) */
.cv-meta{display:flex;align-items:center;gap:7px;}
.cv-meta .st{font-family:var(--wbf-m);font-size:8.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--app-fg-subtle);}
.cv-meta .st.clear{color:var(--color-turf-deep,#146B4A);}

/* v7.0 · THE CLASS ON THE NAME — the class a number was set in (.nm u) (lifted from the v7.0 design bundle board.css) */
.sp-gr .nm u,.wb-res .nm u{text-decoration:none;font-family:var(--wbf-m);font-size:8px;letter-spacing:.1em;color:var(--marker-soft);margin-left:6px;}
