@font-face{font-family:Manrope;src:url('/fonts/manrope-latin-variable.woff2') format('woff2');font-style:normal;font-weight:400 800;font-display:swap}
@font-face{font-family:'Source Serif 4';src:url('/fonts/source-serif-4-latin-variable.woff2') format('woff2');font-style:normal;font-weight:400 700;font-display:swap}
/* Intake's short names are aliases of the shared Katilix tokens rather than their own palette. Every
   value comes from packages/design-system/tokens.css (served as /tokens.css); nothing here restates a
   brand colour, so changing the design system changes Intake. */
:root{--ink:var(--katilix-ink);--muted:var(--katilix-muted);--paper:var(--katilix-paper);--panel:var(--katilix-panel);--line:var(--katilix-line);--brand:var(--katilix-brand);--brand2:var(--katilix-brand-secondary);--soft:var(--katilix-soft);--danger:var(--katilix-danger);--warn:var(--katilix-warning);--shadow:var(--katilix-shadow-elevated);--font-ui:var(--katilix-font-ui);--font-editorial:var(--katilix-font-editorial);font-family:var(--font-ui)}
body,button,input,select,textarea{font-family:var(--font-ui)}
.training-shell{--lab:var(--katilix-lab);--lab-panel:var(--katilix-lab-panel);--lab-line:var(--katilix-lab-line);--lab-accent:var(--katilix-lab-accent);background:var(--katilix-lab)}.training-shell .sidebar{background:#11151a;border-right:1px solid #343b43}.training-shell .content{max-width:none;color:#f6f2eb;background:radial-gradient(circle at 85% 0,rgba(110,31,42,.28),transparent 28%),linear-gradient(145deg,#1b2026,#20262d);min-height:100vh}.training-shell .card{color:#f6f2eb;background:#252b32;border-color:#3a434c;box-shadow:0 18px 45px rgba(0,0,0,.2)}.training-shell .muted{color:#adb4ba}.training-shell .table th{color:#9da6ad;border-color:#3a434c}.training-shell .table td{border-color:#343c44}.training-shell .badge{color:#e9e2d9;background:#343c44}.training-shell .badge.approved{color:#9ed1ac;background:#244333}.training-shell .badge.pending{color:#ecd19d;background:#4b3c23}.training-hero{display:flex;align-items:end;justify-content:space-between;gap:28px;padding:32px;border:1px solid #424b54;border-radius:18px;background:linear-gradient(120deg,rgba(110,31,42,.9),rgba(43,35,39,.92) 45%,rgba(31,38,45,.95));box-shadow:0 24px 60px rgba(0,0,0,.24)}.training-hero h1{margin:7px 0 8px;font:600 clamp(38px,5vw,64px)/1 var(--font-editorial)}.training-hero p{max-width:720px;margin:0;color:#d6d1cc}.training-kicker{text-transform:uppercase;letter-spacing:.16em;font-size:10px;font-weight:800;color:#d8c7b4}.training-domain{display:grid;gap:4px;min-width:260px;padding:15px 18px;border:1px solid rgba(255,255,255,.17);border-radius:12px;background:rgba(13,17,21,.35)}.training-domain span{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#b9b4af}.training-domain strong{font-size:13px}.lab-status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.lab-status-grid article{display:grid;gap:5px;padding:18px;border:1px solid var(--lab-line);border-radius:13px;background:var(--lab-panel)}.lab-status-grid span,.lab-status-grid small{color:#aeb6bd;font-size:11px}.lab-status-grid strong{font:600 26px var(--font-editorial)}.lab-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(360px,.8fr);gap:18px}.lab-side{display:grid;gap:18px;align-content:start}.lab-panel{padding:22px;border:1px solid var(--lab-line);border-radius:15px;background:var(--lab-panel);box-shadow:0 16px 42px rgba(0,0,0,.16)}.lab-panel-head{display:flex;align-items:start;justify-content:space-between;gap:18px;margin-bottom:18px}.lab-panel h2{margin:5px 0 4px;font-family:var(--font-editorial)}.lab-panel p{margin:0;color:#aeb6bd;font-size:12px;line-height:1.5}.lab-empty{display:grid;gap:6px;padding:28px;border:1px dashed #4a555f;border-radius:11px;text-align:center;color:#abb3ba}.lab-empty.compact{padding:20px}.lab-release{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--lab-line);font-size:12px}.lab-release:last-child{border:0}.lab-release>div{display:grid;gap:3px}.lab-release>div:last-child{text-align:right}.lab-release span,.model-list span{color:#aeb6bd}.model-list{display:grid;gap:10px}.model-list article{padding:15px;border:1px solid var(--lab-line);border-radius:10px;background:#20262d}.model-list article>div{display:flex;justify-content:space-between;gap:12px}.model-list dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:13px 0 0}.model-list dl div{display:grid;gap:2px}.model-list dt{color:#9099a1;font-size:9px;text-transform:uppercase}.model-list dd{margin:0;font-size:12px}@media(max-width:1050px){.lab-status-grid{grid-template-columns:repeat(2,1fr)}.lab-layout{grid-template-columns:1fr}}@media(max-width:650px){.training-hero{align-items:start;flex-direction:column;padding:24px}.training-domain{min-width:0;width:100%}.lab-status-grid{grid-template-columns:1fr 1fr}.lab-panel-head{flex-direction:column}.model-list dl{grid-template-columns:1fr}}
.passkey-choices{display:grid;gap:10px;margin:20px 0}.passkey-choice{display:grid;gap:5px;width:100%;padding:15px;text-align:left;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:11px}.passkey-choice:hover{border-color:var(--brand);box-shadow:0 0 0 3px rgba(110,31,42,.09)}.passkey-choice.featured{background:var(--soft);border-color:#bbaea2}.passkey-choice strong{font-size:14px}.passkey-choice span{color:var(--muted);font-size:12px;line-height:1.45}
.login-panel h1,.page-head h1,.login-art h2,dialog h2,.stat strong,.card h2,.card h3{font-family:var(--font-editorial)}
.login-art{background:linear-gradient(145deg,rgba(34,39,46,.96),rgba(110,31,42,.82)),radial-gradient(circle at 70% 25%,#A49688 0 2%,transparent 2.5%),#22272E}
.brand{display:flex;align-items:center}.brand.logo-tile{position:relative;overflow:hidden;background:#F8F6F2;border:1px solid rgba(164,150,136,.35);border-radius:10px;isolation:isolate}.brand.logo-tile img{position:absolute;display:block;max-width:none;mix-blend-mode:multiply}.brand.logo-tile.landscape{width:224px;height:96px}.brand.logo-tile.landscape img{width:212px;height:212px;left:6px;top:-58px}.brand.logo-tile.portrait{width:200px;height:200px}.brand.logo-tile.portrait img{width:188px;height:188px;inset:6px}.login-panel .brand{padding:0;width:200px}
.eyebrow{color:#6E1F2A}.login-art .eyebrow{color:#E7E5E2}
.field input:focus,.field select:focus,.field textarea:focus,.inline-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(110,31,42,.1)}
.button.secondary{background:var(--brand2);border-color:var(--brand2);color:#22272E}
.shell{grid-template-columns:264px 1fr}.sidebar{background:#22272E;color:#F8F6F2}.sidebar .brand{padding:0;margin:0 4px 14px}.environment{margin:0 4px 22px;padding:7px 9px;border:1px solid rgba(231,229,226,.18);border-radius:7px;color:#E7E5E2;font-size:10px;text-transform:uppercase;letter-spacing:.1em}
.nav button{color:#c9c8c6}.role{color:#d6c7ba}.user-card small{display:block;color:#A49688;margin-top:8px}
.sidebar-account-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.sidebar-account-actions .button{margin:0!important;color:#fff}
.badge.approved{background:#e8f1eb;color:#276342}.badge.pending{background:#f5eadf;color:#77552f}.badge.rejected{background:#f8e7e5;color:var(--danger)}
.flag.success{background:#e8f1eb;border-color:#43825b}.toast{background:#22272E}dialog::backdrop{background:rgba(34,39,46,.55)}
.security-note{margin-top:28px;padding:16px;border-left:3px solid var(--brand);background:var(--soft);font-size:13px;line-height:1.55}.release{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line)}.release:last-child{border:0}
@media(max-width:600px){.brand.logo-tile.landscape{width:112px;height:112px}.brand.logo-tile.landscape img{content:url('/media/Katilix%20Intake%20Logo%20Portrait.png');width:112px;height:112px;inset:0}}

/* Full-screen Katilix access experience */
.login-page{position:relative;isolation:isolate;display:grid;grid-template-columns:1fr;place-items:center;min-height:100svh;padding:clamp(132px,17vh,184px) 24px 92px;overflow:hidden;background:#171b20 url('/media/phoenix-camelback-dusk.jpg') center 58%/cover no-repeat fixed}
.login-page::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(23,27,32,.66) 0%,rgba(34,27,29,.62) 48%,rgba(10,13,17,.9) 100%)}
.login-page::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 50% 43%,transparent 0 18%,rgba(9,12,16,.14) 55%,rgba(7,9,12,.58) 100%),linear-gradient(90deg,rgba(34,39,46,.26),transparent 35% 65%,rgba(110,31,42,.18))}
.login-panel{position:relative;z-index:2;display:block;width:100%;max-width:448px;min-width:0;padding:36px 34px 30px;color:#F8F6F2;background:linear-gradient(145deg,rgba(25,24,28,.93),rgba(31,19,23,.88));border:1px solid rgba(231,229,226,.2);border-radius:16px;box-shadow:0 32px 90px rgba(3,5,8,.52),inset 0 1px 0 rgba(255,255,255,.05);backdrop-filter:blur(18px) saturate(115%);-webkit-backdrop-filter:blur(18px) saturate(115%)}
.login-panel .brand.logo-tile.landscape{position:absolute;top:-122px;left:50%;width:252px;height:106px;margin:0;transform:translateX(-50%);border-color:rgba(248,246,242,.7);border-radius:15px;box-shadow:0 18px 50px rgba(5,7,10,.35)}
.login-panel .brand.logo-tile.landscape img{width:238px;height:238px;left:7px;top:-65px}
.login-panel>.eyebrow{display:block;margin-top:0!important;color:#d8b8bd;letter-spacing:.18em}
.login-panel h1{margin:14px 0 8px;font-family:var(--font-ui);font-size:clamp(28px,4vw,34px);font-weight:650;letter-spacing:-.025em;color:#fff}
.login-panel .muted{color:#cbc8c7;line-height:1.55}.login-panel .form-stack{gap:15px;margin-top:28px}.login-panel .field{color:#F8F6F2;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.login-panel .form-stack,.login-panel .field,.login-panel .field input{min-width:0;width:100%}.login-panel .field input{min-height:52px;padding:13px 14px;color:#fff;background:rgba(8,11,15,.66);border-color:rgba(231,229,226,.27);border-radius:10px;text-transform:none;letter-spacing:normal}.login-panel .field input:focus{border-color:#A49688;box-shadow:0 0 0 3px rgba(164,150,136,.2)}
.login-panel .button{min-height:52px;border-radius:10px;background:#7b2432;border-color:#9b4350;box-shadow:0 10px 26px rgba(110,31,42,.25)}.login-panel .button:hover{background:#8b2b3a;filter:none}.login-panel .button.ghost{color:#F8F6F2;background:rgba(248,246,242,.04);border-color:rgba(231,229,226,.27);box-shadow:none}.login-panel .button.ghost:hover{background:rgba(248,246,242,.09)}
.login-panel .divider{color:#aaa5a3}.login-panel .divider::before,.login-panel .divider::after{background:rgba(231,229,226,.18)}
.login-identity{display:flex;align-items:center;gap:9px;overflow-wrap:anywhere}.text-button{padding:0;color:#d8b8bd;background:none;border:0;font-size:12px;font-weight:800;text-decoration:underline;text-underline-offset:3px}.text-button:hover{color:#fff}
.login-art{position:absolute;z-index:2;right:auto;bottom:24px;left:50%;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:12px;width:max-content;max-width:calc(100% - 32px);padding:10px 18px;color:#22272E;background:rgba(248,246,242,.92);border:1px solid rgba(255,255,255,.6);border-radius:999px;box-shadow:0 12px 40px rgba(4,6,9,.28);backdrop-filter:blur(12px);transform:translateX(-50%)}
.login-art .eyebrow{color:#6E1F2A;white-space:nowrap}.login-art h2{margin:0;font-family:var(--font-ui);font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap}
@media(max-width:600px){.login-page{padding:124px 16px 34px;background-attachment:scroll}.login-panel{padding:30px 22px 24px}.login-panel .brand.logo-tile.landscape{top:-104px;width:174px;height:88px}.login-panel .brand.logo-tile.landscape img{content:url('/media/Katilix%20Intake%20Logo%20Landscape.png');width:164px;height:164px;inset:auto;left:5px;top:-42px}.login-art{display:none}}
@media(prefers-reduced-transparency:reduce){.login-panel{background:#211b1f;backdrop-filter:none}.login-art{background:#F8F6F2;backdrop-filter:none}}

/* Guided configuration workspace */
.config-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px;align-items:start}.config-jump{position:sticky;top:24px;display:grid;gap:5px;padding:16px}.config-jump strong{padding:8px;font-size:12px;text-transform:uppercase;letter-spacing:.09em}.config-jump a{padding:9px 10px;border-radius:7px;color:var(--muted);text-decoration:none;font-size:13px;font-weight:700}.config-jump a:hover{color:var(--brand);background:var(--soft)}.config-sections{display:grid;gap:20px;min-width:0}.config-sections section{scroll-margin-top:24px}.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:0;padding:8px 0}.check-grid legend{margin-bottom:10px;font-weight:750}.check,.switch,.workflow-option{display:flex;align-items:center;gap:9px}.check{padding:10px;border:1px solid var(--line);border-radius:9px;text-transform:capitalize}.check input,.switch input,.workflow-option input{width:18px;height:18px;accent-color:var(--brand)}.workflow-list{display:grid;gap:10px}.workflow-option{align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff}.workflow-option span{display:grid;gap:4px}.workflow-option small{color:var(--muted);font-weight:500}.confidence-field{max-width:440px;margin-top:8px}.confidence-field>span,.percent-input{display:flex;align-items:center;gap:7px}.confidence-field input{width:100px}.config-client{padding:18px;margin-top:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.config-client-head{display:flex;align-items:start;justify-content:space-between;gap:20px;margin-bottom:14px}.config-client-head>div{min-width:260px;max-width:560px;flex:1}.commission-list{display:grid;gap:9px;margin:14px 0}.commission-row{display:grid;grid-template-columns:150px repeat(3,minmax(120px,1fr)) auto;gap:9px;align-items:end;padding:12px;border-radius:10px;background:#fff;border:1px solid var(--line)}.notice{margin:14px 0;padding:13px 15px;border-left:4px solid var(--warn);background:#fbf6e9;border-radius:8px;font-size:13px}.state-search{min-width:240px}.state-table{min-width:1050px}.state-table input,.state-table select{width:100%;min-width:110px;border:1px solid var(--line);border-radius:7px;padding:8px;background:white}.state-table td:first-child{min-width:150px}.state-table td:nth-child(5){min-width:240px}.switch.compact{white-space:nowrap}.config-save{position:sticky;bottom:16px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 18px;color:#F8F6F2;background:rgba(34,39,46,.96);border-radius:12px;box-shadow:0 12px 34px rgba(34,39,46,.22);font-size:13px}
@media(max-width:1100px){.config-layout{grid-template-columns:1fr}.config-jump{position:static;grid-template-columns:repeat(5,1fr)}.config-jump strong{grid-column:1/-1}.commission-row{grid-template-columns:repeat(2,minmax(0,1fr))}.commission-row .button{justify-self:start}.check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.config-jump{grid-template-columns:repeat(2,1fr)}.commission-row,.check-grid{grid-template-columns:1fr}.config-client-head,.config-save{align-items:stretch;flex-direction:column}.config-client-head>div{min-width:0}.state-search{min-width:0}}
.user-directory{min-width:0}.user-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}.user-actions .button{white-space:nowrap}#user-action-dialog{width:min(520px,calc(100% - 32px));color:var(--ink);background:var(--paper)}#user-action-dialog .muted{line-height:1.55}#user-action-dialog .field{margin-top:16px}#user-action-dialog .button.danger{color:#fff;background:var(--danger);border-color:var(--danger)}
.batch-dialog{width:min(680px,calc(100% - 32px));max-width:680px;color:var(--ink);background:var(--paper)}.batch-dialog .field{margin:20px 0}.batch-drop{display:grid;gap:7px;padding:34px;cursor:pointer;transition:border-color .15s,background .15s}.batch-drop:hover,.batch-drop:focus,.batch-drop.dragging{border-color:var(--brand);background:#f3f8f5;outline:none}.batch-drop span,.batch-drop small{color:var(--muted)}.batch-file-actions{display:flex;justify-content:flex-end;margin-top:10px}.batch-file-summary{display:block;min-height:24px;margin:14px 0;color:var(--muted);font-size:13px}.batch-dialog-actions{justify-content:flex-end;margin-top:18px}
.user-admin-layout{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:18px;align-items:start}.user-admin-layout>form{position:sticky;top:24px}.user-list{display:grid;gap:18px}.permission-user-head{display:flex;justify-content:space-between;gap:18px;align-items:start}.permission-user-head h2{margin:5px 0}.permission-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.permission-columns>section{border:1px solid var(--line);border-radius:12px;padding:16px}.permission-columns h4{margin:0 0 12px}.can-do{background:#f4faf6}.cannot-do{background:#faf8f6}.permission-summary-group+.permission-summary-group{margin-top:12px}.permission-summary-group strong{font-size:11px;text-transform:uppercase;letter-spacing:.08em}.permission-summary-group ul{margin:7px 0 0;padding-left:19px;font-size:12px;line-height:1.55}.permission-groups{display:grid;gap:12px;margin-top:8px}.permission-group{border:1px solid var(--line);border-radius:10px;padding:12px}.permission-group legend,.field-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.permission-check{display:flex;gap:9px;align-items:start;font-size:12px;line-height:1.35;padding:5px 0}.permission-check input{margin-top:2px;accent-color:var(--brand)}#user-action-dialog:has(.permission-groups){width:min(760px,calc(100% - 32px));max-width:760px;max-height:90vh;overflow:auto}@media(max-width:1100px){.user-admin-layout{grid-template-columns:1fr}.user-admin-layout>form{position:static}.permission-columns{grid-template-columns:1fr}}
.client-rule-basics{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:12px;align-items:end}.rule-source{margin:10px 0;color:var(--muted);font-size:11px;line-height:1.45}@media(max-width:700px){.client-rule-basics{grid-template-columns:1fr}}

/* 2026 Katilix Intake workspace refresh */
body{color:var(--ink);background:var(--paper)}
.shell{grid-template-columns:268px minmax(0,1fr);background:var(--paper)}
.sidebar{z-index:5;padding:20px 14px 18px;background:linear-gradient(180deg,#20252c 0%,#1b2026 68%,#181c21 100%);border-right:1px solid rgba(164,150,136,.22);box-shadow:8px 0 30px rgba(25,29,34,.06)}
.sidebar .brand.logo-tile.landscape{width:232px;height:98px;margin:0 4px 13px;border-color:rgba(164,150,136,.25);box-shadow:0 12px 30px rgba(0,0,0,.13)}
.sidebar .brand.logo-tile.landscape img{width:220px;height:220px;left:6px;top:-61px}
.environment{display:flex;align-items:center;gap:8px;margin:0 4px 20px;padding:8px 10px;color:#cfc7be;background:rgba(255,255,255,.025);border-color:rgba(231,229,226,.13)}
.environment i{width:6px;height:6px;background:#9fc8ab;border-radius:50%;box-shadow:0 0 0 4px rgba(110,159,125,.12)}
.nav{gap:4px}.nav button{position:relative;display:flex;align-items:center;gap:11px;min-height:43px;padding:10px 12px;color:#bfc3c5;border:1px solid transparent;border-radius:10px;font-size:13px;transition:background .15s,color .15s,border-color .15s,transform .15s}.nav button svg{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.nav button:hover{color:#fff;background:rgba(255,255,255,.055);transform:translateX(2px)}.nav button.active{color:#fff;background:linear-gradient(90deg,rgba(110,31,42,.78),rgba(110,31,42,.36));border-color:rgba(179,102,113,.25);box-shadow:0 8px 24px rgba(0,0,0,.12)}.nav button.active::before{content:"";position:absolute;left:-4px;width:3px;height:21px;background:#c8afa5;border-radius:2px}
.user-card{padding:17px 5px 0;border-color:rgba(255,255,255,.1)}.user-identity{display:flex;gap:10px;align-items:center;min-width:0}.user-avatar{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;color:#f8f6f2;background:linear-gradient(145deg,#7b2a37,#554147);border:1px solid rgba(255,255,255,.16);border-radius:10px;font-size:11px;font-weight:800;letter-spacing:.05em}.user-identity>div{display:grid;min-width:0}.user-identity .role{font-size:8px}.user-identity strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.user-identity div>span:last-child{overflow:hidden;color:#aeb3b5;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.sidebar-account-actions{padding-left:46px}.sidebar-account-actions .button{padding:6px 8px!important;font-size:10px}
.content{max-width:1720px;padding:34px clamp(26px,4vw,62px) 60px;background:radial-gradient(circle at 94% 2%,rgba(164,150,136,.08),transparent 23%),var(--paper)}
.page-head{margin-bottom:26px}.page-head h1{margin:7px 0 6px;font-size:clamp(34px,4vw,48px);letter-spacing:-.025em}.page-head p{margin:0;line-height:1.55}.eyebrow{font-size:10px;letter-spacing:.16em}
.card{border-color:#e4e0db;border-radius:16px;box-shadow:0 10px 32px rgba(34,39,46,.055)}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 15px;background:#742330;border-color:#742330;border-radius:10px;box-shadow:0 7px 18px rgba(110,31,42,.14);font-size:12px;letter-spacing:-.005em;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s}.button:hover{background:#842b39;border-color:#842b39;box-shadow:0 10px 24px rgba(110,31,42,.2);filter:none;transform:translateY(-1px)}.button.ghost{color:#3f464c;background:#fff;border-color:#ddd8d2;box-shadow:none}.button.ghost:hover{color:var(--brand);background:#faf8f5;border-color:#bfaeb0}.button.secondary{color:#fff;background:#2b343b;border-color:#2b343b}.button.secondary:hover{background:#1f262b}.button.small{min-height:33px;padding:6px 10px}
.button:focus-visible,.nav button:focus-visible,.text-action:focus-visible,.breadcrumb-button:focus-visible,.clickable:focus-visible,.batch-drop:focus-visible{outline:3px solid rgba(124,71,80,.28);outline-offset:2px}.field input:focus,.field select:focus,.field textarea:focus,.inline-input:focus{border-color:#8f5360;box-shadow:0 0 0 3px rgba(110,31,42,.09)}
.badge{align-items:center;gap:5px;padding:5px 8px;color:#555d64;background:#f0efed;border:1px solid rgba(96,105,112,.1);border-radius:999px;line-height:1;text-transform:capitalize}.badge::before{content:"";width:5px;height:5px;background:currentColor;border-radius:50%;opacity:.7}.badge.processing,.badge.uploading,.badge.queued,.badge.intake{color:#755b32;background:#faf2e5}.badge.review,.badge.needs_review,.badge.pending,.badge.soft{color:#80542b;background:#faecdc}.badge.approved,.badge.completed,.badge.ready,.badge.clean,.badge.promoted{color:#276342;background:#e8f3ec}.badge.failed,.badge.quarantined,.badge.privacy_blocked,.badge.hard,.badge.rejected{color:#8b2e38;background:#f9e9e8}
.table-wrap{border:1px solid #ebe7e2;border-radius:12px}.table{font-size:12px}.table th{padding:11px 13px;color:#697178;background:#faf9f7;border-color:#e6e2dd;font-size:9px}.table td{padding:13px;border-color:#eeeae6}.table tbody tr{transition:background .12s}.table tr.clickable:hover{background:#f8f4f1}.table tr.clickable:focus-visible{position:relative;background:#f8f4f1}.row-arrow{width:28px;color:#9b8f85;font-size:17px;transition:transform .15s}.clickable:hover .row-arrow{color:var(--brand);transform:translateX(3px)}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.section-head h2{margin:5px 0 0;font-size:26px}.section-head p{margin:4px 0 0}.text-action,.breadcrumb-button{padding:7px 0;color:var(--brand);background:none;border:0;font-size:12px;font-weight:800}.text-action:hover,.breadcrumb-button:hover{text-decoration:underline;text-underline-offset:4px}.breadcrumb-button{display:block;color:var(--muted);font-weight:700}.breadcrumb-button span{margin-left:6px;color:#b4aaa2}

/* Overview */
.overview-hero{position:relative;isolation:isolate;display:flex;justify-content:space-between;min-height:286px;margin-bottom:18px;padding:38px 42px;overflow:hidden;color:#f8f6f2;background:radial-gradient(circle at 82% 18%,rgba(183,167,146,.2),transparent 28%),linear-gradient(125deg,#22272e 0%,#2a292d 46%,#5d222d 100%);border:1px solid #423b3d;border-radius:20px;box-shadow:0 24px 55px rgba(34,39,46,.16)}.overview-copy{position:relative;z-index:2;max-width:760px}.overview-copy .eyebrow{color:#d4bab7}.overview-copy h1{margin:10px 0 12px;font:600 clamp(43px,5vw,68px)/.98 var(--font-editorial);letter-spacing:-.035em}.overview-copy p{max-width:660px;margin:0;color:#d9d4cf;font-size:14px;line-height:1.7}.overview-copy .actions{margin-top:26px}.overview-copy .button.ghost{color:#f8f6f2;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18)}.overview-copy .button.ghost:hover{background:rgba(255,255,255,.11)}.hero-action{background:#8c3442;border-color:#a64d5a}.hero-motif{position:relative;width:250px;flex:0 0 250px}.hero-motif i{position:absolute;width:128px;height:128px;border:1px solid rgba(239,228,216,.24);border-radius:5px;transform:rotate(2deg)}.hero-motif i:first-child{top:20px;right:10px}.hero-motif i:nth-child(2){top:65px;right:68px;border-color:rgba(178,115,126,.55);transform:rotate(-2deg)}.hero-motif i:nth-child(3){top:110px;right:124px;border-color:rgba(197,181,161,.35)}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric{position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;overflow:hidden;background:#fff;border:1px solid #e5e1dc;border-radius:14px}.metric::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#aaa19a}.metric.attention::before{background:#b77a3b}.metric.active::before{background:#7b6c8a}.metric.ready::before{background:#4f8761}.metric div{display:grid;gap:4px}.metric span{font-size:12px;font-weight:800}.metric small{color:var(--muted);font-size:9px}.metric>strong{font:600 34px var(--font-editorial)}.recent-work{padding:24px}.recent-work .table-wrap{border:0}.batch-name{display:flex;align-items:center;gap:11px}.batch-name>i{width:29px;height:34px;flex:0 0 29px;background:linear-gradient(145deg,#f4efeb,#ece4df);border:1px solid #ddd3cd;border-radius:6px}.batch-name>i::before{content:"";display:block;width:11px;height:2px;margin:9px 0 0 8px;background:#9f7c79;box-shadow:0 5px #c0aaa3,0 10px #c0aaa3}.batch-name>span{display:grid;gap:3px}.batch-name small{color:var(--muted);font-size:10px;font-weight:500}

/* Batch directory and workspace */
.batch-directory{padding:20px 24px 8px}.directory-tools{display:flex;align-items:end;gap:12px;margin-bottom:18px}.search-control{display:flex;align-items:center;flex:1;max-width:460px;background:#fff;border:1px solid #ded9d3;border-radius:10px}.search-control svg{width:17px;height:17px;margin-left:12px;fill:none;stroke:#80878c;stroke-width:1.8}.search-control input{width:100%;padding:11px;border:0;outline:0;background:transparent}.filter-control{display:grid;gap:4px;color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.filter-control select{min-width:155px;padding:9px 11px;background:#fff;border:1px solid #ded9d3;border-radius:10px}.directory-count{margin-left:auto;padding-bottom:9px;color:var(--muted);font-size:11px}.modern-empty{display:grid;justify-items:center;gap:6px;background:#fcfbf9}.modern-empty .empty-mark{display:grid;place-items:center;width:42px;height:42px;color:var(--brand);background:#f2e9e8;border-radius:12px;font-size:21px}.modern-empty p{margin:0 0 8px}.batch-page-head{align-items:flex-start;padding-bottom:20px;border-bottom:1px solid #e4e0db}.title-with-status{display:flex;align-items:center;gap:14px;margin-top:11px}.title-with-status h1{margin:3px 0 2px}.batch-primary-actions{padding-top:10px}.batch-workspace{margin-top:18px}.batch-stat{position:relative;padding:18px 20px;box-shadow:none}.batch-stat>span{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.batch-stat strong{font-size:32px}.batch-stat small{display:block;margin-top:3px;color:#8b9297;font-size:9px}.batch-stat.active{border-color:#d6ccd9;background:#fbf9fc}.batch-stat.attention{border-color:#ead4b9;background:#fffcf7}.source-drop-card{display:flex;align-items:center;gap:20px;padding:22px 24px;background:linear-gradient(115deg,#fff,#faf7f4)}.source-drop-card>div{flex:1}.source-drop-card h2{margin:4px 0}.source-drop-card p{margin:0}.compact-upload{position:relative;display:inline-flex}.compact-upload input{position:absolute;width:1px;height:1px;opacity:0}.compact-upload span{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 15px;color:var(--brand);background:#fff;border:1px dashed #bda8aa;border-radius:10px;font-size:12px;font-weight:800;cursor:pointer}.compact-upload:focus-within span,.compact-upload:hover span{background:#f7efef;border-style:solid}.workspace-section{padding:24px}.completion-ring{display:grid;place-items:center;width:54px;height:54px;color:var(--brand);background:#faf7f4;border:4px solid #eadfda;border-radius:50%;font:700 17px var(--font-editorial)}.completion-ring small{display:block;margin-top:-5px;color:var(--muted);font:500 8px var(--font-ui)}.section-count{padding:6px 9px;color:var(--muted);background:#f2f0ed;border-radius:999px;font-size:10px;font-weight:800}.file-cell{display:flex;align-items:center;gap:10px}.file-cell>i,.document-group-row a>i{display:block;width:25px;height:30px;flex:0 0 25px;background:#f5f1ed;border:1px solid #ddd5cf;border-radius:5px}.file-cell>span{display:grid;gap:2px}.file-cell small{color:var(--muted);font-size:9px}.inline-error{display:block;max-width:310px;color:var(--danger);font-size:10px;line-height:1.4}.workflow-strip{position:relative;gap:0;margin:0 0 10px;padding:7px;background:#eeeae6;border-radius:13px}.workflow-strip span{position:relative;z-index:1;padding:11px 14px;background:transparent;border:0;border-radius:9px;text-align:center;font-size:10px;font-weight:700}.workflow-strip .current{color:#fff;background:#742330;box-shadow:0 6px 16px rgba(110,31,42,.18)}.workflow-strip .done{color:#316b47;background:#e7f1ea}.batch-context{padding:0 4px;font-size:11px}

/* Account review */
.account-page-head{align-items:flex-start;padding-bottom:18px;border-bottom:1px solid #e4e0db}.account-actions{padding-top:10px}.account-summary{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:18px;background:#242a30;border-radius:14px;box-shadow:0 12px 30px rgba(34,39,46,.12)}.account-summary>div{display:grid;gap:4px;padding:15px 18px;border-right:1px solid rgba(255,255,255,.1)}.account-summary>div:last-child{border:0}.account-summary span{color:#aeb5ba;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.account-summary strong{overflow:hidden;color:#f8f6f2;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.account-summary strong.has-flags{color:#efc28d}.review-workspace{grid-template-columns:minmax(0,1fr) 360px;align-items:start}.review-form{padding:0;overflow:clip}.review-form-head{display:flex;justify-content:space-between;gap:20px;padding:26px 28px;background:linear-gradient(120deg,#fff,#faf8f5);border-bottom:1px solid #e7e2dd}.review-form-head h2{margin:5px 0}.review-form-head p{max-width:720px;margin:0;line-height:1.55}.review-field-count{align-self:start;padding:6px 9px;color:var(--muted);background:#efedea;border-radius:999px;font-size:9px;font-weight:800;white-space:nowrap}.account-field-group{padding:26px 28px;border-bottom:1px solid #e7e2dd}.field-group-head{display:flex;gap:12px;margin-bottom:18px}.field-group-head>span{padding-top:3px;color:#9e7d79;font:700 11px var(--font-editorial)}.field-group-head h3{margin:0 0 3px;font-size:18px}.field-group-head p{margin:0;color:var(--muted);font-size:10px;line-height:1.45}.evidence-row{grid-template-columns:minmax(210px,1fr) minmax(160px,.65fr) 74px;gap:10px;margin:0;padding:10px 0;border-color:#eeeae6}.evidence-row:last-child{border:0}.evidence-row .field{font-size:10px}.evidence-source,.evidence-page{opacity:.84}.manual-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.manual-field-grid .do-not-import{grid-column:1/-1;align-items:flex-start;padding:13px;background:#fbf5ee;border-color:#e9d8c5}.do-not-import>span{display:grid;gap:3px}.do-not-import small{color:var(--muted);font-weight:500}.account-savebar{position:sticky;z-index:2;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px 14px 28px;color:#d7d3cf;background:rgba(34,39,46,.96);border-top:1px solid #3f464d;backdrop-filter:blur(10px);font-size:10px}.review-sidebar{position:sticky;top:22px;display:grid;gap:14px}.review-side-card{padding:20px;box-shadow:0 8px 24px rgba(34,39,46,.05)}.review-side-card h3{margin:3px 0 14px;font-size:19px}.side-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.balance-card{color:#f8f6f2;background:linear-gradient(145deg,#252b31,#33272a);border-color:#453a3d}.balance-card .eyebrow{color:#ccb0ad}.balance-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.balance-grid>div{display:grid;gap:3px;padding:11px;background:rgba(255,255,255,.055);border-radius:9px}.balance-grid .difference{grid-column:1/-1}.balance-grid span{color:#aeb5ba;font-size:9px}.balance-grid strong{font:600 17px var(--font-editorial)}.financial-facts{display:grid;gap:0;margin:0}.financial-facts div{display:flex;justify-content:space-between;gap:15px;padding:9px 0;border-bottom:1px solid var(--line)}.financial-facts div:last-child{border:0}.financial-facts dt{color:var(--muted);font-size:10px}.financial-facts dd{margin:0;font-size:11px;font-weight:800;text-align:right}.training-referral-card{border-color:#d9c9c7;background:#fdfafa}.training-referral-card .field{margin-top:12px}.document-group-row{padding:11px 0;border-bottom:1px solid var(--line)}.document-group-row:last-child{border:0}.document-group-row>a{display:flex;align-items:center;gap:9px;margin-bottom:9px;color:var(--ink);font-size:10px;font-weight:800;text-decoration:none}.document-group-row>a:hover{color:var(--brand)}.document-group-row a>i{width:21px;height:25px;flex-basis:21px}.document-group-row .field{font-size:8px}.review-sidebar>.card[style]{margin-top:0!important}

/* Training lifecycle */
.training-shell .brand.logo-tile img{mix-blend-mode:normal}.training-shell .content{padding-top:28px;background:radial-gradient(circle at 88% 0,rgba(110,31,42,.24),transparent 26%),linear-gradient(145deg,#1b2026,#20262d)}.training-stage-rail{display:grid;grid-template-columns:repeat(6,1fr);margin:17px 0;padding:11px;background:rgba(10,14,18,.3);border:1px solid #3b444c;border-radius:14px}.training-stage-rail>div{position:relative;display:flex;align-items:center;gap:8px;padding:8px;color:#77818a}.training-stage-rail>div::after{content:"";position:absolute;right:-4px;width:8px;height:1px;background:#4b545c}.training-stage-rail>div:last-child::after{display:none}.training-stage-rail span{display:grid;place-items:center;width:23px;height:23px;flex:0 0 23px;background:#30373e;border:1px solid #46505a;border-radius:50%;font-size:9px;font-weight:800}.training-stage-rail strong{font-size:9px}.training-stage-rail .current{color:#f2e8e3}.training-stage-rail .current span{color:#fff;background:#7b2b38;border-color:#a0525e;box-shadow:0 0 0 4px rgba(123,43,56,.18)}.training-stage-rail .done{color:#afcbb7}.training-stage-rail .done span{color:#d8efde;background:#294436;border-color:#47735a}.training-shell .grid{gap:14px}.training-shell .card.wide{padding:24px;border-color:#3b444c;border-radius:15px;background:linear-gradient(145deg,#252b32,#232930);box-shadow:0 15px 38px rgba(0,0,0,.14)}.training-shell .card.wide .page-head{margin-bottom:18px}.training-shell .card.wide h2{font-size:25px}.training-shell .table-wrap{border-color:#39424a}.training-shell .table th{background:#20262c}.training-shell .table tbody tr:hover{background:#293039}

.source-drop-card.drop-enabled{position:relative;min-height:150px;border:1.5px dashed #bda8aa;transition:border-color .16s,background .16s,box-shadow .16s,transform .16s}.source-drop-card.drop-enabled::after{content:"Drop files anywhere in this panel";position:absolute;right:24px;bottom:14px;color:#9a777b;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.source-drop-card.drop-enabled.dragging{border-color:#742330;background:#f8eeee;box-shadow:0 0 0 5px rgba(116,35,48,.1);transform:translateY(-2px)}.source-drop-card.drop-enabled.uploading{pointer-events:none;opacity:.78}.source-drop-card.drop-enabled.uploading::after{content:"Upload in progress"}

@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,1fr)}.hero-motif{width:180px;flex-basis:180px}.review-workspace{grid-template-columns:1fr}.review-sidebar{position:static;grid-template-columns:repeat(2,1fr)}.review-sidebar .balance-card,.review-sidebar .documents-card{grid-column:span 2}.training-stage-rail{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar .brand.logo-tile.landscape{width:180px;height:78px}.sidebar .brand.logo-tile.landscape img{width:170px;height:170px;top:-47px}.environment{position:absolute;top:30px;right:18px}.nav{grid-template-columns:repeat(4,1fr)}.nav button{justify-content:center}.nav button.active::before{inset:auto auto -3px;height:3px;width:22px}.user-card{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.sidebar-account-actions{padding:0}.content{padding:26px 20px 48px}.overview-hero{padding:32px}.hero-motif{display:none}.source-drop-card{align-items:flex-start;flex-direction:column}.account-summary{grid-template-columns:repeat(2,1fr)}.account-summary>div:nth-child(2){border-right:0}.account-summary>div:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.1)}}
@media(max-width:650px){.page-head h1{font-size:34px}.overview-hero{min-height:0;padding:28px 24px}.overview-copy h1{font-size:45px}.overview-copy .actions{align-items:stretch;flex-direction:column}.metric-grid{grid-template-columns:1fr}.metric{padding:15px 18px}.directory-tools{align-items:stretch;flex-direction:column}.search-control{max-width:none}.filter-control select{width:100%}.directory-count{margin:0}.title-with-status{align-items:flex-start;flex-direction:column}.batch-primary-actions,.account-actions{width:100%}.batch-primary-actions .button,.account-actions .button{flex:1}.workflow-strip{grid-template-columns:1fr 1fr}.account-summary{grid-template-columns:1fr}.account-summary>div{border-right:0;border-bottom:1px solid rgba(255,255,255,.1)}.evidence-row{grid-template-columns:1fr 70px}.evidence-row>.field:first-child{grid-column:1/-1}.manual-field-grid,.review-sidebar{grid-template-columns:1fr}.review-sidebar .balance-card,.review-sidebar .documents-card{grid-column:auto}.review-form-head,.account-savebar{align-items:flex-start;flex-direction:column}.account-field-group,.review-form-head{padding:22px 18px}.account-savebar{align-items:stretch;padding:14px 18px}.training-stage-rail{grid-template-columns:1fr 1fr}.training-stage-rail>div::after{display:none}.nav{grid-template-columns:repeat(2,1fr)}.nav button{justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.nav button:hover,.button:hover{transform:none}}

/* Review form: keep attention on what is unresolved. Derived values are shown because the reviewer
   needs to see them, not because anything is expected of them. */
.evidence-row.is-derived { opacity: .72; }
.evidence-row.is-derived input { background: color-mix(in srgb, currentColor 6%, transparent); cursor: default; }
.evidence-row.is-flagged { border-left: 3px solid #b3261e; padding-left: .75rem; }
.account-field-group.is-collapsed { opacity: .6; }
.account-field-group .field-group-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.group-summary { font-size: .8rem; opacity: .7; white-space: nowrap; }
.group-reveal summary { cursor: pointer; font-size: .85rem; opacity: .75; padding: .25rem 0; }
.field-note { font-size: .78rem; opacity: .65; margin: .15rem 0 0; }

/* A "differs across source files" flag used to name only the field, so a reviewer had to open every
   grouped document to find out what actually conflicted. The conflicting values themselves, each next
   to the source that produced it, go directly under the flag instead. */
.flag-conflicts { display: grid; gap: 4px; margin: 8px 0 0; padding: 0; list-style: none; font-size: .78rem; }
.flag-conflicts li { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 4px 8px; background: rgba(255,255,255,.5); border-radius: 6px; }
.flag-conflicts .conflict-value { font-weight: 700; overflow-wrap: anywhere; }
.flag-conflicts .conflict-source { opacity: .8; white-space: nowrap; }
.flag.is-resolved { opacity: .6; }
.flag.is-resolved .flag-conflicts { display: none; }
.flag-resolution { margin: 6px 0 0; font-size: .78rem; font-style: italic; opacity: .85; }

/* Placement reconciliation: the component breakdown that sums to the balance check, and the exact
   fields Guido's import file actually contains for this account - both read against the balance-card's
   dark background, so they inherit its light text color rather than the light-card muted tones used
   elsewhere on the page. */
.balance-components, .guido-fields { display: grid; gap: 0; margin: 10px 0 0; }
.balance-components > div, .guido-fields > div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.1); font-size: 11px; }
.balance-components > div:last-child, .guido-fields > div:last-child { border: 0; }
.balance-components dt, .guido-fields dt { color: #aeb5ba; }
.balance-components dd, .guido-fields dd { margin: 0; font-weight: 700; text-align: right; }
.guido-ships { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.14); }
.guido-ships > .eyebrow { display: block; margin-bottom: 2px; }
.balance-card .field-note { opacity: .75; }
/* "As of" is part of the label, not the figure, so it reads as a qualifier rather than a second value. */
.current-balance { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.14); }
.current-balance > .eyebrow { display: block; margin-bottom: 2px; }
.current-balance > .eyebrow small { text-transform: none; letter-spacing: normal; opacity: .7; font-weight: 500; }
.current-balance-unavailable { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.14); }
.compact-balance { margin-bottom: 0; }
.balance-details { margin-top: 12px; color: #d8dde2; }
.balance-details summary { cursor: pointer; font-size: 11px; font-weight: 700; color: #aeb5ba; }
.balance-details[open] summary { margin-bottom: 10px; }
.readiness-summary.is-ready { border-color: #9ed1ac; background: linear-gradient(120deg,#fff,#f4fbf6); }
.readiness-summary.needs-review { border-color: #efc28d; }
.validation-issues { margin: 12px 0 0; padding-left: 18px; color: var(--muted); font-size: 12px; }
.validation-issues li { margin: 6px 0; }

/* No bounding box reaches the review screen (see lib/extraction.js), so the literal text an entity
   matched is the closest thing to "why" a reviewer gets short of opening the source page. It spans the
   row rather than fighting the label/evidence/page columns for its own track. */
.evidence-snippet { grid-column: 1 / -1; overflow-wrap: anywhere; }

/* Horizontal overflow guards.
   A grid track sized 1fr will not shrink below its content, so one long value - a customer name, a
   creditor, a filename in the documents list - widens the whole page and the sidebar falls off the
   right edge. minmax(0,1fr) lets tracks shrink, and min-width:0 lets their children do the same. */
.shell, .content { max-width: 100%; min-width: 0; }
.content > .grid, .account-layout, .review-workspace, .review-sidebar, .review-form { min-width: 0; }
.account-layout, .review-workspace { grid-template-columns: minmax(0, 1fr) minmax(0, 360px); }
.account-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.balance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.manual-field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.evidence-row > *, .account-summary > div, .balance-grid > div, .card, .field { min-width: 0; }
.field input, .field select, .field textarea { max-width: 100%; }
/* Long filenames in the documents rail wrap instead of pushing the rail wider. */
.document-group-row > a > span { overflow-wrap: anywhere; }
/* Classification, size, and page count sit under the filename like the batch-level file list, rather
   than inheriting the link's bold weight meant only for the name. */
.document-group-row > a > span { display: grid; gap: 2px; }
.document-group-row > a small { color: var(--muted); font-size: 9px; font-weight: 500; text-transform: capitalize; }

/* Rows without an evidence picker should not reserve the two empty tracks beside them. */
.evidence-row:not(:has(.evidence-source)) { grid-template-columns: minmax(0, 1fr); }

@media (max-width: 1100px) {
  .account-layout, .review-workspace { grid-template-columns: minmax(0, 1fr); }
  .review-sidebar { position: static; }
}

/* The sidebar's sticky containing block is the grid row, which is as tall as whichever column is
   taller - almost always the extracted-fields form. Sticky alone does not clip overflow, so once the
   sidebar's own content (reconciliation, flags, documents) is taller than the viewport, the reviewer
   could not reach its lower half without first scrolling past the entire form beneath it. Capping the
   sidebar's own height and letting it scroll independently, only while it is actually sticky, fixes
   that without introducing a second scrollbar when the sidebar already fits. */
@media (min-width: 1101px) {
  .review-sidebar { max-height: calc(100vh - 22px - 22px); overflow-y: auto; overscroll-behavior: contain; }
}

/* Final guarantee: the page itself never scrolls sideways. Wide content that legitimately needs it -
   tables - already scrolls inside .table-wrap, so nothing is hidden by this. */
.content { overflow-x: clip; }
.table-wrap { overflow-x: auto; max-width: 100%; }

/* Source document preview. Reconciling a flagged value means reading the page it came from, so the
   document opens beside the fields rather than in a tab the reviewer has to hunt for. */
.review-workspace.has-preview { grid-template-columns: minmax(0, 1fr) minmax(0, 360px); }
/* Recalculation is a routine interaction, so it gets the smallest possible acknowledgement: the panel
   dims very slightly while the answer is in flight. Anything more would draw the eye away from the
   field being edited. */
.balance-card { transition: opacity 120ms ease; }
.balance-card.recalculating { opacity: .62; }
@media (prefers-reduced-motion: reduce) { .balance-card { transition: none; } }

.review-head-status { display: flex; align-items: center; gap: 10px; }
.invoice-reconciliation { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.invoice-reconciliation .difference dd { font-weight: 700; }
.field-note.derivation { margin-top: 8px; font-variant-numeric: tabular-nums; }

/* When the recorded region is too coarse to point at anything, the matched text is the honest answer. */
.evidence-snippet { display: grid; gap: 4px; margin: 0 0 10px; padding: 10px 12px; font-size: 12px; background: var(--soft); border: 1px solid var(--line); border-radius: var(--katilix-radius-control); }
.evidence-snippet small { color: var(--muted); }

/* Named processing stages, so a long OCR run reads as progress rather than as a hang. */
.stage-strip { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0 0 14px; font-size: 11px; }
.stage-strip span { padding: 4px 10px; color: var(--muted); background: var(--soft); border: 1px solid var(--line); border-radius: 999px; }
.stage-strip span.done { color: var(--ink); }
.stage-strip span.current { color: #fff; background: var(--brand); border-color: var(--brand); font-weight: 600; }

/* The audit trail reads as a record of work, so events group by what they concern and a value change
   shows the change rather than the field's name. */
.audit-group + .audit-group { margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--line); }
.audit-group > h2 { display: flex; align-items: baseline; gap: 10px; margin: 0 0 12px; font-size: 16px; }
.history-directory { padding: 20px 24px 24px; }
.history-directory .directory-tools { margin-bottom: 18px; }
.history-directory .timeline { display: grid; gap: 10px; }
.history-directory .event { padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: #fcfbf9; }
.user-list-panel { display: grid; gap: 14px; min-width: 0; }
.user-directory-tools { margin: 0; }
.event-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; }
.event-head time { color: var(--muted); font-size: 11px; white-space: nowrap; }
.audit-changes { display: grid; gap: 4px; margin: 6px 0 0; font-size: 12px; }
.audit-changes div { display: flex; flex-wrap: wrap; gap: 8px; }
.audit-changes dt { color: var(--muted); min-width: 12ch; }
.audit-changes dd { margin: 0; }
.audit-changes s { color: var(--muted); }
.event-actions { margin-top: 6px; }
.link-button { padding: 0; color: var(--brand); font: inherit; font-size: 12px; background: none; border: 0; text-decoration: underline; cursor: pointer; }
.link-button:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* The batch's answer to "which of these need me", given the weight that question deserves without
   becoming another decorative card. */
.readiness-summary { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 18px 22px; }
.readiness-summary h2 { margin: 4px 0 2px; }
.readiness-summary p { margin: 0; max-width: 62ch; }
@media (max-width: 780px) { .readiness-summary { flex-direction: column; align-items: flex-start; } }
.document-preview { grid-column: 1 / -1; display: grid; gap: 12px; padding: 18px; margin-top: 4px; }
.preview-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.preview-head h3 { margin: 3px 0 0; font-size: 17px; overflow-wrap: anywhere; }
.preview-actions { display: flex; gap: 8px; flex-shrink: 0; }
#preview-frame { width: 100%; height: min(70vh, 780px); border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.link-button { border: 0; background: none; padding: 0 0 0 6px; color: var(--brand); font: inherit; font-size: .82em; font-weight: 700; text-decoration: underline; cursor: pointer; }
@media (max-width: 1100px) { #preview-frame { height: 60vh; } }

/* Opened from a list there is nothing to compare the document against, so it takes the screen. */
.document-viewer { width: min(1100px, 94vw); max-width: none; height: min(88vh, 1000px); padding: 18px; gap: 12px; }
.document-viewer[open] { display: flex; flex-direction: column; }
.document-viewer #viewer-frame { flex: 1; width: 100%; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.document-viewer::backdrop { background: rgba(10, 31, 27, .6); }
/* The file name is the way into a document, so it has to look like one. */
a.file-cell { display: flex; align-items: center; gap: 9px; color: inherit; text-decoration: none; }
a.file-cell:hover strong, a.file-cell:focus-visible strong { color: var(--brand); text-decoration: underline; }
a.file-cell strong { display: block; }

/* An image-type source document renders as a plain <img> (reusing the iframe's own width/height/border
   rules by keeping the same element id) rather than an iframe, so a bounding-box highlight can be drawn
   in exact pixel coordinates - no PDF renderer this app controls exists yet to do the same for a PDF
   page. object-fit:contain can letterbox the image inside that box; positionEvidenceHighlight in app.js
   accounts for that when placing the highlight, so the CSS here only needs to size the box itself. */
.image-preview { position: relative; }
.image-preview img { object-fit: contain; }
.evidence-highlight { position: absolute; border: 2px solid #d94f3d; background: rgba(217, 79, 61, .16); border-radius: 2px; pointer-events: none; box-shadow: 0 0 0 1px rgba(255, 255, 255, .5); }

/* A PDF page rendered to a canvas this app controls, rather than an opaque iframe, so a bounding-box
   highlight can be drawn on it and its pixel size actually matches what pdf.js rendered - no
   object-fit letterboxing to account for, unlike the image case. */
.pdf-preview { display: grid; gap: 10px; }
.pdf-toolbar { display: flex; align-items: center; justify-content: center; gap: 12px; }
.pdf-toolbar span { font-size: 12px; color: var(--muted); min-width: 110px; text-align: center; }
.pdf-canvas-wrap { position: relative; width: 100%; max-height: min(70vh, 780px); overflow: auto; text-align: center; background: #f0efed; border: 1px solid var(--line); border-radius: 10px; padding: 8px; }
.pdf-canvas-wrap canvas { display: inline-block; max-width: 100%; box-shadow: 0 4px 16px rgba(34, 39, 46, .12); }
@media (max-width: 1100px) { .pdf-canvas-wrap { max-height: 60vh; } }
.document-viewer .pdf-preview { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.document-viewer .pdf-canvas-wrap { flex: 1; max-height: none; }

.train-loading { padding: 40px; text-align: center; color: var(--muted); }
.train-accounts-list { display: grid; gap: 10px; max-height: 640px; overflow-y: auto; }
.account-result { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.account-result .account-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 16px; background: #faf9f7; cursor: pointer; }
.account-result .account-header:hover { background: var(--soft); }
.account-result .account-details { display: none; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; padding: 14px 16px; border-top: 1px solid var(--line); }
.account-result .account-details.expanded { display: grid; }
.field-diff { display: grid; gap: 2px; padding: 8px 10px; border-radius: 8px; background: #fff; border: 1px solid var(--line); font-size: 11px; }
.field-diff strong { font-size: 11px; }
.field-diff.pass { border-color: #bfe0c9; background: #f4faf6; }
.field-diff.warn { border-color: #ecd6ac; background: #fffaf1; }
.field-diff.fail { border-color: #f0c0c2; background: #fdf3f3; }
.field-diff small { color: var(--muted); font-style: italic; }
