/* ==========================================================================
   DACITE — Design System
   Creative territory: Engineered Geology (mass + precision + formation)
   Typography note: Söhne / Söhne Mono / Signifier are locked brand typefaces
   but are commercially licensed and not redistributable. This build uses
   Archivo / IBM Plex Mono / Source Serif 4 as open-license stand-ins with a
   comparable architectural/editorial character until fonts are procured.
   ========================================================================== */

/* Self-hosted fonts (latin subset). No third-party font requests. */
@font-face{font-family:'Archivo';font-style:normal;font-weight:400 800;font-display:swap;src:url(/assets/fonts/archivo.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:'Archivo';font-style:italic;font-weight:500;font-display:swap;src:url(/assets/fonts/archivo-italic.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:'Source Serif 4';font-style:normal;font-weight:400 500;font-display:swap;src:url(/assets/fonts/source-serif-4.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:'Source Serif 4';font-style:italic;font-weight:500;font-display:swap;src:url(/assets/fonts/source-serif-4-italic.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.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.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;}

:root{
  /* ---- Color tokens ---- */
  --dacite-black:#18191A;
  --mineral-white:#F1F0EC;
  --ash:#777873;
  --stone:#B8B5AC;
  --oxide:#9A4435;

  --bg:var(--mineral-white);
  --fg:var(--dacite-black);
  --fg-muted:#5F605B;            /* Ash darkened for AA text contrast (5.6:1 on Mineral White) */
  --accent-ink:var(--oxide);      /* Oxide as text: 5.6:1 on light surfaces */
  --focus:var(--oxide);
  --oxide-light:#D08373;          /* Oxide tint for text on always-dark sections */
  --border:#cfccc2;
  --surface:#e8e6de;
  --accent:var(--oxide);

  /* ---- Type ---- */
  --font-sans:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --font-serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --font-mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;

  /* ---- Spacing (8pt / 4px half step) ---- */
  --sp-1:4px;
  --sp-2:8px;
  --sp-3:16px;
  --sp-4:24px;
  --sp-5:32px;
  --sp-6:48px;
  --sp-7:64px;
  --sp-8:96px;
  --sp-9:128px;

  /* ---- Grid ---- */
  --content-max:1200px;
  --shell-max:1440px;
  --gutter:24px;

  /* ---- Geometry ---- */
  --radius:0px;
  --radius-sm:2px;
  --border-w:1px;
  --border-w-strong:2px;

  --ease-out:cubic-bezier(.16,1,.3,1);
  --dur:280ms;
}

:root{color-scheme:light;}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:var(--dacite-black);
  --fg:var(--mineral-white);
  --fg-muted:var(--stone);
  --border:#33342f;
  --surface:#212220;
  --accent-ink:#D08373;
  --focus:var(--mineral-white);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:var(--dacite-black);
    --fg:var(--mineral-white);
    --fg-muted:var(--stone);
    --border:#33342f;
    --surface:#212220;
    --accent-ink:#D08373;
    --focus:var(--mineral-white);
  }
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:0.001ms!important;animation-iteration-count:1!important;transition-duration:0.001ms!important;}
}

body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{max-width:100%;display:block;}
svg{display:block;}

a{color:inherit;text-decoration:none;}

::selection{background:var(--oxide);color:var(--mineral-white);}

/* ---- Type scale ---- */
h1,h2,h3,h4,h5,h6{margin:0;font-weight:700;letter-spacing:-0.01em;}
.h1, h1{ font-size:clamp(2.5rem, 1.7rem + 3.6vw, 4.5rem); line-height:1.05; font-weight:800; letter-spacing:-0.02em; }
.h2, h2{ font-size:clamp(2rem, 1.5rem + 2.2vw, 3rem); line-height:1.12; font-weight:800; letter-spacing:-0.015em; }
.h3, h3{ font-size:clamp(1.5rem, 1.25rem + 1.1vw, 2rem); line-height:1.2; font-weight:700; }
.h4, h4{ font-size:clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem); line-height:1.33; font-weight:700; }
.h5, h5{ font-size:1.25rem; line-height:1.4; font-weight:600; }
.h6{ font-size:1rem; line-height:1.5; font-weight:600; text-transform:uppercase; letter-spacing:0.06em; }

p{margin:0 0 var(--sp-3);}
.body-lg{font-size:1.125rem;line-height:1.6;}
.small{font-size:0.875rem;line-height:1.43;}
.label{font-family:var(--font-mono);font-size:0.75rem;line-height:1.33;text-transform:uppercase;letter-spacing:0.08em;}
.meta{font-family:var(--font-mono);font-size:0.75rem;line-height:1.45;letter-spacing:0.04em;color:var(--fg-muted);}
.number{font-family:var(--font-mono);font-size:1.5rem;line-height:1.33;}

.serif{font-family:var(--font-serif);font-weight:400;}
.editorial-lede{font-family:var(--font-serif);font-size:clamp(1.25rem,1.1rem+0.7vw,1.5rem);line-height:1.55;color:var(--fg);}

.text-muted{color:var(--fg-muted);}
.text-accent{color:var(--accent-ink);}

/* ---- Layout ---- */
.shell{max-width:var(--shell-max);margin:0 auto;padding:0 var(--gutter);}
.container{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter);}
.narrow{max-width:760px;}

.section{padding-block:var(--sp-8);}
.section--tight{padding-block:var(--sp-6);}
@media (max-width:767px){
  .section{padding-block:var(--sp-6);}
  .section--tight{padding-block:var(--sp-5);}
}

.grid{display:grid;gap:var(--gutter);grid-template-columns:repeat(12,1fr);}
@media (max-width:1023px){.grid{grid-template-columns:repeat(8,1fr);}}
@media (max-width:767px){.grid{grid-template-columns:repeat(4,1fr);gap:16px;}}

.stack{display:flex;flex-direction:column;}
.row{display:flex;flex-wrap:wrap;align-items:center;}
.gap-1{gap:var(--sp-1);} .gap-2{gap:var(--sp-2);} .gap-3{gap:var(--sp-3);}
.gap-4{gap:var(--sp-4);} .gap-5{gap:var(--sp-5);} .gap-6{gap:var(--sp-6);}

/* ---- Buttons / links ---- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  font-family:var(--font-sans);font-weight:600;font-size:0.9375rem;line-height:1;
  padding:14px 24px;border:var(--border-w-strong) solid var(--fg);border-radius:var(--radius);
  background:var(--fg);color:var(--bg);
  transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);
  cursor:pointer;white-space:nowrap;
}
.btn:hover{background:var(--accent);border-color:var(--accent);color:var(--mineral-white);}
.btn:focus-visible{outline:2px solid var(--focus);outline-offset:3px;}
.btn:active{transform:translateY(1px);}
.btn--ghost{background:transparent;color:var(--fg);border-color:var(--fg);}
.btn--ghost:hover{background:var(--fg);color:var(--bg);border-color:var(--fg);}
.btn--accent{background:var(--accent);border-color:var(--accent);color:var(--mineral-white);}
.btn--accent:hover{background:var(--fg);border-color:var(--fg);}
.btn--sm{padding:10px 18px;font-size:0.8125rem;}
.btn--full{width:100%;}

.link-arrow{
  display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:600;
  border-bottom:var(--border-w) solid var(--fg);padding-bottom:2px;
  transition:border-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),gap var(--dur) var(--ease-out);
}
.link-arrow:hover{color:var(--accent-ink);border-color:var(--accent-ink);gap:var(--sp-3);}
.link-arrow svg{width:16px;height:16px;flex:none;}

/* ---- Header ---- */
.site-header{
  position:sticky;top:0;z-index:50;
  background:var(--bg);
  border-bottom:var(--border-w) solid var(--border);
}
.site-header__bar{display:flex;align-items:center;justify-content:space-between;height:88px;}
.brand{display:flex;align-items:center;gap:var(--sp-2);}
.brand img{height:34px;width:auto;}
.brand .wordmark-light{display:block;}
.brand .wordmark-dark{display:none;}
:root[data-theme="dark"] .brand .wordmark-light{display:none;}
:root[data-theme="dark"] .brand .wordmark-dark{display:block;}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .brand .wordmark-light{display:none;}
  :root:not([data-theme="light"]) .brand .wordmark-dark{display:block;}
}

.nav-primary{display:flex;align-items:center;gap:var(--sp-6);}
.nav-primary a{font-size:0.9375rem;font-weight:500;position:relative;padding:6px 0;}
.nav-primary a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent);
  transform:scaleX(0);transform-origin:left;transition:transform var(--dur) var(--ease-out);
}
.nav-primary a:hover::after,.nav-primary a[aria-current="page"]::after{transform:scaleX(1);}
.nav-primary a[aria-current="page"]{color:var(--fg);}

.nav-actions{display:flex;align-items:center;gap:var(--sp-4);}

.nav-toggle{
  display:none;background:none;border:var(--border-w-strong) solid var(--fg);
  width:44px;height:44px;align-items:center;justify-content:center;cursor:pointer;
}
.nav-toggle svg{width:18px;height:18px;}

@media (max-width:1023px){
  .nav-primary{
    position:fixed;inset:88px 0 0 0;background:var(--bg);
    flex-direction:column;align-items:flex-start;gap:0;padding:var(--sp-4) var(--gutter);
    transform:translateY(-8px);opacity:0;pointer-events:none;visibility:hidden;
    transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out),visibility 0s linear var(--dur);
    overflow-y:auto;
  }
  .nav-primary.is-open{opacity:1;transform:translateY(0);pointer-events:auto;visibility:visible;transition-delay:0s;}
  .nav-primary a{width:100%;padding:var(--sp-3) 0;border-bottom:var(--border-w) solid var(--border);font-size:1.125rem;}
  .nav-actions .btn{display:none;}
  .nav-toggle{display:inline-flex;}
}

/* ---- Fault divider ---- */
.fault{width:100%;height:12px;color:var(--fg);opacity:0.9;}
.fault path{fill:none;stroke:currentColor;stroke-width:1.5;}
.fault--accent{color:var(--accent);}
.fault-rule{border:none;border-top:var(--border-w) solid var(--border);margin:0;}

/* ---- Hero ---- */
.hero{padding-block:var(--sp-9) var(--sp-8);position:relative;}
.hero__eyebrow{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);}
.hero__title{max-width:16ch;}
.hero__sub{max-width:44ch;margin-top:var(--sp-4);}
.hero__actions{margin-top:var(--sp-6);display:flex;gap:var(--sp-3);flex-wrap:wrap;}

/* ---- Numbered marker ---- */
.marker{
  font-family:var(--font-mono);font-size:0.8125rem;color:var(--fg-muted);
  display:inline-flex;align-items:center;gap:8px;
}
.marker::before{content:"";width:16px;height:var(--border-w-strong);background:var(--accent);display:inline-block;}

/* ---- Strata card ---- */
.strata-card{
  border:var(--border-w) solid var(--border);
  background:var(--surface);
  padding:var(--sp-5);
  display:flex;flex-direction:column;gap:var(--sp-3);
  position:relative;
}
.strata-card__strata{display:flex;height:3px;}
.strata-card__strata span{flex:1;}
.strata-card__strata span:nth-child(1){background:var(--fg);}
.strata-card__strata span:nth-child(2){background:var(--ash);}
.strata-card__strata span:nth-child(3){background:var(--accent);}
.strata-card h3,.strata-card h4{margin-top:var(--sp-2);}
.strata-card--interactive{transition:border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);}
.strata-card--interactive:hover{border-color:var(--fg);transform:translateY(-2px);}

/* ---- Value / feature grid item ---- */
.feature{padding-top:var(--sp-4);border-top:var(--border-w) solid var(--border);}
.feature h4{margin-bottom:var(--sp-2);}

/* ---- Quote / editorial ---- */
.quote{
  border-left:var(--border-w-strong) solid var(--accent);
  padding-left:var(--sp-5);
  font-family:var(--font-serif);
  font-size:clamp(1.25rem,1.1rem+0.6vw,1.75rem);
  line-height:1.5;
}
.quote cite{display:block;margin-top:var(--sp-3);font-family:var(--font-mono);font-style:normal;font-size:0.8125rem;color:var(--fg-muted);}

/* ---- Data / metric callout ---- */
.metric{border:var(--border-w) solid var(--border);padding:var(--sp-4);}
.metric .number{display:block;font-size:2rem;color:var(--fg);}
.metric .label{color:var(--fg-muted);margin-top:var(--sp-1);}

/* ---- Tag / status ---- */
.tag{
  display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:0.6875rem;
  text-transform:uppercase;letter-spacing:0.06em;padding:4px 10px;border:var(--border-w) solid var(--border);
  color:var(--fg-muted);
}
.tag--accent{border-color:var(--accent-ink);color:var(--accent-ink);}

/* ---- Section header pattern ---- */
.section-head{max-width:640px;margin-bottom:var(--sp-6);}
.section-head .marker{margin-bottom:var(--sp-3);}

/* ---- Split content ---- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-7);align-items:center;}
@media (max-width:1023px){.split{grid-template-columns:1fr;gap:var(--sp-5);}}

.mono-panel{
  background:var(--fg);color:var(--bg);
  padding:var(--sp-6);
  font-family:var(--font-mono);
}
:root[data-theme="dark"] .mono-panel{background:var(--surface);color:var(--fg);}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .mono-panel{background:var(--surface);color:var(--fg);}}

/* ---- Table ---- */
table{width:100%;border-collapse:collapse;}
th,td{text-align:left;padding:var(--sp-3) var(--sp-3) var(--sp-3) 0;border-bottom:var(--border-w) solid var(--border);}
th{font-family:var(--font-mono);font-size:0.75rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--fg-muted);font-weight:500;}
@media (max-width:640px){
  table, thead, tbody, th, td, tr{display:block;}
  thead{display:none;}
  tr{border-bottom:var(--border-w) solid var(--border);padding:var(--sp-3) 0;}
  td{border:none;padding:4px 0;}
  td::before{content:attr(data-label);display:block;font-family:var(--font-mono);font-size:0.6875rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:2px;}
}

/* ---- Forms ---- */
.field{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--sp-4);}
.field label{font-family:var(--font-mono);font-size:0.75rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--fg-muted);}
.field input,.field textarea,.field select{
  font-family:var(--font-sans);font-size:1rem;padding:14px 16px;
  border:var(--border-w) solid var(--border);background:var(--bg);color:var(--fg);
  border-radius:var(--radius);
}
.field textarea{resize:vertical;min-height:140px;}
.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{
  outline:2px solid var(--focus);outline-offset:2px;border-color:var(--fg);
}
.field--error input,.field--error textarea,.field--error select{border-color:var(--accent-ink);border-width:2px;}
.field-error{color:var(--accent-ink);font-size:0.875rem;margin:0;}
.form-status{margin-top:var(--sp-4);padding:var(--sp-3);border:var(--border-w) solid var(--border);display:none;}
.form-status.is-visible{display:block;}
.checkbox-row{display:flex;align-items:flex-start;gap:10px;}
.checkbox-row input{margin-top:4px;}

/* ---- Footer ---- */
.site-footer{border-top:var(--border-w) solid var(--border);padding-block:var(--sp-7) var(--sp-5);margin-top:var(--sp-8);}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--sp-6);}
@media (max-width:1023px){.footer-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:640px){.footer-grid{grid-template-columns:1fr;}}
.footer-col h6{margin-bottom:var(--sp-3);color:var(--fg-muted);}
.footer-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}
.footer-col a:hover{color:var(--accent-ink);}
.footer-bottom{
  margin-top:var(--sp-7);padding-top:var(--sp-4);border-top:var(--border-w) solid var(--border);
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-3);
}
.footer-bottom .brand img{height:24px;}

/* ---- Reveal on scroll ----
   Content is visible by default so it never depends on JavaScript running.
   The `.js-reveal` class (added by main.js only once an IntersectionObserver
   is ready to manage it) opts elements into the animated state. */
.js-reveal [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity 600ms var(--ease-out),transform 600ms var(--ease-out);}
[data-reveal].is-visible{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .js-reveal [data-reveal]{opacity:1;transform:none;}
}

/* ---- Utility ---- */
.mt-1{margin-top:var(--sp-1);} .mt-2{margin-top:var(--sp-2);} .mt-3{margin-top:var(--sp-3);}
.mt-4{margin-top:var(--sp-4);} .mt-5{margin-top:var(--sp-5);} .mt-6{margin-top:var(--sp-6);} .mt-8{margin-top:var(--sp-8);}
.mb-0{margin-bottom:0;}
.text-center{text-align:center;}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.skip-link{
  position:absolute;left:var(--sp-3);top:-60px;background:var(--fg);color:var(--bg);
  padding:12px 20px;z-index:100;transition:top var(--dur) var(--ease-out);
}
.skip-link:focus{top:var(--sp-3);}

.bg-dark{background:var(--dacite-black);color:var(--mineral-white);}
.bg-dark .text-muted{color:var(--stone);}
.bg-dark .fault-rule{border-color:#33342f;}
.bg-dark .feature{border-color:#33342f;}
.bg-dark .strata-card{background:#1f201f;border-color:#33342f;}
.bg-dark .tag{border-color:#33342f;color:var(--stone);}
.bg-dark .btn{border-color:var(--mineral-white);background:var(--mineral-white);color:var(--dacite-black);}
.bg-dark .btn:hover{background:var(--accent);border-color:var(--accent);color:var(--mineral-white);}
.bg-dark .btn--ghost{background:transparent;color:var(--mineral-white);border-color:var(--mineral-white);}
.bg-dark .link-arrow{border-color:var(--mineral-white);}

.bg-surface{background:var(--surface);}

/* ---- Article ---- */
.article-body{font-size:1.0625rem;line-height:1.75;}
.article-body h2{margin-top:var(--sp-7);margin-bottom:var(--sp-3);}
.article-body h3{margin-top:var(--sp-6);margin-bottom:var(--sp-2);}
.article-body p{margin-bottom:var(--sp-4);}
.article-body .quote{margin:var(--sp-6) 0;}
.article-meta{display:flex;gap:var(--sp-4);flex-wrap:wrap;align-items:center;margin-bottom:var(--sp-5);}

/* ---- Card grid list (case studies / insights index) ---- */
.card-list{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gutter);}
@media (max-width:1023px){.card-list{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.card-list{grid-template-columns:1fr;}}

.entry-card{
  border:var(--border-w) solid var(--border);
  display:flex;flex-direction:column;
  transition:border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);
}
.entry-card:hover{border-color:var(--fg);transform:translateY(-2px);}
.entry-card__media{
  aspect-ratio:4/3;background:var(--fg);color:var(--bg);
  display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
}
.entry-card__media .fault{position:absolute;top:0;left:0;}
.entry-card__body{padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);flex:1;}
.entry-card__body .tag-row{display:flex;gap:8px;margin-bottom:4px;}

/* ---- Placeholder notice ---- */
.notice{
  border:var(--border-w) dashed var(--stone);
  padding:var(--sp-3) var(--sp-4);
  font-family:var(--font-mono);font-size:0.8125rem;color:var(--fg-muted);
  margin-bottom:var(--sp-5);
}

/* ---- Home hero: two rock plates settle along the fault ---- */
.hero-home{position:relative;min-height:calc(100dvh - 88px);background:var(--dacite-black);color:var(--mineral-white);overflow:hidden;display:flex;align-items:center;}
.hero-home__frame{position:absolute;right:0;top:50%;width:max(100vw,150dvh);aspect-ratio:3/2;transform:translateY(-50%);}
.hero-home__plate{position:absolute;inset:0;}
.hero-home__plate img{width:100%;height:100%;display:block;object-fit:cover;}
.hero-home__plate--a{clip-path:polygon(0 0,83.5% 0,72% 30%,68% 40%,58.5% 60%,51.5% 75%,41% 100%,0 100%);}
.hero-home__plate--b{clip-path:polygon(83.5% 0,100% 0,100% 100%,41% 100%,51.5% 75%,58.5% 60%,68% 40%,72% 30%);}
.hero-home__scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,25,26,.94) 0%,rgba(24,25,26,.66) 40%,rgba(24,25,26,0) 68%);}
.hero-home__content{position:relative;width:100%;padding-block:var(--sp-8);}
.hero-home__title{max-width:none;font-size:clamp(2.5rem,1rem + 4.6vw,4.75rem);line-height:1.02;letter-spacing:-0.025em;}
.hero-home__sub{max-width:34ch;margin:var(--sp-4) 0 var(--sp-5);font-size:1.125rem;line-height:1.55;color:var(--stone);}
.btn--light{background:var(--mineral-white);border-color:var(--mineral-white);color:var(--dacite-black);}
.btn--light:hover{background:var(--accent);border-color:var(--accent);color:var(--mineral-white);}
@keyframes plate-settle-a{from{opacity:0;transform:translateY(-2.5%);}to{opacity:1;transform:none;}}
@keyframes plate-settle-b{from{opacity:0;transform:translateY(2.5%);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:no-preference){
  .hero-home__plate--a{animation:plate-settle-a 1200ms var(--ease-out) both;}
  .hero-home__plate--b{animation:plate-settle-b 1200ms var(--ease-out) 120ms both;}
  .hero-home__content>*{animation:rise 900ms var(--ease-out) both;}
  .hero-home__content>*:nth-child(2){animation-delay:140ms;}
  .hero-home__content>*:nth-child(3){animation-delay:260ms;}
  @keyframes rise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
}
@media (max-width:767px){
  .hero-home{align-items:flex-end;}
  .hero-home__scrim{background:linear-gradient(0deg,rgba(24,25,26,.96) 0%,rgba(24,25,26,.7) 55%,rgba(24,25,26,.1) 100%);}
  .hero-home__content{padding-block:var(--sp-6);}
}

/* ---- Bedrock: dark slab section over mineral texture ---- */
.bedrock{background:linear-gradient(rgba(24,25,26,.8),rgba(24,25,26,.8)),url("/assets/img/bedrock-texture.jpg") center/cover;color:var(--mineral-white);}
.bedrock .text-muted{color:var(--stone);}
.bedrock .feature{border-color:#3a3b38;}
.bedrock .quote{color:var(--mineral-white);}

/* ---- Portfolio logo wall: one-color by default, full color on hover/focus ---- */
.logo-wall{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gutter);}
.logo-wall--3{grid-template-columns:repeat(3,1fr);}
@media (max-width:1023px){.logo-wall--3{grid-template-columns:repeat(2,1fr);}}
@media (max-width:480px){.logo-wall,.logo-wall--3{grid-template-columns:1fr;}}
.logo-tile{position:relative;display:grid;place-items:center;aspect-ratio:3/2;padding:var(--sp-5);background:var(--surface);border:var(--border-w) solid var(--border);transition:border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);}
.logo-tile img{grid-area:1/1;width:auto;height:auto;max-width:82%;max-height:62%;object-fit:contain;transition:opacity var(--dur) var(--ease-out);}
.logo-tile__color{opacity:0;}
a.logo-tile:hover,a.logo-tile:focus-visible{border-color:var(--fg);transform:translateY(-2px);}
a.logo-tile:hover .logo-tile__mono,a.logo-tile:focus-visible .logo-tile__mono{opacity:0;}
a.logo-tile:hover .logo-tile__color,a.logo-tile:focus-visible .logo-tile__color{opacity:1;}
a.logo-tile:focus-visible{outline:2px solid var(--focus);outline-offset:3px;}
.logo-tile--future{align-content:center;justify-items:start;gap:var(--sp-2);background:transparent;border-style:dashed;}
.logo-tile--future *{grid-area:auto;}

.logo-wall--cards{gap:var(--sp-5) var(--gutter);}
.logo-card{display:flex;flex-direction:column;gap:var(--sp-3);}

/* ---- Theme toggle ---- */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;color:var(--fg);border:var(--border-w-strong) solid var(--fg);border-radius:var(--radius);cursor:pointer;transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out);}
.theme-toggle:hover{background:var(--fg);color:var(--bg);}
.theme-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:3px;}
.theme-toggle svg{width:18px;height:18px;}
.theme-toggle .icon-sun{display:none;}
:root[data-theme="dark"] .theme-toggle .icon-sun{display:block;}
:root[data-theme="dark"] .theme-toggle .icon-moon{display:none;}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .theme-toggle .icon-sun{display:block;}
  :root:not([data-theme="light"]) .theme-toggle .icon-moon{display:none;}
}

/* ---- Dark mode: portfolio logos (one-color marks are Dacite Black by default) ---- */
:root[data-theme="dark"] .logo-tile__mono{filter:invert(1);}
:root[data-theme="dark"] a.logo-tile:hover,:root[data-theme="dark"] a.logo-tile:focus-visible{background:var(--mineral-white);}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .logo-tile__mono{filter:invert(1);}
  :root:not([data-theme="light"]) a.logo-tile:hover,:root:not([data-theme="light"]) a.logo-tile:focus-visible{background:var(--mineral-white);}
}
:root[data-theme="dark"] .hero-home{border-top:var(--border-w) solid var(--border);}
:root[data-theme="dark"] .form-status,:root[data-theme="dark"] .notice{color:var(--fg);}

/* ---- Bento (Solutions) ---- */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);}
.bento-tile{position:relative;overflow:hidden;border:var(--border-w) solid var(--border);background:var(--surface);padding:var(--sp-5);display:flex;flex-direction:column;justify-content:flex-end;gap:var(--sp-2);min-height:280px;}
.bento-tile--img{color:var(--mineral-white);border-color:transparent;min-height:360px;}
.bento-tile--img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.bento-tile--img::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(24,25,26,.92) 0%,rgba(24,25,26,.55) 55%,rgba(24,25,26,.1) 100%);z-index:0;}
.bento-tile--img>*:not(img){position:relative;z-index:1;}
.bento-tile--img .text-muted{color:var(--stone);}
.bento-tile h2{font-size:1.5rem;line-height:1.2;}
.bento-tile ul{margin:var(--sp-2) 0 0;padding-left:18px;}
.bento-tile .number{color:var(--fg-muted);}
.bento-tile--img .number{color:var(--stone);}
.span-4{grid-column:span 4;} .span-5{grid-column:span 5;} .span-7{grid-column:span 7;} .span-8{grid-column:span 8;} .span-6{grid-column:span 6;}
@media (max-width:1023px){.bento>*{grid-column:span 12;}}

/* ---- Photo strip / figure ---- */
.photo-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gutter);}
@media (max-width:1023px){.photo-strip{grid-template-columns:repeat(2,1fr);}}
@media (max-width:480px){.photo-strip{grid-template-columns:1fr;}}
.photo-strip figure{margin:0;display:flex;flex-direction:column;gap:var(--sp-2);}
.photo-strip img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;background:var(--surface);}
.photo-strip figcaption{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);}
.band{position:relative;overflow:hidden;color:var(--mineral-white);background:var(--dacite-black);}
.band>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.band::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,25,26,.9) 0%,rgba(24,25,26,.55) 55%,rgba(24,25,26,.2) 100%);z-index:1;}
.band__inner{position:relative;z-index:2;padding-block:var(--sp-9);}
.band .text-muted{color:var(--stone);}
.band .btn{background:var(--mineral-white);border-color:var(--mineral-white);color:var(--dacite-black);}
.band .btn:hover{background:var(--accent);border-color:var(--accent);color:var(--mineral-white);}
.manifesto-line{font-size:clamp(2rem,1rem + 3.6vw,4rem);line-height:1.08;font-weight:800;letter-spacing:-.02em;max-width:22ch;}
.reveal-words span{opacity:.25;transition:opacity 500ms var(--ease-out);}
.reveal-words.is-in span{opacity:1;}
@media (prefers-reduced-motion:reduce){.reveal-words span{opacity:1;transition:none;}}
.figure-wide{margin:0;}
.figure-wide img{width:100%;height:auto;display:block;}
.figure-wide figcaption{margin-top:var(--sp-2);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden;}
@media (max-width:767px){.band::before{background:linear-gradient(0deg,rgba(24,25,26,.82) 0%,rgba(24,25,26,.42) 100%);}}

/* ---- Accessibility ---- */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--focus);outline-offset:3px;}
main:focus{outline:none;}
.footer-col h2.h6,.footer-col .h6{margin-bottom:var(--sp-3);color:var(--fg-muted);}
.link-btn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;}
.link-btn:hover{color:var(--accent-ink);}
.bedrock .text-accent,.bg-dark .text-accent,.band .text-accent{color:var(--oxide-light);}
.bedrock a:focus-visible,.bg-dark a:focus-visible,.band a:focus-visible,.hero-home a:focus-visible,.hero-home button:focus-visible{outline-color:var(--mineral-white);}

/* ---- Portfolio horizontal pan ----
   Base: a native, keyboard-friendly horizontal scroller with snap points.
   Enhanced (>=1024px, motion allowed): pan.js pins the section and maps
   vertical scroll to the sideways travel. */
.pan{padding-block:var(--sp-8);position:relative;}
.pan__track{list-style:none;margin:0;padding:0 var(--gutter);display:flex;gap:var(--gutter);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);position:relative;}
.pan__panel{flex:0 0 min(84vw,460px);scroll-snap-align:start;display:flex;flex-direction:column;gap:var(--sp-3);}
.pan__panel--intro{flex-basis:min(84vw,480px);justify-content:center;gap:var(--sp-4);}
.pan__panel .logo-tile{width:100%;}
.pan__progress{display:none;}
.pan.is-pinned{padding-block:0;height:calc(100dvh - var(--header-h,89px));}
.pan.is-pinned .pan__viewport{height:100%;display:flex;align-items:center;overflow:clip;}
.pan.is-pinned .pan__track{overflow:visible;width:max-content;scroll-snap-type:none;padding-inline:max(var(--gutter),calc((100vw - var(--content-max)) / 2 + var(--gutter)));will-change:transform;}
.pan.is-pinned .pan__progress{display:block;position:absolute;left:var(--gutter);right:var(--gutter);bottom:var(--sp-5);height:2px;background:var(--border);}
.pan.is-pinned .pan__progress span{display:block;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;}

/* ---- Cookie banner ---- */
.cookie{position:fixed;left:var(--sp-3);bottom:var(--sp-3);z-index:70;width:min(560px,calc(100vw - 2 * var(--sp-3)));background:var(--bg);color:var(--fg);border:var(--border-w-strong) solid var(--fg);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3);}
.cookie[hidden]{display:none;}
.cookie h2:focus{outline:none;}
.cookie p{margin:0;}
.cookie a{text-decoration:underline;text-underline-offset:3px;}
.cookie__prefs{display:flex;flex-direction:column;gap:var(--sp-3);padding-top:var(--sp-3);border-top:var(--border-w) solid var(--border);}
.cookie__prefs[hidden]{display:none;}
.cookie__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);}
.cookie__manage{text-decoration:underline;text-underline-offset:3px;min-height:44px;padding-inline:var(--sp-2);}
.cookie .btn{min-height:44px;}
.cookie input[type="checkbox"]{width:20px;height:20px;accent-color:var(--fg);}
@media (max-width:480px){.cookie{left:0;right:0;bottom:0;width:100%;border-inline:0;border-bottom:0;}}
@media (prefers-reduced-motion:no-preference){.cookie:not([hidden]){animation:rise 400ms var(--ease-out) both;}}
.bg-dark .marker,.bedrock .marker,.band .marker{color:var(--stone);}

/* ---- Legal pages ---- */
.article-body ul,.article-body ol{margin:0 0 var(--sp-4) 1.25rem;padding:0}
.article-body li{margin-bottom:var(--sp-2)}
.article-body code{font-family:var(--font-mono);font-size:.875em}
.data-table{width:100%;border-collapse:collapse;margin:0 0 var(--sp-5);font-size:.9375rem}
.data-table th,.data-table td{text-align:left;vertical-align:top;padding:var(--sp-3) var(--sp-3) var(--sp-3) 0;border-bottom:1px solid var(--stone,#B8B5AC)}
.data-table th{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}
.lede{font-size:1.25rem;max-width:42rem}
