:root{--color-primary:#106efd;--color-primary-dark:#0a52c4;--color-primary-light:#e8f1ff;--color-accent:#40cfde;--color-accent-dark:#2ba8b5;--color-accent-light:#e6f9fb;--color-bg:#f4f7fe;--color-surface:#fff;--color-border:#e2e8f0;--color-border-dark:#cbd5e1;--color-text:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-success:#059669;--color-success-light:#d1fae5;--color-warning:#d97706;--color-warning-light:#fef3c7;--color-danger:#dc2626;--color-danger-light:#fee2e2;--font:"League Spartan", system-ui, sans-serif;--font-size-base:16px;--font-size-sm:13px;--font-size-xs:11px;--font-size-lg:18px;--font-size-xl:22px;--radius-sm:6px;--radius:10px;--radius-lg:14px;--shadow:0 1px 4px #00000014;--shadow-md:0 4px 12px #106efd1a}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);font-size:var(--font-size-base);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}.page{max-width:1200px;min-height:100vh;margin:0 auto;padding:24px}.header{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);border-top:3px solid var(--color-primary);justify-content:space-between;align-items:flex-start;margin-bottom:24px;padding:20px 24px;display:flex}.header h1{font-size:var(--font-size-xl);color:var(--color-primary);letter-spacing:-.5px;font-weight:800}.header p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:3px;font-weight:500}.ctx-panel{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.ctx-title{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700;display:block}.ctx-slots{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.ctx-slot{border-radius:var(--radius);border:1px solid var(--color-accent);background:var(--color-accent-light);align-items:center;gap:8px;padding:6px 12px;display:flex}.ctx-slot-label{font-size:var(--font-size-xs);color:var(--color-accent-dark);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.ctx-slot strong{font-size:var(--font-size-sm);color:var(--color-text)}.ctx-empty-text{font-size:var(--font-size-sm);color:var(--color-border-dark);padding:6px 0}.ctx-clear{color:var(--color-danger);cursor:pointer;padding:0 4px;font-size:11px;font-weight:700}.ctx-clear:hover{color:#991b1b}.tabs{gap:8px;margin-bottom:20px;display:flex}.tab{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:600;font-family:var(--font);-webkit-user-select:none;user-select:none;padding:9px 18px;transition:all .15s}.tab:hover{border-color:var(--color-primary);color:var(--color-primary)}.tab.active{border-color:var(--color-primary);background:var(--color-primary-light);color:var(--color-primary);font-weight:700}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:28px}.card h3{font-size:var(--font-size-lg);color:var(--color-text);border-bottom:2px solid var(--color-accent-light);margin-bottom:24px;padding-bottom:12px;font-weight:700}.tbl{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.tbl th{text-align:left;background:var(--color-bg);color:var(--color-text-secondary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.07em;border-bottom:2px solid var(--color-border);padding:11px 14px;font-weight:700}.tbl td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:11px 14px}.tbl tr:hover td{background:var(--color-primary-light)}.badge-type{background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-xs);letter-spacing:.03em;padding:3px 8px;font-weight:700}.badge{border-radius:var(--radius-sm);font-size:var(--font-size-xs);padding:3px 8px;font-weight:700}.badge.active{background:var(--color-success-light);color:var(--color-success)}.badge.locked{background:var(--color-warning-light);color:var(--color-warning)}.badge.off{background:var(--color-bg);color:var(--color-text-muted)}.btn-primary{border-radius:var(--radius);background:var(--color-primary);color:#fff;cursor:pointer;font-size:var(--font-size-sm);font-weight:700;font-family:var(--font);letter-spacing:.02em;border:none;padding:10px 22px;transition:background .15s}.btn-primary:hover{background:var(--color-primary-dark)}.btn-sec{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;font-size:var(--font-size-sm);font-weight:600;font-family:var(--font);color:var(--color-text-secondary);padding:10px 22px}.btn-sec:hover{border-color:var(--color-border-dark)}.btn-sm{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;font-size:var(--font-size-xs);font-weight:600;font-family:var(--font);padding:5px 12px}.btn-green{border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent-light);cursor:pointer;font-size:var(--font-size-xs);font-weight:700;font-family:var(--font);color:var(--color-accent-dark);padding:5px 12px;transition:all .15s}.btn-green:hover{background:var(--color-accent);color:#fff}.slot-actions{align-items:center;gap:8px;display:flex}.pos-select{border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:600;font-family:var(--font);background:var(--color-surface);cursor:pointer;color:var(--color-text);padding:5px 10px}.center{justify-content:center;margin-top:80px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;display:grid}.field{flex-direction:column;gap:6px;margin-bottom:4px;display:flex}.field label{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.07em;font-weight:700}.field input,.field select,.field textarea{border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font);background:var(--color-surface);color:var(--color-text);outline:none;padding:9px 13px;font-weight:500;transition:border-color .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #106efd14}.form-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.ro-box{background:var(--color-bg);border:1.5px solid var(--color-border);border-radius:var(--radius);flex-wrap:wrap;gap:28px;margin-bottom:22px;padding:18px;display:flex}.ro-field{flex-direction:column;gap:4px;display:flex}.ro-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700}.msg-ok{background:var(--color-success-light);color:var(--color-success);border-radius:var(--radius);font-size:var(--font-size-sm);border:1px solid #6ee7b7;margin-bottom:18px;padding:11px 18px;font-weight:600}.msg-error{background:var(--color-danger-light);color:var(--color-danger);border-radius:var(--radius);font-size:var(--font-size-sm);border:1px solid #fca5a5;margin-bottom:18px;padding:11px 18px;font-weight:600}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px;display:flex}.filter-sel{border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:7px 12px;font-weight:500}.filter-sel:focus{border-color:var(--color-primary);outline:none}.status-badge{border-radius:var(--radius-sm);font-size:var(--font-size-xs);letter-spacing:.03em;padding:3px 9px;font-weight:700}.action-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.btn-transition{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-xs);font-weight:700;font-family:var(--font);background:#fff;border:1.5px solid;padding:4px 10px;transition:all .15s}.btn-transition:hover{opacity:.8}.overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{border-radius:var(--radius-lg);width:90%;max-width:420px;box-shadow:var(--shadow-md);background:#fff;padding:28px}.dialog h4{margin-bottom:12px;font-size:16px;font-weight:700}.dialog p{color:var(--color-text-secondary);margin-bottom:8px;font-size:14px}.dialog-scenario{background:var(--color-bg);border-radius:var(--radius);padding:10px 14px;font-size:13px}.dialog-scenario span{color:var(--color-text-muted);margin-left:8px}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.legend-box{border-radius:var(--radius-lg);box-shadow:var(--shadow);border-left:3px solid var(--color-accent);background:#fff;margin-bottom:20px;padding:20px 24px}.legend-item{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:flex-start;gap:12px;padding:8px 0;display:flex}.legend-item:last-child{border-bottom:none}.legend-desc{color:var(--color-text-secondary);flex:1;min-width:200px;font-size:12px}.legend-next{color:var(--color-text-muted);background:var(--color-bg);border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:11px}.legend-toggle{color:var(--color-accent-dark);border-color:var(--color-accent)}
