.demobar{align-items:center;gap:var(--s3);padding:9px var(--s7);background:linear-gradient(90deg, var(--brand-50), var(--surface) 70%);border-bottom:1px solid var(--line);font-size:var(--fs-13);line-height:1.4;display:flex}.demobar__mark{background:var(--carbon);flex:none;place-items:center;width:20px;height:20px;display:grid}.demobar__tag{text-transform:uppercase;letter-spacing:.1em;font-size:var(--fs-12);color:var(--brand-700);flex:none;font-weight:800}.demobar__text{color:var(--text);min-width:0}.demobar__actions{align-items:center;gap:var(--s2);flex:none;margin-left:auto;display:flex}.demobar__connect{cursor:pointer;background:var(--strava);color:#fff;border:1px solid var(--strava);font:inherit;font-weight:700;font-size:var(--fs-13);transition:filter var(--dur) var(--ease), transform var(--dur) var(--ease);align-items:center;gap:7px;padding:7px 14px;display:inline-flex}.demobar__connect:hover{filter:brightness(1.05)}.demobar__connect:active{transform:translateY(1px)}.demobar__exit{cursor:pointer;border:1px solid var(--line);color:var(--muted);font:inherit;font-weight:600;font-size:var(--fs-13);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;padding:7px 12px}.demobar__exit:hover{background:var(--surface-3);color:var(--ink)}@media (width<=760px){.demobar{padding:8px var(--s4);gap:var(--s2);flex-wrap:wrap}.demobar__text{flex-basis:100%;order:3}}.appfooter{border-top:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:var(--s3) var(--s5);padding:var(--s4) var(--s7);font-size:var(--fs-12);color:var(--faint);flex-wrap:wrap;margin-top:auto;display:flex}.appfooter__links{gap:var(--s2) var(--s4);flex-wrap:wrap;display:flex}.appfooter__links a{color:var(--muted);transition:color var(--dur) var(--ease);text-decoration:none}.appfooter__links a:hover{color:var(--brand-700)}.appfooter__end{align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex}.appfooter__copy{color:var(--faint)}@media (width<=900px){.appfooter{padding:var(--s4) var(--s4) calc(84px + env(safe-area-inset-bottom));justify-content:flex-start}}.landing{background:radial-gradient(1200px 600px at 50% -10%, var(--brand-50), transparent 60%), var(--bg);padding:clamp(24px, 7vh, 80px) var(--s5);place-items:start center;display:grid;position:fixed;inset:0;overflow:auto}.landing__lang{top:var(--s4);right:var(--s4);position:fixed}.landing__inner{text-align:center;width:100%;max-width:760px}.landing__brand{margin-bottom:var(--s6);align-items:center;gap:10px;display:inline-flex}.landing__mark{background:var(--carbon);place-items:center;width:34px;height:34px;display:grid}.landing__name{font-size:var(--fs-24);letter-spacing:-.02em;font-weight:800}.landing__name b{color:var(--brand)}.landing__eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:var(--fs-12);color:var(--muted);margin-bottom:var(--s3);font-weight:700}.landing__hero{letter-spacing:-.03em;color:var(--ink);margin:0 auto var(--s4);max-width:14ch;font-size:clamp(30px,6vw,52px);font-weight:800;line-height:1.05}.landing__lead{font-size:var(--fs-17);color:var(--text);max-width:56ch;margin:0 auto var(--s6);line-height:1.6}.landing__cta{cursor:pointer;background:var(--strava);color:#fff;border:1px solid var(--strava);font:inherit;font-weight:700;font-size:var(--fs-15);transition:filter var(--dur) var(--ease), transform var(--dur) var(--ease);align-items:center;gap:8px;padding:12px 22px;display:inline-flex}.landing__cta:hover{filter:brightness(1.05)}.landing__cta:active{transform:translateY(1px)}.landing__cta-mark{color:#fff}.landing__features{gap:var(--s3);margin:var(--s8) auto 0;text-align:left;grid-template-columns:1fr 1fr;max-width:680px;list-style:none;display:grid}.landing__feature{background:var(--surface);border:1px solid var(--line);padding:var(--s4)}.landing__feature-t{font-weight:700;font-size:var(--fs-14);color:var(--ink);margin-bottom:4px}.landing__feature-b{font-size:var(--fs-13);color:var(--muted);line-height:1.5}.landing__powered{margin-top:var(--s7);color:var(--faint);font-size:var(--fs-12);align-items:center;gap:6px;display:inline-flex}.landing__legal{margin-top:var(--s3);justify-content:center;gap:var(--s2) var(--s4);font-size:var(--fs-12);flex-wrap:wrap;display:flex}.landing__legal a{color:var(--muted);transition:color var(--dur) var(--ease);text-decoration:none}.landing__legal a:hover{color:var(--brand-700)}.landing__loading{place-items:center;gap:var(--s4);margin-top:var(--s8);color:var(--muted);display:grid}.landing__spinner{border:3px solid var(--line);border-top-color:var(--brand);width:24px;height:24px;animation:.8s linear infinite landing-spin}@keyframes landing-spin{to{transform:rotate(360deg)}}.landing__eyebrow,.landing__hero,.landing__lead,.landing__cta{animation:landing-rise .5s var(--ease) both}.landing__hero{animation-delay:40ms}.landing__lead{animation-delay:90ms}.landing__cta{animation-delay:.14s}.landing__feature{animation:landing-rise .5s var(--ease) both}@keyframes landing-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (width<=640px){.landing__features{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.landing__eyebrow,.landing__hero,.landing__lead,.landing__cta,.landing__feature{animation:none}.landing__spinner{animation-duration:1.6s}}.panel-error{align-items:flex-start;gap:var(--s3);max-width:560px;padding:var(--s6);flex-direction:column;display:flex}.panel-error__icn{width:40px;height:40px;color:var(--bad);background:var(--bad-bg);flex:none;place-items:center;display:grid}.panel-error__icn svg{width:22px;height:22px}.panel-error__title{font-size:var(--fs-20);letter-spacing:-.01em;color:var(--ink);font-weight:800}.panel-error__body{margin:var(--s2) 0 0;font-size:var(--fs-15);color:var(--muted);line-height:1.6}.panel-error__actions{align-items:center;gap:var(--s2);margin-top:var(--s1);flex-wrap:wrap;display:flex}.panel-error__details{width:100%;margin-top:var(--s2)}.panel-error__details>summary{cursor:pointer;font-size:var(--fs-12);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700}.panel-error__trace{margin:var(--s2) 0 0;padding:var(--s3);background:var(--surface-2);border:1px solid var(--line);font-family:var(--font-mono);font-size:var(--fs-12);color:var(--text);white-space:pre-wrap;line-height:1.5;overflow-x:auto}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-cyrillic-ext-800-normal-BZOjs1Xv.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-800-normal-Ca-gJeZY.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-cyrillic-800-normal-C7MGvYyJ.woff2)format("woff2"),url(/assets/inter-cyrillic-800-normal-CCHyn08d.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-greek-ext-800-normal-B--PVpEC.woff2)format("woff2"),url(/assets/inter-greek-ext-800-normal-DUe57HfS.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-greek-800-normal-CLIouy3y.woff2)format("woff2"),url(/assets/inter-greek-800-normal-BU00tryP.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-vietnamese-800-normal-Cm7tD1pz.woff2)format("woff2"),url(/assets/inter-vietnamese-800-normal-DDlpr_Ee.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-latin-ext-800-normal-DZJjya6U.woff2)format("woff2"),url(/assets/inter-latin-ext-800-normal-BOMpwxm3.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-latin-800-normal-BYj_oED-.woff2)format("woff2"),url(/assets/inter-latin-800-normal-D1mf63XC.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--brand-900:#1e3a8a;--brand-800:#1e40af;--brand-700:#1d4ed8;--brand:#2563eb;--brand-400:#60a5fa;--brand-300:#93b4ff;--brand-100:#dbe6ff;--brand-50:#eef4ff;--ink:#0b1220;--carbon:#0b1220;--bg:#f4f6f8;--surface:#fff;--surface-2:#f7f9fb;--surface-3:#eef1f5;--wash-h:linear-gradient(90deg, var(--surface) 0%, var(--surface) 32%, #ffffffd9 55%, #ffffff8c 100%);--wash-v:linear-gradient(180deg, var(--surface) 0%, var(--surface) 36%, #ffffffd9 58%, #ffffff8c 100%);--line:#e2e6ec;--line-strong:#cdd4dd;--line-ink:#0b1220;--border:#e2e6ec;--border-2:#eef1f5;--border-strong:#cdd4dd;--text:#1c2632;--muted:#5b6675;--faint:#616a78;--on-dark:#f4f7fb;--good:#16a34a;--good-bg:#e7f7ee;--good-700:#15803d;--warn:#d9920a;--warn-bg:#fbf1dd;--bad:#e5484d;--bad-bg:#fceded;--info:#0ea5e9;--info-bg:#e6f6fd;--z1:#9aa6b5;--z2:#4f9be8;--z3:#22b07d;--z4:#e0b312;--z5:#ee8a2a;--z6:#e5575e;--z7:#9b5de5;--strava:#fc5200;--font:"Inter","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;--font-cjk:"Noto Sans TC","PingFang TC","Microsoft JhengHei",var(--font);--font-mono:"IBM Plex Mono","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-15:15px;--fs-17:17px;--fs-20:20px;--fs-24:24px;--fs-30:30px;--fs-38:38px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s7:32px;--s8:40px;--s9:56px;--section-gap:var(--s6);--r-xs:0;--r-sm:0;--r:0;--r-lg:0;--r-pill:0;--sh-1:0 1px 0 var(--line);--sh-2:none;--sh-3:none;--sh-pop:0 10px 30px #0b122024, 0 2px 8px #0b122014;--bench:#eff2f6;--sh-panel:0 1px 2px #0b12200a, 0 3px 10px #0b122008;--sh-panel-hover:0 2px 4px #0b12200f, 0 8px 18px #0b12200d;--sh-topbar:0 4px 14px #0b12200a;--sh-card-3d:0 1px 0 #fff9 inset, 0 1px 1px #0b12200d, 0 3px 5px #0b122012, 0 8px 14px #0b12200f;--sh-card-3d-hover:0 1px 0 #ffffffb3 inset, 0 2px 3px #0b122014, 0 8px 14px #0b12201a, 0 16px 26px #0b12201a;--acc-analyze:var(--brand);--acc-coach:#0d9488;--acc-tools:#7c3aed;--sec:var(--acc-analyze);--ease:cubic-bezier(.2,.7,.3,1);--dur:.16s;--rail-w:232px;--dur-fast:80ms;--dur-slow:.4s;--map-h:clamp(440px, 58vh, 620px);--map-h-hero:clamp(480px, 66vh, 720px)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-15);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}html[lang^=zh] body{font-family:var(--font-cjk)}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.014em;margin:0;font-weight:750}a{color:inherit}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:var(--fs-13)}.error{color:var(--bad)}.streamlegend{margin-bottom:var(--s2);flex-wrap:wrap;align-items:center;gap:10px;padding:4px 2px 2px;display:flex}.streamlegend__item{align-items:center;gap:4px;display:inline-flex}.streamlegend__sw{border:1px solid #0000001f;width:10px;height:10px;display:inline-block}.streams-stack .uplot-host+.uplot-host{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:0}.app{grid-template-columns:var(--rail-w) 1fr;min-height:100vh;display:grid}.rail{background:var(--surface);color:var(--muted);gap:var(--s1);padding:var(--s5) var(--s3);border-right:1px solid var(--line);flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.brand{padding:6px 8px var(--s5);color:var(--ink);align-items:center;gap:10px;display:flex}.brand__mark{background:var(--brand);flex:none;place-items:center;width:28px;height:28px;display:grid}.brand__name{font-weight:820;font-size:var(--fs-20);letter-spacing:-.02em;color:var(--ink)}.brand__name b{color:var(--brand);font-weight:820}.nav{flex-direction:column;gap:1px;display:flex}.nav__divider{background:var(--line);height:1px;margin:6px 10px}.navbtn{color:var(--muted);cursor:pointer;font:inherit;font-size:var(--fs-14);text-align:left;width:100%;transition:background var(--dur) var(--ease), color var(--dur);background:0 0;border:0;border-left:3px solid #0000;align-items:center;gap:11px;padding:9px 11px;font-weight:600;text-decoration:none;display:flex}.navbtn svg{opacity:.85;flex:none;width:18px;height:18px}.navbtn:hover{background:var(--surface-3);color:var(--ink)}.navbtn.is-active{background:var(--brand-50);color:var(--ink);border-left-color:var(--brand);font-weight:700}.navbtn.is-active svg{opacity:1;color:var(--brand)}.navbtn--more{display:none}.rail__foot{padding:var(--s3) 10px 2px;border-top:1px solid var(--line);font-size:var(--fs-12);color:var(--faint);margin-top:auto}.powered{color:var(--faint);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:7px;margin-top:8px;font-size:11px;font-weight:700;display:flex}.powered__sb{background:var(--strava);flex:none;width:13px;height:13px}.main{background-color:var(--bench);background-image:radial-gradient(circle,#0b12200b 1px,#0000 1.6px);background-position:12px 12px;background-size:24px 24px;flex-direction:column;min-width:0;display:flex}@media print{.main{background:0 0!important}.panel,.card{box-shadow:none!important}}.topbar{align-items:center;gap:var(--s3);padding:var(--s4) var(--s7);background:var(--surface);border-bottom:1px solid var(--line);z-index:20;box-shadow:var(--sh-topbar);display:flex;position:sticky;top:0}.topbar__title{border-left:3px solid var(--sec);min-width:0;padding-left:var(--s3)}.topbar__title h1{font-size:var(--fs-24);letter-spacing:-.02em;font-weight:800}.topbar__sub{color:var(--muted);font-size:var(--fs-13);margin-top:1px}.spacer{flex:1}.syncchip{align-items:center;gap:var(--s2);border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font-size:var(--fs-12);flex:none;padding:4px 10px;display:flex}.syncchip--paused{color:var(--warn);border-color:var(--warn-bg);background:var(--warn-bg)}.syncchip__bar{background:var(--surface-3);width:48px;height:4px;overflow:hidden}.syncchip__fill{background:var(--brand);height:100%;transition:width .4s var(--ease);display:block}.syncchip--paused .syncchip__fill{background:var(--warn)}.syncchip__txt{white-space:nowrap;font-variant-numeric:tabular-nums}@media (width<=720px){.syncchip__txt{display:none}}.iconbtn{cursor:pointer;background:var(--surface);border:1px solid var(--line-strong);width:34px;height:34px;color:var(--muted);font:inherit;font-weight:800;font-size:var(--fs-15);transition:border-color var(--dur), color var(--dur), background var(--dur);flex:none;place-items:center;display:grid}.iconbtn:hover{border-color:var(--brand);color:var(--brand-700);background:var(--brand-50)}.avatar{cursor:pointer;color:#fff;width:34px;height:34px;font-weight:800;font-size:var(--fs-13);background:var(--ink);font-family:var(--font-mono);letter-spacing:.02em;border:0;flex:none;place-items:center;display:grid}.avatar:hover{background:var(--brand-700)}.seg{background:var(--surface);border:1px solid var(--line-strong);padding:0;display:inline-flex}.seg button{color:var(--muted);font:inherit;font-size:var(--fs-13);cursor:pointer;transition:background var(--dur), color var(--dur);border:0;border-right:1px solid var(--line);background:0 0;padding:6px 13px;font-weight:700}.seg button:last-child{border-right:0}.seg button.is-on{background:var(--ink);color:#fff}.page{padding:var(--s6) var(--s7) var(--s9);width:100%;max-width:min(1640px,100%);margin-inline:auto}.page__sections{gap:var(--section-gap);flex-direction:column;display:flex}.page__sections>.page__head{margin-top:0;margin-bottom:0}.page__sections>.fit-bar,.page__sections>.rise.fit-bar{margin-bottom:0}.page__head{margin:var(--s7) 2px var(--s3);align-items:baseline;gap:10px;display:flex}.page__head:first-child{margin-top:0}.page__head:after{content:"";background:var(--line);flex:auto;align-self:center;min-width:24px;height:1px}.page__head h3{font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);font-weight:800}.page__head .q{color:var(--muted);font-size:var(--fs-13)}.eyebrow{font-size:var(--fs-11);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:800}@media (width>=1500px){.page{padding-inline:var(--s9)}}.panel--glance{min-height:124px}.grid{gap:var(--s4);grid-template-columns:repeat(3,1fr);display:grid}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}.grid--4>.panel:nth-child(4n+1):last-child{grid-column:span 4}.grid--4>.panel:nth-child(4n+2):last-child{grid-column:span 3}.grid--4>.panel:nth-child(4n+3):last-child{grid-column:span 2}.card,.panel{background:var(--surface);border:1px solid var(--line);border-bottom-color:var(--line-strong);box-shadow:var(--sh-panel)}.card--pad,.panel--pad{padding:var(--s5) var(--s5)}.panel--fill{flex-direction:column;display:flex}.fill-grow{flex:auto;min-height:0}.card--link{color:inherit;cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease);text-decoration:none;display:block}.card--link:hover{border-color:var(--line-strong);background:var(--surface-2);box-shadow:var(--sh-panel-hover)}.card__head{margin-bottom:var(--s3);justify-content:space-between;align-items:center;display:flex}.card__title,.panelhead{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);align-items:center;gap:6px;margin:0;font-weight:800;display:flex}.panelhead{padding-bottom:var(--s2);border-bottom:1px solid var(--line);margin-bottom:var(--s3)}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.panel-read{border-left:3px solid var(--ink);padding:2px 0 2px var(--s3);margin:0 0 var(--s4);color:var(--text);font-size:var(--fs-14);max-width:70ch;line-height:1.55}.panel-read--brand{border-left-color:var(--brand)}.panel-read--muted{margin-top:var(--s2);border-left-color:var(--line-strong)}.panel-read--titled{flex-direction:column;gap:4px;display:flex}.panel-read__title{font-size:var(--fs-12);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:800}.panel-read__body{display:block}.stat-row{gap:var(--s6);flex-wrap:wrap;display:flex}.statgrid{gap:var(--s5) var(--s4);grid-template-columns:repeat(auto-fit,minmax(104px,1fr));display:grid}.stat,.statcell{min-width:84px}.stat__label,.statcell__label{font-size:var(--fs-12);color:var(--muted);align-items:center;gap:5px;font-weight:600;display:flex}.stat__value,.statcell__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-24);color:var(--ink);letter-spacing:-.02em;font-weight:700}.stat__value small,.statcell__value small{font-size:var(--fs-13);color:var(--muted);font-weight:600;font-family:var(--font)}.stat__sub,.statcell__sub{font-size:var(--fs-13);color:var(--muted);margin-top:2px}.pill{font-size:var(--fs-12);background:var(--surface-3);color:var(--muted);border:1px solid var(--line);align-items:center;gap:6px;padding:3px 9px;font-weight:700;display:inline-flex}.pill--good{background:var(--good-bg);color:var(--good-700);border-color:#0000}.pill--warn{background:var(--warn-bg);color:var(--warn);border-color:#0000}.pill--bad{background:var(--bad-bg);color:var(--bad);border-color:#0000}.pill--info{background:var(--info-bg);color:var(--info);border-color:#0000}.pill--dot:before{content:"";background:currentColor;width:7px;height:7px}.chip{background:var(--surface-3);border:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums;padding:2px 8px;font-size:11px;font-weight:700}.chip--up{color:var(--good-700);background:var(--good-bg);border-color:#0000}.chip--down{color:var(--bad);background:var(--bad-bg);border-color:#0000}.chip--good{color:var(--good-700);background:var(--good-bg);border-color:#0000}.chip--warn{color:var(--warn);background:var(--warn-bg);border-color:#0000}.chip--bad{color:var(--bad);background:var(--bad-bg);border-color:#0000}.chip--info{color:var(--info);background:var(--info-bg);border-color:#0000}.chiprow{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.cr10{margin-top:var(--s2);flex-wrap:wrap;gap:8px;display:flex}.cr10__btn{border:1px solid var(--line-strong);background:var(--surface);min-width:44px;min-height:44px;color:var(--muted);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;transition:all var(--dur) var(--ease);padding:0 10px;font-weight:700}.cr10__btn:hover{border-color:var(--brand);color:var(--brand-700)}.cr10__btn.is-on{background:var(--ink);color:#fff;border-color:var(--ink)}.cr10__word{margin-top:var(--s2);font-size:var(--fs-13);color:var(--muted);font-weight:600}.btn{border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:700;font-size:var(--fs-14);cursor:pointer;transition:all var(--dur) var(--ease);padding:9px 16px}.btn:hover{border-color:var(--brand);color:var(--brand-700);background:var(--brand-50)}.btn--primary{background:var(--brand);color:#fff;border-color:var(--brand)}.btn--primary:hover{background:var(--brand-700);color:#fff;border-color:var(--brand-700)}.btn--ghost{color:var(--muted);background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--surface-3);color:var(--ink);border-color:#0000}.btn--sm{font-size:var(--fs-13);padding:6px 12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--ai{color:#fff;background:linear-gradient(120deg, var(--brand) 0%, #4f46e5 48%, var(--acc-coach) 100%);border:1px solid #0000;position:relative;overflow:hidden;box-shadow:0 2px 12px #0d94884d,inset 0 1px #ffffff2e}.btn--ai:hover{color:#fff;background:linear-gradient(120deg, var(--brand-700) 0%, #4338ca 48%, #0f766e 100%);border-color:#0000;box-shadow:0 4px 18px #0d948866,inset 0 1px #ffffff38}.btn--ai:disabled{background:linear-gradient(120deg, var(--brand) 0%, var(--acc-coach) 100%)}.btn-ai__spark{margin-right:6px;font-weight:900;display:inline-block;transform:translateY(.5px)}.btn--ai:after{content:"";pointer-events:none;width:42%;height:100%;animation:ai-sheen 2.8s var(--ease) infinite;background:linear-gradient(100deg,#0000,#ffffff73,#0000);position:absolute;top:0;left:-60%;transform:skew(-18deg)}.btn--ai:disabled:after{opacity:0;animation:none}@keyframes ai-sheen{0%{left:-60%}55%,to{left:130%}}@media (prefers-reduced-motion:reduce){.btn--ai:after{opacity:0;animation:none}}.ai-powered{font:700 var(--fs-12)/1.4 var(--font-mono);color:var(--acc-coach,#0d9488);letter-spacing:.04em;align-items:center;gap:5px;display:inline-flex}.ai-powered__spark{font-weight:900}.toast{left:50%;bottom:calc(18px + env(safe-area-inset-bottom));z-index:60;align-items:center;gap:var(--s4);background:var(--surface);border:1px solid var(--line-strong);max-width:min(92vw,440px);animation:toast-in .22s var(--ease);padding:12px 14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #0f172a1f}.toast__title{font-weight:700;font-size:var(--fs-13);color:var(--brand-700)}.toast__text{font-size:var(--fs-14);color:var(--text)}.toast__actions{flex-shrink:0;gap:6px;display:flex}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.kit-recs{gap:var(--s3);margin-top:var(--s3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.kit-rec{border:1px solid var(--line);padding:10px 12px}.kit-rec__label{font-size:var(--fs-12);color:var(--muted);font-weight:500}.kit-rec__pick{font-weight:700;font-size:var(--fs-16);margin:2px 0 4px}.kit-inputs{gap:var(--s4);margin-top:var(--s3);flex-wrap:wrap;display:flex}.kit-inputs .field{min-width:140px}.suggest-row{justify-content:space-between;align-items:center;gap:var(--s4);margin-top:var(--s2);flex-wrap:wrap;display:flex}.btnrow{gap:var(--s2);flex-wrap:wrap;display:flex}.link{color:var(--brand-700);font-weight:700;font-size:var(--fs-13);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0;font-family:inherit;text-decoration:none;display:inline-flex}.link:hover{color:var(--brand-900);text-decoration:underline}.viewstrava{color:var(--strava);font-weight:700;font-size:var(--fs-13);align-items:center;gap:5px;text-decoration:none;display:inline-flex}.viewstrava:hover{text-decoration:underline}.connect-gate h2{font-size:var(--fs-30);margin:8px 0 var(--s3);letter-spacing:-.02em;line-height:1.16}.connect-gate__lead{margin:0 0 var(--s4);color:var(--text);max-width:64ch}.connect-gate__points{gap:var(--s2);margin:0 0 var(--s5);color:var(--muted);font-size:var(--fs-14);display:grid}.connect-gate__points div{grid-template-columns:8px minmax(0,1fr);align-items:flex-start;gap:9px;display:grid}.connect-gate__mark{background:var(--brand);flex:none;width:8px;height:8px;margin-top:.55em}.info-dot{box-sizing:border-box;background:var(--brand-50);color:var(--brand-700);cursor:help;border:1px solid var(--brand-100);vertical-align:middle;font-size:10px;font-weight:800;line-height:1;font-family:var(--font-mono);transition:background var(--dur), color var(--dur);flex:none;place-items:center;margin:0 1px;padding:0;display:inline-grid;width:16px!important;min-width:16px!important;height:16px!important;min-height:16px!important}.info-dot:hover{background:var(--brand);color:#fff;border-color:var(--brand)}.term{border-bottom:1.5px dotted var(--brand-300);cursor:help;color:var(--ink);font-weight:650}.popover-backdrop{z-index:60;position:fixed;inset:0}.popover{z-index:61;background:var(--surface);border:1px solid var(--line-strong);width:min(340px,100vw - 32px);box-shadow:var(--sh-pop);padding:var(--s4) var(--s5);position:fixed}.popover__title{font-weight:800;font-size:var(--fs-15);align-items:center;gap:8px;display:flex}.popover__abbr{color:var(--brand-700);background:var(--brand-50);font-size:11px;font-weight:800;font-family:var(--font-mono);padding:2px 7px}.popover__body{color:var(--text);font-size:var(--fs-14);margin-top:var(--s2);line-height:1.55}.popover__formula{font-family:var(--font-mono);font-size:var(--fs-12);background:var(--surface-3);border:1px solid var(--line);margin-top:var(--s3);color:var(--muted);padding:6px 9px;overflow-x:auto}.popover__range{margin-top:var(--s3);font-size:var(--fs-13)}.popover__src{margin-top:var(--s3);color:var(--faint);font-size:11px}.popover__more{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line)}@media (width<=560px){.popover{width:auto;bottom:16px;right:16px;top:auto!important;left:16px!important}}.scale{margin-top:var(--s3)}.scale__track{border:1px solid var(--line);width:100%;height:9px;display:flex;position:relative;overflow:hidden}.scale__band{height:100%}.scale__marker{background:var(--ink);width:2px;position:absolute;top:-3px;bottom:-3px}.scale__caption{color:var(--faint);font-size:11px;font-family:var(--font-mono);justify-content:space-between;margin-top:5px;display:flex}.table{border-collapse:collapse;width:100%;font-size:var(--fs-14)}.table th{text-align:left;color:var(--muted);font-weight:800;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line-strong);background:var(--surface);padding:8px 10px}.table thead.sticky th{z-index:1;position:sticky;top:0}.table td{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;padding:9px 10px}.table td.num,.table .num{font-family:var(--font-mono)}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background var(--dur)}.table tbody tr:nth-child(2n){background:var(--surface-2)}.table tbody tr.is-clickable{cursor:pointer}.table tbody tr.is-clickable:hover{background:var(--surface-3)}.table-scroll{overflow-x:auto}.zonebars{gap:var(--s2);flex-direction:column;display:flex}.zonebar{align-items:center;gap:var(--s3);font-size:var(--fs-13);grid-template-columns:120px 1fr 56px;display:grid}.zonebar__label{color:var(--muted)}.zonebar__track{background:var(--surface-3);border:1px solid var(--line);height:11px;overflow:hidden}.zonebar__fill{min-width:2px;height:100%;transition:width .4s var(--ease)}.zonebar__val{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.uplot-host{width:100%;min-width:0;max-width:100%;overflow:hidden}.uplot-wrap{width:100%;min-width:0;max-width:100%;position:relative}.uplot-toolbar{z-index:2;position:absolute;top:4px;right:4px}.canvas-host{border:1px solid var(--line);width:100%;display:block}.u-legend{color:var(--muted);font-size:var(--fs-13);font-family:var(--font-mono)}.u-title{color:var(--ink);font-weight:800}.u-axis{color:var(--muted)}.uplot,.u-legend .u-value{font-family:var(--font-mono)}.chart-empty{width:100%;color:var(--faint);font-size:var(--fs-13);border:1px solid var(--line);background:var(--surface);place-items:center;display:grid;position:relative;overflow:hidden}.mapview{background:var(--surface-3);border:1px solid var(--line);width:100%;position:relative;overflow:hidden}.mapview .maplibregl-map{font-family:var(--font)}.mapview .maplibregl-ctrl-group,.mapview .maplibregl-ctrl-group button,.mapview .maplibregl-ctrl-attrib{border-radius:0}.mapview__missing{width:100%;height:100%;color:var(--faint);font-size:var(--fs-13);text-align:center;padding:var(--s5);place-items:center;display:grid}.routethumb{background:var(--surface-3);border:1px solid var(--line);display:block}.verdict{position:relative;overflow:hidden}.verdict h2{font-size:var(--fs-30);letter-spacing:-.02em;max-width:24ch;margin:10px 0 4px;font-weight:820;line-height:1.22}.verdict h2 .hl{color:var(--brand-700)}.verdict .lead{color:var(--muted);font-size:var(--fs-15);max-width:48ch}.vrow{align-items:center;gap:var(--s7);margin-top:var(--s5);flex-wrap:wrap;display:flex}.ringwrap{flex:none;width:104px;height:104px;position:relative}.ring{border-radius:50%;width:104px;height:104px;-webkit-mask:radial-gradient(38px,#0000 98%,#000 100%);mask:radial-gradient(38px,#0000 98%,#000 100%)}.ringwrap .ring__lbl{text-align:center;place-items:center;display:grid;position:absolute;inset:0}.ringwrap .ring__lbl b{font-size:var(--fs-24);color:var(--ink);font-weight:820;font-family:var(--font-mono)}.ringwrap .ring__lbl span{color:var(--muted);font-size:11px;font-weight:650}.coachquote{border-left:3px solid var(--brand);margin:var(--s3) 0 0;font-size:var(--fs-17);color:var(--text);max-width:70ch;padding-left:15px;font-weight:600;line-height:1.6}.cta{align-items:center;gap:var(--s4);margin-top:var(--s4);background:var(--surface);border:1px solid var(--line-strong);border-left:3px solid var(--brand);padding:var(--s4) var(--s5);color:var(--text);display:flex}.cta__icn{background:var(--brand-50);width:42px;height:42px;color:var(--brand-700);flex:none;place-items:center;display:grid}.cta__tx{flex:1;min-width:0}.cta__tx b{font-size:var(--fs-15);color:var(--ink);font-weight:750;display:block}.cta__tx span{color:var(--muted);font-size:var(--fs-13)}.gauge2{flex-direction:column;flex:none;align-items:center;width:196px;display:flex}.gauge2__svg{width:196px;height:auto;display:block}.gauge2__needle{transition:transform .9s var(--ease)}.gauge2__read{flex-direction:column;align-items:center;gap:2px;margin-top:8px;line-height:1.12;display:flex}.gauge2__read b{font-size:var(--fs-38);letter-spacing:-.03em;font-weight:820;line-height:1.08}.gauge2__read b small{font-size:var(--fs-15);color:var(--muted);font-weight:600;font-family:var(--font);letter-spacing:0}.gauge2__band{font-size:var(--fs-15);font-weight:750}.gauge2__cap{font-size:var(--fs-11);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:3px;font-weight:700}.spark{width:100%;margin-top:8px;display:block}.spark-wrap{width:100%;min-width:0;margin-top:8px;display:block;position:relative}.spark-wrap .spark{margin-top:0;position:absolute;top:0;left:0}.spark-lab{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--muted);pointer-events:none;font-variant-numeric:tabular-nums;line-height:1;position:absolute}.spark-lab--max{background:var(--surface);padding:1px 3px 1px 0;top:0;left:0}.spark-lab--min{background:var(--surface);padding:1px 3px 1px 0;bottom:0;left:0}.spark-lab--end{color:inherit;background:var(--surface);padding:1px 0 1px 3px;font-weight:700;top:50%;right:0;transform:translateY(-50%)}.spark-lab--xl{bottom:0;left:0}.spark-lab--xr{bottom:0;right:0}.legend{gap:var(--s3);font-size:var(--fs-12);color:var(--muted);flex-wrap:wrap;display:flex}.legend__item{align-items:center;gap:6px;display:inline-flex}.legend__sw{flex:none;width:12px;height:12px}.legend__sw--heat{background:linear-gradient(90deg,#2563eb 0%,#7c3aed 40%,#f59e0b 70%,#ef4444 100%);width:48px;height:8px}.windsplit{border:1px solid var(--line);height:10px;display:flex}.windsplit>span{height:100%;display:block}.uplot-tooltip{z-index:10;pointer-events:none;min-width:120px;padding:var(--s2) var(--s3);background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--sh-pop);font-size:var(--fs-12);color:var(--text);will-change:transform;border-radius:0;position:absolute;top:0;left:0}.uplot-tooltip__head{font-family:var(--font-mono);color:var(--muted);margin-bottom:4px}.uplot-tooltip__row{align-items:center;gap:6px;line-height:1.7;display:flex}.uplot-tooltip__label{color:var(--muted)}.uplot-tooltip__val{padding-left:var(--s3);color:var(--ink);margin-left:auto}.barchart{flex-direction:column;width:100%;min-width:0;max-width:100%;display:flex;overflow:hidden}.barchart__plot{align-items:stretch;gap:3px;display:flex}.barchart__col{flex:1 1 0;min-width:0}.barchart__bars{align-items:flex-end;height:100%;display:flex}.barchart__bars--grouped{gap:1px}.barchart__bars--stacked{flex-direction:column-reverse;align-items:stretch}.barchart__bar{flex:1 1 0;min-width:1px}.barchart__seg{width:100%}.barchart__xaxis{gap:3px;margin-top:4px;display:flex}.barchart__xlabel{text-align:center;min-width:0;font-size:var(--fs-11);color:var(--faint);white-space:nowrap;flex:1 1 0;overflow:visible}.barchart-wrap{flex-direction:column;width:100%;min-width:0;display:flex}.barchart-row{align-items:flex-start;gap:6px;min-width:0;max-width:100%;display:flex;overflow:hidden}.barchart-row>.barchart{flex:1 1 0;min-width:0}.barchart__yaxis{font-size:var(--fs-11);color:var(--faint);white-space:nowrap;flex-direction:column;flex:none;justify-content:space-between;align-items:flex-end;display:flex}.barchart__ytitle{margin:0 0 3px}.barchart__xtitle{text-align:center;margin-top:3px}.cat-badge{font-size:var(--fs-11);color:#fff;letter-spacing:.02em;white-space:nowrap;padding:0 6px;font-weight:700;display:inline-block}tr.climb-row{cursor:pointer}tr.climb-row:hover td{background:var(--surface-2)}tr.climb-row[aria-expanded=true] td{background:var(--brand-50)}.climb-name{color:var(--text)}.climb-name__sub,.climb-row__caret{color:var(--faint);font-size:var(--fs-11)}tr.climb-detail-row>td{background:var(--surface-2);padding:var(--s3) var(--s4)}.climb-detail__layout{gap:var(--s3);align-items:stretch;display:flex}.climb-detail__map{flex:0 0 340px}.climb-detail__content{gap:var(--s2);flex-direction:column;flex:1;min-width:0;display:flex}.climb-filters{align-items:flex-end;gap:var(--s3);margin:var(--s3) 0;flex-wrap:wrap;display:flex}.climb-filters__search{flex:200px;min-width:200px}.climb-filters__cats{flex-wrap:wrap;gap:4px;display:flex}.cat-chip{font-size:var(--fs-12);background:var(--surface);border:1px solid var(--line-strong);cursor:pointer;padding:2px 8px;font-weight:700}.climb-h2h__select{margin-bottom:var(--s3)}.climb-h2h__id{align-items:center;gap:var(--s2);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}.field{margin-bottom:var(--s3);flex-direction:column;gap:6px;display:flex}.field label{font-size:var(--fs-13);color:var(--muted);font-weight:650}.input,.select{background:var(--surface);border:1px solid var(--line-strong);font:inherit;font-size:var(--fs-14);color:var(--text);width:100%;padding:9px 11px}.input:focus,.select:focus{border-color:var(--brand);outline:none}.well{background:var(--surface-2);border:1px solid var(--line);padding:var(--s3) var(--s4)}.well--3{background:var(--surface-3)}.hover-readout{gap:var(--s5);border:1px solid var(--line);background:var(--surface-2);flex-wrap:nowrap;align-items:center;height:58px;padding:8px 12px;display:flex;overflow-x:auto}.hover-readout--idle{color:var(--faint)}.hover-readout__cell{flex-direction:column;flex:none;gap:2px;display:flex}.hover-readout__label{font-size:var(--fs-11);color:var(--muted)}.hover-readout__value{font-size:var(--fs-17);color:var(--text);font-weight:600;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.range{width:100%;accent-color:var(--brand)}.controls label{align-items:center;gap:var(--s3);font-size:var(--fs-13);color:var(--muted);margin-bottom:8px;display:flex}.controls strong{color:var(--ink);text-align:right;min-width:3rem;font-family:var(--font-mono)}.scrubber{flex-direction:column;gap:4px;min-width:200px;display:flex}.scrubber__head{align-items:center;gap:var(--s2);justify-content:space-between;display:flex}.scrubber__time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-13);color:var(--text)}.scrubber__readout{font-size:var(--fs-11);color:var(--muted);font-variant-numeric:tabular-nums}.actrow__check{text-align:center}.actrow__check input{cursor:pointer;width:16px;height:16px}.comparebar{z-index:6;align-items:center;gap:var(--s3);background:var(--brand-50);border:1px solid var(--brand);padding:var(--s2) var(--s3);margin-bottom:var(--s3);flex-wrap:wrap;display:flex;position:sticky;top:0}.comparebar__names{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.comparebar__actions{gap:var(--s2);display:flex}.cmp-chart-label{margin-top:var(--s2);text-transform:uppercase;letter-spacing:.05em}.cmp-stats td,.cmp-stats th{padding:6px 10px}.cmp-est{color:var(--muted);font-size:var(--fs-11)}.cmpl{border-top:1px solid var(--line);padding-top:var(--s3);margin-top:var(--s3)}.cmpl__head{font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--s2);font-weight:700}.cmpl-bars{height:80px;margin-bottom:var(--s3);align-items:stretch;gap:4px;display:flex}.cmpl-bar{flex-direction:column;flex:1 1 0;align-items:center;gap:2px;display:flex}.cmpl-bar__track{background:var(--surface-2);border:1px solid var(--line);flex:1;width:100%;position:relative}.cmpl-bar__fill{min-height:2px;position:absolute;bottom:0;left:0;right:0}.cmpl-bar__target{background:var(--ink);height:2px;position:absolute;left:-1px;right:-1px}.cmpl-bar__idx{font-size:var(--fs-11);color:var(--muted)}.cmpl-table td,.cmpl-table th{padding:4px 8px}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--line) 37%,var(--surface-3) 63%);animation:shimmer 1.3s var(--ease) infinite;background-size:400% 100%}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.empty{text-align:center;color:var(--muted);padding:var(--s7) var(--s4)}.empty__icn{background:var(--brand-50);width:44px;height:44px;color:var(--brand-700);margin:0 auto var(--s3);place-items:center;display:grid}.empty--photo{text-align:left;background-image:var(--wash-h), var(--photo);background-size:cover;background-position:var(--photo-pos,right center);background-repeat:no-repeat;flex-direction:column;justify-content:center;min-height:240px;display:flex}.empty--photo>div{max-width:56%}.empty__act{margin-top:var(--s3);justify-content:center;gap:var(--s2);display:flex}.empty--photo .empty__act{justify-content:flex-start}@media (width<=640px){.empty--photo{background-image:var(--wash-v), var(--photo);background-position:var(--photo-pos,center bottom);justify-content:flex-start;min-height:300px}.empty--photo>div{max-width:100%}}@media print{.empty--photo{background-image:none!important}}.settings-hero{border:1px solid var(--line-strong);margin-bottom:var(--s4);height:150px;position:relative;overflow:hidden}.settings-hero img{object-fit:cover;width:100%;height:100%;display:block}.settings-hero p{background:var(--surface);border-top:1px solid var(--line-strong);border-right:1px solid var(--line-strong);font-size:var(--fs-12);color:var(--muted);margin:0;padding:5px 12px;position:absolute;bottom:0;left:0}.intlegend{gap:var(--s3);font-size:var(--fs-11);color:var(--muted);margin-bottom:var(--s2);flex-wrap:wrap;display:flex}.intlegend i{vertical-align:0;width:8px;height:8px;margin-right:4px;display:inline-block}.intlegend__sw--easy{background:var(--good)}.intlegend__sw--moderate{background:var(--warn)}.intlegend__sw--hard{background:var(--bad)}.glossary-backdrop{z-index:70;background:#0b122047;position:fixed;inset:0}.glossary{background:var(--surface);border-left:1px solid var(--line-strong);width:min(520px,100vw);box-shadow:var(--sh-pop);z-index:71;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.glossary__head{align-items:center;gap:var(--s3);padding:var(--s4) var(--s5);border-bottom:1px solid var(--line);display:flex}.glossary__head h2{font-size:var(--fs-17);flex:1;font-weight:800}.glossary__search{padding:var(--s3) var(--s5);border-bottom:1px solid var(--line)}.glossary__list{padding:var(--s2) var(--s5) var(--s6);overflow-y:auto}.gterm{padding:var(--s4) 0;border-bottom:1px solid var(--line);scroll-margin:var(--s5)}.gterm:last-child{border-bottom:0}.gterm--focus{border-left:3px solid var(--brand);padding-left:var(--s3);background:var(--brand-50)}.gterm__name{font-weight:800;font-size:var(--fs-15);align-items:center;gap:8px;display:flex}.gterm__abbr{color:var(--brand-700);background:var(--brand-50);font-size:11px;font-weight:800;font-family:var(--font-mono);padding:2px 7px}.gterm__body{color:var(--text);font-size:var(--fs-14);margin-top:5px;line-height:1.55}.gterm__formula{font-family:var(--font-mono);font-size:var(--fs-12);background:var(--surface-3);border:1px solid var(--line);color:var(--muted);margin-top:8px;padding:5px 8px}.gterm__meta{font-size:var(--fs-12);color:var(--faint);margin-top:8px}.moremenu{z-index:50;background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--sh-pop);flex-direction:column;display:flex;position:fixed}.moremenu button{border:0;border-bottom:1px solid var(--line);font:inherit;font-size:var(--fs-14);color:var(--text);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:10px;padding:11px 16px;font-weight:650;display:flex}.moremenu button:last-child{border-bottom:0}.moremenu button:hover,.moremenu button.is-active{background:var(--surface-3);color:var(--brand-700)}@media (width<=900px){.app{grid-template-columns:1fr}.rail{z-index:40;border-top:1px solid var(--line-strong);width:100%;height:auto;padding:0;padding-bottom:env(safe-area-inset-bottom);border-right:0;flex-direction:row;justify-content:space-around;gap:0;position:fixed;inset:auto 0 0}.brand,.rail__foot{display:none}.nav{flex-direction:row;justify-content:space-around;gap:0;width:100%}.nav__divider{display:none}.navbtn{border-top:2px solid #0000;border-left:0;flex-direction:column;flex:1 1 0;justify-content:center;gap:3px;min-width:0;min-height:44px;padding:7px 4px;font-size:10px}.navbtn span{font-size:10px}.navbtn.is-active{color:var(--brand-700);border-left:0;border-top-color:var(--brand);background:0 0}.navbtn--secondary{display:none}.navbtn--more{display:flex}.page{padding:var(--s4) var(--s4) 84px}.grid,.grid--2,.grid--4{grid-template-columns:1fr}.span-2,.span-3,.grid--4>.panel:last-child{grid-column:auto}.grid>.panel,.grid--2>.panel,.grid--4>.panel{min-width:0}.topbar{padding:var(--s3) var(--s4)}.glossary{width:100vw}}@media (width<=560px){.topbar{gap:var(--s2);flex-wrap:wrap}.topbar__title{flex:100%}.spacer{display:none}.topbar .seg button{padding-inline:10px}.connect-gate h2{font-size:var(--fs-24)}.connect-gate__lead,.connect-gate__points{overflow-wrap:anywhere}}.rise{animation:rise-in var(--dur-slow) var(--ease) backwards;animation-delay:calc(var(--i,0) * 40ms)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}}.page-in{animation:rise-in .2s var(--ease) backwards}.chart-in{animation:rise-in .24s var(--ease) backwards}.zonebars .zonebar__fill{transform-origin:0;animation:grow-x .5s var(--ease) backwards;animation-delay:calc(var(--zi,0) * 40ms)}@keyframes grow-x{0%{transform:scaleX(0)}}.skeleton:nth-child(2n){animation-delay:-.45s}.skeleton:nth-child(3n){animation-delay:-.9s}.reveal{opacity:0;transition:opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);transform:translateY(14px)}.reveal.is-in{opacity:1;transform:none}.draw-line{stroke-dasharray:1;stroke-dashoffset:1px;animation:draw-in 1.1s var(--ease) forwards}@keyframes draw-in{to{stroke-dashoffset:0}}.grow-y{transform-origin:bottom;animation:grow-y .7s var(--ease)}@keyframes grow-y{0%{transform:scaleY(0)}to{transform:none}}.row-in{animation:row-in .4s var(--ease) backwards}@keyframes row-in{0%{transform:translateY(4px)}to{transform:none}}.seg-in{animation:seg-in .4s var(--ease) backwards}@keyframes seg-in{0%{transform:translate(-6px)}to{transform:none}}.pop-mark{animation:pop-mark .42s var(--ease) backwards}@keyframes pop-mark{0%{transform:scale(.55)}to{transform:none}}.scale-in{animation:scale-in .55s var(--ease) backwards}@keyframes scale-in{0%{transform:scale(.6)}to{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-delay:0s!important}.reveal{opacity:1!important;transform:none!important}.draw-line{stroke-dashoffset:0!important;animation:none!important}.rise,.page-in,.chart-in{animation:none!important}.zonebar__fill{animation:none!important;transform:none!important}.skeleton{animation-delay:0s!important}.grow-y,.row-in,.seg-in,.pop-mark,.scale-in{animation:none!important;transform:none!important}}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.map-overlay{z-index:5;gap:var(--s2);max-width:calc(100% - 2 * var(--s3));flex-wrap:wrap;align-items:center;display:flex;position:absolute}.map-overlay--top{top:var(--s3);left:var(--s3)}.map-overlay--bottom{bottom:var(--s3);left:var(--s3);flex-direction:column;align-items:flex-start}.map-box{background:var(--surface);border:1px solid var(--line-strong);align-items:center;gap:var(--s2);flex-wrap:wrap;padding:5px 7px;display:flex}.map-weather-hint{flex-basis:100%;max-width:240px;margin-top:2px;line-height:1.3}.tyre-grid{gap:var(--s3);margin-top:var(--s3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.tyre-grid .field{min-width:0}.map-box .legend{gap:var(--s3)}.map-box .legend__sw--line{height:3px}.cam{flex-direction:column;align-items:stretch;gap:6px}.cam__toggle{min-width:96px;min-height:34px;color:var(--muted);font:inherit;font-size:var(--fs-13);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 2px;font-weight:700;display:flex}.cam__toggle:hover{color:var(--brand-700)}.cam__caret{color:var(--faint);font-weight:800;font-family:var(--font-mono);margin-left:auto}.cam__panel{flex-direction:column;gap:4px;min-width:212px;display:flex}.cam__read{font-size:var(--fs-11);margin:0 0 2px}.cam__row{align-items:center;gap:var(--s2);min-height:44px;display:flex}.cam__label{width:3.4rem;font-size:var(--fs-12);color:var(--muted);flex:none}.cam__row .range{flex:auto}.cam__val{text-align:right;min-width:2.6rem;font-size:var(--fs-12);flex:none}.cam__foot{align-items:center;gap:var(--s2);min-height:44px;display:flex}.cam__compass{width:34px;height:34px}.cam__resetlabel{font-size:var(--fs-12);color:var(--muted)}.cam__note{font-size:var(--fs-11);color:var(--warn);margin:2px 0 0}.fly{gap:var(--s2);width:min(520px,80vw)}.fly__scrub{flex:auto;min-width:120px}.fly__pct{text-align:right;min-width:2.8rem;font-size:var(--fs-12);color:var(--muted);flex:none}.maps-statgrid{gap:var(--s5) var(--s4);grid-template-columns:repeat(auto-fit,minmax(210px,1fr));display:grid}.maps-statblock .panel-read{margin:var(--s2) 0 0;font-size:var(--fs-13)}.route-search{margin-bottom:var(--s3)}.routes{border-top:1px solid var(--line);flex-direction:column;gap:0;max-height:560px;display:flex;overflow:auto}.route-row{align-items:center;gap:var(--s2);border-bottom:1px solid var(--line);border-left:2px solid #0000;display:flex}.route-row.is-sel{border-left-color:var(--brand);background:var(--brand-50)}.route-row__hit{align-items:center;gap:var(--s3);min-width:0;padding:var(--s3) var(--s2);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:auto;display:flex}.route-row__hit:hover{background:var(--surface-3)}.route-row__thumb{border:1px solid var(--line);background:var(--surface-3);flex:none;width:58px;height:40px}.route-row__main{flex:auto;min-width:0}.route-row__name{font-size:var(--fs-14);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:650;overflow:hidden}.route-row__meta{gap:var(--s3);font-size:var(--fs-12);color:var(--faint);align-items:center;margin-top:2px;display:flex}.route-row__links{gap:var(--s3);padding-right:var(--s3);flex:none;align-items:center;display:flex}@media (width<=900px){.map-overlay--top,.map-overlay--bottom{right:var(--s3)}.route-row__links{gap:var(--s2);flex-direction:column;align-items:flex-end}.fly .iconbtn,.cam__compass{min-width:44px;min-height:44px}.cam__toggle{min-height:44px}}.fit-bar{align-items:center;gap:var(--s3);margin:0 2px var(--s4);flex-wrap:wrap;display:flex}.fit-customrange{gap:var(--s4);margin:0 2px var(--s4);flex-wrap:wrap;display:flex}.fit-customrange label{align-items:center;gap:var(--s2);font-size:var(--fs-13);color:var(--muted);display:flex}.fit-customrange .input{width:auto}.fit-summary{margin-bottom:var(--s4)}.fit-summary__body{gap:var(--s6);flex-wrap:wrap;align-items:center;display:flex}.fit-summary__instruments{align-items:center;gap:var(--s6);flex-wrap:wrap;flex:0 auto;min-width:0;display:flex}.fit-summary__stats{gap:var(--s4);flex-direction:column;flex:none;display:flex}.fit-summary__stats .statcell__value{font-size:var(--fs-30)}.fit-summary__read{flex-direction:column;flex:360px;justify-content:center;align-self:stretch;min-width:0;display:flex}.fit-summary__read .panel-read{font-size:var(--fs-15);margin-bottom:0}.fit-summary__foot{align-items:center;gap:var(--s4);margin-top:var(--s4);flex-wrap:wrap;display:flex}@media (width>=721px){.fit-summary__read{border-left:1px solid var(--line);padding-left:var(--s6)}}@media (width<=720px){.fit-summary__read{border-top:1px solid var(--line);padding-top:var(--s4)}.fit-summary__instruments{width:100%}}@media (width<=900px){.fit-summary__stats{gap:var(--s5);flex-flow:wrap}.fit-bar .seg{width:100%;overflow-x:auto}.fit-bar .seg button{min-height:44px}}.filterbar{z-index:3;background:var(--surface);border:1px solid var(--line);border-bottom-color:var(--line-strong);box-shadow:var(--sh-panel);padding:var(--s4);margin-bottom:var(--s4);gap:var(--s3);flex-direction:column;display:flex;position:sticky;top:0}.filterbar__row{gap:var(--s3) var(--s4);flex-wrap:wrap;align-items:flex-end;display:flex}.filterbar .field{margin-bottom:0}.filterbar .field label{align-items:center;gap:4px;display:flex}.filterbar__search{flex:220px}.filterbar__range{align-items:center;gap:6px;display:flex}.filterbar__range .input{width:74px}.filterbar__range .input--date{width:140px}.filterbar__foot{align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex}.filterbar__count{font-size:var(--fs-13);color:var(--muted);font-variant-numeric:tabular-nums}.filterbar__spacer{flex:auto}.actscroll{border:1px solid var(--line);background:var(--surface);height:calc(100vh - 250px);min-height:360px;overflow:auto}.actscroll .table td{height:84px}.thumb-noroute{background:var(--surface-3);border:1px solid var(--line);color:var(--faint);font-size:var(--fs-12);text-align:center;place-items:center;display:grid}.actrow__name{text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-weight:650;display:block;overflow:hidden}.actrow__pr{white-space:nowrap}.chip--pr{color:#fff;background:var(--brand-700);border-color:var(--brand-700)}.table th.th-sort{padding:0}.th-inner{align-items:center;gap:4px;padding:8px 10px;display:flex}.th-sortbtn{font:inherit;font-weight:800;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sortbtn:hover{color:var(--brand-700)}.table th[aria-sort=ascending] .th-sortbtn,.table th[aria-sort=descending] .th-sortbtn{color:var(--ink)}.sort-arrow{font-size:9px}.intbar{border:1px solid var(--line);height:8px;margin:var(--s2) 0;display:flex;overflow:hidden}.intbar__seg--easy{background:var(--good)}.intbar__seg--moderate{background:var(--warn)}.intbar__seg--hard{background:var(--bad)}.weekgrid{gap:var(--s4);flex-direction:column;display:flex}.weekcard__head{justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}@media (width<=900px){.actrow__name{max-width:140px}}.querybar-row{align-items:flex-start;gap:var(--s3);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}.querybar{flex-direction:column;flex:1;gap:2px;min-width:260px;display:flex}.querybar__input{width:100%;font-family:var(--font-mono,ui-monospace, monospace)}.querybar__help{align-items:center;gap:4px;display:inline-flex}.querybar__hint{color:var(--warn,#d9920a)}.colpick{position:relative}.colpick__menu{z-index:30;background:var(--surface,#fff);border:1px solid var(--line-strong,#c9cfd8);padding:var(--s2) var(--s3);flex-direction:column;gap:4px;min-width:160px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.colpick__row{cursor:pointer;align-items:center;gap:6px;min-height:28px;display:flex}.histo-row{gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.histo{flex-direction:column;gap:4px;display:flex}.seg-efforts{margin:0 0 var(--s3);flex-direction:column;gap:4px;padding:0;list-style:none;display:flex}.seg-efforts__row{align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.seg-namer{align-items:center;gap:6px;display:inline-flex}.seg-namer .input{width:180px}.seg-table{margin-top:var(--s2)}@media (hover:hover) and (prefers-reduced-motion:no-preference){.navbtn svg{transition:transform var(--dur) var(--ease)}.navbtn:hover svg{transform:translate(2px)}}@media (prefers-reduced-motion:no-preference){.navbtn:active{transform:translateY(1px)}}@media (width>=901px) and (prefers-reduced-motion:no-preference){.navbtn{position:relative}.navbtn.is-active{border-left-color:#0000}.navbtn:before{content:"";background:var(--brand);width:3px;transition:transform var(--dur) var(--ease);position:absolute;top:6px;bottom:6px;left:-3px;transform:scaleY(0)}.navbtn.is-active:before{transform:scaleY(1)}}.app[data-section=coach],.app[data-section=nutrition],.app[data-section=readiness],.app[data-section=plan]{--sec:var(--acc-coach)}.app[data-section=predict],.app[data-section=maps],.app[data-section=aero],.app[data-section=power],.app[data-section=fit]{--sec:var(--acc-tools)}.rail-pulse{padding:var(--s3) 10px;border:0;border-top:1px solid var(--line);cursor:pointer;font:inherit;text-align:left;background:0 0;flex-direction:column;gap:6px;width:100%;margin-top:auto;display:flex}.rail-pulse__bars{align-items:flex-end;gap:2px;height:28px;display:flex}.rail-pulse__bars i{background:var(--brand-300);flex:1 1 0;min-height:2px}.rail-pulse__bars i.is-today{background:var(--ink)}.rail-pulse__row{justify-content:space-between;align-items:center;gap:var(--s2);font-size:var(--fs-11);color:var(--faint);font-weight:650;display:flex}.rail-pulse__total{color:var(--muted)}.rail-pulse:hover .rail-pulse__row,.rail-pulse:hover .rail-pulse__total{color:var(--brand-700)}.syncchip--done{color:var(--good-700);background:var(--good-bg);border-color:#0000}.syncchip--done .syncchip__fill{background:var(--good)}@media (prefers-reduced-motion:no-preference){.syncchip:not(.syncchip--done) .syncchip__fill{position:relative;overflow:hidden}.syncchip:not(.syncchip--done) .syncchip__fill:after{content:"";animation:shimmer 1.3s var(--ease) infinite;background:linear-gradient(90deg,#0000 25%,#ffffff80 50%,#0000 75%) 0 0/400% 100%;position:absolute;inset:0}}@media (hover:hover){.panel{transition:border-color var(--dur) var(--ease)}.panel:hover{border-color:var(--line-strong)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.card--link{transition:transform var(--dur) var(--ease), border-color var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease)}.card--link:hover{transform:translateY(-1px)}}.table tbody tr.is-clickable td:first-child{transition:box-shadow var(--dur) var(--ease)}.table tbody tr.is-clickable:hover td:first-child{box-shadow:inset 2px 0 0 var(--brand)}.panel--photo{--photo-wash:var(--wash-h);background-image:var(--photo-wash), var(--photo);background-size:cover;background-position:var(--photo-pos,right center);background-repeat:no-repeat}.panel--photo-deep{--photo-wash:linear-gradient(90deg, var(--surface) 0%, var(--surface) 28%, #fffc 52%, #ffffff6b 100%)}.panel--photo .empty{text-align:left}.panel--photo .empty>div{max-width:56%}.panel--photo .empty .empty__act{justify-content:flex-start}@media (width<=640px){.panel--photo:has(.empty){background-image:var(--wash-v), var(--photo);background-position:var(--photo-pos,center bottom)}.panel--photo .empty>div{max-width:100%}}@media print{.panel--photo{background-image:none!important;background:var(--surface)!important}}.panelhead:before{content:"";background:var(--panel-accent,var(--line-strong));flex:none;width:3px;height:11px}@media (prefers-reduced-motion:no-preference){.btn:active,.seg button:active,.iconbtn:active,.cr10__btn:active,.info-dot:active{transition-duration:var(--dur-fast);transform:scale(.98)}}.tab-in{animation:tab-in .2s var(--ease) backwards}@keyframes tab-in{0%{opacity:0;transform:translateY(4px)}}@media (prefers-reduced-motion:no-preference){.popover,.moremenu{animation:pop-in .14s var(--ease)}.popover{transform-origin:0 0}.moremenu{transform-origin:100% 100%}}@keyframes pop-in{0%{opacity:0;transform:translateY(3px)scale(.98)}}.uplot.u-hz .u-cursor-x{border-right:1px dashed #0b122059}.uplot.u-hz .u-cursor-y{border-bottom:1px dashed #0b122059}.uplot .u-cursor-pt{box-shadow:0 0 0 1px #0b122040}.uplot .u-select{background:#2563eb14}.chart-empty__art{width:100%;height:100%;position:absolute;inset:0}.chart-empty__msg{text-align:center;align-items:center;gap:var(--s2);padding:var(--s4);flex-direction:column;display:flex;position:relative}.empty__art{margin:0 auto var(--s3);color:var(--line-strong);place-items:center;display:grid}@media (width<=900px){.rail-pulse{display:none}}@media (prefers-reduced-motion:reduce){.tab-in{opacity:1!important;animation:none!important;transform:none!important}.popover,.moremenu{animation:none!important}.navbtn svg,.navbtn:active,.btn:active,.seg button:active,.iconbtn:active,.cr10__btn:active,.info-dot:active{transform:none!important}.navbtn:before{transition:none!important}.card--link:hover{transform:none!important}.syncchip__fill:after{content:none!important;animation:none!important}}
