:root{--bg: #0b0b0d;--panel: #16161a;--line: #2c2c33;--ink: #f4f3ee;--mute: #8d8d97;--board: #26262c;--tile-white: #f4f3ee;--tile-black: #0f0f12;--danger: #ff4b33;--radius: 14px;color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}html{touch-action:manipulation}body{background:var(--bg);color:var(--ink);font-family:Hiragino Sans,Noto Sans JP,Yu Gothic UI,Segoe UI,system-ui,sans-serif;font-variant-numeric:tabular-nums;line-height:1.5;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}button,input{font:inherit;color:inherit}button{touch-action:manipulation}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.label{font-size:.625rem;font-weight:700;letter-spacing:.18em;color:var(--mute)}.app{display:flex;flex-direction:column;gap:10px;height:100vh;height:100dvh;max-width:480px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.topbar{display:flex;justify-content:space-between;align-items:center}.logo{font-size:.8125rem;font-weight:800;letter-spacing:.22em}.logo span{margin-left:.45em;color:var(--mute)}.topbar-actions{display:flex;gap:8px}.icon-btn{display:grid;place-items:center;width:44px;height:44px;background:transparent;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.icon-btn:hover{border-color:var(--mute)}.icon-btn:active{background:var(--panel)}.icon{width:22px;height:22px}.sound-btn[aria-pressed=true] .icon-sound-off,.sound-btn[aria-pressed=false] .icon-sound-on{display:none}.sound-btn[aria-pressed=false]{color:var(--mute)}.app:not([data-screen=playing]) #pause-btn{visibility:hidden}.hud{display:grid;grid-template-columns:1fr auto 108px;gap:20px;align-items:start}.hud-item{display:flex;flex-direction:column;min-width:0}.hud .value{font-size:1.75rem;font-weight:800;line-height:1.2;transform-origin:left center}.hud-score .value{letter-spacing:-.01em}.hud-level{min-width:44px}.hud-energy{position:relative}.energy-bar{height:4px;margin-top:4px;background:var(--line);border-radius:2px;overflow:hidden}.energy-fill{width:100%;height:100%;background:var(--ink);border-radius:2px;transform-origin:left center;transition:transform .25s ease,background .2s ease}.hud-energy.low .value{color:var(--danger);animation:blink .7s ease-in-out infinite alternate}.hud-energy.low .energy-fill{background:var(--danger)}.hud-energy.gain .value{animation:bump .3s ease}.hud-energy.loss .value{animation:jolt .3s ease}@keyframes blink{to{opacity:.45}}@keyframes bump{40%{transform:scale(1.25)}}@keyframes jolt{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.timer{height:4px;background:var(--line);border-radius:2px;overflow:hidden}.timer-fill{width:100%;height:100%;background:var(--ink);transform-origin:left center}.timer.low .timer-fill{background:var(--danger)}.board-area{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;container-type:size}.board-wrap{position:relative;aspect-ratio:6 / 8;width:min(100%,62vh);width:min(100cqw,75cqh);background:var(--board);border-radius:var(--radius);container-type:inline-size;transition:box-shadow .3s ease}.board{position:absolute;inset:1.6cqw;overflow:hidden;border-radius:10px;outline:none;touch-action:none;cursor:pointer;user-select:none;-webkit-user-select:none}.fx{position:absolute;inset:1.6cqw;pointer-events:none}.board-wrap.echo-ready{animation:echo-ready 1.4s ease-in-out infinite}@keyframes echo-ready{0%,to{box-shadow:0 0 0 1px #f4f3ee80,0 0 12px #f4f3ee1f}50%{box-shadow:0 0 0 2px #f4f3eef2,0 0 28px #f4f3ee52}}.board-wrap.shake{animation:shake .36s ease}@keyframes shake{15%{transform:translate(-6px,2px)}30%{transform:translate(5px,-3px)}50%{transform:translate(-4px,3px)}70%{transform:translate(3px,-1px)}}.board-cover{display:none;position:absolute;inset:0;place-items:center;font-size:.75rem;letter-spacing:.3em;color:var(--mute)}.app[data-screen=paused] .board,.app[data-screen=paused] .fx{visibility:hidden}.app[data-screen=paused] .board-cover{display:grid}.tile{position:absolute;top:0;left:0;width:calc(100% / 6);height:12.5%;transform:translate(calc(var(--c) * 100%),calc(var(--r) * 100%));transition:transform var(--fall, 0ms) cubic-bezier(.33,1.25,.6,1);perspective:60cqw}.tile-body{position:absolute;inset:5.5%}.tile-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .24s cubic-bezier(.4,0,.2,1)}.tile[data-color="1"] .tile-inner{transform:rotateY(180deg)}.face{position:absolute;inset:0;border-radius:18%;backface-visibility:hidden;-webkit-backface-visibility:hidden}.face-white{background:var(--tile-white);box-shadow:inset 0 -.9cqw #00000024}.face-black{background:var(--tile-black);box-shadow:inset 0 0 0 1px #ffffff12,inset 0 .5cqw #ffffff0d;transform:rotateY(180deg)}.tile.intro .tile-body{animation:intro .4s cubic-bezier(.2,1.3,.5,1) both;animation-delay:var(--delay, 0ms)}@keyframes intro{0%{transform:scale(.2);opacity:0}}.tile.pressed .tile-body{animation:pressed .2s ease}@keyframes pressed{40%{transform:scale(.86)}}.tile.denied .tile-body{animation:denied .28s ease}@keyframes denied{20%{transform:translate(-9%)}50%{transform:translate(8%)}80%{transform:translate(-4%)}}.tile.clearing .tile-body{animation:clearing .34s ease-in both;animation-delay:var(--delay, 0ms)}@keyframes clearing{0%{transform:scale(1);filter:none}35%{transform:scale(1.14);filter:brightness(1.5) drop-shadow(0 0 2cqw rgba(255,255,255,.75));opacity:1}to{transform:scale(0);opacity:0}}.tile.stone .face{background:linear-gradient(128deg,transparent 44%,rgba(0,0,0,.38) 45%,rgba(0,0,0,.38) 48%,transparent 49%),linear-gradient(32deg,transparent 58%,rgba(0,0,0,.3) 59%,rgba(0,0,0,.3) 61%,transparent 62%),linear-gradient(160deg,#7a7a83,#55555d);box-shadow:inset 0 -.9cqw #0000004d,inset 0 .5cqw #ffffff24}.tile.stone .tile-inner{transition:none}.tile.petrify .tile-body{animation:petrify .42s ease-out}@keyframes petrify{0%{transform:scale(1.25);filter:brightness(2.2) sepia(1) saturate(6) hue-rotate(-20deg)}60%{transform:scale(.94)}}.tile.crumble .tile-body{animation:crumble .34s ease-in both;animation-delay:var(--delay, 0ms)}@keyframes crumble{30%{transform:scale(1.08) rotate(-4deg)}to{transform:translateY(20%) scale(.35) rotate(25deg);opacity:0}}.badge{display:none;position:absolute;inset:17%;place-items:center;background:var(--danger);border-radius:50%;color:#fff;font-size:6.2cqw;font-weight:800;line-height:1;box-shadow:0 0 0 .6cqw #00000059}.tile.bomb .badge{display:grid}.tile.bomb .face{box-shadow:inset 0 0 0 .7cqw var(--danger)}.tile.bomb.urgent .badge{animation:urgent .5s ease-in-out infinite alternate}@keyframes urgent{to{transform:scale(1.18);box-shadow:0 0 0 .6cqw #00000059,0 0 3cqw var(--danger)}}.tile.bomb.ticked .badge{animation:ticked .22s ease}@keyframes ticked{40%{transform:scale(1.3)}}.popup{position:absolute;transform:translate(-50%,-50%);font-weight:800;white-space:nowrap;color:#fff;-webkit-text-stroke:1.3cqw #0b0b0d;paint-order:stroke fill;animation:popup .9s ease-out forwards}.popup-score{font-size:7cqw}.popup-score.big{font-size:10cqw}.popup-chain{font-size:5cqw;letter-spacing:.12em}.popup-loss{font-size:7cqw;color:var(--danger)}@keyframes popup{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}35%{transform:translate(-50%,-55%) scale(1)}to{opacity:0;transform:translate(-50%,-130%) scale(1)}}.banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);font-size:13cqw;font-weight:900;letter-spacing:.14em;white-space:nowrap;color:#fff;-webkit-text-stroke:1.8cqw #0b0b0d;paint-order:stroke fill;animation:banner 1s ease-out forwards}.banner.small{font-size:8cqw}@keyframes banner{0%{opacity:0;transform:translate(-50%,-50%) scale(1.8);letter-spacing:.5em}20%{opacity:1;transform:translate(-50%,-50%) scale(1);letter-spacing:.14em}70%{opacity:1}to{opacity:0;transform:translate(-50%,-60%) scale(1)}}.ring{position:absolute;width:20%;aspect-ratio:1;border:.8cqw solid #fff;border-radius:50%;transform:translate(-50%,-50%) scale(.2);animation:ring .75s ease-out forwards;animation-delay:var(--delay, 0ms);opacity:0}@keyframes ring{0%{opacity:.9;transform:translate(-50%,-50%) scale(.2)}to{opacity:0;transform:translate(-50%,-50%) scale(7)}}.blast{position:absolute;width:50%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0%,var(--danger) 30%,rgba(255,75,51,0) 70%);transform:translate(-50%,-50%) scale(.2);animation:blast .42s ease-out forwards}@keyframes blast{0%{opacity:1;transform:translate(-50%,-50%) scale(.2)}to{opacity:0;transform:translate(-50%,-50%) scale(1.5)}}.cursor{display:none;position:absolute;top:0;left:0;width:calc(100% / 6);height:12.5%;transform:translate(calc(var(--c) * 100%),calc(var(--r) * 100%));border:.9cqw solid var(--danger);border-radius:20%}.board-wrap.keyboard .cursor{display:block}.status{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:28px}.echo,.best{display:flex;align-items:center;gap:8px}.best .value{font-size:.875rem;font-weight:700}.echo-pips{display:inline-flex;gap:5px}.echo-pips i{width:10px;height:10px;border:1.5px solid var(--mute);border-radius:2px;transform:rotate(45deg);transition:background .2s ease,border-color .2s ease,transform .2s ease}.echo-pips i.on,.echo-pips.full i{background:var(--ink);border-color:var(--ink)}.echo-status{display:none;font-size:.625rem;font-weight:800;letter-spacing:.18em}.echo.ready .echo-status{display:inline;animation:blink .6s ease-in-out infinite alternate}.echo.ready .echo-pips i{transform:rotate(45deg) scale(1.15)}.notice{flex:1;font-size:.6875rem;color:var(--mute);text-align:center}.overlay{display:none;position:fixed;inset:0;z-index:100;align-items:center;justify-content:center;padding:16px;background:#08080adb;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.overlay.open{display:flex;animation:fade-in .2s ease}#help-screen,#ranking-screen{z-index:110}@keyframes fade-in{0%{opacity:0}}.panel{display:flex;flex-direction:column;gap:12px;width:100%;max-width:360px;max-height:100%;padding:28px 24px;background:var(--panel);border:1px solid var(--line);border-radius:20px;text-align:center}.panel-scroll{overflow-y:auto;overscroll-behavior:contain}.panel-body{flex:1;min-height:0;margin:0 -8px;padding:0 8px;overflow-y:auto;overscroll-behavior:contain}#start-screen{background:#08080a9e;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.panel-title{font-size:1.125rem;font-weight:800;letter-spacing:.08em}.eyebrow{font-size:.6875rem;font-weight:800;letter-spacing:.3em;color:var(--mute)}.title{font-size:2rem;font-weight:900;letter-spacing:.04em;line-height:1.2}.lead{font-size:.8125rem;color:var(--mute)}.start-best{display:flex;justify-content:center;align-items:baseline;gap:10px;margin:4px 0 8px}.start-best .value{font-size:1.25rem;font-weight:800}.btn{display:block;width:100%;min-height:48px;padding:12px 16px;background:transparent;border:1px solid var(--line);border-radius:12px;font-size:.9375rem;font-weight:700;cursor:pointer;transition:transform .1s ease,background .15s ease,border-color .15s ease,opacity .15s ease}.btn:hover{border-color:var(--mute)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn-primary{background:var(--ink);border-color:var(--ink);color:#0b0b0d}.btn-primary:hover{background:#fff;border-color:#fff}.btn-ghost{border-color:transparent;color:var(--mute);font-weight:600}.btn-small{width:auto;min-height:44px;padding:8px 16px;font-size:.8125rem}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.board:focus-visible{outline:none}.rules{display:flex;flex-direction:column;gap:12px;list-style:none;text-align:left;counter-reset:rule}.rules li{counter-increment:rule;padding-top:12px;border-top:1px solid var(--line)}.rules li:first-child{padding-top:0;border-top:none}.rules p{font-size:.8125rem;color:#c9c9cf}.rules p:before{content:counter(rule) ". ";font-weight:800;color:var(--ink)}.rules strong{color:var(--ink)}.rule-figure{display:flex;justify-content:center;align-items:center;gap:14px;margin-bottom:8px;padding:10px;background:var(--board);border-radius:12px}.arrow{color:var(--mute)}.mini{display:inline-grid;gap:2px}.mini i{display:grid;place-items:center;width:14px;height:14px;border-radius:3px;background:var(--tile-black);box-shadow:inset 0 0 0 1px #ffffff14;font-size:.5625rem;font-style:normal;font-weight:800;color:#fff}.mini i.w{background:var(--tile-white);box-shadow:none}.mini i.tap:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px #ff4b3359}.mini i.s{background:linear-gradient(160deg,#7a7a83,#55555d);box-shadow:none}.mini i.fuse{background:radial-gradient(circle,var(--danger) 0 58%,var(--tile-white) 60%)}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;background:var(--bg);border-radius:12px}.tab{min-height:40px;background:transparent;border:none;border-radius:9px;font-size:.8125rem;font-weight:700;color:var(--mute);cursor:pointer}.tab.active{background:var(--ink);color:#0b0b0d}.ranking-note{min-height:1.2em;font-size:.6875rem;color:var(--mute)}.ranking-list{display:flex;flex-direction:column;gap:4px;min-height:160px;text-align:left}.ranking-empty{margin:auto;font-size:.8125rem;color:var(--mute);text-align:center}.ranking-item{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;font-size:.875rem}.ranking-item:nth-child(odd){background:#ffffff08}.ranking-rank{font-weight:800;text-align:center;color:var(--mute)}.ranking-item.top3 .ranking-rank{color:#0b0b0d;background:var(--ink);border-radius:6px}.ranking-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-score{font-weight:800}.ranking-item.me{box-shadow:inset 0 0 0 1px var(--ink)}.spinner{display:inline-block;width:14px;height:14px;margin-right:6px;vertical-align:-2px;border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pagination{display:flex;justify-content:center;align-items:center;gap:14px}.pagination-info{font-size:.8125rem;font-weight:700;color:var(--mute)}.gameover-reason{font-size:.875rem;color:var(--danger)}.final-score{font-size:3rem;font-weight:900;line-height:1.1;letter-spacing:-.02em}.new-best{align-self:center;padding:3px 12px;background:var(--ink);border-radius:999px;color:#0b0b0d;font-size:.6875rem;font-weight:800;letter-spacing:.2em;animation:bump .5s ease .2s both}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.stats dt{font-size:.625rem;color:var(--mute)}.stats dd{font-size:1.125rem;font-weight:800}.submit{display:flex;flex-direction:column;gap:6px;text-align:left}.submit-row{display:flex;gap:8px}#player-name{flex:1;min-width:0;min-height:44px;padding:8px 12px;background:var(--bg);border:1px solid var(--line);border-radius:12px;font-size:1rem;outline:none;transition:border-color .15s ease}#player-name:focus{border-color:var(--ink)}.submit-message{font-size:.8125rem;color:#c9c9cf}.submit-message.error{color:var(--danger)}.submit-message.success{color:var(--ink);font-weight:700}.update-banner{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;z-index:200;transform:translate(-50%);width:max-content;max-width:calc(100% - 32px);min-height:44px;padding:10px 18px;background:var(--ink);border:none;border-radius:999px;color:#0b0b0d;font-size:.8125rem;font-weight:800;cursor:pointer;box-shadow:0 8px 24px #00000080;animation:fade-in .3s ease}@media(max-height:620px){.app{gap:6px}.hud .value{font-size:1.375rem}.panel{padding:20px;gap:10px}.title{font-size:1.625rem}}@media(prefers-reduced-motion:reduce){.board-wrap.shake,.board-wrap.echo-ready,.tile.bomb.urgent .badge,.hud-energy.low .value,.ring{animation:none}.board-wrap.echo-ready{box-shadow:0 0 0 2px #f4f3eee6}.tile-inner{transition-duration:.01s}}
