/* UX-03: shared presentation, Brandbook 1.1 + supplied visual references.
   Bright semantic tokens remain accents; dark ink variants pass text contrast.
   Fonts and official logo are served locally. No remote resources. */
@font-face{font-family:Inter;src:url('/assets/fonts/inter-latin-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Inter;src:url('/assets/fonts/inter-latin-600.woff2') format('woff2');font-style:normal;font-weight:500 900;font-display:swap}
:root{
 --ofx-bg:#F6F9FC;--ofx-surface:#FFFFFF;--ofx-text:#111827;--ofx-text-secondary:#425466;--ofx-border:#E2E8F0;
 --ofx-accent:#16C4E5;--ofx-action:#0F7EA8;--ofx-action-ink:#086382;--ofx-navy:#1E3A5F;--ofx-cobalt:#2F6FED;
 --ofx-success:#16A36A;--ofx-warning:#F5A524;--ofx-danger:#F05D4E;--ofx-lavender:#7C5CFA;
 --ofx-success-ink:#087047;--ofx-warning-ink:#815000;--ofx-danger-ink:#AD3026;--ofx-info-ink:#2457BB;
 --ofx-soft-blue:#EAF2FF;--ofx-soft-teal:#DFF8FC;--ofx-soft-green:#E8F8F0;--ofx-soft-amber:#FFF4DE;--ofx-soft-coral:#FDEAE7;
 --ofx-control-border:#7B8998;--ofx-space-unit:8px;--ofx-radius-card:12px;--ofx-radius-control:8px;
 --ink:var(--ofx-text);--muted:var(--ofx-text-secondary);--line:var(--ofx-border);--paper:var(--ofx-surface);--wash:var(--ofx-bg);
 --violet:var(--ofx-action-ink);--violet-dark:var(--ofx-navy);--green:var(--ofx-success-ink);--amber:var(--ofx-warning-ink);--blue:var(--ofx-info-ink);--danger:var(--ofx-danger-ink);
 --shadow:0 2px 8px rgb(30 58 95 / 4%);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
 color:var(--ofx-text);background:var(--ofx-bg);font-size:16px;line-height:1.5;font-synthesis:none;
}
body{font-size:1rem;line-height:1.5}h1,.page-heading h1,.auth-card h1{font-size:2rem;line-height:1.25;font-weight:600;margin:0 0 8px;letter-spacing:-.025em}
h2,.panel-heading h2{font-size:1.5rem;line-height:1.333;font-weight:600}h3,.document-content h3{font-size:1.125rem;line-height:1.444;font-weight:600}
small,.muted,.text-link,.item-list small{font-size:.875rem;line-height:1.429}.eyebrow{font-size:.75rem!important;line-height:1.333;letter-spacing:.12em;color:var(--ofx-action-ink)!important}
a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible,.experience-shell :focus-visible{outline:3px solid var(--ofx-action-ink);outline-offset:3px}
.skip-link{z-index:1000;color:var(--ofx-text)}[hidden]{display:none!important}
.app-shell{grid-template-columns:248px minmax(0,1fr)}
.experience-shell .sidebar{background:var(--ofx-navy);color:#fff;padding:16px;border-right:1px solid var(--ofx-navy)}
.experience-shell .brand{padding:12px 8px;background:#fff;border-radius:8px;margin-bottom:24px;min-height:64px}
.brand-logo{display:block;width:100%;max-width:208px;height:auto;object-fit:contain}
.experience-shell .sidebar nav a,.experience-shell .sidebar summary{color:#E2E8F0}
.experience-shell .sidebar nav a:hover,.experience-shell .sidebar summary:hover{background:#294D76;color:#fff;text-decoration:none}
.experience-shell .sidebar nav a.active{background:var(--ofx-action-ink);color:#fff;box-shadow:inset 3px 0 var(--ofx-accent)}
.experience-shell .experience-section,.experience-shell .sidebar-user small{color:#D3E4F4}
.experience-shell .experience-links,.experience-shell .experience-admin,.experience-shell .experience-tools,.experience-shell .sidebar-user{border-color:#58728F}
.experience-shell .sidebar :focus-visible{outline-color:var(--ofx-accent)}
.experience-shell .sidebar-user strong{font-size:.875rem;line-height:1.429}.experience-shell .sidebar-user small{font-size:.75rem;line-height:1.333}
.avatar{background:var(--ofx-action-ink);color:#fff;min-width:32px}.sidebar-user .icon-button:hover{background:#294D76}
.topbar{height:72px;padding:0 32px;gap:16px}.page{max-width:1440px;padding:32px}.page-heading{margin-bottom:24px;gap:24px}
.page-heading>div{min-width:0}.page-heading h1{overflow-wrap:anywhere}.page-heading p{font-size:1rem;line-height:1.5;max-width:72ch}
.page-heading .eyebrow{margin-bottom:8px}.page>.panel,.page>details,.two-columns,.metric-grid{margin-bottom:24px}
.panel,.metric,.auth-card,.setup-box{border-radius:12px;box-shadow:var(--shadow)}
.panel-heading,.document-content,.panel>details{padding:24px}.panel>h2,.panel>p{padding-left:24px;padding-right:24px}
.panel>h2{margin-top:24px;margin-bottom:16px}.panel>.stack{padding:0 24px 24px}.panel.document-content>.stack{padding:0}
.panel-heading{gap:16px;flex-wrap:wrap}.panel-heading h2{margin:0}.panel-heading a{font-size:.875rem;min-height:44px;display:inline-flex;align-items:center}
.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric{padding:24px;border-color:var(--ofx-border)}
.metric span,.metric small{font-size:.875rem;line-height:1.429}.metric strong{font-size:2rem;line-height:1.25;margin:8px 0}.metric::before{background:var(--ofx-accent)}
.metric.amber{background:var(--ofx-soft-amber)}.metric.blue{background:var(--ofx-soft-blue)}.metric.green{background:var(--ofx-soft-green)}.metric.violet{background:var(--ofx-soft-teal)}
.two-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.two-columns>*{min-width:0}
.item-list article{padding:16px 24px;gap:16px}.item-list article>div{min-width:0}.item-list strong,.item-list p{font-size:1rem;line-height:1.5;overflow-wrap:anywhere}.item-list p{margin:8px 0}.item-list small{margin-top:8px}
.item-list a,.text-link{color:var(--ofx-action-ink);text-decoration:underline;text-underline-offset:3px}.item-list a,.text-link{display:inline-flex;align-items:center;min-height:44px}
.news-dot{background:var(--ofx-accent);margin-top:8px}.empty{padding:32px 24px;font-size:1rem;line-height:1.5;gap:8px}.empty p{margin:0;max-width:64ch}.empty a{color:var(--ofx-action-ink);min-height:44px;display:inline-flex;align-items:center;text-decoration:underline}
button,.button,.primary,.filter-bar button,.inline-actions button{min-height:44px;max-width:100%;border:1px solid var(--ofx-control-border);border-radius:8px;padding:8px 16px;font-size:1rem;line-height:1.5;font-weight:600;background:#fff;color:var(--ofx-text);white-space:normal}
button:hover,.button:hover{background:var(--ofx-bg)}.primary,.button.primary{background:var(--ofx-action-ink);border-color:var(--ofx-action-ink);color:#fff}.primary:hover,.button.primary:hover{background:var(--ofx-navy);color:#fff;text-decoration:none}
.secondary{background:#fff;color:var(--ofx-action-ink)}button:disabled{opacity:.65;cursor:not-allowed}.icon-button,.menu-button{min-width:44px;min-height:44px;padding:8px;background:transparent;border-color:transparent;color:inherit}
.global-search input,.filter-bar input,.stack input,.stack select,.stack textarea,input:not([type=hidden]):not([type=checkbox]):not([type=radio]),select,textarea{min-height:44px;min-width:0;max-width:100%;border:1px solid var(--ofx-control-border);border-radius:8px;padding:8px 16px;font-size:1rem;line-height:1.5;color:var(--ofx-text);background:#fff}
input::placeholder,textarea::placeholder{color:var(--ofx-text-secondary);opacity:1}
.stack input:focus,.stack select:focus,.stack textarea:focus,.global-search input:focus,.filter-bar input:focus{outline:3px solid var(--ofx-action-ink);outline-offset:2px;border-color:var(--ofx-action-ink)}
.stack{gap:16px;margin:24px 0}.stack label,legend{font-size:1rem;line-height:1.5;font-weight:600;color:var(--ofx-text)}.stack label{gap:8px}.stack small{font-size:.875rem;line-height:1.429;color:var(--muted)}
label:has(input[type=checkbox]),label:has(input[type=radio]){display:flex;align-items:center;gap:8px;min-height:44px}input[type=checkbox],input[type=radio]{width:24px;height:24px;flex:0 0 24px;accent-color:var(--ofx-action-ink)}
fieldset{min-width:0;border-radius:8px;padding:16px;gap:16px}legend{padding:0 8px}.filter-bar{align-items:end;flex-wrap:wrap;gap:16px;margin-bottom:24px}.filter-bar label{flex:1 1 240px;display:grid;gap:8px}.filter-bar input{width:100%}.filter-bar>a{min-height:44px;display:flex;align-items:center;color:var(--ofx-action-ink);text-decoration:underline}
.field-error{color:var(--ofx-danger-ink)!important;font-size:.875rem;font-weight:400;line-height:1.429;margin:0}.stack [aria-invalid=true]{border-color:var(--ofx-danger-ink)}
.alert{font-size:1rem;line-height:1.5;padding:16px;border-radius:8px;background:var(--ofx-soft-blue);color:var(--ofx-navy)}
.alert.error{background:var(--ofx-soft-coral);color:var(--ofx-danger-ink);border:1px solid var(--ofx-danger-ink)}.alert.success{background:var(--ofx-soft-green);color:var(--ofx-success-ink);border:1px solid var(--ofx-success-ink)}
.status,.date-chip{font-size:.875rem;line-height:1.429;padding:4px 8px;border-radius:8px;background:var(--ofx-bg);color:var(--muted);white-space:normal}
.status--info{background:var(--ofx-soft-blue);color:var(--ofx-info-ink)}.status--success{background:var(--ofx-soft-green);color:var(--ofx-success-ink)}.status--warning{background:var(--ofx-soft-amber);color:var(--ofx-warning-ink)}.status--danger{background:var(--ofx-soft-coral);color:var(--ofx-danger-ink)}
.table-wrap,.table-panel{max-width:100%;overflow:auto}.table-wrap{overscroll-behavior-inline:contain}.table-wrap:focus-visible{outline-offset:-3px}table{font-size:1rem;line-height:1.5}th,td{padding:16px;border-color:var(--ofx-border)}th{font-size:.875rem;line-height:1.429;text-transform:none;letter-spacing:0;color:var(--muted)}td:nth-child(2){min-width:160px}td a{min-height:44px;display:inline-flex;align-items:center;text-decoration:underline}caption{text-align:left;padding:16px;color:var(--muted);font-size:.875rem}.inline-actions{gap:8px;flex-wrap:wrap}
.create-panel{border:1px solid var(--ofx-border);border-radius:12px;background:#fff;margin:0 0 24px;scroll-margin-top:96px}.create-panel>summary{padding:16px 24px;min-height:56px;color:var(--ofx-action-ink);font-size:1rem}.create-panel[open]>summary{border-bottom:1px solid var(--ofx-border)}.create-panel>.stack{padding:24px;margin:0;max-width:880px}
.form-actions{display:flex;gap:16px;flex-wrap:wrap}.search-result{padding:16px 24px;gap:16px}.search-result strong{min-width:0;overflow-wrap:anywhere}.search-result:hover{background:var(--ofx-bg)}
.public-page{background:var(--ofx-bg)}.auth-shell{max-width:1120px;padding:48px 32px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,480px);gap:64px;align-items:center;min-height:100vh}
.auth-intro{align-self:center}.auth-brand{justify-content:flex-start;margin-bottom:32px}.auth-brand .brand-logo{max-width:320px;background:#fff;padding:16px;border-radius:8px}.auth-intro h2{font-size:2.5rem;line-height:1.2;color:var(--ofx-navy);max-width:14ch;margin:0 0 24px}.auth-intro p{max-width:40ch;color:var(--muted)}.auth-intro .auth-accent{height:4px;width:48px;background:var(--ofx-accent);margin:24px 0}
.auth-card{padding:32px;width:100%;min-width:0}.auth-card.wide{max-width:none}.auth-card .primary{width:100%}.auth-card h1{font-size:1.5rem;line-height:1.333}.setup-box{background:var(--ofx-soft-blue);border-color:var(--ofx-border);padding:16px;font-size:1rem}.setup-box code,.recovery-grid code{background:var(--ofx-navy);font-size:1rem;overflow-wrap:anywhere}.recovery-grid{gap:8px}.public-page .skip-link{background:#fff}
/* Extension views consume the same tokens despite their earlier local sheets. */
body .ofx-context,body .ofx-actions{max-width:1440px;color:var(--ofx-text);font-family:inherit;--context-ink:var(--ofx-text);--context-muted:var(--muted);--context-line:var(--ofx-border)}
body .ofx-context h1,body .ofx-actions h1{font-size:2rem;line-height:1.25}body .ofx-context h2{font-size:1.5rem;line-height:1.333}
body .ofx-context p,body .ofx-context li,body .ofx-context-fields dd,body .ofx-actions p,body .ofx-actions-link{font-size:1rem;line-height:1.5}
body .ofx-context-state,body .ofx-context-fields dt,body .ofx-actions-meta{font-size:.875rem;line-height:1.429}
body .ofx-context-card,body .ofx-context-notice,body .ofx-actions-list li,body .ofx-actions-empty{border-radius:12px;padding:24px}
body .ofx-context-back,body .ofx-actions-link{color:var(--ofx-action-ink)}body .ofx-context-notice,body .ofx-actions-notice{background:var(--ofx-soft-amber);color:var(--ofx-warning-ink)}
body .ofx-context a:focus-visible,body .ofx-context summary:focus-visible,body .ofx-actions a:focus-visible{outline-color:var(--ofx-action-ink)}
@media(max-width:1000px){.app-shell{grid-template-columns:minmax(0,1fr)}.page{padding:24px}.two-columns{grid-template-columns:minmax(0,1fr)}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{padding:0 16px}.auth-shell{gap:32px;padding:32px 24px}}
@media(max-width:767px){.page{padding:16px}.page-heading{flex-direction:column;gap:16px}.page-heading h1{font-size:2rem}.panel-heading,.document-content,.panel>details{padding:16px}.panel>h2,.panel>p{padding-left:16px;padding-right:16px}.panel>.stack{padding:0 16px 16px}.panel.document-content>.stack{padding:0}.panel-heading h2{font-size:1.125rem}.item-list article{padding:16px}.metric{padding:16px}.metric-grid{gap:8px}.metric strong{font-size:1.5rem}.metric span,.metric small{font-size:.875rem}.status{max-width:100%}.topbar{height:72px}.primary,.button,input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,.filter-bar button{min-height:48px}.filter-bar{gap:8px}.filter-bar label{flex-basis:100%}.filter-bar button{flex:1}.create-panel>.stack{padding:16px}.auth-shell{display:block;min-height:100vh;padding:24px 16px;max-width:560px}.auth-brand{justify-content:center;margin:0 0 24px}.auth-brand .brand-logo{max-width:240px}.auth-intro h2,.auth-intro>p,.auth-intro .auth-accent{display:none}.auth-card{padding:24px}.search-result{grid-template-columns:minmax(0,1fr);gap:8px;padding:16px}.search-result>span:last-child{display:none}.form-actions>*{flex:1}.record-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.record-table,.record-table tbody{display:block;width:100%}.record-table tr{display:block;padding:16px;border-bottom:1px solid var(--ofx-border)}.record-table td{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;gap:16px;border:0;padding:8px 0;white-space:normal;min-width:0;overflow-wrap:anywhere}.record-table td::before{content:attr(data-label);color:var(--muted);font-size:.875rem}.record-table td>*{min-width:0}.record-table td:first-child{font-weight:600}.record-table td a{padding:0}.record-table caption{display:block}body .ofx-context-card,body .ofx-context-notice,body .ofx-actions-list li,body .ofx-actions-empty{padding:16px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.sidebar{transition:none}}

.global-search label{display:block;font-size:.875rem;line-height:1.429;color:var(--muted)}
.mobile-brand{display:none}
@media(max-width:1000px){
 .experience-shell .sidebar{transition:none}
 .experience-shell .topbar{display:grid;grid-template-columns:44px minmax(120px,1fr) auto;height:auto;min-height:128px;gap:8px;padding:8px 16px}
 .experience-shell .topbar>[data-menu]{grid-column:1;grid-row:1}
 .mobile-brand{display:flex;align-items:center;min-height:44px;grid-column:2;grid-row:1;max-width:160px}
 .mobile-brand .brand-logo{width:100%;min-width:120px}
 .experience-shell .topbar>.icon-link{grid-column:3;grid-row:1}
 .experience-shell .global-search{grid-column:1/-1;grid-row:2;max-width:none}
 .create-panel{scroll-margin-top:160px}
}
