@import url('');
:root{--ink:#243c30;--muted:#849084;--green:#448b51;--line:#dfe5d9;--paper:#f8f9f2;--red:#bb5b48}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#f1f3e9;font:14px "Microsoft YaHei","PingFang SC",sans-serif}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid var(--line);background:#fffefa;color:var(--ink);border-radius:9px;padding:9px 12px;transition:background .15s,transform .15s}button:hover{background:#e4eddc;transform:translateY(-1px)}button:active{transform:scale(.97)}button:focus-visible,a:focus-visible{outline:3px solid #97ba76;outline-offset:2px}.topbar{height:85px;max-width:1530px;margin:auto;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:13px;align-items:center;color:var(--ink);text-decoration:none;font-size:19px;font-weight:800;letter-spacing:1px}.brand-icon{background:#e4ebd4;border-radius:14px;font-size:32px;width:49px;height:49px;display:grid;place-items:center}.brand small{display:block;font-size:9px;letter-spacing:2.1px;color:#85927a;margin-top:5px}.top-actions{display:flex;gap:10px;align-items:center}.top-actions button{background:transparent;font-size:12px}.local-dot{font-size:11px;color:#75846d;margin-right:14px}.local-dot:before,.arena-heading i{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#7aa151;margin-right:7px}.layout{max-width:1450px;padding:28px 30px 30px;display:grid;grid-template-columns:minmax(250px,1fr) minmax(340px,450px) minmax(300px,1.05fr);gap:34px;margin:0 auto}.left-panel{padding-top:19px}.eyebrow{font-size:10px;letter-spacing:2.8px;color:#859373;font-weight:700}h1{font-size:30px;line-height:1.65;letter-spacing:1px;margin:13px 0 11px}h1 span{color:#67934c}.intro{max-width:290px;font-size:12px;line-height:1.9;color:#8b9383;margin-bottom:25px}.control-card{border:1px solid var(--line);border-radius:15px;padding:20px;background:var(--paper)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}.section-title h2{margin:0;font-size:14px}.section-title>span{font-size:10px;color:#909b89}.button-row{display:flex;gap:9px}.button-row button{flex:1}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#347943}.field{display:block;font-size:12px;margin-top:20px}.segments{display:flex;margin-top:9px;border:1px solid var(--line);padding:3px;border-radius:9px;gap:3px}.segments button{flex:1;padding:5px;border:0;background:transparent;font-size:12px}.segments .active{background:#e0eacf;color:#497744;font-weight:700}select,input{background:#fffefa;border:1px solid var(--line);border-radius:7px;padding:8px 9px;color:var(--ink);min-width:0}.field select{display:block;width:100%;margin-top:10px}.toggle-line{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-top:18px}.toggle-line small{font-size:10px;color:#9ca491;margin-left:6px}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px}.text-button{border:0;background:transparent;padding:20px 0 0;font-size:11px;color:#7c8d71}.stats-card{display:grid;grid-template-columns:1fr 1fr 1fr;padding:24px 0;gap:10px}.stats-card>div{border-right:1px solid var(--line);padding-left:4px}.stats-card>div:last-child{border:0}.stats-card small{display:block;font-size:10px;color:#8e9985}.stats-card b{font-size:25px;display:block;margin-top:8px;font-family:Consolas,monospace;font-weight:500}.stats-card b span{font-size:10px;color:#a7af9f}.guide{display:flex;gap:12px;border-top:1px solid var(--line);padding-top:24px}.guide>span{font-size:23px;color:#a5b18b}.guide strong{font-size:12px;font-weight:500}.guide p{font-size:11px;line-height:1.9;color:#8e9985;margin-top:8px}.footer-note{font-size:9px;color:#a5ad9c;margin-top:24px}.arena-column{min-width:0}.arena-heading{display:flex;justify-content:space-between;padding:0 4px 11px;font-size:11px;color:#7d8b72}.arena-heading b{font-weight:500}.arena-heading>span:last-child{font-family:Consolas,monospace;letter-spacing:1px}.stage{position:relative;aspect-ratio:720/1280;box-shadow:0 10px 30px #263d2526,0 0 0 6px #dce3cf;border-radius:15px;overflow:hidden;background:#75a740}canvas{width:100%;height:100%;display:block}.arena-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#142d2370;backdrop-filter:blur(3px);color:#fff;gap:25px}.arena-overlay>span{font-size:14px;letter-spacing:5px}.arena-overlay>b{font-size:85px;color:#ffeb9e;text-shadow:0 4px #35522b;font-weight:900}.arena-overlay button{background:#ffeb9e;border:0;font-size:13px;font-weight:700;padding:13px 27px}.pause-overlay{position:absolute;top:43%;width:100%;padding:25px;text-align:center;background:#213423b8;color:#fff;font-size:22px;letter-spacing:5px}.hidden{display:none!important}.arena-bottom{display:flex;gap:12px;align-items:center;font-size:10px;color:#839174;margin-top:16px}.wave-track{flex:1;background:#dbe4cd;height:4px;border-radius:5px;overflow:hidden}.wave-track i{display:block;height:100%;background:#7d9f55;width:0}.right-panel{padding-top:14px}.tag{background:#e8eddb;border-radius:4px;padding:4px 6px}.team-tabs{display:flex;background:#e5eadb;padding:4px;gap:3px;border-radius:10px;margin-bottom:14px}.team-tabs button{flex:1;background:transparent;border:0;font-size:12px;padding:9px 5px}.team-tabs .active{background:#fffdf6;box-shadow:0 2px 5px #263d2510}.team-tabs .active[data-team="1"]{color:#b65549}.unit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.unit-card{position:relative;display:flex;text-align:left;align-items:center;gap:8px;padding:10px 7px;background:#f9faf3;border-color:#dbe3d1;border-radius:10px;min-height:75px;overflow:hidden}.unit-card:hover{border-color:#97b279;background:#edf3e3}.unit-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:46px;height:49px;font-size:33px;filter:drop-shadow(0 2px 1px #18231c25)}.unit-icon img{max-width:50px;max-height:49px;object-fit:contain}.unit-card strong{display:block;font-size:11px;font-weight:600;white-space:nowrap}.unit-card small{display:block;font-size:9px;color:#94a087;margin-top:5px}.unit-card .count{position:absolute;right:6px;bottom:5px;font-size:9px;color:#91a07f}.events-panel{margin-top:23px;padding-top:20px;border-top:1px solid var(--line)}.event-input{display:flex;gap:6px;margin-top:8px}.event-input input,.event-input select{flex:1;width:0;font-size:11px;padding:7px}.event-input button{font-size:11px;padding:7px 11px}.event-input #platform{flex:0 0 70px}.event-help{font-size:9px;color:#a0aa94;margin:9px 0 0}.ranking{margin-top:23px;padding-top:20px;border-top:1px solid var(--line)}.ranking .section-title{margin-bottom:10px}.empty{font-size:10px;color:#a3ac98;padding:10px 0}.rank-row{display:flex;align-items:center;gap:9px;margin-top:8px;font-size:11px}.rank-row>i{font-style:normal;color:#a2ae96;font-family:Consolas}.rank-row>span{flex:1}.rank-row>b{font-size:11px;font-family:Consolas;color:#6e8f55}.rank-avatar{width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:#dde9d0;color:#6a8d55}.event-log{height:60px;overflow:hidden;margin-top:16px;font-size:9px;color:#9da992;line-height:1.9}#toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);background:#273f30ee;color:#fff;font-size:12px;border-radius:10px;padding:13px 25px;opacity:0;pointer-events:none;transition:.2s;z-index:20}#toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:16px;width:350px;color:var(--ink);padding:26px;background:var(--paper)}dialog::backdrop{background:#1c302575;backdrop-filter:blur(4px)}dialog h2{font-size:19px;margin-top:0}dialog p{font-size:12px;color:#8a9780}dialog label{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin:15px 0}dialog input{width:115px}dialog .button-row{margin-top:24px}@media(min-height:1000px){.layout{grid-template-columns:minmax(250px,1fr) minmax(340px,490px) minmax(300px,1.05fr)}}@media(max-width:1100px){.layout{gap:22px;padding:22px;grid-template-columns:minmax(300px,420px) minmax(290px,1fr);max-width:900px}.left-panel{grid-column:2;grid-row:2;padding-top:0}.arena-column{grid-column:1;grid-row:1/span 2}.right-panel{grid-column:2;grid-row:1}h1,.intro,.eyebrow,.guide,.footer-note{display:none}.stats-card{padding-bottom:0}.topbar{padding:0 25px}.control-card{padding:16px}.left-panel .section-title{margin-bottom:10px}.field{margin-top:13px}}@media(max-width:650px){.topbar{height:72px;padding:0 16px}.brand{font-size:15px;gap:8px}.brand-icon{font-size:27px;width:40px;height:40px}.brand small{font-size:7px}.local-dot,#fullscreen{display:none}.top-actions button{padding:7px}.layout{padding:22px 16px;display:flex;flex-direction:column;gap:26px;max-width:470px}.arena-column{order:0}.right-panel{order:1}.left-panel{order:2}.stage{margin:0 3px}.unit-grid{grid-template-columns:repeat(2,1fr)}.unit-card{min-height:79px}.unit-card strong{font-size:12px}.events-panel{margin-top:20px}.ranking{margin-top:20px}.arena-heading{padding-bottom:12px}.control-card{padding:20px}}
/* Faithful observation mode: the source game is a vertical battle window. */
body.faithful{background:#111;overflow:hidden}body.faithful .topbar,body.faithful .left-panel,body.faithful .right-panel{display:none}body.faithful .layout{display:block;max-width:none;padding:0;margin:0}body.faithful .arena-column{width:min(100vw,720px);height:100vh;margin:0 auto}body.faithful .arena-heading{position:fixed;z-index:4;top:10px;left:50%;transform:translateX(-50%);width:min(92vw,670px);color:#fff;text-shadow:0 1px 3px #000;background:#14251d66;border-radius:8px;padding:8px 12px}body.faithful .stage{height:100vh;aspect-ratio:auto;border-radius:0;box-shadow:none}body.faithful .arena-bottom{position:fixed;z-index:4;bottom:8px;left:50%;transform:translateX(-50%);width:min(92vw,670px);color:#fff;text-shadow:0 1px 3px #000}body.faithful .arena-overlay button{font-size:14px}body.faithful .arena-overlay{background:#11281f55}

body.faithful .arena-heading,body.faithful .arena-bottom{display:none}body.faithful .arena-overlay{background:#13201766}body.faithful .stage{margin:0}
@font-face{font-family:NativeGame;src:url("assets/fonts/SourceHanSansSC-Normal-2.otf") format("opentype");font-weight:100 900;font-display:swap;}
@font-face{font-family:LiberationSans;src:url("assets/fonts/LiberationSans.ttf") format("truetype");font-weight:400 700;font-display:swap;}
.test-menu-toggle{position:fixed;z-index:30;right:16px;top:16px;background:#f8f9f2f5;box-shadow:0 3px 16px #0003;font-weight:700;border-color:#a6b99a}
.test-menu[hidden],.test-menu-toggle[hidden]{display:none!important}
.test-menu{position:fixed;z-index:30;right:16px;top:16px;width:350px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;padding:18px;background:#f8f9f2f5;border:1px solid #becbb4;border-radius:16px;box-shadow:0 8px 35px #0005;backdrop-filter:blur(12px);font-size:12px;color:var(--ink)}
.test-menu-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.test-menu-heading strong{display:block;font-size:17px}.test-menu-heading small{display:block;margin-top:5px;color:#6c7c61;font-size:10px}.test-menu-heading button{font-size:11px;padding:7px 10px}
.test-menu .team-tabs{margin-bottom:10px}.test-unit-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.test-unit{display:flex;gap:8px;align-items:center;min-width:0;padding:7px 8px;text-align:left;font-size:11px;min-height:43px}.test-unit img{width:29px;height:29px;object-fit:contain;flex-shrink:0}.test-unit[aria-pressed=true]{background:#e3efd7;border-color:#54853f;box-shadow:inset 0 0 0 1px #54853f}.test-unit-info{margin:10px 0;color:#64745a;font-size:11px;line-height:1.6}
.test-fields{display:grid;grid-template-columns:80px 1fr;gap:10px}.test-fields label{display:flex;flex-direction:column;gap:6px;font-size:11px}.test-fields input,.test-fields select{width:100%;height:35px;font-size:11px;padding:6px}.test-presets{display:flex;gap:6px;margin:8px 0}.test-presets button{flex:1;padding:5px;font-size:11px}.test-spawn{width:100%;margin-top:2px;font-weight:700}
.test-session{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.test-session>button{width:100%;font-size:12px}.test-session>p{font-size:10px;line-height:1.6;color:#76836d;margin:7px 0 10px}.test-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.test-controls button{font-size:11px;padding:7px 9px}.test-controls label{display:flex;gap:5px;align-items:center;font-size:11px}.test-controls select{font-size:11px;padding:6px 3px}.test-auto{display:flex;align-items:center;gap:6px;margin-top:9px;font-size:11px}.test-auto input{margin:0}.test-status{font-size:11px;line-height:1.7;background:#e7eddf;border-radius:7px;padding:8px 10px;margin:10px 0 6px}.test-live-count{margin:0;font-size:10px;color:#718166;line-height:1.6}
@media(max-width:480px){.test-menu{right:12px;top:12px;max-height:calc(100dvh - 24px);padding:14px}.test-menu-toggle{top:12px;right:12px}}

/* The launcher owns every control; the capture window contains only the scene. */
body.launcher .test-menu,body.launcher .test-menu-toggle,body.launcher #toast,body.launcher .arena-overlay,body.launcher .pause-overlay{display:none!important}
body.launcher .layout{height:100vh;display:flex;align-items:center;justify-content:center}
body.launcher .arena-column{width:min(100vw,56.25vh);height:min(100vh,177.777778vw);margin:0}
body.launcher .stage{width:100%;height:100%;aspect-ratio:9/16}

/* The overlay uses 1080-wide layout coordinates; the canvas may render at 2x. */
.audience-overlay{position:absolute;top:0;left:0;width:1080px;height:1920px;transform-origin:0 0;overflow:hidden;pointer-events:none;z-index:5;contain:layout style;color:#fff;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif}
.audience-labels{position:absolute;inset:0}
.unit-owner{position:absolute;top:0;left:0;display:flex;align-items:center;gap:7px;max-width:230px;padding:4px 10px 4px 4px;border-radius:26px;background:#10261edb;box-shadow:0 2px 5px #0004;white-space:nowrap}
.unit-owner[data-team="1"]{background:#321e21db}
.unit-owner-avatar,.summon-viewer-avatar{position:relative;display:grid;place-items:center;flex-shrink:0;overflow:hidden;border-radius:50%;background:#436a53;color:#fff}
.unit-owner[data-team="1"] .unit-owner-avatar,.summon-announcement[data-team="1"] .summon-viewer-avatar{background:#845157}
.unit-owner-avatar{width:32px;height:32px;font-size:19px}
.viewer-image{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
.viewer-image[hidden],.viewer-initial[hidden]{display:none!important}
.unit-owner-name{font-size:20px;font-weight:600;line-height:28px;overflow:hidden;text-overflow:ellipsis}
.summon-feed{position:absolute;right:30px;bottom:18%;width:600px;display:flex;flex-direction:column;gap:12px}
.summon-announcement{display:flex;align-items:center;gap:14px;min-height:98px;padding:14px 16px;background:#10241ded;border:1px solid #ffffff25;border-right:4px solid #83dba2;border-radius:14px;box-shadow:0 4px 12px #0003;animation:summon-arrive .18s ease-out}
.summon-announcement[data-team="1"]{background:#302025ed;border-right-color:#f2a8ad}
.summon-viewer-avatar{width:56px;height:56px;font-size:28px}
.summon-copy{min-width:0;flex:1}.summon-header{display:flex;align-items:center;gap:12px;line-height:28px}
.summon-name{font-size:23px;max-width:270px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.summon-source{font-size:16px;color:#c2d3c8;white-space:nowrap}.summon-details{display:flex;align-items:center;gap:14px;margin-top:3px;font-size:23px;line-height:30px}
.summon-quantity{color:#a8edc1;font-size:27px}.summon-announcement[data-team="1"] .summon-quantity{color:#ffc3c6}
.summon-caption{display:block;font-size:16px;color:#adbbb0;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.summon-unit-icon{width:54px;height:54px;object-fit:contain;flex-shrink:0}
@keyframes summon-arrive{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
