:root{color-scheme:dark;--bg:#06111b;--panel:#0b1b29;--panel-2:#102538;--line:#1f4058;--text:#edf7ff;--muted:#82a1b8;--primary:#12a8f4;--primary-2:#0873ce;--green:#31d98b;--amber:#f6bd4b;--danger:#ff6575;--shadow:0 24px 80px rgba(0,0,0,.35)}
.login-card>p{margin:0 0 26px;color:var(--muted);font-size:14px;line-height:1.6}
*{box-sizing:border-box}html,body{min-height:100%;margin:0;font-family:"Microsoft YaHei UI","Segoe UI",sans-serif;background:radial-gradient(circle at 20% 0,#0b3048 0,transparent 34%),var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}.full{width:100%}[hidden]{display:none!important}
.login-view{min-height:100vh;display:grid;grid-template-columns:1fr;place-items:center;padding:32px;background:radial-gradient(circle at 50% 42%,rgba(10,142,220,.2),transparent 38%),linear-gradient(145deg,#071c2b,#04111c 68%)}
.login-visual{max-width:820px}.brand-chip{display:inline-flex;padding:8px 13px;border:1px solid rgba(75,192,255,.42);border-radius:999px;background:rgba(9,45,68,.72);color:#82d3ff;font-size:13px;letter-spacing:.14em}.login-visual h1{margin:25px 0 16px;font-size:clamp(42px,4.1vw,72px);line-height:1.16;letter-spacing:-.04em}.login-visual em{font-style:normal;color:#5ec8ff}.login-visual>p{max-width:680px;color:#a2bdcf;font-size:18px;line-height:1.8}.security-points{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.security-points span{padding:10px 14px;border:1px solid #214d67;border-radius:8px;background:rgba(7,26,40,.76);color:#a9d9f4;font-size:14px}
.login-card{width:100%;max-width:500px;margin:0;padding:38px;border:1px solid #28536d;border-radius:18px;background:linear-gradient(150deg,rgba(15,41,59,.98),rgba(6,21,33,.98));box-shadow:var(--shadow)}.logo-mark{width:56px;height:56px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(145deg,#20bcff,#096ac6);box-shadow:0 10px 28px rgba(8,135,216,.34);font-size:27px;font-weight:900}.logo-mark.small{width:42px;height:42px;border-radius:11px;font-size:21px}.login-card h2{margin:24px 0 24px;font-size:28px}.login-card>{margin:0 0 26px;color:var(--muted);font-size:14px;line-height:1.6}.login-card label,.wizard label{display:grid;gap:8px;margin-bottom:17px}.login-card label span,.wizard label>span{color:#a7bfd0;font-size:14px}.login-card input,.wizard input,.wizard select,.wizard textarea,.box-detail input,.box-detail select{width:100%;height:48px;padding:0 14px;border:1px solid #2b526b;border-radius:8px;outline:0;background:#071724;color:var(--text)}.wizard textarea{height:auto;min-height:92px;padding:12px 14px;resize:vertical;line-height:1.55}.wizard input[readonly]{border-color:#1b3b4f;background:#07141f;color:#66869a;cursor:not-allowed}input:focus,select:focus,textarea:focus{border-color:#28b6ff!important;box-shadow:0 0 0 3px rgba(27,173,245,.12)}.primary,.ghost{min-height:42px;padding:0 17px;border-radius:8px;font-weight:700}.primary{border:1px solid #38bdff;background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 8px 22px rgba(5,119,199,.22)}.primary:hover{filter:brightness(1.08)}.ghost{border:1px solid #315671;background:#10283a;color:#c7deed}.ghost:hover{border-color:#4396c8;color:#fff}.login-card button{height:50px;font-size:16px}.feedback{margin:16px 0 0;color:#6f91a8;font-size:12px;line-height:1.55}.feedback.error{color:#ff8794}.login-card>a{display:block;text-align:center;color:#6dbce9;font-size:13px;text-decoration:none}
.app-shell{min-height:100vh;display:grid;grid-template-columns:270px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:20px 15px;border-right:1px solid #17384f;background:linear-gradient(180deg,#081928,#06131f)}.brand{display:flex;align-items:center;gap:12px;padding:6px 9px 24px}.brand strong,.brand span{display:block}.brand strong{font-size:17px}.brand span{margin-top:4px;color:#6489a2;font-size:11px}.sidebar nav{display:grid;gap:7px}.sidebar nav button{display:grid;grid-template-columns:29px minmax(0,1fr) auto;align-items:center;min-height:50px;padding:0 13px;border:1px solid transparent;border-radius:9px;background:transparent;color:#8faec2;text-align:left;font-size:15px}.sidebar nav button b{font-size:17px}.sidebar nav button span{min-width:25px;padding:3px 7px;border-radius:999px;background:#16344a;text-align:center;font-size:11px}.sidebar nav button:hover{background:#0e2638;color:#dceefa}.sidebar nav button.active{border-color:#2174a8;background:linear-gradient(90deg,#123b58,#0d2639);color:#fff;box-shadow:inset 3px 0 0 #24b2ff}.user-card{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;align-items:center;margin-top:auto;padding:13px;border:1px solid #1b3d54;border-radius:10px;background:#0b2030}.user-card>span{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#164c70;color:#8ad8ff;font-weight:800}.user-card strong,.user-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-card strong{font-size:13px}.user-card small{margin-top:4px;color:#648aa3;font-size:10px}
main{min-width:0}.topbar{position:sticky;top:0;z-index:10;min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 28px;border-bottom:1px solid #19394f;background:rgba(5,17,27,.93);backdrop-filter:blur(16px)}.topbar>div:first-child p,.topbar>div:first-child h1{margin:0}.topbar>div:first-child p{color:#3989b7;font-size:10px;letter-spacing:.14em}.topbar h1{margin-top:5px!important;font-size:23px}.topbar>div:last-child{display:flex;align-items:center;gap:9px}.secure-state{margin-right:8px;color:#44dc91;font-size:12px}.content{padding:25px 28px 42px}.view{display:none}.view.active{display:block}.welcome-card{min-height:190px;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:34px 38px;border:1px solid #24506b;border-radius:14px;background:linear-gradient(110deg,rgba(8,42,63,.95),rgba(6,24,38,.8)),radial-gradient(circle at 80% 20%,rgba(23,170,239,.2),transparent 35%);box-shadow:var(--shadow)}.welcome-card span{color:#66c7f9;font-size:13px}.welcome-card h2{margin:9px 0 7px;font-size:30px}.welcome-card p{margin:0;color:#83a5ba;font-size:14px}.welcome-card button{min-width:150px;height:48px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0 28px}.stats article{padding:18px;border:1px solid #1e4259;border-radius:10px;background:var(--panel)}.stats span,.stats strong,.stats small{display:block}.stats span{color:#789ab0;font-size:12px}.stats strong{margin:8px 0 5px;font-size:29px}.stats small{color:#4f738b;font-size:11px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:20px 0 13px}.section-head h2,.section-head p{margin:0}.section-head h2{font-size:20px}.section-head p{margin-top:5px;color:#6f91a8;font-size:12px}
.box-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:14px}.box-card{position:relative;overflow:hidden;min-height:190px;padding:20px;border:1px solid #21465e;border-radius:12px;background:linear-gradient(145deg,#0d2638,#081a28);text-align:left;color:inherit}.box-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--box-color,#16aef5)}.box-card:hover{transform:translateY(-2px);border-color:#3480aa;box-shadow:0 16px 34px rgba(0,0,0,.24)}.box-card header{display:flex;justify-content:space-between;gap:10px}.box-card h3{margin:0;font-size:18px}.box-card header span,.state{padding:4px 8px;border-radius:999px;background:rgba(49,217,139,.12);color:var(--green);font-size:10px}.box-card header span.draft{background:rgba(246,189,75,.12);color:var(--amber)}.box-card header span.suspended{background:rgba(255,101,117,.12);color:var(--danger)}.box-card>p{min-height:38px;margin:9px 0 20px;color:#7194a9;font-size:12px}.box-card dl{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0}.box-card dl div{padding:10px;border-radius:7px;background:#071823}.box-card dt{color:#54778e;font-size:10px}.box-card dd{margin:5px 0 0;color:#dcedf8;font-size:14px;font-weight:700}
.box-workspace{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;align-items:start}.box-list,.box-detail{border:1px solid #1e4259;border-radius:12px;background:var(--panel);overflow:hidden}.box-list{padding:9px}.box-list-button{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:11px;align-items:center;padding:12px;border:1px solid transparent;border-radius:9px;background:transparent;color:inherit;text-align:left}.box-list-button:hover{background:#102a3d}.box-list-button.active{border-color:#2786bb;background:#113650}.box-list-button>b{width:42px;height:42px;display:grid;place-items:center;border-radius:9px;background:#133b56;color:#6bcaff;font-size:18px}.box-list-button strong,.box-list-button small{display:block}.box-list-button strong{font-size:14px}.box-list-button small{margin-top:5px;color:#6588a0;font-size:10px}.box-list-button>span{color:#60dba0;font-size:10px}.box-detail{min-height:530px}.empty{min-height:520px;display:grid;place-content:center;justify-items:center;color:#56778e}.empty b{font-size:42px}.empty strong{margin-top:13px;color:#a7bfd0;font-size:17px}.empty span{margin-top:6px;font-size:12px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid #1f4259;background:#0e2638}.detail-head h2,.detail-head p{margin:0}.detail-head h2{font-size:22px}.detail-head p{margin-top:6px;color:#6c91a9;font-size:12px}.detail-head>div:last-child{display:flex;gap:8px}.detail-body{padding:18px}.detail-section{margin-bottom:22px}.detail-section>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.detail-section>header h3{margin:0;font-size:15px}.detail-section>header span{color:#63859c;font-size:11px}.game-list,.build-list{display:grid;gap:9px}.game-item,.build-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid #1f4057;border-radius:9px;background:#081a28}.game-item>b{width:42px;height:42px;display:grid;place-items:center;border-radius:8px;background:#123b57;color:#65c8fa}.game-item strong,.game-item small{display:block}.game-item strong{font-size:14px}.game-item small{margin-top:4px;color:#61859d;font-size:10px}.item-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.item-actions button{min-height:31px;padding:0 10px;border:1px solid #2b5975;border-radius:6px;background:#102a3e;color:#afd0e4;font-size:11px}.item-actions button:hover{border-color:#35a2dc;color:#fff}.build-item{grid-template-columns:minmax(0,1fr) auto}.build-item span{font-size:10px}.build-item .ready{color:var(--green)}.build-item .queued,.build-item .building{color:var(--amber)}.build-item .failed{color:var(--danger)}.inline-form{display:grid;grid-template-columns:160px 130px auto;gap:8px;margin-top:10px}.inline-form input,.inline-form select{height:40px}.status-callout{padding:13px;border:1px solid #27506a;border-radius:8px;background:#0a2233;color:#88abc0;font-size:12px;line-height:1.55}.status-callout b{color:#dceef9}
.security-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.security-grid article{min-height:220px;padding:22px;border:1px solid #20455c;border-radius:12px;background:linear-gradient(145deg,#0d2638,#081923)}.security-grid article>b{color:#3998ca;font-size:12px;letter-spacing:.12em}.security-grid h3{margin:20px 0 9px;font-size:18px}.security-grid p{min-height:70px;margin:0;color:#789bb1;font-size:13px;line-height:1.7}.security-grid span{display:inline-flex;margin-top:18px;padding:5px 9px;border-radius:999px;background:rgba(49,217,139,.1);color:var(--green);font-size:10px}
.modal{position:fixed;inset:0;z-index:50;display:none;place-items:center;padding:24px}.modal.open{display:grid}.backdrop{position:absolute;inset:0;border:0;background:rgba(0,7,12,.78);backdrop-filter:blur(6px)}.wizard{position:relative;width:min(980px,96vw);max-height:92vh;overflow:auto;border:1px solid #326078;border-radius:15px;background:#091b29;box-shadow:var(--shadow)}.wizard.config-editor{width:min(780px,96vw)}.wizard>header{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;gap:20px;padding:22px 25px;border-bottom:1px solid #21445a;background:#0d2637}.wizard>header span,.wizard>header h2,.wizard>header p{display:block;margin:0}.wizard>header span{color:#48b9ee;font-size:10px;letter-spacing:.14em}.wizard>header h2{margin-top:6px;font-size:23px}.wizard>header p{margin-top:5px;color:#7194aa;font-size:11px}.wizard>header button{width:38px;height:38px;border:1px solid #3b6076;border-radius:8px;background:#142c3d;color:#bcd0dc;font-size:24px}.steps{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid #1f4055;background:#081723}.steps span{padding:13px;text-align:center;color:#587b91;font-size:11px}.steps span.active{background:#0d2e45;color:#6dcbf8}.wizard-body{padding:23px 25px}.wizard-body section{padding:17px 0;border-bottom:1px solid #1b3c51}.wizard-body section:first-child{padding-top:0}.wizard-body section:last-child{border-bottom:0}.wizard h3{margin:0 0 15px;font-size:15px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.wizard input[type=color]{padding:5px}.wizard label.check-line{display:flex;align-items:center;gap:10px;margin:3px 0 0;padding:13px 14px;border:1px solid #244b63;border-radius:8px;background:#0a2030}.wizard label.check-line input{width:18px;height:18px;margin:0;padding:0;accent-color:#179fe7}.wizard label.check-line span{font-size:13px}.notice{margin:0;padding:11px 13px;border-left:3px solid var(--amber);background:#27230e;color:#b7a469;font-size:11px;line-height:1.55}.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.upload-grid label{min-height:120px;margin:0;padding:14px;border:1px dashed #37617a;border-radius:9px;background:#0a2030}.upload-grid input{height:auto;padding:8px;border:0;background:transparent;font-size:11px}.upload-grid small{color:#63869d;font-size:10px}.wizard>footer{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 25px;border-top:1px solid #24475d;background:#0d2637}.wizard>footer>span{color:#7395aa;font-size:11px}.wizard>footer>div{display:flex;gap:8px}.wizard>footer>div button{min-width:110px}.toast{position:fixed;right:24px;bottom:24px;z-index:80;max-width:420px;padding:13px 16px;border:1px solid #2b769e;border-radius:9px;background:#10364e;color:#e9f7ff;box-shadow:var(--shadow);font-size:13px}.toast.error{border-color:#a74854;background:#49212a;color:#ffd8dd}
@media(max-width:1200px){.app-shell{grid-template-columns:220px}.box-grid,.security-grid{grid-template-columns:repeat(2,1fr)}.box-workspace{grid-template-columns:280px minmax(0,1fr)}.topbar .secure-state{display:none}}
@media(max-width:850px){.login-view{grid-template-columns:1fr;padding:30px}.login-visual{display:none}.login-card{margin:auto}.app-shell{display:block}.sidebar{position:static;width:100%;height:auto}.sidebar nav{grid-template-columns:repeat(3,1fr)}.user-card{margin-top:12px}.topbar{position:static;align-items:flex-start;padding:17px}.topbar>div:last-child{flex-wrap:wrap;justify-content:flex-end}.content{padding:17px}.stats,.box-grid,.security-grid{grid-template-columns:1fr 1fr}.box-workspace{grid-template-columns:1fr}.box-list{display:flex;overflow:auto}.box-list-button{min-width:230px}.form-grid,.upload-grid{grid-template-columns:1fr}.inline-form{grid-template-columns:1fr}.wizard>footer{align-items:flex-start;flex-direction:column}}
.build-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.build-clock{min-width:92px;padding:6px 9px;border:1px solid #27506a;border-radius:6px;background:#0a2233;color:#8dc9e8!important;font:700 11px/1.2 Consolas,"Microsoft YaHei",sans-serif;text-align:center;font-variant-numeric:tabular-nums}.build-clock.slow{border-color:#8a6827;background:#2c2515;color:#ffd36a!important}.build-clock.stalled{border-color:#82404d;background:#341e27;color:#ff9aa8!important}.build-clock.stalled::after{content:" · 可能异常"}.build-download,.build-retry,.build-delete{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 11px;border:1px solid #2c9fd7;border-radius:6px;background:#10344b;color:#bce9ff;font-size:11px;font-weight:700;text-decoration:none}.build-retry,.build-delete{cursor:pointer}.build-download:hover,.build-retry:hover{border-color:#56c8ff;background:#16445f;color:#fff}.build-delete{border-color:#75404b;background:#321d26;color:#ff9aa5}.build-delete:hover{border-color:#ff6575;background:#4a202b;color:#fff}.build-delete:disabled{cursor:not-allowed;opacity:.4}
.build-blocked{margin-top:10px;border-color:#684b28;background:#261f14;color:#d7b981}.build-blocked b{color:#ffd778}.inline-form button:disabled,.inline-form input:disabled,.inline-form select:disabled{cursor:not-allowed;opacity:.55}
.download-node-layout{display:grid;grid-template-columns:minmax(480px,1.25fr) minmax(320px,.75fr);gap:14px;align-items:start}.download-node-card,.download-node-status{border:1px solid #21465e;border-radius:12px;background:linear-gradient(145deg,#0d2638,#081a28);box-shadow:var(--shadow)}.download-node-card{padding:24px}.download-node-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}.download-node-card header span{color:#4fbef2;font-size:10px;letter-spacing:.14em}.download-node-card h3{margin:6px 0 0;font-size:21px}.download-node-card label{display:grid;gap:8px;margin-bottom:18px}.download-node-card label>span{color:#aec7d7;font-size:14px}.download-node-card label>small{color:#63869d;font-size:11px;line-height:1.55}.download-node-card input{width:100%;height:48px;padding:0 14px;border:1px solid #2b526b;border-radius:8px;outline:0;background:#071724;color:var(--text)}.node-actions{display:flex;gap:9px;margin-top:5px}.node-badge{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:11px}.node-badge.connected{background:rgba(49,217,139,.12);color:var(--green)}.node-badge.failed{background:rgba(255,101,117,.12);color:var(--danger)}.node-badge.unconfigured{background:rgba(246,189,75,.12);color:var(--amber)}.node-feedback{margin:18px 0 0;padding:12px 13px;border-left:3px solid #268ec6;background:#0a2131;color:#86a9be;font-size:12px;line-height:1.55}.node-feedback.error{border-left-color:var(--danger);color:#ff9ca7}.download-node-status{min-height:270px;padding:25px}.download-node-status>b{display:block;color:#e4f2fa;font-size:18px}.download-node-status>p{margin:9px 0 22px;color:#799bb0;font-size:12px;line-height:1.7}.download-node-status dl{display:grid;gap:10px;margin:0}.download-node-status dl div{padding:12px;border:1px solid #1d4056;border-radius:8px;background:#071824}.download-node-status dt{color:#5f839a;font-size:10px}.download-node-status dd{margin:6px 0 0;overflow:hidden;text-overflow:ellipsis;color:#d8eaf5;font-size:13px}.upload-grid label.node-required{border-color:#7c6335;background:#24200e}.upload-grid input:disabled{cursor:not-allowed;opacity:.45}.item-actions button.node-upload{border-color:#237eaa;color:#84d5fb}
@media(max-width:1000px){.download-node-layout{grid-template-columns:1fr}}
@media(max-width:560px){.sidebar nav{grid-template-columns:1fr}.topbar{display:block}.topbar>div:last-child{margin-top:12px;justify-content:flex-start}.welcome-card{display:block;padding:25px}.welcome-card button{margin-top:20px}.stats,.box-grid,.security-grid{grid-template-columns:1fr}.steps{grid-template-columns:1fr 1fr}.wizard{max-height:96vh}.wizard-body,.wizard>header,.wizard>footer{padding-left:17px;padding-right:17px}}
.node-section-head{align-items:center;margin-bottom:18px}.node-toolbar{display:flex;gap:10px}.node-toolbar button{min-width:122px}.node-overview-card{padding:24px 26px;border:1px solid #28536d;border-radius:13px;background:linear-gradient(135deg,#102d42 0%,#0a2131 62%,#081925 100%);box-shadow:var(--shadow)}.node-overview-card>header{display:flex;align-items:center;justify-content:space-between;gap:20px}.node-title{display:flex;align-items:center;gap:14px}.node-icon{width:46px;height:46px;display:grid;place-items:center;border:1px solid #2e7097;border-radius:11px;background:#0d3b57;color:#75d3ff;font-size:24px}.node-title small{display:block;margin-bottom:5px;color:#6290aa;font-size:11px}.node-title h3{margin:0;font-size:23px}.node-overview-card>p{margin:17px 0 21px;color:#86a8bd;font-size:13px;line-height:1.65}.node-metrics{display:grid;grid-template-columns:1.3fr 1fr .8fr;border:1px solid #244a62;border-radius:10px;background:rgba(4,18,28,.44)}.node-metrics>div{min-width:0;padding:15px 17px;border-right:1px solid #244a62}.node-metrics>div:last-child{border-right:0}.node-metrics span{display:block;margin-bottom:7px;color:#63889f;font-size:11px}.node-metrics strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#e2f2fb;font-size:14px}.node-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.node-panel{min-height:214px;padding:21px 22px;border:1px solid #21465e;border-radius:12px;background:#0a2030}.node-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:17px}.node-panel h3{margin:0 0 5px;font-size:16px}.node-panel header p{margin:0;color:#668aa0;font-size:11px}.ghost.compact{min-height:34px;padding:0 13px;font-size:12px}.node-info-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}.node-info-list>div{min-width:0;padding:12px 13px;border:1px solid #1d4056;border-radius:8px;background:#071824}.node-info-list dt{color:#64879d;font-size:10px}.node-info-list dd{margin:6px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dcecf5;font-size:13px}.node-info-list dd.success{color:var(--green)}.node-info-list dd.danger{color:var(--danger)}.node-info-list dd.muted{color:#7796a9}.node-capabilities{display:flex;flex-wrap:wrap;align-content:flex-start;gap:9px}.node-capabilities span{display:inline-flex;align-items:center;min-height:32px;padding:0 11px;border:1px solid #276589;border-radius:7px;background:#0c3149;color:#9bdcff;font-size:12px}.node-capabilities span:before{content:'✓';margin-right:6px;color:var(--green);font-weight:900}.node-capabilities span.muted{border-style:dashed;border-color:#2a4c61;background:#081925;color:#67879a}.node-capabilities span.muted:before{content:'–';color:#67879a}.node-editor .wizard-body section{padding-bottom:0}.node-editor .wizard-body label small{color:#63869d;font-size:11px;line-height:1.55}.node-editor footer>span.error{color:#ff9ca7}.node-badge{font-weight:800}.node-feedback{margin-top:14px}.primary:disabled,.ghost:disabled{cursor:not-allowed;opacity:.45;filter:none}
@media(max-width:1000px){.node-content-grid{grid-template-columns:1fr}.node-metrics{grid-template-columns:1fr}.node-metrics>div{border-right:0;border-bottom:1px solid #244a62}.node-metrics>div:last-child{border-bottom:0}}
@media(max-width:640px){.node-section-head{align-items:flex-start}.node-section-head,.node-overview-card>header{display:block}.node-toolbar{margin-top:14px}.node-toolbar button{min-width:0;flex:1}.node-badge{margin-top:14px}.node-info-list{grid-template-columns:1fr}}
/* Customer support is configured per box, independently of its games. */
.support-qr-editor { margin-top: 20px; padding-top: 16px; border-top: 1px solid #293444; }
.support-qr-editor small { display: block; margin-top: 8px; color: #9aabc0; line-height: 1.6; }
.support-qr-editor img { width: 160px; height: 160px; object-fit: contain; background: white; padding: 12px; border-radius: 8px; margin: 12px 0; }
.support-qr-editor img[hidden] { display: none; }
/* Per-box support QR entry, kept separate from game upload controls. */
.support-qr-summary { display:flex; align-items:center; gap:18px; }
.support-qr-thumbnail { width:96px; height:96px; object-fit:contain; padding:8px; background:#fff; border-radius:6px; flex-shrink:0; }
.support-qr-summary p { margin:0; line-height:1.8; }
.support-qr-summary small { color:#8faabd; }
.category-chips{display:flex;flex-wrap:wrap;gap:8px}.category-chips span{padding:7px 13px;border:1px solid #28536d;border-radius:7px;background:#102b3e;color:#b6dcef;font-size:13px}.category-rows{display:grid;gap:9px;margin:20px 0 14px}.category-row{display:flex;align-items:center;gap:14px;padding:13px;border:1px solid #25485e;border-radius:9px;background:#0b2232}.category-order{color:#6694ae;font-size:13px;min-width:20px}.category-label{flex:1;min-width:0;overflow-wrap:anywhere}.category-label strong,.category-label small{display:block}.category-label small{color:#7095aa;font-size:11px;margin-top:4px}.category-actions{display:flex;gap:7px;flex-wrap:wrap}.category-danger{color:#ff9ca7;border-color:#71404c}.category-form{margin-top:18px;padding:18px;border:1px solid #32627e;border-radius:10px;background:#0d2738}.category-form p{font-size:12px;color:#92b4c9;line-height:1.6}#categoryFeedback{line-height:1.6}#categoryManager button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:560px){.category-row{flex-wrap:wrap}.category-row .category-actions{width:100%;justify-content:flex-end}}

/* modal-editor-v32 */
.box-list-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;padding:4px;border:1px solid transparent;border-radius:10px}
.box-list-row:hover{background:#0d2739}
.box-list-row.active{border-color:#2786bb;background:#113650}
.box-list-row .box-list-button{grid-template-columns:42px minmax(0,1fr) auto;padding:8px;border:0;background:transparent}
.box-list-row .box-list-button:hover,.box-list-row.active .box-list-button{background:transparent}
.box-list-edit{min-height:32px;padding:0 11px;border:1px solid #315c76;border-radius:7px;background:#0b2131;color:#9fc6dc;font-size:11px}
.box-list-edit:hover{border-color:#39a9e3;color:#fff;background:#12344b}
.game-item{transition:border-color .16s ease,background .16s ease}
.game-item:hover{border-color:#2f6d91;background:#0b2131}
.config-editor{width:min(860px,calc(100vw - 40px))!important;max-height:min(760px,90vh)!important;overflow:hidden!important;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;border-color:#326b8c!important;box-shadow:0 28px 80px rgba(0,0,0,.58)!important}
.config-editor>header{position:relative;padding:18px 24px 15px;background:linear-gradient(180deg,#102d42,#0d2637)}
.config-editor>header h2{font-size:21px}
.config-editor>header p{margin-top:4px}
.editor-tabs{display:flex;gap:22px;padding:0 24px;border-bottom:1px solid #21445a;background:#0a1f2e}
.editor-tabs button{position:relative;height:48px;padding:0 2px;border:0;background:transparent;color:#7395aa;font-size:13px;font-weight:700}
.editor-tabs button:hover{color:#dff4ff}
.editor-tabs button.active{color:#fff}
.editor-tabs button.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px;background:#27b6ff;box-shadow:0 0 12px rgba(39,182,255,.55)}
.config-editor .editor-body{overflow:auto;padding:20px 24px 6px}
.config-editor .wizard-body>section{padding:0;border:0}
.editor-pane[hidden]{display:none!important}
.editor-pane{animation:editor-pane-in .14s ease-out}
@keyframes editor-pane-in{from{opacity:.35;transform:translateY(3px)}to{opacity:1;transform:none}}
.config-editor label{gap:6px;margin-bottom:14px}
.config-editor label>span{font-size:12px}
.config-editor input,.config-editor select{height:42px}
.config-editor textarea{min-height:88px}
.config-editor label small{color:#64869b;font-size:10px;line-height:1.45}
.config-editor .upload-grid label{min-height:104px;padding:12px}
.config-editor .support-qr-editor{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:12px;align-items:start;margin-top:16px;padding-top:16px;border-top:1px solid #1d4055}
.config-editor .support-qr-editor>label:last-child{grid-column:1/-1}
.config-editor .support-qr-editor img{width:96px;height:96px;object-fit:contain;border:1px solid #2c5872;border-radius:8px;background:#fff}
.config-editor>footer{position:relative;padding:13px 24px}
.config-editor>footer>div button{min-width:92px}
@media(max-width:850px){.box-list-row{min-width:272px}.box-list-row .box-list-button{min-width:0}.config-editor{width:min(680px,calc(100vw - 24px))!important}.editor-tabs{padding:0 18px}.config-editor .editor-body,.config-editor>header,.config-editor>footer{padding-left:18px;padding-right:18px}}
@media(max-width:560px){.config-editor{max-height:96vh!important}.editor-tabs{gap:16px}.editor-tabs button{height:44px}.config-editor .support-qr-editor{grid-template-columns:1fr}.config-editor .support-qr-editor img{width:88px;height:88px}.config-editor .support-qr-editor>label:last-child{grid-column:auto}}
/* dashboard-layout-v34 */
.app-shell{grid-template-columns:236px minmax(0,1fr);background:radial-gradient(circle at 76% -10%,rgba(22,118,171,.11),transparent 31%),#04111b}
.sidebar{padding:18px 13px;border-right-color:#16374c;background:linear-gradient(180deg,#071a29,#05121d)}
.brand{margin:0 2px 18px;padding:6px 8px 20px;border-bottom:1px solid #18394d}.brand strong{letter-spacing:.04em}.brand span{color:#5d87a1}
.nav-section{display:block;padding:13px 12px 5px;color:#4d748c;font-size:10px;letter-spacing:.12em}
.sidebar nav{gap:5px}.sidebar nav button{min-height:44px;padding:0 12px;border-radius:8px;font-size:14px}.sidebar nav button.active{border-color:#246a91;background:#0e3046;box-shadow:inset 3px 0 0 #29baff}
.user-card{margin:18px 2px 0;padding:11px;border-radius:9px}
.topbar{min-height:70px;padding:11px 24px;border-bottom-color:#183a50}.topbar>div:first-child p{color:#3e8db8;letter-spacing:.1em}.topbar h1{font-size:21px}.topbar .primary,.topbar .ghost{min-height:40px}
.content{width:100%;max-width:1680px;margin:0 auto;padding:22px 24px 40px}.section-head{margin:0 0 14px}.section-head h2{font-size:22px}.section-head p{margin-top:6px}
.welcome-card{min-height:142px;padding:25px 29px;border-radius:12px}.welcome-card h2{font-size:27px}.stats{gap:10px;margin:14px 0 22px}.stats article{padding:15px 17px}.stats strong{margin:6px 0 4px;font-size:25px}.box-card{min-height:168px;padding:18px}
.box-workspace{display:grid;grid-template-columns:1fr;gap:14px}.box-list,.box-detail{border-color:#1d4259;border-radius:11px;background:#081b29}
.box-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,340px));gap:9px;padding:11px;overflow:visible}
.box-list-row{min-width:0;padding:3px;border-color:#1b4056;background:#091e2d}.box-list-row:hover{border-color:#2b607d;background:#0d293b}.box-list-row.active{border-color:#27a1dd;background:linear-gradient(135deg,#0e3851,#0a2638);box-shadow:0 0 0 1px rgba(39,161,221,.12),0 10px 24px rgba(0,0,0,.2)}
.box-list-row .box-list-button{min-width:0;padding:7px}.box-list-row .box-list-button>b{width:38px;height:38px}.box-list-edit{margin-right:5px}
.box-detail{min-height:0;overflow:hidden}.detail-head{align-items:center;padding:16px 18px;background:linear-gradient(100deg,#0e2b40,#0a2030 68%)}
.detail-identity{display:flex!important;align-items:center;gap:12px}.detail-logo{width:44px;height:44px;display:grid;place-items:center;border:1px solid #28739a;border-radius:10px;background:#0c3d59;color:#75d4ff;font-size:18px;font-weight:900}.detail-title{display:flex;align-items:center;gap:10px}.detail-title h2{font-size:20px}.detail-status{padding:4px 8px;border-radius:999px;background:rgba(49,217,139,.11);color:var(--green);font-size:10px}.detail-status.draft{background:rgba(246,189,75,.11);color:var(--amber)}.detail-status.suspended{background:rgba(255,101,117,.11);color:var(--danger)}
.detail-actions{display:flex;gap:8px}.detail-actions .ghost{min-height:38px}
.detail-body{padding:14px}.box-detail-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.64fr);gap:14px;align-items:start}.box-detail-main,.box-detail-side{display:grid;gap:14px}
.detail-section{margin:0;padding:15px;border:1px solid #1d4056;border-radius:9px;background:#091d2b}.detail-section>header{min-height:34px;margin-bottom:11px}.detail-section>header>div h3,.detail-section>header>div small{display:block;margin:0}.detail-section>header>div small{margin-top:4px;color:#5f849b;font-size:10px}.detail-section>header .primary.compact{min-height:34px;padding:0 12px;font-size:11px}
.game-list,.build-list{gap:8px}.game-item,.build-item{padding:10px;border-radius:8px}.game-item>b{width:38px;height:38px}.game-item small{line-height:1.5}.item-actions button{min-height:29px;padding:0 9px}.builds-panel .build-list{margin-top:10px}.build-item small{display:block;margin-top:5px;color:#64879d;font-size:10px}.release-rule{padding:10px 12px}.inline-form{grid-template-columns:135px 112px minmax(190px,1fr);margin-top:9px}.inline-form input,.inline-form select{height:38px}
.box-detail-side .detail-section{padding:14px}.box-detail-side .status-callout{margin:0}.category-chips{gap:6px}.category-chips span{padding:5px 9px;font-size:11px}.announcement-preview{max-height:76px;overflow:auto;line-height:1.7}.support-qr-summary{gap:12px}.support-qr-thumbnail{width:72px;height:72px}.support-qr-summary p{font-size:12px}.qr-placeholder{width:72px;height:72px;display:grid;place-items:center;border:1px dashed #315a72;border-radius:7px;background:#071824;color:#597c91;font-size:11px}
.security-grid{gap:11px}.security-grid article{min-height:190px;padding:19px}
@media(max-width:1180px){.box-detail-layout{grid-template-columns:1fr}.box-detail-side{grid-template-columns:repeat(3,minmax(0,1fr))}.support-qr-summary{align-items:flex-start}.inline-form{grid-template-columns:130px 110px minmax(180px,1fr)}}
@media(max-width:850px){.nav-section{display:none}.content{padding:17px}.box-list{display:grid;grid-template-columns:1fr}.box-list-row{min-width:0}.box-detail-side{grid-template-columns:1fr}.detail-head{align-items:flex-start}.detail-actions{flex-wrap:wrap}.inline-form{grid-template-columns:1fr}}
@media(max-width:560px){.topbar{padding:15px}.detail-head{display:block}.detail-actions{margin-top:12px}.detail-actions button{flex:1}.detail-body{padding:10px}.detail-section{padding:12px}.game-item{grid-template-columns:38px minmax(0,1fr)}.game-item .item-actions{grid-column:1/-1;justify-content:flex-start}.build-item{grid-template-columns:1fr}.build-actions{justify-content:flex-start;flex-wrap:wrap}}
/* dashboard-type-v35 */
.app-shell{font-size:15px;line-height:1.55}
.brand strong{font-size:19px}.brand span{font-size:13px}
.nav-section{font-size:12px}.sidebar nav button{font-size:16px}.sidebar nav button b{font-size:18px}.sidebar nav button span{font-size:12px}
.user-card strong{font-size:15px}.user-card small{font-size:12px}
.topbar>div:first-child p{font-size:12px}.topbar h1{font-size:24px}.secure-state{font-size:14px}.topbar button{font-size:15px}
.section-head h2{font-size:24px}.section-head p{font-size:14px}.welcome-card span{font-size:14px}.welcome-card p{font-size:15px}
.stats span{font-size:14px}.stats small{font-size:13px}.box-card h3{font-size:20px}.box-card header span,.state{font-size:12px}.box-card>p{font-size:14px}.box-card dt{font-size:12px}.box-card dd{font-size:16px}
.box-list-button strong{font-size:16px}.box-list-button small{font-size:13px}.box-list-button>span{font-size:12px}.box-list-edit{min-height:36px;font-size:13px}
.detail-title h2{font-size:23px}.detail-head p{font-size:14px}.detail-status{font-size:12px}.detail-actions button{font-size:14px}
.detail-section>header h3{font-size:17px}.detail-section>header>div small{font-size:12px}.detail-section>header .primary.compact,.ghost.compact{font-size:13px}
.game-item strong{font-size:16px}.game-item small{font-size:13px}.item-actions button{min-height:33px;font-size:13px}.status-callout{font-size:14px}
.build-item strong{font-size:16px}.build-item small{font-size:13px}.build-item span{font-size:12px}.build-clock{font-size:13px}.build-download,.build-retry,.build-delete{min-height:35px;font-size:13px}
.inline-form input,.inline-form select,.inline-form button{font-size:14px}.category-chips span{font-size:13px}.support-qr-summary p{font-size:14px}.support-qr-summary small,.qr-placeholder{font-size:12px}
.security-grid article>b{font-size:14px}.security-grid h3{font-size:20px}.security-grid p{font-size:15px}.security-grid span{font-size:12px}
.node-title small,.node-metrics span,.node-info-list dt{font-size:13px}.node-overview-card>p,.node-panel header p,.node-feedback{font-size:14px}.node-metrics strong,.node-info-list dd,.node-capabilities span{font-size:15px}
.wizard>header span{font-size:12px}.wizard>header h2{font-size:25px}.wizard>header p{font-size:13px}.steps span{font-size:13px}.wizard h3{font-size:17px}.wizard label>span,.config-editor label>span{font-size:14px}.wizard label small,.config-editor label small,.upload-grid small,.notice,.wizard>footer>span{font-size:12px}.editor-tabs button{font-size:15px}.category-label small,.category-form p{font-size:13px}.toast{font-size:14px}