:root{--ink:#12364b;--navy:#153b53;--cream:#fff0c8;--paper:#eed8a2;--red:#c23e2c;--gold:#e6ad3e;--cyan:#63c7e8;--safe-top:max(10px,env(safe-area-inset-top));--safe-bottom:max(8px,env(safe-area-inset-bottom))}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#0d2d3e;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;color:var(--ink)}button{border:0;font:inherit;color:inherit;touch-action:manipulation}.game-shell{position:relative;width:100%;max-width:430px;height:100dvh;min-height:640px;margin:auto;overflow:hidden;background:#e7d09a;isolation:isolate}.scene-art{position:absolute;inset:-10px;background:linear-gradient(#fff7ddaa,#fff7ddaa),url("assets/blackcat-battle-direction.png") center/cover no-repeat;background-blend-mode:screen;filter:saturate(.7) contrast(.82) blur(1px);opacity:.75;z-index:-4}.scene-art:after{content:"";position:absolute;inset:0;background:linear-gradient(#fff4cd98 0 14%,#fff0c766 45%,#143b52dc 88%)}.safe-frame{position:absolute;inset:calc(var(--safe-top) + 4px) 7px calc(var(--safe-bottom) + 5px);border:1px solid #ffe9a84d;border-radius:25px;z-index:50;pointer-events:none}
.hud-cluster{position:absolute;left:10px;right:104px;top:calc(var(--safe-top) + 7px);height:67px;display:flex;align-items:center;padding:6px 9px 6px 64px;border:2px solid var(--gold);border-radius:15px;background:linear-gradient(105deg,#0e3047,#1f5066);color:var(--cream);box-shadow:0 5px 0 #09283a,0 8px 14px #0004;z-index:12}.commander-token{position:absolute;left:5px;bottom:-4px;width:57px;height:70px;overflow:hidden;border:3px solid #f6d674;border-radius:14px 14px 23px 23px;background:#0a2230}.commander-token .sprite{position:absolute;inset:0}.commander-token>i{position:absolute;right:1px;top:1px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff;font-size:11px;font-style:normal;font-weight:900}.mission-copy{display:flex;flex-direction:column;min-width:0}.mission-copy strong{font-size:14px}.mission-copy small{color:#e9c978;font-size:10px}.currency{position:absolute;right:8px;display:flex;align-items:center;gap:3px;min-width:60px;font-size:12px}.currency i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:900}.currency.coin{top:7px}.currency.star{bottom:7px}.currency.coin i{background:var(--gold);color:#4a2b10}.currency.star i{background:var(--red);color:#ffe890}.wechat-capsule{position:absolute;right:11px;top:calc(var(--safe-top) + 9px);width:86px;height:34px;border:2px solid var(--ink);border-radius:20px;background:#fff1d4e8;display:flex;align-items:center;justify-content:space-around;z-index:14}.wechat-capsule span:first-child{width:15px;height:6px;border-radius:5px;background:var(--ink)}.wechat-capsule span:last-child{width:9px;height:9px;border:2px solid var(--ink);border-radius:50%}.rival-monitor{position:absolute;right:11px;top:calc(var(--safe-top) + 49px);width:176px;height:49px;padding:5px 28px 5px 44px;border:2px solid #a53728;border-radius:12px;background:#fff0c9ed;box-shadow:0 4px 0 #8c3025;z-index:11}.rival-face{position:absolute;left:5px;top:5px;width:35px;height:35px;border:2px solid var(--red);border-radius:50%;display:grid;place-items:center;background:#f7ebcb;font-weight:900}.rival-monitor div{display:flex;flex-direction:column}.rival-monitor b{font-size:11px}.rival-monitor small{font-size:9px;white-space:nowrap}.rival-monitor i{font-style:normal}.signal-lamp{position:absolute;right:7px;top:15px;width:13px;height:13px;border-radius:50%;background:#5fd687;box-shadow:0 0 9px #5fd687}.signal-lamp.alert{background:#f04432;box-shadow:0 0 12px #f04432;animation:blink .55s infinite alternate}@keyframes blink{to{opacity:.25}}
.battlefield{position:absolute;left:7px;right:7px;top:105px;bottom:221px;overflow:hidden;border:3px solid #e6b94f;border-radius:20px;background:linear-gradient(#fff2c799,#d6bc8277);box-shadow:inset 0 0 35px #173b5255,0 6px 0 #0e354a;z-index:2}.mission-ribbon{position:absolute;left:50%;top:7px;translate:-50% 0;height:29px;display:flex;align-items:center;border:2px solid #efcf75;border-radius:15px;background:#153b53ee;color:#fff0c9;z-index:10;white-space:nowrap}.mission-ribbon span{height:100%;padding:5px 10px;border-radius:13px;background:var(--red);font-size:10px;font-weight:900}.mission-ribbon b{padding:0 11px;font-size:10px}.board{position:absolute;left:5%;right:5%;top:12%;bottom:8%;display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(6,1fr);transform:perspective(520px) rotateX(6deg);transform-origin:center bottom}.cell{position:relative;margin:1px;padding:0;border:1px solid #fff5d5bf;border-radius:4px;background:#3157658c}.cell.path{background:#c9503fdc;border-color:#ffdfb5}.cell.path:after{content:"›";position:absolute;inset:0;display:grid;place-items:center;color:#ffe8ae;font-size:15px;font-weight:900}.cell.path.vertical:after{content:"⌄"}.cell.unlocked{background:#e5ae42e8;border:2px solid #fff3a4;box-shadow:inset 0 0 10px #fff4a888;cursor:pointer}.cell.unlocked.drop-ready{animation:slotPulse .6s infinite alternate}@keyframes slotPulse{to{filter:brightness(1.4);box-shadow:0 0 14px #69dfff}}.cell.blocked:before{content:"▥";position:absolute;inset:0;display:grid;place-items:center;color:#493c2d99;font-size:14px}.entry-beacon,.base-beacon{position:absolute;left:3px;display:flex;align-items:center;gap:3px;color:#fff0c9;font-size:8px;font-weight:800;z-index:9}.entry-beacon{top:25%}.base-beacon{bottom:21%}.entry-beacon i,.base-beacon i{width:18px;height:18px;border:4px solid #ff866e;border-radius:50%;background:#a72e24;box-shadow:0 0 10px #ff624b}.base-beacon i{border-color:#ffe582;background:#c89126;box-shadow:0 0 10px #ffe582}
.sprite{display:block;background-image:url("assets/police-unit-lineup-v02.png");background-repeat:no-repeat;background-size:400% 100%}.sprite-baton{background-position:0 50%}.sprite-water{background-position:33.333% 50%}.sprite-sling{background-position:66.666% 50%}.sprite-car{background-position:100% 50%}.unit{position:absolute;width:44px;height:55px;translate:-50% -72%;padding:0;border:0;background-color:transparent;background-image:url("assets/police-unit-lineup-v02.png");background-repeat:no-repeat;background-size:400% 100%;filter:drop-shadow(0 4px 2px #0006);z-index:16;transition:filter .15s,scale .15s}.unit.baton{background-position:0 50%}.unit.water{background-position:33.333% 50%}.unit.sling{background-position:66.666% 50%}.unit.car{background-position:100% 50%}.unit.selected{filter:drop-shadow(0 0 7px #79e6ff) brightness(1.12);scale:1.12}.unit.attacking{animation:unitHit .22s ease-out}@keyframes unitHit{50%{scale:1.22;translate:-46% -74%}}.unit .level{position:absolute;right:-3px;top:-3px;width:19px;height:19px;display:grid;place-items:center;border:2px solid #fff2a8;border-radius:50%;background:var(--red);color:#fff;font-size:9px;font-weight:900}.range-ring{position:absolute;width:108px;height:108px;translate:-50% -50%;border:2px dashed #72daf6;border-radius:50%;background:#72daf622;box-shadow:0 0 18px #72daf666;z-index:5;pointer-events:none}.enemy{position:absolute;width:34px;height:38px;translate:-50% -50%;border:2px solid #3b2925;border-radius:48% 48% 42% 42%;display:grid;place-items:center;background:#73605a;color:#fff2c5;font-size:17px;font-weight:900;box-shadow:0 3px 3px #0005;z-index:18;transition:left .2s linear,top .2s linear}.enemy:before{content:"";position:absolute;left:2px;right:2px;top:-7px;height:4px;border-radius:4px;background:linear-gradient(90deg,#ef4c38 var(--hp),#1a2830 var(--hp))}.enemy.stunned{filter:grayscale(1) brightness(1.5);box-shadow:0 0 15px #ffe75c}.enemy.hit{animation:enemyHit .18s}@keyframes enemyHit{50%{filter:brightness(2);translate:-45% -50%}}.enemy.dead{animation:enemyOut .28s forwards}@keyframes enemyOut{to{scale:1.8;opacity:0;rotate:20deg}}.damage-number{position:absolute;translate:-50% -50%;color:#fff09a;font-size:13px;font-weight:900;text-shadow:0 2px 0 #9e2f24;z-index:25;animation:damageUp .6s forwards}@keyframes damageUp{to{translate:-50% -180%;opacity:0}}.shot{position:absolute;height:5px;width:48px;border-radius:5px;background:#67dcff;box-shadow:0 0 8px #fff;z-index:22;animation:shot .22s forwards}@keyframes shot{to{translate:45px 0;opacity:0}}.battle-callout{position:absolute;left:50%;bottom:8px;translate:-50% 0;max-width:75%;padding:6px 11px;border:2px solid #e7c563;border-radius:12px;background:#153b53e8;color:#fff1c8;font-size:10px;text-align:center;z-index:30;transition:.2s}.battle-callout.hide{opacity:0;translate:-50% 8px}.countdown{position:absolute;inset:0;place-items:center;background:#153b5355;color:#ffe27a;font-size:96px;font-weight:1000;text-shadow:0 7px 0 #a82e24;z-index:40}.countdown:not([hidden]){display:grid;animation:countPop .48s ease-out}@keyframes countPop{from{scale:.3;opacity:0}to{scale:1;opacity:1}}
.command-deck{position:absolute;left:7px;right:7px;bottom:calc(var(--safe-bottom) + 22px);height:193px;padding:7px 8px 8px;border:3px solid var(--gold);border-radius:19px;background:linear-gradient(#1d526a,#0e3047);box-shadow:0 -4px 0 #08293a,0 -9px 20px #0005;z-index:35}.deck-topline{height:21px;display:flex;align-items:center;justify-content:space-between;padding:0 4px;color:#fff0c9;font-size:9px}.deck-topline span{display:flex;align-items:center;gap:5px}.deck-topline small{color:#8fdaf0}.pulse-dot{width:7px;height:7px;border-radius:50%;background:#64dc8a;box-shadow:0 0 8px #64dc8a}.dossier-rail{height:82px;display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.dossier{position:relative;min-width:0;overflow:hidden;border:2px solid #e7c365;border-radius:10px;background:#f7e5ba;box-shadow:inset 0 -5px #d7bd7d;transition:.12s}.dossier:active{translate:0 2px}.dossier.selected{translate:0 -4px;border-color:#72dfff;box-shadow:0 0 13px #72dfff}.dossier.used{opacity:.28;filter:grayscale(1)}.dossier .portrait{position:absolute;left:2px;right:2px;top:2px;height:57px;background-color:#d5c28e;border-radius:7px}.dossier .rank{position:absolute;left:4px;top:4px;padding:1px 4px;border-radius:7px;background:#b33526;color:#fff2c4;font-size:8px;font-weight:900}.dossier .name{position:absolute;left:2px;right:2px;bottom:3px;text-align:center;color:#183b50;font-size:9px;font-weight:900;white-space:nowrap}.command-row{height:70px;margin-top:5px;display:grid;grid-template-columns:1.25fr .72fr .72fr 1.45fr;gap:5px}.command-row button{position:relative;min-height:62px;border:2px solid #f1d37e;box-shadow:inset 0 -5px #0003,0 2px 0 #061e2a;transition:.1s}.command-row button:active{translate:0 3px;box-shadow:inset 0 -2px #0003}.phone-command{padding-left:38px;border-radius:13px;background:#f1dca8;display:flex;flex-direction:column;align-items:center;justify-content:center}.phone-icon{position:absolute;left:6px;font-size:30px;font-style:normal;color:#a63527;rotate:-8deg}.phone-command span,.dispatch-command span{font-size:11px;font-weight:900}.phone-command small,.dispatch-command small{font-size:8px;margin-top:3px}.round-command{border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}.round-command>i{font-size:22px;font-style:normal;font-weight:900}.round-command span{font-size:8px}.merge-command{background:#d79b2f}.whistle-command{overflow:hidden;background:#3c91ba}.whistle-command em{position:absolute;inset:3px;border:3px solid #8ee9ff;border-radius:50%;border-top-color:transparent;rotate:35deg}.dispatch-command{border-radius:13px;background:linear-gradient(#d9503b,#a72d25);color:#fff1c4;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-left:29px}.siren{position:absolute;left:8px;top:17px;width:27px;height:27px;border-radius:13px 13px 5px 5px;background:#ef4635;border:3px solid #ffe590;box-shadow:0 0 10px #ff5843;font-style:normal}.siren b{position:absolute;left:4px;right:4px;top:4px;height:5px;border-radius:4px;background:#fff8b0}.phase-battle .dossier-rail{filter:saturate(.5);opacity:.62}.phase-battle .dispatch-command{background:#5a6570}.phase-battle .siren{animation:blink .35s infinite alternate}.phase-countdown .command-deck{pointer-events:none}
.radio-toast{position:absolute;left:50%;top:42%;translate:-50% -50%;min-width:170px;max-width:78%;padding:8px 12px;border:2px solid #e6bc55;border-radius:13px;background:#10354be8;color:#fff2c7;font-size:10px;display:flex;align-items:center;gap:7px;opacity:0;pointer-events:none;z-index:70;transition:.2s}.radio-toast.show{opacity:1;translate:-50% -56%}.radio-toast i{color:#69dcfa;font-style:normal}.result-screen{position:absolute;inset:0;padding:22px;display:grid;place-items:center;background:#102e40d9;z-index:90}.result-screen[hidden]{display:none}.report-card{position:relative;width:100%;padding:24px 16px 16px;border:4px solid #dba335;border-radius:20px;background:#f6e2b1;box-shadow:0 12px 0 #092c40,0 20px 45px #0007;text-align:center}.report-card>small{letter-spacing:4px;color:#9b3a2a}.report-card h2{margin:7px 0 13px}.stamp{position:absolute;right:14px;top:11px;width:53px;height:53px;border:5px double #b53b2d;border-radius:50%;display:grid;place-items:center;color:#b53b2d;font-size:22px;font-weight:1000;rotate:-13deg;opacity:.75}.report-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:10px}.report-stats span{padding:8px 3px;border:1px solid #c8a35c;border-radius:9px;background:#fff0c8;font-size:9px}.report-stats b{display:block;margin-top:3px;font-size:16px}.danger-preview{display:flex;align-items:center;justify-content:center;gap:7px;padding:7px;border-radius:8px;background:#183b50;color:#fff0c9;font-size:10px}.danger-preview i{width:9px;height:9px;border-radius:50%;background:#f04b36;box-shadow:0 0 7px #f04b36}.report-card button{width:100%;min-height:53px;margin-top:8px;border-radius:12px}.tv-reward{position:relative;padding-left:48px;background:#e3a635;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900}.tv-reward>i{position:absolute;left:13px;font-size:28px;font-style:normal}.tv-reward small{font-size:8px}.continue-command{background:#d8c18a;font-weight:800}.prototype-note{position:absolute;left:0;right:0;bottom:3px;color:#fff0c9;text-align:center;font-size:7px;z-index:60}
@media(max-height:700px){.hud-cluster{height:58px}.commander-token{height:61px}.rival-monitor{top:calc(var(--safe-top) + 43px)}.battlefield{top:96px;bottom:203px}.command-deck{height:174px}.dossier-rail{height:70px}.dossier .portrait{height:47px}.command-row{height:64px}.command-row button{min-height:57px}.battle-callout{bottom:4px}.mission-ribbon{top:4px}}

/* V02 visual QA: opponent information is a compact monitor, not a web card. */
.rival-monitor{top:calc(var(--safe-top) + 70px);width:132px;height:37px;padding:3px 22px 3px 35px;border-radius:10px}
.rival-face{left:4px;top:3px;width:27px;height:27px;font-size:10px}
.rival-monitor b{font-size:9px}.rival-monitor small{font-size:7px}.signal-lamp{right:6px;top:10px;width:11px;height:11px}
.battlefield{top:114px}
@media(max-height:700px){.rival-monitor{top:calc(var(--safe-top) + 60px)}.battlefield{top:105px}}

/* V03 — art-led game interface. Original board coordinates remain unchanged. */
.scene-art{background:linear-gradient(#fff5d055,#fff5d055),url("assets/battlefield-street-v03.png") center/cover no-repeat;filter:saturate(.9) contrast(.95);opacity:.86}
.hud-cluster{height:72px;padding-left:72px;border-width:3px;border-radius:10px 22px 10px 22px;background:linear-gradient(112deg,#0b2c42 0 72%,#174f69);box-shadow:0 5px 0 #071f2d,0 8px 0 #d29a32,0 12px 18px #0004}
.hud-cluster:before,.hud-cluster:after{content:"";position:absolute;width:17px;height:17px;border:4px solid #e9b445}.hud-cluster:before{left:-3px;top:-3px;border-right:0;border-bottom:0}.hud-cluster:after{right:-3px;bottom:-3px;border-left:0;border-top:0}.commander-token{width:65px;height:78px;left:3px;bottom:-7px;border-radius:9px 9px 26px 26px;background:radial-gradient(circle at 50% 32%,#2d6781,#071f2e 72%)}.commander-token img{width:100%;height:100%;object-fit:cover;object-position:50% 16%;scale:1.35;translate:0 11%}.mission-copy strong{font-size:16px;letter-spacing:1px}.mission-copy small{font-size:11px}.currency{right:7px;font-size:13px}.currency i{width:25px;height:25px;box-shadow:inset 0 -3px #0003}
.battlefield{top:118px;bottom:252px;border-width:4px;border-radius:16px;background:#d8bd80;box-shadow:inset 0 0 0 3px #173b5277,inset 0 0 35px #173b5266,0 7px 0 #0b2d42}.battlefield:before{content:"";position:absolute;inset:0;background:url("assets/battlefield-street-v03.png") center 32%/cover no-repeat;filter:saturate(.84) contrast(.9);opacity:.83}.battlefield:after{content:"";position:absolute;inset:0;background:linear-gradient(#fff3c844 0 68%,#173b5238);pointer-events:none}.mission-ribbon{left:10px;top:6px;translate:0 0;height:31px;border-width:3px;z-index:32}.mission-ribbon span{font-size:11px}.mission-ribbon b{font-size:11px}.rival-monitor{left:auto;right:6px;top:5px;width:92px;height:45px;padding:5px 18px 4px 34px;border:3px solid #d1a147;border-radius:7px;background:linear-gradient(#1d5269,#092a3d);color:#fff2c8;box-shadow:inset 0 0 0 2px #071e2c,0 3px 0 #071e2c;z-index:34;overflow:hidden}.monitor-scan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,#fff2 4px);pointer-events:none}.rival-face{left:5px;top:8px;width:25px;height:25px;border-color:#e6b348;background:#f4e5b9;color:#173b52}.rival-monitor b{font-size:9px}.rival-monitor small{font-size:7px;color:#f0cf75}.signal-lamp{right:5px;top:15px;width:9px;height:9px}.board{left:7%;right:7%;top:15%;bottom:7%;z-index:8}.cell{border-color:#fff0c596;background:#3254676e;backdrop-filter:blur(.3px)}.cell.blocked{background:linear-gradient(135deg,#9a774d99,#6b563f99)}.cell.blocked:before{content:"";inset:13%;border:2px solid #4f3d2bbb;border-radius:2px;background:linear-gradient(45deg,transparent 45%,#4f3d2b77 47% 53%,transparent 55%),linear-gradient(-45deg,transparent 45%,#4f3d2b77 47% 53%,transparent 55%)}.cell.path{background:#c64835c9;border-color:#ffe7a9;box-shadow:inset 0 0 8px #7d251d66}.cell.unlocked{background:#e9b13bc9;border-color:#fff4a4;box-shadow:inset 0 0 15px #fff6adbb,0 0 8px #ffc83c66}.entry-beacon,.base-beacon{z-index:26}.battle-callout{font-size:12px;bottom:7px;padding:7px 14px;z-index:31}
.sprite{background-image:none}.dossier .portrait{background-image:none}.unit{width:64px;height:78px;background-size:contain;background-position:center bottom!important;filter:drop-shadow(0 5px 3px #0007)}.unit.baton{background-image:url("assets/unit-baton-cutout-v03.png")}.unit.water{background-image:url("assets/unit-water-cutout-v03.png")}.unit.sling{background-image:url("assets/unit-sling-cutout-v03.png")}.unit.car{width:72px;background-image:url("assets/unit-car-cutout-v03.png")}.unit .level{width:23px;height:23px;font-size:11px;right:0}.enemy{width:39px;height:43px}
.command-deck{height:224px;bottom:calc(var(--safe-bottom) + 21px);padding:8px 9px;border-width:4px;border-radius:14px 14px 24px 24px;background:linear-gradient(#164e68,#092b40);box-shadow:inset 0 0 0 3px #071f2d,0 -5px 0 #d59e34,0 -10px 22px #0005}.deck-topline{height:25px;font-size:11px}.deck-topline small{font-size:9px}.dossier-rail{height:104px;gap:6px}.dossier{border-width:3px;border-radius:8px 8px 14px 14px;background:linear-gradient(#fff2c9,#d9b96f);box-shadow:inset 0 -7px #aa733c,0 3px 0 #061e2c;overflow:visible}.dossier .portrait{position:absolute;left:2px;right:2px;top:-5px;height:83px;display:block;width:calc(100% - 4px);object-fit:contain;object-position:center bottom;filter:drop-shadow(0 3px 2px #0005);z-index:2}.dossier .rank{z-index:4;left:3px;top:3px;font-size:9px;padding:2px 5px;border:2px solid #ffe597}.dossier .name{bottom:5px;font-size:10px;z-index:5;text-shadow:0 1px #fff3cf}.dossier .level-chip{position:absolute;right:2px;top:3px;z-index:6;width:23px;height:23px;display:grid;place-items:center;border:2px solid #fff0a0;border-radius:50%;background:#173b52;color:#fff;font-size:10px;font-weight:900}.dossier .pair-badge{position:absolute;right:-4px;bottom:18px;z-index:8;padding:2px 4px;border:2px solid #fff3a7;border-radius:9px;background:#e59f25;color:#4a2a10;font-size:8px;font-weight:1000;animation:pairPulse .55s infinite alternate}@keyframes pairPulse{to{scale:1.14;filter:brightness(1.25)}}.dossier.pair-ready{border-color:#ffe04c;box-shadow:0 0 14px #ffd82d,inset 0 -7px #aa733c}.dossier.pair-ready:before{content:"";position:absolute;inset:-5px;border:2px dashed #75ddf7;border-radius:13px;animation:blink .7s infinite alternate}.dossier.used .portrait{filter:grayscale(1);opacity:.3}
.command-row{height:80px;margin-top:5px;grid-template-columns:1.05fr .78fr .78fr 1.25fr;gap:7px}.command-row button{min-height:76px;border:0;box-shadow:none}.art-command{position:relative;overflow:visible;background:none!important;display:flex;align-items:flex-end;justify-content:center;padding:0 2px 5px}.art-command img{position:absolute;width:70px;height:70px;object-fit:contain;left:50%;top:-4px;translate:-50% 0;filter:drop-shadow(0 4px 2px #0007);transition:.12s}.art-command span{position:relative;z-index:4;padding:2px 7px;border:2px solid #e9c25f;border-radius:9px;background:#12384ee8;color:#fff1c5;font-size:10px;font-weight:900;white-space:nowrap}.art-command small{position:absolute;right:-1px;top:0;z-index:5;padding:2px 4px;border-radius:7px;background:#b72f25;color:#fff;font-size:8px}.art-command:active img{translate:-50% 4px;scale:.94}.phone-command img{width:76px;height:76px}.merge-command img,.whistle-command img{width:72px;height:72px}.dispatch-command img{width:83px;height:83px;top:-10px}.dispatch-command span{background:#a72e25f2;border-color:#ffe078}.merge-command.ready img{animation:mergeReady .65s infinite alternate}@keyframes mergeReady{to{scale:1.13;filter:drop-shadow(0 0 10px #ffe446)}}.merge-command.ready:before{content:"可合成";position:absolute;top:-8px;left:50%;translate:-50% 0;z-index:9;padding:2px 6px;border-radius:8px;background:#ffe04a;color:#58330b;font-size:8px;font-weight:1000;white-space:nowrap}.merge-command #mergeReady{position:absolute;right:0;top:0;z-index:10;width:21px;height:21px;display:grid;place-items:center;border:2px solid #fff;border-radius:50%;background:#e64330;color:#fff;font-size:10px}.merge-command #mergeReady[hidden]{display:none}.whistle-command.cooling img{filter:grayscale(1) brightness(.6)}.phase-battle .dossier-rail{filter:none;opacity:.55}.phase-battle .dispatch-command img{filter:grayscale(1)}
@media(max-height:700px){.hud-cluster{height:62px}.commander-token{height:68px}.battlefield{top:107px;bottom:230px}.command-deck{height:203px}.deck-topline{height:21px}.dossier-rail{height:91px}.dossier .portrait{height:71px}.dossier .name{font-size:9px}.command-row{height:72px}.command-row button{min-height:68px}.art-command img{width:61px;height:61px}.dispatch-command img{width:72px;height:72px}.rival-monitor{top:4px}.battle-callout{font-size:10px}}

/* Runtime-optimized derivatives of the generated art. */
.scene-art{background-image:linear-gradient(#fff5d055,#fff5d055),url("assets/battlefield-street-runtime-v03.jpg")}
.battlefield:before{background-image:url("assets/battlefield-street-runtime-v03.jpg")}
.unit.baton{background-image:url("assets/unit-baton-runtime-v03.png")}.unit.water{background-image:url("assets/unit-water-runtime-v03.png")}.unit.sling{background-image:url("assets/unit-sling-runtime-v03.png")}.unit.car{background-image:url("assets/unit-car-runtime-v03.png")}

/* V04 readability system — logical CSS pixels, independent from source-art pixels. */
:root{
  --type-display:24px;
  --type-title:18px;
  --type-action:15px;
  --type-hud:15px;
  --type-body:14px;
  --type-label:12px;
  --type-micro:11px;
  --leading-tight:1.08;
  --leading-ui:1.2;
  --leading-body:1.35;
}
html,body,button{font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif}
b,strong,.currency,.level-chip,.report-stats b{font-variant-numeric:tabular-nums}
.mission-copy strong{font-size:17px;line-height:var(--leading-tight);font-weight:900;letter-spacing:.5px}
.mission-copy small{font-size:12px;line-height:var(--leading-ui);font-weight:700;color:#ffe087}
.currency{font-size:15px;line-height:1;font-weight:900}
.commander-token>i{width:23px;height:23px;font-size:12px}
.mission-ribbon span,.mission-ribbon b{font-size:12px;line-height:1;font-weight:900}
.mission-ribbon span{padding:5px 9px}
.rival-monitor{width:126px;height:49px;padding:5px 20px 4px 37px}
.rival-face{left:5px;top:8px;width:28px;height:28px;font-size:12px}
.rival-monitor b{font-size:12px;line-height:1.05;white-space:nowrap}
.rival-monitor small{font-size:11px;line-height:1.15;color:#ffe28c;white-space:nowrap}
.signal-lamp{right:6px;top:18px;width:10px;height:10px}
.entry-beacon,.base-beacon{gap:4px;padding:3px 6px 3px 3px;border-radius:11px;background:#102f45dc;color:#fff7d7;font-size:11px;line-height:1;font-weight:900;text-shadow:0 1px 1px #000}
.entry-beacon i,.base-beacon i{width:19px;height:19px;flex:none}
.battle-callout{font-size:13px;line-height:var(--leading-ui);font-weight:800;max-width:84%;background:#0d3049f2;box-shadow:0 3px 0 #071d2b}
.deck-topline{height:27px;font-size:13px;line-height:1;font-weight:800}
.deck-topline small{font-size:11px;line-height:1;color:#bcefff;font-weight:700}
.dossier .rank{font-size:11px;line-height:1;font-weight:900}
.dossier .name{left:1px;right:1px;bottom:3px;padding:3px 1px;border-radius:5px;background:#fff0c9e8;font-size:12px;line-height:1;font-weight:900;text-shadow:none}
.dossier .level-chip{width:26px;height:26px;font-size:11px;line-height:1}
.dossier .pair-badge{bottom:24px;padding:3px 5px;font-size:10px;line-height:1}
.art-command{padding-bottom:4px}
.art-command span{min-width:46px;padding:3px 7px;font-size:13px;line-height:1;font-weight:900;text-shadow:0 1px #000}
.art-command small{top:-2px;padding:3px 5px;font-size:10px;line-height:1;font-weight:800}
.merge-command.ready:before{top:-9px;padding:3px 7px;font-size:10px;line-height:1}
.merge-command #mergeReady{width:23px;height:23px;font-size:11px}
.unit .level{font-size:12px}
.damage-number{font-size:16px;line-height:1}
.radio-toast{min-width:210px;padding:10px 14px;font-size:13px;line-height:var(--leading-ui);font-weight:800}
.report-card>small{font-size:12px;line-height:var(--leading-ui);font-weight:800}
.report-card h2{font-size:22px;line-height:var(--leading-tight)}
.report-stats span{font-size:11px;line-height:var(--leading-ui);font-weight:700}
.report-stats b{font-size:18px;line-height:1.1}
.danger-preview{font-size:12px;line-height:var(--leading-ui);font-weight:700}
.report-card button{font-size:14px;line-height:var(--leading-ui)}
.tv-reward small{font-size:11px;line-height:var(--leading-ui)}
.prototype-note{font-size:10px;line-height:1}

/* All four command captions share one visual baseline, independent of icon artwork. */
.art-command{flex-direction:row;align-items:flex-end;justify-content:center;padding:0}
.art-command span{position:absolute;left:50%;bottom:4px;translate:-50% 0}
.art-command:active span{translate:-50% 2px}

/* Route arrows are derived from the next logical path cell. */
.cell.path-right:after{content:"›"}.cell.path-left:after{content:"‹"}
.cell.path-down:after{content:"⌄"}.cell.path-up:after{content:"⌃"}
.cell.path-end:after{content:"◆";font-size:9px}

@media(max-height:700px){
  .mission-copy strong{font-size:16px}.mission-copy small{font-size:11px}.currency{font-size:14px}
  .rival-monitor{width:123px;height:45px;padding-left:35px}.rival-face{top:7px;width:27px;height:27px}.rival-monitor b,.rival-monitor small{font-size:11px}.signal-lamp{top:16px}
  .mission-ribbon span,.mission-ribbon b{font-size:11px}
  .entry-beacon,.base-beacon{font-size:11px}
  .battle-callout{font-size:12px}
  .deck-topline{font-size:12px}.deck-topline small{font-size:10px}
  .dossier .rank{font-size:10px}.dossier .level-chip,.dossier .name{font-size:11px}.dossier .pair-badge{bottom:21px;font-size:10px}
  .art-command span{font-size:12px}.art-command small,.merge-command.ready:before{font-size:9px}
  .prototype-note{font-size:9px}
}

/* V05 battle vertical slice. Visual feedback does not alter board coordinates. */
.cell.unlocked.deploy-ready{z-index:28;animation:deployReady .65s infinite alternate;cursor:pointer}
@keyframes deployReady{to{filter:brightness(1.35);box-shadow:inset 0 0 18px #fff5a8,0 0 15px #57d8ff}}
.cell.unlocked.deploy-ready:after{content:"+";position:absolute;inset:0;display:grid;place-items:center;color:#fff7c2;font-size:22px;font-weight:900;text-shadow:0 2px #9a5a12}
.actors.placing .unit{pointer-events:none;opacity:.82}

.enemy{width:47px;height:57px;border:0;border-radius:0;background:transparent;color:transparent;filter:drop-shadow(0 5px 3px #0008);transition:none;will-change:left,top;transform-origin:center bottom}
.enemy-visual{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;background:none!important;transform-origin:center bottom;animation:enemyStride .56s ease-in-out infinite alternate;will-change:transform;pointer-events:none}
.enemy.shield{width:52px;height:61px}
.enemy.gadget{width:50px;height:60px}
.enemy.boss{width:76px;height:91px;z-index:19}.enemy.boss .enemy-visual{animation-duration:.68s}
@keyframes enemyStride{from{transform:translateY(.5px)}to{transform:translateY(-1px)}}
.enemy:before{left:8%;right:8%;top:-7px;height:6px;border:2px solid #fff0b2;background:linear-gradient(90deg,#ef4c38 var(--hp),#1a2830 var(--hp));box-shadow:0 2px #061d2b}
.enemy.boss:before{display:none}.enemy.stunned{filter:grayscale(.7) brightness(1.35) drop-shadow(0 0 10px #ffe75c)}.enemy.stunned .enemy-visual{animation-play-state:paused}
.enemy.stunned:after{content:"★";position:absolute;left:50%;top:-17px;translate:-50% 0;color:#ffe95d;font-size:18px;text-shadow:0 2px #a85e12;animation:stunStar .55s linear infinite}
@keyframes stunStar{to{rotate:360deg}}
.enemy.hit,.enemy.knockback,.enemy.dead{animation:none}
.enemy.hit .enemy-visual{animation:enemyHitV05 .14s ease-out}
@keyframes enemyHitV05{50%{filter:brightness(2.2) drop-shadow(0 0 9px #fff);transform:translateX(2px) scale(.97)}}
.enemy.knockback .enemy-visual{animation:knockback .22s ease-out}
@keyframes knockback{50%{transform:translateX(-6px) rotate(-4deg)}}
.enemy.dead .enemy-visual{animation:enemyOutV05 .34s forwards}
@keyframes enemyOutV05{to{transform:translateY(-12px) rotate(12deg) scale(1.18);opacity:0}}

.unit{transform-origin:center bottom;animation:none;background-image:none!important;background-color:transparent;overflow:visible}
.unit-visual{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;background:none;pointer-events:none;transform-origin:center bottom}
.unit.attacking{animation:none}.unit.attacking .unit-visual{animation:unitAttackV05 .2s ease-out}
@keyframes unitAttackV05{50%{transform:scale(1.08);filter:drop-shadow(0 0 7px #ffe27a)}}
.unit.car.attacking{animation:none}.unit.car.attacking .unit-visual{animation:carCharge .28s ease-out}
@keyframes carCharge{50%{transform:translateX(6px) scale(1.04);filter:drop-shadow(-10px 5px 3px #f1c451aa)}}
.actors.hit-stop{animation:none;filter:none}
.battlefield.screen-shake{animation:screenShake .2s linear}
@keyframes screenShake{50%{filter:brightness(1.18);box-shadow:inset 0 0 36px #ff4a36,0 6px 0 #0e354a}}
.game-shell.base-hit .battlefield{animation:baseHit .34s ease-out}
@keyframes baseHit{30%{filter:saturate(1.8) brightness(1.25);box-shadow:inset 0 0 45px #ff3b2d,0 7px 0 #0b2d42}}
.game-shell.base-hit .base-beacon{animation:baseAlarm .18s infinite alternate}
@keyframes baseAlarm{to{scale:1.18;filter:brightness(1.7)}}

.vfx{position:absolute;pointer-events:none;z-index:24}
.vfx.slash{width:48px;height:28px;border-top:5px solid #fff3a0;border-radius:50%;filter:drop-shadow(0 0 5px #ffc22d);animation:slash .25s forwards}
@keyframes slash{from{scale:.35;rotate:-35deg;opacity:0}to{scale:1.35;rotate:28deg;opacity:0}}
.vfx.water-beam{height:8px;width:92px;border-radius:8px;background:linear-gradient(90deg,#8ef3ff,#36bde8 65%,transparent);box-shadow:0 0 9px #84efff;transform-origin:left center;animation:beam .28s forwards}
@keyframes beam{from{scaleX(.15);opacity:.3}45%{opacity:1}to{scaleX(1.1);opacity:0}}
.vfx.pebble{width:13px;height:13px;border:3px solid #fff0a2;border-radius:50%;background:#9b663c;box-shadow:0 0 7px #fff;animation:pebble .34s ease-out forwards}
@keyframes pebble{to{translate:70px -28px;rotate:360deg;opacity:0}}
.vfx.charge{width:68px;height:20px;border-radius:50%;background:linear-gradient(90deg,#f3bc3c99,transparent);filter:blur(2px);animation:chargeTrail .3s forwards}
@keyframes chargeTrail{to{translate:55px 0;opacity:0}}
.vfx.impact{width:44px;height:44px;border:5px double #ffe35c;border-radius:50%;translate:-50% -50%;animation:impact .28s forwards}
@keyframes impact{from{scale:.2;opacity:1}to{scale:1.6;opacity:0}}

.boss-alert{position:absolute;left:50%;top:42%;translate:-50% -50%;z-index:45;min-width:250px;padding:11px 16px;border:4px solid #f2bf43;border-radius:12px;background:#a72f25f2;color:#fff1c4;display:flex;align-items:center;justify-content:center;gap:9px;font-size:16px;font-weight:900;box-shadow:0 7px 0 #571a18,0 0 24px #ffcf45;animation:bossEnter .55s ease-out}
.boss-alert[hidden],.boss-bar[hidden]{display:none}
.boss-alert i{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#ffe16b;color:#8e261f;font-style:normal;font-size:20px}
@keyframes bossEnter{from{scale:.35;opacity:0;rotate:-5deg}to{scale:1;opacity:1}}
.boss-bar{position:absolute;left:19%;right:19%;top:43px;z-index:35;height:30px;padding:4px 7px;border:3px solid #e7ae3b;border-radius:11px;background:#142f42;color:#fff0c6;display:flex;align-items:center;gap:7px;font-size:11px;font-weight:900;box-shadow:0 3px #071c29}
.boss-bar>i{height:10px;flex:1;overflow:hidden;border:2px solid #fff0b0;border-radius:8px;background:#251d21}
.boss-bar>i>b{display:block;width:var(--boss-hp,100%);height:100%;background:linear-gradient(90deg,#d7392d,#f3bd39);transition:width .18s}

.cooldown-text{position:absolute;left:50%;top:9px;translate:-50% 0;z-index:8;min-width:28px;padding:3px 4px;border-radius:9px;background:#092a3de8;color:#fff;font-size:12px;line-height:1;font-weight:900}
.cooldown-text:empty{display:none}.whistle-command.cooling:after{content:"";position:absolute;inset:2px;border-radius:50%;background:conic-gradient(#12384ee8 var(--cooldown,0%),transparent 0);z-index:3;pointer-events:none}
.merge-flash{animation:mergeFlash .46s ease-out}
@keyframes mergeFlash{50%{filter:brightness(2);scale:1.08}}

@media(max-height:700px){.enemy{width:42px;height:51px}.enemy.shield,.enemy.gadget{width:46px;height:54px}.enemy.boss{width:66px;height:79px}.boss-bar{top:39px}.boss-alert{font-size:14px;min-width:230px}}

/* V06 five-minute run and rewarded-ad prototype states. */
.mission-ribbon small{align-self:stretch;display:grid;place-items:center;padding:0 8px;border-left:1px solid #efd070;color:#8ee7ff;font-size:11px;font-weight:900;font-variant-numeric:tabular-nums}
.rival-life{position:absolute;left:36px;right:17px;bottom:3px;height:4px;overflow:hidden;border-radius:4px;background:#071c29}
.rival-life>b{display:block;width:100%;height:100%;background:linear-gradient(90deg,#58da83,#f0c640);transition:width .35s}
.rival-monitor.rival-danger{animation:rivalDanger .45s infinite alternate}
@keyframes rivalDanger{to{filter:brightness(1.35);box-shadow:inset 0 0 0 2px #071e2c,0 0 13px #ff4237}}
.rescue-card p{margin:8px 4px 13px;font-size:13px;line-height:1.4;font-weight:700;color:#6e3829}.danger-stamp{color:#d12f25;border-color:#d12f25}.rescue-command{min-height:66px!important;background:linear-gradient(#d84b37,#9f2a24);color:#fff1c5;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:15px;font-weight:900;box-shadow:inset 0 -6px #5b1816}.rescue-command small{margin-top:4px;font-size:11px}.rescue-command[disabled]{filter:grayscale(1);opacity:.55}
.ad-curtain{position:absolute;inset:0;z-index:120;display:grid;place-items:center;padding:24px;background:#071f2ee8}.ad-curtain[hidden]{display:none}.ad-curtain section{width:100%;padding:22px 18px;border:4px solid #e7b642;border-radius:18px;background:#123a50;color:#fff0c8;text-align:center;box-shadow:0 10px 0 #061b29}.radio-wave{width:64px;height:64px;margin:auto auto 9px;border:5px double #ffe478;border-radius:50%;display:grid;place-items:center;color:#74e1ff;font-size:30px;font-style:normal;animation:radioPulse .65s infinite alternate}@keyframes radioPulse{to{scale:1.12;box-shadow:0 0 22px #75dcff}}.ad-curtain b{display:block;font-size:18px}.ad-curtain small{display:block;margin:6px 0 13px;font-size:11px}.ad-curtain em{display:block;height:12px;overflow:hidden;border:2px solid #f1ce71;border-radius:8px;background:#071f2e}.ad-curtain em>b{width:0;height:100%;background:linear-gradient(90deg,#e84734,#f2c547);transition:width .1s linear}.ad-curtain button{width:100%;min-height:48px;margin-top:13px;border:2px solid #ddc379;border-radius:11px;background:#ead6a3;font-size:13px;font-weight:800}
.result-screen.final-win .report-card{box-shadow:0 12px 0 #092c40,0 0 45px #ffd64f}.result-screen.final-loss .report-card{filter:saturate(.78)}
.report-card button[hidden]{display:none}
@media(max-height:700px){.mission-ribbon small{padding:0 5px;font-size:10px}.ad-curtain section{padding:17px 15px}.radio-wave{width:54px;height:54px}.rescue-card p{font-size:12px}}

/* V07 game lobby — physical signs, character stage and game buttons. */
.lobby-screen{position:absolute;inset:0;z-index:84;overflow:hidden;background:#e7d09a}.lobby-screen[hidden]{display:none}.lobby-bg{position:absolute;inset:0;background:linear-gradient(#fff1c855 0 56%,#0c2e43cc 82%),url("assets/battlefield-street-runtime-v03.jpg") center/cover no-repeat;filter:saturate(1.05)}.lobby-bg:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,transparent 0 34%,#092b3c44 74%)}
.lobby-hud{position:absolute;left:10px;right:104px;top:calc(var(--safe-top) + 7px);height:67px;display:flex;align-items:center;padding:5px 72px;border:3px solid #e6ad3e;border-radius:12px 22px 12px 22px;background:linear-gradient(110deg,#0a2d43,#18536c);color:#fff0c8;box-shadow:0 5px #071f2d,0 8px #d89f33;z-index:6}.lobby-badge img{position:absolute;left:3px;bottom:-6px;width:65px;height:75px;object-fit:contain;filter:drop-shadow(0 4px 2px #0006)}.lobby-badge span{display:flex;flex-direction:column;white-space:nowrap}.lobby-badge b{font-size:15px}.lobby-badge small{font-size:11px;color:#f0cb70}.lobby-money,.lobby-stars{position:absolute;right:7px;display:flex;align-items:center;gap:4px;font-size:14px;font-weight:900}.lobby-money{top:7px}.lobby-stars{bottom:7px}.lobby-money i,.lobby-stars i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#e6ad3e;color:#4f2c0e;font-style:normal}.lobby-stars i{background:#c63c2e;color:#ffe78a}.lobby-capsule{position:absolute;right:11px;top:calc(var(--safe-top) + 9px);width:86px;height:34px;border:2px solid #12364b;border-radius:20px;background:#fff1d4e8;display:flex;align-items:center;justify-content:space-around;z-index:7}.lobby-capsule span:first-child{width:15px;height:6px;border-radius:5px;background:#12364b}.lobby-capsule span:last-child{width:9px;height:9px;border:2px solid #12364b;border-radius:50%}
.title-sign{position:absolute;left:50%;top:103px;translate:-50% 0;z-index:5;width:270px;padding:9px 15px 12px;border:4px solid #e4aa35;border-radius:10px 10px 22px 22px;background:linear-gradient(#173e54,#092b40);color:#fff0c8;text-align:center;box-shadow:0 6px #071e2c,0 0 0 3px #8e2e25}.title-sign small{font-size:11px;letter-spacing:3px;color:#80dcf5}.title-sign h1{margin:1px 0 0;font-size:32px;line-height:1;font-weight:1000;letter-spacing:5px;text-shadow:0 3px #a53025}.title-sign em{display:inline-block;margin-top:5px;padding:2px 11px;border-radius:9px;background:#c23e2c;color:#fff3c7;font-size:11px;font-style:normal;font-weight:900}
.hero-stage{position:absolute;left:22px;right:22px;top:190px;height:285px;z-index:3}.hero-stage:before{content:"";position:absolute;left:4%;right:4%;bottom:13px;height:70px;border:4px solid #d6a03d;border-radius:50%;background:radial-gradient(ellipse,#eac95c99,#12384e88 68%,transparent 70%);box-shadow:0 10px 20px #0006}.hero{position:absolute;bottom:26px;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 8px 4px #0008);transform-origin:center bottom;animation:heroIdle 1.2s ease-in-out infinite alternate}.hero-main{left:50%;translate:-50% 0;width:190px;height:275px;z-index:3}.hero-left{left:3px;width:145px;height:220px;z-index:2;rotate:-5deg}.hero-right{right:-4px;width:150px;height:215px;z-index:2;rotate:4deg}.hero-left{animation-delay:-.5s}.hero-right{animation-delay:-.8s}@keyframes heroIdle{to{transform:translateY(-5px) rotate(.7deg)}}
.chapter-sign{position:absolute;left:17px;right:17px;bottom:208px;z-index:6;height:105px;padding:11px 83px 9px 58px;border:4px solid #d69f35;border-radius:12px;background:linear-gradient(100deg,#f5e4b5,#d5b66f);color:#153b53;box-shadow:inset 0 0 0 3px #fff0c0,0 6px #082a3d;display:flex;align-items:center}.chapter-stamp{position:absolute;left:8px;top:14px;width:43px;height:69px;border:3px double #b33b2c;border-radius:8px;display:grid;place-items:center;color:#b33b2c;font-size:12px;font-weight:900;writing-mode:vertical-rl;letter-spacing:3px}.chapter-sign>div:nth-child(2){width:100%;display:flex;flex-direction:column}.chapter-sign small{font-size:10px}.chapter-sign b{font-size:17px}.chapter-sign em{height:9px;margin:5px 0 3px;overflow:hidden;border:2px solid #153b53;border-radius:6px;background:#826d49}.chapter-sign em i{display:block;width:var(--progress,0%);height:100%;background:linear-gradient(90deg,#d94130,#efbd3d)}.chapter-sign span{font-size:10px;font-weight:800}.chapter-sign>img{position:absolute;right:1px;bottom:1px;width:86px;height:98px;object-fit:contain;filter:drop-shadow(0 4px 2px #0005)}
.lobby-start{position:absolute;left:42px;right:42px;bottom:119px;height:82px;z-index:7;padding:0 44px 0 91px;border:4px solid #ffe275;border-radius:18px;background:linear-gradient(#d94b36,#9e2b24);color:#fff2c5;box-shadow:inset 0 -9px #671b18,0 7px #071f2d,0 0 22px #ffcf4b99;text-align:left}.lobby-start img{position:absolute;left:7px;bottom:1px;width:84px;height:91px;object-fit:contain;filter:drop-shadow(0 4px 2px #0007);animation:sirenPulse .65s infinite alternate}@keyframes sirenPulse{to{filter:drop-shadow(0 0 13px #ffde58);scale:1.05}}.lobby-start span{display:flex;flex-direction:column}.lobby-start b{font-size:20px;line-height:1}.lobby-start small{margin-top:4px;font-size:12px}.lobby-start>i{position:absolute;right:17px;top:17px;font-size:38px;font-style:normal}.lobby-start:active{translate:0 4px;box-shadow:inset 0 -5px #671b18,0 3px #071f2d}
.lobby-nav{position:absolute;left:12px;right:12px;bottom:calc(var(--safe-bottom) + 8px);height:98px;z-index:8;padding:6px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;border:4px solid #d9a53a;border-radius:18px 18px 25px 25px;background:linear-gradient(#164c64,#082b40);box-shadow:inset 0 0 0 3px #061f2e,0 -4px #e1b145}.lobby-nav button{position:relative;overflow:hidden;border:2px solid transparent;border-radius:11px;background:#0d3348;color:#f9e7b7}.lobby-nav button.active{border-color:#ffe173;background:#a53228}.lobby-nav img{position:absolute;left:50%;top:-2px;translate:-50% 0;width:64px;height:64px;object-fit:contain;filter:drop-shadow(0 3px 2px #0007)}.lobby-nav button:nth-child(3) img{height:70px}.lobby-nav span{position:absolute;left:50%;bottom:4px;translate:-50% 0;min-width:52px;padding:3px 5px;border-radius:8px;background:#092b40e8;font-size:12px;font-weight:900;white-space:nowrap}.lobby-nav button:active img{translate:-50% 4px;scale:.94}
.lobby-modal{position:absolute;inset:0;z-index:20;padding:76px 18px 118px;display:grid;place-items:center;background:#08283bdc}.lobby-modal[hidden]{display:none}.chapter-ticket,.meta-book{position:relative;width:100%;max-height:100%;overflow:auto;padding:24px 16px 17px;border:5px solid #d7a33c;border-radius:18px;background:linear-gradient(#f8e7b8,#d9bc7a);box-shadow:0 11px #071e2c,0 0 32px #0006;text-align:center}.modal-back{position:absolute;left:10px;top:10px;width:48px;height:48px;border:3px solid #e3b54f;border-radius:50%;background:#153b53;color:#fff0c6;font-size:28px;font-weight:900}.chapter-ticket>small,.meta-book>small{font-size:11px;letter-spacing:3px;color:#9e392b}.chapter-ticket h2,.meta-book h2{margin:6px 0 12px;font-size:21px}.boss-marks{position:relative;margin:14px 0 7px;display:flex;justify-content:space-between}.boss-marks:before{content:"";position:absolute;left:8%;right:8%;top:50%;height:5px;background:#b9392d}.boss-marks span{position:relative;width:40px;height:40px;border:4px solid #ffe07c;border-radius:50%;display:grid;place-items:center;background:#153b53;color:#fff;font-size:12px;font-weight:900}.chapter-ticket p{font-size:12px;font-weight:700}.squad-preview{height:103px;margin:11px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.squad-preview img{width:100%;height:100%;object-fit:contain;border:2px solid #d3a142;border-radius:10px;background:#fff1c6}.enter-battle{width:100%;min-height:62px;border:4px solid #ffe27a;border-radius:15px;background:linear-gradient(#d94a36,#9f2c25);color:#fff1c4;font-size:18px;font-weight:900;box-shadow:inset 0 -7px #651a18}
.meta-book{min-height:430px;text-align:left}.meta-book>small,.meta-book>h2{text-align:center}.meta-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.meta-unit{position:relative;min-height:145px;padding:7px;border:3px solid #d2a044;border-radius:12px;background:#fff0c4;text-align:center}.meta-unit img{width:100%;height:100px;object-fit:contain}.meta-unit b{display:block;font-size:13px}.meta-unit small{font-size:10px}.sticker-slot.locked{filter:grayscale(1);opacity:.48}.dossier-row{display:flex;align-items:center;gap:10px;margin:8px 0;padding:8px;border:2px solid #c49743;border-radius:11px;background:#fff0c4}.dossier-row img{width:72px;height:72px;object-fit:contain}.dossier-row b{font-size:14px}.dossier-row small{display:block;font-size:10px}.meta-note{margin-top:12px;padding:8px;border-radius:9px;background:#153b53;color:#fff0c6;font-size:11px;text-align:center}
@media(max-height:700px){.title-sign{top:87px;scale:.88}.hero-stage{top:148px;height:220px}.hero-main{width:155px;height:220px}.hero-left,.hero-right{width:120px;height:180px}.chapter-sign{bottom:187px;height:89px}.chapter-sign>img{height:82px}.lobby-start{bottom:106px;height:70px}.lobby-nav{height:87px}.lobby-nav img{width:55px;height:55px}.lobby-modal{padding-top:62px;padding-bottom:102px}.meta-book{min-height:380px}.meta-unit{min-height:120px}.meta-unit img{height:78px}}
