:root{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .9375rem;--fs-lg: 1.125rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--lh-tight: 1.25;--lh-normal: 1.5;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-8: 3rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f5;--surface-3: #e6e9ee;--border: #d3d8e0;--border-strong: #b7bfcc;--text: #1b2330;--text-muted: #5a6474;--text-faint: #8a94a6;--accent: #2456c7;--accent-contrast: #ffffff;--focus-ring: #1e5fff;--status-success-bg: #e2f4e7;--status-success-fg: #1b6b34;--status-warning-bg: #fdf1d6;--status-warning-fg: #8a5a00;--status-danger-bg: #fce3e3;--status-danger-fg: #a11d1d;--status-neutral-bg: #e7eaf0;--status-neutral-fg: #3c4657;--status-running-bg: #dceafe;--status-running-fg: #1a49a6;--status-info-bg: #e4eefb;--status-info-fg: #1f4f8f;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 2px 8px rgba(16, 24, 40, .08)}@media(prefers-color-scheme:dark){:root{--bg: #0e1319;--surface: #161c25;--surface-2: #1c232e;--surface-3: #232c39;--border: #2c3542;--border-strong: #3a4552;--text: #e7ecf3;--text-muted: #a3adbd;--text-faint: #74808f;--accent: #5b8cf0;--accent-contrast: #0b0f14;--focus-ring: #7aa2ff;--status-success-bg: #14321f;--status-success-fg: #7fd69a;--status-warning-bg: #3a2c0c;--status-warning-fg: #f0c368;--status-danger-bg: #3a1414;--status-danger-fg: #f08a8a;--status-neutral-bg: #232c39;--status-neutral-fg: #b6c0cf;--status-running-bg: #14264a;--status-running-fg: #86b2ff;--status-info-bg: #132a45;--status-info-fg: #8fbaf0;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 2px 10px rgba(0, 0, 0, .4)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-md);line-height:var(--lh-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 var(--sp-3);line-height:var(--lh-tight);font-weight:600}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}button{font:inherit;cursor:pointer}code,kbd,samp,.mono{font-family:var(--font-mono);font-size:.9em}.app-shell{display:flex;flex-direction:column;min-height:100%}.app-header{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;flex-wrap:wrap}.app-brand{font-weight:700;font-size:var(--fs-md);letter-spacing:.02em;white-space:nowrap}.app-nav{display:flex;gap:var(--sp-1);flex-wrap:wrap}.app-nav a{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--fs-sm);font-weight:500}.app-nav a:hover{background:var(--surface-2);text-decoration:none}.app-nav a.active{background:var(--surface-3);color:var(--text)}.app-header-spacer{flex:1 1 auto}.app-main{padding:var(--sp-5);max-width:1400px;width:100%;margin:0 auto;flex:1 1 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);box-shadow:var(--shadow-sm)}.card h3{margin-bottom:var(--sp-3);font-size:var(--fs-md);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.grid{display:grid;gap:var(--sp-4)}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.row{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}.metric{font-size:var(--fs-2xl);font-weight:700;line-height:1}.metric-label{color:var(--text-muted);font-size:var(--fs-sm)}.kv{display:grid;grid-template-columns:minmax(140px,max-content) 1fr;gap:var(--sp-2) var(--sp-4);align-items:baseline}.kv dt{color:var(--text-muted);font-size:var(--fs-sm)}.kv dd{margin:0;word-break:break-word}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.data th,table.data td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);white-space:nowrap}table.data th{background:var(--surface-2);color:var(--text-muted);font-weight:600;position:sticky;top:0}table.data tbody tr:hover{background:var(--surface-2)}table.data td.wrap{white-space:normal}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:999px;font-size:var(--fs-xs);font-weight:600;line-height:1.4;border:1px solid transparent;white-space:nowrap}.badge:before{content:"";width:7px;height:7px;border-radius:999px;background:currentColor;flex:none}.badge-success{background:var(--status-success-bg);color:var(--status-success-fg)}.badge-warning{background:var(--status-warning-bg);color:var(--status-warning-fg)}.badge-danger{background:var(--status-danger-bg);color:var(--status-danger-fg)}.badge-neutral{background:var(--status-neutral-bg);color:var(--status-neutral-fg)}.badge-running{background:var(--status-running-bg);color:var(--status-running-fg)}.badge-info{background:var(--status-info-bg);color:var(--status-info-fg)}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:500}.btn:hover{background:var(--surface-2)}.btn-primary{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.05)}.btn:disabled{opacity:.6;cursor:not-allowed}.input{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit}.tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border);overflow-x:auto;margin-bottom:var(--sp-4)}.tabs a{padding:var(--sp-2) var(--sp-3);color:var(--text-muted);font-size:var(--fs-sm);font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}.tabs a:hover{text-decoration:none;color:var(--text)}.tabs a.active{color:var(--text);border-bottom-color:var(--accent)}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.small{font-size:var(--fs-sm)}.mono-id{font-family:var(--font-mono);font-size:.85em;color:var(--text-muted)}.empty-state,.error-state{padding:var(--sp-6);text-align:center;color:var(--text-muted);border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface)}.error-state{color:var(--status-danger-fg);border-color:var(--status-danger-fg);border-style:solid}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite;border-radius:var(--radius-sm);height:1em}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.refresh-indicator{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted)}.refresh-dot{width:8px;height:8px;border-radius:999px;background:var(--text-faint)}.refresh-dot.live{background:var(--status-success-fg)}.notice{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--fs-sm)}.notice-warning{background:var(--status-warning-bg);color:var(--status-warning-fg);border-color:var(--status-warning-fg)}.page-head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap}.page-head .app-header-spacer{flex:1}.breadcrumb{font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--sp-3)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--sp-5)}.login-card{width:100%;max-width:420px}
