/* Layout: gym whiteboard. Dark band with a pulse line on top, athlete chips, test cards side by side, session strip full width. */
:root{
  --bg:#eef1f4; --surface:#ffffff; --ink:#15202b; --muted:#5b6977; --line:#d6dde4; --soft:#e7ecf1;
  --band:#15202b; --band-fg:#f2f5f8; --band-muted:#9fb0bf;
  --pulse:#d23f2e; --long:#1d7486; --test:#3c4b92; --w1:#a3b0bd; --good:#2c8449; --bad:#b4532a;
  --display:"Barlow Condensed","Arial Narrow",system-ui,sans-serif;
  --body:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0e141a; --surface:#17202a; --ink:#e7ecf1; --muted:#95a3b0; --line:#2a3743; --soft:#202b36;
  --band:#090e13; --band-fg:#eef2f6; --band-muted:#8797a6;
  --pulse:#ff6b57; --long:#4fb6c8; --test:#8e9cff; --w1:#56677a; --good:#5cc47f; --bad:#f08a5d; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0e141a; --surface:#17202a; --ink:#e7ecf1; --muted:#95a3b0; --line:#2a3743; --soft:#202b36;
  --band:#090e13; --band-fg:#eef2f6; --band-muted:#8797a6;
  --pulse:#ff6b57; --long:#4fb6c8; --test:#8e9cff; --w1:#56677a; --good:#5cc47f; --bad:#f08a5d; color-scheme:dark}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45}
*{box-sizing:border-box}
.num{font-variant-numeric:tabular-nums}
.wrap{max-width:1080px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.top{background:var(--band);color:var(--band-fg);position:relative;overflow:hidden}
.top .wrap{padding-block:22px 0;position:relative}
.ecg{position:absolute;right:0;top:8px;width:min(520px,70%);height:70px;opacity:.55;pointer-events:none}
.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--band-muted);font-weight:600}
h1{font-family:var(--display);font-weight:700;font-size:clamp(30px,6vw,46px);line-height:1;margin:6px 0 18px;letter-spacing:.01em;text-wrap:balance}
.tabs{display:flex;gap:4px;overflow-x:auto}
.tab{appearance:none;border:0;background:transparent;color:var(--band-muted);font:600 15px var(--body);padding:10px 14px 12px;border-bottom:3px solid transparent;cursor:pointer;white-space:nowrap}
.tab[aria-selected="true"]{color:var(--band-fg);border-bottom-color:var(--pulse)}
.tab:focus-visible,.chip:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--pulse);outline-offset:2px}
main.wrap{padding-block:20px 48px;display:grid;gap:18px}
.banner{background:var(--soft);border-radius:10px;padding:10px 14px;font-size:14px;color:var(--muted)}
.banner b{color:var(--ink)}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.chip{appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 14px var(--body);padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip.sm{font-size:13px;padding:5px 11px}
.hero{display:grid;grid-template-columns:1fr;gap:14px;align-items:end}
@media (min-width:760px){.hero{grid-template-columns:1.1fr 2fr}}
.hero h2{font-family:var(--display);font-size:clamp(34px,7vw,56px);line-height:.95;margin:0;text-wrap:balance}
.hero .sub{color:var(--muted);font-size:14px;margin-top:4px}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}
.stat .k{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.stat .v{font-family:var(--display);font-size:clamp(26px,5vw,38px);font-weight:700;line-height:1.05;margin-top:4px}
.stat .s{font-size:13px;color:var(--muted)}
@media (max-width:520px){.stats{grid-template-columns:1fr 1fr}.stats .stat:last-child{grid-column:1/-1}}
.up{color:var(--good)} .down{color:var(--bad)}
.grid2{display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:820px){.grid2{grid-template-columns:1fr 1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;min-width:0}
.card h3{font-family:var(--display);font-size:24px;margin:0;line-height:1.1}
.card .desc{color:var(--muted);font-size:13.5px;margin:2px 0 14px}
.cmp{display:grid;gap:10px}
.cmp-row{display:grid;grid-template-columns:62px 1fr;gap:10px;align-items:center}
.cmp-row .lab{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bar{height:30px;border-radius:6px;background:var(--soft);position:relative;overflow:hidden}
.bar i{position:absolute;inset:0 auto 0 0;border-radius:6px;transition:width .5s ease}
.bar span{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-weight:700;font-size:14px;color:var(--ink);white-space:nowrap}
.bar i.w1{background:var(--w1)} .bar i.w5{background:var(--pulse)}
.bar i.w1 + span,.bar i.w5 + span{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25)}
.machine{display:grid;gap:6px;padding:10px 0;border-top:1px solid var(--line)}
.machine:first-of-type{border-top:0;padding-top:0}
.machine-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.machine-head b{font-size:15px}
.delta{font-weight:700;font-size:14px}
.mini{width:100%;border-collapse:collapse;margin-top:14px;font-size:14px}
.mini th,.mini td{text-align:right;padding:6px 4px;border-top:1px solid var(--line)}
.mini th:first-child,.mini td:first-child{text-align:left;color:var(--muted);font-weight:500}
.mini thead th{border-top:0;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.zones{display:flex;gap:3px;margin-top:14px}
.zone{flex:1;border-radius:6px;padding:6px 4px;text-align:center;font-size:11.5px;line-height:1.2;color:var(--ink);background:var(--soft);min-width:0}
.zone b{display:block;font-size:12px}
.zone:nth-child(1){box-shadow:inset 0 -4px 0 #8fa4b8}.zone:nth-child(2){box-shadow:inset 0 -4px 0 var(--long)}.zone:nth-child(3){box-shadow:inset 0 -4px 0 var(--good)}.zone:nth-child(4){box-shadow:inset 0 -4px 0 #d99a2b}.zone:nth-child(5){box-shadow:inset 0 -4px 0 var(--pulse)}
.sess-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:flex-start}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12.5px;color:var(--muted);margin:10px 0 4px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.sw{width:10px;height:10px;border-radius:50%;display:inline-block}
.chartbox{width:100%;overflow:hidden}
.chartbox svg{display:block;width:100%;height:auto}
.chartbox text{font-family:var(--body)}
.hit{cursor:pointer}
.detail{margin-top:12px;background:var(--soft);border-radius:10px;padding:12px 14px;display:flex;flex-wrap:wrap;gap:8px 22px;align-items:baseline}
.detail .t{font-family:var(--display);font-size:20px;font-weight:700;width:100%}
.detail .m{font-size:14px;color:var(--muted)}
.detail .m b{color:var(--ink);font-size:18px}
.trend{font-size:14px;margin-top:10px;color:var(--muted)}
.trend b{color:var(--ink)}
.empty{color:var(--muted);font-size:14px;padding:18px 0}
.board{display:grid;gap:8px}
.brow{display:grid;grid-template-columns:22px minmax(80px,140px) 1fr 64px;gap:10px;align-items:center;cursor:pointer;border-radius:8px;padding:2px 0}
.brow:hover .bname{text-decoration:underline}
.brow .rank{font-family:var(--display);font-weight:700;color:var(--muted);font-size:17px}
.brow .bname{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brow .bv{text-align:right;font-weight:700}
.btrack{height:12px;background:var(--soft);border-radius:999px;overflow:hidden}
.btrack i{display:block;height:100%;border-radius:999px;background:var(--pulse)}
.btrack.long i{background:var(--long)}
.dots{display:grid;gap:6px}
.drow{display:grid;grid-template-columns:minmax(80px,140px) 1fr 40px;gap:10px;align-items:center;font-size:14px}
.drow .dd{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px;max-width:340px}
.dd i{aspect-ratio:1;border-radius:50%;background:var(--soft);border:1px solid var(--line);max-width:22px}
.dd i.on.t{background:var(--test);border-color:var(--test)} .dd i.on.h{background:var(--pulse);border-color:var(--pulse)} .dd i.on.l{background:var(--long);border-color:var(--long)}
.coach-top{display:flex;flex-wrap:wrap;gap:12px;align-items:end;justify-content:space-between}
label.f{display:grid;gap:4px;font-size:12.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
select,input{font:500 15px var(--body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.tablewrap{overflow-x:auto;margin-top:14px}
table.entry{border-collapse:collapse;width:100%;min-width:520px}
table.entry th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;padding:6px 6px;font-weight:600;white-space:nowrap}
table.entry td{padding:4px 6px;border-top:1px solid var(--line)}
table.entry td:first-child{font-weight:600;white-space:nowrap}
table.entry input{width:100%;min-width:64px;font-variant-numeric:tabular-nums}
.btn{appearance:none;border:0;border-radius:10px;background:var(--pulse);color:#fff;font:700 15px var(--body);padding:11px 18px;cursor:pointer}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn[disabled]{opacity:.6;cursor:wait}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}
.status{font-size:14px;color:var(--muted)}
.names{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-top:12px}
.names label{display:grid;gap:3px;font-size:12px;color:var(--muted)}
.links{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px 16px;font-size:14px;margin-top:10px}
.links code{background:var(--soft);padding:1px 6px;border-radius:5px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;max-width:calc(100% - 32px);z-index:20}
@media (prefers-reduced-motion:reduce){.bar i{transition:none}}
.toprow{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.logout{appearance:none;background:transparent;border:1px solid var(--band-muted);color:var(--band-fg);border-radius:999px;font:600 13px var(--body);padding:5px 12px;cursor:pointer;position:relative;z-index:1}
.login{max-width:440px;width:100%;margin:12px auto 0}
.login-form{display:grid;gap:14px}
.login-form select,.login-form input[type=password]{width:100%;font-size:17px;padding:11px 12px}
.login-form input[type=password]{letter-spacing:.3em}
.remember{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}
.remember input{width:18px;height:18px;padding:0}
.err{color:var(--bad);font-weight:600;font-size:14px;margin:12px 0 0}
.nameblock{display:grid;gap:6px;background:var(--soft);border-radius:10px;padding:8px}
.nameblock label{display:grid;gap:3px;font-size:12px;color:var(--muted)}
.nameblock input{width:100%}
.machine.total{border-top:2px solid var(--ink);margin-top:4px;padding-top:12px}
.machine.total .machine-head b{font-family:var(--display);font-size:20px}
.machine.total .bar{height:36px}
.machine.total .bar span{font-size:16px}
.stages{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.stages-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-bottom:6px}
.stages-head b{font-size:15px}
.stage-table{margin-top:10px;font-size:14px}
.stage-table summary{cursor:pointer;color:var(--muted);font-weight:600}
table.entry input.stages-in{min-width:220px}
:root{--z1:#a9b6c3;--z2:#3b9ad6;--z3:#62b544;--z4:#e8a032;--z5:#d8365e}
.zc1{background:var(--z1)}.zc2{background:var(--z2)}.zc3{background:var(--z3)}.zc4{background:var(--z4)}.zc5{background:var(--z5)}
.zones .zone:nth-child(1){box-shadow:inset 0 -4px 0 var(--z1)}.zones .zone:nth-child(2){box-shadow:inset 0 -4px 0 var(--z2)}.zones .zone:nth-child(3){box-shadow:inset 0 -4px 0 var(--z3)}.zones .zone:nth-child(4){box-shadow:inset 0 -4px 0 var(--z4)}.zones .zone:nth-child(5){box-shadow:inset 0 -4px 0 var(--z5)}
.zbar{display:flex;height:20px;border-radius:6px;overflow:hidden;background:var(--soft);min-width:0}
.zbar.big{height:28px}
.zbar i{display:flex;align-items:center;justify-content:center;height:100%;min-width:0}
.zbar i span{font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.35);white-space:nowrap}
.zbar.big i span{font-size:12.5px}
.zdetail{width:100%;display:grid;gap:8px}
.zlegend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--muted)}
.zlegend span{display:inline-flex;align-items:center;gap:5px}
.zlegend b{color:var(--ink)}
.zones-over{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.zrows{display:grid;gap:7px;margin-top:8px}
.zrow{display:grid;grid-template-columns:78px 1fr 54px;gap:10px;align-items:center;cursor:pointer;font-size:13px}
.zrow .zt{text-align:right;color:var(--muted)}
table.entry input.zone-in{min-width:76px}
table.entry input.auto{color:var(--muted);font-style:italic}
table.entry th small{display:block;font-size:10.5px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted);opacity:.85}
table.entry.steps th{text-align:center}
table.entry input.step-in{min-width:0;width:48px;padding:7px 4px;text-align:center}
table.entry td small.done{display:block;font-weight:600;color:var(--muted);font-size:12px;white-space:nowrap}
table.entry th:first-child,table.entry td:first-child{position:sticky;left:0;background:var(--surface);z-index:1;box-shadow:1px 0 0 var(--line)}
.mini thead th{white-space:nowrap}
.loading{text-align:center;padding:48px 0;color:var(--muted);font-weight:600}
.coach-login{max-width:440px;width:100%;margin:4px auto 0;display:flex;justify-content:center}
.coach-login .btn{width:100%}
.login-form input.code-in{width:100%;font-size:22px;padding:11px 12px;letter-spacing:.18em;text-transform:uppercase;font-variant-numeric:tabular-nums;text-align:center}
.btn.sm{padding:7px 11px;font-size:13px;border-radius:8px}
.btn.ghost.danger{color:var(--bad);border-color:var(--bad)}
table.entry.codes td.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;letter-spacing:.06em;white-space:nowrap}
table.entry.codes .row-actions{display:flex;gap:6px;white-space:nowrap}
table.entry.codes input{min-width:160px}
.add-athletes{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.add-athletes textarea{width:100%;font:500 15px var(--body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;resize:vertical}
.vs-legend{display:flex;gap:14px;font-size:13px;color:var(--muted);margin-bottom:10px}
.vs-legend span{display:inline-flex;align-items:center;gap:5px}
.vs-rows{display:grid;gap:14px}
.vs-row{display:grid;gap:5px}
.vs-l{font-size:14px;font-weight:600}
.vs-bar{position:relative;height:24px;background:var(--soft);border-radius:6px;overflow:hidden}
.vs-bar i{position:absolute;inset:0 auto 0 0;border-radius:6px}
.vs-bar i.you{background:var(--pulse)}.vs-bar i.grp{background:var(--w1)}
.vs-bar span{position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:13px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.3)}
.zlab{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:-4px}
.team-line{width:100%}
.dash{display:inline-block;width:16px;border-top:2.5px dashed var(--muted)}
.coach-sel{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.chip.remote small{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--long);margin-left:2px}
.chip.remote[aria-pressed="true"] small{color:var(--bg)}
.card.self{max-width:620px;width:100%;margin:0 auto}
.card.self > .f{margin-bottom:12px}
.card.self select{width:100%}
.self-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-top:6px}
.self-grid input{width:100%;font-size:18px;padding:10px 12px;font-variant-numeric:tabular-nums}
.hint{font-size:13.5px;color:var(--muted);background:var(--soft);border-radius:8px;padding:8px 10px;margin:4px 0 10px}
.self-zones{margin-top:14px}
.self-zones summary{cursor:pointer;font-weight:600;color:var(--muted);font-size:14px}
table.entry.codes select{min-width:180px}
.add-athletes .actions select{min-width:200px}
.fhint{display:block;font-size:12.5px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);margin-top:-1px;line-height:1.35}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand-logo{height:34px;width:auto;display:block;flex:none}
@media (max-width:420px){.brand-logo{height:28px}.brand .eyebrow{font-size:11px}}
.coach-login{flex-direction:column;gap:10px;align-items:stretch}
.linkbtn{appearance:none;background:none;border:0;color:var(--muted);font:600 14px var(--body);text-decoration:underline;cursor:pointer;padding:6px}
.pw-form{display:grid;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px}
.pw-form input{width:100%;font-size:17px;padding:10px 12px}
.ok{color:var(--good);font-weight:600;font-size:14px;margin:12px 0 0}
.share-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;background:var(--band);color:var(--band-fg);border-radius:14px;padding:14px 18px}
.share-bar b{display:block;font-family:var(--display);font-size:20px}
.share-bar span{font-size:13.5px;color:var(--band-muted)}
.share-modal{position:fixed;inset:0;z-index:30;background:rgba(5,9,13,.72);display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.share-box{background:var(--surface);color:var(--ink);border-radius:16px;padding:18px;width:100%;max-width:460px;max-height:100%;overflow:auto;display:grid;gap:12px}
.share-head{display:flex;justify-content:space-between;align-items:center}
.share-head h3{font-family:var(--display);font-size:24px;margin:0}
.share-x{appearance:none;border:0;background:var(--soft);color:var(--ink);width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer}
.share-opts{display:grid;gap:8px}
.share-prev{position:relative;border-radius:12px;overflow:hidden;background:#0b1117;display:flex;justify-content:center;min-height:200px}
.share-prev img{display:block;max-height:52vh;width:auto;max-width:100%}
.share-prev.checker{background-color:#d9dee3;background-image:linear-gradient(45deg,#b9c1c9 25%,transparent 25%),linear-gradient(-45deg,#b9c1c9 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#b9c1c9 75%),linear-gradient(-45deg,transparent 75%,#b9c1c9 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0}
#share-wait{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#9fb0bf;font-weight:600}
.share-box .btn{width:100%}
.zone-toggle{width:100%;order:3;margin-top:2px}
.plan-pub{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-top:14px}
.plan-week.is-pub{border-color:var(--pulse);box-shadow:0 0 0 1px var(--pulse)}
.plan-wh{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.pub-pill{background:var(--pulse);color:#fff;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:3px 10px}
.plan-grid{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:760px){.plan-grid{grid-template-columns:1fr 1fr}}
.plan-item{display:grid;gap:8px;min-width:0}
.plan-lab{display:flex;align-items:center;gap:7px;font-weight:700;font-size:14px}
.plan-item input,.plan-item textarea{width:100%;font:500 15px var(--body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 11px}
.plan-item textarea{resize:vertical;line-height:1.45}
.plan-item .linkbtn{justify-self:start;padding:0}
.plan-save{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom,0px));display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 14px;box-shadow:0 6px 20px rgba(0,0,0,.12);z-index:5}
.week-card{display:grid;gap:12px}
.eyebrow-dark{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--pulse)}
.wk-item{display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:start}
.wk-tag{color:#fff;font-weight:700;font-size:13px;border-radius:8px;padding:6px 0;text-align:center}
.wk-body b{display:block;font-size:16px;margin-bottom:3px}
.wk-body div{font-size:14.5px;line-height:1.5;color:var(--ink)}
.plan-show{background:var(--soft);border-radius:10px;padding:10px 12px;margin:4px 0 10px;font-size:14.5px;line-height:1.5}
.plan-show b{display:block;margin-bottom:3px}
.plan-copy{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.plan-copy .btn.sm{padding:9px 14px}
.img-ctl{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.img-add{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--line);border-radius:8px;padding:8px 12px;font-weight:600;font-size:14px;color:var(--muted);cursor:pointer}
.img-add:hover{border-color:var(--ink);color:var(--ink)}
.plan-thumb,.wk-img{appearance:none;border:1px solid var(--line);background:var(--soft);border-radius:10px;padding:0;overflow:hidden;cursor:zoom-in;display:block}
.plan-thumb img{display:block;height:90px;width:auto;max-width:200px;object-fit:cover}
.wk-img{margin-top:8px;max-width:100%}
.wk-img img{display:block;width:100%;max-height:240px;object-fit:contain;background:#fff}
.img-wait{font-size:13px;color:var(--muted);padding:12px;cursor:default}
.danger-link{color:var(--bad)!important}
.lightbox{position:fixed;inset:0;z-index:40;background:rgba(5,9,13,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:max(16px,env(safe-area-inset-top,0px)) 16px max(16px,env(safe-area-inset-bottom,0px))}
.lightbox img{max-width:100%;max-height:85vh;object-fit:contain;border-radius:8px;background:#fff}
.lightbox p{color:#c9d3dc;font-size:13px;margin:0}
.lightbox .share-x{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px))}
.plan-fill-all{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.ft{display:grid;gap:3px;font-size:14.5px;line-height:1.45;color:var(--ink)}
.ft-h{font-size:11.5px;font-weight:700;letter-spacing:.08em;color:var(--muted);margin-top:8px}
.ft-li{position:relative;padding-left:14px}
.ft-li::before{content:"";position:absolute;left:2px;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--pulse)}
.ft-p{color:var(--muted)}
.ft-more{margin-top:6px}
.ft-more summary{cursor:pointer;font-weight:600;font-size:13.5px;color:var(--muted)}
.wk-body div.ft{margin-top:2px}
.ft-row{display:flex;gap:8px;align-items:baseline;font-variant-numeric:tabular-nums;font-size:15px;padding:2px 0}
.ft-row span{min-width:0}
.ft-row b{font-weight:700;white-space:nowrap}
.ft-row.hot b,.ft-row.hot span{color:var(--pulse);font-weight:700}
.ft-row.rest{color:var(--muted)}
.ft-row.rest b{font-weight:500}
.ft-note{font-size:13px;color:var(--muted);font-style:italic}
.ft-p{font-weight:600;color:var(--ink)}

.home-list{display:grid;gap:6px}
.home-row{display:flex;gap:12px;align-items:baseline;padding:8px 10px;border-radius:8px;background:var(--soft);font-size:14px}
.home-row b{min-width:58px}
.home-row i{color:var(--muted)}
.home-row.on b{color:var(--pulse)}
.parts{display:grid;gap:10px;margin:4px 0 8px}
.part{border:1px solid var(--line);border-radius:10px;padding:10px 12px 2px}
.part > b{display:block;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.part select{width:100%}
.card.self .chips{margin:4px 0 10px}
.hr-rows{display:grid;gap:6px;margin-top:4px}
.hr-row{display:flex;justify-content:space-between;align-items:baseline;padding:10px 14px;border-radius:10px;background:var(--soft);border-left:6px solid var(--line)}
.hr-p{font-weight:700;font-size:17px}
.hr-b{font-weight:700;font-size:22px}
.hr-b small{font-size:12px;font-weight:500;color:var(--muted)}
.hr-row.z-easy{border-left-color:#9aa5b1}
.hr-row.z-mid{border-left-color:var(--long)}
.hr-row.z-tempo{border-left-color:#e8a33d}
.hr-row.z-hot{border-left-color:var(--pulse)}
.hr-row.z-hot .hr-p,.hr-row.z-hot .hr-b{color:var(--pulse)}
.hr-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:8px}
.hr-form .f{flex:1 1 200px;margin:0}
.hr-edit{margin-top:10px}
.hr-edit summary{cursor:pointer;font-weight:600;color:var(--muted);font-size:14px}
.hr-row.z-two{margin-top:10px;background:transparent;border:2px dashed var(--long);border-left:6px solid var(--long)}
.hr-row.z-two .hr-p small{font-weight:500;color:var(--muted);font-size:13px}
.guide .g-sec{border-top:1px solid var(--line);padding:12px 0 2px}
.guide .g-sec:first-of-type{border-top:0}
.guide .g-h{display:flex;gap:10px;align-items:baseline;margin-bottom:4px}
.guide .g-h b{font-size:17px}
.guide .g-h span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.guide ul{margin:0;padding-left:18px}
.guide li{margin:5px 0;line-height:1.45;font-size:15px}
.hrtab .hr-rows,.hrtab .hr-row.z-two,.hrtab .hr-form{max-width:520px}
.gtabs{display:flex;gap:8px;margin:4px 0 6px;flex-wrap:wrap}
.gtab{appearance:none;border:2px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:800;font-size:18px;letter-spacing:.02em;padding:8px 18px;border-radius:12px;cursor:pointer;min-width:72px}
.gtab small{font-weight:600;font-size:12px;color:var(--muted);margin-left:2px}
.gtab[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.gtab[aria-selected="true"] small{color:inherit;opacity:.7}
.gtab.remote:not([aria-selected="true"]){border-style:dashed}
.gtab-name{font-size:13px;color:var(--muted);margin:0 0 10px;font-weight:600}
.install{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--pulse);border-radius:14px;padding:12px 14px;margin:0 0 14px}
.install > div > b{display:block;margin-bottom:2px}
.install span b{color:var(--ink)}
.install span{font-size:14px;color:var(--muted);line-height:1.45}
@media (max-width:520px){
 .tabs.many{gap:0}
 .tabs.many .tab{padding:10px 8px 12px;font-size:14.5px}
 .tabs.many .t-wide{display:none}
}
.form-card{border-left:6px solid var(--good)}
.form-eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:4px}
.form-list{list-style:none;padding:0;margin:10px 0 6px;display:grid;gap:6px}
.form-list li{display:flex;gap:10px;align-items:baseline;font-size:15.5px;line-height:1.4}
.form-list li span{font-weight:800;width:18px;flex:none;text-align:center}
.form-list li.f-ok span{color:var(--good)}
.form-list li.f-no{color:var(--muted)}
.rpm-note{font-size:14px;color:var(--muted);background:var(--soft);border-radius:8px;padding:8px 10px;margin:-2px 0 12px;line-height:1.45}
.rpm-note b{color:var(--ink)}
.beat{margin:10px 0 4px;padding:10px 12px;border-radius:10px;background:var(--soft);border-left:4px solid var(--long);font-size:14.5px;line-height:1.45}
.beat > b{display:block;margin-bottom:2px}
.beat span{color:var(--muted)}
.beat span b{color:var(--ink)}
.beat span b{display:inline;margin:0}
.ft strong{font-weight:800;color:var(--ink)}
.ft-strong span,.ft-p.ft-strong{font-weight:800;color:var(--ink)}
.bpm{white-space:nowrap}
.pct{font-weight:500;font-size:.72em;color:var(--muted);white-space:nowrap}
.ft-row.hot .pct{color:inherit;opacity:.75}
.bpm-note{font-size:13.5px;color:var(--muted);margin:2px 0 10px}
.ft-gap{height:12px}
.ft-gap + .ft-h{margin-top:2px}
.ft .ft-h{margin-top:14px}
.ft > .ft-h:first-child{margin-top:4px}
.ft-row{display:block}
.ft-row > span{margin-right:6px}
.ft-row .bpm,.ft-row .pct{margin:0}
.pct{margin-left:3px}
.ft-row b{white-space:normal}
.ft-row b .bpm,.ft-row b .pct{white-space:nowrap}
@media (max-width:560px){
 .wk-item{display:block}
 .wk-tag{display:inline-block;margin:0 0 6px}
 .wk-body{margin-left:0}
}
.wk-body .ft b{display:inline;font-size:inherit;margin:0}
@media (max-width:560px){.wk-tag{padding:5px 12px}}
.wk-item + .wk-item{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
