:root{--bg-deep: #060614;--bg-panel: rgba(15, 23, 42, .75);--bg-card: rgba(30, 41, 59, .6);--border: rgba(148, 163, 184, .12);--border-act: rgba(14, 165, 233, .6);--text-dim: #64748b;--text-mid: #94a3b8;--text-bright:#e2e8f0;--accent: #0ea5e9;--green: #22c55e;--yellow: #eab308;--red: #ef4444;--font-hud: "Orbitron", monospace;--font-mono: "Share Tech Mono", monospace;--radius: 12px;--blur: blur(14px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg-deep);color:var(--text-bright);font-family:var(--font-mono);font-size:14px;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 20% 30%,rgba(255,255,255,.15) 0%,transparent 100%),radial-gradient(1px 1px at 80% 70%,rgba(255,255,255,.12) 0%,transparent 100%),radial-gradient(1px 1px at 50% 50%,rgba(255,255,255,.08) 0%,transparent 100%),radial-gradient(2px 2px at 10% 90%,rgba(14,165,233,.1) 0%,transparent 100%),radial-gradient(2px 2px at 90% 10%,rgba(34,197,94,.1) 0%,transparent 100%);pointer-events:none;z-index:0}#root{min-height:100vh;position:relative;z-index:1}.app-root{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:14px 28px;background:#060614e6;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-left{display:flex;align-items:baseline;gap:6px}.logo-text{font-family:var(--font-hud);font-size:22px;font-weight:900;color:var(--text-bright);letter-spacing:4px}.logo-accent{font-family:var(--font-hud);font-size:22px;font-weight:900;color:var(--accent);letter-spacing:4px}.status-bar{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.status-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-mid)}.status-mono{font-family:var(--font-mono)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-green{background:var(--green);box-shadow:0 0 6px var(--green);animation:blink 2s infinite}.dot-red{background:var(--red);box-shadow:0 0 6px var(--red)}.status-label{font-family:var(--font-hud);font-size:11px;letter-spacing:1px}.mode-chip{padding:3px 10px;border:1px solid;border-radius:20px;font-family:var(--font-hud);font-size:11px;letter-spacing:1px}.emergency-banner{display:flex;align-items:center;gap:14px;padding:12px 28px;background:#ef444433;border-bottom:2px solid var(--red);animation:emergencyBannerPulse .8s ease-in-out infinite alternate;position:relative;overflow:hidden}.emg-icon{font-size:24px}.emg-title{font-family:var(--font-hud);font-size:16px;font-weight:900;color:var(--red);letter-spacing:3px}.emg-detail{color:var(--text-bright);font-size:13px}.emg-detail code{background:#ef444433;padding:2px 6px;border-radius:4px}.emg-pulse{position:absolute;right:20px;width:16px;height:16px;border-radius:50%;background:var(--red);animation:pulse-ring 1s ease-out infinite}.app-main{display:grid;grid-template-columns:1fr 380px;gap:20px;padding:20px 24px;flex:1;align-items:start}.panel{background:var(--bg-panel);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--border);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden}.panel:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(14,165,233,.4),transparent)}.panel-label{font-family:var(--font-hud);font-size:11px;letter-spacing:3px;color:var(--accent);margin-bottom:16px;opacity:.8}.dashboard{display:flex;flex-direction:column;gap:16px}.dash-section{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px}.dash-title{font-family:var(--font-hud);font-size:11px;letter-spacing:2px;color:var(--text-dim);margin-bottom:10px}.mode-display{font-family:var(--font-hud);font-size:18px;font-weight:900;letter-spacing:3px;text-align:center;padding:10px;border-radius:8px}.mode-NORMAL{color:var(--green);background:#22c55e1a}.mode-EMERGENCY{color:var(--red);background:#ef444426;animation:emergencyPulse 1s ease-in-out infinite alternate}.mode-MANUAL{color:var(--yellow);background:#eab3081a}.mode-OFFLINE{color:var(--text-dim);background:#64748b1a}.lane-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lane-card{background:#0f172acc;border:1px solid var(--border);border-radius:8px;padding:10px;transition:border-color .3s}.lane-card-active{border-color:var(--accent);box-shadow:0 0 12px #0ea5e933}.lane-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.lane-name{font-family:var(--font-hud);font-size:11px;letter-spacing:1px;color:var(--text-mid)}.lane-light-dot{width:10px;height:10px;border-radius:50%;transition:background .3s,box-shadow .3s}.density-bar-bg{height:6px;background:#ffffff0f;border-radius:3px;overflow:hidden;margin-bottom:6px}.density-bar-fill{height:100%;border-radius:3px}.lane-card-footer{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-family:var(--font-mono)}.density-level{color:var(--text-dim);font-size:10px}.phase-timer{color:var(--accent);font-size:11px;font-weight:700}.light-label{font-size:10px;font-family:var(--font-hud)}.sparkline-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sparkline-item{display:flex;flex-direction:column;gap:4px}.sparkline-label{font-family:var(--font-hud);font-size:10px;color:var(--text-dim);letter-spacing:1px}.sparkline-empty{font-size:11px;color:var(--text-dim);font-style:italic;padding:8px 0}.rfid-panel{border-radius:8px;padding:10px;background:#0f172a99;border:1px solid var(--border);transition:border-color .3s,background .3s}.rfid-active{border-color:var(--red);background:#ef444414}.rfid-idle{display:flex;align-items:center;gap:10px;color:var(--text-dim);font-size:12px}.rfid-idle-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:blink 2s infinite}.rfid-emergency{display:flex;flex-direction:column;gap:5px}.rfid-emg-row{display:flex;align-items:center;gap:10px}.rfid-emg-badge{background:var(--red);color:#fff;font-family:var(--font-hud);font-size:10px;padding:2px 8px;border-radius:4px;animation:blink .6s ease-in-out infinite}.rfid-lane{color:var(--text-bright);font-size:13px}.rfid-uid{font-size:12px;color:var(--text-mid)}.rfid-uid code{background:#0ea5e91a;padding:2px 6px;border-radius:4px;color:var(--accent)}.rfid-source{font-size:11px;color:var(--text-dim)}.rfid-last{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;align-items:center;gap:8px}.rfid-last code{color:var(--text-mid)}.rfid-type{padding:1px 6px;border-radius:10px;font-size:10px;background:#ffffff0d}.rfid-type-amb{background:#ef444433;color:var(--red)}.cmd-panel{display:flex;flex-direction:column;gap:10px}.cmd-row{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-mid)}.cmd-select{background:#0f172ae6;border:1px solid var(--border);color:var(--text-bright);padding:4px 8px;border-radius:6px;font-family:var(--font-mono)}.cmd-buttons{display:flex;gap:8px;flex-wrap:wrap}.cmd-btn{padding:7px 12px;border:none;border-radius:6px;font-family:var(--font-hud);font-size:10px;letter-spacing:1px;cursor:pointer;transition:opacity .2s,transform .1s}.cmd-btn:active{transform:scale(.96)}.cmd-btn-emg{background:#ef444440;color:var(--red);border:1px solid var(--red)}.cmd-btn-clear{background:#22c55e26;color:var(--green);border:1px solid var(--green)}.cmd-btn-force{background:#0ea5e926;color:var(--accent);border:1px solid var(--accent)}.cmd-btn:hover{opacity:.8}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes pulse-ring{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}@keyframes emergencyPulse{0%{background:#ef44441a}to{background:#ef444440}}@keyframes emergencyBannerPulse{0%{background:#ef444426}to{background:#ef44444d}}@keyframes car-toNorth{0%{transform:translateY(250px);opacity:0}10%{opacity:.9}90%{opacity:.9}to{transform:translateY(-280px);opacity:0}}@keyframes car-toSouth{0%{transform:translateY(-250px);opacity:0}10%{opacity:.9}90%{opacity:.9}to{transform:translateY(280px);opacity:0}}@keyframes car-toEast{0%{transform:translate(-280px);opacity:0}10%{opacity:.9}90%{opacity:.9}to{transform:translate(250px);opacity:0}}@keyframes car-toWest{0%{transform:translate(280px);opacity:0}10%{opacity:.9}90%{opacity:.9}to{transform:translate(-250px);opacity:0}}@media (max-width: 900px){.app-main{grid-template-columns:1fr;padding:12px}.panel-dashboard{order:-1}}
