/* ERECE site stylesheet. One file, no framework, no external requests.
   Design system: see DESIGN_SYSTEM.md. All colors, sizes and spacing are tokens in :root.
   Light/dark: color-scheme + light-dark(); a manual choice sets data-theme on <html>. */
@layer reset, tokens, base, layout, components, themes, polish, print;

@font-face{font-family:"Montserrat";src:url("/assets/fonts/montserrat-var.woff2") format("woff2");font-weight:500 800;font-display:swap}
@font-face{font-family:"Source Sans 3";src:url("/assets/fonts/source-sans-3-var.woff2") format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/assets/fonts/jetbrains-mono-var.woff2") format("woff2");font-weight:400 600;font-display:swap}

@layer reset{
 *,*::before,*::after{box-sizing:border-box}
 html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
 body,h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}
 ul,ol{padding:0;list-style:none}
 img,svg{display:block;max-inline-size:100%;block-size:auto}
 button,input,select,textarea{font:inherit;color:inherit}
 [hidden]{display:none!important}
}

@layer tokens{
 :root{
  color-scheme:light dark;
  /* brand */
  --navy:#0B2545; --teal:#1B998B; --teal-lt:#2FC4B2; --steel:#5C6B73; --amber:#F2A541; --gray:#EEF1F4;
  /* semantic (light fallback first, then light-dark() where supported) */
  --bg:#fff; --bg-alt:#EEF1F4; --fg:#0B2545; --fg-soft:#34475c; --fg-mute:#56656f;
  --line:#cbd5df; --line-strong:#0B2545; --accent:#1B998B; --focus:#0B2545;
  --inv-bg:#0B2545; --inv-fg:#fff; --inv-soft:#C9D6E4; --inv-line:#2a4668;
  --cta-bg:#F2A541; --cta-fg:#0B2545;
  /* type */
  --font-display:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-body:"Source Sans 3",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --t-label:clamp(.875rem,.85rem + .1vw,.9375rem);
  --t-0:clamp(1.0625rem,1.02rem + .2vw,1.1875rem);
  --t-1:clamp(1.25rem,1.15rem + .45vw,1.5rem);
  --t-2:clamp(1.5rem,1.3rem + .9vw,2.05rem);
  --t-3:clamp(1.85rem,1.45rem + 1.8vw,2.9rem);
  --t-4:clamp(2.3rem,1.6rem + 3.2vw,4.4rem);
  --t-5:clamp(2.7rem,1.4rem + 5.8vw,6.25rem);
  --lh-body:1.65; --lh-tight:1.08; --measure:68ch;
  /* space */
  --s-1:clamp(.5rem,.45rem + .2vw,.625rem);
  --s-2:1rem;
  --s-3:clamp(1.25rem,1rem + 1vw,1.75rem);
  --s-4:clamp(2rem,1.5rem + 2vw,3rem);
  --s-5:clamp(3rem,2rem + 4vw,5.5rem);
  --s-6:clamp(4.5rem,3rem + 7vw,9.5rem);
  --gutter:clamp(1.25rem,.6rem + 3vw,3rem);
  --page:76rem;
  --radius:2px; --hair:1px; --rule:2px;
  --ease:cubic-bezier(.2,.6,.2,1);
 }
 @supports (color:light-dark(#000,#fff)){
  :root{
   --bg:light-dark(#fff,#07172c);
   --bg-alt:light-dark(#EEF1F4,#0c2240);
   --fg:light-dark(#0B2545,#E9EFF6);
   --fg-soft:light-dark(#34475c,#c4d2e2);
   --fg-mute:light-dark(#56656f,#9fb3c9);
   --line:light-dark(#cbd5df,#1f3a5e);
   --line-strong:light-dark(#0B2545,#7f97b4);
   --accent:light-dark(#1B998B,#2FC4B2);
   --focus:light-dark(#0B2545,#F2A541);
   --inv-bg:light-dark(#0B2545,#0a1d37);
  }
 }
 :root[data-theme="light"]{color-scheme:light}
 :root[data-theme="dark"]{color-scheme:dark}
 @media (prefers-contrast:more){
  :root{--line:light-dark(#0B2545,#c4d2e2);--fg-mute:light-dark(#2c3c4a,#dbe5f0);--fg-soft:light-dark(#1b2d42,#eef3f9);--inv-line:#8aa3c0}
 }
}

@layer base{
 html{scroll-padding-block-start:1.5rem}
 @media (min-width:62.01rem){html{scroll-padding-block-start:6.5rem}}
 @media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
 a,button,select,summary,label,input[type=checkbox]{touch-action:manipulation}
 body{-webkit-tap-highlight-color:rgba(27,153,139,.25);background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--t-0);line-height:var(--lh-body);font-kerning:normal;text-rendering:optimizeLegibility;min-block-size:100vh;display:flex;flex-direction:column}
 main{flex:1 0 auto}
 h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:var(--lh-tight);letter-spacing:-.015em;text-wrap:balance;color:var(--fg)}
 h1{font-size:var(--t-4);letter-spacing:-.025em;font-weight:700}
 h2{font-size:var(--t-3);letter-spacing:-.02em}
 h3{font-size:var(--t-1);line-height:1.2}
 h4{font-size:var(--t-0);font-weight:600}
 p,li,dd{text-wrap:pretty}
 p+p{margin-block-start:1em}
 a{color:inherit;text-decoration:none}
 a:hover,a:focus,a:focus-visible{text-decoration:none}
 strong{font-weight:700}
 :focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:var(--radius);box-shadow:0 0 0 6px color-mix(in srgb,var(--focus) 18%,transparent)}
 .btn:active,.chip:active,.icon-btn:active{transform:translateY(1px)}
 ::selection{background:var(--teal-lt);color:var(--navy)}
 .skip{position:absolute;inset-inline-start:var(--s-2);inset-block-start:-6rem;z-index:100;background:var(--cta-bg);color:var(--cta-fg);padding:.75rem 1rem;font-weight:700;text-decoration:none}
 .skip:focus{inset-block-start:var(--s-2)}
 .print-only{display:none}
 .no-js .js-only{display:none!important}
}

@layer layout{
 .wrap{inline-size:min(100% - 2*var(--gutter),var(--page));margin-inline:auto}
 .narrow{max-inline-size:46rem}
 .band{padding-block:var(--s-5)}
 .band--alt{background:var(--bg-alt)}
 .band--inv{background:var(--inv-bg);color:var(--inv-fg);--fg:var(--inv-fg);--fg-soft:var(--inv-soft);--fg-mute:var(--inv-soft);--line:var(--inv-line);--accent:var(--teal-lt);--focus:var(--amber)}
 .band-head{max-inline-size:44rem;margin-block-end:var(--s-4)}
 .band-head>*+*{margin-block-start:var(--s-2)}
 .band-head p:not(.eyebrow){color:var(--fg-soft)}
 .cols{display:grid;gap:var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr))}
 .cols-2{display:grid;gap:var(--s-4) var(--s-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr))}
 .stack>*+*{margin-block-start:var(--s-2)}
 .btn-row{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-block-start:var(--s-3)}
}

@layer components{
 /* labels */
 .eyebrow{font-family:var(--font-mono);font-size:var(--t-label);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute);display:flex;align-items:center;gap:.75rem}
 .eyebrow::before{content:"";inline-size:2rem;block-size:var(--rule);background:var(--accent);flex:none}
 .crumbs+.eyebrow{margin-block-start:var(--s-3)}
 .lead{font-size:var(--t-1);line-height:1.5;color:var(--fg-soft);max-inline-size:40rem;font-weight:400}
 .note{font-size:1rem;color:var(--fg-mute);max-inline-size:var(--measure)}
 .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}

 /* buttons */
 .btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-block-size:3rem;padding:.65rem 1.4rem;border:var(--rule) solid var(--cta-bg);background:var(--cta-bg);color:var(--cta-fg);font-family:var(--font-display);font-weight:700;font-size:1rem;letter-spacing:.005em;text-decoration:none;border-radius:var(--radius);cursor:pointer;transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}
 .btn:hover{background:var(--fg);border-color:var(--fg);color:var(--bg)}
 .band--inv .btn:hover,.site-header .btn:hover{background:#fff;border-color:#fff;color:var(--navy)}
 .btn-line{background:transparent;border-color:var(--line-strong);color:var(--fg)}
 .btn-line:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}
 .band--inv .btn-line{border-color:var(--inv-soft);color:var(--inv-fg)}
 .band--inv .btn-line:hover{background:#fff;color:var(--navy);border-color:#fff}
 .arrow{inline-size:1.1em;block-size:1.1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
 .more{display:inline-flex;align-items:center;gap:.5rem;min-block-size:3rem;font-weight:600;text-decoration:none;font-family:var(--font-display);font-size:1rem;transition:color .15s var(--ease)}
 .more:hover{color:color-mix(in srgb,var(--fg) 55%,var(--accent))}
 .more:hover .arrow{transform:translateX(.25rem)}
 .arrow{transition:transform .2s var(--ease)}

 /* masthead */
 .site-header{background:var(--inv-bg);color:#fff;--focus:var(--amber)}
 @media (min-width:62.01rem){.site-header{position:sticky;inset-block-start:0;z-index:30;box-shadow:0 1px 0 var(--inv-line)}.hdr{min-block-size:4.75rem}}
 .hdr{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-block-size:5.25rem;padding-block:.6rem}
 .brand{display:block;line-height:0;flex:none}
 .brand img{inline-size:clamp(7.5rem,6rem + 4vw,10rem);block-size:auto}
 .nav{margin-inline-start:auto}
 .nav ul{display:flex;align-items:center;gap:.25rem}
 .nav a{display:flex;align-items:center;min-block-size:3rem;padding:.5rem .85rem;color:#fff;font-family:var(--font-display);font-weight:500;font-size:1rem;text-decoration:none;border-block-end:2px solid transparent}
 .nav a:hover{color:var(--teal-lt)}
 .nav a[aria-current="page"]{color:var(--teal-lt);font-weight:700}
 .nav a.btn{margin-inline-start:.5rem;padding:.5rem 1.2rem;border:var(--rule) solid var(--cta-bg);min-block-size:3rem;color:var(--cta-fg);justify-content:center}
 .hdr-tools{display:flex;align-items:center;gap:.5rem}
 .icon-btn,.nav-toggle{display:inline-flex;align-items:center;justify-content:center;min-block-size:3rem;min-inline-size:3rem;padding:0 1rem;background:transparent;border:1px solid #6d86a8;color:#fff;border-radius:var(--radius);cursor:pointer;font-family:var(--font-display);font-weight:600;font-size:1rem}
 .icon-btn:hover,.nav-toggle:hover{border-color:#fff}
 .icon-btn svg{inline-size:1.3rem;block-size:1.3rem;fill:none;stroke:currentColor;stroke-width:1.6}
 .icon-btn svg .half{fill:currentColor}
 .nav-toggle{display:none}
 @media (max-width:62rem){
  .nav-toggle{display:inline-flex}
  .hdr{flex-wrap:wrap}
  .nav{display:none;flex-basis:100%;order:3;padding-block-end:var(--s-2)}
  .nav.open{display:block}
  .nav ul{flex-direction:column;align-items:stretch;gap:0;border-block-start:1px solid #2a4668}
  .nav a{padding:.9rem .25rem;border-block-end:1px solid #2a4668;font-size:1.05rem}
  .nav a.btn{margin:var(--s-2) 0 0;justify-content:center;border-block-end:var(--rule) solid var(--cta-bg)}
  .hdr-tools{margin-inline-start:auto}
 }
 .no-js .nav-toggle{display:none}
 .no-js .nav{display:block;flex-basis:100%;order:3}
 .no-js .nav ul{flex-wrap:wrap}

 /* hero */
 .hero{padding-block:var(--s-5) var(--s-5);overflow:clip}
 .hero .wrap{display:grid;gap:var(--s-4) var(--s-5);align-items:center;grid-template-columns:minmax(0,1fr)}
 @media (min-width:60rem){.hero .wrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
 .hero h1{font-size:var(--t-5);margin-block:var(--s-3) var(--s-3);letter-spacing:-.03em;line-height:1.02}
 .tagline{margin-block-start:var(--s-4);font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute)}
 .art{inline-size:100%;color:var(--fg);max-inline-size:34rem;margin-inline:auto}
 .art *{vector-effect:non-scaling-stroke}
 .art .grid{opacity:.14}
 .art .thin{stroke-width:1;opacity:.75}
 .art .center{stroke-dasharray:14 4 2 4;stroke-width:1;opacity:.6}
 .art .main{stroke-width:2}
 .art .flow{stroke:var(--accent);stroke-width:2.5}
 .art .flowhead{fill:var(--accent);stroke:none}
 @media (prefers-reduced-motion:no-preference){
  .art .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.8s var(--ease) .1s forwards}
  .art .draw.d2{animation-delay:.5s}.art .draw.d3{animation-delay:.9s}
  @keyframes draw{to{stroke-dashoffset:0}}
 }

 /* page head */
 .page-head{padding-block:var(--s-5) var(--s-4);border-block-end:var(--hair) solid var(--line)}
 .page-head h1{margin-block:var(--s-2) var(--s-3);max-inline-size:20ch}
 .crumbs ol{display:flex;flex-wrap:wrap;gap:.5rem;font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.04em;color:var(--fg-mute)}
 .crumbs li+li::before{content:"/";margin-inline-end:.5rem;opacity:.6}
 .crumbs a{display:inline-flex;align-items:center;min-block-size:3rem;text-decoration:none;transition:color .15s var(--ease)}.crumbs a:hover{color:color-mix(in srgb,var(--fg) 55%,var(--accent))}
 .crumbs ol{align-items:center}

 /* pillars (ruled columns) */
 .pillars{display:grid;gap:var(--s-4) var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,15.5rem),1fr))}
 .pillar{display:flex;flex-direction:column;gap:var(--s-2);padding-block-start:var(--s-3);border-block-start:var(--rule) solid var(--fg);text-decoration:none}
 .pillar:hover{border-block-start-color:var(--accent)}
 .pillar .num{font-family:var(--font-mono);font-size:var(--t-label);color:var(--fg-mute);letter-spacing:.08em}
 .ico{inline-size:2.75rem;block-size:2.75rem;stroke-width:1.5;color:var(--accent)}
 .pillar h3{font-size:var(--t-2)}
 .kw{font-family:var(--font-mono);font-size:var(--t-label);color:var(--fg-mute);letter-spacing:.02em;line-height:1.5}
 .pillar p:not(.kw){color:var(--fg-soft)}
 .pillar .more{margin-block-start:auto;padding-block-start:var(--s-1)}

 /* facts / stats */
 .stats{display:grid;gap:var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}
 .stat{border-block-start:var(--hair) solid var(--line);padding-block-start:var(--s-2)}
 .stat b{display:block;font-family:var(--font-display);font-size:var(--t-4);font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;color:var(--fg)}
 .stat span{display:block;margin-block-start:var(--s-2);color:var(--fg-soft);font-size:1rem;line-height:1.5}

 /* lists */
 .rule-list li{padding-block:.85rem;border-block-start:var(--hair) solid var(--line)}
 .rule-list li:last-child{border-block-end:var(--hair) solid var(--line)}
 .dot-list{display:grid;gap:.6rem}
 .dot-list li{padding-inline-start:1.4rem;position:relative}
 .dot-list li::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:.72em;inline-size:.6rem;block-size:var(--rule);background:var(--accent)}
 .steps{display:grid;gap:var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));counter-reset:step}
 .steps li{counter-increment:step;border-block-start:var(--hair) solid var(--line-strong);padding-block-start:var(--s-2)}
 .steps li::before{content:"0" counter(step);display:block;font-family:var(--font-mono);font-size:var(--t-label);color:var(--fg-mute);letter-spacing:.08em;margin-block-end:var(--s-1)}
 .steps h3{font-size:var(--t-1);margin-block-end:.4rem}
 .steps p{color:var(--fg-soft);font-size:1rem}
 .kv dt{font-weight:700;margin-block-start:var(--s-2)}
 .kv dd{color:var(--fg-soft)}

 /* services */
 .chips{display:flex;flex-wrap:wrap;gap:.6rem}
 .chip{display:inline-flex;align-items:center;min-block-size:3rem;padding:.35rem 1.1rem;border:1px solid var(--line-strong);border-radius:99px;background:transparent;color:var(--fg);font-family:var(--font-display);font-weight:600;font-size:1rem;text-decoration:none;cursor:pointer}
 .chip:hover{background:var(--fg);color:var(--bg)}
 .chip[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
 .svc{display:grid;gap:var(--s-3) var(--s-5);padding-block:var(--s-5);border-block-start:var(--hair) solid var(--line);scroll-margin-block-start:1rem}
 @media (min-width:56rem){.svc{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.svc>div:first-child{align-self:start;position:sticky;inset-block-start:6.5rem}}
 .svc h2{margin-block:var(--s-1)}
 .svc h3{font-size:var(--t-0);font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-mute);margin-block:var(--s-4) var(--s-1)}
 .svc h3:first-child{margin-block-start:0}
 .svc .line{font-size:var(--t-1);line-height:1.45;color:var(--fg-soft)}
 .tbl{overflow-x:auto;border-block:var(--hair) solid var(--line-strong)}
 table{inline-size:100%;border-collapse:collapse;font-size:1rem}
 th,td{text-align:start;padding:.8rem 1rem .8rem 0;border-block-end:var(--hair) solid var(--line);vertical-align:top}
 thead th{font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-mute);font-weight:500}
 tbody tr:last-child>*{border-block-end:0}
 .facts th{inline-size:14rem;font-weight:700;color:var(--fg)}

 /* about */
 .about{display:grid;gap:var(--s-4) var(--s-5);grid-template-columns:minmax(0,1fr)}
 @media (min-width:56rem){.about{grid-template-columns:minmax(0,4fr) minmax(0,8fr)}}
 .portrait img{inline-size:100%;max-inline-size:22rem;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);outline:1px solid var(--line);outline-offset:-1px}
 .portrait figcaption{margin-block-start:var(--s-2);font-size:1rem;color:var(--fg-soft)}
 .about .stack p{max-inline-size:var(--measure)}

 /* talks */
 .talks{display:grid;gap:0 var(--s-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr))}
 .talk{padding-block:var(--s-3);border-block-start:var(--hair) solid var(--line-strong)}
 .talk .n{font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-mute);margin-block-end:var(--s-1)}
 .talk h3{margin-block-end:var(--s-1)}
 .talk p{color:var(--fg-soft)}
 .talk .note{margin-block-start:var(--s-1)}

 /* projects */
 .pcards{display:grid;gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr))}
 .pcard{border-block-start:var(--rule) solid var(--fg);display:flex;flex-direction:column}
 .pcard a{display:flex;flex-direction:column;gap:var(--s-2);padding-block-start:var(--s-2);text-decoration:none;flex:1}
 .pcard:hover{border-block-start-color:var(--accent)}
 .pcard .thumb{aspect-ratio:3/2;background:var(--bg-alt);display:grid;place-items:center;overflow:hidden;color:var(--accent)}
 .pcard .thumb img{inline-size:100%;block-size:100%;object-fit:cover}
 .pcard .thumb .ico{inline-size:3.5rem;block-size:3.5rem}
 .pcard h3{font-size:var(--t-1)}
 .pcard p{color:var(--fg-soft);font-size:1rem}
 .meta{font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.04em;color:var(--fg-mute);display:flex;flex-wrap:wrap;gap:.25rem .75rem}
 .filters{display:grid;gap:var(--s-2) var(--s-3);margin-block-end:var(--s-4);padding-block:var(--s-2);border-block:var(--hair) solid var(--line)}
 .filters .row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-2)}
 .filters label,.filters .lab{font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute)}
 .filters select{max-inline-size:16rem;min-block-size:3rem;padding:.3rem 2rem .3rem .75rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--fg)}
 .filters .count{font-size:1rem;color:var(--fg-soft)}
 .empty{padding:var(--s-4);border:var(--hair) dashed var(--line-strong);border-radius:var(--radius);max-inline-size:44rem}
 .empty h2{font-size:var(--t-2);margin-block-end:var(--s-2)}
 .empty p{color:var(--fg-soft)}
 .p-meta{display:grid;gap:var(--s-2) var(--s-4);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));margin-block-start:var(--s-3);padding-block-start:var(--s-2);border-block-start:var(--hair) solid var(--line)}
 .p-meta dt{font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute)}
 .p-meta dd{font-weight:600}
 .p-sec{display:grid;gap:var(--s-2) var(--s-5);padding-block:var(--s-4);border-block-start:var(--hair) solid var(--line)}
 @media (min-width:56rem){.p-sec{grid-template-columns:minmax(0,3fr) minmax(0,9fr)}}
 .p-sec h2{font-size:var(--t-1)}
 .p-sec .prose p{max-inline-size:var(--measure)}
 .figs{display:grid;gap:var(--s-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));margin-block-start:var(--s-3)}
 .gallery{display:grid;gap:var(--s-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr))}
 .gallery img{inline-size:100%;block-size:auto;border-radius:var(--radius);outline:1px solid var(--line);outline-offset:-1px}
 .gallery figcaption{margin-block-start:.5rem;font-size:1rem;color:var(--fg-mute)}
 .p-cover{margin-block-start:var(--s-4)}
 .p-cover img{inline-size:100%;border-radius:var(--radius)}

 /* forms */
 .contact-grid{display:grid;gap:var(--s-5);grid-template-columns:minmax(0,1fr)}
 @media (min-width:60rem){.contact-grid{grid-template-columns:minmax(0,7fr) minmax(0,4fr)}}
 .form{display:grid;gap:var(--s-3);margin-block-start:var(--s-3)}
 .field label{display:block;font-weight:700;margin-block-end:.4rem}
 .opt{font-weight:400;color:var(--fg-mute)}
 input[type=text],input[type=email],input[type=tel],select,textarea{inline-size:100%;min-block-size:3rem;padding:.7rem .9rem;border:var(--rule) solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--fg)}
 textarea{min-block-size:9rem;resize:vertical}
 .check{display:flex;gap:.5rem;align-items:flex-start}
 .check input{inline-size:1.5rem;block-size:1.5rem;margin:.75rem .5rem .75rem .75rem;accent-color:var(--navy);flex:none;cursor:pointer}
 .check label{padding-block:.75rem;cursor:pointer;line-height:1.5}
 .check label a{display:inline-flex}
 .hp{position:absolute;inset-inline-start:-9999px;inline-size:1px;block-size:1px;overflow:hidden}
 .contact-card{align-self:start;padding-block-start:var(--s-3);border-block-start:var(--rule) solid var(--fg)}
 .contact-card ul{display:grid;gap:var(--s-2);margin-block:var(--s-2) var(--s-3)}
 .contact-card li{display:flex;gap:.75rem;align-items:flex-start}
 .contact-card svg{inline-size:1.4rem;block-size:1.4rem;flex:none;margin-block-start:.25rem;color:var(--accent)}
 .alert{padding:var(--s-3);border-inline-start:var(--rule) solid var(--accent);background:var(--bg-alt)}

 /* share */
 .share{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;align-items:center;margin-block-start:var(--s-4);padding-block-start:var(--s-2);border-block-start:var(--hair) solid var(--line);font-size:1rem}
 .share strong{font-family:var(--font-mono);font-weight:500;font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute)}
 .share a{display:inline-flex;align-items:center;min-block-size:3rem;padding-inline:.25rem}

 /* footer */
 .site-footer{background:var(--inv-bg);color:var(--inv-soft);--focus:var(--amber);margin-block-start:auto}
 .foot{display:grid;gap:var(--s-4) var(--s-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));padding-block:var(--s-5)}
 .foot img{inline-size:9rem;block-size:auto;margin-block-end:var(--s-2)}
 .foot h2{font-family:var(--font-mono);font-size:var(--t-label);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#fff;margin-block-end:var(--s-2)}
 .foot p{max-inline-size:26rem}
 .foot a{color:#fff;text-decoration:none;transition:color .15s var(--ease)}
 .foot a:hover{color:var(--teal-lt)}
 .foot li a{display:inline-flex;align-items:center;min-block-size:3rem}
 .foot address a{display:inline-flex;align-items:center;min-block-size:3rem}
 .foot address{font-style:normal}
 .family-slot{border-block-start:1px solid var(--inv-line);padding-block:var(--s-3)}
 .family-slot:empty{display:none}
 .legal{border-block-start:1px solid var(--inv-line);font-size:1rem}
 .legal a{display:inline-flex;align-items:center;min-block-size:3rem}
 .legal .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:var(--s-2)}
 .callbar{display:none}
 .tap{display:inline-flex;align-items:center;min-block-size:3rem}
 .gap-top{margin-block-start:var(--s-4)}
 .cta-grid{display:grid;gap:var(--s-3) var(--s-5);align-items:center}
 @media (min-width:62rem){.cta-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.cta-grid .btn-row{margin-block-start:0;justify-content:flex-end}}
 .cta-band p{color:var(--inv-soft);max-inline-size:34rem;margin-block-start:var(--s-1)}
 @media (max-width:62rem){
  .callbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem;position:sticky;inset-block-end:0;z-index:20;padding:.5rem max(.5rem,env(safe-area-inset-left)) max(.5rem,env(safe-area-inset-bottom));background:var(--inv-bg);border-block-start:1px solid var(--inv-line)}
  .callbar .btn{min-block-size:3rem;padding-inline:.5rem;font-size:1rem}
  .callbar .btn-line{border-color:var(--inv-soft);color:#fff}
 }
 /* 404 page */
 .nf{padding-block:var(--s-4) var(--s-5);border-block-end:var(--hair) solid var(--line);overflow:clip}
 .nf .wrap{display:grid;gap:var(--s-4) var(--s-5);align-items:center;grid-template-columns:minmax(0,1fr)}
 @media (min-width:60rem){.nf .wrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
 .nf h1{font-size:var(--t-4);letter-spacing:-.025em;line-height:1.05;margin-block:var(--s-2) var(--s-3);max-inline-size:16ch}
 .nf .lead{max-inline-size:36rem}
 .nf-call{margin-block-start:var(--s-2);color:var(--fg-soft)}
 .nf-call a{display:inline-flex;align-items:center;min-block-size:3rem;font-weight:700;color:var(--fg)}
 .nf-art{max-inline-size:min(26rem,80%)}
 .nf-art .nf-missing{stroke:var(--accent);stroke-width:2}
 .nf-art .nf-flag{stroke:var(--accent);stroke-width:2;fill:var(--bg)}
 .nf-art .nf-q,.nf-art .nf-num{fill:var(--accent);stroke:none;font-family:var(--font-mono);font-weight:700}
 .nf-art .nf-q{font-size:28px}.nf-art .nf-num{font-size:30px;letter-spacing:.06em}
 .nf-cards{display:grid;gap:var(--s-3);grid-template-columns:minmax(0,1fr)}
 @media (min-width:40rem){.nf-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.nf-cards li:last-child:nth-child(odd){grid-column:1/-1}}
 @media (min-width:72rem){.nf-cards{grid-template-columns:repeat(5,minmax(0,1fr))}.nf-cards li:last-child:nth-child(odd){grid-column:auto}}
 .nf-card{display:flex;flex-direction:column;gap:var(--s-1);block-size:100%;min-block-size:3rem;padding:var(--s-3);border:var(--hair) solid var(--line);border-block-start:var(--rule) solid var(--fg);background:var(--bg);text-decoration:none;transition:border-color .15s var(--ease),transform .15s var(--ease)}
 .nf-card:hover{border-color:var(--accent);border-block-start-color:var(--accent)}
 .nf-card-t{font-family:var(--font-display);font-weight:700;font-size:var(--t-1);line-height:1.2}
 .nf-card-d{color:var(--fg-soft);font-size:1rem}
 .nf-card .more{margin-block-start:auto;padding-block-start:var(--s-1)}
 .nf-card:hover .more .arrow{transform:translateX(.25rem)}
 @media (prefers-reduced-motion:reduce){.nf-card,.nf-card .arrow{transition:none}}
}

@layer themes{
 /* forced colors (Windows high contrast): let the system palette win, keep structure visible */
 @media (forced-colors:active){
  .btn,.chip,.icon-btn,.nav-toggle{border:2px solid ButtonText}
  .pillar,.pcard,.stat,.steps li,.talk{border-block-start:2px solid CanvasText}
  .art .flow{stroke:Highlight}
  .eyebrow::before,.dot-list li::before{background:CanvasText}
 }
}

@layer polish{
 /* ===== premium + tidy: 8px grid, one container, drawing-sheet masthead ===== */
 :root{
  --gutter:1.5rem;--page:75rem;
  --s-1:.5rem;--s-2:1rem;--s-3:1.5rem;--s-4:2rem;--s-5:5rem;--s-6:7rem;
  --t-5:clamp(2.5rem,1.5rem + 4.4vw,4.5rem);--t-4:clamp(2.25rem,1.6rem + 2.6vw,3.5rem);--t-3:clamp(1.75rem,1.3rem + 1.8vw,2.75rem);
  --radius:2px;
 }
 @media (min-width:48rem){:root{--gutter:2.5rem;--s-4:3rem;--s-5:6.5rem}}
 @media (min-width:75rem){:root{--gutter:3rem;--s-5:8rem}}
 .wrap{inline-size:min(100%,calc(var(--page) + 2*var(--gutter)));padding-inline:var(--gutter)}
 .band-head{margin-block-end:var(--s-4)}
 .btn{min-block-size:3.5rem;padding:.5rem 2rem;letter-spacing:.01em}
 .btn-row{gap:var(--s-2);margin-block-start:var(--s-4)}
 .eyebrow{font-size:.8125rem;letter-spacing:.14em;margin-block-end:var(--s-3)}
 .eyebrow::before{inline-size:2rem}
 .crumbs+.eyebrow{margin-block-start:var(--s-3)}

 /* masthead as a drawing title block */
 .site-header{border-block-end:1px solid var(--inv-line);transition:box-shadow .3s}
 .hdr{gap:0;padding-block:0;min-block-size:5rem;transition:min-block-size .3s var(--ease)}
 .site-header.is-scrolled .hdr{min-block-size:4rem}
 .brand{align-self:stretch;display:flex;align-items:center;padding-inline-end:var(--s-3)}
 .brand img{inline-size:clamp(7rem,5rem + 4vw,9rem);transition:inline-size .3s var(--ease)}
 .site-header.is-scrolled .brand img{inline-size:clamp(6rem,5rem + 2vw,7.5rem)}
 @media (min-width:62.01rem){
  .hdr{border-inline:1px solid var(--inv-line);padding-inline:var(--s-3) 0}
  .brand{border-inline-end:1px solid var(--inv-line);margin-inline-end:0}
  .nav{align-self:stretch}
  .nav ul{block-size:100%;gap:0}
  .nav li{display:flex;border-inline-start:1px solid var(--inv-line)}
  .nav li:first-child{border-inline-start:0}
  .nav a{white-space:nowrap;padding:0 1.25rem;min-block-size:3rem;font-family:var(--font-mono);font-weight:500;font-size:.8125rem;letter-spacing:.1em;text-transform:uppercase;border-block-end:0;position:relative}
  .nav a[aria-current="page"]{font-weight:600}
  .nav a.btn{margin:0;border:0;border-inline-start:1px solid var(--inv-line);border-radius:0;block-size:100%;padding-inline:1.5rem;font-family:var(--font-mono);font-weight:700;letter-spacing:.1em}
  .nav li:last-child{border-inline-end:1px solid var(--inv-line)}
  .hdr-tools{align-self:stretch;border-inline-end:0}
  .theme-toggle{border:0;border-inline-end:0;border-radius:0;min-inline-size:4rem;block-size:100%}
 }
 @media (max-width:62rem){.hdr{min-block-size:4.5rem;flex-wrap:wrap}.hdr .brand{padding-inline-end:0}.nav a{font-family:var(--font-mono);font-size:.875rem;letter-spacing:.08em;text-transform:uppercase}}
 .icon-btn,.nav-toggle{border-color:var(--inv-line);border-radius:var(--radius)}

 /* hero */
 .hero{position:relative;padding-block:var(--s-5);background:var(--bg)}
 .hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:64px 64px;opacity:.35;-webkit-mask-image:linear-gradient(to bottom,#000 0,transparent 85%);mask-image:linear-gradient(to bottom,#000 0,transparent 85%);pointer-events:none}
 .hero .wrap{position:relative;gap:var(--s-4)}
 @media (min-width:60rem){.hero .wrap{gap:var(--s-5);grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
 .hero h1{font-size:var(--t-5);margin-block:var(--s-3);line-height:1.04}
 .hero .lead{max-inline-size:34rem}
 .sheet{position:relative;border:1px solid var(--line-strong);background:var(--bg);padding:var(--s-3);box-shadow:8px 8px 0 -1px var(--bg-alt),8px 8px 0 0 var(--line)}
 .sheet::before,.sheet::after{content:"";position:absolute;inline-size:1rem;block-size:1rem;border:2px solid var(--accent)}
 .sheet::before{inset-block-start:-1px;inset-inline-start:-1px;border-inline-end:0;border-block-end:0}
 .sheet::after{inset-block-end:-1px;inset-inline-end:-1px;border-inline-start:0;border-block-start:0}
 .art{max-inline-size:none}
 .tagline{margin-block-start:var(--s-4);padding-block-start:var(--s-2);border-block-start:1px solid var(--line);max-inline-size:34rem}

 /* pillars: equal columns */
 .pillars{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--s-4) var(--s-3)}
 .pillar{padding:var(--s-3);border:1px solid var(--line);border-block-start:var(--rule) solid var(--fg);background:var(--bg);transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}
 .pillar:hover{transform:translateY(-4px);box-shadow:0 16px 32px -24px rgba(11,37,69,.5)}
 .band--alt .pillar{background:var(--bg)}
 .pillar h3{font-size:var(--t-1)}
 @media (min-width:62rem){
  .pillars{grid-template-columns:repeat(4,minmax(0,1fr));gap:0 var(--s-2)}
  .pillars:has(>.pillar:nth-child(5)){grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}
  .pillar{grid-row:span 6;display:grid;grid-template-rows:subgrid;gap:0;padding:var(--s-3) 1.25rem}
  .pillar>*{margin-block-end:var(--s-1)}
  .pillar .more{align-self:end;margin-block-end:0;font-size:.9375rem}
 }
 @media (max-width:39.99rem){.btn-row .btn{inline-size:100%}.callbar .btn{padding-inline:.5rem;font-size:.9375rem;white-space:nowrap}}

 /* profile */
 .dir{display:grid;gap:var(--s-4);align-items:start}
 .dir-photo{margin:0;border:1px solid var(--line-strong);background:var(--bg);padding:var(--s-1);max-inline-size:26rem;inline-size:100%}
 .dir-photo img{inline-size:100%;block-size:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 12%;display:block}
 @media (min-width:62rem){.dir{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--s-5)}.dir-photo{position:sticky;inset-block-start:7rem}}
 .site-header .wrap{inline-size:min(100% - 2*var(--gutter),var(--page));padding-inline:0}
 .dir .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .stats{gap:var(--s-4) var(--s-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr))}
 .stat b{font-size:var(--t-3)}
 .stat{padding-block-start:var(--s-2);border-block-start:var(--rule) solid var(--line-strong)}
 .steps{gap:var(--s-4) var(--s-3)}
 .steps li{padding-block-start:var(--s-3)}
 .cta-grid{gap:var(--s-4)}
 .site-footer .foot{gap:var(--s-4)}
 .callbar .btn{min-block-size:3.5rem}
 .dot-list{gap:.5rem}
 .chips{gap:.5rem}
 .crumbs a,.share a,.site-footer li a{min-inline-size:2.75rem}
 .site-footer li a{display:inline-flex;align-items:center}
 @media (min-width:62.01rem) and (max-width:75rem){.nav a{padding-inline:.625rem;letter-spacing:.04em}.nav a.btn{padding-inline:1rem}.brand{padding-inline-end:.75rem}.hdr{padding-inline-start:.75rem}}
 @media (prefers-reduced-motion:reduce){.hdr,.brand img,.pillar,.nav a{transition:none}}

 /* LINKS: no underline anywhere (rest, hover, focus). Body-copy links are pill buttons (48px); nav and footer links change color on hover. */
 main :is(p,li,dd,td,address) a:not([class],:is(.crumbs,.share,.nf-cards,.pcard,.pillar) a),.check label a,.share a,.gk-pill,.share button{display:inline-flex;align-items:center;min-block-size:3rem;margin-block:.25rem;padding:.4rem 1.1rem;border:var(--rule) solid var(--accent);border-radius:99px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--fg);font-weight:600;line-height:1.25;text-decoration:none;transition:background .15s var(--ease),color .15s var(--ease)}
 main :is(p,li,dd,td,address) a:not([class],:is(.crumbs,.share,.nf-cards,.pcard,.pillar) a):hover,.check label a:hover,.share a:hover,.share button:hover,.gk-pill:hover,.gk-signup button:hover{background:var(--fg);border-color:var(--fg);color:var(--bg)}
 .band--inv main a,.band--inv :is(p,li) a:not([class]){color:var(--inv-fg)}
}

@layer print{
 @media print{
  @page{margin:18mm}
  :root{--bg:#fff;--bg-alt:#fff;--fg:#000;--fg-soft:#222;--fg-mute:#444;--line:#999;--line-strong:#000;color-scheme:light}
  body{font-size:11.5pt;line-height:1.45;background:#fff;color:#000;display:block}
  .site-header,.nav,.callbar,.cta-band,.share,.filters,.art,.btn-row,.skip,.site-footer .foot img,.family-slot,.theme-toggle{display:none!important}
  .print-only{display:block;font-size:10pt;border-block-end:1px solid #000;padding-block-end:.4rem;margin-block-end:1rem}
  .band,.hero,.page-head{padding-block:1rem;background:#fff!important;color:#000!important}
  .band--inv{color:#000;--fg:#000;--fg-soft:#222;--fg-mute:#444}
  .site-footer{background:#fff;color:#000;border-block-start:1px solid #000}
  .foot{padding-block:.5rem}.foot a,.foot h2{color:#000}
  .pillars,.cols,.cols-2,.stats,.steps,.talks,.pcards{display:block}
  .pillar,.pcard,.stat,.steps li,.talk,.svc,.p-sec{break-inside:avoid;margin-block-end:1rem}
  h1,h2,h3{break-after:avoid;color:#000}
  .svc{display:block}
  a{text-decoration:none}
  main a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em;word-break:break-all}
  img{max-inline-size:60%;break-inside:avoid}
 }
}
@media (max-width:23rem){.callbar .btn{font-size:.875rem;padding-inline:.25rem;letter-spacing:0}}

/* 31 Oct 2026 (Ethan): no underlined text links. Links are buttons, or plain text with a hover and click state. */
a,a:hover,a:focus,a:visited{text-decoration:none!important}
main p a:not([class]),main li a:not([class]),main td a:not([class]),main dd a:not([class]),.faq a:not([class]),.prose a:not([class]),footer a:not([class]),.fine a:not([class]),.small a:not([class]),.note a:not([class]){font-weight:600;border-radius:6px;padding:.05em .3em;margin:0 -.05em;background-color:rgba(127,127,127,.14);transition:background-color .15s ease,box-shadow .15s ease,transform .08s ease}
main p a:not([class]):hover,main li a:not([class]):hover,main td a:not([class]):hover,main dd a:not([class]):hover,.faq a:not([class]):hover,.prose a:not([class]):hover,footer a:not([class]):hover,.fine a:not([class]):hover,.small a:not([class]):hover,.note a:not([class]):hover{background-color:rgba(127,127,127,.28);box-shadow:0 0 0 1px rgba(127,127,127,.35)}
main a:not([class]):active,footer a:not([class]):active{transform:translateY(1px)}
footer li a:not([class]){background-color:transparent;padding:.15em .35em}
a.endask,.signed-ask a{display:inline-flex;align-items:center;min-height:40px;padding:.4em .9em;border-radius:999px;border:1px solid currentColor;font-weight:600}
a.endask:hover,.signed-ask a:hover{background-color:rgba(127,127,127,.18)}
.signed-ask{margin-top:10px}
.editions{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px;margin-top:20px}
.editions figure{margin:0;text-align:center}.editions img{width:100%;height:auto;border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.editions figcaption{font-size:.9rem;margin-top:8px;line-height:1.35}.editions figcaption b{display:block}
html,body{overflow-x:clip}
img,video,iframe{max-width:100%}
