:root{color-scheme:dark;font-family:system-ui,-apple-system,"Hiragino Kaku Gothic ProN",sans-serif;color:#f9eccb;background:#111d28}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at top,#244050,#101923 75%);min-height:100svh}main{width:min(100%,660px);margin:auto;padding:18px 16px 32px}header{display:flex;align-items:center;justify-content:space-between;gap:10px}h1{font-size:clamp(25px,6vw,36px);margin:2px 0 12px;letter-spacing:.05em;color:#ffe6a2}.brand-note{font-size:13px;letter-spacing:.08em;margin:0;color:#b7d9d1}button{font:inherit;color:inherit;border:1px solid #7c9189;background:#253c45;border-radius:8px;padding:10px 12px;cursor:pointer;touch-action:manipulation;min-height:44px}button:focus-visible,summary:focus-visible{outline:3px solid #ffe6a2;outline-offset:3px}button:disabled{opacity:.42;cursor:default}button:active:not(:disabled){transform:translateY(2px)}.journey{display:flex;justify-content:space-between;font-size:13px;gap:8px;margin:4px 0 10px;color:#c2d3c7}.levels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin-bottom:16px}.level{padding:6px;font-size:14px}.level.active{background:#dcc085;color:#1c3036;border-color:#ffe2a1}.level.done:not(.active){color:#b3e6cb;border-color:#71a48d}.game{background:#1c3039;border:2px solid #ab936b;border-radius:14px;padding:12px;box-shadow:0 8px 0 #0c171f}.chapter{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}#chapter{font-size:12px;color:#b5d2c7;letter-spacing:.1em}h2{font-size:20px;margin:0}#intro{font-size:14px;line-height:1.5;margin:7px 0 10px;color:#e8dbc0}.statebar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;font-size:13px}.statebar span{background:#101f28;border-radius:5px;padding:5px 7px}#boardWrap{position:relative;width:100%;max-width:580px;margin:auto}#board{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:2px;background:#0d1b22;padding:3px;border:1px solid #61796e;width:100%;touch-action:none;user-select:none}.cell{aspect-ratio:1;position:relative;display:grid;place-items:center;min-width:0;overflow:visible;border-radius:2px}.wall{background:linear-gradient(0deg,transparent 46%,#35464c 46% 52%,transparent 52%),linear-gradient(90deg,transparent 47%,#35464c 47% 53%,transparent 53%),#687b76;box-shadow:inset -3px -3px #415851,inset 2px 2px #8a9d88}.floor{background:#52714d;box-shadow:inset 0 -2px #365441}.ice{background:repeating-linear-gradient(135deg,#9bcdda 0 7px,#d3f5f1 7px 10px,#7db3ce 10px 18px)}.pit{background:#060d18;box-shadow:inset 0 0 0 2px #9a845e,inset 0 5px #000}.bridge{background:repeating-linear-gradient(0deg,#c49454 0 7px,#5f452f 7px 9px);border:2px solid #e8d095}.sprite{display:block;background-image:url('assets/sprites.png');background-size:200% 200%;width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0;pointer-events:none;z-index:2}.hero{background-position:0 0;z-index:5}.crate{background-position:100% 0;z-index:4}.key{background-position:0 100%}.portal{background-position:100% 100%}.portal.open{filter:brightness(1.6) drop-shadow(0 0 4px #ffd580);opacity:.6}.exit-cell{outline:2px solid #e5c66e;outline-offset:-2px}.plate{width:65%;height:65%;display:grid;place-items:center;font-size:clamp(13px,2.8vw,19px);font-weight:800;color:#fae9b9;border:2px solid #d2b16b;background:#725336;box-shadow:0 3px #322d24}.plate.active{background:#f6d879;color:#32443b;transform:translateY(2px);box-shadow:0 0 10px #dfd075}.gate{width:100%;height:100%;display:grid;place-items:center;border:2px solid #c88576;background:repeating-linear-gradient(90deg,#243331 0 6px,#a9b4a2 6px 10px);transition:background .2s,border-color .2s}.gate b{background:#152b30;color:#ffdcc6;border-radius:50%;font-size:14px;line-height:19px;min-width:19px;text-align:center}.gate.open{background:#52714d;border-color:#b4d3a0;border-top-width:5px}.gate.open b{color:#caebae;background:#284a3b}#message{font-size:14px;line-height:1.5;min-height:3em;margin:12px 0 2px}#legend{font-size:12px;color:#c0d3c7;margin:0;line-height:1.5}#effects{position:absolute;inset:0;pointer-events:none;z-index:9}.playbar{display:flex;justify-content:center;gap:24px;align-items:center;margin-top:20px}.controls{display:grid;grid-template-columns:repeat(3,48px);gap:5px}.move{padding:0;height:48px;font-size:18px;background:#596d61;border:2px solid #d4c090;box-shadow:0 3px #0c1821}.up{grid-column:2}.left{grid-row:2;grid-column:1}.down{grid-row:2;grid-column:2}.right{grid-row:2;grid-column:3}.actions{display:flex;flex-direction:column;gap:6px}.actions button{font-size:13px;min-height:36px;padding:6px 10px}#hintText{font-size:14px;line-height:1.6;color:#f0d8a7;margin:14px 0}details{font-size:13px;color:#b6cbbf;line-height:1.7}summary{cursor:pointer;padding:8px 0}#overlay{position:fixed;inset:0;background:#07121dcc;display:grid;place-items:center;padding:20px;z-index:20;backdrop-filter:blur(5px)}[hidden]{display:none!important}.winbox{width:min(100%,380px);max-height:90svh;overflow:auto;text-align:center;background:#1d3540;border:2px solid #d4bb82;border-radius:18px;padding:20px}.winbox button{display:block;width:100%;margin-top:9px}.primary{background:#e3c17b;color:#182e37;font-weight:800}.victory-art{height:92px;display:flex;justify-content:center}.victory-art .sprite{position:static;width:90px;height:90px}.winbox h2{font-size:30px;margin:9px 0}#resultStats{color:#c3e2cf;line-height:1.6}#shareStatus{font-size:12px;color:#b6c7c3}.flash{animation:pulse .35s ease-out}@keyframes pulse{50%{filter:brightness(1.8)}}@media(max-width:380px){main{padding:12px 10px 24px}.game{padding:8px}.playbar{gap:12px}.journey{font-size:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.portal.open{transform:perspective(180px) rotateY(-65deg);transform-origin:25% 50%;opacity:.8;filter:brightness(1.3)}
.pressed{box-shadow:inset 0 0 0 3px #f2d787,0 0 8px #e8ca71}.brand-avatar{position:relative;width:58px;height:58px;flex:none;margin-right:8px}.brand-lockup{display:flex;align-items:center}.piece-guide{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0}.piece-guide div{text-align:center}.piece-guide i{position:relative;width:52px;height:52px;margin:auto}.piece-guide span{display:block;font-size:13px}.gate{transform-origin:top center}

/* Keep controls reachable on narrow screens and with enlarged text. */
header,.playbar,.journey{flex-wrap:wrap}.brand-lockup{min-width:0}.brand-lockup>div:last-child{min-width:0}h1{overflow-wrap:anywhere}#sound{flex-shrink:0}.actions button{min-height:44px;font-size:14px}.actions{max-width:100%}.winbox{max-height:calc(100svh - 40px)}

/* Puzzle-first layout, shared by all chapters. */
.stage-picker{margin:0 0 8px}.stage-picker summary{font-size:14px;padding:4px 0}.stage-picker .levels{margin-top:8px}.rules{margin-top:12px}.rules #reset{margin:8px 0}.playbar{gap:12px;margin-top:12px;align-items:center}.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;flex:1;max-width:270px}.actions .lever-control,.actions .rotate-control,.actions #showResult{grid-column:1/-1}.actions button{min-height:44px;padding:8px;font-size:14px}.controls{flex:none}#message{min-height:2.8em;margin:8px 0 0;font-size:14px}#legend{font-size:14px}.statebar{font-size:14px;gap:4px;margin-bottom:8px}.statebar span{padding:3px 6px}.brand-note,.journey,details{font-size:14px}.challenge-link{display:block;font-size:14px;padding:12px 4px;color:#bde7da;text-decoration:underline}.door-ready{box-shadow:inset 0 0 0 2px #ffe6a2,0 0 8px #e6c878}.pit{border:2px solid #b69a6c}.pit-label{position:absolute;bottom:0;right:1px;font-size:12px;line-height:1.1;color:#ffe6a2;z-index:1}.linked-flash{animation:linked .42s ease-out}@keyframes linked{50%{filter:brightness(1.8);outline:3px solid #fce1a3;outline-offset:-3px}}.gate.open{background:transparent;border:2px solid #b4d3a0;border-bottom-color:transparent}.gate:not(.open){border-color:#e49d8c}.turn-pit{background:repeating-linear-gradient(135deg,#071421 0 6px,#102a39 6px 8px)}.bridge-sweep{position:absolute;z-index:12;pointer-events:none;background:repeating-linear-gradient(90deg,#bd9250 0 6px,#765529 6px 8px);border-top:3px solid #f2d08e;border-bottom:3px solid #f2d08e;transform-origin:center}.bridge-moving .turn-bridge{visibility:hidden}
@media(max-width:600px){main{padding:10px 10px 24px}.brand-avatar{width:40px;height:40px}.brand-note{font-size:14px}h1{font-size:25px;margin:0 0 4px}.version-banner{margin:0 0 6px;font-size:14px}.journey{margin:4px 0;font-size:14px}.game{padding:8px}#intro{font-size:14px;margin:4px 0 6px}.playbar{position:sticky;bottom:0;padding:8px 0 max(8px,env(safe-area-inset-bottom));background:#111d28;z-index:10;margin-top:8px}.controls{grid-template-columns:repeat(3,44px);gap:4px}.move{height:44px}.actions{gap:4px}#hintText{margin:8px 0}.winbox{padding:16px}.victory-art{height:68px}.victory-art .sprite{width:66px;height:66px}.winbox h2{font-size:25px}.winbox button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.linked-flash{animation:none}}
