:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7f8;color:#172026;--bg: #f5f7f8;--surface: #ffffff;--surface-2: #f9fbfb;--border: #dce3e6;--border-strong: #c6d1d6;--text: #172026;--muted: #687780;--teal: #0f8a7a;--teal-dark: #0b6f63;--blue: #2563eb;--amber: #b7791f;--red: #c2413a;--green-soft: #e5f6f0;--blue-soft: #e8f0ff;--amber-soft: #fff4d8;--red-soft: #fde8e6;--shadow: 0 12px 30px rgba(18, 34, 41, .08)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.app-shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:22px 16px;background:#071927;border-right:1px solid #0d2a3a;color:#fff;display:flex;flex-direction:column;gap:24px}.brand{display:flex;align-items:center;gap:10px;font-weight:760;font-size:18px;letter-spacing:0}.brand-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:6px;color:#fff;background:linear-gradient(135deg,#0f8a7a,#0a6f93)}.nav-list{display:grid;gap:6px}.nav-item{width:100%;height:40px;display:flex;align-items:center;gap:10px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:#c6d2d9;text-decoration:none;font-size:14px;font-weight:650;text-align:left}.nav-item.active,.nav-item:hover{color:#fff;background:#0f8a7a}.nav-item:focus-visible{outline:2px solid #65d6c5;outline-offset:2px}.sidebar-footer{margin-top:auto;display:flex;align-items:center;gap:8px;color:#b5c4cc;font-size:13px;border-top:1px solid #123344;padding-top:14px}main{padding:24px;min-width:0}.auth-page{min-height:100vh;padding:24px;display:grid;place-items:center;background:linear-gradient(135deg,#0f8a7a1c,#2563eb14),#eef3f4}.auth-card{width:min(420px,100%);border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.auth-brand{min-height:86px;padding:18px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border)}.auth-brand h1{margin:0;font-size:22px;line-height:1.1;letter-spacing:0}.auth-brand span{color:var(--muted);font-size:13px;font-weight:700}.auth-brand .brand-mark{flex:0 0 auto}.auth-form{padding:18px;display:grid;gap:13px}.auth-form label{display:grid;gap:5px}.auth-form label span{color:var(--muted);font-size:12px;font-weight:720}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}.topbar h1{margin:0;font-size:28px;line-height:1.1;letter-spacing:0}.topbar p{margin:7px 0 0;color:var(--muted);font-size:14px}.connection-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.health-banner{min-height:44px;margin:-4px 0 16px;padding:9px 12px;border:1px solid var(--border);border-left-width:4px;border-radius:6px;display:flex;align-items:center;gap:10px;font-size:13px}.health-banner>div{min-width:0;display:flex;align-items:baseline;gap:8px}.health-banner strong{white-space:nowrap}.health-banner span{color:inherit;line-height:1.35}.health-banner.healthy{color:#08715e;border-color:#bfe6da;border-left-color:var(--teal);background:#f0faf7}.health-banner.warning,.health-banner.checking{color:#8a5a13;border-color:#f3d58c;border-left-color:var(--amber);background:#fffaf0}.health-banner.error{color:#9f2d27;border-color:#f0b8b3;border-left-color:var(--red);background:#fff1ef}.status-pill{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:720;border:1px solid transparent;white-space:nowrap}.status-pill.green{color:#08715e;background:var(--green-soft);border-color:#bfe6da}.status-pill.blue{color:#1f55c7;background:var(--blue-soft);border-color:#c6d7ff}.status-pill.amber{color:var(--amber);background:var(--amber-soft);border-color:#f3d58c}.status-pill.red{color:var(--red);background:var(--red-soft);border-color:#f5bbb7}.status-pill.gray{color:#596871;background:#eef2f3;border-color:var(--border)}.toast-stack{position:fixed;top:18px;right:18px;z-index:40;width:min(360px,calc(100vw - 32px));display:grid;gap:8px}.scan-toast{min-height:58px;border:1px solid var(--border);border-left-width:5px;border-radius:8px;background:#fff;box-shadow:var(--shadow);padding:10px 10px 10px 12px;display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:start;gap:8px}.scan-toast strong,.scan-toast span{display:block}.scan-toast strong{font-size:13px;line-height:1.2}.scan-toast span{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.35}.scan-toast button{width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:var(--muted);display:grid;place-items:center}.scan-toast.success{border-left-color:var(--teal)}.scan-toast.failed{border-left-color:var(--red)}.scan-toast.unknown{border-left-color:var(--amber)}.icon-button{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text)}.dashboard-grid{display:grid;grid-template-columns:minmax(240px,300px) minmax(390px,1fr) minmax(280px,360px);gap:16px;align-items:start}.workspace-grid{display:grid;gap:16px;align-items:start}.tags-workspace{grid-template-columns:minmax(300px,420px) minmax(360px,1fr) minmax(260px,340px)}.jobs-workspace{grid-template-columns:minmax(320px,420px) minmax(420px,1fr)}.scanner-workspace{grid-template-columns:minmax(420px,.9fr) minmax(460px,1.1fr)}.audit-workspace{grid-template-columns:minmax(0,1fr)}.reports-layout{display:grid;grid-template-columns:minmax(360px,430px) minmax(0,1fr);gap:16px;align-items:start}.reports-history-table,.report-events-table{max-height:calc(100vh - 260px)}.reports-history-table th,.reports-history-table td{padding-right:8px;padding-left:8px}.report-row td{transition:background .12s ease}.report-row:hover td{background:#f7fafb}.report-row.selected td{background:#edf8f5}.report-select{width:100%;min-width:125px;padding:0;border:0;background:transparent;color:var(--text);text-align:left;display:grid;gap:2px}.report-select strong{color:var(--teal-dark);font-size:13px}.report-select span{max-width:170px;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.report-summary{min-height:76px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-bottom:1px solid var(--border);background:var(--surface-2)}.report-summary>div{min-width:0;padding:13px 16px;border-right:1px solid var(--border);display:grid;gap:3px}.report-summary>div:last-child{border-right:0}.report-summary span{color:var(--muted);font-size:11px;font-weight:760;text-transform:uppercase}.report-summary strong{font-size:22px;line-height:1}.report-summary .success strong{color:var(--teal-dark)}.report-summary .failure strong{color:var(--red)}.report-empty{min-height:260px;padding:24px;color:var(--muted);display:grid;place-items:center;text-align:center}.jobs-workspace .job-list,.audit-workspace .audit-list,.tags-workspace .tag-list{max-height:calc(100vh - 190px)}.left-stack,.center-stack,.right-stack,.scanner-operation-stack,.current-preview-stack{display:grid;gap:16px;min-width:0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);min-width:0}.panel-heading{min-height:60px;padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading.compact{min-height:54px}.panel-heading h2{margin:0;font-size:15px;line-height:1.2;letter-spacing:0}.panel-heading span,.label{display:block;margin-top:3px;color:var(--muted);font-size:12px}.small-button{min-height:32px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;font-size:12px;font-weight:720;white-space:nowrap}.small-button:hover,.icon-button:hover{border-color:var(--border-strong);background:#f8fafb}.small-button.danger,.icon-button.danger{color:var(--red);border-color:#fecaca}.small-button.danger:hover,.icon-button.danger:hover{background:#fff5f5;border-color:#fca5a5}.job-list{max-height:520px;overflow:auto;padding:8px;display:grid;gap:6px}.job-row{width:100%;text-align:left;border:1px solid transparent;background:transparent;border-radius:6px;padding:10px;display:grid;gap:3px;color:var(--text)}.job-row:hover{background:#f4f8f8}.job-row.selected{border-color:#a7dcd2;background:#edf8f5}.job-row:disabled{cursor:not-allowed}.job-booking-body{padding:14px 16px 16px}.job-booking-summary{min-height:50px;display:grid;align-content:center;gap:3px}.job-booking-summary strong{color:var(--teal-dark);font-size:16px}.job-booking-summary span,.job-booking-summary.empty strong{color:var(--muted);font-size:13px}.job-booking-body .scan-actions{margin-top:10px}.link-button{color:var(--text);text-decoration:none}.current-job-panel .panel-heading{align-items:flex-start;flex-wrap:wrap}.current-job-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.current-job-details{padding:12px 16px 14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.current-job-details>div{min-width:0;display:grid;gap:3px}.current-job-details .wide{grid-column:1 / -1}.current-job-details span{color:var(--muted);font-size:11px;font-weight:760;text-transform:uppercase}.current-job-details strong{min-width:0;font-size:13px;overflow-wrap:anywhere}.current-job-empty{min-height:118px;padding:18px;color:var(--muted);display:grid;place-items:center;font-size:13px}.job-number{color:var(--teal-dark);font-weight:780;font-size:12px}.job-name{font-size:14px;font-weight:740}.job-meta,.job-time{color:var(--muted);font-size:12px}.scanner-panel{padding:16px}.tag-discovery-panel{overflow:hidden}.discovery-body{padding:14px 16px 16px;display:grid;gap:14px}.discovery-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.discovery-metric{min-width:0;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);padding:10px;display:grid;gap:3px}.discovery-metric strong{font-size:20px;line-height:1}.discovery-metric span{color:var(--muted);font-size:12px}.tag-discovery-panel .scan-actions{margin-top:0;flex-wrap:wrap}.scanner-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.session-summary{display:flex;gap:12px;color:var(--muted);font-size:12px;font-weight:680}.selected-job{min-height:70px;border:1px solid var(--border);border-radius:6px;padding:12px;display:grid;gap:3px;background:var(--surface-2)}.selected-job strong{font-size:18px}.scan-actions{display:flex;align-items:center;gap:10px;margin-top:14px}.primary,.secondary{min-height:40px;border-radius:6px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:780;border:1px solid transparent}.primary{color:#fff;background:var(--teal)}.primary:hover{background:var(--teal-dark)}.primary.blue{background:var(--blue)}.primary.blue:hover{background:#1d4ed8}.primary.discovery{background:var(--amber)}.primary.discovery:hover{background:#b77808}.primary.danger{background:var(--red)}.secondary{color:var(--text);background:#fff;border-color:var(--border)}.compact-button{width:100%}.test-read{margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}input,select{width:100%;height:36px;border:1px solid var(--border);border-radius:6px;padding:0 10px;background:#fff;color:var(--text);font-size:13px;outline:none}input:focus{border-color:#76c9bd;box-shadow:0 0 0 3px #0f8a7a24}select:focus{border-color:#76c9bd;box-shadow:0 0 0 3px #0f8a7a24}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;font-size:13px}th{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}tr:last-child td{border-bottom:0}.mono{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;word-break:break-all}.asset-cell{display:grid;gap:2px}.tree-cell{display:flex;align-items:center;gap:8px;min-width:0}.tree-cell>div{display:grid;gap:2px;min-width:0}.asset-cell strong{font-size:13px}.asset-cell span,.muted{color:var(--muted);font-size:12px}.status-note{display:block;margin-top:4px;max-width:280px;color:var(--muted);font-size:12px}.right-cell{text-align:right}.empty-cell{height:110px;color:var(--muted);text-align:center}.unknown-list,.tag-list,.audit-list{display:grid}.unknown-list{padding:8px;gap:6px}.unknown-row{min-height:42px;border:1px solid #f1d08a;border-radius:6px;background:#fffaf0;display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;color:var(--amber);text-align:left}.unknown-row .mono{min-width:0;overflow:hidden;text-overflow:ellipsis}.unknown-actions{display:flex;align-items:center;gap:6px}.unknown-actions .icon-button{width:30px;height:30px}.empty-state{height:46px;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.panel-progress{height:3px;overflow:hidden;background:var(--surface-2);border-bottom:1px solid var(--border)}.panel-progress span{display:block;width:38%;height:100%;background:var(--teal);animation:progress-sweep 1.05s ease-in-out infinite}@keyframes progress-sweep{0%{transform:translate(-105%)}to{transform:translate(270%)}}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.containers-table{max-height:340px}.containers-table.expand-to-contents{max-height:none;overflow-x:auto;overflow-y:visible}.containers-table td:nth-child(2){width:72px}.containers-table td:nth-child(3){min-width:120px;color:var(--muted)}.row-toggle{width:26px;height:26px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);display:grid;place-items:center;flex:0 0 auto}.row-toggle:disabled{border-color:transparent;background:transparent;opacity:.35}.component-row{background:#f8fafb}.component-cell{padding-left:26px}.loading-cell{display:table-cell}.loading-cell span{display:inline-block;margin-left:8px;vertical-align:middle}.asset-number-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.asset-number-chip{width:fit-content;max-width:100%;border:1px solid #cddbd8;border-radius:999px;background:#eef8f5;color:#235f55;padding:2px 7px;font-size:11px;line-height:1.3;overflow-wrap:anywhere}.register-form{padding:12px;display:grid;gap:10px}.register-form label{display:grid;gap:5px}.register-form label span{color:var(--muted);font-size:12px;font-weight:720}.search-box{margin:10px 12px;position:relative}.search-box svg{position:absolute;left:10px;top:10px;color:var(--muted)}.search-box input{padding-left:32px}.tag-list{max-height:210px;overflow:auto}.tag-row{padding:10px 12px;border-top:1px solid var(--border);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.tag-row-main{display:grid;gap:4px;min-width:0}.tag-row-meta{display:flex;justify-content:space-between;gap:8px;min-width:0}.tag-row strong{color:var(--teal-dark);font-size:13px;flex:0 0 auto}.tag-row-name{color:var(--muted);font-size:12px}.tag-delete{width:32px;height:32px;flex:0 0 auto}.tag-actions{display:inline-flex;gap:6px;align-items:center}.tag-edit{width:32px;height:32px}.audit-list{max-height:320px;overflow:auto}.audit-row{min-height:38px;padding:8px 12px;border-top:1px solid var(--border);display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:8px;color:var(--muted);font-size:12px}.audit-row span{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-row.warning svg{color:var(--amber)}.audit-row.error svg{color:var(--red)}.audit-row.info svg{color:var(--teal)}.error-banner{margin-bottom:14px;border:1px solid #f0b8b3;background:#fff1ef;color:#9f2d27;border-radius:6px;min-height:42px;padding:8px 12px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:680}.error-banner button{margin-left:auto;border:0;background:transparent;color:#9f2d27;font-weight:760}.settings-shell{max-width:1180px;display:grid;gap:16px}.settings-tabs{width:fit-content;border:1px solid var(--border);border-radius:8px;background:#fff;padding:4px;display:flex;align-items:center;gap:4px}.settings-tab{min-height:34px;border:0;border-radius:6px;background:transparent;color:var(--muted);display:inline-flex;align-items:center;gap:7px;padding:0 12px;font-size:13px;font-weight:760}.settings-tab.active,.settings-tab:hover{color:#fff;background:var(--teal)}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.settings-form{padding:14px;display:grid;gap:12px}.settings-form label{display:grid;gap:5px}.settings-form label span{color:var(--muted);font-size:12px;font-weight:720}.settings-hint{border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--muted);padding:9px 10px;font-size:12px;line-height:1.35}.settings-hint.warning{border-color:#f3d58c;background:var(--amber-soft);color:var(--amber);font-weight:720}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.checkbox-row{min-height:30px;display:flex!important;align-items:center;gap:8px!important}.checkbox-row input{width:16px;height:16px;flex:0 0 auto}.checkbox-row span{margin:0;color:var(--text)!important;font-size:13px!important}.form-actions{display:flex;align-items:center;gap:10px}.full-span{grid-column:1 / -1}.compact-fit{width:fit-content}.settings-banner{border-radius:6px;min-height:38px;padding:9px 11px;display:flex;align-items:center;font-size:13px;font-weight:700}.settings-banner.error{border:1px solid #f0b8b3;background:#fff1ef;color:#9f2d27}.settings-banner.success{border:1px solid #bfe6da;background:var(--green-soft);color:#08715e}.important-info{display:grid;gap:16px}.info-actions{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px}.info-actions h2{margin:0;font-size:18px;line-height:1.15}.info-actions span{display:block;margin-top:3px;color:var(--muted);font-size:13px}.info-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.info-summary>div,.info-cell{min-width:0;border:1px solid var(--border);border-radius:6px;background:#fff;padding:10px;display:grid;gap:4px}.info-summary span,.info-cell span{color:var(--muted);font-size:12px;font-weight:720}.info-summary strong,.info-cell strong{min-width:0;color:var(--text);font-size:13px;line-height:1.35;overflow-wrap:anywhere}.info-grid{padding:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.compact-audit{max-height:280px}.info-notes{padding:12px;display:grid;gap:8px}.info-note{min-height:34px;border:1px solid #f3d58c;border-radius:6px;background:var(--amber-soft);color:var(--amber);padding:8px 10px;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:720}@media(max-width:1180px){.app-shell{grid-template-columns:72px minmax(0,1fr)}.brand span:last-child,.nav-item span,.sidebar-footer span{display:none}.sidebar{padding:18px 12px;align-items:center}.dashboard-grid{grid-template-columns:minmax(260px,340px) minmax(0,1fr)}.workspace-grid,.tags-workspace,.jobs-workspace,.scanner-workspace,.reports-layout,.settings-grid,.info-summary,.info-grid{grid-template-columns:1fr}.right-stack{grid-column:1 / -1;grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:820px){.app-shell{display:block}.sidebar{position:static;width:100%;height:auto;flex-direction:row;justify-content:space-between;border-right:0;border-bottom:1px solid var(--border)}.nav-list{grid-auto-flow:column}main{padding:16px}.topbar,.scanner-header,.scan-actions{align-items:stretch;flex-direction:column}.health-banner,.health-banner>div{align-items:flex-start}.health-banner>div{display:grid;gap:3px}.dashboard-grid,.workspace-grid,.right-stack,.form-grid.two,.form-grid.three,.info-summary,.info-grid{grid-template-columns:1fr}.settings-tabs{width:100%}.current-job-actions{display:grid;grid-template-columns:1fr;width:100%}.current-job-actions .small-button{justify-content:center}.settings-tab{flex:1;justify-content:center}.report-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.report-summary>div{border-bottom:1px solid var(--border)}.reports-history-table th:nth-child(2),.reports-history-table td:nth-child(2),.reports-history-table th:nth-child(3),.reports-history-table td:nth-child(3){display:none}.test-read{grid-template-columns:1fr}}
