/* Margin Agent visual tokens. Component rules below consume semantic roles. */
:root {
  --brand-green:#0f7a4d;
  --brand-green-light:#7fd3a4;
  --brand-graphite:#0f1720;
  --space-1:4px;--space-2:6px;--space-3:8px;--space-4:12px;
  --space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;
  --control-height:36px;--radius-sm:6px;--radius-md:8px;--radius-lg:11px;
  --font-small:12px;--font-body:14px;--font-section:16px;--font-page:26px;
  --motion-fast:150ms;--layer-dialog:100;
  --app-background:#f8fafc;--sidebar-background:#fff;
  --surface:#fff;--surface-elevated:#fff;--surface-hover:#f1f7f3;
  --surface-selected:#eaf5ee;--text-primary:#0f1720;
  --text-secondary:#405064;--text-muted:#64748b;--text-disabled:#8c9aab;
  --border-subtle:#e4eae8;--border-default:#d5dedb;--border-control:#b9c9c2;
  --accent-action-background:#0b6941;--accent-action-foreground:#fff;
  --accent-text:#0a6841;--accent-hover:#085a38;--accent-soft:#e8f5ec;
  --focus-ring:#16865a;
  --success-background:#e8f5ec;--success-foreground:#136640;--success-border:#b7ddc5;
  --warning-background:#fff5df;--warning-foreground:#805209;--warning-border:#e9cf94;
  --danger-background:#fff0ed;--danger-foreground:#a12d29;--danger-border:#e9b4ad;
  --info-background:#edf4f6;--info-foreground:#315a68;--info-border:#c9dce2;
  --shadow-card:0 1px 3px rgb(15 23 32 / 5%);
  --shadow-overlay:0 16px 50px rgb(15 23 32 / 20%);
  /* Existing selectors consume these aliases. */
  --ink:var(--text-primary);--muted:var(--text-muted);
  --blue:var(--accent-text);--blue-light:var(--accent-soft);
  --line:var(--border-default);--border:var(--border-default);
  --bg:var(--app-background);--green:var(--success-foreground);
  --amber:var(--warning-foreground);--red:var(--danger-foreground);
}
:root[data-theme="dark"] {
  --app-background:#0f1720;--sidebar-background:#141f28;
  --surface:#18242e;--surface-elevated:#1d2b35;
  --surface-hover:#22352f;--surface-selected:#1b3d30;
  --text-primary:#ecf3f0;--text-secondary:#c3d0ca;
  --text-muted:#9caea7;--text-disabled:#788b83;
  --border-subtle:#263640;--border-default:#34464c;--border-control:#4d6266;
  --accent-action-background:#69c795;--accent-action-foreground:#10251c;
  --accent-text:#89ddb0;--accent-hover:#a0e8be;--accent-soft:#1c3b2e;
  --focus-ring:#92e5b5;
  --success-background:#1b3b2e;--success-foreground:#99e2b9;--success-border:#3b7656;
  --warning-background:#473720;--warning-foreground:#f3d695;--warning-border:#806336;
  --danger-background:#47292b;--danger-foreground:#ffb3ac;--danger-border:#8a4a48;
  --info-background:#203640;--info-foreground:#b1dae5;--info-border:#42636c;
  --shadow-card:0 1px 3px rgb(0 0 0 / 15%);
  --shadow-overlay:0 16px 50px rgb(0 0 0 / 45%);
}
html{background:var(--app-background);scrollbar-color:var(--border-control) var(--app-background)}
body{background:var(--app-background);color:var(--text-primary);font:var(--font-body)/1.5 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
button,input,select,textarea{color:var(--text-primary);font:inherit}
button,input,select,textarea,summary,a,.nav-button,.tab{transition:background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-fast) ease}
button{background:var(--surface);border-color:var(--border-control);border-radius:var(--radius-sm);min-height:var(--control-height)}
button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--accent-text)}
button.primary{background:var(--accent-action-background);border-color:var(--accent-action-background);color:var(--accent-action-foreground)}
button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}
:root[data-theme="dark"] button.primary:hover:not(:disabled){color:#10251c}
button.soft,button.pale,button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-text);border-color:var(--success-border)}
button.link,a{color:var(--accent-text)}
button.link:hover:not(:disabled),a:hover{color:var(--accent-hover)}
button.danger{color:var(--danger-foreground)}
button:disabled,input:disabled,select:disabled,textarea:disabled{color:var(--text-disabled);opacity:.72;cursor:not-allowed}
:is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
input,select,textarea{background:var(--surface);border:1px solid var(--border-control);border-radius:var(--radius-sm);min-height:var(--control-height)}
input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--accent-text)}
input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}
input[type=checkbox],input[type=radio]{accent-color:var(--accent-action-background)}
input.invalid,select.invalid,.invalid{border-color:var(--danger-foreground)!important}
.manual-input,.manual-cell input{background:var(--warning-background);border-color:var(--warning-border)}
label,small,.muted,.row-note,.position-meta,.footer-status small{color:var(--text-muted)}
.inline-check{color:var(--text-primary)}
h1{font-size:var(--font-page)}
h2{font-size:var(--font-section)}
.sidebar{background:var(--sidebar-background);border-color:var(--border-default)}
.brand{color:var(--text-primary);font-weight:750;letter-spacing:-.04em}
.brand-mark{width:32px;height:32px;display:block;object-fit:contain;background:transparent;border-radius:0}
.nav-label,.eyebrow{color:var(--text-muted)}
.nav-button{background:transparent;border-color:transparent;color:var(--text-secondary)}
.nav-button.active,.recent.active{background:var(--surface-selected);color:var(--accent-text)}
.nav-button:hover:not(:disabled),.recent:hover{background:var(--surface-hover);color:var(--text-primary)}
.nav-count,.avatar,.pill{background:var(--surface-selected);color:var(--text-secondary)}
.topbar,.footerbar{background:var(--surface);border-color:var(--border-default)}
.footerbar{box-shadow:0 -2px 12px rgb(15 23 32 / 5%)}
.preview-label,.pill.warn,.notice-panel{background:var(--warning-background);border-color:var(--warning-border);color:var(--warning-foreground)}
.pill.good,.applied-note{background:var(--success-background);color:var(--success-foreground)}
.pill.bad{background:var(--danger-background);color:var(--danger-foreground)}
.card,.metric,.detail-collapse{background:var(--surface);border-color:var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}
.tab{color:var(--text-secondary)}
.tab.active{color:var(--accent-text);border-color:var(--accent-text)}
.tab:hover:not(.active){color:var(--text-primary)}
.doc-slot{background:var(--surface);border-color:var(--border-control)}
.doc-slot:hover,.doc-slot.dragover{background:var(--surface-hover);border-color:var(--accent-text)}
.doc-slot svg,.desktop-project-metric small{background:var(--accent-soft);color:var(--accent-text)}
.desktop-project-metric{border-color:var(--border-default)}
.positions th,.admin-table th,.recognition-table th,.web-positions th{background:var(--surface-hover);color:var(--text-secondary);border-color:var(--border-default)}
.positions .web-positions{font-size:13px}
.web-positions th{font-size:12px}
.web-positions label{font-size:12px}
.web-positions input,.web-positions select{font-size:13px}
.positions td,.admin-table td,.recognition-table td,.web-positions td{border-color:var(--border-subtle)}
.positions tbody tr:hover,.admin-table tbody tr:hover,.recognition-table tbody tr:hover,.web-positions tbody tr:hover{background:var(--surface-hover)}
.more-row,.recognition-table .recognition-apply-row{background:var(--surface-hover)}
.recognition-table .recognition-value:hover,.recognition-table .recognition-value:focus{background:var(--surface-selected)}
.web-positions :is(input,select,textarea),.positions :is(input,select){font-variant-numeric:tabular-nums}
.source-preview-text,.recognition-source-text,.recognition-evidence pre,.import-evidence pre,.issue-details,.ai-consent pre{background:var(--surface-hover);color:var(--text-primary);border-color:var(--border-default)}
.recognition-source-text mark{background:var(--warning-background);color:var(--warning-foreground)}
#recognition-status{background:var(--info-background);border-color:var(--info-border);color:var(--info-foreground)}
#recognition-status:empty{display:none}
.recognition-item,.mail-attachment,.import-project-field{border-color:var(--border-subtle)}
.mail-message-heading{color:var(--accent-text)}
.job-progress{background:var(--border-subtle)}
.job-progress>span{background:var(--accent-action-background)}
.import-dialog,.import-row,.ai-consent,.calculation-issues,dialog{background:var(--surface-elevated);border-color:var(--border-default);color:var(--text-primary);box-shadow:var(--shadow-overlay)}
dialog::backdrop,.ai-consent::backdrop{background:rgb(4 12 15 / 62%)}
dialog p{color:var(--text-secondary)}
.import-warnings{color:var(--warning-foreground)}
.import-footer #import-error{color:var(--danger-foreground)}
#notice{background:var(--surface-elevated);color:var(--text-primary);border:1px solid var(--border-control);box-shadow:var(--shadow-overlay)}
.auth-shell{background:var(--surface)}
.auth-intro{background:linear-gradient(145deg,var(--surface-selected),var(--app-background))}
.auth-intro p,.auth-steps{color:var(--text-secondary)}
.step-num{border-color:var(--success-border);color:var(--accent-text)}
.auth-content{background:var(--surface)}
.auth-card p{color:var(--text-secondary)}
:root[data-theme="dark"] .auth-card input:not([type="checkbox"]){background:var(--surface-elevated);color:var(--text-primary);border-color:var(--border-control)}
:root[data-theme="dark"] .auth-card button.primary{background:var(--accent-action-background);color:var(--accent-action-foreground)}
:root[data-theme="dark"] .auth-card button.link{color:var(--accent-text)}
.appearance-dialog{width:min(420px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto}
.appearance-dialog .card-head{margin-bottom:16px}
.appearance-dialog label{margin-bottom:7px;font-size:13px;color:var(--text-secondary)}
.appearance-dialog select{width:100%}
.appearance-dialog .row-note{margin-bottom:0}
.skip{background:var(--surface-elevated);color:var(--accent-text)}
@media(max-width:720px){.brand-mark{width:28px;height:28px}}
@media(prefers-reduced-motion:reduce){
  button,input,select,textarea,summary,a,.nav-button,.tab{transition:none}
  .job-progress>span{animation:none;width:100%}
}
