:root{color-scheme:light dark;--bg: #eef3fa;--surface: #ffffff;--surface-muted: #f6f9fd;--ink: #16233b;--dim: #5c708c;--accent: #2a62bf;--accent-hover: #234f9a;--accent-ink: #ffffff;--accent-soft: #e3ecfa;--border: #dbe6f4;--control-border: #778aa3;--danger: #b91c1c;--danger-bg: #fef2f2;--danger-ink: #ffffff;--warn: #9a4a05;--warn-bg: #fff7ed;--ok: #15803d;--ok-bg: #f0fdf4;--focus: #1d4ed8;--overlay: rgba(15, 24, 38, .45);--shadow-card: 0 1px 2px rgba(22, 35, 59, .06);--shadow-dialog: 0 10px 30px rgba(0, 0, 0, .2);--radius: 10px;--radius-sm: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--font-xs: 12px;--font-sm: 13px;--font-md: 15px;--font-lg: 17px;--font-xl: 20px;--font-2xl: 24px}@media(prefers-color-scheme:dark){:root{--bg: #0f1826;--surface: #16233b;--surface-muted: #1b2a45;--ink: #e6eefb;--dim: #9bb0cd;--accent: #5b93ee;--accent-hover: #7aa8f2;--accent-ink: #0f1826;--accent-soft: #182a47;--border: #294a75;--control-border: #6886ae;--danger: #fca5a5;--danger-bg: #2a1416;--danger-ink: #0f1826;--warn: #fbbf24;--warn-bg: #2a2110;--ok: #86efac;--ok-bg: #10241a;--focus: #93c5fd;--overlay: rgba(0, 0, 0, .6);--shadow-card: none;--shadow-dialog: 0 10px 30px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:var(--font-md)/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;font-variant-numeric:tabular-nums}h1,h2,h3{line-height:1.25}a{color:var(--accent)}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1[tabindex="-1"]:focus:not(:focus-visible),h2[tabindex="-1"]:focus:not(:focus-visible),main[tabindex="-1"]:focus:not(:focus-visible){outline:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--space-3);top:-48px;z-index:20;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none}.skip-link:focus{top:var(--space-3);color:var(--accent-ink)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--space-5)}.login-card{width:100%;max-width:380px;background:var(--surface);box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:var(--radius);padding:28px var(--space-5)}.brand{margin:0 0 var(--space-1);font-size:var(--font-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.login-card__title{margin:0 0 var(--space-1);font-size:var(--font-2xl);letter-spacing:-.01em}.brand-sub{margin:0 0 22px;color:var(--dim);font-size:var(--font-sm)}.field{margin-bottom:14px}.field label{display:block;font-size:var(--font-sm);color:var(--dim);margin-bottom:5px}.field-hint{margin:0 0 14px;color:var(--dim);font-size:var(--font-sm)}.input,select{width:100%;padding:9px 10px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:inherit}.input[readonly]{background:var(--surface-muted)}.input[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.input--rate{width:120px}.input--number{text-align:right;font-variant-numeric:tabular-nums}.field-problem{display:block;margin-top:var(--space-1);color:var(--danger);font-size:var(--font-xs)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 14px;font:inherit;font-weight:600;line-height:1.2;cursor:pointer;background:var(--accent);color:var(--accent-ink);text-decoration:none}.button:hover:not([disabled]){background:var(--accent-hover);color:var(--accent-ink)}.button:active:not([disabled]){transform:translateY(1px)}.button[disabled]{opacity:.55;cursor:not-allowed}.button--secondary{background:var(--surface);color:var(--accent);border-color:var(--control-border)}.button--secondary:hover:not([disabled]){background:var(--accent-soft);color:var(--accent)}.button--danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.button--danger:hover:not([disabled]){background:var(--danger-bg);color:var(--danger)}.button--danger-solid{background:var(--danger);color:var(--danger-ink)}.button--danger-solid:hover:not([disabled]){background:var(--danger);color:var(--danger-ink);filter:brightness(.92)}.button--block{width:100%;margin-top:6px}.notice{margin:var(--space-3) 0 0;padding:10px var(--space-3);border-radius:var(--radius-sm);font-size:14px;border:1px solid var(--border);border-left-width:4px}.notice--error{background:var(--danger-bg);color:var(--danger);border-left-color:var(--danger)}.notice--ok{background:var(--ok-bg);color:var(--ok);border-left-color:var(--ok)}.notice--info{background:var(--surface-muted);color:var(--ink);border-left-color:var(--accent)}.text-dim{color:var(--dim);font-size:var(--font-sm)}.state{padding:18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:14px 0}.state__title{margin:0;font-weight:600}.state__detail{margin:6px 0 0;color:var(--dim);font-size:14px}.state .button{margin-top:var(--space-3)}.state__detail .button{margin-top:var(--space-1)}.state--error{border-left:4px solid var(--danger)}.state--error .state__title{color:var(--danger)}.state--loading{color:var(--dim);display:flex;align-items:center;gap:10px}.state--loading:before{content:"";width:14px;height:14px;flex:none;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.state--loading:before{animation:none}.button:active:not([disabled]){transform:none}}.stale-view--stale,.report--stale{outline:2px dashed var(--control-border);outline-offset:4px;border-radius:var(--radius)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:var(--space-3) 20px;display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.app-header .brand{font-size:var(--font-lg);margin:0;text-transform:none;letter-spacing:-.01em}.brand__link{color:var(--ink);text-decoration:none}.brand__link:hover{color:var(--accent)}.app-header__spacer{flex:1 1 auto}.identity{text-align:right;font-size:var(--font-sm);line-height:1.3;display:grid}.identity__name{font-weight:600}.identity__roles{color:var(--dim)}.app-shell__body{display:flex;flex:1 1 auto;align-items:flex-start}.sidebar{width:200px;flex:none;padding:var(--space-4) var(--space-3);border-right:1px solid var(--border);background:var(--surface);min-height:calc(100vh - 57px)}.sidebar__list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.sidebar__link{display:block;padding:var(--space-2) 10px;border-radius:var(--radius-sm);color:var(--ink);text-decoration:none;font-weight:500}.sidebar__link:hover{background:var(--surface-muted);color:var(--ink)}.sidebar__link--active{background:var(--accent-soft);color:var(--accent);font-weight:600}.app-shell__main{flex:1 1 auto;min-width:0;padding:22px;max-width:1180px}.page{display:block}.page-header{display:flex;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.page-header__text{min-width:0;flex:1 1 320px}.page-header__back{margin:0 0 var(--space-1);font-size:var(--font-sm)}.page-header__title{margin:0;font-size:var(--font-2xl);letter-spacing:-.01em;overflow-wrap:anywhere}.page-header__description{margin:var(--space-1) 0 0;color:var(--dim);font-size:14px}.page-header__actions{margin-left:auto;display:flex;gap:var(--space-2);flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:var(--radius);padding:18px;margin-bottom:18px}.card h2{margin:0 0 14px;font-size:var(--font-lg)}.section-heading{font-size:var(--font-lg);margin:22px 0 10px}.filters{display:flex;gap:var(--space-3);margin-bottom:14px;flex-wrap:wrap;align-items:end}.filters__field{display:grid;gap:var(--space-1);font-size:var(--font-sm);color:var(--dim)}.filters__field select,.filters__field .input{min-width:160px}.filters__button{align-self:end}.table-wrap{overflow-x:auto;background:var(--surface);box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-3)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:9px var(--space-3);border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:last-child>*{border-bottom:0}.table thead th{font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--dim);background:var(--surface-muted);white-space:nowrap}.table tbody tr:hover>*{background:var(--surface-muted)}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.table .row--selected>*{background:var(--accent-soft)}.actions{display:inline-flex;gap:6px;flex-wrap:wrap}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:0}.field-pair dt{font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--dim)}.field-pair dd{margin:var(--space-1) 0 0;font-size:16px;font-weight:500}.form-row{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:var(--space-3);align-items:end}.form-row__field label{display:block;font-size:var(--font-sm);color:var(--dim);margin-bottom:5px}.form-row__wide{grid-column:1 / -1;margin:0}.inline-form{margin-top:var(--space-4);max-width:560px}.inline-form label{display:block;font-size:var(--font-sm);color:var(--dim);margin-bottom:5px}.inline-form__row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.inline-form__row .input{flex:1 1 260px;width:auto}.chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.chip{padding:2px var(--space-2);border-radius:999px;font-size:var(--font-xs);border:1px solid var(--border);background:var(--surface-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pagination{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}.pagination__summary{margin:0;color:var(--dim);font-size:14px}.pagination__controls{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pagination__size{display:flex;align-items:center;gap:6px;font-size:var(--font-sm);color:var(--dim)}.pagination__size select{width:auto}.pagination__page{font-size:14px}.badge{display:inline-block;padding:2px var(--space-2);border-radius:999px;font-size:var(--font-xs);font-weight:600;border:1px solid var(--border);background:var(--surface-muted);color:var(--ink);white-space:nowrap}.badge--positive{color:var(--ok);background:var(--ok-bg);border-color:var(--ok)}.badge--warning{color:var(--warn);background:var(--warn-bg);border-color:var(--warn)}.badge--danger{color:var(--danger);background:var(--danger-bg);border-color:var(--danger)}.badge--neutral{color:var(--dim)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:var(--overlay);display:grid;place-items:center;padding:20px}.dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;max-width:440px;width:100%;box-shadow:var(--shadow-dialog)}.dialog__title{margin:0 0 var(--space-2);font-size:var(--font-lg)}.dialog__body{margin:0 0 var(--space-4);color:var(--dim)}.dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.intake-section{margin-top:18px}.intake-section>h2{margin:0 0 10px;font-size:var(--font-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}.dropzone{position:relative;display:grid;gap:var(--space-2);justify-items:center;padding:26px 18px;border:2px dashed var(--control-border);border-radius:var(--radius);background:var(--surface);text-align:center;color:var(--dim)}.dropzone--active{border-color:var(--accent);background:var(--surface-muted)}.dropzone__hint{margin:0;font-size:var(--font-sm)}.dropzone input[type=file]{position:absolute;width:1px;height:1px;opacity:0}.dropzone label:focus-within{outline:3px solid var(--focus);outline-offset:2px}.queue-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:var(--space-3);align-items:center}.toolbar{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:end;margin:var(--space-3) 0}.toolbar__field{display:grid;gap:var(--space-1);font-size:var(--font-sm);color:var(--dim)}.toolbar__check{display:flex;gap:6px;align-items:center;font-size:var(--font-sm);color:var(--dim)}.toolbar__button{align-self:end}.summary-line{margin:var(--space-2) 0;font-size:14px;color:var(--dim)}.summary-line:focus{outline:2px solid var(--focus);outline-offset:2px}.viewer{margin-top:var(--space-3)}.viewer__frame{width:100%;height:70vh;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.viewer__actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:var(--space-2)}.viewer__actions h2{margin:0;flex:1 1 240px;font-size:var(--font-lg);overflow-wrap:anywhere}.button.button--link{text-decoration:none}.rescan-confirm{margin:var(--space-3) 0;padding:14px var(--space-4);border-radius:var(--radius);background:var(--warn-bg);border:1px solid var(--warn);border-left-width:4px;color:var(--ink)}.rescan-confirm:focus{outline:3px solid var(--focus);outline-offset:2px}.rescan-confirm__title{margin:0 0 var(--space-2);font-size:var(--font-md)}.rescan-confirm__list{max-height:12em;overflow:auto;margin:var(--space-2) 0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-3);margin:0 0 18px}.stat{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:var(--radius);padding:14px var(--space-4);display:grid;gap:2px;align-content:start}.stat__label{font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--dim)}.stat__value{margin:0;font-size:22px;font-weight:650;line-height:1.2;overflow-wrap:anywhere}.stat__value--danger{color:var(--danger)}.stat__value--ok{color:var(--ok)}.stat__value--dim{color:var(--dim);font-weight:500;font-size:18px}.stat__detail{margin:0;font-size:var(--font-sm);color:var(--dim)}.bars__legend{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin:0 0 var(--space-3);font-size:var(--font-sm);align-items:center}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}.swatch--projected,.bars__fill--projected{background:var(--dim)}.swatch--actual,.bars__fill--actual{background:var(--accent)}.swatch--over,.bars__fill--over{background:var(--danger)}.bars{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}.bars__item{display:grid;grid-template-columns:minmax(120px,1fr) 3fr;gap:var(--space-1) var(--space-3);align-items:center}.bars__name{grid-row:span 2;font-weight:500;overflow-wrap:anywhere}.bars__pair{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.bars__track{display:block;height:10px;background:var(--bg);border-radius:999px;border:1px solid var(--border);overflow:hidden}.bars__fill{display:block;height:100%;border-radius:999px}.bars__value{font-size:var(--font-sm);color:var(--dim);white-space:nowrap}.bars__variance{color:var(--dim)}.over-budget{margin:0;padding-left:22px;display:grid;gap:var(--space-2)}.over-budget__item{padding-left:var(--space-1)}.over-budget__row{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}.over-budget__figures{font-size:14px}.card .actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:0}.num--over{color:var(--danger);font-weight:600}.report-form{margin-bottom:var(--space-4)}.report-form__actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:var(--space-1)}.report{padding:22px}.report__header{border-bottom:1px solid var(--border);padding-bottom:var(--space-3);margin-bottom:var(--space-2)}.report__brand{margin:0;font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}.report__title{margin:2px 0 var(--space-1);font-size:var(--font-xl);overflow-wrap:anywhere}.report__meta{margin:0;color:var(--dim);font-size:var(--font-sm)}.report__identity{display:flex;gap:var(--space-5);flex-wrap:wrap;margin:10px 0 0;font-size:14px}.report__identity dt{display:inline;color:var(--dim);margin-right:6px}.report__identity dd{display:inline;margin:0;font-weight:600}.report-table tbody th{font-weight:500;text-transform:none;letter-spacing:0;font-size:inherit;color:var(--ink);background:none}.report-table tfoot th,.report-table tfoot td{font-weight:700;border-top:2px solid var(--border);color:var(--ink);text-transform:none;letter-spacing:0;font-size:inherit}.settings-grid{display:grid;gap:0;max-width:760px}.settings-form label{display:block;font-size:var(--font-sm);color:var(--dim);margin-bottom:5px}.settings-form__row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.settings-form__row .input{flex:1 1 260px}.settings-form__row .input--rate{flex:0 1 140px}.settings-example{margin:var(--space-3) 0 var(--space-1);font-variant-numeric:tabular-nums}@media(max-width:720px){.app-header{padding:10px var(--space-4)}.app-shell__body{flex-direction:column;align-items:stretch}.sidebar{width:100%;min-height:0;padding:var(--space-2) var(--space-4);border-right:0;border-bottom:1px solid var(--border);overflow-x:auto}.sidebar__list{display:flex;gap:var(--space-1);white-space:nowrap}.app-shell__main{width:100%;padding:var(--space-4)}.form-row{grid-template-columns:1fr}.form-row__submit .button{width:100%}.pagination__controls,.page-header__actions{margin-left:0}.settings-form__row .button,.inline-form__row .button{flex:1 1 100%}}@media(max-width:640px){.bars__item{grid-template-columns:1fr}.bars__name{grid-row:auto}.bars__pair{grid-template-columns:1fr;gap:var(--space-1)}.bars__value{white-space:normal}}@media print{.sidebar,.app-header,.skip-link,.report-form,.report-export-notice{display:none}.app-shell__main{padding:0;max-width:none}.report{border:0;padding:0;box-shadow:none}}
