:root{--bg:#080d15;--surface:#0f1724;--surface2:#151f2e;--line:#27364a;--text:#edf4ff;--muted:#8090a7;--blue:#4f8cff;--green:#43d19e;--amber:#f0b95b;--red:#f0737d;--shadow:0 22px 60px rgba(0,0,0,.34)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:"Segoe UI","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;color:var(--text)}[hidden]{display:none!important}.eyebrow{margin:0;color:#7187a5;font:600 10px/1.4 Consolas,monospace;letter-spacing:1.7px}h1,h2,p{margin:0}.brand-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:linear-gradient(145deg,#69a0ff,#356ee7);color:white;font-size:21px;font-weight:900;box-shadow:0 0 28px rgba(79,140,255,.24)}
.login-layer{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 70% 20%,rgba(79,140,255,.12),transparent 35%),var(--bg);z-index:10}.login-card{width:min(410px,100%);padding:34px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:var(--shadow)}.login-card>.brand-mark{margin-bottom:22px}.login-card h1{margin:5px 0 25px;font-size:26px}.login-card label,.create-grid label{display:grid;gap:8px;color:var(--muted);font-size:12px}.login-card label+label{margin-top:15px}.login-card input,.create-grid input,.create-grid select,.filters input,.filters select{width:100%;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:#090f18;color:var(--text);outline:none}.login-card input:focus,.create-grid input:focus,.filters input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(79,140,255,.1)}.primary{border:1px solid #5d95ff!important;background:var(--blue)!important;color:white!important;font-weight:650}.login-card .primary{width:100%;height:44px;margin-top:22px;border-radius:10px}.form-error{min-height:20px;margin-top:12px;color:var(--red);font-size:12px;text-align:center}
.app{display:grid;grid-template-columns:235px minmax(0,1fr);min-height:100vh}aside{position:sticky;top:0;height:100vh;padding:25px 17px;border-right:1px solid var(--line);background:#0b111b;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 26px}.brand strong,.brand small{display:block}.brand small{margin-top:3px;color:var(--muted);font-size:9px;letter-spacing:1.2px}aside nav{display:grid;gap:8px}aside nav button{width:100%;padding:13px 14px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted);text-align:left}aside nav button:hover{border-color:var(--line);background:var(--surface)}aside nav button.active{border-color:rgba(79,140,255,.2);background:rgba(79,140,255,.09);color:#9fbcf8}.operator{margin-top:auto;padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.operator button,header>button,.modal-actions button,.modal-title button{padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface2)}
main{min-width:0;padding:0 30px 50px}header{height:92px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}header h1{margin-top:4px;font-size:24px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:13px;margin:24px 0 15px}.stats article,.panel{border:1px solid var(--line);border-radius:15px;background:linear-gradient(145deg,var(--surface),#0d1521);box-shadow:var(--shadow)}.stats article{padding:18px}.stats span,.stats strong{display:block}.stats span{color:var(--muted);font-size:11px}.stats strong{margin-top:8px;font-size:24px}.stats .online-stat strong{color:var(--green)}.stats .offline-stat strong{color:var(--red)}.panel{padding:20px;margin-top:15px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:17px}.panel-title h2{margin-top:4px;font-size:17px}.create-grid{display:grid;grid-template-columns:180px 140px minmax(220px,1fr) 130px;gap:12px;align-items:end}.create-grid button{height:42px;border-radius:10px}.filters{display:flex;gap:9px}.filters input{width:310px}.filters select{width:130px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px}table{width:100%;border-collapse:collapse;min-width:1050px}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:12px}th{color:var(--muted);background:#111b29;font-size:10px;letter-spacing:.4px}td{color:#bdc9da}td code{font:11px Consolas,monospace;color:#9abaff}.status,.machine-status{display:inline-flex;padding:4px 7px;border-radius:6px;font-size:10px}.status.unused{color:#aab8ca;background:#202b3a}.status.active{color:#70e0b5;background:rgba(67,209,158,.1)}.status.expired{color:#f5c87c;background:rgba(240,185,91,.1)}.status.disabled{color:#f59ba2;background:rgba(240,115,125,.1)}.machine-status.online{color:#70e0b5;background:rgba(67,209,158,.12)}.machine-status.offline{color:#f59ba2;background:rgba(240,115,125,.12)}.machine-status.unbound{color:#aab8ca;background:#202b3a}.machine-cell small{display:block;margin-top:5px;color:var(--muted);font-size:9px;white-space:nowrap}.device{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;font:10px Consolas,monospace;white-space:nowrap}.times span{display:block;white-space:nowrap}.times span+span{margin-top:4px;color:var(--muted)}.actions{display:flex;gap:6px}.actions button{padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface2);font-size:10px}.actions button:hover{border-color:#456386}.actions .danger{color:#f59ba2}.empty{padding:40px;text-align:center;color:var(--muted)}
.lua-grid{display:grid;grid-template-columns:minmax(280px,1fr) 150px;gap:12px;align-items:end}.lua-grid label{display:grid;gap:8px;color:var(--muted);font-size:12px}.lua-grid input{height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#090f18;color:var(--text)}.lua-grid button{height:42px;border-radius:10px}.content-state{padding:5px 9px;border-radius:7px;background:rgba(79,140,255,.1);color:#9fbcf8;font-size:11px}.content-detail{margin-top:12px;color:var(--muted);font:11px/1.5 Consolas,"Microsoft YaHei",sans-serif}
.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.content-form{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:10px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#090f18}.content-form label{display:grid;gap:7px;color:var(--muted);font-size:11px}.content-form input{min-width:0;color:var(--text)}.content-form button{border-radius:9px}.content-form p{grid-column:1/-1;color:var(--muted);font:10px/1.45 Consolas,"Microsoft YaHei",sans-serif;overflow-wrap:anywhere}@media(max-width:900px){.content-grid{grid-template-columns:1fr}}
.bundle-intro{margin:-3px 0 18px;color:var(--muted);font-size:12px;line-height:1.7}.bundle-form{display:grid;gap:14px}.bundle-form fieldset{min-width:0;margin:0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#090f18}.bundle-form legend{padding:0 8px;color:#a9c4f7;font-size:12px;font-weight:650}.bundle-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.bundle-fields label,.bundle-image-row label,.bundle-steps-label{display:grid;align-content:start;gap:7px;color:var(--muted);font-size:11px}.bundle-fields input,.bundle-image-row input,.bundle-steps-label textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#070c13;color:var(--text);outline:none}.bundle-fields input,.bundle-image-row input{height:42px;padding:8px 10px}.bundle-fields input:focus,.bundle-image-row input:focus,.bundle-steps-label textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(79,140,255,.1)}.bundle-fields small{color:#64768f;font-size:9px;line-height:1.4}.bundle-fields .bundle-wide{grid-column:span 2}.bundle-image-row{display:grid;grid-template-columns:minmax(260px,1fr) 260px;gap:15px;align-items:center}.bundle-image-preview{height:145px;border:1px dashed #334761;border-radius:10px;background:#04070b;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-size:10px}.bundle-image-preview img{width:100%;height:100%;object-fit:contain}.trajectory-fields{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:13px}.bundle-steps-label textarea{min-height:250px;padding:12px;resize:vertical;font:12px/1.55 Consolas,monospace}.bundle-step-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px;color:var(--muted);font-size:10px}.bundle-step-bar button{padding:7px 10px;border:1px solid var(--line);border-radius:7px;background:var(--surface2)}.bundle-step-bar .valid{color:var(--green)}.bundle-step-bar .invalid{color:var(--red)}.bundle-submit-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border:1px solid rgba(79,140,255,.25);border-radius:12px;background:rgba(79,140,255,.07)}.bundle-submit-row p{color:#98a9c0;font-size:11px;line-height:1.5}.bundle-submit-row button{min-width:170px;height:44px;border-radius:10px}.bundle-submit-row button:disabled{opacity:.55;cursor:wait}@media(max-width:1150px){.bundle-fields,.trajectory-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.bundle-fields,.trajectory-fields,.bundle-image-row{grid-template-columns:1fr}.bundle-fields .bundle-wide{grid-column:auto}.bundle-submit-row{align-items:stretch;flex-direction:column}.bundle-submit-row button{width:100%}}
.weapon-upload-grid{display:grid;grid-template-columns:minmax(230px,1fr) minmax(230px,1fr) 170px 155px;gap:12px;align-items:end}.weapon-upload-grid label{display:grid;gap:8px;color:var(--muted);font-size:11px}.weapon-upload-grid input{width:100%;height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#090f18;color:var(--text);outline:none}.weapon-upload-grid input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(79,140,255,.1)}.weapon-upload-grid button{height:42px;border-radius:10px}.weapon-upload-preview{height:74px;border:1px dashed #334761;border-radius:10px;background:#090f18;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-size:10px}.weapon-upload-preview img{width:100%;height:100%;object-fit:contain}.weapon-library-title{align-items:end}.weapon-filters{display:flex;gap:8px}.weapon-filters input{width:280px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:#090f18;color:var(--text);outline:none}.weapon-filters input:focus{border-color:var(--blue)}.weapon-filters button,.weapon-pagination button{padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface2)}.weapon-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;margin-top:16px}.weapon-card{min-width:0;padding:11px;border:1px solid var(--line);border-radius:11px;background:#090f18;display:grid;grid-template-columns:90px minmax(0,1fr);gap:11px}.weapon-card>a{grid-row:1/3;display:block;width:90px;height:90px;border-radius:8px;overflow:hidden;background:#04070b}.weapon-card img{width:100%;height:100%;object-fit:contain}.weapon-card-info{min-width:0;display:grid;gap:4px}.weapon-card-info strong{font:600 12px Consolas,monospace;color:#dce8fb;overflow-wrap:anywhere}.weapon-card-info span,.weapon-card-info code{color:var(--muted);font:9px/1.35 Consolas,"Microsoft YaHei",sans-serif;overflow-wrap:anywhere}.weapon-card-actions{display:flex;align-items:end;justify-content:flex-end;gap:6px}.weapon-card-actions button{padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:var(--surface2);font-size:10px}.weapon-card-actions .danger{color:#f59ba2}.weapon-empty{margin-top:14px;padding:24px}.weapon-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:18px;color:var(--muted);font-size:11px}.weapon-pagination button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:1150px){.weapon-upload-grid{grid-template-columns:1fr 1fr}.weapon-upload-preview{height:90px}}@media(max-width:720px){.weapon-upload-grid{grid-template-columns:1fr}.weapon-list{grid-template-columns:1fr}.weapon-library-title{align-items:flex-start}.weapon-filters{width:100%}.weapon-filters input{min-width:0;flex:1}}
.modal{position:fixed;inset:0;padding:20px;background:rgba(2,5,10,.82);backdrop-filter:blur(9px);display:grid;place-items:center;z-index:20}.modal-card{width:min(680px,100%);padding:23px;border:1px solid #3b526f;border-radius:17px;background:#0c131e;box-shadow:var(--shadow)}.modal-title{display:flex;align-items:flex-start;justify-content:space-between}.modal-title h2{margin-top:4px}.warning{margin:15px 0;color:var(--amber);font-size:12px}.modal textarea{width:100%;height:300px;padding:13px;border:1px solid var(--line);border-radius:10px;background:#070c13;color:#bcd0f1;font:12px/1.6 Consolas,monospace;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:13px}.toast{position:fixed;right:20px;bottom:20px;max-width:380px;padding:12px 16px;border-radius:10px;background:var(--green);color:#06110d;box-shadow:var(--shadow);opacity:0;transform:translateY(18px);transition:.18s;pointer-events:none;z-index:30}.toast.show{opacity:1;transform:none}.toast.error{background:var(--red);color:white}
@media(max-width:1050px){.stats{grid-template-columns:repeat(3,1fr)}.create-grid{grid-template-columns:1fr 1fr}.create-grid .note{grid-column:1/-1}.table-title{align-items:flex-start;flex-direction:column}.filters{width:100%}.filters input{flex:1}}
@media(max-width:720px){.app{grid-template-columns:1fr}aside{position:relative;height:auto}.operator{margin-top:18px}main{padding:0 14px 35px}.stats{grid-template-columns:repeat(2,1fr)}.create-grid,.lua-grid{grid-template-columns:1fr}.create-grid .note{grid-column:auto}.filters{flex-direction:column}.filters input,.filters select{width:100%}}
