@font-face{font-family:"Titan One";src:url('fonts/titan-one.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Nunito;src:url('fonts/nunito-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Nunito;src:url('fonts/nunito-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url('fonts/plex-mono-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url('fonts/plex-mono-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
:root{color-scheme:dark;--bg:#12061f;--panel:#1a0c36;--line:#5a3d86;--text:#fff7ff;--muted:#eadcf8;--mint:#7dffe0;--pink:#ff4ad8;--cyan:#3ef6ff;--purple:#c9a6ff;--candy:#ff4d8d;--gold:#ffe14a;--display:"Titan One","Arial Black",Impact,sans-serif;--sans:Nunito,"Avenir Next","Segoe UI",sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace;font-family:var(--sans)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--mint);outline-offset:4px}button:disabled{cursor:not-allowed;opacity:.45}button{transition:background .15s,border-color .15s,transform .15s}button:not(:disabled):active{transform:translateY(2px)}[hidden]{display:none!important}.app{max-width:1080px;padding:0 28px;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:27px 0}.brand{color:var(--text);text-decoration:none;font-size:20px;font-weight:700;letter-spacing:.12em;display:flex;gap:12px;align-items:center}.brand small{display:block;font:10px var(--mono),monospace;color:var(--muted);letter-spacing:.22em;margin-top:2px}.moon-mark{font-size:42px;color:var(--mint);line-height:1}.top-actions{display:flex;gap:10px;align-items:center}.prototype,.label,.eyebrow{font:10px var(--mono),monospace;letter-spacing:.12em;color:var(--muted)}.prototype{border:1px solid var(--line);padding:7px 9px;border-radius:5px}.quiet{border:1px solid var(--line);background:transparent;border-radius:7px;padding:9px 12px;font-size:12px}.quiet:hover{background:#ffffff0a}.quiet[aria-pressed=true]{border-color:var(--mint);color:var(--mint)}.game{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--panel);box-shadow:0 24px 100px #0003}.hud{display:grid;grid-template-columns:1fr 90px 1fr;gap:24px;padding:24px 30px 19px;background:#191522}.fighter-info{display:grid;grid-template-columns:1fr auto;gap:10px}.fighter-name .side{display:block;font:9px var(--mono),monospace;letter-spacing:.14em;color:var(--mint);margin-bottom:3px}.fighter-name b{font-size:23px;font-weight:600}.hp-line{align-self:end;white-space:nowrap}.hp-line span{font:18px var(--mono),monospace}.hp-line small{font:10px var(--mono),monospace;color:var(--muted)}.health{height:8px;border-radius:10px;background:#312a3f;grid-column:1/-1;overflow:hidden}.health i{display:block;width:100%;height:100%;background:var(--mint);transition:width .15s}.foe .health i{background:var(--pink)}.foe .side{color:var(--pink)}.round{text-align:center;font:9px var(--mono),monospace;color:var(--muted);letter-spacing:.08em}.round b{display:block;font:27px var(--sans),sans-serif;color:var(--text);line-height:1.3}.round span:last-child{font-size:8px}.scene{position:relative;isolation:isolate;background:#21182e;overflow:hidden}canvas{display:block;width:100%;height:410px}.scene-label{position:absolute;top:17px;left:22px;color:#b6a8cb;font:9px var(--mono),monospace;letter-spacing:.1em;display:flex;gap:7px;align-items:center}.scene-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--mint)}.move-title{position:absolute;top:50px;left:14px;right:14px;text-align:center;pointer-events:none}.move-title span{display:block;font:9px var(--mono),monospace;letter-spacing:.2em;color:#b8a8cd;margin-bottom:5px}.move-title strong{font-size:25px;letter-spacing:-.04em;text-shadow:0 3px 16px #110520}.scene-options{position:absolute;top:14px;right:19px;font-size:11px;color:#b9a9cd}.scene-options label{display:flex;gap:6px;align-items:center;cursor:pointer}.scene-options input{accent-color:var(--mint)}.fx-caption{position:absolute;bottom:17px;left:10px;right:10px;text-align:center;font:10px var(--mono),monospace;color:#d5c4e6;letter-spacing:.08em}.intent{display:flex;align-items:center;gap:12px;padding:15px 25px;background:#211a2d;border-top:1px solid #46344f;border-bottom:1px solid var(--line);min-height:74px}.intent-icon{font-size:29px;color:var(--pink)}.intent strong{font-size:13px;font-weight:500}.intent p{font-size:11px;margin:3px 0 0;color:var(--muted)}.turn-badge{margin-left:auto;flex-shrink:0;border:1px solid #554267;color:#d1b9ec;padding:5px 8px;border-radius:5px;font:9px var(--mono),monospace;letter-spacing:.08em}.lobby,.battle-controls,.result{padding:22px 26px}.lobby-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.lobby h1{font-size:22px;letter-spacing:-.04em;margin:0 0 5px}.lobby p{color:var(--muted);font-size:12px;margin:0}.fighter-picks{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.fighter-pick{display:flex;align-items:center;gap:11px;padding:13px;background:#211b2e;border:1px solid var(--line);border-radius:10px;text-align:left}.fighter-pick.selected{border-color:var(--mint);background:#25433a33}.fighter-pick strong{display:block;font-size:15px}.fighter-pick small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.fighter-avatar{width:43px;height:43px;display:grid;place-items:center;border-radius:11px;font-weight:700;font-size:23px;background:#7c67b5;color:#dafbed}.fighter-avatar.nix{background:#9b4f7c;color:#ffd7ed}.pick-check{margin-left:auto;color:var(--mint);visibility:hidden}.selected .pick-check{visibility:visible}.start{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;padding:14px 18px;background:var(--mint);color:#16352a;border:0;border-radius:8px;font-weight:700;font-size:14px}.start:hover{background:#bcffe4}.fineprint{font-size:10px!important;text-align:center;margin-top:12px!important}.energy-row{display:flex;gap:12px;align-items:center;margin-bottom:15px;font:10px var(--mono),monospace;color:var(--mint)}.energy-pips{display:flex;gap:4px}.energy-pips i{height:6px;width:25px;background:#372b47;border-radius:5px}.energy-pips i.on{background:var(--mint)}.controls-hint{margin-left:auto;font:11px var(--sans),sans-serif;color:var(--muted)}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.action{position:relative;padding:14px 8px 12px;border:1px solid #463952;border-radius:10px;background:#251d32;text-align:center}.action:hover{background:#30233d;border-color:#9981b3}.action-symbol{display:block;font-size:29px;color:#d5bee8;height:34px;line-height:1}.action strong{display:block;font-size:14px;margin:4px 0}.action small{font-size:10px;color:var(--muted)}.action .key{position:absolute;left:8px;top:7px;font:9px var(--mono),monospace;color:#ab97bf}.action.power.ready{background:#9ceace;color:#123628;border-color:#9ceace}.action.power.ready .action-symbol,.action.power.ready .key,.action.power.ready small{color:#2e6553}.combat-log{min-height:15px;margin:15px 0 0;color:var(--muted);font-size:11px;text-align:center}.result{text-align:center}.result .eyebrow{color:var(--mint)}.result h2{font-size:25px;letter-spacing:-.04em;margin:8px 0}.result p{font-size:12px;color:var(--muted);margin:0 0 18px}.reward-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.reward-choices button{border:1px solid #50735d;background:#213a3033;border-radius:10px;padding:16px}.reward-choices button:last-child{border-color:#8d5267;background:#59324533}.reward-choices span{font-size:29px;display:block;color:var(--mint)}.reward-choices button:last-child span{color:var(--pink)}.reward-choices strong{display:block;font-size:15px;margin:5px 0}.reward-choices small{font-size:11px;color:var(--muted)}.end-actions{display:flex;gap:12px}.end-actions .start{width:auto;flex:1}.collection{margin:25px 0}.collection-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.collection h2{font-size:14px;font-weight:500;margin:0}.collection h2 span{display:inline-grid;place-items:center;min-width:21px;height:21px;margin-left:5px;border-radius:6px;background:#2e243a;font:10px var(--mono),monospace;color:#c2abd5}.collection-heading>span{color:var(--muted);font-size:10px}.collection-items{display:flex;gap:10px;flex-wrap:wrap;min-height:50px}.collection-items>p{color:#877b97;font-size:12px;margin:4px 0}.collectible{display:flex;align-items:center;gap:10px;background:#1d1727;border:1px solid var(--line);padding:11px 15px;border-radius:9px}.collectible .mini{height:33px;width:33px;border-radius:8px;display:grid;place-items:center;background:#3c294e;color:var(--mint);font-size:21px}.collectible.burn .mini{color:#ffc084}.collectible strong{font-size:12px;display:block}.collectible small{color:var(--muted);font-size:10px}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;border-top:1px solid #2b2335;padding:19px 0 30px;color:#887b96;font:9px var(--mono),monospace}dialog{max-width:460px;width:calc(100% - 32px);background:#21182d;color:var(--text);border:1px solid #584468;border-radius:15px;padding:30px;box-shadow:0 25px 100px #0008}dialog::backdrop{background:#08050dba;backdrop-filter:blur(4px)}dialog h2{font-size:25px;letter-spacing:-.04em}dialog p,dialog li{font-size:13px;line-height:1.65;color:#bfb0ce}dialog ul{padding-left:20px}dialog li{margin:7px 0}.dialog-close{position:absolute;right:13px;top:10px;background:transparent;border:0;font-size:25px;color:#c9b8d8}.dialog-close:hover{color:white}
@media(min-width:1300px){canvas{height:440px}}
@media(max-width:650px){.app{padding:0 13px}.topbar{padding:19px 0}.brand{font-size:17px;gap:6px}.moon-mark{font-size:33px}.prototype{display:none}.top-actions{gap:5px}.quiet{font-size:10px;padding:8px}.hud{padding:17px 16px 14px;gap:12px;grid-template-columns:1fr 45px 1fr}.fighter-name b{font-size:19px}.fighter-name .side{font-size:8px;letter-spacing:.05em}.hp-line span{font-size:13px}.hp-line small{font-size:8px}.fighter-info{gap:6px}.round b{font-size:22px}.round{font-size:8px}.scene-label{font-size:8px;left:12px}.scene-options{right:10px;font-size:10px}canvas{height:330px}.move-title{top:47px}.move-title strong{font-size:21px}.intent{padding:13px;gap:8px}.intent strong{font-size:12px}.intent p{font-size:10px}.turn-badge{font-size:8px;padding:4px}.lobby,.battle-controls,.result{padding:18px 14px}.controls-hint{display:none}.fighter-pick{padding:10px;gap:8px}.fighter-avatar{width:31px;height:36px;font-size:20px}.fighter-pick strong{font-size:13px}.fighter-pick small{font-size:10px}.fighter-picks{gap:8px}.pick-check{display:none}.action-grid{gap:7px}.action{padding:14px 5px 10px}.action strong{font-size:12px}.action small{font-size:9px}.action-symbol{font-size:25px}.action .key{display:none}.collection-heading>span{font-size:9px}.collection h2{font-size:12px}.reward-choices small{font-size:10px}.lobby-top .label{display:none}}
@media(max-width:380px){.fighter-info{grid-template-columns:1fr}.hp-line{grid-row:2}.health{grid-row:3}.hp-line small{font-size:9px}.action-grid{grid-template-columns:repeat(2,1fr)}.action{min-height:84px}.action-symbol{position:absolute;left:12px;top:28px}.action strong,.action small{margin-left:22px}.scene-label{max-width:150px}.fighter-picks{grid-template-columns:1fr}.scene-options{font-size:9px}.intent-icon{display:none}}
@media(max-width:650px){.topbar{flex-wrap:wrap}.top-actions{margin-left:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Art stays attached to the combat skeleton; portraits also identify selectable fighters. */
.fighter-avatar{flex-shrink:0;overflow:hidden}.fighter-avatar img,.mini img{width:100%;height:100%;object-fit:cover;display:block}.mini{overflow:hidden}.art-status{position:absolute;left:20px;right:20px;top:55%;text-align:center;font-size:13px;color:var(--mint)}.retry-art{position:absolute;top:65%;left:50%;transform:translateX(-50%)}canvas{height:460px}@media(min-width:1300px){canvas{height:490px}}@media(max-width:650px){canvas{height:350px}}

/* Fit the fighters and move controls together in short windows. */
@media(min-width:651px) and (max-height:850px){canvas{height:clamp(220px,calc(100dvh - 405px),440px)}}
@media(max-width:650px){canvas{height:clamp(190px,calc(100dvh - 440px),350px)}}
@media(max-width:380px){canvas{height:clamp(180px,calc(100dvh - 525px),330px)}}

.skip{position:absolute;left:12px;top:-40px;background:var(--mint);color:#10281c;padding:8px 12px;z-index:5}
.skip:focus{top:12px}
.brand{font-family:var(--display);font-style:italic;letter-spacing:0;font-weight:700;text-transform:none}
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:end;padding:12px 0 36px;border-bottom:1px solid var(--line)}
.kicker{font:12px var(--mono);letter-spacing:.18em;color:var(--mint);margin:0 0 10px}
.hero-title{font-family:var(--display);font-style:italic;font-weight:700;font-size:clamp(72px,13vw,128px);line-height:.78;letter-spacing:-.045em;margin:0}
.hero-title span{display:block}
.dek{max-width:36rem;font-size:18px;line-height:1.45;margin:18px 0 0}
.artist{margin:14px 0 0;color:var(--muted);font-size:15px}
.artist a{color:var(--text)}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.ticket{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 18px;background:var(--mint);color:#10281c;text-decoration:none;border:0;border-radius:0;font-weight:700}
.ticket.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}
.moon-wrap{position:relative;min-height:280px;display:grid;place-items:center}
.moon{width:min(340px,68vw);aspect-ratio:1;border-radius:50%;background:#e6dece;background-image:radial-gradient(circle at 32% 38%,#c9beab 0 16px,transparent 17px),radial-gradient(circle at 64% 60%,#b5aa98 0 26px,transparent 27px),radial-gradient(circle at 48% 24%,#d9d0c0 0 9px,transparent 10px)}
.hero-faces{position:absolute;inset:auto 0 0;display:flex;justify-content:center;gap:8px}
.hero-faces img{width:132px;height:132px;object-fit:cover;border-radius:8px 8px 0 0;background:#1b1722}
.hero-faces img:first-child{transform:rotate(-6deg) translateY(8px)}
.hero-faces img:last-child{transform:rotate(5deg)}
.how{padding:34px 0;border-bottom:1px solid var(--line)}
.how h2,.gate h2,.collection h2,.receipt h2{font-family:var(--display);font-style:italic;font-weight:700;letter-spacing:-.03em}
.steps{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:0}
.steps li{display:grid;grid-template-columns:52px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--line)}
.steps b{font:13px var(--mono);color:var(--mint)}
.steps p{margin:4px 0 0;color:var(--muted)}
.gate{padding:28px 0 10px}
.gate-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.note{min-height:1.4em;color:var(--muted)}
.note.error{color:#ffb4b4}
.plays-count{font-family:var(--display);font-style:italic;font-weight:700;font-size:clamp(56px,12vw,88px);line-height:.85;margin:8px 0 10px;letter-spacing:-.04em}
.wallet-row,.entry-row,.lookup{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.lookup{margin-top:14px}
.lookup input,.check input,#token-filter{flex:1;min-width:0;background:#120f16;color:var(--text);border:1px solid var(--line);padding:12px;font:16px var(--mono)}
.roster{display:flex;flex-direction:column;margin-top:12px}
.moonie{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:10px 0;min-height:72px}
.moonie.selected{color:var(--mint)}
.moonie img,.moonie .blank{width:56px;height:56px;object-fit:cover;background:#221c2a}
.moonie small{display:block;color:var(--muted);font-size:12px}
.check{display:flex;gap:8px;margin-top:12px}
.check input{flex:1}
.receipt{margin:10px 0 28px;padding-top:8px}
.receipt dl{display:grid;grid-template-columns:8rem 1fr;gap:6px 12px;font:12px var(--mono);word-break:break-all}
.receipt dt{color:var(--muted)}
.vault-line{font:13px var(--mono);color:var(--muted);margin-top:16px}
.prize{padding:28px 0 18px;border-bottom:1px solid var(--line)}
.vault-assets{display:flex;flex-wrap:wrap;gap:18px 32px;margin:18px 0}
.vault-assets div{min-width:8rem}
.vault-assets b{display:block;font-family:var(--display);font-style:italic;font-size:32px;line-height:1;font-weight:700}
.vault-assets span{color:var(--muted);font:12px var(--mono)}
.film{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px}
.film img,.film .blank{width:72px;height:72px;object-fit:cover;flex:none;background:#221c2a}
.vault-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:8px 0 12px}
.vault-tools label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.vault-tools input{flex:1;min-width:12rem;background:#120f16;color:var(--text);border:1px solid var(--line);padding:12px;font:16px var(--mono)}
.vault-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.vault-filters label{display:flex;flex-direction:column;gap:4px;min-width:9.5rem;flex:1 1 9.5rem;font:11px var(--mono);color:var(--muted)}
.vault-filters select{background:#120f16;color:var(--text);border:1px solid var(--line);padding:8px;font:13px var(--mono)}
.vault-count{font:13px var(--mono);color:var(--muted);margin:0 0 12px}
.vault-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.vault-card{display:flex;flex-direction:column;gap:6px;padding:0;border:1px solid var(--line);background:#120f16;text-align:left;color:var(--text)}
.vault-card img,.vault-card .blank{width:100%;height:auto;aspect-ratio:1;object-fit:cover;background:#221c2a;display:block}
.vault-card span{font:12px var(--mono);padding:0 8px 8px}
#moonie-dialog{max-width:760px}
.moonie-view{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
.moonie-view img{width:100%;aspect-ratio:1;object-fit:cover;background:#221c2a}
.trait-list{display:grid;grid-template-columns:8.5rem 1fr;gap:8px 12px;margin:12px 0 0;font:13px var(--mono)}
.trait-list dt{color:var(--muted)}
.trait-list dd{margin:0}
@media(min-width:800px){.vault-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}}
@media(max-width:800px){.moonie-view{grid-template-columns:1fr}}
.vault-strip{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line);background:#100e16}
.vault-strip .film{max-width:46%}
.result-claim{display:flex;gap:14px;align-items:center;justify-content:center;margin:0 auto 16px;max-width:420px;text-align:left}
.result-claim img,.result-claim .blank{width:84px;height:84px;object-fit:cover;background:#221c2a;flex:none}
@media(max-width:800px){.vault-strip{flex-direction:column;align-items:flex-start}.vault-strip .film{max-width:100%}}
footer a{color:inherit}
@media(max-width:800px){.hero,.gate-grid{grid-template-columns:1fr}.hero-faces img{width:96px;height:96px}.moon{width:min(260px,70vw)}.dek{font-size:16px}}
@media(prefers-reduced-motion:reduce){.hero-faces img{transform:none}}
.vault-scroll.is-open{max-height:min(70vh,760px);overflow-y:auto;overscroll-behavior:contain;padding-right:4px;border:1px solid var(--line)}
.vault-expand{min-height:44px;margin-top:12px}
.text-link{background:none;border:0;padding:8px 0;min-height:44px;color:var(--muted);font-size:15px;text-decoration:underline;cursor:pointer}
.prize-preview{display:flex;gap:14px;align-items:center;margin:8px 0 16px}
.prize-preview img{width:96px;height:96px;object-fit:cover;background:#221c2a;flex:none}
.prize-preview p,.lobby-call{margin:0;font-size:17px;line-height:1.4}
.lobby-call{margin-bottom:12px}
.claim-ref{font:13px var(--mono);word-break:break-all}
.result-claim img{width:min(220px,70vw);height:auto}
.wins{margin:8px 0 24px}
.wins h2{font-family:var(--display);font-style:italic;font-size:28px}
.wins li{margin:8px 0}
.rules{margin-top:18px}
.rules summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:700}
.rules p{color:var(--muted);line-height:1.5}
select:focus-visible,summary:focus-visible{outline:3px solid var(--mint);outline-offset:3px}
button,a,.action,.fighter-pick,.ticket,.quiet{touch-action:manipulation}
.dialog-close{min-width:44px;min-height:44px}
dialog{position:relative}
footer{color:var(--muted);overflow-wrap:anywhere}
.dock{display:none}
@media(max-width:800px){
.hero-title{font-size:clamp(56px,16vw,88px)}
.moon-wrap{min-height:160px}
.hero{padding-bottom:18px}
.hero-actions .ticket,#use-play,#connect,#switch-chain{width:100%}
.wallet-row{width:100%}
.plays-count{font-size:clamp(64px,18vw,88px)}
.vault-tools input,.lookup input,.vault-filters select{font-size:16px;min-height:44px;min-width:0;width:100%}
.vault-filters label{flex:1 1 calc(50% - 8px);min-width:0}
.top-actions .quiet{min-height:44px}
.dock{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:6;padding:10px 13px calc(10px + env(safe-area-inset-bottom));background:#09070df2;border-top:1px solid var(--line)}
.dock .ticket{width:100%}
body{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
body.is-fighting{padding-bottom:env(safe-area-inset-bottom)}
body.is-fighting .dock{display:none}
.battle-controls{position:sticky;bottom:0;z-index:4;background:#14111af2;padding-bottom:calc(14px + env(safe-area-inset-bottom))}
.action{min-height:64px}
}
@media(max-width:430px){
.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.vault-filters label{flex-basis:100%}
.app{padding-left:13px;padding-right:13px}
.hero,.gate,.prize,.how{min-width:0}
}
.wallet-choices{display:grid;gap:10px;margin-top:16px}.wallet-choice{width:100%;min-height:44px;text-align:left;font-size:14px}

/* Mooniez world: the room, the slime wordmark, and candy stickers. Layout stays put. */
body{background-color:#12061f;background-image:linear-gradient(#12061fd4,#12061fee),url('assets/world-room.webp');background-size:cover;background-position:center top;background-attachment:fixed}
.brand{font-family:var(--display);font-style:normal;font-weight:400;letter-spacing:0;text-transform:none}
.moon-mark{width:40px;height:40px;display:grid;place-items:center}
.moon-mark img{width:40px;height:40px;object-fit:contain;filter:drop-shadow(0 2px 0 #ff4ad8)}
.hero-title,.plays-count,.how h2,.gate h2,.prize h2,.wins h2,.lobby h1,.result h2,dialog h2,.vault-assets b,.round b,.fighter-name b{font-family:var(--display);font-style:normal;font-weight:400}
.hero-title{color:#f4fff8;text-shadow:0 3px 0 #7a1cff}
.plays-count{color:var(--mint);text-shadow:0 3px 0 #0b6e5c}
.kicker,.label,.eyebrow,.turn-badge{display:inline-block;width:auto;font-family:var(--mono);color:var(--cyan);border:0;background:#12061f;border-radius:8px;padding:0 6px;box-shadow:0 0 0 1px var(--cyan),0 0 6px #3ef6ff66;text-shadow:0 0 4px #3ef6ff}
.neon-sign{animation:neon-flicker 6.5s infinite}
.gate,.prize,.how,.wins,.receipt{background:#160828f2;border:0;border-radius:18px;box-shadow:0 0 0 1px #ffffffcc,4px 4px 0 #ff4ad8;padding-left:0;padding-right:0}
.game{background:#160828;border:1px solid #fff;border-radius:18px;box-shadow:4px 4px 0 #7a2bff}
.hud,.intent,.lobby,.battle-controls,.result,.vault-strip{background:#160828}
.ticket,.start{background:linear-gradient(#e9fff8,#5dffd8 42%,#14c9a4);color:#083028;border:3px solid #07352c;border-radius:999px;box-shadow:inset 0 3px 0 #ffffffcc,0 4px 0 #0b6e5c;font-family:var(--sans);font-weight:800;letter-spacing:.01em}
.ticket:hover,.start:hover{background:linear-gradient(#f4fffc,#8dffea 40%,#2ad4b0)}
.ticket:not(:disabled):active,.start:not(:disabled):active{transform:translateY(3px);box-shadow:inset 0 3px 0 #ffffffcc,0 1px 0 #0b6e5c}
.ticket.ghost,.quiet{background:#12061f;color:#d9fbff;border:2px solid var(--cyan);border-radius:12px;box-shadow:0 0 8px #3ef6ff66,inset 0 0 8px #3ef6ff22;text-shadow:0 0 6px #3ef6ff}
.ticket.ghost:hover,.quiet:hover{background:#12323a}
.quiet[aria-pressed=true]{border-color:var(--mint);color:var(--mint);box-shadow:0 0 8px #7dffe088}
.health{height:8px;border:1px solid #fff;border-radius:999px;background:#2a1248;box-shadow:inset 0 1px 0 #0006}
.health i{background:linear-gradient(#f4fffb,#5dffd4 42%,#12b48e);box-shadow:inset 0 2px 0 #fff8}
.foe .health i{background:linear-gradient(#ffe6f8,#ff4ad8 46%,#c0168e)}
.energy-pips i{height:8px;border:2px solid #fff;background:#2a1248}
.energy-pips i.on{background:linear-gradient(#f4fffb,#5dffd4);box-shadow:0 0 6px #7dffe0}
.fighter-pick,.action,.vault-card,.prize-preview img,.result-claim img,.film img,.hero-faces img,.moonie-view img{border:1px solid #fff;box-shadow:3px 3px 0 #ff4ad8}
.fighter-pick{border-radius:16px;background:#220c40}
.fighter-pick.selected{border-color:var(--mint);background:#12382e;box-shadow:0 0 0 1px #7dffe0,3px 3px 0 #ff4ad8}
.fighter-avatar{border-radius:12px;border:2px solid #fff}
.action{border-radius:16px;background:#220c40}
.action:hover{background:#321456;border-color:var(--cyan)}
.action.power.ready{background:linear-gradient(#e9fff8,#5dffd8 42%,#14c9a4);color:#083028;border-color:#07352c}
.action.power.ready .action-symbol,.action.power.ready .key,.action.power.ready small{color:#0b6e5c}
.vault-card{border-radius:16px;background:#160828;overflow:hidden}
.vault-card img,.vault-card .blank{border:0;box-shadow:none;border-radius:0}
.vault-tools input,.vault-filters select,.lookup input,.check input{background:#12061f;border:2px solid var(--pink);border-radius:12px;color:var(--text)}
.vault-filters label{color:var(--muted)}
.scene{background:#12061f}
.move-title strong{font-family:var(--display);font-weight:400;letter-spacing:0;text-shadow:0 3px 0 #1a0a38,0 0 12px #3ef6ff}
.turn-badge{border-radius:999px}
.result.is-win{background:#0e2c24;box-shadow:inset 0 0 0 1px #7dffe0}
.result.is-lose{background:#2a0c22;box-shadow:inset 0 0 0 1px #ff4ad8}
.result.is-win h2{color:var(--mint)}
.result.is-lose h2{color:#ffd0ee}
.moon{display:none}
.wordmark{position:absolute;top:0;left:50%;width:min(220px,78%);height:auto;transform:translateX(-50%);z-index:2;pointer-events:none}
.mascot{width:min(340px,68vw);aspect-ratio:1;height:auto;object-fit:contain;display:block;margin:0 auto;filter:drop-shadow(0 10px 0 #ff4ad833);animation:mascot-float 4.8s ease-in-out infinite}
.ornament{position:absolute;width:52px;height:52px;pointer-events:none}
.ornament-crown{top:6px;left:6px;animation:mascot-float 5.4s ease-in-out infinite}
.ornament-star{top:0;right:8px;animation:mascot-float 4.2s ease-in-out infinite reverse}
.ornament-smile{right:0;bottom:128px}
.hero-faces img{border-radius:18px 18px 8px 8px}
dialog{background:#160828;border:1px solid #fff;border-radius:18px;box-shadow:4px 4px 0 #ff4ad8}
dialog::backdrop{background:#070212e0;backdrop-filter:none}
.dock{background:#12061f;border-top:1px solid var(--cyan);box-shadow:0 -3px 0 #ff4ad8}
footer{border-top:0;color:var(--muted)}
.wallet-choice{border:2px solid var(--cyan);border-radius:14px;background:#12061f}
@keyframes mascot-float{50%{transform:translateY(-10px)}}
@keyframes neon-flicker{0%,18%,22%,100%{opacity:1}20%{opacity:.55}}
@media(max-width:800px){
body{background-image:linear-gradient(#12061fd8,#12061ff2),url('assets/world-room-mobile.webp');background-attachment:scroll}
.topbar{flex-wrap:nowrap;gap:6px;align-items:center}
.brand{font-size:15px;gap:4px;min-width:0}
.brand small{letter-spacing:.1em;font-size:8px}
.moon-mark,.moon-mark img{width:32px;height:32px}
.top-actions{gap:4px;margin-left:auto;flex:none}
.top-actions .quiet{padding:6px 7px;font-size:11px}
.dock{background:#12061f}
.battle-controls{background:#160828f2}
.ornament{width:36px;height:36px}
.ornament-smile{bottom:96px}
.wordmark{width:min(180px,70%)}
.mascot{width:min(260px,70vw)}
}
@media(prefers-reduced-motion:reduce){
.mascot,.ornament,.neon-sign{animation:none!important}
}

/* Phone side space: every section's text sits about 22px from the screen edge. */
@media(max-width:650px){
.app{padding-left:10px;padding-right:10px}
.topbar,.hero,footer{padding-left:12px;padding-right:12px}
.gate,.prize,.how,.wins,.receipt{padding-left:12px;padding-right:12px}
.dock{padding-left:20px;padding-right:20px}
}
@media(max-width:340px){.result-claim{flex-wrap:wrap}.result-claim>div{flex:1 1 100%;min-width:0}}
@media(max-width:380px){.brand>span:last-child{display:none}}

/* Desktop inset: type stays off the card outline and the row dividers. */
.gate,.prize,.how,.wins,.receipt{padding:36px 40px 40px;margin:22px 0}
.steps{margin-top:28px}
.steps li{padding:22px 8px 26px}
.steps p{margin:8px 0 0}
.vault-scroll.is-open{padding:18px}
.vault-card span{padding:12px 16px 16px}
.vault-expand{margin-top:22px;padding:14px 22px}
.vault-strip{padding:20px 28px}
.intent{padding:22px 32px}
.hud{padding:28px 32px 24px}
.lobby,.battle-controls,.result{padding:28px 32px}
.rules{margin-top:26px}
.rules summary{padding:8px 0 12px}
.rules p{margin:0 0 14px}
.moonie{padding:16px 4px}
@media(max-width:650px){
.gate,.prize,.how,.wins,.receipt{padding:28px 22px 32px}
.steps li{padding:18px 4px 22px}
.hud{padding:20px 18px 16px}
.intent{padding:16px 18px}
.lobby,.battle-controls,.result{padding:22px 18px}
.vault-strip{padding:16px 18px}
}
