
:root{
  --water:#0E6E8C; --deep:#0A2A3A; --tile:#F3F7F9; --card:#FFFFFF; --ink:#0A2A3A; --muted:#5B7482;
  --rope:#D7263D; --lane:#F2B636; --ok:#1E9E6A; --warn:#E08A1E; --bad:#D7263D; --line:#DCE6EB;
  --num:'Barlow Condensed', 'Arial Narrow', sans-serif; --body:'Barlow', system-ui, sans-serif;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --tile:#08202C; --card:#0F2F3F; --ink:#E6F1F5; --muted:#8FAAB7; --line:#1D4456; --water:#3FA9C9;
}}
:root[data-theme="dark"]{ --tile:#08202C; --card:#0F2F3F; --ink:#E6F1F5; --muted:#8FAAB7; --line:#1D4456; --water:#3FA9C9; }
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--tile);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.45}
.wrap{max-width:560px;margin:0 auto;padding:0 16px 96px}
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--deep);color:#fff}
.hd{max-width:560px;margin:0 auto;padding:12px 16px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{font-family:var(--num);font-weight:700;font-size:26px;letter-spacing:.5px}
.role{display:flex;background:rgba(255,255,255,.12);border-radius:999px;padding:3px}
.role button{border:0;background:none;color:#fff;font:600 14px var(--body);padding:6px 14px;border-radius:999px;cursor:pointer}
.role button.on{background:#fff;color:var(--deep)}
.rope{height:6px;margin-top:12px;background:repeating-linear-gradient(90deg,var(--rope) 0 14px,#fff 14px 20px,var(--water) 20px 34px,#fff 34px 40px)}
nav.tabs{display:flex;gap:6px;max-width:560px;margin:0 auto;padding:10px 16px;overflow-x:auto}
nav.tabs button{flex:0 0 auto;border:1px solid rgba(255,255,255,.25);background:none;color:#fff;font:500 15px var(--body);padding:6px 14px;border-radius:8px;cursor:pointer}
nav.tabs button.on{background:var(--lane);border-color:var(--lane);color:var(--deep);font-weight:600}
button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--lane);outline-offset:2px}
h2{font-family:var(--num);font-weight:600;font-size:24px;margin:22px 0 8px}
h3{font-size:16px;margin:0 0 6px}
.sub{color:var(--muted);font-size:14px;margin:0 0 12px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
.who{display:flex;align-items:center;gap:10px;margin-top:16px}
.who select{font:600 16px var(--body);padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink)}
/* RPE */
.rpe{display:grid;grid-template-columns:repeat(11,1fr);gap:4px;margin:10px 0 6px}
.rpe button{aspect-ratio:1;border:0;border-radius:8px;font:700 18px var(--num);cursor:pointer;color:#fff}
.rpe button.sel{outline:3px solid var(--ink);outline-offset:1px}
.rpe-desc{font-family:var(--num);font-size:20px;font-weight:600;min-height:28px}
.saved{color:var(--ok);font-weight:600;font-size:14px}
/* scoreboard */
.board{background:var(--deep);color:#fff;border-radius:12px;padding:16px;margin-bottom:12px}
.board .row{display:flex;justify-content:space-between;align-items:baseline}
.board .big{font-family:var(--num);font-weight:700;font-size:56px;line-height:1;color:var(--lane);font-variant-numeric:tabular-nums}
.board .now{font-family:var(--num);font-size:24px;opacity:.75;font-variant-numeric:tabular-nums}
.board .lab{font-size:13px;opacity:.7}
.splits{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.splits th{font-size:12px;color:var(--muted);font-weight:500;text-align:right;padding:4px}
.splits th:first-child,.splits td:first-child{text-align:left}
.splits td{font-family:var(--num);font-size:19px;text-align:right;padding:6px 4px;border-top:1px solid var(--line)}
.splits .t{color:var(--water);font-weight:700}
.delta{font-size:15px;color:var(--ok)}
.delta.neg{color:var(--bad)}
/* goals */
.goal{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.goal:first-of-type{border-top:0}
.weeks{display:flex;gap:5px}
.dot{width:22px;height:22px;border-radius:50%;border:0;padding:0;margin:0;-webkit-appearance:none;appearance:none;display:inline-block;flex:0 0 auto;cursor:pointer;-webkit-tap-highlight-color:transparent}
.dot.cur{outline:2px solid var(--ink);outline-offset:2px}
button.dot{cursor:pointer}
.g{background:var(--ok)}.o{background:var(--warn)}.r{background:var(--bad)}.n{background:var(--line)}
.tag{font-size:12px;color:var(--muted)}
/* chips */
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.chips button{border:1px solid var(--line);background:var(--card);color:var(--ink);font:500 14px var(--body);padding:6px 10px;border-radius:999px;cursor:pointer}
.chips button.on{background:var(--water);border-color:var(--water);color:#fff}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.stat{background:var(--tile);border-radius:8px;padding:8px}
.stat b{display:block;font-family:var(--num);font-size:24px;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--muted)}
.scroll{overflow-x:auto}
svg text{fill:var(--muted);font-family:var(--body);font-size:11px}
/* coach */
.alert-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:10px 0;border-top:1px solid var(--line);cursor:pointer}
.alert-row:first-child{border-top:0}
.gaps{display:flex;gap:4px}
.gap{min-width:34px;text-align:center;font:700 15px var(--num);color:#fff;border-radius:6px;padding:3px 4px}
.flag{font-size:13px;color:var(--bad);font-weight:600}
.step{display:flex;align-items:center;gap:10px}
.step button{width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:700 20px var(--num);cursor:pointer}
.step b{font-family:var(--num);font-size:30px;min-width:30px;text-align:center}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}
.note{font-size:13px;color:var(--muted)}
@media (prefers-reduced-motion: no-preference){ .rpe button{transition:transform .1s} .rpe button:active{transform:scale(.92)} }
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:14px;color:var(--muted)}
input,select,textarea{font:16px var(--body);color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}
textarea{min-height:84px;resize:vertical}
.btn{border:0;background:var(--water);color:#fff;font:600 15px var(--body);padding:10px 16px;border-radius:8px;cursor:pointer}
.btn.ghost{background:none;color:var(--water);border:1px solid var(--water)}
.btn.small{padding:6px 10px;font-size:13px}
.btn.danger{background:none;color:var(--bad);border:1px solid var(--bad)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px}
.login{max-width:380px;margin:40px auto;padding:0 16px}
.login .brand{font-size:48px;color:var(--deep)}
:root[data-theme="dark"] .login .brand{color:#fff}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .login .brand{color:#fff}}
.err{color:var(--bad);font-size:14px;min-height:20px}
.who-hd{display:flex;align-items:center;gap:10px;font-size:14px}
.who-hd button{border:1px solid rgba(255,255,255,.4);background:none;color:#fff;border-radius:6px;padding:4px 8px;font:500 13px var(--body);cursor:pointer}
.banner{background:var(--lane);color:var(--deep);font-size:14px;font-weight:600;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.banner button{border:0;background:var(--deep);color:#fff;border-radius:6px;padding:4px 10px;font:600 13px var(--body);cursor:pointer}
.badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--rope);color:#fff;font:700 12px/18px var(--body);margin-left:4px;text-align:center}
.thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.thumbs img{width:64px;height:64px;object-fit:cover;border-radius:8px;cursor:pointer;border:1px solid var(--line)}
.thumbs .x{position:relative}
.thumbs .x button{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:0;background:var(--bad);color:#fff;font-weight:700;cursor:pointer;line-height:22px;padding:0}
.private{font-size:13px;color:var(--muted);display:flex;gap:6px;align-items:center}
.sess-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:10px}
.sess-chips button{flex:0 0 auto;border:1px solid var(--line);background:var(--card);color:var(--ink);font:500 14px var(--body);padding:6px 10px;border-radius:8px;cursor:pointer;position:relative}
.sess-chips button.on{background:var(--deep);color:#fff;border-color:var(--deep)}
.sess-chips button.todo::after{content:'';position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--rope)}
.msg{border-top:1px solid var(--line);padding:12px 0}
.msg:first-child{border-top:0;padding-top:0}
.msg.unread{border-left:4px solid var(--rope);padding-left:10px}
.msg p{margin:6px 0}
.grid-in{width:100%;border-collapse:collapse}
.grid-in td,.grid-in th{padding:3px;font-size:13px;color:var(--muted);font-weight:500;text-align:left}
.grid-in input{padding:6px;font-size:15px}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.overlay img{max-width:100%;max-height:100%;border-radius:8px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--deep);color:#fff;padding:10px 16px;border-radius:8px;font-weight:600;z-index:60}
details summary{cursor:pointer;font-weight:600;padding:4px 0}
hr{border:0;border-top:1px solid var(--line);margin:14px 0}

.consent{line-height:1.55}
.consent h3{margin-top:14px}
.consent ul{padding-left:20px;margin:6px 0}
.check{display:flex;gap:10px;align-items:flex-start;padding:8px 0;color:var(--ink);font-size:15px}
.check input{width:22px;height:22px;flex:0 0 auto;margin-top:2px}
.pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--lane);color:var(--deep);margin-left:6px}
.pill.warn{background:var(--rope);color:#fff}
.doc{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:8px;border:1px solid var(--line);font:700 13px var(--body);color:var(--water);text-decoration:none;background:var(--tile)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
.goal-b{padding:14px 0;border-top:1px solid var(--line)}
.goal-b:first-child{border-top:0;padding-top:0}
.goal-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.goal-b .weeks{margin:10px 0 2px}
.dot{position:relative;cursor:default}
.dot i{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;box-shadow:0 0 0 2px var(--card)}
.pick-lab{font-size:13px;color:var(--muted);margin-top:10px}
.pick{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px}
@media (max-width:560px){.pick{grid-template-columns:repeat(2,1fr)}}
.pick button{border:0;border-radius:8px;padding:11px 6px;line-height:1.2;color:#fff;font:600 14px var(--body);cursor:pointer;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent}
.pick.has button:not(.sel){opacity:.35}
.pick button.sel{outline:3px solid var(--ink);outline-offset:1px}
.pick button[disabled]{cursor:not-allowed}
.goal-note{font-size:13px;color:var(--muted);margin-top:8px}
.chip{display:inline-block;padding:1px 8px;border-radius:999px;color:#fff;font-weight:600}

.p{background:#7B4FBF}
.ideas{display:flex;flex-direction:column;gap:6px}
.idea{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:9px 10px;font:15px var(--body);cursor:pointer;-webkit-appearance:none;appearance:none}
.idea .txt{flex:1}
.idea .cnt{font:600 13px var(--body);color:var(--muted)}
.idea.on{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 14%, var(--card))}
.idea.on .txt::before{content:'✓ ';color:var(--ok);font-weight:700}
.fmt{display:inline-block;font:600 11px var(--body);color:#fff;border-radius:4px;padding:2px 6px;text-transform:uppercase;letter-spacing:.3px;flex:0 0 auto}
.sdot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:3px;vertical-align:middle}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-bottom:14px}
.mcard{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.mcard video,.mcard img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;background:#000}
.mcard img{cursor:pointer}
.mbody{padding:10px}
.mtags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.mtag{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--tile);color:var(--ink)}
.mtag.name{background:var(--water);color:#fff;font-weight:600}
.mtag.all{background:var(--lane);color:var(--deep)}
.tag.soon{color:var(--bad);font-weight:600}
a.btn{text-decoration:none;display:inline-block}
.bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:4px}
.bar i{display:block;height:100%;background:var(--water)}
.uprow{font-size:13px;margin:8px 0}
.crow{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.crow:first-of-type{border-top:0}
.crow > div:first-child{flex:1}
.cn{text-align:right;display:flex;flex-direction:column;align-items:flex-end}
.cn b{font-family:var(--num);font-size:22px}
.ctable{border-collapse:collapse;font-size:13px}
.ctable th,.ctable td{padding:5px 6px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}
.ctable th{font-weight:500;color:var(--muted)}
.ctable td:first-child{text-align:left}
.medit{margin-top:8px;border-top:1px solid var(--line);padding-top:4px}
.nopub{font-size:13px;font-weight:600;color:#fff;background:var(--bad);border-radius:6px;padding:5px 8px;margin:4px 0 6px}
.nopub.warn{background:var(--warn)}
.check input[type=radio]{width:22px;height:22px;flex:0 0 auto;margin-top:2px}
.zbar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--line);margin:8px 0 6px}
.zbar i{display:block;height:100%}
.tot{margin:8px 0;font-size:15px}
.sets .grid-in select{padding:6px;font-size:14px}
.sessed{margin-top:10px;border-top:1px solid var(--line);padding-top:6px}
.setlist{list-style:none;padding:0;margin:8px 0}
.setlist li{padding:4px 0;border-bottom:1px solid var(--line)}
.hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-bottom:12px}
.hcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;color:var(--ink);text-decoration:none}
.hcard img{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--tile)}
.hb{padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px;flex:1}
.ht{font-weight:600;font-size:16px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.hb p{margin:0;font-size:14px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.hb .more{margin-top:auto;font-weight:600;color:var(--water);font-size:14px}
.th{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--tile);color:var(--ink);margin-left:4px}
.th-results{background:var(--lane);color:var(--deep)}
.th-technique{background:#3E9AB5;color:#fff}
.th-training{background:#0E6E8C;color:#fff}
.th-mental{background:#7B4FBF;color:#fff}
.th-dryland{background:#56A05A;color:#fff}
.th-nutrition{background:#E08A1E;color:#fff}

.setrow{border:1px solid var(--line);border-radius:10px;padding:8px;margin:8px 0;background:var(--card)}
.sr1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sr1 input{width:64px;flex:none;padding:6px 8px;font-size:16px}
.sr1 select{flex:1 1 120px;width:auto;min-width:0;padding:6px 8px;font-size:16px}
.sr1 span{color:var(--muted);font-size:14px}
.sr1 button{margin-left:auto}
.setrow .sdesc{display:block;margin-top:6px;padding:6px 8px;font-size:16px;width:100%;max-width:100%}
.mixrow{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:8px}
.mixrow label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:2px}
.mixrow label span{border-left:5px solid;padding-left:4px}
.mixrow input{width:76px;padding:5px 8px;font-size:16px}
.mbar{display:inline-flex;width:28px;height:10px;border-radius:5px;overflow:hidden;vertical-align:middle;margin-right:8px;background:var(--line)}
.mbar i{display:block;height:100%}

.srch{display:flex;gap:8px;margin:12px 0 8px}
.srch input{flex:1;min-width:0}
.srch .btn{flex:none}
.ytmore{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:10px 0}
.ytmore p{margin:0}

/* Hub and Search: wide layout with several cards per row (like a video site) */
body.wide .wrap, body.wide .hd, body.wide nav.tabs{max-width:1320px}
body.wide .wrap > .sub, body.wide .srch, body.wide .sugg{max-width:720px}
@media (max-width:600px){
  .hubgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .hb{padding:8px 9px 10px;gap:4px}
  .ht{font-size:14px}
  .hb p{font-size:12.5px;-webkit-line-clamp:3}
  .hb .tag{font-size:11.5px}
  .hb .more{font-size:13px}
}
.sugg{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin:0 0 14px;font-size:14px}
.sugg span{color:var(--muted)}
.sugg button{border:0;background:none;padding:2px 0;color:var(--water);font:500 14px var(--body);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.guess{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--warn);color:#fff;font-weight:700;font-size:13px;flex:none;cursor:help}
#newbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:20;border:0;border-radius:999px;background:var(--deep);color:#fff;font:600 15px var(--body);padding:10px 18px;box-shadow:0 4px 16px rgba(0,0,0,.25);cursor:pointer;max-width:calc(100% - 32px)}
.newb{display:inline-block;background:var(--rope);color:#fff;font-weight:700;font-size:11px;padding:1px 6px;border-radius:999px;margin-right:2px;vertical-align:1px}
.newcount{margin:0 0 10px;font-weight:600;color:var(--water)}

.live{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:14px;color:var(--muted)}
.live .dot{width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(30,158,106,.6);animation:pulse 2s infinite}
.live .btn{padding:2px 10px;font-size:16px;line-height:1.4}
.live .spin{animation:spin 1s linear infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(30,158,106,.55)}70%{box-shadow:0 0 0 8px rgba(30,158,106,0)}100%{box-shadow:0 0 0 0 rgba(30,158,106,0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.live .dot,.live .spin{animation:none}}
.aisum{font-size:11.5px;color:var(--muted);font-style:italic}

.attstrip{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:14px;color:var(--muted);margin:10px 0 4px}
.attstrip b{color:var(--ink)}
.attlist{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.attrow{display:grid;grid-template-columns:minmax(80px,1.2fr) 2fr auto;gap:4px 10px;align-items:center;font-size:14px}
.attrow .tag{grid-column:1/-1;margin-top:-2px}
@media (min-width:601px){.attrow{grid-template-columns:160px 1fr 110px 150px}.attrow .tag{grid-column:auto;margin:0}}
.attbar{height:8px;border-radius:4px;background:var(--line);overflow:hidden}.attbar i{display:block;height:100%}
.attn{font-weight:600;font-variant-numeric:tabular-nums}
.swrow{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--line)}
.swl{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
.swr{display:flex;gap:6px;align-items:center}
.att{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.att button{border:0;background:var(--card);color:var(--muted);font:600 14px var(--body);width:32px;height:30px;cursor:pointer}
.att button+button{border-left:1px solid var(--line)}
.att button.on.aP{background:var(--ok);color:#fff}.att button.on.aA{background:var(--bad);color:#fff}.att button.on.aE{background:var(--warn);color:#fff}
.att button.auto.aP{color:var(--ok);background:rgba(30,158,106,.12)}
.swedit{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 10px;padding:8px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px}
.swedit label{display:flex;gap:6px;align-items:center}.swedit .actions{grid-column:1/-1}
.adapt{border-left:4px solid var(--water);padding:8px 0 8px 10px;margin:6px 0 10px}
.ch{font-weight:600;color:var(--ink)}
.swedit label{min-width:0}
.swedit input[type=checkbox]{width:18px;height:18px;flex:none;margin:0;padding:0}

/* --- coaches, groups, parents, wellness, calendar, watch, push --- */
.gdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:0}
.gfilter{margin:-4px 0 10px}
.gsel{width:auto;max-width:140px;padding:5px 8px;font-size:14px}
.bell{border:1px solid rgba(255,255,255,.35);background:none;color:#fff;border-radius:8px;padding:3px 7px;font-size:15px;cursor:pointer;opacity:.75}
.bell.on{opacity:1;border-color:var(--lane)}
.banner select{width:auto;padding:4px 8px;font-size:14px}
.linkbtn{border:0;background:none;color:var(--water);text-decoration:underline;cursor:pointer;font:500 14px var(--body);padding:0}
.well .wq{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--line)}
.well .wl{display:flex;flex-direction:column}
.wbtn{display:flex;gap:4px}
.wbtn button{border:1px solid var(--line);background:var(--card);border-radius:10px;width:44px;height:44px;font-size:20px;line-height:1;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0}
.wbtn button small{font-size:10px;color:var(--muted)}
.wbtn button.on{border-color:var(--water);background:rgba(14,110,140,.12);box-shadow:0 0 0 2px var(--water) inset}
.wnote{margin-top:10px}
.wtrend{display:flex;align-items:flex-end;gap:2px;height:46px;padding:4px 0}
.wtrend i{flex:1;border-radius:2px 2px 0 0;min-width:3px}
.blk{display:inline-block;color:#fff;font-weight:600;font-size:12px;border-radius:999px;padding:2px 8px}
.calnav{display:flex;align-items:center;gap:8px;margin:0 0 8px}.calnav b{flex:1;text-align:center;text-transform:capitalize}
.cal{display:flex;flex-direction:column;gap:2px;font-size:12px}
.calh,.calw{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) 44px;gap:2px}
.calh span{text-align:center;color:var(--muted);font-weight:600;padding:2px 0}
.calc{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:6px;min-height:64px;padding:3px;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer;overflow:hidden;font:inherit}
.calc.out{opacity:.45}.calc.today{box-shadow:0 0 0 2px var(--lane) inset}.calc.sel{box-shadow:0 0 0 2px var(--water) inset}
.calc .dn{font-weight:700}.calc .cs{background:rgba(14,110,140,.12);border-radius:4px;padding:1px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calc .ev{background:rgba(224,138,30,.18);border-radius:4px;padding:1px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calkm{display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;font-variant-numeric:tabular-nums}.calkm small{color:var(--muted);font-weight:500}
.calleg{margin:6px 0 12px}
@media (max-width:600px){.calc{min-height:52px;font-size:10.5px}.calh,.calw{grid-template-columns:repeat(7,minmax(0,1fr)) 34px}}
.dup{display:inline-flex;gap:4px;align-items:center}.dup input{width:auto;padding:4px 6px;font-size:14px}
.wstats{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-top:8px}
.wstats span{display:flex;flex-direction:column;font-size:12px;color:var(--muted)}.wstats b{font-size:18px;color:var(--ink)}
.wtag{color:var(--water)}
.rpe button:disabled{cursor:default;opacity:.55}.rpe button:disabled.sel{opacity:1}
.wdet{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:-2px 0 8px}.wdet .pill{font-size:12px;padding:2px 8px}
input[type=color]{width:52px;height:40px;padding:3px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer}
.who-hd button{white-space:nowrap}.who-hd>span{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v33: sports, strokes, kick/pull, equipment */
.gearrow{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.gchip{border:1px dashed var(--line);background:transparent;color:var(--muted);font:500 12px var(--body);padding:3px 8px;border-radius:999px;cursor:pointer}
.gchip.on{border-style:solid;border-color:var(--water);background:var(--water);color:#fff}
.quant{margin-top:6px}.quant .qh{margin:10px 0 3px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.quant .pill.gearp{background:var(--tile);color:var(--ink);border:1px solid var(--line)}
.qsport{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}.qsport .qt{margin:0 0 6px}
.inl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px;margin:0 0 10px}.inl select{width:auto;padding:5px 8px}
.spchips button{font-size:15px}
.sr1 input.dur{width:70px}.sr1 input.dkm{width:62px}
.cdown{display:flex;align-items:center;gap:14px;background:var(--deep);color:#fff;border-radius:14px;padding:12px 16px;margin:0 0 12px}
.cdown .cd{font:800 34px/1 var(--num);color:var(--lane);min-width:64px;text-align:center}.cdown .cd small{display:block;font:600 11px var(--body);color:#cfe0e8;letter-spacing:.05em;text-transform:uppercase;margin-top:3px}
.cdown .cn{font-weight:700}.cdown .cs2{font-size:13px;color:#cfe0e8}
.calc .ev.maj{background:#F2B734;color:#0A2A3A;font-weight:700}
.majb{background:#F2B734;color:#0A2A3A;border-radius:6px;padding:1px 6px;font-size:12px;font-weight:700}
.wact{border-top:1px solid var(--line);padding:6px 0}.wact summary{cursor:pointer;font-size:14px}.polar{border-top:1px solid var(--line);margin-top:8px;padding-top:6px}.polar p{margin:4px 0}
.rpe{grid-template-columns:repeat(11,minmax(0,1fr))}.rpe button{min-width:0;padding:0;font-size:clamp(13px,3.6vw,18px)}
.cdown .cd{white-space:nowrap;min-width:auto}.cdown .cd small{white-space:nowrap}
/* v34: strength training */
.gsvg{display:block;max-width:100%;height:auto;background:#fff;border-radius:8px}
.gph{display:flex;align-items:center;justify-content:center;aspect-ratio:340/182;background:var(--tile);border-radius:8px;color:var(--muted)}
.gmod{align-items:flex-start;overflow:auto;padding:16px}
.gmod .gbox{position:relative;background:var(--card);color:var(--ink);border-radius:14px;max-width:560px;width:100%;margin:24px auto;padding:16px;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.gmod.wide .gbox{max-width:900px}
.gx{position:absolute;top:8px;right:8px;border:0;background:var(--tile);color:var(--ink);width:34px;height:34px;border-radius:50%;font-size:16px;cursor:pointer;z-index:2}
body.noscroll{overflow:hidden}
.gfiche h3{margin:0 40px 8px 0}.gfiche h4{margin:12px 0 4px;font-size:14px}.gfiche ol,.gfiche ul{margin:0;padding-left:20px}.gfiche li{margin:3px 0}
.gbig{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.gvid{position:relative;aspect-ratio:16/9;margin-top:8px;border-radius:10px;overflow:hidden}.gvid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.gtags{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:8px}.gtags .pill{color:#fff;font-size:12px}
.geq{display:flex;align-items:center;flex-wrap:wrap;gap:4px;color:var(--water);margin:6px 0}.geq small{color:var(--muted);margin:0 2px}
.gwarn{background:rgba(224,138,30,.12);border-radius:8px;padding:8px 10px;font-size:14px}
.gval{border-top:1px solid var(--line);margin-top:10px;padding-top:6px}
.eqgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:8px 0}
.eqgrid button{display:flex;flex-direction:column;align-items:center;gap:4px;border:2px solid var(--line);background:var(--card);color:var(--muted);border-radius:12px;padding:10px 6px;cursor:pointer;font:500 12px var(--body);line-height:1.2;transition:transform .1s}
.eqgrid button.on{border-color:var(--water);color:var(--water);background:rgba(14,110,140,.08)}.eqgrid button:active{transform:scale(.96)}
.eqgrid.small{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}.eqgrid.small button{padding:6px 4px;font-size:11px}
.gbrowse .gq{width:100%;margin-bottom:8px}.gbrowse .chips{margin-bottom:6px}.gbrowse .chips button{font-size:13px;padding:5px 9px}
.inlc{display:inline-flex;align-items:center;gap:6px;font-size:13px;margin:0 0 0 4px}.inlc input{width:auto}
.ggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.gcard{display:flex;flex-direction:column;gap:4px;text-align:left;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:6px;cursor:pointer;font:600 13px var(--body)}
.gcard:hover{border-color:var(--water)}.gcard .gm2{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tdo{color:var(--warn)!important;font-weight:700}
.gl{display:flex;gap:8px;align-items:flex-start;cursor:pointer}.gl .gth{flex:none;width:64px;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.setlist li:has(.gl){list-style:none}
.gset .gsh{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:6px}
.gpickb{display:flex;align-items:center;gap:8px;border:1px dashed var(--line);background:transparent;color:var(--ink);border-radius:8px;padding:4px 8px;cursor:pointer;text-align:left;font:600 14px var(--body);flex:1}
.gpickb .gth{width:72px;flex:none;border-radius:6px;overflow:hidden}
.gs2{margin-top:6px}.gs2 input.tpi{width:70px}
.gdef input{width:56px}
.gmod{background:rgba(10,42,58,.6)}
/* v36: AI planning */
.pspc{border:1px solid var(--line);border-radius:10px;padding:8px;margin:6px 0}.pspc.on{border-color:var(--water);background:rgba(14,110,140,.05)}
.pst{border:0;background:none;color:var(--ink);font:600 15px var(--body);cursor:pointer;padding:2px 0}.pspc:not(.on) .pst{color:var(--muted)}
.pspc .sr1{margin-top:6px}.pspc .sr1 select{flex:1 1 160px}
.ptl{display:block;height:auto}.ptl text{fill:var(--ink);font-family:var(--body)}
.mrow{border:1px solid var(--line);border-radius:8px;padding:8px;margin:8px 0;position:relative}.mrow textarea,.mrow input{width:100%}.mrow .mdel{position:absolute;top:6px;right:6px}.mrow .row2{padding-right:40px}
.pwt td,.pwt th{padding:4px}.pwt select,.pwt input{padding:4px 6px;font-size:14px}
.pday{text-transform:capitalize;margin-top:14px!important}
.pslot{border:1px solid var(--line);border-radius:10px;padding:8px;margin:6px 0;background:var(--card)}
.psh{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.psh select{width:auto;padding:5px 6px}.psh input[type=date]{width:auto;padding:5px 6px}.psh .st{flex:1 1 140px;font-weight:600}.psh .sx{margin-left:auto}
.pslot .sg{width:100%;margin:6px 0}.pslot .sr1 input{width:60px}
.wav input{width:54px}.wav span{font-size:18px}
.vcand{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:10px;padding:8px;margin:8px 0}
.vprev{position:relative;cursor:pointer;border-radius:8px;overflow:hidden}.vprev img{width:100%;display:block}.vprev span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:40px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.6)}
.vg{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.whyp p{margin:4px 0 0}
.pwt select.wl{min-width:52px}.pwt select.wt{min-width:118px}.ptl{max-width:none}
.saix{width:100%;margin:6px 0}

.aierr{margin:8px 0;border-left:4px solid #e08a1e}.aierr .aif{margin:6px 0}.aierr pre{white-space:pre-wrap;margin:0;font-size:13px;background:rgba(0,0,0,.05);padding:6px;border-radius:6px}
.aierr[hidden]{display:none}

/* Swim in… (local search) */
.hmode{margin-top:6px}
.lform h3{margin-top:0}.lform .srch{margin:8px 0}.lform .ltags{margin:8px 0 0}
.lsec{margin:16px 0}.lsec h3{margin:0 0 8px}
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.lcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:5px;font-size:14px;min-width:0;overflow-wrap:anywhere}
.lcard .lh{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline}.lcard .lh b{font-size:15px}
.lcard .lc{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.lcard .lc .btn{text-decoration:none}
.lcard .lsrc{font-size:12px;color:var(--muted);margin-top:auto;padding-top:4px}
.losm{margin-top:10px}.losm summary{cursor:pointer;font-weight:600;margin-bottom:8px}
.lerr{margin-bottom:8px}

/* sessions hidden from swimmers */
.visck{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 0;font-weight:600}.visck input{width:auto}.visck .tag{font-weight:400}
.visbtn{border:1px solid var(--line);background:var(--card);color:var(--ok);font:600 12px var(--body);padding:2px 8px;border-radius:999px;cursor:pointer;margin-left:4px;vertical-align:middle}
.visbtn.off{color:var(--warn);border-color:var(--warn);background:rgba(224,138,30,.1)}
.alert-row.hiddensess{opacity:.75;border-style:dashed}
.hidbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:rgba(224,138,30,.1);border-radius:8px;padding:8px 10px;margin-bottom:8px;font-size:14px}.hidbar input{width:auto}

/* club spaces */
.hd .brand small{display:block;font:600 12px var(--body);opacity:.8;letter-spacing:.02em}
.login .clubname{text-align:center;font-weight:700;font-size:18px;margin:-6px 0 10px}
.slugrow{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.slugrow input{flex:1;min-width:120px}.slugrow .tag{white-space:nowrap}
.clubrow{border-top:1px solid var(--line);padding:10px 0;display:flex;flex-direction:column;gap:4px}.clubrow:first-of-type{border-top:0}
.clubrow .ch{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.clubrow.off{opacity:.7}
.clubrow input[type=number]{width:64px;padding:4px 6px}.clubrow .actions{align-items:center;margin-top:4px}
.clubok .kv{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin:4px 0}.clubok .kv span{min-width:110px;color:var(--muted)}
.clubok textarea{width:100%;margin-top:8px;font-size:13px}.mono{font-family:ui-monospace,Menlo,monospace;letter-spacing:.04em}
.cdb summary{cursor:pointer;font-weight:600;margin:6px 0}
.mailrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}.mailrow .mto{flex:1;min-width:180px}.mailrow .tag input{width:auto}

/* install the app */
.instbar{display:flex;gap:8px;align-items:center;background:#F2B734;color:#0A2A3A;padding:8px 12px;font-size:14px;font-weight:600}.instbar span{flex:1}.instbar .x{background:none;border:0;font-size:16px;cursor:pointer;color:#0A2A3A;padding:4px}
.instbar .btn{background:#0A2A3A;color:#fff;border-color:#0A2A3A}
.modal{position:fixed;inset:0;background:rgba(10,42,58,.55);display:flex;align-items:flex-end;justify-content:center;z-index:200;padding:12px}
.modal .sheet{background:var(--card);color:var(--ink);border-radius:16px;max-width:480px;width:100%;padding:18px 18px 12px;max-height:90vh;overflow:auto}
.modal .sheet h3{margin-top:0}.isteps{list-style:none;padding:0;margin:0;counter-reset:s}.isteps li{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);font-size:15px;line-height:1.45}
.isteps li:first-child{border-top:0}.isteps .ii{flex:0 0 36px;height:36px;border-radius:50%;background:var(--tile);display:flex;align-items:center;justify-content:center;font-size:18px}
@media(min-width:700px){.modal{align-items:center}}
.invite .invrow{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px}.invite .qr{flex:0 0 180px;width:180px;height:180px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px}.invite .qr svg{width:180px;height:180px}
.invite .invt{flex:1;min-width:220px}.invite textarea{width:100%;font-size:13px}
.who-hd{min-width:0}.who-hd > span{max-width:32vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:420px){.hd .brand{font-size:28px}.who-hd{gap:6px}.who-hd .lob{padding:6px 8px}}
.qd{display:block;margin-top:4px;font-size:13px}.qd .linkbtn{margin-right:6px}.lpl{width:auto;max-width:100%}.clubrow input[type=date]{width:auto;padding:4px 6px}.attstrip.plan.full{background:rgba(215,38,61,.08)}

.srtools{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.srtools button{border:1px solid var(--line);background:var(--card);color:inherit;border-radius:999px;padding:4px 11px;font:500 12px var(--body);cursor:pointer;min-height:28px}.srtools button:disabled{opacity:.35;cursor:default}.srtools .st-ins{border-color:var(--water);color:var(--water)}

.wzones{display:flex;height:10px;border-radius:5px;overflow:hidden;margin-top:8px;gap:1px}.wzones i{display:block;min-width:2px}.whoopstrip>span:first-child{font-weight:700;letter-spacing:.06em}

.gvb{border:1px solid var(--line);background:var(--card);color:var(--rope);border-radius:999px;font:600 13px var(--body);padding:3px 11px;margin-top:5px;cursor:pointer}.gvb:hover{border-color:var(--rope)}
.gpresc{background:var(--tile);border-left:4px solid var(--lane);padding:8px 10px;border-radius:6px;margin:8px 0}
.vrow{display:flex;gap:8px}.vrow input{flex:1;min-width:0}.vl{margin:8px 0}

.swpick{display:flex;flex-direction:column;gap:6px;margin-top:8px}.spg{border:1px solid var(--line);border-radius:10px;padding:6px 10px;background:var(--card)}
.spgh{display:flex;align-items:center;gap:8px}.spgh label{display:flex;align-items:center;gap:6px;flex:1;cursor:pointer}.spgh input,.spl input{width:auto}
.spx{border:0;background:none;color:var(--water);font:600 13px var(--body);cursor:pointer;padding:4px}
.spl{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px 10px;padding:6px 0 2px 26px}.spl label{display:flex;gap:6px;align-items:center;padding:3px 0}
.swedit .swpick{margin-bottom:8px}.attleg{margin:2px 0 6px}.offt{color:var(--bad)}.sess-chips .offs{opacity:.6;text-decoration:line-through}
.spl[hidden]{display:none}

.blkh{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:10px 0 0;padding:8px 10px;border:2px solid var(--water);border-bottom:0;border-radius:12px 12px 0 0;background:var(--tile)}
.blkh .bxi{width:52px;text-align:center;font-weight:700}.blkh .bni{flex:1;min-width:140px}.blkh b{font-family:var(--num);font-size:20px}
.setrow.inblk{border-left:2px solid var(--water);border-right:2px solid var(--water);margin:0;border-radius:0;padding-left:12px}
.blkf{border:2px solid var(--water);border-top:0;border-radius:0 0 12px 12px;padding:4px 12px 8px;margin-bottom:10px;background:var(--tile)}.blkf b{font-family:var(--num);font-size:20px}
.repf{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px;font-size:14px}.repf input{width:56px;text-align:center}
.setlist li.sblk{list-style:none;border-left:3px solid var(--water);padding:2px 0 2px 10px;margin:6px 0;border-bottom:0}.setlist li.sblk ul{list-style:none;margin:2px 0 0;padding-left:10px}.setlist .sbh b{font-family:var(--num);font-size:18px}.setlist .sbn{font-weight:600;color:var(--water)}

.wbd{margin:6px 0 4px;padding:10px;border:1px dashed var(--line);border-radius:12px}.wbd .actions{flex-wrap:wrap}
.bthumbs,.bshow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.bth{position:relative;display:inline-block}.bth img{width:92px;height:92px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block}
.bshow .bth img{width:140px;height:105px}.bth button{position:absolute;top:-6px;right:-6px;width:24px;height:24px;border-radius:50%;border:0;background:var(--rope);color:#fff;font-size:12px;cursor:pointer}
.bact{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.bnote{background:var(--tile);border-left:4px solid var(--lane);padding:8px 10px;border-radius:6px;margin-top:8px;font-size:14px}
/* v60: upright Shorts, gallery of demonstrations */
.gvid.vert{aspect-ratio:9/16;width:min(100%,calc(72vh * 9 / 16));margin:8px auto 0}
.vg2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(min-width:640px){.vg2{grid-template-columns:repeat(4,minmax(0,1fr))}}
.vg .vg2{grid-column:1/-1}.vk{margin:0 0 8px}
.vcand2{display:flex;flex-direction:column;gap:4px;min-width:0}.vcand2 b{font-size:13px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.vcand2 .tag{font-size:11px}
.vslot{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#000}.vslot.v{aspect-ratio:9/16}
.vslot .gvid{margin:0;width:100%;height:100%;aspect-ratio:auto;border-radius:0}
.vprev2{all:unset;cursor:pointer;position:absolute;inset:0;display:block}.vprev2 img{width:100%;height:100%;object-fit:cover;display:block}
.vprev2 span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:34px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.6)}
/* v62: stroke of each 50 in tests */
.sttag{display:inline-block;color:#fff;font-size:11px;font-weight:700;padding:1px 6px;border-radius:6px;margin-left:4px;vertical-align:1px}
.grid-in select.stv{min-width:62px;padding:6px 4px}.tstq{margin:6px 0}.tstq .tag{align-self:center}
/* v63: HRV */
.hrvcard{background:var(--card,#fff);border:1px solid var(--line);border-left:6px solid;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.hrvtop{display:flex;gap:14px;align-items:center}.hrvv{font-family:var(--num);font-weight:700;font-size:44px;line-height:1;font-variant-numeric:tabular-nums}.hrvv small{font-size:14px;margin-left:2px;opacity:.7}
.hrvnums{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:13px;color:var(--muted)}.hrvnums b{color:var(--ink,inherit)}
.hrvdays{width:100%;border-collapse:collapse;font-size:14px}.hrvdays td{padding:6px 4px;border-top:1px solid var(--line);vertical-align:middle}.hrvdays td:first-child{white-space:nowrap;color:var(--muted)}
.hdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:-1px}
button.attstrip.hrvstrip{width:100%;border:0;background:none;padding:0;font:inherit;text-align:left;cursor:pointer}.hrvstrip input{padding:6px 8px}
.hrvhelp h4{margin:12px 0 4px}.hrvhelp ul{margin:4px 0 6px;padding-left:20px}.hrvhelp li{margin:3px 0}
/* v65: RPE table with dates */
.rpet{border-collapse:separate;border-spacing:3px 4px;min-width:100%}
.rpet th,.rpet td{text-align:center;vertical-align:middle;padding:0}
.rpet .rpen{text-align:left;position:sticky;left:0;background:var(--card);z-index:1;min-width:120px;max-width:170px;padding-right:6px;cursor:pointer;font-weight:500}
.rpeh{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:12px;line-height:1.15;color:var(--ink);padding:4px 2px;border-radius:8px;min-width:48px}
.rpeh:hover{background:var(--tile)}.rpeh span{color:var(--muted);font-size:11px}.rpeh small{color:var(--muted);font-size:10px}
.rpet .gap{display:inline-block}.rpeno{background:repeating-linear-gradient(45deg,transparent 0 4px,var(--line) 4px 5px);border-radius:6px;opacity:.5}
/* v65: help "?" */
.hlp{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--water);background:transparent;color:var(--water);font:700 11px/1 var(--body,system-ui);cursor:pointer;padding:0;vertical-align:2px;margin-left:3px;flex:0 0 auto}
.hlp:hover{background:var(--water);color:#fff}
th .hlp,.stat .hlp{width:16px;height:16px;font-size:10px}
.helpbox p,.helpbox li{line-height:1.5}.helpbox ul{padding-left:20px;margin:6px 0}.helpl{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
/* v65: overview */
.ovp>summary{font-weight:700;font-size:17px}.ovctl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 4px}.ovctl .chips{margin:0}.ovctl input[type=date]{width:auto;padding:6px}.ovctl select{width:auto;max-width:100%;padding:6px}
.ovh{margin:18px 0 6px;font-size:16px;border-top:1px solid var(--line);padding-top:12px}.ovl{margin:12px 0 4px}
.ovheat{border-collapse:separate;border-spacing:2px;font-size:11px}.ovheat th{font-weight:500;color:var(--muted);white-space:nowrap;padding:0 4px}.ovheat td{min-width:38px;height:24px;text-align:center;border-radius:4px;color:#fff;font-weight:600;font-variant-numeric:tabular-nums}
.ovheat .ovn{text-align:left;cursor:pointer;color:var(--ink);position:sticky;left:0;background:var(--card)}
.ovco{max-width:380px;margin-top:8px}.ovv{border-left:4px solid;padding:8px 10px;background:var(--tile);border-radius:6px;margin:10px 0}
/* v65: printable session */
#printzone{position:fixed;left:-10000px;top:0;width:190mm}
@media print{
  body.printing>*:not(#printzone){display:none!important}
  body.printing{background:#fff!important;padding:0!important}
  body.printing #printzone{position:static;width:auto;color:#000;font-family:var(--body,system-ui);-webkit-print-color-adjust:exact;print-color-adjust:exact}
  @page{margin:12mm}
}
#printzone .pz-head{display:flex;align-items:center;gap:14px;border-bottom:4px solid #0A2A3A;padding-bottom:10px;margin-bottom:10px}
#printzone .pz-head img{width:72px;height:72px;border-radius:14px}
#printzone .pz-brand{font:800 40px/1 'Barlow Condensed',var(--num),sans-serif;color:#0A2A3A;letter-spacing:.01em}
#printzone .pz-club{font-size:15px;color:#333;margin-top:2px}
#printzone .pz-date{margin-left:auto;text-align:right;display:flex;flex-direction:column;font-size:15px}#printzone .pz-date b{font-size:20px}
#printzone .pz-meta{display:flex;flex-wrap:wrap;gap:18px;font-size:16px;margin:6px 0 12px}
#printzone .pz-txt{font:600 22px/1.45 'Barlow',var(--body),sans-serif;white-space:pre-wrap;margin:8px 0 14px;padding:12px 14px;border:2px solid #0A2A3A;border-radius:10px;color:#000}
#printzone h3{font-size:16px;margin:12px 0 4px}
#printzone .pz-sets{font-size:15px;color:#000}#printzone .pz-big{font-size:21px;line-height:1.5}#printzone .pz-sets .tag{color:#333}
#printzone .pz-leg{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:6px 0}#printzone .pz-leg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}
#printzone .pz-why{border-left:4px solid #F2B734;padding:6px 10px;margin:12px 0;font-size:15px}
#printzone .pz-notes{border:1px dashed #999;border-radius:8px;min-height:60px;padding:6px 10px;margin-top:12px;font-size:13px;color:#555}
#printzone .pz-foot{margin-top:14px;padding-top:6px;border-top:1px solid #ccc;font-size:11px;color:#666;text-align:center}
/* v67: live distance count, draft note */
.livecnt{margin:-4px 0 10px;padding:8px 10px;background:var(--tile);border-radius:8px;font-size:14px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.livecnt b{font-family:var(--num);font-size:18px;color:var(--water)}.livecnt details{flex-basis:100%}.livecnt summary{cursor:pointer;color:var(--muted);font-size:13px}
.livecnt table{border-collapse:collapse;margin-top:4px;font-size:13px}.livecnt td{padding:2px 10px 2px 0;border-top:1px solid var(--line)}.livecnt td+td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.draftn{margin:6px 0}
/* v71: negative split arrows */
.nst{font-weight:800;margin-left:3px}.nst.ok{color:var(--ok)}.nst.bad{color:var(--bad)}

/* wellness of the day (coach): one column per question, labels above the smileys */
.wemo{display:inline-grid !important;grid-template-columns:repeat(5,52px);text-align:center;align-items:end;padding:0 !important;background:none !important}
.wemo>*{display:block}
.wleghd{font-size:11px;color:var(--muted);margin-bottom:-4px}
.wleghd .attn{font-weight:500}
.wleghd small{font-size:10.5px;line-height:1.1;font-weight:600}
.wleg{margin:2px 0 4px;font-size:12px}
@media (min-width:601px){.attrow.wrow{grid-template-columns:140px 1fr 60px 260px auto auto}.wrow .wemo{grid-template-columns:repeat(5,52px)}}

/* documents and links shared by the coach (Today tab) */
.docs .dl{display:flex;flex-direction:column;gap:6px}
.docrow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card,#fff);border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;font:inherit;color:inherit}
.docrow.new{border-color:var(--rope,#0E6E8C);box-shadow:0 0 0 1px var(--rope,#0E6E8C) inset}
.docrow .di{font-size:22px;flex:none}
.docrow .dt{display:flex;flex-direction:column;min-width:0;flex:1}
.docrow .dt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docrow .dt small{font-size:12px;color:var(--muted)}
.docrow .pill{flex:none}
.dop{color:inherit;text-decoration:none}.dop:hover b{text-decoration:underline}

/* pacing analysis of continuous swims */
.pace .pnote{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-top:8px}
.pace .pnote.slow{border-left:4px solid var(--bad)}
.pace .pnote.fast{border-left:4px solid var(--ok)}
.pace .pnote summary{cursor:pointer;font-size:14px}
.pace .pnote p,.pace .pnote li{font-size:13.5px;line-height:1.5}
.pace .pnote ul{margin:4px 0 0;padding-left:18px}
.pace svg text{font-size:11px;fill:var(--muted)}

/* race analysis: raw data editor */
.rdata .rlaps,.rdata .rtaps{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.rdata .rlen{margin:6px 0;padding-top:6px;border-top:1px solid var(--line)}
.rchip{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:8px;padding:1px 2px 1px 6px;background:var(--card,#fff)}
.rchip input{width:4.6em;border:0;padding:2px;font-size:13px;background:transparent}
.rchip small{font-size:11px;color:var(--muted)}
.rchip button{border:0;background:none;color:var(--bad);font-size:16px;line-height:1;cursor:pointer;padding:0 4px}
.rchip.bad{border-color:var(--bad);background:#fdecec}
.rchip.brk{border-color:var(--water);background:rgba(14,110,140,.08)}
.racean .splits td,.racean .splits th{white-space:nowrap}

/* edit a saved test time in place */
button.te{background:none;border:0;border-bottom:1px dashed var(--muted);padding:0 1px;font:inherit;color:inherit;cursor:pointer}
button.te:hover{color:var(--rope);border-bottom-color:var(--rope)}
input.tein{width:6.5em;padding:2px 6px;font:inherit}
.smove{margin:8px 0}.smove summary{cursor:pointer;color:var(--water);font-weight:600;font-size:14px}
/* pace animation (v86) */
.panim svg{display:block;border-radius:8px;background:#fff}
.panim .pdot{transition:none}
.panim .pctl{display:flex;align-items:center;gap:8px;margin-top:8px}
.panim .pctl .ptime{flex:1;min-width:80px}
.panim .pctl .pclock{font-variant-numeric:tabular-nums;min-width:4.2em;text-align:right}
.panim .pctl select{width:auto;padding:4px 6px}
.panim .pmsg{min-height:1.4em;font-size:14px;margin-top:4px}
.panim .plegend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;margin-top:4px}
.panim .plegend i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.panim .plegend small{color:var(--muted)}
.panim .pevl{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.panim .pevl .tag{cursor:pointer;border:1px solid var(--line);background:var(--tile)}
.chr-tot{width:5.4em}.chr-tot.on{background:#fff3c4}.chr-tc{white-space:nowrap}
.panim .plegend{flex-direction:column}
.panim .plane{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}
.panim .plane b{font-size:12px;min-width:5.5em}
.panim .psplit{margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--tile)}
.panim .psh{font-size:14px;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
.panim .psnow{font-variant-numeric:tabular-nums}.panim .psnow small{color:var(--muted)}
.panim .plive{font-size:16px}
.panim .pss{display:flex;gap:4px;overflow-x:auto;margin-top:6px;padding-bottom:2px}
.panim .pss span{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;min-width:4.4em;padding:3px 5px;border-radius:8px;border:1px solid var(--line);background:#fff;font-variant-numeric:tabular-nums}
.panim .pss span small{font-size:10px;color:var(--muted)}.panim .pss span b{font-size:13px}
.panim .pss span.next{opacity:.45}.panim .pss span.cur{border-color:var(--water);box-shadow:0 0 0 2px var(--water) inset}
.panim .pa{font-style:normal;font-weight:800;font-size:13px;line-height:1}.panim .pa.up{color:var(--ok)}.panim .pa.dn{color:var(--bad)}.panim .pa.eq{color:var(--muted)}
/* Hub · Train together (v91) */
.bdnav{margin:4px 0 10px}
.bdav{border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--tile)}
.bdav0{display:inline-flex;align-items:center;justify-content:center;background:var(--water);color:#fff;font-weight:800;font-size:18px}
.bdpeople{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.bdperson{display:flex;gap:10px;align-items:center;text-align:left;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--card,#fff);color:inherit;font:inherit;cursor:pointer;margin-top:6px}
.bdperson:hover{border-color:var(--water)}.bdperson.unread{border-left:4px solid var(--water)}
.bdperson small{color:var(--muted)}
.bdspot{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:8px}
.bdspot .sub{margin:4px 0}.bdacc,.bdnote{font-size:14px;margin-top:4px;white-space:pre-wrap}
.bdprof .bdph{display:flex;gap:8px;overflow-x:auto;margin-bottom:8px}
.bdprof .bdph img{height:180px;max-width:80%;border-radius:12px;object-fit:cover;flex:0 0 auto}
.bdphotos{display:flex;gap:8px;flex-wrap:wrap}
.bdpi{position:relative;width:84px;height:84px;border-radius:12px;overflow:hidden;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;background:var(--tile)}
.bdpi img{width:100%;height:100%;object-fit:cover}
.bdpi button{position:absolute;top:3px;right:3px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;font-size:12px;padding:0}
.bdpi .bdfirst{right:auto;left:3px}
.bdadd{cursor:pointer;font-size:30px;color:var(--water)}
.bdthread{display:flex;flex-direction:column}
.bdth{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.bdmsgs{display:flex;flex-direction:column;gap:6px;max-height:60vh;min-height:200px;overflow-y:auto;padding:10px 2px}
.bdm{max-width:80%;padding:8px 11px;border-radius:16px;font-size:15px;line-height:1.4;word-wrap:break-word}
.bdm small{display:block;font-size:10.5px;opacity:.7;margin-top:3px}
.bdm.me{align-self:flex-end;background:var(--water);color:#fff;border-bottom-right-radius:4px}
.bdm.them{align-self:flex-start;background:var(--tile);border-bottom-left-radius:4px}
.bdm img,.bdm video{display:block;max-width:100%;max-height:300px;border-radius:10px;margin-bottom:4px}
.bdsend{display:flex;gap:6px;align-items:flex-end;border-top:1px solid var(--line);padding-top:8px}
.bdsend textarea{flex:1;resize:none;min-height:40px;max-height:140px}
.bdatt{cursor:pointer;font-size:18px}
/* training sets (v101) */
.setlines{display:flex;flex-direction:column;gap:6px}
.setline{display:flex;justify-content:space-between;gap:10px;align-items:center;text-align:left;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);color:inherit;font:inherit;cursor:pointer}
.setline b{white-space:nowrap;color:var(--water)}.setline:hover:not(.off){border-color:var(--water)}
.setline.off{opacity:.55;cursor:default}
.setctx{border-left:4px solid var(--water)}
.fsc{display:inline-block;min-width:2.2em;text-align:center;padding:2px 6px;border-radius:8px;color:#fff;font-weight:800}
.feelpick,.feelsel{display:inline-flex;gap:2px}.feelpick button,.feelsel button{border:1px solid var(--line);background:var(--tile);border-radius:8px;padding:2px 5px;cursor:pointer;font-size:16px}
.feelsel button.on{border-color:var(--water);background:color-mix(in srgb,var(--water) 18%,var(--card))}
.setprep .sp-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.setprep .sp-n{width:1.6em;height:1.6em;border-radius:50%;background:var(--water);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px}
.setprep .sp-i{font-weight:800;font-family:ui-monospace,monospace;min-width:2.2em}
.setprep .sp-nm{flex:1}
.tmodes{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:0 0 14px}
.tmode{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card,#fff);color:inherit;font:inherit;cursor:pointer}
.tmode span{font-size:20px}.tmode b{font-size:14.5px}.tmode small{color:var(--muted);font-size:12px;line-height:1.3}
.tmode.on{border-color:var(--water);box-shadow:0 0 0 2px var(--water) inset;background:color-mix(in srgb,var(--water) 14%,var(--card))}
