/* ================================================================
   EMBER & OAK — wood-fired pizzeria, Federal Hill, Providence RI
   Dark, fire-lit editorial. Committed dark palette, one ember accent.
   Type: Young Serif (display) / Hanken Grotesk (body) / IBM Plex Mono (data).
   Radius language: all-sharp, hairline dividers. Motion: clip wipe-up.
   ================================================================ */

/* ---------- fonts (self-hosted, swap) ---------- */
@font-face{font-family:'Young Serif';font-weight:400;font-display:swap;
  src:url('fonts/young-serif-400.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-weight:400;font-display:swap;
  src:url('fonts/hanken-grotesk-400.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-weight:500;font-display:swap;
  src:url('fonts/hanken-grotesk-500.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-weight:700;font-display:swap;
  src:url('fonts/hanken-grotesk-700.woff2') format('woff2')}
@font-face{font-family:'Plex Mono';font-weight:400;font-display:swap;
  src:url('fonts/ibm-plex-mono-400.woff2') format('woff2')}
@font-face{font-family:'Plex Mono';font-weight:600;font-display:swap;
  src:url('fonts/ibm-plex-mono-600.woff2') format('woff2')}

/* ---------- tokens ---------- */
:root{
  --bg:#14100D;         /* ember charcoal */
  --surface:#1E1813;    /* raised */
  --surface2:#271F17;   /* raised more */
  --line:#38291C;       /* hairline */
  --line2:#4C3A29;      /* hairline strong */
  --ink:#F2E9DE;        /* warm off-white */
  --ink-dim:#CBBBA9;    /* secondary text */
  --muted:#9A8B7C;      /* labels / tertiary */
  --accent:#E4551F;     /* ember orange, the flame */
  --coal:#F2A23C;       /* molten highlight, sparing */

  --disp:'Young Serif',Georgia,'Times New Roman',serif;
  --body:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'Plex Mono',ui-monospace,Menlo,monospace;

  --page:clamp(20px,5vw,64px);
  --max:1300px;
  --band:clamp(4.5rem,11vw,9rem);
  --e:cubic-bezier(.16,1,.3,1);
  --e2:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  background:var(--bg);color:var(--ink);
  font-family:var(--body);font-size:17px;line-height:1.65;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg,picture{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
::selection{background:var(--accent);color:#14100D}
:focus-visible{outline:2px solid var(--coal);outline-offset:3px}

h1,h2,h3,.disp{font-family:var(--disp);font-weight:400;line-height:1.02;
  letter-spacing:-.015em;text-wrap:balance}
p{text-wrap:pretty}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--page)}
.band{padding-block:var(--band)}
.tnum{font-variant-numeric:tabular-nums}

.eyebrow{font-family:var(--mono);font-weight:600;font-size:.72rem;
  letter-spacing:.24em;text-transform:uppercase;color:var(--coal)}
.label{font-family:var(--mono);font-weight:600;font-size:.72rem;
  letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}

/* ---------- ember mark (the signature flame) ---------- */
.ember{width:1em;height:1.25em;display:inline-block;flex:none;vertical-align:-.18em}
.ember .ember-body{fill:currentColor}
.ember .ember-core{fill:var(--coal)}

/* ---------- ember divider ---------- */
.divider{display:flex;align-items:center;gap:1.2rem;color:var(--line2);
  max-width:var(--max);margin-inline:auto;padding-inline:var(--page)}
.divider::before,.divider::after{content:"";height:1px;background:var(--line2);flex:1}
.divider .ember{color:var(--accent);font-size:1.5rem}

/* ---------- buttons (all-sharp) ---------- */
.btn{display:inline-flex;align-items:center;gap:.7ch;font-family:var(--mono);
  font-weight:600;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  padding:1rem 1.6rem;border:1px solid var(--ink);color:var(--ink);
  transition:transform .5s var(--e),background .3s,color .3s,border-color .3s}
.btn .arw{transition:transform .4s var(--e)}
@media (hover:hover) and (pointer:fine){
  .btn:hover .arw{transform:translateX(4px)}
  .btn-accent:hover{transform:translateY(-2px)}
  .btn-line:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}
}
.btn:active{transform:scale(.98)}
.btn-accent{background:var(--accent);border-color:var(--accent);color:#14100D}

/* ================================================================
   NAV
   ================================================================ */
.nav{position:fixed;inset:0 0 auto 0;z-index:60;
  border-bottom:1px solid transparent;transition:background .4s,border-color .4s,backdrop-filter .4s}
.nav.solid{background:rgba(20,16,13,.86);backdrop-filter:blur(14px);border-bottom-color:var(--line)}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  max-width:var(--max);margin-inline:auto;padding:1.15rem var(--page)}
.brand{display:flex;align-items:center;gap:.55ch;font-family:var(--disp);
  font-size:1.42rem;letter-spacing:-.01em;color:var(--ink)}
.brand .ember{color:var(--accent);font-size:1.15rem}
.brand .amp{color:var(--accent)}

.nav-links{display:flex;align-items:center;gap:clamp(1.1rem,2.4vw,2.3rem)}
.nav-links a.txt{font-family:var(--mono);font-size:.74rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-dim);padding-block:.3rem;
  border-bottom:1px solid transparent;transition:color .25s,border-color .25s}
.nav-links a.txt:hover,.nav-links a.txt[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}

.burger{display:none;width:44px;height:44px;align-items:center;justify-content:center}
.burger span{display:block;position:relative;width:22px;height:1.5px;background:var(--ink)}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:22px;height:1.5px;background:var(--ink);
  transition:transform .35s var(--e),top .35s var(--e)}
.burger span::before{top:-6px}.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}

/* mobile panel */
.mobile-panel{position:fixed;inset:0;z-index:55;background:var(--bg);
  display:flex;flex-direction:column;justify-content:center;gap:.2rem;
  padding:6rem var(--page) 3rem}
.mobile-panel[hidden]{display:none}
.mobile-panel a{font-family:var(--disp);font-size:clamp(2rem,10vw,3rem);
  color:var(--ink);padding-block:.5rem;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between}
.mobile-panel a .num{font-family:var(--mono);font-size:.8rem;color:var(--muted);letter-spacing:.1em}
.mobile-panel .btn{margin-top:2rem;justify-content:center;font-size:.85rem;padding:1.15rem}

@media (max-width:820px){
  .nav-links{display:none}
  .burger{display:flex}
}

/* ================================================================
   HERO (home)
   ================================================================ */
.hero{position:relative;min-height:100dvh;display:flex;align-items:flex-end;
  overflow:hidden;padding-bottom:clamp(3rem,7vw,6rem);padding-top:8rem}
.hero-media{position:absolute;inset:0;z-index:0}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 35%}
.hero-media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,16,13,.55) 0%,rgba(20,16,13,.15) 32%,rgba(20,16,13,.55) 62%,rgba(20,16,13,.96) 100%)}
.hero-in{position:relative;z-index:2;width:100%}
.hero .eyebrow{margin-bottom:1.6rem}
.hero h1{font-size:clamp(3.2rem,11vw,6rem);letter-spacing:-.02em;max-width:12ch}
.hero h1 .amp{color:var(--accent)}
.hero .line{margin-top:1.5rem;font-family:var(--mono);font-size:clamp(.95rem,1.7vw,1.15rem);
  letter-spacing:.04em;color:var(--ink);max-width:34ch}
.hero .line b{color:var(--coal);font-weight:600}
.hero .cta{margin-top:2.4rem;display:flex;flex-wrap:wrap;gap:.9rem}
.hero .lines{overflow:hidden}
.scroll-cue{position:absolute;left:var(--page);bottom:1.5rem;z-index:2;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted);display:flex;align-items:center;gap:.6ch}
@media (max-width:820px){.scroll-cue{display:none}}

/* ================================================================
   INTRO / statement + facts (asymmetric)
   ================================================================ */
.intro{display:grid;gap:clamp(2rem,5vw,4rem);grid-template-columns:1fr}
@media (min-width:900px){.intro{grid-template-columns:1.35fr .65fr;align-items:start}}
.intro .statement{font-family:var(--disp);font-size:clamp(1.7rem,3.8vw,2.9rem);
  line-height:1.12;letter-spacing:-.015em;max-width:20ch}
.intro .statement em{font-style:normal;color:var(--accent)}
.facts{border-top:1px solid var(--line2)}
.fact{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;
  padding-block:1rem;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.82rem}
.fact dt{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.68rem}
.fact dd{color:var(--ink);text-align:right}

/* ================================================================
   THE BEAST — 90s bake (pinned/scrubbed signature moment)
   ================================================================ */
.beast{position:relative;background:var(--bg)}
.beast-stage{position:relative;min-height:100dvh;display:grid;
  grid-template-columns:1fr;align-items:center;overflow:hidden}
.bake{position:relative;width:100%;height:100dvh;overflow:hidden}
.bake-layer{position:absolute;inset:0}
.bake-layer img{width:100%;height:100%;object-fit:cover;object-position:center}
.bake-layer.pie{z-index:1}       /* finished pie: base, visible when no JS */
.bake-layer.dough{z-index:0}     /* dough sits behind pie */
.bake::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,rgba(20,16,13,.94) 0%,rgba(20,16,13,.55) 34%,rgba(20,16,13,.12) 60%,rgba(20,16,13,.5) 100%)}
.beast-copy{position:absolute;inset:0;z-index:3;display:flex;align-items:center}
.beast-copy .inner{max-width:var(--max);margin-inline:auto;padding-inline:var(--page);width:100%}
.beast-copy .col{max-width:30ch}
.beast-copy h2{font-size:clamp(2rem,5.2vw,3.6rem)}
.beast-copy p{margin-top:1.1rem;color:var(--ink-dim);max-width:34ch}
.counter{font-family:var(--mono);font-weight:600;line-height:1;
  font-size:clamp(3.4rem,11vw,7rem);color:var(--coal);letter-spacing:-.02em;margin-bottom:1.4rem;
  display:flex;align-items:baseline;gap:.2ch}
.counter .s{font-size:.28em;color:var(--muted);letter-spacing:.1em}
.counter-scale{display:flex;gap:.8rem;align-items:center;margin-top:1.6rem;font-family:var(--mono);
  font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.counter-scale .track{position:relative;flex:1;max-width:220px;height:2px;background:var(--line2)}
.counter-scale .track i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--accent)}
.temp-tag{position:absolute;right:var(--page);bottom:clamp(2rem,5vw,3rem);z-index:3;
  font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);border:1px solid var(--line2);padding:.6rem .9rem;background:rgba(20,16,13,.5)}
.temp-tag b{color:var(--coal)}
@media (max-width:720px){.temp-tag{display:none}}

/* ================================================================
   MENU spec-sheet (the chalk-slab derivation) — NOT cards
   ================================================================ */
.menu-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:3rem}
.menu-head h2{font-size:clamp(2rem,5vw,3.4rem)}
.menu-head .lead{color:var(--ink-dim);max-width:38ch;font-size:1.05rem}
.spec-group{margin-top:clamp(2.5rem,6vw,4.5rem)}
.spec-group:first-of-type{margin-top:0}
.spec-title{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.4rem;
  font-family:var(--mono);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--coal)}
.spec-title::after{content:"";flex:1;height:1px;background:var(--line)}
.spec-row{display:grid;grid-template-columns:auto minmax(0,auto) 1fr auto;align-items:baseline;
  column-gap:1rem;row-gap:.3rem;padding-block:1.05rem;border-bottom:1px solid var(--line);
  grid-template-areas:"mk name lead price" ". desc desc desc"}
.spec-row .mk{grid-area:mk;color:var(--accent);font-size:1rem;line-height:1;transform:translateY(.15em)}
.spec-row .body-col{grid-area:name;display:contents}
.spec-name{grid-area:name;font-family:var(--disp);font-size:1.32rem;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.spec-desc{grid-area:desc;font-size:.92rem;color:var(--muted);max-width:60ch}
.spec-lead{grid-area:lead;align-self:center;border-bottom:1.5px dotted var(--line2);height:.6em;min-width:2rem}
.spec-price{grid-area:price;font-family:var(--mono);font-weight:600;font-size:1rem;color:var(--ink);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.spec-price::before{content:"$"}
.spec-price.plain::before{content:""}
.spec-tag{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent);border:1px solid var(--accent);padding:.1rem .4rem;margin-left:.6ch;vertical-align:.15em}
/* single-column layout for spec name+desc+price on the home teaser */
@media (max-width:560px){
  .spec-row{grid-template-columns:auto 1fr;grid-template-areas:"mk name" ". desc" ". price"}
  .spec-lead{display:none}
  .spec-name{white-space:normal}
  .spec-price{justify-self:start;color:var(--coal);margin-top:.2rem}
}
.chalk-note{margin-top:2.4rem;border:1px solid var(--line2);background:var(--surface);
  padding:1.4rem 1.6rem;display:flex;gap:1.1rem;align-items:flex-start}
.chalk-note .ember{color:var(--accent);font-size:1.6rem;margin-top:.1rem}
.chalk-note p{font-size:.98rem;color:var(--ink-dim);max-width:60ch}
.chalk-note b{color:var(--ink);font-weight:700}

/* ================================================================
   OAK TABLE — communal table + pull quotes
   ================================================================ */
.oak{display:grid;gap:clamp(2rem,5vw,4rem);grid-template-columns:1fr;align-items:center}
@media (min-width:900px){.oak{grid-template-columns:.9fr 1.1fr}}
.oak-fig{position:relative;overflow:hidden;border:1px solid var(--line)}
.oak-fig img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.oak-copy h2{font-size:clamp(2rem,5vw,3.4rem);max-width:16ch}
.oak-copy .lead{margin-top:1.2rem;color:var(--ink-dim);max-width:44ch}
.quotes{margin-top:2.4rem;display:grid;gap:1.6rem}
.quote{border-left:2px solid var(--accent);padding-left:1.3rem}
.quote p{font-family:var(--disp);font-size:clamp(1.25rem,2.4vw,1.6rem);line-height:1.22;color:var(--ink)}
.quote cite{display:block;margin-top:.7rem;font-family:var(--mono);font-size:.72rem;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-style:normal}

/* ================================================================
   WINE — full-bleed candlelit band + by-the-glass mono list
   (distinct family: not an image/text split like the oak section)
   ================================================================ */
.wineband{position:relative;overflow:hidden;isolation:isolate;
  padding-block:clamp(4rem,9vw,7rem)}
.wineband-media{position:absolute;inset:0;z-index:-1}
.wineband-media img{width:100%;height:100%;object-fit:cover;object-position:center 42%}
.wineband-media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(95deg,rgba(20,16,13,.95) 0%,rgba(20,16,13,.86) 44%,rgba(20,16,13,.6) 100%),
    linear-gradient(0deg,rgba(20,16,13,.72),rgba(20,16,13,.3))}
.wineband-in{display:grid;gap:clamp(2rem,5vw,3.5rem);grid-template-columns:1fr}
@media (min-width:900px){.wineband-in{grid-template-columns:1.05fr .95fr;align-items:center}}
.wineband-copy h2{font-size:clamp(2rem,5vw,3.4rem);max-width:14ch}
.wineband-copy .lead{margin-top:1.2rem;color:var(--ink-dim);max-width:42ch}
.wineband-copy .sig{margin-top:1.6rem;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;color:var(--muted)}
.wineband-copy .sig b{color:var(--coal);font-weight:600}
.glass-list{border:1px solid var(--line2);background:rgba(30,24,19,.9);
  padding:clamp(1.3rem,2.4vw,1.7rem) clamp(1.4rem,2.6vw,1.8rem)}
.glass-head{font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--coal);margin-bottom:1.1rem}
.glass{display:flex;justify-content:space-between;align-items:baseline;gap:1.2rem;
  padding-block:.85rem;border-bottom:1px solid var(--line)}
.glass:last-child{border-bottom:none;padding-bottom:0}
.glass .g-name{font-family:var(--body);font-weight:500;font-size:1.02rem;color:var(--ink)}
.glass .g-region{display:block;font-family:var(--mono);font-size:.72rem;letter-spacing:.03em;
  color:var(--muted);margin-top:.2rem}
.glass .g-price{font-family:var(--mono);font-weight:600;font-size:.95rem;color:var(--coal);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.glass .g-price::before{content:"$"}

/* ================================================================
   VISIT band (home) + secondary page hero + form
   ================================================================ */
.subhero{position:relative;min-height:62dvh;display:flex;align-items:flex-end;
  padding-top:9rem;padding-bottom:clamp(2.5rem,6vw,4.5rem)}
.subhero-grid{display:grid;gap:clamp(2rem,5vw,4rem);grid-template-columns:1fr;width:100%;align-items:end}
@media (min-width:900px){.subhero-grid{grid-template-columns:1.2fr .8fr;align-items:end}}
.subhero .eyebrow{margin-bottom:1.2rem}
.subhero h1{font-size:clamp(2.8rem,8vw,5rem);letter-spacing:-.02em;max-width:12ch}
.subhero .lead{margin-top:1.3rem;color:var(--ink-dim);font-size:clamp(1.05rem,1.6vw,1.25rem);max-width:46ch}
.subhero-aside{border:1px solid var(--line2);background:var(--surface);padding:1.6rem}
.subhero-aside .label{margin-bottom:1rem;display:block}

.visit-grid{display:grid;gap:clamp(2rem,5vw,4rem);grid-template-columns:1fr}
@media (min-width:900px){.visit-grid{grid-template-columns:.9fr 1.1fr;align-items:start}}
.info-block h3{font-family:var(--disp);font-size:1.5rem;margin-bottom:.6rem}
.info-block+.info-block{margin-top:2rem}
.hours{border-top:1px solid var(--line2);margin-top:.4rem}
.hours .row{display:flex;justify-content:space-between;gap:1rem;padding-block:.7rem;
  border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.85rem}
.hours .row.closed{color:var(--muted)}
.hours .row b{color:var(--ink);font-weight:600}
.hours .row .t{color:var(--coal)}
.addr{font-family:var(--mono);font-size:.9rem;line-height:1.9;color:var(--ink-dim)}
.addr a{color:var(--coal);border-bottom:1px solid transparent}
.addr a:hover{border-bottom-color:var(--coal)}

/* reservation form */
.reserve-card{border:1px solid var(--line2);background:var(--surface);padding:clamp(1.6rem,3vw,2.4rem)}
.reserve-card h2{font-size:clamp(1.6rem,3vw,2.2rem);margin-bottom:.4rem}
.reserve-card .note{color:var(--muted);font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;margin-bottom:1.8rem}
.field{margin-bottom:1.2rem}
.field label{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-dim);margin-bottom:.5rem}
.field input,.field select{width:100%;background:var(--bg);border:1px solid var(--line2);
  color:var(--ink);font-family:var(--body);font-size:1rem;padding:.85rem .9rem;transition:border-color .25s}
.field input::placeholder{color:var(--muted)}
.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%239A8B7C' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .9rem center;padding-right:2.4rem}
.field-row{display:grid;gap:1.2rem;grid-template-columns:1fr 1fr}
.reserve-card .btn{width:100%;justify-content:center;margin-top:.4rem}
.form-status{margin-top:1.2rem;font-family:var(--mono);font-size:.82rem;color:var(--coal);
  border:1px solid var(--line2);padding:1rem 1.1rem;background:var(--bg)}
.form-status[hidden]{display:none}

/* ================================================================
   CTA footer band
   ================================================================ */
/* tighten the lower-half folds so the oak/wine/CTA run reads composed, not spaced */
#table{padding-bottom:clamp(3rem,7vw,5.5rem)}
#visit.cta-band{padding-top:clamp(3rem,7vw,5.5rem)}
.cta-band{position:relative;text-align:left}
.cta-band h2{font-size:clamp(2.4rem,7vw,5rem);max-width:15ch;letter-spacing:-.02em}
.cta-band h2 em{font-style:normal;color:var(--accent)}
.cta-band .lead{margin-top:1.4rem;color:var(--ink-dim);max-width:44ch;font-size:1.1rem}
.cta-band .cta{margin-top:2.2rem;display:flex;flex-wrap:wrap;gap:.9rem}

footer.site{border-top:1px solid var(--line);padding-block:clamp(2.5rem,5vw,3.5rem)}
.foot-in{display:flex;flex-wrap:wrap;gap:1.4rem 2.4rem;justify-content:space-between;align-items:flex-start}
.foot-brand{font-family:var(--disp);font-size:1.5rem;display:flex;align-items:center;gap:.5ch}
.foot-brand .ember{color:var(--accent);font-size:1.15rem}
.foot-brand .amp{color:var(--accent)}
.foot-cols{display:flex;flex-wrap:wrap;gap:2.4rem}
.foot-col{display:flex;flex-direction:column;gap:.5rem;font-family:var(--mono);font-size:.8rem;color:var(--muted)}
.foot-col b{color:var(--ink-dim);font-weight:600;letter-spacing:.1em;text-transform:uppercase;font-size:.68rem;margin-bottom:.3rem}
.foot-col a:hover{color:var(--ink)}
.foot-fine{margin-top:2.4rem;padding-top:1.4rem;border-top:1px solid var(--line);
  font-family:var(--mono);font-size:.72rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;justify-content:space-between}

/* ================================================================
   404
   ================================================================ */
.oops{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:6rem var(--page) 4rem}
.oops .ember{color:var(--accent);font-size:clamp(5rem,16vw,10rem);margin-bottom:1.5rem}
.oops h1{font-size:clamp(2.4rem,7vw,4.5rem);margin-bottom:1rem}
.oops p{color:var(--ink-dim);max-width:36ch;margin-bottom:2.2rem;font-size:1.1rem}
.oops .code{font-family:var(--mono);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:1.4rem}
.oops .cta{display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center}

/* ================================================================
   reveal transitions (initial states are set from JS, never in CSS)
   ================================================================ */
[data-reveal]{transition:clip-path .85s var(--e2),opacity .85s var(--e2)}

/* generic section heading helper */
.section-kicker{margin-bottom:1.1rem;display:block}
