:root{--serif: "New York", "Times New Roman", Georgia, serif;--sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;--ink: #1A1A1A;--ink-muted: #666666;--ink-faint: #888888;--ink-pale: #B0B0B0;--terracotta: #C26B4F;--terracotta-mid: #B25E45;--terracotta-dark: #985039;--warm-mid: #DEA589;--cream: #F4E5D8;--cream-pale: #FBF6F0;--cream-deep: #EBD8C4;--border: #EBEBEB;--border-warm: #E0D5C5;--drop-dashed: #DAB89F;--danger: #DC2626;--warn-bg: #FEF3C7;--warn-text: #92400E;--success-bg: #DCFCE7;--success-text: #166534;--grad-sidebar: linear-gradient(170deg, #C26B4F 0%, #B25E45 60%, #985039 100%);--grad-canvas-wash: linear-gradient(180deg, #F4E5D8 0%, #FBF6F0 28%, #FFFFFF 60%);--grad-login-left: linear-gradient(160deg, #C26B4F 0%, #DEA589 55%, #F4E5D8 100%);--grad-top-strip: linear-gradient(90deg, #C26B4F 0%, #DEA589 50%, #F4E5D8 100%);--r-button: 8px;--r-card: 12px;--r-pill: 999px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--sans);background:#fff;color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.login-split{display:flex;min-height:100vh}.login-left{flex:0 0 60%;background:var(--grad-login-left);padding:48px 56px;display:flex;flex-direction:column;justify-content:space-between;color:#fff}.login-left .wordmark{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:.005em}.login-left h1{font-family:var(--serif);font-size:56px;line-height:1.05;font-weight:500;max-width:540px;letter-spacing:-.015em;margin-bottom:20px}.login-left .quote-attr{font-size:13px;opacity:.85;letter-spacing:.04em;text-transform:uppercase}.login-right{flex:1 1 40%;background:#fff;display:flex;align-items:center;justify-content:center;padding:48px 56px}.login-form{width:100%;max-width:380px}@media(max-width:720px){.login-split{flex-direction:column}.login-left{flex:0 0 auto;padding:36px 28px}.login-left h1{font-size:36px}.login-right{padding:36px 28px}}.app-shell{display:flex;min-height:100vh;background:#fff}.sidebar{flex:0 0 240px;background:var(--grad-sidebar);color:#fff;padding:28px 22px;display:flex;flex-direction:column}.sidebar .brand{margin-bottom:36px}.sidebar .wordmark{font-family:var(--serif);font-size:22px;font-weight:500;margin-bottom:4px}.sidebar .tagline{font-size:11px;text-transform:uppercase;letter-spacing:.12em;opacity:.75}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar-nav a,.sidebar-nav button{color:#fff;text-decoration:none;background:transparent;border:none;text-align:left;font-family:inherit;padding:10px 12px;border-radius:8px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .15s ease}.sidebar-nav a.active,.sidebar-nav button.active{background:#ffffff2e}.sidebar-nav a.muted,.sidebar-nav button.muted{opacity:.55;cursor:not-allowed}.sidebar-nav a:not(.muted):not(.active):hover,.sidebar-nav button:not(.muted):not(.active):hover{background:#ffffff14}.nav-badge{margin-left:auto;background:#fff3;color:#fff;font-size:10px;padding:2px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.sidebar-who{font-size:12px;margin-top:12px;opacity:.85;line-height:1.5}.sidebar-signout{background:transparent;border:1px solid rgba(255,255,255,.3);border-radius:8px;padding:9px 14px;color:#fff;font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;text-align:left;margin-top:20px;transition:background .15s ease,border-color .15s ease}.sidebar-signout:hover{background:#ffffff1a;border-color:#ffffff80}.app-main{flex:1;display:flex;flex-direction:column}.topbar{padding:22px 40px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.topbar h1{font-family:var(--serif);font-size:26px;font-weight:500;letter-spacing:-.01em;margin:0}.topbar-meta{display:flex;align-items:center;gap:12px;font-size:12px}.topbar-meta .job-id{font-family:var(--mono);color:var(--ink-faint)}.canvas{padding:36px 40px 60px;max-width:880px;width:100%}.canvas-wash{background:var(--grad-canvas-wash);background-attachment:fixed}.eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--terracotta);margin-bottom:16px}.editorial-h1{font-family:var(--serif);font-size:72px;font-weight:500;letter-spacing:-.025em;line-height:1;margin-bottom:18px;color:var(--ink)}.editorial-h1.hero{font-size:88px}.editorial-deck{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--ink-muted);line-height:1.4;max-width:600px;margin-bottom:56px}.editorial-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border-warm);border-bottom:1px solid var(--border-warm);margin-bottom:56px}.editorial-stats .estat{padding:28px 0}.editorial-stats .estat:not(:first-child){border-left:1px solid var(--border-warm);padding-left:28px}.editorial-stats .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-weight:600;margin-bottom:10px}.editorial-stats .num{font-family:var(--serif);font-size:56px;font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--ink)}.editorial-stats .num.terracotta{color:var(--terracotta)}.editorial-stats .num.danger{color:var(--danger)}.editorial-stats .num.muted{color:var(--ink-faint)}.editorial-stats .sub{font-size:12px;color:var(--ink-muted);margin-top:8px;line-height:1.4}@media(max-width:720px){.editorial-h1{font-size:44px}.editorial-h1.hero{font-size:56px}.editorial-stats{grid-template-columns:1fr}.editorial-stats .estat:not(:first-child){border-left:none;border-top:1px solid var(--border-warm);padding-left:0;padding-top:22px}}.editorial-section{padding:32px 0;border-top:1px solid var(--border-warm)}.editorial-section h2{font-family:var(--serif);font-size:28px;font-weight:500;letter-spacing:-.015em;margin-bottom:8px}.editorial-section .desc{font-size:14px;color:var(--ink-muted);line-height:1.55;margin-bottom:20px;max-width:540px}.upload-again{margin-top:36px;font-size:14px;color:var(--ink-faint)}.upload-again button{background:none;border:none;font:inherit;color:var(--terracotta);text-decoration:underline;cursor:pointer;padding:0}.page-h1{font-family:var(--serif);font-size:38px;font-weight:500;letter-spacing:-.015em;line-height:1.1;margin-bottom:12px}.page-lead{font-size:15px;color:var(--ink-muted);line-height:1.55;margin-bottom:36px;max-width:560px}.card{background:#fff;border:1px solid var(--border);border-radius:var(--r-card);padding:26px 28px;margin-bottom:18px}.step-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--terracotta);margin-bottom:12px}.field{margin-bottom:18px}.field:last-child{margin-bottom:0}.field label{display:block;font-size:13px;font-weight:500;color:var(--ink);margin-bottom:8px}.label-uppercase{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:8px}input[type=text],input[type=email],select{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-button);font-size:15px;font-family:inherit;color:var(--ink);background:#fff;transition:border-color .15s ease}input[type=text]::placeholder,input[type=email]::placeholder{color:var(--ink-pale)}input[type=text]:focus,input[type=email]:focus,select:focus{outline:none;border-color:var(--ink)}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-faint) 50%),linear-gradient(135deg,var(--ink-faint) 50%,transparent 50%);background-position:calc(100% - 18px) 18px,calc(100% - 13px) 18px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:36px}.drop-zone{background:var(--cream-pale);border:1px dashed var(--drop-dashed);border-radius:var(--r-button);padding:36px 24px;text-align:center;cursor:pointer;transition:background .15s ease,border-color .15s ease;position:relative}.drop-zone:hover,.drop-zone.drag-over{background:var(--cream);border-color:var(--terracotta)}.drop-zone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.drop-zone .drop-label{pointer-events:none;font-size:14px;color:var(--ink-muted);line-height:1.5}.drop-zone .drop-label strong{color:var(--ink)}.drop-zone .file-name{pointer-events:none;font-size:14px;color:var(--ink);font-weight:500}.upload-progress{margin-top:12px;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.upload-progress-bar{height:100%;background:var(--terracotta);transition:width .2s ease}.btn-primary,button[type=submit]{width:100%;padding:14px 22px;background:var(--ink);color:#fff;border:none;border-radius:var(--r-button);font-size:15px;font-weight:600;font-family:inherit;letter-spacing:.01em;cursor:pointer;transition:background .15s ease;margin-top:8px}.btn-primary:hover:not(:disabled),button[type=submit]:hover:not(:disabled){background:#000}.btn-primary:disabled,button[type=submit]:disabled{background:#ccc;cursor:not-allowed}.btn-secondary{padding:11px 18px;background:#fff;color:var(--ink);border:1px solid var(--border);border-radius:var(--r-button);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:border-color .15s ease,background .15s ease}.btn-secondary:hover:not(:disabled){border-color:var(--ink)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-commit{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-commit:hover:not(:disabled){background:#000;border-color:#000}.btn-reject{border-color:var(--border);color:var(--ink-muted)}.btn-reject:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.actions{display:flex;gap:12px;margin-top:28px}.actions .btn-commit{flex:1}.alert{border-radius:var(--r-card);padding:18px 22px;margin-bottom:16px;border:1px solid;font-size:14px;line-height:1.55}.alert strong{font-weight:600}.alert-warn{background:var(--cream-pale);border-color:var(--drop-dashed);color:#6b4423}.alert-warn strong{color:#8b5520}.alert-error{background:#fef2f2;border-color:#fecaca;color:#7f1d1d}.alert-success{background:var(--success-bg);border-color:#bbf7d0;color:var(--success-text)}.alert-warn .suggest{margin-top:10px;font-size:13px}.alert-warn .override-row{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--cream-deep);font-size:13px}.alert-warn .override-row input{width:14px;height:14px;accent-color:var(--terracotta)}.badge{display:inline-block;padding:4px 10px;border-radius:var(--r-pill);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.badge-pending{background:var(--warn-bg);color:var(--warn-text)}.badge-complete{background:var(--success-bg);color:var(--success-text)}.badge-rejected{background:#fee2e2;color:#991b1b}.warning-list{list-style:none}.warning-list li{display:flex;gap:10px;padding:10px 0;border-bottom:1px dashed var(--border);font-size:13px}.warning-list li:last-child{border-bottom:none}.warning-col{font-family:var(--mono);background:#f5f0e8;padding:2px 8px;border-radius:4px;color:#6b4423;font-weight:500}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;margin-right:8px;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.report-row{display:flex;gap:12px;align-items:flex-end}.year-field{flex:0 0 140px}.year-field label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin-bottom:6px;font-weight:600}@media(max-width:540px){.report-row{flex-direction:column;align-items:stretch}.year-field{flex:0 0 auto}}.boot{display:flex;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;gap:12px;background:var(--cream-pale)}.boot .wordmark{font-family:var(--serif);font-size:28px;font-weight:500;color:var(--ink)}.boot .booting{font-size:13px;color:var(--ink-muted);letter-spacing:.04em}.dashboard{padding:40px 56px 56px;max-width:1320px;width:100%;margin:0 auto;box-sizing:border-box}.dashboard-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;border-bottom:1px solid var(--border-warm, #E0D5C5);padding-bottom:20px;margin-bottom:28px;flex-wrap:wrap}.dashboard-eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);font-weight:500}.dashboard-title{font-family:var(--font-display, "Fraunces", Georgia, serif);font-size:36px;font-weight:500;color:var(--ink);margin:4px 0 0;letter-spacing:-.01em}.dashboard-controls{display:flex;align-items:center;gap:20px}.dashboard-year-picker{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-muted)}.dashboard-year-picker span{letter-spacing:.08em;text-transform:uppercase}.dashboard-year-picker select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-warm, #E0D5C5);background:var(--cream-pale);padding:7px 28px 7px 12px;border-radius:6px;font-size:13px;color:var(--ink);font-family:inherit;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--ink-muted) 50%),linear-gradient(135deg,var(--ink-muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 10px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.dashboard-year-picker select:focus{outline:none;border-color:var(--terracotta)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px}.dashboard-panel{background:#fff;border:1px solid var(--border-warm, #E0D5C5);border-radius:10px;padding:24px 24px 18px}.dashboard-panel--full{grid-column:1 / -1}.panel-title{font-family:var(--font-display, "Fraunces", Georgia, serif);font-size:18px;font-weight:500;color:var(--ink);margin:0}.panel-subtitle{font-size:12px;color:var(--ink-muted);margin:4px 0 16px}.chart-container{width:100%;min-height:240px}.chart-container .vega-embed{width:100%}.chart-container .vega-embed svg{max-width:100%;height:auto}.chart-empty{padding:32px 12px;font-size:13px;color:var(--ink-muted);text-align:center;border:1px dashed var(--border-warm, #E0D5C5);border-radius:6px}.dashboard-loading,.dashboard-error{padding:60px 0;text-align:center;color:var(--ink-muted);font-size:14px}.dashboard-error{color:var(--terracotta-dark)}.dashboard-empty{padding:80px 56px;max-width:600px;margin:0 auto;text-align:center}.dashboard-empty h2{font-family:var(--font-display, "Fraunces", Georgia, serif);font-size:32px;font-weight:500;color:var(--ink);margin:0 0 12px}.dashboard-empty p{color:var(--ink-muted);margin:0 0 24px;font-size:14px}@media(max-width:960px){.dashboard{padding:32px 24px}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.dashboard-title{font-size:30px}}.chat{display:flex;flex-direction:column;height:100%;max-width:880px;width:100%;margin:0 auto;padding:40px 56px 24px;box-sizing:border-box}.chat-header{flex:0 0 auto}.chat-lead{font-size:13px;color:var(--ink-muted);margin:8px 0 0;max-width:560px}.chat-scroll{flex:1 1 auto;overflow-y:auto;padding:24px 0;display:flex;flex-direction:column;gap:16px}.chat-starters{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.chat-starters-label{width:100%;font-size:12px;color:var(--ink-faint);margin:0 0 4px}.chat-chip{width:auto;padding:8px 14px;font-size:13px;border:1px solid var(--border-warm);border-radius:var(--r-pill, 999px);background:var(--cream-pale);color:var(--ink);cursor:pointer}.chat-chip:hover{background:var(--cream)}.chat-bubble{padding:14px 18px;border-radius:var(--r-card);font-size:14px;line-height:1.5;max-width:92%}.chat-bubble.user{align-self:flex-end;background:var(--terracotta);color:#fff}.chat-bubble.assistant{align-self:flex-start;background:#fff;border:1px solid var(--border-warm);width:92%}.chat-thinking{color:var(--ink-faint);font-style:italic}.chat-answer{margin:0 0 6px}.chat-ai-note{margin:0 0 8px;font-size:11px;color:var(--ink-faint)}.chat-chart{margin:8px 0}.chat-table{width:100%;border-collapse:collapse;margin:10px 0 4px;font-size:13px}.chat-table th,.chat-table td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--border);text-transform:capitalize}.chat-table th{color:var(--ink-muted);font-weight:500;font-size:11px}.chat-table .num{text-align:right;font-variant-numeric:tabular-nums}.chat-table tr.suppressed td{color:var(--ink-faint)}.chat-suppression{margin:8px 0 0;font-size:12px;color:var(--ink-muted)}.chat-query{margin-top:10px}.chat-query-toggle{width:auto;background:none;border:none;padding:0;color:var(--terracotta);font-size:12px;cursor:pointer;text-decoration:underline}.chat-query-body{margin-top:8px}.chat-plan-english{font-size:13px;color:var(--ink);margin:0 0 6px}.chat-query-body pre{background:var(--cream-pale);border:1px solid var(--border-warm);border-radius:var(--r-button);padding:12px;font-family:var(--mono);font-size:11px;overflow-x:auto;margin:0}.chat-input-row{flex:0 0 auto;display:flex;align-items:center;gap:8px;margin-top:20px;padding:7px 7px 7px 20px;background:#fff;border:1px solid var(--border-warm);border-radius:16px;box-shadow:0 1px 2px #1a1a1a0a;transition:border-color .15s ease,box-shadow .15s ease}.chat-input-row:focus-within{border-color:var(--terracotta);box-shadow:0 0 0 3px #c26b4f21}.chat-input-row .chat-input{flex:1 1 auto;width:auto;min-width:0;margin:0;padding:13px 4px;border:none;border-radius:0;background:transparent;font-family:var(--sans);font-size:15px;line-height:1.4;color:var(--ink)}.chat-input-row .chat-input::placeholder{color:var(--ink-pale)}.chat-input-row .chat-input:focus{outline:none;border:none;box-shadow:none}.chat-input-row .chat-send{flex:0 0 auto;width:auto;margin:0;padding:12px 26px;background:var(--ink);color:#fff;border:none;border-radius:12px;font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:background .15s ease,transform .05s ease}.chat-input-row .chat-send:hover:not(:disabled){background:#000}.chat-input-row .chat-send:active:not(:disabled){transform:translateY(1px)}.chat-input-row .chat-send:disabled{background:var(--cream-deep);color:var(--ink-pale);cursor:not-allowed}@media(max-width:960px){.chat{padding:28px 24px 20px}.chat-bubble.assistant{width:100%;max-width:100%}}.chat-save{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}.chat-save-name{flex:1 1 160px;min-width:0}.chat-save-btn{width:auto}.chat-save-error{flex-basis:100%;margin:0;font-size:12px;color:var(--ink-muted)}
