@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/ibm-plex-mono-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/ibm-plex-mono-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/ibm-plex-mono-normal-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/ibm-plex-mono-normal-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/literata-italic-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/literata-italic-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/literata-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/literata-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/literata-normal-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/literata-normal-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/public-sans-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/public-sans-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/public-sans-normal-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/public-sans-normal-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/public-sans-normal-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/public-sans-normal-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/public-sans-normal-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/public-sans-normal-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Ketju Research — design system (see DESIGN.md) */
:root{
  --paper:#F6F7F8; --surface:#ECEFF1; --ink:#22262B; --muted:#5B646E;
  --hair:#D3D9DE; --control-border:#6F7D89; --rule:#22262B; --brand:#33506B; --brand-ink:#33506B;
  --approved:#3D6B4F; --warning:#765B16; --review:#4A5C6A; --rejected:#8C3A2B;
  --row-hover:rgba(36,44,52,.045);
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:20px; --space-6:24px; --space-7:32px; --space-8:40px;
  --space-9:48px; --space-10:64px;
  /* Major-third type scale: 12.8 × 1.25ⁿ. */
  --type-caption:12.8px; --type-body:16px; --type-subheading:20px;
  --type-heading:25px; --type-title:31.25px; --type-display:39.0625px;
  --type-display-lg:48.8281px;
  --page-gutter:var(--space-4);
  --content-width:1120px; --radius-surface:0; --radius-control:2px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root{
    color-scheme:dark;
    --paper:#181D23; --surface:#1F262E; --ink:#E7E9EC; --muted:#9AA3AC;
    --hair:#39424C; --control-border:#748391; --rule:#C9CDD2; --brand:#97AABD; --brand-ink:#97AABD;
    --approved:#6FA284; --warning:#D2AF62; --review:#8FA3B5; --rejected:#C97B68;
    --row-hover:rgba(232,230,224,.05);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --paper:#181D23; --surface:#1F262E; --ink:#E7E9EC; --muted:#9AA3AC;
  --hair:#39424C; --control-border:#748391; --rule:#C9CDD2; --brand:#97AABD; --brand-ink:#97AABD;
  --approved:#6FA284; --warning:#D2AF62; --review:#8FA3B5; --rejected:#C97B68;
  --row-hover:rgba(232,230,224,.05);
}
:root[data-theme="light"]{
  color-scheme:light;
  --paper:#F6F7F8; --surface:#ECEFF1; --ink:#22262B; --muted:#5B646E;
  --hair:#D3D9DE; --control-border:#6F7D89; --rule:#22262B; --brand:#33506B; --brand-ink:#33506B;
  --approved:#3D6B4F; --warning:#765B16; --review:#4A5C6A; --rejected:#8C3A2B;
  --row-hover:rgba(36,44,52,.045);
}
*{box-sizing:border-box;margin:0;padding:0;min-width:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{transition:none!important;animation:none!important} }
body{background:var(--paper);color:var(--ink);font-family:'Public Sans',system-ui,sans-serif;font-size:var(--type-body);line-height:1.5;overflow-wrap:break-word}
.wrap{width:100%;max-width:calc(var(--content-width) + var(--page-gutter) + var(--page-gutter));margin:0 auto;
  padding-left:calc(var(--page-gutter) + env(safe-area-inset-left));
  padding-right:calc(var(--page-gutter) + env(safe-area-inset-right))}
@media(min-width:768px){:root{--page-gutter:var(--space-6)}}
@media(min-width:1440px){:root{--page-gutter:var(--space-7)}}
a{color:var(--brand-ink);text-decoration:none;cursor:pointer}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
button,a,summary,select,input[type="checkbox"],input[type="radio"]{-webkit-tap-highlight-color:transparent}
button:not(:disabled),.cta,.cta2,.navcta,.copybtn,.fbtn,summary{transition:transform 120ms ease-in-out}
button:not(:disabled):active,.cta:active,.cta2:active,.navcta:active,.copybtn:active,.fbtn:active,summary:active{transform:translateY(1px)}
button:disabled,[aria-disabled="true"]{opacity:.55;cursor:not-allowed!important;pointer-events:none}
button,summary,.cta,.cta2,.navcta,.copybtn,.fbtn{min-height:44px}
button,summary,.cta,.cta2,.navcta,.copybtn,.fbtn{min-width:44px}
input:not([type="checkbox"]):not([type="radio"]),select{min-height:44px}
nav a,footer a,.vname,.relatedgrid a{display:inline-flex;align-items:center;min-width:44px;min-height:44px}
@media(hover:hover){
  button:not(:disabled):hover{background:var(--surface)}
  select:hover,input:hover,textarea:hover{border-color:var(--ink)}
  #navToggle:hover,.linkbtn:hover{color:var(--brand-ink)}
}

/* masthead — identical on every page (trunk test) */
header{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:2px solid var(--rule)}
.mast{display:flex;align-items:center;gap:var(--space-3);padding-top:calc(var(--space-2) + env(safe-area-inset-top));padding-bottom:var(--space-2);min-height:44px}
.brand{display:flex;align-items:center;gap:var(--space-2);min-width:44px;min-height:44px;color:var(--ink)}
.brand:hover{text-decoration:none}
.mark{flex:none}
.wordmark{font-weight:700;font-size:var(--type-body);letter-spacing:.06em;white-space:nowrap}
.wordmark span{font-weight:400;color:var(--muted);letter-spacing:normal}
nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
  background:var(--paper);border-bottom:2px solid var(--rule);
  padding:var(--space-1) calc(var(--page-gutter) + env(safe-area-inset-right)) var(--space-4) calc(var(--page-gutter) + env(safe-area-inset-left));font-size:var(--type-body)}
nav a{color:var(--muted);padding:var(--space-3) 0;border-radius:var(--radius-control);white-space:nowrap;border-bottom:1px solid var(--hair)} /* 44px touch targets */
nav a:last-child{border-bottom:none}
nav a:hover{color:var(--ink);text-decoration:none}
nav a[aria-current="page"]{color:var(--ink);font-weight:600;box-shadow:inset 0 -2px 0 var(--brand)}
.navform{display:contents}
.navcta{color:var(--paper);background:var(--rule);font-weight:600;font-size:var(--type-body);
  padding:var(--space-2) var(--space-3);margin-left:auto;border-radius:var(--radius-control);white-space:nowrap}
.navcta:hover{background:var(--brand);color:var(--paper);text-decoration:none}
/* Mobile: the nav collapses behind a hamburger, but Sign up stays pinned in
   the sticky bar — the persistent CTA without a second sticky layer. The
   menu panel drops below the masthead, full width, one link per row. */
#navToggle{display:block;margin-left:auto;padding:var(--space-3) var(--space-2);color:var(--ink)}
.wordmark span{display:none}
header.nav-open nav{display:flex}
@media(min-width:768px){
  .wordmark span{display:inline}
}
@media(min-width:1024px){
  #navToggle{display:none}
  nav{position:static;margin-left:auto;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;
    align-items:center;gap:var(--space-1);padding:0;background:transparent;border:0}
  nav a{padding:var(--space-3) var(--space-2);border-bottom:0}
  .navcta{margin-left:var(--space-2);padding:var(--space-2) var(--space-3)}
}

/* page chrome */
main{min-height:60vh}
section{padding:var(--space-7) 0 var(--space-2);scroll-margin-top:var(--space-10)}
.eyebrow{font-size:var(--type-caption);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--brand-ink);margin-bottom:var(--space-1)}
h1,h2,h3{text-wrap:balance}
h1.page{font-weight:600;font-size:var(--type-title);line-height:1.15}
h2{font-weight:600;font-size:var(--type-heading);line-height:1.2}
h3{font-weight:600;font-size:var(--type-subheading);line-height:1.2}
.sectionrule{border:none;border-top:2px solid var(--rule);margin:var(--space-3) 0 0}
.lede{color:var(--muted);max-width:68ch;margin-top:var(--space-2)}
.crumb{font-size:var(--type-body);margin:var(--space-4) 0 0}
.crumb a{color:var(--muted)}
.prosepage .sectionrule+h2{margin-top:var(--space-6)}
.prosepage .thesis+h2{margin-top:var(--space-7)}
.prosepage>.pricenote{display:block;max-width:70ch;margin-top:var(--space-7)}

/* live board */
.boardbar{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-1)}
.asof{font-size:var(--type-caption);color:var(--muted);font-variant-numeric:tabular-nums}
.asof .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--muted);margin-right:var(--space-1);vertical-align:1px}
.asof.live .dot{background:var(--approved)}
.covchip{font-size:var(--type-caption);color:var(--muted)}
.covchip b{color:var(--ink);font-variant-numeric:tabular-nums}

/* verdict text */
.verdict{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;padding-left:var(--space-2);border-left:3px solid;white-space:nowrap}
.v-approved{color:var(--approved);border-color:var(--approved)}
.v-limited{color:var(--approved);border-color:var(--approved);border-left-style:double;border-left-width:4px}
.v-review{color:var(--review);border-color:var(--review)}
.v-rejected{color:var(--rejected);border-color:var(--rejected)}
/* Not approved: no finding against quality, so no semantic color. */
.v-none{color:var(--muted);border-color:var(--control-border)}
.verdictwhy{font-size:var(--type-caption);color:var(--muted);margin-left:var(--space-2)}
.flag{font-size:var(--type-caption);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--rejected)}

/* tables */
table{display:block;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border-collapse:collapse;margin-top:var(--space-3)}
th{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);text-align:left;padding:var(--space-2) var(--space-3) var(--space-2) 0;border-bottom:1px solid var(--rule)}
td{padding:var(--space-2) var(--space-3) var(--space-2) 0;border-bottom:1px solid var(--hair);vertical-align:top;font-size:var(--type-body)}
td.num,th.num{text-align:right;padding-right:var(--space-1);font-variant-numeric:tabular-nums}
.mono{font-family:'IBM Plex Mono',monospace;font-size:var(--type-caption);font-variant-numeric:tabular-nums}
tr.vrow:hover{background:var(--row-hover)}
.vname{font-weight:500;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair)}
.vname:hover{border-color:var(--brand);text-decoration:none}
.sub{font-size:var(--type-caption);color:var(--muted)}
.spark{vertical-align:-3px;margin-right:var(--space-2);color:var(--muted)}
.hidesm{display:none}
@media(min-width:768px){table{display:table;overflow:visible}.hidesm{display:revert}}

/* This week — the Board's motion strip. Severity is semantic: critical
   oxide, warn slate, memo/info hairline. Live value changes tick once. */
.marketrefs{margin-top:var(--space-2)}
.marketrefs summary,.weekstrip summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--space-3);color:var(--muted)}
.marketrefs summary::-webkit-details-marker,.weekstrip summary::-webkit-details-marker{display:none}
.marketrefs summary:after,.weekstrip summary:after{content:"+";margin-left:auto;font-family:'IBM Plex Mono',monospace;color:var(--muted)}
.marketrefs[open] summary:after,.weekstrip[open] summary:after{content:"−"}
.marketrefs summary{font-size:var(--type-caption)}
.marketrefs .refline{margin-top:var(--space-2)}
.weekstrip{margin-top:var(--space-3);border-top:2px solid var(--rule);padding-top:var(--space-2)}
.weekstrip .kt{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.weekstrip ul{margin:0;padding:0}
.weekstrip>ul{margin-top:var(--space-2)}
.weekstrip li{list-style:none;font-size:var(--type-body);padding:var(--space-1) 0 var(--space-1) var(--space-3);border-left:2px solid var(--hair);margin-bottom:var(--space-1);max-width:75ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.weekstrip .wsub li{white-space:normal}
.weekstrip li.sev-critical{border-color:var(--rejected)}
.weekstrip li.sev-warn{border-color:var(--warning)}
.sevlabel{display:inline-block;min-width:7.5ch;margin-right:var(--space-2);font-size:var(--type-caption);font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.sev-critical .sevlabel{color:var(--rejected)}
.sev-warn .sevlabel{color:var(--warning)}
.sev-info .sevlabel{color:var(--muted)}
.wday{font-size:var(--type-caption);color:var(--muted);margin-left:var(--space-1)}
.wknote{font-size:var(--type-caption);color:var(--muted)}
.refline{font-size:var(--type-caption);color:var(--ink);margin-top:var(--space-2);line-height:1.9}
.wsub{margin:var(--space-1) 0 0;padding:0}
.wsub li{border-left-color:var(--hair)}
.d7{font-size:var(--type-caption);color:var(--muted);margin-left:var(--space-1)}
.tick{animation:tickfade 600ms ease-out}
@keyframes tickfade{from{opacity:.55}to{opacity:1}}

/* filters */
.filters{display:flex;gap:var(--space-2);align-items:center;margin-top:var(--space-4);flex-wrap:wrap}
.filters input{flex:1 1 200px;width:min(100%,200px);font:inherit;font-size:var(--type-body);color:var(--ink);background:var(--paper);border:1px solid var(--control-border);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control)}
.filters input:focus{outline:none;border-color:var(--brand)}
.filters input:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.door .herocopy{max-width:none}.doorform{display:flex;gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap}.doorform input{flex:1 1 320px;min-height:44px;font:inherit;font-size:var(--type-body);color:var(--ink);background:var(--paper);border:1px solid var(--control-border);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control)}.doorform input:focus{outline:none;border-color:var(--brand)}.doorform input:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.doortry{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2)}.doorchip{font:inherit;font-size:var(--type-caption);color:var(--brand);background:none;border:1px solid var(--hair);border-radius:var(--radius-control);padding:2px var(--space-2);min-height:28px;cursor:pointer}.doorchip:hover,.doorchip:focus-visible{border-color:var(--brand);outline:none}.doorout{margin-top:var(--space-4)}.doorcard{border:1px solid var(--hair);border-top:2px solid var(--rule);background:var(--paper);padding:var(--space-4);border-radius:var(--radius-surface);margin-bottom:var(--space-3);max-width:70ch}.doorcard h2{font-size:var(--type-heading);margin:var(--space-1) 0 var(--space-2)}.doorcard dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-1) var(--space-4);margin:0 0 var(--space-3)}.doorcard dt{font-size:var(--type-caption);color:var(--muted)}.doorcard dd{margin:0}.doorcard table{margin:var(--space-2) 0 var(--space-3)}@media (max-width:480px){.doorcard dl{grid-template-columns:1fr}}
.fbtn{font-size:var(--type-caption);color:var(--muted);border:1px solid var(--control-border);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control)}
.fbtn:hover{color:var(--ink)}
.fbtn.on{color:var(--paper);background:var(--rule);border-color:var(--rule)}
.count{font-size:var(--type-caption);color:var(--muted);margin-left:auto;font-variant-numeric:tabular-nums}

/* pricing */
.pricefig{margin-top:var(--space-6);line-height:1.15}
.pricefig b{font-weight:600;font-size:clamp(var(--type-title),4vw,var(--type-display));font-variant-numeric:tabular-nums}
.pricefig .per{font-size:var(--type-body);color:var(--muted);margin-left:var(--space-2)}
.pricefig .pricenote{display:inline-block;margin-top:var(--space-2);font-size:var(--type-body);color:var(--muted)}

/* memo pages */
.thesis{font-family:'Literata',serif;font-size:var(--type-body);line-height:1.65;max-width:70ch;margin-top:var(--space-4)}
.kills{margin-top:var(--space-5);max-width:70ch}
.kills .kt{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--space-1)}
.kills li{list-style:none;font-size:var(--type-body);padding:var(--space-1) 0 var(--space-1) var(--space-3);border-left:2px solid var(--rejected);margin-bottom:var(--space-1)}
.kills .watchline{font-size:var(--type-caption);color:var(--muted);margin:var(--space-2) 0 0;padding:0;border:0;max-width:70ch}
.reviewqueue{margin-top:var(--space-5)}.reviewqueue td.sovnote{max-width:52ch}.watchsummary{margin-top:var(--space-3)}
.metagrid{display:flex;gap:var(--space-7);flex-wrap:wrap;margin-top:var(--space-4);padding:var(--space-3) 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.metagrid .m .l{font-size:var(--type-caption);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.metagrid .m .v{font-size:var(--type-body);margin-top:var(--space-1)}
.cadnote{font-size:var(--type-caption);color:var(--muted);max-width:70ch;margin-top:var(--space-2)}

/* learn */
.learn h2{margin-top:var(--space-7)}
.learn p{max-width:68ch;margin-top:var(--space-2);font-family:'Literata',serif;font-size:var(--type-body);line-height:1.65}
.learn .keyline{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--hair);border-top:2px solid var(--rule);max-width:68ch;font-size:var(--type-body)}

/* mandates / about blocks */
.mgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0 var(--space-7);margin-top:var(--space-2)}
.mand{padding:var(--space-4) 0;border-bottom:1px solid var(--hair)}
.mand h2,.mand h3{font-size:var(--type-subheading);font-weight:600;line-height:1.2}
.mand .obj{font-size:var(--type-body);color:var(--muted);margin:var(--space-1) 0 var(--space-2);line-height:1.5}
.mand .alloc{font-family:'IBM Plex Mono',monospace;font-size:var(--type-caption);line-height:1.7}
.mand .trade{font-size:var(--type-caption);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--hair);line-height:1.5}
.mand .trade b{font-size:var(--type-caption);letter-spacing:.08em;text-transform:uppercase;display:block;margin-bottom:var(--space-1);color:var(--muted)}
.sovnote{font-size:var(--type-caption);color:var(--muted)}

/* footer — identical on every page */
footer{margin-top:var(--space-9);border-top:2px solid var(--rule);padding-top:var(--space-6);padding-bottom:calc(var(--space-9) + env(safe-area-inset-bottom));font-size:var(--type-caption);color:var(--muted);line-height:1.6}
footer .fnav{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-3)}
footer .fnav a{color:var(--muted);padding:var(--space-1) 0}
footer .disc{max-width:75ch}

.sov{padding-left:var(--space-5)}

/* Ketju marketing */
.hero{padding:var(--space-7) 0 var(--space-2);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:center}
.hero .countstrip{grid-column:1/-1}
@media(min-width:1024px){.hero{grid-template-columns:minmax(0,1fr) minmax(0,440px);column-gap:var(--space-9);padding-top:var(--space-10)}}

/* Live Board excerpt — the product itself in the hero, not a screenshot.
   Framed as a terminal pane: hairline box, live dot, real rows that the
   same /api/live hydration keeps current. */
.heroboard{border:1px solid var(--hair);border-top:2px solid var(--rule);padding:var(--space-3) var(--space-4);background:var(--paper);border-radius:var(--radius-surface)}
.heroboard table{margin-top:var(--space-2)}
.heroboard td{font-size:var(--type-caption);padding:var(--space-1) var(--space-2) var(--space-1) 0}
.heroboard th{font-size:var(--type-caption)}
.heroboard .verdict{font-size:var(--type-caption)}
.hb-cap{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.hb-cap .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--approved);margin-right:var(--space-2);vertical-align:1px}
.hb-note{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2)}
.hero .big{font-weight:600;font-size:clamp(var(--type-title),5vw,var(--type-display-lg));line-height:1.15;text-wrap:balance}
.hero .big b{color:var(--brand-ink)}
.hero .sub{color:var(--muted);max-width:62ch;margin-top:var(--space-4);font-size:var(--type-body)}
.cta{display:inline-block;margin-top:var(--space-5);background:var(--rule);color:var(--paper);padding:var(--space-3) var(--space-5);font-weight:600;font-size:var(--type-body);border-radius:var(--radius-control)}
.cta:hover{background:var(--brand);text-decoration:none;color:var(--paper)}
.ctarow{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}
.ctaform{display:inline-block}
.secondaryform{display:inline-block}
.cta2{display:inline-block;margin-top:var(--space-5);color:var(--brand-ink);font-size:var(--type-body);padding:var(--space-3) var(--space-1)}
.heronote{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2);font-variant-numeric:tabular-nums}
.srcnote{grid-column:1/-1;font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2)}
.digestform{margin-top:var(--space-5);max-width:440px}
.digestform label{display:block;font-size:var(--type-body);font-weight:600;margin-bottom:var(--space-1)}
.digestrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2)}
.digestrow input{width:100%;font:inherit;font-size:var(--type-body);color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3)}
.digestrow input:focus{outline:2px solid var(--brand);outline-offset:0}
.digestrow .cta{margin-top:0;border:none;cursor:pointer}
.dgnote{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2)}
.linkbtn{color:var(--brand-ink);padding:0;font:inherit;font-size:var(--type-body)}
.linkbtn:hover{text-decoration:underline}

/* Client handouts: one readable page, minimal chrome, prints clean. */
.handoutmain{max-width:760px}
.handoutbody{font-family:'Literata',serif;font-size:var(--type-body);line-height:1.7;max-width:70ch}
.handoutbody p{margin-top:var(--space-3)}
.handoutbody .kt{font-family:'Public Sans',sans-serif;font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:var(--space-6) 0 var(--space-1)}
.handoutbody ul{margin:var(--space-1) 0 0;padding-left:var(--space-5)}
.handoutbody li{margin:var(--space-1) 0}
@media print{
  .handout{background:#fff;font-size:var(--type-body)}
  .handout header{position:static;border-bottom-width:1px}
  .handout footer{margin-top:var(--space-6);padding-bottom:0}
}
.byline{grid-column:1/-1;font-size:var(--type-body);color:var(--muted);margin-top:var(--space-3)}
.alsonote{display:block;margin-top:var(--space-2);font-size:var(--type-body);color:var(--muted)}
.closingband{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-8);padding:var(--space-4)}
.closingband .cta{margin-top:0}
.bandform{display:inline-block}
.countstrip{display:flex;gap:var(--space-7);flex-wrap:wrap;margin-top:var(--space-7);padding-top:var(--space-4);border-top:2px solid var(--rule)}
.countstrip .n{font-size:var(--type-subheading);font-weight:600;font-variant-numeric:tabular-nums}
.countstrip .l{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-1)}
.proofband{padding-top:var(--space-4)}
.proofband .countstrip{margin-top:0}
.layergrid{display:grid;grid-template-columns:1fr;gap:var(--space-4);margin-top:var(--space-5)}
@media(min-width:768px){.layergrid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1080px){.layergrid{grid-template-columns:repeat(4,1fr)}}
.layercard{border:1px solid var(--hair);border-top:2px solid var(--rule);border-radius:var(--radius-surface);padding:var(--space-3) var(--space-4);background:var(--paper)}
.layercard .n{font-size:var(--type-subheading);font-weight:600;font-variant-numeric:tabular-nums}
.layercard .l{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-1)}
.layercard p{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2);line-height:1.5}
.featrow{display:grid;grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-4) 0;border-bottom:1px solid var(--hair)}
.featrow h2,.featrow h3{font-size:var(--type-subheading);font-weight:600;line-height:1.2}
.featrow p{color:var(--muted);font-size:var(--type-body);max-width:62ch}
@media(min-width:768px){.featrow{grid-template-columns:180px minmax(0,1fr);gap:var(--space-5)}.alsonote{display:inline;margin:0 0 0 var(--space-4)}}
.samplebanner{background:var(--surface);border:1px solid var(--hair);border-top:2px solid var(--rule);padding:var(--space-3) var(--space-4);font-size:var(--type-caption);margin-top:var(--space-4);border-radius:var(--radius-surface)}

/* Effective-control line — the memo header's five-second answer. Ink, not
   muted: this is the position story, not a footnote. The bold grade carries
   the scan; the clause after the dash carries the reason. */
.controlline{font-size:var(--type-body);max-width:70ch;margin-top:var(--space-2)}
.controlline b{font-weight:600}

/* The Atlas — position composer. Labels stay visible above full-width controls
   so the four-part position remains legible when it collapses on a phone. */
.atlas-composer{display:grid;grid-template-columns:1fr;gap:var(--space-3);max-width:70ch;margin-top:var(--space-4)}
.atlas-composer label{display:grid;gap:var(--space-1);font-size:var(--type-caption);font-weight:600;
  letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.atlas-composer select{width:100%;font-family:"IBM Plex Mono",monospace;font-size:var(--type-body);color:var(--ink);
  background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);
  padding:var(--space-2) var(--space-3);cursor:pointer;text-transform:none;letter-spacing:normal}
.atlas-composer select:focus{outline:2px solid var(--brand);outline-offset:2px}
@media(min-width:600px){.atlas-composer{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){.atlas-composer{grid-template-columns:repeat(4,minmax(0,1fr))}}
.bindtag{font-size:var(--type-caption);font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--ink);padding:0 var(--space-1);margin-left:var(--space-1);vertical-align:1px}
.bindrow td:first-child{font-weight:500}
.killsrc{font-size:var(--type-caption);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-left:var(--space-1)}
.clientprofile{max-width:70ch;background:var(--surface);padding:var(--space-4);margin-top:var(--space-2);
  border-radius:var(--radius-surface)}
.clientprofile .kt{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.clientposition h3{font-size:var(--type-subheading);margin-top:var(--space-1)}
.clientposition p{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-1)}
.clientfacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4) var(--space-3);margin-top:var(--space-4)}
.clientfacts>div{padding:0}
.clientfacts dt{font-size:var(--type-caption);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.clientfacts dd{font-size:var(--type-body);margin-top:var(--space-1)}
.clientfinding{margin-top:var(--space-4)}
.clientfinding p{font-family:Literata,serif;font-size:var(--type-body);line-height:1.55;margin-top:var(--space-1)}
@media(min-width:768px){
  .clientprofile{border:1px solid var(--hair);border-top:2px solid var(--rule)}
  .clientfacts{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--hair)}
  .clientfacts>div{padding:var(--space-3) var(--space-3) var(--space-3) 0;border-bottom:1px solid var(--hair)}
}
.copybtn{margin-top:var(--space-2);font:600 var(--type-caption) "Public Sans",sans-serif;color:var(--ink);
  background:transparent;border:1px solid var(--ink);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;text-decoration:none}
.copybtn:hover{background:var(--surface)}
.atlasactions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3)}
.atlasactions .cta,.atlasactions .copybtn{margin-top:0}
.atlasdetail{max-width:70ch;margin-top:var(--space-2);padding:0 var(--space-3);background:var(--surface)}
.atlasdetail summary{cursor:pointer;list-style:none;display:flex;align-items:center;font-weight:600}
.atlasdetail summary::-webkit-details-marker{display:none}
.atlasdetail summary:after{content:"+";margin-left:auto;font-family:'IBM Plex Mono',monospace;color:var(--muted)}
.atlasdetail[open] summary:after{content:"−"}
@media(min-width:768px){.atlasdetail{margin-top:var(--space-3);padding:0;background:transparent;border-top:1px solid var(--hair)}}
.comparisontable{overflow:visible}
.comparisontable thead{display:none}
.comparisontable tbody,.comparisontable tr{display:block;width:100%}
.comparisontable tr{padding:var(--space-3) 0;border-bottom:1px solid var(--hair)}
.comparisontable td{display:grid;grid-template-columns:116px minmax(0,1fr);gap:var(--space-2);
  width:100%;padding:var(--space-1) 0;border:0;text-align:left!important}
.comparisontable td:before{content:attr(data-label);font-family:'Public Sans',sans-serif;
  font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.comparisontable td:first-child{display:block;padding-bottom:var(--space-2);font-size:var(--type-body)}
.comparisontable td:first-child:before{display:none}
.comparisontable .verdict{white-space:normal}
@media(min-width:768px){
  .comparisontable{display:table;overflow:visible}
  .comparisontable thead{display:table-header-group}
  .comparisontable tbody{display:table-row-group;width:auto}
  .comparisontable tr{display:table-row;width:auto;padding:0;border:0}
  .comparisontable td{display:table-cell;width:auto;padding:var(--space-2) var(--space-3) var(--space-2) 0;
    border-bottom:1px solid var(--hair)}
  .comparisontable td.num{text-align:right!important}
  .comparisontable td:before{display:none}
  .comparisontable td:first-child{display:table-cell;padding-bottom:var(--space-2)}
  .comparisontable .verdict{white-space:nowrap}
}

/* Async and outcome states preserve layout, identify the result, and leave a next step. */
.skeleton{position:relative;display:block;overflow:hidden;background:var(--surface);color:transparent!important;border-color:transparent!important;pointer-events:none}
.skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.32),transparent);transform:translateX(-100%);animation:skeleton-shimmer 700ms ease-in-out infinite}
.skeleton-text{width:min(28ch,70%);height:1em;border-radius:var(--radius-control)}
.skeleton-row{height:44px;margin-top:1px}
@keyframes skeleton-shimmer{to{transform:translateX(100%)}}
.empty-state{max-width:68ch;margin-top:var(--space-5);padding:var(--space-5);background:var(--surface);border:1px solid var(--hair);border-top:2px solid var(--rule)}
.empty-state svg{display:block;width:32px;height:32px;margin-bottom:var(--space-3);color:var(--brand-ink)}
.empty-state h2{font-size:var(--type-subheading)}
.empty-state p{margin-top:var(--space-2);color:var(--muted)}
.empty-state .cta{margin-top:var(--space-4)}
.feedback{margin-top:var(--space-3);padding:var(--space-3);border-left:4px solid var(--review);background:var(--surface)}
.feedback[data-state="error"]{border-color:var(--rejected);color:var(--rejected)}
.feedback[data-state="success"]{border-color:var(--approved);color:var(--approved);animation:confirm-in 180ms ease-out}
.feedback:empty{display:none}
@keyframes confirm-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* First-run welcome, shown once via /app/?welcome=1 */
.welcome{border:2px solid var(--rule);padding:var(--space-4);margin:var(--space-5) 0 var(--space-1);border-radius:var(--radius-surface)}
.welcome b{display:block;margin-bottom:var(--space-2)}
.welcome ul{margin:0 0 var(--space-2) var(--space-4);padding:0}
.welcome li{margin:var(--space-1) 0}
.welcome p{margin:0;color:var(--muted);font-size:var(--type-body)}
.boardfoot{color:var(--muted);font-size:var(--type-body);margin-top:var(--space-2)}
section h3{margin-top:var(--space-6);font-size:var(--type-subheading)}

/* Advisor workspace — quiet lists and forms built around a client, not a data terminal. */
.sectionhead,.clientheading{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap}
.sectionhead .cta2{margin-top:0}
.goalgrid{display:grid;grid-template-columns:1fr;gap:var(--space-3);margin-top:var(--space-5)}
.goalgrid a{display:grid;gap:var(--space-1);padding:var(--space-4);border:1px solid var(--hair);border-top:2px solid var(--rule);color:var(--ink);min-height:112px}
.goalgrid a:hover{text-decoration:none;background:var(--surface)}
.goalgrid span,.worklist span,.attentionitem small,.quiet span{display:block;color:var(--muted);font-size:var(--type-caption)}
@media(min-width:768px){.goalgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.attentionlist,.worklist{border-top:2px solid var(--rule);margin-top:var(--space-4)}
.attentionitem,.worklist>a,.workrow{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--hair);color:var(--ink)}
.attentionitem p{margin-top:var(--space-1)}
.attentionitem a{white-space:nowrap}
.attentionactions{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;justify-content:flex-end}
.attentionitem.sev-critical{border-left:4px solid var(--rejected);padding-left:var(--space-3)}
.attentionitem.sev-warn{border-left:4px solid var(--warning);padding-left:var(--space-3)}
/* Phones stack the actions under the text, each a 44px target; from tablet up
   they sit to the right. The text column may shrink, so a long name or
   figure wraps instead of pushing the actions past the edge (390px, 2026-09-30). */
.attentionitem{flex-direction:column;align-items:stretch}
.attentiontext{min-width:0}
.attentionitem p{overflow-wrap:anywhere}
.attentionwho{color:var(--ink)}
.attentionactions{justify-content:flex-start;gap:var(--space-4)}
.attentionactions a,.attentionactions button{display:inline-flex;align-items:center;min-height:44px}
.attentionitem .evidence{margin-top:var(--space-2);font-size:var(--type-caption);color:var(--muted)}
.attentionitem .evidence summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:var(--brand-ink)}
@media(min-width:768px){.attentionitem{flex-direction:row;align-items:center}.attentiontext{flex:1 1 auto}.attentionactions{flex:0 0 auto;justify-content:flex-end}}
.event-tools{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-5) 0;padding:var(--space-3) 0;border-top:2px solid var(--rule);border-bottom:1px solid var(--hair)}
.event-tools label{font-size:var(--type-caption);font-weight:600}.event-tools select{min-width:180px}.event-tools .compact{margin-left:auto}
.update-list{border-top:2px solid var(--rule);margin-top:var(--space-4)}
.update-item{padding:var(--space-5) 0;border-bottom:1px solid var(--hair)}
.update-item.materiality-critical{border-left:4px solid var(--rejected);padding-left:var(--space-4)}
.update-item.client-affected{background:var(--surface);padding-right:var(--space-4)}
.update-item h2,.update-item h3{font-size:var(--type-subheading);margin-top:var(--space-2)}
.update-item p{max-width:70ch;color:var(--muted)}
.update-meta{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;color:var(--muted);font-size:var(--type-caption);text-transform:uppercase;letter-spacing:.04em}
.update-meta time{margin-left:auto;font-family:var(--mono)}
.object-list{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:var(--space-3) 0}
.object-list span{padding:3px 7px;border:1px solid var(--hair);background:var(--paper);font-size:var(--type-caption)}
.affectsclient{color:var(--ink)!important}.compact-updates .update-item p{margin-bottom:0}
.quiet{display:grid;gap:var(--space-1);margin-top:var(--space-4);padding:var(--space-4);border-left:4px solid var(--approved);background:var(--surface)}
.inlineform,.recordform{display:grid;grid-template-columns:1fr;gap:var(--space-3);margin-top:var(--space-5);max-width:70ch}
.inlineform label,.recordform label{display:grid;gap:var(--space-1)}
.inlineform label>span,.recordform label>span,.recordform legend{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.inlineform input,.recordform input,.recordform select,.recordform textarea,.addpanel textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3)}
.inlineform .cta,.recordform .cta{align-self:end;margin-top:0}
@media(min-width:768px){.inlineform{grid-template-columns:2fr 1fr auto}.recordform{grid-template-columns:repeat(2,minmax(0,1fr))}.recordform .wide,.recordform fieldset,.recordform .cta{grid-column:1/-1}}
/* The client list is a select: it fits 375px and a hundred clients. */
.clientpicker{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-4)}
.clientpicker label{display:grid;gap:var(--space-1);flex:1 1 240px;max-width:420px}
.clientpicker label>span{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.clientpicker select{width:100%;min-height:44px;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3)}
.clientpicker .addclient{min-height:44px;display:inline-flex;align-items:center}
.recordform .copybtn,.tool .copybtn,.walletCustody .copybtn{justify-self:start;margin-top:0}
.clientcreate[hidden]{display:none}
/* A new client is three numbered steps on one page. */
.setupsteps{list-style:none;margin:var(--space-5) 0 0;padding:0;border-top:2px solid var(--rule)}
.setupsteps>li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-3);padding:var(--space-5) 0;border-bottom:1px solid var(--hair)}
.setupsteps>li h3{margin-top:0}
.setupsteps>li.done .stepnum{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.setupsteps .recordform{margin-top:var(--space-3)}
.walletform .chainpick{grid-column:1/-1}
.walletform .chainpick summary{font-size:var(--type-caption);color:var(--muted);cursor:pointer;display:flex;align-items:center}
.walletform .chainpick label{margin-top:var(--space-2);max-width:320px}
/* Problems lead the answer. Oxide marks a problem, always beside its label. */
.clientproblems{margin-top:var(--space-5);border-top:2px solid var(--rule)}
.clientproblems h3{margin-top:var(--space-3)}
.problemlist{list-style:none;margin:var(--space-3) 0 0;padding:0}
.problem{padding:var(--space-3) 0 var(--space-3) var(--space-3);border-left:4px solid var(--rejected);border-bottom:1px solid var(--hair)}
.problem p{margin:var(--space-1) 0 0;max-width:70ch}
.problemhead{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.problemhead .mono{font-variant-numeric:tabular-nums}
.problem .actiontag{color:var(--rejected)}
.problem-research-changed{border-left-color:var(--warning)}.problem-research-changed .actiontag{color:var(--warning)}
/* Not approved is a rule or a size, not evidence against: it is listed, but it does not shout. */
.problem-not-approved-venue{border-left-color:var(--muted)}.problem-not-approved-venue .actiontag{color:var(--muted)}
.clientholdings,.clientwallets,.alternatives,.clientfactsprompt{margin-top:var(--space-6)}
.clientholdings h3,.clientwallets h3,.alternatives h3,.clientfactsprompt h3{margin-top:0}
/* At 375px a holding is a block: name and dollars on one line, who can freeze
   it beneath. The value never scrolls out of sight. From 768px it is a table. */
.holdingstable{overflow:visible}
.holdingstable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.holdingstable tbody,.holdingstable tfoot{display:block}
.holdingstable tr{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--space-3);border-bottom:1px solid var(--hair)}
.holdingstable td,.holdingstable th{border-bottom:0}
.holdingstable td:nth-child(1){grid-column:1;grid-row:1}
.holdingstable td:nth-child(3){grid-column:2;grid-row:1}
.holdingstable td:nth-child(2){grid-column:1/-1;grid-row:2;padding-top:0}
.holdingstable tfoot tr{border-top:2px solid var(--rule);border-bottom:0}
.holdingstable tfoot th{grid-column:1;padding-top:var(--space-3)}
.holdingstable tfoot td:nth-child(2){grid-column:2;grid-row:1;padding-top:var(--space-3)}
.holdingstable tfoot th{text-align:left}
@media(min-width:768px){
  .holdingstable thead{position:static;width:auto;height:auto;overflow:visible;clip:auto;display:table-header-group}
  .holdingstable tbody{display:table-row-group}.holdingstable tfoot{display:table-footer-group}
  .holdingstable tr{display:table-row}
  .holdingstable td{border-bottom:1px solid var(--hair)}.holdingstable td:nth-child(2){padding-top:var(--space-2);min-width:18ch;max-width:40ch}
  .holdingstable tfoot th,.holdingstable tfoot td{border-top:2px solid var(--rule);border-bottom:0}
}
.holdingstable .verdict{display:inline-block;margin-top:var(--space-1)}
.holdingstable a,.householdfiles td a{display:inline-flex;align-items:center;min-height:44px}
.quietrows .walletcard{margin-top:var(--space-3)}
.walletlist{list-style:none;margin:var(--space-3) 0 0;padding:0;border-top:1px solid var(--hair)}
.walletline{border-bottom:1px solid var(--hair)}
.walletline .wallethead{padding-left:0;padding-right:0;border-bottom:0}
.walletcustody{padding-bottom:var(--space-2)}
.walletcustody summary{font-size:var(--type-caption);color:var(--muted);cursor:pointer;display:flex;align-items:center}
.moretools .tool{margin-top:var(--space-5)}
.moretools .tool h3{margin-top:0}
.workspacegrid{display:grid;grid-template-columns:1fr;gap:var(--space-8)}
.workspacegrid section{padding-top:var(--space-5)}
.workspacegrid section>h3{margin-top:0}
@media(min-width:1024px){.workspacegrid{grid-template-columns:minmax(0,3fr) minmax(300px,2fr)}}
.addpanel{margin-top:var(--space-4);border-top:1px solid var(--hair)}
.addpanel summary{font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center}
.addpanel summary:after{content:"+";margin-left:auto;font-family:'IBM Plex Mono',monospace}
.addpanel[open]>summary:after{content:"−"}
.checkgrid{display:grid;grid-template-columns:1fr;gap:var(--space-2);margin-top:var(--space-2)}
.checkrow{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--hair);cursor:pointer}
.checkrow input{width:auto!important;margin-top:var(--space-1)}
.checkrow small{display:block;color:var(--muted)}
.recordform fieldset{border:0}
.workrow .copybtn{margin-top:0}
.rowactions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}
/* Action labels wrap as whole controls, never inside a word: the body's
   overflow-wrap:break-word split "Mark reviewed" mid-word at 375px. */
.rowactions a,.rowactions button,.attentionactions a,.attentionactions button{white-space:nowrap}
.editorcard{display:grid;gap:var(--space-3);margin-top:var(--space-5);padding:var(--space-4);border:1px solid var(--hair);border-top:2px solid var(--rule);background:var(--surface)}
.editorcard>label{display:grid;gap:var(--space-1)}
.editorcard>label>span,.allocationrow label>span{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.editorcard input,.editorcard textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3)}
.allocationrow{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-2);padding:var(--space-3) 0;border-bottom:1px solid var(--hair)}
.allocationrow span{display:block;color:var(--muted);font-size:var(--type-caption)}
.allocationrow label{display:grid;gap:var(--space-1)}
@media(min-width:768px){.allocationrow{grid-template-columns:minmax(0,2fr) minmax(100px,1fr) minmax(100px,1fr);align-items:end}}
.briefgrid,.decisionmetrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:var(--space-4);background:var(--hair);border:1px solid var(--hair)}
.briefgrid>div,.decisionmetrics>div{display:grid;gap:var(--space-1);padding:var(--space-3);background:var(--paper)}
.briefgrid span,.decisionmetrics span{font-size:var(--type-caption);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.briefgrid b,.decisionmetrics b{font-family:'IBM Plex Mono',monospace;font-size:var(--type-subheading);font-variant-numeric:tabular-nums}
.nextbest{margin-top:var(--space-6);padding:var(--space-5);border:1px solid var(--hair);border-top:3px solid var(--brand);background:var(--surface)}
.nextbest h3{margin-top:0}.nextbest p{max-width:62ch;color:var(--muted)}
.recommendationreview{margin-top:var(--space-5);padding:var(--space-5);border:1px solid var(--hair);border-top:3px solid var(--brand);background:var(--paper)}
.recommendationreview h3{margin-top:var(--space-1);font-size:clamp(1.5rem,3vw,2.25rem)}
.recommendationreview .lede{max-width:65ch;color:var(--muted)}
.decisionsteps{margin-top:var(--space-5);border-top:2px solid var(--rule)}
.decisionstep{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--hair)}
.stepnum{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--rule);border-radius:50%;font:600 var(--type-caption) 'IBM Plex Mono',monospace}
.actionline{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.actiontag{display:inline-flex;padding:2px var(--space-2);border:1px solid currentColor;border-radius:999px;font-size:var(--type-caption);font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
/* Household eligibility: a fact about terms, not a verdict and not a workflow state. Uncolored, square, sentence case. */
.eligtag{display:inline-flex;padding:2px var(--space-2);border:1px solid var(--control-border);border-radius:var(--radius-control);font-size:var(--type-caption);font-weight:600;color:var(--ink);white-space:nowrap}
.walletasset small.eligline{margin-top:var(--space-1);max-width:70ch;color:var(--ink)}
td .eligline{margin-top:var(--space-1);max-width:70ch;color:var(--ink)}
.recordform .securitycheck{max-width:70ch}.recordform .securitycheck:empty{display:none}
.householdfiles table td{vertical-align:top}.householdfiles td>a{display:inline-flex;align-items:center;min-height:44px}.householdfiles table td:nth-child(3){min-width:32ch;max-width:70ch}
.action-exit,.action-reduce{color:var(--rejected)}.action-add,.action-increase{color:var(--approved)}.action-keep{color:var(--muted)}
.action-repay,.action-do-not-withdraw{color:var(--rejected)}.action-resolve-coverage,.action-verify-identity{color:var(--review)}
.action-exit{color:var(--rejected)}.action-reduce{color:var(--warning)}.action-verify,.action-review,.action-hold-collateral{color:var(--review)}
.moneyflow{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2);font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums}
.moneyflow span{color:var(--muted)}.moneyflow small{color:var(--brand-ink)}
.decisionstep p{max-width:68ch;margin-top:var(--space-2)}
.boundnote{display:block;margin-top:var(--space-1);color:var(--muted)}
.reviewactions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-5)}
.reviewactions .cta,.reviewactions .copybtn{margin-top:0}
@media(min-width:768px){.briefgrid,.decisionmetrics{grid-template-columns:repeat(4,minmax(0,1fr))}}
.walletstack{display:grid;gap:var(--space-4);margin-top:var(--space-4)}
.walletcard{border:1px solid var(--hair);border-top:2px solid var(--rule);background:var(--paper)}
.wallethead,.walletasset{display:flex;justify-content:space-between;align-items:flex-start;flex-direction:column;gap:var(--space-3);padding:var(--space-3);border-bottom:1px solid var(--hair)}
.wallethead span,.wallethead small,.walletasset span,.walletasset small{display:block;color:var(--muted);font-size:var(--type-caption)}
.walletasset:last-child{border-bottom:0}.walletasset>div{min-width:0}
.acceptResolution{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-2);flex-wrap:wrap;width:100%}
.acceptResolution select{max-width:100%;width:100%;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2)}
.acceptResolution .copybtn{margin-top:0}
@media(min-width:768px){.wallethead,.walletasset{align-items:center;flex-direction:row}.acceptResolution{width:auto;justify-content:flex-end}.acceptResolution select{max-width:290px;width:auto}}
.clientbriefing{margin-top:var(--space-6);padding-top:var(--space-4);border-top:2px solid var(--rule)}
.clientbriefing .sectionhead h2{margin-top:var(--space-1)}
.coverageflag{font-size:var(--type-caption);color:var(--muted)}
.unverifiedsplit{max-width:70ch;margin-top:var(--space-3);padding-left:var(--space-3);border-left:4px solid var(--review)}
.unverifiedsplit b{font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums}
.briefinglist{border-top:1px solid var(--hair)}
.briefingrow{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);padding:var(--space-4) 0 var(--space-4) var(--space-3);border-bottom:1px solid var(--hair);border-left:4px solid var(--review)}
.briefingrow h3{margin:var(--space-2) 0 var(--space-1);font-size:var(--type-body)}
.briefingrow p{margin:0;max-width:70ch}.briefingrow small{display:block;margin-top:var(--space-2);color:var(--muted)}
.briefingrow details{align-self:start}.briefingrow details summary{font-size:var(--type-caption);font-weight:600;cursor:pointer}
.briefingrow.status-fits{border-left-color:var(--approved)}
.briefingrow.status-needs-review,.briefingrow.status-research-changed{border-left-color:var(--warning)}
.briefingrow.status-rejected,.briefingrow.status-debt-or-leverage{border-left-color:var(--rejected)}
/* What leaving takes. Ordered, because the order is the content. Kept in the
   neutral palette: a dependency is a fact about the exit, not a verdict, and
   semantic colour never decorates. */
.exitdeps{margin-top:var(--space-3);max-width:70ch}
.exitdeps>span{display:block;font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.exitdeps ol{margin:var(--space-2) 0 0;padding-left:1.4em}
.exitdeps li{margin:0 0 var(--space-1);padding-left:.2em}
.exitdeps li::marker{font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums;color:var(--muted)}
.exposurepanel{margin-top:var(--space-4);border-top:1px solid var(--hair)}
.exposurepanel>summary{font-weight:600;cursor:pointer}.exposuregrid{display:grid;grid-template-columns:1fr;gap:var(--space-5);margin-top:var(--space-3)}
.exposuregrid table{margin:0}
.exposuregrid caption{text-align:left;padding-bottom:var(--space-2);font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.briefingrow.status-fits .actiontag{color:var(--approved)}
.briefingrow.status-needs-review .actiontag,.briefingrow.status-research-changed .actiontag{color:var(--warning)}
.briefingrow.status-rejected .actiontag,.briefingrow.status-debt-or-leverage .actiontag{color:var(--rejected)}
.briefingrow.status-not-covered .actiontag{color:var(--review)}
.status-exact,.status-advisor-confirmed{color:var(--approved)}
.status-unknown,.status-underlying-only,.status-probable{color:var(--review)}
.status-ignored{color:var(--muted)}
@media(min-width:768px){.briefingrow{grid-template-columns:minmax(0,1fr) auto}.exposuregrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.emailprefs{display:grid;grid-template-columns:1fr;gap:var(--space-4);max-width:70ch;margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--hair);border-top:2px solid var(--rule);background:var(--surface)}
.emailprefs>label:not(.toggleline){display:grid;gap:var(--space-1)}
.emailprefs>label:not(.toggleline)>span{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.emailprefs select{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3)}
.toggleline{display:flex;align-items:flex-start;gap:var(--space-3);cursor:pointer}
.toggleline input{width:20px;height:20px;margin-top:2px;accent-color:var(--brand)}
.toggleline small{display:block;color:var(--muted);font-size:var(--type-caption);margin-top:var(--space-1)}
.emailprefs .cta,.emailprefs .copybtn{margin-top:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Eligibility files: the five-second answer, then depth */
.fivesecond{margin-top:var(--space-4);border-top:2px solid var(--ink)}
.fivesecond>div{display:grid;grid-template-columns:1fr;gap:var(--space-1);padding:var(--space-3) 0;border-bottom:1px solid var(--hair)}
.fivesecond .l{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.fivesecond .v{max-width:68ch}
@media(min-width:768px){.fivesecond>div{grid-template-columns:220px minmax(0,1fr)}}
.regfiles thead tr:first-child th{color:var(--ink);border-bottom:2px solid var(--ink)}
.evid{margin-top:var(--space-2);border-bottom:1px solid var(--hair)}
.evid summary{cursor:pointer;font-size:var(--type-caption);color:var(--muted);padding:var(--space-2) 0;min-height:44px;display:flex;align-items:center}
.evid summary:hover{color:var(--brand)}
.evid[open] summary{color:var(--ink)}
.evidbody{padding:0 0 var(--space-3)}
.evidbody .kt{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:var(--space-2) 0 var(--space-1)}
.evidbody ul{list-style:none;padding:0;margin:0}
.evidbody li{font-size:var(--type-caption);padding:2px 0;overflow-wrap:anywhere}

/* Eligibility file: the issuer's words under each answer */
.terms{margin-top:var(--space-4);border-top:2px solid var(--ink)}
.terms dt{font-size:var(--type-caption);font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding-top:var(--space-4)}
.terms dd{margin:0;padding-bottom:var(--space-4);border-bottom:1px solid var(--hair)}
.terms .termanswer{font-weight:600;margin-top:var(--space-1);max-width:70ch}
.issuerq{font-family:'Literata',serif;font-size:var(--type-body);line-height:1.6;max-width:70ch;margin:var(--space-2) 0 0;padding-left:var(--space-4);border-left:2px solid var(--hair);overflow-wrap:anywhere}
.srcline{font-size:var(--type-caption);color:var(--muted);margin-top:var(--space-2);max-width:70ch}
table.keys td{vertical-align:top}
.firstrun{max-width:70ch;padding:var(--space-4) 0}.firstrun h3{margin:0 0 var(--space-2)}.firstrun .recordform{margin-top:var(--space-3)}
.atlas-composer .filepick{grid-column:1/-1;padding-top:var(--space-2);border-top:1px solid var(--hair)}
.positioncard h2{margin:var(--space-1) 0 var(--space-3)}.positioncard .recordform{margin-top:var(--space-4)}
.atlas-composer.filemode label:not(.filepick){display:none}.atlas-composer.filemode .filepick{border-top:0;padding-top:0}
/* Pricing: what a subscriber gets, one plain line each (2026-09-30). */
.getlist{margin:var(--space-4) 0 0;padding-left:var(--space-5);max-width:62ch}.getlist li{margin:var(--space-1) 0}
