@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(./eb-garamond-latin-400-normal-BCNrxLz_.woff2)format("woff2"),url(./eb-garamond-latin-400-normal-maQnHeKB.woff)format("woff")}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(./eb-garamond-latin-400-italic-DSEbMgZu.woff2)format("woff2"),url(./eb-garamond-latin-400-italic-CDFyLPXJ.woff)format("woff")}@font-face{font-family:Permanent Marker;font-style:normal;font-display:swap;font-weight:400;src:url(./permanent-marker-latin-400-normal-BF23djCy.woff2)format("woff2"),url(./permanent-marker-latin-400-normal-BnZj5c41.woff)format("woff")}:root{--bg:#0a0a10;--ink:#efe8db;--dim:#efe8db4d;--accent:#ffbf6b;--panel-h:clamp(232px, 43dvh, 400px);--pad:22px}*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:#000;height:100%;overflow:hidden}body{color:var(--ink);-webkit-font-smoothing:antialiased;font-family:EB Garamond,Iowan Old Style,Georgia,Times New Roman,serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}#app{height:100vh;background:var(--bg);grid-template-rows:minmax(0, 1fr) var(--panel-h);touch-action:none;max-width:520px;height:100dvh;margin:0 auto;display:grid;position:relative;overflow:hidden}#stage{background:#000;min-height:0;position:relative;overflow:hidden}#gl{width:100%;height:100%;display:block;position:absolute;inset:0}#stage:after{content:"";background:linear-gradient(to bottom, #0a0a1000, var(--bg));pointer-events:none;height:9%;position:absolute;bottom:-1px;left:0;right:0}#fade{opacity:0;pointer-events:none;z-index:3;background:#000;transition:opacity .6s;position:absolute;inset:0}#seam{pointer-events:none;z-index:2;opacity:0;background:#fff7dc;transition:opacity .4s;position:absolute;top:0;left:0;box-shadow:0 0 14px 4px #ffecaad9,0 0 46px 14px #ffd67866}#seam.h{width:100%;height:2px}#seam.v{width:2px;height:100%}#seam.on{opacity:1}#markers{pointer-events:none;z-index:2;position:absolute;inset:0}.mk{border:2px solid var(--accent);opacity:0;will-change:transform;border-radius:50%;width:58px;height:58px;margin:-29px 0 0 -29px;transition:opacity .4s;position:absolute;top:0;left:0}.mk.on{opacity:.95;animation:1.5s ease-out infinite mk}.mk.goal{border-style:dashed;animation:2.4s linear infinite mkGoal}.mk.miss{animation:.35s mkMiss}@keyframes mk{0%{box-shadow:0 0 #ffbf6b8c,inset 0 0 #ffbf6b4d}to{box-shadow:0 0 0 18px #ffbf6b00,inset 0 0 12px #ffbf6b00}}@keyframes mkGoal{0%,to{opacity:.45}50%{opacity:.95}}@keyframes mkMiss{0%,to{border-color:var(--accent)}50%{border-width:4px;border-color:#fff}}#mute{right:10px;top:calc(10px + env(safe-area-inset-top));z-index:4;-webkit-backdrop-filter:blur(6px);opacity:.7;background:#0a0a1059;border-radius:50%;place-items:center;width:38px;height:38px;display:grid;position:absolute}#mute svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}#mute .off,#mute.muted .on{display:none}#mute.muted .off{display:block}#debug{z-index:5;color:#9f9;white-space:pre;background:#00000080;border-radius:4px;padding:3px 6px;font:11px/1.3 ui-monospace,Consolas,monospace;display:none;position:absolute;top:8px;left:8px}.debug #debug{display:block}#panel{min-height:0;padding:0 var(--pad) calc(8px + env(safe-area-inset-bottom));flex-direction:column;display:flex;position:relative}#progress{height:2px;margin:0 calc(var(--pad) * -1);background:#ffffff0f;flex:none}#progress i{background:var(--accent);opacity:.75;width:0;height:100%;transition:width .7s;display:block}#text{flex-direction:column;flex:1;justify-content:flex-end;min-height:0;padding-top:4px;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(#0000 0,#000 22%);mask-image:linear-gradient(#0000 0,#000 22%)}#par{-webkit-hyphens:auto;hyphens:auto;font-size:clamp(17px,4.75vw,21px);line-height:1.4;transition:opacity .4s}#par.out{opacity:0}#par.verse{text-align:center;padding-bottom:10px;font-size:clamp(20px,5.6vw,25px);font-style:italic;line-height:1.5}#par .b{transition:opacity .9s}#par .b.old{opacity:.3}#par .w{opacity:0;animation:.55s forwards word;animation-delay:calc(var(--i) * 26ms)}@keyframes word{to{opacity:1}}#hint{border-top:1px solid #ffffff14;flex:none;align-items:center;gap:14px;height:62px;margin-top:10px;transition:opacity .35s;display:flex}#hint.off{opacity:0}#hint.done #glyph{opacity:.35;transform:scale(.82)}#hint.nudge #glyph{animation:.4s nudge}@keyframes nudge{0%,to{transform:none}25%{transform:translate(-4px)scale(1.08)}75%{transform:translate(4px)scale(1.08)}}#glyph{flex:none;width:46px;height:46px;transition:transform .3s,opacity .3s}#glyph svg{width:100%;height:100%;display:block;overflow:visible}#glyph .r0{fill:none;stroke:#ffffff21;stroke-width:1.5px}#glyph .r1{fill:none;stroke:var(--accent);stroke-width:2.2px;stroke-linecap:butt;stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--p,0) * 100);transform-origin:24px 24px;opacity:min(1, calc(var(--p,0) * 40));transform:rotate(-90deg)}#glyph .ln{fill:none;stroke:var(--accent);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}#glyph .thin{fill:none;stroke:var(--accent);stroke-width:1.3px;stroke-linecap:round;opacity:.55}#glyph .dot{fill:var(--accent)}#glyph g,#glyph .dot,#glyph .ln{transform-box:view-box;transform-origin:24px 24px}#label{min-width:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.25}#label b{letter-spacing:.15em;text-transform:uppercase;color:var(--accent);font-size:12.5px;font-weight:600;display:block}#label span{color:var(--ink);opacity:.55;white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:12.5px;display:block;overflow:hidden}#pips{gap:6px;margin-top:6px;font-style:normal;display:flex}#pips:empty{display:none}#pips i{border:1.5px solid var(--accent);opacity:.5;border-radius:50%;width:7px;height:7px;transition:background .25s,opacity .25s,transform .25s}#pips i.on{background:var(--accent);opacity:1;transform:scale(1.15)}.a-tap .pulse{animation:1.6s ease-out infinite aPulse}@keyframes aPulse{0%{opacity:.9;transform:scale(.5)}to{opacity:0;transform:scale(2.3)}}.a-mash .pulse{animation:.42s ease-out infinite aPulse}.a-mash .dot{animation:.42s ease-in-out infinite aMash}@keyframes aMash{0%,to{transform:scale(1)}50%{transform:scale(.6)}}.a-up>g{animation:1.5s ease-in-out infinite aUp}.a-down>g{animation:1.5s ease-in-out infinite aDown}.a-left>g{animation:1.5s ease-in-out infinite aLeft}.a-right>g{animation:1.5s ease-in-out infinite aRight}.a-fast>g{animation-duration:.6s}@keyframes aUp{0%{opacity:0;transform:translateY(7px)}35%{opacity:1}to{opacity:0;transform:translateY(-7px)}}@keyframes aDown{0%{opacity:0;transform:translateY(-7px)}35%{opacity:1}to{opacity:0;transform:translateY(7px)}}@keyframes aLeft{0%{opacity:0;transform:translate(7px)}35%{opacity:1}to{opacity:0;transform:translate(-7px)}}@keyframes aRight{0%{opacity:0;transform:translate(-7px)}35%{opacity:1}to{opacity:0;transform:translate(7px)}}.a-h>g{animation:1.7s ease-in-out infinite aH}@keyframes aH{0%,to{transform:translate(-7px)}50%{transform:translate(7px)}}.a-hold .dot{animation:2.2s ease-in-out infinite aHold}@keyframes aHold{0%,to{opacity:.6;transform:scale(.7)}50%{opacity:1;transform:scale(1.25)}}.a-breathe .dot{animation:6.8s ease-in-out infinite aBreathe}@keyframes aBreathe{0%,to{opacity:.5;transform:scale(.45)}50%{opacity:1;transform:scale(1.9)}}.a-still .ln{animation:3s ease-in-out infinite aStill}@keyframes aStill{0%,to{opacity:.35}50%{opacity:1}}.a-wait .dot{animation:1.5s ease-in-out infinite aWait}.a-wait .dot:nth-child(4){animation-delay:.25s}.a-wait .dot:nth-child(5){animation-delay:.5s}@keyframes aWait{0%,to{opacity:.25}40%{opacity:1}}.a-draw .ln{stroke-dasharray:60;animation:2.2s ease-in-out infinite aDraw}@keyframes aDraw{0%{stroke-dashoffset:60px}60%,to{stroke-dashoffset:0}}.a-drag .dot{animation:2s ease-in-out infinite aDrag}@keyframes aDrag{0%,12%{transform:translate(-9px,8px)}80%,to{transform:translate(9px,-8px)}}.a-spin>g{animation:2.2s linear infinite aSpin}@keyframes aSpin{to{transform:rotate(360deg)}}.a-tune .dot{animation:2.4s ease-in-out infinite aH}#start{z-index:10;text-align:center;background:radial-gradient(120% 80% at 50% 38%,#3c2c1e8c,#0a0a10f0 62%),#0a0a108c;flex-direction:column;justify-content:center;align-items:center;gap:30px;padding:32px;transition:opacity 1.1s;display:flex;position:absolute;inset:0}#start.gone{opacity:0;pointer-events:none}#start h1{color:var(--ink);text-shadow:0 2px 30px #ffaa5040;font-family:Permanent Marker,Marker Felt,cursive;font-size:clamp(44px,14vw,68px);font-weight:400;line-height:.98;transform:rotate(-4deg)}#go,#resume{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);border:1px solid #ffbf6b73;border-radius:999px;padding:14px 22px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:12.5px}#go{animation:2.4s ease-in-out infinite goPulse}#go[disabled]{opacity:.4;animation:none}#resume{color:var(--ink);opacity:.75;border-color:#efe8db40;margin-top:-14px}@keyframes goPulse{0%,to{box-shadow:0 0 #ffbf6b59}50%{box-shadow:0 0 0 12px #ffbf6b00}}#start .note{letter-spacing:.06em;opacity:.45;font-family:system-ui,sans-serif;font-size:12px}@media (orientation:landscape) and (max-height:520px){#app{grid-template-rows:minmax(0,1fr);grid-template-columns:1.2fr 1fr;max-width:none}#stage:after{display:none}#panel{padding-top:8px}#progress{margin:0}}
