:root{color:#f5f7fb;background:#080b12;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Yu Gothic UI,Yu Gothic,Meiryo,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--background: #080b12;--surface: #0d121c;--surface-raised: #111824;--line: rgba(255, 255, 255, .09);--text: #f5f7fb;--muted: #929bab;--accent: #75e5c2;--accent-strong: #38cfa4;--warm: #ffb37a;--danger: #ff8b8b}*{box-sizing:border-box}html{min-width:320px;background:var(--background);scroll-behavior:smooth}html.race-focus-lock,body.race-focus-lock{overflow:hidden;overscroll-behavior:none}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 50% 22%,rgba(53,185,153,.11),transparent 28rem),var(--background)}button,a{font:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid rgba(117,229,194,.55);outline-offset:4px}.site-shell{width:min(1180px,calc(100% - 48px));margin:0 auto}.site-header{display:flex;align-items:center;justify-content:space-between;height:64px;border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:12px;font-size:1rem;font-weight:700;letter-spacing:-.01em}.brand__mark{display:grid;width:38px;height:38px;place-items:center;border:1px solid rgba(117,229,194,.35);border-radius:50%;background:#75e5c214;color:var(--accent)}.brand__mark svg{width:24px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.site-header__tag{color:var(--muted);font-size:.73rem;letter-spacing:.13em;text-transform:uppercase}.hero{display:grid;min-height:calc(100svh - 64px);padding:16px 0 22px;align-content:center;gap:14px}.hero__intro{text-align:left}.hero__eyebrow,.section-heading>div>span{color:var(--accent);font-size:.65rem;font-weight:700;letter-spacing:.22em}.hero h1{width:max-content;max-width:100%;margin:4px 0 3px;font-size:clamp(1.45rem,2.4vw,2.1rem);line-height:1.16;letter-spacing:-.055em;white-space:nowrap}.hero__lead{max-width:560px;margin:0;color:var(--muted);font-size:clamp(.76rem,1vw,.86rem);line-height:1.45}.hero__lead-mobile-break{display:none}.hero__dashboard{display:grid;align-items:stretch;grid-template-columns:minmax(370px,.88fr) minmax(480px,1.12fr);gap:14px}.hero__controls{display:flex;min-width:0;flex-direction:column;gap:10px}.connection-info{display:grid;width:100%;min-height:96px;margin-top:0;padding:12px 14px;align-items:center;grid-template-columns:88px minmax(130px,1fr) auto;gap:7px 14px;border:1px solid rgba(117,229,194,.18);border-radius:12px;background:linear-gradient(135deg,#75e5c212,#0d121ce0);text-align:left}.connection-info h2{margin:4px 0 0;font-size:.88rem}.connection-info__eyebrow{color:var(--accent);font-size:.65rem;font-weight:700;letter-spacing:.18em}.connection-info__primary{display:grid;gap:5px}.connection-info__heading{align-self:start;grid-row:1 / 3}.connection-info__primary span,.connection-info__details dt{color:var(--muted);font-size:.68rem}.connection-info__primary strong{overflow-wrap:anywhere;font-size:clamp(.82rem,1.4vw,1rem);line-height:1.4}.connection-info__details{display:flex;margin:0;flex-wrap:wrap;grid-column:2 / -1;gap:6px 14px}.connection-info__details div{display:grid;gap:2px}.connection-info__details dd{margin:0;color:#dce3eb;font-size:.76rem;font-variant-numeric:tabular-nums}.connection-info__edge-rtt{max-width:220px}.connection-info__edge-rtt small{color:#7d8796;font-size:.58rem;line-height:1.35}.connection-info__note{display:none}.connection-info__status{grid-column:2 / -1;min-height:22px;margin:0;color:var(--muted);font-size:.8rem}.connection-info__error{display:flex;grid-column:2 / -1;align-items:center;justify-content:space-between;gap:16px;color:#ffc0c0;font-size:.76rem;line-height:1.5}.connection-info button{flex:0 0 auto;padding:8px 11px;border:1px solid rgba(117,229,194,.35);border-radius:6px;background:transparent;color:var(--accent);cursor:pointer;font-size:.7rem}.connection-info button:hover{background:#75e5c217}.connection-info__retry{align-self:start;grid-column:3;grid-row:1}.measurement-condition{width:100%;min-height:54px;padding:9px 12px;border:1px solid rgba(117,229,194,.16);border-radius:10px;background:#0d121c70}.measurement-condition__summary{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px}.measurement-condition__summary-copy{display:grid;min-width:0;grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:baseline}.measurement-condition__eyebrow{grid-row:1 / 3;color:var(--accent);font-size:.6rem;font-weight:700;letter-spacing:.16em}.measurement-condition h2,.measurement-condition h3,.measurement-condition p{margin:0}.measurement-condition h2{color:var(--muted);font-size:.68rem;font-weight:600}.measurement-condition__summary-copy p{overflow-wrap:anywhere;color:var(--text);font-size:.82rem;line-height:1.35}.measurement-condition button,.measurement-condition input{font:inherit}.measurement-condition__edit-button,.measurement-condition__primary-actions button,.measurement-condition__unset-button,.measurement-condition__chips button{border:1px solid rgba(117,229,194,.32);border-radius:6px;background:transparent;color:var(--accent);cursor:pointer}.measurement-condition__edit-button{flex:0 0 auto;padding:7px 10px;font-size:.72rem}.measurement-condition button:hover:not(:disabled){background:#75e5c217}.measurement-condition button:disabled{cursor:not-allowed;opacity:.5}.measurement-condition__editor{display:grid;margin-top:10px;padding-top:10px;border-top:1px solid rgba(117,229,194,.12);gap:6px}.measurement-condition__editor label,.measurement-condition__recent h3{color:var(--muted);font-size:.7rem;font-weight:600}.measurement-condition__editor input{width:100%;min-width:0;padding:8px 9px;border:1px solid rgba(181,196,214,.35);border-radius:6px;outline:none;background:#04080e94;color:var(--text);font-size:.84rem}.measurement-condition__editor input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #75e5c21f}.measurement-condition__editor input[aria-invalid=true]{border-color:var(--danger)}.measurement-condition__hint{color:#7d8796;font-size:.68rem;line-height:1.45}.measurement-condition__validation{color:#ffc0c0;font-size:.72rem}.measurement-condition__recent{display:grid;margin-top:4px;gap:7px}.measurement-condition__chips{display:flex;flex-wrap:wrap;gap:6px}.measurement-condition__chips button{max-width:100%;padding:5px 8px;overflow-wrap:anywhere;font-size:.7rem;line-height:1.3}.measurement-condition__actions{display:flex;margin-top:5px;align-items:center;justify-content:space-between;gap:8px}.measurement-condition__primary-actions{display:flex;margin-left:auto;flex-wrap:wrap;justify-content:flex-end;gap:7px}.measurement-condition__primary-actions button,.measurement-condition__unset-button{padding:7px 9px;font-size:.72rem}.measurement-condition__primary-actions button:last-child{border-color:var(--accent);background:var(--accent);color:#07110e;font-weight:700}.hero__measurement{display:grid;min-height:142px;padding:8px 12px;align-items:center;grid-template-columns:minmax(145px,.9fr) minmax(175px,1.1fr);gap:12px;border:1px solid var(--line);border-radius:12px;background:#0d121c85}.speed-display{position:relative;display:flex;width:100%;min-height:120px;margin-top:0;align-items:center;justify-content:center;flex-direction:column;isolation:isolate}.speed-display:before,.speed-display:after{position:absolute;z-index:-1;border-radius:50%;content:""}.speed-display:before{width:116px;height:116px;border:1px solid rgba(117,229,194,.14);background:radial-gradient(circle,rgba(117,229,194,.09),transparent 68%)}.speed-display:after{width:86px;height:86px;border:1px solid rgba(117,229,194,.09)}.speed-display__label{margin-bottom:-6px;color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.22em}.speed-display__reading{display:flex;align-items:baseline;justify-content:center;gap:12px}.speed-display__reading strong{min-width:1.2ch;color:var(--text);font-size:clamp(3rem,5.5vw,4.7rem);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.09em;line-height:1.08}.speed-display__reading span{color:var(--accent);font-size:clamp(.9rem,2vw,1.15rem);font-weight:600}.measurement-status{display:inline-flex;min-height:24px;margin-top:0;align-items:center;gap:9px;color:#bdc5d0;font-size:.84rem}.status-dot{width:7px;height:7px;border-radius:50%;background:#596271}.status-dot--active{background:var(--accent);box-shadow:0 0 0 5px #75e5c217;animation:status-pulse 1.6s ease-in-out infinite}@keyframes status-pulse{50%{opacity:.5}}.test-button{display:inline-flex;width:100%;min-width:0;min-height:48px;margin-top:10px;padding:12px 17px;align-items:center;justify-content:space-between;gap:20px;border:0;border-radius:8px;background:var(--accent);color:#07110e;cursor:pointer;font-size:.93rem;font-weight:700;transition:background-color .16s ease,transform .16s ease}.test-button:hover:not(:disabled){background:#92efd3;transform:translateY(-2px)}.test-button:disabled{cursor:wait;opacity:.55}.button-hint{margin:8px 0 0;color:#697383;font-size:.72rem}.error-message{display:flex;width:min(100%,560px);margin-top:8px;padding:8px 10px;align-items:flex-start;gap:12px;border:1px solid rgba(255,139,139,.25);border-radius:8px;background:#ff8b8b12;color:#ffc0c0;font-size:.8rem;line-height:1.6;text-align:left}.error-message strong{flex:0 0 auto;color:var(--danger)}.results{padding:42px 0 72px;border-top:1px solid var(--line)}.section-heading{display:flex;margin-bottom:20px;align-items:flex-end;justify-content:space-between;gap:32px}.section-heading h2{margin:5px 0 0;font-size:clamp(1.05rem,1.7vw,1.35rem);line-height:1.15;letter-spacing:-.02em}.section-heading p{max-width:420px;margin:0;color:var(--muted);font-size:.82rem;line-height:1.8}.metrics-grid{display:grid;margin:0;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.metric-card{min-height:116px;padding:20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#0d121c85}.metric-card--accent{background:linear-gradient(140deg,#75e5c21a,#0d121c99)}.metric-card dt{color:var(--muted);font-size:.7rem;font-weight:500}.metric-card dd{display:flex;margin:17px 0 0;align-items:baseline;gap:8px}.metric-card dd span{font-size:clamp(1.65rem,3vw,2.25rem);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.055em}.metric-card dd small{color:var(--accent);font-size:.68rem;font-weight:600}.completed-measurement{display:grid;margin-top:38px;gap:22px}.completed-condition-label{display:grid;min-width:0;padding:2px 0 2px 12px;border-left:2px solid rgba(117,229,194,.55);gap:4px}.completed-condition-label__eyebrow{color:var(--muted);font-size:.64rem;font-weight:600;letter-spacing:.12em}.completed-condition-label__value{display:flex;min-width:0;align-items:baseline;flex-wrap:wrap;gap:5px 10px}.completed-condition-label__value strong{min-width:0;overflow-wrap:anywhere;color:#dce3eb;font-size:.88rem;line-height:1.45}.completed-condition-label__saved{flex:0 0 auto;padding:3px 7px;border:1px solid rgba(117,229,194,.28);border-radius:999px;color:var(--accent);font-size:.62rem;font-weight:600;line-height:1.2;white-space:nowrap}.result-panel,.share-result{overflow:hidden;padding:30px;border:1px solid var(--line);border-radius:12px;background:#0d121cb8}.result-panel__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.result-panel__eyebrow{color:var(--accent);font-size:.65rem;font-weight:700;letter-spacing:.19em}.result-panel h2,.result-panel h3,.share-result h3{margin:7px 0 0;font-size:clamp(1.1rem,2vw,1.45rem);letter-spacing:-.025em}.loaded-latency{border-left:3px solid #7d8796}.loaded-latency--good{border-left-color:var(--accent)}.loaded-latency--notice{border-left-color:#88bfff}.loaded-latency--poor{border-left-color:var(--warm)}.loaded-latency__badge{padding:6px 9px;border:1px solid currentColor;border-radius:999px;color:#aeb8c6;font-size:.68rem;font-weight:700;white-space:nowrap}.loaded-latency__badge--good,.loaded-latency__level--good{color:var(--accent)}.loaded-latency__badge--notice,.loaded-latency__level--notice{color:#88bfff}.loaded-latency__badge--poor,.loaded-latency__level--poor{color:var(--warm)}.loaded-latency__lead{margin:15px 0 0;color:var(--muted);font-size:.76rem;line-height:1.7}.loaded-latency__table{width:100%;margin-top:21px;border-collapse:separate;border-spacing:0;font-size:.76rem}.loaded-latency__table th,.loaded-latency__table td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left}.loaded-latency__table thead th{padding-top:0;color:#7d8796;font-size:.62rem;font-weight:600}.loaded-latency__table tbody th{color:#dce3eb;font-weight:600}.loaded-latency__table td:last-child{text-align:right}.loaded-latency__value,.loaded-latency__increase{color:#e7ecf2;font-variant-numeric:tabular-nums;white-space:nowrap}.loaded-latency__increase{color:#b9c3d1}.loaded-latency__level{font-weight:600;white-space:nowrap}.loaded-latency__summary{margin-top:22px}.loaded-latency__summary h4{margin:0;font-size:.94rem}.loaded-latency__summary p,.loaded-latency__partial{max-width:850px;margin:9px 0 0;color:#dce3eb;font-size:.82rem;line-height:1.8}.loaded-latency__partial{padding-left:11px;border-left:2px solid #88bfff;color:#aeb8c6}.secondary-button,.text-button{flex:0 0 auto;border:1px solid rgba(117,229,194,.3);border-radius:7px;background:transparent;color:var(--accent);cursor:pointer;font-size:.72rem}.secondary-button{padding:9px 13px}.text-button{padding:8px 10px;border-color:var(--line);color:#a8b2c0}.secondary-button:hover,.text-button:hover{background:#75e5c214}.horse-visualization{position:relative;min-width:0;padding:16px}.horse-visualization__actions{display:flex;margin-left:auto;flex-wrap:wrap;justify-content:flex-end;gap:8px}.site-shell--race-focused [data-race-focus-background]{pointer-events:none;-webkit-user-select:none;user-select:none}.horse-visualization--focused{position:fixed;z-index:100;inset:0;width:100vw;max-width:none;height:100dvh;min-height:100dvh;margin:0;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));overflow-y:auto;border:0;border-radius:0;background:radial-gradient(circle at 84% 30%,rgba(54,212,230,.14),transparent 38rem),radial-gradient(circle at 42% 68%,rgba(35,177,153,.08),transparent 32rem),var(--background);isolation:isolate;overscroll-behavior:contain;animation:race-focus-enter .2s ease-out both}@keyframes race-focus-enter{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}.horse-visualization--focus-exiting{pointer-events:none;animation:race-focus-exit .2s ease-in both}@keyframes race-focus-exit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.985)}}.horse-visualization--focused .result-panel__heading{gap:16px}.horse-visualization--focused .result-panel__heading h2{font-size:clamp(1.45rem,2.2vw,1.9rem)}.horse-visualization--focused .horse-course{height:clamp(390px,58dvh,620px);margin-top:14px;--race-stage-glow: .15;--race-goal-glow: .24;--race-start: clamp(100px, 7vw, 126px);--race-goal: calc(100% - clamp(100px, 7vw, 126px)) }.horse-visualization--focused .horse-course__start,.horse-visualization--focused .horse-course__finish{top:20px;font-size:clamp(.7rem,1vw,.82rem)}.horse-visualization--focused .horse-course__start{left:24px}.horse-visualization--focused .horse-course__finish{right:24px;height:calc(100% - 44px)}.horse-visualization--focused .horse-course__finish:after{top:22px;height:calc(100% - 22px)}.horse-visualization--focused .horse-course__helper{top:24px;font-size:clamp(.72rem,1vw,.88rem)}.horse-visualization--focused .horse-course__lane{right:20px;left:calc(var(--race-start) - 10px)}.horse-visualization--focused .horse-course__lane--standard,.horse-visualization--focused .race-runner--standard{bottom:68%}.horse-visualization--focused .horse-course__lane--user,.horse-visualization--focused .race-runner--user{bottom:44%}.horse-visualization--focused .horse-course__lane--fast,.horse-visualization--focused .race-runner--fast{bottom:20%}.horse-visualization--focused .horse-course__lane-label{left:18px;width:calc(var(--race-start) - 28px);font-size:clamp(.52rem,.75vw,.66rem)}.horse-visualization--focused .horse-course__lane-label--standard{bottom:calc(68% + 10px)}.horse-visualization--focused .horse-course__lane-label--user{bottom:calc(44% + 10px)}.horse-visualization--focused .horse-course__lane-label--fast{bottom:calc(20% + 10px)}.horse-visualization--focused .race-runner--standard,.horse-visualization--focused .race-runner--fast{--horse-width: clamp(92px, 5.8vw, 110px)}.horse-visualization--focused .race-runner--user{--horse-width: clamp(100px, 6.1vw, 118px)}.horse-visualization--focused .horse-metrics{margin-top:14px;gap:30px}.horse-visualization--focused .horse-metrics dt{font-size:clamp(.72rem,.9vw,.82rem)}.horse-visualization--focused .horse-metrics dd{font-size:clamp(.92rem,1.2vw,1.08rem)}.horse-visualization--focused .race-results-cta{min-height:48px;margin-top:16px}.horse-visualization--focused .goal-focus-front-view__lineup{inset:52px clamp(24px,5vw,72px) 0}.horse-visualization--focused .front-unit .front-horse{width:clamp(74px,6vw,96px)}.horse-visualization--focused .front-runner--user .front-horse{width:clamp(80px,6.4vw,104px)}.horse-visualization--focused .front-jockey-jumper{width:clamp(100px,8vw,134px);--effective-front-jump-height: calc(var(--front-jump-height) * 1.55)}.horse-visualization--focused .front-runner--user .front-jockey-jumper{width:clamp(106px,8.4vw,140px)}.horse-course{position:relative;height:190px;margin-top:10px;overflow:hidden;isolation:isolate;--race-stage-glow: .1;--race-goal-glow: .17;--race-start: 82px;--race-goal: calc(100% - 72px) ;border:1px solid rgba(91,213,222,.2);border-radius:10px;background:radial-gradient(ellipse 68% 128% at 100% 52%,rgba(58,224,232,var(--race-goal-glow)),transparent 70%),radial-gradient(ellipse 64% 120% at 50% 58%,rgba(35,190,160,var(--race-stage-glow)),transparent 72%),linear-gradient(108deg,#050a17,#071322 48%,#092437 77%,#0b3447)}.horse-course:before,.horse-course:after{position:absolute;z-index:0;inset:0;pointer-events:none;content:""}.horse-course:before{background:linear-gradient(90deg,#01071180,#01081129 45%,#0107111a 72%,#0107113d),linear-gradient(103deg,transparent 12%,rgba(84,238,220,.07) 52%,rgba(65,213,234,.13) 78%,transparent),linear-gradient(180deg,rgba(3,8,19,.42) 0 22%,transparent 48%,rgba(1,7,16,.24));opacity:.92}.horse-course:after{background:linear-gradient(180deg,transparent 0 28%,rgba(100,226,214,.2) 28% calc(28% + 1px),transparent calc(28% + 1px) 82%,rgba(87,207,216,.14) 82% calc(82% + 1px),transparent calc(82% + 1px))}.horse-course__track{position:absolute;z-index:1;inset:0;opacity:1;transform:translate(0) scale(1);transform-origin:50% 50%;transition:opacity .42s ease,transform .52s cubic-bezier(.22,.7,.3,1)}.horse-course--transitionToFrontView .horse-course__track,.horse-course--groupJumpFrontView .horse-course__track,.horse-course--finished .horse-course__track{opacity:0;transform:translate(-18px) scale(1.02)}.horse-course__start,.horse-course__finish{position:absolute;top:15px;color:#7d8796;font-size:.58rem;font-weight:700;letter-spacing:.13em;text-shadow:0 1px 5px rgba(0,0,0,.72)}.horse-course__start{left:18px}.horse-course__finish{right:16px;color:var(--accent)}.horse-course__finish:after{position:absolute;top:17px;right:1px;width:2px;height:136px;background:repeating-linear-gradient(180deg,var(--accent) 0 7px,transparent 7px 14px);content:""}.horse-course__lane{position:absolute;right:12px;left:76px;height:1px;background:#78dad626;box-shadow:0 1px #030c188a}.horse-course__lane--standard{bottom:126px}.horse-course__lane--fast{bottom:30px}.horse-course__lane--user{bottom:78px;background:#75e5c24d}.horse-course__lane-label{position:absolute;left:10px;width:60px;color:#697383;font-size:.48rem;font-weight:700;letter-spacing:.08em}.horse-course__lane-label--standard{bottom:136px}.horse-course__lane-label--fast{bottom:40px}.horse-course__lane-label--user{bottom:88px;color:var(--accent);font-size:.54rem}.race-runner{position:absolute;left:var(--race-start);right:calc(100% - var(--race-goal));transition:bottom .6s cubic-bezier(.22,.7,.3,1)}.race-runner--standard{bottom:126px;--horse-width: 64px;--horse-gallop-image: url(/assets/horse/horse-standard-gallop.webp);--horse-idle-image: url(/assets/horse/horse-standard-idle.webp);--horse-coat: #a9653c;--horse-coat-shadow: #774127;--horse-mane: #38241e;--horse-hoof: #251a18;--jockey-primary: #8994a1;--jockey-secondary: #c1c8cf;--saddle-color: #4c5967;--number-color: #e9edf0;--race-duration: var(--standard-duration);--stride-duration: .82s}.race-runner--fast{bottom:30px;--horse-width: 64px;--horse-gallop-image: url(/assets/horse/horse-user-gallop.webp);--horse-idle-image: url(/assets/horse/horse-user-idle.webp);--horse-coat: #c6ced0;--horse-coat-shadow: #919da3;--horse-mane: #4b5660;--horse-hoof: #3c464e;--jockey-primary: #659bd0;--jockey-secondary: #c9e0f3;--saddle-color: #527fa9;--number-color: #f5f8fa;--race-duration: var(--fast-duration);--stride-duration: .72s}.race-runner--user{bottom:78px;--horse-width: 68px;--horse-gallop-image: url(/assets/horse/horse-fast-gallop.webp);--horse-idle-image: url(/assets/horse/horse-fast-idle.webp);--horse-coat: #98623e;--horse-coat-shadow: #68402b;--horse-mane: #30221d;--horse-hoof: #241a17;--jockey-primary: var(--accent);--jockey-secondary: #c6f5e7;--saddle-color: #4fc4ab;--number-color: #11231f;--race-duration: var(--user-duration);--stride-duration: .78s}.runner-mover{position:absolute;bottom:-1px;left:0;width:var(--horse-width)}.race-runner--user .runner-mover{filter:drop-shadow(0 0 7px rgba(117,229,194,.34))}.race-runner--warming{--stride-duration: .88s}.race-runner--warming .runner-mover{animation:runner-warmup var(--warmup-duration) linear forwards}.race-runner--racing{pointer-events:none}.race-runner--racing .runner-mover{animation:runner-race-run var(--race-duration) cubic-bezier(.22,.58,.38,1) forwards}.race-runner--waiting .runner-mover,.race-runner--finished .runner-mover{left:100%}.horse-sprite{display:block;width:var(--horse-width);height:calc(var(--horse-width) * .84375);background-image:var(--horse-idle-image);background-position:0 0;background-repeat:no-repeat;background-size:100% 100%}.horse-sprite--galloping{background-image:var(--horse-gallop-image);background-size:calc(var(--horse-width) * 7) calc(var(--horse-width) * .84375)}.race-runner--warming .horse-sprite--galloping{animation:horse-sprite-gallop .7s steps(7) infinite}.race-runner--racing .horse-sprite--galloping{animation:horse-sprite-gallop .5s steps(7) infinite}.race-horse{display:block;width:100%;overflow:visible}.race-horse__body,.race-horse__neck,.race-horse__head,.race-horse__muzzle,.race-horse__ear,.race-horse__leg{fill:var(--horse-coat);stroke:#202832;stroke-linejoin:round;stroke-width:1.25}.race-horse__body-shadow,.race-horse__leg--far{fill:var(--horse-coat-shadow)}.race-horse__mane,.race-horse__tail{fill:var(--horse-mane);stroke:#202832;stroke-linejoin:round;stroke-width:1}.race-horse__hoof{fill:none;stroke:var(--horse-hoof);stroke-linecap:round;stroke-width:2.7}.race-horse__eye{fill:#18212a}.race-horse__bridle{fill:none;stroke:#d8bd7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.35}.race-horse__saddle{fill:var(--saddle-color);stroke:#202832;stroke-linejoin:round;stroke-width:1}.race-horse__jockey-head{fill:var(--jockey-secondary);stroke:#202832;stroke-width:1}.race-horse__jockey-cap,.race-horse__jockey-body,.race-horse__jockey-arm,.race-horse__jockey-leg{fill:var(--jockey-primary);stroke:#202832;stroke-linejoin:round;stroke-width:1}.race-horse__number-cloth{fill:var(--saddle-color);stroke:#202832;stroke-linejoin:round;stroke-width:1}.race-horse__number{fill:var(--number-color);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:7px;font-weight:800}.race-horse__body,.race-horse__neck,.race-horse__head,.race-horse__muzzle,.race-horse__leg,.race-horse__tail,.race-horse__mane,.race-horse__jockey{transform-box:view-box}.race-horse__body{transform-origin:70px 57px}.race-horse__neck,.race-horse__head,.race-horse__muzzle{transform-origin:136px 33px}.race-horse__leg--hind{transform-origin:66px 67px}.race-horse__leg--front{transform-origin:114px 67px}.race-horse__tail{transform-origin:41px 48px}.race-horse__mane{transform-origin:119px 31px}.race-horse__jockey{transform-origin:91px 44px}.race-runner--warming .race-horse__body,.race-runner--racing .race-horse__body{animation:runner-torso-bob var(--stride-duration) ease-in-out infinite}.race-runner--warming .race-horse__neck,.race-runner--warming .race-horse__head,.race-runner--warming .race-horse__muzzle,.race-runner--racing .race-horse__neck,.race-runner--racing .race-horse__head,.race-runner--racing .race-horse__muzzle{animation:runner-head-bob var(--stride-duration) ease-in-out infinite}.race-runner--warming .race-horse__leg--hind-front,.race-runner--warming .race-horse__leg--front-forward,.race-runner--racing .race-horse__leg--hind-front,.race-runner--racing .race-horse__leg--front-forward{animation:runner-limb-forward var(--stride-duration) ease-in-out infinite}.race-runner--warming .race-horse__leg--hind-back,.race-runner--warming .race-horse__leg--front-back,.race-runner--racing .race-horse__leg--hind-back,.race-runner--racing .race-horse__leg--front-back{animation:runner-limb-back var(--stride-duration) ease-in-out infinite}@keyframes runner-warmup{0%{left:0}to{left:var(--warmup-max-progress)}}@keyframes runner-race-run{0%{left:var(--race-start-progress)}to{left:100%}}@keyframes horse-sprite-gallop{to{background-position-x:calc(var(--horse-width) * -7)}}@keyframes runner-torso-bob{0%,to{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-2px) rotate(-9deg)}}@keyframes runner-head-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5px)}}@keyframes runner-limb-forward{0%,to{transform:rotate(-26deg)}50%{transform:rotate(30deg)}}@keyframes runner-limb-back{0%,to{transform:rotate(30deg)}50%{transform:rotate(-26deg)}}.goal-focus-front-view{position:absolute;z-index:1;inset:0;overflow:hidden;opacity:0;pointer-events:none;transform:translateY(10px) scale(.985);transition:opacity .42s ease 70ms,transform .52s cubic-bezier(.22,.7,.3,1)}.horse-course--transitionToFrontView .goal-focus-front-view,.horse-course--groupJumpFrontView .goal-focus-front-view,.horse-course--finished .goal-focus-front-view{opacity:1;transform:translateY(0) scale(1)}.goal-focus-front-view:before{position:absolute;inset:0;background:radial-gradient(ellipse at 88% 54%,rgba(54,207,220,.1),transparent 46%),radial-gradient(ellipse at 50% 88%,rgba(36,176,154,.08),transparent 45%),linear-gradient(180deg,#060b17,#071522 46%,#081e2c);content:""}.goal-focus-front-view__heading{position:absolute;z-index:2;top:15px;right:17px;display:flex;align-items:center;gap:8px;letter-spacing:.12em}.goal-focus-front-view__heading span{color:#7d8796;font-size:.5rem;font-weight:700}.goal-focus-front-view__heading strong{padding:3px 6px;border:1px solid rgba(117,229,194,.35);border-radius:3px;color:var(--accent);font-size:.56rem}.race-upload-result{position:absolute;z-index:4;top:8px;left:50%;display:flex;align-items:baseline;gap:6px;color:var(--accent);filter:drop-shadow(0 0 12px rgba(117,229,194,.24));transform:translate(-50%);animation:upload-result-pop var(--group-jump-duration) cubic-bezier(.22,.7,.3,1) both;white-space:nowrap}.race-upload-result span,.race-upload-result small{color:#aeb9c5;font-size:.54rem;font-weight:700;letter-spacing:.12em}.race-upload-result strong{font-size:clamp(1.55rem,4.4vw,2.35rem);font-variant-numeric:tabular-nums;line-height:1}@keyframes upload-result-pop{0%{opacity:0;transform:translate(-50%) translateY(8px) scale(.82)}24%,to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.goal-focus-front-view__lineup{position:absolute;z-index:1;inset:44px 22px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,4vw,42px)}.front-runner{display:flex;min-width:0;flex-direction:column;--front-jump-height: 48px}.front-runner--fast{--front-jump-height: var(--fast-jump-height)}.front-runner--user{--front-jump-height: var(--user-jump-height)}.front-runner__stage{position:relative;display:flex;min-height:0;flex:1;align-items:flex-end;justify-content:center}.front-runner--user .front-runner__stage:before{position:absolute;bottom:4px;left:50%;width:76px;height:76px;border:1px solid rgba(117,229,194,.16);border-radius:50%;background:radial-gradient(circle,rgba(117,229,194,.1),transparent 68%);content:"";transform:translate(-50%)}.front-runner__shadow{position:absolute;bottom:-2px;left:50%;width:54px;height:8px;border-radius:50%;background:#00000057;filter:blur(2px);transform:translate(-50%)}.front-runner__label{position:relative;z-index:2;height:20px;padding-top:7px;overflow:hidden;color:#7d8796;font-size:clamp(.43rem,1.8vw,.56rem);font-weight:700;letter-spacing:.1em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.front-runner--user .front-runner__label{color:var(--accent);font-size:clamp(.48rem,2vw,.63rem);font-weight:700}.horse-course--groupJumpFrontView .front-runner__shadow{animation:front-runner-shadow var(--group-jump-duration) linear both}@keyframes front-runner-shadow{0%,to{opacity:1;transform:translate(-50%) scale(1)}42%,58%{opacity:.22;transform:translate(-50%) scale(.46)}}@keyframes front-jockey-jump{0%,to{transform:translate(-50%) translateY(0) scaleY(1)}8%{transform:translate(-50%) translateY(3px) scaleY(.96)}42%,58%{transform:translate(-50%) translateY(calc(var(--effective-front-jump-height, var(--front-jump-height)) * -1)) scaleY(1.02)}88%{transform:translate(-50%) translateY(0) scaleY(.98)}}.front-unit .front-horse{position:absolute;z-index:1;bottom:-8px;left:50%;display:block;width:clamp(52px,12.5vw,67px);height:auto;opacity:.42;filter:drop-shadow(0 3px 4px rgba(0,0,0,.24));object-fit:contain;transform:translate(-50%)}.front-runner--user .front-horse{width:clamp(56px,13.75vw,72px);opacity:.5}.front-jockey-jumper{position:absolute;z-index:3;bottom:12px;left:50%;width:clamp(62px,14vw,81px);transform:translate(-50%);transform-origin:50% 100%}.front-runner--user .front-jockey-jumper{width:clamp(65px,15vw,85px)}.horse-course--groupJumpFrontView .front-jockey-jumper{animation:front-jockey-jump var(--group-jump-duration) linear both}.front-jockey-image{display:block;width:100%;height:auto;filter:drop-shadow(0 5px 6px rgba(0,0,0,.36))}.front-runner--user .front-jockey-image{filter:drop-shadow(0 0 10px rgba(117,229,194,.36))}.horse-metrics{display:flex;margin:10px 0 0;gap:22px}.horse-metrics div{display:flex;align-items:baseline;gap:8px}.horse-metrics dt{color:var(--muted);font-size:.68rem}.horse-metrics dd{margin:0;color:#dce3eb;font-size:.82rem;font-variant-numeric:tabular-nums;font-weight:600}.horse-metrics dd[data-live=true]{color:var(--accent);letter-spacing:.01em}.race-results-cta{display:inline-flex;min-height:44px;margin-top:18px;padding:10px 13px;align-items:center;justify-content:center;gap:9px;border:1px solid rgba(117,229,194,.32);border-radius:8px;background:#75e5c214;color:var(--accent);font-size:.75rem;font-weight:700}.race-results-cta:hover{background:#75e5c224}.race-results-cta__arrow{font-size:1rem;line-height:1;transition:transform .16s ease}.race-results-cta:hover .race-results-cta__arrow{transform:translateY(2px)}.result-note{margin:12px 0 0;color:#7d8796;font-size:.7rem;line-height:1.7}.horse-course__helper{position:absolute;z-index:2;top:18px;left:50%;color:#727d8c;font-size:.65rem;transform:translate(-50%)}.horse-course--waitingForAllFinish .horse-course__helper,.horse-course--transitionToFrontView .horse-course__helper,.horse-course--groupJumpFrontView .horse-course__helper,.horse-course--finished .horse-course__helper{color:var(--accent)}.horse-course--transitionToFrontView .horse-course__helper,.horse-course--groupJumpFrontView .horse-course__helper,.horse-course--finished .horse-course__helper{opacity:0}.secondary-button:disabled{cursor:not-allowed;opacity:.42}.evaluation-grid{display:grid;margin-top:24px;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.evaluation-card{position:relative;min-height:166px;padding:19px 16px;border:1px solid var(--line);border-radius:9px;background:#111824b3}.evaluation-card__symbol{display:grid;width:25px;height:25px;place-items:center;border:1px solid currentColor;border-radius:50%;color:#b4bfd0;font-size:.72rem}.evaluation-card--comfortable .evaluation-card__symbol{color:var(--accent)}.evaluation-card--available .evaluation-card__symbol{color:#88bfff}.evaluation-card--difficult .evaluation-card__symbol{color:var(--warm)}.evaluation-card h4{min-height:34px;margin:15px 0 8px;font-size:.78rem;line-height:1.4}.evaluation-card strong{color:#e7ecf2;font-size:.88rem}.evaluation-card p{margin:9px 0 0;color:var(--muted);font-size:.65rem;line-height:1.55}.measurement-comment{border-left:3px solid #88bfff}.measurement-comment--good{border-left-color:var(--accent)}.measurement-comment--limited{border-left-color:var(--warm)}.measurement-comment__message{max-width:850px;margin:23px 0 0;color:#dce3eb;font-size:.88rem;line-height:1.9}.measurement-comment__suggestions{display:flex;margin:18px 0 0;padding:0;flex-wrap:wrap;gap:8px;list-style:none}.measurement-comment__suggestions li{padding:7px 10px;border-radius:6px;background:#ffffff0b;color:#aeb8c6;font-size:.7rem}.comparison-date,.comparison-empty{margin:22px 0 0;color:var(--muted);font-size:.76rem;line-height:1.7}.comparison-list{display:grid;margin:18px 0 0;padding:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;list-style:none}.comparison-list li{display:grid;padding:17px;gap:9px;border:1px solid var(--line);border-radius:8px}.comparison-list li>span{color:var(--muted);font-size:.66rem}.comparison-list strong{color:#dce3eb;font-size:.76rem;font-variant-numeric:tabular-nums;line-height:1.5}.comparison-list .comparison--better{color:var(--accent)}.comparison-list .comparison--worse{color:var(--warm)}.measurement-history__empty{margin:22px 0 0;color:var(--muted);font-size:.78rem;line-height:1.7}.measurement-history__charts{display:grid;margin-top:22px;gap:24px}.history-chart{min-width:0;padding:18px;border:1px solid var(--line);border-radius:9px;background:#1118248f}.history-chart__heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.history-chart__heading h4{margin:0;font-size:.88rem}.history-chart__heading>span{color:#7d8796;font-size:.68rem;font-weight:600}.history-chart__legend{display:flex;margin:13px 0 0;padding:0;flex-wrap:wrap;gap:8px 18px;list-style:none}.history-chart__legend li{display:grid;align-items:center;grid-template-columns:auto auto auto;gap:6px;color:var(--muted);font-size:.68rem}.history-chart__legend strong{color:#dce3eb;font-size:.72rem;font-variant-numeric:tabular-nums}.history-chart__legend-mark{width:16px;height:2px;background:currentColor}.history-chart__legend-mark--download,.history-chart__line--download,.history-chart__point--download{color:var(--accent);stroke:var(--accent)}.history-chart__legend-mark--upload,.history-chart__line--upload,.history-chart__point--upload{color:#88bfff;stroke:#88bfff}.history-chart__legend-mark--ping,.history-chart__line--ping,.history-chart__point--ping{color:#c8d2df;stroke:#c8d2df}.history-chart__legend-mark--loaded-latency,.history-chart__line--loaded-latency,.history-chart__point--loaded-latency{color:var(--warm);stroke:var(--warm)}.history-chart__svg{display:block;width:100%;height:auto;margin-top:14px;overflow:visible}.history-chart__grid line{stroke:#ffffff1f;stroke-width:1}.history-chart__grid text,.history-chart__x-labels text{fill:#7d8796;font-size:10px}.history-chart__line{fill:none;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round}.history-chart__point{fill:var(--surface-raised);stroke-width:2}.history-chart__point--latest{fill:currentColor;stroke:#f5f7fb;stroke-width:1.5}.measurement-history__time-bands,.measurement-condition-trends{margin-top:26px;padding-top:24px;border-top:1px solid var(--line)}.condition-trends__limit-note{margin:12px 0 0;color:#7d8796;font-size:.68rem}.condition-trends__table{display:grid;margin-top:17px;gap:8px}.condition-trends__columns{display:grid;padding:0 14px;grid-template-columns:minmax(130px,1.25fr) repeat(4,minmax(0,1fr));gap:10px;color:#7d8796;font-size:.62rem;font-weight:600}.condition-trends__row{display:grid;min-width:0;padding:14px;grid-template-columns:minmax(130px,1.25fr) minmax(0,4fr);align-items:stretch;gap:10px;border:1px solid var(--line);border-radius:8px;background:#11182480}.condition-trends__condition{min-width:0}.condition-trends__condition h5{display:inline;margin:0;overflow-wrap:anywhere;color:#dce3eb;font-size:.78rem;line-height:1.45}.condition-trends__condition p{margin:6px 0 0;color:#7d8796;font-size:.62rem}.condition-trends__current-badge{display:inline-block;margin-left:7px;padding:2px 5px;border:1px solid rgba(117,229,194,.35);border-radius:999px;color:var(--accent);font-size:.58rem;font-weight:700;vertical-align:1px}.condition-trends__metrics{display:grid;min-width:0;margin:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.condition-trends__metric{display:grid;min-width:0;align-content:start;gap:4px}.condition-trends__metric dt{color:var(--muted);font-size:.62rem}.condition-trends__metric dd{display:grid;min-width:0;margin:0;gap:4px}.condition-trends__metric strong{overflow-wrap:anywhere;color:#dce3eb;font-size:.72rem;font-variant-numeric:tabular-nums;line-height:1.4}.condition-trends__metric small{color:#7d8796;font-size:.58rem}.measurement-history__time-band-heading h4{margin:0;font-size:.92rem}.measurement-history__time-band-heading p{margin:8px 0 0;color:var(--muted);font-size:.72rem;line-height:1.7}.time-band-grid{display:grid;margin-top:17px;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.time-band-card{min-width:0;padding:15px;border:1px solid var(--line);border-radius:8px;background:#11182480}.time-band-card__heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.time-band-card h5{margin:0;font-size:.78rem}.time-band-card__heading span{color:#7d8796;font-size:.6rem;white-space:nowrap}.time-band-card dl{display:grid;margin:14px 0 0;gap:11px}.time-band-card__metric{display:grid;gap:3px}.time-band-card__metric dt{color:var(--muted);font-size:.62rem}.time-band-card__metric dd{display:grid;margin:0;gap:3px}.time-band-card__metric strong{color:#dce3eb;font-size:.72rem;font-variant-numeric:tabular-nums;white-space:nowrap}.time-band-card__metric small{color:#7d8796;font-size:.58rem}.time-band-card__empty{margin:14px 0 0;color:var(--muted);font-size:.68rem;line-height:1.7}.measurement-history__legacy-timezone{margin:14px 0 0;padding-left:10px;border-left:2px solid #88bfff;color:#aeb8c6;font-size:.68rem;line-height:1.7}.share-result{display:block;padding:16px 18px;border-color:#75e5c233;background:linear-gradient(135deg,#75e5c214,#0d121ccc)}.share-result__heading{display:grid;align-items:baseline;grid-template-columns:auto 1fr;gap:0 10px}.share-result h3{margin:0;font-size:1rem}.share-result p{margin:5px 0 0;color:var(--muted);font-size:.68rem;line-height:1.5}.share-result__heading p{grid-column:1 / -1}.share-button{min-height:42px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#75e5c20f;color:#dce3eb;cursor:pointer;font-size:.72rem;font-weight:700;white-space:nowrap}.share-button:hover:not(:disabled){border-color:#75e5c28a;background:#75e5c21f}.share-button--primary{border-color:#75e5c26b;background:#75e5c224;color:var(--accent)}.share-button--primary:hover:not(:disabled){background:#75e5c238}.share-button:disabled{cursor:wait;opacity:.58}.share-result .share-result__status{margin:9px 0 0;color:#bdc5d0}.share-result__actions{display:grid;margin-top:12px;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.notice{display:grid;margin:0 0 96px;padding:28px 32px;grid-template-columns:auto 1fr;gap:20px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.notice__icon{display:grid;width:28px;height:28px;place-items:center;border:1px solid rgba(255,179,122,.35);border-radius:50%;color:var(--warm);font-family:serif;font-size:.9rem;font-style:italic}.notice h2{margin:2px 0 15px;font-size:.88rem}.notice ul{display:grid;margin:0;padding:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 36px;color:var(--muted);font-size:.75rem;line-height:1.7;list-style:none}.notice li{position:relative;padding-left:14px}.notice li:before{position:absolute;top:.7em;left:0;width:3px;height:3px;border-radius:50%;background:#697383;content:""}.site-footer{display:flex;min-height:86px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);color:#626c7a;font-size:.68rem;letter-spacing:.04em}.site-footer__links{display:flex;align-items:center;gap:22px}.site-footer a{color:#a8b2c0;text-decoration:underline;text-decoration-color:#a8b2c059;text-underline-offset:3px}.site-footer a:hover{color:var(--accent)}@media(min-width:1200px){.site-shell{width:min(1340px,calc(100% - clamp(48px,4vw,64px)))}.hero{padding:clamp(32px,5vh,52px) 0 clamp(24px,3vh,36px);align-content:start;gap:clamp(18px,1.6vw,24px)}.hero__eyebrow{font-size:.68rem}.hero h1{font-size:clamp(1.6rem,2.5vw,2.3rem)}.hero__lead{max-width:600px;font-size:clamp(.8rem,1.05vw,.92rem)}.hero__dashboard{grid-template-columns:minmax(410px,.87fr) minmax(520px,1.13fr);gap:22px}.hero__controls{gap:12px}.connection-info{min-height:104px;padding:14px 16px}.hero__measurement{min-height:160px;padding:12px 16px;grid-template-columns:minmax(170px,.9fr) minmax(195px,1.1fr);gap:16px}.speed-display{min-height:138px}.speed-display:before{width:134px;height:134px}.speed-display:after{width:98px;height:98px}.speed-display__reading strong{font-size:clamp(3.25rem,5.7vw,5.15rem)}.speed-display__reading span{font-size:clamp(.96rem,2vw,1.2rem)}.test-button{min-height:54px;padding:14px 20px;font-size:1rem}.horse-visualization{padding:20px}.horse-visualization .result-panel__eyebrow{font-size:.68rem}.horse-visualization .result-panel__heading h2{font-size:clamp(1.25rem,2vw,1.6rem)}.horse-course{height:220px;margin-top:12px}.horse-course__start,.horse-course__finish{top:16px;font-size:.62rem}.horse-course__finish:after{height:164px}.horse-course__lane--standard,.race-runner--standard{bottom:148px}.horse-course__lane--user,.race-runner--user{bottom:91px}.horse-course__lane--fast,.race-runner--fast{bottom:34px}.horse-course__lane-label--standard{bottom:158px}.horse-course__lane-label--user{bottom:101px}.horse-course__lane-label--fast{bottom:44px}.race-runner--standard,.race-runner--fast{--horse-width: 68px}.race-runner--user{--horse-width: 72px}.horse-metrics{margin-top:12px;gap:24px}.horse-metrics dd{font-size:.86rem}}@media(min-width:1440px){.site-shell{width:min(1500px,calc(100% - clamp(64px,5vw,96px)))}.hero__dashboard{grid-template-columns:minmax(450px,.41fr) minmax(620px,.59fr);gap:26px}.horse-visualization{padding:clamp(22px,1.4vw,24px)}.horse-visualization .result-panel__heading h2{font-size:clamp(1.32rem,2vw,1.72rem)}.horse-course{height:clamp(260px,calc(3.125vw + 215px),276px);margin-top:14px}.horse-course__start,.horse-course__finish{font-size:.68rem}.horse-course__finish:after{height:calc(100% - 42px)}.horse-course__helper{top:20px;font-size:.7rem}.horse-course__lane--standard,.race-runner--standard{bottom:185px}.horse-course__lane--user,.race-runner--user{bottom:110px}.horse-course__lane--fast,.race-runner--fast{bottom:35px}.horse-course__lane-label--standard{bottom:195px}.horse-course__lane-label--user{bottom:120px}.horse-course__lane-label--fast{bottom:45px}.race-runner--standard,.race-runner--fast{--horse-width: 74px}.race-runner--user{--horse-width: 79px}.horse-metrics{margin-top:14px;gap:28px}.horse-metrics dt{font-size:.72rem}.horse-metrics dd{font-size:.94rem}}@media(max-width:900px){.hero{min-height:auto;align-content:start}.hero__intro{text-align:center}.hero__lead{margin:0 auto}.hero__dashboard{grid-template-columns:minmax(0,1fr)}}@media(max-width:760px){.share-result__actions{grid-template-columns:repeat(2,minmax(0,1fr))}.site-shell{width:min(100% - 32px,620px)}.site-header{height:76px}.site-header__tag{display:none}.hero{min-height:auto;padding:clamp(22px,5dvh,40px) 0 60px;gap:10px}.hero__intro,.hero__dashboard{min-width:0}.hero h1{width:auto;font-size:clamp(1.3rem,5.8vw,1.45rem)}.hero__dashboard{gap:22px}.hero__controls{gap:0}.connection-info{min-height:142px;margin-top:12px;padding:22px 24px;grid-template-columns:minmax(110px,.7fr) 1.3fr;gap:18px 24px}.connection-info__heading{grid-row:auto}.connection-info__details{grid-column:1 / -1}.connection-info__note{display:block;grid-column:1 / -1;margin-top:0;color:#7d8796;font-size:.66rem;line-height:1.6}.connection-info__retry{grid-column:auto;grid-row:auto}.measurement-condition{margin-top:0}.hero__measurement{display:block;min-height:0;padding:0;border:0;background:transparent}.measurement-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:24px;text-align:center}.speed-display{min-height:180px;margin-top:20px}.speed-display:before{width:184px;height:184px}.speed-display:after{width:134px;height:134px}.speed-display__reading{gap:8px}.speed-display__reading strong{font-size:clamp(5rem,14vw,9.4rem)}.measurement-condition__summary-copy{grid-template-columns:1fr;gap:2px}.measurement-condition__eyebrow{display:none}.measurement-condition__actions{align-items:flex-start;flex-direction:column}.measurement-condition__primary-actions{width:100%;margin-left:0;justify-content:stretch}.measurement-condition__primary-actions button{flex:1 1 0}.measurement-status{flex:0 0 auto;margin-top:12px;white-space:nowrap}.test-button{flex:0 0 auto;width:auto;min-width:160px;min-height:48px;margin-top:14px;padding:11px 18px;font-size:.94rem;gap:16px}.hero__lead-mobile-break{display:block}.button-hint{flex:0 0 100%;margin-top:10px}.error-message{margin:22px auto 0;padding:13px 16px}.results{padding:42px 0 64px}.section-heading{margin-bottom:20px;align-items:flex-start;flex-direction:column;gap:16px}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{min-height:118px;padding:18px}.metric-card dd{margin-top:17px}.evaluation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-card:last-child{grid-column:1 / -1}.comparison-list{grid-template-columns:1fr}.history-chart{padding:16px}.condition-trends__columns{display:none}.condition-trends__row{grid-template-columns:1fr;gap:13px}.condition-trends__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 12px}.condition-trends__metric dt{font-size:.64rem}.condition-trends__metric strong{font-size:.76rem}.time-band-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.notice{margin-bottom:64px;padding:24px}.notice ul{grid-template-columns:1fr}}@media(max-width:760px)and (max-height:680px){.hero{padding-top:16px}.speed-display{min-height:168px;margin-top:14px}.speed-display:before{width:172px;height:172px}.speed-display:after{width:126px;height:126px}.measurement-status{margin-top:10px}.test-button{margin-top:12px}}@media(max-width:360px){.hero h1{white-space:normal}.measurement-actions{flex-direction:column}.button-hint{flex-basis:auto;align-self:stretch}}@media(max-width:760px){.horse-visualization--focused{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.horse-visualization--focused .result-panel__heading,.horse-visualization .result-panel__heading--with-upload-result{display:grid;align-items:flex-start;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title actions" "upload upload";gap:9px 10px}.horse-visualization--focused .horse-visualization__title,.horse-visualization .result-panel__heading--with-upload-result .horse-visualization__title{min-width:0;grid-area:title}.horse-visualization--focused .result-panel__heading h2{font-size:clamp(1.18rem,5.5vw,1.4rem)}.horse-visualization--focused .horse-visualization__actions,.horse-visualization .result-panel__heading--with-upload-result .horse-visualization__actions{margin-left:0;align-self:start;grid-area:actions;gap:6px}.horse-visualization--focused .secondary-button{min-height:40px;padding:9px 12px;font-size:.7rem}.horse-visualization--focused .race-upload-result,.horse-visualization .result-panel__heading--with-upload-result .race-upload-result{position:static;margin-top:1px;justify-self:center;grid-area:upload;transform:none;animation-name:upload-result-pop-mobile}@keyframes upload-result-pop-mobile{0%{opacity:0;transform:translateY(8px) scale(.82)}24%,to{opacity:1;transform:translateY(0) scale(1)}}.horse-visualization--focused .horse-course{height:clamp(240px,44dvh,420px);margin-top:12px;--race-start: 78px;--race-goal: calc(100% - 70px) }.horse-visualization--focused .horse-course__start,.horse-visualization--focused .horse-course__finish{top:14px;font-size:.6rem}.horse-visualization--focused .horse-course__start{left:14px}.horse-visualization--focused .horse-course__finish{right:14px;height:calc(100% - 32px)}.horse-visualization--focused .horse-course__finish:after{top:18px;height:calc(100% - 18px)}.horse-visualization--focused .horse-course__helper{top:17px;max-width:calc(100% - 144px);overflow:hidden;font-size:.62rem;text-overflow:ellipsis;white-space:nowrap}.horse-visualization--focused .horse-course__lane{right:12px;left:68px}.horse-visualization--focused .horse-course__lane-label{left:7px;width:54px;font-size:.44rem}.horse-visualization--focused .horse-course__lane-label--user{font-size:.5rem}.horse-visualization--focused .race-runner--standard,.horse-visualization--focused .race-runner--fast{--horse-width: clamp(58px, 16vw, 70px)}.horse-visualization--focused .race-runner--user{--horse-width: clamp(62px, 17vw, 74px)}.horse-visualization--focused .horse-metrics{margin-top:12px;align-items:baseline;flex-direction:row;gap:18px}.horse-visualization--focused .horse-metrics dt{font-size:.68rem}.horse-visualization--focused .horse-metrics dd{font-size:.82rem}.horse-visualization--focused .race-results-cta{width:100%;min-height:44px;margin-top:12px}.horse-visualization--focused .goal-focus-front-view__lineup{inset:44px 12px 0;gap:4px}.horse-visualization--focused .front-unit .front-horse{width:clamp(54px,15vw,70px)}.horse-visualization--focused .front-runner--user .front-horse{width:clamp(58px,16vw,74px)}.horse-visualization--focused .front-jockey-jumper{width:clamp(68px,20vw,88px);--effective-front-jump-height: calc(var(--front-jump-height) * 1.33)}.horse-visualization--focused .front-runner--user .front-jockey-jumper{width:clamp(72px,21vw,92px)}}@media(max-width:760px)and (max-height:620px){.horse-visualization--focused .horse-course{height:clamp(250px,52dvh,300px)}.horse-visualization--focused .front-jockey-jumper{--effective-front-jump-height: calc(var(--front-jump-height) * 1.15)}.horse-visualization--focused .result-panel__eyebrow{font-size:.58rem}.horse-visualization--focused .result-panel__heading h2{font-size:1.08rem}}@media(max-width:460px){.hero__lead{max-width:320px}.connection-info{min-height:190px;padding:18px;grid-template-columns:1fr auto;gap:14px}.connection-info__primary,.connection-info__details,.connection-info__note,.connection-info__status,.connection-info__error{grid-column:1 / -1}.connection-info__details{gap:8px 14px}.connection-info__error{align-items:flex-start;flex-direction:column}.speed-display__reading strong{font-size:clamp(4.5rem,23vw,6.5rem)}.metrics-grid{grid-template-columns:1fr}.metric-card{display:flex;min-height:112px;align-items:center;justify-content:space-between;gap:20px}.metric-card dd{margin-top:0}.completed-measurement{margin-top:40px}.result-panel,.share-result{padding:22px 18px}.share-result{padding:14px 16px}.result-panel__heading{gap:14px}.loaded-latency__table{margin-top:18px}.loaded-latency__table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.loaded-latency__table,.loaded-latency__table tbody,.loaded-latency__table tr,.loaded-latency__table th,.loaded-latency__table td{display:block}.loaded-latency__table tbody{display:grid;gap:10px}.loaded-latency__table tr{display:grid;padding:13px 0;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;border-bottom:1px solid var(--line)}.loaded-latency__table th,.loaded-latency__table td{padding:0;border:0}.loaded-latency__table tbody th{grid-column:1 / -1}.loaded-latency__table td{display:flex;justify-content:space-between;gap:12px}.loaded-latency__table td:last-child{grid-column:1 / -1;text-align:left}.loaded-latency__table td:before{color:#7d8796;font-size:.62rem;content:attr(data-label)}.loaded-latency__summary{margin-top:18px}.horse-course{height:196px;--race-start: 70px;--race-goal: calc(100% - 62px) }.horse-course:before{opacity:.74}.horse-course:after{opacity:.66}.horse-course__lane{left:64px}.horse-course__lane-label{width:52px;font-size:.43rem}.horse-course__lane-label--user{font-size:.48rem}.race-runner{right:calc(100% - var(--race-goal))}.runner-mover{--horse-width: 56px}.race-runner--user .runner-mover{--horse-width: 60px}.goal-focus-front-view__lineup{right:12px;left:12px;gap:4px}.front-runner--user .front-runner__stage:before{width:66px;height:66px}.horse-course--transitionToFrontView .horse-course__helper,.horse-course--groupJumpFrontView .horse-course__helper,.horse-course--finished .horse-course__helper{left:14px;max-width:150px;overflow:hidden;font-size:.57rem;text-overflow:ellipsis;transform:none;white-space:nowrap}.goal-focus-front-view__heading strong{display:none}.horse-metrics{align-items:flex-start;flex-direction:column;gap:7px}.race-results-cta{width:100%}.evaluation-grid{grid-template-columns:1fr}.evaluation-card,.evaluation-card:last-child{display:grid;min-height:116px;padding:16px;grid-column:auto;grid-template-columns:auto 1fr;align-items:center;gap:3px 12px}.evaluation-card__symbol{grid-row:1 / 3}.evaluation-card h4{min-height:0;margin:0}.evaluation-card p{grid-column:2}.measurement-comment__suggestions{align-items:stretch;flex-direction:column}.history-chart__legend{align-items:stretch;flex-direction:column;gap:7px}.time-band-grid{grid-template-columns:1fr}.share-result{display:block}.share-button{width:100%}.notice{grid-template-columns:1fr}.site-footer{padding:24px 0;align-items:flex-start;flex-direction:column;justify-content:center;gap:8px}.site-footer__links{align-items:flex-start;flex-direction:column;gap:8px}}@media(max-width:340px){.share-result__actions{grid-template-columns:1fr}.site-shell{width:calc(100% - 24px)}.hero{padding-top:64px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.horse-visualization--focused,.horse-visualization--focus-exiting{animation:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.race-runner--warming .runner-mover{animation-duration:var(--warmup-duration)!important;animation-iteration-count:1!important}.race-runner--racing .runner-mover{animation-duration:var(--race-duration)!important;animation-iteration-count:1!important}.horse-sprite--galloping{animation:none!important;background-image:var(--horse-idle-image);background-position:0 0;background-size:100% 100%}.race-runner--warming .race-horse__body,.race-runner--warming .race-horse__neck,.race-runner--warming .race-horse__head,.race-runner--warming .race-horse__muzzle,.race-runner--warming .race-horse__leg,.race-runner--racing .race-horse__body,.race-runner--racing .race-horse__neck,.race-runner--racing .race-horse__head,.race-runner--racing .race-horse__muzzle,.race-runner--racing .race-horse__leg{animation-duration:1.2s!important;animation-iteration-count:infinite!important}.horse-course__track,.goal-focus-front-view,.race-runner{transition-duration:.52s!important}.horse-course--groupJumpFrontView .front-jockey-jumper{--effective-front-jump-height: calc(var(--front-jump-height) * .62);animation-duration:1.6s!important;animation-iteration-count:1!important}.horse-course--groupJumpFrontView .front-runner__shadow{animation-duration:1.6s!important;animation-iteration-count:1!important}}
