a.primary{display:inline-flex;align-items:center;justify-content:center;height:var(--control-h);padding:0 14px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-weight:500;text-decoration:none}a.primary:hover{background:var(--accent-hover)}.radio-group{display:flex;gap:20px;margin-bottom:14px}.radio-group label{font-weight:400;color:var(--text);margin-left:6px}.upload-file-list{list-style:none;margin:12px 0;padding:0;display:flex;flex-direction:column;gap:8px}.upload-file-list>li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel-2)}.upload-file-list .file-name{font-weight:500}.upload-file-list .hint-box{flex-basis:100%}.row-actions{flex-wrap:wrap}.row-more summary{cursor:pointer;color:var(--muted);list-style:none}.row-more summary::-webkit-details-marker{display:none}.row-more-menu{display:flex;gap:12px;margin-top:6px}.recent-clients{display:flex;flex-wrap:wrap;gap:8px 16px;list-style:none;margin:0 0 20px;padding:0}.client-card+.client-card{margin-top:16px}.activity-list{list-style:none;padding:0;margin:8px 0}.activity-list li{padding:8px 0;border-bottom:1px solid var(--border);font-size:.9rem}.activity-list li:last-child{border-bottom:none}.assignee-field{display:inline-flex;align-items:center;gap:6px}.assignee-field label{margin:0}.period-edit{display:inline-flex}.period-edit input[type=month]{min-width:130px}.tally-panel{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.tally-panel .direction-radios{display:flex;gap:16px;margin:8px 0 12px}.tally-panel .direction-radios label{display:inline-flex;align-items:center;gap:6px;font-weight:400;color:var(--text)}.export-panel .last-exported{color:var(--muted);font-size:.85rem}.row-selectable:focus-visible,.field-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}:root{color-scheme:light;--bg: #f4f6f9;--panel: #ffffff;--panel-2: #f9fafb;--border: #e3e7ee;--border-strong: #7f8a9d;--text: #111827;--muted: #5b6472;--accent: #2f5fdb;--accent-hover: #2450c0;--accent-soft: #e8eefc;--ring: rgba(47, 95, 219, .28);--danger: #b42318;--danger-bg: #fee4e2;--ok-fg: #0f6b3a;--ok-bg: #dcfce7;--warn-fg: #8a5a00;--warn-bg: #fdf0d5;--info-fg: #1d4ed8;--info-bg: #dbeafe;--gray-fg: #475467;--gray-bg: #eaecf0;--radius: 10px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);--control-h: 36px;--t: .15s ease}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0 0 12px;font-weight:600;letter-spacing:-.01em;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.125rem;margin-top:28px}h3{font-size:1rem;margin-top:20px}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.page{max-width:1200px;margin:0 auto;padding:24px 24px 72px}.centered-page{max-width:400px;margin:10vh auto;padding:0 20px}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;height:56px;background:#ffffffeb;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border)}.topbar-title{display:flex;align-items:center;gap:12px;min-width:0}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--text);text-decoration:none;letter-spacing:-.01em}.brand-mark{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--accent),#6d8ff0);flex:none}.crumbs{display:flex;align-items:center;flex-wrap:wrap;list-style:none;margin:0;padding:0;color:var(--muted);min-width:0}.crumbs li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40vw}.crumbs li:has(a){overflow:visible}.crumbs li+li:before{content:"";display:inline-block;width:1px;height:.9em;margin:0 10px -.1em;background:var(--border-strong);transform:rotate(20deg)}.crumbs a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;color:var(--muted);text-decoration:none;padding:4px 6px;margin:-4px -6px;border-radius:6px;transition:background var(--t),color var(--t)}.crumbs a:hover{background:var(--gray-bg);color:var(--text)}.crumbs li[aria-current=page]{color:var(--text);font-weight:500}.firm-select{max-width:220px}.topbar-nav{display:flex;gap:4px;align-items:center}.topbar-nav a,.topbar-nav .link-button{color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:6px;transition:background var(--t),color var(--t)}.topbar-nav a:hover,.topbar-nav .link-button:hover{background:var(--gray-bg);color:var(--text)}.topbar-nav a[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:500}button,input,select{font:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--control-h);padding:0 14px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--t),border-color var(--t),color var(--t),box-shadow var(--t)}button:hover{background:var(--panel-2);border-color:var(--text)}button:active{transform:translateY(.5px)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{border-color:var(--danger);color:var(--danger)}button.danger:hover{background:var(--danger-bg)}button.small{height:28px;padding:0 10px;font-size:.85rem}button:disabled{opacity:.5;cursor:not-allowed;transform:none}.link-button{height:auto;background:none;border:none;color:var(--accent);font-weight:500;padding:4px 6px;margin:-4px -6px;border-radius:6px}.link-button:hover{background:var(--accent-soft);border:none}input:not([type=checkbox]),select{height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 10px;background:var(--panel);color:var(--text);min-width:0;transition:border-color var(--t),box-shadow var(--t)}input[type=file]{padding:6px 10px}input:not([type=checkbox]):focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}form .field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}label{font-size:.85rem;font-weight:500;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));column-gap:16px}.error-banner{display:flex;gap:8px;align-items:flex-start;background:var(--danger-bg);color:var(--danger);border:1px solid rgba(180,35,24,.35);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:12px;font-size:.9rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:20px}.card>:first-child{margin-top:0}.toolbar{display:flex;gap:8px;align-items:center;margin:12px 0;flex-wrap:wrap}.toolbar .spacer{flex:1}.hint-box{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:.85rem;color:var(--text);margin:8px 0}.hint-box>div+div{margin-top:2px;color:var(--muted)}.muted{color:var(--muted)}.empty{padding:28px 20px;text-align:center;color:var(--muted);background:var(--panel);border:1px dashed var(--border-strong);border-radius:var(--radius)}.forbidden{padding:40px 0;text-align:center;color:var(--danger)}.table-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:20px}table{width:100%;border-collapse:collapse;background:var(--panel)}th,td{border-bottom:1px solid var(--border);text-align:left;padding:9px 10px;vertical-align:top}tbody tr:last-child td{border-bottom:none}th{background:var(--panel-2);color:var(--muted);font-weight:600;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}tbody tr{transition:background var(--t)}tbody tr:hover{background:var(--panel-2)}.num,th.num,td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}tr.row-flagged{background:var(--warn-bg)}tr.row-flagged:hover{background:#fbe8bd}tr.row-selectable{cursor:pointer}tr.row-selectable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}tr.row-selected td:first-child{box-shadow:inset 3px 0 0 var(--accent)}tr.row-explain,tr.row-explain:hover{background:var(--accent-soft)}tr.row-explain td{cursor:default;color:var(--text);font-size:.9rem}tr.row-explain p{margin:4px 0}.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600;line-height:1.4;white-space:nowrap}.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}.chip-value{background:var(--ok-bg);color:var(--ok-fg)}.chip-not_visible{background:var(--gray-bg);color:var(--gray-fg)}.chip-flagged{background:var(--warn-bg);color:var(--warn-fg)}.chip-queued{background:var(--gray-bg);color:var(--gray-fg)}.chip-running{background:var(--info-bg);color:var(--info-fg)}.chip-done{background:var(--ok-bg);color:var(--ok-fg)}.chip-failed{background:var(--danger-bg);color:var(--danger)}.chip-needs_password{background:var(--warn-bg);color:var(--warn-fg)}.chip-cancelled,.chip-purged{background:var(--gray-bg);color:var(--gray-fg)}.chip-running:before{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.2}}@media(prefers-reduced-motion:reduce){.chip-running:before{animation:none}}.list-card{padding:0;overflow:hidden}.list-card a{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;color:var(--text);text-decoration:none;border-bottom:1px solid var(--border);transition:background var(--t)}.list-card a:last-child{border-bottom:none}.list-card a:hover{background:var(--panel-2);color:var(--accent)}.list-card a:after{content:"";width:8px;height:8px;border-right:2px solid var(--border-strong);border-bottom:2px solid var(--border-strong);transform:rotate(-45deg);flex:none}.summary-strip{display:flex;gap:24px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 18px;margin:12px 0 16px;font-size:.85rem;color:var(--muted)}.summary-strip strong{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.two-pane{display:flex;gap:20px;align-items:flex-start}.two-pane .photo-pane{flex:0 0 340px;position:sticky;top:72px}.two-pane .photo-pane .pane-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.85rem;color:var(--muted)}.two-pane .photo-pane img{max-width:100%;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--panel)}.two-pane .photo-pane object{display:block;width:100%;height:calc(100vh - 120px);min-height:420px;border:1px solid var(--border);border-radius:var(--radius);background:var(--gray-bg)}.two-pane .fields-pane{flex:1;min-width:0}@media(max-width:900px){.two-pane{flex-direction:column}.two-pane .photo-pane{flex:none;position:static;width:100%}.two-pane .photo-pane object{height:60vh}}.field-row{display:grid;grid-template-columns:160px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.field-row .field-name{color:var(--muted);font-size:.85rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.field-row .field-value{overflow-wrap:anywhere}.field-row .field-source{color:var(--muted);font-size:.75rem}@media(max-width:640px){.field-row{grid-template-columns:1fr auto}.field-row .field-name{grid-column:1 / -1;padding-top:4px}}.inline-edit{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.inline-edit input{height:30px}.corrected-badge{font-size:.72rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 7px;margin-left:6px}.save-error{font-size:.8rem;color:var(--danger);margin-left:6px}td.cell-value{box-shadow:inset 3px 0 0 var(--ok-fg)}td.cell-not_visible{box-shadow:inset 3px 0 0 var(--border-strong)}td.cell-flagged{box-shadow:inset 3px 0 0 var(--warn-fg);background:var(--warn-bg)}td.num .cell-actions{justify-content:flex-end}td .cell-actions{display:flex;gap:8px;margin-top:4px;font-size:.8rem}pre.json{background:#0f172a;color:#e2e8f0;border-radius:var(--radius);padding:16px;overflow:auto;font-size:.8rem;max-height:60vh}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto}.tab{height:auto;border:none;background:none;border-radius:0;padding:10px 14px;margin-bottom:-1px;color:var(--muted);font-weight:500;border-bottom:2px solid transparent}.tab:hover{background:none;color:var(--text);border-color:var(--border-strong)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}td .edit-affordance{opacity:.15;margin-left:6px}tr:hover .edit-affordance,tr:focus-within .edit-affordance,.field-row:hover .edit-affordance,.field-row:focus-within .edit-affordance{opacity:1}td.nowrap{white-space:nowrap}.corrections-audit{margin:20px 0}.corrections-audit summary{cursor:pointer;font-weight:600;padding:6px 0}.corrections-audit .table-wrap{margin-top:10px}.validation-list{list-style:none;margin:8px 0 20px;padding:0}.validation-list li{padding:4px 0;font-size:.85rem}.validation-list code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}tr.row-insert-form td{background:var(--accent-soft);padding:8px 10px}tr.row-insert-form input{width:100%;min-width:80px}.nav-menu summary{min-height:var(--control-h);display:flex;align-items:center;padding:0 10px;cursor:pointer;border-radius:6px;color:var(--muted);font-weight:500;list-style:none}.nav-menu summary::-webkit-details-marker{display:none}.nav-menu summary:hover{background:var(--gray-bg);color:var(--text)}@media(min-width:901px){.nav-menu summary{display:none}}@media(max-width:900px){.topbar{height:auto;min-height:56px;padding:8px 16px;align-items:flex-start;flex-wrap:wrap}.topbar-title{flex-wrap:wrap;row-gap:4px}.nav-menu{width:100%}.nav-menu[open] summary{margin-bottom:4px}.topbar-nav{flex-direction:column;align-items:stretch;padding-bottom:8px}.topbar-nav a,.topbar-nav .link-button{padding:10px 12px;margin:0;text-align:left}}@media(pointer:coarse){:root{--control-h: 44px}}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:12px 0 24px}.stat{display:flex;flex-direction:column;gap:2px;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);text-decoration:none;transition:border-color var(--t),background var(--t)}.stat:hover{border-color:var(--border-strong);background:var(--panel-2)}.stat:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stat .stat-value{font-size:1.6rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.2}.stat .stat-label{font-size:.85rem;color:var(--muted)}.stat.tone-warn .stat-value{color:var(--warn-fg)}.stat.tone-ok .stat-value{color:var(--ok-fg)}.stat.tone-danger .stat-value{color:var(--danger)}.stat.tone-info .stat-value{color:var(--info-fg)}.issue-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--warn-bg);color:var(--warn-fg);border:1px solid rgba(138,90,0,.3);border-radius:var(--radius-sm);padding:10px 14px;margin:12px 0 16px;font-weight:500}.issue-bar .spacer{flex:1}.filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 16px;margin:12px 0 16px}.filters .field{display:flex;flex-direction:column;gap:4px;margin:0}.filters input,.filters select{min-width:140px}.dropzone{display:flex;align-items:center;justify-content:center;min-height:120px;padding:20px;border:2px dashed var(--border-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--muted);font-size:.95rem;font-weight:500;text-align:center;cursor:pointer;transition:border-color var(--t),background var(--t)}.dropzone:hover,.dropzone.is-over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropzone:focus-within{outline:2px solid var(--accent);outline-offset:2px}.toast-region{position:fixed;right:20px;bottom:20px;z-index:30;max-width:min(360px,calc(100vw - 40px));padding:10px 14px;background:var(--text);color:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow);font-size:.9rem;opacity:0;pointer-events:none;transition:opacity var(--t)}.toast-region.is-visible{opacity:1}@media(prefers-reduced-motion:reduce){.toast-region{transition:none}}.chip-attention,.chip-warn{background:var(--warn-bg);color:var(--warn-fg)}.chip-ready,.chip-info{background:var(--info-bg);color:var(--info-fg)}.chip-reviewed,.chip-ok{background:var(--ok-bg);color:var(--ok-fg)}.chip-changed{background:var(--warn-bg);color:var(--warn-fg)}.chip-waiting,.chip-muted{background:var(--gray-bg);color:var(--gray-fg)}.chip-processing{background:var(--info-bg);color:var(--info-fg)}.chip-danger{background:var(--danger-bg);color:var(--danger)}.chip-processing:before{animation:pulse 1.2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.chip-processing:before{animation:none}}.chip-owner{background:var(--accent-soft);color:var(--accent)}.chip-reviewer{background:var(--info-bg);color:var(--info-fg)}.chip-staff,.chip-member{background:var(--gray-bg);color:var(--gray-fg)}.tech-details{margin:20px 0}.tech-details summary{cursor:pointer;color:var(--muted);font-size:.9rem;font-weight:500;padding:6px 0}.tech-details dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:8px 0;font-size:.85rem}.tech-details dt{color:var(--muted)}.tech-details dd{margin:0;overflow-wrap:anywhere}.review-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.export-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 20px;margin:16px 0}.export-panel p{margin:6px 0}.roster{list-style:none;padding:0;margin:8px 0;display:flex;flex-wrap:wrap;gap:8px 16px}.roster-item{display:inline-flex;align-items:center;gap:8px;font-size:.9rem}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
