*{box-sizing:border-box}
:root{--ink:#202345;--paper:#fff19c;--pink:#f45896}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}
button{-webkit-tap-highlight-color:transparent;touch-action:manipulation;font:inherit;color:inherit;cursor:pointer}
button:focus-visible,#world:focus-visible{outline:3px solid var(--pink);outline-offset:4px}
.game{position:relative;width:100%;height:100svh;height:100dvh;isolation:isolate;background:radial-gradient(ellipse at 50% 45%,#fff8bd 0,transparent 70%),var(--paper)}
#world{position:absolute;inset:0;touch-action:manipulation;outline-offset:-5px}
#world canvas{display:block;width:100%;height:100%}
.hud{position:absolute;top:max(18px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));right:max(24px,env(safe-area-inset-right));display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;pointer-events:none}
.brand{display:flex;align-items:center;gap:10px;font-size:17px;letter-spacing:-.5px;font-weight:900;white-space:nowrap}.period{color:var(--pink);margin-left:-9px}
.brand-face{background:var(--ink);color:var(--paper);width:26px;height:29px;font-size:17px;line-height:9px;letter-spacing:2px;text-align:center;padding-top:5px;clip-path:polygon(12% 0,88% 0,88% 12%,100% 12%,100% 88%,88% 88%,88% 100%,12% 100%,12% 88%,0 88%,0 12%,12% 12%)}
.utilities{grid-column:3;grid-row:1;display:flex;justify-content:flex-end;gap:8px;pointer-events:auto}
.icon-button{position:relative;border:1px solid #20234530;background:#fff8c1;width:44px;height:44px;border-radius:50%;font-size:20px;font-weight:bold}.icon-button:hover{background:#fffbea}.sound-slash{position:absolute;width:22px;height:2px;background:var(--ink);left:10px;top:20px;transform:rotate(-48deg)}body.sound-on .sound-slash{display:none}
.game-top{grid-column:2;grid-row:1;display:flex;align-items:center;gap:26px;border:1px solid #20234520;border-radius:16px;background:#fff8c9f2;padding:12px 23px;box-shadow:0 3px 0 #20234508}
.game-top small{display:block;font-size:9px;letter-spacing:1.5px;font-weight:bold;margin-bottom:4px;opacity:.7}.level strong{font-size:11px;white-space:nowrap}.score-block,.moves-block{text-align:right}.score-block strong,.moves-block strong{font-size:25px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-1px}
.play-panel{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(440px,calc(100% - 32px));padding:13px 18px 14px;border:1px solid #20234520;border-radius:18px;background:#fff8c9f2;box-shadow:0 4px 0 #2023450a}
.goal-row{display:flex;gap:12px;align-items:center;font-size:10px}.goal-row>span{font-weight:bold;font-size:9px;letter-spacing:1px}.goal-row>strong{white-space:nowrap;font-variant-numeric:tabular-nums}.goal-track{height:6px;background:#e3d58b;flex:1;border-radius:6px;overflow:hidden}.goal-track>div{height:100%;width:0;background:#259b76;transition:width .4s}
.instruction{text-align:center;margin:10px 0 12px}.instruction strong{font-size:12px}.instruction p{font-size:10px;margin:4px 0 0;opacity:.75}
.actions{display:flex;gap:8px;align-items:stretch}.play-button{border:0;border-radius:10px;background:var(--ink);color:#fff9ca;font-size:13px;font-weight:900;letter-spacing:.7px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 18px;min-height:44px;box-shadow:0 3px 0 #10152c}.actions .play-button{flex:1}.play-button span{font-size:21px;line-height:1}.play-button:hover{background:#33375d}.play-button:active{transform:translateY(2px);box-shadow:0 1px 0 #10152c}.action-button{border:1px solid #20234525;background:transparent;border-radius:10px;padding:10px 12px;min-height:44px;font-size:11px;font-weight:bold;white-space:nowrap}.action-button:hover{background:#fffdf0}
#toast{position:absolute;left:50%;top:var(--toast-top,100px);transform:translate(-50%,6px);background:var(--ink);color:#fff8bf;padding:11px 17px;border-radius:9px;font-size:14px;font-weight:bold;z-index:3;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s;max-width:calc(100% - 24px);text-align:center}#toast.visible{opacity:1;transform:translate(-50%,0)}
dialog{width:min(430px,calc(100% - 32px));max-height:calc(100dvh - 32px);border:2px solid var(--ink);border-radius:22px;padding:30px;background:#fff9d8;color:var(--ink);box-shadow:8px 8px 0 #202345;overflow:auto}dialog::backdrop{background:#2023457d;backdrop-filter:blur(5px)}.close{position:absolute;right:12px;top:10px;width:44px;height:44px;font-size:27px;background:none;border:0}.dialog-symbol{font-size:55px;color:#f49a1f;margin-bottom:13px}dialog small{font-size:9px;letter-spacing:1.4px;font-weight:bold}dialog h2{font-size:44px;line-height:1.02;letter-spacing:-2px;margin:15px 0}dialog p{font-size:14px;line-height:1.6}dialog .play-button{width:100%;font-size:14px;margin-top:24px}.rules{display:flex;gap:7px;font-size:10px}.rules span{background:#f2e9ba;padding:12px 8px;border-radius:8px;flex:1}.rules b{display:block;margin-top:5px;font-size:10px}.keyboard-note{display:block;line-height:1.6;opacity:.7}.result-close{display:block;min-height:44px;margin:16px auto 0;background:none;border:0;text-decoration:underline;font-size:12px}
@media(max-width:700px){.hud{top:max(12px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));grid-template-columns:1fr auto;gap:12px}.brand{font-size:15px}.utilities{grid-column:2}.game-top{grid-column:1 / -1;grid-row:2;justify-content:space-between;gap:16px;padding:12px 16px}.game-top small{font-size:8px}.play-panel{bottom:max(12px,env(safe-area-inset-bottom));padding:12px 14px}.instruction{margin:9px 0 11px}#toast{font-size:12px}}
@media(max-height:520px) and (min-width:501px){.hud{top:max(8px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));grid-template-columns:1fr auto 1fr;gap:10px}.brand{font-size:12px}.game-top{grid-column:2;grid-row:1;padding:8px 14px;gap:18px}.utilities{grid-column:3}.game-top small{font-size:7px}.level strong{font-size:9px}.score-block strong,.moves-block strong{font-size:20px}.play-panel{bottom:max(8px,env(safe-area-inset-bottom));width:min(570px,calc(100% - 24px));display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:8px 12px}.instruction{display:none}.actions{gap:6px}.actions .play-button{padding:10px 14px;min-width:95px}.action-button{padding:8px 10px}.goal-row{gap:8px}.brand-face{display:none}}
@media(max-width:350px){.hud{left:10px;right:10px;gap:8px}.brand{font-size:13px;gap:7px}.game-top{gap:10px;padding:10px 12px}.level strong{font-size:10px}.play-panel{width:calc(100% - 20px);padding:10px}.actions{gap:5px}.actions .play-button{padding:11px 12px;gap:10px}.action-button{padding:9px 8px}.instruction p{font-size:9px}}
@media(max-width:250px){.brand-face{display:none}.brand{font-size:11px}.utilities{gap:3px}.icon-button{width:36px;height:36px}.sound-slash{left:7px;top:16px}.game-top{flex-wrap:wrap;gap:8px}.level{width:100%}.score-block,.moves-block{text-align:left}.instruction p{display:none}.actions{flex-wrap:wrap}.actions .play-button{flex-basis:100%}.action-button{flex:1}.goal-row{gap:5px}.goal-row>span{display:none}.play-panel{padding:8px}.instruction strong{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
