@font-face{font-family:MedievalSharp;src:url(/assets/MedievalSharp-Regular-BN2kGNB9.ttf)format("truetype");font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f6ecd2;--gold:#e5b958;--gold-bright:#ffd984;--ink:#070b12;--line:#e5b9584d;--cyan:#79e6ff;background:#070b12;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#070b12;min-width:320px;min-height:100%}body{background:linear-gradient(#04070d99,#070b12 92%),url(/background.webp) 50%/cover fixed;min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}.app{grid-template-rows:auto 1fr auto;gap:16px;width:min(100%,1180px);min-height:100vh;margin:0 auto;padding:18px clamp(12px,3vw,32px) 14px;display:grid}.topbar,.footer{justify-content:space-between;align-items:center;gap:16px;display:flex}.topbar{min-height:56px}.brand{letter-spacing:.05em;text-transform:uppercase;text-shadow:0 2px 18px #000c;align-items:center;gap:11px;font-family:MedievalSharp,Georgia,serif;display:flex}.brand__rune{border:1px solid var(--line);width:44px;height:44px;color:var(--gold-bright);background:radial-gradient(circle,#e5b9582e,#0000 64%);border-radius:50%;place-items:center;font-size:1.45rem;display:grid;box-shadow:inset 0 0 20px #e5b95814}.brand strong,.brand small{line-height:1;display:block}.brand strong{font-size:1.15rem}.brand small{color:var(--gold);letter-spacing:.24em;margin-top:5px;font-size:.72rem}.topbar__actions{align-items:center;gap:8px;display:flex}.icon-button,.github-link{color:#f8edd2;background:#050910b8;border:1px solid #ffffff21;border-radius:4px;min-width:42px;min-height:42px;transition:border-color .16s,background-color .16s,transform .16s}.icon-button{cursor:pointer;font-size:1.05rem}.icon-button:disabled{cursor:not-allowed;opacity:.45}.icon-button:hover:not(:disabled),.github-link:hover{border-color:var(--gold);background:#251d10e0;transform:translateY(-1px)}.github-link{letter-spacing:.04em;align-items:center;gap:8px;padding:3px 12px 3px 3px;font-size:.8rem;text-decoration:none;display:flex}#realmMark{width:36px;height:36px;display:block}#realmMark canvas{display:block}.game-shell{align-items:center;display:grid}.arena{border:1px solid var(--line);background:#04070ce6;border-radius:8px;overflow:hidden;box-shadow:0 24px 80px #00000094,0 0 0 1px #000000bf}.hud{border-bottom:1px solid var(--line);background:linear-gradient(#1b1917fa,#080c13fa);grid-template-columns:minmax(230px,1.6fr) repeat(4,minmax(92px,.65fr));align-items:center;gap:16px;min-height:64px;padding:10px 18px;display:grid}.hud__life{grid-template-columns:minmax(80px,1fr) 34px;align-items:center;gap:4px 10px;display:grid}.hud__life .hud__label{grid-column:1/-1}.hud__label{color:#a99c82;letter-spacing:.14em;text-transform:uppercase;font-size:.68rem;font-weight:700;line-height:1.2;display:block}.hud strong{color:#fff6df;font-variant-numeric:tabular-nums;letter-spacing:.06em;font-family:MedievalSharp,Georgia,serif;font-size:1.05rem}.hud__stat--center strong{color:var(--gold-bright)}.life-bar{background:#29100e;border:1px solid #fff3;border-radius:999px;height:9px;overflow:hidden}.life-bar span{border-radius:inherit;background:linear-gradient(90deg,#b73328,#efb04b 58%,#86d174);width:100%;height:100%;transition:width .18s;display:block;box-shadow:0 0 12px #86d17480}.hud__shot strong{color:#7fdf97;font-family:Inter,ui-sans-serif,sans-serif;font-size:.7rem}.canvas-frame{aspect-ratio:8/5;isolation:isolate;background:#080d16;position:relative;overflow:hidden}#gameCanvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#080d16;width:100%;height:100%;display:block}.touch-stick{--stick-x:0px;--stick-y:0px;z-index:2;opacity:0;pointer-events:none;background:#040a1161;border:1px solid #79e6ff9e;border-radius:50%;width:96px;height:96px;transition:opacity .1s;position:absolute;transform:translate(-50%,-50%);box-shadow:inset 0 0 22px #79e6ff14,0 0 20px #00000047}.touch-stick.is-active{opacity:1}.touch-stick span{width:30px;height:30px;transform:translate(calc(-50% + var(--stick-x)), calc(-50% + var(--stick-y)));background:#79e6ffb8;border:1px solid #ffffffb3;border-radius:50%;position:absolute;top:50%;left:50%;box-shadow:0 0 18px #79e6ff5c}.game-overlay{z-index:4;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#02050ac7;place-items:center;padding:clamp(16px,4vw,48px);display:none;position:absolute;inset:0}[data-game-state=loading] .game-overlay--loading,[data-game-state=ready] .game-overlay--intro,[data-game-state=paused] .game-overlay--pause,[data-game-state=gameover] .game-overlay--gameover{animation:.36s both overlay-in;display:grid}.game-overlay--loading{color:#dac9a6;letter-spacing:.08em;align-content:center;font-family:MedievalSharp,Georgia,serif;font-size:1.05rem}.game-overlay--loading img{object-fit:contain;margin-inline:auto}.loading-track{background:#ffffff1f;width:min(220px,65vw);height:3px;margin-top:8px;overflow:hidden}.loading-track span{background:var(--gold);width:0;height:100%;transition:width .18s;display:block}.game-overlay--intro{color:#2c170c;-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(90deg,#e4c4960a,#1409031f),url(/book_menu.png) 50%/cover no-repeat}.story-panel{width:min(88%,760px);margin-inline:auto;padding:22px clamp(30px,7vw,74px);transform:translateY(-1%)}.eyebrow{color:#9c4f21;letter-spacing:.18em;text-transform:uppercase;margin:0 0 8px;font-size:.72rem;font-weight:800}.story-panel h1,.modal-card h2{margin:0;font-family:MedievalSharp,Georgia,serif;line-height:1.05}.story-panel h1{font-size:clamp(1.7rem,4vw,3rem)}.story-panel>p:not(.eyebrow){max-width:630px;margin:14px auto;font-family:Georgia,serif;font-size:clamp(.88rem,1.8vw,1.05rem);line-height:1.55}.instructions{justify-content:center;gap:clamp(12px,4vw,44px);margin:18px 0 10px;display:flex}.instructions span,.instructions small{display:block}kbd{background:#592e1614;border:1px solid #3f1f0d59;border-radius:3px;min-width:54px;padding:5px 9px;font-family:Inter,sans-serif;font-size:.68rem;font-weight:800;display:inline-block;box-shadow:0 2px #391d0e40}.instructions small{letter-spacing:.08em;text-transform:uppercase;margin-top:7px;font-size:.68rem;font-weight:700}.story-panel .story-panel__warning{color:#7a391b;font-style:italic}.primary-button,.text-button{cursor:pointer;border:0}.primary-button{color:#fff6dc;letter-spacing:.05em;background:linear-gradient(#9e5429,#653014);border:1px solid #6f3517;border-radius:3px;min-height:44px;padding:0 24px;font-family:MedievalSharp,Georgia,serif;font-size:1rem;transition:filter .16s,transform .16s;box-shadow:inset 0 1px #ffffff38,0 5px 18px #31140738}.primary-button:hover{filter:brightness(1.13);transform:translateY(-1px)}.modal-card{background:linear-gradient(145deg,#1c1916f7,#070b12fa);border:1px solid #e5b9587a;border-radius:6px;width:min(440px,90vw);padding:clamp(24px,5vw,42px);box-shadow:0 24px 70px #000000b8,inset 0 0 34px #e5b9580d}.modal-card h2{color:#fff2cf;font-size:clamp(1.8rem,5vw,2.6rem)}.modal-card>p:not(.eyebrow){color:#bbb09b;line-height:1.5}.modal-card .primary-button,.modal-card .text-button{margin:18px auto 0;display:block}.text-button{color:#c9baa0;text-underline-offset:4px;background:0 0;padding:7px 12px;font-size:.83rem;text-decoration:underline}.final-stats{background:var(--line);grid-template-columns:1fr 1fr;gap:1px;margin:22px 0;display:grid}.final-stats span{background:#0b1019;padding:14px}.final-stats small,.final-stats strong{display:block}.final-stats small{color:#9d927f;letter-spacing:.12em;text-transform:uppercase;font-size:.68rem}.final-stats strong{color:var(--gold-bright);margin-top:5px;font-family:MedievalSharp,Georgia,serif;font-size:1.55rem}.level-banner{z-index:3;color:#fff0c8;text-align:center;background:linear-gradient(90deg,#0000,#070b12eb 20% 80%,#0000);border-block:1px solid #e5b95875;padding:10px 24px;display:none;position:absolute;top:10%;left:50%;transform:translate(-50%)}.level-banner.is-visible{animation:2s both banner;display:block}.level-banner small,.level-banner strong{display:block}.level-banner small{letter-spacing:.18em;text-transform:uppercase;font-size:.65rem}.level-banner strong{font-family:MedievalSharp,Georgia,serif;font-size:1.7rem}.touch-controls{z-index:2;pointer-events:none;justify-content:space-between;align-items:end;padding:0 14px;display:none;position:absolute;inset:auto 0 12px}.touch-dpad{grid-template:repeat(3,1fr)/repeat(3,1fr);width:120px;height:120px;display:grid}.touch-button{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);touch-action:none;pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#04080e94;border:1px solid #ffffff47}.touch-hint{display:none}.touch-button:active,.touch-button.is-active{color:var(--ink);background:#e5b958d1}.touch-button--up{border-radius:8px 8px 0 0;grid-area:1/2}.touch-button--left{border-radius:8px 0 0 8px;grid-area:2/1}.touch-button--down{grid-area:2/2}.touch-button--right{border-radius:0 8px 8px 0;grid-area:2/3}.touch-button--fire{color:#b7f3ff;border-color:#79e6ff80;border-radius:50%;width:68px;height:68px;margin:0 8px 11px 0;font-family:MedievalSharp,Georgia,serif;font-size:.9rem;box-shadow:0 0 22px #54cdff21}.footer{color:#e5dcc99e;letter-spacing:.04em;font-size:.72rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes banner{0%{opacity:0;transform:translate(-50%,-8px)}18%,74%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-8px)}}@media (width<=760px){.app{gap:10px;padding:10px 8px}.brand__rune,.github-link__label,.hud__shot{display:none}.brand strong{font-size:.96rem}.brand small{font-size:.62rem}.hud{grid-template-columns:minmax(120px,1.4fr) repeat(3,.7fr);gap:8px;min-height:58px;padding:8px 10px}.hud__label{letter-spacing:.09em;font-size:.54rem}.hud strong{font-size:.78rem}.hud__life{grid-template-columns:minmax(62px,1fr) 24px;gap:3px 5px}.story-panel{width:92%;padding:12px 18px}.story-panel>p:not(.eyebrow){margin-block:8px;line-height:1.3}.instructions{margin:10px 0 6px}.instructions small{display:none}.primary-button{min-height:40px}.footer{display:none}}@media (pointer:coarse),(width<=760px){[data-game-state=playing] .touch-controls{display:flex}}@media (width<=560px){.topbar{min-height:44px}.icon-button,.github-link{min-width:38px;min-height:38px}#realmMark{width:30px;height:30px}.game-overlay--intro{background-size:auto 100%}.story-panel h1{font-size:1.45rem}.story-panel>p:not(.eyebrow){font-size:1rem}.instructions{gap:8px}kbd{min-width:auto;padding:4px 6px;font-size:.75rem}}@media (width<=760px) and (orientation:portrait){html,body{overscroll-behavior:none;background:#05080e;width:100%;height:100%;overflow:hidden}.app[data-layout=portrait]{grid-template-rows:48px minmax(0,1fr);gap:0;width:100%;height:100dvh;min-height:100dvh;padding:0}[data-layout=portrait] .topbar{z-index:6;border-bottom:1px solid var(--line);background:#05080ef5;min-height:48px;padding:4px 10px;position:relative}[data-layout=portrait] .brand{gap:0}[data-layout=portrait] .brand strong{font-size:.9rem}[data-layout=portrait] .brand small{letter-spacing:.18em;margin-top:4px;font-size:.62rem}[data-layout=portrait] .github-link{display:none}[data-layout=portrait] .icon-button{min-width:38px;min-height:38px}[data-layout=portrait] .game-shell{place-items:center;min-height:0;overflow:hidden}[data-layout=portrait] .arena{aspect-ratio:9/16;border-block:0;border-radius:0;width:auto;max-width:100vw;height:min(100%,177.778vw);max-height:calc(100dvh - 48px);position:relative;box-shadow:0 0 54px #000000d1}[data-layout=portrait] .canvas-frame{aspect-ratio:9/16;width:100%;height:100%}[data-layout=portrait] .hud{z-index:3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);pointer-events:none;background:linear-gradient(#060a11f5,#060a11c7);border-bottom:1px solid #e5b9586b;grid-template:"life life level""score time shot"/1.35fr .9fr .75fr;gap:7px 10px;min-height:76px;padding:9px 12px 8px;position:absolute;inset:0 0 auto}[data-layout=portrait] .hud__life{grid-area:life;grid-template-columns:minmax(80px,1fr) 30px;gap:3px 8px}[data-layout=portrait] .hud__stat:nth-child(2){grid-area:score}[data-layout=portrait] .hud__stat:nth-child(3){text-align:right;grid-area:level}[data-layout=portrait] .hud__stat:nth-child(4){grid-area:time}[data-layout=portrait] .hud__stat:nth-child(5){grid-area:shot;display:block}[data-layout=portrait] .hud__label{letter-spacing:.08em;font-size:.75rem}[data-layout=portrait] .hud strong{font-size:.86rem}[data-layout=portrait] .hud__shot strong{font-size:.63rem}[data-layout=portrait] .life-bar{height:7px}[data-layout=portrait] .game-overlay{padding:18px 14px}[data-layout=portrait] .game-overlay--intro{background:linear-gradient(#1d0f0714,#1d0f0729),url(/book_menu.png) 50%/auto 100% no-repeat,#cba679}[data-layout=portrait] .story-panel{background:#efd9b4e6;border:1px solid #582c1459;border-radius:4px;width:min(92%,420px);padding:24px 18px;transform:none;box-shadow:0 14px 34px #30150740}[data-layout=portrait] .story-panel h1{font-size:clamp(1.7rem,8vw,2.35rem)}[data-layout=portrait] .story-panel>p:not(.eyebrow){margin-block:14px;font-size:1rem;line-height:1.45}[data-layout=portrait] .story-panel .touch-hint{color:#703719;margin-block:10px;font-family:Inter,ui-sans-serif,sans-serif;font-size:.82rem;font-weight:700;display:block}[data-layout=portrait] .instructions{gap:10px;margin-block:18px 12px}[data-layout=portrait] .instructions small{font-size:.72rem;display:block}[data-layout=portrait] .touch-controls{padding-inline:16px;inset:auto 0 16px}[data-layout=portrait] .touch-dpad{width:clamp(108px,32vw,132px);height:clamp(108px,32vw,132px)}[data-layout=portrait] .touch-button{font-size:.9rem}[data-layout=portrait] .touch-button--fire{width:clamp(66px,20vw,80px);height:clamp(66px,20vw,80px);margin:0 4px 14px 0;font-size:1rem}[data-layout=portrait] .modal-card{width:min(92%,400px)}[data-layout=portrait] .footer{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
