*{margin:0;padding:0;box-sizing:border-box}@font-face{font-family:Shojumaru;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/Shojumaru-Regular-DtW8pdZm.woff2) format("woff2")}html,body{height:100%;overflow:hidden;background:#131110;color:#e8e2d6;font-family:system-ui,sans-serif;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}canvas{display:block}#app,canvas{touch-action:none}.overlay{position:fixed;inset:0;display:flex;flex-direction:column;gap:16px;align-items:center;justify-content:center;background:#131110eb;text-align:center}.overlay.hidden{display:none}.overlay h1{font-family:Shojumaru,system-ui,sans-serif;font-weight:400}.overlay button{font-size:1.2rem;padding:12px 32px;cursor:pointer;background:#4ecdc4;border:none;border-radius:8px;color:#08302d;font-weight:600;font-family:Shojumaru,system-ui,sans-serif}.overlay button.secondary{background:transparent;color:#a49b8b;box-shadow:inset 0 0 0 1px #3e372e}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:center}#levelup-overlay{gap:20px;padding-bottom:6vh;background:transparent;pointer-events:none;--beat: 0;--beat-time: .52s}#levelup-seal{position:relative;display:grid;place-items:center;padding:.5em .8em;font-size:clamp(2.2rem,6vw,3.6rem)}#levelup-title{position:relative;font-size:1em;color:#e8e0d1;opacity:0;transform:scale(calc(1 + .025 * var(--beat)))}#levelup-enso{position:absolute;width:2.1em;height:2.1em;opacity:0}#levelup-enso polygon{fill:#4ecdc4;fill-opacity:.55}#levelup-overlay.stamped #levelup-title{opacity:1;animation:seal-stamp .11s cubic-bezier(.2,1.4,.4,1) backwards,seal-bloom .6s ease-out}#levelup-overlay.stamped #levelup-enso{opacity:1;animation:seal-stamp .11s cubic-bezier(.2,1.4,.4,1) 40ms backwards}@keyframes seal-stamp{0%{opacity:0;transform:scale(1.6) rotate(-2deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes seal-bloom{0%{text-shadow:0 0 28px rgba(78,205,196,.9),0 0 8px rgba(78,205,196,.7)}to{text-shadow:0 0 0 rgba(78,205,196,0)}}#levelup-ledger{min-height:1.4em;color:#a49b8b;font-variant-numeric:tabular-nums;opacity:0}#levelup-ledger b{color:#e8e0d1;font-weight:600}#levelup-overlay.ledger #levelup-ledger{opacity:1;animation:ledger-rise .22s ease-out backwards}@keyframes ledger-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}#levelup-ledger .flawless{color:#ffe08a;opacity:0;transition:opacity .3s ease-out}#levelup-ledger .flawless.shown{opacity:1}#levelup-choices{margin-top:40px;flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:min(420px,88vw)}#levelup-choices .upgrade-card{position:relative;display:flex;flex-direction:column;gap:6px;width:100%;padding:16px 22px 16px 58px;text-align:left;font-size:1rem;font-weight:400;color:#e8e2d6;background:#1b1815;border-radius:6px;box-shadow:inset 0 0 0 1px #3e372e,0 0 0 1px rgba(78,205,196,calc(.45 * var(--beat)));pointer-events:auto;visibility:hidden}#levelup-choices .upgrade-card:hover,#levelup-choices .upgrade-card:focus-visible{outline:none;box-shadow:inset 0 0 0 1px #4ecdc4}#levelup-choices .upgrade-card:disabled{cursor:default}.upgrade-card .card-key{position:absolute;top:50%;left:20px;width:22px;height:22px;margin-top:-11px;border-radius:50%;box-shadow:inset 0 0 0 1.5px #4ecdc4;color:#4ecdc4;font-size:.8rem;line-height:22px;text-align:center}.upgrade-card strong{font-weight:400;font-size:1.05rem}.upgrade-card .detail{opacity:.75;font-family:system-ui,sans-serif;line-height:1.35;min-height:2.7em}#levelup-overlay.card-1 .upgrade-card:nth-child(1),#levelup-overlay.card-2 .upgrade-card:nth-child(2),#levelup-overlay.card-3 .upgrade-card:nth-child(3){visibility:visible;animation:card-brush calc(var(--beat-time) * .2) ease-out backwards,card-flare calc(var(--beat-time) * .45) ease-out backwards}@keyframes card-brush{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes card-flare{0%{box-shadow:inset 0 0 0 2px #4ecdc4}to{box-shadow:inset 0 0 0 1px #3e372e}}#levelup-hint{color:#a49b8b;font-size:.9rem;opacity:0;transition:opacity .3s ease-out}#levelup-overlay.card-3 #levelup-hint{opacity:1}#levelup-overlay.leaving .upgrade-card{transition:opacity calc(var(--beat-time) * .4) ease-out,transform calc(var(--beat-time) * .4) ease-out,filter calc(var(--beat-time) * .4) ease-out,box-shadow calc(var(--beat-time) * .4) ease-out}#levelup-overlay.leaving .upgrade-card.taken{box-shadow:inset 0 0 0 2px #ffe08a;transform:scale(1.04)}#levelup-overlay.leaving .upgrade-card.left{opacity:0;transform:translateY(6px);filter:blur(1px)}#levelup-overlay.leaving #levelup-seal,#levelup-overlay.leaving #levelup-ledger,#levelup-overlay.leaving #levelup-hint{opacity:0;transition:opacity calc(var(--beat-time) * .4) ease-out}@media(prefers-reduced-motion:reduce){#levelup-overlay.stamped #levelup-title,#levelup-overlay.stamped #levelup-enso,#levelup-overlay.ledger #levelup-ledger,#levelup-overlay.card-1 .upgrade-card:nth-child(1),#levelup-overlay.card-2 .upgrade-card:nth-child(2),#levelup-overlay.card-3 .upgrade-card:nth-child(3){animation:levelup-fade calc(var(--beat-time) * .35) ease-out backwards}#levelup-overlay.stamped #levelup-enso{animation-delay:calc(var(--beat-time) * .08)}#levelup-title{transform:none}#levelup-overlay.leaving .upgrade-card{transition:opacity calc(var(--beat-time) * .4) ease-out}#levelup-overlay.leaving .upgrade-card.taken{transform:none}#levelup-overlay.leaving .upgrade-card.left{transform:none;filter:none}}@keyframes levelup-fade{0%{opacity:0}to{opacity:1}}.settings{margin-top:8px;color:#a49b8b;font-size:.9rem}.settings label{display:flex;gap:6px;align-items:center;cursor:pointer}.settings input[type=range]{width:140px;accent-color:#4ecdc4}.settings input[type=checkbox]{accent-color:#4ecdc4}.overlay .keybind{min-width:56px;padding:6px 10px;font-size:.85rem;font-family:ui-monospace,monospace;color:#e8e2d6}.overlay .keybind.capturing{color:#4ecdc4;box-shadow:inset 0 0 0 1px #4ecdc4}#calibration-pulse{width:72px;height:72px;margin:8px 0;border-radius:50%;background:#4ecdc4}#calibration-pulse.tapped{background:#fff}#results-stats{display:grid;grid-template-columns:auto auto;gap:6px 24px;font-variant-numeric:tabular-nums}#results-stats dt{text-align:right;color:#a49b8b}#results-stats dd{text-align:left;font-weight:600}#calibration-progress,#calibration-result,#calibration-status{min-height:1.4em;color:#a49b8b;font-variant-numeric:tabular-nums}#hud{position:fixed;top:16px;left:16px;font-variant-numeric:tabular-nums;pointer-events:none}#health{margin-top:4px;letter-spacing:2px;color:#4ecdc4}#combo{margin-top:8px}#combo-count{font-family:Shojumaru,system-ui,sans-serif;font-size:1.25rem;color:#4ecdc4}#combo-list,.ghost-list{list-style:none;margin:2px 0 0;padding:0;color:#a49b8b;font-size:.85rem;line-height:1.35}.combo-ghost{position:absolute;pointer-events:none;white-space:nowrap}.ghost-count{font-family:Shojumaru,system-ui,sans-serif;font-size:1.25rem;color:#4ecdc4}.ghost-top{clip-path:inset(0 0 50% 0)}.ghost-bottom{position:absolute;top:0;left:0;clip-path:inset(50% 0 0 0)}.combo-ghost.torn{animation:tear-jolt .14s linear}@keyframes tear-jolt{20%{transform:translate(calc(-1.5px * var(--k)),calc(1px * var(--k)))}45%{transform:translate(calc(1.5px * var(--k)),calc(-1px * var(--k)))}70%{transform:translate(calc(-1px * var(--k)))}}.combo-ghost.torn .ghost-top{animation:tear-top var(--ms) cubic-bezier(.2,.7,.3,1) forwards}.combo-ghost.torn .ghost-bottom{animation:tear-bottom var(--ms) cubic-bezier(.3,0,.8,.6) forwards}.combo-ghost.torn .ghost-list li{animation:tear-fall var(--ms) cubic-bezier(.4,0,.9,.5) calc(var(--i) * 25ms) forwards}.combo-ghost.torn .ghost-list li:nth-child(2n){animation-name:tear-fall-back}@keyframes tear-top{0%{color:#4ecdc4}12%{color:#ef5b6e;transform:none;opacity:1}to{color:#ef5b6e;transform:translate(calc(-3px - 3px * var(--k)),calc(-4px - 4px * var(--k))) rotate(calc(-1deg - 2deg * var(--k)));opacity:0}}@keyframes tear-bottom{0%{color:#4ecdc4}12%{color:#ef5b6e;transform:none;opacity:1}to{color:#ef5b6e;transform:translate(calc(3px + 5px * var(--k)),calc(8px + 9px * var(--k))) rotate(calc(1deg + 2.5deg * var(--k)));opacity:0}}@keyframes tear-fall{to{transform:translate(-4px,calc(22px + 6px * var(--k))) rotate(-8deg);opacity:0}}@keyframes tear-fall-back{to{transform:translate(5px,calc(26px + 6px * var(--k))) rotate(7deg);opacity:0}}.ghost-slash{position:absolute;top:.3rem;left:-10px;width:calc(100% + 20px);height:1.3rem;overflow:visible;transform:rotate(-4deg);fill:#ef5b6e;animation:slash-draw var(--ms) ease-out forwards}@keyframes slash-draw{0%{clip-path:inset(0 100% 0 0)}12%{clip-path:inset(0 0 0 0);opacity:1}60%{opacity:.85}to{clip-path:inset(0 0 0 0);opacity:0}}.ghost-drop{position:absolute;top:1.2rem;left:var(--x);width:calc(6px * var(--s));height:calc(8px * var(--s));border-radius:50%/60% 60% 40% 40%;background:#ef5b6e;opacity:0;animation:drop-fall calc(var(--ms) * .8) cubic-bezier(.4,0,.9,.5) var(--d) forwards}@keyframes drop-fall{0%{opacity:.95;transform:none}70%{opacity:.85}to{opacity:0;transform:translateY(calc(50px + 14px * var(--k))) scaleY(1.8)}}.combo-ghost.banked{animation:bank-lift var(--ms) ease-out forwards}.combo-ghost.banked .ghost-count{animation:bank-light var(--ms) ease-out forwards}@keyframes bank-lift{to{transform:translateY(-12px);opacity:0}}@keyframes bank-light{30%{color:#ffe08a;text-shadow:0 0 14px rgba(255,224,138,.8)}to{color:#ffe08a;text-shadow:none}}#combo-seal{position:fixed;left:50%;top:34%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none;text-align:center;isolation:isolate;--accent: #e8e0d1;--size: 3.6rem}#combo-seal.hidden{display:none}#combo-seal.tier-2{--accent: #4ecdc4;--size: 4.6rem}#combo-seal.tier-3{--accent: #e8c170;--size: 5.8rem}#combo-seal.tier-4{--accent: #ffe08a;--size: 7.2rem}#combo-seal>*,.tally-item{opacity:0}.seal-label{font-family:Shojumaru,system-ui,sans-serif;font-size:1rem;letter-spacing:.35em;text-transform:uppercase;color:#a49b8b}.seal-count{font-family:Shojumaru,system-ui,sans-serif;font-size:var(--size);line-height:1.05;color:#e8e0d1}#combo-seal.keen .seal-count{color:#ffe08a}.seal-ink{position:absolute;left:50%;top:38%;width:calc(var(--size) * 3.4);transform:translate(-50%,-50%) rotate(-4deg);z-index:-1;overflow:visible}.seal-swash{fill:var(--accent);fill-opacity:.26}.seal-blot{fill:#a3262b;fill-opacity:.8}.seal-tally{display:flex;gap:1.1em;list-style:none;margin:.45em 0 0;padding:0;color:#a49b8b;font-size:1rem;font-variant-numeric:tabular-nums}.seal-tally b{color:#e8e0d1;font-weight:600}.seal-tally .tally-keen b{color:#ffe08a}.seal-best{margin-top:.3em;font-size:.85rem;color:#a49b8b}.seal-grade{margin-top:.1em;font-family:Shojumaru,system-ui,sans-serif;font-size:calc(var(--size) * .42);letter-spacing:.04em;color:var(--accent)}#combo-seal.stamped .seal-label,#combo-seal.stamped .seal-tally{opacity:1}#combo-seal.stamped .seal-count{opacity:1;animation:combo-stamp .17s cubic-bezier(.2,1.4,.4,1) backwards,combo-bloom .9s ease-out}#combo-seal.stamped .seal-ink{opacity:1;animation:ink-splash .2s cubic-bezier(.1,.9,.3,1) backwards}#combo-seal.stamped .seal-blot{animation:blot-splash .24s cubic-bezier(.1,.9,.3,1) var(--d) backwards;transform-box:fill-box;transform-origin:center}.tally-item.shown{opacity:1;animation:tally-land .14s cubic-bezier(.2,1.4,.4,1) backwards}#combo-seal.graded .seal-best{opacity:1;animation:tally-land .14s ease-out backwards}#combo-seal.graded .seal-grade{opacity:1;animation:combo-stamp .15s cubic-bezier(.2,1.4,.4,1) backwards,combo-bloom 1.1s ease-out}#combo-seal.tier-4.graded .seal-grade{animation:combo-stamp .15s cubic-bezier(.2,1.4,.4,1) backwards,combo-bloom 1.4s ease-out,grade-quake .26s linear .15s}#combo-seal.leaving{opacity:0;transform:translate(-50%,calc(-50% - 14px));transition:opacity calc(var(--beat-time) * .5) ease-in,transform calc(var(--beat-time) * .5) ease-in}@keyframes combo-stamp{0%{opacity:0;transform:scale(2.4) rotate(-6deg);filter:blur(6px)}60%{opacity:1;transform:scale(.94) rotate(1deg);filter:blur(0)}to{opacity:1;transform:none}}@keyframes combo-bloom{0%{text-shadow:0 0 32px var(--accent),0 0 10px var(--accent)}to{text-shadow:0 0 0 transparent}}@keyframes ink-splash{0%{opacity:0;transform:translate(-50%,-50%) rotate(-4deg) scale(.3,.15)}}@keyframes blot-splash{0%{opacity:0;transform:scale(.2)}}@keyframes tally-land{0%{opacity:0;transform:translateY(6px) scale(1.3)}}@keyframes grade-quake{0%,to{transform:none}20%{transform:translate(-3px,1px)}40%{transform:translate(3px,-1px)}60%{transform:translate(-2px,1px)}80%{transform:translate(2px)}}@media(prefers-reduced-motion:reduce){.combo-ghost *,#combo-seal *{animation:none!important}.combo-ghost{animation:ghost-fade var(--ms) ease-out forwards!important}.ghost-slash,.ghost-drop{display:none}#combo-seal.leaving{transform:translate(-50%,-50%)}}@keyframes ghost-fade{to{opacity:0}}#dev-stack{position:fixed;top:16px;right:16px;display:flex;width:232px;flex-direction:column;gap:8px;max-height:calc(100vh - 32px);pointer-events:none}#debug-overlay{flex:0 0 auto;padding:10px 12px;border-radius:6px;background:#131110d1;box-shadow:inset 0 0 0 1px #3e372e;color:#a49b8b;font-family:ui-monospace,monospace;font-size:.78rem;font-variant-numeric:tabular-nums;pointer-events:none}#debug-overlay div{display:flex;justify-content:space-between;gap:16px}#debug-overlay b{color:#e8e2d6;font-weight:500}#dev-panel{display:flex;min-height:0;flex-direction:column;gap:6px;padding:10px 12px;border-radius:6px;background:#131110d1;box-shadow:inset 0 0 0 1px #3e372e;color:#a49b8b;font-family:ui-monospace,monospace;font-size:.72rem;font-variant-numeric:tabular-nums;pointer-events:auto}#dev-panel[hidden],#dev-panel .dev-pane[hidden]{display:none}#dev-panel .dev-pane{display:flex;min-height:0;flex-direction:column;gap:6px;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#3e372e transparent}#dev-panel .dev-tabs{flex:0 0 auto;gap:0;border-radius:4px;box-shadow:inset 0 0 0 1px #3e372e;overflow:hidden}#dev-panel .dev-tabs button{flex:1 1 0;border-radius:0;box-shadow:none;background:transparent;letter-spacing:1px;text-transform:uppercase}#dev-panel .dev-view{display:flex;flex:0 0 auto;flex-direction:column;gap:4px}#dev-panel .dev-choice{flex-wrap:nowrap;align-items:center}#dev-panel .dev-choice span{flex:0 0 6ch}#dev-panel .dev-choice button{flex:1 1 0}#dev-panel .dev-heading{display:flex;justify-content:space-between;gap:8px;color:#4ecdc4;letter-spacing:1px;text-transform:uppercase}#dev-panel .dev-heading:not(:first-child){margin-top:4px}#dev-panel .dev-row{display:flex;flex-wrap:wrap;gap:4px}#dev-panel .dev-row.dev-settings{flex-wrap:nowrap}#dev-panel .dev-settings>*{min-width:0}#dev-panel .dev-subheading{display:flex;justify-content:space-between;margin-top:4px;color:#7c7264;letter-spacing:1px;text-transform:uppercase}#dev-panel .dev-slider{display:flex;flex-direction:column;gap:2px}#dev-panel .dev-slider div{display:flex;justify-content:space-between}#dev-panel .dev-slider b{color:#e8e2d6;font-weight:500}#dev-panel input[type=range]{width:100%;accent-color:#4ecdc4}#dev-panel button,#dev-panel select{flex:1 1 auto;padding:4px 6px;border:none;border-radius:4px;background:#252019;box-shadow:inset 0 0 0 1px #3e372e;color:#d8d0c1;font-family:inherit;font-size:inherit;cursor:pointer}#dev-panel button:hover{background:#322b21}#dev-panel button.on{background:#4ecdc4;color:#08302d}#dev-panel .dev-pane.alt-version button.changed{box-shadow:inset 0 0 0 1px #d99a3e;color:#f0c27a}#dev-panel .dev-give button{flex:0 1 auto}#dev-panel .dev-give button.held{box-shadow:inset 0 0 0 1px #4ecdc4;color:#4ecdc4}#dev-panel .dev-give button.spent{opacity:.55}.dev-hint{position:fixed;z-index:10;width:216px;padding:8px 10px;border-radius:6px;background:#131110f2;box-shadow:inset 0 0 0 1px #3e372e;color:#a49b8b;font-family:ui-monospace,monospace;font-size:.72rem;line-height:1.45;pointer-events:none}.dev-hint[hidden]{display:none}.dev-hint b{display:block;color:#e8e2d6;font-weight:500}.dev-hint .dev-hint-foot{margin-top:4px;color:#4ecdc4;letter-spacing:1px;text-transform:uppercase}.dev-hint.dev-card{width:264px}.dev-card img{display:block;height:72px;margin:0 auto 6px}.dev-card dl{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;margin:4px 0 0}.dev-card dt{color:#7c7264}.dev-card dd{margin:0;color:#d8d0c1;white-space:pre-line}#judgment{position:fixed;bottom:10vh;left:50%;transform:translate(-50%);font-size:2rem;font-weight:400;font-family:Shojumaru,system-ui,sans-serif;pointer-events:none;opacity:0;transition:opacity .4s ease-out}#judgment.show{opacity:1;transition:none}
