.speed-page{padding-block:28px 70px}.speed-heading{max-width:750px;padding:24px 0 35px}.speed-heading h1{margin:10px 0 18px}.speed-lab{border:1px solid var(--line);box-shadow:var(--shadow);border-radius:24px;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);display:grid;overflow:hidden}.speed-stage{background:radial-gradient(ellipse at 50% 35%,var(--blue-soft),var(--surface) 65%);min-width:0;padding:26px 32px 20px}.speed-stage-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.speed-stage-top .pill,.speed-stage-top button{font-size:11px}.speed-dial{width:100%;min-width:0;margin:8px auto 0;position:relative}.dial-art{width:100%;height:auto;display:block;overflow:visible}.dial-art text{fill:var(--muted);font:12px system-ui}.speed-needle{transform-origin:240px 225px;transition:transform .5s ease-out}.dial-number{text-align:center;pointer-events:none;width:100%;line-height:1.1;position:absolute;top:68%;left:0}.dial-number>[data-live-speed]{letter-spacing:-.06em;font-variant-numeric:tabular-nums;font-size:clamp(34px,5vw,58px);font-weight:650}.dial-unit{color:var(--muted);margin-left:8px;font-size:14px}.dial-number small{color:var(--muted);margin-top:9px;font-size:11px;display:block}.speed-status{text-align:center;min-height:48px;margin-top:14px;font-size:13px;line-height:1.7}.speed-stage progress{width:100%;height:5px;accent-color:var(--blue);margin-top:8px;display:block}.speed-controls{border-left:1px solid var(--line);flex-direction:column;justify-content:center;align-items:stretch;padding:35px;display:flex}.speed-controls h2{margin:8px 0 25px;font-size:25px}.speed-controls label{margin-bottom:8px;font-size:13px;font-weight:600}.speed-controls select{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--text);border-radius:10px;min-height:46px;padding:12px 9px;font-size:12px}.speed-controls #speed-data{margin:10px 0 20px;font-size:11px;line-height:1.8}.speed-start{justify-content:center;gap:15px;width:100%;min-height:52px;font-size:15px}.speed-controls [data-speed-stop]{justify-content:center;margin-top:10px}.speed-privacy{margin-top:15px;font-size:11px;line-height:1.8}.speed-privacy a,.speed-guide a{color:var(--blue);text-underline-offset:3px;text-decoration:underline}.speed-tips{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.speed-tips h3{font-size:12px}.speed-tips ul{color:var(--muted);margin:10px 0 0;padding-left:17px;font-size:11px;line-height:1.9}.speed-error{background:var(--pink-soft);color:var(--text);border-radius:8px;margin-top:15px;padding:12px;font-size:13px}.speed-metrics{border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:repeat(4,1fr);display:grid}.speed-metrics>div{border-right:1px solid var(--line);padding:25px}.speed-metrics>div:last-child{border:0}.speed-metrics span{color:var(--muted);font-size:12px}.speed-metrics strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin-block:7px;font-size:clamp(24px,3vw,35px);font-weight:600;display:block}.speed-metrics small{color:var(--muted);font-size:10px}.speed-summary{border-top:1px solid var(--line);flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:15px;padding:15px 25px;display:flex}.speed-summary p,.speed-summary button{font-size:12px}.speed-guide{grid-template-columns:1.6fr 1fr;gap:65px;padding-top:65px;display:grid}.speed-guide h2{margin:12px 0 18px;font-size:24px}.speed-guide article p{margin-bottom:20px;font-size:15px;line-height:1.95}.speed-guide article h2:not(:first-of-type){margin-top:35px}.speed-guide aside{background:var(--soft);border:1px solid var(--line);border-radius:16px;align-self:start;padding:25px}.speed-guide aside h2{font-size:21px}.speed-guide details{border-bottom:1px solid var(--line);padding:17px 0}.speed-guide details:last-child{border:0}.speed-guide summary{cursor:pointer;font-size:14px;font-weight:550}.speed-guide details p{margin-top:13px;font-size:13px;line-height:1.85}@media (prefers-reduced-motion:reduce){.speed-lab *{transition:none!important;animation:none!important}}@media (width<=800px){.speed-lab{grid-template-columns:1fr}.speed-controls{border-left:0;border-top:1px solid var(--line);padding:25px}.speed-stage{padding-inline:20px}.speed-dial{max-width:410px}.dial-number>[data-live-speed]{font-size:48px}.speed-tips{display:none}.speed-metrics>div{padding:20px 15px}.speed-guide{grid-template-columns:1fr;gap:30px}}@media (width<=480px){.speed-metrics{grid-template-columns:1fr 1fr}.speed-metrics>div:nth-child(2){border-right:0}.speed-metrics>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.dial-number>[data-live-speed]{font-size:38px}.speed-stage-top{justify-content:center}.speed-guide{padding-top:40px}.speed-controls select{font-size:11px}}.speed-instruments{grid-template-columns:minmax(0,1fr) minmax(70px,24%);align-items:center;min-height:300px;margin-top:10px;display:grid}.bunny-rail{min-width:0}.bunny-tower{width:100%;height:auto;max-height:340px;display:block;overflow:visible}.rail-label{fill:var(--muted);font:10px system-ui}.rail-bunny{transform:translateY(220px)}.rail-carrot{opacity:.45}.speed-lab[data-transfer=download] .carrot-bottom,.speed-lab[data-transfer=upload] .carrot-top{opacity:1}.speed-lab[data-state=running][data-transfer=download] .rail-bunny{animation:5s linear infinite carrot-descent}.speed-lab[data-state=running][data-transfer=upload] .rail-bunny{animation:6s linear infinite ladder-ascent}.speed-lab[data-state=running][data-transfer=upload] .rail-leg{transform-box:fill-box;transform-origin:top;animation:.55s ease-in-out infinite ladder-step}.speed-lab[data-state=running][data-transfer=upload] .rail-leg.rear{animation-delay:-.275s}.speed-lab[data-state=running][data-transfer=upload] .rail-arm{transform-origin:58px -6px;animation:.55s ease-in-out infinite ladder-reach}.speed-lab[data-state=running][data-transfer=download] .rail-body{transform-origin:50px -20px;animation:5s linear infinite download-nibble}.speed-lab[data-state=running][data-transfer=upload] .rail-ears{transform-origin:52px -40px;animation:6s linear infinite upload-nibble}.speed-lab.motion-paused .bunny-tower *{animation-play-state:paused!important}.speed-lab.motion-paused .speed-needle{transition:none}@keyframes carrot-descent{0%,8%{transform:translateY(85px)}65%,98%{transform:translateY(300px)}to{transform:translateY(85px)}}@keyframes ladder-ascent{0%,8%{transform:translateY(300px)}72%,98%{transform:translateY(85px)}to{transform:translateY(300px)}}@keyframes ladder-step{50%{transform:translateY(-8px)rotate(-10deg)}}@keyframes ladder-reach{50%{transform:rotate(-14deg)}}@keyframes download-nibble{0%,65%,to{transform:rotate(0)}70%,80%,90%{transform:rotate(5deg)}75%,85%,95%{transform:rotate(-3deg)}}@keyframes upload-nibble{0%,72%,to{transform:rotate(0)}77%,85%,93%{transform:rotate(9deg)}81%,89%,97%{transform:rotate(-5deg)}}@media (prefers-reduced-motion:reduce){.speed-lab .bunny-tower *{animation:none!important}.speed-lab[data-transfer=download] .rail-bunny{transform:translateY(300px)}.speed-lab[data-transfer=upload] .rail-bunny{transform:translateY(85px)}}@media (width<=480px){.speed-instruments{grid-template-columns:minmax(0,1fr) 72px;min-height:255px}.dial-number>[data-live-speed]{font-size:30px}.dial-unit{margin-left:4px;font-size:11px}.dial-number small{max-width:170px;margin:5px auto 0;font-size:9px}.bunny-tower{max-height:280px}.speed-stage{padding-inline:12px}.speed-needle{transition:transform .35s ease-out}}
