/* kpsgill-site.css — fonts + /styles.css + chrome + edition + 2026-10 layer, original cascade order. Built 1 Oct 2026; source files kept. */
/* Self-hosted fonts (latin + latin-ext), Oct 2026. Fraunces is variable: opsz 9–144, wght 400–700. */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/fraunces-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: 'Fraunces';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/fraunces-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: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/fraunces-400-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: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/fraunces-400-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;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-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(/assets/fonts/ibm-plex-mono-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(/assets/fonts/ibm-plex-mono-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(/assets/fonts/ibm-plex-mono-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-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 700;
  font-display: swap;
  src: url(/assets/fonts/public-sans-400-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: 400 700;
  font-display: swap;
  src: url(/assets/fonts/public-sans-400-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;
}
/* styles.css — 22 September 2026: every global-chrome rule (.k-hdr, .k-nav, .k-toggle, .k-foot,
   .k-mark and the rest) was removed from this file, including two copies of an inlined ~20 KB base64
   portrait. The single authoritative chrome rule set is /assets/kpsgill-chrome.css. Nothing else in
   this file was changed. */
/* KPSGILL.COM — shared stylesheet */
:root{--navy:#12233F;--cream:#F6F5F0;--teal:#1F6F5C;--gold:#B8863B;--border:#D7D9D3;--muted:#6F7068;--mist:#B9C2BC;--red:#A13A3A;--gold-text:#90692e;--serif:Fraunces,Georgia,serif;--sans:'Public Sans',Arial,Helvetica,sans-serif;--mono:'IBM Plex Mono',Consolas,monospace}
*{box-sizing:border-box}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%}
body{margin:0;overflow-x:hidden;background:var(--cream) radial-gradient(620px 420px at 96% -8%, rgba(184,134,59,0.10), rgba(184,134,59,0) 68%), radial-gradient(560px 420px at -6% 18%, rgba(31,111,92,0.08), rgba(31,111,92,0) 65%) fixed;color:var(--navy);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
table{max-width:100%}
a{color:var(--teal)}
a:hover{color:var(--navy)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
img{max-width:100%}

.wrap{max-width:1180px;margin:0 auto;padding-left:24px;padding-right:24px}
.narrow{max-width:720px;margin:0 auto;padding-left:24px;padding-right:24px}
.mid{max-width:820px;margin:0 auto;padding-left:24px;padding-right:24px}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-scroll table{min-width:560px}
header.site{background:rgba(255,255,255,0.92);backdrop-filter:saturate(1.1) blur(2px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;flex-direction:column;gap:4px}
.nav-toggle span{display:block;width:20px;height:2px;background:var(--navy);border-radius:2px}
.home-pill{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--navy)!important;text-decoration:none!important;padding:6px 12px!important;border:1px solid var(--border);border-radius:20px;background:#fff}
.home-pill:hover{border-color:var(--teal);color:var(--teal)!important}
.intel-pill{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:#fff!important;text-decoration:none!important;padding:6px 14px!important;border-radius:20px;background:var(--navy)}
.intel-pill:hover{background:var(--teal)}
.weekly-pill{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:#8A5A1F!important;text-decoration:none!important;padding:6px 13px!important;border-radius:20px;border:1px solid var(--gold);white-space:nowrap}
.weekly-pill:hover{background:var(--gold);color:var(--navy)!important}
.hrow{display:flex;align-items:center;justify-content:space-between;gap:18px 24px;flex-wrap:wrap;padding-top:14px;padding-bottom:14px}
.brand{font-family:var(--serif);font-size:20px;font-weight:600;color:var(--navy);text-decoration:none;letter-spacing:0.01em}
nav.primary{display:flex;align-items:center;gap:10px 20px;flex-wrap:wrap}
nav.primary a:not(.btn){font-size:15px;font-weight:500;color:var(--navy);text-decoration:none;padding:4px 0}
nav.primary a:not(.btn):hover{color:var(--teal)}
nav.primary a:not(.btn)[aria-current="page"]{color:var(--teal);border-bottom:2px solid var(--gold)}
.btn{display:inline-flex;align-items:center;min-height:48px;background:var(--navy);color:#fff;font-size:16px;font-weight:600;padding:12px 26px;border-radius:6px;text-decoration:none;border:none;cursor:pointer;font-family:var(--sans)}
.btn:hover{background:var(--teal);color:#fff}
.btn.small{min-height:44px;font-size:15px;padding:10px 20px}
.btn.outline{background:transparent;border:1.5px solid var(--teal);color:var(--navy)}
.btn.outline:hover{background:#fff;color:var(--navy)}
.btn.gold{background:var(--gold);color:var(--navy);font-weight:700}
.btn.gold:hover{background:#D0A254;color:var(--navy)}
.eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:0.1em;text-transform:uppercase;color:var(--gold-text);margin:0 0 14px}
.eyebrow.gray{color:var(--muted)}
h1.page{font-family:var(--serif);font-weight:500;font-size:clamp(30px,5vw,44px);line-height:1.14;margin:0 0 24px;text-wrap:pretty}
h2.sec{font-family:var(--serif);font-weight:500;font-size:clamp(24px,3.4vw,32px);line-height:1.2;margin:0 0 8px}
.rule{width:56px;height:2px;background:var(--gold);margin:0 0 32px}
.prose h2{font-family:var(--serif);font-weight:500;font-size:clamp(21px,3vw,28px);line-height:1.25;margin:40px 0 14px;padding-top:20px;border-top:1px solid var(--border)}
.prose h2:first-child{padding-top:0;border-top:0;margin-top:0}
.prose h3{font-family:var(--serif);font-weight:500;font-size:clamp(18px,2.4vw,22px);margin:26px 0 10px;color:var(--navy)}
.prose p{margin:0 0 17px;text-wrap:pretty}
.prose p:first-of-type{font-size:1.08em;color:#333}
.prose a{text-underline-offset:3px}
.prose blockquote{margin:22px 0;padding:4px 0 4px 20px;border-left:3px solid var(--gold);font-style:italic;color:var(--muted)}
.prose ul,.prose ol{margin:0 0 18px;padding-left:22px;display:flex;flex-direction:column;gap:7px}
.prose ul.cols{display:block;columns:2;column-gap:36px}
.prose table{width:100%;border-collapse:collapse;font-size:15px}
.prose table th,.prose table td{padding:10px 14px;border-bottom:1px solid var(--border);text-align:left}
.prose table tr:nth-child(even) td{background:rgba(18,35,63,0.02)}
.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:28px;box-shadow:0 1px 3px rgba(18,35,63,0.05)}
.card h3{font-family:var(--serif);font-weight:500;font-size:23px;margin:0 0 10px}
.card p{font-size:16px;margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:20px}
.grid.tight{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:18px}
.notice{border-left:3px solid var(--gold);background:#fff;border-radius:0 8px 8px 0;padding:20px 24px;font-size:15px;box-shadow:0 1px 3px rgba(18,35,63,0.05)}
.notice.red{border-left-color:var(--red)}
.band{background:#fff;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.crumbs{font-size:14px;color:var(--muted);margin:0 0 26px}
.crumbs a{color:var(--teal);text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.mono{font-family:var(--mono)}
.muted{color:var(--muted)}
.tag{font-family:var(--mono);font-size:12px;letter-spacing:0.06em;text-transform:uppercase;color:var(--teal);margin:0 0 8px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:15px;font-weight:600}
.field input,.field textarea,.field select{font-family:var(--sans);font-size:16px;padding:11px 14px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy);min-height:44px}
.field textarea{resize:vertical;min-height:140px}
.req{color:var(--red)}
.opt{color:var(--muted);font-weight:400}
footer.site{background:var(--navy);color:var(--cream);margin-top:auto}
footer.site .fname{font-family:var(--serif);font-size:22px;font-weight:500;margin:0 0 2px}
footer.site .fsub{font-size:15px;color:var(--mist);margin:0 0 28px}
footer.site nav{display:flex;gap:10px 22px;flex-wrap:wrap;margin:0 0 14px}
footer.site nav a{color:var(--cream);font-size:15px;text-decoration:none}
footer.site nav a:hover{color:var(--mist)}
footer.site nav.legal a{color:var(--mist);font-size:14px}
footer.site nav.legal a:hover{color:var(--cream)}
.fnote{border-top:1px solid rgba(246,245,240,0.18);padding-top:24px;max-width:820px}
.fnote p{font-size:13px;color:var(--mist);line-height:1.6;margin:0 0 10px}
details.qa{border-top:1px solid var(--border);padding:18px 0}
details.qa summary{cursor:pointer;font-family:var(--serif);font-weight:500;font-size:19px}
details.qa p{margin:14px 0 0}
.meta-line{font-size:13px;color:var(--muted)}
.lang-row{display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}
nav.primary a.lang-pill,a.lang-pill{font-size:13px;font-weight:600;color:var(--teal)!important;text-decoration:none;padding:6px 14px!important;border:1px solid var(--border);border-radius:20px;background:#fff;white-space:nowrap;line-height:1.2}
nav.primary a.lang-pill:hover,a.lang-pill:hover{background:var(--teal);color:#fff!important;border-color:var(--teal)}
.hero{display:flex;gap:64px;align-items:center;flex-wrap:wrap;padding-top:72px;padding-bottom:64px}
.hero-portrait{flex:0 0 340px;max-width:100%}
.hero-portrait img{width:340px;max-width:100%;height:auto;aspect-ratio:340/507;object-fit:cover;border-radius:10px;display:block;border:1px solid var(--border)}
.side-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:22px 24px;position:sticky;top:96px;box-shadow:0 1px 3px rgba(18,35,63,0.05)}
.side-card h3{font-family:var(--serif);font-weight:500;font-size:18px;margin:0 0 10px}
.side-card ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:14px}
.page-with-rail{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:44px;align-items:start}

@media (max-width:960px){
  .wrap,.narrow,.mid{padding-left:20px;padding-right:20px}
  .nav-toggle{display:inline-flex}
  /* Drawer rules are scoped to the enhanced nav. Without the enhancer script the
     nav stays a plain wrapping list rather than becoming invisible. */
  nav.primary[data-kpsgill-nav="1"]{display:none;position:fixed;inset:0;top:64px;background:var(--cream);z-index:60;flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 28px;overflow-y:auto;border-top:1px solid var(--border)}
  nav.primary[data-kpsgill-nav="1"].open{display:flex}
  nav.primary:not([data-kpsgill-nav="1"]){gap:6px 14px;padding-bottom:6px}
  nav.primary:not([data-kpsgill-nav="1"]) a:not(.btn){font-size:15px}
  nav.primary a:not(.btn){padding:13px 4px;border-bottom:1px solid var(--border);font-size:17px}
  nav.primary:not([data-kpsgill-nav="1"]) a:not(.btn){border-bottom:0;padding:4px 0}
  nav.primary a.lang-pill{border-bottom:0}
  nav.primary .btn,nav.primary .intel-pill,nav.primary .home-pill,nav.primary .weekly-pill{align-self:flex-start;margin-top:14px}
  nav.primary:not([data-kpsgill-nav="1"]) .btn{margin-top:8px}
  nav.primary .lang-row{margin-top:16px}
  .page-with-rail{grid-template-columns:1fr}
  .side-card{position:static}
  .hero{padding-top:40px;padding-bottom:40px;gap:32px}
  .hero-portrait{flex:0 0 220px;max-width:220px;margin:0 auto}
}
@media (max-width:600px){
  body{font-size:16px}
  .wrap,.narrow,.mid{padding-left:18px;padding-right:18px}
  .card,.notice,.side-card{padding:20px}
  .prose ul.cols{columns:1}
  h1.page{margin-bottom:18px}
  .btn{width:100%;justify-content:center}
  header.site .hrow>a.btn{display:none}
}
@media (max-width:520px){
  .prose h2{margin-top:32px}
  .prose p:first-of-type{font-size:1.03em}
  .hrow{gap:12px}
  .brand{font-size:18px}
  footer.site nav{gap:8px 16px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* --- long strings, citations and section numbers must never widen the page --- */
.prose,.prose p,.prose li,.prose td,.crumbs,h1.page,h2.sec{overflow-wrap:break-word}
.prose a,.ask-list a{overflow-wrap:anywhere}

/* --- Ask KPSGILL: hybrid library + assistant, present on every page --- */
.askband{background:linear-gradient(180deg,#FFFFFF 0%,#FBFAF6 100%)}
.askband-in{padding-top:56px;padding-bottom:60px;max-width:900px}
.askband-lede{font-size:16px;line-height:1.7;color:var(--muted);margin:0 0 24px;max-width:660px;text-wrap:pretty}
.ask-scope{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}
.ask-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:22px;padding:6px 8px 6px 14px;font-family:var(--mono);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);min-height:40px}
.ask-pill select{font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--navy);border:0;background:transparent;padding:4px 6px;min-height:32px;cursor:pointer;max-width:100%}
.ask-pill-static{padding-right:14px}
.ask-pill-v{font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--navy)}
.ask-form{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 6px}
.ask-input{flex:1 1 320px;min-width:0;font-family:var(--sans);font-size:16px;padding:13px 16px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy);min-height:52px}
.ask-go{min-height:52px;flex:0 0 auto}
.ask-seed{font-size:14px;color:var(--muted);margin:12px 0 0}
.ask-seed-btn{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--teal);background:transparent;border:0;border-bottom:1px solid var(--teal);padding:0;cursor:pointer}
.ask-enhance{margin-top:16px}
.ask-enhance .ask-scope{margin-bottom:14px}
.ask-results{margin:18px 0 0}
.ask-count,.ask-none{font-family:var(--mono);font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.ask-kindhead{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:center;margin:0 0 14px}
.ask-kindhead .ask-count{margin:0}
.ask-answer-kind{display:inline-flex;flex-wrap:wrap;gap:6px}
.ask-answer-kindnote{font-family:var(--mono);font-size:10.5px;letter-spacing:0.07em;text-transform:uppercase;font-weight:500;color:var(--navy);opacity:0.8;flex:1 1 200px;min-width:0}
.ask-gapnote{margin:16px 0 0;padding:13px 15px;background:#FBF3E4;border-radius:6px;font-size:14px;line-height:1.62;color:#8A5A1F}
.ask-gapnote strong{font-weight:700}
.ask-none{font-family:var(--sans);font-size:15px;letter-spacing:0;text-transform:none;line-height:1.65;max-width:620px}
.ask-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.ask-list li{display:flex;flex-direction:column;gap:3px;padding:14px 0;border-top:1px solid var(--border)}
.ask-list a{font-family:var(--serif);font-size:18px;font-weight:500;color:var(--navy);text-decoration:none;line-height:1.35}
.ask-list a:hover{color:var(--teal)}
.ask-meta{font-family:var(--mono);font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:var(--muted)}
.ask-desc{font-size:14px;line-height:1.6;color:var(--muted);max-width:640px}
.ask-beyond{margin:26px 0 0;padding-top:24px;border-top:2px solid var(--border)}
.ask-beyond-head{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between}
.ask-beyond-note{font-size:14px;line-height:1.65;color:var(--muted);margin:0;max-width:520px;text-wrap:pretty}
.ask-btn{white-space:nowrap}
.ask-answer{display:none;margin:18px 0 0;border:1px solid var(--gold);border-radius:8px;overflow:hidden}
.ask-answer.on{display:block}
.ask-answer-bar{background:var(--gold);color:var(--navy);padding:10px 16px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:0.09em;text-transform:uppercase;font-weight:600}
.ask-answer-bar .ask-kind{background:rgba(255,255,255,0.9)!important}
.ask-answer-scope{font-weight:500;opacity:0.85}
.ask-answer-body{background:#fff;padding:20px}
.ask-answer-text p{font-size:15.5px;line-height:1.72;color:var(--navy);margin:0 0 13px}
.ask-answer-text p:last-child{margin-bottom:0}
.ask-answer-disc{font-size:13px;line-height:1.6;color:var(--muted);margin:16px 0 0;padding-top:14px;border-top:1px solid var(--border)}
.ask-sources{margin:16px 0 0;padding-top:14px;border-top:1px solid var(--border)}
.ask-sources-h{font-family:var(--mono);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.ask-sources ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px}
.ask-sources a{font-size:14px}
.ask-err{display:none;margin:16px 0 0;padding:14px 16px;background:#fff;border:1px solid var(--red);border-radius:6px;font-size:14px;line-height:1.6;color:var(--red)}
.ask-err.on{display:block}
@media (max-width:600px){
  .askband-in{padding-top:40px;padding-bottom:44px}
  .ask-pill{width:100%;justify-content:space-between;padding-right:12px}
  .ask-pill select{flex:1 1 auto;text-align:right}
  .ask-go{width:100%;justify-content:center}
  .ask-beyond-head .ask-btn{width:100%;justify-content:center}
}

/* ============================================================
   2026 LAYER — applies to every page through the shared sheet.
   Additive: it elevates the existing markup rather than
   requiring 686 pages to change structure.
   ============================================================ */

:root{
  --ink:#0E1B31;
  --paper:#FBFAF7;
  --line:#E4E2DA;
  --line-soft:#EFEDE6;
  --teal-deep:#175A4A;
  --gold-soft:#F3E5C8;
  --shadow-1:0 1px 2px rgba(14,27,49,0.04),0 2px 8px rgba(14,27,49,0.04);
  --shadow-2:0 2px 4px rgba(14,27,49,0.05),0 8px 24px rgba(14,27,49,0.07);
  --shadow-3:0 4px 8px rgba(14,27,49,0.06),0 18px 48px rgba(14,27,49,0.10);
  --ease:cubic-bezier(0.22,0.61,0.36,1);
}

body{
  font-size:17.5px;
  line-height:1.68;
  letter-spacing:-0.003em;
  background:var(--cream);
  background-image:
    radial-gradient(1100px 620px at 88% -14%, rgba(184,134,59,0.13), rgba(184,134,59,0) 62%),
    radial-gradient(900px 640px at -10% 8%, rgba(31,111,92,0.10), rgba(31,111,92,0) 60%),
    radial-gradient(700px 700px at 50% 108%, rgba(18,35,63,0.05), rgba(18,35,63,0) 60%);
  background-attachment:fixed;
}

/* ---------- Navigation: a floating glass rail ---------- */
header.site{
  background:rgba(251,250,247,0.72);
  backdrop-filter:saturate(1.6) blur(18px);
  -webkit-backdrop-filter:saturate(1.6) blur(18px);
  border-bottom:1px solid rgba(18,35,63,0.07);
  transition:box-shadow 0.3s var(--ease), background 0.3s var(--ease);
}
header.site.is-stuck{box-shadow:0 1px 0 rgba(18,35,63,0.06),0 10px 34px rgba(18,35,63,0.07);background:rgba(251,250,247,0.9)}
.hrow{padding-top:12px;padding-bottom:12px;gap:14px 22px}

.brand{
  display:inline-flex;align-items:center;gap:11px;
  font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:-0.015em;
  color:var(--ink);
}
.brand-mark{
  width:34px;height:34px;border-radius:50%;flex:0 0 34px;
  background:var(--navy) center/cover no-repeat;
  box-shadow:0 0 0 1px rgba(18,35,63,0.10),0 2px 6px rgba(18,35,63,0.14);
}
.brand-mark img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.brand-txt{display:flex;flex-direction:column;line-height:1.12}
.brand-txt small{font-family:var(--mono);font-size:9px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);font-weight:500}

nav.primary{gap:2px 4px}
/* nav label wrapping */
nav.primary a:not(.btn){white-space:nowrap}
nav.primary a:not(.btn):not(.lang-pill):not(.intel-pill):not(.home-pill):not(.weekly-pill){
  position:relative;font-size:14.5px;font-weight:500;color:var(--ink);
  padding:8px 11px;border-radius:8px;
  transition:background 0.2s var(--ease), color 0.2s var(--ease);
}
nav.primary a:not(.btn):not(.lang-pill):not(.intel-pill):not(.home-pill):not(.weekly-pill):hover{
  background:rgba(18,35,63,0.055);color:var(--ink);
}
nav.primary a:not(.btn)[aria-current="page"]{
  color:var(--teal-deep);background:rgba(31,111,92,0.09);border-bottom:0;font-weight:600;
}
.home-pill{
  gap:7px;font-size:13.5px;font-weight:600;padding:7px 14px!important;
  border:1px solid rgba(18,35,63,0.14);background:#fff;box-shadow:var(--shadow-1);
  transition:transform 0.18s var(--ease), box-shadow 0.18s var(--ease), border-color 0.18s var(--ease);
}
.home-pill::before{content:"";width:13px;height:13px;flex:0 0 13px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 10.5 12 3l9 7.5V21H3z' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 10.5 12 3l9 7.5V21H3z' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.home-pill:hover{transform:translateY(-1px);box-shadow:var(--shadow-2);border-color:var(--teal)}
.intel-pill{
  font-size:13.5px;font-weight:600;padding:7px 15px!important;letter-spacing:-0.005em;
  background:linear-gradient(135deg,#12233F 0%,#1B3357 100%);
  box-shadow:0 1px 2px rgba(18,35,63,0.2),0 4px 14px rgba(18,35,63,0.18);
  transition:transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.intel-pill:hover{background:linear-gradient(135deg,#175A4A 0%,#1F6F5C 100%);transform:translateY(-1px);box-shadow:0 2px 4px rgba(23,90,74,0.24),0 8px 22px rgba(23,90,74,0.22)}
.weekly-pill{
  font-size:13.5px;font-weight:600;padding:7px 14px!important;
  background:var(--gold-soft);border-color:rgba(184,134,59,0.5);
  transition:transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.weekly-pill:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(184,134,59,0.3)}
.lang-pill{font-family:var(--mono);font-size:11.5px;padding:5px 10px;border-radius:14px;border:1px solid var(--line);color:var(--muted);text-decoration:none;transition:border-color 0.18s var(--ease),color 0.18s var(--ease)}
.lang-pill:hover{border-color:var(--navy);color:var(--navy)}
.lang-row{display:inline-flex;flex-wrap:wrap;gap:5px;align-items:center}

.nav-toggle{border-radius:11px;border-color:rgba(18,35,63,0.14);box-shadow:var(--shadow-1);transition:transform 0.18s var(--ease)}
.nav-toggle:active{transform:scale(0.96)}
.nav-toggle span{transition:transform 0.26s var(--ease),opacity 0.2s var(--ease)}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* ---------- Reading progress: a hairline of gold ---------- */
.read-bar{position:fixed;top:0;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--teal) 0%,var(--gold) 100%);z-index:60;transition:width 0.1s linear;pointer-events:none}

/* ---------- Type ---------- */
h1.page,h1{font-family:var(--serif);font-weight:500;letter-spacing:-0.028em;line-height:1.05;text-wrap:balance}
h1.page{font-size:clamp(34px,5.4vw,58px);margin:0 0 20px}
h2,h2.sec{font-family:var(--serif);font-weight:500;letter-spacing:-0.02em;line-height:1.16;text-wrap:balance}
h2.sec{font-size:clamp(25px,3.2vw,36px)}
h3{font-family:var(--serif);font-weight:500;letter-spacing:-0.014em;line-height:1.24}
.eyebrow{font-size:11px;letter-spacing:0.17em;font-weight:600;margin:0 0 15px;display:flex;align-items:center;gap:9px}
.eyebrow::after{content:"";height:1px;flex:1 1 auto;max-width:78px;background:linear-gradient(90deg,currentColor,transparent);opacity:0.42}
.eyebrow.gray{color:var(--muted)}
.rule{height:1px;background:linear-gradient(90deg,var(--gold) 0%,rgba(184,134,59,0.18) 34%,transparent 100%);margin:0 0 26px;border:0}

/* ---------- Prose ---------- */
.prose{font-size:17.5px;line-height:1.78}
.prose p{margin:0 0 1.25em;text-wrap:pretty;max-width:74ch}
.prose > p:first-of-type{font-size:1.1em;line-height:1.66;color:#24344E}
.prose h2{font-size:clamp(24px,2.9vw,31px);margin:2.4em 0 0.7em;padding-top:0.5em;border-top:1px solid var(--line-soft)}
.prose h2:first-child{margin-top:0;border-top:0;padding-top:0}
.prose h3{font-size:clamp(19px,2.1vw,22px);margin:2em 0 0.6em}
.prose ul,.prose ol{margin:0 0 1.35em;padding-left:1.35em;display:flex;flex-direction:column;gap:0.55em;max-width:74ch}
.prose li{text-wrap:pretty}
.prose a{color:var(--teal-deep);text-decoration:none;border-bottom:1px solid rgba(23,90,74,0.32);transition:border-color 0.18s var(--ease),background 0.18s var(--ease)}
.prose a:hover{border-bottom-color:var(--teal-deep);background:rgba(31,111,92,0.07)}
.prose blockquote{margin:2em 0;padding:4px 0 4px 26px;border-left:2px solid var(--gold);font-family:var(--serif);font-size:1.16em;line-height:1.5;color:#24344E}
.prose strong{font-weight:650}
.prose code{font-family:var(--mono);font-size:0.9em;background:rgba(18,35,63,0.055);padding:2px 6px;border-radius:4px}

/* ---------- Tables: real tables, framed, never a mystery box ---------- */
.prose table,main table{width:100%;border-collapse:separate;border-spacing:0;font-size:15.5px;margin:1.8em 0;background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden;box-shadow:var(--shadow-1)}
.prose th,main th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:0.1em;text-transform:uppercase;font-weight:600;color:var(--muted);background:#F8F7F3;padding:13px 18px;border-bottom:1px solid var(--line)}
.prose td,main td{padding:14px 18px;border-bottom:1px solid var(--line-soft);vertical-align:top;text-wrap:pretty}
.prose tr:last-child td,main tr:last-child td{border-bottom:0}
.prose tbody tr:hover td,main tbody tr:hover td{background:#FCFBF8}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:11px}
.table-scroll table{min-width:0;margin:0}
.table-scroll::after{content:"Scroll \2192";display:block;font-family:var(--mono);font-size:10px;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);padding:7px 2px 0}

/* Key-value tables (profile, credentials) read as a definition list, not a grid */
table.kv,.kv table{box-shadow:none}
table.kv th{width:38%;background:#FCFBF8;font-family:var(--sans);font-size:14px;letter-spacing:0;text-transform:none;color:var(--muted);font-weight:600}
table.kv td{font-weight:500}

/* ---------- Cards & panels ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-1);transition:transform 0.22s var(--ease),box-shadow 0.22s var(--ease)}
a.card:hover,.card.lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}
.band{position:relative}
.crumbs{font-family:var(--mono);font-size:11px;letter-spacing:0.09em;text-transform:uppercase;color:var(--muted)}
.crumbs a{color:var(--muted);text-decoration:none;border-bottom:1px solid transparent}
.crumbs a:hover{color:var(--teal-deep);border-bottom-color:var(--teal-deep)}
.meta-line{font-size:14px;line-height:1.62;color:var(--muted)}
.side-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:24px;box-shadow:var(--shadow-1)}
.side-card h3{font-size:17px;margin:0 0 12px}
.side-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:14.5px}

/* A page with a rail is a two-column reading layout, not a scroll box */
.page-with-rail{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,286px);gap:clamp(28px,4vw,52px);align-items:start}
.page-with-rail > *{min-width:0}
.page-with-rail .side-card{position:sticky;top:96px}

/* ---------- Buttons ---------- */
.btn{border-radius:9px;font-weight:600;letter-spacing:-0.005em;box-shadow:0 1px 2px rgba(18,35,63,0.16),0 4px 14px rgba(18,35,63,0.14);transition:transform 0.18s var(--ease),box-shadow 0.18s var(--ease),background 0.18s var(--ease)}
.btn:hover{transform:translateY(-1px);box-shadow:0 2px 5px rgba(18,35,63,0.18),0 10px 26px rgba(18,35,63,0.18)}
.btn:active{transform:translateY(0)}
.btn.outline{box-shadow:none;background:#fff}
.btn.outline:hover{box-shadow:var(--shadow-2);border-color:var(--teal-deep)}
.btn.gold{box-shadow:0 1px 2px rgba(184,134,59,0.28),0 4px 14px rgba(184,134,59,0.26)}

/* ---------- Footer ---------- */
footer.site{background:var(--navy);background-image:radial-gradient(760px 420px at 8% 0%, rgba(31,111,92,0.30), rgba(31,111,92,0) 62%),radial-gradient(700px 380px at 96% 100%, rgba(184,134,59,0.20), rgba(184,134,59,0) 60%);color:var(--mist)}
footer.site .fname{font-family:var(--serif);font-size:23px;font-weight:500;letter-spacing:-0.018em;color:#F6F5F0;margin:0 0 4px}
footer.site .fsub{font-size:14.5px;color:var(--mist);margin:0 0 26px}
footer.site nav{display:flex;flex-wrap:wrap;gap:10px 26px;margin:0 0 20px}
footer.site nav a{color:#DDE3DE;text-decoration:none;font-size:14.5px;border-bottom:1px solid transparent;transition:border-color 0.18s var(--ease),color 0.18s var(--ease)}
footer.site nav a:hover{color:#fff;border-bottom-color:var(--gold)}
footer.site nav.legal a{font-size:13px;color:var(--mist)}
footer.site .fnote{border-top:1px solid rgba(246,245,240,0.16);margin-top:22px;padding-top:20px}
footer.site .fnote p{font-size:12.8px;line-height:1.68;color:#9AA6A0;margin:0 0 9px;max-width:88ch;text-wrap:pretty}

/* ---------- Scroll reveal (opt-out honoured below) ---------- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity 0.6s var(--ease),transform 0.6s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- Mobile ---------- */
@media (max-width:980px){
  .page-with-rail{grid-template-columns:1fr;gap:32px}
  .page-with-rail .side-card{position:static}
}
@media (max-width:960px){
  header.site{position:sticky}
  nav.primary[data-kpsgill-nav="1"]{
    background:var(--paper);
    background-image:radial-gradient(600px 400px at 100% 0%, rgba(184,134,59,0.12), rgba(184,134,59,0) 62%);
    padding:14px 22px 34px;
  }
  nav.primary[data-kpsgill-nav="1"] a:not(.btn){font-size:17.5px;font-weight:500;padding:15px 4px;border-radius:0}
  nav.primary[data-kpsgill-nav="1"] a:not(.btn):hover{background:transparent;color:var(--teal-deep)}
  nav.primary[data-kpsgill-nav="1"] .home-pill,nav.primary[data-kpsgill-nav="1"] .intel-pill,nav.primary[data-kpsgill-nav="1"] .weekly-pill{align-self:stretch;justify-content:center;font-size:15px;padding:13px 18px!important;margin-top:12px;border-bottom:0}
  nav.primary[data-kpsgill-nav="1"] .btn{align-self:stretch;justify-content:center;margin-top:12px}
  nav.primary[data-kpsgill-nav="1"] .lang-row{margin-top:20px;gap:7px}
  body.nav-open{overflow:hidden}
}
@media (max-width:600px){
  body{font-size:17px}
  .wrap,.narrow,.mid{padding-left:18px;padding-right:18px}
  .prose{font-size:17px;line-height:1.74}
  .prose th,.prose td,main th,main td{padding:11px 13px}
  .brand{font-size:17px;gap:9px}
  .brand-mark{width:30px;height:30px;flex-basis:30px}
  .eyebrow::after{display:none}
}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1!important;transform:none!important}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
@media print{
  header.site,footer.site,.nav-toggle,.read-bar,.askband,.ask-enhance{display:none!important}
  body{background:#fff}
}

/* ---------- Professional profile: a person, not a data box ---------- */
.profile-hero{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:clamp(28px,4.5vw,60px);align-items:center;padding:clamp(24px,4vw,44px) 0 clamp(20px,3vw,32px)}
.profile-portrait{margin:0;position:relative}
.profile-portrait::before{content:"";position:absolute;inset:14px -16px -18px 16px;border-radius:16px;background:linear-gradient(150deg,rgba(31,111,92,0.16),rgba(184,134,59,0.20));z-index:0}
.profile-portrait img{position:relative;z-index:1;display:block;width:100%;height:auto;border-radius:14px;box-shadow:var(--shadow-3);background:#fff}
.profile-intro{min-width:0}
.profile-lede{font-family:var(--serif);font-size:clamp(19px,2.2vw,24px);font-weight:400;line-height:1.42;letter-spacing:-0.012em;color:#24344E;margin:0 0 18px;max-width:44ch;text-wrap:pretty}
.profile-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:11px;overflow:hidden;margin:0 0 26px}
.profile-facts > div{background:#fff;padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0}
.profile-facts span{font-family:var(--mono);font-size:9.5px;letter-spacing:0.11em;text-transform:uppercase;color:var(--muted);font-weight:500}
.profile-facts strong{font-size:15px;font-weight:600;color:var(--ink);line-height:1.32;text-wrap:pretty}
.profile-cta{display:flex;flex-wrap:wrap;gap:11px}

.profile-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:15px}
.profile-links a{display:flex;flex-direction:column;gap:6px;padding:22px 24px;text-decoration:none;color:var(--ink)}
.profile-links span{font-family:var(--mono);font-size:9.5px;letter-spacing:0.12em;text-transform:uppercase;color:var(--gold-text);font-weight:600}
.profile-links strong{font-family:var(--serif);font-size:19px;font-weight:500;letter-spacing:-0.014em;line-height:1.26}
.profile-links em{font-style:normal;font-size:14px;line-height:1.6;color:var(--muted);text-wrap:pretty}
.profile-links a:hover strong{color:var(--teal-deep)}

@media (max-width:860px){
  .profile-hero{grid-template-columns:1fr;gap:28px;text-align:left}
  .profile-portrait{max-width:260px}
  .profile-portrait::before{inset:12px -12px -14px 12px}
}

/* ---------- Contact: one form, many kinds of sender ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,330px);gap:clamp(28px,4vw,52px);align-items:start}
.contact-grid > *{min-width:0}
.who{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 6px}
.who label{position:relative;display:flex;flex-direction:column;gap:5px;padding:15px 16px;background:#fff;border:1px solid var(--line);border-radius:11px;cursor:pointer;transition:border-color 0.18s var(--ease),box-shadow 0.18s var(--ease),background 0.18s var(--ease);min-height:74px}
.who label:hover{border-color:rgba(31,111,92,0.5)}
.who input{position:absolute;opacity:0;pointer-events:none}
.who strong{font-size:15px;font-weight:600;line-height:1.28}
.who em{font-style:normal;font-size:12.5px;line-height:1.5;color:var(--muted);text-wrap:pretty}
.who input:checked + strong{color:var(--teal-deep)}
.who label:has(input:checked){border-color:var(--teal-deep);background:#F4F9F7;box-shadow:0 0 0 1px var(--teal-deep) inset}
.who input:focus-visible + strong{outline:2px solid var(--teal);outline-offset:3px}
.field{display:flex;flex-direction:column;gap:7px;margin:0 0 16px}
.field label{font-family:var(--mono);font-size:10.5px;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.field input,.field textarea,.field select{font-family:var(--sans);font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:9px;padding:13px 15px;min-height:52px;width:100%;transition:border-color 0.18s var(--ease),box-shadow 0.18s var(--ease)}
.field textarea{min-height:150px;line-height:1.62;resize:vertical}
.field input:focus,.field textarea:focus,.field select:focus{outline:0;border-color:var(--teal-deep);box-shadow:0 0 0 3px rgba(31,111,92,0.13)}
.field .hint{font-size:13px;line-height:1.55;color:var(--muted);text-wrap:pretty}
.route-note{font-size:14px;line-height:1.65;color:#24344E;margin:0 0 20px;padding:14px 16px;background:var(--gold-soft);border-radius:9px;text-wrap:pretty}
.consent{display:flex;gap:11px;align-items:flex-start;margin:0 0 22px;font-size:14px;line-height:1.6;color:var(--muted)}
.consent input{width:20px;height:20px;flex:0 0 20px;margin-top:2px;accent-color:var(--teal-deep)}
.contact-aside{display:flex;flex-direction:column;gap:14px}
.contact-aside .card{padding:20px 22px}
.contact-aside h3{font-size:16px;margin:0 0 9px}
.contact-aside p{font-size:14px;line-height:1.62;color:var(--muted);margin:0 0 8px;text-wrap:pretty}
.contact-aside p:last-child{margin-bottom:0}
.urgent{background:#FDF4F4;border-color:rgba(161,58,58,0.34)}
.urgent h3{color:var(--red)}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;gap:30px}}

.who + p,.contact-grid legend{max-width:none}
.contact-grid fieldset legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;float:none}
.contact-grid fieldset legend .req{color:var(--red);font-size:12px}
.req{color:var(--red)}
.opt{font-family:var(--sans);font-size:11px;letter-spacing:0;text-transform:none;color:var(--muted);font-weight:400}

/* ---------- Mobile drawer geometry ----------
   header.site carries backdrop-filter for the glass effect. A filtered element
   becomes the containing block for its position:fixed descendants, which sized
   the drawer to the header rather than the viewport. The effect is dropped at the
   widths where the drawer exists, and the offset is measured rather than guessed. */
@media (max-width:960px){
  header.site{
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    background:rgba(251,250,247,0.98);
    box-shadow:0 1px 0 rgba(18,35,63,0.07);
  }
  nav.primary[data-kpsgill-nav="1"]{
    top:var(--hdr-h,64px);
    inset-inline:0;
    bottom:0;
    height:auto;
    max-height:none;
    overscroll-behavior:contain;
    /* A wrapping column turns a tall menu into two clipped columns. The drawer
       scrolls instead. */
    flex-wrap:nowrap;
    justify-content:flex-start;
  }
  nav.primary[data-kpsgill-nav="1"] > *{flex:0 0 auto}
  nav.primary[data-kpsgill-nav="1"].open{display:flex}
}

/* ---------- You may be interested in ---------- */
.interest{margin:56px auto 0;padding:40px 24px 0;border-top:2px solid var(--line);max-width:1180px;box-sizing:border-box}
.interest .eyebrow{margin:0 0 6px}
.interest-lede{font-size:14.5px;line-height:1.62;color:var(--muted);margin:0 0 22px;max-width:66ch;text-wrap:pretty}
.interest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:13px}
.interest-card{display:flex;flex-direction:column;gap:7px;padding:19px 21px;background:#fff;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow-1);transition:transform 0.2s var(--ease),box-shadow 0.2s var(--ease),border-color 0.2s var(--ease)}
.interest-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:rgba(31,111,92,0.42)}
.interest-kind{font-family:var(--mono);font-size:9.5px;letter-spacing:0.11em;text-transform:uppercase;color:var(--gold-text);font-weight:600;line-height:1.4}
.interest-card strong{font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:-0.012em;line-height:1.3;text-wrap:pretty}
.interest-card:hover strong{color:var(--teal-deep)}
.interest-card.is-patient .interest-kind{color:var(--teal-deep)}
.interest-more{margin:22px 0 0;font-size:14.5px;line-height:1.65;color:var(--muted);text-wrap:pretty}

/* ---------- Share ---------- */
.share{margin:40px auto 0;width:calc(100% - 48px);max-width:1180px;box-sizing:border-box;padding:22px 24px;background:#fff;border:1px solid var(--line);border-radius:12px;display:flex;flex-wrap:wrap;gap:14px 18px;align-items:center;box-shadow:var(--shadow-1)}
.share-h{font-family:var(--mono);font-size:10.5px;letter-spacing:0.11em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0;flex:0 0 auto}
.share-row{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.share-row a,.share-row button{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);background:#F8F7F3;border:1px solid var(--line);border-radius:20px;padding:9px 15px;min-height:42px;text-decoration:none;cursor:pointer;transition:background 0.18s var(--ease),border-color 0.18s var(--ease),transform 0.18s var(--ease)}
.share-row a:hover,.share-row button:hover{background:#fff;border-color:var(--navy);transform:translateY(-1px)}
.share-row button.copied{background:#E8F1ED;border-color:var(--teal-deep);color:var(--teal-deep)}
@media (max-width:600px){
  .share{padding:18px}
  .share-row{margin-left:0;width:100%}
  .share-row a,.share-row button{flex:1 1 auto;justify-content:center}
}
@media print{.interest,.share{display:none}}

/* ---------- Quote sharing: pass on the sentence, not just the link ---------- */
.quote-bar{position:absolute;z-index:70;display:none;align-items:center;gap:4px;padding:6px;background:var(--navy);border-radius:10px;box-shadow:0 6px 24px rgba(14,27,49,0.30);max-width:calc(100vw - 20px)}
.quote-bar.on{display:flex;flex-wrap:wrap}
.quote-bar-h{font-family:var(--mono);font-size:9.5px;letter-spacing:0.1em;text-transform:uppercase;color:#8FA098;font-weight:600;padding:0 8px 0 6px;white-space:nowrap}
.quote-bar button{font-family:var(--sans);font-size:13px;font-weight:600;color:#12233F;background:#F6F5F0;border:0;border-radius:6px;padding:7px 12px;min-height:34px;cursor:pointer;white-space:nowrap;transition:background 0.15s var(--ease)}
.quote-bar button:hover{background:#fff}
::selection{background:var(--gold-soft);color:var(--ink)}
:target,::target-text{background:var(--gold-soft)}
@media (max-width:600px){
  .quote-bar-h{display:none}
  .quote-bar button{font-size:12.5px;padding:7px 10px}
}
@media print{.quote-bar{display:none!important}}

:root{--k-navy:#12233F;--k-ink:#0E1B31;--k-cream:#F6F5F0;--k-paper:#FBFAF7;--k-teal:#1F6F5C;--k-teal-deep:#175A4A;--k-gold:#B8863B;--k-gold-soft:#F3E5C8;--k-gold-text:#90692E;--k-line:#E4E2DA;--k-muted:#6F7068;--k-mist:#B9C2BC;--k-serif:Fraunces,Georgia,serif;--k-sans:'Public Sans',system-ui,Arial,sans-serif;--k-mono:'IBM Plex Mono',Consolas,monospace;--k-ease:cubic-bezier(0.22,0.61,0.36,1);--k-globe:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cg fill=%27none%27 stroke=%27%23000%27 stroke-width=%272%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%279%27/%3E%3Cpath d=%27M3 12h18M12 3c2.5 2.5 2.5 15 0 18M12 3c-2.5 2.5-2.5 15 0 18%27/%3E%3C/g%3E%3C/svg%3E")}.k-read{position:fixed;top:0;left:0;height:2px;width:0;z-index:65;pointer-events:none;background:linear-gradient(90deg,var(--k-teal) 0%,var(--k-gold) 100%);transition:width .1s linear}@media print{.k-read{display:none}}

/* Landing pages carry .wrap on these blocks; article pages do not. Either way the inset
   and the centring must survive the blocks' own margin/padding shorthand. */
.interest.wrap{padding-left:24px;padding-right:24px}
.share.wrap{width:calc(100% - 48px)}
@media (max-width:600px){
  .interest,.interest.wrap{padding-left:18px;padding-right:18px}
  .share,.share.wrap{width:calc(100% - 36px)}
}

.k-grp-navy>summary{color:#F6F5F0;background:linear-gradient(135deg,#12233F 0%,#1B3357 100%);font-size:13.5px;font-weight:600;box-shadow:0 1px 2px rgba(18,35,63,.2),0 4px 14px rgba(18,35,63,.18)}.k-grp-navy>summary:hover{background:linear-gradient(135deg,#175A4A 0%,#1F6F5C 100%)}.k-grp-gold>summary{color:#6E4E1B;background:var(--k-gold-soft);font-size:13.5px;font-weight:600;box-shadow:inset 0 0 0 1px rgba(184,134,59,.42)}.k-grp-gold>summary:hover{background:#EFDCB4}@media (max-width:960px){.k-grp-navy>summary,.k-grp-gold>summary{font-size:17.5px;background:none;color:var(--k-ink);box-shadow:none}}

/* Single source of truth for the site header. Written into the stylesheet, and the header
   markup written into every page, so navigation is present in the initial HTML and works
   with JavaScript disabled. assets/kpsgill-nav.js only adds the mobile toggle and polish. */
:root{--k-hdr-h:68px;--k-navy:#12233F;--k-ink:#0E1B31;--k-cream:#F6F5F0;--k-paper:#FBFAF7;--k-teal:#1F6F5C;--k-teal-deep:#175A4A;--k-gold:#B8863B;--k-gold-soft:#F3E5C8;--k-gold-text:#90692E;--k-line:#E4E2DA;--k-muted:#6F7068;--k-mist:#B9C2BC;--k-serif:Fraunces,Georgia,serif;--k-sans:'Public Sans',system-ui,Arial,sans-serif;--k-mono:'IBM Plex Mono',Consolas,monospace;--k-ease:cubic-bezier(0.22,0.61,0.36,1);--k-globe:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cg fill=%27none%27 stroke=%27%23000%27 stroke-width=%272%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%279%27/%3E%3Cpath d=%27M3 12h18M12 3c2.5 2.5 2.5 15 0 18M12 3c-2.5 2.5-2.5 15 0 18%27/%3E%3C/g%3E%3C/svg%3E")}.k-read{position:fixed;top:0;left:0;height:2px;width:0;z-index:65;pointer-events:none;background:linear-gradient(90deg,var(--k-teal) 0%,var(--k-gold) 100%);transition:width .1s linear}@media print{.k-read{display:none}}.k-grp-navy>summary{color:#F6F5F0;background:linear-gradient(135deg,#12233F 0%,#1B3357 100%);font-size:13.5px;font-weight:600;box-shadow:0 1px 2px rgba(18,35,63,.2),0 4px 14px rgba(18,35,63,.18)}.k-grp-navy>summary:hover{background:linear-gradient(135deg,#175A4A 0%,#1F6F5C 100%)}.k-grp-gold>summary{color:#6E4E1B;background:var(--k-gold-soft);font-size:13.5px;font-weight:600;box-shadow:inset 0 0 0 1px rgba(184,134,59,.42)}.k-grp-gold>summary:hover{background:#EFDCB4}@media (max-width:960px){.k-grp-navy>summary,.k-grp-gold>summary{font-size:17.5px;background:none;color:var(--k-ink);box-shadow:none}}

/* editorial refinement */
::selection{background:rgba(184,134,59,.22)}
h1.page{letter-spacing:-.018em;text-wrap:balance}
main a:not([class]){text-decoration-thickness:from-font;text-underline-offset:.18em}
main table caption{text-wrap:pretty}
main article[id]:target{box-shadow:0 0 0 2px var(--gold)}

/* NextGen institutional layer (2026-08-31) — semantic status, strips, cards */
:root{--ng-final:#1F5C3A;--ng-proposed:#8A5A1F;--ng-enforce:#6E2318;--ng-deadline:#8C3A2B;--ng-forecast:#12233F}
.st{display:inline-block;max-inline-size:100%;font:500 10px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:5px 8px;border-radius:3px;color:#fff;background:var(--muted);white-space:normal;overflow-wrap:anywhere;text-wrap:pretty}
.st-final,.st-effective,.st-enacted,.st-signed{background:var(--ng-final)}
.st-proposed,.st-consultation,.st-pending{background:var(--ng-proposed)}
.st-enforcement{background:var(--ng-enforce)}
.st-deadline,.st-proposal{background:var(--ng-deadline)}
.st-forecast,.st-active,.st-record{background:var(--ng-forecast)}
.st-gap{background:#fff;color:var(--ng-proposed);border:1px solid var(--ng-proposed)}
.ng-strip{display:grid;gap:1px;background:var(--cream);border:1px solid var(--border);grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}
.ng-strip>a,.ng-strip>div{background:#fff;box-shadow:0 0 0 1px var(--border);padding:13px 15px;text-decoration:none;color:var(--navy);display:flex;flex-direction:column;gap:4px}
.ng-strip>a:hover{background:#FBF8F3}
.ng-k{font:500 9.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.ng-v{font:500 21px/1.15 var(--serif);color:var(--navy)}
.ng-cards{display:grid;gap:2px;grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.ng-card{border:1px solid var(--border);background:#fff;padding:17px 19px;display:flex;flex-direction:column;gap:8px;color:var(--navy)}
a.ng-card{text-decoration:none}a.ng-card:hover{border-color:var(--navy)}
.ng-h2{margin:0;font-family:var(--serif);font-size:27px;font-weight:500;line-height:1.25}
.ng-sec{display:flex;flex-direction:column;gap:16px}
.ng-date{font:500 11px/1.4 var(--mono);color:var(--muted)}
.ng-lede{margin:0;font-size:16.5px;line-height:1.65;max-width:72ch;text-wrap:pretty}

.no-print{}
@media print{.no-print{display:none!important}}

/* 1. Anchor landings must not hide under the sticky header.
      Affects every in-page table of contents on the site. */
html{scroll-padding-top:84px}

/* 2. Nothing may establish a horizontal scroll on a phone. */
html,body{max-width:100%}
body{overflow-x:clip}
img,svg,video,iframe,canvas{max-width:100%;height:auto}

/* 3. Inline grids authored with a fixed minimum column collapse to one
      column on phones. A 320px minimum cannot fit a 360px viewport that
      also carries page padding, so the grid overflowed instead of wrapping. */
@media (max-width:700px){
  [style*="minmax(2"],[style*="minmax(3"],[style*="minmax(4"]{grid-template-columns:1fr!important}
  [style*="minmax(min("]{grid-template-columns:1fr!important}
}
/* Narrow stat strips keep two columns until they genuinely cannot. */
@media (max-width:700px){
  .ng-strip{grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr))}
}
@media (max-width:420px){
  .ng-strip{grid-template-columns:1fr}
}

/* 4. Flex columns authored with a fixed minimum width (the language
      home pages) must be allowed to shrink below it. */
@media (max-width:760px){
  [style*="min-width:2"],[style*="min-width:3"],[style*="min-width:4"],[style*="min-width:5"]{min-width:0!important}
  [style*="flex:1 1 520px"],[style*="flex:1 1 480px"],[style*="flex:1 1 420px"]{flex-basis:100%!important}
}

/* 5. Tables. Cells that were told never to wrap will wrap on a phone,
      long citations and URLs break rather than widen the page, and the
      framed table keeps its own horizontal scroll when it must. */
@media (max-width:760px){
  main td[style*="nowrap"],main th[style*="nowrap"],.prose td[style*="nowrap"],.prose th[style*="nowrap"]{white-space:normal!important}
  main table,.prose table{font-size:14.5px}
  /* word-break:break-word was here. It made every cell's min-content ONE CHARACTER, so auto
     layout starved label columns and rendered TERMINATION as T/E/R/M/I/N/A/T/I/O/N. Removed
     2026-09-03. overflow-wrap:break-word does not affect min-content and stays. */
  main th,main td,.prose th,.prose td{padding:10px 11px;overflow-wrap:break-word;word-break:normal}
  main table caption{font-size:13px;text-align:left}
}
@media (max-width:760px){
  /* Inside a scroll frame the wrapper carries the width, so identifiers keep one line. */
  .k-tw td[style*="nowrap"],.k-tw th[style*="nowrap"]{white-space:nowrap!important}
}
/* Author-written scroll wrappers get momentum scrolling and a visible edge. */
[style*="overflow-x:auto"]{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}

/* 6. Legibility floor. Uppercase mono kickers were authored as small as
      9.5px, below the readable minimum on a handset. */
@media (max-width:760px){
  main [style*="font:500 9"],main [style*="font:500 10px"],main [style*="font:500 10.5px"],main [style*="font-size:9"],main [style*="font-size:10px"],main [style*="font-size:10.5px"],.ng-k,.interest-kind,.profile-facts span,.profile-links span{font-size:11px!important;line-height:1.45!important}
  main [style*="font:500 11px"],main [style*="font-size:11px"]{font-size:11.5px!important}
  main [style*="letter-spacing:.16em"],main [style*="letter-spacing:0.16em"],main [style*="letter-spacing:.14em"],main [style*="letter-spacing:0.14em"]{letter-spacing:.09em!important}
}

/* 7. Section headings and ledes authored inline stay inside the column. */
@media (max-width:760px){
  main h1,main h2,main h3,.ng-h2{overflow-wrap:break-word;text-wrap:pretty}
  main h2[style*="font-size:30px"],main h2[style*="font-size:31px"]{font-size:25px!important;line-height:1.22!important}
  main h2[style*="font-size:27px"],main h2[style*="font-size:28px"],main h2[style*="font-size:26px"]{font-size:23px!important;line-height:1.24!important}
  main h2[style*="font-size:23px"],main h2[style*="font-size:24px"]{font-size:21px!important;line-height:1.26!important}
  main [style*="font-size:21px"]{font-size:19px!important}
  main [style*="font-size:19px"]{font-size:17.5px!important}
  .ng-h2{font-size:23px}
  main p[style*="font-size:17px"],main p[style*="font-size:16.5px"],.ng-lede{font-size:16px!important;line-height:1.62!important}
}

/* 8. Inline padding authored for desktop is too generous on a phone. */
@media (max-width:760px){
  main [style*="padding:40px 0 90px"]{padding-top:26px!important;padding-bottom:56px!important}
  main [style*="padding:20px 24px"],main [style*="padding:18px 22px"],main [style*="padding:19px 21px"],main [style*="padding:22px 24px"]{padding:15px 16px!important}
  main [style*="padding:17px 20px"],main [style*="padding:16px 20px"],main [style*="padding:18px 20px"],main [style*="padding:17px 19px"]{padding:14px 15px!important}
  main [style*="padding:16px 18px"],main [style*="padding:15px 19px"],main [style*="padding:14px 18px"]{padding:13px 14px!important}
}

/* 9. Dropdown panels must fit the viewport they open in. */

/* 10. Touch targets. Anything tappable reaches 44px on a handset. */
@media (max-width:760px){
  main nav a,.crumbs a{padding-top:3px;padding-bottom:3px;display:inline-block}
  nav[aria-labelledby="toc-h"] a,nav[aria-label="Clusters"] a{padding:7px 0;min-height:34px}
  nav[aria-label="Clusters"] a{padding:9px 11px}
  .share-row a,.share-row button,.btn,.ask-go{min-height:46px}
}

/* 11. Long unbroken strings anywhere in body copy. */
main p,main li,main dd,main figcaption{overflow-wrap:break-word}
main a{overflow-wrap:anywhere}

/* 12. Figures authored for a wide column. */
@media (max-width:760px){
  main figure{margin-left:0;margin-right:0}
  main figure img{width:100%}
}

/* 13. Reduce the fixed background attachment on touch devices — it costs
       a repaint on every scroll frame and buys nothing on a phone. */
@media (max-width:760px){
  body{background-attachment:scroll}
}

/* ============================================================================
   WIDE DATA TABLES  (added 2026-09-02)
   ----------------------------------------------------------------------------
   THE DEFECT: a five-column legislative table inside <div style="overflow-x:auto">
   with an inline width:100% on the <table>. width:100% makes the table exactly as
   wide as the phone, so the browser compresses every column until "AB 2575" wraps
   to one character per line and "PRESENTED / DEADLINE" becomes a vertical stack of
   letters. The scroll wrapper never scrolls, because the table never exceeds it.

   THE FIX: opt-in class on the wrapper. A desktop-like min-width is restored below
   the wrapper's breakpoint so the TABLE is wider than the phone and the WRAPPER
   scrolls. The page does not scroll; the gutter is untouched.

   Deliberately NOT done: no global table/thead/tbody/tr/th/td rules, no display
   changes (semantics preserved), no table-layout:fixed, no inline-style substring
   selectors, no font shrinking. Applied only where a wrapper carries .k-tw, which
   is added in the HTML to tables of four or more columns.
   ========================================================================== */
.k-tw{width:100%;max-width:100%;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}
.k-tw>table{width:100%;table-layout:auto;border-collapse:collapse}
/* Ordinary English must break at word boundaries, never per character. */
.k-tw th,.k-tw td{word-break:normal;overflow-wrap:normal;hyphens:none;vertical-align:top}
/* Long unbroken identifiers and URLs are the one legitimate exception. */
.k-tw td a[href^="http"]{overflow-wrap:anywhere}
/* Bill numbers, dates and status badges hold one line. */
.k-tw th:first-child,.k-tw td:first-child{white-space:nowrap}
.k-tw td span[style*="border-radius"]{display:inline-block;max-inline-size:100%;white-space:normal;overflow-wrap:anywhere}
/* Min-width scales with the COLUMN COUNT, which the wrapper carries as --cols.
   One fixed value cannot serve a 4-column table and an 11-column one: at 62rem an
   11-column table gets ~90px per column and crushes again. */
@media (max-width:1000px){
  .k-tw>table{min-width:calc(var(--cols,5) * 11.5rem)}
}
/* Auto table layout distributes by content, so a short column next to a verbose one
   gets starved: a date cell measured 46px wide and 158px tall while the lifecycle
   column took 388px. Give the narrow, non-prose columns a floor. */
.k-tw th:first-child,.k-tw td:first-child{white-space:nowrap;min-width:6.5rem}
.k-tw th:nth-child(2),.k-tw td:nth-child(2){min-width:8rem}
.k-tw time{white-space:nowrap}
.k-tw td:last-child,.k-tw th:last-child{min-width:9rem}
/* Restrained cue: the reader is told the table scrolls, once, only where it does. */
.k-tw-hint{display:none;margin:0 0 7px;font:500 10.5px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
@media (max-width:1000px){.k-tw-hint{display:block}}

/* ============================================================================
   FIXED-COUNT CARD GRIDS  (added 2026-09-02)
   ----------------------------------------------------------------------------
   THE DEFECT: four- and eight-item grids used repeat(auto-fit,minmax(240px,1fr))
   on a wrapper with background:var(--border) and gap:1px — the hairline-divider
   trick. auto-fit picks 3 columns at ~900px, so 4 items leave 2 empty cells and
   the wrapper's border colour shows through as a solid grey block. Same for 8
   items at 3 columns (1 empty cell).

   THE FIX: column counts that divide the item count. Never a partial row.
     .k-grid4  ->  4 / 2 / 1 columns
     .k-grid8  ->  4 / 2 / 1 columns  (8 items: never a remainder)
     .k-grid3  ->  3 / 1
   The divider trick is kept, because it is the house style; it only misbehaves
   when a row is incomplete, and these counts guarantee it never is.
   ========================================================================== */
.k-grid4,.k-grid8{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr))}
.k-grid3{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr))}
.k-grid4>*,.k-grid8>*,.k-grid3>*{min-width:0}
@media (max-width:1000px){.k-grid4,.k-grid8{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:720px){.k-grid3{grid-template-columns:1fr}}
@media (max-width:560px){.k-grid4,.k-grid8{grid-template-columns:1fr}}
/* Transparent-wrapper variants (cards carry their own border). */
.k-cards4,.k-cards3{display:grid;gap:2px;grid-template-columns:repeat(4,minmax(0,1fr))}
.k-cards3{grid-template-columns:repeat(3,minmax(0,1fr))}
.k-cards4>*,.k-cards3>*{min-width:0}
@media (max-width:1000px){.k-cards4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:720px){.k-cards3{grid-template-columns:1fr}}
@media (max-width:560px){.k-cards4{grid-template-columns:1fr}}
/* Start-with-these: one spanning card over two. 2 / 1 columns. */
.k-cards-start{display:grid;gap:2px;grid-template-columns:repeat(2,minmax(0,1fr))}
.k-cards-start>*{min-width:0}
@media (max-width:560px){.k-cards-start{grid-template-columns:1fr}}

/* ============================================================================
   DESKTOP SHELL  (added 2026-09-02 — master command Phase 4)
   ----------------------------------------------------------------------------
   THE DEFECT: .narrow is max-width:720px and the stylesheet had NO min-width
   media query. A 1440–2560px display therefore rendered every article as a phone
   column in the middle of the screen. Mobile rules were never the problem; the
   absence of any laptop/desktop design was.

   THE RULE: every declaration below is scoped to min-width. Nothing here touches
   ≤1023px, so the phone and tablet experiences are unchanged and cannot regress.

   THE DESIGN: the PAGE uses the canvas; the PROSE stays readable. On a laptop the
   .narrow article shell widens to a two-column grid — the body column keeps a
   readable measure while the on-page contents nav docks into a sticky rail
   beside it. Tables, figures and full-width components span both columns.
   Gutters step up per Phase 4.8. Nothing depends on a new feature failing well:
   without grid support the page simply stays single-column.
   ========================================================================== */
:root{
  --k-measure:72ch;          /* readable prose width on any device */
  --k-rail:280px;            /* docked contents / context rail on laptop+ */
  --k-gutter-lg:clamp(32px,3.2vw,48px);
  --k-gutter-xl:clamp(48px,3.6vw,72px);
}

/* ---- Tablet: gutters step up; nothing else changes (Phase 4.2) ---- */
@media (min-width:768px) and (max-width:1023px){
  .wrap,.narrow,.mid{padding-left:clamp(24px,3.5vw,32px);padding-right:clamp(24px,3.5vw,32px)}
}

/* ---- Laptop (Phase 4.3, 4.5, 4.6, 4.7) ---- */
@media (min-width:1024px){
  .wrap{max-width:min(1800px,100% - 2*var(--k-gutter-lg));padding-left:var(--k-gutter-lg);padding-right:var(--k-gutter-lg)}
  .mid{max-width:1080px;padding-left:var(--k-gutter-lg);padding-right:var(--k-gutter-lg)}

  /* The article shell becomes a page, not a strip. */
  .narrow{
    max-width:min(1360px,100% - 2*var(--k-gutter-lg));
    padding-left:var(--k-gutter-lg);padding-right:var(--k-gutter-lg);
    display:grid;
    grid-template-columns:minmax(0,1fr) var(--k-rail);
    /* !important: the new analyses carry an inline gap:28px that would otherwise win. */
    column-gap:clamp(40px,4vw,72px)!important;
    row-gap:28px;
    align-items:start;
  }
  /* Inline flex-column shells (the new analyses) keep their vertical stacking
     inside the body column; the grid is applied to the shell itself. */
  .narrow[style*="display:flex"]{display:grid!important;flex-direction:unset}

  /* Everything flows into the body column by default. */
  .narrow>*{grid-column:1;min-width:0}
  /* Readable measure for running text; wide components are exempt below. */
  .narrow>p,.narrow>ul,.narrow>ol,.narrow>blockquote,.narrow>h2,.narrow>h3,.narrow>h4,.narrow>.prose,.narrow>header,.narrow>.ng-lede{max-width:var(--k-measure)}
  .narrow .prose p,.narrow .prose li{max-width:var(--k-measure)}

  /* Components that carry data use the full BODY column (~1000px at the 1360 max), not
     both columns: a full-span child cannot coexist with a rail that spans rows — auto
     placement would throw it (and everything after it) below the rail's last row. */
  .narrow>.k-tw,.narrow>[style*="overflow-x:auto"],.narrow>figure,.narrow>table,.narrow>section:has(> .k-tw),.narrow>section:has(> table),.narrow>.ng-cards,.narrow>aside,.narrow>.share,.narrow>[data-wide]{grid-column:1;max-width:none}

  /* Explicit rows for the top of the page, so nothing depends on auto-placement:
     breadcrumb row 1, page header row 2, rail from row 3. The rail spans a fixed
     block of rows beside the body; body children flow in column 1 beneath row 2. */
  .narrow>nav.crumbs{grid-row:1}
  .narrow>header:first-of-type{grid-row:2}
  .narrow>nav[aria-labelledby="toc-h"]{
    grid-column:2;grid-row:3 / span 400;
    position:sticky;top:calc(var(--k-hdr-h,68px) + 20px);
    align-self:start;max-height:calc(100vh - var(--k-hdr-h,68px) - 40px);overflow:auto;
    padding:16px 18px;
  }
  .narrow>nav[aria-labelledby="toc-h"] ol{grid-template-columns:1fr!important;gap:5px!important;font-size:14px!important}
  /* CONTENTS RAIL OVERFLOW (15 September 2026)
     THE DEFECT: the contents nav carries an inline
       grid-template-columns:repeat(auto-fit,minmax(240px,1fr))
     which is correct when the nav sits full-width in the body column. In the
     rail it is not: --k-rail is 260px and the nav's own padding is 18px a side,
     so the content box is 224px while the track minimum is 240px. The track
     cannot shrink below its minimum, so the rail overflows horizontally, earns
     a second scrollbar, and clips its own link text ("...what can b|e seen").
     The rule above was meant to prevent this but targets a descendant <ol>;
     this nav has direct <a> children and no list, so nothing overrode it.
     THE FIX: in the rail the nav is always a single column that may shrink.
     minmax(0,1fr) — not 1fr — because 1fr's implicit minimum is auto, which
     the longest link would push past the rail again. */
  .narrow>nav[aria-labelledby="toc-h"]{
    grid-template-columns:minmax(0,1fr)!important;
    overflow-x:hidden;
  }
  .narrow>nav[aria-labelledby="toc-h"] a{
    min-width:0;overflow-wrap:break-word;
  }
  /* BLANK-PAGE FIX (8 September 2026)
     The rail spans 400 rows so the sticky element has a tall containing block to travel in.
     Grid honours that by creating ~400 implicit rows, and row-gap applies between EVERY
     adjacent pair — including the ~375 empty ones past the last real child. At 22-28px a
     row that is about 9,000-11,000px of blank page hanging below the article, which is what
     a reader hit after the last section on every page carrying a contents rail.
     Spacing therefore comes from child margins, which only exist where a child does.
     The inline gap:22px some article shells carry sets row-gap too, so this needs !important. */
  .narrow{row-gap:0!important}
  .narrow>*{margin-block-end:28px}
  .narrow>nav[aria-labelledby="toc-h"],.narrow>*:last-child{margin-block-end:0}
  /* Breadcrumb and page header sit above both columns (rows 1 and 2; the rail begins at 3). */
  .narrow>nav.crumbs,.narrow>header:first-of-type{grid-column:1 / -1}
  .narrow>header:first-of-type{max-width:none}
  .narrow>header:first-of-type h1{max-width:24ch}
  .narrow>header:first-of-type p{max-width:var(--k-measure)}

  /* Pages without a contents nav collapse the rail so the body still centres. */
  .narrow:not(:has(> nav[aria-labelledby="toc-h"])){grid-template-columns:minmax(0,1fr);max-width:min(1080px,100% - 2*var(--k-gutter-lg))}

  /* Section sub-grids: a section that mixes prose and a table lets the table span. */
  .narrow>section{max-width:none}
  .narrow>section>p,.narrow>section>ul,.narrow>section>ol,.narrow>section>h2,.narrow>section>h3,.narrow>section>.ng-lede,.narrow>section>div[style*="border-left:3px"]{max-width:var(--k-measure)}

  /* Wide tables on desktop use the desktop, not the phone scroll frame. */
  .k-tw>table{min-width:0!important}
  .k-tw-hint{display:none}
}

/* ---- Large desktop (Phase 4.4) ---- */
@media (min-width:1440px){
  .wrap{padding-left:var(--k-gutter-xl);padding-right:var(--k-gutter-xl)}
  .narrow{max-width:min(1480px,100% - 2*var(--k-gutter-xl));padding-left:var(--k-gutter-xl);padding-right:var(--k-gutter-xl);column-gap:clamp(56px,5vw,96px)}
  :root{--k-rail:320px;--k-measure:74ch}
  body{font-size:17.5px}
}
@media (min-width:1920px){
  .narrow{max-width:1600px}
  .wrap{max-width:1800px}
}

/* ============================================================================
   TABLE FAMILIES  (added 2026-09-03 — Command 1)
   ----------------------------------------------------------------------------
   Four families, four behaviours. No rule here touches table/tr/td display.
     A  .k-t3   compact three-column        — fits any viewport; label floor
     B  .k-t2   two-column classification   — adapts to viewport; label column
                                              keeps a semantic minimum width
     C  .k-tw   wide data table             — keeps intrinsic width, wrapper scrolls
     D  .k-tw + --cols ≥ 8                  — same mechanism, more room
   The §805 trigger table (Type B) is the visual baseline and is preserved.
   ========================================================================== */
/* Words wrap at word boundaries in every cell; only URLs may break anywhere. */
main th,main td,.prose th,.prose td{word-break:normal;hyphens:manual}
main td a[href^="http"],main th a[href^="http"]{overflow-wrap:anywhere}

/* Type B — the label column may not shrink below a word. */
.k-t2{width:100%;table-layout:auto}
.k-t2 th:first-child,.k-t2 td:first-child{width:30%;min-width:8.5rem;overflow-wrap:normal;word-break:normal;vertical-align:top}
.k-t2 td:last-child,.k-t2 th:last-child{overflow-wrap:break-word}
@media (max-width:360px){.k-t2 th:first-child,.k-t2 td:first-child{min-width:7.5rem}}
@media (min-width:1024px){.k-t2 th:first-child,.k-t2 td:first-child{width:26%;min-width:11rem}}

/* Type A — three short columns; first column gets a floor so it is never starved. */
.k-t3{width:100%;table-layout:auto}
.k-t3 th:first-child,.k-t3 td:first-child{min-width:6.5rem;overflow-wrap:normal;word-break:normal}
.k-t3 th,.k-t3 td{overflow-wrap:break-word}

/* DUI FEATURE STACK (2026-09-03): the homepage research feature is a 2fr/3fr grid; below 900px the image stacks above the copy at full width, 16:9, never clipped. */
@media (max-width:900px){section[aria-labelledby="research"]>div{grid-template-columns:1fr !important}}

/* Visually hidden, direction-safe. Directional off-screen positioning (left:-9999px)
   created a 10,374px horizontal scroll extent on the RTL entry page. */
.vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* GUTTER INVARIANT R6 (2026-09-05)
   Templates carry .wrap/.narrow/.mid AND an inline padding shorthand whose middle value
   zeroes horizontal padding. The class rule must outrank it, at every breakpoint. */
:root{--k-gutter:clamp(18px,5vw,24px)}
.wrap,.narrow,.mid{
  padding-inline:max(var(--k-gutter),env(safe-area-inset-left),env(safe-area-inset-right))!important;
  box-sizing:border-box;
}
@media (min-width:768px) and (max-width:1023px){
  .wrap,.narrow,.mid{padding-inline:clamp(24px,3.5vw,32px)!important}
}
@media (min-width:1024px){
  .wrap,.narrow,.mid{padding-inline:var(--k-gutter-lg)!important}
}
/* Nothing may create a horizontal scroll range at the document level. */
html,body{overflow-x:clip;max-width:100%}

/* ==========================================================================
   WIDE-TABLE FIT — opt-in class .k-tw-fit, added 6 September 2026
   .k-tw sets min-width: calc(var(--cols) * 11.5rem) so a short column cannot be starved
   beside a verbose one. That floor is right for four or five columns and wrong past six:
   six columns already demand 1104px, ten demand 1840px and one register table demands
   2944px, so a desktop reader got a horizontal scrollbar at the BOTTOM of a table
   hundreds of rows tall — and lost the licensee name the moment they scrolled right to
   reach the decision link, which is the one pairing these tables exist to show.
   .k-tw-fit drops the ARTIFICIAL floor at >=900px and lets each table take the width its
   content actually needs; where a column still needs guidance the table carries a
   <colgroup> (see the matter explorer). The wrapper KEEPS overflow-x:auto: a table whose
   content genuinely cannot fit must still scroll inside its own box rather than overflow
   the page, which is the worse failure. And the first column is pinned at every width, so
   whenever a scroll does happen the licensee never leaves the viewport.
   Below 900px the floor still applies, which is correct for phones.
   This is an OPT-IN CLASS, not a global table rule: no display change, no
   table-layout:fixed, no word-break on cells.
   ========================================================================== */
.k-tw-fit th:first-child,.k-tw-fit td:first-child{position:sticky;left:0;z-index:1;background:#F6F5F0}
@media (min-width:900px){
  .k-tw-fit>table{min-width:0!important}
  .k-tw-fit th:first-child,.k-tw-fit td:first-child{white-space:normal;min-width:0}
  .k-tw-fit th:nth-child(2),.k-tw-fit td:nth-child(2){min-width:0}
  .k-tw-fit th:last-child,.k-tw-fit td:last-child{min-width:0}
  .k-tw-fit-hint{display:none}
}
/* A sticky header earns its cost only where the reader really does scroll hundreds of
   rows, so it is scoped to the matter explorer rather than put on the shared class:
   four sticky-header tables on one page made scrolling measurably expensive in testing. */
@media (min-width:900px){
  #matter-explorer thead th{position:sticky;top:0;z-index:2;background:#F6F5F0;
    box-shadow:inset 0 -2px 0 var(--navy,#12233F)}
}

/* ==========================================================================
   TWO-COLUMN SHELL CONTAINMENT INVARIANT — 8 September 2026
   The contents rail is position:sticky, which makes it a POSITIONED element: it paints
   above every static sibling regardless of DOM order, so a later-in-source table does
   not win by coming later. A rail that shares horizontal pixels with article content
   therefore does not sit beside that content, it covers it — and scrolling a wide table
   sideways only drives its right-hand columns further underneath the box.
   The rail occupies grid column 2 for a reserved block of rows. Any child placed into
   column 2, directly or by spanning 1 / -1, is rendered UNDER it. The DUI register did
   exactly that to buy width for eleven columns and lost four columns behind Contents.
   THE CONTRACT: a wide element may exceed the width of its scroll container and scroll
   inside it. It may NEVER exceed the main column into the rail's column.
   Enforced here, once, with !important, so no page-level override can reintroduce the
   collision. Row arithmetic is not a fix: the previous attempt ended the rail at a
   hand-typed row that had to agree with the article's direct-child count, which breaks
   silently the moment a section is inserted. This rule does not depend on child order.
   Exempt, and only these: the breadcrumb and the page header, which legitimately span
   both columns above the rail, and the rail itself.
   ========================================================================== */
@media (min-width:1024px){
  .narrow>*:not(nav.crumbs):not(header:first-of-type):not(nav[aria-labelledby="toc-h"]){
    grid-column:1!important;
  }
}
/* A wide element is bounded by its column and scrolls in its own box. min-width:0 is
   required: without it an intrinsically wide table sets the grid item's min-content
   floor and pushes the item itself through the sidebar. overscroll-behavior-inline
   keeps a sideways flick inside the table instead of walking the whole page. */
.k-tw{min-width:0;overscroll-behavior-inline:contain}

/* ==========================================================================
   NAV INDEX PILL — .k-idx, added 8 September 2026
   "All sections" is not a section: it points at /sitemap.html, the maintained index the
   reduced bar leans on. It therefore reads as an affordance, not a destination — a ringed
   pill rather than a lettered link, and no gold hover underline, which belongs to the
   sections. Scoped to >=961px like the rest of the desktop bar; the <=960px drawer owns
   small screens and renders it as an ordinary row.
   Introduced with the class, so the markup build-nav.mjs emits and the approved design
   agree. A class shipped without its rule renders as a plain link and silently disagrees
   with the design it was approved from.
   ========================================================================== */


/* kpsgill-chrome.css — THE canonical global chrome for kpsgill.com (22 September 2026).
   One rule set for the static header, the Level-2 desk disclosure and the static footer.
   Markup is static HTML in every page; assets/kpsgill-nav.js adds behaviour only.
   Nothing else may style .k-hdr / .k-desk / .k-foot. The former chrome layers in styles.css
   (including two inlined base64 portraits) were removed in the same change. */
:root{--k-navy:#12233F;--k-ink:#0E1B31;--k-cream:#F6F5F0;--k-paper:#FBFAF7;--k-teal:#1F6F5C;--k-teal-deep:#175A4A;--k-gold:#B8863B;--k-gold-soft:#F3E5C8;--k-gold-text:#90692E;--k-line:#E4E2DA;--k-muted:#6F7068;--k-serif:Fraunces,Georgia,serif;--k-sans:'Public Sans',system-ui,Arial,sans-serif;--k-mono:'IBM Plex Mono',Consolas,monospace}

/* ---------- skip link ---------- */
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:#fff;color:var(--k-navy);padding:10px 14px;font:600 14px/1.2 var(--k-sans)}
.skip:focus{left:8px;top:8px;outline:2px solid var(--k-teal);outline-offset:2px}

/* ---------- global header ---------- */
.k-hdr{position:sticky;top:0;z-index:100;display:block;margin:0;padding:0;background:var(--k-paper);border-bottom:1px solid var(--k-line);font-family:var(--k-sans);color:var(--k-ink);transition:box-shadow .2s ease}
.k-hdr.k-stuck{box-shadow:0 1px 10px rgba(14,27,49,.08)}
.k-hdr *,.k-desk *,.k-foot *{box-sizing:border-box}
.k-hrow{max-width:1280px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:14px 28px}
.k-brand{display:flex;flex-direction:column;gap:3px;text-decoration:none;color:var(--k-navy);flex:0 0 auto;margin-right:auto}
.k-brand:hover{color:var(--k-navy)}
.k-bt{display:flex;flex-direction:column;gap:3px}
.k-bt>span{font:700 21px/1 var(--k-serif);letter-spacing:-.015em;color:var(--k-navy)}
.k-bt small{font:500 10px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--k-muted)}
.k-nav{display:flex;align-items:center;flex-wrap:wrap;gap:2px 18px;margin:0;padding:0}
.k-nav a{display:inline-block;padding:6px 0;font:500 11.5px/1.2 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--k-navy);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}
.k-nav a:hover{border-bottom-color:var(--k-gold)}
.k-nav a[aria-current="page"],.k-nav a[aria-current="true"]{border-bottom-color:var(--k-teal);color:var(--k-teal-deep)}
.k-nav a:focus-visible,.k-hsearch:focus-visible,.k-toggle:focus-visible,.k-desk summary:focus-visible,.k-foot a:focus-visible{outline:2px solid var(--k-teal);outline-offset:3px}
.k-hsearch{order:3;display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--k-line);border-radius:999px;background:#fff;font:500 11.5px/1 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--k-navy);text-decoration:none;white-space:nowrap}
.k-hsearch:hover{border-color:var(--k-navy)}
.k-hsearch::before{content:"";width:11px;height:11px;border:2px solid currentColor;border-radius:50%;box-shadow:3px 3px 0 -1px currentColor;flex:0 0 auto}
.k-toggle{display:none;order:4;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--k-navy);border-radius:999px;background:var(--k-navy);color:#fff;font:600 12px/1 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.k-toggle:hover{background:var(--k-ink)}
.k-tbars{display:inline-flex;flex-direction:column;gap:3px}
.k-tbars span{display:block;width:14px;height:2px;background:currentColor;transition:transform .2s ease,opacity .2s ease}
.k-toggle[aria-expanded="true"] .k-tbars span:nth-child(1){transform:translateY(5px) rotate(45deg)}
.k-toggle[aria-expanded="true"] .k-tbars span:nth-child(2){opacity:0}
.k-toggle[aria-expanded="true"] .k-tbars span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
@media (min-width:1360px){.k-nav{order:2}}
@media (max-width:1359px){
  .k-hrow{padding:10px 16px;gap:10px}
  .k-bt>span{font-size:19px}
  .k-bt small{font-size:9px;letter-spacing:.1em}
  .k-hsearch{min-height:44px;padding:0 14px}
  .k-toggle{display:inline-flex}
  .k-nav{display:none}
  .k-nav.k-open{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:0;position:fixed;left:0;right:0;top:var(--k-hdr-h,64px);bottom:0;overflow-y:auto;padding:8px 16px 32px;background:var(--k-paper);border-top:1px solid var(--k-line);z-index:99}
  .k-nav.k-open a{padding:16px 4px;font-size:14px;border-bottom:1px solid var(--k-line)}
  .k-nav.k-open a[aria-current="page"]{border-bottom-color:var(--k-line);box-shadow:inset 3px 0 0 var(--k-teal);padding-left:12px}
  /* Without JavaScript the Menu control does nothing, so it is hidden and the families show as a plain wrapped row. */
  html:not(.k-js) .k-toggle{display:none}
  html:not(.k-js) .k-hrow{flex-wrap:wrap}
  html:not(.k-js) .k-nav{display:flex;order:5;flex-basis:100%;gap:0 16px}
}
/* Compact header (22 September 2026). A deterministic 3-column grid replaces flex intrinsic
   widths so brand + Search + Menu always fit: the brand column shrinks (min-width:0) and the
   controls never grow. The strapline is dropped at <=600px, where it competed with the controls
   (on a 440px iPhone 17 Pro Max it pushed Menu past the right edge). Measured budget at 440px:
   16+~120 brand+8+~96 Search+8+~88 Menu+16 = ~352px. */
@media (max-width:600px){
  .k-hrow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:8px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left))}
  .k-brand{min-width:0;margin-right:0;min-height:44px;justify-content:center}
  .k-bt{min-width:0}
  .k-bt>span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .k-bt small{display:none}
  .k-hsearch,.k-toggle{flex:0 0 auto;min-height:44px;padding:0 12px}
  .k-hsearch{gap:7px}
  html:not(.k-js) .k-nav{grid-column:1/-1}
}
/* <=380px: Search becomes a 44px icon button. Its text stays in the accessibility tree
   (font-size:0), so the accessible name is still "Search". Menu keeps its label. */
@media (max-width:380px){
  .k-hrow{gap:6px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
  .k-bt>span{font-size:18px}
  .k-hsearch{width:44px;padding:0;justify-content:center;font-size:0;letter-spacing:0}
  .k-hsearch::before{width:13px;height:13px}
  .k-toggle{padding:0 11px;gap:7px}
}
body.k-navopen{overflow:hidden}

/* ---------- Level 1 families + mega panels ---------- */
.k-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.k-fams{display:flex;align-items:center;flex-wrap:wrap;gap:2px 14px;margin:0;padding:0;list-style:none}
.k-fam{position:static;display:flex;align-items:center;gap:0;margin:0}
.k-famx{display:inline-flex;align-items:center;justify-content:center;width:22px;height:30px;margin:0 0 0 1px;padding:0;border:0;background:none;color:var(--k-navy);cursor:pointer;border-radius:4px}
.k-famx::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s ease}
.k-famx[aria-expanded="true"]::after{transform:translateY(2px) rotate(-135deg)}
.k-famx:hover{background:var(--k-cream)}
html:not(.k-js) .k-famx{display:none}
.k-panel{position:absolute;left:0;right:0;top:100%;z-index:98;background:#fff;border-top:1px solid var(--k-line);border-bottom:1px solid var(--k-line);box-shadow:0 12px 28px rgba(14,27,49,.10)}
.k-panel[hidden]{display:none}
.k-pgrid{max-width:1280px;margin:0 auto;padding:22px 24px 26px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.4fr);gap:28px}
.k-plede{margin:0 0 14px;font:400 15px/1.55 var(--k-serif);color:var(--k-ink);text-wrap:pretty}
.k-pall{font:600 12px/1.2 var(--k-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--k-teal-deep);text-decoration:none}
.k-pall:hover{text-decoration:underline}
.k-plinks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 24px;margin:0;padding:0;list-style:none}
.k-plinks a{display:block;padding:8px 0;border-bottom:1px solid var(--k-line);text-decoration:none;color:var(--k-navy);font:600 14px/1.3 var(--k-sans);letter-spacing:0;text-transform:none;white-space:normal}
.k-plinks a:hover{color:var(--k-teal-deep)}
.k-plinks a span{display:block;margin-top:3px;font:400 12.5px/1.45 var(--k-sans);color:var(--k-muted)}
.k-hdr .k-nav .k-plinks a,.k-hdr .k-nav .k-pall{border-bottom-width:1px}
.k-hdr{position:sticky}
.k-hrow{position:static}
@media (min-width:1360px){.k-hdr .k-hrow{position:relative}}
@media (max-width:1359px){
  .k-fams{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:0}
  .k-fam{flex-wrap:wrap;border-bottom:1px solid var(--k-line)}
  .k-nav.k-open .k-fam>.k-famlink{flex:1 1 auto;border-bottom:0}
  .k-famx{width:48px;height:48px}
  .k-panel{position:static;flex-basis:100%;box-shadow:none;border:0;background:var(--k-cream)}
  .k-pgrid{grid-template-columns:minmax(0,1fr);gap:8px;padding:6px 14px 14px}
  .k-plede{display:none}
  .k-plinks{grid-template-columns:minmax(0,1fr)}
  .k-plinks a span{display:none}
  html:not(.k-js) .k-fams{flex-direction:row;flex-wrap:wrap;gap:0 16px}
  html:not(.k-js) .k-fam{border:0}
}

/* ---------- Level 2: desk bar (desktop) / disclosure (mobile) + breadcrumb + language ---------- */
.k-sub{max-width:1280px;margin:0 auto;padding:0 24px;text-align:left}
.k-sub>*{width:auto;max-width:none;margin-left:0;margin-right:0}
.k-deskbar{display:flex;align-items:center;gap:6px 20px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--k-line)}
.k-dbfam{font:600 11px/1.2 var(--k-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--k-muted);text-decoration:none;white-space:nowrap}
.k-dbfam::after{content:" /";color:var(--k-line)}
.k-deskbar ul,.k-deskm ul{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0;padding:0;list-style:none}
.k-deskbar a:not(.k-dbfam){font:500 13.5px/1.4 var(--k-sans);color:var(--k-teal-deep);text-decoration:none}
.k-deskbar a:not(.k-dbfam):hover{text-decoration:underline}
.k-deskbar a[aria-current],.k-deskm a[aria-current]{color:var(--k-navy);font-weight:700;text-decoration:underline;text-decoration-color:var(--k-teal);text-underline-offset:4px}
.k-deskm{display:none;width:100%;border-bottom:1px solid var(--k-line)}
.k-deskm summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;list-style:none;font:500 11px/1.2 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--k-muted)}
.k-deskm summary::-webkit-details-marker{display:none}
.k-deskm summary strong{min-width:0;overflow-wrap:anywhere;color:var(--k-navy);font-weight:600}
.k-deskm summary::after{flex:0 0 auto;padding-left:8px}
.k-deskm summary::after{content:"\25BE";color:var(--k-navy);margin-left:auto}
.k-deskm[open] summary::after{transform:rotate(180deg)}
.k-deskm ul{flex-direction:column;gap:0;padding:0 0 10px}
.k-deskm a{display:block;padding:11px 0;border-top:1px solid var(--k-line);font:500 14px/1.3 var(--k-sans);color:var(--k-teal-deep);text-decoration:none}
.k-crumbs ol{display:flex;flex-wrap:wrap;min-width:0;gap:2px 0;margin:0;padding:10px 0 0;list-style:none;font:400 12px/1.5 var(--k-mono);color:var(--k-muted)}
.k-crumbs li+li::before{content:"\203A";margin:0 8px;color:var(--k-muted)}
.k-crumbs a{color:var(--k-teal-deep);text-decoration:none}
.k-crumbs a:hover{text-decoration:underline}
.k-crumbs li{min-width:0;overflow-wrap:anywhere}
.k-crumbs [aria-current]{color:var(--k-ink)}
.k-sub .k-langs{padding:8px 0 0;margin:0;max-width:none}
.k-sub .k-langs::before{content:"Language";font:600 10.5px/1 var(--k-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--k-muted);margin-right:4px}
.k-sub .k-desk{padding:8px 0 0;max-width:none}
.k-seq{max-width:1280px;margin:32px auto 0;padding:14px 24px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;border-top:1px solid var(--k-line);font:500 13px/1.4 var(--k-sans)}
.k-seq a{color:var(--k-teal-deep);text-decoration:none}
.k-seq a:hover{text-decoration:underline}
@media (max-width:960px){.k-sub{padding:0 16px}.k-deskbar{display:none}.k-sub .k-deskm{display:block;width:100%}.k-crumbs ol{padding-top:8px}.k-seq{padding:14px 16px}}

/* ---------- family landing pages, directory, homepage explore ---------- */
.k-land{max-width:1280px;margin:0 auto;padding:28px 24px 12px;font-family:var(--k-sans);color:var(--k-ink)}
.k-land h1{margin:0 0 12px;font:700 clamp(32px,5vw,52px)/1.05 var(--k-serif);letter-spacing:-.015em;color:var(--k-navy)}
.k-land .k-lede{margin:0 0 28px;max-width:62ch;font:400 clamp(18px,2.2vw,22px)/1.45 var(--k-serif);color:#24344E;text-wrap:pretty}
.k-land h2{margin:40px 0 14px;font:600 11.5px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--k-muted)}
.k-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.k-card{display:block;padding:18px 18px 16px;background:var(--k-paper);border:1px solid var(--k-line);border-radius:6px;text-decoration:none;color:var(--k-ink)}
.k-card:hover{border-color:var(--k-navy)}
.k-card strong{display:block;margin:0 0 6px;font:600 18px/1.25 var(--k-serif);color:var(--k-navy)}
.k-card span{display:block;font:400 14px/1.5 var(--k-sans);color:#3E4A5C}
.k-card em{display:block;margin-top:10px;font:500 11px/1 var(--k-mono);font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:var(--k-teal-deep)}
.k-newest{margin:0;padding:0;list-style:none;border-top:1px solid var(--k-line)}
.k-newest li{display:grid;grid-template-columns:110px minmax(0,1fr);gap:14px;padding:10px 0;border-bottom:1px solid var(--k-line)}
.k-newest time{font:400 12px/1.6 var(--k-mono);color:var(--k-muted)}
.k-newest a{font:500 15px/1.45 var(--k-sans);color:var(--k-navy);text-decoration:none}
.k-newest a:hover{color:var(--k-teal-deep);text-decoration:underline}
.k-map details{border-top:1px solid var(--k-line)}
.k-map details:last-child{border-bottom:1px solid var(--k-line)}
.k-map summary{display:flex;align-items:baseline;gap:10px;min-height:46px;padding:12px 0;cursor:pointer;font:600 16px/1.3 var(--k-serif);color:var(--k-navy)}
.k-map summary small{font:400 12px/1 var(--k-mono);color:var(--k-muted)}
.k-map ul{columns:2 320px;column-gap:32px;margin:0;padding:0 0 16px;list-style:none}
.k-map li{break-inside:avoid;padding:3px 0}
.k-map li a{font:400 14px/1.45 var(--k-sans);color:var(--k-teal-deep);text-decoration:none}
.k-map li a:hover{text-decoration:underline}
.k-map h3{margin:26px 0 6px;font:700 22px/1.2 var(--k-serif);color:var(--k-navy)}
.k-map h3 a{color:inherit;text-decoration:none}
.k-explore{margin:48px 0 0}
.k-explore h2{margin:0 0 6px;font:700 clamp(24px,3.4vw,32px)/1.15 var(--k-serif);color:var(--k-navy)}
.k-explore>p{margin:0 0 18px;font:400 16px/1.55 var(--k-sans);color:#3E4A5C}
.k-fcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.k-fcard{padding:18px;background:var(--k-paper);border:1px solid var(--k-line);border-radius:6px}
.k-fcard h3{margin:0 0 10px;font:700 19px/1.2 var(--k-serif)}
.k-fcard h3 a{color:var(--k-navy);text-decoration:none}
.k-fcard ul{margin:0 0 12px;padding:0;list-style:none}
.k-fcard li a{display:block;padding:5px 0;font:400 14px/1.4 var(--k-sans);color:var(--k-teal-deep);text-decoration:none;border-bottom:1px solid var(--k-line)}
.k-fcard .k-pall{display:inline-block;margin-top:2px}
@media (max-width:960px){.k-land{padding:22px 16px 8px}.k-newest li{grid-template-columns:minmax(0,1fr);gap:2px}}

/* ---------- Level 2: desk disclosure (never a second menu) ---------- */
.k-desk{max-width:1280px;margin:0 auto;padding:8px 24px 0;font-family:var(--k-sans)}
.k-desk details{border-bottom:1px solid var(--k-line)}
.k-desk summary{display:flex;flex-wrap:wrap;width:auto;max-width:100%;grid-template-columns:none;align-items:center;gap:8px;min-height:40px;cursor:pointer;list-style:none;font:500 11px/1.2 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--k-muted)}
.k-desk summary::-webkit-details-marker{display:none}
.k-desk summary strong{display:inline;width:auto;max-width:none;white-space:normal;color:var(--k-navy);font-weight:600}
.k-desk summary::after{content:"\25BE";color:var(--k-navy);transition:transform .15s ease}
.k-desk details[open] summary::after{transform:rotate(180deg)}
.k-desk-links{display:flex;flex-wrap:wrap;gap:4px 18px;padding:2px 0 12px}
.k-desk-links a{font:500 13px/1.5 var(--k-sans);color:var(--k-teal-deep);text-decoration:none}
.k-desk-links a:hover{text-decoration:underline}
.k-desk-links a[aria-current="page"]{color:var(--k-navy);font-weight:600}
@media (max-width:960px){.k-desk{padding:6px 16px 0}.k-desk-links{flex-direction:column;gap:0}.k-desk-links a{padding:10px 0;border-top:1px solid var(--k-line)}}

/* ---------- language switcher (translated pages) ---------- */
.k-langs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;max-width:1280px;margin:0 auto;padding:8px 24px;font:500 12px/1.4 var(--k-mono);letter-spacing:.04em}
.k-langs a{color:var(--k-teal-deep);text-decoration:none}
.k-langs a:hover{text-decoration:underline}
.k-langs a[aria-current="true"],.k-langs a[aria-current="page"]{color:var(--k-navy);font-weight:600}
@media (max-width:960px){.k-langs{padding:8px 16px}.k-langs a{min-height:32px;display:inline-flex;align-items:center}}

/* Body-level chrome bands. Many pages make <body> a flex column; a flex item with margin:0 auto
   shrinks to its content and centres (the "In this section" bar drifted to the middle on
   iPhone). width:100% + border-box keeps each band full width, centred only past 1280px. */
.k-sub,.k-prov,.k-seq,.k-desk,body>.k-langs{width:100%;box-sizing:border-box;align-self:stretch}
.k-sub .k-deskm,.k-sub .k-deskbar,.k-sub .k-crumbs,.k-sub .k-langs{width:100%;max-width:none;margin-left:0;margin-right:0;box-sizing:border-box}
.k-deskm summary{justify-content:flex-start;text-align:left}

/* ---------- page-level provenance (dates live here, never in the footer) ---------- */
.k-prov{max-width:1280px;margin:40px auto 0;padding:0 24px}
.k-prov p{margin:0;padding:14px 0 0;border-top:1px solid var(--k-line);font:400 12px/1.6 var(--k-mono);letter-spacing:.02em;color:var(--k-muted);text-wrap:pretty}
.k-prov a{color:var(--k-teal-deep)}

/* ---------- global footer ---------- */
.k-foot{display:block;margin:48px 0 0;padding:0;background:var(--k-navy);color:#E9ECF1;font-family:var(--k-sans);border:0}
.k-foot a{color:#fff;text-decoration:none}
.k-foot a:hover{text-decoration:underline;color:#fff}
.k-frow{max-width:1280px;margin:0 auto;padding:40px 24px 28px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.4fr);gap:32px}
.k-fid{display:flex;align-items:flex-start;gap:16px}
.k-fportrait{display:block;width:56px;height:56px;flex:0 0 56px;border-radius:50%;object-fit:cover;object-position:50% 20%;background:#2A3A55;border:2px solid rgba(255,255,255,.18)}
.k-fname{margin:0 0 6px;font:600 18px/1.25 var(--k-serif);color:#fff}
.k-fsub{margin:0;font:400 12px/1.5 var(--k-mono);letter-spacing:.04em;color:#C9D0DB}
.k-faddr{font-style:normal}
.k-fh,.k-faddr .k-fh{margin:0 0 8px;font:600 10.5px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--k-gold-soft)}
.k-faddr p:not(.k-fh){margin:0 0 10px;font:400 14px/1.55 var(--k-sans);color:#E9ECF1}
.k-fnav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 24px}
.k-fnav h2{grid-column:1/-1;margin:0 0 6px;font:600 10.5px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--k-gold-soft)}
.k-fnav a{font:400 14px/1.9 var(--k-sans)}
.k-flang{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.14)}
.k-flegal{max-width:1280px;margin:0 auto;padding:18px 24px 32px;border-top:1px solid rgba(255,255,255,.14)}
.k-futil{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 14px}
.k-futil a{font:500 11px/1.6 var(--k-mono);letter-spacing:.06em;text-transform:uppercase;color:#fff}
.k-flegal p{margin:0 0 8px;max-width:90ch;font:400 12.5px/1.6 var(--k-sans);color:#C9D0DB}
@media (max-width:960px){.k-frow{grid-template-columns:minmax(0,1fr);gap:26px;padding:32px 16px 22px}.k-flegal{padding:16px 16px 28px}.k-fnav a,.k-futil a{display:inline-block;min-height:32px}}
[dir="rtl"] .k-hrow,[dir="rtl"] .k-frow{direction:ltr}
[dir="rtl"] .k-desk{direction:rtl}
@media print{.k-hdr{position:static}.k-toggle,.k-hsearch,.k-desk{display:none}.k-foot{background:none;color:#000}.k-foot a{color:#000}}

/* ---------- global search + assistant band (one per page, before the footer) ---------- */
.k-gsearch{width:100%;box-sizing:border-box;align-self:stretch;margin:48px 0 0;background:#F6F5F0;border-top:1px solid var(--k-line)}
.k-gs-in{max-width:1280px;margin:0 auto;padding:30px 24px 34px;box-sizing:border-box}
.k-gsearch h2{margin:0 0 6px;font:700 22px/1.2 var(--k-serif);color:var(--k-navy)}
.k-gs-lede{margin:0 0 16px;max-width:70ch;font:400 15px/1.55 var(--k-sans);color:#3E4A5C}
.k-gs{display:block;margin:0;width:100%}
.k-gs-form{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%;border:1.5px solid var(--k-navy);border-radius:999px;background:#fff;overflow:hidden;box-sizing:border-box}
.k-gs-form input{min-width:0;width:100%;min-height:52px;padding:0 22px;border:0;background:transparent;font:400 17px/1 var(--k-sans);color:var(--k-ink)}
.k-gs-form input:focus-visible{outline:2px solid var(--k-teal);outline-offset:-3px}
.k-gs-form button{min-width:52px;min-height:52px;padding:0 26px;border:0;background:var(--k-navy);color:#fff;font:600 12px/1 var(--k-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.k-gs-form button:hover{background:var(--k-ink)}
.k-gsearch .ask-enhance{width:100%;max-width:none;margin:14px 0 0}
.k-gsearch .ask-scope{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px}
.k-gsearch .ask-pill{display:flex;align-items:center;gap:10px;width:100%;min-width:0;min-height:46px;margin:0;padding:0 14px;box-sizing:border-box;border-radius:999px}
.k-gsearch .ask-pill-k{flex:0 0 auto;white-space:nowrap}
.k-gsearch .ask-pill select,.k-gsearch .ask-pill-v{flex:1 1 auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.k-gsearch .ask-beyond{margin:18px 0 0;padding-top:16px}
.k-gsearch .ask-results{border:0}
.k-gsearch .ask-results:empty{display:none}
.k-gsearch .ask-beyond-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 24px;align-items:center;padding-top:0;border-top:0}
.k-gsearch .ask-beyond-note{margin:0;max-width:none}
.k-gsearch .ask-btn{justify-self:end;min-height:46px;white-space:nowrap}
@media (max-width:900px){.k-gsearch .ask-scope{grid-template-columns:minmax(0,1fr)}.k-gsearch .ask-beyond-head{grid-template-columns:minmax(0,1fr)}.k-gsearch .ask-btn{justify-self:stretch}}
.k-gsearch+.k-foot,.k-gsearch+.k-prov{margin-top:0}
.askband{display:none}
@media (max-width:960px){.k-gs-in{padding:24px 16px 28px}.k-gs-form input{font-size:16px;padding:0 16px}.k-gs-form button{padding:0 16px}}

/* ===== 25 Sept design normalisation ===== */
/* Header: one row from 1360px; below that, the Menu state. Never a two-row desktop header. */
@media (min-width:961px) and (max-width:1359px){.k-hrow{padding:12px 24px;gap:14px 24px}.k-bt>span{font-size:21px}.k-bt small{font-size:10px;letter-spacing:.1em}}
@media (min-width:1360px){.k-hrow{flex-wrap:nowrap;gap:0 20px}.k-fams{flex-wrap:nowrap;gap:0 10px}.k-nav a{font-size:11px;letter-spacing:.05em}.k-famx{width:18px}.k-bt small{letter-spacing:.08em}}
/* Search band: site search, then Ask KPSGill as a visibly separate second step */
.k-gsearch .ask-beyond::before{content:"Ask KPSGill \2014 beyond the library";display:block;margin:0 0 10px;font:600 11px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--k-teal-deep)}

/* ---------- footer v3 · October 2026 (Now band, personal site, wordmark) ---------- */
.k-foot{container:kfoot/inline-size}
.k-fnow{max-width:1280px;margin:0 auto;padding:36px 24px 30px;border-bottom:1px solid rgba(255,255,255,.12)}
.k-fnow-hd{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin:0 0 20px}
.k-fnow-eye{margin:0;display:inline-flex;align-items:center;gap:8px;font:600 11px/1.2 var(--k-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--k-gold-soft)}
.k-fnow-dot{width:8px;height:8px;border-radius:50%;background:#3FBF8F;animation:k-pulse 2.4s ease-out infinite}
@keyframes k-pulse{0%{box-shadow:0 0 0 0 rgba(63,191,143,.55)}70%{box-shadow:0 0 0 8px rgba(63,191,143,0)}100%{box-shadow:0 0 0 0 rgba(63,191,143,0)}}
.k-fnow h2{margin:0;flex:1 1 16rem;font:600 clamp(22px,2.4vw,30px)/1.15 var(--k-serif);letter-spacing:-.01em;color:#fff;text-wrap:balance}
.k-fnow-stamp{margin:0;font:400 12px/1.4 var(--k-mono);color:#AEB8C7}
.k-fnow-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:14px}
.k-fnow-tile{padding:18px 18px 16px;border-radius:10px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.1)}
.k-fnow-tile h3{margin:0 0 12px;font:600 11px/1.2 var(--k-mono);letter-spacing:.12em;text-transform:uppercase;color:#C9D0DB}
.k-fnow-tile ol,.k-fnow-tile ul{margin:0;padding:0;list-style:none;display:grid;gap:11px}
.k-fnow-tile li{display:grid;gap:3px;font:400 14.5px/1.4 var(--k-sans);text-wrap:pretty}
.k-fnow-latest li a{font:600 15px/1.35 var(--k-serif)}
.k-fnow-latest time,.k-fstate{font:400 11.5px/1.4 var(--k-mono);color:#AEB8C7}
.k-fnow-dates li{grid-template-columns:48px minmax(0,1fr) auto;align-items:baseline;gap:4px 10px}
.k-fnow-dates time{font:600 12px/1.3 var(--k-mono);color:var(--k-gold-soft);text-transform:uppercase}
.k-fchip{padding:2px 8px;border-radius:999px;font:600 10.5px/1.5 var(--k-mono);letter-spacing:.04em;background:rgba(243,229,200,.14);color:var(--k-gold-soft);white-space:nowrap}
.k-fchip:empty{display:none}
.k-fnow-dates li.k-past{opacity:.6}
.k-fnow-status li{grid-template-columns:8px minmax(0,1fr);gap:2px 10px}
.k-fstate{grid-column:2}
.k-ftone{width:8px;height:8px;margin-top:6px;border-radius:2px;background:#8C97A8}
.k-ftone[data-tone="open"]{background:var(--k-gold)}.k-ftone[data-tone="live"]{background:#3FBF8F}
.k-foot .k-fnow-more{display:inline-block;margin-top:14px;font:600 13px/1.3 var(--k-sans);color:var(--k-gold-soft)}
.k-fself{margin:12px 0 0}
.k-foot .k-fself a{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;border:1px solid rgba(243,229,200,.45);font:600 13px/1.2 var(--k-sans);color:var(--k-gold-soft)}
.k-foot .k-fself a:hover{background:rgba(243,229,200,.1);text-decoration:none}
.k-felse{max-width:1280px;margin:0 auto;padding:0 24px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;font:500 12px/1.4 var(--k-mono);letter-spacing:.06em;text-transform:uppercase}
.k-felse span{color:#AEB8C7}
.k-fmark{max-width:1280px;margin:0 auto;padding:0 18px;font:700 clamp(52px,14cqi,200px)/.84 var(--k-serif);letter-spacing:-.045em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.18);white-space:nowrap;overflow:hidden;user-select:none}
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.k-fmark{animation:k-rise linear both;animation-timeline:view();animation-range:entry 0% cover 35%}@keyframes k-rise{from{opacity:0;transform:translateY(22%)}to{opacity:1;transform:none}}}}
@media (prefers-reduced-motion:reduce){.k-fnow-dot{animation:none}}
@container kfoot (max-width:920px){.k-fnow-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.k-fnow-tile:first-child{grid-column:1/-1}}
@container kfoot (max-width:600px){.k-fnow-grid{grid-template-columns:minmax(0,1fr)}.k-fnow{padding:28px 18px 24px}}

/* kpsgill-edition.css — "Fresno Editorial Intelligence" layer (25 September 2026).
   Loaded after kpsgill-chrome.css on every page. Adds: the Fresno palette, the homepage edition,
   the evidence-status component language, the reading interface (progress, text size, dark mode)
   and editorial figures. Structural colours stay navy/cream; the Valley colours are accents only. */
:root{
  --f-navy:#12243A;--f-night:#0B1726;--f-cream:#F6F1E7;--f-paper:#FCFAF6;--f-charcoal:#202631;
  --f-sky:#56A9CF;--f-orchard:#47785E;--f-gold:#D6A53A;--f-apricot:#E58B58;--f-terracotta:#A85F43;--f-bougainvillea:#C94369;
  --f-gold-ink:#8A6414;--f-sky-ink:#1E6A8C;--f-orchard-ink:#355C47;--f-terra-ink:#8A4A31;--f-bou-ink:#9E2F52;
  --f-line:#E4DED0;--f-muted:#5E6470;
  --f-display:Fraunces,Georgia,'Times New Roman',serif;--f-sans:'Public Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--f-mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --f-measure:44rem;--f-gutter:clamp(16px,4vw,32px);
}

/* ---------- homepage edition ---------- */
.wrap .ked,main .ked{padding-left:0;padding-right:0}
.ked{max-width:1320px;margin:0 auto;padding:clamp(18px,3vw,36px) var(--f-gutter) 8px;font-family:var(--f-sans);color:var(--f-charcoal)}
.ked-mast{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 24px;padding:0 0 14px;margin:0 0 clamp(18px,2.4vw,28px);border-bottom:1px solid var(--f-line)}
.ked-mast h1{margin:0;max-width:40ch;font:600 clamp(15px,1.6vw,18px)/1.35 var(--f-display);letter-spacing:0;color:var(--f-navy);text-wrap:balance}
.ked-mast p{margin:0;font:500 11.5px/1.5 var(--f-mono);letter-spacing:.05em;color:var(--f-muted)}
.ked-top{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(20px,2.6vw,36px)}
@media (min-width:1400px){.ked-top{grid-template-columns:minmax(0,1fr) 300px}}
.ked-lead{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(14px,2vw,26px);align-items:center}
@media (min-width:760px){.ked-lead{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}}
.ked-lead-img{position:relative;display:block;margin:0;overflow:hidden;border-radius:4px;background:#E9E3D6;aspect-ratio:16/10}
.ked-lead-img img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 45%;transition:transform .6s ease}
.ked-lead:hover .ked-lead-img img{transform:scale(1.015)}
.ked-kick{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:0 0 12px;font:600 11px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--f-sky-ink)}
.ked-kick b{font-weight:600;color:var(--f-navy)}
.ked-lead h2{margin:0 0 14px;font:700 clamp(30px,3.6vw,52px)/1.04 var(--f-display);letter-spacing:-.02em;color:var(--f-navy);text-wrap:balance}
.ked-lead h2 a{color:inherit;text-decoration:none}
.ked-lead h2 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px;text-decoration-color:var(--f-gold)}
.ked-dek{margin:0 0 16px;max-width:52ch;font:400 clamp(17px,1.5vw,20px)/1.5 var(--f-display);color:#2B3444;text-wrap:pretty}
.ked-meta{margin:0 0 18px;font:500 11.5px/1.6 var(--f-mono);letter-spacing:.04em;color:var(--f-muted)}
.ked-cta{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 20px;border-radius:999px;background:var(--f-navy);color:#fff;font:600 12px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none}
.ked-cta:hover{background:var(--f-night);color:#fff}
.ked-cta:focus-visible,.ked a:focus-visible{outline:2px solid var(--f-gold);outline-offset:3px}
.ked-rail{border-top:3px solid var(--f-navy);padding-top:12px}
@media (min-width:1400px){.ked-rail{border-top:0;border-left:1px solid var(--f-line);padding:0 0 0 22px}}
@media (min-width:760px) and (max-width:1399px){.ked-rail ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}}
.ked-rail h2{display:flex;align-items:center;gap:8px;margin:0 0 10px;font:600 11px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--f-navy)}
.ked-rail h2::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--f-bougainvillea);box-shadow:0 0 0 3px rgba(201,67,105,.18)}
.ked-rail ol{margin:0;padding:0;list-style:none}
.ked-rail li{padding:11px 0;border-bottom:1px solid var(--f-line)}
.ked-rail li span{display:block;margin:0 0 4px;font:600 10px/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--f-terra-ink)}
.ked-rail li a{font:600 15px/1.35 var(--f-display);color:var(--f-navy);text-decoration:none}
.ked-rail li a:hover{text-decoration:underline}
.ked-rail .ked-more{display:inline-block;margin-top:12px;font:600 11px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--f-sky-ink);text-decoration:none}
.ked-second{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(16px,2vw,28px);margin:clamp(24px,3vw,40px) 0 0;padding:clamp(20px,2.4vw,30px) 0 0;border-top:1px solid var(--f-line)}
@media (min-width:640px){.ked-second{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.ked-second{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ked-card{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-content:start;text-decoration:none;color:inherit}
.ked-card figure{margin:0;overflow:hidden;border-radius:4px;aspect-ratio:3/2;background:#E9E3D6}
.ked-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.ked-card:hover img{transform:scale(1.02)}
.ked-card h3{margin:0;font:600 clamp(19px,1.7vw,23px)/1.2 var(--f-display);color:var(--f-navy);text-wrap:balance}
.ked-card:hover h3{text-decoration:underline;text-decoration-color:var(--f-gold);text-underline-offset:4px}
.ked-card p{margin:0;font:400 15px/1.55 var(--f-sans);color:#3A4250;text-wrap:pretty}
.ked-principles{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:clamp(28px,3.6vw,48px) 0 0;background:var(--f-navy);color:#E9ECF1;border-radius:4px;overflow:hidden}
@media (min-width:720px){.ked-principles{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ked-principles div{padding:clamp(18px,2.2vw,26px)}
.ked-principles div+div{border-top:1px solid rgba(255,255,255,.12)}
@media (min-width:720px){.ked-principles div+div{border-top:0;border-left:1px solid rgba(255,255,255,.12)}}
.ked-principles b{display:block;margin:0 0 6px;font:600 clamp(18px,1.8vw,22px)/1.2 var(--f-display);color:#fff}
.ked-principles p{margin:0;font:400 14.5px/1.55 var(--f-sans);color:#C9D0DB}
.ked-principles i{font-style:normal;color:var(--f-gold)}
.ked-desks{display:flex;flex-wrap:wrap;gap:8px;margin:clamp(22px,3vw,34px) 0 0}
.ked-desks a{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border:1px solid var(--f-navy);border-radius:999px;font:600 11.5px/1 var(--f-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--f-navy);text-decoration:none;white-space:nowrap}
.ked-desks a:hover{background:var(--f-navy);color:#fff}
/* the existing homepage desks, restyled as edition modules (inline styles need !important) */
body.k-edition main>section[id]{scroll-margin-top:80px}
body.k-edition main>section[id]>h2:first-child{display:flex!important;align-items:baseline;gap:12px;padding:0 0 10px!important;border-bottom:0!important;box-shadow:inset 0 -1px 0 var(--f-line);font:700 clamp(26px,3vw,38px)/1.1 var(--f-display)!important;letter-spacing:-.01em!important;text-transform:none!important;color:var(--f-navy)!important}
body.k-edition main>section[id]>h2:first-child::before{content:"";flex:0 0 auto;align-self:center;width:12px;height:12px;border-radius:50%;background:var(--f-desk,var(--f-gold))}
body.k-edition #now{--f-desk:var(--f-bougainvillea)}body.k-edition #last72{--f-desk:var(--f-apricot)}body.k-edition #california{--f-desk:var(--f-orchard)}body.k-edition #us{--f-desk:var(--f-navy)}body.k-edition #global{--f-desk:var(--f-sky)}body.k-edition #clinicians{--f-desk:var(--f-gold)}body.k-edition #patients{--f-desk:var(--f-apricot)}body.k-edition #everyone{--f-desk:var(--f-terracotta)}body.k-edition #next{--f-desk:var(--f-bougainvillea)}body.k-edition #library{--f-desk:#2F6F73}
body.k-edition main>nav[aria-label="On this page"]{display:none}

/* ---------- evidence-status language (one component, everywhere) ---------- */
.label,.egrade,.ev{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 7px;border-radius:999px;font:600 10.5px/1.3 var(--f-mono)!important;letter-spacing:.08em;text-transform:uppercase;vertical-align:1px;white-space:nowrap;border:1px solid currentColor;background:#fff}
.label::before,.egrade::before,.ev::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto}
.label[data-label="Public record"],.egrade.g-gov,.ev[data-ev="record"]{color:#1F5E7A;background:#EAF4F8}
.label[data-label="Court record"],.egrade.g-court,.ev[data-ev="court"]{color:#3B3F8C;background:#EEEFFA}
.egrade.g-contract,.label[data-label="Executed contract"],.ev[data-ev="contract"]{color:#355C47;background:#EDF4EF}
.label[data-label="Analytical inference"],.egrade.g-infer,.ev[data-ev="inference"]{color:#8A6414;background:#FBF3DF}
.label[data-label="Open"],.label[data-label="Open question"],.ev[data-ev="open"]{color:#6B4E9A;background:#F3EEFA}
.label[data-label="Allegation"],.ev[data-ev="allegation"]{color:#9E2F52;background:#FBECF1}
.label[data-label="Company position"],.ev[data-ev="company"]{color:#5E6470;background:#F2F2F0}
.label[data-label="Settlement"],.ev[data-ev="settlement"]{color:#8A4A31;background:#F8EEE8}
.label[data-label="Contrary evidence"],.ev[data-ev="contrary"]{color:#A0381F;background:#FCEDE8;border-style:dashed}

/* ---------- editorial figures ---------- */
.k-fig{margin:28px 0 30px}
.k-fig img{display:block;width:100%;height:auto;border-radius:4px!important;border:0!important}
.k-fig figcaption{margin:9px 0 0!important;padding-left:12px;border-left:2px solid var(--f-gold);font:400 12.5px/1.5 var(--f-sans)!important;color:var(--f-muted)!important}

/* ---------- reading interface ---------- */
.k-progress{position:fixed;left:0;top:0;right:0;z-index:120;height:3px;pointer-events:none;background:transparent}
.k-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--f-gold),var(--f-apricot))}
.k-reader{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:110;display:flex;gap:4px;padding:4px;border:1px solid var(--f-line);border-radius:999px;background:rgba(252,250,246,.96);box-shadow:0 6px 20px rgba(11,23,38,.14);font:600 12px/1 var(--f-mono)}
.k-reader button{min-width:44px;min-height:44px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:var(--f-navy);font:inherit;cursor:pointer}
.k-reader button:hover{background:var(--f-cream)}
.k-reader button[aria-pressed="true"]{background:var(--f-navy);color:#fff}
.k-reader button:focus-visible{outline:2px solid var(--f-gold);outline-offset:2px}
html.k-fs-1 .article{zoom:1.08}html.k-fs-2 .article{zoom:1.17}
html.k-dark body{background:#0F1A28!important;color:#DCE2EA}
html.k-dark .article,html.k-dark .article p,html.k-dark .article li,html.k-dark .article td,html.k-dark .article dd{color:#DCE2EA!important}
html.k-dark .article h1,html.k-dark .article h2,html.k-dark .article h3,html.k-dark .article strong{color:#F4F1EA!important}
html.k-dark .article a{color:#8CC8E4!important}
html.k-dark .article .note,html.k-dark .article table,html.k-dark .article th,html.k-dark .article .deck,html.k-dark .article .modulefresh,html.k-dark .article .freshness,html.k-dark .toc{background:#16243A!important;border-color:#2A3A52!important;color:#DCE2EA!important}
html.k-dark .toc a{color:#C9D3DF!important}
html.k-dark .k-sub,html.k-dark .k-crumbs,html.k-dark .k-deskm{background:#0F1A28}
html.k-dark .k-crumbs [aria-current]{color:#DCE2EA}
html.k-dark .k-fig img{filter:brightness(.9)}
html.k-dark .k-reader{background:rgba(22,36,58,.96);border-color:#2A3A52}
html.k-dark .k-reader button{color:#E9ECF1}
html.k-dark .k-reader button:hover{background:#22344F}
html.k-dark .label,html.k-dark .egrade,html.k-dark .ev{background:transparent!important;filter:brightness(1.6)}
@media print{.k-progress,.k-reader{display:none}}
@media (prefers-reduced-motion:reduce){.ked *,.k-fig img{transition:none!important;transform:none!important}}

.ked-lead-panel{display:flex;flex-direction:column;justify-content:flex-end;gap:6px;min-height:clamp(200px,28vw,380px);padding:clamp(20px,3vw,40px);border-radius:4px;background:radial-gradient(120% 90% at 85% 10%,rgba(214,165,58,.35),transparent 55%),linear-gradient(160deg,#12243A 0%,#0B1726 70%);color:#fff}
.ked-lead-panel span{font:600 11px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--f-gold)}
.ked-lead-panel b{font:700 clamp(34px,5vw,72px)/.95 var(--f-display);letter-spacing:-.02em}
.ked-lead-panel i{font:italic 400 clamp(15px,1.4vw,18px)/1.4 var(--f-display);color:#C9D0DB}
.ked-why{margin:0;max-width:56ch;padding:12px 0 0;border-top:1px solid var(--f-line);font:400 15px/1.55 var(--f-sans);color:#3A4250}
.ked-tile{display:flex;flex-direction:column;justify-content:flex-end;gap:4px;aspect-ratio:3/2;padding:18px;border-radius:4px;background:linear-gradient(150deg,var(--t) 0%,color-mix(in oklab,var(--t) 55%,#0B1726) 100%);color:#fff}
.ked-tile b{font:700 clamp(30px,3.4vw,44px)/1 var(--f-display)}
.ked-tile span{font:600 11px/1.2 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;opacity:.9}
.ked-card-type:hover .ked-tile{filter:brightness(1.06)}
.ked-correct{display:grid;grid-template-columns:minmax(0,1fr);gap:4px 16px;align-items:baseline;margin:clamp(20px,2.6vw,30px) 0 0;padding:14px 18px;border-left:4px solid var(--f-bougainvillea);background:#FBECF1;border-radius:0 4px 4px 0}
@media (min-width:640px){.ked-correct{grid-template-columns:auto minmax(0,1fr)}}
.ked-correct b{font:600 11px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--f-bou-ink)}
.ked-correct p{margin:0;font:400 15px/1.55 var(--f-sans);color:var(--f-charcoal)}
.ked-correct a{color:var(--f-bou-ink)}
.ked-next{margin:clamp(20px,2.6vw,30px) 0 0;padding:clamp(16px,2vw,22px) 0 0;border-top:3px solid var(--f-navy)}
.ked-next h2{margin:0 0 12px;font:600 11px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--f-navy)}
.ked-next ol{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0;padding:0;list-style:none}
@media (min-width:760px){.ked-next ol{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}}
.ked-next li{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-bottom:1px solid var(--f-line)}
@media (min-width:760px){.ked-next li{border-bottom:0;padding:0}}
.ked-next time{font:700 22px/1 var(--f-display);color:var(--f-bou-ink)}
.ked-next b{font:600 15px/1.3 var(--f-display);color:var(--f-navy)}
.ked-next span{font:400 14px/1.5 var(--f-sans);color:#3A4250}
.ked-next a{font:600 11px/1.4 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--f-sky-ink);text-decoration:none}

.ked-lead-type{align-items:start}
.ked-lead-type .ked-lead-panel{align-self:stretch}
@media (max-width:759px){.ked-lead-type .ked-lead-panel{min-height:170px}}

/* ===== Patient-first front (25 Sept 2026) ===== */
.ked-hero{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(20px,3vw,40px);align-items:center;padding:clamp(20px,3.4vw,48px) 0 clamp(24px,3vw,40px)}
@media (min-width:1000px){.ked-hero{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}}
.ked-brand{margin:0 0 14px;font:600 11.5px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--f-navy)}
.ked-brand span{color:var(--f-gold-ink)}
.ked-hero h1{margin:0 0 16px;font:700 clamp(34px,5.4vw,68px)/1.02 var(--f-display);letter-spacing:-.022em;color:var(--f-navy);text-wrap:balance}
.ked-hero-dek{margin:0 0 22px;max-width:52ch;font:400 clamp(17px,1.6vw,20px)/1.5 var(--f-display);color:#2B3445;text-wrap:pretty}
.ked-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}
.ked-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 20px;border:1.5px solid var(--f-navy);border-radius:999px;font:600 12px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--f-navy);text-decoration:none;background:transparent;transition:background .15s,color .15s}
.ked-btn:hover{background:var(--f-cream)}
.ked-btn-p{background:var(--f-navy);color:#fff}.ked-btn-p:hover{background:var(--f-night);color:#fff}
.ked-btn-g{border-color:transparent;text-decoration:underline;text-underline-offset:4px;padding:0 8px}
.ked-edition{margin:0;font:400 12px/1.5 var(--f-mono);color:var(--f-muted)}
.ked-hero-fig{position:relative;margin:0;border-radius:6px;overflow:hidden;background:var(--f-night)}
.ked-hero-fig img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.ked-hero-fig figcaption{position:absolute;left:0;right:0;bottom:0;padding:clamp(14px,2vw,24px);background:linear-gradient(0deg,rgba(11,23,38,.92) 0%,rgba(11,23,38,.7) 60%,transparent 100%)}
.ked-hero-fig figcaption a{display:flex;flex-direction:column;gap:6px;color:#fff;text-decoration:none;max-width:60ch}
.ked-hero-fig .ked-kick{color:#E8D29A}.ked-hero-fig .ked-kick b{color:#fff}
.ked-hero-fig strong{font:700 clamp(20px,2.4vw,30px)/1.1 var(--f-display)}
.ked-hero-fig figcaption span:last-child{font:400 14.5px/1.5 var(--f-sans);color:#DCE2EA}
@media (max-width:639px){.ked-hero-fig img{aspect-ratio:4/3}.ked-hero-fig figcaption{position:static;background:var(--f-night)}}
.ked-band{padding:clamp(28px,4vw,56px) 0;border-top:1px solid var(--f-line)}
.ked-warm{background:linear-gradient(180deg,#FBF3E6 0%,var(--f-paper) 100%);margin:0 calc(50% - 50vw);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}
.ked-bhead{max-width:64ch;margin:0 0 clamp(18px,2.4vw,28px)}
.ked-eyebrow{margin:0 0 8px;font:600 11px/1.2 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--f-gold-ink)}
.ked-bhead h2,.ked-bridge h2,.ked-inv h2{margin:0 0 8px;font:700 clamp(28px,3.8vw,46px)/1.05 var(--f-display);letter-spacing:-.018em;color:var(--f-navy);text-wrap:balance}
.ked-bhead p:not(.ked-eyebrow){margin:0;font:400 16px/1.55 var(--f-sans);color:#3A4250}
.ked-pgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(20px,3vw,36px)}
@media (min-width:1000px){.ked-pgrid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}}
.ked-topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:10px;margin:0;padding:0;list-style:none}
.ked-topics a,.ked-practical li a{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 14px;border:1px solid var(--f-line);border-radius:6px;background:#fff;font:600 15px/1.25 var(--f-sans);color:var(--f-navy);text-decoration:none;transition:border-color .15s,transform .15s}
.ked-topics a:hover,.ked-practical li a:hover{border-color:var(--f-apricot);transform:translateY(-1px)}
.ked-topics svg{color:var(--f-apricot);flex:0 0 auto}
.ked-practical{padding:clamp(16px,2vw,24px);border-radius:8px;background:var(--f-navy);color:#fff}
.ked-practical h3{margin:0 0 12px;font:600 20px/1.2 var(--f-display);color:#fff}
.ked-practical ul{display:grid;gap:8px;margin:0 0 14px;padding:0;list-style:none}
.ked-practical li a{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#fff}
.ked-practical li a svg{color:var(--f-gold)}
.ked-practical .ked-more{color:#E8D29A}
.ked-caveat{margin:12px 0 0;font:400 13px/1.5 var(--f-sans);color:#C9D0DB}
.ked-how{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:14px}
.ked-hcard{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid var(--f-line);border-radius:6px;background:var(--f-paper);color:var(--f-charcoal);text-decoration:none;transition:border-color .15s,box-shadow .15s}
.ked-hcard:hover{border-color:var(--f-navy);box-shadow:0 8px 24px rgba(14,27,49,.08)}
.ked-hcard h3{margin:0;font:600 19px/1.25 var(--f-display);color:var(--f-navy)}
.ked-hcard p{margin:0;font:400 14.5px/1.5 var(--f-sans);color:#3A4250}
.ked-go{margin-top:auto;font:600 11px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--f-sky-ink)}
.ked-hcard-img{padding:0;overflow:hidden}.ked-hcard-img>*:not(figure){margin-left:18px;margin-right:18px}.ked-hcard-img .ked-go{margin-bottom:18px}
.ked-hcard-img figure{margin:0 0 6px}.ked-hcard-img img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}

.ked-ca{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(16px,2.4vw,28px)}
@media (min-width:640px){.ked-ca{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.ked-ca{grid-template-columns:repeat(2,minmax(0,1fr)) minmax(0,.9fr)}}
.ked-feat{display:flex;flex-direction:column;gap:8px;color:var(--f-charcoal);text-decoration:none}
.ked-feat figure{margin:0 0 6px;border-radius:6px;overflow:hidden}.ked-feat img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;transition:transform .4s}
.ked-feat:hover img{transform:scale(1.02)}
.ked-feat h3{margin:0;font:600 clamp(19px,1.8vw,23px)/1.2 var(--f-display);color:var(--f-navy)}
.ked-feat p{margin:0;font:400 15px/1.5 var(--f-sans)}
.ked-calist{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border-top:3px solid var(--f-orchard)}
@media (min-width:640px) and (max-width:999px){.ked-calist{grid-column:1/-1}}
.ked-calist a{display:flex;flex-direction:column;gap:2px;padding:12px 0;border-bottom:1px solid var(--f-line);text-decoration:none}
.ked-calist b{font:600 16px/1.3 var(--f-display);color:var(--f-navy)}.ked-calist span{font:400 13.5px/1.4 var(--f-sans);color:#4A5160}
.ked-bridge{margin:0 calc(50% - 50vw);padding:clamp(36px,5vw,72px) calc(50vw - 50% + 0px);background:linear-gradient(180deg,var(--f-navy) 0%,var(--f-night) 100%);color:#fff}
.ked-bridge .ked-eyebrow{color:var(--f-gold)}.ked-bridge h2{color:#fff}
.ked-bridge>p:not(.ked-eyebrow){max-width:60ch;margin:0 0 24px;font:400 clamp(16px,1.6vw,19px)/1.55 var(--f-display);color:#DCE2EA}
.ked-flow{display:block;width:100%;max-width:960px;height:auto}
@media (max-width:639px){.ked-flow{min-width:0}}
.ked-inv{margin:0 calc(50% - 50vw);padding:clamp(36px,5vw,72px) calc(50vw - 50%);background:#0F2A33;color:#E4EEEE}
.ked-inv .ked-eyebrow{color:#7FC4BF}.ked-inv h2{color:#fff}
.ked-inv-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(24px,3vw,44px)}
@media (min-width:1000px){.ked-inv-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.ked-inv-q{margin:0 0 14px;font:italic 400 clamp(20px,2.2vw,27px)/1.3 var(--f-display);color:#F3E5C8}
.ked-inv p{max-width:58ch;font:400 15.5px/1.6 var(--f-sans)}
.ked-chain{display:block;width:100%;max-width:560px;height:auto;margin:18px 0 22px}
.ked-inv .ked-btn-p{background:#5FA3A0;border-color:#5FA3A0;color:#0B1726}.ked-inv .ked-btn-p:hover{background:#7FC4BF}
.ked-inv-fig{margin:0 0 16px;border-radius:6px;overflow:hidden}.ked-inv-fig img{display:block;width:100%;height:auto}
.ked-invlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:0 20px;margin:0;padding:0;list-style:none}
.ked-invlist a{display:block;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.14);font:500 15px/1.35 var(--f-sans);color:#fff;text-decoration:none}
.ked-invlist a:hover{color:#F3E5C8}
.ked-lead figure{margin:0 0 12px;border-radius:6px;overflow:hidden}.ked-lead img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.ked-lead h3{margin:0 0 8px;font:700 clamp(24px,2.8vw,36px)/1.08 var(--f-display);color:var(--f-navy)}
@media (prefers-reduced-motion:reduce){.ked-feat img,.ked-topics a,.ked-hcard{transition:none}}

.ked-btn{white-space:nowrap}
.ked-how{align-items:stretch}
a.ked-lead,a.ked-lead:hover{text-decoration:none;color:inherit}
a.ked-lead .ked-dek{color:#2B3445}
@media (min-width:1100px){.ked-top{grid-template-columns:minmax(0,1.9fr) minmax(260px,1fr)}.ked-top .ked-lead{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:22px;align-items:start}.ked-top .ked-lead figure{margin:0}}

/* full-bleed bands use 100vw, which includes the scrollbar on desktop browsers */
html{overflow-x:clip}

/* 25 Sept: story cards carry several sources, so the card is an <article> and the headline link is stretched over it */
.ked figure>picture{display:contents}
.ked-card,.ked-feat,.ked-lead{position:relative}
.ked-stretch{color:inherit;text-decoration:none}
.ked-stretch::after{content:"";position:absolute;inset:0;z-index:0}
.ked-card h3 a,.ked-feat h3 a,.ked-lead h3 a{color:inherit;text-decoration:none}
.ked-card:hover h3 a,.ked-feat:hover h3 a,.ked-lead:hover h3 a{text-decoration:underline;text-decoration-color:var(--f-gold);text-underline-offset:4px}
.ked-stretch:focus-visible{outline:none}
.ked-stretch:focus-visible::after{outline:2px solid var(--f-gold);outline-offset:4px;border-radius:4px}
.ked-src{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:4px 0 0!important;font:400 13px/1.5 var(--f-sans)!important;color:#4A5262!important}
.ked-src>span,.ked-correct .ked-src>span{font:600 9.5px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:#6F7068}
.ked-src a{color:var(--f-sky-ink,#175A4A);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.ked-src a:hover{color:var(--f-navy)}
.ked-correct .ked-src{display:inline-flex;margin-left:6px!important}
.ked-inv .ked-src{color:#C9D6D8!important}.ked-inv .ked-src>span{color:#7FC4BF}.ked-inv .ked-src a{color:#F3E5C8}
.ked-src-inv{margin-top:14px!important}
.ked-stat{display:inline-block;padding:2px 7px;border-radius:999px;background:#12243A;color:#fff;font:600 10px/1.4 var(--f-mono);letter-spacing:.06em}
/* hero caption: kicker, headline link, dek, sources */
.ked-hero-fig figcaption{display:flex;flex-direction:column;gap:6px}
.ked-hero-fig figcaption a.ked-hero-link{display:block;color:#fff;text-decoration:none}
.ked-hero-fig figcaption a.ked-hero-link:hover strong{text-decoration:underline;text-decoration-color:var(--f-gold);text-underline-offset:5px}
.ked-hero-fig .ked-hdek{font:400 14.5px/1.5 var(--f-sans);color:#DCE2EA;max-width:60ch}
.ked-hero-fig .ked-src{color:#DCE2EA!important}.ked-hero-fig .ked-src>span{color:#E8D29A}
.ked-hero-fig figcaption .ked-src a{display:inline;color:#F3E5C8;text-decoration:underline;max-width:none}
/* illustration credit — these are generated editorial illustrations, not photographs of events */
.k-illus{position:relative}
.k-illus::after{content:"Illustration";position:absolute;top:8px;right:8px;z-index:1;padding:3px 7px;border-radius:3px;background:rgba(11,23,38,.62);color:#fff;font:600 9px/1.2 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;pointer-events:none}
/* decisions approaching */
.ked-next-feat{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(18px,2.4vw,32px)}
.ked-next-fig{margin:0 0 16px;border-radius:6px;overflow:hidden;aspect-ratio:21/9;background:#E9E3D6}
.ked-next-fig img{display:block;width:100%;height:100%;object-fit:cover;object-position:60% 55%}
.ked-next-feat .ked-card figure{aspect-ratio:3/2}
@media (min-width:1000px){.ked-next-feat{grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);align-items:start}.ked-next-feat .ked-next-main ol{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:999px){.ked-next-feat .ked-next-main ol{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){.ked-next-fig{aspect-ratio:16/9}}

.k-storyfig{max-width:900px;margin:18px 0 26px;border-radius:6px;overflow:hidden;background:#E9E3D6}
.k-storyfig picture{display:contents}
.k-storyfig img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
@media (max-width:640px){.k-storyfig{margin:14px 0 20px;border-radius:4px}}

/* ===== Final pass, 25 September 2026: provenance captions, Fresno role matrix, lower desks ===== */
.k-illus-cap{position:absolute;left:0;right:0;bottom:0;z-index:1;margin:0;padding:5px 9px;background:rgba(11,23,38,.74);color:#fff;font:500 10.5px/1.35 var(--f-mono);letter-spacing:.02em;text-wrap:pretty;pointer-events:none}
.k-illus-note{display:block;margin-top:8px;font:500 11px/1.35 var(--f-mono);letter-spacing:.02em;color:#DCE2EA}
.ked-roles{margin:18px 0 22px;max-width:640px}
.ked-roles .ked-roles-t{margin:0 0 10px;font:600 11px/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:#7FC4BF}
.ked-roles dl{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:0}
.ked-roles dl>div{min-width:0;padding:12px 14px;border:1px solid rgba(127,196,191,.35);border-radius:6px;background:rgba(11,23,38,.35)}
.ked-roles dt{margin:0 0 4px;font:600 10.5px/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:#7FC4BF}
.ked-roles dd{margin:0;font:400 14.5px/1.5 var(--f-sans);color:#E4EEEE;overflow-wrap:anywhere}
.ked-roles dd b{color:#fff}
.ked-roles .ked-roles-n{margin:12px 0 0;max-width:none;font:400 13.5px/1.55 var(--f-sans);color:#C9D6D8}
.ked-roles .ked-roles-n a{color:#F3E5C8}
@media (min-width:640px){.ked-roles dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ked-desk{margin:0 0 clamp(40px,5vw,64px);padding-top:clamp(22px,3vw,30px);border-top:1px solid #E4E2DA}
.ked-desk>h2{margin:0 0 8px;font:700 clamp(26px,3.2vw,40px)/1.08 var(--f-display);letter-spacing:-.015em;color:var(--f-navy);text-wrap:balance}
.ked-desk .ked-desk-dek{margin:0 0 20px;max-width:68ch;font:400 16px/1.6 var(--f-sans);color:#2B3445;text-wrap:pretty}
.ked-desk article{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;margin:0;padding:16px 0 0;border-top:1px solid #E4E2DA}
.ked-desk article h3{margin:0;font:600 clamp(17px,1.6vw,19px)/1.3 var(--f-display);color:var(--f-navy);text-wrap:pretty}
.ked-desk article h3 a{color:inherit;text-decoration:none}
.ked-desk article h3 a:hover{text-decoration:underline}
.ked-desk article p{margin:0;font:400 15px/1.6 var(--f-sans);color:#1E2A3A;text-wrap:pretty;overflow-wrap:anywhere}
.ked-desk article p a{color:#175A4A}
.ked-desk .ked-desk-kick{display:inline-flex;padding:3px 9px;border-radius:999px;background:#E9F1EE;color:#175A4A;font:600 10.5px/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.ked-desk .ked-desk-lead{margin:0 0 22px;padding:clamp(18px,2.4vw,28px);border-top:0;border-radius:8px;background:#F6F1E7}
.ked-desk .ked-desk-lead h3{font-size:clamp(21px,2.6vw,30px);line-height:1.15}
.ked-desk .ked-desk-lead p{font-size:16px;max-width:70ch}
.ked-desk .ked-desk-lead .ked-desk-kick{background:#12243A;color:#F3E5C8}
.ked-desk-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px 32px}
.ked-desk-grid>.ked-desk-lead{grid-column:1/-1}
@media (min-width:720px){.ked-desk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.ked-desk-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ked-desk .ked-desk-all{margin:20px 0 0}
.ked-desk-all a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid var(--f-navy);border-radius:999px;font:600 12px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--f-navy);text-decoration:none}
.ked-desk-all a:hover{background:var(--f-navy);color:#fff}
.ked-desk-table{margin:4px 0 0;border:1px solid #E4E2DA;border-radius:8px;background:#fff}
.ked-desk-table>summary{display:flex;align-items:center;min-height:48px;padding:0 16px;cursor:pointer;font:600 12px/1.3 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--f-navy)}
.ked-desk-table[open]>summary{border-bottom:1px solid #E4E2DA}
.ked-desk-table>div{padding:8px 12px 12px}

/* ===== Evidence panel — major investigations and dossiers only (25 Sept 2026) ===== */
.k-evpanel{margin:20px 0 28px;padding:16px 18px 18px;border:1px solid #D5DEDC;border-radius:8px;background:#F3F7F6;color:#1E2A3A}
.k-evpanel-t{margin:0 0 12px;font:600 11px/1.3 var(--f-mono,'IBM Plex Mono',ui-monospace,monospace);letter-spacing:.1em;text-transform:uppercase;color:#175A4A}
.k-evpanel dl{display:grid;grid-template-columns:minmax(0,1fr);gap:12px 28px;margin:0}
.k-evpanel dl>div{min-width:0}
.k-evpanel dt{margin:0 0 3px;font:600 10.5px/1.3 var(--f-mono,'IBM Plex Mono',ui-monospace,monospace);letter-spacing:.08em;text-transform:uppercase;color:#12243A}
.k-evpanel dd{margin:0;font:400 14.5px/1.55 var(--f-sans,'Public Sans',system-ui,sans-serif);color:#1E2A3A;overflow-wrap:anywhere;text-wrap:pretty}
.k-evpanel a{color:#175A4A;text-decoration:underline;text-underline-offset:2px}
@media (min-width:760px){.k-evpanel dl{grid-template-columns:repeat(2,minmax(0,1fr))}.k-evpanel dl>div:first-child{grid-column:1/-1}}
@media print{.k-evpanel{break-inside:avoid}}

/* ===== Full-bleed bands without horizontal overflow (25 Sept 2026) =====
   100vw includes a desktop scrollbar, so the negative-margin technique overflowed the page by the scrollbar
   width. The band colour is now painted as border-image outset: ink overflow, which never creates scrolling.
   Content alignment is unchanged. */
.ked-warm,.ked-bridge,.ked-inv{margin-left:0;margin-right:0;padding-left:0;padding-right:0}
.ked-warm{background:none;border-image:linear-gradient(180deg,#FBF3E6 0%,var(--f-paper) 100%) fill 0//0 100vw}
.ked-bridge{background:none;border-image:linear-gradient(180deg,var(--f-navy) 0%,var(--f-night) 100%) fill 0//0 100vw}
.ked-inv{background:none;border-image:linear-gradient(#0F2A33,#0F2A33) fill 0//0 100vw}
/* Narrow screens: long evidence text and date lines wrap instead of widening the page */
.k-grid>*{min-width:0}
.k-evidence,.k-card,.k-evpanel{overflow-wrap:anywhere}
@media (max-width:480px){.modulefresh>span{white-space:normal}}

/* Grids never force a column wider than the screen (320px phones) */
body .k-grid--2{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
body .k-grid--3{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr))}
body .k-grid--4{grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}
body .ng-cards{grid-template-columns:repeat(auto-fit,minmax(min(290px,100%),1fr))}
body .ng-cards>*,body .k-grid>*{min-width:0}

/* 25 Sept normalisation: equal image slots, status graphics, icon cards, section leads */
.ked-card .k-illus img,.ked-lead .k-illus img,.ked-second .k-illus img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.ked-pat .k-illus img,.ked-pair .k-illus img{aspect-ratio:4/3;object-fit:cover;width:100%;height:auto}
.ked-status{display:grid;place-content:center;gap:6px;aspect-ratio:auto;width:100%;border-radius:10px;padding:18px;text-align:center;box-sizing:border-box}
.ked-status-veto{background:#F7E7E3;color:#7A2E22;border:1px solid #E8C6BD}
.ked-status-pending{background:#F3E5C8;color:#5E4418;border:1px solid #E4D2AA}
.ked-st-big{font:700 clamp(22px,3vw,34px)/1.05 Fraunces,Georgia,serif;letter-spacing:-.01em}
.ked-st-small{font:600 11px/1.3 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase}
.ked-hicon{display:inline-grid;place-items:center;width:48px;height:48px;margin:0 0 12px;border-radius:50%;background:#E6EFEC;color:#175A4A}
.ked-next-band .ked-next-main{grid-template-columns:minmax(0,1fr)}
.ked-sectlead{margin:4px 0 18px;max-width:560px}
.ked-sectlead img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:8px}
.ked-globe{max-width:420px;margin:4px 0 18px;color:#1F6F5C;opacity:.7}

.ked-second .ked-status{aspect-ratio:16/9}
.ked-next .ked-status{max-width:520px;padding:22px 24px}

/* symmetry: equal-height sibling cards, actions aligned on one baseline */
.ked-how>.ked-hcard,.k-cards>.k-card,.ked-second>.ked-card,.ked-pair>*{display:flex;flex-direction:column;height:100%;box-sizing:border-box}
.ked-hcard>:last-child,.k-card>em,.ked-card>.ked-src{margin-top:auto}
.ked-second{align-items:stretch}

/* ===== 25 Sept design normalisation ===== */
/* Illustration label: small top-right badge + quiet caption below, never a strip over the image */
.k-illus-cap{position:static;left:auto;right:auto;bottom:auto;margin:8px 0 0;padding:0;background:none;color:#687078;font:400 11.5px/1.45 var(--f-mono);letter-spacing:.01em;text-transform:none}
.ked-inv .k-illus-cap,.ked-band-dark .k-illus-cap,.ked-dark .k-illus-cap{color:#C9D0DB}
.k-illus img{border-radius:6px}
.ked-lead figure,.ked-card figure,.ked-pat figure{overflow:visible}
/* Grids respond to content count: no empty columns beside a lone story */
@media (min-width:760px){.ked-desk-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}}
/* On the record: image 4 / lead 5 / Now rail 3, tops aligned */
@media (min-width:1100px){
 .ked-top{grid-template-columns:minmax(0,9fr) minmax(0,3fr);align-items:start}
 .ked-top .ked-lead{grid-template-columns:minmax(0,4fr) minmax(0,5fr);align-items:start}
 .ked-top .ked-lead h2,.ked-top .ked-lead h3{font-size:clamp(34px,3.4vw,56px)}
}
/* cards: editorial, not SaaS */
.ked-hcard,.k-card,.ked-card{border-radius:8px;box-shadow:none}

/* CFMG feature 6/6 and Fresno pair + rail 4/4/4 */
@media (min-width:1100px){.ked-inv-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:32px}.ked-pairrow{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}}


/* ===== kpsgill 2026-10 layer: view transitions, theme, answer block, citation popovers, footer wordmark, mobile ===== */
html{font-optical-sizing:auto;-webkit-text-size-adjust:100%;text-size-adjust:100%}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}
.k-hdr{view-transition-name:k-hdr}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}
img,svg,video,iframe{max-width:100%}
table{max-width:100%}
.ko table,.k-prose table,article table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
pre,code{overflow-wrap:anywhere}
main a{overflow-wrap:break-word}
/* footer wordmark: full content width, filled, never clipped */
.k-foot .k-fmark{box-sizing:border-box;max-width:1280px;margin:6px auto 0;padding:0 24px .14em;overflow:hidden;white-space:nowrap;text-align:left;font:700 calc((min(100cqi,1280px) - 48px) / 5.3)/.92 var(--k-serif);font-optical-sizing:auto;font-variation-settings:"opsz" 144;letter-spacing:-.04em;color:transparent;-webkit-text-stroke:0;background:linear-gradient(180deg,#F3E5C8 0%,rgba(243,229,200,.78) 55%,rgba(243,229,200,.42) 100%);-webkit-background-clip:text;background-clip:text;border-top:1px solid rgba(255,255,255,.1);padding-top:.12em}
@container kfoot (max-width:600px){.k-foot .k-fmark{padding-left:18px;padding-right:18px;font-size:calc((100cqi - 36px) / 5.3)}}
@media (max-width:760px){.k-frow{grid-template-columns:minmax(0,1fr)!important;gap:24px!important;padding:28px 18px 22px!important}.k-felse{padding:0 18px 20px!important}.k-flegal{padding-left:18px!important;padding-right:18px!important}.k-futil{flex-wrap:wrap;gap:8px 16px}}
.k-themebtn{white-space:nowrap;appearance:none;border:1px solid rgba(255,255,255,.3);background:none;color:#fff;border-radius:999px;padding:5px 12px;font:600 11px/1.2 var(--k-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;min-height:32px}
.k-themebtn:hover{background:rgba(255,255,255,.08)}
.k-themebtn:focus-visible{outline:2px solid var(--k-gold-soft);outline-offset:2px}
/* answer-first block */
.k-answer{margin:18px 0 26px;padding:16px 20px;border:1px solid var(--k-line);border-left-width:1px;border-radius:10px;background:#FBF8F3}
.k-answer-h{margin:0 0 6px;font:600 11px/1.3 var(--k-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--k-teal-deep)}
.k-jump{display:inline-flex;align-items:center;gap:6px;margin:4px 0 0;font:600 13px/1.3 var(--k-sans);color:var(--k-teal-deep)}
/* citation popovers */
.k-cite-pop{position:fixed;inset:auto;margin:0;max-width:min(420px,calc(100vw - 24px));padding:12px 14px;border:1px solid var(--k-line);border-radius:8px;background:#fff;color:var(--k-ink);box-shadow:0 8px 28px rgba(14,27,49,.18);font:400 14px/1.5 var(--k-sans);z-index:300}
.k-cite-pop::backdrop{background:transparent}
.k-cite-pop a{color:var(--k-teal-deep)}
.k-cite-pop .k-cite-go{display:block;margin-top:8px;font-weight:600}
@supports (position-area:block-end){.k-cite-pop.k-anch{position:fixed;position-area:block-end span-inline-end;position-try-fallbacks:flip-block,flip-inline;margin-top:6px}}
/* wordmark reveal moves only; it is never transparent */
@keyframes k-rise{from{transform:translateY(.1em)}to{transform:none}}
/* dark theme (opt-in: html[data-k-theme=dark]). kpsgill-enhance.js measures the light design and writes the dark palette inline; a contrast guard then lifts any text below WCAG AA in either theme. */
html[data-k-theme="dark"]{color-scheme:dark;background:#0B1424}
html[data-k-theme="dark"]:not(.k-dk-on) body{opacity:0;animation:k-dk-show 0s .9s forwards}
@keyframes k-dk-show{to{opacity:1}}
html[data-k-theme="dark"] body{background:#0B1424!important;color:#E3E8F0!important}
html[data-k-theme="dark"] img:not([src$=".svg"]){filter:brightness(.92)}
html[data-k-theme="dark"] .k-cite-pop{background:#14213A;color:#E7EBF2;border-color:#2A3A55}
