:root{--color-bg:#fff;--color-text:#000;--color-muted:#666;--color-border:#ccc;--color-border-strong:#999;--color-surface:#eee;--color-surface-hover:#ddd;--color-surface-active:#ccc;--color-error:#c00;--font-family:Georgia, serif;--radius:0;--transition-speed:.15s}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);margin:0;padding:1rem}.login-container{max-width:320px;margin:4rem auto}.login-form h1,.login-container h1{margin-bottom:1rem;font-size:1.3rem}.login-form input,.login-container input{border:1px solid var(--color-border-strong);background:var(--color-bg);width:100%;color:var(--color-text);box-sizing:border-box;margin-bottom:.75rem;padding:.5rem;font-size:1rem;display:block}.login-form button,.login-container button{background:var(--color-surface-hover);width:100%;color:var(--color-text);border:1px solid var(--color-border-strong);cursor:pointer;padding:.5rem;font-size:1rem;display:block}.login-form button:hover,.login-container button:hover{background:var(--color-surface-active)}.login-error{color:var(--color-text);margin-bottom:.75rem;font-weight:700;display:none}.controller-container{flex-direction:column;min-height:100vh;margin:0;padding:0;display:flex}.position-label{color:var(--color-muted);text-align:center;padding:.5rem;font-size:.9rem;font-weight:400}.idle-message{color:var(--color-muted);padding:2rem;font-size:1.5rem}.isa-buttons{flex-direction:column;gap:0;width:100%;display:flex}.isa-btn{border:none;border-bottom:1px solid var(--color-border-strong);cursor:pointer;background:var(--color-surface-hover);width:100%;height:16vh;color:var(--color-text);opacity:.3;pointer-events:none;font-size:1.6rem;font-weight:700;display:block}.isa-btn.active{opacity:1;pointer-events:auto}.isa-btn.active:hover{background:var(--color-surface-active)}.controller-footer{text-align:center;margin-top:auto;padding:1rem}.controller-footer button{color:var(--color-muted);cursor:pointer;background:0 0;border:none;padding:.5rem 1rem;font-size:.85rem}#connStatus{color:var(--color-muted);margin-bottom:.25rem;font-size:.75rem;display:block}@keyframes flash{0%,to{opacity:1}50%{opacity:.3}}.alarm-flash .isa-btn.active{animation:.8s infinite flash}.client-name-banner{background:var(--color-surface);text-align:center;border-bottom:1px solid var(--color-border);padding:.5rem;font-size:1.1rem;font-weight:700}.admin-container{max-width:800px;margin:0 auto}.admin-container h1{margin-bottom:1rem;font-size:1.5rem}.admin-container h2{border-bottom:1px solid var(--color-border);margin:1.5rem 0 .75rem;padding-bottom:.25rem;font-size:1.1rem}.admin-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.admin-header #connStatus{color:var(--color-muted);margin-right:.75rem;font-size:.75rem}.admin-header .logout-btn{background:var(--color-surface-hover);border:1px solid var(--color-border-strong);color:var(--color-text);cursor:pointer;padding:.3rem .7rem;font-size:.9rem}.admin-nav{border-bottom:1px solid var(--color-border);gap:0;margin-bottom:1rem;display:flex}.nav-btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;border-bottom:none;margin-bottom:-1px;padding:.5rem 1.2rem;font-size:.95rem}.nav-btn.active{background:var(--color-bg);border-bottom:1px solid var(--color-bg);font-weight:700}.nav-btn:hover:not(.active){background:var(--color-surface-hover)}.form-group{margin-bottom:.75rem}.form-group label{margin-bottom:.25rem;font-size:.9rem;display:block}.form-group input,.form-group select{border:1px solid var(--color-border-strong);background:var(--color-bg);width:200px;color:var(--color-text);padding:.4rem;font-size:1rem}.btn{border:1px solid var(--color-border-strong);cursor:pointer;background:var(--color-surface-hover);color:var(--color-text);margin-right:.5rem;padding:.5rem 1rem;font-size:1rem}.btn:hover{background:var(--color-surface-active)}.btn:disabled{opacity:.4;cursor:not-allowed}.status-panel{border:1px solid var(--color-border);margin-bottom:1rem;padding:.75rem}.status-panel .stat{margin-bottom:.5rem;margin-right:2rem;display:inline-block}.status-panel .stat-label{color:var(--color-muted);font-size:.8rem}.status-panel .stat-value{font-size:1.1rem;font-weight:700}.inline-field{align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.inline-field input{border:1px solid var(--color-border-strong);background:var(--color-bg);color:var(--color-text);padding:.3rem;font-size:.95rem}.inline-field button{border:1px solid var(--color-border-strong);background:var(--color-surface);cursor:pointer;padding:.2rem .5rem;font-size:.85rem}.list-item{border-bottom:1px solid var(--color-surface);justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.list-item .item-name{font-weight:700}.list-item .item-actions{gap:.5rem;display:flex}.lobby-client{border-bottom:1px solid var(--color-surface);padding:.4rem 0;font-size:.95rem}.lobby-client .client-status{color:var(--color-muted);margin-left:.5rem;font-size:.8rem}.assignment-row{align-items:center;gap:.75rem;margin-bottom:.4rem;font-size:.95rem;display:flex}.assignment-row select{border:1px solid var(--color-border-strong);background:var(--color-bg);color:var(--color-text);padding:.3rem;font-size:.95rem}.traffic-table{border-collapse:collapse;width:100%;margin-bottom:1rem}.traffic-table th,.traffic-table td{border:1px solid var(--color-border);text-align:center;padding:.4rem}.traffic-table th{background:var(--color-surface)}.traffic-table input{text-align:center;border:1px solid var(--color-border);background:var(--color-bg);width:60px;color:var(--color-text);padding:.25rem;font-size:.9rem}@media (width<=768px){.admin-container{max-width:100%;padding:0 .5rem}.status-panel .stat{margin-bottom:.75rem;display:block}.traffic-table{font-size:.85rem}.traffic-table input{width:45px}}@media (width<=480px){body{padding:.5rem}.admin-header{flex-direction:column;align-items:flex-start;gap:.5rem}.admin-nav{overflow-x:auto}.form-group input,.form-group select{width:100%}}.toast-container{z-index:9999;flex-direction:column;gap:.5rem;max-width:360px;display:flex;position:fixed;top:1rem;right:1rem}.toast{color:#000;cursor:pointer;background:#eee;border:1px solid #999;padding:.75rem 1rem;font-size:.9rem;animation:.2s ease-out toast-in}.toast--error{border-left:4px solid #c00}.toast--success{border-left:4px solid #090}.toast--info{border-left:4px solid #06c}@keyframes toast-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}
