:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink-950:#070b0d;--ink-900:#0b1113;--ink-850:#11191b;--ink-700:#253033;--mist-100:#e7eee9;--mist-300:#a9b8b3;--jade-300:#91dbc7;--jade-400:#6fc6b0;--jade-700:#245f58;--cinnabar-400:#d06451;--cinnabar-500:#b84535;--gold-400:#cfb777;--gold-500:#b99a5b;--line:#a9b8b33b;--surface-strong:#0a1012f0;--surface-soft:#11191bc7;--frame-width:min(100vw, calc((100vh - 9.25rem) * 1.7647));font-family:Noto Serif SC,Songti SC,STSong,serif}*{box-sizing:border-box}html,body{background:var(--ink-950);width:100%;min-height:100%;margin:0;overflow:hidden}body{color:var(--mist-100);-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 20%,#245f5821,#0000 36rem),linear-gradient(#080d0f,#050809 70%)}button,kbd{font:inherit}button{color:inherit}[hidden]{display:none!important}.game-shell{isolation:isolate;grid-template-rows:5.2rem minmax(0,1fr) 4.05rem;place-items:center;width:100vw;height:100vh;min-height:36rem;display:grid;position:relative}.game-shell:before{content:"";pointer-events:none;opacity:.16;mix-blend-mode:soft-light;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");position:fixed;inset:0}.top-rail,.command-rail{width:var(--frame-width);z-index:5;align-items:center;min-width:min(52rem,100vw - 2rem);max-width:calc(100vw - 2rem);display:grid;position:relative}.top-rail{background:linear-gradient(90deg,#0c1315f0,#080d0fc2 48%,#0c1315f0);border:1px solid #a9b8b32b;border-bottom-color:#b99a5b57;grid-template-columns:1fr auto 1fr;gap:1rem;min-height:4.25rem;padding:.45rem .75rem;box-shadow:0 .55rem 1.5rem #0000002e}.top-rail:after,.command-rail:before{content:"";background:linear-gradient(90deg, transparent, var(--gold-500), transparent);width:5rem;height:1px;position:absolute;left:50%;transform:translate(-50%)}.top-rail:after{bottom:-1px}.command-rail:before{top:-1px}.vital-cluster,.sword-cluster{align-items:center;gap:.75rem;min-width:0;display:flex}.sword-cluster{justify-content:flex-end}.crest{aspect-ratio:1;width:3.5rem;color:var(--gold-400);background:#11191bdb;border:1px solid #b99a5b8c;place-items:center;display:grid;transform:rotate(45deg)}.crest span{font-size:1.35rem;transform:rotate(-45deg)}.meters{gap:.38rem;width:min(19rem,25vw);display:grid}.meter-row{grid-template-columns:2.8rem 1fr;align-items:center;gap:.55rem;display:grid}.meter-label,.sword-copy small,.encounter-title small{color:var(--mist-300);letter-spacing:.16em;font-size:.7rem}.meter{clip-path:polygon(0 0,100% 0,calc(100% - .35rem) 100%,0 100%);background:#040708d1;border:1px solid #a9b8b352;height:.92rem;position:relative;overflow:hidden}.meter i,.boss-meter i{transform-origin:0;transition:transform .12s linear;position:absolute;inset:0}.health-meter i{background:linear-gradient(90deg, #78352e, var(--cinnabar-400))}.intent-meter i{background:linear-gradient(90deg, var(--jade-700), var(--jade-300))}.meter b{text-shadow:0 1px 3px #000;font:700 .64rem/1 system-ui,sans-serif;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.encounter-title{text-align:center;border-inline:1px solid #b99a5b33;align-content:center;gap:.15rem;min-width:14rem;min-height:3.2rem;padding:.25rem 1.5rem;display:grid}.encounter-title strong{color:#e0c983;letter-spacing:.22em;text-shadow:0 0 .75rem #cfb77733;font-size:1.12rem;font-weight:500}.encounter-title span{color:var(--mist-300);letter-spacing:.08em;font:.68rem/1.2 system-ui,sans-serif}.sword-copy{text-align:right;gap:.08rem;min-width:8.2rem;display:grid}.sword-copy strong{color:#a7ead8;letter-spacing:.16em;text-shadow:0 0 .85rem #6fc6b03d;font-size:1.08rem;font-weight:500}.sword-copy span{color:var(--mist-300);font:.66rem/1.2 system-ui,sans-serif}.sword-sigil{aspect-ratio:1;border:1px solid #6fc6b073;border-radius:50%;place-items:center;width:3.5rem;display:grid;position:relative}.sword-sigil:before,.sword-sigil:after{content:"";border:1px dashed #6fc6b040;border-radius:50%;position:absolute;inset:.3rem}.sword-sigil:after{border-style:solid;inset:.7rem}.sword-sigil i{background:var(--mist-100);width:.18rem;height:2.2rem;box-shadow:0 0 .8rem var(--jade-400);transform:rotate(42deg)}.sword-sigil:not(.is-ready){border-color:#d06451a6;animation:1.2s ease-in-out infinite sigil-pulse}.sword-sigil:not(.is-ready) i{background:var(--cinnabar-400);box-shadow:0 0 .8rem var(--cinnabar-500)}.game-frame{width:var(--frame-width);aspect-ratio:1200/680;background:#0b1214;border:1px solid #b99a5b52;max-width:calc(100vw - 2rem);max-height:calc(100vh - 9.25rem);position:relative;overflow:hidden;box-shadow:0 1.4rem 4rem #0000006b,0 0 0 1px #91dbc70d}#game-root,#game-root canvas{display:block;width:100%!important;height:100%!important}#game-root canvas{cursor:crosshair;filter:brightness(1.08)saturate(1.04)}.frame-corners{pointer-events:none;border:1px solid #b99a5b2e;position:absolute;inset:0}.frame-corners:before,.frame-corners:after{content:"";border-color:var(--gold-500);opacity:.58;width:4rem;height:4rem;position:absolute}.frame-corners:before{border-top:1px solid;border-left:1px solid;top:.75rem;left:.75rem}.frame-corners:after{border-bottom:1px solid;border-right:1px solid;bottom:.75rem;right:.75rem}.boss-wrap{text-align:center;pointer-events:none;width:min(28rem,58%);position:absolute;top:1rem;left:50%;transform:translate(-50%)}.boss-wrap span{color:var(--mist-100);letter-spacing:.35em;text-shadow:0 2px 6px #000;font-size:.76rem}.boss-meter{background:#070b0dbf;border:1px solid #d0645161;height:.38rem;margin-top:.4rem;position:relative;overflow:hidden}.boss-meter i{background:linear-gradient(90deg, #6f2823, var(--cinnabar-400))}.build-strip{z-index:9;border-left:2px solid var(--gold-500);pointer-events:none;background:#070b0db8;align-items:center;gap:.55rem;padding:.38rem .55rem;display:flex;position:absolute;top:1rem;left:1rem}.build-strip>span{color:var(--gold-400);letter-spacing:.18em;font-size:.58rem}.build-strip>div{flex-wrap:wrap;gap:.35rem;max-width:min(42rem,72vw);display:flex}.build-strip b{color:var(--jade-300);letter-spacing:.08em;border:1px solid #6fc6b040;padding:.2rem .38rem;font-size:.62rem;font-weight:500}.action-toast{z-index:10;opacity:0;color:var(--jade-300);letter-spacing:.16em;pointer-events:none;background:#070b0de6;border-top:1px solid;border-bottom:1px solid;padding:.48rem 1.35rem;transition:all .18s;position:absolute;bottom:12%;left:50%;transform:translate(-50%,.75rem);box-shadow:0 .6rem 1.6rem #00000047}.action-toast[data-tone=danger]{color:var(--cinnabar-400)}.action-toast[data-tone=gold]{color:var(--gold-400)}.action-toast.is-visible{opacity:1;transform:translate(-50%)}.combo-indicator{z-index:9;opacity:0;color:var(--jade-300);letter-spacing:.22em;pointer-events:none;background:#070b0db8;border-left:1px solid;border-right:1px solid;padding:.28rem .72rem;font-size:.64rem;transition:all .14s;position:absolute;bottom:20%;left:50%;transform:translate(-50%,.5rem)scale(.96)}.combo-indicator[data-step="3"]{color:var(--gold-400);font-size:.72rem}.combo-indicator.is-visible{opacity:1;transform:translate(-50%)scale(1)}.game-frame:has(.tutorial-card:not([hidden])) .action-toast{bottom:24%}.tutorial-card{width:min(26rem,100% - 2rem);color:var(--mist-100);border-left:2px solid var(--jade-400);pointer-events:none;background:linear-gradient(90deg,#070b0df5,#11191beb);border-top:1px solid #6fc6b047;border-bottom:1px solid #6fc6b047;padding:.7rem 1rem .75rem;position:absolute;bottom:7.5%;left:50%;transform:translate(-50%);box-shadow:0 .75rem 2rem #00000057}.tutorial-card>span{color:var(--gold-400);letter-spacing:.22em;margin-bottom:.45rem;font-size:.62rem;display:block}.tutorial-card>div{align-items:center;gap:.75rem;display:flex}.tutorial-card strong{letter-spacing:.08em;font-size:.82rem;font-weight:500}.danger-vignette{pointer-events:none;opacity:0;transition:opacity .18s;position:absolute;inset:0;box-shadow:inset 0 0 7rem #b84535b8}.danger-vignette.is-critical{opacity:.7;animation:1.5s ease-in-out infinite danger-breathe}.touch-controls{z-index:12;pointer-events:none;font-family:Noto Serif SC,Songti SC,serif;position:absolute;inset:0}.touch-controls:before{content:"";pointer-events:none;background:radial-gradient(circle at 8% 100%,#245f5833,#0000 28%),radial-gradient(circle at 93% 100%,#b845351f,#0000 30%),linear-gradient(#0000,#04070833);height:42%;position:absolute;inset:auto 0 0}.touch-move-zone{pointer-events:auto;touch-action:none;width:38%;height:100%;position:absolute;inset:0 auto 0 0}.touch-joystick{aspect-ratio:1;width:clamp(5.7rem,18vh,7rem);left:max(5rem, env(safe-area-inset-left));opacity:0;isolation:isolate;background:radial-gradient(circle, #11191b4d 0 39%, transparent 40%), repeating-conic-gradient(from 22.5deg, #91dbc72e 0 1deg, transparent 1deg 45deg), radial-gradient(circle, #070b0d8f 0 68%, #070b0dd1 69% 100%);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none;touch-action:none;-webkit-tap-highlight-color:transparent;border:1px solid #91dbc76b;border-radius:50%;transition:opacity .1s,transform .1s,box-shadow .1s,border-color .1s;position:absolute;top:72%;transform:translate(-50%,-50%)scale(.88);box-shadow:inset 0 0 1.5rem #6fc6b01a,0 .5rem 2rem #00000061,0 0 0 .22rem #070b0d57}.touch-joystick.is-visible{opacity:.76;transform:translate(-50%,-50%)scale(1)}.touch-joystick:before{content:"";z-index:0;background:conic-gradient(from 45deg, transparent 0 11%, #91dbc729 12% 13%, transparent 14% 36%, #91dbc729 37% 38%, transparent 39% 100%);border:1px solid #b99a5b33;border-radius:50%;position:absolute;inset:7%}.touch-joystick:after{content:"";z-index:0;background:linear-gradient(#91dbc71f,#91dbc71f) 50%/1px 40% no-repeat,linear-gradient(90deg,#91dbc71f,#91dbc71f) 50%/40% 1px no-repeat;position:absolute;inset:0}.touch-joystick-ring{z-index:1;border:1px dashed #91dbc747;border-radius:50%;position:absolute;inset:19%}.touch-joystick-knob{aspect-ratio:1;z-index:2;will-change:transform;background:radial-gradient(circle at 38% 34%,#e7eee9b8,#6fc6b094 26%,#18433feb 72%);border:1px solid #e7eee99e;border-radius:50%;width:38%;transition:box-shadow .1s,border-color .1s;position:absolute;top:31%;left:31%;box-shadow:inset 0 0 0 .18rem #070b0d52,0 0 1rem #6fc6b057}.touch-joystick-knob:after{content:"";border-top:1px solid #e7eee9ad;border-radius:50%;position:absolute;inset:22%;transform:rotate(-35deg)}.touch-joystick>small{z-index:3;color:#a9b8b3cc;letter-spacing:.22em;text-shadow:0 1px 3px #000;font-size:.55rem;position:absolute;bottom:-1.05rem;left:50%;transform:translate(-50%)}.touch-joystick.is-active{opacity:1;border-color:#91dbc7c7;box-shadow:inset 0 0 1.8rem #6fc6b029,0 0 1.4rem #6fc6b038}.touch-joystick.is-active .touch-joystick-ring{animation:1.8s linear infinite joystick-orbit}.touch-joystick.is-active .touch-joystick-knob{border-color:var(--mist-100);box-shadow:inset 0 0 0 .18rem #070b0d47,0 0 1.5rem #91dbc7d1}.touch-actions{right:max(.65rem, env(safe-area-inset-right));bottom:max(.7rem, env(safe-area-inset-bottom));grid-template-rows:repeat(2,clamp(4.15rem,13.5vh,4.8rem));grid-template-columns:repeat(2,clamp(4.15rem,13.5vh,4.8rem));gap:clamp(.45rem,1.5vh,.7rem);display:grid;position:absolute;transform:rotate(-7deg)}.touch-actions:before{content:"";z-index:-1;border-bottom:1px solid #b99a5b24;border-right:1px solid #b99a5b33;border-radius:50%;position:absolute;inset:-.55rem;transform:rotate(10deg)}.touch-action,.touch-pause{pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:radial-gradient(circle at 42% 34%,#253033c2,#070b0de0 72%);border:1px solid #a9b8b357;border-radius:50%;transition:transform 80ms,border-color 80ms,box-shadow 80ms,background 80ms;position:relative;overflow:hidden;box-shadow:inset 0 0 0 .2rem #11191bb8,inset 0 -.45rem 1rem #0000003d,0 .45rem 1.25rem #00000061}.touch-action{place-content:center;gap:.08rem;display:grid;transform:rotate(7deg)}.touch-action:before,.touch-pause:before{content:"";opacity:.14;pointer-events:none;border:1px solid;border-radius:50%;position:absolute;inset:.28rem}.touch-action:after,.touch-pause:after{content:"";opacity:0;pointer-events:none;border:1px solid;border-radius:50%;position:absolute;inset:46%}.touch-action b{font-size:clamp(1rem,3.4vh,1.3rem);font-weight:500;line-height:1}.touch-action small{color:var(--mist-300);letter-spacing:.1em;text-shadow:0 1px 2px #000;font:.48rem/1 system-ui,sans-serif}.touch-action.is-attack{color:#f0b2a5;border-color:#d06451b8;transform:rotate(7deg)scale(1.1);box-shadow:inset 0 0 0 .2rem #11191bb8,inset 0 -.45rem 1rem #0000003d,0 0 1rem #b845351f}.touch-action.is-sword,.touch-action.is-step{color:var(--jade-300);border-color:#6fc6b0a3}.touch-action.is-dodge{color:var(--gold-400);border-color:#b99a5b85}.touch-action.is-pressed,.touch-pause.is-pressed{background:radial-gradient(circle,#e7eee93d,#245f58c7);border-color:currentColor;transform:rotate(7deg)scale(.9);box-shadow:inset 0 0 1rem,0 0 1.25rem #91dbc752}.touch-action.is-pressed:after,.touch-pause.is-pressed:after{animation:.26s ease-out both touch-ripple}.touch-action:focus-visible,.touch-pause:focus-visible{outline:2px solid var(--mist-100);outline-offset:3px}.touch-pause{aspect-ratio:1;width:2.5rem;right:max(.8rem, env(safe-area-inset-right));top:max(.65rem, env(safe-area-inset-top));color:var(--mist-300);letter-spacing:-.08em;place-items:center;font:700 .72rem/1 system-ui,sans-serif;display:grid;position:absolute}.touch-pause.is-pressed{transform:scale(.92)}.rotate-notice{display:none}.command-rail{background:#070b0dc7;border:1px solid #a9b8b326;border-top-color:#b99a5b4d;grid-template-columns:minmax(11rem,1fr) auto;gap:1.25rem;min-height:3.75rem;padding:.45rem .7rem}.objective{min-width:0;color:var(--gold-400);letter-spacing:.1em;align-items:center;gap:.65rem;font-size:.78rem;display:flex}.objective b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.objective-mark{aspect-ratio:1;border:1px solid;width:.55rem;transform:rotate(45deg);box-shadow:0 0 .6rem #b99a5b66}.command-list{color:var(--mist-300);align-items:center;gap:.4rem;font:.66rem/1.2 system-ui,sans-serif;display:flex}.command-item{white-space:nowrap;border:1px solid #0000;align-items:center;gap:.32rem;padding:.25rem .38rem;display:inline-flex}.command-item.is-core{color:var(--mist-100);background:#245f582e;border-color:#6fc6b02e}.command-item.is-core kbd{color:var(--jade-300);border-color:#6fc6b07a}.command-item.is-utility{color:#a9b8b3b3}kbd{min-width:2rem;min-height:1.4rem;color:var(--mist-100);background:#11191be0;border:1px solid #a9b8b34d;border-bottom-color:#a9b8b394;place-items:center;padding:.2rem .4rem;font:700 .6rem/1 system-ui,sans-serif;display:inline-grid}.screen-overlay{z-index:15;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#040708d6;place-items:center;display:grid;position:fixed;inset:0}:is(body:has(#title-screen:not([hidden])) .top-rail,body:has(#title-screen:not([hidden])) .command-rail){opacity:0}.upgrade-screen{padding:max(1.5rem, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.5rem, env(safe-area-inset-left));background:radial-gradient(circle at 50% 45%,#245f583d,#0000 30rem),#040708d6}.upgrade-panel{width:min(68rem,100%)}.upgrade-heading{text-align:center;margin:0 auto 1.5rem}.upgrade-heading .eyebrow{margin-bottom:.45rem}.upgrade-heading h2{color:var(--mist-100);letter-spacing:.2em;margin:0;font-size:clamp(1.75rem,4vw,2.8rem);font-weight:400}.upgrade-heading>p:last-child{color:var(--mist-300);letter-spacing:.08em;margin:.65rem 0 0;font:.76rem/1.6 system-ui,sans-serif}.upgrade-grid{grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr));gap:.9rem;display:grid}.upgrade-card{min-height:18rem;color:var(--mist-100);text-align:left;cursor:pointer;background:linear-gradient(150deg,#141f21fa,#070b0dfa);border:1px solid #a9b8b342;border-top-color:#cfb77794;grid-template-rows:auto auto auto 1fr auto;align-content:start;gap:.55rem;padding:1.3rem;transition:transform .15s,border-color .15s,background .15s;display:grid;position:relative;overflow:hidden}.upgrade-card:after{content:"";pointer-events:none;border:1px solid #6fc6b014;position:absolute;inset:.5rem}.upgrade-card:hover,.upgrade-card:focus-visible{border-color:var(--jade-300);outline:2px solid var(--gold-400);outline-offset:3px;background:linear-gradient(150deg,#1c3734fa,#070b0dfa);transform:translateY(-.25rem)}.upgrade-key{color:#a9b8b38f;letter-spacing:.08em;font:.65rem/1 system-ui,sans-serif;position:absolute;top:.8rem;right:.9rem}.upgrade-glyph{aspect-ratio:1;width:4rem;color:var(--gold-400);border:1px solid #b99a5b7a;place-items:center;font-size:1.45rem;font-weight:400;display:grid}.upgrade-card small{color:var(--jade-300);letter-spacing:.14em;margin-top:.55rem;font:.62rem/1.2 system-ui,sans-serif}.upgrade-card strong{letter-spacing:.18em;font-size:1.45rem;font-weight:400}.upgrade-card p{color:var(--mist-300);margin:0;font:.78rem/1.7 system-ui,sans-serif}.upgrade-action{color:var(--gold-400);border-top:1px solid var(--line);letter-spacing:.16em;align-self:end;padding-top:.65rem;font-size:.72rem}.upgrade-action:after{content:" →";color:var(--jade-300)}.upgrade-hint{color:var(--mist-300);justify-content:center;gap:.4rem;margin:1.2rem 0 0;font:.65rem/1.4 system-ui,sans-serif;display:flex}.title-screen{background:radial-gradient(circle at 66% 43%,#245f582e,#0000 30rem),linear-gradient(100deg,#040708fa 0 38%,#0407087a 70%,#040708d1)}.title-ink{position:absolute;inset:0;overflow:hidden}.title-ink:before{content:"";aspect-ratio:1;opacity:.75;background:repeating-radial-gradient(circle,#0000 0 4rem,#6fc6b013 4.05rem 4.12rem),conic-gradient(from 20deg,#0000,#6fc6b014,#0000 35%);border:1px solid #6fc6b01f;border-radius:50%;width:min(55vw,48rem);position:absolute;top:9%;right:9%;transform:rotate(-12deg)}.title-ink:after{content:"";background:linear-gradient(180deg, transparent, var(--mist-100) 34%, var(--jade-300) 68%, transparent);width:.22rem;height:60vh;position:absolute;top:18%;right:25%;transform:rotate(38deg);box-shadow:0 0 2rem #6fc6b0d9}.title-copy{z-index:1;width:min(68rem,100vw - 3rem);position:relative}.eyebrow{color:var(--gold-400);letter-spacing:.32em;text-transform:uppercase;margin:0 0 .8rem;font-size:.72rem}h1{letter-spacing:.1em;text-shadow:0 0 2rem #6fc6b01f;width:max-content;margin:0;font-size:clamp(4.5rem,10vw,8.5rem);font-weight:400;line-height:.95}.subtitle{color:var(--mist-300);letter-spacing:.3em;margin:1.25rem 0 2.25rem;font-size:1rem}.core-loop{width:max-content;color:var(--mist-300);letter-spacing:.12em;align-items:center;gap:.8rem;margin-bottom:2rem;font-size:.75rem;display:flex}.core-loop span{align-items:center;gap:.45rem;display:flex}.core-loop b{color:var(--jade-300);font-weight:500}.core-loop i{background:var(--line);width:2rem;height:1px}.title-meta{gap:.45rem;width:max-content;margin:-.9rem 0 1.35rem;display:flex}.title-meta span{color:#e7eee9b8;letter-spacing:.12em;background:#11191b9e;border:1px solid #a9b8b333;padding:.28rem .5rem;font:.6rem/1.2 system-ui,sans-serif}.run-config{grid-template-columns:1fr 1fr auto;gap:.5rem;width:min(35rem,100%);margin-bottom:.55rem;display:grid}.run-config label{min-height:2.75rem;color:var(--mist-300);border:1px solid var(--line);letter-spacing:.08em;background:#11191bc2;align-items:center;gap:.55rem;padding:.45rem .65rem;font:.65rem/1.2 system-ui,sans-serif;display:flex}.run-config select{min-width:0;color:var(--mist-100);background:var(--ink-900);font:inherit;border:0;flex:1}.daily-toggle{cursor:pointer}.daily-toggle input{accent-color:var(--jade-400)}.daily-note{color:#91dbc7b8;letter-spacing:.06em;min-height:1rem;margin:0 0 .7rem;font:.6rem/1.35 system-ui,sans-serif}.title-actions{align-items:stretch;gap:.6rem;display:flex}.title-actions .secondary-button{min-width:7rem}.primary-button,.secondary-button,.text-button{cursor:pointer;border:0}.primary-button{color:#08110f;background:var(--jade-300);border-left:3px solid var(--mist-100);clip-path:polygon(0 0,calc(100% - .8rem) 0,100% 50%,calc(100% - .8rem) 100%,0 100%);letter-spacing:.15em;justify-content:center;align-items:center;gap:1.5rem;min-width:14rem;padding:.9rem 1.25rem;font-weight:700;transition:all .15s;display:inline-flex}.primary-button:hover,.primary-button:focus-visible{background:var(--mist-100);outline:2px solid var(--gold-400);outline-offset:3px;transform:translate(.25rem)}.primary-button:disabled{cursor:progress;filter:saturate(.25);opacity:.56;transform:none}.primary-button small{opacity:.65;font:.62rem/1 system-ui,sans-serif}.load-status{min-height:1.4em;color:var(--mist-300);letter-spacing:.14em;margin:10px 0 0;font-size:12px}.load-status[data-state=ready]{color:var(--jade-300)}.load-status[data-state=error]{color:var(--cinnabar-400)}.route-badge{color:var(--gold-400);white-space:nowrap;border-left:1px solid #cfb7776b;margin-left:6px;padding-left:10px;font-size:11px;font-weight:600}.build-note{color:#a9b8b385;letter-spacing:.08em;margin-top:1rem;font:.66rem/1.2 system-ui,sans-serif}.profile-screen{padding:1rem}.profile-panel{background:linear-gradient(160deg,#111c1efc,#05090bfc);border:1px solid #cfb7777a;grid-template-rows:auto minmax(0,1fr) auto;width:min(58rem,100vw - 2rem);max-height:min(48rem,100vh - 2rem);padding:1.4rem;display:grid;box-shadow:0 2rem 6rem #000}.profile-heading{text-align:center}.profile-heading h2{letter-spacing:.24em;margin:0 0 1rem;font-size:2rem;font-weight:400}.profile-scroll{overscroll-behavior:contain;min-height:0;padding:.2rem .4rem 1rem;overflow:auto}.profile-stats{border:1px solid var(--line);grid-template-columns:repeat(5,1fr);margin:0 0 1rem;display:grid}.profile-stats div{text-align:center;padding:.7rem}.profile-stats div+div{border-left:1px solid var(--line)}.profile-stats dt{color:var(--mist-300);font-size:.65rem}.profile-stats dd{color:var(--gold-400);margin:.35rem 0 0;font:600 1rem/1 system-ui,sans-serif}.profile-section{margin-top:1rem}.profile-section h3{color:var(--mist-100);letter-spacing:.14em;margin:0 0 .55rem;font-size:.78rem;font-weight:500}.codex-grid{grid-template-columns:repeat(4,1fr);gap:.35rem;display:grid}.codex-grid span{border:1px solid var(--line);min-height:2.2rem;color:var(--jade-300);text-align:center;background:#245f581f;place-items:center;padding:.35rem;font:.64rem/1.3 system-ui,sans-serif;display:grid}.codex-grid .is-unknown{color:#a9b8b361;filter:grayscale();background:#070b0d80}.recent-runs{grid-template-columns:repeat(2,1fr);gap:.3rem;display:grid}.recent-runs p{color:var(--mist-300);border-left:2px solid var(--line);background:#070b0d70;margin:0;padding:.45rem .6rem;font:.62rem/1.35 system-ui,sans-serif}.recent-runs .is-win{border-left-color:var(--jade-400)}.recent-runs .is-loss{border-left-color:var(--cinnabar-400)}.profile-panel>.primary-button{margin:.85rem auto 0}.modal-panel{text-align:center;background:linear-gradient(#121c1efc,#070b0dfc);border:1px solid #a9b8b347;border-top:2px solid #b99a5bb8;width:min(27rem,100vw - 2rem);padding:2.5rem;box-shadow:0 2rem 6rem #000}.modal-panel h2{letter-spacing:.22em;margin:0 0 1.5rem;font-size:2rem;font-weight:400}.modal-panel .primary-button{margin:0 auto}.setting-row{grid-template-columns:1fr 1fr;gap:.65rem;margin-top:1.25rem;display:grid}.secondary-button{color:var(--mist-300);border:1px solid var(--line);background:#2530337a;padding:.65rem;font-size:.75rem}.text-button{color:var(--mist-300);text-underline-offset:.3rem;background:0 0;margin-top:1.25rem;text-decoration:underline}.result-panel>p:nth-of-type(2){color:var(--mist-300)}.result-insight{color:var(--jade-300);letter-spacing:.08em;margin:.7rem 0 0;font-size:.72rem}.result-build{color:var(--gold-400);letter-spacing:.08em;margin:.55rem 0 0;font-size:.7rem}.result-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:1.5rem 0;display:grid}.result-stats div{padding:.9rem 0}.result-stats div+div{border-left:1px solid var(--line)}.result-stats dt{color:var(--mist-300);letter-spacing:.12em;font-size:.68rem}.result-stats dd{color:var(--gold-400);margin:.35rem 0 0;font:600 1.2rem/1 system-ui,sans-serif}.result-panel{width:min(34rem,100vw - 2rem);padding-block:2rem}.playtest-details{text-align:left;background:#070b0d61;border:1px solid #a9b8b32e;margin:-.35rem 0 1.15rem}.playtest-details summary{color:#a9b8b3c2;cursor:pointer;letter-spacing:.1em;padding:.62rem .8rem;font:.68rem/1.2 system-ui,sans-serif}.playtest-details summary::marker{color:var(--jade-400)}.playtest-details summary:focus-visible{outline:2px solid var(--jade-300);outline-offset:2px}.playtest-summary{text-align:left;border-top:1px solid var(--line);background:#2530333d;margin:0;padding:.85rem}.playtest-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.playtest-heading strong{color:var(--mist-100);letter-spacing:.1em;font:600 .76rem/1.2 system-ui,sans-serif}.playtest-heading span,.copy-status{color:var(--mist-300);font:.65rem/1.3 system-ui,sans-serif}.playtest-summary p{color:var(--jade-300);margin:.7rem 0;font:.68rem/1.5 system-ui,sans-serif}.playtest-summary .secondary-button{padding:.5rem .65rem}.copy-status{margin-left:.55rem}.playtest-export{resize:vertical;width:100%;height:5.5rem;color:var(--mist-100);border:1px solid var(--line);background:#070b0d;margin-top:.7rem;padding:.55rem;font:.62rem/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.playtest-export:focus{outline:2px solid var(--jade-300);outline-offset:2px}@keyframes sigil-pulse{50%{box-shadow:0 0 1.5rem #b8453547}}@keyframes danger-breathe{50%{opacity:.35}}@keyframes joystick-orbit{to{transform:rotate(360deg)}}@keyframes touch-ripple{0%{opacity:.8;inset:46%}to{opacity:0;inset:8%}}@keyframes title-orbit{50%{opacity:.95;transform:rotate(-7deg)scale(1.025)}}body.has-touch-controls .game-shell{min-height:0;display:block}body.has-touch-controls .game-frame{width:min(100vw,176.47dvh);max-width:none;height:min(100dvh,56.6669vw);max-height:none;margin:auto}body.has-touch-controls .top-rail{width:min(100vw,176.47dvh);min-width:0;max-width:none;height:3.35rem;top:env(safe-area-inset-top);z-index:13;filter:drop-shadow(0 .35rem .55rem #00000047);pointer-events:none;background:linear-gradient(#070b0df0,#070b0da3 62%,#070b0d00);border:0;padding:.35rem 3.6rem .4rem .65rem;position:absolute;left:50%;transform:translate(-50%)}body.has-touch-controls .top-rail:after,body.has-touch-controls .command-rail,body.has-touch-controls .crest{display:none}body.has-touch-controls .meters{width:min(13rem,27vw)}body.has-touch-controls .meter-row{grid-template-columns:2.25rem 1fr;gap:.3rem}body.has-touch-controls .meter{border-color:#a9b8b34d;height:.68rem;box-shadow:inset 0 0 .45rem #0009}body.has-touch-controls .health-meter i{box-shadow:0 0 .7rem #d0645157}body.has-touch-controls .intent-meter i{box-shadow:0 0 .7rem #6fc6b047}body.has-touch-controls .encounter-title{min-width:8rem;padding-inline:.65rem}body.has-touch-controls .encounter-title strong{text-shadow:0 0 .8rem #b99a5b52}body.has-touch-controls .sword-copy{min-width:4.8rem}body.has-touch-controls .sword-copy span{display:none}body.has-touch-controls .sword-sigil{width:2.4rem}body.has-touch-controls #game-root canvas{cursor:default}body.has-touch-controls .tutorial-card{background:linear-gradient(90deg,#070b0df0,#11191bd1 72%,#245f585c);width:min(22rem,52%);padding:.55rem .75rem;bottom:5%;left:50%;box-shadow:0 .65rem 1.8rem #00000047,inset 0 1px #e7eee90a}body.has-touch-controls .tutorial-card kbd{color:var(--jade-300);background:#245f583d;border-color:#6fc6b07a;box-shadow:0 0 .65rem #6fc6b01f}body.has-touch-controls .game-frame:has(.tutorial-card:not([hidden])) .action-toast{bottom:27%}body.has-touch-controls .title-ink:before{animation:6s ease-in-out infinite title-orbit}body.has-touch-controls .build-strip{left:max(.65rem, env(safe-area-inset-left));top:3.4rem}body.has-touch-controls .build-strip>div{max-width:54vw}body.has-touch-controls .build-strip b{font-size:.52rem}body.has-touch-controls .combo-indicator{bottom:29%}@media (orientation:portrait){body.has-touch-controls .rotate-notice{z-index:40;text-align:center;background:radial-gradient(circle at 50% 45%,#245f5847,#0000 19rem),#070b0d;place-content:center;justify-items:center;gap:.8rem;padding:2rem;display:grid;position:fixed;inset:0}.rotate-notice span{color:var(--jade-300);font:300 4rem/1 system-ui,sans-serif}.rotate-notice strong{color:var(--gold-400);letter-spacing:.2em;font-size:1.35rem;font-weight:500}.rotate-notice small{max-width:17rem;color:var(--mist-300);letter-spacing:.08em;font:.78rem/1.7 system-ui,sans-serif}}@media (height<=500px) and (orientation:landscape){body.has-touch-controls .title-copy{width:min(56rem,100vw - 3rem)}body.has-touch-controls h1{font-size:clamp(2.7rem,11vh,3.8rem)}body.has-touch-controls .eyebrow{margin-bottom:.4rem}body.has-touch-controls .subtitle{display:none}body.has-touch-controls .core-loop{margin:.5rem 0;font-size:.58rem}body.has-touch-controls .title-meta{display:none}body.has-touch-controls .run-config{width:min(34rem,100%);margin-bottom:.3rem}body.has-touch-controls .run-config label{min-height:2.15rem;padding:.3rem .5rem;font-size:.58rem}body.has-touch-controls .daily-note{margin-bottom:.35rem;font-size:.54rem}body.has-touch-controls .title-actions{gap:.4rem}body.has-touch-controls .primary-button{min-width:12rem;padding:.65rem 1rem}body.has-touch-controls .load-status{margin-top:.35rem;font-size:.56rem}body.has-touch-controls .build-note{margin:.3rem 0 0}body.has-touch-controls .modal-panel{padding:1rem 1.25rem}body.has-touch-controls .modal-panel h2{margin-bottom:.65rem;font-size:1.45rem}body.has-touch-controls .setting-row,body.has-touch-controls .text-button{margin-top:.65rem}body.has-touch-controls .result-panel{width:min(32rem,100vw - 2rem)}body.has-touch-controls .result-stats{margin:.55rem 0}body.has-touch-controls .result-stats div{padding:.55rem 0}body.has-touch-controls .playtest-details{display:none}body.has-touch-controls .upgrade-screen{padding:max(.7rem, env(safe-area-inset-top)) max(.9rem, env(safe-area-inset-right)) max(.7rem, env(safe-area-inset-bottom)) max(.9rem, env(safe-area-inset-left))}body.has-touch-controls .upgrade-heading{margin-bottom:.65rem}body.has-touch-controls .upgrade-heading h2{font-size:1.45rem}body.has-touch-controls .upgrade-heading>p:last-child{margin-top:.25rem;font-size:.64rem}body.has-touch-controls .upgrade-grid{grid-template-columns:repeat(3,1fr);gap:.6rem}body.has-touch-controls .upgrade-card{gap:.3rem;height:min(15rem,60vh);min-height:0;padding:.75rem}body.has-touch-controls .upgrade-glyph{width:2.4rem;font-size:1rem}body.has-touch-controls .upgrade-card small{margin-top:.2rem;font-size:.52rem}body.has-touch-controls .upgrade-card strong{font-size:1.05rem}body.has-touch-controls .upgrade-card p{font-size:.62rem;line-height:1.45}body.has-touch-controls .upgrade-action{align-items:center;min-height:2.75rem;padding-top:.35rem;font-size:.62rem;display:flex}body.has-touch-controls .upgrade-hint{display:none}body.has-touch-controls .profile-screen{padding:max(.5rem, env(safe-area-inset-top)) max(.7rem, env(safe-area-inset-right)) max(.5rem, env(safe-area-inset-bottom)) max(.7rem, env(safe-area-inset-left))}body.has-touch-controls .profile-panel{width:100%;height:calc(100vh - 1rem);max-height:calc(100dvh - 1rem);padding:.75rem}body.has-touch-controls .profile-heading .eyebrow{display:none}body.has-touch-controls .profile-heading h2{margin-bottom:.55rem;font-size:1.4rem}body.has-touch-controls .profile-stats{margin-bottom:.55rem}body.has-touch-controls .profile-stats div{padding:.45rem}body.has-touch-controls .profile-section{margin-top:.6rem}body.has-touch-controls .codex-grid{grid-template-columns:repeat(4,1fr)}body.has-touch-controls .profile-panel>.primary-button{margin-top:.45rem;padding-block:.5rem}}@media (width<=900px){:root{--frame-width:calc(100vw - 1rem)}.game-shell{grid-template-rows:4.7rem minmax(0,1fr) 4.2rem}.top-rail,.command-rail{min-width:0;max-width:calc(100vw - 1rem)}.top-rail{gap:.5rem}.crest{display:none}.meters{width:28vw}.meter-row{grid-template-columns:2.3rem 1fr;gap:.3rem}.encounter-title{min-width:9rem}.sword-copy{min-width:5rem}.sword-copy span{display:none}.sword-sigil{width:2.7rem}.game-frame{max-width:calc(100vw - 1rem);max-height:calc(100vh - 8.9rem)}.command-rail{padding:.55rem 0;display:block}.command-list{scrollbar-width:none;gap:.45rem;margin-top:.35rem;overflow-x:auto}.command-list span:nth-last-child(-n+2){display:none}.tutorial-card{bottom:5%}kbd{min-height:1.25rem}.title-copy{width:calc(100vw - 2rem)}.core-loop{gap:.4rem;font-size:.65rem}.core-loop i{width:.8rem}.title-meta{margin-top:-.6rem}}@media (width<=520px){.game-shell{grid-template-rows:4.5rem minmax(0,1fr) 4.1rem;min-height:0}.top-rail{grid-template-columns:1fr auto auto}.meter-label,.encounter-title small,.sword-copy small{display:none}.meter-row{grid-template-columns:1fr}.meters{width:32vw}.encounter-title{min-width:7rem}.encounter-title strong{font-size:.8rem}.sword-copy{min-width:3.2rem}.sword-copy strong{font-size:.75rem}.sword-sigil{width:2.25rem}.sword-sigil i{height:1.45rem}.game-frame{max-height:calc(100vh - 8.6rem)}.objective{font-size:.72rem}.command-list{font-size:.6rem}.command-list span:nth-child(n+4){display:none}.tutorial-card{padding:.55rem .7rem;bottom:4%}.game-frame:has(.tutorial-card:not([hidden])) .action-toast{bottom:43%}.tutorial-card>span{margin-bottom:.3rem}.tutorial-card strong{font-size:.7rem}h1{font-size:clamp(3.8rem,20vw,5.2rem)}.result-panel{padding:1.25rem}.result-panel h2{margin-bottom:.75rem}.result-stats{margin:.9rem 0}.playtest-heading{display:block}.playtest-heading span{margin-top:.3rem;display:block}.subtitle{letter-spacing:.16em;font-size:.78rem}.core-loop{gap:.35rem;display:grid}.core-loop i{display:none}.title-meta{flex-wrap:wrap;width:min(18rem,100%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
