@font-face{font-family:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/big-shoulders-display-vietnamese-500-normal-B9dDdTK3.woff2)format("woff2"),url(/assets/big-shoulders-display-vietnamese-500-normal-D9XSkwC3.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/big-shoulders-display-latin-ext-500-normal-DEwveyE0.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-ext-500-normal-B8eQa82p.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/big-shoulders-display-latin-500-normal-BJcWgFi3.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-500-normal-BHpk_4SD.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/big-shoulders-display-vietnamese-700-normal-DCH5bIkD.woff2)format("woff2"),url(/assets/big-shoulders-display-vietnamese-700-normal-D5dmK5Ek.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/big-shoulders-display-latin-ext-700-normal-C8xZtiKd.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-ext-700-normal-D98SaizC.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/big-shoulders-display-latin-700-normal-KM2fueoL.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-700-normal-CMi6UoP4.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-vietnamese-800-normal-TfqTMNKp.woff2)format("woff2"),url(/assets/big-shoulders-display-vietnamese-800-normal-zHzF0To4.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-latin-ext-800-normal-fpv_pHPA.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-ext-800-normal-BQnXNQRw.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:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-latin-800-normal-DDUD9Xuh.woff2)format("woff2"),url(/assets/big-shoulders-display-latin-800-normal-CI0lhnTM.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{--ink:#0a0f13;--bone:#f2eadb;--dim:#9aa4a6;--faint:#f2eadb1f;--line:#f2eadb26;--aqua:#8fd6c8;--gold:#ffc54a;--ember:#ff5a3c;--display:"Big Shoulders Display", "Bahnschrift", "Arial Narrow", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--bone);background:var(--ink);font-family:Segoe UI,Helvetica Neue,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:linear-gradient(180deg, #0b1620 0%, #0b1620f0 40%, #0b1620c0 75%, #0b1620a0 100%) fixed, url(/backdrop.webp) center bottom / cover no-repeat fixed, var(--ink);overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--aqua);outline-offset:3px}.app{flex-direction:column;align-items:center;min-height:100%;padding:28px 20px 48px;display:flex}.app.screen-playing{background:var(--ink);height:100%;padding:0}.brand{font-family:var(--display);letter-spacing:.22em;text-transform:uppercase;align-items:center;gap:10px;width:100%;max-width:880px;margin:0 auto 36px;font-size:15px;font-weight:800;display:flex}.wordmark{mix-blend-mode:lighten;width:auto;height:44px}.panel{width:100%;max-width:880px;animation:.5s cubic-bezier(.2,.8,.2,1) both rise}h1{font-family:var(--display);text-transform:uppercase;margin:0 0 18px;font-size:clamp(52px,10vw,104px);font-weight:800;line-height:.9}.lede{color:var(--dim);max-width:540px;margin:0 0 32px;font-size:18px;line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:.24em;color:var(--gold);margin:0 0 8px;font-size:12px;font-weight:700}.title{font-family:var(--display);overflow-wrap:anywhere;margin:0 0 24px;font-size:clamp(30px,5vw,48px);font-weight:700;line-height:1}.drop{border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;padding:30px 56px 30px 4px;transition:border-color .2s,padding-left .25s cubic-bezier(.2,.8,.2,1);display:flex;position:relative}.drop:after{content:"→";font-family:var(--display);color:var(--dim);font-size:40px;transition:transform .25s cubic-bezier(.2,.8,.2,1),color .2s;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.drop:hover,.drop.over,.drop:focus-within{border-color:var(--bone);padding-left:14px}.drop:hover:after,.drop.over:after,.drop:focus-within:after{color:var(--gold);transform:translate(6px,-50%)}.drop input{opacity:0;width:1px;height:1px;position:absolute}.drop strong{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;font-size:34px;font-weight:700}.drop span{color:var(--dim)}.library{margin-top:26px}.library ul{margin:0;padding:0;list-style:none}.library button{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--bone);font:inherit;text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 4px;transition:padding-left .25s cubic-bezier(.2,.8,.2,1),border-color .2s;display:flex}.library button:hover,.library button:focus-visible{border-color:var(--bone);padding-left:14px}.library strong{font-family:var(--display);text-transform:uppercase;letter-spacing:.03em;font-size:22px;font-weight:700}.library span{color:var(--dim);text-align:right;font-size:13px}.fine{color:var(--dim);margin:18px 0 0;font-size:13px}.error{color:#ffd6cc;border-left:2px solid var(--ember);margin:18px 0 0;padding:6px 0 6px 14px}.keys{color:var(--dim);flex-wrap:wrap;gap:10px 24px;margin:28px 0 0;padding:0;font-size:14px;list-style:none;display:flex}kbd{color:var(--bone);border:1px solid #f2eadb44;border-bottom-width:2px;border-radius:3px;padding:1px 6px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.timeline{background:#00000040;border-radius:2px;width:100%;display:block}.timeline.placeholder{height:110px}.bar{background:var(--faint);height:2px;margin:14px 0 22px;overflow:hidden}.bar>div{background:var(--bone);height:100%;transition:width .2s}.stats{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin-bottom:24px;display:grid}.stat{flex-direction:column;gap:2px;min-width:0;padding:12px 16px 12px 0;display:flex}.stat span{color:var(--dim);text-transform:uppercase;letter-spacing:.18em;font-size:11px}.stat strong{font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;font-size:26px;font-weight:700;overflow:hidden}.stat.perfect strong{color:var(--gold)}.stat.good strong{color:var(--aqua)}.stat.miss strong{color:var(--ember)}.legend{color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px 12px;margin:10px 0 24px;font-size:13px;display:flex}.legend i{width:10px;height:10px;margin-left:8px;display:inline-block}.k-block{background:var(--ember);clip-path:polygon(50% 0,100% 100%,0 100%)}.k-beam{background:var(--ember);clip-path:polygon(0 0,100% 0,100% 45%,83% 100%,67% 45%,50% 100%,33% 45%,17% 100%,0 45%)}.k-pit{clip-path:polygon(0 0,30% 0,50% 70%,70% 0,100% 0,100% 100%,0 100%);background:#e0a070}.k-drop{background:var(--gold);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.difficulty{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-bottom:28px;display:grid}.difficulty button{border:0;border-left:1px solid var(--line);text-align:left;background:0 0;flex-direction:column;gap:2px;padding:14px 16px;transition:background .2s;display:flex;position:relative}.difficulty button:first-child{border-left:0}.difficulty button strong{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-size:24px;font-weight:700;transition:color .2s}.difficulty button span{color:var(--dim);font-size:13px}.difficulty button:before{content:"";background:var(--gold);transform-origin:0;height:2px;transition:transform .3s cubic-bezier(.2,.8,.2,1);position:absolute;top:-1px;left:16px;right:16px;transform:scaleX(0)}.difficulty button:hover{background:#f2eadb08}.difficulty button.on strong{color:var(--bone)}.difficulty button.on:before{transform:scaleX(1)}.actions{flex-wrap:wrap;gap:12px;display:flex}.primary,.ghost{font-family:var(--display);letter-spacing:.14em;text-transform:uppercase;border:1px solid #0000;border-radius:2px;padding:12px 28px 11px;font-size:18px;font-weight:700;transition:transform .15s,background .2s,border-color .2s,color .2s}.primary{background:var(--bone);color:var(--ink)}.primary:hover{background:#fff;transform:translateY(-1px)}.primary:active,.ghost:active{transform:translateY(1px)}.ghost{border-color:var(--line);color:var(--dim);background:0 0}.ghost:hover{border-color:var(--bone);color:var(--bone)}.toggle{color:var(--dim);cursor:pointer;align-items:center;gap:10px;margin-top:24px;font-size:14px;display:flex}.toggle input,.calibrate input{accent-color:var(--aqua)}.calibrate{color:var(--dim);margin-top:12px;font-size:14px}.calibrate summary{cursor:pointer}.calibrate input{width:100%;max-width:420px}.debug{color:var(--aqua);background:#0008;max-height:260px;margin-top:24px;padding:12px;font-size:11px;overflow:auto}.results{width:100%;max-width:880px;padding-top:4vh}.results .song{font-family:var(--display);color:var(--dim);overflow-wrap:anywhere;margin:0 0 10px;font-size:clamp(22px,3.4vw,32px);font-weight:500;line-height:1.05}.results.is-dead .eyebrow{color:var(--ember)}.final{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:10px;display:flex}.final-score{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:clamp(84px,17vw,196px);font-weight:800;line-height:.82}.grade{font-family:var(--display);color:#0000;-webkit-text-stroke:2px var(--dim);flex:none;font-size:clamp(72px,13vw,150px);font-weight:800;line-height:.82;animation:.5s cubic-bezier(.3,1.6,.5,1) 1.45s both stamp}.g-S{-webkit-text-stroke-color:var(--gold);color:#ffc54a2e}.g-A{-webkit-text-stroke-color:var(--gold)}.g-B{-webkit-text-stroke-color:var(--bone)}.meter{gap:2px;height:8px;margin:20px 0 14px;display:flex}.meter.rise{transform-origin:0;animation:1.1s cubic-bezier(.2,.8,.2,1) .45s both grow}.meter span{flex-basis:0;min-width:0}.m-perfect{background:var(--gold)}.m-good{background:repeating-linear-gradient(90deg, var(--aqua) 0 4px, transparent 4px 6px)}.m-miss{background:repeating-linear-gradient(135deg, var(--ember) 0 2px, transparent 2px 5px)}.judges,.figures{grid-template-columns:repeat(3,1fr);margin:0;display:grid}.figures{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:20px 0 32px}.judges>div,.figures>div{min-width:0;padding:10px 0}.figures>div+div{border-left:1px solid var(--line);padding-left:16px}dt{letter-spacing:.2em;text-transform:uppercase;color:var(--dim);font-size:11px}dd{font-family:var(--display);font-variant-numeric:tabular-nums;margin:4px 0 0;font-size:clamp(26px,4vw,40px);font-weight:700;line-height:1}dd small{color:var(--dim);font-size:.55em}.judges dt:before{content:"";width:9px;height:9px;margin-right:8px;display:inline-block}.j-perfect dt:before{background:var(--gold);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.j-good dt:before{background:var(--aqua);border-radius:50%}.j-miss dt:before{background:var(--ember);clip-path:polygon(0 18%,18% 0,50% 32%,82% 0,100% 18%,68% 50%,100% 82%,82% 100%,50% 68%,18% 100%,0 82%,32% 50%)}.j-perfect dd{color:var(--gold)}.rise{animation:rise .6s cubic-bezier(.2, .8, .2, 1) calc(var(--i,0) * 90ms + .15s) both}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@keyframes grow{0%{transform:scaleX(0)}}@keyframes stamp{0%{opacity:0;transform:scale(1.6)rotate(-6deg)}}@media (width<=600px){.app{padding:20px 16px 36px}.final{flex-direction:column-reverse;align-items:flex-start;gap:6px}.figures{grid-template-columns:repeat(2,1fr)}.figures>div:nth-child(3){border-left:0;padding-left:0}.figures>div:nth-child(n+3){border-top:1px solid var(--line)}.difficulty button{padding:12px 10px}.actions>*{flex:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}.game-host{touch-action:none;width:100%;height:100%}.keys.swipes{display:none}@media (pointer:coarse){.keys.desk{display:none}.keys.swipes{display:flex}}
