@font-face{font-family:Inter;font-style:normal;font-weight:300 700;font-display:swap;src:url('/workspace-assets/fonts/inter-latin.woff2') format('woff2')}
/* Tokens. Light theme only. Spacing follows a 4/8 px rhythm. */
:root{color-scheme:light;
 --ink:#0b1220;--text:#1e2533;--muted:#5b6475;--faint:#8a909e;--line:#e6e8ec;--line-strong:#d4d8df;--bg:#f6f7f9;--surface:#fff;--soft:#f3f4f6;--hover:#f5f6f8;
 --brand:#001736;--brand-deep:#17395c;--accent:#20288a;--accent-bg:#eef1f8;--focus:#3b5bdb;
 --ok:#047857;--ok-bg:#ecfdf5;--ok-line:#10b981;--warn:#b45309;--warn-bg:#fffbeb;--warn-line:#f59e0b;--bad:#b91c1c;--bad-bg:#fef2f2;--bad-line:#ef4444;--info:#1d4ed8;--info-bg:#eff6ff;
 --r-sm:6px;--r:8px;--r-lg:10px;--shadow:0 1px 2px #0b12200d;--shadow-pop:0 10px 30px #0b12201f,0 2px 6px #0b12200f;
 --side:232px;--bar:56px;--ctl:36px;--ease:cubic-bezier(.2,.7,.2,1);
 font:14px/1.5 Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--text);background:var(--surface);font-feature-settings:"tnum" 1,"cv11" 1}
*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased}
h1,h2,h3{color:var(--ink);font-weight:600;letter-spacing:-.01em;line-height:1.3;margin:0}
a{color:var(--accent);text-underline-offset:2px}a:hover{color:var(--brand)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:12px;top:-60px;background:#fff;padding:8px 12px;border:1px solid var(--line);z-index:60}.skip:focus{top:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.i{flex:none}
.small{font-size:13px;color:var(--muted)}.muted{color:var(--faint)}.stack{display:block}.nowrap{white-space:nowrap}
.env-banner{margin:0 0 16px;padding:8px 12px;border:1px solid #fde4b2;border-left:3px solid var(--warn-line);border-radius:var(--r-sm);background:var(--warn-bg);color:#7c2d12;font-size:13px}

/* App shell: top bar, grouped sidebar, content */
.app{display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:var(--bar) minmax(0,1fr);min-height:100vh;background:var(--bg)}
.topbar{grid-column:1/-1;position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:12px;height:var(--bar);padding:0 16px 0 12px;background:var(--surface);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;min-width:calc(var(--side) - 28px);text-decoration:none;color:var(--ink)}
.brand img{display:block;width:50px;height:auto}
.brand span{font-weight:600;font-size:14px;padding-left:10px;border-left:1px solid var(--line);line-height:22px}
.crumbs{display:flex;align-items:center;gap:6px;min-width:0;margin:0;padding:0;list-style:none;font-size:13px;color:var(--muted)}
.crumbs li{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap}
.crumbs li+li::before{content:"/";color:var(--line-strong)}
.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--ink)}
.crumbs [aria-current]{color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis}
.bar-end{margin-left:auto;display:flex;align-items:center;gap:8px}
.account{position:relative}
.account>summary{display:flex;align-items:center;gap:8px;height:36px;padding:0 8px 0 4px;border:1px solid transparent;border-radius:var(--r);cursor:pointer;list-style:none;color:var(--ink)}
.account>summary::-webkit-details-marker{display:none}
.account>summary:hover,.account[open]>summary{background:var(--hover);border-color:var(--line)}
.avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;font-size:12px;font-weight:600;letter-spacing:.02em;flex:none}
.avatar.lg{width:56px;height:56px;font-size:20px}
.account-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500}
.popover{position:absolute;right:0;top:calc(100% + 6px);z-index:50;width:260px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-pop)}
.popover-head{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.popover-head p{margin:0;overflow-wrap:anywhere}.popover-head p+p{font-size:12px;color:var(--muted)}
.popover a,.popover button{display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--text);font:inherit;font-size:13px;text-decoration:none;cursor:pointer;text-align:left}
.popover a:hover,.popover button:hover{background:var(--hover);color:var(--ink)}
.popover form{margin:6px 0 0;padding-top:6px;border-top:1px solid var(--line)}
.sidebar{position:sticky;top:var(--bar);height:calc(100vh - var(--bar));overflow-y:auto;display:flex;flex-direction:column;padding:12px 10px;background:var(--surface);border-right:1px solid var(--line)}
.nav{display:flex;flex-direction:column;gap:1px}
.nav-label{margin:14px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.nav a,.nav summary{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:var(--r-sm);color:var(--muted);font-size:13.5px;font-weight:500;text-decoration:none;cursor:pointer;list-style:none;transition:background .12s,color .12s}
.nav summary::-webkit-details-marker{display:none}
.nav a:hover,.nav summary:hover{background:var(--hover);color:var(--ink)}
.nav a[aria-current=page]{background:var(--accent-bg);color:var(--brand)}
.nav a[aria-current=page] .i,.nav details.current>summary .i{color:var(--brand)}
.nav details.current>summary{color:var(--ink)}
.chev{margin-left:auto;transition:transform .16s var(--ease)}
.nav a.open .chev{transform:rotate(90deg)}
.subnav{display:flex;flex-direction:column;gap:1px;margin:1px 0 4px}
.nav .subnav a{height:30px;padding-left:38px;font-size:13px;font-weight:400}
.side-foot{margin-top:auto;padding-top:12px}
.collapse{display:flex;align-items:center;gap:10px;width:100%;height:32px;padding:0 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--faint);font:inherit;font-size:13px;cursor:pointer}
.collapse:hover{background:var(--hover);color:var(--ink)}
.mobile-nav{display:none}
.content{min-width:0;padding:24px 28px 64px}
.content>*{max-width:1240px;margin-left:auto;margin-right:auto}
/* Collapsed sidebar (set by app.js and remembered per browser) */
.collapsed .app{--side:60px}
.collapsed .nav-label,.collapsed .nav a span,.collapsed .nav summary span,.collapsed .chev,.collapsed .subnav,.collapsed .collapse span{display:none}
.collapsed .nav a,.collapsed .nav summary,.collapsed .collapse{justify-content:center;padding:0}
.collapsed .collapse .i{transform:scaleX(-1)}
.collapsed .brand{min-width:32px}.collapsed .brand span{display:none}

/* Page header */
.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 16px;margin-bottom:20px}
.page-head h1{font-size:22px}
.page-head p{margin:4px 0 0;color:var(--muted);font-size:13.5px;max-width:720px}
.up{display:inline-flex;align-items:center;gap:4px;margin-bottom:6px;font-size:13px;color:var(--muted);text-decoration:none}.up:hover{color:var(--ink)}
.actions,.decisions,.decide,.confirm-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.decisions{margin:0 0 20px}.decisions details{position:relative}
.lead{color:var(--muted);margin:0 0 16px;max-width:720px}
.meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0 0 16px;color:var(--muted);font-size:13px}

/* Panels */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);min-width:0}
.content>.panel,.content>.metrics,.content>.grid2,.content>.cols,.content>.block{margin-bottom:16px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:10px 16px;border-bottom:1px solid var(--line)}
.panel-head h2{font-size:14px}
.panel-head p{margin:0;font-size:12.5px;color:var(--muted)}
.panel-head a{font-size:13px;text-decoration:none}
.panel-body{padding:16px}.panel-body>p{margin:0 0 8px}.panel-body>p:last-child{margin-bottom:0}.panel-body>.figure{margin:2px 0 6px}
.panel-foot{padding:10px 16px;border-top:1px solid var(--line);font-size:13px}
.grid2{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:16px;align-items:start}
.col{display:flex;flex-direction:column;gap:16px;min-width:0}
.col>.panel+.panel{margin-top:0}

/* Metrics */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0}
.metric{padding:14px 16px}
.metric dt{font-size:12.5px;color:var(--muted);font-weight:500}
.metric dd{margin:6px 0 0;font-size:24px;font-weight:600;color:var(--ink);letter-spacing:-.01em;line-height:1.2}
.metric .sub{display:block;margin-top:4px;font-size:12px;font-weight:400;color:var(--muted)}
.delta{font-size:12px;font-weight:500}.delta.up-good{color:var(--ok)}.delta.down{color:var(--muted)}

/* Charts: SVG drawn on the server; numbers are also available as a table */
.chart{display:block;width:100%;height:auto;overflow:visible}
.chart .grid-line{stroke:var(--line)}.chart .axis{fill:var(--faint);font-size:11px}
.chart .s1{fill:var(--brand)}.chart .s2{fill:var(--ok-line)}.chart .empty-line{stroke:var(--line-strong);stroke-dasharray:3 4}
.legend-row{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 8px;padding:0;list-style:none;font-size:12px;color:var(--muted)}
.legend-row li{display:flex;align-items:center;gap:6px}
.key{width:10px;height:10px;border-radius:2px;background:var(--brand)}.key.s2{background:var(--ok-line)}
.chart-empty{margin:0 0 6px;font-size:12.5px;color:var(--muted)}
.data-table{margin-top:8px;font-size:12.5px}.data-table summary{cursor:pointer;color:var(--muted)}
.data-table .table-wrap{max-height:240px;overflow:auto;margin-top:8px}

/* Lists inside panels */
.rows{list-style:none;margin:0;padding:0}
.rows li{border-bottom:1px solid var(--line)}.rows li:last-child{border-bottom:0}
.rows a.row,.rows .row{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 16px;color:var(--text);text-decoration:none}
.rows a.row:hover{background:var(--hover)}
.row-main{flex:1;min-width:0}.row-main strong{display:block;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-main span{display:block;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-end{flex:none;font-size:12.5px;color:var(--muted);text-align:right}
.count{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 7px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:12px;font-weight:600}
.count.hot{background:var(--accent-bg);color:var(--brand)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}.dot.ok{background:var(--ok-line)}.dot.warn{background:var(--warn-line)}.dot.bad{background:var(--bad-line)}.dot.info{background:var(--info)}
.empty-row{padding:20px 16px;color:var(--muted);font-size:13px}
progress.meter{appearance:none;display:block;width:100%;height:6px;margin:6px 0 0;border:0;border-radius:999px;background:var(--soft);overflow:hidden}
progress.meter::-webkit-progress-bar{background:var(--soft);border-radius:999px}progress.meter::-webkit-progress-value{background:var(--ok-line);border-radius:999px}progress.meter::-moz-progress-bar{background:var(--ok-line);border-radius:999px}
.check{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-strong);flex:none;color:#fff}
.check.done{background:var(--ok-line);border-color:var(--ok-line)}
.rows .done-text strong{color:var(--muted);font-weight:400;text-decoration:line-through;text-decoration-color:var(--line-strong)}

/* Feedback */
.notice,.error{display:flex;align-items:flex-start;gap:8px;margin:0 0 16px;padding:10px 12px;border-radius:var(--r);font-size:13.5px}
.notice{background:var(--ok-bg);color:var(--ok);border:1px solid #c6f0dc}.notice.subtle{background:none;border:0;padding:0;margin:0 0 12px}
.error{background:var(--bad-bg);color:var(--bad);border:1px solid #f6caca}
.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.info{background:var(--info-bg);color:var(--info)}.pill.neutral{background:var(--soft);color:var(--muted)}
.pill.plain::before{display:none}
.empty{padding:32px 16px;text-align:center;color:var(--muted)}
.empty-title{color:var(--ink);font-weight:600;margin:0 0 4px}.empty p{margin:0 auto;max-width:440px}.empty .btn{margin-top:14px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--ctl);padding:0 12px;border-radius:var(--r);border:1px solid transparent;font:inherit;font-size:13.5px;font-weight:500;line-height:1;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,box-shadow .12s,transform .08s}
.btn.primary{background:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-deep);color:#fff}
.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow)}.btn.secondary:hover{background:var(--hover);color:var(--ink)}
.btn.danger{background:var(--surface);color:var(--bad);border-color:#efc2c2}.btn.danger:hover{background:var(--bad-bg)}
.btn.ghost{background:none;color:var(--muted)}.btn.ghost:hover{background:var(--hover);color:var(--ink)}
.btn.sm{height:28px;padding:0 10px;font-size:12.5px}
.btn.disabled{background:var(--soft);color:var(--faint);cursor:not-allowed;border-color:var(--line)}
.btn:active{transform:translateY(1px)}
summary.btn{list-style:none}summary.btn::-webkit-details-marker{display:none}
.print-hint{cursor:default}
form.inline{display:inline}
.link-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;font:inherit;font-size:13px;color:var(--accent);cursor:pointer}.link-btn:hover{color:var(--brand)}
.danger-text{color:var(--bad)}

/* Toolbars, segmented controls, tabs, search */
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.toolbar .grow{flex:1 1 220px;min-width:0}
.toolbar input,.toolbar select{height:32px;padding:0 10px;font-size:13px}
.toolbar select{width:auto}
.seg{display:inline-flex;padding:2px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface)}
.seg a{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:var(--r-sm);color:var(--muted);font-size:12.5px;font-weight:500;text-decoration:none}
.seg a:hover{color:var(--ink)}.seg a[aria-current]{background:var(--accent-bg);color:var(--brand)}
.tabs{display:flex;gap:2px;overflow-x:auto;overflow-y:hidden;padding:0 12px;border-bottom:1px solid var(--line);margin:0;scrollbar-width:thin}
.tabs a{display:inline-flex;align-items:center;gap:6px;height:42px;padding:0 10px;color:var(--muted);text-decoration:none;font-size:13px;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .12s,border-color .12s}
.tabs a:hover{color:var(--ink)}.tabs a[aria-current=page]{color:var(--brand);border-color:var(--brand)}
.search{display:flex;flex-wrap:wrap;gap:8px;margin:0;max-width:560px}.search input{flex:1 1 220px}.search label:not(.sr){width:100%;font-size:13px;font-weight:500}

/* Tables */
.table-wrap{overflow-x:auto}
table.list{width:100%;border-collapse:collapse;font-size:13.5px}
table.list th{text-align:left;height:38px;padding:0 12px;font-size:12px;font-weight:600;color:var(--muted);background:#fafbfc;border-bottom:1px solid var(--line);white-space:nowrap}
table.list th a{color:inherit;text-decoration:none}table.list th a:hover{color:var(--ink)}
table.list th[aria-sort] a{color:var(--ink)}
table.list td{height:46px;padding:6px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
table.list tbody tr:last-child td{border-bottom:0}
table.list tbody tr{transition:background .1s}table.list tbody tr:hover{background:#fafbfc}
table.list td a{font-weight:500;text-decoration:none;color:var(--ink)}table.list td a:hover{color:var(--accent);text-decoration:underline}
table.list.compact td,table.list.compact th{height:36px;padding:4px 10px}
.num{text-align:right;white-space:nowrap}
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:10px 12px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.panel>.table-wrap:last-child table.list tbody tr:last-child td{border-bottom:0}

/* Forms */
fieldset{border:0;margin:0;padding:0}
.form-section{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:16px 32px;padding:20px 16px;border-bottom:1px solid var(--line)}
.form-section:last-of-type{border-bottom:0}
.form-section legend,.form-section h2{float:left;font-size:14px;font-weight:600;color:var(--ink);padding:0}
.form-section .section-help{margin:4px 0 0;font-size:12.5px;color:var(--muted)}
.form-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line);background:#fafbfc;border-radius:0 0 var(--r-lg) var(--r-lg)}
legend{font-weight:600;font-size:14px;padding:0 0 4px;color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px}
.field{margin:0 0 14px}
label{display:block;font-size:13px;font-weight:500;color:var(--ink);margin:0 0 5px}
.optional{font-weight:400;color:var(--faint)}
input,select,textarea{width:100%;min-height:var(--ctl);font:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);padding:7px 10px;transition:border-color .12s,box-shadow .12s}
input[type=checkbox],input[type=radio]{width:16px;height:16px;min-height:0;padding:0;accent-color:var(--brand)}
input[type=file]{padding:6px}
textarea{resize:vertical;line-height:1.5}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px #3b5bdb26}
.choice{display:flex;align-items:center;gap:8px;font-weight:400;font-size:13.5px;margin:0 0 8px}.choice input{width:16px}
.hint{margin:5px 0 0;font-size:12px;color:var(--muted)}
.incomplete input,.incomplete select,.incomplete textarea{border-color:#efc684}
.missing-hint{color:var(--warn)}.missing-hint::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warn-line);margin-right:6px;vertical-align:1px}
form>.btn{margin-top:4px}
.row-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.row-form .field{flex:1 1 260px;margin:0}
details>form{margin-top:8px;padding:12px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-pop);min-width:min(320px,86vw)}
.decisions details[open]>form{position:absolute;z-index:20;left:0;top:100%}

/* Records */
.cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px;align-items:start}
.block{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:16px;margin:0 0 16px}
.block h2{font-size:14px;margin:0 0 12px}
.dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px 20px;margin:0}
.dl dt{font-size:12px;color:var(--muted)}.dl dd{margin:3px 0 0;overflow-wrap:anywhere;color:var(--ink)}
.dl.review{max-width:640px}
.figure{font-size:22px;font-weight:600}
.checklist{margin:0 0 16px;padding:12px 14px;border:1px solid #fde4b2;border-left:3px solid var(--warn-line);border-radius:var(--r);background:var(--warn-bg)}.checklist p{margin:0 0 4px}.checklist ul{margin:0;padding-left:18px;color:#7c2d12;font-size:13px}
.steps{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0 0 16px;gap:4px 0;font-size:13px;color:var(--faint);counter-reset:s}
.steps li{display:flex;align-items:center;gap:8px;padding-right:20px;position:relative}
.steps li::before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface);font-size:12px;transition:background .2s,color .2s}
.steps li.done{color:var(--muted)}.steps li.done::before{content:"✓";background:var(--ok-bg);border-color:#bfe9d4;color:var(--ok)}
.steps li.now{color:var(--ink);font-weight:500}.steps li.now::before{background:var(--brand);border-color:var(--brand);color:#fff}
.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}.timeline li:last-child{border-bottom:0}.timeline p{margin:2px 0 0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:2px;height:24px;padding:0 4px 0 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:12.5px}
.chip .btn.chip-x{height:20px;width:20px;margin:0;border:0;background:none;color:var(--faint);font:inherit;font-size:14px;line-height:1;padding:0;border-radius:50%;cursor:pointer;box-shadow:none}.chip .btn.chip-x:hover{color:var(--bad);background:var(--bad-bg)}
.grant{margin-top:6px;position:relative}
.legend{margin:0 0 16px}.legend summary{cursor:pointer;font-size:13px;color:var(--accent)}
.created{margin:0 0 16px;padding:14px 16px;border:1px solid #c6f0dc;border-radius:var(--r-lg);background:var(--ok-bg)}.created p{margin:0 0 8px}
.code{font:600 18px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;color:var(--ink)}
.kbd{font:12px ui-monospace,SFMono-Regular,Consolas,monospace;padding:1px 6px;border:1px solid var(--line);border-radius:4px;background:var(--soft)}
.revoke{margin:16px 0;position:relative}
.reference-photo{display:block;object-fit:cover;border-radius:var(--r);margin:0 0 12px}.block form+form{margin-top:8px}

/* Roles: permission matrix */
.matrix{width:100%;border-collapse:collapse;font-size:13.5px}
.matrix th,.matrix td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.matrix thead th{font-size:12px;color:var(--muted);background:#fafbfc}
.matrix .module th{padding-top:14px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);background:var(--surface)}
.matrix td.tick{width:48px;text-align:center}
.matrix label{display:flex;align-items:center;gap:10px;margin:0;font-weight:400;cursor:pointer}
.matrix .needs{display:block;font-size:12px;color:var(--faint)}
.matrix tr.off td{color:var(--faint)}
.matrix tr[hidden]{display:none}
.diff{list-style:none;margin:0;padding:0}.diff li{display:flex;gap:8px;align-items:baseline;padding:4px 0;font-size:13.5px}
.diff .add{color:var(--ok);font-weight:600}.diff .rem{color:var(--bad);font-weight:600}

/* Profile */
.profile-head{display:flex;align-items:center;gap:16px}
.profile-head h2{font-size:18px}
.kv{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);margin:0}
.kv dt,.kv dd{margin:0;padding:9px 16px;border-bottom:1px solid var(--line)}
.kv dt{color:var(--muted);font-size:13px}.kv dd{color:var(--ink)}
.kv dt:last-of-type,.kv dd:last-of-type{border-bottom:0}

/* Membership card: provisional print layout at CR80 size */
.card-sheet{display:flex;flex-wrap:wrap;gap:18px;margin:16px 0 22px}
.idcard{position:relative;width:85.6mm;height:54mm;border:1px solid #cfd4dd;border-radius:3.2mm;padding:4mm;background:#fff;overflow:hidden;font-size:2.6mm;line-height:1.3}
.idcard-front{display:grid;grid-template-columns:1fr 22mm;grid-template-rows:auto 1fr;gap:1.5mm 3mm}
.idcard-logo{width:16mm;height:auto;grid-column:1}
.idcard-body{grid-column:1;align-self:end}
.idcard-qr{grid-column:2;grid-row:1/3;width:22mm;height:22mm;align-self:end}
.idcard-kind{margin:0;font-size:2.1mm;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.idcard-name{margin:.5mm 0;font-size:3.6mm;font-weight:600}.small-name{font-size:3.2mm}
.idcard-no{margin:.5mm 0;font-weight:600;letter-spacing:.04em;color:var(--brand)}
.idcard-line{margin:0}
.idcard-return{position:absolute;left:4mm;right:4mm;bottom:4mm;margin:0;font-size:2.1mm;color:var(--muted)}
.idcard-void{position:absolute;inset:auto 0 45% 0;transform:rotate(-12deg);text-align:center;font-weight:700;font-size:4mm;color:var(--bad);opacity:.75}
.card-stage{padding:16px}

/* Public verification and updates (no workspace chrome) */
.verify,.public{max-width:600px;margin:0 auto;padding:40px 20px 60px;font-size:15px}
.verify-logo{display:block;width:120px;height:auto;margin:0 0 22px}
.verify-state{font-size:24px;font-weight:600;margin:0 0 6px}.verify-state.ok{color:var(--ok)}.verify-state.bad{color:var(--bad)}.verify-state.warn{color:var(--warn)}
.feed{list-style:none;padding:0;margin:0}.feed li{border-top:1px solid var(--line);padding:18px 0}.feed h2{font-size:18px}.feed a{text-decoration:none}
.public article p,.preview article p{line-height:1.7}.lede{font-size:17px;color:var(--muted)}
.public h1{font-size:28px;margin:0 0 6px}.public .back{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:18px}
.preview article{max-width:640px;margin:0 auto;padding:8px 0;font-size:15px}.preview h3{font-size:26px;margin:0 0 6px;color:var(--ink)}
.preview-frame{padding:24px;background:linear-gradient(#fbfcfd,#fff)}
.preview-date{font-size:13px;color:var(--muted);margin:0 0 14px}

/* Member portal */
.member-portal{max-width:560px;margin:48px auto;padding:24px;font-size:15px}.member-portal h1{font-size:26px}.member-portal .verify-logo{width:100px;height:auto}.member-portal form{margin:24px 0}.member-portal input{width:100%;margin:8px 0 20px}.member-balance{font-size:44px;line-height:1.2;margin:36px 0 8px;color:#001736;font-variant-numeric:tabular-nums}.member-balance span{display:block;font-size:14px;color:#717182}.member-history{padding:0;list-style:none}.member-history li{padding:20px 0;border-bottom:1px solid #eceef2}
.member-portal .policy-check{font-size:13px;margin:18px 0}.member-portal .policy-check input{display:inline-block;width:auto;min-height:0;margin:0 8px 0 0}

/* Tablet and phone: one column, the sidebar becomes a menu under the top bar */
@media (max-width:1100px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.grid2{grid-template-columns:1fr}}
@media (max-width:900px){
 .app,.collapsed .app{grid-template-columns:1fr}
 .sidebar{display:none}
 .brand{min-width:0}.brand span{display:none}
 .crumbs li:not(:last-child){display:none}.crumbs li+li::before{display:none}
 .mobile-nav{display:block;position:static}
 .mobile-nav>summary{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;list-style:none;color:var(--ink)}
 .mobile-nav>summary::-webkit-details-marker{display:none}
 .mobile-nav[open]>summary{background:var(--hover)}
 .mobile-nav .drawer{position:fixed;left:0;right:0;top:var(--bar);bottom:0;z-index:45;overflow-y:auto;padding:8px 12px 24px;background:var(--surface);border-top:1px solid var(--line)}
 .mobile-nav .nav a,.mobile-nav .nav summary{height:42px;font-size:14.5px}
 .mobile-nav .nav .subnav a{height:38px}
 .account-name{display:none}
 .content{padding:16px 16px 48px}
 .cols{grid-template-columns:1fr}
 .form-section{grid-template-columns:1fr;gap:8px}
 .form-section legend,.form-section h2{float:none}
 .kv{grid-template-columns:1fr}.kv dt{padding-bottom:0;border-bottom:0}.kv dd{padding-top:4px}
 table.list .hide-sm{display:none}
}
@media (max-width:560px){.metrics{grid-template-columns:1fr 1fr;gap:8px}.metric{padding:12px}.metric dd{font-size:20px}.page-head h1{font-size:20px}.popover{width:min(280px,calc(100vw - 24px))}}

/* Motion: 120-300 ms, never delays an action, and off for reduced motion. No transforms are left
   behind on containers (a retained transform would trap the card's fullscreen overlay). */
@media (prefers-reduced-motion:no-preference){
 .notice,.error{animation:enter .22s var(--ease) backwards}
 details[open]>form,.popover,.decisions details[open]>form{animation:drop .14s var(--ease) backwards}
 .mobile-nav[open] .drawer{animation:fade .16s ease-out backwards}
 .nav details[open] .subnav{animation:drop .16s var(--ease) backwards}
 @keyframes enter{from{opacity:0;translate:0 4px}}
 @keyframes drop{from{opacity:0;translate:0 -4px}}
 @keyframes fade{from{opacity:0}}
 @keyframes rise{from{transform:scaleY(.2);opacity:.4}}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
#card-studio{animation:none;transform:none;translate:none;contain:none}
.content>.card-host{animation:none}

/* Print: only the content, and cards at their real size */
@media print{
 .topbar,.sidebar,.skip,.actions,.decisions,.tabs,.toolbar,.search,.up,.revoke,.notice,.pager,form{display:none!important}
 .app{display:block;background:#fff}.content{padding:0}.panel,.block{box-shadow:none}
 .card-sheet{gap:6mm}.idcard{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 *{animation:none!important;transition:none!important}
}

/* Clean, flat pass: white surfaces, hairline borders, light grey section headers, no shadows. */
:root{--bg:#fff;--line:#e5e7eb;--line-strong:#d1d5db;--shadow:none;--ctl:32px;--r:6px;--r-lg:8px;font-size:13px}
.app{background:#fff}.sidebar{background:#fafafa}
.nav a,.nav summary{height:32px;font-size:13px;font-weight:400;color:#374151}
.nav a[aria-current=page]{background:#ececef;color:var(--ink);font-weight:500}
.nav-label{font-size:11px;letter-spacing:.04em;margin:16px 10px 4px}
.content{padding:28px 40px 64px}.content>*{max-width:1100px}
.page-head{margin-bottom:16px}.page-head h1{font-size:20px;font-weight:600}
.panel,.block{box-shadow:none;border-color:var(--line);border-radius:8px}
.panel-head{min-height:40px;padding:8px 16px;background:#fafafa;border-radius:8px 8px 0 0}
.panel-head h2{font-size:13px;font-weight:600}
.metric{padding:12px 16px}.metric dt{font-size:12px}.metric dd{font-size:20px;margin-top:4px}
.btn{height:32px;font-size:13px;padding:0 12px;border-radius:6px}.btn.secondary{box-shadow:none}
.btn.sm{height:28px}
table.list{font-size:13px}table.list th{height:36px;font-size:12px;font-weight:500;background:#fafafa}table.list td{height:40px}
.tabs a{height:38px;font-size:13px}
input,select,textarea{font-size:13px;min-height:32px;border-radius:6px}
.form-section{display:block;padding:0;border-bottom:1px solid var(--line)}
.form-section>div:first-child{padding:8px 16px;background:#fafafa;border-bottom:1px solid var(--line)}
.form-section legend{float:none;font-size:13px}
.form-section>div:last-child{padding:16px}
.form-actions{background:#fff}
.kv dt,.kv dd{padding:8px 16px}
.pill{height:20px;font-size:11.5px}
.env-banner{font-size:12px;padding:6px 10px}
@media (max-width:900px){.content{padding:16px 16px 48px}}

/* Native route morphing stays disabled after prior browser failures. Feedback never delays navigation. */
:root{view-transition-name:none}
.brand img{view-transition-name:ltop-brand}
.page-head h1{view-transition-name:ltop-page-title}
@media(prefers-reduced-motion:no-preference) and (update:fast){
 @view-transition{navigation:none}
 ::view-transition-group(*){animation-duration:200ms;animation-timing-function:cubic-bezier(.2,.7,.2,1)}
 ::view-transition{pointer-events:none}
 .btn,.nav a,.nav summary,.tabs a,.metric{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease,box-shadow 160ms ease}
 .nav details[open] .subnav{animation:none}
 .plot-bar{transform-origin:bottom;animation:ltop-bar-in 240ms ease-out}
 @keyframes ltop-bar-in{from{transform:scaleY(.96)}}
}
@media(prefers-reduced-motion:reduce),(update:slow){@view-transition{navigation:none}}
form[aria-busy=true] button[type=submit]{cursor:progress}

@media(max-width:600px){table.session-list{display:block;min-width:0}table.session-list thead{display:none}table.session-list tbody,table.session-list tr{display:block}table.session-list td{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:40px;height:auto;padding:8px 0;text-align:right;white-space:normal}table.session-list td::before{content:attr(data-label);color:var(--muted);text-align:left}table.session-list tr+tr{border-top:1px solid var(--line)}table.session-list td form{margin:0}}

.nav details[open]>summary .chev{transform:rotate(90deg)}

/* Bot check status row (member pages) */
.security-check{margin:16px 0;min-width:0}.check-row{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 12px;border:1px solid #e6e7e9;border-radius:8px;background:#fafafa;font-size:13px;line-height:1.3;color:#0b1220;transition:border-color .2s,background .2s}.check-row svg{flex:none;color:#20288a}.check-row>span:first-of-type{white-space:nowrap}.check-state{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#5b6475;white-space:nowrap}.check-state:before{content:'';width:12px;height:12px;border-radius:50%;border:2px solid #d6d9df;border-top-color:#20288a;animation:check-spin .8s linear infinite}.security-check[data-state=ok] .check-row{border-color:#c6f0dc;background:#f3fcf7}.security-check[data-state=ok] .check-state{color:#047857}.security-check[data-state=ok] .check-state:before{animation:none;width:8px;height:8px;border:0;background:#10b981}.security-check[data-state=action] .check-state{color:#b45309}.security-check[data-state=action] .check-state:before{animation:none;width:8px;height:8px;border:0;background:#f59e0b}.security-check[data-state=error] .check-row{border-color:#f6caca;background:#fef6f6}.security-check[data-state=error] .check-state{color:#b91c1c}.security-check[data-state=error] .check-state:before{animation:none;width:8px;height:8px;border:0;background:#ef4444}.check-row a{font-size:12px;color:#20288a;margin-left:6px}.check-by{margin:6px 0 0;font-size:11px;color:#8a909e;text-align:right;line-height:1.4}.cf-turnstile:not(:empty){margin-top:10px}@keyframes check-spin{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.check-state:before{animation:none}}
.member-portal .qr{display:block;margin:16px 0;border:1px solid #eceef2;border-radius:8px}.member-portal .codes,.member-portal .secret{display:block;margin:16px 0;padding:12px 14px;border:1px solid #eceef2;border-radius:8px;background:#f8f9fb;font:14px/1.8 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all}.member-portal h2{font-size:17px;margin:28px 0 8px}

/* Public member entry: compact controls and stable, reduced-motion-aware step transitions. */
.member-portal{width:calc(100% - 32px);max-width:480px;margin:40px auto;padding:24px 12px}.member-portal form{margin:24px 0 16px}.member-portal input,.member-portal select{box-sizing:border-box;max-width:100%;min-height:44px}.member-portal select{display:block;width:100%;margin:8px 0 20px;padding:10px 12px;border:1px solid #d0d7e2;border-radius:8px;background:#fff;font:inherit}.member-portal .btn.primary,.member-portal form>button[type=submit]{width:100%;justify-content:center;min-height:44px}.member-forgot{display:block;width:max-content;max-width:100%;margin:-8px 0 20px auto;font-size:13px}.member-auth-links{text-align:center;font-size:14px}.member-home{display:block;text-align:center;margin-top:24px;font-size:13px}.member-intro{color:#657086;font-size:14px}.member-steps{display:flex;list-style:none;gap:8px;justify-content:space-between;padding:0;margin:24px 0 32px}.member-steps li{display:grid;gap:6px;justify-items:center;font-size:11px;color:#737e90}.member-steps span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#f0f3f7;color:#667085;font-size:12px}.member-steps [aria-current=step]{color:#001736;font-weight:600}.member-steps [aria-current=step] span{background:#001736;color:#fff}.member-portal>h1{font-size:24px}.member-portal>form,.member-portal>.member-steps{animation:member-enter .18s ease-out both}@keyframes member-enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.member-portal>form,.member-portal>.member-steps{animation:none}}@media(max-width:520px){.member-portal{margin:16px auto;padding:16px 4px}.member-portal>h1{font-size:22px}}

.member-area{margin:24px 0;padding:16px;border-radius:10px;background:#f5f7fa}.member-area h2{margin:0 0 8px}.member-area .btn{white-space:normal;text-align:left}.member-area [hidden]{display:none}

.invoice-fields>label{display:block;margin:0 0 6px}.invoice-fields>input,.invoice-fields>select{margin:0 0 16px;min-height:40px}.invoice-fields>input:last-of-type{margin-bottom:8px}@media(max-width:560px){.invoice-fields>input,.invoice-fields>select{min-height:44px}}
