/* Bottega di Leonardo — a present-day portfolio, set on parchment */
:root{
  --paper:#f3e9d6; --paper-2:#eadcc1; --paper-3:#e1cfae;
  --ink:#2a1d13; --ink-2:#4c3a2a; --ink-3:#7a6650;
  --sanguine:#9c3f27; --sanguine-2:#b85a3c; --gold:#a8834a;
  --rule:rgba(76,58,42,.22);
  --display:"Cormorant Garamond","Cormorant",Garamond,"Times New Roman",serif;
  --body:"EB Garamond",Garamond,Georgia,serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --max:1240px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);font:400 1.14rem/1.62 var(--body);background:var(--paper);
  background-image:
   radial-gradient(ellipse at 15% 0%,rgba(255,250,236,.85),transparent 55%),
   radial-gradient(ellipse at 100% 100%,rgba(168,131,74,.18),transparent 60%),
   url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .25 0 0 0 0 .15 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--sanguine);color:var(--paper)}
img{max-width:100%;height:auto;display:block}
a{color:var(--sanguine);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--sanguine);outline-offset:3px}
.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;z-index:99;background:var(--ink);color:var(--paper);padding:.5rem 1rem}
.wrap{max-width:var(--max);margin:0 auto;padding:0 clamp(1.1rem,4vw,2.6rem)}

/* ---------- header / navigation ---------- */
.masthead{position:sticky;top:0;z-index:40;background:rgba(243,233,214,.9);backdrop-filter:blur(8px) saturate(1.2);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
.masthead .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:74px}
.sigil{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:var(--ink)}
.sigil svg{width:40px;height:40px;flex:none}
.sigil b{display:block;font:600 1.35rem/1 var(--display);letter-spacing:.02em}
.sigil small{display:block;font:500 .62rem/1.4 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-top:.2rem}
.sigil .mirror{display:inline-block;transform:scaleX(-1)}
nav.folios ol{list-style:none;margin:0;padding:0;display:flex;gap:.2rem}
nav.folios a{display:block;text-decoration:none;color:var(--ink-2);padding:.45rem .7rem;border-radius:2px;position:relative}
nav.folios a .it{display:block;font:600 1.06rem/1.1 var(--display);letter-spacing:.01em}
nav.folios a .en{display:block;font:500 .58rem/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
nav.folios a .no{font:500 .58rem var(--mono);color:var(--gold);margin-right:.25rem}
nav.folios a:hover{background:rgba(156,63,39,.07);color:var(--ink)}
nav.folios a[aria-current=page]{color:var(--sanguine)}
nav.folios a[aria-current=page]::after{content:"";position:absolute;left:.7rem;right:.7rem;bottom:.1rem;height:1px;background:var(--sanguine)}
.navtoggle{display:none;background:none;border:1px solid var(--rule);color:var(--ink);font:500 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:.55rem .8rem;cursor:pointer}
@media (max-width:1060px){
  .navtoggle{display:block}
  nav.folios{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:0 18px 30px rgba(42,29,19,.12);display:none}
  nav.folios.open{display:block}
  nav.folios ol{flex-direction:column;padding:.6rem clamp(1.1rem,4vw,2.6rem) 1.2rem}
  nav.folios a{display:flex;align-items:baseline;gap:.8rem;padding:.7rem 0;border-bottom:1px dashed var(--rule)}
  nav.folios a[aria-current=page]::after{display:none}
}

/* ---------- type ---------- */
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.04;letter-spacing:-.005em;margin:0 0 .5em}
h1{font-size:clamp(3rem,7.4vw,6.4rem)}
h2{font-size:clamp(2.1rem,4.4vw,3.5rem)}
h3{font-size:1.75rem;font-weight:600}
h1 em,h2 em{font-style:italic;color:var(--sanguine)}
p{margin:0 0 1em}
.eyebrow{font:500 .7rem/1.5 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);display:flex;gap:.8rem;align-items:center;margin-bottom:1.2rem}
.eyebrow::before{content:"";width:34px;height:1px;background:var(--sanguine)}
.lede{font-size:clamp(1.25rem,2vw,1.5rem);line-height:1.5;color:var(--ink-2);max-width:40ch}
.meta{font:500 .7rem/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.drop::first-letter{float:left;font:600 4.6rem/.8 var(--display);color:var(--sanguine);padding:.3rem .5rem 0 0}
.quote{font:italic 500 clamp(1.7rem,3.4vw,2.7rem)/1.22 var(--display);color:var(--ink);margin:0;max-width:26ch}
.quote cite{display:block;margin-top:1rem;font:500 .7rem var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-style:normal}
.btn{display:inline-flex;align-items:center;gap:.7rem;font:500 .74rem var(--mono);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--paper);background:var(--ink);padding:1rem 1.4rem;border:1px solid var(--ink);transition:.25s}
.btn:hover{background:var(--sanguine);border-color:var(--sanguine);color:var(--paper)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:var(--paper)}
.btn .arr{transition:transform .25s}.btn:hover .arr{transform:translateX(4px)}

/* ---------- sections ---------- */
section{padding:clamp(4rem,9vw,7.5rem) 0;position:relative}
section+section{border-top:1px solid var(--rule)}
.pagehead{padding:clamp(3.5rem,8vw,6.5rem) 0 clamp(2.5rem,5vw,4rem)}
.pagehead .grid{display:grid;grid-template-columns:1.25fr .75fr;gap:3rem;align-items:end}
.pagehead .folio-no{font:italic 500 clamp(5rem,12vw,10rem)/.8 var(--display);color:transparent;-webkit-text-stroke:1px var(--gold);text-align:right;user-select:none}
.marg{font:italic 1rem/1.45 var(--display);color:var(--ink-3);border-left:1px solid var(--sanguine);padding-left:1rem;max-width:30ch}
@media (max-width:820px){.pagehead .grid{grid-template-columns:1fr}.pagehead .folio-no{text-align:left}}

/* hero (home) */
.hero{padding:clamp(2.5rem,6vw,5rem) 0 clamp(4rem,8vw,6rem);overflow:hidden}
.hero .grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.hero h1{margin-bottom:.35em}
.hero h1 .line{display:block}
.hero .roles{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.6rem 0 2.2rem;padding:0;list-style:none}
.hero .roles li{font:500 .66rem var(--mono);letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--rule);padding:.45rem .7rem;color:var(--ink-2)}
.hero .ctas{display:flex;gap:.8rem;flex-wrap:wrap}
.portrait{position:relative;margin:0}
.portrait .frame{position:relative;aspect-ratio:706/1100;max-height:640px;margin-left:auto}
.portrait img{width:100%;height:100%;object-fit:cover;filter:sepia(.15) contrast(1.03);box-shadow:0 30px 60px -25px rgba(42,29,19,.45)}
.portrait svg.vitruve{position:absolute;inset:-9%;width:118%;height:118%;pointer-events:none}
.vitruve circle,.vitruve rect,.vitruve line{fill:none;stroke:var(--sanguine);stroke-width:.6;opacity:.75;stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 3.2s .4s cubic-bezier(.6,.1,.2,1) forwards}
.vitruve rect{animation-delay:1.1s}.vitruve line{stroke-width:.35;animation-delay:1.8s}
@keyframes draw{to{stroke-dashoffset:0}}
.portrait figcaption{position:absolute;left:-1.5rem;bottom:2rem;background:var(--paper);padding:.9rem 1.1rem;border:1px solid var(--rule);max-width:230px;box-shadow:0 10px 30px -12px rgba(42,29,19,.3)}
.portrait figcaption b{display:block;font:600 1.1rem/1.2 var(--display)}
.status{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}
.status i{width:8px;height:8px;border-radius:50%;background:#5f7d3a;box-shadow:0 0 0 0 rgba(95,125,58,.6);animation:pulse 2.2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(95,125,58,0)}100%{box-shadow:0 0 0 0 rgba(95,125,58,0)}}
@media (max-width:900px){.hero .grid{grid-template-columns:1fr}.portrait .frame{max-width:420px;margin:2rem auto 0}.portrait figcaption{left:0}}

.ticker{border-block:1px solid var(--rule);overflow:hidden;white-space:nowrap;padding:1rem 0;background:rgba(234,220,193,.45)}
.ticker div{display:inline-block;animation:tick 48s linear infinite;font:italic 500 1.5rem var(--display);color:var(--ink-2)}
.ticker span{margin:0 1.6rem}.ticker .dot{color:var(--sanguine);margin:0}
@keyframes tick{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ticker div,.vitruve *{animation:none;stroke-dashoffset:0}}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--rule)}
.stats div{padding:2rem 1.5rem;border-right:1px solid var(--rule)}
.stats div:last-child{border-right:0}
.stats b{display:block;font:500 clamp(2.4rem,4.5vw,3.6rem)/1 var(--display);color:var(--sanguine)}
.stats span{font:500 .68rem/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
@media (max-width:760px){.stats{grid-template-columns:1fr 1fr}.stats div:nth-child(2){border-right:0}.stats div:nth-child(-n+2){border-bottom:1px solid var(--rule)}}

.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,6rem);align-items:start}
.split.wide-left{grid-template-columns:1.3fr .7fr}
@media (max-width:860px){.split,.split.wide-left{grid-template-columns:1fr}}

/* disciplines (home) */
.disciplines{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:3rem}
.disciplines a{background:var(--paper);padding:2rem 1.6rem 1.8rem;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:.8rem;transition:background .3s}
.disciplines a:hover{background:var(--paper-2)}
.disciplines .thumb{aspect-ratio:4/3;overflow:hidden;background:var(--paper-3)}
.disciplines .thumb img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1);filter:sepia(.1)}
.disciplines a:hover .thumb img{transform:scale(1.05)}
.disciplines h3{margin:.3rem 0 0;font-size:1.65rem}
.disciplines p{color:var(--ink-2);font-size:1.02rem;margin:0}
.disciplines .go{margin-top:auto;font:500 .66rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sanguine)}
@media (max-width:900px){.disciplines{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.disciplines{grid-template-columns:1fr}}

.patrons{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1.2rem 2.2rem;margin-top:2rem}
.patrons span{font:italic 500 clamp(1.3rem,2.2vw,1.8rem) var(--display);color:var(--ink-2)}
.patrons small{display:block;font:500 .6rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-style:normal}

/* ---------- works / case studies ---------- */
.works{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.6rem,3vw,2.6rem)}
.work{grid-column:span 4;margin:0;display:flex;flex-direction:column}
.work.feature{grid-column:span 8}
.work.half{grid-column:span 6}
.work.full{grid-column:1/-1}
.work .plate{position:relative;overflow:hidden;background:var(--paper-3);cursor:zoom-in;border:0;padding:0;display:block;width:100%}
.work .plate img{width:100%;transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
.work .plate:hover img{transform:scale(1.03)}
.work .plate::after{content:"⤢";position:absolute;right:.7rem;top:.6rem;color:var(--paper);background:rgba(42,29,19,.55);width:2rem;height:2rem;display:grid;place-items:center;font-size:1rem;opacity:0;transition:.3s}
.work .plate:hover::after,.work .plate:focus-visible::after{opacity:1}
.work figcaption{padding-top:1rem}
.work .num{font:500 .66rem var(--mono);color:var(--sanguine);letter-spacing:.14em}
.work h3{margin:.25rem 0 .35rem}
.work p{font-size:1.04rem;color:var(--ink-2);margin:.4rem 0 0}
.work dl{display:grid;grid-template-columns:auto 1fr;gap:.2rem .9rem;margin:.8rem 0 0;font:500 .68rem/1.6 var(--mono);letter-spacing:.06em;text-transform:uppercase}
.work dt{color:var(--ink-3)}.work dd{margin:0;color:var(--ink)}
@media (max-width:900px){.work,.work.feature,.work.half{grid-column:span 6}}
@media (max-width:620px){.work,.work.feature,.work.half{grid-column:1/-1}}

/* machines — engineering case studies */
.case{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center;padding:clamp(3rem,6vw,5rem) 0;border-top:1px solid var(--rule)}
.case:first-of-type{border-top:0}
.case:nth-of-type(even) .case-media{order:2}
.case-media{margin:0}
.case-media .plate{cursor:zoom-in;border:0;padding:0;background:#fff8ea;display:block;width:100%;box-shadow:0 25px 50px -30px rgba(42,29,19,.5)}
.case-media figcaption{margin-top:.7rem}
.spec{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--rule);margin:1.5rem 0}
.spec div{padding:.9rem .8rem .9rem 0}
.spec b{display:block;font:600 1.2rem/1.2 var(--display)}
.spec span{font:500 .6rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.badge{display:inline-block;font:500 .62rem var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:.3rem .6rem;border:1px solid currentColor;color:var(--sanguine);margin-bottom:1rem}
.badge.green{color:#56702f}.badge.gold{color:var(--gold)}
.case h3{font-size:clamp(2rem,3.4vw,2.8rem);font-weight:500}
.steps{list-style:none;padding:0;margin:0;counter-reset:s}
.steps li{counter-increment:s;padding:.55rem 0 .55rem 2.6rem;position:relative;border-bottom:1px dashed var(--rule);font-size:1.04rem;color:var(--ink-2)}
.steps li::before{content:counter(s,upper-roman);position:absolute;left:0;top:.6rem;font:600 .9rem var(--display);color:var(--sanguine)}
@media (max-width:860px){.case{grid-template-columns:1fr}.case:nth-of-type(even) .case-media{order:0}}

/* anatomy — research papers */
.papers{display:grid;gap:0}
.paper{display:grid;grid-template-columns:110px 1fr 280px;gap:2rem;padding:2.4rem 0;border-top:1px solid var(--rule);align-items:start}
.paper .yr{font:500 2.4rem/1 var(--display);color:var(--sanguine)}
.paper h3{font-size:1.9rem;margin-bottom:.3rem}
.paper .abs{color:var(--ink-2)}
.paper .plate{cursor:zoom-in;border:0;padding:0;background:none;display:block;width:100%}
.paper .plate img{box-shadow:0 18px 40px -24px rgba(42,29,19,.6)}
.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.8rem}
.tags span{font:500 .6rem var(--mono);letter-spacing:.12em;text-transform:uppercase;background:var(--paper-2);padding:.3rem .55rem;color:var(--ink-2)}
@media (max-width:900px){.paper{grid-template-columns:1fr}.paper .plate{max-width:360px}}

/* codices — journal */
.journal{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.6rem,3vw,2.6rem)}
.entry{background:rgba(255,250,236,.5);border:1px solid var(--rule);padding:0;display:flex;flex-direction:column}
.entry .plate{cursor:zoom-in;border:0;padding:0;background:var(--paper-3);display:block;width:100%;aspect-ratio:16/10;overflow:hidden}
.entry .plate img{width:100%;height:100%;object-fit:cover}
.entry .body{padding:1.6rem 1.7rem 1.8rem}
.entry h3{font-size:1.8rem;margin:.4rem 0 .6rem}
.entry .note{font:italic 1.12rem/1.5 var(--display);color:var(--ink-2);border-left:2px solid var(--sanguine);padding-left:1rem;margin:1rem 0 0;transition:transform .7s cubic-bezier(.6,.1,.2,1)}
body.specchio .note{transform:scaleX(-1)}
.mirrorbar{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;border:1px solid var(--rule);padding:1rem 1.3rem;margin-bottom:2.5rem;background:rgba(234,220,193,.45)}
.mirrorbar p{margin:0;font-size:1.02rem;color:var(--ink-2)}
.mirrorbar button{font:500 .7rem var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:.75rem 1.1rem;background:var(--ink);color:var(--paper);border:0;cursor:pointer}
.mirrorbar button[aria-pressed=true]{background:var(--sanguine)}
@media (max-width:760px){.journal{grid-template-columns:1fr}}

/* vita — CV */
.letter{background:#fbf4e4;border:1px solid var(--rule);padding:clamp(1.8rem,4vw,3.2rem);box-shadow:0 30px 60px -40px rgba(42,29,19,.5);position:relative}
.letter::before{content:"";position:absolute;inset:10px;border:1px solid rgba(168,131,74,.35);pointer-events:none}
.letter ol{padding-left:1.4rem;margin:1rem 0}
.letter li{margin:.35rem 0;color:var(--ink-2)}
.letter li::marker{color:var(--sanguine);font-family:var(--display);font-weight:600}
.timeline{list-style:none;margin:2rem 0 0;padding:0;position:relative}
.timeline::before{content:"";position:absolute;left:124px;top:0;bottom:0;width:1px;background:var(--rule)}
.timeline li{display:grid;grid-template-columns:124px 1fr;gap:2rem;padding:1.3rem 0}
.timeline .when{font:500 1.5rem/1.2 var(--display);color:var(--sanguine);text-align:right;padding-right:1.1rem;white-space:nowrap}
.timeline .what{position:relative}
.timeline .what::before{content:"";position:absolute;left:-2.33rem;top:.55rem;width:9px;height:9px;border-radius:50%;background:var(--paper);border:1px solid var(--sanguine)}
.timeline h3{font-size:1.45rem;margin:0 0 .2rem}
.timeline .where{font:500 .64rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.timeline p{margin:.4rem 0 0;color:var(--ink-2);font-size:1.04rem}
.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:.2rem 2rem;margin-top:1.5rem}
.skill{padding:.7rem 0;border-bottom:1px solid var(--rule)}
.skill div{display:flex;justify-content:space-between;font-size:1.02rem}
.skill .bar{height:2px;background:var(--paper-3);margin-top:.45rem;position:relative}
.skill .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--sanguine)}
@media (max-width:640px){.skills{grid-template-columns:1fr}.timeline::before{left:84px}.timeline li{grid-template-columns:84px 1fr;gap:1.4rem}.timeline .what::before{left:-1.8rem}.timeline .when{font-size:1.05rem;padding-right:.8rem}}

/* commissioni */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
.tier{background:var(--paper);padding:2.2rem 1.8rem;display:flex;flex-direction:column}
.tier.hl{background:#fbf4e4}
.tier h3{font-size:1.9rem;margin-bottom:.2rem}
.tier .price{font:500 .7rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sanguine);margin-bottom:1rem}
.tier ul{list-style:none;padding:0;margin:0 0 1.2rem}
.tier li{padding:.45rem 0;border-bottom:1px dashed var(--rule);font-size:1.02rem;color:var(--ink-2)}
.tier li::before{content:"✦";color:var(--gold);margin-right:.6rem;font-size:.75rem}
.tier .eta{margin-top:auto;font:italic 1.05rem var(--display);color:var(--ink-3)}
@media (max-width:900px){.tiers{grid-template-columns:1fr}}
form.missive{display:grid;gap:1.1rem}
.field label{display:block;font:500 .66rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.4rem}
.field input,.field select,.field textarea{width:100%;font:400 1.12rem var(--body);color:var(--ink);background:rgba(255,250,236,.65);border:0;border-bottom:1px solid var(--ink-3);padding:.7rem .2rem;border-radius:0;appearance:none}
.field select{background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px;background-repeat:no-repeat}
.field textarea{min-height:150px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-bottom-color:var(--sanguine);background:#fffaf0}
.two{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
@media (max-width:600px){.two{grid-template-columns:1fr}}
.sealed{display:none;text-align:center;padding:2.5rem 1.5rem;border:1px solid var(--rule);background:#fbf4e4}
.sealed.show{display:block;animation:fade .8s ease}
.seal{width:84px;height:84px;margin:0 auto 1.2rem;border-radius:50%;background:radial-gradient(circle at 35% 30%,#c4623f,#8a2f1b 70%);display:grid;place-items:center;color:#f7e3c8;font:italic 600 2.2rem var(--display);box-shadow:inset 0 -4px 10px rgba(0,0,0,.25),0 8px 18px -6px rgba(138,47,27,.6)}
@keyframes fade{from{opacity:0;transform:translateY(10px)}}
.fineprint{font-size:.95rem;color:var(--ink-3)}

/* sources */
.sources{width:100%;border-collapse:collapse;font-size:1rem}
.sources th{text-align:left;font:500 .64rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding:.8rem .6rem;border-bottom:1px solid var(--ink-3)}
.sources td{padding:.8rem .6rem;border-bottom:1px solid var(--rule);vertical-align:middle}
.sources img{width:56px;height:56px;object-fit:cover}
.sources td:nth-child(3){word-break:break-word}

/* ---------- page turn + footer ---------- */
.turn{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.turn a{padding:2.4rem clamp(1.1rem,4vw,2.6rem);text-decoration:none;color:var(--ink);display:block;transition:background .3s}
.turn a:hover{background:var(--paper-2)}
.turn a+a{border-left:1px solid var(--rule);text-align:right}
.turn small{display:block;font:500 .64rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.turn b{display:block;font:500 clamp(1.6rem,3vw,2.4rem)/1.1 var(--display);margin-top:.3rem}
.turn b em{color:var(--sanguine)}
footer.colophon{padding:3.5rem 0 2.5rem;font-size:.98rem;color:var(--ink-3)}
footer.colophon .grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2rem}
footer.colophon h4{font:500 .64rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin:0 0 .8rem}
footer.colophon ul{list-style:none;margin:0;padding:0}
footer.colophon li{margin:.25rem 0}
footer.colophon a{color:var(--ink-2);text-decoration:none}
footer.colophon a:hover{color:var(--sanguine)}
footer.colophon .motto{font:italic 1.5rem/1.3 var(--display);color:var(--ink-2);max-width:24ch}
footer.colophon .base{margin-top:2.5rem;padding-top:1.3rem;border-top:1px solid var(--rule);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font:500 .62rem var(--mono);letter-spacing:.14em;text-transform:uppercase}
@media (max-width:760px){footer.colophon .grid{grid-template-columns:1fr}.turn{grid-template-columns:1fr}.turn a+a{border-left:0;border-top:1px solid var(--rule);text-align:left}}

/* lightbox */
dialog.lightbox{border:0;padding:0;background:transparent;max-width:min(94vw,1400px);max-height:94vh;overflow:visible}
dialog.lightbox::backdrop{background:rgba(28,19,12,.88);backdrop-filter:blur(3px)}
dialog.lightbox img{max-width:min(94vw,1400px);max-height:82vh;width:auto;margin:0 auto;box-shadow:0 30px 80px rgba(0,0,0,.5)}
dialog.lightbox p{color:#efe2c9;text-align:center;font:italic 1.2rem var(--display);margin:1rem 0 0}
dialog.lightbox button{position:fixed;top:1rem;right:1.2rem;background:none;border:1px solid rgba(239,226,201,.4);color:#efe2c9;font:500 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:.6rem .9rem;cursor:pointer}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}
.noscript .rv{opacity:1;transform:none}
