:root{--bg: #f6f6f6;--surface: #fff;--border: #e0e0e0;--border-strong: #c8c8c8;--text: #1a1a1a;--text-muted: #666;--text-faint: #999;--accent: #1a1a1a;--accent-hover: #333;--pass: #1a6b3c;--fail: #b42318;--warn: #8a6116;--radius: 3px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:13px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:0 20px}.header-inner{max-width:1080px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:48px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.logo{flex-shrink:0;display:block}.brand h1{margin:0;font-size:14px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.nav-tabs{display:flex;gap:2px;flex-wrap:wrap}.nav-tab{background:none;border:none;padding:6px 10px;font:inherit;font-size:13px;color:var(--text-muted);cursor:pointer;border-radius:var(--radius)}.nav-tab:hover{color:var(--text);background:#f0f0f0}.nav-tab-active{color:var(--text);background:#ebebeb;font-weight:500}.app-main{flex:1;max-width:1080px;width:100%;margin:0 auto;padding:28px 20px 40px}.app-footer{border-top:1px solid var(--border);padding:12px 20px;font-size:12px;color:var(--text-faint);background:var(--surface)}.footer-inner{max-width:1080px;margin:0 auto;display:flex;gap:16px;flex-wrap:wrap}.app-footer a{color:var(--text-muted);text-decoration:none}.app-footer a:hover{color:var(--text);text-decoration:underline}.stack{display:flex;flex-direction:column;gap:20px}.page-header{margin-bottom:4px}.page-header h2{margin:0;font-size:15px;font-weight:600;letter-spacing:-.01em}.page-header p{margin:4px 0 0;color:var(--text-muted);font-size:13px;max-width:56ch}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.card h3{margin:0 0 12px;font-size:13px;font-weight:600;color:var(--text)}.card-description{margin:0 0 16px;color:var(--text-muted)}.card-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.card-header-row h3{margin:0}.form{display:flex;flex-direction:column;gap:14px;max-width:480px}.field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:500;color:var(--text-muted)}.field-checkbox{flex-direction:row;align-items:center;gap:8px;font-weight:400;color:var(--text)}.field input,.field select,.field textarea{font:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text)}.field input:focus,.field select:focus,.field textarea:focus{outline:1px solid var(--text);border-color:var(--text)}.field textarea{resize:vertical;min-height:88px;font-family:var(--mono);font-size:12px;line-height:1.5}.field-hint{font-size:11px;font-weight:400;color:var(--text-faint)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:var(--radius);border:1px solid transparent;font:inherit;font-size:13px;font-weight:500;cursor:pointer;line-height:1.3}.btn-sm{margin-top:8px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;align-self:flex-start}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-secondary:hover:not(:disabled){background:#f5f5f5}.btn-link{background:none;border:none;color:var(--text);padding:0;font-size:13px;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--text-muted)}.btn-inline{background:none;border:none;color:var(--text);padding:0;font:inherit;font-size:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.btn-danger{color:var(--fail)}.table-wrap{overflow-x:auto;margin:0 -2px}.table{width:100%;border-collapse:collapse;font-size:12px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.table th{font-size:11px;font-weight:500;color:var(--text-muted);background:#fafafa;white-space:nowrap}.table td{color:var(--text)}.table .col-narrow{width:1%;white-space:nowrap}.cell-clip{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-fail td{background:#fdf8f8}.table-actions{white-space:nowrap}.confirm-row{display:inline-flex;align-items:center;gap:8px;font-size:12px}.stat-row{display:flex;flex-wrap:wrap;gap:6px 20px;padding:12px 0;border-bottom:1px solid var(--border);margin-bottom:16px}.stat-row:last-child{border-bottom:none;margin-bottom:0}.stat{display:flex;align-items:baseline;gap:6px}.stat-label{font-size:11px;color:var(--text-faint)}.stat-value{font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}.stat-value-lg{font-size:18px;font-weight:600;letter-spacing:-.02em}.status-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}.status-list-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 12px;background:var(--surface);font-size:12px}.status-list-item .label{color:var(--text-muted)}.status-list-item .value{font-weight:500;text-align:right}.mono{font-family:var(--mono);font-size:11px}.result-pass{color:var(--pass);font-weight:500}.result-fail{color:var(--fail);font-weight:500}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:middle;position:relative;top:-1px}.dot-ok{background:var(--pass)}.dot-warn{background:var(--warn)}.dot-fail{background:var(--fail)}.dot-muted{background:var(--border-strong)}.alert{padding:10px 12px;border-radius:var(--radius);margin-top:12px;font-size:13px;border:1px solid}.alert strong{font-weight:600}.alert-error{background:#fefafa;border-color:#f0d0d0;color:var(--fail)}.alert-success{background:#f8fdf9;border-color:#cce8d4;color:var(--pass)}.alert-warn{background:#fdfbf5;border-color:#ead9b8;color:var(--warn)}.alert .hint{margin:6px 0 0;font-size:12px;color:var(--text-muted);font-weight:400}.status-text{color:var(--text-muted);margin:0}code{font-family:var(--mono);font-size:11px;background:#f0f0f0;padding:1px 4px;border-radius:2px}.progress-block{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.progress-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted);margin-bottom:5px;font-variant-numeric:tabular-nums}.progress-track{height:3px;background:var(--border);overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .2s ease}.empty-state{padding:8px 0}.empty-state p{margin:0 0 10px;color:var(--text-muted)}.section-note{margin:14px 0 0;padding-top:14px;border-top:1px solid var(--border);font-size:12px;color:var(--text-faint)}
