:root{--yellow:#ffdc58;--ink:#160e2b;--muted:#b9aace;--violet:#a48aff}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:wait;filter:grayscale(.5)}button:focus-visible,a:focus-visible{outline:3px solid var(--yellow);outline-offset:5px}svg{width:24px;height:24px;flex-shrink:0}.lobby{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;overflow:auto;background:radial-gradient(ellipse at 48% 42%,#7541b5 0,#4a257e 35%,#2a174b 76%);font-family:Arial,Helvetica,sans-serif;color:#fff}.lobby:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.12;background-image:linear-gradient(30deg,#cba6ff 1px,transparent 1px),linear-gradient(150deg,#cba6ff 1px,transparent 1px);background-size:100px 58px;mask-image:radial-gradient(ellipse,#000,transparent 75%)}.topbar{position:relative;display:flex;justify-content:space-between;align-items:center;padding:25px 36px;height:106px;flex-shrink:0;border-bottom:1px solid #ffffff0b;background:#21123a42}.profile{display:flex;align-items:center;gap:13px;text-align:left;background:#20133388;border:1px solid #ffffff16;border-radius:12px;padding:7px 14px 7px 7px;color:#fff;min-width:230px}.profile-avatar{display:grid;place-items:center;width:49px;height:49px;background:#9e77eb;border:2px solid #c8a4ff;border-radius:8px;color:#201137;font-weight:1000;font-size:32px;transform:rotate(-3deg)}.profile strong{display:block;font-size:16px;margin-bottom:7px}.profile small{font-size:9px;letter-spacing:1px;color:#cfbddf;font-weight:bold}.profile-edit{margin-left:auto;color:#ac98c4}.online-dot{display:inline-block;width:6px;height:6px;background:#83edb0;border-radius:50%;margin-right:5px;box-shadow:0 0 10px #83edb033}.wordmark{position:absolute;left:50%;transform:translateX(-50%) rotate(-4deg);text-align:center;text-decoration:none;line-height:.85;font-weight:1000;filter:drop-shadow(0 3px 0 #170b2a);font-style:italic;letter-spacing:-2px}.wordmark>span{display:block;color:white;font-size:26px;-webkit-text-stroke:1px #1c0c32}.wordmark>b{display:block;font-size:38px;color:var(--yellow);-webkit-text-stroke:1px #291036}.brand-star{font-size:22px;padding-left:2px}.top-info{display:flex;gap:12px;align-items:center}.top-info>span{position:relative;display:flex;align-items:center;gap:8px;border:1px solid #ffffff16;background:#1b102d6b;border-radius:8px;padding:10px 12px 21px}.top-info>span svg{color:var(--yellow);width:20px}.top-info b{font-size:18px}.top-info small{position:absolute;bottom:6px;right:11px;font-size:7px;letter-spacing:1px;color:#c7b7d9}.icon-button{display:grid;place-items:center;background:#ffffff09;border:1px solid #ffffff21;color:#eee0ff;border-radius:9px;width:43px;height:43px}.lobby-main{position:relative;width:100%;max-width:1680px;margin:0 auto;display:grid;grid-template-columns:160px minmax(300px,1fr) 280px;gap:24px;flex:1;min-height:490px;padding:30px 36px 20px}.side-nav{display:flex;flex-direction:column;gap:13px;padding-top:23px}.nav-item{position:relative;display:flex;align-items:center;gap:12px;text-align:left;background:#21133588;border:1px solid #ffffff16;border-radius:10px;color:#c7b7d8;padding:18px 13px;font-size:10px;font-weight:800;letter-spacing:.5px;transition:transform .15s,background .15s}.nav-item svg{width:23px;height:23px}.nav-item:hover,.friends-card:hover{background:#59378a;transform:translateX(3px)}.nav-item.active{color:var(--yellow);border-color:#d8ae5777;background:linear-gradient(100deg,#6c4a41aa,#40203f88);box-shadow:inset 3px 0 var(--yellow)}.nav-item em{font-style:normal;background:var(--yellow);color:#362134;border-radius:4px;font-size:10px;position:absolute;right:9px;top:-6px;padding:3px 5px}.nav-caption{font-size:10px;letter-spacing:2px;line-height:1.7;color:#a68cbd;margin:18px 0 0 13px}.hero{position:relative;min-width:0;display:flex;align-items:center;flex-direction:column;justify-content:center;padding-bottom:125px}.hero-eyebrow{position:absolute;top:8px;left:0;right:0;text-align:center;font-size:9px;font-weight:700;letter-spacing:2.5px;color:#d5b9ee}.hero-eyebrow span{display:inline-block;width:18px;height:2px;vertical-align:middle;background:var(--yellow);margin-right:8px}.hero-word{position:absolute;top:50px;left:50%;transform:translateX(-50%) skew(-7deg);font-size:clamp(80px,11vw,170px);font-weight:1000;letter-spacing:-8px;color:#ffffff08;-webkit-text-stroke:1px #d4a6ff1b;line-height:1;white-space:nowrap}.hero-art{position:relative;z-index:3;width:min(340px,90%);height:340px;filter:drop-shadow(9px 15px 0 #1f0c372b);animation:breathe 4s ease-in-out infinite}.hero-art>svg{width:100%;height:100%;overflow:visible}.pedestal{position:absolute;width:285px;height:62px;left:50%;bottom:124px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,#b38ad488,#78479b88 62%,#c499e64d 64%,#77479a 69%);box-shadow:0 12px 0 #32164866,0 15px 35px #d198ff22;z-index:1}.floor-ring{position:absolute;width:380px;max-width:98%;height:95px;bottom:104px;border:1px solid #e1b0ff20;border-radius:50%;left:50%;transform:translateX(-50%)}.character-label{position:absolute;z-index:4;bottom:1px;text-align:center}.role-pill{font-size:9px;letter-spacing:2px;background:#3d2155;border:1px solid #b9a2dc55;color:#e2caff;border-radius:4px;padding:5px 10px;font-weight:800}#hero-name{color:white;text-shadow:3px 4px 0 #251031;font-size:44px;font-style:italic;font-weight:1000;letter-spacing:-1.5px;margin:7px 0 3px;line-height:1}.character-label p{font-size:11px;color:#ceb8de;margin:9px 0 12px}.change-character{display:inline-flex;align-items:center;gap:7px;border:0;background:none;color:var(--yellow);font-size:9px;letter-spacing:1px;font-weight:800}.change-character svg{width:12px;height:12px}.hero-prev,.hero-next{position:absolute;top:43%;z-index:5;border:1px solid #ffffff12;border-radius:50%;background:#2b164b55;color:#dbc4ef;font-size:30px;width:34px;height:42px}.hero-prev{left:7%}.hero-next{right:7%}.decor{position:absolute;color:#c795f6;opacity:.65}.decor-one{top:80px;right:16%;font-size:31px;transform:rotate(15deg)}.decor-two{top:180px;left:15%;font-size:24px;transform:rotate(15deg)}.decor-three{bottom:170px;right:17%;font-size:18px}.right-rail{padding-top:18px;display:flex;flex-direction:column;gap:15px}.feature-card{border:1px solid #c39beb44;border-radius:13px;overflow:hidden;background:linear-gradient(145deg,#7445a8,#40215f);box-shadow:0 6px 0 #1e0c2922;position:relative}.feature-top{display:flex;justify-content:space-between;align-items:center;padding:17px 17px 0}.feature-top>svg{color:#be8be9;transform:rotate(12deg);width:20px}.live-label{font-size:8px;font-weight:800;letter-spacing:1.2px;color:#e0c1ef}.live-label i{display:inline-block;width:5px;height:5px;background:var(--yellow);border-radius:50%;margin-right:5px}.feature-card h2{font-size:27px;line-height:1.05;font-weight:1000;font-style:italic;letter-spacing:-.8px;margin:17px 17px 9px;text-shadow:1px 3px #382044}.feature-card p{font-size:11px;line-height:1.6;color:#d9bde9;margin:0 17px}.arena-preview{height:99px;position:relative;overflow:hidden;background:linear-gradient(165deg,transparent 25%,#8b57ad44 26%,#382349 95%);transform:skewY(-3deg);margin-top:9px}.arena-preview:before,.arena-preview:after{content:'';position:absolute;background:#8c75a3;border:3px solid #362044;width:55px;height:25px;box-shadow:0 7px 0 #463254;transform:rotate(-20deg);left:40px;top:40px}.arena-preview:after{left:185px;top:15px;width:35px}.arena-preview i{position:absolute;width:38px;height:22px;background:#5b866b;box-shadow:0 6px 0 #304a42;border:3px solid #34443f;transform:rotate(-20deg);left:10px;top:12px}.arena-preview i:nth-child(2){left:205px;top:67px}.arena-preview i:nth-child(3){left:105px;top:72px;width:45px}.arena-preview i:nth-child(4){left:151px;top:23px;width:25px}.arena-preview b{position:absolute;left:132px;top:33px;font-size:31px;color:var(--yellow);text-shadow:0 0 25px #ffdf67}.arena-preview span{position:absolute;left:97px;top:18px;color:#ed8fce;font-size:24px}.feature-footer{position:relative;display:flex;justify-content:space-between;background:#2b173f;padding:12px 15px;font-size:8px;letter-spacing:.8px;font-weight:bold}.feature-footer span{color:#a98cbb;font-size:7px}.tip-card{display:flex;gap:10px;padding:16px;background:#25153c88;border:1px solid #ffffff12;border-radius:10px}.tip-icon{color:var(--yellow);padding-top:6px}.tip-icon svg{width:20px}.tip-card small{font-size:8px;font-weight:bold;letter-spacing:1.2px;color:#c3a0de}.tip-card p{font-size:11px;color:#dfd0ec;line-height:1.6;margin:6px 0 0}.friends-card{display:flex;align-items:center;gap:10px;text-align:left;padding:13px 10px;background:#21133480;border:1px solid #ffffff14;border-radius:9px;color:white;transition:.15s}.friends-icon{color:#c5a0ed}.friends-card strong{display:block;font-size:11px}.friends-card small{display:block;font-size:9px;color:#ae96c4;margin-top:5px}.friends-card>svg{width:14px;margin-left:auto;color:#b49ac8}.play-dock{position:relative;display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:18px;margin:12px 36px 0;padding:18px;background:#211431b3;border:1px solid #b498d52b;border-radius:14px;flex-shrink:0}.fighter-summary{display:flex;gap:13px;text-align:left;color:#fff;border:0;border-right:1px solid #ffffff12;background:none;align-items:center}.fighter-emblem{display:grid;place-items:center;width:48px;height:54px;background:#7951ac;border:2px solid #b18ad7;border-radius:9px;transform:rotate(-5deg);color:var(--yellow)}.fighter-emblem svg{width:30px;height:30px}.fighter-summary small,.mode-card small{display:block;color:#af96c6;font-size:8px;font-weight:bold;letter-spacing:1px;margin-bottom:7px}.fighter-summary strong{font-size:18px;display:block;font-style:italic}.fighter-summary strong i{font-style:normal;color:#bf9edc;font-size:9px;margin-left:7px}.health-stat{display:flex;align-items:center;gap:4px;font-size:9px;color:#beabd3;margin-top:9px}.health-stat svg{width:11px;height:11px;color:#86d6a6}.health-stat>span{margin-left:10px;font-size:7px;letter-spacing:.6px;color:#8dbf9e}.mode-card{display:flex;align-items:center;gap:12px;background:#130d2299;border:1px solid #8563a944;border-radius:9px;text-align:left;color:white;padding:13px}.mode-icon{display:grid;place-items:center;background:#bd6bb2;border:2px solid #e6a5d3;border-radius:7px;width:46px;height:46px;color:#321633;transform:rotate(-4deg)}.mode-icon svg{width:29px;height:29px}.mode-card strong{display:block;font-size:17px;margin-bottom:5px}.mode-card>span>span{font-size:9px;color:#c3aecf}.mode-switch{font-size:24px;color:#ae99c7;margin-left:auto}.play-area{display:flex;flex-direction:column;gap:9px}.match-note{font-size:9px;text-align:center;color:#c6b6d5}button.play{display:flex;justify-content:center;align-items:center;gap:28px;background:linear-gradient(#ffe578,#ffd247);border:2px solid #ffe589;border-radius:8px;color:#34213b;font-size:29px;font-weight:1000;font-style:italic;letter-spacing:-1px;padding:11px 18px;box-shadow:0 5px 0 #b28128,0 8px 16px #130a2033;transition:filter .15s,transform .15s}button.play:hover{filter:brightness(1.09);transform:translateY(-2px)}button.play svg{stroke-width:3;width:26px;height:26px}.lobby-bottom{position:relative;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:16px 38px;color:#987bac;font-size:7px;letter-spacing:1.4px}.lobby-bottom b{color:#65497c;margin:0 8px}.lobby-bottom button{display:flex;gap:6px;align-items:center;border:0;background:none;color:#b49ac8;font-size:8px;font-weight:bold;letter-spacing:1px}.lobby-bottom svg{width:13px;height:13px}#connection-status{position:absolute;bottom:160px;left:50%;transform:translateX(-50%);background:#211036f0;color:#ffe083;border-radius:8px;margin:0;font-size:13px;text-align:center;padding:0;max-width:90%;z-index:10}#connection-status:not(:empty){padding:12px 20px}dialog{color:#fff;width:min(650px,calc(100% - 28px));max-height:85dvh;border:1px solid #9d75c8;border-radius:18px;background:linear-gradient(140deg,#482666,#241337);padding:25px;box-shadow:0 30px 120px #0008}dialog::backdrop{background:#120a22c9;backdrop-filter:blur(7px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;color:#c2a6d6;letter-spacing:2px;font-size:9px}.dialog-heading .icon-button{width:32px;height:32px}dialog h2{font-size:28px;font-style:italic;letter-spacing:-.7px;margin:12px 0}dialog p{font-size:14px;line-height:1.7;color:#d3bfdf}dialog label{display:block;color:#d3bfdf;margin:15px 0 7px}dialog input{background:#20112f;border-color:#8762a4;color:white;margin-bottom:10px}dialog .chars{grid-template-columns:repeat(3,1fr);margin-top:20px}dialog .ch{font:inherit;color:white;text-align:left;padding:12px;border-color:#76518e;background:#281539}dialog .ch.sel{border-color:var(--yellow);background:#513659}dialog .ch svg{width:100%;height:145px}dialog .ch b{display:block}dialog .ch p{font-size:11px}dialog .ch .role{font-size:9px;margin:7px 0}.dialog-action{padding:12px 18px;border:1px solid #ffe58a;border-radius:7px;background:var(--yellow);color:#32203f;font-weight:800;margin-top:12px}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.stat-grid>div{background:#1f112e;border:1px solid #694580;border-radius:10px;padding:20px 10px;text-align:center}.stat-grid b{display:block;font-size:30px;color:var(--yellow)}.stat-grid span{display:block;margin-top:8px;font-size:10px;color:#c8b0d8}.control-list{padding:0;list-style:none}.control-list li{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff14;padding:12px 0;color:#decee7;font-size:13px}kbd{background:#1a1028;border:1px solid #85679d;border-bottom-width:3px;border-radius:5px;padding:6px 10px;font:11px Arial}.mode-choice{padding:16px;background:#251536;border:1px solid #805a9b;border-radius:9px;margin-top:12px}.mode-choice.available{border-color:var(--yellow)}.mode-choice strong{display:block}.mode-choice p{margin:6px 0 0;font-size:12px}.mode-choice small{float:right;color:#c3a0d6;font-size:9px}.mode-choice.available small{color:var(--yellow)}#leave{position:absolute;bottom:80px;left:12px;pointer-events:auto;border:1px solid #ffffff44;background:#171022cc;color:white;border-radius:7px;padding:9px 12px;font-size:11px}.motion-off *{animation:none!important;transition:none!important}@keyframes breathe{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-6px) rotate(1deg)}}@media(min-width:1500px){.lobby-main{grid-template-columns:190px minmax(300px,1fr) 320px}.hero-art{width:390px;height:390px}.hero{padding-bottom:130px}.hero-word{top:70px}.right-rail{padding-top:40px}.feature-card h2{font-size:32px}.arena-preview{height:125px}}@media(max-width:1050px){.topbar{padding:18px 22px}.lobby-main{padding:18px 22px 15px;grid-template-columns:130px minmax(260px,1fr) 230px;gap:12px}.nav-item{padding:17px 9px;font-size:8px;gap:8px}.right-rail{padding-top:20px}.feature-card h2{font-size:23px}.play-dock{margin-left:22px;margin-right:22px;gap:12px;padding:14px}.health-stat>span{display:none}.fighter-summary strong i{display:block;margin:5px 0}.fighter-emblem{width:37px}.mode-card{padding:10px;gap:8px}.mode-icon{width:35px;height:40px}.mode-card strong{font-size:15px}.mode-card>span>span{font-size:8px}.match-note{font-size:8px}.hero-prev{left:0}.hero-next{right:0}}@media(max-width:800px){.top-info>span{display:none}.profile{min-width:180px}.topbar{height:88px}.wordmark>span{font-size:22px}.wordmark>b{font-size:31px}.lobby-main{grid-template-columns:100px minmax(200px,1fr);min-height:480px}.right-rail{display:none}.side-nav{padding-top:30px}.nav-item{flex-direction:column;text-align:center;gap:8px;padding:14px 4px}.nav-caption{font-size:8px;margin-left:5px}.hero-art{height:320px;width:320px;max-width:90%}.hero-eyebrow{font-size:8px;letter-spacing:1.5px}.hero-word{font-size:120px}.play-dock{grid-template-columns:1fr 1fr}.fighter-summary{display:none}.lobby-bottom>span:nth-child(2){display:none}.hero{padding-bottom:126px}}@media(max-width:480px){.topbar{padding:12px 14px;height:82px}.profile{min-width:0;padding:5px 8px 5px 5px;gap:8px}.profile-avatar{width:34px;height:39px;font-size:24px}.profile strong{font-size:12px;max-width:90px;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px}.profile small{font-size:6px;letter-spacing:.3px}.profile-edit{display:none}.wordmark{left:64%}.wordmark>span{font-size:18px}.wordmark>b{font-size:27px}.top-info .icon-button{width:32px;height:34px}.top-info svg{width:18px}.lobby-main{padding:12px 13px 0;gap:8px;grid-template-columns:65px minmax(0,1fr);min-height:430px}.side-nav{gap:10px;padding-top:30px}.nav-item{font-size:6px;letter-spacing:0;padding:12px 3px;border-radius:7px}.nav-item svg{width:20px;height:20px}.nav-item em{font-size:8px}.nav-caption{display:none}.hero-eyebrow{font-size:6px;letter-spacing:1px}.hero-word{top:55px;font-size:85px;letter-spacing:-4px}.hero-art{height:275px;width:275px;max-width:110%}.hero{padding-bottom:120px;justify-content:center}.hero-prev,.hero-next{width:24px;height:34px;font-size:24px}.hero-prev{left:0}.hero-next{right:0}.pedestal{width:210px;height:46px;bottom:126px}.floor-ring{width:250px;bottom:112px;height:65px}#hero-name{font-size:35px}.character-label p{font-size:9px}.decor-one{right:5%;top:75px}.decor-two{left:5%;top:150px}.decor-three{right:4%;bottom:170px}.play-dock{grid-template-columns:1fr;gap:12px;padding:12px;margin:10px 13px 0}.mode-card{padding:10px 12px}.mode-card small{font-size:7px;margin-bottom:4px}.mode-card strong{font-size:15px;margin-bottom:3px}.mode-card>span>span{font-size:9px}.mode-icon{height:36px;width:36px}.play-area{gap:8px;flex-direction:column-reverse}button.play{font-size:26px;padding:10px}.match-note{font-size:8px}.lobby-bottom{padding:15px 15px;font-size:6px;letter-spacing:1px}dialog{padding:18px}dialog .chars{gap:7px}dialog .ch{padding:8px}dialog .ch svg{height:90px}dialog .ch b{font-size:13px}dialog .ch p{font-size:9px}#sb{font-size:10px;min-width:125px}#help{max-width:150px;font-size:9px;bottom:12px}#timer{font-size:18px}#feed{top:50px;font-size:10px}#bottom{left:auto;right:12px;transform:none;gap:9px}#ammo span{width:20px}#super{width:46px;height:46px;font-size:10px}#leave{bottom:67px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-height:700px) and (min-width:801px){.topbar{height:82px;padding-top:12px;padding-bottom:12px}.lobby-main{min-height:400px;padding-top:10px}.hero-art{height:285px;width:285px}.right-rail{padding-top:5px;gap:10px}.feature-card h2{margin-top:12px;font-size:24px}.arena-preview{height:70px}.tip-card{padding:11px}.friends-card{padding:9px}.hero-word{top:40px}.hero-eyebrow{top:0}.side-nav{gap:10px;padding-top:18px}.nav-item{padding-top:14px;padding-bottom:14px}.nav-caption{margin-top:10px}.play-dock{margin-top:5px;padding:12px}.lobby-bottom{padding-top:12px;padding-bottom:12px}}
/* Keep the stage in normal flow on short screens and contain long names. */
.lobby{overflow-x:hidden}.lobby-main{flex-shrink:0;min-height:535px}.hero-word{max-width:100%;overflow:hidden;text-align:center}.hero{min-height:0}
@media(min-width:1500px){.lobby-main{min-height:590px}}
@media(max-width:800px){.lobby-main{min-height:480px}}
@media(max-width:480px){.lobby-main{min-height:430px}.hero-word{font-size:65px;letter-spacing:-3px}}
@media(max-height:700px) and (min-width:801px){.lobby-main{min-height:455px}}
.wordmark .creator-credit{display:block;margin-top:8px;color:#e0cbea;font-size:9px;font-style:normal;font-weight:500;letter-spacing:.4px;line-height:1.2;white-space:nowrap}
@media(max-width:480px){.wordmark .creator-credit{font-size:7px;letter-spacing:0;margin-top:6px}}
/* JJCARDS wallet — 0.2.0 */
.jj-wallet{display:flex;align-items:center;gap:9px;padding:8px 11px;border:1px solid #e0bc6555;border-radius:9px;background:#251630;color:#ffdf78;text-align:left}
.jj-card-icon{display:inline-grid;place-items:center;width:26px;height:33px;border:2px solid #ffe19a;border-radius:5px;background:linear-gradient(145deg,#d7a951,#8c5b40);color:#28172f;font-size:12px;font-weight:1000;letter-spacing:-1px;transform:rotate(-9deg);box-shadow:3px 2px 0 #8d6594}
.jj-wallet b{display:block;font-size:18px;line-height:1.1}.jj-wallet small{display:block;font-size:7px;letter-spacing:1px;margin-top:4px;color:#e0c591}
.wallet-total{display:flex;justify-content:center;align-items:center;gap:16px;border:1px solid #cba55766;background:#21132f;border-radius:12px;padding:22px;margin:20px 0;color:#ffdf78}.wallet-total strong{font-size:40px}.wallet-total>span:last-child{font-size:12px;font-weight:bold;letter-spacing:2px}.wallet-total .jj-card-icon{width:37px;height:47px;font-size:18px}
.wallet-note{font-size:11px!important;color:#b59bc7!important}#result-reward{color:#ffdf78;font-size:17px;font-weight:bold}
@media(max-width:480px){.topbar{height:115px;align-items:flex-start}.wordmark{top:12px}.jj-wallet{position:absolute;top:80px;right:14px;padding:4px 8px;gap:7px}.jj-wallet .jj-card-icon{width:17px;height:22px;font-size:8px;border-width:1px}.jj-wallet>span:last-child{display:flex;gap:6px;align-items:center}.jj-wallet b{font-size:13px}.jj-wallet small{font-size:7px;margin:0}}
.jj-wallet small{position:static}
/* 0.3.0: shared SVG assets for lobby and arena; six-character roster. */
.hero-art>.brawler-portrait{width:100%;height:100%;object-fit:contain}
dialog .ch .brawler-portrait{display:block;width:100%;height:140px;object-fit:contain}
dialog:has(.chars){width:min(760px,calc(100% - 28px))}
#hero-name{max-width:100%;font-size:clamp(30px,4vw,44px)}
@media(max-width:480px){dialog .ch .brawler-portrait{height:100px}.hero-eyebrow{padding:0 6px;font-size:6px;line-height:1.5}#hero-name{font-size:30px}.fighter-summary strong{font-size:15px}}
/* 0.4.0 — collectible brawlers */
.unlock-price{display:block;margin:4px 0 10px;color:#b4e4c2;font-size:9px;font-weight:bold;letter-spacing:.4px}.ch.locked{border-style:dashed;border-color:#8e6aa3}.ch.locked .unlock-price{color:#ffdc78}.ch.locked .brawler-portrait{filter:saturate(.55)}
.unlock-detail{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center}.unlock-detail>.brawler-portrait{width:180px;height:225px;object-fit:contain}.unlock-detail p{font-size:13px}.unlock-detail #unlock-notice{color:#ffdc78;font-size:12px;min-height:40px}
.dialog-action:disabled{opacity:.5;cursor:not-allowed}.back-to-roster{border:0;background:none;color:#d1b4e7;font-size:12px;padding:15px 0 0}.unlock-play{font-size:18px!important;letter-spacing:0!important}.locked-preview{filter:drop-shadow(9px 15px 0 #1f0c372b) saturate(.6)}
@media(max-width:480px){.unlock-detail{grid-template-columns:1fr;gap:8px}.unlock-detail>.brawler-portrait{width:150px;height:170px;margin:auto}.unlock-detail .dialog-action{width:100%;font-size:11px}.unlock-price{font-size:8px;letter-spacing:0}.unlock-play{font-size:16px!important}}
/* 0.5.0 — independent touch controls with safe-area spacing. */
#game canvas{touch-action:none}
#touch-controls{position:absolute;inset:0;pointer-events:none;z-index:2}
#touch-controls[hidden]{display:none}
.touch-pad{position:absolute;bottom:calc(25px + env(safe-area-inset-bottom,0px));width:118px;height:118px;border:2px solid #d7d1ee88;border-radius:50%;background:radial-gradient(circle,#443e6470,#201b3da8);box-shadow:inset 0 0 0 10px #c1b7ed10,0 5px 18px #08051655;pointer-events:auto;touch-action:none;user-select:none;color:white;padding:0;cursor:grab}
#touch-move{left:calc(18px + env(safe-area-inset-left,0px))}
#touch-fire{right:calc(18px + env(safe-area-inset-right,0px));border-color:#ffa6baaa;background:radial-gradient(circle,#b4528399,#622c62aa)}
.touch-knob{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:44px;height:44px;border:2px solid #d5cbedaa;border-radius:50%;background:#9785b7b5;transform:translate(calc(-50% + var(--stick-x,0px)),calc(-50% + var(--stick-y,0px)));font-size:24px;pointer-events:none}
#touch-fire .touch-knob{background:#e792b1bb;border-color:#ffd4df;color:#471b3e}
.touch-pad small{position:absolute;bottom:9px;left:0;right:0;font-size:8px;font-weight:bold;letter-spacing:.6px;pointer-events:none;text-shadow:0 1px 3px #000}
.touch-pad.pressed{border-color:white;box-shadow:0 0 22px #b4a5ff66;cursor:grabbing}
#touch-super{position:absolute;right:calc(39px + env(safe-area-inset-right,0px));bottom:calc(162px + env(safe-area-inset-bottom,0px));width:76px;height:76px;border:2px solid #b9a779;border-radius:50%;background:linear-gradient(to top,#dfbd55 var(--charge,0%),#30233dd9 var(--charge,0%));color:#ffedb6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;pointer-events:auto;touch-action:none;box-shadow:0 4px 13px #0005;font-style:italic}
#touch-super strong{font-size:12px;letter-spacing:.5px}#touch-super small{font-size:9px;font-style:normal;font-weight:bold}
#touch-super:disabled{opacity:.75;filter:none;cursor:default}#touch-super.ready{background:#ffe071;color:#3d2442;border-color:#fff3bc;box-shadow:0 0 20px #ffda5e80}
.touch-mode #help,.touch-mode #super{display:none}
.touch-mode #bottom{left:50%;right:auto;transform:translateX(-50%);bottom:calc(30px + env(safe-area-inset-bottom,0px))}
.touch-mode #ammo{gap:4px;padding:7px}.touch-mode #ammo span{width:23px;height:10px}
.touch-mode #leave{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));bottom:auto;min-height:42px;z-index:3}
.touch-mode #timer{top:calc(12px + env(safe-area-inset-top,0px));font-size:20px}
.touch-mode #sb{top:calc(63px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));min-width:110px;max-width:155px;font-size:10px}
.touch-mode #feed{top:calc(65px + env(safe-area-inset-top,0px));max-width:calc(100% - 180px);font-size:10px}
@media(max-width:350px),(max-height:450px){.touch-pad{width:100px;height:100px;bottom:calc(18px + env(safe-area-inset-bottom,0px))}.touch-knob{width:38px;height:38px;font-size:21px}#touch-super{width:64px;height:64px;right:calc(35px + env(safe-area-inset-right,0px));bottom:calc(135px + env(safe-area-inset-bottom,0px))}.touch-mode #bottom{bottom:calc(21px + env(safe-area-inset-bottom,0px))}.touch-mode #sb{top:calc(54px + env(safe-area-inset-top,0px));font-size:9px}.touch-mode #feed{top:calc(54px + env(safe-area-inset-top,0px));font-size:9px}}
/* 0.6.0 — explicit defeat and a deliberate next action. */
dialog.defeat-dialog{width:min(490px,calc(100% - 28px));text-align:center;padding:32px;background:radial-gradient(ellipse at 50% 20%,#6d3c7a,#29173e 80%);border-color:#c77da477;box-shadow:0 25px 100px #11091dcc}
.defeat-eyebrow{font-size:9px;letter-spacing:2px;color:#d7acd5;font-weight:bold}.defeat-icon{width:82px;height:82px;display:grid;place-items:center;margin:23px auto 18px;border:2px solid #f3b1be66;border-radius:50%;color:#f9b2bf;background:#e69daf17;box-shadow:0 0 34px #f09bb51a}.defeat-icon svg{width:45px;height:45px}
.defeat-dialog h2{font-size:37px;line-height:1.08;margin:0 0 14px;color:#fff3f0;letter-spacing:-.8px;text-shadow:0 3px 0 #30152f}.defeat-dialog #defeat-copy{font-size:13px;line-height:1.7;max-width:340px;margin:0 auto;color:#e0c6dd}.defeat-dialog #defeat-summary{font-size:11px;color:#bba2cc;margin:18px 0 24px}
.defeat-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.defeat-actions .dialog-action{margin:0;min-height:50px;padding:12px 9px;font-size:11px;letter-spacing:.3px}.defeat-actions .secondary{background:#3d2855;color:#ead9ed;border-color:#ac86ba66}.defeat-actions .dialog-action:hover{filter:brightness(1.1)}
@media(max-width:480px){dialog.defeat-dialog{padding:27px 20px}.defeat-dialog h2{font-size:32px}.defeat-actions{grid-template-columns:1fr}.defeat-actions .dialog-action{min-height:49px}.defeat-icon{margin-top:20px}}
@media(max-height:460px){dialog.defeat-dialog{padding:18px 26px;max-height:calc(100dvh - 24px)}.defeat-icon{width:46px;height:46px;margin:10px auto}.defeat-icon svg{width:29px;height:29px}.defeat-dialog h2{font-size:27px;margin-bottom:9px}.defeat-dialog #defeat-copy{font-size:11px}.defeat-dialog #defeat-summary{margin:10px 0 14px}.defeat-actions{grid-template-columns:1fr 1fr}.defeat-actions .dialog-action{min-height:42px}}
/* 0.7.0 — visible viewport, game-only gesture lock, compact mobile lobby. */
button,a{touch-action:manipulation}
.lobby{height:100vh;height:100dvh;height:var(--app-height,100dvh);max-height:var(--app-height,100dvh);bottom:auto;overscroll-behavior:contain}
html.game-session,html.game-session body{position:fixed;inset:0;width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
.game-session #game,.game-session #hud{inset:auto;position:fixed;left:var(--app-left,0px);top:var(--app-top,0px);width:var(--app-width,100vw);height:var(--app-height,100dvh);max-width:100%;overflow:hidden;overscroll-behavior:none;touch-action:none}
.game-session #game canvas{display:block!important;max-width:100%;touch-action:none}
.game-session #results{max-height:var(--app-height,100dvh);overflow:auto;overscroll-behavior:contain;touch-action:pan-y}
#fullscreen-toggle{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));left:calc(95px + env(safe-area-inset-left,0px));width:42px;height:42px;z-index:3;pointer-events:auto;touch-action:manipulation;background:#21172bcc;color:#fff;border:1px solid #ffffff55;border-radius:8px;font-size:25px;display:grid;place-items:center;padding:0}
#fullscreen-toggle[hidden]{display:none}
@media(max-width:800px) and (orientation:portrait){
  .lobby{overflow:hidden}
  .lobby-main{min-height:0!important;flex:1 1 0;grid-template-rows:minmax(0,1fr);padding:8px 13px 0}
  .hero{min-height:0;padding-bottom:118px;justify-content:flex-end}
  .hero-art{height:clamp(110px,calc(var(--app-height,100dvh) - 470px),275px);width:min(275px,100%);max-width:100%;flex-shrink:1}
  .pedestal{height:40px;width:min(220px,90%);bottom:108px}.floor-ring{width:250px;height:65px;bottom:94px}
  .side-nav{padding-top:12px;gap:8px;min-height:0}.nav-item{padding:10px 3px;gap:6px;min-height:45px}.nav-caption{display:none}
  .lobby-bottom{padding:10px 14px;font-size:6px;min-height:28px}
  .play-dock{margin-top:8px}.hero-eyebrow{top:4px}.character-label{max-width:100%}
}
@media(max-width:480px){
  .topbar{height:105px;flex-shrink:0}.jj-wallet{top:70px}
  #fullscreen-toggle{right:calc(12px + env(safe-area-inset-right,0px));left:auto}
}
@media(max-height:480px) and (min-width:600px){
  .lobby{overflow:hidden}.topbar{height:65px;padding:8px 18px}.profile{padding:4px 10px 4px 4px;min-width:180px}.profile-avatar{width:38px;height:40px;font-size:26px}.profile strong{font-size:13px;margin-bottom:5px}.profile small{font-size:7px}
  .wordmark>span{font-size:18px}.wordmark>b{font-size:28px}.wordmark .creator-credit{font-size:7px;margin-top:5px}
  .top-info>span{display:none}.top-info{gap:9px}.jj-wallet{position:static;padding:6px 9px}.jj-wallet b{font-size:15px}
  .lobby-main{min-height:0!important;flex:1 1 0;grid-template-columns:100px minmax(0,1fr);grid-template-rows:minmax(0,1fr);padding:6px 18px 0;gap:12px}.right-rail,.nav-caption{display:none}
  .side-nav{padding:0;gap:6px}.nav-item{padding:7px 8px;gap:7px;min-height:32px;flex-direction:row;font-size:7px;text-align:left}.nav-item svg{width:18px;height:18px}.nav-item em{font-size:8px;top:-3px}
  .hero{display:grid;grid-template-columns:minmax(140px,1fr) minmax(190px,1fr);align-items:center;justify-content:normal;min-height:0;padding:0}
  .hero-art{grid-column:1;height:clamp(110px,calc(var(--app-height,100dvh) - 210px),190px);width:190px;max-width:95%;margin:auto}.character-label{grid-column:2;position:static;text-align:left;place-self:center;max-width:100%;padding-left:10px}
  .hero-word,.hero-eyebrow,.decor,.hero-prev,.hero-next{display:none}.pedestal{width:155px;height:25px;left:25%;bottom:6px}.floor-ring{display:none}#hero-name{font-size:32px}.character-label p{margin:7px 0;font-size:10px}.change-character{font-size:8px}
  .play-dock{grid-template-columns:1fr 1fr;margin:6px 18px 0;padding:9px;gap:12px}.fighter-summary{display:none}.mode-card{padding:8px 10px}.play-area{gap:5px}.play-area .play{font-size:24px;padding:6px 14px;min-height:42px}.match-note{font-size:7px}.lobby-bottom{padding:7px 18px;min-height:23px}.lobby-bottom>span:nth-child(2){display:none}
}
/* Whole-app fullscreen starts from one explicit user gesture. */
.app-session{overscroll-behavior:none}
/* 0.8.1: reserve the iPhone cutout and Home indicator inside the app frame. */
:root{--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--usable-height:calc(var(--app-height,100dvh) - var(--safe-top) - var(--safe-bottom))}
#viewport-probe{position:fixed;top:0;left:0;width:100vw;height:100vh;width:100dvw;height:100dvh;visibility:hidden;pointer-events:none;z-index:-1}
.lobby{right:auto;width:var(--app-width,100%);padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}
dialog{max-height:min(85dvh,calc(var(--usable-height) - 24px));max-width:calc(var(--app-width,100vw) - var(--safe-left) - var(--safe-right) - 24px);top:var(--safe-top);bottom:var(--safe-bottom);left:var(--safe-left);right:var(--safe-right);margin:auto}
dialog#collection-dialog,dialog.defeat-dialog,dialog.launch-dialog{max-height:calc(var(--usable-height) - 24px)}
@media(max-width:800px) and (orientation:portrait){.hero-art{height:clamp(80px,calc(var(--usable-height) - 470px),275px)}}
@media(max-height:480px) and (min-width:600px){.hero-art{height:clamp(90px,calc(var(--usable-height) - 210px),190px)}}
dialog.launch-dialog{width:min(420px,calc(100% - 28px));text-align:center;padding:30px;background:radial-gradient(circle at 50% 10%,#6c479f,#28153e 80%)}
.launch-dialog>img{border-radius:22px;box-shadow:0 7px 25px #180b2d55}.launch-dialog h2{font-size:37px;color:#ffe078;letter-spacing:-1px;margin:16px 0 10px}.launch-dialog>p{font-size:14px;line-height:1.6;color:#e3ccec}.launch-dialog .dialog-action{width:100%;min-height:52px;font-size:15px}.launch-dialog .launch-hint{font-size:10px;color:#bca3ce;margin:20px 0 0;line-height:1.7}
@media(max-height:480px){dialog.launch-dialog{padding:18px 25px;max-height:calc(100dvh - 24px)}.launch-dialog>img{width:56px;height:56px;border-radius:15px}.launch-dialog h2{font-size:28px;margin:9px 0}.launch-dialog>p{font-size:12px;margin:7px 0}.launch-dialog .dialog-action{min-height:44px;margin-top:6px}.launch-dialog .launch-hint{font-size:9px;margin-top:10px}}
dialog.launch-dialog{max-height:calc(var(--usable-height) - 24px)}
/* 0.8.2: one fixed application surface, with scrolling confined to dialogs. */
html,body{position:fixed;inset:0;width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
body{width:var(--app-width,100%);height:var(--app-height,100dvh)}
.lobby{overflow:hidden;max-height:var(--app-height,100dvh)}
.lobby-main{min-height:0!important;flex:1 1 0}
dialog#rotate-dialog{position:fixed;inset:0;margin:0;width:var(--app-width,100vw);height:var(--app-height,100dvh);max-width:none;max-height:none;border:0;border-radius:0;padding:calc(var(--safe-top) + 24px) calc(var(--safe-right) + 24px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 24px);background:radial-gradient(ellipse at 50% 35%,#6e3ca2,#261440 75%);color:#fff1d7;text-align:center;box-shadow:none;overflow:hidden;overscroll-behavior:none;touch-action:none}
#rotate-dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
#rotate-dialog::backdrop{background:#261440}
.rotate-symbol{width:110px;height:110px;color:#ffe188;filter:drop-shadow(0 8px 12px #160a294d)}.rotate-symbol svg{width:100%;height:100%}
#rotate-dialog>span{font-size:8px;font-weight:800;letter-spacing:2px;color:#d1b4e7}
#rotate-dialog h2{font-size:clamp(28px,8vw,42px);line-height:1.08;letter-spacing:-1px;margin:0;color:#ffe188;text-shadow:0 3px 0 #291333}
#rotate-dialog p{max-width:310px;font-size:14px;line-height:1.7;margin:0;color:#e4d1f1}
#rotate-dialog small{max-width:270px;font-size:10px;line-height:1.7;color:#bda0d1;margin-top:10px}
@media(max-height:580px){#rotate-dialog[open]{gap:9px}.rotate-symbol{width:74px;height:74px}#rotate-dialog p{font-size:12px}#rotate-dialog h2{font-size:29px}#rotate-dialog small{margin-top:3px}}
/* Larger thumb targets for landscape phones; Super sits beside the fire pad. */
#touch-controls{--pad-size:clamp(132px,calc(var(--app-height,100dvh) * .4),168px);--super-size:clamp(84px,calc(var(--app-height,100dvh) * .26),104px)}
.touch-pad{width:var(--pad-size);height:var(--pad-size);bottom:calc(16px + var(--safe-bottom));border-width:3px;box-shadow:inset 0 0 0 12px #c1b7ed14,0 6px 20px #08051666}
#touch-move{left:calc(18px + var(--safe-left));background:radial-gradient(circle,#68558cb3,#28203ebd)}
#touch-fire{right:calc(18px + var(--safe-right));background:radial-gradient(circle,#c35b8eb8,#622c62c9)}
.touch-knob{width:calc(var(--pad-size) * .4);height:calc(var(--pad-size) * .4);font-size:32px;border-width:3px;background:#b39bd9e6}
.touch-pad small{bottom:12px;font-size:10px;letter-spacing:.9px}
#touch-super{width:var(--super-size);height:var(--super-size);right:calc(var(--safe-right) + var(--pad-size) + 36px);bottom:calc(20px + var(--safe-bottom));border-width:3px;gap:7px}
#touch-super strong{font-size:16px}#touch-super small{font-size:12px}
.touch-mode #bottom{top:calc(58px + var(--safe-top));bottom:auto;left:50%;right:auto;transform:translateX(-50%)}
.touch-mode #ammo{gap:5px;padding:8px}.touch-mode #ammo span{width:28px;height:12px}
