:root{--bg:#f7f8fa;--bg-base:#f7f8fa;--bg-surface:#ffffff;--surface:#ffffff;--bg-subtle:#eef0f4;--fg:#141922;--fg-2:#333333;--text-primary:#141922;--text-secondary:#4b5262;--text-tertiary:#6b7382;--muted:#6b7382;--border:#e2e5ec;--border-soft:#eef0f4;--border-strong:#cdd2dd;--accent:#1b61c9;--accent-on:#ffffff;--accent-hover:#1a53ad;--accent-soft:#eaf2fd;--success:#0e7a52;--warn:#d97706;--danger:#dc2626;--font-body:Inter,-apple-system,system-ui,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--text-sm:14px;--text-base:15px;--text-lg:18px;--text-xl:24px;--text-2xl:30px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:8px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-pill:9999px;--shadow-xs:0 1px 2px rgba(20,25,34,0.05);--shadow-sm:0 1px 2px rgba(20,25,34,0.06),0 1px 3px rgba(20,25,34,0.05);--shadow-md:0 2px 4px rgba(20,25,34,0.06),0 4px 12px rgba(20,25,34,0.08);--shadow-lg:0 8px 24px rgba(20,25,34,0.12);--elev-ring:0 0 0 1px var(--border);--ring-focus:0 0 0 3px rgba(27,97,201,0.28);--focus-ring:var(--ring-focus);--motion-base:180ms;--ease-standard:cubic-bezier(0.2,0,0,1)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-base);line-height:1.45;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}h1,h2,h3{letter-spacing:-.01em}.btn,h1,h2,h3{color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:9px 15px;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:background var(--motion-base) var(--ease-standard),box-shadow var(--motion-base) var(--ease-standard),border-color var(--motion-base) var(--ease-standard)}.btn:hover{background:var(--bg-subtle)}.btn:focus-visible{outline:none;box-shadow:var(--ring-focus)}.btn--primary{background:var(--accent);color:var(--accent-on);border-color:var(--accent);box-shadow:var(--shadow-xs)}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn--danger{color:var(--danger);border-color:color-mix(in oklab,var(--danger),transparent 60%);background:var(--surface)}.btn--danger:hover{background:color-mix(in oklab,var(--danger),transparent 92%)}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6);transition:box-shadow var(--motion-base) var(--ease-standard)}.card--interactive:hover{box-shadow:var(--shadow-md)}.input,.select,.textarea{width:100%;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-primary);font-size:var(--text-sm);font-family:inherit;transition:border-color var(--motion-base) var(--ease-standard),box-shadow var(--motion-base) var(--ease-standard)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:none;box-shadow:var(--ring-focus);border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}.field label{font-size:13px;font-weight:600;color:var(--text-secondary)}.field-error{color:var(--danger);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;background:var(--bg-subtle);color:var(--text-secondary);border:0}.badge--active{background:color-mix(in oklab,var(--success),white 88%);color:var(--success)}.badge--cooldown{background:color-mix(in oklab,var(--warn),white 86%);color:color-mix(in oklab,var(--warn),black 12%)}.badge--disabled,.badge--neutral{background:var(--bg-subtle);color:var(--text-tertiary)}.badge--danger{background:color-mix(in oklab,var(--danger),white 90%);color:var(--danger)}.alert{padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--border);font-size:var(--text-sm);font-weight:600}.alert--danger{color:var(--danger);background:color-mix(in oklab,var(--danger),transparent 92%);border-color:color-mix(in oklab,var(--danger),transparent 70%)}.alert--warn{color:color-mix(in oklab,var(--warn),black 25%);background:color-mix(in oklab,var(--warn),transparent 88%);border-color:color-mix(in oklab,var(--warn),transparent 60%)}.alert--success{color:var(--success);background:color-mix(in oklab,var(--success),transparent 92%);border-color:color-mix(in oklab,var(--success),transparent 70%)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-4);display:flex;flex-direction:column;gap:4px;min-width:0}.stat-card .stat-value{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;color:var(--text-primary)}.stat-card .stat-label{font-size:var(--text-sm);color:var(--text-tertiary)}.stat-card__head{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin-bottom:4px;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent)}.stat-card--success .stat-card__head{background:color-mix(in oklab,var(--success),white 88%);color:var(--success)}.stat-card--warn .stat-card__head{background:color-mix(in oklab,var(--warn),white 86%);color:color-mix(in oklab,var(--warn),black 12%)}.stat-card--danger .stat-card__head{background:color-mix(in oklab,var(--danger),white 90%);color:var(--danger)}.bars{display:flex;align-items:flex-end;gap:var(--space-3);height:160px;padding-top:var(--space-4)}.bar{flex:1 1;flex-direction:column;align-items:center;gap:6px;min-width:0;justify-content:flex-end}.bar,.bar__track{display:flex;height:100%}.bar__track{flex-direction:column-reverse;justify-content:flex-start;width:100%;max-width:44px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;overflow:hidden;background:var(--bg-subtle)}.bar__seg{width:100%;transition:height var(--motion-base) var(--ease-standard)}.bar__seg--done{background:var(--accent)}.bar__seg--review{background:var(--warn)}.bar__seg--error{background:var(--danger)}.bar__value{font-family:var(--font-mono);font-weight:600;font-size:12px;color:var(--text-secondary)}.bar__label{font-size:11px;white-space:nowrap}.bar__label,.chart-legend{color:var(--text-tertiary)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-4);font-size:12px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.section-title{margin:0 0 var(--space-4);font-size:var(--text-lg);font-weight:600}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-8) var(--space-6);color:var(--text-tertiary)}.empty-state__illustration{color:var(--accent);opacity:.9}.empty-state__title{font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.empty-state__text{font-size:var(--text-sm);color:var(--text-tertiary);max-width:360px}.review-split{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-gap:var(--space-6);gap:var(--space-6);align-items:start}@media (max-width:900px){.review-split{grid-template-columns:1fr}}.review-viewer{padding:0;overflow:hidden;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:var(--space-6)}.review-viewer__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:8px 12px;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.review-viewer__label{font-size:var(--text-sm);font-weight:600;color:var(--text-tertiary)}.review-viewer__actions{display:flex;gap:var(--space-2)}.review-viewer__frame{position:relative;height:calc(100vh - 220px);min-height:420px;background:var(--bg-subtle)}.review-viewer__loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);font-size:var(--text-sm);color:var(--text-tertiary);background:var(--bg-subtle);z-index:1}.review-viewer__spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--accent);animation:review-spin .7s linear infinite}@keyframes review-spin{to{transform:rotate(1turn)}}.review-viewer__frame iframe{width:100%;height:100%;border:0;display:block}.review-viewer__frame img{width:100%;height:100%;object-fit:contain;display:block}.review-viewer__frame:-webkit-full-screen{height:100vh;background:#1a1a1a}.review-viewer__frame:fullscreen{height:100vh;background:#1a1a1a}.btn--sm{padding:5px 10px;font-size:13px}.table{width:100%;border-collapse:collapse}.table td,.table th{text-align:left;padding:12px 14px;border-bottom:1px solid var(--border-soft);font-size:var(--text-sm)}.table th{position:-webkit-sticky;position:sticky;top:0;background:var(--bg-subtle);color:var(--text-tertiary);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.table tbody tr{transition:background var(--motion-base) var(--ease-standard)}.table tbody tr:hover{background:var(--bg-subtle)}.mono{font-family:var(--font-mono);font-weight:600}.muted{color:var(--text-tertiary)}.app-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh;transition:grid-template-columns var(--motion-base) var(--ease-standard)}.app-shell--collapsed{grid-template-columns:0 1fr}.app-shell--collapsed .sidebar{display:none}.app-shell__body{min-width:0}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);background:var(--surface);border-right:1px solid var(--border)}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:8px 12px var(--space-4);font-size:var(--text-lg);font-weight:700;color:var(--text-primary)}.sidebar__brand svg{color:var(--accent)}.nav{display:flex;flex-direction:column;gap:4px}.nav-item{position:relative;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);font-weight:600;transition:background var(--motion-base) var(--ease-standard),color var(--motion-base) var(--ease-standard)}.nav-item:hover{background:var(--bg-subtle)}.nav-item__icon{display:inline-flex;flex-shrink:0;color:currentColor}.nav-item--active{background:var(--accent-soft);color:var(--accent)}.nav-item--active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--accent)}.sidebar__footer{margin-top:auto;padding-top:var(--space-4)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;justify-content:space-between;gap:var(--space-4);min-height:60px;padding:0 var(--space-8);background:var(--surface);background:color-mix(in oklab,var(--surface),transparent 15%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar,.topbar__left{display:flex;align-items:center}.topbar__left{gap:var(--space-3)}.topbar__toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:background var(--motion-base) var(--ease-standard),color var(--motion-base) var(--ease-standard)}.topbar__toggle:hover{background:var(--bg-subtle);color:var(--text-primary)}.topbar__toggle:focus-visible{outline:none;box-shadow:var(--ring-focus)}.topbar__title{font-size:var(--text-sm);font-weight:600;color:var(--text-tertiary)}.app-main{width:100%;max-width:1200px;margin:0 auto;padding:var(--space-8)}.app-main--wide{max-width:1680px}@media (max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;gap:4px;border-right:0;border-bottom:1px solid var(--border)}.sidebar__brand{padding:4px 8px;margin-right:auto}.nav{flex-direction:row;flex-wrap:wrap}.nav-item--active:before{top:auto;bottom:0;left:8px;right:8px;width:auto;height:3px}.sidebar__footer{margin-top:0;padding-top:0}.app-main{padding:var(--space-6) var(--space-4)}.topbar{padding:0 var(--space-4)}}