:root{--bg: #0b0705;--ink: #fff4e6;--ink-dim: rgba(255, 244, 230, .66);--gold: #f3c97a;--vermilion: #e2512f;--panel: rgba(18, 11, 8, .62);--line: rgba(255, 233, 200, .16);font-family:Hiragino Mincho ProN,Yu Mincho,"Noto Serif JP",serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);overflow:hidden;overscroll-behavior:none}body{position:fixed;inset:0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}canvas#gl{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}canvas#gl:after{content:""}body:after{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 46%,transparent 55%,rgba(0,0,0,.5) 100%)}[hidden]{display:none!important}button{font:inherit;color:inherit;cursor:pointer;border:0}#hud{position:fixed;inset:0;pointer-events:none;z-index:2}.hud-top{position:absolute;top:max(14px,env(safe-area-inset-top));left:14px;right:14px;display:flex;justify-content:space-between;align-items:flex-start}.chip{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:14px;padding:8px 14px;display:flex;align-items:baseline;gap:12px}.chip-name{font-size:15px;letter-spacing:.12em}.chip-count{font-size:13px;color:var(--gold);font-variant-numeric:tabular-nums}.tools{display:flex;gap:8px;pointer-events:auto}.tool{width:44px;height:44px;border-radius:50%;background:var(--panel);border:1px solid var(--line);color:var(--ink);display:grid;place-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.tool[aria-pressed=false]{color:var(--ink-dim);opacity:.6}.tool#btn-sound[aria-pressed=false] .wave{display:none}.readout{position:absolute;left:0;right:0;top:17%;text-align:center;font-size:13px;letter-spacing:.1em;color:var(--ink-dim);font-variant-numeric:tabular-nums;min-height:1em}.toast{position:absolute;left:50%;top:27%;transform:translate(-50%,8px);padding:10px 22px;border-radius:999px;background:#0c0705b8;border:1px solid var(--line);font-size:22px;letter-spacing:.14em;opacity:0;transition:opacity .18s,transform .18s;text-align:center;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%)}.toast.good{color:var(--gold);border-color:#f3c97a80}.toast small{display:block;font-size:12px;color:var(--ink-dim);letter-spacing:.08em;margin-top:2px}.hint{position:absolute;left:0;right:0;bottom:max(26px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:10px;font-size:15px;letter-spacing:.1em;text-shadow:0 1px 8px #000;transition:opacity .3s}.hint.dim{opacity:.55}.swipe-demo{width:34px;height:76px;position:relative}.swipe-demo:before{content:"";position:absolute;left:50%;top:4px;bottom:4px;width:2px;margin-left:-1px;background:linear-gradient(var(--gold),transparent);opacity:.45;border-radius:2px}.swipe-demo i{position:absolute;left:50%;top:0;width:26px;height:26px;margin-left:-13px;border-radius:50%;background:radial-gradient(circle,#fff4e6f2 0 35%,#fff4e640 36% 100%);animation:swipe 1.6s cubic-bezier(.5,0,.3,1) infinite}@keyframes swipe{0%{transform:translateY(0) scale(1.15);opacity:0}12%{opacity:1}78%{transform:translateY(52px) scale(.9);opacity:1}to{transform:translateY(58px) scale(.8);opacity:0}}.hint.hide-demo .swipe-demo{display:none}.screen{position:fixed;inset:0;z-index:5;display:grid;place-items:end center;padding-bottom:max(8vh,env(safe-area-inset-bottom));background:linear-gradient(180deg,#080503b3,#0805031a 38% 58%,#080503d1);transition:opacity .5s}.screen.leave{opacity:0;pointer-events:none}.title-inner{text-align:center;padding:0 24px;width:min(420px,100%)}.logo-kanji{font-size:clamp(58px,17vw,84px);letter-spacing:.22em;padding-left:.22em;color:var(--ink);text-shadow:0 2px 24px rgba(0,0,0,.8);font-weight:600}h1{margin:2px 0 0;font-family:Avenir Next,Helvetica Neue,sans-serif;font-weight:300;letter-spacing:.7em;padding-left:.7em;font-size:15px;color:var(--gold)}.sub{margin:14px 0 2px;font-size:14px;letter-spacing:.3em;color:var(--ink-dim)}.tag{margin:0 0 28px;font-size:15px;letter-spacing:.12em}.primary{background:linear-gradient(180deg,#ea5a36,#c63f20);color:#fff8ee;border-radius:999px;padding:16px 44px;font-size:18px;letter-spacing:.3em;padding-left:calc(44px + .3em);box-shadow:0 6px 26px #e2512f73,inset 0 1px #ffffff40;pointer-events:auto;min-width:200px}.primary:active{transform:scale(.97)}.secondary{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:14px 24px;font-size:15px;letter-spacing:.12em;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.neta-line{margin:18px 0 0;font-size:12px;letter-spacing:.3em;color:var(--ink-dim)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:6;padding:0 12px max(14px,env(safe-area-inset-bottom));animation:rise .6s cubic-bezier(.2,.8,.2,1) both}@keyframes rise{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}.sheet-inner{max-width:460px;margin:0 auto;background:#0e0906cc;border:1px solid var(--line);border-radius:22px;padding:16px 18px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.rank-row{display:flex;align-items:center;gap:16px}.rank{font-family:Avenir Next,Helvetica Neue,serif;font-size:68px;line-height:1;font-weight:700;width:84px;text-align:center;color:var(--gold);text-shadow:0 0 28px currentColor}.rank[data-r=S]{color:#ffd76a}.rank[data-r=A]{color:#ff9a62}.rank[data-r=B]{color:#8fd0c4}.rank[data-r=C]{color:#b9aea4}.rank-title{font-size:20px;letter-spacing:.2em}.rank-score{font-size:14px;color:var(--ink-dim);margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:.1em}.bars{margin:14px 0;display:grid;gap:9px}.bar{display:grid;grid-template-columns:8.6em 1fr 2.6em;align-items:center;gap:10px;font-size:13px;letter-spacing:.06em}.bar .track{height:6px;background:#fff4e61f;border-radius:4px;overflow:hidden}.bar .fill{height:100%;width:0;background:linear-gradient(90deg,#e2512f,var(--gold));border-radius:4px;transition:width .9s cubic-bezier(.2,.8,.2,1)}.bar .val{text-align:right;color:var(--ink-dim);font-variant-numeric:tabular-nums}.actions{display:flex;gap:10px;justify-content:space-between}.actions .primary{flex:1;min-width:0;padding:14px 10px;font-size:16px;letter-spacing:.2em}.actions .secondary{flex:0 0 auto}@media(max-height:700px){.rank{font-size:52px;width:66px}.bars{gap:6px;margin:10px 0}}@media(prefers-reduced-motion:reduce){.swipe-demo i{animation:none;opacity:1;transform:translateY(26px)}.sheet{animation:none}}
