:root{
--bg:#F5F1EB;--band:#EBE6DC;--ink:#1F211F;--accent:#BA5C3B;--accentDark:#E4A184;--body:#525950;--meta:#6C716A;--line:#D0CEC8;--onAccent:#F5F1EB;
--fd:'Playfair Display',serif;--fs:Inter,sans-serif;--feb:Inter,sans-serif;--fnum:'Playfair Display',serif;--fct:var(--fd);
--hw:400;--hl:1.04;--hls:-0.025em;--ht:none;--hi:normal;--ebl:.16em;--ebs:11px;--ebw:700;--ebt:uppercase;--ctw:400;--cts:19px;--nw:400;--ps:17px;--navw:600;--navt:none;--navl:0;--bw:600;--bs:14px;--btt:none;--btl:0;
--r:0px;--rs:0px;--btnr:0px;--pillr:0px;--cbw:1px;--csh:none;--bsh:none;--cardfill:transparent;--panelfill:#fff;
--gap:26px;--sy:104px;--gutter:56px;--bp:15px 22px;
--ease:cubic-bezier(.2,0,.2,1);--dur:180ms;--lift:0px;--shHover:none;--revY:16px;--revDur:620ms;--revEase:cubic-bezier(.16,1,.3,1);--nudge:3px;--press:1;
}
*{box-sizing:border-box}
/* hidden-by-default only once JS confirms it can reveal; without .anim-ready everything paints */
.anim-ready .rev{opacity:0;transform:translateY(var(--revY)) scale(var(--revScale,1));filter:blur(var(--revBlur,0px));transition:opacity var(--revDur) var(--revEase),transform var(--revDur) var(--revEase),filter var(--revDur) var(--revEase)}
.anim-ready .rev.in{opacity:1;transform:none;filter:none}
body.nomo .rev{opacity:1;transform:none;transition:none}
body.nomo *{animation:none!important}

/* ---------- shared primitives ---------- */
.sec{padding:var(--sy) var(--gutter);transition:background var(--dur) var(--ease);position:relative}
.sec.band{background:var(--band)}
.sec.ink{background:var(--ink);color:var(--bg)}
.sec.accent{background:var(--accent);color:var(--onAccent)}
.sec.tight{padding-top:calc(var(--sy) * .55);padding-bottom:calc(var(--sy) * .55)}
.wrap{max-width:1180px;margin:0 auto}
.hcol{display:flex;flex-direction:column;gap:22px;align-items:flex-start;min-width:0}
.wrap{min-width:0}
.eb{font-family:var(--feb);font-size:var(--ebs);font-weight:var(--ebw);letter-spacing:var(--ebl);text-transform:var(--ebt);color:var(--accent)}
.sec.ink .eb,.sec.accent .eb{color:var(--accentDark)}
.sec.accent .eb{color:var(--onAccent);opacity:.72}
h1.t{margin:0;font-family:var(--fd);font-weight:var(--hw);font-size:clamp(38px,4.4vw,60px);line-height:var(--hl);letter-spacing:var(--hls);text-transform:var(--ht);max-width:20ch}
h2.t{margin:0;font-family:var(--fd);font-weight:var(--hw);font-size:clamp(28px,3vw,42px);line-height:calc(var(--hl) + .05);letter-spacing:var(--hls);text-transform:var(--ht);max-width:24ch}
h3.t{margin:0;font-family:var(--fct);font-weight:var(--ctw);font-size:var(--cts);line-height:1.25;letter-spacing:-0.01em}
h4.t{margin:0;font-family:var(--fct);font-weight:var(--ctw);font-size:calc(var(--cts) * .82);line-height:1.3}
em.a{font-style:var(--hi);color:var(--accent)}
p.b{margin:0;font-size:var(--ps);line-height:1.62;color:var(--body);max-width:52ch}
p.sm{font-size:14px;line-height:1.6;color:var(--body);margin:0}
.sec.ink p.b,.sec.ink p.sm{color:var(--accentDark)}
.sec.accent p.b,.sec.accent p.sm{color:var(--onAccent);opacity:.86}
.num{font-family:var(--feb);font-size:10px;font-weight:700;letter-spacing:.14em;color:var(--accent)}
.rule{height:1px;background:var(--line);border:0;margin:0}
.center{align-items:center;text-align:center}
.center p.b{margin-inline:auto}
.center h1.t,.center h2.t{margin-inline:auto}

/* buttons */
.btn{font-family:var(--fs);font-weight:var(--bw);font-size:var(--bs);padding:var(--bp);border-radius:var(--btnr);display:inline-flex;gap:9px;align-items:center;text-transform:var(--btt);letter-spacing:var(--btl);white-space:nowrap;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.btn .ar{display:inline-block;transition:transform var(--dur) var(--ease)}
.btn:hover .ar{transform:translate(var(--nudge),calc(var(--nudge) * -1))}
.btn:active{transform:scale(var(--press))}
.btn.p{background:var(--accent);color:var(--onAccent);box-shadow:var(--bsh)}
.btn.p:hover{background:color-mix(in srgb,var(--accent) 86%,#000);box-shadow:var(--shHover),var(--bsh);transform:translateY(calc(var(--lift) * -1))}
.btn.s{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.s:hover{border-color:var(--ink)}
.sec.ink .btn.s,.sec.accent .btn.s{color:var(--bg);border-color:color-mix(in srgb,var(--bg) 40%,transparent)}
.sec.ink .btn.s:hover{border-color:var(--bg)}
.sec.accent .btn.p{background:var(--bg);color:var(--ink)}
.btn.d{background:var(--ink);color:var(--bg)}
.btn.d:hover{background:color-mix(in srgb,var(--ink) 84%,var(--accent))}
.btn.sm{padding:10px 15px;font-size:12.5px}
.btns{display:flex;gap:12px;flex-wrap:wrap;align-items:center}

/* pill / tag */
.pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--pillr);padding:6px 12px;font-size:11.5px;font-weight:600;color:var(--body);background:var(--panelfill);transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.pill:hover{border-color:var(--accent);transform:translateY(-1px)}
.pill .dot{width:6px;height:6px;border-radius:999px;background:var(--accent);animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}

/* card */
.card{background:var(--cardfill);border:var(--cbw) solid var(--line);border-radius:var(--r);box-shadow:var(--csh);padding:24px;display:flex;flex-direction:column;gap:10px;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease)}
.card:hover{transform:translateY(calc(var(--lift) * -1));box-shadow:var(--shHover),var(--csh);border-color:var(--accent)}
.sec.ink .card{background:color-mix(in srgb,var(--bg) 7%,transparent);border-color:color-mix(in srgb,var(--bg) 18%,transparent)}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap)}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap)}
.g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap)}
.split{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);gap:56px;align-items:center}
.split.rev2{grid-template-columns:minmax(0,1fr) minmax(0,1.02fr)}
.bars{display:flex;gap:4px;align-items:flex-end;height:26px;padding-top:4px}
.bars i{flex:1;background:var(--line);display:block;transition:height 520ms var(--revEase),background var(--dur)}
.card:hover .bars i{background:var(--accent)}

/* stats */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid currentColor;padding-top:16px;gap:18px}
.st i{font-style:normal;display:block;font-family:var(--feb);font-size:9.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.72;padding-bottom:8px}
.st u{text-decoration:none;font-family:var(--fnum);font-weight:var(--nw);font-size:clamp(26px,2.5vw,38px);line-height:1;display:block}

/* image slot frame */
.imgf{position:relative;border-radius:var(--r);overflow:hidden;border:var(--cbw) solid var(--line);box-shadow:var(--csh);transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.imgf:hover{box-shadow:var(--shHover),var(--csh);transform:translateY(calc(var(--lift) * -1))}
.imgf.r16{aspect-ratio:16/10}
.imgf.r11{aspect-ratio:1/1}
.imgf.r43{aspect-ratio:4/3}
.imgf.tall{aspect-ratio:3/4}
