/* VSHVDOW Athletic — premium black & white. Tokens and motion from the approved prototype. */

@font-face{font-family:'Raleway';font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/raleway-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Raleway';font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/raleway-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'VSH Numerals';src:url(../fonts/aileron-300.woff2) format('woff2');font-weight:1 350;font-display:swap;unicode-range:U+0030-0039}
@font-face{font-family:'VSH Numerals';src:url(../fonts/aileron-400.woff2) format('woff2');font-weight:351 1000;font-display:swap;unicode-range:U+0030-0039}
@font-face{font-family:'Aileron';src:url(../fonts/aileron-300.woff2) format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'Aileron';src:url(../fonts/aileron-400.woff2) format('woff2');font-weight:400;font-display:swap}

:root{--bg:#0a0a0a;--raised:#121212;--raised2:#171717;--ink:#fafafa;--muted:#b5b5b5;--dim:#8c8c8c;--faint:#5c5c5c;--line:#222222;--line2:#363636;--inv-bg:#fafafa;--inv-ink:#0a0a0a;--inv-dim:#5e5e5e;--inv-line:#dcdcdc;--grain-o:.5;--glow:rgba(250,250,250,.5);--shade:rgba(0,0,0,.7);--ease:cubic-bezier(.22,.61,.36,1);--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);color-scheme:dark}
:root.light{--bg:#fafafa;--raised:#ffffff;--raised2:#f3f3f3;--ink:#0a0a0a;--muted:#4a4a4a;--dim:#6b6b6b;--faint:#b0b0b0;--line:#e2e2e2;--line2:#cfcfcf;--inv-bg:#0a0a0a;--inv-ink:#fafafa;--inv-dim:#a8a8a8;--inv-line:#2c2c2c;--grain-o:.3;--glow:rgba(10,10,10,.32);--shade:rgba(0,0,0,.25);color-scheme:light}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}
body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--ink);font-family:'VSH Numerals','Raleway',system-ui,-apple-system,'Segoe UI',sans-serif;font-weight:500;font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}
body::before{content:"";position:fixed;inset:0;background-image:url(../img/grain.png);background-size:200px 200px;opacity:var(--grain-o);pointer-events:none;z-index:0}
p,h1,h2,h3,h4,figure{margin:0}
h1,h2,h3,h4{font-weight:500}
button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:inherit;border-radius:0;-webkit-appearance:none;appearance:none}
button:disabled{cursor:default}
input,textarea,select{font:inherit;color:inherit;margin:0;border-radius:0;-webkit-appearance:none;appearance:none;background:transparent}
input::placeholder,textarea::placeholder{color:var(--faint);opacity:1}
input[type=date]{min-height:1.4em}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}
select option{color:#0a0a0a;background:#fafafa}
a{color:inherit;text-decoration:none}
:focus-visible{outline:1px solid var(--ink);outline-offset:2px}
::selection{background:var(--ink);color:var(--bg)}
svg{display:block}
[hidden]{display:none!important}

/* ---------- type */
.num{font-family:'Aileron','Raleway',sans-serif;font-variant-numeric:tabular-nums}
.lbl{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);font-weight:500}
.lbl.s{font-size:9.5px;letter-spacing:.2em}
.lbl.xs{font-size:9px;letter-spacing:.2em}
.up{text-transform:uppercase}
.mut{color:var(--muted)}.dim{color:var(--dim)}.faint{color:var(--faint)}.ink{color:var(--ink)}
.light300{font-weight:300}
.t-hero{font-size:64px;line-height:.88;letter-spacing:-.015em;text-transform:uppercase}
.t-h1{font-size:44px;line-height:.95;letter-spacing:-.01em;text-transform:uppercase}
.t-h2{font-size:30px;line-height:1.08;letter-spacing:-.005em}
.t-body{font-size:13.5px;line-height:1.55;color:var(--muted)}
.t-small{font-size:11.5px;line-height:1.55;color:var(--dim)}
.link{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);text-decoration:underline;text-underline-offset:5px}
.link:hover{color:var(--ink)}
.clip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pre{white-space:pre-line}

/* ---------- icons */
.ico{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:square;stroke-linejoin:miter;flex:none}

/* ---------- interaction */
.press{transition:transform .18s var(--ease),background-color .2s,color .2s,border-color .2s,opacity .2s}
.press:active{transform:scale(.985)}
.row-h{transition:background-color .2s}
@media (hover:hover){.row-h:hover{background:var(--raised)}.lift-h:hover{border-color:var(--dim)!important}}

/* ---------- buttons */
.btn{height:56px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11.5px;letter-spacing:.28em;text-transform:uppercase;width:100%;white-space:nowrap}
.btn.ink{background:var(--ink);color:var(--bg)}
.btn.inv{background:var(--inv-ink);color:var(--inv-bg)}
.btn.line{border:1px solid var(--line2);justify-content:center;font-size:11px;letter-spacing:.26em;height:52px}
.btn.center{justify-content:center}
.btn:disabled{opacity:.4}
.b{height:44px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;border:1px solid var(--line2);white-space:nowrap}
.b.ink{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.b.inv{background:var(--inv-ink);color:var(--inv-bg);border-color:var(--inv-ink)}
.b.edge{border-color:var(--ink)}
.b.sm{height:36px;padding:0 12px;font-size:10px;letter-spacing:.2em}
.b.lg{height:50px;padding:0 22px;font-size:11px;letter-spacing:.24em}
.b.ghost{border-color:transparent;color:var(--muted)}
.b:disabled{opacity:.4}
.sq{width:40px;height:40px;flex:none;display:flex;align-items:center;justify-content:center;border:1px solid var(--line2)}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;padding:5px 8px;border:1px solid var(--line2);white-space:nowrap;line-height:1.2}
.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip.ghost{border-color:transparent;color:var(--dim)}

/* ---------- options (scales, radios, segmented) */
.opts{display:grid;gap:4px}
.opt{height:40px;border:1px solid var(--line2);color:var(--muted);text-align:center;font-size:14px;transition:background-color .2s,color .2s,border-color .2s,transform .18s var(--ease)}
.opt:active{transform:scale(.97)}
.opt.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.seg{display:grid;border:1px solid var(--line2)}
.seg>button{height:34px;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;text-align:center;color:var(--dim);transition:background-color .25s,color .25s;padding:0 10px}
.seg>button.on{background:var(--ink);color:var(--bg)}
.radio{display:flex;gap:14px;align-items:flex-start;padding:15px 16px;border:1px solid var(--line2);text-align:left;width:100%}
.radio.on{border-color:var(--ink);background:var(--raised)}
.dot{width:16px;height:16px;flex:none;margin-top:2px;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center}
.dot::after{content:"";width:8px;height:8px;background:var(--ink);opacity:0;transition:opacity .2s}
.on>.dot,.dot.on{border-color:var(--ink)}
.on>.dot::after,.dot.on::after{opacity:1}
.tick{width:22px;height:22px;flex:none;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;color:var(--bg);transition:background-color .2s,border-color .2s}
.tick .ico{width:14px;height:14px;stroke-width:2;opacity:0;transition:opacity .2s}
.tick.on{background:var(--ink);border-color:var(--ink)}
.tick.on .ico{opacity:1}

/* ---------- inputs */
.box{width:100%;min-width:0;height:52px;padding:0 12px;border:1px solid var(--line2);font-size:16px;outline:none;transition:border-color .2s,background-color .2s}
.box:focus{border-color:var(--ink);background:var(--raised)}
.box.big{font-family:'Aileron','Raleway',sans-serif;font-size:22px;font-weight:300}
.box.sm{height:44px;font-size:15px}
.area{display:block;width:100%;padding:14px;border:1px solid var(--line2);font-size:14px;line-height:1.5;resize:none;outline:none;transition:border-color .2s}
.area:focus{border-color:var(--ink)}
.uline{display:block;width:100%;padding:0 0 8px;border:0;border-bottom:1px solid var(--line2);outline:none;font-size:16px}
.fld{display:block}
.fld>.lbl{display:block}
.fld>input,.fld>select,.fld>textarea{margin-top:8px}
select.uline{padding-right:18px;background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);background-position:calc(100% - 7px) 9px,calc(100% - 2px) 9px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}

/* ---------- surfaces */
.card{border:1px solid var(--line);background:var(--raised)}
.inv{background:var(--inv-bg);color:var(--inv-ink)}
.inv .lbl,.inv .dim{color:var(--inv-dim)}
.list{border-top:1px solid var(--line)}
.li{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);width:100%;text-align:left}
.stats{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr))}
.stat>.v{font-size:28px;font-weight:300;line-height:1}
.stat>.k{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-top:7px}
.inv .stat>.k{color:var(--inv-dim)}
.stat+.stat{border-left:1px solid var(--line);padding-left:12px}
.inv .stat+.stat{border-left-color:var(--inv-line)}
.bar{height:2px;background:var(--line2);position:relative}
.bar>span{position:absolute;left:0;top:0;bottom:0;background:var(--ink)}

/* ---------- client shell */
.app{position:relative;z-index:1;height:100vh;height:100dvh;display:flex;flex-direction:column;max-width:560px;margin:0 auto}
@media (min-width:700px){.app{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
.hdr{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(18px + var(--safe-t)) 20px 8px}
.hdr .brand{display:flex;align-items:center;gap:12px;min-width:0}
.hdr .vt{width:1px;height:14px;background:var(--line2)}
.hdr .ttl{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.avatar{width:36px;height:36px;flex:none;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;font-size:11px;letter-spacing:.12em}
.main{position:relative;z-index:1;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;padding:14px 20px 36px;display:flex;flex-direction:column;gap:32px}
.main::-webkit-scrollbar{display:none}
.tabbar{position:relative;z-index:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--line);background:var(--bg);padding:0 6px calc(12px + var(--safe-b))}
.tabbar a{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:12px;padding-bottom:8px;color:var(--dim);transition:color .25s}
.tabbar a[aria-current=page]{color:var(--ink)}
.tabbar a span.t{font-size:9px;letter-spacing:.2em;text-transform:uppercase}
.tabbar .tl{position:absolute;top:-1px;left:28%;right:28%;height:1px;background:var(--ink)}
.foot{position:relative;z-index:2;padding:12px 20px calc(16px + var(--safe-b));border-top:1px solid var(--line);background:var(--bg)}
.banner{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 16px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;border-bottom:1px solid var(--line);color:var(--muted);background:var(--bg)}
.banner.inv{border-bottom:0}

/* ---------- sheets & dialogs */
.scrim{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;animation:vshFadeIn .25s var(--ease) both}
:root.light .scrim{background:rgba(10,10,10,.28)}
.sheet{position:relative;width:100%;max-width:560px;max-height:92dvh;display:flex;flex-direction:column;background:var(--bg);border-top:1px solid var(--line2);animation:vshSheet .45s var(--ease) both}
.sheet::before{content:"";position:absolute;inset:0;background-image:url(../img/grain.png);background-size:200px 200px;opacity:var(--grain-o);pointer-events:none}
.sheet>*{position:relative}
.sheet .sh-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 12px}
.sheet .sh-b{overflow-y:auto;padding:4px 20px calc(24px + var(--safe-b));scrollbar-width:none}
.sheet .sh-b::-webkit-scrollbar{display:none}
@media (min-width:760px){.scrim{align-items:center}.sheet{max-width:600px;border:1px solid var(--line2);max-height:86vh}.sheet.wide{max-width:860px}}
@keyframes vshSheet{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes vshFadeIn{from{opacity:0}to{opacity:1}}
.toast{position:fixed;z-index:80;left:50%;bottom:calc(92px + var(--safe-b));transform:translateX(-50%);max-width:min(520px,calc(100vw - 32px));padding:14px 18px;background:var(--inv-bg);color:var(--inv-ink);font-size:13px;line-height:1.45;box-shadow:0 22px 44px -22px var(--shade);display:flex;gap:12px;align-items:center;animation:vshToast .45s var(--ease) both}
.toast.error{outline:1px solid var(--inv-ink);outline-offset:-4px}
@keyframes vshToast{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}

/* ---------- coach shell */
.coach{position:relative;z-index:1;min-height:100vh;min-height:100dvh;display:flex;align-items:stretch}
.side{position:sticky;top:0;width:248px;flex:none;height:100vh;height:100dvh;display:flex;flex-direction:column;gap:36px;padding:32px 24px;border-right:1px solid var(--line)}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;font-size:14px;color:var(--muted);transition:background-color .2s,color .2s}
.side nav a[aria-current=page]{background:var(--ink);color:var(--bg)}
@media (hover:hover){.side nav a:not([aria-current=page]):hover{background:var(--raised);color:var(--ink)}}
.side .who{margin-top:auto;display:flex;align-items:center;gap:12px;padding-top:20px;border-top:1px solid var(--line)}
.cmain{position:relative;flex:1;min-width:0;padding:40px clamp(20px,4vw,56px) 64px}
.cwrap{max-width:1120px;display:flex;flex-direction:column;gap:40px}
.cwrap.narrow{max-width:760px}
.badge{font-size:11px;padding:1px 6px;border:1px solid var(--line2);color:var(--ink)}
[aria-current=page] .badge{border-color:var(--bg);color:var(--bg)}
@media (max-width:900px){
  .coach{flex-direction:column}
  .side{position:sticky;z-index:10;width:auto;height:auto;flex-direction:row;align-items:center;gap:16px;padding:calc(10px + var(--safe-t)) 16px 10px;border-right:0;border-bottom:1px solid var(--line);background:var(--bg)}
  .side .lock{display:none}
  .side .markonly{display:flex!important}
  .side nav{flex-direction:row;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
  .side nav::-webkit-scrollbar{display:none}
  .side nav a{padding:8px 10px;font-size:12.5px;white-space:nowrap}
  .side nav .np{display:none}
  .side .who{display:none}
  .cmain{padding:24px 16px 56px}
  .cwrap{gap:30px}
}
.markonly{display:none}

/* coach tables */
.tbl{border-top:1px solid var(--ink)}
.tr{display:grid;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.tr.th{padding:12px 0;font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}
.hscroll{overflow-x:auto;scrollbar-width:thin}
.cell{width:100%;min-width:0;height:38px;padding:0 10px;border:1px solid transparent;font-size:12.5px;outline:none;transition:border-color .2s,background-color .2s}
@media (hover:hover){.cell:hover{border-color:var(--line2)}}
.cell:focus{border-color:var(--ink);background:var(--raised)}
.ans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:640px){.ans{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ctabs{display:flex;gap:26px;min-width:max-content;border-bottom:1px solid var(--line)}
.ctabs button{position:relative;padding:14px 0;font-size:12.5px;color:var(--dim);white-space:nowrap;transition:color .25s}
.ctabs button.on{color:var(--ink)}
.ctabs .tb{position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease)}
.ctabs button.on .tb{transform:scaleX(1)}

/* ---------- motion (approved): hairlines draw in, data lines trace, one slow glint, focus lines draw */
@keyframes vshRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.rise{animation:vshRise .7s var(--ease) both}
@property --ln{syntax:'<percentage>';inherits:false;initial-value:120%}
@keyframes vshLn{from{--ln:0%}to{--ln:120%}}
.ln,.lnv{--lc:var(--line);animation:vshLn 1.4s var(--ease) backwards;animation-delay:min(calc(var(--d,.1) * 1s + var(--i,0) * 60ms),1.6s)}
.ln{border-image:linear-gradient(90deg,var(--lc) calc(var(--ln) - 20%),transparent var(--ln)) 1!important}
.lnv{border-image:linear-gradient(180deg,var(--lc) calc(var(--ln) - 20%),transparent var(--ln)) 1!important}
.lc2{--lc:var(--line2)}.lck{--lc:var(--ink)}.lci{--lc:var(--inv-line)}
.rise.ln,.rise.lnv{animation:vshRise .7s var(--ease) both,vshLn 1.4s var(--ease) backwards}
@keyframes vshGrow{from{transform:scaleX(0)}}
.grow{transform-origin:left;animation:vshGrow 1.1s var(--ease) backwards;animation-delay:min(calc(var(--d,.3) * 1s + var(--i,0) * 60ms),1.6s)}
.grow.tk{animation-duration:.6s;animation-delay:calc(.15s + var(--i,0) * 45ms)}
.tabline{transform-origin:center;animation:vshGrow .9s var(--ease) .2s backwards}
.tabbar-anim{animation:vshGrow .9s var(--ease) .3s backwards}
@keyframes vshGrowY{from{transform:scaleY(0)}}
.vtick{animation:vshGrowY .8s var(--ease) .1s backwards}
@keyframes vshTrace{from{stroke-dashoffset:1.001}to{stroke-dashoffset:0}}
.trace{stroke-dasharray:1 2;animation:vshTrace 1.8s cubic-bezier(.45,.05,.25,1) backwards;animation-delay:min(calc(var(--d,.35) * 1s + var(--i,0) * 90ms),1.6s)}
@keyframes vshWipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.wipe{animation:vshWipe 1.3s var(--ease) .1s backwards}
.glint{position:relative}
@keyframes vshGlint{0%{background-position:-60% 0}33%,100%{background-position:160% 0}}
.glint::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--glow),transparent) no-repeat;background-size:30% 100%;animation:vshGlint 12s cubic-bezier(.45,0,.55,1) var(--gd,2.2s) infinite both;z-index:3}
.glint.gb::before{top:auto;bottom:-1px}.glint.gs::before{top:0;height:100%}
.field{position:relative}
.field::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease);pointer-events:none}
.field.fi::after{bottom:0}.field:focus-within::after{transform:scaleX(1)}
@keyframes vshFade{from{opacity:0;letter-spacing:.6em}to{opacity:1}}
.fade{animation:vshFade 1.4s var(--ease) both}
@keyframes vshSpin{to{transform:rotate(360deg)}}
.vignette{position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(120% 70% at 50% 28%,rgba(255,255,255,.06),rgba(0,0,0,0) 60%)}
:root.light .vignette{background:radial-gradient(120% 70% at 50% 28%,rgba(0,0,0,.04),rgba(0,0,0,0) 60%)}
@keyframes vshPulse{0%,100%{opacity:.35}50%{opacity:1}}
.loading-line{position:relative;height:1px;width:120px;background:var(--line2);overflow:hidden}
.loading-line::after{content:"";position:absolute;inset:0;background:var(--ink);transform-origin:left;animation:vshLoad 1.6s var(--ease) infinite}
@keyframes vshLoad{0%{transform:translateX(-100%) scaleX(.3)}60%{transform:translateX(40%) scaleX(.6)}100%{transform:translateX(110%) scaleX(.3)}}
@media (prefers-reduced-motion:reduce){.rise,.ln,.lnv,.grow,.tabline,.tabbar-anim,.vtick,.trace,.wipe,.fade,.sheet,.scrim,.toast{animation:none!important}.glint::before{display:none}.field::after{transition:none!important}.loading-line::after{animation-duration:3s}}

/* ---------- print-free utilities */
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.flex{display:flex}.col{display:flex;flex-direction:column}.wrap{flex-wrap:wrap}.ac{align-items:center}.ab{align-items:baseline}.ae{align-items:flex-end}.jb{justify-content:space-between}.jc{justify-content:center}.f1{flex:1;min-width:0}.nowrap{white-space:nowrap}.tr-r{text-align:right}.tc{text-align:center}
.g4{gap:4px}.g6{gap:6px}.g8{gap:8px}.g10{gap:10px}.g12{gap:12px}.g14{gap:14px}.g16{gap:16px}.g20{gap:20px}.g24{gap:24px}.g28{gap:28px}
