/* ============================================================
   Gerri Martin-Flickinger · Editorial / Corporate System
   Quiet, confident, institutional. No ornamental clutter.
   ============================================================ */

:root{
  --bg:#f5f3ed;
  --surface:#ffffff;
  --ink:#111214;
  --ink-2:#2b2d31;
  --muted:#6a6b6f;
  --muted-2:#8b8c90;
  --rule:#e3dfd3;
  --rule-2:#eceadf;
  --accent:#15365c;        /* deep navy */
  --accent-2:#1f4c82;
  --accent-soft:#e6edf5;
  --shadow-sm:0 1px 0 rgba(17,18,20,.04);
  --shadow-md:0 20px 40px -28px rgba(17,18,20,.22);
  --font-serif:"Fraunces","Source Serif 4",Georgia,serif;
  --font-sans:"Inter",system-ui,-apple-system,Helvetica,Arial,sans-serif;
  --radius:2px;
  --container:1200px;
  --container-tight:960px;
  --container-reading:720px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html,body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{min-height:100vh;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

::selection{background:var(--accent);color:#fff}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- Typography ---------- */
.display{font-family:var(--font-serif);font-weight:400;font-style:normal;letter-spacing:-.01em;color:var(--ink);font-variation-settings:"SOFT" 30,"WONK" 0}
.d-1{font-family:var(--font-serif);font-weight:400;font-size:clamp(44px,6vw,72px);line-height:1.02;letter-spacing:-.02em}
.d-2{font-family:var(--font-serif);font-weight:400;font-size:clamp(32px,4.4vw,48px);line-height:1.06;letter-spacing:-.015em}
.d-3{font-family:var(--font-serif);font-weight:400;font-size:clamp(24px,2.8vw,32px);line-height:1.12;letter-spacing:-.01em}
.d-4{font-family:var(--font-serif);font-weight:400;font-size:22px;line-height:1.22;letter-spacing:-.005em}
.d-italic{font-style:italic}

.eyebrow{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500}
.eyebrow.on-accent{color:var(--accent)}
.lede{font-family:var(--font-serif);font-size:22px;line-height:1.5;color:var(--ink-2);font-weight:400;letter-spacing:-.005em}
.body{font-family:var(--font-sans);font-size:16px;line-height:1.72;color:var(--ink-2)}
.body-l{font-family:var(--font-sans);font-size:17.5px;line-height:1.72;color:var(--ink-2)}
.small{font-family:var(--font-sans);font-size:13px;line-height:1.55;color:var(--muted)}
.xsmall{font-family:var(--font-sans);font-size:11.5px;letter-spacing:.04em;color:var(--muted)}
.link-underline{border-bottom:1px solid currentColor;transition:color .18s ease,border-color .18s ease}
.link-underline:hover{color:var(--accent);border-color:var(--accent)}

/* ---------- Layout primitives ---------- */
.shell{max-width:var(--container);margin:0 auto;padding:64px 28px 96px}
.shell-tight{max-width:var(--container-tight);margin:0 auto;padding:64px 28px 96px}
.shell-reading{max-width:var(--container-reading);margin:0 auto;padding:64px 28px 96px}
.divider{height:1px;background:var(--rule);margin:0}

/* ---------- Navigation ---------- */
.nav{
  position:sticky;top:0;z-index:50;
  background:rgba(245,243,237,.92);
  backdrop-filter:saturate(1.1) blur(8px);
  border-bottom:1px solid var(--rule);
}
.nav-inner{
  max-width:var(--container);margin:0 auto;padding:14px 28px;
  display:flex;justify-content:space-between;align-items:center;gap:28px;
}
.nav-brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-family:var(--font-serif);font-weight:400;font-size:17px;letter-spacing:-.005em;white-space:nowrap}
.nav-brand .mark{width:8px;height:8px;background:var(--accent);border-radius:50%}
.nav-list{display:flex;gap:4px;align-items:center}
.nav-list a{
  position:relative;padding:8px 14px;font-family:var(--font-sans);font-size:13.5px;color:var(--ink-2);
  letter-spacing:.01em;font-weight:450;transition:color .18s ease;
}
.nav-list a:hover{color:var(--accent)}
.nav-list a[aria-current="page"]{color:var(--accent)}
.nav-list a[aria-current="page"]::after{
  content:"";position:absolute;left:14px;right:14px;bottom:2px;height:1px;background:var(--accent);
}
.nav-cta{
  font-family:var(--font-sans);font-size:13px;letter-spacing:.02em;font-weight:500;color:var(--accent);
  padding:9px 16px;border:1px solid var(--accent);border-radius:999px;transition:background .2s ease,color .2s ease;
  white-space:nowrap;
}
.nav-cta:hover{background:var(--accent);color:#fff}
.nav-hamb{display:none;padding:8px 10px;border:1px solid var(--rule);border-radius:4px;color:var(--ink-2);font-size:13px}

@media (max-width:980px){
  .nav-list,.nav-cta{display:none}
  .nav-list.open{display:flex;position:absolute;top:100%;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 16px;border-bottom:1px solid var(--rule)}
  .nav-list.open a{padding:10px 8px;border-bottom:1px solid var(--rule)}
  .nav-list.open a:last-child{border-bottom:0}
  .nav-hamb{display:inline-flex;align-items:center;gap:8px}
}

/* ---------- Footer ---------- */
footer.foot{background:#101217;color:#cfd0d3;margin-top:120px}
.foot-inner{max-width:var(--container);margin:0 auto;padding:64px 28px 28px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
.foot h4{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#8d8f95;font-weight:600;margin-bottom:14px}
.foot .brand{font-family:var(--font-serif);font-size:22px;color:#fff;line-height:1.2;letter-spacing:-.005em;margin-bottom:10px}
.foot .sub{font-size:13.5px;color:#9d9fa5;line-height:1.6;max-width:260px}
.foot p,.foot a{font-family:var(--font-sans);font-size:13.5px;color:#cfd0d3;line-height:1.7}
.foot a.link{color:#cfd0d3;border-bottom:1px solid rgba(255,255,255,.16);padding-bottom:1px;transition:color .2s,border-color .2s}
.foot a.link:hover{color:#fff;border-color:#fff}
.foot ul{list-style:none;display:flex;flex-direction:column;gap:8px}
.foot-bottom{border-top:1px solid rgba(255,255,255,.08);max-width:var(--container);margin:0 auto;padding:20px 28px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.foot-bottom p{color:#8d8f95;font-size:12.5px}
.social{display:flex;gap:10px;margin-top:14px}
.social a{
  width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.14);border-radius:50%;color:#bbbcc0;
  transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.social a:hover{background:#fff;color:var(--ink);border-color:#fff}
.social svg{width:14px;height:14px;fill:currentColor}

@media (max-width:820px){.foot-inner{grid-template-columns:1fr 1fr;gap:32px}.foot .brand-col{grid-column:1/-1}}
@media (max-width:540px){.foot-inner{grid-template-columns:1fr}}

/* ============================================================
   PASSWORD PAGE
   ============================================================ */
.auth{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;background:var(--bg)}
.auth-top{padding:22px 28px;display:flex;justify-content:space-between;align-items:center}
.auth-top .brand{font-family:var(--font-serif);font-size:18px;color:var(--ink);display:flex;align-items:center;gap:10px}
.auth-top .brand .mark{width:8px;height:8px;background:var(--accent);border-radius:50%}
.auth-top .meta{font-family:var(--font-sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.auth-main{display:grid;place-items:center;padding:40px 24px}
.auth-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--rule);border-radius:4px;padding:40px 36px 32px;box-shadow:var(--shadow-md)}
.auth-card h1{font-family:var(--font-serif);font-size:26px;line-height:1.15;letter-spacing:-.01em;color:var(--ink);margin-bottom:8px}
.auth-card p.intro{font-size:14.5px;color:var(--muted);margin-bottom:28px;line-height:1.6}
.auth-label{display:block;font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.auth-input{
  width:100%;padding:12px 14px;border:1px solid var(--rule);border-radius:3px;
  font-family:var(--font-sans);font-size:15px;color:var(--ink);background:#fafaf7;
  transition:border-color .2s,background .2s;
}
.auth-input:focus{outline:0;border-color:var(--accent);background:#fff}
.auth-submit{
  margin-top:18px;width:100%;padding:13px 16px;background:var(--ink);color:#fff;border-radius:3px;
  font-family:var(--font-sans);font-size:13.5px;letter-spacing:.04em;font-weight:500;transition:background .2s;
}
.auth-submit:hover{background:var(--accent)}
.auth-error{margin-top:12px;font-size:13px;color:#b0263a;min-height:18px}
.auth-foot{padding:20px 28px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}

/* ============================================================
   HOME — Editorial Cover
   ============================================================ */
.cover{padding-top:72px;padding-bottom:72px}
.cover-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:72px;align-items:center}
.cover-name{margin-top:14px;margin-bottom:24px}
.cover-lede{max-width:520px;margin-bottom:32px}
.cover-roles{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--rule);max-width:520px}
.cover-roles .role{padding:18px 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:60px 1fr;gap:20px;align-items:baseline}
.cover-roles .role .n{font-family:var(--font-sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-top:4px}
.cover-roles .role .t{font-family:var(--font-serif);font-size:19px;line-height:1.25;color:var(--ink);letter-spacing:-.005em}
.cover-roles .role .t small{display:block;font-family:var(--font-sans);font-size:13px;color:var(--muted);margin-top:4px;letter-spacing:.01em}
.cover-portrait{position:relative}
.cover-portrait .frame{background:var(--surface);padding:14px;border:1px solid var(--rule);box-shadow:var(--shadow-md)}
.cover-portrait img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:top center;display:block}
.cover-portrait .cap{margin-top:14px;display:flex;justify-content:space-between;font-size:12px;color:var(--muted);letter-spacing:.02em}

.band{background:var(--surface);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:36px 0}
.band-inner{max-width:var(--container);margin:0 auto;padding:0 28px;display:grid;grid-template-columns:repeat(4,1fr);gap:36px}
.stat .k{font-family:var(--font-serif);font-size:36px;line-height:1;letter-spacing:-.01em;color:var(--accent)}
.stat .l{margin-top:10px;font-size:13px;color:var(--muted);line-height:1.55;max-width:220px}

.cover-quote{max-width:820px;margin:72px auto 0;text-align:center}
.cover-quote blockquote{font-family:var(--font-serif);font-size:clamp(22px,2.6vw,30px);line-height:1.35;color:var(--ink);font-style:italic;letter-spacing:-.005em}
.cover-quote cite{display:block;margin-top:18px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-style:normal}

.nav-explore{margin-top:84px}
.nav-explore h2{font-family:var(--font-serif);font-size:22px;letter-spacing:-.005em;margin-bottom:22px;color:var(--ink)}
.nav-explore .links{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule)}
.nav-explore .links a{
  background:var(--bg);padding:28px 22px;display:flex;flex-direction:column;gap:8px;
  transition:background .2s;
}
.nav-explore .links a:hover{background:var(--surface)}
.nav-explore .links a .lbl{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.nav-explore .links a .t{font-family:var(--font-serif);font-size:20px;letter-spacing:-.005em;color:var(--ink)}
.nav-explore .links a .arr{margin-top:6px;color:var(--accent);font-size:13px}

@media (max-width:900px){
  .cover-grid{grid-template-columns:1fr;gap:40px}
  .band-inner{grid-template-columns:repeat(2,1fr);gap:28px}
  .nav-explore .links{grid-template-columns:1fr}
}

/* ============================================================
   BIOGRAPHY — Long-form Editorial
   ============================================================ */
.bio-head{text-align:left;max-width:720px;margin-bottom:48px}
.bio-head .eyebrow{margin-bottom:14px;display:inline-block}
.bio-head h1{margin-bottom:20px}
.bio-lead{margin:0 0 48px;display:flex;flex-direction:column;gap:14px}
.bio-lead .frame{background:var(--surface);padding:12px;border:1px solid var(--rule);box-shadow:var(--shadow-md)}
.bio-lead .frame img{width:100%;aspect-ratio:3/2;object-fit:cover;object-position:top center;display:block}
.bio-lead figcaption{display:flex;justify-content:space-between;gap:18px;font-size:12.5px;color:var(--muted);letter-spacing:.02em}
.bio-lead figcaption .t{font-family:var(--font-serif);font-size:16px;color:var(--ink);letter-spacing:-.003em}
.bio-body p{font-family:var(--font-serif);font-size:19px;line-height:1.72;color:var(--ink-2);margin-bottom:22px;letter-spacing:-.003em}
.bio-body p.first::first-letter{font-size:3.2em;float:left;line-height:.9;padding:.12em .18em 0 0;color:var(--accent);font-weight:400}
.bio-body h2{font-family:var(--font-serif);font-size:22px;line-height:1.22;letter-spacing:-.005em;color:var(--ink);margin:40px 0 14px;padding-top:24px;border-top:1px solid var(--rule)}
.bio-body .pull{
  margin:36px 0;padding:28px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  font-family:var(--font-serif);font-style:italic;font-size:24px;line-height:1.4;color:var(--ink);letter-spacing:-.005em;
}
.bio-body .pull cite{display:block;margin-top:14px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-style:normal}
.bio-side{margin-top:48px;padding-top:32px;border-top:1px solid var(--rule);display:grid;grid-template-columns:repeat(2,1fr);gap:28px 48px}
.bio-side h3{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-weight:600}
.bio-side p{font-size:14.5px;color:var(--ink-2);line-height:1.6}
.bio-side ul{list-style:none;display:flex;flex-direction:column;gap:6px;font-size:14.5px;color:var(--ink-2)}

@media (max-width:720px){.bio-side{grid-template-columns:1fr}}

/* ============================================================
   TECHNOLOGY — Capability Grid
   ============================================================ */
.tech-hero{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end;margin-bottom:56px}
.tech-hero .lede{max-width:560px}
@media (max-width:820px){.tech-hero{grid-template-columns:1fr;gap:24px}}

.cap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
.cap{background:var(--bg);padding:36px 30px;display:flex;flex-direction:column;gap:10px;min-height:240px;transition:background .2s}
.cap:hover{background:var(--surface)}
.cap .n{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600}
.cap h3{font-family:var(--font-serif);font-size:22px;line-height:1.22;letter-spacing:-.005em;color:var(--ink);margin-top:2px}
.cap p{font-size:14.5px;color:var(--muted);line-height:1.6;margin-top:4px}

.tech-principles{margin-top:88px;display:grid;grid-template-columns:320px 1fr;gap:56px;align-items:start}
.tech-principles .heading h2{font-family:var(--font-serif);font-size:30px;line-height:1.12;letter-spacing:-.01em;color:var(--ink)}
.tech-principles .heading p{margin-top:14px;font-size:14.5px;color:var(--muted);line-height:1.65}
.tech-principles .list{display:flex;flex-direction:column;gap:22px}
.tech-principles .list article{display:grid;grid-template-columns:48px 1fr;gap:22px;padding:22px 0;border-top:1px solid var(--rule)}
.tech-principles .list article:first-child{border-top:0;padding-top:0}
.tech-principles .list .n{font-family:var(--font-serif);font-size:28px;color:var(--accent);line-height:1}
.tech-principles .list h4{font-family:var(--font-serif);font-size:20px;line-height:1.25;letter-spacing:-.005em;color:var(--ink);margin-bottom:8px}
.tech-principles .list p{font-size:15px;color:var(--ink-2);line-height:1.65}

@media (max-width:900px){.cap-grid{grid-template-columns:1fr}.tech-principles{grid-template-columns:1fr;gap:28px}}

/* ============================================================
   GOVERNANCE — Roster Table
   ============================================================ */
.gov-hero{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end;margin-bottom:56px}
@media (max-width:820px){.gov-hero{grid-template-columns:1fr;gap:24px}}

.roster-head{
  display:grid;grid-template-columns:90px 1.2fr 1.1fr 1.3fr 120px;gap:24px;
  padding:14px 0;border-bottom:1px solid var(--ink);
  font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:600;
}
.roster-row{
  display:grid;grid-template-columns:90px 1.2fr 1.1fr 1.3fr 120px;gap:24px;
  padding:24px 0;border-bottom:1px solid var(--rule);align-items:baseline;
}
.roster-row .yr{font-family:var(--font-sans);font-size:13px;color:var(--muted);letter-spacing:.02em;padding-top:4px}
.roster-row .org{font-family:var(--font-serif);font-size:20px;line-height:1.22;letter-spacing:-.005em;color:var(--ink)}
.roster-row .org small{display:block;font-family:var(--font-sans);font-size:12.5px;color:var(--muted);margin-top:3px;letter-spacing:.02em}
.roster-row .role{font-family:var(--font-sans);font-size:14.5px;color:var(--ink-2);line-height:1.5}
.roster-row .dom{font-family:var(--font-sans);font-size:14px;color:var(--muted);line-height:1.6}
.roster-row .st{font-family:var(--font-sans);font-size:12px;color:var(--accent);letter-spacing:.04em;text-align:right;font-weight:500}
.roster-row .st.past{color:var(--muted-2);font-weight:400}

.gov-aside{margin-top:72px;display:grid;grid-template-columns:1fr 1fr;gap:56px;padding-top:48px;border-top:1px solid var(--rule)}
.gov-aside h3{font-family:var(--font-serif);font-size:26px;line-height:1.18;letter-spacing:-.008em;color:var(--ink);margin-bottom:18px}
.gov-aside ol{list-style:none;counter-reset:g;display:flex;flex-direction:column;gap:18px}
.gov-aside ol li{padding-left:44px;position:relative;font-size:15.5px;line-height:1.65;color:var(--ink-2);counter-increment:g}
.gov-aside ol li::before{content:counter(g,decimal-leading-zero);position:absolute;left:0;top:2px;font-family:var(--font-sans);font-size:11px;letter-spacing:.16em;color:var(--accent);font-weight:600}

@media (max-width:900px){
  .roster-head{display:none}
  .roster-row{grid-template-columns:1fr;gap:6px;padding:22px 0}
  .gov-aside{grid-template-columns:1fr;gap:32px}
}

/* ============================================================
   INSIGHTS — Numbered Essay List
   ============================================================ */
.ins-hero{max-width:720px;margin-bottom:56px}
.ins-list{display:flex;flex-direction:column;gap:0}
.ins-list article{
  display:grid;grid-template-columns:120px 1fr 160px;gap:48px;
  padding:36px 0;border-top:1px solid var(--rule);align-items:baseline;
}
.ins-list article:last-child{border-bottom:1px solid var(--rule)}
.ins-list .n{font-family:var(--font-serif);font-size:32px;color:var(--accent);line-height:1;letter-spacing:-.01em}
.ins-list .body h3{font-family:var(--font-serif);font-size:26px;line-height:1.22;letter-spacing:-.008em;color:var(--ink);margin-bottom:12px}
.ins-list .body p{font-size:15.5px;line-height:1.68;color:var(--ink-2);max-width:640px}
.ins-list .tag{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-align:right;padding-top:6px;font-weight:500}

@media (max-width:820px){
  .ins-list article{grid-template-columns:1fr;gap:10px;padding:28px 0}
  .ins-list .tag{text-align:left}
}

/* ============================================================
   MEDIA — Chronological List by Year
   ============================================================ */
.med-hero{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end;margin-bottom:48px}
@media (max-width:820px){.med-hero{grid-template-columns:1fr;gap:24px}}

.yr-block{padding-top:32px;border-top:1px solid var(--ink);margin-top:48px}
.yr-block:first-of-type{margin-top:0}
.yr-block h2{font-family:var(--font-serif);font-size:56px;letter-spacing:-.02em;color:var(--ink);line-height:1;margin-bottom:28px;font-weight:400}
.med-row{
  display:grid;grid-template-columns:150px 1fr 180px;gap:40px;
  padding:22px 0;border-top:1px solid var(--rule);align-items:baseline;
}
.med-row:last-child{border-bottom:1px solid var(--rule)}
.med-row .kind{font-family:var(--font-sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600}
.med-row .ttl{font-family:var(--font-serif);font-size:19px;line-height:1.3;letter-spacing:-.005em;color:var(--ink)}
.med-row .ttl small{display:block;margin-top:6px;font-family:var(--font-sans);font-size:14px;color:var(--muted);line-height:1.55;font-weight:400}
.med-row .venue{font-family:var(--font-sans);font-size:13px;color:var(--muted);line-height:1.55;text-align:right}

@media (max-width:820px){
  .med-row{grid-template-columns:1fr;gap:6px;padding:20px 0}
  .med-row .venue{text-align:left}
  .yr-block h2{font-size:42px}
}

/* ============================================================
   GALLERY — Clean Plate Grid
   ============================================================ */
.gal-hero{max-width:720px;margin-bottom:56px}
.gal-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:32px}
.gal-item{grid-column:span 4;display:flex;flex-direction:column;gap:14px}
.gal-item .frame{background:var(--surface);padding:10px;border:1px solid var(--rule)}
.gal-item .frame img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:top center;display:block}
.gal-item.wide{grid-column:span 6}
.gal-item.wide .frame img{aspect-ratio:4/3}
.gal-item.tall{grid-column:span 4}
.gal-item.tall .frame img{aspect-ratio:3/4}
.gal-item .cap{display:flex;justify-content:space-between;gap:16px;align-items:baseline}
.gal-item .cap .t{font-family:var(--font-serif);font-size:17px;line-height:1.25;letter-spacing:-.003em;color:var(--ink)}
.gal-item .cap .m{font-family:var(--font-sans);font-size:12px;letter-spacing:.06em;color:var(--muted);white-space:nowrap}
.gal-item p.note{font-size:13.5px;color:var(--muted);line-height:1.55}

.gal-quote-plate{grid-column:span 6;background:var(--accent);color:#fff;padding:36px 32px;display:flex;flex-direction:column;justify-content:center;gap:16px;min-height:280px}
.gal-quote-plate .eyebrow{color:rgba(255,255,255,.65)}
.gal-quote-plate blockquote{font-family:var(--font-serif);font-size:22px;line-height:1.4;letter-spacing:-.005em;font-style:italic}
.gal-quote-plate cite{font-family:var(--font-sans);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.7);font-style:normal}

@media (max-width:900px){.gal-item,.gal-item.wide,.gal-item.tall,.gal-quote-plate{grid-column:span 12}}

/* ============================================================
   CONTACT — Split Form
   ============================================================ */
.con-hero{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start;margin-bottom:72px}
.con-hero .left .lede{max-width:460px;margin-top:16px}
.con-hero .left .meta{margin-top:36px;display:grid;grid-template-columns:1fr;gap:22px;max-width:420px}
.con-hero .left .meta .b{padding-top:16px;border-top:1px solid var(--rule)}
.con-hero .left .meta h4{font-family:var(--font-sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:600}
.con-hero .left .meta p{font-family:var(--font-serif);font-size:18px;line-height:1.5;color:var(--ink);letter-spacing:-.003em}
.con-hero .left .meta p a{color:var(--ink);border-bottom:1px solid var(--rule);transition:border-color .2s}
.con-hero .left .meta p a:hover{border-color:var(--accent);color:var(--accent)}

.con-form{background:var(--surface);border:1px solid var(--rule);padding:36px;border-radius:3px;box-shadow:var(--shadow-sm)}
.con-form h2{font-family:var(--font-serif);font-size:24px;letter-spacing:-.008em;margin-bottom:20px}
.con-form .fld{margin-bottom:16px}
.con-form label{display:block;font-family:var(--font-sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:600}
.con-form input,.con-form textarea,.con-form select{
  width:100%;padding:12px 14px;border:1px solid var(--rule);border-radius:3px;background:#fafaf7;
  font-family:var(--font-sans);font-size:15px;color:var(--ink);transition:border-color .2s,background .2s;
}
.con-form input:focus,.con-form textarea:focus,.con-form select:focus{outline:0;border-color:var(--accent);background:#fff}
.con-form textarea{min-height:120px;resize:vertical;line-height:1.55}
.con-form .row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.con-form .submit{
  margin-top:8px;padding:13px 22px;background:var(--ink);color:#fff;border-radius:3px;font-family:var(--font-sans);font-size:14px;letter-spacing:.02em;font-weight:500;
  transition:background .2s;
}
.con-form .submit:hover{background:var(--accent)}
.con-form .done{color:#228054}

@media (max-width:820px){.con-hero{grid-template-columns:1fr;gap:36px}.con-form .row{grid-template-columns:1fr}}

/* ---------- Focus ---------- */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
