:root{--bg: #2e2416;--bg-alt: #3a2e1c;--panel: #443524;--panel2: #4e3d2a;--border: #6b5744;--border-bright: #8a7055;--border-hl: #b5a882;--accent: #c4a46b;--accent2: #7a8a50;--accent-dim: #7a6840;--text: #d4c5a0;--text-bright: #ecddb8;--text-dim: #a89070;--warn: #d4a035;--error: #c04030;--success: #6a9a40;--font-ui: "Rajdhani", sans-serif;--font-mono: "Share Tech Mono", monospace;--font: "Share Tech Mono", "Courier New", monospace;--radius: 2px;--glow: 0 0 12px rgba(0, 200, 240, .4);--glow-strong: 0 0 28px rgba(0, 200, 240, .7), 0 0 56px rgba(0, 200, 240, .2);--shadow: 0 4px 20px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-ui);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none}#root{width:100%;height:100%;overflow:auto}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:2px}h1,h2,h3{font-family:var(--font-ui);color:var(--accent);letter-spacing:.12em;text-transform:uppercase;font-weight:700}h1{font-size:1.6rem}h2{font-size:1.2rem}h3{font-size:1rem}p{line-height:1.6;font-family:var(--font-ui)}a{color:var(--accent2);text-decoration:none}a:hover{text-decoration:underline}.page{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:0 1rem;width:100%}.panel{background:var(--panel);border:1px solid var(--border);border-top:1px solid var(--border-hl);border-radius:var(--radius);padding:1rem;box-shadow:0 4px 20px #00000080,inset 0 1px #ffffff08}.panel-header{border-bottom:1px solid var(--border);padding-bottom:.5rem;margin-bottom:1rem;color:var(--accent);font-size:.72rem;font-family:var(--font-ui);font-weight:700;letter-spacing:.16em;text-transform:uppercase;display:flex;align-items:center;gap:.5em}.panel-header:before{content:"◆";opacity:.5;font-size:.6em}.dot-bg{background-image:radial-gradient(circle,rgba(255,255,255,.05) 1px,transparent 1px);background-size:24px 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4em;padding:.45em 1.2em;font-family:var(--font-ui);font-size:.85rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--border-bright);border-radius:var(--radius);background:transparent;color:var(--text);cursor:pointer;transition:all .12s;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent);box-shadow:var(--glow)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.btn-primary:hover{background:var(--accent);color:var(--bg);box-shadow:var(--glow-strong)}.btn-danger{background:#ff383814;border-color:var(--error);color:var(--error)}.btn-danger:hover{background:#ff38382e;box-shadow:0 0 10px #ff38384d}.btn-warn{background:#ffaa0014;border-color:var(--warn);color:var(--warn)}.btn-warn:hover{background:#ffaa0029}.btn-sm{padding:.3em .9em;font-size:.72rem}.btn-lg{padding:.7em 2em;font-size:1rem}.btn-icon{padding:.35em .6em;font-size:1rem;min-width:2em}.input,input[type=text],input[type=number],select,textarea{background:var(--bg);border:1px solid var(--border-bright);border-radius:var(--radius);color:var(--text-bright);font-family:var(--font-ui);font-size:.9rem;font-weight:500;padding:.5em .8em;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}.input:focus,input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--glow)}label{display:block;font-family:var(--font-ui);font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.3em}.form-group{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}.form-row{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap}.badge{display:inline-block;padding:.2em .8em;border-radius:var(--radius);font-family:var(--font-ui);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.badge-neutral{background:#50605033;border:1px solid var(--text-dim);color:var(--text-dim)}.badge-running{background:#00f0a01a;border:1px solid var(--success);color:var(--success)}.badge-paused{background:#ffaa001a;border:1px solid var(--warn);color:var(--warn)}.badge-ended{background:#ff38381a;border:1px solid var(--error);color:var(--error)}.badge-lobby{background:#00c8f014;border:1px solid var(--accent);color:var(--accent)}.tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:1.5rem;gap:0}.tab{padding:.7em 1.4em;font-family:var(--font-ui);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--text-dim);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);background:#ffffff08;text-shadow:var(--glow)}.conn-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.conn-dot.on{background:var(--accent);box-shadow:var(--glow)}.conn-dot.off{background:var(--error)}table{width:100%;border-collapse:collapse;font-size:.85rem}th{font-family:var(--font-ui);font-weight:700;color:var(--text-dim);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;padding:.4em .6em;border-bottom:1px solid var(--border);text-align:left}td{padding:.55em .6em;border-bottom:1px solid var(--border);font-family:var(--font-ui);font-size:.88rem}tr:last-child td{border-bottom:none}tr:hover td{background:#ffffff04}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.text-accent{color:var(--accent)}.text-dim{color:var(--text-dim)}.text-warn{color:var(--warn)}.text-error{color:var(--error)}.text-sm{font-size:.85rem}.text-xs{font-size:.72rem;letter-spacing:.08em}.uppercase{text-transform:uppercase;letter-spacing:.1em}.w-full{width:100%}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem}@media (max-width: 640px){.grid-2,.grid-3{grid-template-columns:1fr}.form-row{flex-direction:column}}.scanlines:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,transparent 0px,transparent 3px,rgba(0,0,0,.06) 3px,rgba(0,0,0,.06) 4px);pointer-events:none;z-index:1}.glow-text{color:var(--accent);text-shadow:var(--glow-strong)}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor{animation:blink 1s step-end infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 0 1px var(--accent),var(--glow)}50%{box-shadow:0 0 0 2px var(--accent),var(--glow-strong)}}.pulse{animation:pulse-glow 2s ease-in-out infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease forwards}@keyframes contestedPulse{0%,to{background:#ffaa000f}50%{background:#ffaa0024}}.admin-header{background:var(--panel);border-bottom:1px solid var(--border);box-shadow:0 2px 20px #0009;padding:0 1.5rem;height:56px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;position:relative;z-index:10}.admin-logo-box{width:28px;height:28px;border-radius:var(--radius);background:linear-gradient(135deg,var(--accent-dim),transparent);border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--accent);box-shadow:var(--glow);flex-shrink:0}.admin-logo{font-family:var(--font-ui);font-size:1rem;font-weight:700;color:var(--text-bright);letter-spacing:.18em;text-transform:uppercase;line-height:1}.admin-logo-sub{font-family:var(--font-mono);font-size:.58rem;color:var(--text-dim);letter-spacing:.1em}.admin-body{flex:1;overflow-y:auto;padding:1.5rem;background:var(--bg);background-image:radial-gradient(circle,rgba(255,255,255,.05) 1px,transparent 1px);background-size:24px 24px}.section-label{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}.section-label:before{content:"";display:block;width:3px;height:14px;background:var(--accent);border-radius:1px;box-shadow:var(--glow);flex-shrink:0}.section-label span{font-family:var(--font-ui);font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim)}.color-swatch{width:20px;height:20px;border-radius:2px;border:1px solid rgba(255,255,255,.2);display:inline-block;flex-shrink:0}.drag-handle{cursor:grab;color:var(--text-dim);padding:.3em;font-size:.9rem}.drag-handle:active{cursor:grabbing}.step-card{background:var(--panel2);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem;margin-bottom:.5rem;transition:border-color .15s}.step-card:hover{border-color:var(--border-bright)}.step-card.dragging{opacity:.5;border-color:var(--accent)}.step-card.drag-over{border-color:var(--accent2);background:#00c8ff0d}.terminal-root{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.progress-bar-wrap{background:var(--border);border-radius:1px;overflow:hidden;height:6px;width:100%}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-dim),var(--accent));border-radius:1px;transition:width .1s linear;box-shadow:var(--glow)}.obj-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem;display:flex;flex-direction:column;gap:.4rem;transition:border-color .2s;box-shadow:0 2px 10px #0000004d}.obj-card.owned{border-left:3px solid}.obj-card.neutral{border-left:3px solid var(--border-bright)}.obj-card.contested{animation:contestedPulse 1.5s ease-in-out infinite}.team-score-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;position:relative}.team-score-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.team-score-card-inner{padding:1rem 1.2rem}@media (max-width: 640px){.admin-body,.panel{padding:.8rem}h1{font-size:1.2rem}}.terminal-bg-matrix:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(180deg,transparent 0px,transparent 18px,rgba(0,255,80,.03) 18px,rgba(0,255,80,.03) 20px);animation:matrix-scroll 4s linear infinite;pointer-events:none;z-index:0}@keyframes matrix-scroll{0%{background-position:0 0}to{background-position:0 80px}}.terminal-bg-matrix{background:#000800!important}.terminal-bg-hexgrid{background-color:#050510!important;background-image:radial-gradient(circle at 1px 1px,rgba(0,200,255,.06) 1px,transparent 0);background-size:28px 28px}.terminal-bg-hexgrid:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='48'%3E%3Cpolygon points='28,2 54,16 54,44 28,58 2,44 2,16' fill='none' stroke='rgba(0,200,255,0.06)' stroke-width='1'/%3E%3C/svg%3E");background-size:56px 48px;pointer-events:none;z-index:0}.terminal-bg-circuit{background-color:#030a06!important;background-image:linear-gradient(rgba(0,255,80,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,80,.04) 1px,transparent 1px),linear-gradient(rgba(0,255,80,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,80,.02) 1px,transparent 1px);background-size:80px 80px,80px 80px,20px 20px,20px 20px}.terminal-bg-circuit:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(0,255,80,.08) 1px,transparent 1px);background-size:80px 80px;pointer-events:none;z-index:0}.terminal-bg-carbon{background-color:#0a0a0a!important;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.015) 0px,rgba(255,255,255,.015) 1px,transparent 1px,transparent 6px),repeating-linear-gradient(-45deg,rgba(255,255,255,.015) 0px,rgba(255,255,255,.015) 1px,transparent 1px,transparent 6px);background-size:6px 6px}.terminal-bg-static{background-color:#080808!important;animation:static-flicker .08s steps(1) infinite}@keyframes static-flicker{0%{background-color:#080808}25%{background-color:#060a08}50%{background-color:#080608}75%{background-color:#0a0808}}@keyframes dashIn{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}
