:root{--void:#04040c;--ink:#f4f6ff;--magicite:#7dffb0;--esper:#ff8ee0;--ember:#ffc86b;--window-top:#5767d8;--window-mid:#2a389e;--window-bottom:#0d1560;--window-edge:#e9ecf7;--window-ink-shadow:2px 2px 0 #0a0c3a;--px:0;--py:0}body{background:var(--void);color:var(--ink);font-family:Pixelify Sans,ui-monospace,monospace;min-height:100svh;overflow-x:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}img{-webkit-user-drag:none}::selection{background:var(--esper);color:var(--void)}.airships,.battle-flash,.mode7,.nebula,.scanlines,.sky,.summon-dim{pointer-events:none;position:fixed}.sky{height:100%;width:100%}.airships,.sky{inset:0;z-index:0}.airships{overflow:hidden}.airship{filter:drop-shadow(0 6px 6px rgba(0,0,0,.45));image-rendering:pixelated;left:0;position:absolute;top:0;will-change:transform}.nebula{animation:nebula-drift 40s ease-in-out infinite alternate;background:radial-gradient(ellipse 55% 45% at 82% 18%,rgba(255,142,224,.13),transparent 70%),radial-gradient(ellipse 50% 40% at 8% 62%,rgba(125,255,176,.09),transparent 70%),radial-gradient(ellipse 80% 45% at 50% 108%,rgba(87,103,216,.32),transparent 70%);inset:0;z-index:0}.mode7{animation:mode7 2.4s linear infinite;background-image:linear-gradient(rgba(143,182,255,.42) 2px,transparent 0),linear-gradient(90deg,rgba(143,182,255,.42) 2px,transparent 0);background-size:72px 72px;bottom:0;height:50vh;left:-50%;-webkit-mask-image:linear-gradient(0deg,#000 5%,transparent 80%);mask-image:linear-gradient(0deg,#000 5%,transparent 80%);right:-50%;transform:perspective(38vh) rotateX(64deg);transform-origin:50% 100%;z-index:1}.summon-dim{background:#000;inset:0;opacity:0;transition:opacity .3s;z-index:1}.is-summoning .summon-dim{opacity:.7}.scanlines{background:repeating-linear-gradient(180deg,transparent 0 2px,#000 2px 3px);inset:0;opacity:.12;z-index:3}.battle-flash{animation:intro-flash .75s ease-out;background:#fff;inset:0;opacity:0;z-index:4}.battle-flash.is-casting{animation:cast-flash .45s ease-out}.battle-flash.is-encounter{animation:intro-flash .75s ease-out}.battle-flash.is-golden{animation:cast-flash .9s ease-out;background:#ffe27a}@keyframes nebula-drift{to{transform:scale(1.12) translate3d(-2%,2%,0)}}@keyframes mode7{to{background-position:0 72px}}@keyframes intro-flash{0%{opacity:1}20%{opacity:0}32%{opacity:.85}55%,to{opacity:0}}@keyframes cast-flash{15%{opacity:.9}to{opacity:0}}.scene{animation:battle-in 1.1s cubic-bezier(.2,.7,.2,1) both;box-sizing:border-box;display:grid;grid-template-rows:auto 1fr auto auto;margin:0 auto;max-width:72rem;min-height:100svh;padding-block:clamp(1.75rem,6vh,4rem) .5rem;padding-inline:1rem;position:relative;-webkit-user-select:none;user-select:none;z-index:2;-webkit-touch-callout:none}@media (min-width:640px){.scene{padding-inline:2rem}}@keyframes battle-in{0%{filter:blur(16px) brightness(2.5);opacity:0;transform:scale(1.35)}40%{opacity:1}to{filter:none;opacity:1;transform:none}}.credits{color:rgba(244,246,255,.4);font-size:.7rem;padding-top:.75rem;text-align:center;-webkit-user-select:text;user-select:text}.credits a{text-decoration:underline}.title{font-family:Cinzel,Trajan Pro,Georgia,serif;font-size:clamp(2.4rem,9vw,7rem);font-weight:900;justify-self:center;letter-spacing:.04em;line-height:1.05;position:relative;text-align:center;text-transform:uppercase}.title__text{background:linear-gradient(180deg,#fff,#e3e9ff 36%,#7f8fd0 50%,#f6f8ff 54%,#aab8ea 80%,#fff);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 #141a52) drop-shadow(0 0 22px rgba(143,182,255,.35))}.title:after{animation:glint 7s ease-in-out 1.2s infinite;background:linear-gradient(105deg,transparent 44%,hsla(0,0%,100%,.95) 50%,transparent 56%);-webkit-background-clip:text;background-clip:text;background-position:150% 0;background-size:300% 100%;color:transparent;content:attr(data-text);inset:0;pointer-events:none;position:absolute}@keyframes glint{0%{background-position:150% 0}22%,to{background-position:-50% 0}}.stage{--pixel:1.25px;min-height:clamp(15rem,44vh,32rem);position:relative}@media (min-width:640px){.stage{--pixel:1.75px}}@media (min-width:1100px) and (min-height:760px){.stage{--pixel:2.5px}}.stage.is-shaking{animation:shake .5s steps(6) 2}@keyframes shake{25%{transform:translate(-6px,3px)}50%{transform:translate(5px,-4px)}75%{transform:translate(-3px,-2px)}}.crystal{color:var(--c);left:var(--x);position:absolute;top:var(--y);-webkit-tap-highlight-color:transparent;transform:translate3d(calc(var(--px)*var(--depth)*1px),calc(var(--py)*var(--depth)*1px),0);transition:transform .6s ease-out;user-select:none}.crystal__float{animation:float var(--float,6s) ease-in-out var(--delay,0s) infinite;position:relative}.crystal__float:before{animation:rays 40s linear infinite;aspect-ratio:1;background:repeating-conic-gradient(color-mix(in srgb,currentColor 45%,transparent) 0 3deg,transparent 3deg 30deg);content:"";left:50%;-webkit-mask-image:radial-gradient(circle,#000 10%,transparent 62%);mask-image:radial-gradient(circle,#000 10%,transparent 62%);opacity:.45;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .4s;width:320%}.crystal img{display:block;filter:hue-rotate(var(--hue)) drop-shadow(0 0 6px var(--c)) drop-shadow(0 0 16px var(--c));height:calc(var(--crystal-scale)*32*var(--pixel)/2.5);image-rendering:pixelated;position:relative;transition:filter .4s;width:calc(var(--crystal-scale)*16*var(--pixel)/2.5)}.crystal.is-lit img{filter:hue-rotate(var(--hue)) brightness(1.6) drop-shadow(0 0 10px var(--c)) drop-shadow(0 0 34px var(--c))}.crystal.is-lit .crystal__float:before{animation-duration:5s;opacity:1}@keyframes float{50%{transform:translateY(-12px)}}@keyframes rays{to{transform:translate(-50%,-50%) rotate(1turn)}}.message-window{left:50%;max-width:92%;padding:.45rem 1.4rem;position:absolute;top:0;transform:translateX(-50%);visibility:hidden;white-space:nowrap;width:max-content;z-index:5}.message-window.is-open{visibility:visible}.enemies{align-items:flex-end;bottom:6%;display:flex;gap:1.25rem;left:clamp(0%,4vw,6%);position:absolute}.enemy{animation:enemy-in .6s steps(6) both;position:relative}.enemy:nth-child(2){margin-bottom:2rem}.is-targeting .enemy,.is-targeting .party-member{cursor:pointer}.enemy img{display:block;filter:drop-shadow(0 6px 0 rgba(0,0,0,.35));height:calc(var(--h)*var(--pixel)*var(--scale, 1)*var(--fit, 1));image-rendering:pixelated;width:calc(var(--w)*var(--pixel)*var(--scale, 1)*var(--fit, 1))}.enemy--float img{animation:hover-bob 2.4s ease-in-out infinite}.enemy.is-hit img{animation:hit-blink .36s steps(1) 2}.enemy.is-attacking img{animation:attack-flash .25s steps(1) 2}.enemy.is-revived{animation:enemy-in .6s steps(6) both}.enemy.is-dead{animation:enemy-die .9s steps(9) forwards;pointer-events:none}@keyframes enemy-in{0%{filter:brightness(4);opacity:0}}@keyframes hover-bob{50%{transform:translateY(-6px)}}@keyframes hit-blink{50%{opacity:0}}@keyframes attack-flash{50%{filter:brightness(3)}}@keyframes enemy-die{30%{clip-path:inset(0 0 0 0);filter:brightness(1.2) sepia(1) saturate(6) hue-rotate(230deg);opacity:1}to{clip-path:inset(100% 0 0 0);filter:brightness(1.2) sepia(1) saturate(6) hue-rotate(230deg);opacity:0}}.party{align-items:end;bottom:6%;display:grid;gap:calc(var(--pixel)*2) calc(var(--pixel)*6);grid-template-columns:repeat(2,auto);justify-items:end;position:absolute;right:clamp(2%,8vw,12%);transition:transform .6s steps(8)}.party-member:nth-child(2n){margin-top:calc(var(--pixel)*18)}.party.is-fleeing{transform:translateX(120vw)}.party-member{align-items:end;display:grid;height:calc(var(--pixel)*52);justify-items:end;position:relative;width:calc(var(--pixel)*52)}.party.is-fleeing .party-member{transform:scaleX(-1)}.party-member--companion{animation:enemy-in .6s steps(6) both}.party-member{transition:translate .15s steps(2)}.party-member.is-turn{translate:calc(var(--pixel)*-8) 0}.party-member.is-leaving{animation:enemy-die .9s steps(9) forwards}.party-member img{animation:idle 1.2s steps(1) infinite;filter:drop-shadow(0 0 12px rgba(125,255,176,.2));height:calc(var(--h)*var(--pixel));image-rendering:pixelated;position:relative;width:calc(var(--w)*var(--pixel));z-index:1}.party-member[data-pose=victory] img{animation:cheer .5s steps(1) infinite}.party-member[data-pose=dead] img,.party-member[data-pose=wounded] img{animation:none}.party-member.is-acting img{animation:step-in .45s steps(3)}.party-shadow{background:rgba(0,0,0,.6);border-radius:50%;bottom:calc(var(--pixel)*-2);filter:blur(2px);height:calc(var(--pixel)*5);position:absolute;right:calc(var(--pixel)*2);width:calc(var(--pixel)*30)}@keyframes idle{50%{transform:translateY(-2px)}}@keyframes cheer{50%{transform:translateY(calc(var(--pixel)*-4))}}@keyframes step-in{40%,70%{transform:translateX(calc(var(--pixel)*-12))}}.damage{animation:damage-bounce .9s ease-out forwards;color:#fff;font-size:clamp(1.2rem,2.6vw,1.75rem);font-weight:600;pointer-events:none;position:absolute;text-shadow:2px 2px 0 #0a0c3a,-1px -1px 0 #0a0c3a,1px -1px 0 #0a0c3a,-1px 1px 0 #0a0c3a;transform:translateX(-50%);z-index:6}.damage--heal{color:#8dffb0}.stage .target-hand{height:calc(var(--pixel)*14);left:0;min-height:22px;min-width:32px;pointer-events:none;position:absolute;top:0;width:calc(var(--pixel)*20);z-index:7}.crystal{z-index:0}.enemies,.party{z-index:1}.target-hand.is-shown{animation:hand-bob .5s steps(2) infinite;opacity:1}.target-hand.is-shown.is-multi{animation:hand-blink .4s steps(1) infinite}@keyframes hand-blink{50%{opacity:.2}}@keyframes damage-bounce{0%{transform:translate(-50%)}20%{transform:translate(-50%,-24px)}35%{transform:translate(-50%)}45%{transform:translate(-50%,-8px)}55%{transform:translate(-50%)}85%{opacity:1}to{opacity:0;transform:translate(-50%)}}.battle{display:grid;gap:.5rem}.ff-window{background:linear-gradient(180deg,var(--window-top),var(--window-mid) 45%,var(--window-bottom));border:3px solid var(--window-edge);border-radius:7px;box-shadow:0 0 0 2px #05061a,inset 0 0 0 2px #05061a,inset 0 0 0 3px hsla(0,0%,100%,.15),0 18px 50px -18px rgba(87,103,216,.7);color:#fff;font-size:clamp(1.05rem,2.6vw,1.5rem);position:relative;text-shadow:var(--window-ink-shadow)}.help-window{justify-self:start;min-height:calc(1.5em + 1rem + 6px);min-width:min(18rem,100%);padding:.5rem 1.1rem;visibility:hidden}.help-window.is-open{visibility:visible}.battle-ui{display:grid;gap:.5rem;grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.enemy-window{display:none;padding:.8rem 1.1rem}@media (min-width:640px){.battle-on .battle-ui{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.5fr)}.battle-on .enemy-window{display:block}}.enemy-names{display:grid;gap:.3rem}.enemy-names li{display:flex;gap:1rem;justify-content:space-between}.command-slot{display:grid;position:relative}.command-window{padding:.6rem .5rem;transform-origin:50% 100%}.battle-on .command-window{opacity:0;transform:scaleY(0);visibility:hidden}.battle-on.menu-open .command-window.is-current{opacity:1;transform:none;transition:transform .2s steps(4);visibility:visible}.submenu{bottom:0;left:0;min-width:max(100%,15rem);padding:.6rem .5rem;position:absolute;transform:scaleY(0);transform-origin:50% 100%;visibility:hidden;z-index:6}.submenu.is-open{transform:none;transition:transform .2s steps(4);visibility:visible}html:not(.battle-on) .battle-only,html:not(.battle-on) .command-window{display:none}html:not(.battle-on) .submenu[data-menu=launch]{position:static;transform:none;visibility:visible}.mp-line{border-top:1px solid hsla(0,0%,100%,.25);display:flex;justify-content:space-between;margin-top:.3rem;padding:.35rem .4rem 0}.commands{display:grid;gap:.1rem}.command{align-items:center;background:none;border:0;border-radius:4px;color:inherit;cursor:pointer;display:flex;font:inherit;gap:.4rem;outline:none;padding:.25rem .4rem;text-align:left;text-shadow:inherit;white-space:nowrap;width:100%}.command:focus-visible{background:hsla(0,0%,100%,.1)}.command.is-disabled{opacity:.45}.command.is-refusing{animation:refuse .3s steps(4)}@keyframes refuse{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}.item-count{font-variant-numeric:tabular-nums;margin-left:auto;padding-left:1rem}.ff-hand{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' shape-rendering='crispEdges' viewBox='0 0 16 11'%3E%3Cpath fill='%2305060f' d='M2 1h5v1h8v1h1v2h-1v1h-4v1h-1v1H9v1H8v1H2V9H0V2h2z'/%3E%3Cpath fill='%23f2f4ff' d='M3 2h4v1h8v1H9v1h1v1H9v1H8v1H1V3h2z'/%3E%3Cpath fill='%23a9b3d9' d='M3 7h4v1H3zm5-3h1v1H8zm0 2h1v1H8z'/%3E%3C/svg%3E") no-repeat 50% /contain;flex:none;height:19px;image-rendering:pixelated;opacity:0;width:28px}.command.is-active .ff-hand,.command:focus-visible .ff-hand,.command:hover .ff-hand{animation:hand-bob .5s steps(2) infinite;opacity:1}@keyframes hand-bob{50%{transform:translateX(-3px)}}.party-window{align-content:center;display:grid;gap:.6rem;padding:.8rem 1.1rem}.party-row{align-items:center;display:grid;gap:.5rem 1.25rem;grid-template-columns:1fr auto}.party-row.is-critical .party-hp{color:#ffe27a}.party-row.is-down .party-hp,.party-row.is-down .party-name{color:#ff7a6a}.party-hp{font-variant-numeric:tabular-nums;text-align:right}.party-hp small{font-size:inherit;opacity:.7}.atb{background:#05061a;border:2px solid #c9cde0;border-radius:3px;box-shadow:var(--window-ink-shadow);grid-column:1/-1;height:.6em;overflow:hidden;position:relative}.atb__fill{background:linear-gradient(180deg,#fff7c2,#ffc86b 45%,#d98a1f);inset:0 auto 0 0;position:absolute;width:100%}.party-row.is-down .atb__fill{width:0}.party-row.is-ready .atb__fill{animation:atb-ready .6s steps(1) infinite}.party-row.is-ready .party-name{color:var(--ember)}.party-row.is-turn{background:hsla(0,0%,100%,.1);border-radius:4px;box-shadow:0 0 0 4px hsla(0,0%,100%,.1)}@media (min-width:640px){.party-row{grid-template-columns:auto 1fr auto}.atb{grid-column:auto;width:clamp(4rem,9vw,8rem)}}@keyframes atb-charge{0%{width:0}to{width:100%}}@keyframes atb-ready{50%{filter:brightness(1.7)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}.battle-on .command-window.is-current{opacity:1;transform:none;visibility:visible}.enemy.is-dead,.party-member.is-leaving{opacity:0}}.scene{grid-template-rows:auto auto 1fr auto}.stage{height:clamp(15rem,44vh,32rem)}.battle{align-self:end;padding-top:.5rem}.fx{height:100%;inset:0;position:fixed;width:100%;z-index:3}.fx,.scene,.stage{pointer-events:none}.airship,.battle,.credits,.crystal,.enemy,.party-member{pointer-events:auto}.airship{cursor:pointer}.enemy--flip img{transform:scaleX(-1)}.stage.is-quaking{animation:quake .3s steps(4) 4}@keyframes quake{25%{transform:translate(-12px,6px)}50%{transform:translate(10px,-8px)}75%{transform:translate(-6px,-4px)}}.commands{position:relative}.submenu .commands{max-height:11.4em;overflow-y:auto;scrollbar-color:var(--window-edge) transparent;scrollbar-width:thin}.falling-weight{image-rendering:pixelated;pointer-events:none;position:fixed;top:0;z-index:3}.game-over{animation:game-over-in 1.2s ease-out both;background:radial-gradient(ellipse at center,rgba(40,0,10,.78),rgba(0,0,0,.94));display:grid;gap:2rem;inset:0;justify-items:center;place-content:center;position:fixed;z-index:5}.game-over__title{background:linear-gradient(180deg,#fff,#ffb0b0 45%,#8a1020 55%,#ff8080);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 #2a0008);font-family:Cinzel,Trajan Pro,Georgia,serif;font-size:clamp(2.6rem,10vw,6rem);font-weight:900;letter-spacing:.08em;text-transform:uppercase}.game-over__continue{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:.4rem;padding:.6rem 1.4rem .6rem .8rem}.game-over__continue .ff-hand{animation:hand-bob .5s steps(2) infinite;opacity:1}.game-over[hidden]{display:none}@keyframes game-over-in{0%{opacity:0}}.party-window:has(.party-row:nth-child(3)){font-size:clamp(.9rem,1.9vw,1.2rem);gap:.2rem;padding-block:.4rem}.party-window:has(.party-row:nth-child(3)) .atb{height:.5em}.command-slot>.command-window{grid-area:1/1}.party-member{display:block;height:calc(var(--bh, 48)*var(--pixel));width:calc(var(--bw, 32)*var(--pixel))}.party-member img{left:calc(var(--ox, 0)*var(--pixel));max-width:none;position:absolute;top:calc(var(--oy, 0)*var(--pixel))}.party-member .party-shadow{left:calc((var(--fx, 16) - 15)*var(--pixel));right:auto}.party-member--down-swap{cursor:pointer}.stage{--stage-pixel:1.25px}@media (min-width:640px){.stage{--stage-pixel:1.75px}}@media (min-width:1100px) and (min-height:760px){.stage{--stage-pixel:2.5px}}.party{--pixel:calc(var(--stage-pixel)*0.72)}.enemies{--pixel:calc(var(--stage-pixel)*0.75)}.party{align-items:flex-end;bottom:2%;display:flex;flex-direction:column;gap:0}.party-member:nth-child(2n){margin-right:calc(var(--pixel)*16);margin-top:0}.party .party-member+.party-member{margin-top:calc(var(--pixel)*-4)}.enemies{align-content:flex-start;bottom:3%;flex-wrap:wrap-reverse;gap:calc(var(--stage-pixel)*4) calc(var(--stage-pixel)*8);max-width:60%}.enemy:nth-child(2){margin-bottom:0}.party-weapon{height:calc(var(--pixel)*16);image-rendering:pixelated;left:calc((var(--wx, 0) - 13)*var(--pixel));pointer-events:none;position:absolute;top:calc((var(--wy, 0) - 14)*var(--pixel));transform:scaleX(-1) rotate(-20deg);transform-origin:70% 90%;width:calc(var(--pixel)*16);z-index:2}.party-weapon.is-swinging{animation:weapon-swing .36s steps(4) both}@keyframes weapon-swing{0%{transform:scaleX(-1) rotate(-75deg)}to{transform:scaleX(-1) rotate(45deg)}}.credits-link{background:none;border:0;color:inherit;cursor:pointer;font:inherit;padding:.15rem .5rem;text-decoration:underline}.credits-link:focus-visible,.credits-link:hover{color:var(--ink)}.credits-dialog{font-size:clamp(.95rem,1.6vw,1.1rem);height:fit-content;inset:0;margin:auto;max-height:88vh;max-width:min(38rem,92vw);overflow-y:auto;padding:1.25rem 1.5rem;position:fixed;-webkit-user-select:text;user-select:text}.credits-dialog::backdrop{background:rgba(4,4,12,.78)}.credits-dialog__title{color:var(--ember);font-size:1.15em;margin-bottom:.5rem}.credits-dialog__list{display:grid;font-size:.85em;gap:.35rem;line-height:1.35;list-style:disc;margin-bottom:1.1rem;padding-left:1.2rem}.credits-dialog__rumors{font-style:italic;list-style:none;padding-left:0}.credits-dialog a{text-decoration:underline}.credits-dialog__close{width:auto}.credits-dialog__close .ff-hand{opacity:1}