:root{--ui-ink: #0f172a;--ui-paper: #fff7dc;--ui-gold: #f6c945;--ui-sky: #bfe2ff;--ui-grass: #3e8a48;--ui-leaf: #5ac54f;--ui-path: #e4a673;color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#101417;color:#f8fafc;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:"Press Start 2P";src:url(/assets/PressStart2P-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden}button,a{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;background:#101417}.landing{position:relative;min-height:100vh;overflow:hidden;background:#12261a}.landing-bg{position:absolute;top:-18px;right:-18px;bottom:-18px;left:-18px;background:linear-gradient(90deg,#070e12f0,#081412d1,#0916136b 68%,#070e12b3),linear-gradient(180deg,#060a1033,#060a102e 44%,#060a10c2),image-set(url(/assets/generated/soft/origin-town-cute-fantasy-sakura-v5-full-redraw.png) 1x);background-size:auto,auto,cover;background-position:center,center,center 48%;background-repeat:no-repeat;filter:saturate(.95) brightness(.82);transform:translate3d(var(--map-shift-x, 0),var(--map-shift-y, 0),0) scale(1.035);transition:transform .26s ease-out;will-change:transform}.landing:after{content:"";position:absolute;inset:auto 0 0;height:35vh;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(7,10,16,.84))}.topbar,.hero-copy,.controls-preview{position:relative;z-index:2}.topbar{display:flex;align-items:center;justify-content:flex-end;padding:28px clamp(20px,5vw,72px)}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border:3px solid var(--ui-ink);background:var(--ui-paper);color:#173326;font-weight:900;box-shadow:4px 4px #000000b8}.icon-button,.hud-icon{display:grid;place-items:center;width:42px;height:42px;border:2px solid rgba(248,250,252,.9);background:#0f172a99;color:#f8fafc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hero-copy{position:relative;width:min(780px,calc(100vw - 40px));margin:min(9vh,82px) 0 0 clamp(20px,7vw,108px);text-shadow:0 3px 0 rgba(0,0,0,.42),0 14px 34px rgba(0,0,0,.46)}.eyebrow{display:inline-flex;align-items:center;min-height:30px;margin:0 0 16px;padding:0 10px;border:2px solid rgba(250,204,21,.95);background:#0f172a8a;color:var(--ui-gold);font-family:"Press Start 2P",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:800;letter-spacing:0;text-transform:uppercase;text-shadow:none;box-shadow:3px 3px #0000008c}h1,h2,p{margin-top:0}.hero-copy h1{margin-bottom:6px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:clamp(48px,7.2vw,104px);line-height:.96;font-weight:900;letter-spacing:0}.hero-copy h2{margin-bottom:26px;font-size:clamp(22px,3vw,38px);color:var(--ui-sky);font-weight:850}.landing-hero-sprite{position:absolute;left:clamp(560px,55vw,940px);top:clamp(190px,34vh,340px);width:80px;height:80px;z-index:2;pointer-events:none;filter:drop-shadow(0 8px 0 rgba(0,0,0,.36)) drop-shadow(0 16px 18px rgba(0,0,0,.5));animation:sprite-walk-in 1.7s cubic-bezier(.2,.78,.22,1) .12s both}.landing-hero-sprite span{position:absolute;top:0;right:0;bottom:0;left:0;animation:sprite-patrol 12s linear 1.85s infinite}.landing-hero-sprite span:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;image-rendering:pixelated;background-image:url(/assets/sprites/pharmacist-hero-pixel-clear/sheet-transparent.png);background-size:320px 320px;background-position:-80px -160px;animation:sprite-patrol-frames 12s steps(1) 1.85s infinite}.subtitle{max-width:620px;min-height:66px;font-size:clamp(18px,2vw,22px);line-height:1.5}.typing-caret{display:inline-block;margin-left:8px;color:var(--ui-gold);font-size:.78em;text-shadow:none;animation:typing-caret-blink .85s steps(1) infinite}.supporting{max-width:600px;color:#e6f3ff;line-height:1.65}.hero-actions,.panel-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.hero-actions{margin-top:32px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:3px solid var(--ui-ink);text-decoration:none;font-weight:800;color:var(--ui-ink);box-shadow:5px 5px #000000b8;text-shadow:none;white-space:nowrap;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.primary-button:hover,.secondary-button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px #000000b8;filter:brightness(1.04)}.primary-button{background:var(--ui-gold)}.secondary-button{background:var(--ui-paper)}.controls-preview{position:absolute;left:clamp(20px,8vw,108px);bottom:28px;color:#d7f4df;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;text-shadow:0 2px 8px rgba(0,0,0,.72)}.modal-screen,.intro-screen,.game-layout{min-height:100vh}.modal-screen{display:grid;place-items:center;padding:24px;background:#14213d}.pixel-panel,.overlay-panel,.battle-overlay{border:4px solid #f8fafc;background:#f8fafc;color:#172033;box-shadow:8px 8px #0f172a}.start-panel{width:min(620px,100%);padding:26px}.start-panel h2,.overlay-panel h2{margin-bottom:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.control-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 16px;margin-top:18px;padding:16px;background:#dbeafe;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.intro-screen{display:grid;place-items:center;background:#020617}.intro-lines{display:grid;gap:18px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(24px,4vw,48px);font-weight:900}.press-enter{position:fixed;right:32px;bottom:30px;border:2px solid #f8fafc;background:transparent;color:#f8fafc;padding:10px 16px}.game-layout{display:grid;place-items:center;padding:14px;background:linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),#0f172a;background-size:32px 32px}.game-frame{position:relative;width:min(100vw - 28px,1480px);aspect-ratio:3 / 2;max-height:calc(100vh - 28px);border:4px solid #f8fafc;background:#0f172a;box-shadow:8px 8px #020617}.phaser-host,.phaser-host canvas{width:100%!important;height:100%!important}.hud{position:absolute;top:12px;left:12px;right:12px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}.hud-panel{display:grid;gap:7px;max-width:min(560px,calc(100% - 56px));padding:12px 14px 13px;border:2px solid rgba(255,247,220,.94);background:linear-gradient(180deg,rgba(255,255,255,.06),transparent 42%),#0d191cd6;color:#f8fafc;font-family:"Press Start 2P",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;box-shadow:4px 4px #020617b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-panel strong{font-size:clamp(18px,2vw,24px);line-height:1;color:#fff7dc;text-shadow:3px 3px 0 rgba(2,6,23,.75)}.hud-location-label{display:inline-flex;align-items:center;gap:7px;color:var(--ui-gold);font-size:9px;line-height:1;text-transform:uppercase}.hud small{color:#cfefff;font-size:10px;line-height:1.55}.hud-icon{pointer-events:auto}.context-prompt{position:absolute;left:50%;bottom:22px;transform:translate(-50%);min-width:120px;padding:10px 14px;border:3px solid #111827;background:#facc15;color:#111827;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:900}.mobile-controls{display:none}.dpad{display:grid;grid-template-areas:". up ." "left . right" ". down .";grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:4px}.touch-button,.touch-action{border:3px solid rgba(248,250,252,.94);background:linear-gradient(180deg,rgba(255,255,255,.16),transparent 48%),#0f172ae0;color:#f8fafc;box-shadow:4px 4px #020617a6;touch-action:none;user-select:none;-webkit-user-select:none}.touch-button{display:grid;place-items:center;min-width:48px;min-height:48px}.touch-button.up{grid-area:up}.touch-button.left{grid-area:left}.touch-button.right{grid-area:right}.touch-button.down{grid-area:down}.touch-action{width:70px;height:70px;border-color:#facc15;border-radius:50%;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 45%),#dc2626;font-family:"Press Start 2P",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:22px;line-height:1}.debug-readout{position:absolute;right:12px;bottom:12px;z-index:12;padding:6px 8px;border:2px solid #f8fafc;background:#0f172ab8;color:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;pointer-events:none}.dialog-box{position:absolute;left:clamp(18px,5vw,56px);right:clamp(18px,5vw,56px);bottom:clamp(18px,4vh,34px);min-height:clamp(150px,25%,198px);padding:26px 30px 54px;border:4px solid #6d9aa8;outline:3px solid #f8fafc;background:linear-gradient(180deg,rgba(255,255,255,.08),transparent 30%),#32454cf5;color:#f8fafc;box-shadow:7px 7px #020617,inset 0 0 0 3px #02061773;font-family:"Press Start 2P",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(12px,1.22vw,16px);white-space:pre-line;z-index:22}.dialog-box p{min-height:3.8em;margin:22px 0 0;color:#f8fafc;font-size:clamp(14px,1.5vw,19px);line-height:1.85;text-shadow:2px 2px 0 rgba(2,6,23,.7)}.dialog-nameplate{position:absolute;left:22px;top:-24px;display:flex;align-items:center;gap:14px;max-width:calc(100% - 44px);padding:8px 12px 7px;border:3px solid #f8fafc;background:#172033;color:#f8fafc;box-shadow:4px 4px #020617}.dialog-nameplate strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialog-nameplate span{flex:0 0 auto;color:#bfdbfe;font-size:.72em}.dialog-advance{position:absolute;right:18px;bottom:14px;display:inline-flex;align-items:center;gap:10px;border:2px solid #f8fafc;background:#172033;color:#f8fafc;padding:8px 12px;font-family:inherit;font-size:.92em;box-shadow:3px 3px #020617}.dialog-advance i{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:8px solid #facc15;animation:dialog-cursor-bob .65s steps(2,end) infinite}@keyframes dialog-cursor-bob{50%{transform:translateY(4px)}}.overlay-panel{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(920px,calc(100vw - 32px));max-height:calc(100vh - 56px);overflow:auto;z-index:25}.casebook{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(320px,1.1fr);gap:0;width:min(1120px,calc(100vw - 28px));min-height:min(720px,calc(100vh - 72px));border:0;background:linear-gradient(90deg,transparent calc(50% - 8px),#9ca3af calc(50% - 8px),#f8fafc 50%,#6b7280 calc(50% + 8px),transparent calc(50% + 8px)),#e5e7eb;box-shadow:0 0 0 4px #172033,0 18px #00000059;clip-path:polygon(3% 0,47% 0,50% 3%,53% 0,97% 0,100% 4%,100% 96%,97% 100%,53% 100%,50% 97%,47% 100%,3% 100%,0 96%,0 4%)}.case-list{padding:44px 38px 36px 64px;background:repeating-linear-gradient(90deg,rgba(15,23,42,.12) 0 4px,transparent 4px 18px),#e5e7eb;border-right:0;color:#111827}.case-list h2{display:flex;gap:8px;align-items:center;font-size:20px}.case-list button{display:grid;width:100%;gap:4px;margin-bottom:12px;padding:12px 14px;border:0;background:transparent;color:#172033;text-align:left;font-weight:900;line-height:1.35}.case-list .selected{background:#f8fafc;box-shadow:inset 0 0 0 3px #17203329}.case-list span{font-size:11px;color:#475569}.case-page,.terminal{padding:24px}.case-page{padding:52px 64px 40px 48px;background:repeating-linear-gradient(90deg,transparent 0 22px,rgba(15,23,42,.06) 22px 26px),#f1f5f9;color:#111827}.case-page h3,.terminal h2{margin-bottom:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:26px}.case-subtitle{color:#475569;font-weight:800}.skill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.skill-row span{padding:6px 8px;border:2px solid #172033;background:#dcfce7;font-size:12px;font-weight:900}.close-button{margin-top:18px}.terminal{background:#07130f;color:#86efac;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;border-color:#86efac}.terminal .primary-button,.terminal .secondary-button{box-shadow:none}.encounter-transition{position:fixed;top:0;right:0;bottom:0;left:0;z-index:32;display:grid;place-items:center;overflow:hidden;background:#020617;animation:encounter-fade 1.45s steps(5,end) forwards}.encounter-transition:before,.encounter-transition:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.encounter-transition:before{background:linear-gradient(90deg,transparent 0 18%,rgba(255,255,255,.95) 19% 21%,transparent 22% 100%),repeating-linear-gradient(0deg,#facc15f2 0,#facc15f2 12px,#020617 12px,#020617 24px);mix-blend-mode:screen;opacity:0;transform:translate(-60%);animation:encounter-slash .88s steps(6,end) forwards}.encounter-transition:after{background:radial-gradient(circle at center,rgba(248,250,252,.82),transparent 18%),repeating-linear-gradient(90deg,transparent 0 8px,rgba(248,250,252,.15) 8px 10px);opacity:0;animation:encounter-pop .8s steps(4,end) .32s forwards}.encounter-bars{position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,transparent 0 28px,rgba(255,255,255,.08) 28px 32px);transform:scaleY(1.8);animation:encounter-bars .98s steps(8,end) forwards}.encounter-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#f8fafc;opacity:0;animation:encounter-flash 1.45s steps(1,end) forwards}.encounter-shadow{position:relative;z-index:1;width:clamp(160px,20vw,260px);image-rendering:pixelated;filter:brightness(0) drop-shadow(18px 18px 0 rgba(250,204,21,.8));transform:scale(.2);animation:encounter-shadow 1.2s cubic-bezier(.22,1,.36,1) forwards}.encounter-name{position:absolute;left:50%;bottom:16vh;z-index:1;transform:translate(-50%);padding:14px 18px;border:3px solid #f8fafc;background:#020617;color:#f8fafc;font-family:PressStart2P,ui-monospace,monospace;font-size:clamp(12px,2vw,20px);line-height:1.7;white-space:nowrap;box-shadow:8px 8px #172033;animation:encounter-name 1.45s steps(2,end) forwards}.battle-overlay{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(960px,calc(100vw - 28px));z-index:31;overflow:hidden;border:4px solid #172033;box-shadow:12px 12px #020617bf;animation:battle-drop .32s steps(4,end) both}.battle-stage{position:relative;height:min(52vh,430px);overflow:hidden;background:radial-gradient(ellipse at 28% 72%,rgba(15,23,42,.18),transparent 16%),radial-gradient(ellipse at 72% 34%,rgba(15,23,42,.16),transparent 15%),linear-gradient(#dff8f2,#e8fff5 42%,#b7ef9f 43%,#b7ef9f 55%,#e8fff5 56%)}.battle-speed-lines,.hit-burst{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0}.battle-speed-lines{background:repeating-linear-gradient(115deg,transparent 0 18px,rgba(255,255,255,.75) 18px 22px,transparent 22px 44px);mix-blend-mode:screen}.hit-burst{inset:18% 18% auto auto;width:220px;height:220px;background:linear-gradient(90deg,transparent 44%,#f8fafc 45% 55%,transparent 56%),linear-gradient(0deg,transparent 44%,#f8fafc 45% 55%,transparent 56%),linear-gradient(45deg,transparent 45%,#facc15 46% 54%,transparent 55%),linear-gradient(-45deg,transparent 45%,#facc15 46% 54%,transparent 55%);transform:scale(.2) rotate(0);filter:drop-shadow(0 0 18px rgba(250,204,21,.75))}.enemy-card,.player-card{position:absolute;display:grid;grid-template-columns:1fr auto;gap:6px 14px;width:min(330px,42%);padding:12px;border:3px solid #172033;background:#fffbea;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.enemy-card{top:28px;left:34px}.player-card{right:34px;bottom:28px}.hp{grid-column:1 / -1;height:12px;border:2px solid #172033;background:#e2e8f0}.enemy-card small{grid-column:1 / -1;color:#475569;font-size:11px;font-weight:900}.hp i{display:block;height:100%;background:#22c55e;transition:width .42s steps(4,end)}.focus i{background:#38bdf8}.battle-monster{position:absolute;image-rendering:pixelated}.battle-monster.enemy{top:130px;right:168px;width:160px;transform-origin:50% 85%}.battle-monster.player{left:140px;bottom:82px;width:148px;transform-origin:50% 85%}.phase-track{position:absolute;left:50%;bottom:34px;display:flex;gap:8px;transform:translate(-50%)}.phase-track span{display:grid;place-items:center;width:34px;height:26px;border:3px solid #172033;background:#fffbea;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:900;box-shadow:3px 3px #0f172a59}.phase-track .active{background:#facc15}.phase-track .cleared{background:#22c55e;color:#f8fafc}.battle-menu{display:grid;grid-template-columns:1.1fr 1fr;border-top:4px solid #172033;background:#f8fafc}.battle-menu pre{min-height:160px;margin:0;padding:20px;background:#1f4f63;color:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px;white-space:pre-wrap}.move-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px}.move-grid button{border:3px solid #172033;background:#fffbea;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:900}.move-grid button:disabled{opacity:.68}.move-grid .selected{background:#facc15}.effect-intro .battle-monster.enemy{animation:idle-bob .95s steps(2,end) infinite}.effect-intro .battle-monster.player{animation:idle-bob 1.1s steps(2,end) infinite reverse}.effect-enemy .battle-speed-lines{animation:speed-lines .34s steps(3,end)}.effect-enemy .battle-monster.enemy{animation:enemy-lunge .36s steps(3,end)}.effect-enemy .battle-monster.player{animation:player-brace .36s steps(3,end)}.effect-hit .hit-burst{animation:hit-burst .3s steps(4,end)}.effect-hit .battle-stage{animation:stage-shake .3s steps(4,end)}.effect-hit .battle-monster.player{animation:hit-shake .3s steps(4,end)}.effect-player .battle-speed-lines{animation:speed-lines .44s steps(4,end) reverse}.effect-player .battle-monster.player{animation:player-lunge .44s steps(4,end)}.effect-player .battle-monster.enemy{animation:enemy-hit .44s steps(4,end)}.effect-victory .battle-monster.enemy{animation:faint-out .72s steps(6,end) forwards}.effect-victory .battle-monster.player{animation:victory-hop .62s steps(4,end) infinite}@keyframes encounter-fade{0%,82%{opacity:1}to{opacity:0}}@keyframes encounter-slash{0%{opacity:0;transform:translate(-70%)}18%,70%{opacity:1}to{opacity:0;transform:translate(70%)}}@keyframes encounter-pop{0%,to{opacity:0}24%,48%{opacity:.8}}@keyframes encounter-bars{0%{transform:scaleY(1.8) translateY(-8%)}to{transform:scaleY(.8) translateY(8%)}}@keyframes encounter-flash{0%,24%,48%,72%{opacity:0}12%,36%,60%{opacity:.86}}@keyframes encounter-shadow{0%{opacity:0;transform:scale(.2) rotate(-8deg)}28%{opacity:1;transform:scale(1.18) rotate(5deg)}58%{transform:scale(.92) rotate(-3deg)}to{opacity:1;transform:scale(1.04) rotate(0)}}@keyframes encounter-name{0%,28%{opacity:0}34%,to{opacity:1}}@keyframes battle-drop{0%{opacity:0;transform:translate(-50%,-46%) scale(.94)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes idle-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes speed-lines{0%{opacity:0;transform:translate(-22%)}18%,72%{opacity:.72}to{opacity:0;transform:translate(22%)}}@keyframes enemy-lunge{0%,to{transform:translate(0) scale(1)}48%{transform:translate(-70px,38px) scale(1.08)}}@keyframes player-lunge{0%,to{transform:translate(0) scale(1)}50%{transform:translate(86px,-42px) scale(1.08)}}@keyframes player-brace{0%,to{transform:translate(0)}50%{transform:translate(-12px)}}@keyframes hit-shake{0%,to{transform:translate(0)}25%{transform:translate(-12px,2px)}50%{transform:translate(10px,-2px)}75%{transform:translate(-6px,1px)}}@keyframes enemy-hit{0%,to{filter:none;transform:translate(0)}40%{filter:brightness(2);transform:translate(14px,-6px)}70%{transform:translate(-12px,3px)}}@keyframes hit-burst{0%{opacity:0;transform:scale(.2) rotate(0)}30%,70%{opacity:1}to{opacity:0;transform:scale(1.2) rotate(18deg)}}@keyframes stage-shake{0%,to{transform:translate(0)}25%{transform:translate(6px,-3px)}50%{transform:translate(-6px,3px)}75%{transform:translate(4px)}}@keyframes faint-out{0%{opacity:1;transform:translateY(0) scale(1);filter:none}to{opacity:0;transform:translateY(18px) scale(.82);filter:brightness(0)}}@keyframes victory-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes sprite-walk-in{0%{opacity:0;transform:translate3d(-54vw,22px,0)}12%{opacity:1}to{opacity:1;transform:translateZ(0)}}@keyframes sprite-patrol{0%,to{transform:translateZ(0)}16%{transform:translate3d(120px,0,0)}32%{transform:translate3d(210px,82px,0)}50%{transform:translate3d(110px,158px,0)}66%{transform:translate3d(-28px,118px,0)}82%{transform:translate3d(34px,42px,0)}}@keyframes sprite-patrol-frames{0%{background-position:0 -160px}4%{background-position:-80px -160px}8%{background-position:-160px -160px}12%{background-position:-240px -160px}16%{background-position:0 0}20%{background-position:-80px 0}24%{background-position:-160px 0}28%{background-position:-240px 0}32%{background-position:0 -80px}36%{background-position:-80px -80px}40%{background-position:-160px -80px}44%{background-position:-240px -80px}48%{background-position:0 -80px}52%{background-position:-80px -80px}56%{background-position:-160px -80px}60%{background-position:-240px -80px}64%{background-position:0 -80px}68%{background-position:-80px -240px}72%{background-position:-160px -240px}76%{background-position:-240px -240px}80%{background-position:0 -240px}84%{background-position:-80px -80px}88%{background-position:-160px -80px}92%{background-position:-240px -80px}96%,to{background-position:0 -80px}}@keyframes sprite-idle-bob{0%,to{translate:0 0}50%{translate:0 -3px}}@keyframes typing-caret-blink{0%,45%{opacity:1}46%,to{opacity:0}}@media (prefers-reduced-motion: reduce){.landing-bg{transform:none;transition:none}.landing-hero-sprite,.landing-hero-sprite span,.landing-hero-sprite span:after,.typing-caret{animation:none}}@media (max-width: 760px){body{overflow:auto}.landing{min-height:100svh}.landing-bg{top:0;right:0;bottom:0;left:0;transform:none;background-position:center,center,58% center}.topbar{padding:18px 18px 0}.hero-copy{margin-top:8vh}.hero-copy h1{font-size:clamp(42px,14vw,64px)}.subtitle{min-height:96px}.landing-hero-sprite{display:none}.hero-actions,.panel-actions{align-items:stretch;flex-direction:column}.casebook{grid-template-columns:1fr;min-height:auto;clip-path:none;background:#f1f5f9}.case-list{padding:24px;border-right:0;border-bottom:3px solid #172033}.case-page{padding:24px}.battle-menu{grid-template-columns:1fr}.battle-stage{height:360px}.battle-monster.enemy{right:56px}.battle-monster.player{left:48px}}@media (max-width: 900px),(max-height: 700px),(pointer: coarse){.game-layout{min-height:100svh;padding:0;overflow:hidden}.game-frame{width:min(100vw,150svh);height:min(100svh,calc(100vw / 1.5));max-height:none;aspect-ratio:3 / 2;border:0;box-shadow:none}.hud{top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));align-items:flex-start}.hud-panel{gap:4px;max-width:min(280px,calc(100vw - 74px));padding:8px 10px 9px;border-width:2px;font-size:10px;box-shadow:3px 3px #020617b8}.hud-panel strong{font-size:clamp(18px,5.4vw,26px)}.hud-location-label{gap:5px;font-size:7px}.hud small{display:none}.hud-icon{width:46px;height:46px;min-width:46px;padding:0}.context-prompt{bottom:max(98px,calc(env(safe-area-inset-bottom) + 82px));min-width:0;max-width:calc(100vw - 210px);padding:8px 10px;border-width:2px;font-size:15px;white-space:nowrap}.mobile-controls{position:absolute;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:20;display:flex;align-items:flex-end;justify-content:space-between;pointer-events:none}.dpad,.touch-action{pointer-events:auto}.dialog-box{left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));min-height:128px;padding:22px 16px 48px;border-width:3px;outline-width:2px}.dialog-box p{min-height:4.4em;margin-top:14px;font-size:clamp(11px,3.25vw,15px);line-height:1.75}.dialog-nameplate{left:12px;top:-20px;gap:8px;max-width:calc(100% - 24px);padding:6px 8px;border-width:2px;font-size:11px}.dialog-advance{right:12px;bottom:10px;padding:7px 9px;font-size:10px}}@media (max-width: 900px) and (orientation: portrait),(pointer: coarse) and (orientation: portrait){.game-layout{place-items:center;min-height:100svh;padding:0;overflow:hidden}.game-frame{width:min(calc(100vw - 16px),720px);height:auto;max-height:none;aspect-ratio:3 / 2;border:3px solid #f8fafc;box-shadow:5px 5px #020617}.hud{top:6px;left:8px;right:8px}.hud-panel{gap:3px;max-width:148px;padding:5px 7px 6px;box-shadow:2px 2px #020617b8}.hud-panel strong{font-size:14px;line-height:1.08;text-shadow:2px 2px 0 rgba(2,6,23,.75)}.hud-location-label{gap:4px;font-size:5px}.hud-location-label svg{width:9px;height:9px}.hud-icon{width:34px;height:34px;min-width:34px}.hud-icon svg{width:15px;height:15px}.mobile-controls{position:fixed;left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}.dpad{grid-template-columns:repeat(3,36px);grid-template-rows:repeat(3,36px);gap:3px}.touch-button{min-width:36px;min-height:36px;border-width:2px;box-shadow:3px 3px #02061794}.touch-button svg{width:22px;height:22px}.touch-action{width:54px;height:54px;border-width:3px;font-size:17px;box-shadow:3px 3px #02061794}.context-prompt{bottom:8px;padding:5px 7px;max-width:calc(100% - 24px);border-width:2px;font-size:11px}.dialog-box{left:8px;right:8px;bottom:8px;min-height:96px;padding:16px 12px 34px;border-width:2px;outline-width:2px;box-shadow:4px 4px #020617,inset 0 0 0 2px #02061773}.dialog-box p{min-height:3.2em;margin-top:10px;font-size:clamp(8px,2.35vw,10px);line-height:1.58}.dialog-nameplate{left:10px;top:-16px;gap:6px;max-width:calc(100% - 20px);padding:5px 7px;border-width:2px;font-size:8px}.dialog-advance{right:10px;bottom:8px;gap:6px;padding:5px 7px;font-size:8px}.dialog-advance i{border-left-width:4px;border-right-width:4px;border-top-width:6px}}@media (max-width: 520px){.hud-panel{max-width:min(224px,calc(100vw - 66px))}.hud-panel strong{font-size:18px}.dpad{grid-template-columns:repeat(3,42px);grid-template-rows:repeat(3,42px)}.touch-button{min-width:42px;min-height:42px}.touch-action{width:62px;height:62px;font-size:19px}}
