@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(./press-start-2p-latin-400-normal-_wFEWmAB.woff2)format("woff2"),url(./press-start-2p-latin-400-normal-KLytu4cr.woff)format("woff")}:root{--black:#000;--navy:#1d2b53;--plum:#7e2553;--dkgreen:#008751;--brown:#ab5236;--dkgray:#5f574f;--ltgray:#c2c3c7;--white:#fff1e8;--red:#ff004d;--orange:#ffa300;--yellow:#ffec27;--green:#00e436;--blue:#29adff;--lavender:#83769c;--pink:#ff77a8;--peach:#fca;--px:4px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--black);color:var(--white);-webkit-font-smoothing:none;font-family:"Press Start 2P",ui-monospace,monospace;font-size:10px;line-height:1.7}#app{flex-direction:column;min-height:100%;display:flex}.pixel-canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.screen{width:100%;max-width:980px;margin:0 auto;padding:16px 16px 40px}.title{flex-wrap:wrap;align-items:baseline;gap:12px;margin:8px 0 16px;display:flex}.title h1{color:var(--yellow);text-shadow:var(--px) var(--px) 0 var(--plum);letter-spacing:1px;margin:0;font-size:22px}.title span{color:var(--lavender);font-size:8px}.title:has(.topright){min-height:44px;padding-right:60px;position:relative}.title .topright{position:absolute;top:50%;right:0;transform:translateY(-50%)}button.iconbtn{background:var(--navy);color:var(--ltgray);box-shadow:inset -3px -3px 0 var(--black), inset 3px 3px 0 var(--lavender);padding:6px;line-height:0}button.iconbtn svg{fill:currentColor;display:block}button.iconbtn:hover,button.iconbtn:focus-visible{color:var(--yellow)}h2{color:var(--blue);margin:0 0 12px;font-size:11px}.panel{background:var(--navy);border:var(--px) solid var(--white);box-shadow:var(--px) var(--px) 0 var(--dkgray);margin-bottom:16px;padding:14px}.grid{grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));gap:12px 16px;display:grid}.grid>*,.cols>*,.panel{min-width:0}.cols{grid-template-columns:1fr;gap:16px;display:grid}@media (min-width:860px){.cols{grid-template-columns:1fr 1fr}}label.field{color:var(--ltgray);flex-direction:column;gap:6px;font-size:8px;display:flex}label.check{color:var(--ltgray);cursor:pointer;align-items:center;gap:8px;font-size:8px;display:flex}input,select,button{font:inherit;color:inherit}input[type=number],input[type=text],input[type=email],select{background:var(--black);color:var(--white);border:2px solid var(--lavender);border-radius:0;width:100%;padding:8px;font-size:10px}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible,.swatch:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}input[type=range]{width:100%;accent-color:var(--yellow)}input[type=checkbox]{width:16px;height:16px;accent-color:var(--yellow)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row>.grow{flex:1;min-width:0}button,.btn{background:var(--ltgray);color:var(--black);cursor:pointer;box-shadow:inset -3px -3px 0 var(--dkgray), inset 3px 3px 0 var(--white);text-transform:uppercase;border:0;padding:10px 12px;font-size:9px}button:active:not(:disabled){box-shadow:inset 3px 3px 0 var(--dkgray), inset -3px -3px 0 var(--white)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--green);box-shadow:inset -3px -3px 0 var(--dkgreen), inset 3px 3px 0 var(--white)}button.warn{background:var(--red);color:var(--white);box-shadow:inset -3px -3px 0 var(--plum), inset 3px 3px 0 var(--pink)}button.big{padding:14px 18px;font-size:12px}button.small{padding:6px 8px;font-size:7px}.actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.preview-wrap{background:var(--black);border:2px solid var(--lavender);justify-content:center;align-items:center;width:100%;height:164px;display:flex;overflow:hidden}.stats{color:var(--ltgray);flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:8px;display:flex}.stats b{color:var(--yellow);font-weight:400}.warning{color:var(--black);background:var(--orange);margin-top:10px;padding:8px;font-size:8px}.note{color:var(--ltgray);font-size:8px}.account form.row{align-items:flex-end;margin-bottom:12px}.account form.row .field{min-width:min(220px,100%)}.account p{margin:0 0 12px;line-height:1.6}.account>:last-child{margin-bottom:0}.account .note b{color:var(--yellow);overflow-wrap:anywhere;font-weight:400}.notice{background:var(--plum);border:var(--px) solid var(--pink);margin-bottom:16px;padding:12px;font-size:8px}.notice b{color:var(--yellow);font-weight:400}.swatches{flex-wrap:wrap;gap:4px;display:flex}.swatch{border:2px solid var(--black);width:22px;height:22px;box-shadow:none;cursor:pointer;padding:0}.swatch[aria-checked=true]{border-color:var(--white);outline:2px solid var(--yellow)}.device{border-bottom:2px dashed var(--lavender);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0;display:flex}.device:last-child{border-bottom:0}.device .name{flex:1;min-width:140px}.device .name small{color:var(--ltgray);margin-top:4px;font-size:7px;display:block}.light{background:var(--dkgray);border:2px solid var(--black);width:14px;height:14px;box-shadow:0 0 0 2px var(--ltgray);flex:none}.light.connected{background:var(--green)}.light.connecting,.light.reconnecting{background:var(--yellow);animation:.6s steps(2,end) infinite blink}.light.error{background:var(--red)}@keyframes blink{50%{opacity:.25}}.live{flex-wrap:wrap;gap:18px;margin-top:8px;font-size:10px;display:flex}.live b{color:var(--yellow);font-weight:400}section.panel{overflow-x:auto}table.history{border-collapse:collapse;width:100%;font-size:8px}table.history td,table.history th{text-align:left;border-bottom:2px solid var(--black);padding:6px 4px}table.history th{color:var(--blue);font-weight:400}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;display:grid}.stat{background:var(--black);border:2px solid var(--lavender);padding:10px}.stat small{color:var(--ltgray);margin-bottom:6px;font-size:7px;display:block}.stat b{color:var(--yellow);font-size:13px;font-weight:400}.stat i{color:var(--ltgray);margin-left:4px;font-size:7px;font-style:normal}.chart-wrap{background:var(--black);border:2px solid var(--lavender);justify-content:center;align-items:center;width:100%;height:204px;display:flex;overflow:hidden}.ride{background:var(--black);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.ride .corner{opacity:.55;gap:6px;display:flex;position:absolute;top:8px;right:8px}.ride .corner:hover,.ride .corner:focus-within{opacity:1}.ride .simpad{opacity:.7;gap:6px;display:flex;position:absolute;bottom:8px;right:8px}.ride .banner{background:var(--orange);color:var(--black);padding:8px 12px;font-size:8px;display:none;position:absolute;top:8px;left:50%;transform:translate(-50%)}.ride .banner.show{display:block}.toast{background:var(--white);color:var(--black);z-index:50;box-shadow:var(--px) var(--px) 0 var(--dkgray);padding:10px 14px;font-size:8px;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}kbd{background:var(--black);border:2px solid var(--lavender);color:var(--yellow);padding:2px 5px}a{color:var(--blue)}@media (prefers-reduced-motion:reduce){.light.connecting,.light.reconnecting{animation:none}}.step{background:var(--navy);border:var(--px) solid var(--lavender);box-shadow:var(--px) var(--px) 0 var(--dkgray);margin-bottom:16px;padding:14px;scroll-margin-top:12px}.step.done{border-color:var(--green)}.step>h2{color:var(--white);align-items:center;gap:10px;font-size:12px;display:flex}.step .num{background:var(--lavender);width:26px;height:26px;color:var(--black);flex:none;justify-content:center;align-items:center;display:inline-flex}.step.done .num{background:var(--green)}.step .tick{border:2px solid var(--lavender);flex:none;width:20px;height:20px;margin-left:auto}.step.done .tick{border-color:var(--green);background:var(--green)}.step.done .tick:after{content:"✓";color:var(--black);text-align:center;font-size:12px;line-height:16px;display:block}.step .tabs button{padding:12px 8px;font-size:10px}.step .tabpanel{background:var(--black);box-shadow:none;border-color:var(--lavender);margin-bottom:0}.step .tabs button[aria-selected=true]{background:var(--black)}.step.nudge{animation:.5s steps(4,end) 2 nudge}@keyframes nudge{50%{border-color:var(--yellow)}}.chosen-line{color:var(--ltgray);margin:0 0 12px;font-size:8px}.chosen-line b{color:var(--yellow);font-weight:400}.editing{color:var(--ltgray);background:var(--navy);flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px;padding:8px;font-size:8px;display:flex}.editing[hidden]{display:none}.editing b{color:var(--yellow);font-weight:400}#workout-box{margin-top:14px}.step .modes button{padding:14px 8px;font-size:11px}button.chosen{background:var(--yellow);box-shadow:inset -3px -3px 0 var(--orange), inset 3px 3px 0 var(--white)}.card.selected{border-color:var(--yellow);outline:2px solid var(--yellow)}.ridebar{margin:24px 0 8px}.ridebtn{background:var(--dkgray);width:100%;color:var(--ltgray);box-shadow:inset -4px -4px 0 var(--black), inset 4px 4px 0 var(--lavender);flex-direction:column;align-items:center;gap:14px;padding:22px 16px;display:flex}.ridebtn .go-label{letter-spacing:2px;font-size:24px}.ridebtn.ready{background:var(--green);color:var(--black);box-shadow:inset -4px -4px 0 var(--dkgreen), inset 4px 4px 0 var(--white)}.ridebtn.ready .go-label{text-shadow:3px 3px 0 var(--dkgreen);color:var(--white)}.ridebtn[aria-disabled=true]{cursor:pointer}.checks{flex-wrap:wrap;justify-content:center;gap:10px 22px;display:flex}.chk{align-items:center;gap:8px;font-size:9px;display:inline-flex}.chk:before{content:"";box-sizing:border-box;border:2px solid;flex:none;width:16px;height:16px}.chk.on{color:var(--white)}.ridebtn:not(.ready) .chk.on{color:var(--green)}.chk.on:before{content:"✓";background:var(--green);border-color:var(--green);color:var(--black);text-align:center;font-size:10px;line-height:12px}.ridebtn.ready .chk.on:before{background:var(--white);border-color:var(--white);color:var(--dkgreen)}.ridebtn.ready .chk.on{color:var(--black)}#go-why{text-align:center;min-height:14px;margin:8px 0 0}@media (prefers-reduced-motion:reduce){.step.nudge{animation:none}}.tabs{gap:0;margin-bottom:0;display:flex}.tabs button{background:var(--dkgray);color:var(--ltgray);box-shadow:inset 0 -4px 0 var(--black);flex:1;padding:14px 8px;font-size:12px}.tabs button[aria-selected=true]{background:var(--navy);color:var(--yellow);box-shadow:inset 0 4px 0 var(--yellow)}.tabpanel{background:var(--navy);border:var(--px) solid var(--white);box-shadow:var(--px) var(--px) 0 var(--dkgray);border-top:0;margin-bottom:16px;padding:14px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar input[type=search]{background:var(--black);min-width:120px;color:var(--white);border:2px solid var(--lavender);border-radius:0;flex:1;padding:8px;font-size:9px}.toolbar select{width:auto;font-size:8px}.cards{grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));gap:12px;display:grid}.card{background:var(--black);border:2px solid var(--lavender);flex-direction:column;gap:8px;min-width:0;padding:10px;display:flex}.card:hover,.card:focus-within{border-color:var(--yellow)}.card .head{align-items:flex-start;gap:6px;display:flex}.card .head b{color:var(--white);overflow-wrap:anywhere;flex:1;font-size:9px;font-weight:400}.card .star{box-shadow:none;color:var(--dkgray);background:0 0;padding:0 2px;font-size:14px;line-height:1}.card .star[aria-pressed=true]{color:var(--yellow)}.card canvas{width:100%;height:44px;image-rendering:pixelated;background:var(--navy);display:block}.card .meta{color:var(--ltgray);font-size:7px}.card .acts{flex-wrap:wrap;gap:4px;display:flex}.card .acts .primary{flex:1}.empty{text-align:center;color:var(--ltgray);padding:28px 12px}.empty pre{color:var(--yellow);margin:0 0 14px;font-family:inherit;font-size:10px;line-height:1.2}details.more{margin-bottom:16px}details.more>summary{cursor:pointer;color:var(--blue);padding:8px 0;font-size:9px;list-style:none}details.more>summary:before{content:"+ "}details.more[open]>summary:before{content:"- "}details.more>summary::-webkit-details-marker{display:none}.qt{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.qt input{flex:1;min-width:180px;font-size:10px}.qt-msg{min-height:14px;color:var(--ltgray);margin:6px 0 12px;font-size:8px}.qt-msg.err{color:var(--orange)}.qt-msg pre{color:var(--white);white-space:pre;margin:4px 0 0;font-family:ui-monospace,monospace;font-size:11px;overflow-x:auto}.qt-msg pre u{background:var(--red);color:var(--white);text-decoration:none}.drop-hint{outline:4px dashed var(--yellow);outline-offset:-8px}.toast{align-items:center;gap:10px;display:flex}.name-input{border:0!important;border-bottom:2px dashed var(--lavender)!important;color:var(--yellow)!important;background:0 0!important;padding:4px 0!important;font-size:14px!important}.chart-box{background:var(--black);border:2px solid var(--lavender);touch-action:none;-webkit-user-select:none;user-select:none;position:relative}.chart-box canvas{width:100%;height:220px;image-rendering:pixelated;cursor:pointer;display:block}.palette{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.palette button{padding:8px 9px;font-size:8px}.inspector{grid-template-columns:repeat(auto-fit,minmax(min(130px,100%),1fr));align-items:end;gap:10px 12px;display:grid}.zonebar{background:var(--black);height:10px;margin-top:8px;display:flex}.zonebar span{height:100%;display:block}.themes{flex-wrap:wrap;gap:8px;display:flex}.theme-card{background:var(--black);width:min(176px,100%);color:var(--ltgray);border:2px solid var(--lavender);box-shadow:none;text-align:center;flex-direction:column;align-items:stretch;gap:5px;padding:4px 4px 6px;display:flex}.theme-card canvas{aspect-ratio:16/9;width:100%;image-rendering:pixelated;display:block}.theme-card small{text-transform:none;min-height:7px;font-size:6px}.theme-card[aria-checked=true]{border-color:var(--yellow);color:var(--white);box-shadow:0 0 0 2px var(--yellow)}.card .badge{color:var(--black);align-self:flex-start;padding:2px 4px;font-size:6px}.modes{flex-wrap:wrap;gap:0;display:flex}.modes button{background:var(--dkgray);min-width:90px;color:var(--ltgray);box-shadow:inset 0 -3px 0 var(--black);flex:1}.modes button[aria-pressed=true]{background:var(--green);color:var(--black);box-shadow:inset -3px -3px 0 var(--dkgreen), inset 3px 3px 0 var(--white)}.modes button small{text-transform:none;margin-top:4px;font-size:6px;display:block}.look-row{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-top:14px;display:flex}.look-list{flex-direction:column;flex:260px;max-width:420px;display:flex}.look-item{border-bottom:2px dashed var(--lavender);padding:8px 0}.look-item:first-child{padding-top:0}.look-item:last-child{border-bottom:0}.look-line{color:var(--ltgray);justify-content:space-between;align-items:center;gap:12px;font-size:8px;display:flex}.look-line select{flex:none;width:170px;padding:8px;font-size:8px}.colour-btn{background:var(--black);width:170px;color:var(--white);box-shadow:inset 0 0 0 2px var(--lavender);text-align:left;flex:none;align-items:center;gap:8px;padding:6px 8px;font-size:8px;display:flex}.colour-btn i{width:18px;height:18px;box-shadow:inset 0 0 0 2px var(--black), 0 0 0 1px var(--ltgray);flex:none}.colour-btn span{flex:1}.colour-btn b{color:var(--lavender);font-weight:400}.colour-btn[aria-expanded=true]{box-shadow:inset 0 0 0 2px var(--yellow)}.colour-grid{grid-template-columns:repeat(8,22px);justify-content:end;gap:6px;margin-top:10px;display:grid}.colour-grid[hidden]{display:none}.look-row canvas{width:120px;height:156px;image-rendering:pixelated;border:2px solid var(--black)}.erg-box{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.erg-box[hidden]{display:none}.erg-box .erg-label{color:var(--ltgray);font-size:9px}.erg-box input{text-align:center;width:96px;font-size:16px}.erg-box .erg-unit{color:var(--yellow);font-size:12px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ce-grid{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width:420px){.ce-grid{grid-template-columns:1fr}}.ce-side{flex-direction:column;gap:10px;display:flex}.ce-side .preview-wrap{flex:150px;height:auto;min-height:150px;position:relative}.ce-side .preview-wrap canvas{margin:auto;position:absolute;inset:0}.ce-side .stats,.ce-side .warning{margin-top:0}
