:root{--navy: #0f2a44;--navy-2: #173b5c;--navy-3: #0a1d31;--bg: #f5f7fa;--border: #d6dce3;--border-soft: #e8edf3;--text: #111827;--text-strong: #111827;--muted: #6b7280;--blue: #2563eb;--green: #16a34a;--yellow: #f59e0b;--red: #dc2626;--orange: #ea580c;--gray: #6b7280;--white: #ffffff;--surface: #ffffff;--surface-muted: #f8fafc;--surface-2: #fafbfc;--surface-hover: #f8fbff;--input-bg: #ffffff;--topbar-bg: rgba(245, 247, 250, .96);--body-glow: rgba(37, 99, 235, .06);--body-gradient-top: #ffffff;--mini-list-divider: #edf1f5;--bar-track: #e5e7eb;--shadow-subtle: rgba(15, 42, 68, .04);--shadow: 0 2px 10px rgba(15, 42, 68, .08);color-scheme:light}[data-theme=dark]{--navy: #93c5fd;--navy-2: #60a5fa;--navy-3: #0c1524;--bg: #0e1218;--border: #2a3544;--border-soft: #1e2836;--text: #e8edf3;--text-strong: #f1f5f9;--muted: #94a3b8;--blue: #60a5fa;--green: #4ade80;--yellow: #fbbf24;--red: #f87171;--orange: #fb923c;--gray: #94a3b8;--white: #1a222d;--surface: #1a222d;--surface-muted: #151c26;--surface-2: #121820;--surface-hover: #243044;--input-bg: #1a222d;--topbar-bg: rgba(14, 18, 24, .94);--body-glow: rgba(37, 99, 235, .14);--body-gradient-top: #121820;--mini-list-divider: #2a3544;--bar-track: #334155;--shadow-subtle: rgba(0, 0, 0, .25);--shadow: 0 2px 14px rgba(0, 0, 0, .35);color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Manrope,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:radial-gradient(circle at top left,var(--body-glow),transparent 32%),linear-gradient(180deg,var(--body-gradient-top) 0%,var(--bg) 28%,var(--bg) 100%);color:var(--text)}button,input,select{font:inherit}.app{padding:16px;max-width:1920px;margin:0 auto}#content{min-width:0;max-width:100%}.topbar{position:sticky;top:0;z-index:20;background:var(--topbar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:8px 0 6px;border-bottom:1px solid var(--border)}.header-bar{display:flex;align-items:center;gap:12px 16px;flex-wrap:wrap}.brand-compact{display:flex;align-items:baseline;gap:10px;flex-shrink:0}.brand-logo{font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.5px;line-height:1}.brand-tagline{font-size:13px;font-weight:600;color:var(--muted);line-height:1.2}.kpi-strip{display:flex;flex:1;gap:6px;min-width:0;overflow-x:auto;padding:2px 0;scrollbar-width:thin}.kpi-strip .kpi{flex:0 0 auto;min-width:76px;max-width:110px;padding:5px 8px;text-align:center;background:var(--white);border:1px solid var(--border);border-radius:8px;box-shadow:0 1px 2px var(--shadow-subtle);min-height:auto}.kpi-strip .kpi-label{font-size:9px;font-weight:800;color:var(--muted);min-height:auto;line-height:1.15;text-transform:none}.kpi-strip .kpi-value{margin-top:2px;font-size:17px;font-weight:900;letter-spacing:-.4px}.kpi-board{background:var(--white);border:1px solid var(--border);border-radius:9px;overflow:hidden;box-shadow:var(--shadow)}.block-title{background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;font-weight:900;padding:9px 14px;font-size:14px;text-transform:uppercase;letter-spacing:.25px;overflow:hidden;text-overflow:ellipsis}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr)}.kpi{padding:12px 8px;text-align:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:82px}.kpi:nth-child(4n){border-right:0}.kpi:nth-last-child(-n+4){border-bottom:0}.kpi-label{font-size:12px;font-weight:800;color:var(--text-strong);min-height:28px;display:grid;place-items:center;line-height:1.2}.kpi-value{margin-top:8px;font-size:30px;line-height:1;font-weight:900;color:var(--blue);letter-spacing:-.6px}.kpi-value.green{color:var(--green)}.kpi-value.red{color:var(--red)}.tabs{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.tab-btn{border:1px solid var(--border);background:var(--surface);color:var(--navy);padding:6px 10px;border-radius:8px;font-weight:800;cursor:pointer;font-size:12px;transition:.15s ease;box-shadow:0 1px 2px var(--shadow-subtle)}.tab-btn:hover{border-color:var(--navy);transform:translateY(-1px)}.tab-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}.toolbar{display:grid;grid-template-columns:1fr 200px 200px 120px;gap:8px;margin:10px 0}.toolbar input,.toolbar select,.toolbar button{height:38px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:var(--input-bg);font-weight:700;color:var(--text)}.toolbar button{cursor:pointer;background:var(--navy);color:#fff;border-color:var(--navy);font-weight:900}.toolbar button:hover{background:var(--navy-2)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid-2>*,.grid-3>*{min-width:0}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{display:flex;flex-direction:column;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:9px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:18px;max-width:100%;min-width:0}.card-body{padding:14px}.table-wrap{flex:1 1 auto;min-height:0;overflow:auto;max-height:650px;max-width:100%;width:100%;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;contain:inline-size}table{width:100%;border-collapse:collapse;font-size:12px;background:var(--surface)}.table-wrap>table{table-layout:fixed}.table-wrap>table.positions-table{min-width:1180px}.table-wrap th,.table-wrap td{overflow:hidden;text-overflow:ellipsis;max-width:0}.positions-table .col-w-id{width:48px}.positions-table .col-w-order{width:92px}.positions-table .col-w-object{width:120px}.positions-table .col-w-item{width:160px}.positions-table .col-w-type,.positions-table .col-w-person{width:88px}.positions-table .col-w-stage{width:76px}.positions-table .col-w-date{width:96px}.positions-table .col-w-status{width:108px}.positions-table .col-w-progress{width:96px}.positions-table .col-w-overdue{width:72px}.positions-table .col-w-text{width:120px}.positions-table .col-w-actions{width:88px}.table-wrap td.col-item{max-width:none;white-space:normal;word-break:break-word}.table-wrap td.col-item strong,.table-wrap td.col-item .sub-label{display:block;overflow:hidden;text-overflow:ellipsis}.table-wrap .badge{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.table-wrap .actions-cell{max-width:100%;flex-wrap:wrap}.table-wrap .progress{max-width:100%;justify-content:center;flex-wrap:nowrap}.table-wrap .progress .bar{flex-shrink:1;min-width:32px}th,td{border:1px solid var(--border);padding:8px 9px;text-align:center;vertical-align:middle;white-space:nowrap}th{background:var(--surface-muted);font-weight:900;color:var(--text-strong);position:sticky;top:0;z-index:2}tbody tr:hover{background:var(--surface-hover)}.orders-legend{display:flex;flex-wrap:wrap;gap:14px;padding:10px 14px 0;font-size:12px;font-weight:800;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:8px}.legend-item:before{content:"";width:14px;height:14px;border-radius:4px;border:1px solid var(--border)}.legend-new:before{background:#dbeafe;border-color:#93c5fd}.legend-no-assignment:before{background:#ffedd5;border-color:#fdba74}tbody tr.row-order-new td{background:#eff6ff}tbody tr.row-order-no-assignment td{background:#fff7ed}tbody tr.row-order-new.row-order-no-assignment td{background:linear-gradient(90deg,#eff6ff,#eff6ff 50%,#fff7ed 50%,#fff7ed)}tbody tr.row-order-new:hover td,tbody tr.row-order-no-assignment:hover td,tbody tr.row-order-new.row-order-no-assignment:hover td{background:var(--surface-hover)}.positions-hint{margin:0;padding:10px 14px 0;font-size:12px;font-weight:700;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}.tree-controls{display:inline-flex;align-items:center;gap:4px;margin-right:8px;vertical-align:middle}.btn-tree,.btn-tree-placeholder{width:26px;height:26px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--surface-muted);font-size:11px;font-weight:900;line-height:1;cursor:pointer;color:var(--navy)}.btn-tree:hover{background:var(--surface-hover);border-color:#93c5fd}.btn-tree-placeholder{display:inline-block;border:none;background:transparent;cursor:default}.btn-add-sub{min-width:26px;padding:2px 8px;font-weight:900;color:var(--green)}.col-item .sub-label{color:#374151;font-weight:700}tbody tr.row-sub-position td{background:var(--surface-2)}tbody tr.row-sub-position td.col-item{padding-left:12px}tbody tr.row-sub-position:hover td{background:var(--surface-hover)}.drawer-parent-note{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:#eff6ff;border:1px solid #bfdbfe;font-size:13px;font-weight:700;color:#1e3a8a}td.left,th.left{text-align:left}.badge{display:inline-block;padding:4px 8px;border-radius:6px;font-weight:900;font-size:11px;min-width:74px;border:1px solid transparent}.badge.blue{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}.badge.yellow{background:#fef3c7;color:#b45309;border-color:#fde68a}.badge.green{background:#dcfce7;color:#15803d;border-color:#bbf7d0}.badge.orange{background:#ffedd5;color:#c2410c;border-color:#fed7aa}.badge.red{background:#fee2e2;color:#b91c1c;border-color:#fecaca}.badge.gray{background:#f3f4f6;color:#4b5563;border-color:#e5e7eb}.progress{display:flex;align-items:center;gap:6px;justify-content:center}.bar{width:52px;height:8px;border-radius:999px;background:var(--bar-track);overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#60a5fa,var(--blue));border-radius:999px}.overdue{color:var(--red);font-weight:900}.ok{color:var(--green);font-weight:900}.muted{color:var(--muted)}.process-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;padding:22px;text-align:center;overflow:hidden}.flow-step{position:relative;font-weight:800;color:var(--navy);min-width:0;padding:0 4px;overflow-wrap:anywhere}.flow-step:not(:last-child):after{content:"→";position:absolute;right:0;top:18px;color:var(--navy);font-size:22px;font-weight:900;pointer-events:none}.flow-icon{width:48px;height:48px;margin:0 auto 10px;border:2px solid var(--navy);border-radius:10px;display:grid;place-items:center;font-size:22px;background:var(--surface)}.directory-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;padding:14px}.mini-list{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.mini-list h4{margin:0;background:var(--surface-muted);border-bottom:1px solid var(--border);padding:9px;font-size:12px;text-transform:uppercase;color:var(--navy)}.mini-list div{padding:8px 10px;border-bottom:1px solid var(--mini-list-divider);font-size:12px;font-weight:700}.mini-list div:last-child{border-bottom:0}.empty{padding:28px;text-align:center;color:var(--muted);font-weight:800}.note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;padding:12px 14px;border-radius:9px;margin-bottom:18px;font-size:13px;font-weight:700;line-height:1.45}@media(max-width:1300px){.grid-2,.grid-3{grid-template-columns:1fr}.header-bar{flex-direction:column;align-items:stretch}.kpi-strip{width:100%}.toolbar{grid-template-columns:1fr 1fr}.directory-grid{grid-template-columns:repeat(3,1fr)}}.kpi-trends{display:flex;align-items:flex-end;gap:8px;flex:1 1 200px;min-width:140px;max-width:320px}.kpi-trends-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;writing-mode:vertical-rl;transform:rotate(180deg)}.kpi-trends-chart{display:flex;align-items:flex-end;gap:3px;height:36px;flex:1}.kpi-trend-bar{display:flex;flex-direction:column;align-items:center;flex:1;min-width:12px;height:100%;justify-content:flex-end}.kpi-trend-bar span{display:block;width:100%;max-width:14px;background:linear-gradient(180deg,#f87171,#dc2626);border-radius:3px 3px 0 0;min-height:2px}.kpi-trend-bar small{font-size:8px;color:var(--muted);margin-top:2px}@media print{.topbar,.toolbar{position:static}.tab-btn:not(.active),.toolbar{display:none}.card{box-shadow:none;break-inside:avoid}}[data-theme=dark] .kpi-label{color:var(--text-strong)}[data-theme=dark] th{background:var(--surface-muted);color:var(--text-strong)}[data-theme=dark] tbody tr:hover,[data-theme=dark] tbody tr.row-order-new:hover td,[data-theme=dark] tbody tr.row-order-no-assignment:hover td,[data-theme=dark] tbody tr.row-order-new.row-order-no-assignment:hover td{background:var(--surface-hover)}[data-theme=dark] tbody tr.row-order-new td{background:#2563eb24}[data-theme=dark] tbody tr.row-order-no-assignment td{background:#ea580c1f}[data-theme=dark] tbody tr.row-order-new.row-order-no-assignment td{background:linear-gradient(90deg,#2563eb24,#2563eb24 50%,#ea580c1f 50%,#ea580c1f)}[data-theme=dark] tbody tr.row-sub-position td{background:var(--surface-2)}[data-theme=dark] tbody tr.row-sub-position:hover td{background:var(--surface-hover)}[data-theme=dark] .legend-new:before{background:#2563eb59;border-color:#93c5fd80}[data-theme=dark] .legend-no-assignment:before{background:#ea580c47;border-color:#fdba7473}[data-theme=dark] .btn-tree,[data-theme=dark] .btn-tree:hover{background:var(--surface-muted)}[data-theme=dark] .btn-tree:hover{border-color:#93c5fd8c;background:#2563eb2e}[data-theme=dark] .col-item .sub-label{color:var(--muted)}[data-theme=dark] .drawer-parent-note,[data-theme=dark] .note{background:#2563eb24;border-color:#93c5fd59;color:#bfdbfe}[data-theme=dark] .badge.blue{background:#2563eb47;color:#93c5fd;border-color:#93c5fd59}[data-theme=dark] .badge.yellow{background:#f59e0b38;color:#fcd34d;border-color:#fde68a59}[data-theme=dark] .badge.green{background:#16a34a38;color:#86efac;border-color:#bbf7d04d}[data-theme=dark] .badge.orange{background:#ea580c38;color:#fdba74;border-color:#fed7aa59}[data-theme=dark] .badge.red{background:#dc262638;color:#fca5a5;border-color:#fecaca59}[data-theme=dark] .badge.gray{background:#94a3b82e;color:#cbd5e1;border-color:#cbd5e140}[data-theme=dark] .bar{background:#334155}[data-theme=dark] .btn-danger{background:#dc262626;border-color:#fecaca59}[data-theme=dark] .loading-overlay{background:#0a0e14c7}[data-theme=dark] .modal-backdrop{background:#0000009e}[data-theme=dark] .login-input-wrap input{background:var(--input-bg)}[data-theme=dark] .login-input-wrap input:hover{border-color:var(--border)}[data-theme=dark] .login-input-wrap input:focus{box-shadow:0 0 0 3px #93c5fd33}[data-theme=dark] .login-form-error{background:#dc262626;border-color:#fecaca59}[data-theme=dark] .toast{background:var(--surface);border-color:var(--border);box-shadow:0 8px 28px #00000073}[data-theme=dark] .toast--info{background:#2563eb2e}[data-theme=dark] .toast--success{background:#16a34a2e}[data-theme=dark] .toast--error{background:#dc26262e}[data-theme=dark] .history-time{color:var(--muted)}[data-theme=dark] .history-field{color:#94a3b8}[data-theme=dark] .history-new{color:var(--text)}[data-theme=dark] .drawer-backdrop{background:#0000008c}[data-theme=dark] .drawer{background:var(--surface);box-shadow:-12px 0 40px #00000073}[data-theme=dark] .meta-pill{background:#2563eb2e;color:#93c5fd;border-color:#93c5fd59}[data-theme=dark] .pipeline-step{background:var(--surface-muted)}[data-theme=dark] .pipeline-step.stage-done{border-color:#86efac73;background:#16a34a26}[data-theme=dark] .pipeline-step.stage-active{border-color:#fde68a73;background:#f59e0b1f}[data-theme=dark] .pipeline-step.stage-problem{border-color:#fecaca73;background:#dc262626}[data-theme=dark] .drawer-tab{background:var(--surface-muted)}[data-theme=dark] .drawer-tab.active{background:var(--navy-3);border-color:var(--navy-2);color:var(--navy)}[data-theme=dark] .form-field input,[data-theme=dark] .form-field select,[data-theme=dark] .form-field textarea{background:var(--input-bg);color:var(--text)}[data-theme=dark] body.view-operator{background:radial-gradient(ellipse 80% 50% at 0% -10%,color-mix(in srgb,var(--op-accent) 12%,transparent),transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,rgba(0,0,0,.25),transparent 50%),#0c1018}[data-theme=dark] .operator-shell{--op-surface: #1a222d;--op-surface-2: #151c26;--op-border: rgba(148, 163, 184, .14);--op-text: #e8edf3;--op-muted: #94a3b8;--op-shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 8px 24px rgba(0, 0, 0, .4);--op-shadow-lg: 0 4px 6px rgba(0, 0, 0, .3), 0 24px 48px rgba(0, 0, 0, .45)}[data-theme=dark] .op-queue-card{background:var(--op-surface)}[data-theme=dark] .op-queue-card.is-active{background:color-mix(in srgb,var(--op-accent) 14%,var(--op-surface))}[data-theme=dark] .op-btn-ghost,[data-theme=dark] .op-empty-queue{background:var(--op-surface-2)}[data-theme=dark] .install-mode-switch,[data-theme=dark] .ical-toolbar-center{background:var(--surface-2)}[data-theme=dark] .ical-nav-btn,[data-theme=dark] .ical-installer-filter{background:var(--input-bg)}[data-theme=dark] .ical-nav-btn:hover{background:var(--surface-hover)}[data-theme=dark] .ical-view-btn.active,[data-theme=dark] .install-mode-btn.active,[data-theme=dark] .ical-sidebar,[data-theme=dark] .ical-day{background:var(--surface)}[data-theme=dark] .ical-day--outside{background:var(--surface-2)}[data-theme=dark] .install-mode-btn{background:var(--surface-muted);color:var(--text)}[data-theme=dark] .install-mode-btn.active{background:var(--navy-3);color:var(--navy);border-color:var(--navy-2)}[data-theme=dark] .install-list-table tbody tr:hover{background:var(--surface-hover)}[data-theme=dark] .settings-nav-btn{background:var(--surface-muted)}[data-theme=dark] .settings-nav-btn.active{background:#2563eb38;border-color:#93c5fd66}@media(max-width:900px){[data-theme=dark] .drawer-backdrop.open{background:#000000a6}}.card-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;background:linear-gradient(180deg,var(--navy-2),var(--navy));min-width:0}.card-header-row .block-title{background:none;padding:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{height:34px;border:1px solid var(--border);border-radius:8px;padding:0 14px;background:var(--surface);font-weight:800;cursor:pointer;color:var(--navy)}.btn:hover{border-color:var(--navy)}.btn-primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-primary:hover{background:var(--navy-2)}.btn.is-loading{opacity:.75;cursor:wait;pointer-events:none}.btn-danger{background:#fef2f2;color:var(--red);border-color:#fecaca}.btn-sm{height:30px;padding:0 10px;font-size:12px}.actions-cell{display:flex;gap:6px;justify-content:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f2a4473;z-index:100;display:none;align-items:flex-end;justify-content:center;padding:16px;overflow-y:auto}@media(min-width:520px){.modal-backdrop{align-items:center}}.modal-backdrop.open{display:flex}.modal{width:min(560px,100%);max-height:90vh;overflow:auto;background:var(--surface);border-radius:12px;border:1px solid var(--border);box-shadow:0 20px 50px #0f2a4433}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-size:18px;color:var(--navy)}.modal-close{border:0;background:transparent;font-size:24px;cursor:pointer;color:var(--muted);line-height:1}.modal-body{padding:18px;display:grid;gap:12px}.form-field{display:grid;gap:6px}.form-field label{font-size:12px;font-weight:800;color:var(--navy);text-transform:uppercase}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-weight:600}.form-field textarea{min-height:72px;resize:vertical}.modal-footer{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:14px 18px 18px;border-top:1px solid var(--border)}@media(max-width:520px){.modal{width:100%;max-height:92vh;border-radius:16px 16px 0 0}.modal-backdrop.open{align-items:flex-end}}.form-error{color:var(--red);font-size:13px;font-weight:700;display:none}.form-error.visible{display:block}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#ffffffb3;z-index:50;display:none;place-items:center;font-weight:900;color:var(--navy)}.loading-overlay.visible{display:grid}.toolbar-actions{display:flex;gap:8px}.toolbar{grid-template-columns:1fr 220px 220px auto auto}@media(max-width:1300px){.toolbar{grid-template-columns:1fr 1fr}}.operator-shell{--op-surface: #ffffff;--op-surface-2: #f8fafc;--op-border: rgba(15, 42, 68, .08);--op-text: #0f172a;--op-muted: #64748b;--op-shadow: 0 1px 2px rgba(15, 42, 68, .04), 0 8px 24px rgba(15, 42, 68, .06);--op-shadow-lg: 0 4px 6px rgba(15, 42, 68, .04), 0 24px 48px rgba(15, 42, 68, .1);--op-radius: 16px;--op-radius-sm: 10px;--op-font: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;max-width:1440px;margin:0 auto;padding:0 4px 32px;font-family:var(--op-font);color:var(--op-text);animation:op-enter .45s cubic-bezier(.22,1,.36,1)}@keyframes op-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}body.view-operator{background:radial-gradient(ellipse 80% 50% at 0% -10%,var(--op-accent-soft),transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,rgba(15,42,68,.04),transparent 50%),#eef2f7}body.view-operator .app{padding-top:12px}.op-header{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:16px 24px;padding:20px 24px;margin-bottom:20px;background:var(--op-surface);border:1px solid var(--op-border);border-radius:var(--op-radius);box-shadow:var(--op-shadow)}.op-header-brand{display:flex;align-items:center;gap:14px;min-width:0}.op-logo-mark{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:var(--op-gradient);color:#fff;flex-shrink:0;box-shadow:0 4px 14px color-mix(in srgb,var(--op-accent) 35%,transparent)}.op-logo-mark svg{width:24px;height:24px}.op-eyebrow{margin:0 0 2px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--op-muted)}.op-title{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.03em;line-height:1.2;color:var(--op-text)}.op-header-stage{justify-self:center}.op-stage-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:999px;font-size:13px;font-weight:700;color:var(--op-accent);background:var(--op-accent-soft);border:1px solid color-mix(in srgb,var(--op-accent) 22%,transparent)}.op-header-user{display:flex;align-items:center;gap:12px;justify-self:end}.op-avatar{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff;background:var(--op-gradient);flex-shrink:0}.op-user-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.op-user-meta strong{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op-user-meta span{font-size:12px;color:var(--op-muted)}.op-header-actions{display:flex;gap:8px;margin-left:4px}.op-btn-ghost{padding:8px 14px;border:1px solid var(--op-border);border-radius:var(--op-radius-sm);background:var(--op-surface-2);font-size:13px;font-weight:600;color:var(--op-text);cursor:pointer;transition:background .15s,border-color .15s,transform .1s}.op-btn-ghost:hover{background:#fff;border-color:color-mix(in srgb,var(--op-accent) 30%,var(--op-border))}.op-btn-ghost:active{transform:scale(.98)}.op-btn-ghost-danger:hover{border-color:#fecaca;color:#b91c1c;background:#fef2f2}.op-stage-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:6px;background:var(--op-surface);border:1px solid var(--op-border);border-radius:var(--op-radius);box-shadow:var(--op-shadow)}.op-stage-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:none;border-radius:var(--op-radius-sm);background:transparent;font-family:inherit;font-size:13px;font-weight:600;color:var(--op-muted);cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.op-stage-tab-icon{display:flex;width:20px;height:20px;opacity:.7}.op-stage-tab-icon svg{width:100%;height:100%}.op-stage-tab:hover{color:var(--op-text);background:var(--op-surface-2)}.op-stage-tab.is-active{color:#fff;background:linear-gradient(135deg,var(--tab-accent),color-mix(in srgb,var(--tab-accent) 75%,#000));box-shadow:0 4px 12px color-mix(in srgb,var(--tab-accent) 35%,transparent)}.op-stage-tab.is-active .op-stage-tab-icon{opacity:1}.op-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:20px}.op-stat-card{padding:16px 18px;background:var(--op-surface);border:1px solid var(--op-border);border-radius:var(--op-radius-sm);box-shadow:var(--op-shadow)}.op-stat-card--accent{background:linear-gradient(145deg,var(--op-accent-soft),var(--op-surface));border-color:color-mix(in srgb,var(--op-accent) 18%,var(--op-border))}.op-stat-card--live{position:relative;overflow:hidden}.op-stat-card--live:before{content:"";position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 #22c55e80;animation:op-pulse-ring 2s ease-out infinite}@keyframes op-pulse-ring{0%{box-shadow:0 0 #22c55e73}70%{box-shadow:0 0 0 8px #22c55e00}to{box-shadow:0 0 #22c55e00}}.op-stat-value{display:block;font-size:1.75rem;font-weight:800;letter-spacing:-.04em;line-height:1.1;color:var(--op-text)}.op-stat-card--accent .op-stat-value{color:var(--op-accent)}.op-stat-value--time{font-size:1.25rem}.op-stat-label{display:block;margin-top:4px;font-size:12px;font-weight:600;color:var(--op-muted)}.op-layout{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:20px;align-items:start}@media(max-width:960px){.op-header{grid-template-columns:1fr}.op-header-stage,.op-header-user{justify-self:start}.op-layout{grid-template-columns:1fr}}.op-queue-panel,.op-work-panel{background:var(--op-surface);border:1px solid var(--op-border);border-radius:var(--op-radius);box-shadow:var(--op-shadow);overflow:hidden}.op-panel-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--op-border);background:var(--op-surface-2)}.op-panel-head h2{margin:0;font-size:15px;font-weight:800;letter-spacing:-.02em}.op-count-badge{min-width:28px;height:28px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;font-weight:800;color:var(--op-accent);background:var(--op-accent-soft)}.op-queue-list{display:flex;flex-direction:column;gap:8px;padding:12px;max-height:min(68vh,640px);overflow-y:auto;scrollbar-width:thin}.op-queue-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;text-align:left;border:1px solid var(--op-border);border-radius:var(--op-radius-sm);background:var(--op-surface);cursor:pointer;font-family:inherit;color:inherit;transition:border-color .15s,box-shadow .15s,transform .12s,background .15s}.op-queue-card:hover:not(:disabled){border-color:color-mix(in srgb,var(--op-accent) 40%,var(--op-border));box-shadow:0 4px 12px #0f2a440f;transform:translateY(-1px)}.op-queue-card.is-active{border-color:var(--op-accent);background:var(--op-accent-soft);box-shadow:0 0 0 1px color-mix(in srgb,var(--op-accent) 25%,transparent)}.op-queue-card.is-working{border-color:#16a34a;box-shadow:0 0 0 2px #16a34a1f}.op-queue-card.is-locked{opacity:.45;cursor:not-allowed;transform:none}.op-queue-card-top{display:flex;align-items:center;gap:8px}.op-queue-num{font-size:12px;font-weight:800;color:var(--op-accent);letter-spacing:.02em}.op-pulse-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:op-pulse-ring 1.8s ease-out infinite}.op-overdue-tag{margin-left:auto;padding:2px 8px;border-radius:6px;font-size:10px;font-weight:800;color:#b91c1c;background:#fef2f2}.op-queue-order{font-size:13px;font-weight:700;color:var(--op-text)}.op-queue-item{font-size:14px;font-weight:600;line-height:1.35}.op-queue-object{font-size:12px;color:var(--op-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op-queue-footer{margin-top:6px}.op-empty-queue{padding:40px 20px;text-align:center;color:var(--op-muted)}.op-empty-icon{width:48px;height:48px;margin:0 auto 12px;color:var(--op-accent);opacity:.5}.op-empty-icon svg{width:100%;height:100%}.op-empty-queue p{margin:0 0 4px;font-weight:700;color:var(--op-text)}.op-empty-queue span{font-size:13px}.op-work-panel{padding:24px;display:flex;flex-direction:column;gap:24px;min-height:480px}.op-task-hero{padding:24px;border-radius:var(--op-radius);background:var(--op-surface-2);border:1px solid var(--op-border)}.op-task-hero--live{border-color:color-mix(in srgb,var(--op-accent) 35%,var(--op-border));background:linear-gradient(160deg,var(--op-accent-soft) 0%,var(--op-surface-2) 55%);box-shadow:inset 0 1px #fffc}.op-task-hero-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.op-task-id{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--op-muted)}.op-task-title{margin:0 0 6px;font-size:1.5rem;font-weight:800;letter-spacing:-.03em;line-height:1.25}.op-task-subtitle{margin:0 0 20px;font-size:14px;color:var(--op-muted)}.op-task-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media(max-width:600px){.op-task-grid{grid-template-columns:1fr}}.op-task-field{padding:12px 14px;border-radius:var(--op-radius-sm);background:var(--op-surface);border:1px solid var(--op-border)}.op-task-field--full{grid-column:1 / -1}.op-task-field--warn{border-color:#fecaca;background:#fffafb}.op-task-field--warn .op-task-field-value{color:#b91c1c;font-weight:700}.op-task-field--problem{border-color:#fed7aa;background:#fffbeb}.op-task-field-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--op-muted);margin-bottom:4px}.op-task-field-value{font-size:14px;font-weight:600}.op-task-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px 20px;color:var(--op-muted)}.op-empty-illustration{width:160px;margin-bottom:16px;color:var(--op-accent);opacity:.35}.op-task-empty h2{margin:0 0 8px;font-size:1.15rem;font-weight:800;color:var(--op-text)}.op-task-empty p{margin:0;max-width:320px;font-size:14px;line-height:1.5}.op-machine-section{padding:20px;border-radius:var(--op-radius);border:1px solid var(--op-border);background:var(--op-surface-2)}.op-machine-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.op-machine-head h3{margin:0;font-size:14px;font-weight:800;letter-spacing:-.02em}.op-machine-status{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:4px 10px;border-radius:6px;color:var(--op-muted);background:var(--op-surface);border:1px solid var(--op-border)}.op-machine-status.is-active{color:var(--op-accent);background:var(--op-accent-soft);border-color:color-mix(in srgb,var(--op-accent) 25%,transparent)}.op-machine-body{display:flex;align-items:center;gap:28px;flex-wrap:wrap}.op-machine-ring-wrap{position:relative;width:120px;height:120px;flex-shrink:0}.op-machine-ring{width:100%;height:100%;transform:rotate(-90deg)}.op-ring-bg{fill:none;stroke:#0f2a4414;stroke-width:8}.op-ring-fill{fill:none;stroke:var(--op-accent);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .5s cubic-bezier(.22,1,.36,1)}.op-ring-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:1.35rem;font-weight:800;letter-spacing:-.03em;color:var(--op-text)}.op-machine-details{flex:1;min-width:200px}.op-linear-progress-head{display:flex;justify-content:space-between;margin-bottom:10px;font-size:13px;font-weight:600;color:var(--op-muted)}.op-linear-progress-head strong{color:var(--op-accent);font-size:15px}.op-linear-track{height:12px;border-radius:999px;background:#0f2a4414;overflow:hidden}.op-linear-fill{height:100%;border-radius:inherit;background:var(--op-gradient);transition:width .45s cubic-bezier(.22,1,.36,1);box-shadow:0 0 12px color-mix(in srgb,var(--op-accent) 40%,transparent)}.op-machine-msg{margin:12px 0 0;font-size:13px;color:var(--op-muted);line-height:1.45;min-height:1.4em}.op-match-card{margin-top:12px;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--op-accent) 8%,white);border:1px solid color-mix(in srgb,var(--op-accent) 25%,transparent)}.op-match-head{display:flex;justify-content:space-between;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--op-muted);margin-bottom:6px}.op-match-confidence{font-weight:700;color:var(--op-accent)}.op-match-card strong{display:block;font-size:14px;margin-bottom:4px}.op-match-reason{margin:0;font-size:12px;color:var(--op-muted)}.op-problem-tag{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#dc2626;color:#fff;font-size:11px;font-weight:800}.op-action-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media(max-width:720px){.op-action-bar{grid-template-columns:1fr}}.op-action-btn{display:flex;align-items:center;gap:14px;padding:18px 20px;border:none;border-radius:var(--op-radius);font-family:inherit;cursor:pointer;text-align:left;transition:transform .12s,box-shadow .15s,opacity .15s;min-height:72px}.op-action-btn:disabled{opacity:.38;cursor:not-allowed;transform:none!important;box-shadow:none!important}.op-action-btn:not(:disabled):hover{transform:translateY(-2px)}.op-action-btn:not(:disabled):active{transform:translateY(0) scale(.99)}.op-action-btn--start{color:#fff;background:linear-gradient(145deg,#2563eb,#1d4ed8);box-shadow:0 8px 24px #2563eb59}.op-action-btn--start:not(:disabled):hover{box-shadow:0 12px 28px #2563eb73}.op-action-btn--pause{color:#fff;background:linear-gradient(145deg,#ea580c,#c2410c);box-shadow:0 8px 24px #ea580c59}.op-action-btn--pause:not(:disabled):hover{box-shadow:0 12px 28px #ea580c73}.op-action-btn--resume{color:#fff;background:linear-gradient(145deg,#0d9488,#0f766e);box-shadow:0 8px 24px #0d948859}.op-action-btn--resume:not(:disabled):hover{box-shadow:0 12px 28px #0d948873}.op-action-btn--finish{color:#fff;background:linear-gradient(145deg,#16a34a,#15803d);box-shadow:0 8px 24px #16a34a59}.op-action-btn--finish:not(:disabled):hover{box-shadow:0 12px 28px #16a34a73}.op-action-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:#fff3;flex-shrink:0}.op-action-icon svg{width:22px;height:22px}.op-action-text{display:flex;flex-direction:column;gap:2px}.op-action-text strong{font-size:17px;font-weight:800;letter-spacing:-.02em}.op-action-text small{font-size:12px;font-weight:500;opacity:.85}.op-hint{display:flex;align-items:flex-start;gap:10px;margin:0;padding:14px 16px;border-radius:var(--op-radius-sm);font-size:13px;line-height:1.45;color:#92400e;background:#fffbeb;border:1px solid #fde68a}.op-hint-icon{flex-shrink:0;font-weight:800}.op-hint--warn{color:#991b1b;background:#fef2f2;border-color:#fecaca}.op-lock-banner{margin-bottom:16px;padding:16px 20px;border-radius:var(--op-radius);background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}.op-lock-banner strong{display:block;font-size:14px;margin-bottom:6px}.op-lock-banner p{margin:0 0 12px;font-size:13px;line-height:1.45}.op-lock-banner .op-btn-ghost{border-color:#fdba74;background:#fff}.operator-shell[data-stage=cutting] .op-action-btn--start:not(:disabled){background:linear-gradient(145deg,#0ea5e9,#0369a1);box-shadow:0 8px 24px #0ea5e959}.operator-shell[data-stage=edging] .op-action-btn--start:not(:disabled){background:linear-gradient(145deg,#8b5cf6,#6d28d9);box-shadow:0 8px 24px #8b5cf659}.operator-shell[data-stage=drilling] .op-action-btn--start:not(:disabled){background:linear-gradient(145deg,#f59e0b,#d97706);box-shadow:0 8px 24px #f59e0b59}.operator-shell[data-stage=assembly] .op-action-btn--start:not(:disabled){background:linear-gradient(145deg,#10b981,#059669);box-shadow:0 8px 24px #10b98159}.operator-page{max-width:none}.toast-container{position:fixed;right:16px;bottom:16px;z-index:10000;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{padding:12px 14px;border-radius:10px;font-size:13px;font-weight:600;box-shadow:0 8px 24px #0f2a442e;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .25s ease}.toast.visible{opacity:1;transform:translateY(0)}.toast-info{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe}.toast-success{background:#ecfdf5;color:#166534;border:1px solid #bbf7d0}.toast-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.dash-command{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:8px;padding:12px 14px 14px;overflow:hidden}.dash-widget{border-radius:12px;padding:14px 16px;border:1px solid var(--border-soft);background:#fff;min-width:0;overflow:hidden}.dash-widget-value{font-size:28px;font-weight:800;line-height:1.1}.dash-widget-label{font-size:13px;font-weight:700;margin-top:4px;overflow-wrap:anywhere}.dash-widget-hint{font-size:11px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}.dash-red .dash-widget-value{color:var(--red)}.dash-orange .dash-widget-value{color:var(--orange)}.dash-blue .dash-widget-value{color:var(--blue)}.dash-green .dash-widget-value{color:var(--green)}@media(max-width:900px){.dash-command{grid-template-columns:repeat(2,minmax(0,1fr))}}.login-modal{z-index:100;background:radial-gradient(circle at 20% 15%,rgba(37,99,235,.14),transparent 42%),radial-gradient(circle at 85% 80%,rgba(15,42,68,.18),transparent 45%),#0a1d318c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login-modal .modal{width:min(420px,100%);max-width:none;border:0;border-radius:16px;overflow:hidden;box-shadow:0 24px 60px #0f2a4447,0 0 0 1px #ffffff14 inset}.login-card{display:grid}.login-hero{padding:28px 28px 24px;background:linear-gradient(145deg,var(--navy-2) 0%,var(--navy) 55%,var(--navy-3) 100%);color:#fff;text-align:center}.login-hero-logo{display:inline-block;font-size:28px;font-weight:900;letter-spacing:-.6px;line-height:1}.login-hero-tagline{margin:8px 0 0;font-size:13px;font-weight:600;color:#ffffffc7}.login-form{display:grid}.login-form-body{padding:24px 28px 8px;display:grid;gap:16px}.login-title{margin:0;font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.3px}.login-subtitle{margin:-8px 0 0;font-size:14px;color:var(--muted);line-height:1.45}.login-field label{display:block;margin-bottom:6px;font-size:12px;font-weight:800;color:var(--navy);text-transform:uppercase;letter-spacing:.04em}.login-input-wrap{position:relative;display:flex;align-items:center}.login-input-wrap input{width:100%;height:46px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-weight:600;color:var(--text);background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.login-input-wrap input::placeholder{color:#9ca3af;font-weight:500}.login-input-wrap input:hover{border-color:#b8c4d0}.login-input-wrap input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #0f2a441f}.login-input-wrap--password input{padding-right:48px}.login-password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;padding:0}.login-password-toggle:hover{background:var(--bg);color:var(--navy)}.login-password-toggle:focus-visible{outline:2px solid var(--navy);outline-offset:2px}.login-password-toggle svg{width:20px;height:20px;display:block}.login-password-toggle svg[hidden]{display:none}.login-form-error{display:none;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:var(--red);font-size:13px;font-weight:700;line-height:1.4}.login-form-error.visible{display:flex}.login-form-error:before{content:"!";flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--red);color:#fff;font-size:14px;font-weight:900;display:grid;place-items:center;line-height:1}.login-form-footer{padding:8px 28px 28px}.login-submit{width:100%;height:48px;border-radius:10px;font-size:15px;font-weight:900;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:opacity .15s ease,background .15s ease}.login-submit:disabled{opacity:.72;cursor:wait}.login-submit-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:login-spin .7s linear infinite}.login-submit.is-loading .login-submit-text{opacity:.9}@keyframes login-spin{to{transform:rotate(360deg)}}.login-demo-hint{margin-top:18px;font-size:12px;color:var(--muted)}.login-demo-hint summary{cursor:pointer;font-weight:700;color:var(--navy-2);list-style:none;-webkit-user-select:none;user-select:none}.login-demo-hint summary::-webkit-details-marker{display:none}.login-demo-hint summary:before{content:"▸ ";display:inline-block;transition:transform .15s ease}.login-demo-hint[open] summary:before{transform:rotate(90deg)}.login-demo-hint ul{margin:10px 0 0;padding-left:18px;line-height:1.55}.login-demo-hint code{font-size:11px;padding:1px 5px;border-radius:4px;background:var(--bg);border:1px solid var(--border-soft);color:var(--navy)}@media(max-width:520px){.login-modal.open{align-items:flex-end;padding:0}.login-modal .modal{width:100%;border-radius:16px 16px 0 0;max-height:96vh}}@media(max-width:480px){.login-hero{padding:22px 20px 18px}.login-form-body,.login-form-footer{padding-left:20px;padding-right:20px}.login-form-footer{padding-bottom:calc(22px + env(safe-area-inset-bottom))}}
