:root{
  --ink:#0A0A0B;
  --paper:#FFFFFF;
  --bone:#F4F2EC;
  --warmgray:#D7D2C4;
  --n100:#F4F5F7;
  --n200:#E4E6EA;
  --n300:#C9CDD4;
  --n400:#9AA0AB;
  --n500:#6B7280;
  --n600:#454A53;
  --n700:#2A2D33;
  --violet:#5A1FD6;
  --on-violet:#FFFFFF;
  --cobalt:#1B3CDE;
  --on-cobalt:#FFFFFF;
  --coral:#FF4A1C;
  --on-coral:#0A0A0B;
  --marigold:#FFB400;
  --on-marigold:#0A0A0B;
  --acid:#CBF24A;
  --on-acid:#0A0A0B;
  --rubik:Rubik,system-ui,sans-serif;
  --serif:'Literata', Georgia, serif;
  --fs-wordmark:clamp(3.25rem, 17vw, 8rem);
  --fs-display:clamp(2.5rem, 12vw, 5.5rem);
  --fs-h1:clamp(2rem, 8.5vw, 3.25rem);
  --fs-h2:clamp(1.55rem, 6vw, 2.25rem);
  --fs-h3:clamp(1.25rem, 4.5vw, 1.6rem);
  --fs-lead:clamp(1.2rem, 4.2vw, 1.45rem);
  --fs-body:clamp(1.0625rem, 1rem + 0.4vw, 1.1875rem);
  --fs-small:0.9375rem;
  --fs-label:0.8rem;
  --rule-hairline:1px;
  --rule-rule:2px;
  --rule-bold:4px;
  --rule-heavy:8px;
  --space-1:0.25rem;
  --space-2:0.5rem;
  --space-3:0.75rem;
  --space-4:1rem;
  --space-6:1.5rem;
  --space-8:2rem;
  --space-12:3rem;
  --space-16:4rem;
  --space-24:6rem;
  --space-32:8rem;
  --space-wordmark-clearspace:clamp(1rem, 4vw, 3rem);
  --radius-none:0;
  --radius-sm:2px;
  --radius-md:6px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--serif);
  line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:680px;margin:0 auto;padding:0 22px 64px}
/* the frame asserts: a heavy ink bar + the wordmark; the content rests (P1) */
.frame{height:8px;background:var(--ink)}
header.site{padding:26px 22px 18px;max-width:680px;margin:0 auto}
.wordmark{font-family:var(--rubik);font-weight:800;letter-spacing:-.03em;line-height:.88;
  font-size:var(--fs-wordmark);color:var(--ink);text-decoration:none;display:inline-block}
header.site .locator{font-family:var(--rubik);font-weight:700;font-size:.8rem;
  letter-spacing:.12em;text-transform:uppercase;color:var(--n500);margin-top:10px}
.section-rule{border:0;border-top:8px solid var(--ink);margin:30px 0 0}
/* index listing card */
.card{padding-top:14px;margin-top:26px;border-top:4px solid var(--ink)}
.card a.name{font-family:var(--rubik);font-weight:700;font-size:var(--fs-h3);
  letter-spacing:-.01em;line-height:1.1;text-decoration:none;display:block}
.card a.name:hover{text-decoration:underline;text-underline-offset:3px}
.kind{font-family:var(--rubik);font-weight:700;font-size:.74rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--n500);margin:8px 0 8px}
.listing{font-family:var(--serif);font-size:var(--fs-body);color:#1a1a1c}
.more{font-family:var(--rubik);font-weight:600;font-size:.82rem;letter-spacing:.02em;
  color:var(--n600);text-decoration:none;display:inline-block;margin-top:10px}
.more:hover{color:var(--ink)}
/* detail page */
main.detail{padding-top:8px}
.detail h1{font-family:var(--rubik);font-weight:800;font-size:var(--fs-h1);
  letter-spacing:-.02em;line-height:1.0;margin-top:18px}
.detail .summary{font-family:var(--serif);font-style:italic;font-size:1.02rem;line-height:1.4;
  margin-top:14px;color:var(--n600)}
.detail .listing{font-size:var(--fs-lead);line-height:1.45;margin-top:16px;color:#26262a}
.facts{margin-top:26px;border-top:2px solid var(--n200);padding-top:16px}
.facts dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px}
.facts dt{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--n500);padding-top:3px}
.facts dd{font-family:var(--serif);font-size:.95rem;color:#1a1a1c}
.facts a{color:var(--n700);text-underline-offset:2px}
.back{font-family:var(--rubik);font-weight:600;font-size:.82rem;letter-spacing:.02em;
  color:var(--n500);text-decoration:none;display:inline-block;margin-top:36px}
.back:hover{color:var(--ink)}
footer{margin-top:48px;font-family:var(--rubik);font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--n400)}


/* === Homepage v2.0 — faithful to the Claude Design export (design/claude-design-export) === */
.hp{max-width:1240px;margin:0 auto;padding:0 32px 0;font-family:var(--rubik)}
.hp ::selection{background:var(--violet);color:#fff}
.hp a{color:inherit;text-decoration:none}
/* image placeholder — neutral diagonal hatch until photography lands (never the brand colour) */
.hp-shot{position:relative;overflow:hidden;background:var(--n200);
  background-image:repeating-linear-gradient(135deg,#DDE0E6 0 16px,#E9EBEF 16px 32px);transition:filter .25s ease}
a:hover>.hp-shot,a:hover .hp-shot{filter:brightness(.95)}
.hp-shot .cap{position:absolute;bottom:8px;right:8px;font-family:ui-monospace,Menlo,monospace;
  font-size:10px;color:var(--n500);background:rgba(255,255,255,.86);padding:2px 6px}
.hp-shot .flag{position:absolute;top:0;left:0;font-family:var(--rubik);font-weight:700;font-size:.78rem;
  letter-spacing:.13em;text-transform:uppercase;color:var(--on-coral);background:var(--coral);padding:8px 12px;white-space:nowrap}
/* masthead — the sticky band (CD "Masthead 3a", export 2026-08-04; supersedes the two-row
   2026-06-23 masthead). Wordmark + inline uppercase wayfinding + the subscribe CTA on ONE 84px
   line, riding over the heavy ink rule. Below 820px the nav and the CTA drop out and a Menu button
   opens the full-screen ink panel. Panel dividers resolve to --n700: the export hard-coded #24262B
   and #2A2D33 for them, a 12-distance near-miss pair, reconciled to the one token rather than
   minting a value (design-intake 2026-08-04). */
.hp-mast{position:sticky;top:0;z-index:20;background:var(--paper)}
/* Sticky holds only inside the scrolling ancestor. The homepage/listings wrap the WHOLE page in
   one .hp, so .hp-mast sticks there; a node or event page gives the masthead its own short .hp,
   which would scroll away with it — so that wrapper carries .hp-stick and does the sticking. */
.hp-stick{position:sticky;top:0;z-index:20;background:var(--paper)}
.hp-mast .band{height:84px;display:flex;align-items:center;gap:34px}
.hp-wm{font-family:var(--rubik);font-weight:800;font-size:3.6rem;
  letter-spacing:-.03em;line-height:.88;color:var(--ink)}
.hp-nav{display:flex;align-items:center;gap:26px;padding-top:8px}
.hp-nav a{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ink);padding-bottom:3px;border-bottom:3px solid transparent}
.hp-nav a:hover{border-bottom-color:var(--n300)}
.hp-nav a.active{border-bottom-color:var(--coral)}
.hp-sub{margin-left:auto;font-family:var(--rubik);font-weight:700;font-size:.74rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink);white-space:nowrap;
  border-bottom:2px solid var(--coral);padding-bottom:2px}
.hp-rule{height:var(--rule-heavy);background:var(--ink)}
/* the phone affordance — the 44px tap target, hidden wherever the inline nav fits */
.hp-menu{display:none;margin-left:auto;border:2px solid var(--ink);background:none;color:var(--ink);
  font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;padding:0 14px;min-height:44px;align-items:center;cursor:pointer}
/* the full-screen ink panel the Menu button opens — the doors as colour-chipped rows */
.hp-panel{position:fixed;inset:0;z-index:30;background:var(--ink);overflow-y:auto}
.hp-panel[hidden]{display:none}
.hp-noscroll{overflow:hidden}
.hp-panel .ptop{height:64px;padding:0 var(--space-4);display:flex;align-items:center;
  justify-content:space-between;border-bottom:1px solid var(--n700)}
.hp-panel .pwm{font-family:var(--rubik);font-weight:800;font-size:1.6rem;
  letter-spacing:-.03em;color:var(--paper)}
.hp-panel .pclose{border:2px solid var(--paper);background:none;color:var(--paper);
  font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;padding:0 14px;min-height:44px;display:flex;align-items:center;cursor:pointer}
.hp-panel .prow{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:15px 20px;border-bottom:1px solid var(--n700)}
.hp-panel .prow .lbl{display:flex;align-items:center;gap:12px}
.hp-panel .prow .chip{width:12px;height:12px;flex:none;background:var(--n700)}
.hp-panel .prow .chip.violet{background:var(--violet)}
.hp-panel .prow .chip.cobalt{background:var(--cobalt)}
.hp-panel .prow .chip.marigold{background:var(--marigold)}
.hp-panel .prow .chip.acid{background:var(--acid)}
.hp-panel .prow .chip.coral{background:var(--coral)}
.hp-panel .prow .name{font-family:var(--rubik);font-weight:800;font-size:1.5rem;
  letter-spacing:-.015em;color:var(--paper)}
.hp-panel .prow.sec .name{font-weight:700;font-size:1.1rem;letter-spacing:-.01em;color:var(--n300)}
.hp-panel .prow .idx{font-family:var(--rubik);font-weight:600;font-size:.68rem;
  letter-spacing:.1em;color:var(--n400)}
.hp-panel .psub{display:block;margin:18px 20px;background:var(--acid);color:var(--on-acid);
  font-family:var(--rubik);font-weight:800;font-size:.85rem;letter-spacing:.06em;
  text-transform:uppercase;text-align:center;padding:16px}
@media (max-width:820px){
  .hp-mast .band{height:64px;gap:16px;justify-content:space-between}
  .hp-wm{font-size:2.2rem}
  .hp-nav,.hp-sub{display:none}
  .hp-menu{display:flex}
}
/* section header — eyebrow + title + optional see-all */
.hp-sec{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin:clamp(64px,9vw,120px) 0 44px}
.hp-sec.solo{display:block}
.hp-sec .eyebrow{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--n500);margin-bottom:18px}
.hp-sec .h2{font-family:var(--rubik);font-weight:800;font-size:clamp(2.1rem,4.6vw,3.5rem);
  letter-spacing:-.032em;line-height:.94;color:var(--ink)}
.hp-sec .all{font-family:var(--rubik);font-weight:600;font-size:.9rem;color:var(--ink);
  border-bottom:2px solid var(--ink);padding-bottom:2px;white-space:nowrap;align-self:flex-end}
/* editorial hero (the lead pick) */
.hp-hero{display:grid;grid-template-columns:5fr 7fr;gap:clamp(24px,3.4vw,48px);align-items:center;
  margin-top:clamp(34px,4vw,56px)}
.hp-hero .eyebrow{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--n500);margin-bottom:20px}
.hp-hero h1{margin:0;font-family:var(--rubik);font-weight:800;font-size:clamp(2.2rem,4vw,3.5rem);
  letter-spacing:-.032em;line-height:.95;color:var(--ink);text-wrap:balance}
.hp-hero .dek{margin:22px 0 0;max-width:46ch;font-family:var(--serif);font-size:clamp(1.1rem,1.5vw,1.32rem);
  line-height:1.5;color:var(--n700)}
.hp-hero .more{display:inline-block;margin-top:24px;font-family:var(--rubik);font-weight:600;
  font-size:.9rem;color:var(--ink);border-bottom:2px solid var(--ink);padding-bottom:2px}
.hp-hero .hp-shot{aspect-ratio:3/2}
/* portal grid */
.hp-portals{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:20px}
.hp-portal{position:relative;min-height:210px;display:flex;flex-direction:column;
  justify-content:flex-start;padding:24px}
.hp-portal .lab{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;opacity:.85}
.hp-portal .nm{font-family:var(--rubik);font-weight:800;font-size:1.7rem;
  letter-spacing:-.025em;line-height:.98;margin-top:12px}
.hp-portal .line{font-family:var(--serif);font-size:1rem;line-height:1.35;opacity:.9;margin-top:10px}
.hp-portal .enter{font-family:var(--rubik);font-weight:700;font-size:.9rem;
  margin-top:auto;padding-top:22px;align-self:flex-start}
/* worth the trip — lead + supporting stack */
.hp-worth{display:grid;grid-template-columns:1.32fr 1fr;gap:clamp(28px,4vw,52px);align-items:start}
.hp-lead .hp-shot{aspect-ratio:4/3}
.hp-lead .kind{font-family:var(--rubik);font-weight:600;font-size:.8rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--n500);margin-top:18px}
.hp-lead .nm{font-family:var(--rubik);font-weight:800;font-size:clamp(1.8rem,3vw,2.7rem);
  letter-spacing:-.026em;line-height:1;color:var(--ink);margin-top:8px;display:block}
.hp-lead .take{font-family:var(--serif);font-size:clamp(1.08rem,1.5vw,1.32rem);line-height:1.42;
  color:var(--n700);margin-top:13px;max-width:540px}
.hp-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.hp-tag{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.05em;
  text-transform:uppercase;color:var(--n600);border:1.5px solid var(--warmgray);padding:5px 9px}
.hp-stack{display:flex;flex-direction:column;gap:26px}
.hp-stackitem{display:flex;gap:18px;align-items:flex-start}
.hp-stackitem .hp-shot{flex:none;width:130px;aspect-ratio:4/3}
.hp-stackitem .body{min-width:0}
.hp-stackitem .kind{font-family:var(--rubik);font-weight:600;font-size:.7rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--n500)}
.hp-stackitem .nm{font-family:var(--rubik);font-weight:700;font-size:1.22rem;letter-spacing:-.012em;
  line-height:1.06;color:var(--ink);margin-top:5px;display:block}
.hp-stackitem .take{font-family:var(--serif);font-size:.96rem;line-height:1.38;color:var(--n600);margin-top:6px}
/* guide rail — three vertical cards */
.hp-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.hp-guide .hp-shot{aspect-ratio:16/10}
.hp-guide .kind{font-family:var(--rubik);font-weight:600;font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--n500);margin-top:13px}
.hp-guide .nm{font-family:var(--rubik);font-weight:700;font-size:1.3rem;letter-spacing:-.012em;
  line-height:1.1;color:var(--ink);margin-top:6px;display:block}
.hp-guide .take{font-family:var(--serif);font-size:1rem;line-height:1.45;color:var(--n600);margin-top:8px}
/* by-place area modules — thumbnail rows */
.hp-areas{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.hp-area .head{display:flex;align-items:baseline;justify-content:space-between;
  padding-bottom:14px;border-bottom:2px solid var(--ink);margin-bottom:6px}
.hp-area .town{font-family:var(--rubik);font-weight:800;font-size:1.5rem;letter-spacing:-.02em;color:var(--ink)}
.hp-area .meta{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--n400)}
.hp-arow{display:flex;gap:14px;align-items:center;padding:11px 0}
.hp-arow .thumb{flex:none;width:66px;height:66px}
.hp-arow .k{font-family:var(--rubik);font-weight:600;font-size:.7rem;letter-spacing:.07em;
  text-transform:uppercase;color:var(--n400)}
.hp-arow .n{font-family:var(--rubik);font-weight:700;font-size:1.05rem;letter-spacing:-.01em;
  line-height:1.15;color:var(--ink);margin-top:3px}
.hp-arow:hover .n{text-decoration:underline;text-underline-offset:2px}
/* what's on — date-led event cards (text-led, bone tile; CD homepage export 2026-06-23) */
.hp-events{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:24px}
.hp-ev{background:var(--bone);padding:18px;display:block}
.hp-ev .date{display:flex;align-items:flex-end;gap:8px}
.hp-ev .day{font-family:var(--rubik);font-weight:800;font-size:2.7rem;letter-spacing:-.04em;
  line-height:.86;color:var(--ink)}
.hp-ev .mon{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--n500);padding-bottom:4px}
.hp-ev .nm{font-family:var(--rubik);font-weight:700;font-size:1.2rem;letter-spacing:-.015em;
  line-height:1.08;color:var(--ink);display:block;margin-top:16px}
.hp-ev .venue{font-family:var(--rubik);font-weight:600;font-size:.74rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--n500);margin-top:6px}
/* latest stories */
.hp-stories{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
.hp-story .hp-shot{aspect-ratio:16/9;margin-bottom:15px}
.hp-story .section{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--n500)}
.hp-story h3{margin:7px 0 0;font-family:var(--rubik);font-weight:700;font-size:1.4rem;
  letter-spacing:-.014em;line-height:1.08;color:var(--ink)}
.hp-story .dek{margin:9px 0 0;font-family:var(--serif);font-size:1rem;line-height:1.46;color:var(--n600)}
.hp-story .by{font-family:var(--rubik);font-weight:600;font-size:.78rem;letter-spacing:.02em;
  color:var(--n400);margin-top:12px}
/* the Standard band — solid ink ground, two columns */
.hp-standard{margin:clamp(64px,9vw,120px) -28px 0}
.hp-standard .band{background:var(--ink);padding:clamp(36px,6vw,72px)}
.hp-standard .in{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:center;max-width:1344px;margin:0 auto}
.hp-standard .eyebrow{font-family:var(--rubik);font-weight:700;font-size:.8rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--paper);opacity:.9;margin-bottom:18px}
.hp-standard h2{margin:0;font-family:var(--rubik);font-weight:800;font-size:clamp(1.8rem,3.6vw,2.6rem);
  letter-spacing:-.02em;line-height:1;color:var(--paper)}
.hp-standard .dek{margin:18px 0 0;font-family:var(--serif);font-size:clamp(1.02rem,1.4vw,1.18rem);
  line-height:1.5;color:var(--paper);opacity:.94;max-width:520px}
.hp-signup{background:var(--paper);padding:clamp(22px,3vw,32px)}
.hp-signup .t{font-family:var(--rubik);font-weight:700;font-size:1.15rem;color:var(--ink);margin-bottom:6px}
.hp-signup .s{font-family:var(--serif);font-size:.95rem;color:var(--n500);margin-bottom:18px}
.hp-signup .f{display:flex;border:2px solid var(--ink)}
.hp-signup input{flex:1;min-width:0;border:none;outline:none;font-family:var(--serif);
  font-size:.98rem;color:var(--ink);padding:13px 14px;background:var(--paper)}
.hp-signup .btn{border:none;cursor:pointer;font-family:var(--rubik);font-weight:700;font-size:.82rem;
  letter-spacing:.04em;text-transform:uppercase;color:var(--paper);background:var(--ink);padding:0 20px}
/* footer — ink ground, full wayfinding */
.hp-foot{background:var(--ink);color:var(--paper);margin:0 -32px 0}
.hp-foot .in{max-width:1240px;margin:0 auto;padding:56px 32px}
.hp-foot .cols{display:grid;grid-template-columns:1fr auto auto;gap:56px;align-items:start}
.hp-foot .bwm{font-family:var(--rubik);font-weight:800;font-size:2.4rem;letter-spacing:-.04em;color:var(--paper);line-height:1}
.hp-foot .tag{font-family:var(--serif);font-size:1.05rem;color:var(--n400);
  margin-top:14px;max-width:260px;line-height:1.5}
.hp-foot .ch{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--n500);margin-bottom:14px}
.hp-foot .col a{display:block;font-family:var(--rubik);font-weight:500;font-size:.9rem;color:var(--n200);margin-bottom:10px;white-space:nowrap}
.hp-foot .col a:hover{color:var(--paper)}
.hp-foot .base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-top:40px;
  padding-top:18px;border-top:2px solid var(--n700);font-family:var(--rubik);font-weight:500;
  font-size:.74rem;letter-spacing:.04em;color:var(--n500)}
/* === Homepage IA v2.1 — CD homepage export 2026-06-23: the numbered editorial run === */
/* numbered section header: a big gray numeral + label + subtitle, with an ink rule beneath */
.hp-sec{margin:clamp(56px,8vw,96px) 0 0}
.hp-sec .lead{display:flex;gap:24px;align-items:flex-end}
.hp-sec .num{font-family:var(--rubik);font-weight:800;font-size:clamp(3rem,7vw,5.5rem);
  letter-spacing:-.04em;line-height:.8;color:var(--n300)}
.hp-sec .eyebrow{font-family:var(--rubik);font-weight:600;font-size:.8rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--n500)}
.hp-sec .h2{font-family:var(--rubik);font-weight:800;font-size:clamp(1.7rem,4.5vw,2.6rem);
  letter-spacing:-.025em;line-height:1;color:var(--ink);margin-top:6px}
.hp-sec .all{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.02em;color:var(--ink);
  border-bottom:2px solid var(--ink);padding-bottom:2px;white-space:nowrap;align-self:flex-end}
.hp-secrule{height:3px;background:var(--ink);margin-top:18px}
/* The Lead — standfirst cover hero (no node behind it) */
.hp-cover{margin-top:clamp(28px,4vw,40px)}
.hp-cover .head{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.hp-cover .eyebrow{font-family:var(--rubik);font-weight:600;font-size:.82rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--n500)}
.hp-cover .status{display:inline-flex;align-items:center;gap:9px;font-family:var(--rubik);
  font-weight:600;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--n600)}
.hp-cover .status .dot{width:10px;height:10px;background:var(--acid);border-radius:50%;flex:none}
.hp-cover .display{margin:18px 0 0;font-family:var(--rubik);font-weight:800;
  font-size:clamp(3.25rem,12.5vw,9.5rem);letter-spacing:-.045em;line-height:.82;color:var(--ink);text-wrap:balance}
.hp-cover .hp-secrule{margin-top:32px}
.hp-cover .grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;padding-top:26px}
.hp-cover .standfirst{font-family:var(--serif);font-size:clamp(1.2rem,1.7vw,1.5rem);
  line-height:1.4;color:var(--n700);max-width:46ch}
.hp-cover .cta{display:flex;flex-direction:column;gap:18px;align-items:flex-start}
.hp-cover .cta .btn{font-family:var(--rubik);font-weight:700;font-size:1rem;letter-spacing:.01em;
  color:var(--paper);background:var(--ink);padding:16px 26px}
.hp-cover .cta .count{font-family:var(--serif);font-size:1.05rem;color:var(--n500)}
/* The Directory — theme groups + bone-ground listing cards */
.hp-theme{margin-top:48px}
.hp-theme+.hp-theme{margin-top:clamp(48px,6vw,80px)}
.hp-theme .thead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
  border-bottom:4px solid var(--ink);padding-bottom:12px;margin-bottom:22px}
.hp-theme .thead .lead{display:flex;align-items:center;gap:16px}
.hp-theme .tick{width:8px;height:46px;flex:none;display:inline-block}
.hp-theme .thead .eyebrow{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--n500);margin-bottom:6px}
.hp-theme .thead h3{font-family:var(--rubik);font-weight:800;font-size:clamp(1.4rem,3vw,2rem);
  letter-spacing:-.025em;line-height:1;color:var(--ink)}
.hp-theme .thead .all{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.02em;color:var(--ink);
  border-bottom:2px solid var(--ink);padding-bottom:2px;white-space:nowrap;align-self:flex-end}
.hp-dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.hp-dcard{display:flex;flex-direction:column;background:var(--bone);padding:26px 24px}
.hp-dcard .top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.hp-dcard .kind{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--n500)}
.hp-dcard .flag{font-family:var(--rubik);font-weight:700;font-size:.6rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--on-coral);background:var(--coral);padding:3px 7px;white-space:nowrap}
.hp-dcard .nm{margin:10px 0 0;font-family:var(--rubik);font-weight:800;font-size:clamp(1.4rem,2vw,1.7rem);
  letter-spacing:-.03em;line-height:1.02;color:var(--ink)}
.hp-dcard .take{margin:12px 0 0;font-family:var(--serif);font-size:1.1rem;line-height:1.42;color:var(--n700)}
.hp-dcard .hp-tags{margin-top:14px}
.hp-dcard .foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:18px}
.hp-dcard .status{display:inline-flex;align-items:center;gap:7px;font-family:var(--rubik);
  font-weight:600;font-size:.7rem;letter-spacing:.06em;color:var(--n600)}
.hp-dcard .status .dot{width:8px;height:8px;background:var(--n400);border-radius:50%;flex:none}
.hp-dcard .arr{font-family:var(--rubik);font-weight:700;font-size:1.2rem;color:var(--ink)}
/* story card text-led foot: byline + arrow */
.hp-story .foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.hp-story .foot .arr{font-family:var(--rubik);font-weight:700;color:var(--ink)}
/* The File — newsletter on the violet ground */
.hp-file{background:var(--violet);color:var(--on-violet);margin:clamp(64px,9vw,96px) -32px 0;
  padding:clamp(48px,7vw,80px) 32px}
.hp-file .grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:48px;
  align-items:center;max-width:1240px;margin:0 auto}
.hp-file .copy .eyebrow{font-family:var(--rubik);font-weight:600;font-size:.82rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--on-violet);opacity:.9}
.hp-file .copy h2{margin:14px 0 0;font-family:var(--rubik);font-weight:800;
  font-size:clamp(2.4rem,6vw,4rem);letter-spacing:-.03em;line-height:.92;color:var(--on-violet)}
.hp-file .copy .standfirst{margin:18px 0 0;font-family:var(--serif);font-size:clamp(1.1rem,1.5vw,1.3rem);
  line-height:1.45;color:var(--on-violet);opacity:.92;max-width:42ch}
.hp-file .form .f{display:flex;background:var(--paper)}
.hp-file .form input{flex:1;min-width:0;border:none;outline:none;font-family:var(--serif);
  font-size:.95rem;color:var(--ink);padding:16px;background:var(--paper)}
.hp-file .form .btn{border:none;cursor:pointer;font-family:var(--rubik);font-weight:700;font-size:.9rem;
  letter-spacing:.02em;text-transform:uppercase;color:var(--ink);background:var(--paper);padding:16px 22px}
.hp-file .form .note{margin:12px 0 0;font-family:var(--rubik);font-weight:600;font-size:.74rem;
  letter-spacing:.04em;color:var(--on-violet);opacity:.85}
/* responsive */
@media(max-width:860px){
  .hp-hero{grid-template-columns:1fr;gap:24px}
  .hp-cover .grid{grid-template-columns:1fr;gap:22px}
  .hp-portals{grid-template-columns:repeat(2,1fr)}
  .hp-worth{grid-template-columns:1fr;gap:34px}
  .hp-guide{grid-template-columns:repeat(2,1fr)}
  .hp-areas{grid-template-columns:1fr;gap:34px}
  .hp-events{grid-template-columns:repeat(2,1fr)}
  .hp-stories{grid-template-columns:1fr}
  .hp-dgrid{grid-template-columns:repeat(2,1fr)}
  .hp-standard .in{grid-template-columns:1fr;gap:28px}
  .hp-file .grid{grid-template-columns:1fr;gap:26px}
  .hp-foot .cols{grid-template-columns:1fr 1fr}
  .hp-sec{margin:64px 0 32px}
}
@media(max-width:520px){
  .hp-portals,.hp-guide,.hp-events,.hp-dgrid{grid-template-columns:1fr}
  .hp-foot .cols{grid-template-columns:1fr}
}
/* === The Door Listings — CD 'Door Listings' export (2026-06-28). ONE template, FOUR doors
   (Eat / Drink / Shop / Do); namespaced .ls-, composed by render.py:render_door_page. Reuses the
   homepage .hp-dcard card, the coral .flag and .hp-tag chips, and aligns to the .hp 1240/32 band
   (masthead + footer). Styled only from tokens (COMPONENT-LIBRARY contract); the sole literals are
   non-tokenable layout geometry — band width, grid track min, breakpoints — exactly as .hp/.np do. === */
.ls{max-width:1240px;margin:0 auto;padding:0 32px}
.ls a{color:inherit;text-decoration:none}
.ls ::selection{background:var(--violet);color:var(--on-violet)}
/* door tabs — the lens selector; the active door is lit with an ink underbar. Links, not state:
   each door page is its own destination (one template, four doors). */
.ls-doortabs{display:flex;gap:30px;align-items:flex-end;flex-wrap:wrap;
  border-bottom:var(--rule-rule) solid var(--n200);margin-top:30px}
.ls-doortabs a{position:relative;padding:14px 0;font-family:var(--rubik);font-weight:600;
  font-size:1.05rem;letter-spacing:.005em;color:var(--n400)}
.ls-doortabs a:hover{color:var(--ink)}
.ls-doortabs a[aria-current="page"]{font-weight:700;color:var(--ink)}
.ls-doortabs a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;
  bottom:calc(-1 * var(--rule-rule));height:var(--rule-bold);background:var(--ink)}
/* door header — kicker + door word + why-line + a scope-count rail on the right */
.ls-dhead{display:flex;justify-content:space-between;align-items:flex-end;gap:48px;
  flex-wrap:wrap;margin:44px 0 32px}
.ls-dhead .main{max-width:660px}
.ls-dhead .kicker{font-family:var(--rubik);font-weight:700;font-size:.78rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--n500);margin-bottom:.7rem}
.ls-dhead h1{margin:0;font-family:var(--rubik);font-weight:800;font-size:var(--fs-display);
  letter-spacing:-.025em;line-height:.92;color:var(--ink)}
.ls-dhead .why{margin:1.1rem 0 0;font-family:var(--serif);font-size:var(--fs-lead);
  line-height:1.45;color:var(--n700);max-width:46ch}
.ls-dhead .scope{text-align:right;flex-shrink:0;padding-bottom:.4rem}
.ls-dhead .scope .num{font-family:var(--rubik);font-weight:800;font-size:2.6rem;line-height:1;
  letter-spacing:-.02em;color:var(--ink)}
.ls-dhead .scope .lab{font-family:var(--rubik);font-weight:600;font-size:.74rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--n500);margin-top:.45rem}
/* filter / sort tool — a bone panel, one flowing row (CD 'Door Listings' export 2026-07-03): the
   door-specific facet selects, then Place, then Sort (label-free — the "All …" option is the label),
   then a search that grows to fill, then the Grid/List toggle at the trailing edge. Quiet + utilitarian
   by design (the taste is upstream, at the Signal). The phone swaps this for .ls-mbar + .ls-sheet. */
.ls-bar{background:var(--bone);margin-top:4px}
.ls-bar-in{display:flex;align-items:center;gap:12px 14px;flex-wrap:wrap;padding:18px 24px}
/* label-free select: the default "All …" option carries the axis name; a violet inset marks an active
   (non-default) selection — the door's one accent, script-toggled, quiet until a filter is on */
.ls-field{position:relative;display:inline-flex;align-items:center}
.ls-field select{appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:var(--rubik);
  font-weight:600;font-size:.82rem;color:var(--ink);background:var(--paper);cursor:pointer;
  padding:.62rem 32px .62rem .8rem;outline:none;border:none;border-radius:0;
  box-shadow:inset 0 0 0 var(--rule-hairline) var(--n300)}
.ls-field select.is-active{box-shadow:inset 0 0 0 var(--rule-bold) var(--violet)}
.ls-field .caret{position:absolute;right:11px;pointer-events:none;font-size:.62rem;color:var(--n500)}
/* search grows to fill the middle; magnifier icon inset left. Shared by the desktop bar, the mobile
   bar, and the sheet's in-panel search (one .ls-search treatment everywhere). */
.ls-search{flex:1 1 220px;min-width:180px;display:flex;align-items:center;position:relative;
  background:var(--paper);box-shadow:inset 0 0 0 var(--rule-hairline) var(--n300)}
.ls-search:focus-within{box-shadow:inset 0 0 0 var(--rule-bold) var(--ink)}
.ls-search .ls-ic{position:absolute;left:11px;display:flex;pointer-events:none;color:var(--n500)}
.ls-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;
  font-family:var(--rubik);font-weight:500;font-size:.88rem;color:var(--ink);padding:.62rem .8rem .62rem 34px}
.ls-search input::placeholder{color:var(--n400)}
/* the fixed sort marker — an order that is inherent to the view, stated rather than offered */
.ls-sortnote{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--n500)}
/* Grid / List view toggle */
.ls-toggle{display:inline-flex;box-shadow:inset 0 0 0 var(--rule-hairline) var(--n300)}
.ls-toggle button{font-family:var(--rubik);font-weight:700;font-size:.7rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink);background:var(--paper);border:none;cursor:pointer;padding:9px 16px}
.ls-toggle button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
/* ---- phone surface: the collapsed bar + drill-in sheet (both hidden on desktop) ---- */
.ls-mbar{display:none}
.ls-mbar .ls-msearch{flex:1}
.ls-mfilter{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;font-family:var(--rubik);
  font-weight:700;font-size:.82rem;color:var(--ink);background:var(--paper);border:none;cursor:pointer;
  box-shadow:inset 0 0 0 var(--rule-hairline) var(--n300);padding:.62rem .9rem}
.ls-mfilter.is-active{background:var(--ink);color:var(--paper);box-shadow:none}
.ls-mbadge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;font-size:.68rem;font-weight:800;border-radius:999px;background:var(--violet);color:var(--on-violet)}
.ls-mfilter.is-active .ls-mbadge{background:var(--paper);color:var(--ink)}
.ls-sheet{display:none}
.ls-sheet.is-open{display:block;position:fixed;inset:0;z-index:60}
.ls-sheet-scrim{position:absolute;inset:0;background:color-mix(in srgb,var(--ink) 42%,transparent)}
.ls-sheet-panel{position:absolute;left:0;right:0;bottom:0;max-height:82vh;display:flex;flex-direction:column;
  background:var(--paper);border-top:var(--rule-bold) solid var(--ink)}
.ls-sheet-view{display:flex;flex-direction:column;min-height:0;flex:1}
.ls-sheet-head{display:flex;align-items:center;gap:8px;padding:16px 20px 12px;flex-shrink:0}
.ls-sheet-head .ttl{flex:1;font-family:var(--rubik);font-weight:800;font-size:1.2rem;letter-spacing:-.01em;color:var(--ink)}
.ls-sheet-back,.ls-sheet-x{display:flex;align-items:center;background:none;border:none;cursor:pointer;padding:4px;color:var(--ink)}
.ls-sheet-scroll{overflow-y:auto;padding:0 20px 8px;border-top:var(--rule-rule) solid var(--n200);-webkit-overflow-scrolling:touch}
.ls-sheet-row{display:flex;justify-content:space-between;align-items:center;width:100%;background:none;border:none;
  border-bottom:var(--rule-rule) solid var(--n200);padding:18px 2px;cursor:pointer;text-align:left}
.ls-sheet-row .rk{font-family:var(--rubik);font-weight:700;font-size:1.02rem;color:var(--ink)}
.ls-sheet-row .rv{display:flex;align-items:center;gap:10px;color:var(--n400)}
.ls-sheet-row .rv .cur{font-family:var(--rubik);font-weight:600;font-size:.9rem;color:var(--n500)}
.ls-sheet-opt{display:flex;justify-content:space-between;align-items:center;width:100%;background:none;border:none;
  border-bottom:var(--rule-rule) solid var(--n200);padding:15px 2px;cursor:pointer;text-align:left}
.ls-sheet-opt .ok{font-family:var(--rubik);font-weight:600;font-size:1rem;color:var(--ink)}
.ls-sheet-opt.is-child .ok{padding-left:14px;color:var(--n600)}
.ls-sheet-opt.is-active .ok{font-weight:800}
.ls-sheet-opt .meta{display:flex;align-items:center;gap:12px}
.ls-sheet-opt .cnt{font-family:var(--rubik);font-weight:500;font-size:.82rem;color:var(--n400)}
.ls-sheet-opt .chk{display:flex;color:var(--ink)}
.ls-sheet-psearch{padding:0 20px 12px;flex-shrink:0}
.ls-sheet-psearch .ls-search{background:var(--bone)}
.ls-sheet-nomatch{padding:22px 2px;font-family:var(--serif);font-size:.95rem;color:var(--n500)}
.ls-sheet-foot{flex-shrink:0;display:flex;gap:12px;align-items:stretch;padding:14px 20px 20px;
  border-top:var(--rule-bold) solid var(--ink);background:var(--bone)}
.ls-sheet-clear{flex:0 0 auto;font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.06em;
  text-transform:uppercase;background:none;color:var(--ink);border:none;box-shadow:inset 0 0 0 var(--rule-bold) var(--ink);padding:0 1.1rem;cursor:pointer}
.ls-sheet-show{flex:1;font-family:var(--rubik);font-weight:700;font-size:.86rem;letter-spacing:.06em;
  text-transform:uppercase;background:var(--ink);color:var(--paper);border:none;padding:.9rem 1rem;cursor:pointer}
/* result count + clear + the active-filter chip row (script-populated) */
.ls-count{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:22px 0 10px}
.ls-count .n{font-family:var(--rubik);font-weight:700;font-size:1.4rem;letter-spacing:-.01em;color:var(--ink)}
.ls-count .clear{font-family:var(--rubik);font-weight:700;font-size:.78rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink);background:transparent;border:none;cursor:pointer;
  box-shadow:inset 0 -2px 0 0 var(--ink);padding:0 0 2px}
.ls-chips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 4px}
.ls-chips:empty{display:none}
.ls-chip{display:inline-flex;align-items:center;gap:7px;background:var(--n100);border:none;
  padding:.36rem .62rem;font-family:var(--rubik);font-weight:600;font-size:.74rem;color:var(--n600);
  cursor:pointer;border-radius:var(--radius-sm)}
.ls-chip .x{color:var(--n400);font-size:.7rem}
/* the card grid — reuses the homepage .hp-dcard (one directory-card style across both surfaces,
   principal's call). GRID = multi-column; LIST = one column (.ls-grid--list). Each .ls-cell wraps a
   card so the enhancement script can show/hide/reorder without touching the locked component; the
   cell stretches so the card's status/arrow foot aligns to the bottom. */
.ls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;padding-top:14px;padding-bottom:72px}
.ls-cell{display:flex}
.ls-cell>.hp-dcard{flex:1}
.ls-grid--list{grid-template-columns:1fr}
.ls-grid--list .hp-dcard .take{max-width:72ch}
/* the script hides non-matching cells via [hidden] — which must beat .ls-cell{display:flex} /
   .ls-grid{display:grid} (equal specificity, author rule otherwise wins) or filtering shows nothing */
.ls-cell[hidden],.ls-grid[hidden],.ls-empty[hidden]{display:none}
/* empty state */
.ls-empty{background:var(--bone);padding:52px 28px;text-align:center;
  border-top:var(--rule-bold) solid var(--ink);margin:14px 0 72px}
.ls-empty .t{font-family:var(--rubik);font-weight:800;font-size:1.7rem;letter-spacing:-.01em;color:var(--ink)}
.ls-empty .s{font-family:var(--serif);font-size:1.05rem;color:var(--n700);margin:8px 0 22px}
.ls-empty .clear{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink);background:var(--paper);
  border:var(--rule-rule) solid var(--ink);cursor:pointer;padding:11px 20px}
@media(max-width:700px){
  .ls{padding:0 20px}
  .ls-dhead{gap:20px}
  .ls-dhead .scope{text-align:left}
  .ls-grid{grid-template-columns:1fr}
  /* the desktop bar gives way to the collapsed bar + drill-in sheet */
  .ls-bar{display:none}
  .ls-mbar{display:flex;gap:10px;align-items:center;position:sticky;top:0;z-index:5;background:var(--bone);
    padding:12px 20px;margin:4px -20px 0;border-top:var(--rule-rule) solid var(--n200);border-bottom:var(--rule-rule) solid var(--n200)}
}


/* === Node detail page v1 — faithful to the CD 'Node Page' export (design/claude-design-export) === */
.np{max-width:720px;margin:0 auto;padding:var(--space-8) var(--space-6) var(--space-24);font-family:var(--rubik)}
.np a{color:inherit;text-decoration:none}
.np ::selection{background:var(--violet);color:var(--on-violet)}
.np-link{color:var(--ink);border-bottom:var(--rule-rule) solid var(--coral);padding-bottom:var(--space-1)}
.np-link:hover{background:var(--bone)}
/* lead image — neutral hatch (.hp-shot), an optional per-type accent strip, an optional coral flag */
.np-lead{position:relative;margin:0}
.np-lead .hp-shot{aspect-ratio:4/3}
.np-lead.r32 .hp-shot{aspect-ratio:3/2}
.np-img{display:block;width:100%;height:100%;object-fit:cover}
.np-credit{font-family:var(--rubik);font-weight:500;font-size:var(--fs-label);letter-spacing:.04em;color:var(--n400);margin-top:var(--space-1)}
.np-typebar{height:var(--space-2)}
.np-typebar.violet{background:var(--violet)}
.np-typebar.cobalt{background:var(--cobalt)}
.np-typebar.coral{background:var(--coral)}
.np-typebar.marigold{background:var(--marigold)}
.np-typebar.acid{background:var(--acid)}
/* identity — eyebrow (identifier) + name + optional sub + summary (lead) + listing (full take) */
.np-id{padding-top:var(--space-6)}
.np-eyebrow{font-weight:700;font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--n500)}
.np-flag{display:inline-block;background:var(--coral);color:var(--on-coral);font-weight:700;
  font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase;padding:var(--space-1) var(--space-2);margin-top:var(--space-3)}
.np-name{font-weight:800;font-size:var(--fs-h1);letter-spacing:-.025em;line-height:.98;color:var(--ink);margin-top:var(--space-3)}
.np-sub{font-weight:600;font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase;color:var(--n400);margin-top:var(--space-2)}
.np-summary{font-family:var(--serif);font-size:var(--fs-lead);line-height:1.4;color:var(--ink);margin-top:var(--space-4)}
.np-listing{font-family:var(--serif);font-size:var(--fs-body);line-height:1.55;color:var(--n700);margin-top:var(--space-3)}
/* operational facts — label/value rows; first row carries the heavy ink top rule */
.np-facts{margin-top:var(--space-6)}
.np-facts .cap{font-weight:700;font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--n400);margin-bottom:var(--space-1)}
.np-fact{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-top:var(--rule-rule) solid var(--n200)}
.np-fact:first-of-type{border-top:var(--rule-rule) solid var(--ink)}
.np-fact .k{font-weight:700;font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--n500);white-space:nowrap}
.np-fact .v{font-weight:500;font-size:var(--fs-small);color:var(--ink);text-align:right;font-family:var(--rubik)}
.np-fact .v a{font-weight:600}
/* chip rows — 'Filed under' (facets) and 'Where you'll find it' (districts) */
.np-chips{padding-top:var(--space-6)}
.np-heading{font-weight:700;font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--n400);margin-bottom:var(--space-3)}
.np-chiplist{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}
.np-chip{font-weight:600;font-size:var(--fs-small)}
.np-chip.named{color:var(--n700)}
/* people — a public figure is linked; a held public figure is named, never linked (std §5/§6) */
.np-people{padding-top:var(--space-6)}
.np-person{padding:var(--space-3) 0;border-top:var(--rule-rule) solid var(--n200)}
.np-person:first-of-type{border-top:var(--rule-rule) solid var(--ink)}
.np-person .nm{font-weight:700;font-size:var(--fs-h3);letter-spacing:-.01em;color:var(--ink)}
.np-person .role{font-weight:600;font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;color:var(--n500);margin-left:var(--space-2)}
.np-person .also{font-family:var(--serif);font-size:var(--fs-small);color:var(--n600);margin-top:var(--space-1)}
/* the outposts module — the brand→location drill (renders only when a brand has >1 location) */
.np-outposts{padding-top:var(--space-8)}
.np-outposts .rule{height:var(--rule-heavy);background:var(--ink);margin-bottom:var(--space-3)}
.np-outposts h2{font-weight:800;font-size:var(--fs-h2);letter-spacing:-.02em;line-height:1;color:var(--ink)}
.np-outposts .worth{display:block;font-weight:700;font-size:var(--fs-label);letter-spacing:.06em;
  text-transform:uppercase;color:var(--coral);margin-top:var(--space-2)}
.np-outpostlist{margin-top:var(--space-4)}
.np-outpost{position:relative;display:block;border-top:var(--rule-bold) solid var(--ink);padding:var(--space-3) var(--space-8) var(--space-3) 0}
.np-outpost .area{font-weight:700;font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;color:var(--n500)}
.np-outpost .dot{width:var(--space-2);height:var(--space-2);background:var(--coral);display:inline-block;margin-left:var(--space-2);vertical-align:middle}
.np-outpost .nm{font-weight:800;font-size:var(--fs-h3);letter-spacing:-.012em;line-height:1.04;color:var(--ink);margin-top:var(--space-1)}
.np-outpost .take{font-family:var(--serif);font-size:var(--fs-small);line-height:1.42;color:var(--n700);margin-top:var(--space-1)}
.np-outpost:hover .nm{text-decoration:underline;text-underline-offset:3px}
.np-outpost .arrow{position:absolute;right:0;top:50%;transform:translateY(-50%);font-weight:700;font-size:var(--fs-h3);color:var(--ink)}
.np-outposts .endrule{border-top:var(--rule-bold) solid var(--ink)}
/* location view — the violet brand-context bar holds the brand while you read one outpost */
.np-brandbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  background:var(--violet);color:var(--on-violet);padding:var(--space-3) var(--space-4)}
.np-brandbar .ctx{display:flex;align-items:center;gap:var(--space-2);color:var(--on-violet)}
.np-brandbar .arrow{font-weight:800;font-size:var(--fs-h3);line-height:1}
.np-brandbar .brand{font-weight:700;font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase}
.np-brandbar .pos{font-weight:700;font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;opacity:.78;white-space:nowrap}
/* the sibling switcher rail — hop between outposts without leaving the brand */
.np-rail{display:flex;gap:var(--space-3);overflow-x:auto;padding:var(--space-3) 0;border-bottom:var(--rule-rule) solid var(--ink)}
.np-railitem{font-weight:700;font-size:var(--fs-small);white-space:nowrap;color:var(--n400);
  padding-bottom:var(--space-1);border-bottom:var(--rule-rule) solid transparent}
.np-railitem.active{color:var(--ink);border-bottom-color:var(--violet)}
.np-railitem:hover{color:var(--ink)}
/* the shared-identity block — the part the brand holds, on a bone ground */
.np-shared{margin-top:var(--space-6);padding:var(--space-4);background:var(--bone)}
.np-shared .h{font-weight:700;font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--n500);margin-bottom:var(--space-1)}
.np-shared .line{font-family:var(--serif);font-size:var(--fs-small);line-height:1.5;color:var(--n700)}
.np-shared .back{display:inline-block;font-weight:700;font-size:var(--fs-label);letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink);margin-top:var(--space-3);border-bottom:var(--rule-rule) solid var(--coral);padding-bottom:var(--space-1)}
/* event date badge — leads-with-when, on the marigold ground */
.np-datebadge{position:absolute;top:0;left:0;background:var(--marigold);color:var(--on-marigold);
  padding:var(--space-2) var(--space-3);text-align:center;line-height:1}
.np-datebadge .d{display:block;font-weight:800;font-size:var(--fs-h2);letter-spacing:-.02em}
.np-datebadge .t{display:block;font-weight:700;font-size:var(--fs-label);letter-spacing:.06em;margin-top:var(--space-1)}
/* === the responsive master/detail (a multi-location brand) — ONE structure, TWO shapes ===
   default (no JS): the master (brand + outpost nav) then every outpost panel stacked — all content
   present and crawlable (SURFACE-DEFENSE: render server-side, enhance, never hide data). The np-md.enh
   class (added by the enhancement script) collapses to ONE panel at a time: an accordion on mobile,
   a side-by-side master/detail on desktop (CD Band D). */
.np-md{margin-top:var(--space-6)}
/* MOBILE = push (CD 'pinned bar + push'): the detail panels are hidden; the master's outpost nav
   pushes to each outpost's OWN page, where a violet brand bar + the sibling rail hold the brand and
   hop between siblings. DESKTOP = master/detail (below): the panels appear beside the master. */
.np-md-detail{display:none}
.np-mdpanel{padding-top:var(--space-6);border-top:var(--rule-heavy) solid var(--ink)}
.np-mdpanel+.np-mdpanel{margin-top:var(--space-8)}
@media(min-width:900px){
  /* the wide layouts (master/detail + document) match the masthead/footer band exactly — same
     max-width and same 32px gutter as .hp — so the content edges align with the site chrome */
  .np.wide{max-width:1240px;padding-left:var(--space-8);padding-right:var(--space-8)}
  .np.wide>.np-lead .hp-shot{aspect-ratio:2/1}     /* the brand hero matches the single-location lead */
  .np-md{display:grid;grid-template-columns:320px 1fr;gap:var(--space-8);align-items:start}
  .np-md-master{position:sticky;top:var(--space-4);align-self:start;
    border-right:var(--rule-rule) solid var(--ink);padding-right:var(--space-6)}
  .np-md-detail{display:block;margin-top:0}        /* desktop: the detail column appears beside the master */
  .np-md .np-outpost .take{display:none}
  .np-md.enh .np-outpost{cursor:pointer}
  .np-md.enh .np-mdpanel{display:none;border-top:0;padding-top:0}
  .np-md.enh .np-mdpanel.active{display:block}
  .np-md.enh .np-mdpanel+.np-mdpanel{margin-top:0}
  .np-md.enh .np-outpost.active{background:var(--ink);padding-left:var(--space-3)}
  .np-md.enh .np-outpost.active .nm,.np-md.enh .np-outpost.active .area,
  .np-md.enh .np-outpost.active .arrow{color:var(--paper)}
}
/* the single-location / simple-node DOCUMENT layout — mobile stacks in source order; desktop lays the
   editorial column beside a facts sidebar on bone (CD Band D, Hugo's). The blocks stay siblings so the
   mobile order is the source order; on desktop the lead spans full width and the facts move to col 2. */
@media(min-width:900px){
  .np-doc{display:grid;grid-template-columns:1fr 320px;column-gap:var(--space-12);align-items:start}
  .np-doc>*{grid-column:1}
  .np-doc>.np-id{padding-right:var(--space-8)}
  .np-doc>.np-lead{grid-column:1 / -1}
  .np-doc>.np-lead .hp-shot{aspect-ratio:2/1}
  .np-doc>.np-facts{grid-column:2;align-self:start;margin-top:var(--space-6);
    background:var(--bone);padding:var(--space-4) var(--space-4) var(--space-2)}
  .np-doc>.np-facts .np-fact:first-of-type{border-top:var(--rule-rule) solid var(--ink)}
}


.pp{--pp-accent:var(--violet)}
/* hero — identifier + name + take (left), an OPTIONAL captioned portrait (right); the portrait leads
   on a narrow column, matching the detail page's image-first mobile order */
.pp-hero{display:flex;flex-wrap:wrap;gap:var(--space-8);align-items:flex-start;justify-content:space-between}
.pp-hero-main{flex:1 1 440px;min-width:0;max-width:640px}
.pp-idline{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}
.pp-eyebrow{font-weight:700;font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--n500)}
.pp-name{font-weight:800;font-size:var(--fs-display);letter-spacing:-.025em;line-height:.92;color:var(--ink);margin-top:var(--space-3)}
.pp-take{font-family:var(--serif);font-size:var(--fs-lead);line-height:1.5;color:var(--ink);margin-top:var(--space-4);max-width:36em}
.pp-take p+p{margin-top:var(--space-3)}
/* the LARGE hero pull-quote — the person's own recorded words: a heavy accent rule, big serif italic */
.pp-heroquote{margin-top:var(--space-6);padding-left:var(--space-4);border-left:var(--rule-heavy) solid var(--pp-accent);
  font-family:var(--serif);font-style:italic;font-size:var(--fs-h3);line-height:1.3;color:var(--ink);max-width:34em}
.pp-heroquote footer{font-family:var(--rubik);font-style:normal;font-weight:700;font-size:var(--fs-label);
  letter-spacing:.1em;text-transform:uppercase;color:var(--n500);margin-top:var(--space-3)}
.pp-contact{margin-top:var(--space-6);display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}
.pp-contact .net{font-weight:700;font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;color:var(--n400)}
.pp-contact a{font-weight:600;font-size:var(--fs-small);color:var(--ink);border-bottom:var(--rule-rule) solid var(--coral);padding-bottom:2px}
.pp-contact a:hover{background:var(--bone)}
/* portrait — a labeled NEUTRAL placeholder (no media pipeline yet): honest, captioned, never a sourced
   photo and never the retired gradient (brief §4). Reuses the shared .hp-shot ground + .cap caption. */
.pp-portrait{flex:0 1 340px;min-width:220px;max-width:380px;width:100%}
.pp-portrait .hp-shot{aspect-ratio:4/5}
@media(max-width:719px){.pp-portrait{order:-1;flex-basis:100%;max-width:none}}
/* section head — heavy ink bar + title (no eyebrow: the title says it; subtraction, Zee 2026-07-03) */
.pp-sec{padding-top:var(--space-12)}
.pp-sec .bar{height:var(--rule-heavy);background:var(--ink);margin-bottom:var(--space-3)}
.pp-sec .h{font-weight:800;font-size:var(--fs-h2);letter-spacing:-.02em;line-height:1;color:var(--ink)}
/* the work — 'where to go': CURRENT work (heavy rows under an accent tick) + FORMER work (a quieter
   'previously' band of compact rows). Heterogeneous targets (Brand / Location / Event) all seat here;
   a renderable-listing target LINKS, a held one is NAMED not linked (std §6). */
.pp-work{margin-top:var(--space-6)}
.pp-worklabel{display:flex;align-items:center;gap:var(--space-2);font-weight:700;font-size:var(--fs-label);
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin:var(--space-6) 0 var(--space-3)}
.pp-worklabel .tick{display:inline-block;width:22px;height:var(--rule-bold);background:var(--pp-accent)}
.pp-worklabel.prev{margin-top:var(--space-8)}   /* same weight/colour as Current; only the list below is smaller (Zee, 2026-07-03) */
.pp-work-item{border-top:var(--rule-bold) solid var(--ink);padding:var(--space-3) 0}
.pp-work-item .role{display:block;font-weight:600;font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--n500)}
.pp-work-item .nm{display:inline-block;font-weight:800;font-size:var(--fs-h3);letter-spacing:-.015em;line-height:1.08;color:var(--ink);margin:var(--space-1) 0}
.pp-work-item a.nm:hover{text-decoration:underline;text-underline-offset:3px}
.pp-work-item .nm.named{color:var(--n700)}
.pp-work-item .kind{display:block;font-weight:500;font-size:var(--fs-small);color:var(--n500)}
.pp-work-item .detail{font-family:var(--serif);font-size:var(--fs-body);line-height:1.55;color:var(--n700);margin-top:var(--space-2)}
.pp-work-item .detail p+p{margin-top:var(--space-2)}
/* the SMALL per-work pull-quote — scoped to one work: a lighter rule + smaller type than the hero */
.pp-workquote{margin-top:var(--space-3);padding-left:var(--space-3);border-left:var(--rule-bold) solid var(--pp-accent);
  font-family:var(--serif);font-style:italic;font-size:var(--fs-small);line-height:1.4;color:var(--ink);max-width:34em}
.pp-workquote footer{font-family:var(--rubik);font-style:normal;font-weight:700;font-size:var(--fs-label);
  letter-spacing:.1em;text-transform:uppercase;color:var(--n400);margin-top:var(--space-2)}
.pp-former{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3);
  padding:var(--space-3) 0;border-top:var(--rule-rule) solid var(--n200)}
.pp-former .role{font-weight:700;font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--n400)}
.pp-former .nm{font-weight:700;font-size:var(--fs-small);color:var(--n700)}
.pp-former .kind{font-weight:500;font-size:var(--fs-small);color:var(--n400)}
.pp-former .arrow{margin-left:auto;font-weight:700;color:var(--n400)}
.pp-former:hover .nm{text-decoration:underline;text-underline-offset:3px}


.ev-w{max-width:1240px;margin:0 auto;padding:0 32px}
.ev-heavybar{height:var(--rule-heavy);background:var(--ink);margin-bottom:22px}
/* hero — the when-led header (identifier -> name -> take + optional lead image) */
.ev-hero{padding-top:56px}
.ev-hero-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:48px;align-items:start}
.ev-eyebrow{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--n500);margin-bottom:14px}
.ev-flag-id{display:inline-block;background:var(--coral);color:var(--on-coral);font-family:var(--rubik);font-weight:700;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;margin-bottom:14px}
.ev-name{font-family:var(--rubik);font-weight:800;font-size:var(--fs-h1);letter-spacing:-.02em;line-height:.98;color:var(--ink);margin:0;text-wrap:balance}
.ev-take{max-width:600px;margin:24px 0 0;display:flex;flex-direction:column;gap:15px}
.ev-take p{font-family:var(--serif);font-size:var(--fs-body);line-height:1.55;color:var(--ink);margin:0;text-wrap:pretty}
.ev-shot{display:flex;flex-direction:column}
.ev-imgwrap{position:relative;aspect-ratio:3/2;background:var(--n200);overflow:hidden}
.ev-imgwrap img{width:100%;height:100%;object-fit:cover;display:block}
.ev-flag{position:absolute;top:0;left:0;z-index:2;background:var(--coral);color:var(--on-coral);font-family:var(--rubik);font-weight:700;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px}
/* the 'When' band — the temporal spine, on the event's accent ground */
.ev-when-sec{padding-top:40px}
.ev-when{padding:30px 36px}
/* the accent ground is a token NAME as a modifier class (the np_typebar pattern) — never inline, so
   the event page keeps the node page's no-inline-style invariant (render --verify check 10) */
.ev-when.violet{background:var(--violet);color:var(--on-violet)}
.ev-when.cobalt{background:var(--cobalt);color:var(--on-cobalt)}
.ev-when.coral{background:var(--coral);color:var(--on-coral)}
.ev-when.marigold{background:var(--marigold);color:var(--on-marigold)}
.ev-when.acid{background:var(--acid);color:var(--on-acid)}
.ev-when-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.ev-when-lab{font-family:var(--rubik);font-weight:700;font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;opacity:.78}
.ev-facet{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;border:2px solid currentColor;padding:5px 11px}
.ev-when-main{display:flex;justify-content:space-between;align-items:flex-end;gap:36px;flex-wrap:wrap;margin-top:20px}
.ev-when-l{min-width:240px}
.ev-big{font-family:var(--rubik);font-weight:800;font-size:clamp(2.4rem,6vw,3.8rem);letter-spacing:-.025em;line-height:.92}
.ev-sub{font-family:var(--rubik);font-weight:600;font-size:1.05rem;letter-spacing:.01em;margin-top:8px;opacity:.92}
.ev-time{font-family:var(--rubik);font-weight:700;font-size:1.55rem;letter-spacing:-.01em;margin-top:16px}
.ev-when-r{min-width:240px;max-width:460px;display:flex;flex-direction:column;gap:12px}
.ev-acc-lab{font-family:var(--rubik);font-weight:700;font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;opacity:.7;margin-bottom:4px}
.ev-acc-val{font-family:var(--rubik);font-weight:700;font-size:1.15rem;letter-spacing:-.01em}
.ev-markers{display:flex;flex-direction:column;gap:3px;padding-top:2px}
.ev-markers span{font-family:var(--rubik);font-weight:600;font-size:.95rem;letter-spacing:.01em;opacity:.86}
.ev-season{font-family:var(--serif);font-size:.95rem;opacity:.9}
.ev-nextline{display:inline-flex;align-self:flex-start;align-items:center;gap:7px;border:2px solid currentColor;padding:7px 11px;font-family:var(--rubik);font-weight:700;font-size:.92rem;letter-spacing:.01em}
/* upcoming editions — the recurring series' dated occurrences (featured co-lead + slate) */
.ev-editions{padding-top:26px}
.ev-ed-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.ev-ed-title,.ev-ed-count{font-family:var(--rubik);font-weight:700;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--n500)}
.ev-ed-count{font-size:.72rem;letter-spacing:.06em}
.ev-featured{border:3px solid var(--ink);padding:24px 28px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:28px;align-items:center;margin-bottom:24px}
.ev-feat-marker{display:inline-flex;align-items:center;background:var(--ink);color:var(--paper);font-family:var(--rubik);font-weight:700;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;padding:5px 9px}
.ev-feat-date{font-family:var(--rubik);font-weight:800;font-size:1.95rem;letter-spacing:-.02em;line-height:1;margin-top:14px;color:var(--ink)}
.ev-feat-time{font-family:var(--rubik);font-weight:700;font-size:1.1rem;margin-top:5px;color:var(--ink)}
.ev-feat-actions{margin-top:18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ev-feat-lab{font-family:var(--rubik);font-weight:700;font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--n500);margin-bottom:7px}
.ev-feat-act{font-family:var(--rubik);font-weight:800;font-size:1.3rem;letter-spacing:-.01em;color:var(--ink);line-height:1.1}
.ev-feat-note{font-family:var(--serif);font-size:.98rem;line-height:1.45;color:var(--n700);margin:9px 0 0;text-wrap:pretty}
.ev-slate{display:flex;flex-direction:column}
.ev-slate-row{display:flex;gap:24px;align-items:baseline;flex-wrap:wrap;padding:16px 0;border-top:var(--rule-bold) solid var(--ink)}
.ev-slate-date{flex:0 0 130px;display:flex;flex-direction:column;gap:3px}
.ev-slate-d{font-family:var(--rubik);font-weight:800;font-size:1.15rem;letter-spacing:-.01em;color:var(--ink);line-height:1}
.ev-slate-t{font-family:var(--rubik);font-weight:600;font-size:.82rem;color:var(--n500)}
.ev-slate-mid{flex:1 1 240px;display:flex;flex-direction:column;gap:4px}
.ev-slate-bill{display:inline-flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.ev-next{font-family:var(--rubik);font-weight:700;font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;background:var(--ink);color:var(--paper);padding:3px 7px;align-self:center}
.ev-billing{font-family:var(--rubik);font-weight:800;font-size:1.2rem;letter-spacing:-.01em;color:var(--ink)}
.ev-diverge{align-self:flex-start;display:inline-flex;background:var(--coral);color:var(--on-coral);font-family:var(--rubik);font-weight:700;font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 7px}
.ev-slate-r{flex:0 0 auto;display:flex;gap:14px;align-items:center;margin-left:auto}
/* past editions — the bounded history tail (CORPUS-MODEL §1g): clearly SEPARATED from the forward
   list by a divider + gap, and de-emphasized, so passed dates read as history, never as upcoming */
.ev-past-head{margin-top:40px;padding-top:26px;border-top:2px solid var(--n300)}
.ev-past-head .ev-ed-title{color:var(--n300)}
.ev-past{opacity:.68}
.ev-past .ev-slate-row{border-top:1px solid var(--n300);padding:11px 0}
.ev-past .ev-slate-d{font-size:.98rem;color:var(--n500)}
/* actions — operational tickets/RSVP, away from the recommendation (std §3 money seam) */
.ev-actions{padding-top:24px;display:flex;gap:16px;flex-wrap:wrap;align-items:center}
/* the facts — venue / organizer / lineup / links, each linked-vs-named */
.ev-facts-sec{padding-top:56px}
.ev-fact{padding:18px 0;border-top:var(--rule-rule) solid var(--ink)}
.ev-fact-lab{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--n500);margin-bottom:8px;padding-top:4px}
.ev-factname{font-family:var(--rubik);font-weight:800;font-size:1.2rem;letter-spacing:-.01em;color:var(--ink)}
.ev-factname.sm{font-weight:700;font-size:1.1rem}
.ev-fact-area{font-family:var(--serif);font-size:.95rem;color:var(--n600);margin-top:5px}
.ev-fact-addr{font-family:var(--serif);font-size:.92rem;color:var(--n500);margin-top:2px}
.ev-lineup{display:flex;flex-direction:column;gap:12px}
.ev-member{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.ev-role{font-family:var(--rubik);font-weight:600;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--n600);border:1.5px solid var(--n300);border-radius:var(--radius-sm);padding:3px 7px}
.ev-links{display:flex;gap:20px;flex-wrap:wrap}
/* composition — an umbrella's sub-events */
.ev-comp-sec{padding-top:56px}
.ev-comp{display:flex;flex-direction:column}
.ev-subevent{display:flex;gap:24px;align-items:baseline;flex-wrap:wrap;padding:18px 0;border-top:var(--rule-bold) solid var(--ink);text-decoration:none}
.ev-sub-when{flex:0 0 130px;font-family:var(--rubik);font-weight:700;font-size:.98rem;letter-spacing:.01em;color:var(--n600)}
.ev-sub-name{flex:1 1 220px;font-family:var(--rubik);font-weight:800;font-size:1.35rem;letter-spacing:-.01em;color:var(--ink);border-bottom:3px solid var(--coral);padding-bottom:1px;align-self:flex-start}
.ev-sub-venue{flex:0 0 auto;font-family:var(--serif);font-size:.95rem;color:var(--n500)}
/* related — the connections rail (More in <place>), over a grid of event cards */
.ev-related{padding-top:64px;padding-bottom:8px}
.ev-rel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:14px 0 20px}
.ev-rel-title{font-family:var(--rubik);font-weight:800;font-size:var(--fs-h2);letter-spacing:-.015em;line-height:1.02;margin:0;color:var(--ink)}
.ev-rel-all{font-family:var(--rubik);font-weight:700;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-decoration:none;white-space:nowrap}
.ev-rel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:28px}
/* shared atoms — the solid button, the status tag, the coral-underline link */
.ev-btn{display:inline-block;background:var(--ink);color:var(--paper);font-family:var(--rubik);font-weight:700;font-size:.9rem;letter-spacing:.02em;padding:13px 22px;text-decoration:none;border:2px solid var(--ink)}
.ev-tag{font-family:var(--rubik);font-weight:700;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;padding:5px 9px;white-space:nowrap}
.ev-tag.ink{background:var(--ink);color:var(--paper)}
.ev-tag.outline{border:2px solid var(--n300);color:var(--n500)}
.ev-link{color:var(--ink);text-decoration:none;border-bottom:2px solid var(--coral);padding-bottom:1px}
.ev-billing.ev-link{border-bottom-width:3px}
.ev-fact-body .ev-link{font-family:var(--rubik);font-weight:800;font-size:1.2rem;letter-spacing:-.01em;border-bottom-width:3px}
.ev-fact-body .ev-links .ev-link{font-weight:600;font-size:.95rem;border-bottom-width:2px}
.ev-slate-r .ev-link{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}
@media(max-width:640px){.ev-w{padding:0 22px}.ev-when{padding:24px 22px}}


/* page frame — the agenda beside a sticky rail; the rail leads on narrow (order:-1, the CD state) */
.ea-w{max-width:1240px;margin:0 auto;padding:0 32px}
.ea-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:56px;align-items:start;margin-top:8px}
.ea-main{min-width:0}
.ea-rail{position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto}
/* day group — the month break, the day rail, the day's rows */
.ea-monthbreak{margin:64px 0 0}
.ea-monthbreak .bar{height:var(--rule-heavy);background:var(--ink)}
.ea-monthbreak h2{font-family:var(--rubik);font-weight:800;font-size:var(--fs-h2);letter-spacing:-.015em;line-height:1.02;color:var(--ink);margin:14px 0 0}
.ea-day{border-top:var(--rule-default) solid var(--ink);margin-top:28px;padding-top:16px;display:grid;grid-template-columns:96px minmax(0,1fr);gap:24px;align-items:start}
.ea-daymark .dow{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--n500)}
.ea-daymark .num{font-family:var(--rubik);font-weight:800;font-size:2.6rem;letter-spacing:-.04em;line-height:.95;color:var(--ink);margin-top:2px}
.ea-daymark .mon{font-family:var(--rubik);font-weight:700;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-top:2px}
.ea-daymark .today{display:inline-block;background:var(--marigold);color:var(--on-marigold);font-family:var(--rubik);font-weight:700;font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;margin-top:10px}
/* one happening in a day */
.ea-row{display:grid;grid-template-columns:104px minmax(0,1fr);gap:20px;padding:4px 0 20px;border-bottom:var(--rule-hairline) solid var(--n200);margin-bottom:14px}
.ea-row .t{font-family:var(--rubik);font-weight:700;font-size:.95rem;letter-spacing:-.01em;color:var(--ink)}
.ea-row .tsub{font-family:var(--rubik);font-weight:500;font-size:.74rem;color:var(--n400);margin-top:3px}
.ea-row .meta{font-family:var(--rubik);font-weight:600;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--n500)}
.ea-row .nm{display:inline-block;font-family:var(--rubik);font-weight:700;font-size:1.35rem;letter-spacing:-.015em;line-height:1.12;color:var(--ink);text-decoration:none;margin-top:6px}
.ea-row .draw{font-family:var(--rubik);font-weight:600;font-size:1.02rem;letter-spacing:-.005em;color:var(--ink);margin-top:6px}
.ea-row .take{font-family:var(--serif);font-size:.98rem;line-height:1.5;color:var(--n700);max-width:60ch;margin:8px 0 0;text-wrap:pretty}
.ea-row .frame{font-family:var(--rubik);font-weight:600;font-size:.8rem;color:var(--n500);margin-top:10px}
/* an umbrella day's sub-events */
.ea-inside{margin:14px 0 0;max-width:60ch}
.ea-inside .lab{font-family:var(--rubik);font-weight:600;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--n500);border-top:var(--rule-default) solid var(--ink);padding-top:8px}
.ea-inside .r{display:flex;gap:14px;align-items:baseline;padding:7px 0;border-bottom:var(--rule-hairline) solid var(--n200)}
.ea-inside .r .t{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--n500);width:62px;flex-shrink:0}
.ea-inside .r .n{font-family:var(--serif);font-size:.92rem;color:var(--n700)}
/* the further-out tail */
.ea-tail{margin-top:64px}
.ea-tail .bar{height:var(--rule-default);background:var(--ink)}
.ea-tail .lab{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--n500);margin-top:10px}
.ea-tail .r{display:flex;align-items:baseline;gap:18px;padding:10px 0;border-bottom:var(--rule-hairline) solid var(--n200)}
.ea-tail .r .d{font-family:var(--rubik);font-weight:700;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);width:96px;flex-shrink:0}
.ea-tail .r .n{font-family:var(--rubik);font-weight:700;font-size:.95rem;color:var(--ink)}
.ea-tail .r .x{font-family:var(--serif);font-size:.92rem;color:var(--n700)}
/* the rail bands — one shell, two contents */
.ea-band+.ea-band{margin-top:36px}
.ea-band .bar{height:var(--rule-heavy);background:var(--ink)}
.ea-band .bar.marigold{background:var(--marigold)}
.ea-band .bar.violet{background:var(--violet)}
.ea-band .bar.cobalt{background:var(--cobalt)}
.ea-band .bar.coral{background:var(--coral)}
.ea-band .bar.acid{background:var(--acid)}
.ea-band .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:12px}
.ea-band .eyebrow{font-family:var(--rubik);font-weight:700;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink)}
.ea-band .note{font-family:var(--rubik);font-weight:600;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--n500)}
.ea-band .list{display:grid;gap:12px;margin-top:12px}
.ea-item{background:var(--bone);padding:18px}
.ea-item .opens{display:inline-block;background:var(--marigold);color:var(--on-marigold);font-family:var(--rubik);font-weight:700;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px}
.ea-item .range{font-family:var(--rubik);font-weight:800;font-size:1.02rem;letter-spacing:-.02em;line-height:1;color:var(--ink)}
.ea-item .cad{font-family:var(--rubik);font-weight:800;font-size:.98rem;letter-spacing:-.01em;text-transform:uppercase;color:var(--ink)}
.ea-item .sub{font-family:var(--rubik);font-weight:500;font-size:.74rem;color:var(--n500);margin-top:4px}
.ea-item .nm{display:inline-block;font-family:var(--rubik);font-weight:700;font-size:1.06rem;letter-spacing:-.01em;line-height:1.15;color:var(--ink);text-decoration:none;margin-top:10px}
.ea-item .venue{font-family:var(--rubik);font-weight:600;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--n500);margin-top:4px}
.ea-item .take{font-family:var(--serif);font-size:.9rem;line-height:1.45;color:var(--n700);margin:8px 0 0;text-wrap:pretty}
@media(max-width:940px){
  .ea-grid{display:flex;flex-direction:column;gap:44px}
  .ea-rail{position:static;max-height:none;overflow:visible;order:-1}
  .ea-band .list{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
}
@media(max-width:640px){.ea-w{padding:0 22px}.ea-day{grid-template-columns:64px minmax(0,1fr);gap:16px}.ea-row{grid-template-columns:1fr;gap:6px}}
