/* ============================================================
   Iron Barbell — THE CLASS CALENDAR  ·  .cl-* namespace
   ------------------------------------------------------------
   ONE stylesheet for all four surfaces (head coach timetable, coach roster,
   client booking, client attendance) because they are one feature and the
   rows must look identical wherever they appear. Deliberately UNSCOPED: the
   same components mount inside the client app AND inside .coach-app-root.
   Tier 3 app ladder only (--app-*), Tier 2 for status (--turf/--forge/--rust),
   session accents for the type stripe. Nothing new invented.
   ============================================================ */

/* ---- page padding. The coach app's own body class carries none, and these
   components mount in BOTH apps, so the page owns its gutters. ---- */
.cl-page{padding:16px 15px 26px}
.cl-hd{padding:16px 15px 0}
.cl-hd + .cl-page{padding-top:2px}

/* ---- section furniture ---- */
.cl-eb{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle)}
.cl-h{font-family:var(--font-cond);font-weight:900;font-size:20px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1}
.cl-sec{display:flex;align-items:baseline;gap:8px;margin:18px 0 9px;font-family:var(--font-cond);font-weight:900;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg)}
.cl-sec em{font-family:var(--font-mono);font-style:normal;font-size:10px;letter-spacing:.06em;color:var(--app-fg-subtle);margin-left:auto}
.cl-note{font-size:12.5px;line-height:1.5;color:var(--app-fg-muted);text-wrap:pretty}
.cl-empty{border:1px dashed var(--app-border-strong);border-radius:8px;padding:18px 14px;text-align:center;font-size:12.5px;color:var(--app-fg-subtle)}

/* ---- the dark hero: what's on, right now ---- */
.cl-hero{background:#0f0f10;border:1px solid #2a2a2a;border-radius:12px;padding:16px;color:#fff;margin-bottom:14px}
.cl-hero .eb{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--silver)}
.cl-hero .big{font-family:var(--font-cond);font-weight:900;font-size:34px;line-height:1;letter-spacing:.02em;text-transform:uppercase;margin-top:7px}
.cl-hero .big small{font-size:15px;color:var(--silver);margin-left:7px;letter-spacing:.04em}
.cl-hero .sub{font-size:12.5px;color:#b9c2cb;margin-top:5px;line-height:1.45}
.cl-hero .sub b{color:#fff}
.cl-hero .nums{display:flex;gap:20px;margin-top:14px;padding-top:13px;border-top:1px solid #2a2a2a}
.cl-hero .nums div{display:flex;flex-direction:column;gap:3px}
.cl-hero .nums b{font-family:var(--font-cond);font-weight:900;font-size:22px;line-height:1}
.cl-hero .nums span{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--silver)}
.cl-hero .nums .red b{color:var(--rust-bright)}
.cl-hero .nums .ok b{color:var(--turf-bright)}
.cl-hero .go{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;background:var(--electric);color:#fff;border:none;border-radius:6px;padding:12px;font-family:var(--font-cond);font-weight:900;font-size:14px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.cl-hero .go:hover{background:var(--electric-hover)}
.cl-hero .go:active{background:var(--electric-deep);transform:translateY(1px)}
.cl-hero .nav{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid #2a2a2a}
.cl-hero .nav span{flex:1 1 auto;text-align:center;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#b9c2cb}
.cl-hero .nav button{flex:0 0 auto;width:40px;height:34px;border-radius:6px;border:1px solid #3a3a3a;background:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.cl-hero .nav button:hover{border-color:var(--electric);color:var(--electric-bright)}

/* ---- day strip ---- */
.cl-days{display:flex;gap:5px;margin:0 0 14px}
.cl-days button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:7px;padding:7px 2px 6px;cursor:pointer}
.cl-days button .dw{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-subtle)}
.cl-days button .dn{font-family:var(--font-cond);font-weight:900;font-size:17px;line-height:1;color:var(--app-fg)}
.cl-days button .db{height:3px;width:16px;border-radius:2px;background:var(--app-border-strong)}
.cl-days button.has .db{background:var(--electric)}
.cl-days button.gap .db{background:var(--rust)}
.cl-days button.today{border-color:var(--app-border-strong)}
.cl-days button.on{background:var(--electric);border-color:var(--electric)}
.cl-days button.on .dw,.cl-days button.on .dn{color:#fff}
.cl-days button.on .db{background:rgba(255,255,255,.55)}

/* ---- a class row (the shared unit) ---- */
.cl-row{display:flex;align-items:stretch;gap:11px;width:100%;text-align:left;background:var(--app-surface);border:1px solid var(--app-border);border-left:3px solid var(--app-border-strong);border-radius:8px;padding:10px 11px;margin-bottom:8px;cursor:pointer;font-family:var(--font-body)}
.cl-row:hover{border-color:var(--app-border-strong)}
.cl-row.crossfit{border-left-color:var(--t-crossfit)}
.cl-row.focus{border-left-color:var(--t-focus)}
.cl-row.onramp{border-left-color:var(--t-focus)}
.cl-row.engine{border-left-color:var(--t-zone2)}
.cl-row.opengym{border-left-color:var(--t-contrast)}
.cl-row.comp{border-left-color:var(--t-crossfit)}
.cl-row.gap{border-left-color:var(--rust);background:var(--rust-tint)}
.cl-row.off{opacity:.6}
.cl-row.mine{box-shadow:inset 0 0 0 1px var(--electric)}
.cl-row .tm{flex:0 0 54px;display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.cl-row .tm b{font-family:var(--font-cond);font-weight:900;font-size:17px;line-height:1;color:var(--app-fg);letter-spacing:.01em}
.cl-row .tm span{font-family:var(--font-mono);font-size:8.5px;color:var(--app-fg-subtle)}
.cl-row .bd{flex:1 1 auto;min-width:0}
.cl-row .nm{display:flex;align-items:center;gap:7px;font-family:var(--font-cond);font-weight:900;font-size:15px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1.05}
.cl-row .ln{font-size:11.5px;color:var(--app-fg-muted);margin-top:4px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-row .ln.warn{color:var(--rust-deep);font-weight:600}
.cl-row .rt{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:4px}
.cl-row .cnt{font-family:var(--font-cond);font-weight:900;font-size:19px;line-height:1;color:var(--app-fg)}
.cl-row .cnt u{text-decoration:none;font-size:11px;color:var(--app-fg-subtle);margin-left:2px}
.cl-row .cl-chev{color:var(--app-fg-subtle);display:flex;align-items:center}

/* ---- chips + tags ---- */
.cl-tag{flex:0 0 auto;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.07em;text-transform:uppercase;border:1px solid var(--app-border-strong);border-radius:999px;padding:2px 7px;color:var(--app-fg-muted);background:var(--app-surface);white-space:nowrap}
.cl-tag.live{border-color:var(--electric);color:#fff;background:var(--electric)}
.cl-tag.red{border-color:var(--rust);color:var(--rust-deep);background:var(--rust-tint)}
.cl-tag.amber{border-color:var(--forge);color:var(--forge-deep);background:var(--forge-tint)}
.cl-tag.ok{border-color:var(--turf);color:var(--turf-deep);background:var(--turf-tint)}
.cl-tag.blue{border-color:var(--electric);color:var(--electric-deep);background:rgba(7,93,198,.08)}
.cl-tag.mine{border-color:var(--electric);background:var(--electric);color:#fff}

/* ---- roster ---- */
.cl-rbar{display:flex;align-items:center;gap:8px;background:var(--app-surface-sunk);border:1px solid var(--app-border);border-radius:8px;padding:9px 11px;margin-bottom:11px}
.cl-rbar .n{font-family:var(--font-cond);font-weight:900;font-size:15px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg)}
.cl-rbar .n em{font-style:normal;color:var(--app-fg-subtle);font-size:12px;margin-left:5px}
.cl-rbar .sp{flex:1 1 auto}
.cl-rbar button{background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:5px;padding:7px 10px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg);cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.cl-rbar button:hover{border-color:var(--electric);color:var(--electric-deep)}
.cl-r{display:flex;align-items:center;gap:10px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:8px;padding:9px 10px;margin-bottom:7px}
.cl-r.in{border-color:var(--turf);background:var(--turf-tint)}
.cl-r.no{border-color:var(--app-border);background:var(--app-surface-sunk);opacity:.85}
.cl-r .av{flex:0 0 auto;width:34px;height:34px;border-radius:50%;background:var(--app-surface-sunk);border:1px solid var(--app-border);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--app-fg-muted)}
.cl-r.in .av{background:var(--turf);border-color:var(--turf);color:#fff}
.cl-r .b{flex:1 1 auto;min-width:0}
.cl-r .nm{display:flex;align-items:center;gap:6px;font-weight:700;font-size:13.5px;color:var(--app-fg)}
.cl-r .nm .cl-tag{font-size:8px;padding:1px 6px}
.cl-r .sb{font-size:11.5px;color:var(--app-fg-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-r .sb.flag{color:var(--forge-deep);font-weight:600}
.cl-r.no .sb{text-decoration:line-through;color:var(--app-fg-subtle)}
.cl-r .acts{flex:0 0 auto;display:flex;gap:5px}
.cl-tick{width:44px;height:44px;border-radius:8px;border:1.5px solid var(--app-border-strong);background:var(--app-surface);color:var(--app-fg-subtle);display:flex;align-items:center;justify-content:center;cursor:pointer}
.cl-tick:hover{border-color:var(--turf);color:var(--turf-deep)}
.cl-tick.on{background:var(--turf);border-color:var(--turf);color:#fff}
.cl-tick.x:hover{border-color:var(--rust);color:var(--rust-deep)}
.cl-tick.x.on{background:var(--rust);border-color:var(--rust);color:#fff}
.cl-r .cl-flagdot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--forge)}
.cl-r .cl-flagdot.red{background:var(--rust)}

/* ---- talking points ---- */
.cl-talk{width:100%;text-align:left;background:var(--app-surface);border:1px solid var(--app-border);border-left:3px solid var(--forge);border-radius:8px;padding:12px 13px;margin-bottom:9px;cursor:pointer}
.cl-talk.red{border-left-color:var(--rust)}
.cl-talk:hover{border-color:var(--app-border-strong)}
.cl-talk .top{display:flex;align-items:center;gap:8px}
.cl-talk .who{font-family:var(--font-cond);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1}
.cl-talk .code{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;color:var(--app-fg-subtle);margin-left:auto}
.cl-talk .det{font-size:12px;font-weight:600;color:var(--app-fg);margin-top:7px;line-height:1.4}
.cl-talk .say{font-size:12.5px;color:var(--app-fg-muted);margin-top:6px;line-height:1.5;text-wrap:pretty}
.cl-talk .cta{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:9px;border-top:1px solid var(--app-border);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--electric-deep)}
.cl-talk.done{border-left-color:var(--turf);background:var(--turf-tint)}
.cl-talk.done .cta{color:var(--turf-deep);border-top-color:rgba(30,158,98,.25)}

/* ---- the after-class wrap ---- */
.cl-wrapcard{background:var(--app-surface);border:1px solid var(--app-border);border-radius:10px;padding:16px;margin-bottom:12px}
.cl-bars{display:flex;gap:4px;height:10px;border-radius:2px;overflow:hidden;margin:12px 0 8px}
.cl-bars i{border-radius:2px;background:var(--app-border-strong)}
.cl-bars i.in{background:var(--turf)}
.cl-bars i.no{background:var(--rust)}
.cl-bars i.un{background:var(--app-border-strong)}
.cl-key{display:flex;gap:14px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;color:var(--app-fg-muted)}
.cl-key span{display:inline-flex;align-items:center;gap:5px}
.cl-key i{width:8px;height:8px;border-radius:2px;display:inline-block}
.cl-big{font-family:var(--font-cond);font-weight:900;font-size:46px;line-height:1;color:var(--app-fg);letter-spacing:.01em}
.cl-big small{font-size:18px;color:var(--app-fg-subtle);margin-left:4px}

/* ---- sheet (own implementation: mounts in both apps) ---- */
.cl-sheet{position:absolute;inset:0;z-index:80;display:flex;align-items:flex-end}
.cl-sheet .scrim{position:absolute;inset:0;background:rgba(5,5,5,.55)}
.cl-sheet .panel{position:relative;width:100%;max-height:88%;overflow-y:auto;background:var(--app-bg);border-top:3px solid var(--electric);border-radius:12px 12px 0 0;padding:16px 15px calc(18px + env(safe-area-inset-bottom))}
.cl-sheet .hd{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}
.cl-sheet .hd .b{flex:1 1 auto;min-width:0}
.cl-sheet .hd .x{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:1px solid var(--app-border-strong);background:var(--app-surface);color:var(--app-fg-muted);display:flex;align-items:center;justify-content:center;cursor:pointer}
.cl-sheet .foot{display:flex;gap:8px;margin-top:16px}
.cl-sheet .foot button{flex:1 1 auto;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:6px;padding:13px;font-family:var(--font-cond);font-weight:900;font-size:14px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border:1px solid var(--electric);background:var(--electric);color:#fff}
.cl-sheet .foot button.ghost{background:none;color:var(--app-fg-muted);border-color:var(--app-border-strong)}
.cl-sheet .foot button.warn{background:var(--rust);border-color:var(--rust)}
.cl-sheet .foot button:disabled{opacity:.45;cursor:default}

/* ---- form bits (add / edit a class, a type) ---- */
.cl-lab{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);margin:14px 0 7px}
.cl-lab:first-child{margin-top:0}
.cl-opts{display:flex;flex-wrap:wrap;gap:6px}
.cl-opt{background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:6px;padding:9px 11px;font-family:var(--font-body);font-weight:600;font-size:12.5px;color:var(--app-fg);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.cl-opt:hover{border-color:var(--electric)}
.cl-opt.on{background:var(--electric);border-color:var(--electric);color:#fff}
.cl-opt.on .sub{color:rgba(255,255,255,.8)}
.cl-opt .sub{font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;color:var(--app-fg-subtle)}
.cl-opt.none{border-style:dashed}
.cl-in{width:100%;background:var(--app-surface);border:1px solid var(--app-border-strong);border-radius:6px;padding:11px 12px;font-family:var(--font-body);font-size:13.5px;color:var(--app-fg)}
.cl-in:focus{outline:none;border-color:var(--electric)}
.cl-del{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:12px;background:none;border:1px dashed var(--rust);border-radius:6px;padding:11px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--rust-deep);cursor:pointer}
.cl-del:hover{background:var(--rust-tint)}

/* ---- coverage ---- */
.cl-cov{display:flex;align-items:center;gap:11px;background:var(--app-surface);border:1px solid var(--app-border);border-radius:8px;padding:10px 11px;margin-bottom:7px}
.cl-cov .ld{flex:1 1 auto;min-width:0}
.cl-cov .nm{font-weight:700;font-size:13.5px;color:var(--app-fg)}
.cl-cov .sb{font-size:11.5px;color:var(--app-fg-muted);margin-top:2px}
/* the roster's commit button — ticks already saved, this closes the room off */
.cl-confirm{width:100%;margin-top:14px;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 16px;border:0;border-radius:6px;background:var(--electric);color:#fff;font:800 13px/1 var(--f-body,Inter),sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.cl-confirm:hover{background:var(--electric-hover,#1C77E0)}
.cl-confirm.warn{background:var(--forge)}
.cl-confirm span{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.cl-confirm em{font:600 11px/1 var(--f-body,Inter),sans-serif;letter-spacing:.04em;text-transform:none;opacity:.8}
/* a coverage row's second line WRAPS — the booked count is the number that says which
   uncovered class to fill first, so it must never be the bit that gets clipped */
.cl-row.gap .ln{white-space:normal;overflow:visible}
.cl-cov .bar{flex:0 0 76px;height:8px;border-radius:2px;background:var(--app-surface-sunk);overflow:hidden}
.cl-cov .bar i{display:block;height:100%;background:var(--electric)}
.cl-cov .v{flex:0 0 auto;font-family:var(--font-cond);font-weight:900;font-size:18px;color:var(--app-fg);line-height:1}

/* ---- CLIENT: the seat card in the planner ---- */
.cl-seat{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:#fff;border:1px solid var(--app-border);border-left:3px solid var(--t-crossfit);border-radius:8px;padding:12px 13px;margin:0 0 14px;cursor:pointer}
.cl-seat.done{border-left-color:var(--turf);background:var(--turf-tint)}
.cl-seat.miss{border-left-color:var(--rust);background:var(--rust-tint)}
.cl-seat.free{border-left-color:var(--app-border-strong);border-style:dashed}
.cl-seat .si{flex:0 0 auto;width:38px;height:38px;border-radius:50%;background:var(--t-crossfit);color:#fff;display:flex;align-items:center;justify-content:center}
.cl-seat.done .si{background:var(--turf)}
.cl-seat.miss .si{background:var(--rust)}
.cl-seat.free .si{background:var(--app-surface-sunk);color:var(--app-fg-subtle)}
.cl-seat .sb{flex:1 1 auto;min-width:0;display:block}
.cl-seat .st{display:block;font-family:var(--font-cond);font-weight:900;font-size:16px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg);line-height:1.05}
.cl-seat .sd{display:block;font-size:12px;color:var(--app-fg-muted);margin-top:4px;line-height:1.4}
.cl-seat .sa{flex:0 0 auto;font-family:var(--font-mono);font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--electric-deep)}

/* ---- CLIENT: attendance vs planned (Progress) ---- */
.cl-att{background:#fff;border:1px solid var(--app-border);border-radius:10px;padding:16px;margin-bottom:12px}
.cl-att .top{display:flex;align-items:flex-end;gap:12px}
.cl-att .top .b{flex:1 1 auto}
.cl-att .wks{display:flex;gap:7px;margin-top:15px}
.cl-att .wk{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:6px}
.cl-att .wk .col{width:100%;height:56px;background:var(--app-surface-sunk);border-radius:3px;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}
.cl-att .wk .col i{display:block;background:var(--turf)}
.cl-att .wk .col i.no{background:var(--rust)}
.cl-att .wk .lb{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.04em;color:var(--app-fg-subtle)}
.cl-att .wk .vv{font-family:var(--font-cond);font-weight:900;font-size:13px;color:var(--app-fg);line-height:1}
.cl-att .wk.cur .lb{color:var(--electric-deep)}
.cl-att .foot{margin-top:14px;padding-top:12px;border-top:1px solid var(--app-border);font-size:12px;line-height:1.5;color:var(--app-fg-muted)}
.cl-att .foot b{color:var(--app-fg)}

/* ---- COACH NOTES · the BHOTD 60-min class plan (.cp-*) — read inside a class.
   Same tier-3 ladder, electric as punctuation only, hard corners. ---- */
.cp-head{margin-bottom:14px}
.cp-hero{font-family:var(--font-cond);font-weight:900;font-size:30px;line-height:1;letter-spacing:.02em;text-transform:uppercase;color:var(--app-fg);margin-top:6px}
.cp-line{font-size:12.5px;line-height:1.45;color:var(--app-fg-muted);margin-top:6px}
.cp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cp-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--app-border-strong);border-radius:999px;padding:4px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;color:var(--app-fg);background:var(--app-surface)}
.cp-chip em{font-style:normal;color:var(--app-fg-subtle);text-transform:uppercase;font-size:8.5px;letter-spacing:.12em}
.cp-meta{margin-top:9px;font-size:11px;line-height:1.5;color:var(--app-fg-subtle)}
.cp-card{display:flex;gap:11px;background:var(--app-surface);border:1px solid var(--app-border);border-left:3px solid var(--app-border-strong);border-radius:8px;padding:13px 13px 14px;margin-bottom:10px}
.cp-card.hot{border-left-color:var(--electric,#075DC6)}
.cp-num{flex:0 0 auto;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--app-fg-subtle);padding-top:3px}
.cp-card.hot .cp-num{color:var(--electric-deep,#044399)}
.cp-b{flex:1;min-width:0}
.cp-t{font-family:var(--font-cond);font-weight:900;font-size:15px;letter-spacing:.05em;text-transform:uppercase;color:var(--app-fg);margin-bottom:7px}
.cp-lbl{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle);margin:11px 0 5px}
.cp-ul{margin:0;padding:0 0 0 16px;display:flex;flex-direction:column;gap:4px;font-size:12.5px;line-height:1.45;color:var(--app-fg)}
.cp-p{margin:0 0 4px;font-size:12.5px;line-height:1.5;color:var(--app-fg);text-wrap:pretty}
.cp-rows{display:flex;flex-direction:column}
.cp-row{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid var(--app-border);font-size:12px;color:var(--app-fg-muted)}
.cp-row:last-child{border-bottom:none}
.cp-row b{font-family:var(--font-mono);font-size:11px;color:var(--app-fg)}
.cp-scale{border-top:1px solid var(--app-border);padding:8px 0 2px;margin-top:8px}
.cp-sm{font-family:var(--font-cond);font-weight:900;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--app-fg);margin-bottom:4px}
.cp-tier{display:flex;gap:8px;font-size:12px;line-height:1.45;color:var(--app-fg-muted);padding:2px 0}
.cp-tier em{flex:0 0 52px;font-style:normal;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--electric-deep,#044399);padding-top:2px}
.cp-quote{border-left:3px solid var(--electric,#075DC6);background:var(--app-surface-sunk);padding:8px 11px;margin:0 0 7px;font-size:12.5px;line-height:1.5;color:var(--app-fg);border-radius:0 4px 4px 0}
.cp-drill{display:flex;gap:9px;padding:6px 0;border-bottom:1px solid var(--app-border)}
.cp-drill:last-of-type{border-bottom:none}
.cp-dn{flex:0 0 20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--app-fg);color:#fff;font-family:var(--font-mono);font-size:10px;border-radius:4px;margin-top:1px}
.cp-db{flex:1;min-width:0;font-size:12.5px;color:var(--app-fg)}
.cp-db em{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--app-fg-muted)}
.cp-note{font-size:11.5px;line-height:1.4;color:var(--app-fg-muted);margin-top:1px}
.cp-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cp-mv{margin-bottom:8px}
.cp-mv b{display:block;font-size:12px;color:var(--app-fg);margin-bottom:3px}
.cp-mv .cp-ul{font-size:11.5px;color:var(--app-fg-muted)}
@media (max-width:420px){.cp-cols{grid-template-columns:1fr}}

/* ---- head-coach side: notes in his hand, the hub, the day rail ---- */
.cp-pen{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--app-border-strong);border-radius:4px;background:var(--app-surface);color:var(--app-fg-muted);cursor:pointer}
.cp-pen:hover{color:var(--electric-deep,#044399);border-color:var(--electric,#075DC6)}
.cp-card .cp-t{display:flex;align-items:center;gap:8px}
/* [6.9] THE HEAD'S NOTE READS BEFORE THE CONTENT IT OVERRIDES — it used to be a
   dashed footnote 800px below its own heading. Block of its own now, above the
   generated text, in the electric the app uses for "this is the instruction". */
.cp-hnote{margin:0 0 10px;padding:9px 11px;border-left:3px solid var(--electric,#075DC6);border-radius:0 5px 5px 0;background:rgba(7,93,198,.07);font-size:13px;line-height:1.5;color:var(--app-fg)}
.cp-hnote em{display:block;font-style:normal;font-family:var(--font-mono);font-weight:700;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--electric-deep,#044399);margin-bottom:3px}
.cp-card.noted{border-left-color:var(--electric,#075DC6)}
/* [6.9] when this section happens, on the section itself */
.cp-when{margin-left:auto;flex:0 0 auto;font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;color:var(--app-fg-muted);white-space:nowrap}
.cp-when em{font-style:normal;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);margin-left:3px}
.cp-card.hot .cp-when{color:var(--electric-deep,#044399)}
.cp-card .cp-t .cp-pen{margin-left:8px}
.cp-notebox{margin:0 0 10px}
.cp-ta{width:100%;box-sizing:border-box;border:1px solid var(--app-border-strong);border-radius:4px;background:var(--app-surface);padding:8px 9px;font:inherit;font-size:12.5px;color:var(--app-fg);resize:vertical}
.cp-nb-row{display:flex;gap:6px;margin-top:6px}
.cp-mini{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--electric,#075DC6);background:var(--electric,#075DC6);color:#fff;border-radius:4px;padding:6px 11px;font-family:var(--font-cond);font-weight:700;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.cp-mini.ghost{background:var(--app-surface);color:var(--app-fg);border-color:var(--app-border-strong)}
.ph-bar{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}
.ph-state{border:1px solid var(--app-border-strong);border-left:3px solid var(--app-border-strong);border-radius:4px;background:var(--app-surface);padding:8px 11px;font-size:11.5px;line-height:1.45;color:var(--app-fg-muted);margin-bottom:12px}
.ph-state.ok{border-left-color:var(--turf,#1E9E62);color:var(--app-fg)}
.ph-row{position:relative;margin-bottom:2px}
.ph-row .prio[disabled]{opacity:.55;cursor:default}
/* [6.5] a static full-width button under the row — the absolute overlay
   (right:44px) sat on top of the row text */
.ph-gen{display:flex;width:100%;box-sizing:border-box;justify-content:center;margin:6px 0 4px}
.ph-days{display:flex;gap:6px;margin:2px 0 12px}
.ph-day{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:1px solid var(--app-border);border-radius:6px;background:var(--app-surface);padding:7px 0;cursor:pointer}
.ph-day .dw{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;color:var(--app-fg-subtle)}
.ph-day .dn{font-family:var(--font-cond);font-weight:900;font-size:15px;color:var(--app-fg)}
.ph-day.on{border-color:var(--electric,#075DC6);box-shadow:inset 0 0 0 1px var(--electric,#075DC6)}
.ph-day.on .dw{color:var(--electric-deep,#044399)}
/* [6.5] the day calendar: an electric dot = that day is on the board */
.ph-day .pd{width:5px;height:5px;background:transparent;margin-top:1px}
.ph-day .pd.on{background:var(--electric,#075DC6)}
.ph-day.none .dn{color:var(--app-border-strong)}
.ph-board{margin-bottom:12px}

/* ---- owner: staff & roles ---- */
.ow-roles{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.ow-role{border:1px solid var(--app-border-strong);border-radius:999px;background:var(--app-surface);color:var(--app-fg-muted);padding:4px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.ow-role.on{border-color:var(--electric,#075DC6);background:var(--electric-tint,#E3EEFB);color:var(--electric-deep,#044399);font-weight:700}
.ow-seat{align-items:flex-start}
.ow-add .ow-in{width:100%;box-sizing:border-box;border:1px solid var(--app-border-strong);border-radius:4px;background:var(--app-surface);padding:9px 10px;font:inherit;font-size:13px;color:var(--app-fg)}
.ow-add .ow-roles{margin-top:9px}
.ow-add-row{display:flex;gap:6px;margin-top:11px}
/* the staff file + guided create flow (Aug 2026 staff setup) */
.ow-open{display:block;width:100%;text-align:left;border:0;background:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;position:relative}
.ow-open .st,.ow-open .sd{display:block}
.ow-open .chev{position:absolute;right:0;top:2px;color:var(--app-fg-subtle,#8794A1)}
.ow-flag{display:block;margin-top:4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase}
.ow-flag.warn{color:#976F0F}
.ow-flag.bad{color:#C4392E}
.ow-cert{display:flex;align-items:center;gap:9px;padding:9px 0;border-bottom:1px solid var(--app-border,#DDE3E9)}
.ow-cert.last{border-bottom:none;padding-bottom:2px}
.ow-cert .k{flex:1;font-size:12.5px;color:var(--app-fg,#12161A)}
.ow-cert .v{font-size:12px;color:var(--app-fg-muted,#5B6672)}
.ow-cert .v.bad{color:#C4392E;font-weight:700}
.ow-cert .v.warn{color:#976F0F;font-weight:700}
.ow-cert .v.none{color:#976F0F}
.ow-dot{flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--app-border-strong,#C3CCD6)}
.ow-dot.ok{background:#1E9E62}
.ow-dot.warn{background:#D9A21B}
.ow-dot.bad{background:#C4392E}
.ow-dot.none{background:transparent;box-shadow:inset 0 0 0 1.5px #D9A21B}
.ow-dot.off{background:transparent;box-shadow:inset 0 0 0 1.5px var(--app-border-strong,#C3CCD6)}
.ow-rolerow{display:flex;gap:11px;align-items:flex-start;width:100%;text-align:left;box-sizing:border-box;border:1px solid var(--app-border,#DDE3E9);border-radius:6px;background:var(--app-surface,#fff);padding:12px 13px;margin-bottom:8px;font:inherit;cursor:pointer}
.ow-rolerow .tick{flex:0 0 20px;height:20px;border:1.5px solid var(--app-border-strong,#C3CCD6);border-radius:4px;display:flex;align-items:center;justify-content:center;color:#fff;margin-top:1px}
.ow-rolerow.on{border-color:var(--electric,#075DC6);box-shadow:inset 0 0 0 1px var(--electric,#075DC6)}
.ow-rolerow.on .tick{background:var(--electric,#075DC6);border-color:var(--electric,#075DC6)}
.ow-rolerow .rb{flex:1;min-width:0}
.ow-rolerow .rb b{display:block;font-size:13px;letter-spacing:.01em}
.ow-rolerow .rb em{display:block;font-style:normal;font-size:11.5px;line-height:1.45;color:var(--app-fg-muted,#5B6672);margin-top:2px}
.ow-stamp{display:inline-block;margin-left:7px;font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg-subtle,#8794A1);border:1px solid var(--app-border,#DDE3E9);border-radius:999px;padding:1.5px 7px;vertical-align:1px}
.ow-stamp.need{color:var(--electric-deep,#044399);border-color:var(--electric,#075DC6);background:var(--electric-tint,#E3EEFB)}
.ow-wizhead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:13px}

/* ---- real phone: the mock's 392px bezel is a desktop affordance only ---- */
@media (max-width:540px){
  .cl-sheet .panel{max-height:92%}
  .cl-days button .dn{font-size:16px}
}

/* THE WEEK NAV ON THE COACH'S CLASSES PAGE [6.8c · 30 Aug 2026]
   The day strip could only ever reach the seven days of the week it opened on;
   this is the pager that was missing. It reuses .bw-wknav (board.css) so the
   coach app has ONE week pager, not two that look different — but its label is
   a BUTTON here (the way back to today, so there is no second control for it)
   and board.css styles .lb as a div. The button chrome comes off in this file,
   scoped to .cl-page, so the head's programming hub is untouched. */
.cl-page .bw-wknav{margin-bottom:12px}
.cl-page .bw-wknav button.lb{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cl-page .bw-wknav button.lb:disabled{cursor:default}
.cl-page .bw-wknav button.lb:not(:disabled):hover .rl{color:var(--electric)}

/* COACH NOTES [6.8h · 31 Aug 2026] — two things the floor asked for.
   The general warm-up now carries a rep/time dose per movement; the movement
   holds the line and the dose sits hard right so a coach reads down one column
   while calling the room. And the FINAL PREP closes the specific warm-up as its
   own row — it belongs to the whole hour, not to one lift's drill list, so it is
   marked out rather than numbered in with the drills. */
.cp-gw li{display:flex;align-items:baseline;gap:10px}
.cp-gw li b{flex:1 1 auto;min-width:0;font-weight:600}
.cp-gw li em{flex:0 0 auto;font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--app-fg-muted)}
.cp-build{border-top:1px solid var(--app-border-strong);border-bottom:none;padding-top:9px;margin-top:3px}
.cp-build .cp-dn{background:var(--electric);color:#fff}
.cp-build .cp-db b{color:var(--electric)}
/* a plan built by an older prompt says so, and says what to do about it [6.8i] */
.cp-stale{margin-top:8px;padding:8px 10px;background:rgba(217,162,27,.13);border-left:3px solid var(--forge);font-size:11.5px;line-height:1.45;color:var(--app-fg)}

/* COACH NOTES · THE FLOOR PAGER (.cpf-*) — IBClassPlanFloor (class-plan-floor.jsx):
   the coach's in-class read of the published plan. One section per screen, swipe
   left/right, PREP colour-blocked, head-coach notes loud. Head edit view keeps .cp-*. */
.cpf-head{margin-bottom:10px}
.cpf-hero{font-family:var(--font-cond);font-weight:900;font-size:22px;line-height:1.05;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg)}
.cpf-line{font-size:12px;line-height:1.5;color:var(--app-fg-muted);margin-top:2px}
.cpf-vp{position:relative;overflow:hidden;touch-action:pan-y;height:clamp(380px,calc(100dvh - 340px),620px)}
.cpf-trk{display:flex;height:100%;transition:transform 240ms cubic-bezier(.2,.7,.2,1);will-change:transform}
.cpf-trk.drag{transition:none}
.cpf-pn{flex:0 0 100%;height:100%;overflow-y:auto;overscroll-behavior:contain;padding:2px 2px 18px;box-sizing:border-box}
/* [6.9b] ROOM FOR THE PINNED RAIL. The viewport clamp stops shrinking at its 380px
   floor once the screen is under ~720px tall, so from there down the page overflows
   and the sticky rail floats UP over the bottom of the pane — 152px of it on a very
   short screen. Without a gutter the tail of a long section would sit under the rail
   permanently, unreachable. Only short screens need it; a tall phone fits without
   overflow and keeps the tidy 18px. 800px, not 720px, because the 340px chrome offset
   is an estimate and being early here costs nothing but a little scroll. */
@media (max-height:800px){.cpf-pn{padding-bottom:96px}}
.cpf-win{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.cpf-win .mm{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;font-weight:600;color:var(--electric-deep,#044399)}
.cpf-win .ph2{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-fg-subtle)}
.cpf-win.prep{background:#E3EDF9;border:1px solid #C5D8EF;border-radius:6px;padding:6px 10px;margin-bottom:4px}
.cpf-win.prep .ph2{color:var(--electric-deep,#044399)}
.cpf-sec{display:flex;align-items:baseline;gap:10px;margin:4px 0 12px;border-bottom:2px solid var(--app-fg);padding-bottom:9px}
.cpf-sec .n{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;color:var(--app-fg-subtle)}
.cpf-sec .t{font-family:var(--font-cond);font-weight:900;font-size:26px;line-height:1;letter-spacing:.02em;text-transform:uppercase;color:var(--app-fg)}
.cpf-lead{font-size:13.5px;line-height:1.55;color:var(--app-fg-muted);margin:0 0 10px;text-wrap:pretty}
.cpf-lbl{font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--app-fg-subtle);margin:14px 0 6px}
.cpf-pn .cpf-lbl:first-of-type{margin-top:0}
.cpf-ul{margin:0;padding-left:17px;display:flex;flex-direction:column;gap:6px;font-size:13.5px;line-height:1.5;color:var(--app-fg)}
.cpf-ul li::marker{color:var(--app-fg-subtle)}
.cpf-mv b{display:block;font-family:var(--font-cond);font-weight:900;font-size:16px;letter-spacing:.04em;text-transform:uppercase;margin:10px 0 5px;color:var(--app-fg)}
.cpf-q{border-left:3px solid var(--electric,#075DC6);background:var(--app-surface);border-top:1px solid var(--app-border);border-right:1px solid var(--app-border);border-bottom:1px solid var(--app-border);padding:10px 12px;margin-bottom:8px;font-size:14px;line-height:1.5;border-radius:0 6px 6px 0;font-weight:500;color:var(--app-fg)}
.cpf-hn{margin:0 0 14px;font-size:15px;line-height:1.5;font-weight:600;color:#fff;background:#1A1A1A;border-left:4px solid var(--electric,#075DC6);border-radius:0 8px 8px 0;padding:12px 14px}
.cpf-hn em{font-style:normal;font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;display:block;margin-bottom:4px;color:#6EB6FF}
.cpf-scale{background:var(--app-surface);border:1px solid var(--app-border);border-radius:8px;padding:11px 12px;margin-bottom:8px}
.cpf-scale .m{font-family:var(--font-cond);font-weight:900;font-size:17px;letter-spacing:.03em;text-transform:uppercase;margin-bottom:5px;color:var(--app-fg)}
.cpf-tier{display:flex;gap:10px;font-size:13px;line-height:1.5;color:var(--app-fg-muted);padding:3px 0}
.cpf-tier em{flex:0 0 62px;font-style:normal;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--electric-deep,#044399);padding-top:3px}
.cpf-drill{display:flex;gap:11px;padding:9px 0;border-bottom:1px solid var(--app-border)}
.cpf-drill:last-of-type{border-bottom:none}
.cpf-drill .dn{flex:0 0 22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--app-fg);color:#fff;font-family:var(--font-mono);font-size:11px;border-radius:4px;margin-top:1px}
.cpf-drill .db{flex:1;font-size:13.5px;line-height:1.45;color:var(--app-fg)}
.cpf-drill .db b{font-family:var(--font-cond);font-weight:900;font-size:15px;letter-spacing:.04em;text-transform:uppercase}
.cpf-drill .db em{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--app-fg-muted)}
.cpf-drill .db .nt{font-size:12.5px;color:var(--app-fg-muted);margin-top:1px}
.cpf-row{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--app-border);font-size:13px;color:var(--app-fg-muted)}
.cpf-row:last-child{border-bottom:none}
.cpf-row b{font-family:var(--font-mono);font-size:12px;color:var(--app-fg)}
.cpf-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);background:#0A0A0A;color:#fff;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;padding:6px 14px;border-radius:999px;opacity:.92;pointer-events:none}
/* [6.9b] THE RAIL STAYS ON SCREEN THE WHOLE WAY THROUGH. It already sits OUTSIDE
   the swipe pane, so it cannot scroll away *within* the component — but the class
   page itself scrolls (class header + tab strip + the plan hero sit above it), so
   on a short phone the rail could still be pushed below the fold, which defeats
   the point of a jump rail: reachable at any moment mid-class without hunting.
   Sticky pins it to the bottom of the viewport for as long as the plan is on
   screen. It needs its own ground (it now sits OVER the pane, not under it) and
   the app's standard safe-area pad so it clears the iPhone home indicator. */
.cpf-rail{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--app-border);position:sticky;bottom:0;z-index:2;background:var(--app-bg);padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}
.cpf-grp{display:flex;flex-direction:column;gap:3px}
.cpf-grp.prep{flex:3;background:#E3EDF9;border:1px solid #C5D8EF;border-radius:8px;padding:5px 6px 6px}
.cpf-grp.hour{flex:5;padding-left:2px}
.cpf-grp .gt{font-family:var(--font-mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--app-fg-subtle);padding-left:1px}
.cpf-grp.prep .gt{color:var(--electric-deep,#044399)}
.cpf-grp .st{display:grid;gap:4px}
.cpf-grp.prep .st{grid-template-columns:repeat(3,1fr)}
.cpf-grp.hour .st{grid-template-columns:repeat(5,1fr)}
.cpf-stp{border:1px solid var(--app-border-strong);border-radius:6px;padding:6px 2px 5px;text-align:center;cursor:pointer;background:var(--app-bg)}
.cpf-stp .n{display:block;font-family:var(--font-mono);font-size:9px;color:var(--app-fg-subtle)}
.cpf-stp .w{display:block;font-family:var(--font-cond);font-weight:700;font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--app-fg-muted);margin-top:1px}
.cpf-grp.prep .cpf-stp{background:#fff;border-color:#C5D8EF}
.cpf-grp.prep .cpf-stp .n{color:var(--electric-deep,#044399)}
.cpf-stp.on{background:var(--app-fg);border-color:var(--app-fg)}
.cpf-grp.prep .cpf-stp.on{background:var(--electric-deep,#044399);border-color:var(--electric-deep,#044399)}
.cpf-stp.on .n,.cpf-stp.on .w{color:#fff}
/* [6.9a on port] the general warm-up carries its dose (6.8h) */
.cpf-gw li{display:flex;align-items:baseline;gap:10px}
.cpf-gw li b{flex:1 1 auto;min-width:0;font-weight:600}
.cpf-gw li em{flex:0 0 auto;font-style:normal;font-family:var(--font-mono);font-size:12px;color:var(--app-fg-muted)}
/* [6.9a on port] the final prep (6.8h) — marked out from the numbered drills */
.cpf-drill.build{border-top:1px solid var(--app-border-strong);border-bottom:none;padding-top:11px;margin-top:3px}
.cpf-drill.build .dn{background:var(--electric);color:#fff}
.cpf-drill.build .db b{color:var(--electric)}

/* [6.21] THE HEAD WRITES HIS NOTE IN THE PAGER. He reviews in the same swipe
   view the floor reads, so the pen lives on the section itself. The note block
   keeps its dark-steel treatment; the editor takes its place while open. */
.cpf-pen{display:block;width:100%;text-align:left;margin:0 0 14px;padding:9px 12px;border:1px dashed var(--app-border-strong);border-radius:6px;background:none;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--app-fg-subtle);cursor:pointer;}
.cpf-pen:hover{border-color:var(--electric);color:var(--electric-deep,#044399);}
.cpf-hn .cpf-pen{width:auto;margin:9px 0 0;padding:5px 10px;border-style:solid;border-color:rgba(255,255,255,.28);color:#9FB6D9;}
.cpf-hn .cpf-pen:hover{border-color:#6EB6FF;color:#6EB6FF;}
.cpf-hn.edit{background:#1A1A1A;border-left:4px solid var(--electric,#075DC6);border-radius:0 8px 8px 0;padding:12px 14px;margin:0 0 14px;}
.cpf-ta{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid rgba(255,255,255,.22);border-radius:5px;background:#0F0F0F;padding:9px 10px;font:inherit;font-size:14px;line-height:1.45;color:#fff;resize:vertical;}
.cpf-ta:focus{outline:none;border-color:#6EB6FF;}
.cpf-nb{display:flex;gap:7px;margin-top:9px;}
.cpf-mini{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--electric,#075DC6);background:var(--electric,#075DC6);color:#fff;border-radius:5px;padding:7px 13px;font-family:var(--font-cond);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;}
.cpf-mini.ghost{background:none;color:#C9CDD3;border-color:rgba(255,255,255,.28);}

/* v7.0 · THE WEEK STRIP — the week arrows Cast draws (.cl-wk) (lifted from the v7.0 design bundle classes.css) */
.cl-wk{display:flex;align-items:center;gap:8px;margin:0 0 9px}
.cl-wk .nv{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;background:var(--app-surface);border:1px solid var(--app-border);border-radius:7px;color:var(--app-fg-muted);font-size:16px;line-height:1}
.cl-wk .nv:hover{border-color:var(--electric);color:var(--electric)}
.cl-wk .lb{flex:1 1 auto;text-align:center;font-family:var(--font-cond);font-weight:900;font-size:13.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--app-fg);white-space:nowrap}
.cl-wk .tw{flex:0 0 auto;background:none;border:0;padding:0 2px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--electric)}
.cl-wk .tw.off{visibility:hidden}
