@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";.device-list-container{--info-action-width: 64px;width:100%;height:100%;overflow-x:auto;overflow-y:auto;background:#fff}.device-table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:1320px}.device-table th{text-align:left;padding:12px 14px;background:#f1f5f9;color:#0f172a;font-weight:700;text-transform:none;font-size:.85rem;letter-spacing:0;position:sticky;top:0;z-index:20;box-shadow:none;border-bottom:1px solid #cbd5e1}.device-list-container.has-alert{--alert-sticky-offset: 3.25rem}.device-list-container.has-alert .device-table th{top:var(--alert-sticky-offset)}.device-table td{padding:12px 14px;border-bottom:1px solid #e2e8f0;color:var(--text-primary);vertical-align:middle;background:#fff}.device-table tbody tr:hover td{background:#f8fafc}.device-table tr:last-child td{border-bottom:none}.group-header td{background:#e0f2fe;color:#075985;font-weight:700;font-size:1rem;padding:10px 14px;border-top:1px solid #bae6fd;border-bottom:1px solid #bae6fd}.device-table tbody{scroll-margin-top:8px}.highlight-group tr{background:#3b82f60d}.badge{padding:4px 8px;border-radius:6px;font-size:.75rem;font-weight:600;display:inline-block}.version-cell{display:grid;gap:3px;color:#334155;font-size:.78rem;font-weight:700;white-space:nowrap}.version-cell span:first-child{color:#6d28d9}.version-cell span:last-child{color:#0f766e}.equipment-rca-cell{display:grid;gap:4px;min-width:310px}.equipment-rca-cell strong{display:flex;align-items:baseline;min-width:0;color:#0f172a;font-size:.88rem;line-height:1.25;white-space:nowrap}.equipment-rca-cell strong.unmapped,.equipment-rca-cell small.unmapped{color:#b45309}.equipment-rca-cell span{color:#2563eb;font-size:.78rem;font-weight:800}.equipment-rca-cell>span{display:flex;align-items:center;min-width:0}.equipment-rca-cell small{display:flex;align-items:center;color:#475569;font-size:.74rem;font-weight:700;overflow:visible;white-space:nowrap}.equipment-rca-cell .identity-label{display:inline-flex;flex:0 0 58px;margin-right:6px;color:#64748b;font-size:.68rem;font-weight:800;white-space:nowrap}.process-id-line{display:inline-block!important;min-width:0;color:#0f172a!important;font-size:.82rem!important;font-weight:900!important;white-space:nowrap}.type-control_box{background:#dbeafe;color:#1d4ed8}.type-pikvm{background:#d1fae5;color:#047857}.type-recs_device{background:#e0f2fe;color:#0369a1}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px}.device-state-text{display:inline-block;min-width:84px;color:#334155;font-size:.86rem;font-weight:800;letter-spacing:0;vertical-align:middle}.status-stack{display:grid;justify-items:start;align-items:start;gap:6px;min-width:0}.status-line{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}.status-stack .do-led-panel{margin-left:0}.device-state-text.state-registered,.device-state-text.state-idle,.device-state-text.state-standby{color:#a16207}.device-state-text.state-in_use,.device-state-text.state-remote_connected{color:#2e7d32}.device-state-text.state-kvm_active{color:#1565c0}.device-state-text.state-comm_error{color:#fb8c00}.device-state-text.state-error,.device-state-text.state-unstable,.device-state-text.state-safe_off,.device-state-text.state-maintenance{color:#d32f2f}.status-standby{background-color:var(--text-secondary)}.status-in_use{background-color:var(--warning);box-shadow:0 0 8px var(--warning)}.status-remote_connected{background-color:var(--success);box-shadow:0 0 8px var(--success)}.status-comm_error{background-color:var(--danger)}.status-online,.status-idle,.status-registered{background-color:var(--success)}.status-kvm_active{background-color:var(--info);box-shadow:0 0 8px var(--info)}.status-unstable,.status-safe_off,.status-error,.status-maintenance{background-color:var(--danger)}.status-note{display:inline-block;margin-left:0;padding:2px 6px;border-radius:5px;background:#fef3c7;color:#b45309;font-size:.72rem;font-weight:700}.ntp-note{background:#e0f2fe;color:#0369a1}.ntp-note.ntp-ok{background:#d1fae5;color:#047857}.ntp-note.ntp-warn{background:#fef3c7;color:#b45309}.heartbeat-note{background:#e2e8f0;color:#334155}.heartbeat-note.hb-ok{background:#d1fae5;color:#047857}.heartbeat-note.hb-warn{background:#fef3c7;color:#b45309}.heartbeat-note.hb-stale{background:#fee2e2;color:#b91c1c}.kvm-note{background:#e0f2fe;color:#075985;border:1px solid #7dd3fc}.kvm-note.kvm-active{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.kvm-note.kvm-connecting{background:#f5f3ff;color:#6d28d9;border-color:#c4b5fd}.kvm-note.kvm-closing{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.kvm-note.kvm-error{background:#fee2e2;color:#b91c1c;border-color:#fecaca}.btn-group{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}.recs-command-panel{--recs-command-grid: 48px 48px 76px 88px 8px 70px 70px;display:grid;gap:6px;min-width:492px;max-width:560px}.owner-hint{font-size:11px;color:#5b6472;line-height:1.3}.usage-hint{max-width:100%;word-break:break-all}.command-row{display:grid;grid-template-columns:var(--recs-command-grid);align-items:center;gap:6px}.command-row-main>.btn-sm{width:100%;min-width:0;box-sizing:border-box;justify-content:center;padding-left:4px;padding-right:4px}.command-row-main .btn-info,.command-row-main .command-kvm-close-btn{grid-column:auto;overflow:hidden;text-overflow:ellipsis}.command-row-main .command-kvm-reset-btn{grid-column:6}.command-row-main .command-state-reset-btn{grid-column:7}.command-row-main{padding-bottom:2px}.btn-sm.command-reset-btn{min-width:70px;padding:5px 6px;font-size:.72rem;background:#ffd166;color:#111827;border:1px solid #b77900;font-weight:800;box-shadow:0 0 0 2px #ffd1663d;display:inline-flex;align-items:center;justify-content:center;gap:4px}.btn-sm.command-reset-btn .power-symbol{display:block;width:17px;height:17px;overflow:visible;fill:none;stroke:#dc2626!important;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;opacity:1!important;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}.btn-sm.command-reset-btn:hover{opacity:1;background:#ffc247}.btn-sm.command-reset-btn:disabled{background:#fde68a;color:#854d0e;border-color:#f59e0b;box-shadow:none;opacity:1}.btn-sm.command-reset-btn:disabled .power-symbol{stroke:#dc2626!important;opacity:.55!important}.btn-sm.command-state-reset-btn,.btn-sm.command-kvm-reset-btn{min-width:70px;padding:5px 6px;font-size:.72rem;font-weight:800;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-sm.command-kvm-close-btn{min-width:0;width:100%;padding:5px 4px;font-size:.7rem;font-weight:800;background:#475569;color:#fff;border:1px solid #334155}.btn-sm.command-kvm-close-btn:hover{background:#334155}.btn-sm.command-kvm-close-btn:disabled{background:#dbe4ee;color:#64748b;border:1px solid #cbd5e1;opacity:1}.btn-sm.command-state-reset-btn{background:#eef2ff;color:#3730a3;border-color:#a5b4fc}.btn-sm.command-state-reset-btn:hover{background:#e0e7ff}.btn-sm.command-kvm-reset-btn{background:#ccfbf1;color:#115e59;border-color:#5eead4}.btn-sm.command-kvm-reset-btn:hover{background:#99f6e4}.btn-sm.command-state-reset-btn:disabled,.btn-sm.command-kvm-reset-btn:disabled{background:#e5e7eb;color:#94a3b8;border-color:#cbd5e1;cursor:not-allowed}.reset-note{background:#ffedd5;color:#9a3412;border:1px solid #fdba74}.replacement-note{background:#f5f3ff;color:#6d28d9;border:1px solid #c4b5fd}.reset-pending-row td{background:#fff7ed}.reset-pending-row:hover td{background:#ffedd5}.section-control-grid{display:grid;grid-template-columns:74px repeat(4,52px) 8px 70px;align-items:center;gap:6px;padding-top:4px;min-height:28px}.section-control-grid .command-reset-btn{grid-column:7}.section-control-hint{display:inline-flex;align-items:center;color:#475569;font-size:.7rem;font-weight:900;padding:0 2px;white-space:nowrap}.section-control{display:inline-flex;align-items:center;gap:4px;padding:5px 7px;border:1px solid #dbe4ee;border-radius:6px;background:#f8fafc;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center}.section-control.selectable.selected{border-color:#22c55e;background:#dcfce7}.section-control.disabled{opacity:.45;cursor:not-allowed;background:#f1f5f9}.section-control.disabled span{color:#94a3b8}.section-control input{width:13px;height:13px;margin:0;accent-color:#16a34a}.section-control span{color:#334155;font-size:.7rem;font-weight:800;line-height:1}.btn-sm{padding:6px 12px;border-radius:6px;border:none;font-size:.8rem;font-weight:600;cursor:pointer;transition:opacity .2s;color:#fff;white-space:nowrap}.recs-command-panel .command-row-main .btn-sm:not(.command-kvm-close-btn){min-width:0;padding-left:4px;padding-right:4px;font-size:.72rem}.info-button{width:var(--info-action-width, 64px);min-width:var(--info-action-width, 64px);padding:5px 10px;font-size:.76rem;white-space:nowrap}.info-action-stack{display:grid;gap:6px;justify-items:start}.replacement-approve-button,.replacement-cancel-button{width:var(--info-action-width, 64px);min-width:var(--info-action-width, 64px);padding:5px 8px;font-size:.72rem;font-weight:900;border:1px solid transparent}.replacement-approve-button{background:#7c3aed;color:#fff;border-color:#6d28d9}.replacement-approve-button:hover{background:#6d28d9}.replacement-cancel-button{background:#fee2e2;color:#991b1b;border-color:#fecaca}.replacement-cancel-button:hover{background:#fecaca}.btn-xs{padding:4px 7px;border-radius:5px;border:none;font-size:.68rem;font-weight:800;line-height:1.1;cursor:pointer;color:#fff}.btn-success{background:var(--success)}.btn-danger{background:var(--danger)}.btn-warning{background:var(--warning);color:#000}.btn-info{background:var(--info)}.btn-secondary{background:var(--text-secondary)}.btn-sm:hover{opacity:.9}.btn-sm:disabled,.btn-xs:disabled{opacity:.45;cursor:not-allowed}@media(max-width:760px){.device-list-container{height:auto;overflow:visible;background:transparent}.device-table{display:block;min-width:0;width:100%;border-collapse:separate;font-size:.84rem}.device-table thead{display:none}.device-table tbody{display:block;margin-bottom:12px}.device-table .group-header{display:block}.device-table .group-header td{display:block;width:100%;padding:9px 11px;border:1px solid #bae6fd;border-radius:8px 8px 0 0;font-size:.88rem}.device-table .device-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-bottom:10px;border:1px solid #cbd5e1;border-top:0;border-radius:0 0 9px 9px;overflow:hidden;background:#fff;box-shadow:0 5px 14px #0f172a14}.device-table .device-row+.device-row{border-top:1px solid #cbd5e1;border-radius:9px}.device-table .device-row td{display:block;min-width:0;padding:9px 10px;border:0;border-bottom:1px solid #e2e8f0;background:#fff}.device-table .device-row td:before{content:attr(data-label);display:block;margin-bottom:4px;color:#64748b;font-size:.65rem;font-weight:900}.device-table .identity-cell,.device-table .status-table-cell,.device-table .control-cell,.device-table .info-cell{grid-column:1 / -1}.device-table .network-cell{border-right:1px solid #e2e8f0;word-break:break-all}.equipment-rca-cell{min-width:0}.equipment-rca-cell strong,.equipment-rca-cell small,.process-id-line{white-space:normal;overflow-wrap:anywhere}.status-stack{gap:8px}.recs-command-panel{width:100%;min-width:0;max-width:none;gap:9px}.command-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.command-row-main .command-kvm-reset-btn,.command-row-main .command-state-reset-btn{grid-column:auto}.recs-command-panel .command-row-main .btn-sm,.recs-command-panel .command-row-main .btn-sm:not(.command-kvm-close-btn){width:100%;min-width:0;min-height:44px;padding:7px 5px}.section-control-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;min-height:0}.section-control-hint{grid-column:1 / -1}.section-control{min-height:42px;padding:7px 4px}.section-control input{width:17px;height:17px}.section-control-grid .command-reset-btn{grid-column:1 / -1;width:100%;min-height:44px}.info-button{width:100%;min-height:44px}}@media(max-width:420px){.device-table .device-row{grid-template-columns:minmax(0,1fr)}.device-table .identity-cell,.device-table .status-table-cell,.device-table .control-cell,.device-table .info-cell{grid-column:1}.device-table .network-cell{border-right:0}.command-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.btn-icon{background:#f8fafc;border:1px solid #e2e8f0;font-size:1.1rem;cursor:pointer;padding:4px;border-radius:4px;transition:background .2s;margin-right:8px}.btn-icon:hover{background:#e2e8f0}.btn-icon.delete:hover{background:#ef444433}.alert{padding:12px 16px;border-radius:8px;margin:0 0 8px;font-size:.9rem}.alert-toast{position:sticky;top:0;z-index:30;outline:none;box-shadow:0 4px 16px #0f172a1f}.alert-toast.alert-success{background:#ecfdf5fa}.alert-toast.alert-error{background:#fef2f2fa}.alert-toast:focus{box-shadow:0 4px 16px #0f172a2e,0 0 0 2px #2563eb59}.alert-success{background:#10b9811a;border:1px solid var(--success);color:var(--success)}.alert-error{background:#ef44441f;border:1px solid var(--danger);color:var(--danger)}.link-icon{text-decoration:none;font-size:1.2rem;vertical-align:middle}.log-viewer h3{margin-bottom:16px;color:var(--text-secondary);font-size:1rem}.badge-success{background:#10b98133;color:#34d399}.badge-danger{background:#ef444433;color:#f87171}.do-led-panel{display:inline-grid;gap:6px;margin-left:10px;padding:3px 7px;border:1px solid #dbe4ee;border-radius:6px;background:#f8fafc;vertical-align:middle}.do-led-row{display:inline-flex;align-items:center;gap:6px}.do-led-title{color:#475569;font-size:.68rem;font-weight:700;margin-right:2px}.do-led-channel{display:inline-flex;flex-direction:column;align-items:center;gap:1px}.do-led{width:10px;height:10px;border-radius:50%;border:1px solid #94a3b8}.do-led.on{background:#22c55e;border-color:#16a34a;box-shadow:0 0 6px #22c55ea6}.do-led.off{background:#6b7280;border-color:#4b5563}.do-led.unknown{background:#cbd5e1;border-color:#94a3b8;box-shadow:inset 0 0 0 2px #e2e8f0}.do-led.inactive{background:#cbd5e1;border-color:#94a3b8}.do-led-label{color:#64748b;font-size:.58rem;line-height:1}.do-led-panel.compact{margin-left:0;padding:3px 5px;gap:3px}.do-led-panel.compact .do-led-row{gap:5px}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;min-height:100dvh;background:#0f172a85;display:flex;justify-content:center;align-items:center;z-index:1000;padding:16px;overflow:hidden}.modal{background:#f8fafc;color:#0f172a;border-radius:12px;width:100%;max-width:560px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);border:1px solid #cbd5e1;box-shadow:0 24px 64px #0f172a52;animation:slideIn .3s ease-out;overflow:hidden;display:flex;flex-direction:column}.device-info-modal{max-width:min(1080px,calc(100vw - 32px));display:flex;flex-direction:column}@keyframes slideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:16px 20px;border-bottom:1px solid #dbe3ef;display:flex;justify-content:space-between;align-items:center;background:#fff;flex:0 0 auto;position:sticky;top:0;z-index:2}.modal-header h2{margin:0;color:#0f172a;font-size:1.12rem;line-height:1.2}.modal-subtitle{margin:5px 0 0;color:#475569;font-size:.86rem}.close-btn{background:transparent;border:none;color:#475569;font-size:1.5rem;cursor:pointer;width:34px;height:34px;border-radius:8px;line-height:1}.close-btn:hover{background:#e2e8f0;color:#0f172a}form{padding:18px 20px 20px;overflow:auto;max-height:calc(100vh - 104px);max-height:calc(100dvh - 104px);min-height:0}.device-info-content{padding:16px 20px 4px;overflow:auto;min-height:0}.info-hero{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;margin-bottom:12px;border:1px solid #bfdbfe;border-radius:10px;background:linear-gradient(135deg,#eff6ff,#f8fafc)}.info-hero strong{display:block;margin-top:4px;color:#0f172a;font-size:1.15rem}.info-hero small{display:block;margin-top:3px;color:#475569;font-size:.82rem;font-weight:700}.info-eyebrow{color:#1d4ed8;font-size:.76rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.info-status{padding:7px 11px;border-radius:999px;background:#dbeafe;color:#1e40af;font-size:.78rem;font-weight:800;white-space:nowrap}.info-section{margin-bottom:12px;padding:12px;border:1px solid #dbe3ef;border-radius:10px;background:#fff}.info-section h3{margin:0 0 9px;color:#0f172a;font-size:.9rem;font-weight:800}.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.info-row{min-width:0;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.info-row.wide{grid-column:1 / -1}.info-row span{display:block;margin-bottom:4px;color:#2563eb;font-size:.76rem;font-weight:700}.info-row strong{display:block;overflow-wrap:anywhere;color:#155e75;font-size:.88rem;line-height:1.35;font-weight:800}.info-row.tone-positive strong{color:#047857}.info-row.tone-muted{background:#f1f5f9;border-color:#e2e8f0}.info-row.tone-muted span{color:#94a3b8}.info-row.tone-muted strong{color:#94a3b8;font-weight:700}.info-actions{padding:12px 20px 16px;margin-top:0;border-top:1px solid #dbe3ef;background:#fff;flex:0 0 auto;position:sticky;bottom:0;z-index:2}.master-summary{margin:2px 0 16px;padding:12px 14px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff}.master-summary span{display:block;margin-bottom:4px;color:#1d4ed8;font-size:.76rem;font-weight:800}.master-summary strong{display:block;color:#0f172a;font-size:.94rem}.master-summary p{margin:6px 0 0;color:#334155;font-size:.85rem}@media(max-width:900px){.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.form-group{margin-bottom:14px}.form-row{display:flex;gap:14px}.form-row .form-group{flex:1}label{display:block;margin-bottom:6px;font-size:.9rem;color:#334155;font-weight:700}.modal input[type=text],.modal input[type=password],.modal input[type=number],.modal select,.modal textarea{width:100%;padding:10px 11px;background:#fff;border:1px solid #cbd5e1;border-radius:8px;color:#0f172a;font-size:.95rem;transition:all .2s}.modal input::placeholder,.modal textarea::placeholder{color:#94a3b8}.modal input:disabled,.modal select:disabled,.modal textarea:disabled{background:#e2e8f0;color:#475569;opacity:1;cursor:default}.modal select option{background:#fff;color:#0f172a}.modal input:focus,.modal select:focus,.modal textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb29}.checkbox-group label{display:flex;align-items:center;gap:10px;cursor:pointer;color:#0f172a}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-primary)}.modal-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:22px}.btn-secondary{background:#e2e8f0;color:#0f172a;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer}.btn-secondary:hover{background:#cbd5e1}.error{background:#fee2e2;color:#991b1b;padding:12px;border-radius:8px;margin:20px 20px 0;font-size:.9rem}@media(max-width:720px){.modal-overlay{padding:10px;align-items:stretch}.modal{max-width:none;max-height:calc(100dvh - 20px);border-radius:10px}.device-info-modal{max-width:none}.modal-header{align-items:flex-start;gap:10px;padding:12px 14px}.modal-header h2{font-size:1rem}.modal-subtitle{font-size:.78rem;line-height:1.35}.close-btn{flex:0 0 38px;width:38px;height:38px;background:#f1f5f9}form{padding:14px;max-height:none;flex:1}.device-info-content{padding:12px 14px 4px;flex:1}.info-hero{align-items:stretch;flex-direction:column;gap:10px;padding:12px}.info-status{width:100%;border-radius:8px;white-space:normal;line-height:1.35}.info-grid,.form-row{grid-template-columns:1fr;flex-direction:column;gap:0}.info-section{padding:10px;margin-bottom:10px}.info-row{padding:8px}.info-row span{font-size:.72rem}.info-row strong{font-size:.82rem}.modal input[type=text],.modal input[type=password],.modal input[type=number],.modal select,.modal textarea{min-height:44px;font-size:1rem}.form-actions,.info-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 14px 12px;background:#fff}.form-actions .btn,.info-actions .btn,.btn-secondary,.btn-primary{width:100%;min-height:44px;padding:10px 12px}}@media(max-width:420px){.modal-overlay{padding:6px}.modal{max-height:calc(100dvh - 12px);border-radius:8px}.form-actions,.info-actions{grid-template-columns:1fr}}.operation-log-console{display:flex;flex-direction:column;min-height:0;height:100%;color:var(--text-primary)}.operation-log-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--border-color);min-width:0}.operation-log-toolbar h3{margin:0;color:#0f172a;font-size:1.02rem;white-space:nowrap}.operation-log-actions{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;min-width:0;height:32px;overflow-x:auto;padding:0}.operation-log-actions>*{box-sizing:border-box;align-self:center;margin-top:0;margin-bottom:0}.operation-log-actions select,.operation-log-actions button,.operation-log-actions .system-toggle{height:32px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#0f172a;padding:0 7px;font-size:.8rem;font-weight:600;flex:0 0 auto}.operation-log-actions .category-select{width:104px}.operation-log-actions .transport-select,.operation-log-actions .segment-select{width:92px}.operation-log-actions .result-select{width:108px}.operation-log-actions .limit-select{width:74px}.operation-log-actions button{background:#2563eb;color:#fff;cursor:pointer;min-width:46px}.operation-log-actions .secondary-action{background:#f8fafc;color:#0f172a}.system-toggle{display:inline-flex;align-items:center;justify-content:center;gap:5px;color:#334155;white-space:nowrap;cursor:pointer;line-height:1;min-width:62px}.system-toggle input{position:static;opacity:1;pointer-events:auto;width:13px;height:13px;margin:0;flex:0 0 auto;display:block}.system-toggle span{display:block;line-height:1}.operation-log-summary{display:flex;gap:8px;flex-wrap:wrap;padding:12px 0}.operation-log-summary span{border-radius:6px;background:#f1f5f9;border:1px solid #e2e8f0;color:#334155;padding:4px 8px;font-size:.78rem;font-weight:700}.operation-log-filters{display:grid;grid-template-columns:minmax(110px,1.15fr) minmax(110px,1.05fr) minmax(120px,1.15fr) minmax(92px,.75fr) minmax(150px,1.35fr) 132px 132px auto;align-items:center;gap:8px;padding:10px 0 0}.operation-log-filters input,.operation-log-filters select{height:34px;min-width:0;border:1px solid #cbd5e1;border-radius:6px;color:#0f172a;background:#fff;padding:0 9px;font-size:.84rem}.filter-clear-button{height:34px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#334155;font-weight:800;cursor:pointer;padding:0 12px}.operation-log-error{margin-bottom:10px;border:1px solid #fecaca;background:#fef2f2;color:#991b1b;border-radius:6px;padding:8px 10px}.operation-log-table-wrap{min-height:0;flex:1;overflow:auto;border:1px solid var(--border-color);border-radius:8px;background:#fff}.operation-log-table{width:100%;min-width:1640px;border-collapse:collapse;table-layout:fixed;font-size:.86rem}.operation-log-table .col-time{width:128px}.operation-log-table .col-category{width:168px}.operation-log-table .col-route{width:220px}.operation-log-table .col-result{width:108px}.operation-log-table .col-device{width:420px}.operation-log-table .col-actor{width:128px}.operation-log-table .col-action{width:252px}.operation-log-table .col-summary{width:auto}.operation-log-table th{position:sticky;top:0;z-index:5;background:#f1f5f9;color:#0f172a;text-align:left;padding:10px 12px;border-bottom:1px solid #cbd5e1}.operation-log-table td{padding:10px 12px;border-bottom:1px solid #e2e8f0;color:#0f172a;vertical-align:middle}.time-cell,.actor-cell,.action-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.operation-log-table tbody tr{cursor:pointer}.operation-log-table tbody tr:hover td{background:#f8fafc}.operation-log-table tbody tr.selected-log-row td{background:#e0f2fe;border-bottom-color:#7dd3fc}.operation-log-table tbody tr.command-log-row td{cursor:zoom-in}.category-pill,.message-kind-pill,.result-pill,.direction-pill,.transport-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:6px;padding:3px 7px;font-size:.72rem;font-weight:800;white-space:nowrap;min-height:22px;box-sizing:border-box;line-height:1}.category-kind-cell{display:flex;align-items:center;gap:5px;min-width:0}.category-pill{font-size:.7rem;font-weight:600}.message-kind-pill{min-width:42px;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;font-size:.66rem;font-weight:700;min-height:20px;padding:2px 6px}.message-kind-pill.heartbeat{background:#f0fdff;color:#0e7490;border-color:#a5f3fc}.message-kind-pill.status{background:#eff6ff;color:#075985;border-color:#bfdbfe}.message-kind-pill.event{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.message-kind-pill.result{background:#f0fdf4;color:#166534;border-color:#bbf7d0}.message-kind-pill.callback{background:#fff7ed;color:#9a3412;border-color:#fed7aa}.message-kind-pill.dispatch{background:#f7fee7;color:#15803d;border-color:#d9f99d}.message-kind-pill.request{background:#f8fbff;color:#1d4ed8;border-color:#dbeafe}.message-kind-pill.final{background:#f8fafc;color:#334155;border-color:#dbe4ee}.message-kind-pill.kvm{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.message-kind-pill.update{background:#fefce8;color:#854d0e;border-color:#fef08a}.message-kind-pill.system{background:#e2e8f0;color:#334155;border-color:#94a3b8}.message-kind-pill.legacy{background:#f8fafc;color:#64748b;border-color:#cbd5e1}.message-kind-pill.neutral{background:#f8fafc;color:#64748b;border-color:#e2e8f0}.route-cell{white-space:nowrap}.route-cell .transport-pill,.route-cell .direction-pill{font-size:.66rem;font-weight:600;min-height:20px;padding:2px 6px}.route-cell .transport-pill{min-width:48px;margin-right:5px}.route-cell .direction-pill{min-width:88px}.direction-pill .direction-arrow{color:#0f172a;display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;font-size:.92rem;font-weight:900;line-height:.7;margin:0 5px;transform:scaleX(1.18);transform-origin:center}.category-audit{background:#e0f2fe;color:#075985}.category-command{background:#fef3c7;color:#92400e}.category-command-control{background:#fb923c;color:#7c2d12}.category-command-kvm{background:#7c3aed;color:#fff}.category-kvm{background:#ede9fe;color:#5b21b6}.category-system{background:#e2e8f0;color:#334155}.category-legacy{background:#f1f5f9;color:#475569}.result-pill{font-size:.68rem;font-weight:600}.result-pill.ok{background:#d1fae5;color:#065f46}.result-pill.pending{background:#dbeafe;color:#1d4ed8}.result-pill.warn{background:#fef3c7;color:#92400e}.result-pill.bad{background:#fee2e2;color:#991b1b}.result-pill.neutral{background:#e2e8f0;color:#334155}.route-cell .direction-pill.rca-in{background:#f0fdff;color:#075985;border:1px solid #a5f3fc}.route-cell .direction-pill.rca-out{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.route-cell .direction-pill.rems-in{background:#faf5ff;color:#6b21a8;border:1px solid #e9d5ff}.route-cell .direction-pill.ui-in{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.route-cell .direction-pill.viewer-in,.route-cell .direction-pill.viewer-out{background:#f5f3ff;color:#6d28d9;border:1px solid #c4b5fd}.route-cell .direction-pill.rems-out{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}.route-cell .direction-pill.bidirectional{background:#f8fafc;color:#334155;border:1px solid #dbe4ee}.route-cell .direction-pill.neutral{background:#f8fafc;color:#64748b;border:1px solid #e2e8f0}.route-cell.transport-api .transport-pill.api{background:#f8fafc;color:#334155;border-color:#94a3b8}.route-cell.transport-api .direction-pill.rca-in,.route-cell.transport-api .direction-pill.rca-out{background:#ecfeff;color:#0e7490;border:1px solid #06b6d4;box-shadow:inset 3px 0 #0891b2}.route-cell.transport-api .direction-pill.ui-in,.route-cell.transport-api .direction-pill.viewer-in,.route-cell.transport-api .direction-pill.viewer-out{background:#eef2ff;color:#3730a3;border:1px solid #6366f1;box-shadow:inset 3px 0 #4f46e5}.route-cell.transport-api .direction-pill.rems-in,.route-cell.transport-api .direction-pill.rems-out{background:#fff7ed;color:#9a3412;border:1px solid #f97316;box-shadow:inset 3px 0 #ea580c}.route-cell.transport-api .direction-pill.bidirectional{background:#fefce8;color:#854d0e;border:1px solid #ca8a04;box-shadow:inset 3px 0 #a16207}.route-cell .transport-pill.mqtt{background:#f0fdfa;color:#115e59;border:1px solid #99f6e4}.route-cell .transport-pill.mqtt-pub{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.route-cell .transport-pill.mqtt-sub{background:#f0fdfa;color:#115e59;border:1px solid #99f6e4}.route-cell .transport-pill.api{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.route-cell .transport-pill.ws{background:#f5f3ff;color:#5b21b6;border:1px solid #ddd6fe}.route-cell .transport-pill.system{background:#e2e8f0;color:#334155;border:1px solid #94a3b8}.route-cell .transport-pill.legacy{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1}.route-cell .transport-pill.neutral{background:#f8fafc;color:#64748b;border:1px solid #e2e8f0}.log-device-cell{display:flex;flex-direction:column;gap:3px}.equipment-device-line,.session-line{display:flex;align-items:center;gap:6px;min-width:0}.equipment-device-line strong{color:#0f172a;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.equipment-device-line span,.session-line span{color:#334155}.session-line{padding-left:12px}.session-line small{color:#64748b;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.detail-meta span{border:1px solid #475569;border-radius:6px;color:#dbeafe;background:#1e293b;padding:3px 7px;font-size:.74rem;font-weight:700}.operation-log-detail-panel{flex:0 0 auto;max-height:260px;overflow:hidden;border:1px solid #334155;border-radius:8px;background:#0f172a;margin-top:10px;display:flex;flex-direction:column;min-height:138px}.detail-panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid #334155;background:#111827}.detail-panel-header>div{display:flex;align-items:center;gap:10px;min-width:0}.detail-panel-header strong{color:#f8fafc;font-size:.86rem;white-space:nowrap}.detail-panel-header span{color:#cbd5e1;font-size:.78rem}.detail-panel-header button{border:1px solid #64748b;border-radius:6px;background:#1e293b;color:#f8fafc;font-weight:800;cursor:pointer;padding:4px 9px}.operation-log-detail-panel .detail-meta{padding:8px 10px 0;margin-bottom:6px}.operation-log-detail-panel pre{flex:1;min-height:0;overflow:auto;color:#e2e8f0;white-space:pre-wrap;word-break:break-word;margin:0;padding:0 10px 10px;font-size:.76rem;line-height:1.45}.scenario-modal-backdrop{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172a73}.scenario-modal{width:min(1080px,96vw);max-height:86vh;display:flex;flex-direction:column;border:1px solid #94a3b8;border-radius:10px;background:#fff;box-shadow:0 24px 60px #0f172a47;overflow:hidden;will-change:transform}.scenario-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #cbd5e1;background:#f8fafc;cursor:move;-webkit-user-select:none;user-select:none}.scenario-modal-header>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px;min-width:0}.scenario-modal-header span{color:#475569;font-size:.78rem;font-weight:800}.scenario-modal-header strong{color:#0f172a;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scenario-modal-header small{flex-basis:100%;color:#1e3a8a;font-size:.82rem;font-weight:800;line-height:1.35}.scenario-modal-header button{border:1px solid #64748b;border-radius:6px;background:#1e293b;color:#fff;font-weight:800;cursor:pointer;padding:6px 12px}.scenario-print-actions{display:flex;align-items:center;gap:7px;flex-shrink:0;cursor:default}.scenario-modal-header .scenario-pdf-button{border-color:#1d4ed8;background:#2563eb}.scenario-modal-header button:disabled{cursor:not-allowed;opacity:.55}.scenario-modal-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid #e2e8f0;background:#fff}.scenario-modal-meta>span:not(.result-pill){border:1px solid #dbeafe;border-radius:6px;background:#eff6ff;color:#1e3a8a;padding:4px 8px;font-size:.75rem;font-weight:800}.scenario-modal-error{margin:10px 14px 0;border:1px solid #fecaca;border-radius:6px;background:#fef2f2;color:#991b1b;padding:8px 10px;font-size:.82rem;font-weight:800}.scenario-modal-body{min-height:0;overflow:auto;padding:14px}.scenario-modal-empty{color:#64748b;padding:28px;text-align:center;font-weight:800}.scenario-view-toggle{display:inline-flex;gap:4px;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc;padding:3px;margin-bottom:12px}.scenario-view-toggle button{border:0;border-radius:6px;background:transparent;color:#475569;padding:6px 12px;font-size:.78rem;font-weight:900;cursor:pointer}.scenario-view-toggle button.active{background:#1e293b;color:#fff}.scenario-compact-note{margin:-4px 0 12px;color:#475569;font-size:.78rem;font-weight:700}.scenario-sequence{min-width:760px;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden;background:#fff}.sequence-header{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));border-bottom:1px solid #cbd5e1;background:#f1f5f9}.sequence-lane-title{padding:9px 10px;text-align:center;color:#0f172a;font-size:.82rem;font-weight:900;border-right:1px solid #cbd5e1}.sequence-lane-title:last-child{border-right:0}.sequence-body{display:flex;flex-direction:column;background:linear-gradient(to right,transparent calc(12.5% - 1px),#cbd5e1 calc(12.5% - 1px),#cbd5e1 calc(12.5% + 1px),transparent calc(12.5% + 1px)),linear-gradient(to right,transparent calc(37.5% - 1px),#cbd5e1 calc(37.5% - 1px),#cbd5e1 calc(37.5% + 1px),transparent calc(37.5% + 1px)),linear-gradient(to right,transparent calc(62.5% - 1px),#cbd5e1 calc(62.5% - 1px),#cbd5e1 calc(62.5% + 1px),transparent calc(62.5% + 1px)),linear-gradient(to right,transparent calc(87.5% - 1px),#cbd5e1 calc(87.5% - 1px),#cbd5e1 calc(87.5% + 1px),transparent calc(87.5% + 1px))}.sequence-row{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));min-height:46px;position:relative;border-bottom:1px solid #e2e8f0}.sequence-row:last-child{border-bottom:0}.sequence-row.scenario-selected-step{background:linear-gradient(90deg,#fef3c7d1,#dbeafe85);scroll-margin:80px}.sequence-lane-line{min-width:0}.sequence-message{align-self:center;z-index:1;margin:4px 10px;border:1px solid #bfdbfe;border-radius:7px;background:#f8fbfff5;padding:4px 7px;box-shadow:0 2px 7px #0f172a0f;min-width:0}.sequence-message.compact{display:grid;gap:3px}.scenario-selected-step .sequence-message,.scenario-timeline-item.scenario-selected-step .scenario-timeline-content{border-color:#f59e0b;background:#fffbeb;box-shadow:0 0 0 3px #f59e0b2e,0 8px 18px #0f172a24}.sequence-message.self{border-color:#cbd5e1;background:#f8fafcf7}.scenario-selected-step .sequence-message.self{border-color:#f59e0b;background:#fffbeb}.sequence-message-top,.sequence-message-main,.sequence-message-sub{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}.sequence-message-line{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;white-space:nowrap}.sequence-message-line strong{min-width:0;overflow:hidden;color:#0f172a;font-size:.78rem;font-weight:900;text-overflow:ellipsis}.sequence-index{display:inline-flex;align-items:center;justify-content:center;min-width:1.35em;color:#0f172a;font-size:.76rem;font-weight:900;line-height:1}.sequence-index:after{content:"."}.sequence-key-chip,.sequence-error-chip,.sequence-group-chip{display:inline-flex;align-items:center;max-width:150px;overflow:hidden;border:1px solid #dbe4ee;border-radius:999px;background:#fff;color:#334155;padding:2px 6px;font-size:.66rem;font-weight:800;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.sequence-error-chip{border-color:#fecaca;background:#fef2f2;color:#991b1b}.sequence-group-chip{border-color:#c4b5fd;background:#f5f3ff;color:#5b21b6}.sequence-inline-summary{min-width:0;max-width:min(320px,34vw);overflow:hidden;color:#475569;font-size:.7rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.scenario-selected-badge{display:inline-flex;align-items:center;border:1px solid #f59e0b;border-radius:999px;background:#f97316;color:#fff;padding:3px 7px;font-size:.68rem;font-weight:900;line-height:1}.sequence-arrow-line{position:relative;height:14px;margin:5px 0}.sequence-arrow-line:before{content:"";position:absolute;top:6px;left:8px;right:8px;border-top:2px solid #1e40af}.sequence-message.right .sequence-arrow-line:after,.sequence-message.left .sequence-arrow-line:after{content:"";position:absolute;top:2px;width:8px;height:8px;border-top:2px solid #1e40af;border-right:2px solid #1e40af}.sequence-message.right .sequence-arrow-line:after{right:7px;transform:rotate(45deg)}.sequence-message.left .sequence-arrow-line:after{left:7px;transform:rotate(225deg)}.sequence-message.self .sequence-arrow-line:before{display:none}.sequence-message.self .sequence-arrow-line{height:6px;margin:3px 0}.sequence-time-arrow{position:relative;display:flex;align-items:center;justify-content:center;gap:5px;height:18px;color:#1e40af;font-size:.68rem;font-weight:900;line-height:1}.sequence-time-arrow:before{content:"";position:absolute;left:8px;right:8px;top:50%;border-top:2px solid #1e40af;transform:translateY(-50%)}.sequence-time-arrow span,.sequence-time-arrow .scenario-detail-toggle{position:relative;z-index:1;border:1px solid #bfdbfe;border-radius:999px;background:#f8fbff;color:#1e3a8a;padding:1px 7px}.sequence-time-arrow .scenario-detail-toggle{margin-top:0;border-color:#cbd5e1;background:#fff;color:#1e40af;padding:1px 7px;font-size:.68rem;line-height:1.15}.sequence-time-arrow.right:after,.sequence-time-arrow.left:after{content:"";position:absolute;top:calc(50% - 4px);width:8px;height:8px;border-top:2px solid #1e40af;border-right:2px solid #1e40af}.sequence-time-arrow.right:after{right:7px;transform:rotate(45deg)}.sequence-time-arrow.left:after{left:7px;transform:rotate(225deg)}.sequence-message-main strong{color:#0f172a;font-size:.82rem;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sequence-message-main span{border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;padding:3px 6px;font-size:.7rem;font-weight:800}.sequence-message-main .sequence-error-chip{border-color:#fecaca;background:#fef2f2;color:#991b1b}.sequence-message-sub{margin-top:3px}.scenario-key-strip{display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap;margin-top:5px}.scenario-key-strip.timeline{justify-content:flex-start;margin-top:7px}.scenario-key-strip span{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid #dbe4ee;border-radius:6px;background:#fff;color:#334155;padding:3px 6px;font-size:.68rem;font-weight:800}.sequence-message-sub>span{flex:0 1 auto;min-width:0;color:#334155;font-size:.76rem;line-height:1.35;text-align:center;word-break:break-word}.scenario-timeline{display:flex;flex-direction:column;gap:10px}.scenario-timeline-item{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;min-width:0;scroll-margin:80px}.scenario-timeline-index{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:#0f172a;color:#fff;font-size:.76rem;font-weight:900}.scenario-timeline-content{min-width:0;border:1px solid #dbeafe;border-radius:8px;background:#f8fbff;padding:9px 10px}.scenario-timeline-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:7px}.scenario-step-time{color:#64748b;font-size:.75rem;font-weight:800}.segment-pill{display:inline-flex;align-items:center;justify-content:center;min-height:22px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#334155;padding:3px 7px;font-size:.72rem;font-weight:800}.scenario-timeline-title{color:#0f172a;font-size:.86rem;font-weight:900;margin-bottom:4px}.scenario-timeline-summary{color:#334155;font-size:.8rem;line-height:1.45;word-break:break-word}.scenario-error-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px}.scenario-error-meta span{border:1px solid #fecaca;border-radius:6px;background:#fef2f2;color:#991b1b;padding:3px 7px;font-size:.72rem;font-weight:800}.scenario-detail-toggle{margin-top:8px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#1e40af;padding:4px 8px;font-size:.72rem;font-weight:800;cursor:pointer}.sequence-message-sub .scenario-detail-toggle{flex:0 0 auto;margin-top:0;padding:3px 7px}.scenario-detail-json{max-height:220px;overflow:auto;margin:8px 0 0;border:1px solid #334155;border-radius:6px;background:#0f172a;color:#e2e8f0;padding:9px;white-space:pre-wrap;word-break:break-word;font-size:.74rem;line-height:1.45}.empty-cell{text-align:center;color:#64748b!important;padding:30px!important}@media(max-width:1200px){.operation-log-filters{grid-template-columns:repeat(3,minmax(130px,1fr))}.scenario-modal-backdrop{padding:12px}}@media(max-width:760px){.operation-log-console{height:auto;min-height:100%;overflow:visible}.operation-log-toolbar{align-items:stretch;flex-direction:column;gap:8px;padding-bottom:8px}.operation-log-toolbar h3{font-size:1rem}.operation-log-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;width:100%;height:auto;overflow:visible}.operation-log-actions select,.operation-log-actions button,.operation-log-actions .system-toggle{width:100%;height:42px;min-width:0;font-size:.78rem}.operation-log-actions .category-select,.operation-log-actions .transport-select,.operation-log-actions .segment-select,.operation-log-actions .result-select,.operation-log-actions .limit-select{width:100%}.operation-log-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-top:8px}.operation-log-filters input,.operation-log-filters select,.filter-clear-button{height:42px;font-size:.82rem}.filter-clear-button{grid-column:1 / -1}.operation-log-summary{gap:6px;padding:9px 0;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.operation-log-summary::-webkit-scrollbar{display:none}.operation-log-summary span{flex:0 0 auto;font-size:.72rem}.operation-log-table-wrap{flex:0 0 auto;max-height:none;overflow:visible;border:0;border-radius:0;background:transparent}.operation-log-table{display:block;min-width:0;width:100%;table-layout:auto;border-collapse:separate;border-spacing:0;font-size:.82rem}.operation-log-table colgroup,.operation-log-table thead{display:none}.operation-log-table tbody{display:grid;gap:9px}.operation-log-table tr,.operation-log-table tbody tr.selected-log-row,.operation-log-table tbody tr.command-log-row{display:grid;gap:6px;padding:10px;border:1px solid #dbe3ef;border-radius:10px;background:#fff;box-shadow:0 6px 16px #0f172a0f}.operation-log-table tbody tr:hover td,.operation-log-table tbody tr.selected-log-row td,.operation-log-table tbody tr.command-log-row td{background:transparent}.operation-log-table tbody tr.selected-log-row{border-color:#38bdf8;background:#f0f9ff}.operation-log-table td{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;align-items:start;min-height:0;padding:0;border:0;color:#0f172a}.operation-log-table td:before{content:attr(data-label);color:#64748b;font-size:.72rem;font-weight:800;line-height:1.6}.operation-log-table .empty-cell{display:block;padding:18px 12px;border:1px solid #dbe3ef;border-radius:10px;background:#fff;text-align:center}.operation-log-table .empty-cell:before{content:"";display:none}.time-cell,.actor-cell,.action-cell,.summary-cell{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.category-kind-cell,.route-cell{flex-wrap:wrap;white-space:normal}.route-cell .transport-pill{margin-right:0}.equipment-device-line,.session-line{align-items:flex-start;flex-wrap:wrap;gap:4px}.equipment-device-line strong,.session-line small{white-space:normal;overflow:visible;text-overflow:clip}.session-line{padding-left:0}.operation-log-detail-panel{max-height:42vh;min-height:160px;margin-top:10px}.detail-panel-header{align-items:flex-start}.detail-panel-header>div{align-items:flex-start;flex-direction:column;gap:3px}.detail-panel-header strong,.detail-panel-header span{white-space:normal;overflow-wrap:anywhere}.scenario-modal-backdrop{align-items:stretch;padding:8px}.scenario-modal{width:100%;max-height:calc(100dvh - 16px);border-radius:10px}.scenario-modal-header{align-items:stretch;flex-direction:column;gap:8px;padding:10px}.scenario-modal-header>div{align-items:flex-start;flex-direction:column;gap:4px}.scenario-modal-header strong,.scenario-modal-header small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.scenario-modal-header .scenario-print-actions{display:flex;flex-direction:row;align-items:stretch;gap:7px;width:100%}.scenario-modal-header .scenario-print-actions button{flex:1 1 0;min-height:42px;white-space:nowrap}.scenario-modal-meta{padding:8px 10px;max-height:116px;overflow:auto}.scenario-modal-body{padding:10px}.scenario-view-toggle{display:grid;grid-template-columns:1fr 1fr;width:100%}.scenario-view-toggle button{min-height:40px;padding:8px 10px!important}.scenario-sequence,.scenario-timeline{gap:8px}.scenario-timeline-item{grid-template-columns:28px minmax(0,1fr);gap:8px}.scenario-detail-json,.operation-log-detail-panel pre{font-size:.72rem}}@media(max-width:420px){.operation-log-actions,.operation-log-filters{grid-template-columns:1fr}.operation-log-table td{grid-template-columns:76px minmax(0,1fr)}}@media print{@page{size:landscape;margin:10mm}body *{visibility:hidden!important}.scenario-modal-backdrop,.scenario-modal-backdrop *{visibility:visible!important}.scenario-modal-backdrop{position:absolute;inset:0;display:block;padding:0;background:#fff}.scenario-modal{width:100%;max-height:none;border-color:#64748b;border-radius:0;box-shadow:none;overflow:visible}.scenario-modal-body{overflow:visible}.scenario-print-actions,.scenario-view-toggle{display:none!important}.scenario-timeline-item,.sequence-message,.scenario-detail-json{break-inside:avoid}.scenario-modal,.scenario-modal *{print-color-adjust:exact;-webkit-print-color-adjust:exact}}.dashboard-container{display:flex;flex-direction:column;gap:16px;height:100%;color:var(--text-primary)}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}.stat-card{padding:14px 16px;border-radius:8px;border:1px solid var(--border-color);box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .2s;min-height:78px;cursor:pointer}.total-card{background:#eef6ff;border-color:#b7d7ff}.registered-card{background:#f5f3ff;border-color:#ddd6fe}.online-card{background:#e0f7fa;border-color:#00acc1}.active-card{background:#e8f5e9;border-color:#2e7d32}.kvm-card{background:#e3f2fd;border-color:#1565c0}.standby-card{background:#f1f5f9;border-color:#64748b}.comm-card{background:#fff3e0;border-color:#fb8c00}.error-card{background:#ffebee;border-color:#d32f2f}.stat-card:hover{transform:translateY(-2px);filter:none;box-shadow:0 8px 18px #0f172a1a}.stat-card.selected{border:2px solid var(--accent-primary);transform:translateY(-1px);box-shadow:0 0 0 3px #2563eb1f}.stat-value{font-size:1.85rem;font-weight:700;color:#0f172a;margin-bottom:5px;text-shadow:none}.no-result{grid-column:1 / -1;text-align:center;padding:40px;color:#94a3b8;font-size:1.1rem}.stat-label{font-size:.78rem;color:#334155;text-transform:uppercase;letter-spacing:0;font-weight:600}.equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;overflow-y:auto;padding-bottom:20px}.equipment-card{background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:transform .2s,box-shadow .2s;min-width:0;border-left:5px solid #cbd5e1}.equipment-card.card-online{border-left-color:#00acc1;background:#f4fdff}.equipment-card.card-active{border-left-color:#2e7d32;background:#f6fff6}.equipment-card.card-kvm{border-left-color:#1565c0;background:#f5faff}.equipment-card.card-standby{border-left-color:#64748b;background:#f8fafc}.equipment-card.card-comm{border-left-color:#fb8c00;background:#fff8ef}.equipment-card.card-error{border-left-color:#d32f2f;background:#fff5f5}.equipment-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px #0f172a1a;border-color:var(--accent-primary)}.card-header{background:#f8fafc;padding:11px 13px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-color)}.card-header h3{margin:0;font-size:1rem;color:var(--text-primary);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.status-badge{padding:4px 8px;border-radius:6px;font-size:.7rem;font-weight:600}.status-badge.online{background:#00acc1;color:#fff}.status-badge.active{background:#2e7d32;color:#fff}.status-badge.kvm{background:#1565c0;color:#fff}.status-badge.standby{background:#475569;color:#fff}.status-badge.comm{background:#fb8c00;color:#fff}.status-badge.error{background:#d32f2f;color:#fff}.card-body{padding:9px;display:flex;flex-direction:column;gap:7px}.device-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #e2e8f0;border-radius:6px;background:#fff}.device-item.item-online{border-color:#80deea}.device-item.item-active{border-color:#81c784}.device-item.item-kvm{border-color:#90caf9}.device-item.item-standby{border-color:#ffe082}.device-item.item-comm,.device-item.item-error{border-color:#ef9a9a}.device-info{display:flex;align-items:center;gap:6px;min-width:0}.dashboard-device-status{display:block;width:100%;text-align:right;background:transparent!important;border:0!important;box-shadow:none!important;padding:0;line-height:1.1}.dashboard-device-status span{display:inline;background:transparent!important;border:0!important;box-shadow:none!important;padding:0;font-size:.76rem;font-weight:800;letter-spacing:0}.dashboard-status-online span{color:#00838f}.dashboard-status-active span{color:#2e7d32}.dashboard-status-kvm span{color:#1565c0}.dashboard-status-standby span{color:#475569}.dashboard-status-comm span{color:#fb8c00}.dashboard-status-error span{color:#d32f2f}.device-runtime{display:flex;align-items:flex-end;flex-direction:column;gap:7px;flex:0 0 auto;min-width:120px}.device-id{color:#0f172a;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem}.device-id-stack{min-width:0;display:grid;gap:2px}.device-version{color:#6d28d9;font-size:.72rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-process{color:#0f766e;font-size:.72rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-process.unmapped{color:#b45309}.device-type-icon{flex:0 0 auto;border-radius:6px;border:1px solid #cbd5e1;background:#f1f5f9;color:#334155;padding:2px 6px;font-size:.7rem;font-weight:700;min-width:38px;text-align:center}.device-runtime .do-led-panel{margin-left:0;background:#f8fafc}@media(max-width:900px){.dashboard-container{height:auto;min-height:100%}.stats-row{grid-template-columns:repeat(4,minmax(0,1fr))}.equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr));overflow-y:visible}}@media(max-width:640px){.stats-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.stat-card{min-height:66px;padding:9px 8px}.stat-value{margin-bottom:1px;font-size:1.45rem}.equipment-grid{grid-template-columns:minmax(0,1fr);gap:9px;padding-bottom:8px}.card-header{padding:10px}.device-item{grid-template-columns:minmax(0,1fr);gap:7px}.device-runtime{width:100%;min-width:0;align-items:flex-start;flex-direction:row;justify-content:space-between}.dashboard-device-status{width:auto;text-align:left}}.equipment-master-section{background:var(--bg-card);border-radius:16px;padding:24px;border:1px solid var(--border-color);box-shadow:0 4px 6px -1px #0000001a;color:var(--text-primary);overflow:hidden}.master-actions{display:flex;align-items:center;gap:10px}.file-input{max-width:280px;color:var(--text-secondary)}.master-source-note{margin-top:3px;color:var(--text-secondary);font-size:.78rem}.master-message{margin:12px 0;padding:10px 12px;border-radius:8px;font-size:.9rem}.master-message.success{border:1px solid var(--success);color:var(--success);background:#10b9811a}.master-message.warning{border:1px solid var(--warning);color:var(--warning);background:#f59e0b1a}.master-message.error{border:1px solid var(--danger);color:var(--danger);background:#ef44441a}.master-table-wrapper{flex:1;min-height:0;overflow:auto;border:1px solid var(--border-color);border-radius:8px}.master-table{min-width:1320px;width:100%;table-layout:fixed;border-collapse:collapse;font-size:.82rem}.master-table .col-equipment-id{width:12%}.master-table .col-equipment-name{width:20%}.master-table .col-active{width:5%}.master-table .col-resolution{width:10%}.master-table .col-section{width:7%}.master-table .col-notes{width:12%}.master-table .col-updated{width:13%}.master-table th{position:sticky;top:0;background:#dbeafe;color:#1e3a8a;text-align:left;padding:10px 12px;z-index:2;white-space:nowrap}.master-table td{padding:9px 12px;border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:top}.master-table .nowrap{white-space:nowrap}.master-table .resolution-cell{min-width:128px}.master-table .center-cell{text-align:center;min-width:92px}.master-table td{overflow-wrap:anywhere}.master-table .notes-cell{min-width:140px;white-space:normal;word-break:keep-all;overflow-wrap:break-word}.master-table td:last-child{min-width:160px}@media(max-width:760px){.equipment-master-section{height:auto;min-height:100%;padding:12px;overflow:visible;border-radius:9px}.equipment-master-section .section-header{flex-direction:row;align-items:center}.master-actions .btn-primary{min-height:44px;padding:8px 13px}.master-table-wrapper{overflow:visible;border:0}.master-table{display:block;min-width:0;table-layout:auto}.master-table colgroup,.master-table thead{display:none}.master-table tbody{display:grid;gap:10px}.master-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid #cbd5e1;border-radius:9px;overflow:hidden;background:#fff;box-shadow:0 4px 12px #0f172a12}.master-table td,.master-table td:last-child,.master-table .notes-cell,.master-table .resolution-cell,.master-table .center-cell{display:block;min-width:0;padding:8px 10px;border:0;border-bottom:1px solid #e2e8f0;text-align:left;white-space:normal}.master-table td:before{content:attr(data-label);display:block;margin-bottom:2px;color:#64748b;font-size:.64rem;font-weight:900}.master-table .master-id-cell,.master-table .master-name-cell,.master-table td:nth-last-child(-n+2){grid-column:1 / -1}.master-table .master-id-cell{background:#eff6ff;color:#1d4ed8;font-weight:900}.master-table .master-name-cell{color:#0f172a;font-size:.9rem;font-weight:900}}@media(max-width:420px){.equipment-master-section .section-header{align-items:stretch;flex-direction:column}.master-actions,.master-actions .btn-primary{width:100%}.master-table tr{grid-template-columns:minmax(0,1fr)}.master-table .master-id-cell,.master-table .master-name-cell,.master-table td:nth-last-child(-n+2){grid-column:1}}.update-manager{background:var(--bg-card);border-radius:10px;padding:24px;border:1px solid var(--border-color);box-shadow:0 10px 28px #0f172a1f;color:var(--text-primary);display:flex;flex-direction:column;min-height:0}.update-manager.full-height{overflow-x:hidden;overflow-y:auto;min-height:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.update-manager>.section-header,.update-manager>.update-notice,.update-manager>.rca-manager-tabs{flex-shrink:0}.update-manager>.update-layout,.update-manager>.config-panel{flex:0 0 auto;min-height:auto;overflow:visible;padding-bottom:28px}.update-manager h2,.update-manager h3{letter-spacing:0}.update-notice{padding:10px 12px;border-radius:8px;margin-bottom:14px;font-weight:700;border:1px solid transparent}.update-notice.success{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.update-notice.error{background:#fef2f2;border-color:#fecaca;color:#991b1b}.rca-manager-tabs{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:10px;margin-bottom:16px;padding:6px;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc;flex-shrink:0}.rca-manager-tabs button{min-height:42px;border:1px solid transparent;border-radius:8px;background:transparent;color:#334155;font-weight:900;cursor:pointer}.rca-manager-tabs button:hover{background:#eef6ff;border-color:#bfdbfe}.rca-manager-tabs button.active{color:#fff;background:linear-gradient(135deg,#2563eb,#0f766e);box-shadow:0 8px 18px #2563eb2e}.update-layout{display:grid;grid-template-columns:minmax(620px,1.45fr) minmax(330px,.55fr);gap:16px;align-items:start;align-content:start}.update-left{display:flex;flex-direction:column;gap:16px;min-width:0;min-height:min-content}.update-panel{border:1px solid var(--border-color);border-radius:8px;background:var(--panel-muted);padding:14px;min-width:0}.upload-panel{background:#fff7ed;border-color:#fed7aa}.deploy-panel{background:#eef6ff;border-color:#bfdbfe}.package-panel{background:#f0fdf4;border-color:#bbf7d0}.update-jobs-panel{background:#f5f3ff;border-color:#ddd6fe}.config-panel{background:#f8fafc;border-color:#cbd5e1;margin-bottom:0}.config-panel-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.config-panel-header p{margin:-4px 0 10px;color:var(--text-secondary);font-size:.84rem}.config-grid{display:grid;grid-template-columns:minmax(560px,1.15fr) minmax(360px,.85fr);gap:14px;align-items:start}.config-form-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px}.config-form-grid label,.config-apply-box label{display:grid;gap:5px;color:var(--text-secondary);font-size:.82rem;font-weight:800}.config-form-grid input,.config-form-grid select,.config-apply-box select{min-height:34px;border:1px solid var(--border-color);border-radius:8px;background:#fff;color:var(--text-primary);padding:7px 9px;font:inherit}.config-form-grid .inline-check{display:flex;align-items:center;gap:7px;min-height:34px}.config-form-grid .inline-check input{min-height:0;width:auto}.config-apply-box{display:grid;gap:10px;min-width:0}.config-device-list{max-height:200px;overflow-y:auto;border:1px solid #dbeafe;border-radius:8px;background:#fff}.config-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.config-job-list{display:grid;gap:6px;max-height:360px;min-height:220px;overflow-y:auto;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:8px}.config-job-list-title{font-size:.78rem;font-weight:800;color:var(--text-secondary);padding:2px 4px 4px}.config-job-row{display:grid;grid-template-columns:110px 78px minmax(0,1fr);gap:8px;align-items:start;padding:8px;border-radius:8px;background:#fff;border:1px solid #e2e8f0;font-size:.8rem}.config-job-row>strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}.config-job-row>.update-status{justify-self:start;align-self:start;margin:0}.config-job-row em{min-width:0;color:var(--text-secondary);font-style:normal;white-space:normal;word-break:break-word;line-height:1.35;padding-top:2px}.update-panel h3{margin:0 0 10px;color:var(--text-primary);font-size:1rem;line-height:1.25}.update-form,.deploy-controls{display:grid;gap:10px}.update-form.compact{grid-template-columns:1fr;align-items:stretch}.update-form label,.deploy-controls label,.package-select-group{display:grid;gap:6px;color:var(--text-secondary);font-size:.86rem;font-weight:700;line-height:1.25}.update-manager .update-form input,.deploy-controls select{width:100%;border:1px solid var(--border-color);border-radius:8px;background:#fff;color:var(--text-primary);padding:8px 10px;font:inherit;min-height:36px}.upload-file-row{display:grid;grid-template-columns:minmax(260px,1fr) 96px;gap:10px;align-items:center}.upload-file-picker{min-width:0;display:grid;grid-template-columns:92px minmax(0,1fr);gap:10px;align-items:center;cursor:pointer}.upload-file-picker input{position:absolute;width:1px;height:1px;min-height:0;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.upload-file-picker span,.upload-submit-btn{min-height:36px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-weight:800}.upload-file-picker span{border:1px solid #fb923c;background:#fff;color:#9a3412}.upload-file-picker strong{min-height:36px;border:1px solid #fed7aa;border-radius:8px;background:#fff;color:#334155;display:flex;align-items:center;padding:0 11px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem}.update-manager .upload-submit-btn{padding:0 14px;width:100%}.registered-package{grid-column:1 / -1;display:grid;gap:4px;padding:8px 10px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff;color:#1e3a8a;font-size:.82rem;line-height:1.3}.registered-package div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px}.registered-package span{min-width:0;overflow-wrap:anywhere}.deploy-mode{display:grid;grid-template-columns:1fr 1fr;gap:12px}.deploy-mode button{min-height:36px;border:1px solid #bfdbfe;background:#fff;color:#1d4ed8;border-radius:8px;font-weight:800;cursor:pointer}.deploy-mode button.active{background:#1d4ed8;color:#fff}.deploy-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch}.deploy-column{display:grid;gap:10px;padding-top:12px;border-top:1px solid #bfdbfe}.deploy-column+.deploy-column{border-left:1px solid #bfdbfe;padding-left:12px}.deploy-column.disabled{opacity:.62}.deploy-column.enabled{opacity:1}.bulk-select-btn,.deploy-start-btn,.bulk-open-btn{width:100%;min-height:36px}.deploy-controls select:disabled{opacity:.55;background:#e2e8f0}.package-detail{display:grid;gap:5px;grid-column:1 / -1;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff;padding:9px 10px;color:#1e3a8a;font-size:.82rem;line-height:1.3}.package-detail div{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px}.package-detail span{overflow-wrap:anywhere}.package-panel{flex:none;min-height:auto;display:flex;flex-direction:column;gap:10px}.update-table-wrap{flex:none;min-height:auto;overflow-x:auto;overflow-y:visible;border:1px solid var(--border-color);border-radius:8px;background:#fff}.update-table{width:100%;border-collapse:collapse;min-width:900px;font-size:.84rem}.update-table th,.update-table td{padding:9px 10px;border-bottom:1px solid var(--border-color);text-align:left;vertical-align:top}.update-table th{background:#f1f5f9;color:var(--text-secondary);font-size:.78rem;white-space:nowrap}.hash-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;white-space:normal;overflow-wrap:anywhere;min-width:230px;max-width:340px;color:#1e3a8a;font-size:.78rem;line-height:1.35}.files-cell{min-width:260px;max-width:380px}.files-cell strong{display:block;overflow-wrap:anywhere}.files-cell strong{margin-bottom:0;color:#334155;font-size:.78rem;line-height:1.35}.update-manager .deploy-start-btn,.update-manager .bulk-open-btn{background:linear-gradient(135deg,#92400e,#d97706 52%,#f59e0b);color:#1f1300;box-shadow:0 0 0 3px #f59e0b38}.update-manager .deploy-start-btn:disabled,.update-manager .bulk-open-btn:disabled{background:#cbd5e1;color:#64748b;box-shadow:none;border:1px solid #cbd5e1}.update-jobs-panel{min-height:280px;max-height:calc(100vh - 220px);display:flex;flex-direction:column;position:sticky;top:0;align-self:start}.jobs-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.jobs-heading h3{margin-bottom:0}.jobs-heading span{color:#5b21b6;background:#ffffffb8;border:1px solid #ddd6fe;border-radius:999px;padding:4px 10px;font-size:.76rem;font-weight:800;white-space:nowrap}.job-list{flex:1;min-height:0;overflow-y:auto;padding-right:4px}.job-row{padding:12px 0;border-top:1px solid var(--border-color)}.job-row:first-child{border-top:0;padding-top:0}.job-meta,.job-title,.job-kv{display:flex;align-items:center;gap:10px;min-width:0}.job-title,.job-kv{justify-content:space-between;margin-bottom:7px}.job-title strong,.job-kv strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-kv span{color:var(--text-secondary);font-size:.78rem;min-width:0}.job-title{padding-bottom:7px;border-bottom:1px solid #e9d5ff}.job-kv{padding:5px 8px;border-radius:7px;background:#ffffffb8;color:#4c1d95;font-size:.84rem}.job-meta{justify-content:space-between;color:var(--text-secondary);font-size:.78rem;margin-top:6px}.job-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-meta .job-message,.job-message{display:block;margin-top:6px;color:var(--text-secondary);font-size:.82rem;overflow:visible;text-overflow:unset;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.progress-track{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-top:8px}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-primary),var(--accent-secondary));border-radius:inherit}.update-status{display:inline-flex;align-items:center;justify-content:center;min-width:70px;height:24px;border-radius:999px;padding:0 9px;font-size:.72rem;font-weight:800;border:1px solid transparent;white-space:nowrap}.update-status.ok{color:#065f46;background:#d1fae5;border-color:#a7f3d0}.update-status.pending{color:#92400e;background:#fef3c7;border-color:#fde68a}.update-status.progress{color:#075985;background:#e0f2fe;border-color:#bae6fd}.update-status.fail,.update-status.error{color:#991b1b;background:#fee2e2;border-color:#fecaca;padding:0 9px;margin:0;border-radius:999px;height:24px;min-width:70px;box-sizing:border-box}.btn-inline{border:1px solid var(--border-color);background:#fff;color:var(--accent-primary);min-width:66px;height:32px;border-radius:7px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;padding:0 10px}.btn-inline:hover{background:var(--bg-hover)}.package-row-actions{display:flex;flex-wrap:wrap;gap:6px}.btn-inline.danger{color:#b91c1c;border-color:#fecaca;background:#fff}.btn-inline.danger:hover{background:#fef2f2}.btn-primary.danger{background:#b91c1c;border-color:#991b1b;color:#fff}.btn-primary.danger:hover:not(:disabled){background:#991b1b}.btn-outline{border:1px solid var(--accent-primary);background:#fff;color:var(--accent-primary);min-height:36px;border-radius:8px;font-weight:800;cursor:pointer;padding:0 14px}.btn-outline:disabled{opacity:.5;cursor:not-allowed}.update-modal-backdrop{position:fixed;inset:0;z-index:10050;background:#0f172a94;display:grid;place-items:center;padding:24px}.update-modal{width:min(760px,100%);max-height:min(760px,92vh);background:#fff;border-radius:8px;border:1px solid #cbd5e1;box-shadow:0 24px 72px #0f172a52;display:flex;flex-direction:column;overflow:hidden}.update-modal.approve-modal{width:min(520px,100%)}.update-modal-header,.update-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border-color)}.update-modal-footer{border-bottom:0;border-top:1px solid var(--border-color)}.update-modal-header h3{margin:0}.update-modal-header p{margin:4px 0 0;color:var(--text-secondary);font-size:.82rem;font-weight:700}.modal-close{width:34px;height:34px;border:1px solid var(--border-color);border-radius:8px;background:#fff;cursor:pointer;font-weight:900}.approve-summary{display:grid;grid-template-columns:1fr;gap:8px;padding:16px;border-bottom:1px solid var(--border-color)}.approve-summary div{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;align-items:center}.approve-summary span{color:var(--text-secondary);font-size:.82rem;font-weight:900}.approve-summary strong{min-width:0;overflow:hidden;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap}.approve-password-form{display:grid;gap:0}.approve-autofill-decoy{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}.approve-password-field{display:grid;gap:7px;padding:16px;margin:0 16px 4px;border:1px solid #fcd34d;border-radius:10px;background:linear-gradient(180deg,#fffbeb,#fef3c7)}.approve-password-field span{color:#92400e}.approve-password-field input{min-height:40px;border:1px solid #f59e0b;border-radius:8px;padding:8px 10px;font:inherit;background:#fffef7;color:#78350f;box-shadow:inset 0 0 0 1px #f59e0b26}.approve-password-field input:focus{outline:none;border-color:#d97706;box-shadow:0 0 0 3px #f59e0b47}.approve-error{margin:0 16px 16px;border:1px solid #fecaca;border-radius:8px;background:#fef2f2;color:#991b1b;padding:9px 11px;font-size:.84rem;font-weight:800}.bulk-summary,.bulk-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 16px 0}.bulk-summary{border:1px solid #bfdbfe;background:#eff6ff;color:#1e3a8a;border-radius:8px;padding:10px 12px}.bulk-device-list{margin:12px 16px 0;border:1px solid var(--border-color);border-radius:8px;overflow-y:auto;min-height:180px;max-height:300px}.bulk-device-row{display:grid;grid-template-columns:28px minmax(110px,.55fr) minmax(150px,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #e2e8f0;cursor:pointer}.bulk-device-row:last-child{border-bottom:0}.bulk-device-row span,.bulk-device-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bulk-device-row em,.bulk-result em{color:var(--text-secondary);font-size:.78rem;font-style:normal}.bulk-results{margin:12px 16px 0;display:grid;gap:8px;max-height:180px;overflow-y:auto}.bulk-result{display:grid;grid-template-columns:minmax(120px,.8fr) 80px minmax(160px,1fr);gap:10px;align-items:center;border-radius:8px;padding:9px 10px;border:1px solid transparent}.bulk-result.ok{background:#ecfdf5;border-color:#a7f3d0}.bulk-result.error{background:#fef2f2;border-color:#fecaca}.empty-state,.empty-cell{color:var(--text-secondary);padding:16px;text-align:center}@media(max-width:1180px){.config-grid,.update-layout{grid-template-columns:1fr;min-height:0}.config-form-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.update-jobs-panel{min-height:280px}}@media(max-width:760px){.update-manager{padding:16px}.rca-manager-tabs,.upload-file-row,.upload-file-picker,.config-form-grid{grid-template-columns:1fr}}.ops-dashboard{display:flex;flex-direction:column;gap:18px;min-height:0;height:100%;overflow:auto;color:var(--text-primary)}.ops-header{display:flex;justify-content:space-between;align-items:stretch;gap:16px}.ops-header h2{margin:0 0 4px;font-size:1.45rem;color:var(--text-primary)}.ops-header p{margin:0;color:var(--text-secondary);font-size:.92rem}.ops-overall{min-width:170px;border-radius:14px;padding:12px 16px;border:1px solid var(--border-color);background:var(--panel-muted);display:flex;flex-direction:column;gap:2px;text-align:right}.ops-overall span,.ops-card-title{font-size:.78rem;font-weight:800;color:var(--text-secondary)}.ops-overall strong{font-size:1.45rem}.ops-overall small,.ops-card small{color:var(--text-secondary);font-size:.78rem}.ops-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px}.ops-section-block{display:flex;flex-direction:column;gap:10px;border:1px solid #dbeafe;border-radius:18px;background:linear-gradient(180deg,#fffffff5,#f8fafcf0);padding:14px;box-shadow:0 10px 28px #0f172a0f}.ops-section-block.server{border-color:#e2e8f0;background:radial-gradient(circle at 8% 0%,rgba(219,234,254,.48),transparent 28%),linear-gradient(180deg,#fffffffa,#f8fafcf5)}.ops-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}.ops-section-title h3{margin:0;color:#0f172a;font-size:1.02rem}.ops-section-title span{min-width:0;overflow:hidden;color:var(--text-secondary);font-size:.8rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.ops-service-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px}.ops-service-grid .ops-card{min-height:104px}.ops-card{text-align:left;border-radius:14px;border:1px solid var(--border-color);background:#fff;padding:15px;min-height:104px;display:flex;flex-direction:column;gap:5px;cursor:default;box-shadow:0 8px 20px #0f172a14}.ops-card.clickable{cursor:pointer}.ops-card.clickable:hover{transform:translateY(-1px);box-shadow:0 10px 24px #0f172a21}.ops-card strong{font-size:1.65rem;line-height:1.1}.ops-ok{color:#047857}.ops-warn{color:#b45309}.ops-error{color:#dc2626}.ops-card.ops-ok{border-color:#bbf7d0;background:linear-gradient(180deg,#fff,#f0fdf4)}.ops-card.ops-warn{border-color:#fde68a;background:linear-gradient(180deg,#fff,#fffbeb)}.ops-card.ops-error{border-color:#fecaca;background:linear-gradient(180deg,#fff,#fef2f2)}.ops-lower-grid{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(280px,.85fr) minmax(360px,1.2fr);gap:14px;min-height:0}.ops-panel{border:1px solid var(--border-color);background:#fff;border-radius:14px;padding:16px;min-height:210px;height:fit-content;box-shadow:0 8px 20px #0f172a0f}.ops-panel h3{margin:0 0 12px;font-size:1rem}.ops-panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.ops-panel-header button{border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:8px;padding:7px 11px;cursor:pointer;font-weight:800}.ops-disk-list{display:flex;flex-direction:column;gap:12px}.ops-server-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}.ops-server-summary-grid .ops-card{min-height:74px;border-radius:12px;padding:10px;box-shadow:none}.ops-server-summary-grid .ops-card strong{font-size:1.16rem}.ops-server-summary-grid .ops-card small{font-size:.68rem}.ops-gauge-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ops-gauge-card{position:relative;overflow:hidden;border:1px solid #e2e8f0;border-radius:16px;background:radial-gradient(circle at 20% 12%,rgba(255,255,255,.95),transparent 30%),linear-gradient(145deg,#fff,#f8fafc);padding:12px 8px 10px;text-align:center;box-shadow:inset 0 1px #ffffffe6,0 10px 24px #0f172a14}.ops-gauge-card:after{content:"";position:absolute;inset:auto 12% 0;height:1px;background:linear-gradient(90deg,transparent,rgba(37,99,235,.28),transparent)}.ops-gauge-wrap{position:relative;width:104px;max-width:100%;margin:0 auto;aspect-ratio:1}.ops-gauge{width:100%;height:100%;transform:rotate(-90deg)}.ops-gauge-track,.ops-gauge-value{fill:none;stroke-width:10}.ops-gauge-track{stroke:#e5e7eb}.ops-gauge-value{stroke-linecap:round;transition:stroke-dashoffset .45s ease}.ops-gauge-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:1px;color:#0f172a}.ops-gauge-center strong{font-size:1.18rem;line-height:1}.ops-gauge-center span{margin-top:4px;color:var(--text-secondary);font-size:.72rem;font-weight:900}.ops-gauge-text{display:grid;gap:3px;min-width:0}.ops-gauge-text b{color:#0f172a;font-size:.78rem;letter-spacing:.04em}.ops-gauge-text small{overflow:hidden;color:var(--text-secondary);font-size:.68rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.ops-sparkline-caption{margin-top:12px;color:#64748b;font-size:.72rem}.ops-sparkline-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}.ops-sparkline-grid>div{min-width:0;border:1px solid #e2e8f0;border-radius:14px;background:linear-gradient(180deg,#f8fafcfa,#fffffffa);padding:9px}.ops-sparkline-grid b{display:block;margin-bottom:5px;color:#334155;font-size:.7rem;letter-spacing:.03em;text-transform:uppercase}.ops-sparkline-wrap{position:relative;min-height:50px}.ops-sparkline{width:100%;height:48px;overflow:visible}.ops-sparkline-line{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 4px rgba(37,99,235,.18))}.ops-sparkline-fill{fill:#2563eb0f;stroke:none}.ops-sparkline-wrap span{position:absolute;top:-1px;right:0;border:1px solid #dbeafe;border-radius:999px;background:#ffffffeb;color:#1e3a8a;padding:2px 6px;font-size:.68rem;font-weight:900}.ops-sparkline-empty{display:flex;align-items:center;justify-content:center;height:48px;border-radius:10px;background:#f8fafc;color:var(--text-secondary);font-size:.76rem;font-weight:800}.ops-disk-row{display:grid;grid-template-columns:56px minmax(0,1fr) 58px;align-items:center;gap:10px;font-size:.88rem}.ops-disk-bar{height:12px;border-radius:999px;background:#e5e7eb;overflow:hidden}.ops-disk-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#22c55e,#f59e0b)}.ops-hardware-box{margin-top:16px;border-top:1px solid #e2e8f0;padding-top:13px;padding-bottom:2px}.ops-hardware-box h4{margin:0 0 10px;color:#334155;font-size:.84rem}.ops-nic-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px}.ops-nic-chip{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 6px;align-items:center;border:1px solid #e2e8f0;border-radius:12px;background:linear-gradient(180deg,#fff,#f8fafc);padding:8px}.ops-nic-chip.up{border-color:#bbf7d0;background:linear-gradient(180deg,#fff,#f0fdf4)}.ops-nic-chip.down{border-color:#e5e7eb;opacity:.74}.ops-nic-chip span{min-width:0;overflow:hidden;color:#0f172a;font-size:.78rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.ops-nic-chip strong{color:#047857;font-size:.72rem}.ops-nic-chip.down strong{color:#64748b}.ops-nic-chip small{grid-column:1 / -1;color:var(--text-secondary);font-size:.68rem;font-weight:800}.ops-hardware-row{display:grid;grid-template-columns:54px 82px minmax(0,1fr);align-items:start;gap:8px;padding:8px 0;border-top:1px dashed #e2e8f0;font-size:.78rem}.ops-hardware-row span{color:var(--text-secondary);font-weight:900}.ops-hardware-row small{min-width:0;color:var(--text-secondary);line-height:1.35;white-space:normal}.ops-state-badge{justify-self:start;border-radius:999px;padding:2px 8px;font-size:.68rem;font-weight:900;line-height:1.25}.ops-state-badge.ok{border:1px solid #bbf7d0;background:#f0fdf4;color:#047857}.ops-state-badge.warn{border:1px solid #fde68a;background:#fffbeb;color:#b45309}.ops-state-badge.error{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.ops-state-badge.unknown{border:1px solid #cbd5e1;background:#f8fafc;color:#64748b}.ops-failure-list{display:flex;flex-direction:column;gap:8px}.ops-failure-list button{display:grid;grid-template-columns:135px minmax(0,1fr) 110px 74px;gap:8px;align-items:center;border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px;padding:9px 11px;cursor:pointer;text-align:left;font-size:.82rem}.ops-failure-list strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-failure-list span,.ops-failure-list em{color:var(--text-secondary);font-style:normal}.ops-failure-list b{color:#dc2626}.ops-empty,.ops-loading,.ops-error{border-radius:12px;padding:18px;background:#f8fafc;color:var(--text-secondary)}@media(max-width:1100px){.ops-grid,.ops-service-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.ops-lower-grid{grid-template-columns:1fr}}@media(max-width:700px){.ops-header{flex-direction:column}.ops-overall{text-align:left}.ops-grid,.ops-service-grid,.ops-failure-list button{grid-template-columns:1fr}}.login-container{height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(120deg,rgba(56,189,248,.1),transparent 38%),radial-gradient(circle at 72% 20%,rgba(56,189,248,.18),transparent 26%),linear-gradient(160deg,#020617,#10203d 48%,#052e3f);background-size:cover;background-position:center}.login-container:before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1600' height='900' viewBox='0 0 1600 900'%3E%3Cg fill='none' stroke='%2394a3b8' stroke-opacity='.23' stroke-width='3'%3E%3Cpath d='M120 680h1360M180 680V450l250-155 250 155v230M930 680V405l165-100 165 100v275M300 680V495h120v185M1020 680V470h96v210M1190 680V470h96v210'/%3E%3Cpath d='M220 445h420M965 405h340M760 300c100-88 205-88 305 0'/%3E%3Cpath d='M180 450l250-155 250 155M930 405l165-100 165 100'/%3E%3Ccircle cx='1390' cy='200' r='55'/%3E%3Cpath d='M1350 200h80M1390 160v80'/%3E%3C/g%3E%3Cg fill='%2338bdf8' fill-opacity='.10'%3E%3Ccircle cx='250' cy='180' r='6'/%3E%3Ccircle cx='315' cy='225' r='4'/%3E%3Ccircle cx='1320' cy='520' r='5'/%3E%3Ccircle cx='1220' cy='250' r='4'/%3E%3C/g%3E%3C/svg%3E") center/cover no-repeat,radial-gradient(circle at center,#0206171f,#020617ad);pointer-events:none}.login-stage{position:relative;z-index:1;display:flex;align-items:stretch;justify-content:center;gap:clamp(34px,3.5vw,64px);width:min(92vw,980px);max-width:980px}.login-card{position:relative;z-index:1;background:#1e293bcc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.05);padding:42px;border-radius:24px;width:100%;max-width:410px;box-shadow:0 20px 50px #0000004d;user-select:none;-webkit-user-select:none}.login-header{text-align:left;margin-bottom:34px}.login-header h1{font-size:1.85rem;margin-bottom:8px;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.login-header h1 span{display:block;line-height:1.08}.login-header p{text-align:center;color:var(--text-secondary)}.login-card .form-group{margin-bottom:18px}.login-card label{display:block;margin-bottom:7px;color:#e2e8f0;font-size:9px;letter-spacing:.02em;font-weight:400}.login-card input{width:100%;min-height:44px;border:1px solid rgba(226,232,240,.45);border-radius:8px;background:#fff;color:#0f172a;padding:10px 12px;font:inherit;outline:none;user-select:text;-webkit-user-select:text}.login-card input:focus{background:#fff;color:#0f172a;border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa40}.login-card input:-webkit-autofill,.login-card input:-webkit-autofill:hover,.login-card input:-webkit-autofill:focus{-webkit-text-fill-color:#0f172a;box-shadow:0 0 0 1000px #fff inset}.btn-block{width:100%;margin-top:10px;padding:14px;font-size:1rem}.login-footer{margin-top:22px;text-align:center;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:1.08rem;font-weight:400}.login-emblem{flex:0 0 auto;aspect-ratio:212 / 220;opacity:.3;pointer-events:none;filter:drop-shadow(0 0 34px rgba(248,250,252,.13))}.login-emblem img{display:block;width:auto;height:100%;object-fit:contain}@media(max-width:520px){.login-container{min-height:100dvh;height:100dvh;padding:18px;align-items:center}.login-card{max-width:100%;padding:28px 20px;border-radius:16px}.login-stage{width:min(92vw,430px);display:block}.login-emblem{display:none}.login-header{margin-bottom:26px}.login-header h1{font-size:1.45rem}.login-card input,.btn-block{min-height:48px;font-size:16px}}.kvm-viewer{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;background:#05070c;color:#f8fafc;display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none;touch-action:none}.kvm-toolbar{min-height:92px;padding:8px 12px;display:grid;grid-template-columns:minmax(180px,auto) minmax(180px,1fr) auto;grid-template-areas:"title state stats" "actions actions actions";align-items:center;gap:7px 12px;border-bottom:1px solid #1f2937;background:#0f172a}.kvm-title{grid-area:title;display:flex;gap:10px;align-items:center;min-width:0}.kvm-title-equipment,.kvm-title-session{display:grid;gap:2px;min-width:0}.kvm-title-equipment{max-width:min(38vw,420px)}.kvm-title-session{padding-left:10px;border-left:1px solid #334155}.kvm-title-label{color:#60a5fa!important;font-size:.62rem!important;font-weight:900;line-height:1;letter-spacing:.04em}.kvm-title-equipment strong{display:block;min-width:0;overflow:hidden;color:#f8fafc;font-size:.98rem;font-weight:900;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.kvm-toolbar span{color:#94a3b8;font-size:.86rem}.kvm-session-id{display:inline-block;max-width:23vw;overflow:hidden;padding:2px 7px;border:1px solid #334155;border-radius:999px;background:#111827;color:#cbd5e1!important;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.72rem!important;font-weight:800;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.kvm-session-line{display:flex;align-items:center;gap:5px;min-width:0}.kvm-viewer-refresh{width:24px;height:24px;flex:0 0 24px;border:1px solid #3b82f6;border-radius:999px;background:#0b1220;color:#facc15;font-size:1rem;font-weight:900;line-height:1;cursor:pointer;box-shadow:0 0 0 1px #0f172abf}.kvm-viewer-refresh:hover:not(:disabled){background:#1e3a8a;color:#fde68a}.kvm-viewer-refresh:disabled{cursor:not-allowed;opacity:.45}.kvm-actions{grid-area:actions;display:flex;align-items:center;justify-content:flex-start;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none}.kvm-actions::-webkit-scrollbar{display:none}.kvm-feature-group{height:36px;padding:0 4px 0 7px;display:inline-flex;align-items:center;gap:5px;border:1px solid #334155;border-radius:7px;background:#0b1220;white-space:nowrap;flex-shrink:0}.kvm-feature-input{border-color:#2563eb8c}.kvm-feature-input .kvm-feature-label{color:#93c5fd}.kvm-feature-source{border-color:#10b98180}.kvm-feature-source .kvm-feature-label{color:#86efac}.kvm-feature-mouse{border-color:#a855f780}.kvm-feature-mouse .kvm-feature-label{color:#d8b4fe}.kvm-feature-video{border-color:#38bdf873}.kvm-feature-video .kvm-feature-label{color:#7dd3fc}.kvm-feature-record{border-color:#f59e0b7a}.kvm-feature-record .kvm-feature-label{color:#fcd34d}.kvm-feature-label{font-size:.72rem;font-weight:800;line-height:1}.kvm-input-capture{height:32px;min-width:61px;padding:0 9px;display:inline-flex;align-items:center;gap:6px;border:1px solid #334155;border-radius:6px;background:#111827;color:#cbd5e1;font-size:.86rem;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.kvm-input-capture.active{border-color:#2563eb;background:#1d4ed8;color:#fff}.kvm-input-capture input{width:14px;height:14px;accent-color:#2563eb}.kvm-input-capture:has(input:disabled){cursor:not-allowed;opacity:.58}.kvm-source-toggle,.kvm-mouse-toggle{display:grid;grid-auto-flow:column;grid-auto-columns:auto;border:1px solid rgba(148,163,184,.28);border-radius:6px;overflow:hidden}.kvm-source-toggle button,.kvm-mouse-toggle button,.kvm-tool,.kvm-close{border:none;min-height:32px;padding:0 10px;color:#fff;font-weight:700;white-space:nowrap;cursor:pointer}.kvm-source-toggle button,.kvm-mouse-toggle button{background:#111827;color:#94a3b8}.kvm-source-toggle button.active,.kvm-mouse-toggle button.active{background:#059669;color:#fff}.kvm-source-toggle button.active.agent,.kvm-mouse-toggle button.active.rel{background:#7c3aed}.kvm-mouse-toggle button.calibrate{background:#334155;color:#f8fafc}.kvm-mouse-toggle button.calibrate:hover:not(:disabled){background:#475569}.kvm-mouse-toggle button.locked{box-shadow:inset 0 0 0 2px #ffffff47}.kvm-source-toggle button:disabled,.kvm-mouse-toggle button:disabled{cursor:not-allowed;opacity:.55}.kvm-close{margin-left:auto;border-radius:6px;background:#dc2626;flex-shrink:0}.kvm-tool{border-radius:6px;background:#334155}.kvm-tool:disabled{cursor:not-allowed;opacity:.55}.kvm-close:disabled{cursor:not-allowed;opacity:.55}.kvm-state{grid-area:state;color:#93c5fd;font-size:.9rem;min-width:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kvm-state.streaming{color:#34d399}.kvm-state.warning{color:#fbbf24}.kvm-state.error{color:#f87171}.kvm-state.closed{color:#cbd5e1}.kvm-video-stats{grid-area:stats;color:#cbd5e1;font-size:.78rem;font-weight:700;padding:4px 8px;border:1px solid #334155;border-radius:6px;background:#111827;white-space:nowrap;min-width:230px;text-align:center}.kvm-video-stats.empty{color:#64748b;border-color:#334155b3}@media(max-width:1180px){.kvm-video-stats{display:none}}@media(max-width:900px){.kvm-toolbar{grid-template-columns:minmax(110px,1fr) auto;grid-template-areas:"title state" "actions actions";align-items:center}.kvm-title{grid-area:title}.kvm-title-equipment{max-width:46vw}.kvm-state{text-align:right;font-size:.82rem}.kvm-actions{max-width:calc(100vw - 24px)}}@media(max-width:760px){.kvm-title-session{display:none}.kvm-title-equipment{max-width:58vw}.kvm-actions{max-width:calc(100vw - 24px)}.kvm-input-capture{padding:0 8px}}@media(max-width:560px)and (orientation:portrait){.kvm-toolbar{min-height:0;height:auto}.kvm-actions{display:grid;grid-template-columns:auto auto auto minmax(52px,1fr);grid-template-areas:"input source mouse close" "video record record record";gap:5px;max-width:none;width:100%;overflow:visible}.kvm-feature-input{grid-area:input}.kvm-feature-source{grid-area:source}.kvm-feature-mouse{grid-area:mouse}.kvm-feature-video{grid-area:video}.kvm-feature-record{grid-area:record}.kvm-close{grid-area:close;width:100%;margin-left:0}.kvm-feature-video,.kvm-feature-record{justify-content:center}}@media(max-width:560px){.kvm-toolbar{padding:7px 8px;gap:8px}.kvm-title strong{font-size:.92rem}.kvm-actions{max-width:calc(100vw - 16px);gap:4px}.kvm-feature-group{height:34px;padding:0 3px 0 6px;gap:4px}.kvm-feature-label{display:none}.kvm-source-toggle button,.kvm-mouse-toggle button,.kvm-tool,.kvm-close{padding:0 8px}}.kvm-stage{position:relative;flex:1;width:100%;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#000;outline:none;cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M5 3.8 21.5 17.5l-7.9 1.3 3.5 6.3-3.1 1.7-3.5-6.2-5.5 5.8z' fill='%23fde047' stroke='%231d4ed8' stroke-width='2.4' stroke-linejoin='round'/%3E%3Cpath d='M8.2 9.1 16.4 16l-5.1.8 2.3 4.1-.6.3-2.5-4.4-3.4 3.6z' fill='%23fef08a' opacity='.9'/%3E%3C/svg%3E") 5 4,default;touch-action:none;user-select:none;-webkit-user-select:none}.kvm-stage.kvm-view-only{cursor:default}.kvm-stage.kvm-relative-mouse{cursor:grab}.kvm-stage.kvm-pointer-locked{cursor:none}.kvm-stage.kvm-session-closed{cursor:default}.kvm-stage.kvm-session-closed video{opacity:.22}.kvm-stage.kvm-agent-lcd{--kvm-lcd-size: min(100vw, calc(100vh - 92px) );--kvm-lcd-size: min(100vw, calc(100dvh - 92px) );background:#05030a}.kvm-stage.kvm-agent-lcd video{flex:0 0 auto;width:var(--kvm-lcd-size);height:var(--kvm-lcd-size);max-width:100%;max-height:100%;aspect-ratio:1 / 1;object-fit:fill}.kvm-stage video{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;background:#000}.kvm-stage-control-overlay{position:absolute;left:16px;top:16px;z-index:6;display:none;align-items:center;gap:6px;min-height:32px;padding:6px 10px;border:1px solid rgba(96,165,250,.55);border-radius:6px;background:#0f172abf;color:#dbeafe;cursor:default;user-select:none;-webkit-user-select:none}.kvm-stage-control-overlay span{color:#bfdbfe;font-size:.78rem;font-weight:900;line-height:1}.kvm-stage-control-overlay button{min-height:24px;border:1px solid rgba(148,163,184,.45);border-radius:5px;background:#111827bf;color:#cbd5e1;padding:0 8px;font-size:.78rem;font-weight:900;cursor:pointer}.kvm-stage-control-overlay button.active{border-color:#2563eb;background:#1d4ed8bf;color:#fff}.kvm-stage-control-overlay button:disabled{cursor:not-allowed;opacity:.58}.kvm-software-cursor{position:absolute;z-index:7;width:26px;height:26px;transform:translate(-2px,-2px);pointer-events:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.85))}.kvm-software-cursor svg{width:100%;height:100%;overflow:visible}.kvm-software-cursor .cursor-shadow{fill:#1d4ed8;stroke:#1d4ed8;stroke-width:3.4;stroke-linejoin:round}.kvm-software-cursor .cursor-body{fill:#fde047;stroke:#1d4ed8;stroke-width:1.1;stroke-linejoin:round}.kvm-source-badge{position:absolute;left:auto;right:16px;top:16px;z-index:6;min-height:32px;padding:6px 10px;border-radius:6px;font-size:.78rem;font-weight:800;letter-spacing:0;border:1px solid rgba(148,163,184,.45);background:#0f172abf;color:#dbeafe;display:inline-flex;align-items:center;gap:6px;pointer-events:none}.kvm-badge-state{color:#ea580c}.kvm-source-badge.waiting .kvm-badge-state{color:#fbbf24}.kvm-source-badge.closed .kvm-badge-state{color:#cbd5e1}.kvm-badge-separator{color:#94a3b8}.kvm-source-badge.agent{border-color:#a78bfaa6;color:#ede9fe;background:#4c1d95bf}.kvm-source-badge.target{border-color:#60a5fa8c}.kvm-stage:fullscreen{background:#000}.kvm-stage:fullscreen .kvm-stage-control-overlay{display:inline-flex}@media(max-width:760px){.kvm-toolbar{min-height:88px}.kvm-stage.kvm-agent-lcd{--kvm-lcd-size: min(100vw, calc(100vh - 88px) );--kvm-lcd-size: min(100vw, calc(100dvh - 88px) )}.kvm-feature-group,.kvm-source-toggle button,.kvm-tool,.kvm-close,.kvm-input-capture{min-height:44px}.kvm-actions{padding-bottom:2px;scroll-snap-type:x proximity}.kvm-feature-group,.kvm-close{scroll-snap-align:start}}@media(max-width:760px)and (orientation:portrait){.kvm-stage.kvm-agent-lcd{--kvm-lcd-size: min(100vw, calc(100dvh - 112px) )}.kvm-stage.kvm-agent-lcd video{width:var(--kvm-lcd-size);height:var(--kvm-lcd-size);max-height:100%}}.kvm-placeholder{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;background:radial-gradient(circle at center,#1e293b73,#000000e6)}.kvm-placeholder h2{font-size:1.4rem}.kvm-placeholder p{color:#94a3b8}.kvm-closed{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;background:#05070ceb}.kvm-closed h2{font-size:1.5rem;color:#34d399}.kvm-closed p{color:#cbd5e1}.kvm-closed .kvm-close-reason{color:#f8fafc;font-size:1.05rem;max-width:36rem;line-height:1.45}.kvm-closed .kvm-close-hint{color:#94a3b8;font-size:.9rem}.kvm-closed .kvm-close-reason{max-width:36rem;padding:0 1rem;font-size:1.05rem;color:#e2e8f0;line-height:1.45}.kvm-closed .kvm-close-hint{font-size:.9rem;color:#94a3b8}.kvm-recovery{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;background:#05070cf0}.kvm-recovery h2{font-size:1.45rem;color:#f8fafc}.kvm-recovery p{color:#cbd5e1}.kvm-spinner{width:38px;height:38px;border:4px solid rgba(148,163,184,.28);border-top-color:#60a5fa;border-radius:999px;animation:kvm-spin .9s linear infinite}.kvm-spinner-lg{width:52px;height:52px;border-width:5px}.kvm-stage video.kvm-video-dimmed{opacity:0}.kvm-source-transition{background:#05070cf7;gap:12px;padding:24px}.kvm-source-transition h2{margin:0;font-size:1.35rem}.kvm-lcd-policy-prompt{z-index:8;gap:12px;padding:28px 24px}.kvm-lcd-policy-countdown{color:#fbbf24!important;font-weight:700;margin:0}.kvm-lcd-policy-actions{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap;justify-content:center}.kvm-lcd-policy-actions button{min-width:120px;padding:10px 16px;border-radius:8px;border:1px solid transparent;font-weight:700;cursor:pointer}.kvm-lcd-policy-extend{background:#2563eb;color:#fff}.kvm-lcd-policy-end{background:#334155;color:#e2e8f0;border-color:#64748b!important}.kvm-lcd-policy-actions button:disabled{opacity:.55;cursor:wait}.kvm-ask-lcd-prompt{z-index:9;gap:12px;padding:28px 24px}.kvm-ask-lcd-countdown{color:#fbbf24!important;font-weight:700;margin:0}.kvm-ask-lcd-hint{color:#94a3b8!important;margin:0;font-size:.95rem}.kvm-ask-lcd-actions{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap;justify-content:center}.kvm-ask-lcd-actions button{min-width:120px;padding:10px 16px;border-radius:8px;border:1px solid transparent;font-weight:700;cursor:pointer}.kvm-ask-lcd-wait{background:#2563eb;color:#fff}.kvm-ask-lcd-lcd{background:#7c3aed;color:#fff}.kvm-ask-lcd-end{background:#334155;color:#e2e8f0;border-color:#64748b!important}.kvm-ask-lcd-actions button:disabled{opacity:.55;cursor:wait}.kvm-transition-elapsed{margin:0;color:#93c5fd!important;font-size:.92rem;font-weight:700}.kvm-transition-dots{display:flex;gap:8px;margin-top:4px}.kvm-transition-dots span{width:8px;height:8px;border-radius:999px;background:#60a5fa;animation:kvm-dot-pulse 1.2s ease-in-out infinite}.kvm-transition-dots span:nth-child(2){animation-delay:.2s}.kvm-transition-dots span:nth-child(3){animation-delay:.4s}@keyframes kvm-dot-pulse{0%,80%,to{opacity:.25;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}@keyframes kvm-spin{to{transform:rotate(360deg)}}.kvm-gallery{position:absolute;z-index:8;top:56px;right:12px;width:min(360px,calc(100vw - 24px));max-height:min(430px,calc(100% - 68px));background:#0f172af5;border:1px solid #334155;border-radius:8px;box-shadow:0 18px 44px #0000007a;display:flex;flex-direction:column;overflow:hidden;cursor:default}.kvm-gallery-header{min-height:38px;padding:0 9px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #334155}.kvm-gallery-header strong{margin-right:auto;font-size:.84rem}.kvm-gallery-header span{font-size:.72rem;color:#94a3b8}.kvm-gallery-header button{border:none;border-radius:5px;padding:5px 8px;background:#475569;color:#fff;font-size:.72rem;cursor:pointer}.kvm-gallery-grid{padding:9px;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;overflow:auto}.kvm-gallery-item{display:grid;gap:5px;min-width:0;padding:6px;border:1px solid #334155;border-radius:7px;background:#111827}.kvm-gallery-item img{width:100%;height:auto;max-height:220px;object-fit:contain;border-radius:5px;border:1px solid #1f2937;background:#000}.kvm-gallery-item>span,.kvm-gallery-grid p{overflow:hidden;color:#94a3b8;font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.kvm-gallery-item-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.kvm-gallery-item-actions button{min-height:27px;border:1px solid #475569;border-radius:5px;background:#334155;color:#e2e8f0;font-size:.7rem;font-weight:800;cursor:pointer}.kvm-gallery-item-actions button.save{border-color:#2563eb;background:#1d4ed8;color:#fff}.kvm-gallery-item-actions button:hover:not(:disabled){filter:brightness(1.14)}.kvm-gallery-item-actions button:disabled{cursor:wait;opacity:.58}.kvm-gallery-grid p{grid-column:1 / -1;margin:18px 0;text-align:center;color:#94a3b8}@media(max-width:560px){.kvm-gallery{top:48px;right:8px;width:min(340px,calc(100vw - 16px));max-height:calc(100% - 56px)}.kvm-gallery-item img{max-height:180px}}.kvm-key-capture{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;border:0;padding:0;margin:0;z-index:3;pointer-events:none}:root{--bg-dark: #0f172a;--bg-card: #ffffff;--bg-hover: #f1f5f9;--text-primary: #0f172a;--text-secondary: #475569;--accent-primary: #2563eb;--accent-secondary: #0f766e;--success: #047857;--danger: #dc2626;--warning: #b45309;--info: #0369a1;--border-color: #d7dee8;--panel-muted: #f8fafc;--glass-bg: rgba(30, 41, 59, .7);--glass-border: rgba(255, 255, 255, .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;background-color:var(--bg-dark);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}.app-container{height:100vh;overflow:hidden;display:flex;flex-direction:column;background-color:var(--bg-dark)}.app-header{height:80px;background:linear-gradient(135deg,#07111f,#0f3d5e 48%,#0f766e);border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:space-between;padding:0 40px;z-index:100;box-shadow:0 8px 32px #0003;margin:10px 30px 0;border-radius:16px;flex-shrink:0}.brand{display:flex;align-items:center;gap:12px;min-width:260px}.brand-mark{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#fff,#c7f9ee);color:#0f3d5e;font-weight:800;font-size:1.45rem;box-shadow:0 8px 18px #0000002e}.brand-copy{display:flex;flex-direction:column;line-height:1.1}.brand h1{margin:0;color:#fff;font-size:1.45rem;font-weight:800;letter-spacing:0}.brand .version{margin-top:4px;color:#b6f3e6;font-size:.72rem;font-weight:700;letter-spacing:.02em}.app-footer{height:60px;background:linear-gradient(135deg,#172554,#1d4ed8);margin:0 30px 10px;border-radius:16px;display:flex;align-items:center;justify-content:center;color:#fffc;font-size:.85rem;box-shadow:0 -4px 20px #0003;border:1px solid rgba(255,255,255,.1);flex-shrink:0}.footer-content{display:flex;flex-direction:column;align-items:center;gap:4px;line-height:1.2}.copyright{font-size:.75rem;opacity:.7}.nav-menu{display:flex;gap:8px;background:#0003;padding:6px;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.nav-btn{background:transparent;border:none;color:#fffc;padding:10px 20px;font-size:.95rem;font-weight:500;cursor:pointer;border-radius:8px;transition:all .3s ease}.nav-btn:hover{color:#fff;background:#ffffff1a}.nav-btn.active{color:#064e3b;background:#fff;box-shadow:0 2px 10px #0000001a;font-weight:700}.user-menu{display:flex;align-items:center;gap:20px;color:#ffffffe6;font-weight:500}.search-bar{width:230px;flex:0 0 230px;display:flex;justify-content:flex-end}.search-bar.hidden{visibility:hidden;pointer-events:none}.search-input{background:#ffffff26;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:8px 12px;color:#fff;width:220px;outline:none;font-size:.9rem;transition:all .2s;margin-right:10px}.search-input:focus{background:#ffffff40;border-color:#ffffff80;box-shadow:0 0 10px #ffffff1a}.search-input::placeholder{color:#fff9}.btn-logout{background:#0003;border:1px solid rgba(255,255,255,.2);color:#cbd5e1;padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .2s}.btn-logout:hover{background:#dc262633;color:#fca5a5;border-color:#dc262680}.app-main{flex:1;padding:0;max-width:100%;width:auto;margin:10px 30px;display:flex;flex-direction:column;gap:20px;overflow:hidden;min-height:0}.dashboard-section,.logs-section,.ops-section{background:var(--bg-card);border-radius:10px;padding:24px;border:1px solid var(--border-color);box-shadow:0 10px 28px #0f172a1f;display:flex;flex-direction:column;overflow:hidden;flex:1;min-height:0}.device-status-section{background:var(--bg-card);border-radius:10px;padding:24px;border:1px solid var(--border-color);box-shadow:0 10px 28px #0f172a1f;color:var(--text-primary);display:flex;flex-direction:column;overflow:hidden;flex:1;min-height:0}.device-status-section .section-header h2{color:var(--text-primary)}.section-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.section-note{color:var(--text-secondary);font-size:.9rem}.btn-primary{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .1s,opacity .2s}.btn-primary:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.35);transform:none;pointer-events:none}.btn-primary:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.full-height{flex:1;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.full-height-viewer,.system-log-viewer{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:0}.table-scroll-container,.log-content{flex:1;overflow-y:auto;overflow-x:auto;border:1px solid var(--border-color);border-radius:8px;background:#0003}.system-log-viewer{gap:10px}.system-log-viewer .log-content{padding:15px;font-family:Fira Code,monospace;font-size:.9rem;line-height:1.5;color:#ccc;background:#0d1117}.system-log-viewer pre{margin:0;white-space:pre-wrap;word-wrap:break-word}.centered-msg{display:flex;justify-content:center;align-items:center;height:100%;color:var(--text-secondary);font-size:2rem;border:2px dashed var(--border-color);border-radius:16px}.table-wrapper{flex:1;overflow-y:auto;margin-bottom:16px}.pagination{display:flex;justify-content:center;gap:8px;margin-top:auto;padding-top:16px;border-top:1px solid var(--border-color)}.pagination button{background:var(--bg-hover);border:1px solid var(--border-color);color:var(--text-secondary);width:36px;height:36px;border-radius:6px;cursor:pointer;transition:all .2s}.pagination button:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.pagination button.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary);font-weight:700}@media(max-width:900px){.app-container{height:100dvh;min-height:100dvh}.app-header{height:auto;min-height:0;margin:8px 10px 0;padding:10px 12px;border-radius:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand user" "nav nav" "search search";gap:9px 12px}.brand{grid-area:brand;min-width:0}.brand-mark{width:36px;height:36px;font-size:1.15rem}.brand h1{font-size:1.05rem}.brand .version{font-size:.62rem}.user-menu{grid-area:user;gap:8px}.nav-menu{grid-area:nav;width:100%;overflow-x:auto;justify-content:flex-start;gap:4px;padding:4px;scrollbar-width:none}.nav-menu::-webkit-scrollbar{display:none}.nav-btn{flex:0 0 auto;min-height:42px;padding:8px 14px;font-size:.84rem}.search-bar{grid-area:search;width:100%;flex:none}.search-bar.hidden{display:none}.search-input{width:100%;min-height:42px;margin:0}.btn-logout{min-height:40px;padding:7px 11px}.app-main{width:auto;margin:8px 10px;overflow-y:auto;overflow-x:hidden}.dashboard-section,.logs-section,.device-status-section{padding:14px;overflow:visible;flex:none;min-height:100%}.full-height{height:auto;min-height:100%;overflow:visible}.log-content-wrapper{flex:none;overflow:visible}.app-footer{display:none}}@media(max-width:520px){.app-header{margin:5px 6px 0;padding:9px}.brand .version,.user-menu>span{display:none}.nav-btn{min-height:44px;padding-inline:13px}.app-main{margin:6px}.dashboard-section,.logs-section,.device-status-section{padding:10px;border-radius:8px}.section-header{align-items:flex-start;flex-direction:column;gap:5px;margin-bottom:12px}.section-note{font-size:.76rem}}.log-content-wrapper{flex:1;overflow:hidden;display:flex;flex-direction:column}.sub-tabs{display:flex;gap:2px;margin-bottom:0;border-bottom:2px solid var(--border-color)}.sub-tabs button{background:transparent;color:var(--text-secondary);border:none;padding:12px 24px;cursor:pointer;font-weight:600;border-radius:8px 8px 0 0;transition:all .2s}.sub-tabs button:hover{background:var(--bg-hover);color:var(--text-primary)}.sub-tabs button.active{background:var(--bg-card);background:linear-gradient(to top,var(--bg-card),var(--bg-hover));color:var(--accent-primary);border-bottom:2px solid var(--accent-primary);margin-bottom:-2px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.container{max-width:1400px;margin:0 auto;padding:24px}.header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:32px;border-radius:12px;margin-bottom:32px;box-shadow:0 4px 12px #667eea4d}.header h1{font-size:2rem;margin-bottom:10px}.header p{opacity:.9}.card{background:#fff;border-radius:12px;padding:28px;margin-bottom:24px;box-shadow:0 2px 8px #00000014;border:1px solid #e9ecef}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid #e9ecef}.card-header h2{font-size:1.5rem;color:#333}.btn{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.btn:hover{transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.btn:active{transform:translateY(0)}.btn-primary{background:#667eea;color:#fff;box-shadow:0 2px 4px #667eea4d}.btn-primary:hover{background:#5568d3;box-shadow:0 4px 8px #667eea66;transform:translateY(-1px)}.btn-danger{background:#e74c3c;color:#fff}.btn-danger:hover{background:#c0392b}.btn-success{background:#27ae60;color:#fff}.btn-success:hover{background:#229954}.btn-secondary{background:#95a5a6;color:#fff}.btn-secondary:hover{background:#7f8c8d}.btn-small{padding:6px 14px;font-size:12px;font-weight:500;margin:0 3px;border-radius:4px;transition:all .2s ease;white-space:nowrap}.btn-small:first-child{margin-left:0}.btn-small:last-child{margin-right:0}.btn-group{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.table-wrapper{overflow-x:auto;margin-top:20px}.table{width:100%;border-collapse:collapse;min-width:1200px}.table th,.table td{padding:14px 12px;text-align:left;border-bottom:1px solid #e8e8e8;vertical-align:middle}.table th{background-color:#f8f9fa;font-weight:600;color:#495057;font-size:13px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;position:sticky;top:0;z-index:10}.table td{color:#333;font-size:14px}.table td:last-child{text-align:center;white-space:nowrap}.table td a{color:#667eea;text-decoration:none;font-weight:500;transition:color .2s ease}.table td a:hover{color:#5568d3;text-decoration:underline}.table tbody tr{transition:background-color .2s ease}.table tbody tr:hover{background-color:#f8f9fa}.table tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;min-width:50px}.badge-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.badge-danger{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.badge-warning{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.badge-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.modal{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:10px;padding:30px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:2px solid #f0f0f0}.modal-header h3{font-size:1.5rem;color:#333}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:#999}.close-btn:hover{color:#333}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#333}.form-group input,.form-group select{width:100%;padding:10px;border:1px solid #ddd;border-radius:5px;font-size:14px}.form-group input:focus,.form-group select:focus{outline:none;border-color:#667eea}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.loading{text-align:center;padding:60px 40px;color:#6c757d;font-size:15px}.loading:before{content:"";display:inline-block;width:20px;height:20px;border:3px solid #e9ecef;border-top-color:#667eea;border-radius:50%;animation:spin .8s linear infinite;margin-right:10px;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.error{background:#f8d7da;color:#721c24;padding:15px;border-radius:5px;margin-bottom:20px}.success{background:#d4edda;color:#155724;padding:15px;border-radius:5px;margin-bottom:20px}
