@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
* { box-sizing: border-box; }
body { margin: 0; color: #17212b; background: #f3f6f7; font: 14px/1.55 'Noto Sans SC', Arial, sans-serif; }
a { color: inherit; text-decoration: none; } button, input, textarea { font: inherit; } button { cursor: pointer; }
.sidebar { position: fixed; inset: 0 auto 0 0; width: 256px; padding: 28px 16px 18px; background: #10212b; color: #dce8ec; display: flex; flex-direction: column; }
.brand { display: flex; gap: 11px; align-items: center; min-width: 0; }.brand-mark { width: 34px; height: 34px; display: grid; place-items: center; flex: 0 0 auto; background: var(--brand); color: white; border-radius: 7px; font-weight: 700; font-family: Georgia, serif; font-size: 20px; }.brand strong, .brand small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }.brand strong { font-size: 15px; color: #fff; }.brand small { font-size: 10px; color: #91a8b0; margin-top: 1px; }
nav { margin-top: 48px; } nav a { display: flex; align-items: center; gap: 12px; height: 42px; padding: 0 12px; margin: 4px 0; border-radius: 5px; color: #b8c9cf; font-weight: 500; } nav a span { width: 18px; text-align: center; color: #6f9099; font-size: 17px; } nav a:hover, nav a.active { background: #1d3540; color: #fff; } nav a.active span { color: #7dd3c7; }.nav-caption { margin: 30px 12px 8px; color: #64818b; font: 10px/1 'DM Mono', monospace; letter-spacing: 1px; }
.account { margin-top: auto; border-top: 1px solid #28404a; padding: 18px 5px 0; display: flex; align-items: center; gap: 9px; }.avatar { width: 30px; height: 30px; border-radius: 50%; background: #355963; display: grid; place-items: center; font-weight: 700; color: #fff; }.account div:nth-child(2) { min-width: 0; flex: 1; }.account strong, .account small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.account strong { font-size: 12px; color:#f7fbfc; }.account small { color: #89a2aa; font-size: 10px; }.logout { border: 0; background: transparent; color: #91a8b0; font-size: 18px; padding: 4px; }.logout:hover { color:#fff; }
.main { margin-left: 256px; min-height: 100vh; padding: 42px 52px 70px; max-width: 1540px; }.page-header { display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:34px; }.eyebrow { margin:0 0 9px; color:#55717b; font: 10px/1 'DM Mono', monospace; letter-spacing:1.1px; }.page-header h1 { margin:0; font-size:28px; line-height:1.2; letter-spacing:0; }.muted { color:#77888e; margin:7px 0 0; }.page-header .primary { margin-bottom:2px; }
.language-switch { position:fixed; z-index:20; top:20px; right:28px; display:inline-flex; padding:3px; border:1px solid #d3e0e2; border-radius:5px; background:#fff; box-shadow:0 2px 8px #20383d12; }.language-switch a { min-width:56px; padding:5px 8px; border-radius:3px; color:#688087; text-align:center; font:11px/1.2 'DM Mono', monospace; }.language-switch a.active { background:var(--brand); color:#fff; }.public-language-switch { top:24px; right:28px; }
.primary { border: 0; border-radius: 5px; min-height: 40px; padding: 0 16px; display:inline-flex; gap:18px; align-items:center; justify-content:center; background: var(--brand); color:white; font-weight:600; box-shadow: 0 2px 4px #10212b20; }.primary:hover { filter:brightness(.93); }.primary span { font-size:18px; line-height:1; }.wide { width:100%; }.back { display:inline-block; color:#587179; margin-bottom:14px; font-size:13px; }.back:hover { color:var(--brand); }
.secondary { min-height:40px; padding:0 15px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #bdcccf; border-radius:5px; color:#3f6068; background:#fff; font-weight:600; }.secondary:hover { border-color:var(--brand); color:var(--brand); }
.stat-grid { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px; margin-bottom:42px; }.stat { min-height:122px; padding:20px; background:#fff; border:1px solid #e1e8ea; border-top:3px solid #b7c8cc; border-radius:6px; display:flex; flex-direction:column; }.stat span { color:#71828a; font-size:12px; }.stat strong { font:500 34px/1.1 'DM Mono', monospace; margin-top:13px; color:#1e3037; }.stat small { color:#8a989d; margin-top:auto; font-size:11px; }.accent-stat { border-top-color:var(--accent); }.warning-stat { border-top-color:#df9b33; }.error-stat { border-top-color:#d45855; }.report-stats { margin-bottom:28px; }.report-stats .stat { min-height:94px; }.report-stats .stat strong { font-size:27px; }
.section-head { display:flex; justify-content:space-between; align-items:flex-end; margin:0 0 13px; }.section-head h2, .form-panel h2, .settings-form h2 { margin:0; font-size:18px; line-height:1.25; }.section-head p, .hint { margin:5px 0 0; color:#7a8b91; font-size:12px; }.table-wrap { overflow:auto; border:1px solid #dfe7e9; border-radius:6px; background:#fff; } table { width:100%; border-collapse:collapse; text-align:left; min-width:700px; } th { padding:12px 16px; color:#60767e; background:#f8fafb; border-bottom:1px solid #e5ecee; font:10px 'DM Mono', monospace; letter-spacing:.6px; } td { padding:14px 16px; border-bottom:1px solid #edf1f2; color:#35474e; vertical-align:middle; } tbody tr:last-child td { border:0; } tbody tr:hover { background:#fbfcfc; }.truncate { max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.empty { text-align:center; padding:32px; color:#829297; }.icon-link { display:grid; place-items:center; width:26px; height:26px; margin-left:auto; border:1px solid #d7e2e5; border-radius:4px; color:#527078; }.icon-link:hover { border-color:var(--brand); color:var(--brand); }
.status, .severity, .role, .tag { display:inline-flex; align-items:center; border-radius:3px; padding:3px 7px; font-size:11px; line-height:1.15; font-weight:600; white-space:nowrap; }.status.queued, .status.running { color:#146580; background:#ddf4fa; }.status.completed { color:#167263; background:#dff5ed; }.status.failed { color:#a8393b; background:#fae5e5; }.status.large { font-size:13px; padding:6px 10px; }.severity.error { color:#a8393b; background:#fae5e5; }.severity.warning { color:#8b5c10; background:#fff2d6; }.severity.style { color:#5c5885; background:#ecebfa; }.severity.performance { color:#146580; background:#ddf4fa; }.severity.portability { color:#9a4e25; background:#ffeadb; }.severity.information { color:#60767e; background:#e9eef0; }.role.admin { color:#5c5885; background:#ecebfa; }.role.customer { color:#167263; background:#dff5ed; }.tag { margin:4px 0 0; color:#7a571a; background:#fff2d6; font-size:10px; }
.split-layout { display:grid; grid-template-columns:minmax(0, 1fr) 330px; gap:28px; align-items:start; }.project-list { min-width:0; }.project-row { display:flex; align-items:center; gap:15px; padding:17px 16px; margin-bottom:8px; background:#fff; border:1px solid #e0e8ea; border-radius:6px; }.project-row:hover { border-color:#a8c6c8; }.project-icon { width:34px; height:34px; border-radius:5px; display:grid; place-items:center; color:var(--brand); background:#e4f2f0; font-size:20px; }.project-row>span:nth-child(2) { min-width:0; flex:1; }.project-row strong, .project-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.project-row strong { color:#23353c; }.project-row small { color:#7e8f94; font-size:12px; margin-top:3px; }.project-meta { color:#829297; font-size:11px; white-space:nowrap; }.project-meta b { font-size:18px; margin-left:12px; color:#527078; }.empty-panel { border:1px dashed #bacacd; padding:32px; text-align:center; color:#809096; background:#fff; border-radius:6px; }.form-panel { background:#fff; border:1px solid #dfe7e9; border-radius:6px; padding:24px; }.form-panel h2 { margin-bottom:23px; } label { display:block; color:#556a72; font-size:12px; font-weight:600; margin-bottom:16px; } input:not([type=color]), textarea { width:100%; display:block; margin-top:7px; padding:10px 11px; border:1px solid #cfdcdf; border-radius:4px; outline:0; color:#26383f; background:#fff; font-size:13px; } input:focus, textarea:focus { border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 12%, transparent); } textarea { resize:vertical; min-height:90px; }
.upload-band { display:flex; justify-content:space-between; align-items:center; gap:26px; padding:24px; margin-bottom:35px; border:1px solid #cce1df; border-left:4px solid var(--brand); border-radius:6px; background:#edf7f5; }.upload-band h2 { margin:0; font-size:18px; }.upload-band p:not(.eyebrow) { margin:6px 0 0; color:#61777d; font-size:12px; }.upload-form { display:grid; gap:10px; min-width:300px; }.upload-actions { display:flex; gap:10px; align-items:center; }.file-input { margin:0; position:relative; overflow:hidden; border:1px solid #adc8c4; border-radius:4px; background:white; padding:10px 12px; color:#45636b; white-space:nowrap; }.file-input input { position:absolute; inset:0; opacity:0; cursor:pointer; }.file-input span:before { content:'＋ '; color:var(--brand); font-size:16px; }.selected-source { display:flex; min-width:0; align-items:center; gap:8px; padding:9px 11px; border:1px solid #c7ddda; border-radius:4px; background:#fff; color:#587078; font-size:11px; }.selected-source[hidden] { display:none; }.selected-source span { flex:0 0 auto; color:#71858b; }.selected-source strong { min-width:0; overflow:hidden; color:#2d5057; font:500 11px 'DM Mono', monospace; text-overflow:ellipsis; white-space:nowrap; }.notice { display:flex; gap:15px; margin:0 0 28px; padding:13px 16px; background:#ddf4fa; border-left:3px solid var(--accent); color:#335c68; }.notice.error { background:#fae5e5; border-color:#d45855; color:#853b3d; }.notice span { color:inherit; }.issues td { vertical-align:top; }.issues code { font:11px 'DM Mono',monospace; color:#2d5961; }.location { max-width:270px; font:11px 'DM Mono',monospace; word-break:break-all; color:#63777d; }
.settings-layout { display:grid; grid-template-columns:minmax(0, 1fr) 300px; gap:28px; align-items:start; }.settings-form { background:#fff; border:1px solid #dfe7e9; border-radius:6px; padding:28px; }.settings-form section { padding-bottom:25px; margin-bottom:25px; border-bottom:1px solid #e7edef; }.settings-form h2 { margin-bottom:22px; }.two-fields { display:grid; grid-template-columns:1fr 1fr; gap:18px; }.colors input { height:43px; padding:4px; }.small-field { max-width:250px; }.preview-panel { padding:24px; background:#fff; border:1px solid #dfe7e9; border-radius:6px; }.mini-sidebar { display:flex; flex-direction:column; gap:9px; min-height:230px; margin:15px 0; padding:16px; background:#10212b; color:#dce8ec; border-radius:5px; }.mini-sidebar .brand-mark { margin-bottom:3px; }.mini-sidebar strong { color:white; }.mini-sidebar small { color:#91a8b0; }.mini-sidebar hr { width:100%; margin:12px 0 5px; border:0; border-top:1px solid #28404a; }.mini-sidebar b { font-size:11px; font-weight:500; }.preview-panel>p:last-child { color:#77888e; font-size:12px; }
.toast { margin:0 0 22px; padding:11px 14px; border-left:3px solid var(--accent); background:#ddf4fa; color:#285667; border-radius:3px; }.toast.success { background:#dff5ed; border-color:#1f927d; color:#17675a; }.toast.error { background:#fae5e5; border-color:#d45855; color:#853b3d; }
.login-shell { min-height:100vh; display:grid; grid-template-columns:1.2fr .8fr; }.login-intro { padding:42px 10vw; background:#10212b; color:#fff; display:flex; flex-direction:column; justify-content:space-between; }.public-brand { max-width:260px; }.login-intro>div { max-width:590px; margin:8vh 0; }.login-intro .eyebrow { color:#80b7b1; }.login-intro h1 { margin:0; max-width:550px; font-size:43px; line-height:1.28; letter-spacing:0; }.login-intro p:not(.eyebrow) { max-width:500px; color:#a9c2c9; font-size:16px; line-height:1.9; }.login-intro footer { color:#66818b; font:11px 'DM Mono',monospace; }.login-panel { display:grid; place-items:center; padding:36px; background:#f3f6f7; }.login-form { width:min(100%, 370px); padding:36px; background:#fff; border:1px solid #dfe7e9; border-radius:6px; box-shadow:0 12px 26px #1d394011; }.login-form h2 { margin:0 0 28px; font-size:23px; }
@media (max-width: 950px) { .sidebar { width:210px; }.main { margin-left:210px; padding:34px 28px; }.stat-grid { grid-template-columns:repeat(2, 1fr); }.split-layout, .settings-layout { grid-template-columns:1fr; }.form-panel { max-width:none; }.login-intro { padding:36px 7vw; }.login-intro h1 { font-size:35px; } }
@media (max-width: 690px) { .sidebar { position:static; width:auto; height:auto; padding:14px 16px; }.sidebar nav { display:flex; margin:15px 0 0; overflow:auto; }.sidebar nav a { flex:0 0 auto; }.nav-caption, .account { display:none; }.main { margin:0; padding:26px 16px 40px; }.page-header, .upload-band { align-items:flex-start; flex-direction:column; }.stat-grid { grid-template-columns:1fr 1fr; gap:9px; }.stat { min-height:105px; padding:15px; }.stat strong { font-size:27px; }.upload-form { width:100%; min-width:0; }.upload-actions { align-items:stretch; flex-direction:column; }.file-input { text-align:center; }.login-shell { grid-template-columns:1fr; }.login-intro { min-height:44vh; }.login-intro h1 { font-size:28px; }.login-panel { padding:22px 16px; }.login-form { padding:28px 22px; }.two-fields { grid-template-columns:1fr; gap:0; } }
@media (max-width: 690px) { .language-switch { top:10px; right:12px; }.public-language-switch { top:12px; right:12px; }.language-switch a { min-width:52px; } }

select { width:100%; display:block; margin-top:7px; padding:10px 11px; border:1px solid #cfdcdf; border-radius:4px; outline:0; color:#26383f; background:#fff; font-size:13px; }
select:focus { border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 12%, transparent); }
.upload-band { margin-bottom:20px; }
.ai-band { display:flex; justify-content:space-between; align-items:center; gap:26px; padding:24px; margin-bottom:35px; border:1px solid #d6d7ef; border-left:4px solid #6663a7; border-radius:6px; background:#f2f2fb; }
.ai-band h2 { margin:0; font-size:18px; }.ai-band p:not(.eyebrow) { margin:6px 0 0; color:#61777d; font-size:12px; }
.ai-form { display:grid; grid-template-columns:190px minmax(210px, 1fr) auto; gap:10px; align-items:end; min-width:580px; }.ai-form label { margin:0; }.ai-form select, .ai-form input { margin-bottom:0; }
.accent-button { min-height:40px; border:0; border-radius:5px; padding:0 15px; background:#57548f; color:#fff; display:inline-flex; align-items:center; justify-content:center; gap:12px; font-weight:600; }.accent-button:hover { background:#484577; }
.ai-results-head { margin-top:36px; }.ai-results { display:grid; gap:13px; }.ai-result { background:#fff; border:1px solid #dfe7e9; border-radius:6px; padding:18px 20px; }.ai-result header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }.ai-result header>div { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }.ai-result header strong { font-size:14px; }.ai-result header small { color:#7b8e94; font-size:11px; }.ai-focus { margin:13px 0 0; color:#687e86; font-size:12px; }.ai-result pre { margin:14px 0 0; padding:14px; border-left:3px solid #7773ad; background:#f7f7fb; color:#2d3d47; white-space:pre-wrap; word-break:break-word; font:12px/1.75 'Noto Sans SC', Arial, sans-serif; }.ai-result-pending { border-left:3px solid #6663a7; }.ai-result-failed { border-left-color:#d45855; }.ai-progress { width:164px; flex:0 0 164px; text-align:right; }.ai-progress strong { display:block; color:#57548f; font:500 18px/1 'DM Mono', monospace; }.ai-progress small { display:block; margin-top:4px; overflow:hidden; color:#7b8e94; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.ai-progress-track { height:5px; margin-top:8px; overflow:hidden; border-radius:3px; background:#e8e7f5; }.ai-progress-bar { height:100%; border-radius:inherit; background:#6663a7; transition:width .35s ease; }.ai-result-failed .ai-progress strong { color:#b74447; }.ai-result-failed .ai-progress-bar { background:#d45855; }
.ai-model-panel p { color:#71848b; font-size:12px; margin:0 0 22px; }.model-count { margin-top:28px; padding-top:20px; border-top:1px solid #e5ecee; }.model-count strong { display:block; color:#57548f; font:500 30px/1 'DM Mono',monospace; }.model-count span { color:#7b8e94; font-size:12px; }
.danger-panel { border-color:#ead1d1; }.danger-panel p { color:#7d6868; font-size:12px; line-height:1.7; margin:0 0 22px; }.danger-button { min-height:40px; border:0; border-radius:5px; padding:0 15px; display:inline-flex; align-items:center; justify-content:center; gap:12px; color:#fff; background:#b74447; font-weight:600; }.danger-button:hover { background:#9d373a; }
.capability-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }.capability-option { display:flex; gap:10px; align-items:flex-start; margin:0; padding:12px; border:1px solid #dbe5e7; border-radius:5px; background:#fbfcfc; cursor:pointer; }.capability-option:has(input:checked) { border-color:var(--brand); background:#f1f9f7; }.capability-option input { width:16px; height:16px; margin:2px 0 0; accent-color:var(--brand); }.capability-option strong, .capability-option small { display:block; }.capability-option strong { color:#32454b; font-size:12px; }.capability-option small { margin-top:2px; color:#75878d; font-size:10px; line-height:1.45; }
.login-brand-icon { object-fit:cover; background:#fff; }.field-hint { display:block; margin-top:5px; color:#75878d; font-size:10px; font-weight:400; }.uploaded-login-icon { display:block; width:42px; height:42px; margin-top:9px; object-fit:cover; border:1px solid #d4e0e3; border-radius:5px; background:#fff; }
.failure-reason { min-width:220px; max-width:360px; color:#9a4749; font-size:12px; line-height:1.45; }.status-button, .failure-detail-link { border:0; font:inherit; cursor:pointer; }.status-button:hover { filter:brightness(.94); }.failure-detail-link { padding:0; color:#9a4749; background:transparent; text-align:left; text-decoration:underline; text-underline-offset:3px; }.failure-detail-link:hover { color:#7e3033; }.notice { justify-content:space-between; align-items:center; }.notice>div { display:grid; gap:3px; }.notice-action { flex:0 0 auto; min-height:34px; border-color:#d28a8c; background:#fffafa; color:#8b3f41; }.failure-dialog { width:min(560px, calc(100vw - 32px)); border:0; border-radius:6px; padding:0; color:#273940; background:#fff; box-shadow:0 22px 60px #10212b45; }.failure-dialog::backdrop { background:#10212b73; }.failure-dialog header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:24px 26px 18px; border-bottom:1px solid #e5ecee; }.failure-dialog h2 { margin:0; font-size:20px; line-height:1.3; }.failure-dialog section { padding:20px 26px 24px; }.failure-dialog h3 { margin:0 0 7px; color:#536d75; font-size:12px; }.failure-dialog p { margin:0; color:#35474e; line-height:1.7; }.failure-dialog ol { margin:0; padding-left:20px; color:#35474e; line-height:1.8; }.failure-dialog li + li { margin-top:4px; }.failure-dialog details { margin-top:20px; padding-top:16px; border-top:1px solid #e5ecee; color:#647980; font-size:12px; }.failure-dialog summary { cursor:pointer; }.failure-dialog pre { max-height:150px; margin:10px 0 0; padding:10px; overflow:auto; color:#654143; background:#f8f4f4; font:11px/1.55 'DM Mono', monospace; white-space:pre-wrap; word-break:break-word; }.failure-dialog>form:last-child { display:flex; justify-content:flex-end; padding:0 26px 24px; }.dialog-close { width:30px; height:30px; border:0; border-radius:4px; padding:0; color:#647980; background:transparent; font-size:22px; line-height:1; }.dialog-close:hover { color:#8b3f41; background:#fae5e5; }
.scan-progress-cell { min-width:126px; }.scan-progress-label { margin-bottom:6px; color:#61777d; font:11px/1 'DM Mono', monospace; }.scan-progress-label.completed { color:#167263; }.scan-progress-label.failed { color:#a8393b; }.scan-progress-track { width:118px; height:6px; overflow:hidden; border-radius:3px; background:#e7edef; }.scan-progress-bar { display:block; height:100%; border-radius:inherit; background:#149bbd; }.scan-progress-bar.completed { background:#1f927d; }.scan-progress-bar.failed { background:#d45855; }.scan-progress-bar.running { animation:scan-progress-pulse 1.4s ease-in-out infinite; }@keyframes scan-progress-pulse { 50% { opacity:.55; } }
.external-guidance { margin:0 0 28px; padding:22px 24px; border:1px solid #d6d7ef; border-left:4px solid #6663a7; border-radius:6px; background:#fff; }.external-guidance .section-head { margin-bottom:15px; }.external-guidance .section-head p:not(.eyebrow) { margin:5px 0 0; color:#71848b; font-size:12px; }.external-analysis { border-top:1px solid #e5ecee; }.external-analysis header { display:flex; align-items:center; gap:9px; padding:13px 0 10px; color:#3b4e56; }.external-analysis header small { color:#7b8e94; font-size:11px; }.external-analysis pre { max-height:460px; margin:0; padding:15px; overflow:auto; border-left:3px solid #7773ad; background:#f7f7fb; color:#2d3d47; white-space:pre-wrap; word-break:break-word; font:12px/1.75 'Noto Sans SC', Arial, sans-serif; }.external-analysis-empty { margin:0; padding:16px; border-top:1px solid #e5ecee; color:#7b8e94; font-size:12px; }
.rule-selection { margin:0 0 18px; padding:12px; border:1px solid #dbe5e7; border-radius:5px; overflow:hidden; }.rule-selection legend { padding:0 5px; color:#556a72; font-size:12px; font-weight:600; }.rule-selection label { display:flex; min-width:0; gap:8px; align-items:center; margin:8px 0 0; color:#455f67; font-weight:400; }.rule-selection input { width:15px; height:15px; margin:0; flex:0 0 auto; accent-color:var(--brand); }.rule-selection span { min-width:0; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.external-rules-panel { margin-top:28px; padding:26px 28px; border:1px solid #d6e2e4; border-left:4px solid #6663a7; border-radius:6px; background:#fff; }.external-rules-panel .section-head { margin-bottom:18px; }.rule-upload-form { display:flex; gap:10px; align-items:center; margin-bottom:20px; }.rule-upload-form .file-input { margin:0; }.rule-list { display:grid; gap:8px; }.rule-row { display:flex; align-items:center; gap:10px; padding:12px; border:1px solid #e0e8ea; border-radius:5px; background:#fbfcfc; }.rule-row>div { min-width:0; flex:1; }.rule-row strong, .rule-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.rule-row strong { color:#32454b; font-size:13px; }.rule-row small { margin-top:3px; color:#75878d; font-size:11px; }.rule-row form { margin:0; }.rule-row .danger-button { min-height:34px; padding:0 11px; font-size:12px; }.rule-document { padding:24px; border:1px solid #dfe7e9; border-radius:6px; background:#fff; }.rule-document pre { margin:0; white-space:pre-wrap; word-break:break-word; color:#35474e; font:13px/1.75 'Noto Sans SC',Arial,sans-serif; }
@media (max-width: 690px) { .capability-grid { grid-template-columns:1fr; } }
@media (max-width: 690px) { .ai-band { align-items:flex-start; flex-direction:column; }.ai-form { width:100%; min-width:0; grid-template-columns:1fr; }.ai-result header { align-items:stretch; flex-direction:column; }.ai-progress { width:100%; flex-basis:auto; text-align:left; }.ai-progress-track { margin-top:7px; } }
.engine-upgrade-panel { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:18px 28px; margin-top:28px; padding:24px 28px; border:1px solid #d6e2e4; border-left:4px solid var(--accent); border-radius:6px; background:#fff; }.engine-upgrade-panel h2 { margin:0; font-size:18px; }.engine-upgrade-panel p:not(.eyebrow) { margin:7px 0 0; color:#62767d; font-size:12px; line-height:1.7; }.engine-action { display:flex; align-items:flex-end; gap:12px; }.engine-action form { margin:0; }.secondary:disabled { cursor:not-allowed; opacity:.55; }.status.idle { color:#60767e; background:#e9eef0; }.status.success { color:#167263; background:#dff5ed; }.status.failed { color:#a8393b; background:#fae5e5; }.engine-meta { color:#7b8e94 !important; }.engine-message, .engine-versions { grid-column:1 / -1; }.engine-message { margin:0 !important; padding-top:14px; border-top:1px solid #e7edef; }.engine-versions { display:flex; flex-wrap:wrap; gap:8px; margin:0; }.engine-versions div { min-width:142px; padding:9px 11px; background:#f6f9fa; border:1px solid #e1e8ea; border-radius:4px; }.engine-versions dt { color:#71848b; font:10px 'DM Mono', monospace; }.engine-versions dd { margin:3px 0 0; color:#2d464e; font:12px 'DM Mono', monospace; }.engine-progress { width:164px; }.engine-progress>div:first-child { display:flex; align-items:center; justify-content:space-between; gap:8px; }.engine-progress strong { color:#42636b; font:500 13px/1 'DM Mono', monospace; }.engine-progress-track { height:6px; margin-top:8px; overflow:hidden; border-radius:3px; background:#e7edef; }.engine-progress-track span { display:block; height:100%; border-radius:inherit; background:#149bbd; transition:width .45s ease; }.engine-progress-track span.running { animation:engine-progress-pulse 1.4s ease-in-out infinite; }.engine-progress-track span.success { background:#1f927d; }.engine-progress-track span.failed { background:#d45855; }@keyframes engine-progress-pulse { 50% { opacity:.55; } }
@media (max-width: 690px) { .engine-upgrade-panel { grid-template-columns:1fr; padding:20px; }.engine-action { align-items:stretch; flex-direction:column; }.engine-progress { width:100%; }.engine-action form, .engine-action .secondary { width:100%; } }
@media (max-width: 690px) { .external-rules-panel { padding:20px; }.rule-upload-form, .rule-row { align-items:stretch; flex-direction:column; }.rule-row .secondary, .rule-row form, .rule-row .danger-button { width:100%; }.notice { align-items:flex-start; flex-direction:column; }.notice-action { width:100%; }.failure-dialog header, .failure-dialog section { padding-left:20px; padding-right:20px; }.failure-dialog>form:last-child { padding:0 20px 20px; }.failure-dialog>form:last-child .primary { width:100%; } }
.system-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px; }.system-panel, .system-services { padding:22px 24px; border:1px solid #dfe7e9; border-radius:6px; background:#fff; }.system-panel h2, .system-services h2 { margin:0 0 18px; font-size:18px; }.system-list { display:grid; gap:10px; margin:0; }.system-list div { display:grid; grid-template-columns:112px minmax(0, 1fr); gap:12px; align-items:start; }.system-list dt { color:#71848b; font-size:12px; }.system-list dd { min-width:0; margin:0; color:#31484f; overflow:hidden; font:12px/1.55 'DM Mono', monospace; text-overflow:ellipsis; white-space:nowrap; }.disk-usage>div:first-child { display:flex; align-items:baseline; gap:10px; }.disk-usage strong { color:#1e3037; font:500 30px/1 'DM Mono', monospace; }.disk-usage span, .disk-usage p { color:#71848b; font-size:12px; }.disk-usage p { margin:10px 0 0; }.disk-track { height:8px; margin-top:14px; overflow:hidden; border-radius:4px; background:#e7edef; }.disk-track span { display:block; height:100%; border-radius:inherit; background:var(--accent); }.system-services { margin-top:18px; }.system-services .section-head { margin-bottom:14px; }.service-list { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }.service-list article { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px; border:1px solid #e5ecee; border-radius:5px; background:#fbfcfc; }.service-list strong, .service-list small { display:block; }.service-list strong { color:#31484f; font-size:13px; }.service-list small { margin-top:3px; color:#7b8e94; font:11px 'DM Mono', monospace; }
@media (max-width: 690px) { .system-grid, .service-list { grid-template-columns:1fr; }.system-panel, .system-services { padding:20px; }.system-list div { grid-template-columns:1fr; gap:2px; }.system-list dd { white-space:normal; overflow-wrap:anywhere; } }
