/* ===========================================================================
   GLOBAL SOCIAL SEASON — house style.

   · Bodoni Moda carries the display voice (headlines, big numerals, place
     names); Jost is the working sans (navigation, labels, dates, data);
     Spectral is for reading.
   · Ivory paper, charcoal ink. Colour is seasonal and structural: a hue per
     part of the year (winter slate, spring forest, summer Mediterranean blue,
     autumn terracotta, festive burgundy) used at edges — rules, dots, rings —
     never as fills. Photographs supply the colour.
   · Boxes are rules. Panels, ledgers and tables are separated by hairlines on
     the paper; the only bordered rectangles are photographs.
   =========================================================================== */
@import url("/static/fonts/fonts.css");

:root {
  --paper: #F6F2EA; --paper-2: #EDE7DB; --paper-3: #FBF9F4;
  --ink: #1B1A17; --ink-2: #4A4741; --ink-3: #7A766D;
  --rule: #D9D2C3; --rule-2: #BFB6A3;
  --med: #1F5C8C; --terra: #B8563A; --forest: #3F5B47; --burgundy: #6E2B3A; --slate: #5B6E82;
  --med-soft: #DCE6EF; --terra-soft: #F1DED6; --forest-soft: #DDE6DF; --burgundy-soft: #EEDCE0; --slate-soft: #E1E6EC;
  --accent: var(--med);
  --h: var(--ink);
  --maxw: 1280px; --prose: 44rem;
  --display: 'Bodoni Moda', 'Didot', Georgia, serif;
  --serif: 'Spectral', Georgia, 'Times New Roman', serif;
  --sans: 'Jost', 'Futura', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
  --shadow: 0 18px 40px rgba(27,26,23,.14);
  color-scheme: light;
}
:root[data-theme="dark"] {
  --paper: #171613; --paper-2: #1F1E1A; --paper-3: #24221D;
  --ink: #EEE9DD; --ink-2: #C6C0B2; --ink-3: #8F8A7E;
  --rule: #34322C; --rule-2: #4A473F;
  --med: #7FA9CF; --terra: #D98A6E; --forest: #8FB09A; --burgundy: #C98A99; --slate: #9DB0C4;
  --med-soft: #1D2A38; --terra-soft: #382520; --forest-soft: #1F2C24; --burgundy-soft: #34222A; --slate-soft: #232B34;
  --shadow: 0 18px 40px rgba(0,0,0,.5);
  color-scheme: dark;
}
.hue-med { --h: var(--med); --hs: var(--med-soft); }
.hue-terra { --h: var(--terra); --hs: var(--terra-soft); }
.hue-forest { --h: var(--forest); --hs: var(--forest-soft); }
.hue-burgundy { --h: var(--burgundy); --hs: var(--burgundy-soft); }
.hue-slate { --h: var(--slate); --hs: var(--slate-soft); }
.hue-ink { --h: var(--ink); --hs: var(--paper-2); }

/* ------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; min-width: 0; }
html { overflow-x: clip; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--serif); font-size: 1.04rem; line-height: 1.6; -webkit-font-smoothing: antialiased;
  background-image: radial-gradient(rgba(27,26,23,.025) 1px, transparent 1px); background-size: 3px 3px; }
:root[data-theme="dark"] body { background-image: radial-gradient(rgba(255,255,255,.02) 1px, transparent 1px); }
a { color: var(--ink); text-decoration: none; text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { text-decoration: underline; }
p a, li a, .prose a { color: var(--accent); }
:focus-visible { outline: 2px solid var(--terra); outline-offset: 2px; }
img, picture { max-width: 100%; height: auto; display: block; }
picture img { width: 100%; height: 100%; object-fit: cover; }
h1, h2, h3, h4 { font-family: var(--display); font-weight: 500; line-height: 1.08; margin: 0 0 .5rem; letter-spacing: -.005em; font-variation-settings: "opsz" 72; }
h1 { font-size: clamp(2.2rem, 5vw, 4rem); }
h2 { font-size: clamp(1.5rem, 2.4vw, 2.1rem); }
h2.display { font-size: clamp(2rem, 4vw, 3.4rem); }
h3 { font-size: 1.25rem; }
p { margin: 0 0 1rem; }
small, .fineprint { font-family: var(--sans); font-size: .8rem; color: var(--ink-3); line-height: 1.45; font-weight: 400; }
b, strong { font-weight: 600; }
hr { border: 0; border-top: 1px solid var(--rule); margin: 2rem 0; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .88em; background: var(--paper-2); padding: .05em .3em; }
pre { white-space: pre-wrap; background: var(--paper-2); border-inline-start: 2px solid var(--accent); padding: .9rem 1rem; font-family: var(--sans); font-size: .9rem; line-height: 1.55; }
.skip { position: absolute; left: -9999px; }
.skip:focus { left: 1rem; top: 1rem; background: var(--paper-3); padding: .5rem 1rem; z-index: 100; }
.muted { color: var(--ink-3); }
.hide-sm { }
.eyebrow { font-family: var(--sans); font-size: .74rem; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); margin: 0 0 .6rem; font-weight: 500; }
.eyebrow.light { color: rgba(255,255,255,.85); }
.lede { font-family: var(--serif); font-size: 1.25rem; line-height: 1.5; color: var(--ink-2); max-width: var(--prose); }
.tile-kicker, .kicker { font-family: var(--sans); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; display: block; margin-bottom: .3rem; font-weight: 500; }
.badge { font-family: var(--sans); font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; padding: .12em .5em; border: 1px solid var(--rule-2); color: var(--ink-2); vertical-align: middle; margin-inline-start: .4rem; white-space: nowrap; }
.guided-only { display: none; }
:root[data-view="guided"] .guided-only { display: block; }
.guided-only { border-inline-start: 2px solid var(--accent); padding: .5rem .9rem; font-size: .98rem; color: var(--ink-2); margin: 0 0 1.4rem; }

/* ------------------------------------------------------------ masthead */
.masthead { display: flex; align-items: center; gap: .8rem; padding: .5rem 1.2rem; border-bottom: 1px solid var(--rule); background: var(--paper); position: sticky; top: 0; z-index: 40; font-family: var(--sans); }
.brandmark { display: flex; align-items: center; gap: .7rem; color: var(--ink); flex: 0 0 auto; min-width: auto; }
.brandmark:hover { text-decoration: none; }
.monogram { width: 58px; height: 31px; display: block; }
.monogram .mg { font-family: var(--display); font-size: 58px; font-weight: 500; fill: currentColor; font-variation-settings: "opsz" 96; }
.monogram line { stroke: currentColor; stroke-width: 1.6; }
.monogram.lg { width: 120px; height: 64px; }
.wordmark { font-family: var(--sans); font-size: .82rem; font-weight: 500; letter-spacing: .26em; text-transform: uppercase; line-height: 1; display: flex; flex-direction: column; }
.wordmark .sub { font-size: .58rem; font-weight: 400; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-top: .35rem; }
.mainnav { display: flex; align-items: center; gap: .05rem; margin-inline-start: .4rem; }
.mainnav > a, .mainnav .ddbtn { color: var(--ink); font-size: .86rem; padding: .45rem .55rem; white-space: nowrap; letter-spacing: .01em; }
.mainnav > a:hover, .mainnav .ddbtn:hover { text-decoration: none; color: var(--accent); }
.mainnav .now-link { color: var(--terra); font-weight: 500; }
.dd { position: relative; }
.ddmenu { display: none; position: absolute; top: 100%; inset-inline-start: 0; background: var(--paper-3); border: 1px solid var(--rule); min-width: 15rem; padding: .4rem 0; z-index: 50; box-shadow: var(--shadow); }
.ddmenu.open { display: block; }
.ddmenu.cols { min-width: 34rem; columns: 2; padding: .6rem .4rem; }
.ddmenu a { display: block; padding: .4rem 1rem; color: var(--ink); font-size: .86rem; break-inside: avoid; }
.ddmenu a small { color: var(--ink-3); margin-inline-start: .3rem; }
.ddmenu a.ddhead { column-span: all; font-weight: 500; border-bottom: 1px solid var(--rule); margin-bottom: .3rem; }
.ddmenu a:hover { background: var(--paper-2); text-decoration: none; }
.ddmenu .sep { border-top: 1px solid var(--rule); margin: .35rem 0; }
.searchwrap { margin-inline-start: auto; position: relative; flex: 0 1 19rem; }
#searchBox { width: 100%; padding: .5rem .8rem; border: 0; border-bottom: 1px solid var(--rule-2); background: transparent; color: var(--ink); font-family: var(--sans); font-size: .9rem; }
#searchBox:focus { outline: 0; border-bottom-color: var(--ink); }
.searchresults { display: none; position: absolute; top: calc(100% + 4px); inset-inline: 0; background: var(--paper-3); border: 1px solid var(--rule); z-index: 60; max-height: 26rem; overflow: auto; box-shadow: var(--shadow); min-width: 20rem; }
.searchresults.open { display: block; }
.sr-group { font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); padding: .55rem .8rem .2rem; }
.sr-item { display: block; padding: .4rem .8rem; color: var(--ink); font-size: .9rem; }
.sr-item small { display: block; color: var(--ink-3); }
.sr-item:hover, .sr-item.sel { background: var(--paper-2); text-decoration: none; }
.iconbtn { background: none; border: 1px solid transparent; color: var(--ink); font-size: 1.05rem; width: 2.2rem; height: 2.2rem; cursor: pointer; position: relative; display: inline-flex; align-items: center; justify-content: center; }
.iconbtn:hover { background: var(--paper-2); }
.burger { display: none; flex-direction: column; gap: 4px; }
.burger span { display: block; width: 18px; height: 1.5px; background: var(--ink); }
.favbadge { position: absolute; top: -2px; inset-inline-end: -2px; font-size: .6rem; background: var(--terra); color: #fff; border-radius: 999px; padding: 0 .35em; line-height: 1.4; }

/* ------------------------------------------------------------ offcanvas */
.offcanvas { position: fixed; top: 0; bottom: 0; width: min(88vw, 22rem); background: var(--paper-3); z-index: 80; transform: translateX(-104%); transition: transform .22s ease; overflow: auto; padding: .6rem 1rem 2rem; border-inline-end: 1px solid var(--rule); font-family: var(--sans); visibility: hidden; }
.offcanvas.left { inset-inline-start: 0; }
.offcanvas.right { inset-inline-end: 0; inset-inline-start: auto; transform: translateX(104%); border-inline-end: 0; border-inline-start: 1px solid var(--rule); }
.offcanvas.open { transform: none; visibility: visible; }
.oc-head { display: flex; justify-content: space-between; align-items: center; padding: .4rem 0 .8rem; border-bottom: 1px solid var(--rule); margin-bottom: .6rem; }
.oc-close { background: none; border: 0; font-size: 1.6rem; cursor: pointer; color: var(--ink); }
.offcanvas a { display: block; padding: .45rem 0; color: var(--ink); border-bottom: 1px solid var(--rule); }
.offcanvas details { margin: .4rem 0; }
.offcanvas summary { cursor: pointer; padding: .5rem 0; font-weight: 500; }
.offcanvas details a { padding-inline-start: .8rem; font-size: .92rem; }
.oc-row { display: flex; justify-content: space-between; align-items: center; padding: .6rem 0; border-bottom: 1px solid var(--rule); }
.oc-note { padding: .8rem 0; font-size: .9rem; border-bottom: 1px solid var(--rule); }
.oc-note p { margin-bottom: .6rem; }
.oc-backdrop { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 70; }
.oc-backdrop.open { display: block; }
.lang-sel { font-family: var(--sans); font-size: .85rem; padding: .3rem .4rem; background: var(--paper-3); color: var(--ink); border: 1px solid var(--rule-2); }

/* ------------------------------------------------------------ hero */
.hero { position: relative; height: clamp(360px, 52vw, 560px); overflow: hidden; background: var(--ink); color: #fff; display: flex; align-items: flex-end; }
.hero.tall { height: clamp(460px, 74vh, 760px); }
.hero.band { height: clamp(190px, 26vw, 300px); }
.hero.band h1 { font-size: clamp(1.9rem, 4vw, 3.2rem); }
.hero .hero-pic { position: absolute; inset: 0; }
.hero .hero-pic img { width: 100%; height: 100%; object-fit: cover; }
.hero-veil { position: absolute; inset: 0; background: linear-gradient(to top, rgba(12,12,10,.78) 0%, rgba(12,12,10,.35) 38%, rgba(12,12,10,.05) 70%, transparent 100%); }
.hero-body { position: relative; max-width: var(--maxw); width: 100%; margin: 0 auto; padding: 1.6rem 1.2rem 2rem; }
.hero h1 { color: #fff; font-size: clamp(2.4rem, 6vw, 5.2rem); text-shadow: 0 2px 22px rgba(0,0,0,.35); max-width: 22ch; }
.hero .hero-place { display: block; font-size: clamp(.9rem, 1.4vw, 1.1rem); font-family: var(--sans); letter-spacing: .22em; text-transform: uppercase; font-weight: 500; margin-bottom: .6rem; color: rgba(255,255,255,.9); }
.hero .hero-event { display: block; }
.hero-dek { color: rgba(255,255,255,.9); font-size: 1.15rem; max-width: 46rem; margin: .5rem 0 .4rem; text-shadow: 0 1px 12px rgba(0,0,0,.35); }
.hero-meta { font-family: var(--sans); font-size: .9rem; color: rgba(255,255,255,.85); margin: 0; }
.hero-meta a, .hero-body .eyebrow a { color: #fff; text-decoration: underline; text-decoration-color: rgba(255,255,255,.5); }
.hero .fav { color: rgba(255,255,255,.7); font-size: .6em; vertical-align: middle; margin-inline-end: .2em; }
.hero .st { border-color: rgba(255,255,255,.5); color: #fff; }
.hero.entity { height: clamp(320px, 44vw, 520px); }
.hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--h, var(--accent)); opacity: .9; }

/* ------------------------------------------------------------ page */
.page { max-width: var(--maxw); margin: 0 auto; padding: 1.4rem 1.2rem 3rem; }
.page.narrow { max-width: 56rem; }
.crumbs { font-family: var(--sans); font-size: .76rem; color: var(--ink-3); margin-bottom: 1rem; display: flex; flex-wrap: wrap; gap: .35rem; }
.crumbs .sep { color: var(--rule-2); }
.crumbs a { color: var(--ink-3); }
.sec { margin: 0 0 2.6rem; }
.bleed { margin-inline: calc(50% - 50vw); padding-inline: max(1.2rem, calc(50vw - var(--maxw) / 2)); }
.band { background: var(--paper-2); padding-block: 2.4rem; }
.band-in { max-width: var(--maxw); margin: 0 auto; }
.sechead { display: flex; align-items: baseline; gap: 1rem; border-top: 1px solid var(--ink); padding-top: .6rem; margin: 0 0 1.1rem; flex-wrap: wrap; }
.sechead h2 { margin: 0; font-size: clamp(1.4rem, 2.2vw, 1.9rem); }
.sechead .secnum { font-family: var(--sans); font-size: .72rem; letter-spacing: .14em; color: var(--ink-3); margin-inline-end: .7rem; vertical-align: middle; }
.sechead .secsub { font-family: var(--serif); font-style: italic; color: var(--ink-3); font-size: .98rem; }
.sechead .seclink { margin-inline-start: auto; font-family: var(--sans); font-size: .8rem; letter-spacing: .04em; white-space: nowrap; }
.split { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 2.4rem; }
.pagehead { padding-bottom: 1.1rem; margin-bottom: 1.4rem; border-bottom: 1px solid var(--rule); }
.pagehead h1 { max-width: 48rem; }
.note { border-inline-start: 2px solid var(--accent); padding: .7rem 1rem; margin: 1rem 0; font-size: .98rem; background: var(--paper-2); }
.note.warn { border-color: var(--terra); }
.note p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------ buttons, chips, forms */
.btn { display: inline-block; font-family: var(--sans); font-size: .86rem; font-weight: 500; letter-spacing: .04em; padding: .6rem 1.15rem; background: var(--ink); color: var(--paper); border: 1px solid var(--ink); cursor: pointer; line-height: 1.2; }
.btn:hover { background: var(--accent); border-color: var(--accent); color: #fff; text-decoration: none; }
.btn.quiet { background: transparent; color: var(--ink); border-color: var(--rule-2); }
.btn.quiet:hover { background: var(--paper-2); color: var(--ink); border-color: var(--ink); }
.btn.sm { font-size: .78rem; padding: .42rem .8rem; }
.chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.chip { display: inline-block; font-family: var(--sans); font-size: .78rem; padding: .3rem .75rem; border: 1px solid var(--rule-2); color: var(--ink); background: transparent; letter-spacing: .02em; }
.chip:hover { border-color: var(--ink); text-decoration: none; }
.chip.on { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.fav { background: none; border: 0; color: var(--rule-2); font-size: 1rem; cursor: pointer; padding: 0 .3rem 0 0; vertical-align: baseline; }
.fav.on, .fav:hover { color: var(--terra); }
input, select, textarea { font-family: var(--sans); font-size: .95rem; color: var(--ink); background: var(--paper-3); border: 1px solid var(--rule-2); padding: .5rem .7rem; }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--ink); }
label { font-family: var(--sans); font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); display: block; margin-bottom: .3rem; }
.fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.field input, .field select, .field textarea { width: 100%; }
.follow { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: 1rem 0; }
.follow input[type=email] { flex: 1 1 14rem; }
.filterbar { display: flex; gap: .6rem; flex-wrap: wrap; align-items: end; padding: .8rem 0 1rem; border-bottom: 1px solid var(--rule); margin-bottom: 1.2rem; font-family: var(--sans); }
.filterbar .fld { display: flex; flex-direction: column; gap: .2rem; }
.filterbar select, .filterbar input { font-size: .85rem; padding: .4rem .5rem; }

/* ------------------------------------------------------------ status pills */
.st { font-family: var(--sans); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; padding: .12em .5em; border: 1px solid var(--rule-2); color: var(--ink-2); vertical-align: middle; white-space: nowrap; margin-inline-start: .3rem; }
.st-confirmed { border-color: var(--forest); color: var(--forest); }
.st-completed { color: var(--ink-3); }
.st-expected, .st-historical_pattern { border-color: var(--terra); color: var(--terra); }
.st-date_pending { border-style: dashed; }
.st-cancelled { text-decoration: line-through; }
.dnote { display: block; font-family: var(--sans); font-size: .76rem; color: var(--ink-3); margin-top: .15rem; text-transform: none; letter-spacing: 0; }

/* ------------------------------------------------------------ tiles (photo with text on the image) */
.tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; grid-auto-flow: dense; }
.now-tiles { grid-auto-rows: 200px; }
.now-tiles .tile.tall { grid-row: span 2; }
.stiles { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.rtiles { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.rtiles .tile { aspect-ratio: 3 / 4; }
.ctiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; grid-auto-flow: dense; }
.ctiles .tile { aspect-ratio: 4 / 3; }
.ctiles .tile.wide { grid-column: span 2; aspect-ratio: auto; }
.stiles .tile { aspect-ratio: 3 / 4; }
.tile { position: relative; display: block; overflow: hidden; background: var(--paper-2); color: #fff; min-height: 160px; }
.tile:hover { text-decoration: none; }
.tile .tile-img { position: absolute; inset: 0; }
.tile .tile-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.tile:hover .tile-img img { transform: scale(1.03); }
.tile-blank { background: linear-gradient(160deg, var(--paper-2), var(--rule)); }
.tile::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10,10,8,.82) 0%, rgba(10,10,8,.28) 50%, transparent 80%); }
.tile-body { position: absolute; left: 0; right: 0; bottom: 0; padding: .9rem 1rem; z-index: 1; }
.tile .tile-kicker { color: rgba(255,255,255,.8); }
.tile-title { display: block; font-family: var(--display); font-size: 1.35rem; line-height: 1.12; text-shadow: 0 1px 10px rgba(0,0,0,.4); }
.tile.wide .tile-title, .tile.tall .tile-title { font-size: 1.7rem; }
.tile-meta { display: block; font-family: var(--sans); font-size: .76rem; color: rgba(255,255,255,.82); margin-top: .3rem; letter-spacing: .02em; }
.tile::after { content: ""; position: absolute; left: 1rem; bottom: 0; width: 2.2rem; height: 2px; background: var(--h, #fff); z-index: 2; }

/* ------------------------------------------------------------ the season line */
.sline-sec { padding-block: 2.6rem 2rem; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); background: var(--paper-3); }
.sline-head { max-width: var(--maxw); margin: 0 auto 1.6rem; }
.sline { display: flex; align-items: flex-start; gap: 0; overflow-x: auto; scroll-snap-type: x proximity; padding: .4rem 0 1rem; max-width: var(--maxw); margin: 0 auto; scrollbar-width: thin; }
.sline-stop { position: relative; flex: 0 0 auto; width: 150px; display: flex; flex-direction: column; align-items: center; text-align: center; color: var(--ink); scroll-snap-align: start; padding: .3rem .4rem; }
.sline-stop:hover { text-decoration: none; }
.sline-ring { width: 96px; height: 96px; border-radius: 50%; padding: 4px; border: 1.5px solid var(--rule-2); display: block; position: relative; background: var(--paper); }
.sline-stop.now .sline-ring { border-color: var(--h); border-width: 2.5px; box-shadow: 0 0 0 6px var(--hs, var(--paper-2)); }
.sline-stop.past { opacity: .62; }
.sline-img, .sline-ring picture { width: 100%; height: 100%; border-radius: 50%; overflow: hidden; display: block; }
.sline-ring picture img { width: 100%; height: 100%; object-fit: cover; }
.sline-blank { background: var(--paper-2); }
.sline-place { font-family: var(--display); font-size: 1.05rem; letter-spacing: .06em; text-transform: uppercase; margin-top: .7rem; line-height: 1.15; }
.sline-when { font-family: var(--sans); font-size: .76rem; color: var(--h); letter-spacing: .06em; margin-top: .2rem; font-weight: 500; }
.sline-event { font-family: var(--serif); font-style: italic; font-size: .86rem; color: var(--ink-3); margin-top: .15rem; line-height: 1.3; }
.sline-now { position: absolute; top: -2px; left: 50%; transform: translateX(-50%); font-family: var(--sans); font-size: .6rem; letter-spacing: .14em; text-transform: uppercase; background: var(--h); color: #fff; padding: .15em .55em; }
.sline-arrow { flex: 0 0 34px; height: 1px; background: var(--rule-2); margin-top: 52px; position: relative; }
.sline-arrow::after { content: ""; position: absolute; right: -1px; top: -3.5px; width: 7px; height: 7px; border-top: 1px solid var(--rule-2); border-right: 1px solid var(--rule-2); transform: rotate(45deg); }
.sline.compact .sline-stop { width: 120px; }
.sline.compact .sline-ring { width: 68px; height: 68px; }
.sline.compact .sline-arrow { margin-top: 38px; flex-basis: 20px; }
.sline.compact .sline-place { font-size: .86rem; }
.sline-foot { max-width: var(--maxw); margin: .2rem auto 0; }

/* ------------------------------------------------------------ timeline */
.timeline { list-style: none; margin: 0; padding: 0; }
.tl { display: grid; grid-template-columns: 4.2rem 92px minmax(0, 1fr); gap: 1rem; align-items: center; padding: .8rem 0; border-bottom: 1px solid var(--rule); }
.tl-date { text-align: center; border-inline-end: 1px solid var(--h); padding-inline-end: .6rem; }
.tl-date .d, .erow-date .d { display: block; font-family: var(--display); font-size: 2rem; line-height: 1; color: var(--ink); font-variation-settings: "opsz" 96; }
.tl-date .mo, .erow-date .mo { display: block; font-family: var(--sans); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--h); margin-top: .2rem; font-weight: 500; }
.tl-thumb { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-2); }
.tl-thumb picture, .tl-thumb img { width: 100%; height: 100%; object-fit: cover; }
.tl-place, .erow-kicker { font-family: var(--sans); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); display: block; }
.tl-title, .erow-title { font-family: var(--display); font-size: 1.3rem; line-height: 1.15; display: block; color: var(--ink); margin: .15rem 0 .25rem; }
.tl-meta, .erow-meta { font-family: var(--sans); font-size: .8rem; color: var(--ink-2); display: block; }

/* ------------------------------------------------------------ event list rows */
.elist { list-style: none; margin: 0; padding: 0; }
.erow { display: grid; grid-template-columns: 3.6rem 84px minmax(0, 1fr) auto; gap: .9rem; align-items: center; padding: .7rem 0; border-bottom: 1px solid var(--rule); }
.erow-date { text-align: center; border-inline-end: 1px solid var(--h); padding-inline-end: .5rem; }
.erow-date .d { font-size: 1.6rem; }
.erow-date .to { display: block; font-family: var(--sans); font-size: .62rem; color: var(--ink-3); margin-top: .15rem; }
.erow-thumb { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-2); }
.erow-thumb picture, .erow-thumb img { width: 100%; height: 100%; object-fit: cover; }
.erow-kicker .cat { color: var(--h); }
.erow-title { font-size: 1.15rem; }
.erow-score { text-align: right; font-family: var(--sans); }
.erow-score b { display: block; font-family: var(--display); font-size: 1.5rem; font-weight: 500; line-height: 1; }
.erow-score span { font-size: .64rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }

/* ------------------------------------------------------------ ledger */
.ledger { border-top: 1px solid var(--ink); margin: 1.4rem 0 1.8rem; }
.ledger .lrow { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: 1rem; padding: .55rem 0; border-bottom: 1px solid var(--rule); align-items: baseline; }
.ledger .k { font-family: var(--sans); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.ledger .v { font-size: 1rem; }
.ledger .v .dline { display: block; }
.ledger .score { font-family: var(--display); font-size: 1.5rem; font-weight: 500; }
.ledger .band { font-family: var(--sans); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--h, var(--accent)); margin-inline-start: .3rem; }
.ledger.tight .lrow { grid-template-columns: 9rem minmax(0, 1fr); padding: .45rem 0; }
.ledger.tight .v { font-size: .96rem; }

/* ------------------------------------------------------------ prose */
.prose { max-width: var(--prose); }
.prose p, .longdesc p { font-size: 1.06rem; line-height: 1.68; }
.dropcap::first-letter { font-family: var(--display); font-size: 3.6em; float: left; line-height: .8; padding: .08em .08em 0 0; color: var(--h, var(--ink)); }
.esec { margin: 2.2rem 0; }
.esec h2 { font-size: 1.6rem; margin-bottom: .7rem; padding-top: .6rem; border-top: 1px solid var(--rule); }
.esec h2 .secnum { font-family: var(--sans); font-size: .7rem; letter-spacing: .16em; color: var(--h, var(--accent)); margin-inline-end: .8rem; vertical-align: middle; font-weight: 500; }
.subhead { font-family: var(--sans); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); margin: 1.2rem 0 .3rem; font-weight: 500; }
.inline-fig { margin: 1.6rem 0; }
.inline-fig img { width: 100%; height: auto; }
.strip { display: flex; gap: .6rem; overflow-x: auto; margin: 1.4rem 0; scroll-snap-type: x proximity; scrollbar-width: thin; }
.strip .strip-img { flex: 0 0 auto; width: min(420px, 72vw); aspect-ratio: 3 / 2; overflow: hidden; scroll-snap-align: start; }
.strip .strip-img img { width: 100%; height: 100%; object-fit: cover; }

/* ------------------------------------------------------------ entity layout */
.entity-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 3rem; }
.entity-rail { font-family: var(--sans); }
.rail-block { border-top: 1px solid var(--ink); padding: .8rem 0 1.2rem; margin-bottom: .6rem; }
.rail-block .eyebrow { margin-bottom: .5rem; }
.rail-dest { display: block; color: var(--ink); margin-bottom: .6rem; }
.rail-dest:hover { text-decoration: none; }
.rail-img { aspect-ratio: 4 / 3; overflow: hidden; margin-bottom: .5rem; }
.rail-img img { width: 100%; height: 100%; object-fit: cover; }
.rail-title { font-family: var(--display); font-size: 1.4rem; display: block; }
.rail-link { display: block; padding: .5rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); }
.rail-link b { display: block; font-weight: 500; }
.rail-link span { display: block; font-size: .8rem; color: var(--ink-3); }
.rail-block.commercial { border-top-color: var(--rule-2); }
.rail-block .sline { padding: .2rem 0 .4rem; }

/* ------------------------------------------------------------ bars (month activity) */
.bars { display: flex; align-items: flex-end; gap: 3px; height: 64px; margin: .6rem 0 .2rem; }
.bars.small { height: 38px; gap: 2px; }
.bar { flex: 1 1 0; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; position: relative; }
.bar .fill { display: block; width: 100%; background: var(--h); opacity: .85; min-height: 2px; }
.bar .lab { font-family: var(--sans); font-size: .58rem; letter-spacing: .04em; color: var(--ink-3); text-align: center; margin-top: .2rem; text-transform: uppercase; }
.bars.small .bar .lab { font-size: .5rem; }
.matters { border-top: 1px solid var(--ink); margin: 1rem 0 1.6rem; }
.mrow { display: grid; grid-template-columns: 3rem minmax(0, 1fr) minmax(0, 1.2fr); gap: .8rem; align-items: center; padding: .38rem 0; border-bottom: 1px solid var(--rule); }
.mname { font-family: var(--display); font-size: 1rem; letter-spacing: .08em; text-transform: uppercase; }
.mbar { display: block; height: 10px; background: var(--paper-2); position: relative; }
.mfill { display: block; height: 100%; background: var(--h); }
.mevents { font-family: var(--sans); font-size: .78rem; color: var(--ink-2); }
.mevents a { color: var(--ink-2); }

/* ------------------------------------------------------------ map */
.mapwrap { position: relative; }
.wmap { width: 100%; height: auto; display: block; }
.wmap .land path { fill: var(--paper-2); stroke: var(--rule-2); stroke-width: .5; }
:root[data-theme="dark"] .wmap .land path { fill: #24221D; stroke: #3d3a33; }
.wmap .arc { fill: none; stroke: var(--terra); stroke-width: 1.2; stroke-dasharray: 4 3; opacity: .85; }
.wmap .mp .dot { fill: var(--ink); }
.wmap .mp .halo { fill: var(--terra); opacity: .18; }
.wmap .mp.now .dot { fill: var(--terra); }
.wmap .mp:hover .dot, .wmap .mp:focus .dot { fill: var(--terra); }
.wmap .mp text { font-family: var(--sans); font-size: 10px; fill: var(--ink-2); }
.wmap .mp.hidden { display: none; }
.mapcard { position: absolute; background: var(--paper-3); border: 1px solid var(--rule); padding: .55rem .75rem; font-family: var(--sans); font-size: .82rem; pointer-events: none; box-shadow: var(--shadow); max-width: 240px; z-index: 5; }
.mapcard b { display: block; font-family: var(--display); font-size: 1.05rem; margin-bottom: .2rem; }
.mapcard small { display: block; color: var(--ink-3); }
.mapfilters { display: flex; gap: .4rem; flex-wrap: wrap; margin: .6rem 0 1rem; font-family: var(--sans); }
.mapfilters .chip { cursor: pointer; }
.chain { display: flex; flex-wrap: wrap; gap: .5rem .4rem; align-items: baseline; margin-top: 1rem; font-family: var(--sans); }
.chain-stop b { font-family: var(--display); font-weight: 500; font-size: 1.2rem; display: block; line-height: 1; }
.chain-stop small { color: var(--ink-3); }
.chain-arrow { color: var(--terra); font-size: 1.2rem; padding: 0 .2rem; }

/* ------------------------------------------------------------ features */
.featgrid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 1.6rem; }
.lead { position: relative; display: block; min-height: 420px; color: #fff; overflow: hidden; background: var(--ink); }
.lead:hover { text-decoration: none; }
.lead .lead-img { position: absolute; inset: 0; }
.lead .lead-img img { width: 100%; height: 100%; object-fit: cover; }
.lead::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10,10,8,.85) 0%, rgba(10,10,8,.25) 55%, transparent 85%); }
.lead-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.4rem 1.6rem; z-index: 1; }
.lead-body .tile-kicker { color: rgba(255,255,255,.8); }
.lead-title { display: block; font-family: var(--display); font-size: clamp(1.6rem, 2.6vw, 2.4rem); line-height: 1.1; text-shadow: 0 1px 12px rgba(0,0,0,.4); }
.lead-dek { display: block; margin-top: .5rem; color: rgba(255,255,255,.88); max-width: 40rem; font-size: 1rem; }
.feat-list { display: flex; flex-direction: column; }
.feat { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); align-items: center; }
.feat:hover { text-decoration: none; }
.feat-thumb { aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-2); display: block; }
.feat-thumb picture, .feat-thumb img { width: 100%; height: 100%; object-fit: cover; }
.feat .tile-kicker { color: var(--accent); }
.feat-title { font-family: var(--display); font-size: 1.2rem; line-height: 1.15; display: block; }
.feat-dek { display: block; font-size: .9rem; color: var(--ink-3); margin-top: .2rem; }

/* ------------------------------------------------------------ destination rows */
.drows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem 2rem; }
.drow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; color: var(--ink); align-items: stretch; border-bottom: 1px solid var(--rule); padding-bottom: 1rem; }
.drow:hover { text-decoration: none; }
.drow.flip .drow-img { order: 2; }
.drow-img { aspect-ratio: 4 / 5; overflow: hidden; background: var(--paper-2); display: block; }
.drow-img picture, .drow-img img { width: 100%; height: 100%; object-fit: cover; }
.drow-body { display: flex; flex-direction: column; }
.drow-body .tile-kicker { color: var(--ink-3); }
.drow-title { font-family: var(--display); font-size: 1.7rem; line-height: 1.05; }
.drow-desc { font-size: .94rem; color: var(--ink-2); margin: .4rem 0 auto; font-family: var(--serif); font-style: italic; }
.drow .bars { margin-top: .8rem; }

/* ------------------------------------------------------------ month grid, news */
.monthgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; }
.monthgrid a { border-top: 2px solid var(--h); padding: .5rem .2rem .4rem; color: var(--ink); display: block; }
.monthgrid a:hover { text-decoration: none; background: var(--paper-2); }
.monthgrid a.cur { background: var(--hs); }
.monthgrid b { display: block; font-family: var(--display); font-size: 1.5rem; font-weight: 500; line-height: 1; }
.monthgrid span { font-family: var(--sans); font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.newslist { list-style: none; margin: 0; padding: 0; }
.newslist li { padding: .55rem 0; border-bottom: 1px solid var(--rule); }
.newslist a { font-family: var(--serif); font-size: 1.02rem; display: block; color: var(--ink); }
.newslist span { font-family: var(--sans); font-size: .74rem; color: var(--ink-3); }

/* ------------------------------------------------------------ calendar */
.calhead { display: flex; align-items: baseline; gap: 1rem; flex-wrap: wrap; margin-bottom: .6rem; }
.calhead h1 { margin: 0; font-size: clamp(2rem, 4vw, 3.2rem); }
.calhead .nav a { font-family: var(--sans); font-size: .84rem; padding: .3rem .6rem; border: 1px solid var(--rule-2); margin-inline-end: .3rem; }
.calhead .nav a:hover { border-color: var(--ink); text-decoration: none; }
.viewsw { margin-inline-start: auto; font-family: var(--sans); font-size: .8rem; }
.viewsw a { padding: .3rem .6rem; border: 1px solid var(--rule-2); }
.viewsw a.on { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--ink); border-inline-start: 1px solid var(--rule); }
.cal-dow { font-family: var(--sans); font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); padding: .4rem .5rem; border-inline-end: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.cal-cell { min-height: 108px; padding: .35rem .4rem; border-inline-end: 1px solid var(--rule); border-bottom: 1px solid var(--rule); font-family: var(--sans); }
.cal-cell.out { background: var(--paper-2); opacity: .6; }
.cal-cell.today .cal-day { color: var(--terra); font-weight: 600; }
.cal-day { font-family: var(--display); font-size: 1rem; display: block; margin-bottom: .2rem; }
.cal-chip { display: block; font-size: .7rem; line-height: 1.25; padding: .12rem .3rem .12rem .4rem; border-inline-start: 2px solid var(--h); margin-bottom: .18rem; color: var(--ink); background: var(--paper-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-chip:hover { text-decoration: none; background: var(--hs); }
.cal-chip.est { border-inline-start-style: dashed; color: var(--ink-2); }
.cal-more { font-size: .66rem; color: var(--ink-3); }
.cal-legend { display: flex; gap: 1rem; flex-wrap: wrap; font-family: var(--sans); font-size: .74rem; color: var(--ink-3); margin: .6rem 0 1.6rem; }
.cal-legend i { display: inline-block; width: 10px; height: 10px; border-inline-start: 2px solid var(--h); vertical-align: middle; margin-inline-end: .3rem; }

/* ------------------------------------------------------------ weekends */
.wk { display: grid; grid-template-columns: 9rem minmax(0, 1fr) 8rem; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--rule); align-items: start; }
.wk-date { font-family: var(--display); font-size: 1.25rem; line-height: 1.1; }
.wk-date small { display: block; font-family: var(--sans); font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--h); margin-top: .2rem; }
.wk-body .places { font-family: var(--sans); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.wk-body .evs a { font-family: var(--display); font-size: 1.05rem; }
.wk-int { height: 8px; background: var(--paper-2); position: relative; margin-top: .5rem; }
.wk-int span { position: absolute; inset: 0 auto 0 0; background: var(--h); }
.wk-n { font-family: var(--sans); font-size: .72rem; color: var(--ink-3); text-align: right; }
.wk-n b { display: block; font-family: var(--display); font-size: 1.7rem; font-weight: 500; line-height: 1; color: var(--ink); }

/* ------------------------------------------------------------ tables */
.tablewrap { overflow-x: auto; margin: .6rem 0 1.4rem; }
table.data { width: 100%; border-collapse: collapse; font-family: var(--sans); font-size: .9rem; }
table.data th { text-align: right; font-weight: 500; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); padding: .5rem .6rem; border-bottom: 1px solid var(--ink); white-space: nowrap; }
table.data td { text-align: right; padding: .55rem .6rem; border-bottom: 1px solid var(--rule); vertical-align: top; }
table.data th.name, table.data td.name { text-align: left; }
table.data td.name small { display: block; color: var(--ink-3); font-size: .78rem; }
table.data caption { caption-side: bottom; text-align: left; font-size: .78rem; color: var(--ink-3); padding-top: .6rem; }
.verify { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; font-family: var(--sans); font-size: .8rem; color: var(--ink-3); border-top: 1px solid var(--rule); padding-top: .8rem; margin-top: 2rem; }
.sources { margin-top: 2rem; }
.sources h2 { font-size: 1.1rem; font-family: var(--sans); letter-spacing: .12em; text-transform: uppercase; font-weight: 500; color: var(--ink-3); }
.sources ol { padding-inline-start: 1.2rem; font-family: var(--sans); font-size: .84rem; color: var(--ink-2); }
.sources li { margin-bottom: .3rem; }
.sources .tier { font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; border: 1px solid var(--rule-2); padding: 0 .35em; margin-inline-start: .3rem; }
.pager { display: flex; justify-content: space-between; font-family: var(--sans); font-size: .85rem; margin: 1.5rem 0; }
.stats { display: flex; gap: 2rem; flex-wrap: wrap; margin: 1rem 0; }
.stat b { display: block; font-family: var(--display); font-size: 2.4rem; font-weight: 500; line-height: 1; }
.stat span { font-family: var(--sans); font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }

/* ------------------------------------------------------------ gallery */
.gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; margin: 1.2rem 0 2rem; }
.gallery picture { aspect-ratio: 4 / 3; overflow: hidden; }
.gallery picture:nth-child(4n+1) { grid-column: span 2; aspect-ratio: auto; }
.gallery picture img { width: 100%; height: 100%; object-fit: cover; }

/* ------------------------------------------------------------ ticker */
.ticker { overflow: hidden; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); font-family: var(--sans); font-size: .8rem; padding: .45rem 0; white-space: nowrap; }
.ticker-track { display: inline-block; padding-left: 100%; animation: tick 70s linear infinite; }
.ticker-track span { margin-inline-end: 2.4rem; }
.ticker-track b { font-family: var(--display); font-weight: 500; font-size: .95rem; }
@keyframes tick { to { transform: translateX(-100%); } }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; padding-left: 0; white-space: normal; } }

/* ------------------------------------------------------------ footer */
.foot { position: relative; margin-top: 3rem; color: var(--ink); }
.foot-photo { position: absolute; inset: 0 0 auto 0; height: 420px; overflow: hidden; z-index: 0; }
.foot-photo picture, .foot-photo img { width: 100%; height: 100%; object-fit: cover; }
.foot-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, var(--paper) 0%, rgba(246,242,234,.75) 35%, rgba(246,242,234,.97) 100%); }
:root[data-theme="dark"] .foot-photo::after { background: linear-gradient(to bottom, var(--paper) 0%, rgba(23,22,19,.8) 35%, rgba(23,22,19,.98) 100%); }
.foot-in { position: relative; z-index: 1; max-width: var(--maxw); margin: 0 auto; padding: 4rem 1.2rem 2rem; }
.foot-brand { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, 1.2fr); gap: 2rem; align-items: center; padding-bottom: 2rem; border-bottom: 1px solid var(--rule-2); margin-bottom: 1.6rem; }
.foot-tag { font-family: var(--display); font-size: 1.5rem; margin: 0; font-style: italic; }
.fsub label { text-transform: none; letter-spacing: 0; font-size: .82rem; color: var(--ink-2); }
.fsub-row { display: flex; gap: .5rem; margin-top: .5rem; }
.fsub-row input { flex: 1; }
.fcols { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.4rem; font-family: var(--sans); font-size: .84rem; }
.fcol b { display: block; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; font-size: .68rem; color: var(--ink-3); margin-bottom: .5rem; }
.fcol a { display: block; padding: .18rem 0; color: var(--ink); }
.credits { margin: 2rem 0 0; font-family: var(--sans); font-size: .78rem; color: var(--ink-3); border-top: 1px solid var(--rule); padding-top: .6rem; }
.credits summary { cursor: pointer; }
.credits ol { padding-inline-start: 1.2rem; }
.f-family { margin: 1.6rem 0 1rem; font-family: var(--sans); font-size: .8rem; color: var(--ink-3); }
.flegal { font-family: var(--sans); font-size: .74rem; color: var(--ink-3); line-height: 1.5; border-top: 1px solid var(--rule); padding-top: 1rem; }
.flegal p { margin-bottom: .6rem; }
.fbottom { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; font-family: var(--sans); font-size: .78rem; color: var(--ink-3); border-top: 1px solid var(--rule); padding-top: .8rem; margin-top: 1rem; }
.fbottom .row { display: flex; gap: 1rem; align-items: center; }

/* ------------------------------------------------------------ misc components */
.relgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .6rem 1.4rem; }
.relgrid a { display: block; padding: .5rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); }
.relgrid a b { font-family: var(--display); font-weight: 500; display: block; }
.relgrid a span { font-family: var(--sans); font-size: .78rem; color: var(--ink-3); display: block; }
.pathlist { list-style: none; margin: 0; padding: 0; }
.pathlist li a { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: .8rem; padding: .8rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); }
.pathlist .n { font-family: var(--display); font-size: 1.6rem; color: var(--ink-3); }
.pathlist .t b { font-family: var(--display); font-weight: 500; font-size: 1.15rem; display: block; }
.pathlist .t span { font-family: var(--sans); font-size: .84rem; color: var(--ink-3); display: block; }
.bigsearch { display: flex; gap: .5rem; max-width: 40rem; margin: 1rem 0; }
.bigsearch input { flex: 1; font-size: 1.05rem; padding: .7rem .9rem; }
.answer { font-size: 1.08rem; }
.glossary dt { font-family: var(--display); font-size: 1.2rem; margin-top: 1.1rem; }
.glossary dd { margin: .2rem 0 0; color: var(--ink-2); }
.two { columns: 2; column-gap: 2.4rem; }
.two > * { break-inside: avoid; }
.climate { font-size: .84rem; }
.climate td, .climate th { padding: .35rem .4rem; }
.dest-card { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); align-items: center; }
.dest-card:hover { text-decoration: none; }
.dest-card .dimg { aspect-ratio: 1; overflow: hidden; border-radius: 50%; }
.dest-card .dimg picture, .dest-card .dimg img { width: 100%; height: 100%; object-fit: cover; }
.dest-card .dname { font-family: var(--display); font-size: 1.4rem; display: block; }
.dest-card .ddesc { font-size: .9rem; color: var(--ink-2); display: block; font-family: var(--serif); font-style: italic; }
.dest-card .bars { margin-top: .4rem; }
.aside-note { font-family: var(--sans); font-size: .84rem; color: var(--ink-2); border-inline-start: 2px solid var(--h, var(--accent)); padding: .4rem .8rem; }

/* ------------------------------------------------------------ responsive */
@media (max-width: 1100px) {
  .mainnav > a, .mainnav .ddbtn { font-size: .8rem; padding: .4rem .4rem; }
  .wordmark { display: none; }
  .searchwrap { flex-basis: 14rem; }
  .fcols { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .foot-brand { grid-template-columns: 1fr; }
  .rtiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .stiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .entity-grid { grid-template-columns: 1fr; }
  .entity-rail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2rem; }
}
@media (max-width: 950px) {
  .mainnav { display: none; }
  .burger { display: inline-flex; }
  .split, .featgrid, .drows { grid-template-columns: 1fr; }
  .ctiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hero.tall { height: clamp(420px, 70vh, 640px); }
}
@media (max-width: 640px) {
  .masthead { flex-wrap: wrap; gap: .4rem; padding: .5rem .8rem; }
  .searchwrap { flex: 1 1 100%; order: 10; margin: .2rem 0 0; }
  .hide-sm { display: none !important; }
  .page { padding: 1rem .9rem 2rem; }
  .bleed { padding-inline: .9rem; }
  .hero { height: clamp(300px, 64vw, 420px); }
  .hero.tall { height: clamp(380px, 78vh, 560px); }
  .hero h1 { font-size: clamp(1.9rem, 9vw, 2.8rem); }
  .hero-dek { font-size: 1rem; }
  .tiles, .rtiles, .stiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
  .now-tiles { grid-auto-rows: 150px; }
  .tile-title { font-size: 1.1rem; }
  .tile.wide .tile-title, .tile.tall .tile-title { font-size: 1.25rem; }
  .ctiles { gap: .6rem; }
  .ctiles .tile.wide { grid-column: span 2; }
  .tl { grid-template-columns: 3.2rem 72px minmax(0, 1fr); gap: .6rem; }
  .erow { grid-template-columns: 3rem 64px minmax(0, 1fr); }
  .erow-score { display: none; }
  .erow-title, .tl-title { font-size: 1.05rem; }
  .ledger .lrow, .ledger.tight .lrow { grid-template-columns: 1fr; gap: .15rem; padding: .45rem 0; }
  .drow { grid-template-columns: 110px minmax(0, 1fr); }
  .drow.flip .drow-img { order: 0; }
  .drow-img { aspect-ratio: 3 / 4; }
  .drow-title { font-size: 1.3rem; }
  .monthgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fcols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .entity-rail { grid-template-columns: 1fr; }
  .sline-stop { width: 120px; }
  .sline-ring { width: 76px; height: 76px; }
  .sline-arrow { margin-top: 42px; flex-basis: 18px; }
  .cal-grid { display: none; }
  .wk { grid-template-columns: 6rem minmax(0, 1fr); }
  .wk-n { display: none; }
  .mrow { grid-template-columns: 2.4rem minmax(0, 1fr); }
  .mevents { grid-column: 2; }
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery picture:nth-child(4n+1) { grid-column: span 2; }
  .two { columns: 1; }
  .lead { min-height: 320px; }
  .foot-photo { height: 260px; }
  input, select, textarea, #searchBox, .filterbar select, .filterbar input, .bigsearch input, .fsub-row input, .follow input[type=email] { font-size: 16px; }
}

.credits li, .credits ol { overflow-wrap: anywhere; }


/* ---- weekend cards: the twelve densest weekends, each under its defining photograph ---- */
.wkcards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.6rem 1.4rem; }
.wkcard { display: flex; flex-direction: column; }
.wkcard-pic { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-2); }
.wkcard-pic img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s var(--ease); }
.wkcard:hover .wkcard-pic img { transform: scale(1.04); }
.wkcard-veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,19,17,.42) 0%, rgba(20,19,17,0) 46%); }
.wkcard-rank { position: absolute; top: .5rem; left: .7rem; font-family: var(--display); font-size: 1.6rem; line-height: 1; color: #fff; text-shadow: 0 1px 8px rgba(0,0,0,.45); }
.wkcard-body { padding-top: .6rem; border-top: 2px solid var(--h); margin-top: .7rem; }
.wkcard-date { font-family: var(--display); font-size: 1.15rem; line-height: 1.15; margin: 0 0 .25rem; }
.wkcard .places { display: block; font-family: var(--sans); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.wkcard .evs { margin-top: .35rem; }
.wkcard .evs a { font-family: var(--display); font-size: .98rem; }
.wkcard .fineprint { margin-top: .35rem; }
@media (max-width: 980px) { .wkcards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .wkcards { grid-template-columns: 1fr; } }

/* ---- field-guide list with pictures ---- */
.pathlist.withpics li a { display: grid; grid-template-columns: 2.4rem 120px minmax(0, 1fr); gap: .9rem; align-items: center; }
.pathlist.withpics .pathpic { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--paper-2); }
.pathlist.withpics .pathpic img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 620px) { .pathlist.withpics li a { grid-template-columns: 2rem 84px minmax(0, 1fr); } }


/* ---- news rows: our own photograph of the matched event, linked to our page ---- */
.newsrow { grid-template-columns: 3.6rem 150px minmax(0, 1fr); }
.newspic { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--paper-2); }
.newspic img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 720px) { .newsrow { grid-template-columns: 3rem 92px minmax(0, 1fr); } }


/* ---- press cards: our own credited photograph of each story's subject, the headline on the image ---- */
.ptiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; }
.ptile { aspect-ratio: 4 / 5; min-height: 0; }
.ptile .tile-title { font-size: 1.04rem; line-height: 1.22; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.ptile .tile-meta { font-size: .7rem; }
@media (max-width: 720px) { .ptiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 460px) { .ptiles { grid-template-columns: 1fr; } .ptile { aspect-ratio: 16 / 11; } }

/* ---- month page: week-by-week illustrated timeline ---- */
.mweeks { display: grid; gap: 1.2rem; margin-top: .4rem; }
.mweek { display: grid; grid-template-columns: 6.6rem minmax(0, 1fr); gap: 1rem; align-items: start; }
.mweek-label { font-family: var(--display); font-size: 1.1rem; line-height: 1.15; border-top: 2px solid var(--h); padding-top: .45rem; }
.mweek-label small { display: block; font-family: var(--sans); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-top: .25rem; }
.mweek .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
.mweek .tile { aspect-ratio: 4 / 3; min-height: 0; }
.mweek .tile-title { font-size: 1.02rem; }
@media (max-width: 720px) { .mweek { grid-template-columns: 1fr; gap: .5rem; } .mweek .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- weekend cards: the dates and places sit on the photograph, white over a dark gradient ---- */
.wkcard-pic picture, .pathpic picture, .newspic picture { position: absolute; inset: 0; display: block; }
.pathpic, .newspic { position: relative; }
.wkcard-veil { background: linear-gradient(to top, rgba(12,12,10,.82) 0%, rgba(12,12,10,.34) 46%, rgba(12,12,10,.04) 74%, transparent 100%); }
.wkcard-rank { background: rgba(12,12,10,.5); padding: .12rem .45rem; font-size: 1.3rem; }
.wkcard-head { position: absolute; left: 0; right: 0; bottom: 0; padding: .7rem .85rem; color: #fff; z-index: 1; }
.wkcard-head .wkcard-date { display: block; margin: 0; color: #fff; font-family: var(--display); font-size: 1.3rem; line-height: 1.1; text-shadow: 0 1px 10px rgba(0,0,0,.45); }
.wkcard-where { display: block; font-family: var(--sans); font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.88); margin-top: .22rem; }
.wkcard-body { border-top: 0; margin-top: .55rem; padding-top: 0; }
.wkcards.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 520px) { .wkcards.two { grid-template-columns: 1fr; } }

/* ---- list rows: the importance band as a word; the number lives in the tooltip ---- */
.erow-band { display: inline-block; font-family: var(--sans); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); border: 1px solid var(--rule); padding: .18rem .45rem; white-space: nowrap; cursor: help; }

/* ---- month page: the leading destinations illustrated under "Important destinations" ---- */
.dtiles { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: .6rem; }
.dtiles .tile { aspect-ratio: 16 / 10; min-height: 0; }
@media (max-width: 560px) { .dtiles { grid-template-columns: 1fr; } }

/* ---- designed plates: a card, row, ring or hero whose subject has no photograph of its own left to show ----
   Dark in both themes so the white headings stay legible; the subject's hue lights one corner, a hairline frame and
   one large Didone letter carry the design. Nothing pretends to be a photograph. */
.plate { position: absolute; inset: 0; overflow: hidden; display: block; background: #141310;
  background: radial-gradient(125% 95% at 16% 8%, color-mix(in srgb, var(--h, #1F5C8C) 42%, #16150f) 0%, #141310 58%, #0e0d0b 100%); }
.plate::after { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(255,255,255,.13); pointer-events: none; }
.plate-mark { position: absolute; right: .05em; top: -.2em; font-family: var(--display); font-weight: 500; line-height: 1;
  font-size: clamp(6rem, 15vw, 10.5rem); color: rgba(255,255,255,.085); font-variation-settings: "opsz" 96; pointer-events: none; user-select: none; }
.erow-thumb, .tl-thumb, .drow-img, .feat-thumb, .newspic, .pathpic, .wkcard-pic, .lead, .rail-dest { position: relative; }
.erow-thumb .plate::after, .tl-thumb .plate::after, .feat-thumb .plate::after, .newspic .plate::after, .pathpic .plate::after { inset: 4px; }
.erow-thumb .plate-mark, .tl-thumb .plate-mark, .feat-thumb .plate-mark, .newspic .plate-mark, .pathpic .plate-mark { font-size: 3.4rem; right: .1em; top: -.12em; color: rgba(255,255,255,.16); }
.sline-ring .plate { inset: 4px; border-radius: 50%; }
.sline-ring .plate::after { inset: 5px; border-radius: 50%; }
.sline-ring .plate-mark { font-size: 3.1rem; right: 50%; top: 50%; transform: translate(50%, -50%); color: rgba(255,255,255,.2); }
.sline.compact .sline-ring .plate-mark { font-size: 2.3rem; }
.drow-img .plate-mark, .lead .plate-mark, .wkcard-pic .plate-mark { font-size: clamp(7rem, 14vw, 12rem); }
.drow-img:has(.plate) { min-height: 12rem; }
.tile.is-plate::before { background: linear-gradient(to top, rgba(10,10,8,.55) 0%, rgba(10,10,8,.1) 55%, transparent 80%); }
/* heroes: the same plate, full bleed, when a page has no photograph or supplied art for its heading */
.hero.plate-hero { background: #141310; background: radial-gradient(90% 120% at 82% 0%, color-mix(in srgb, var(--h, #1F5C8C) 36%, #17160f) 0%, #141310 55%, #0d0c0a 100%); }
.hero.plate-hero .plate-mark { font-size: clamp(15rem, 36vw, 32rem); right: 3vw; top: -.16em; color: rgba(255,255,255,.055); }
.hero.plate-hero .hero-veil { background: linear-gradient(to top, rgba(12,12,10,.35) 0%, transparent 60%); }
.hero.band.plate-hero .plate-mark { font-size: clamp(9rem, 20vw, 16rem); }

/* ===== 19 Sep 2026: NO TEXT ON PHOTOGRAPHS. Titles sit beside or under the picture, never on it;
   headlines in "In the press" are plain text. (Laurence: text over pictures reads as AI-made.) ===== */
/* page heroes: words left, photograph right */
.hero, .hero.tall, .hero.band, .hero.entity { height: auto; max-width: var(--maxw); margin: 0 auto; padding: 2.2rem 1.2rem 1.6rem;
  background: none; color: var(--ink); overflow: visible; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr);
  gap: 2.4rem; align-items: center; border-bottom: 1px solid var(--rule); }
.hero::after, .hero .hero-veil { display: none; }
.hero .hero-pic { position: relative; inset: auto; grid-column: 2; grid-row: 1; display: block; }
.hero .hero-pic img { height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 2px; display: block; }
.hero.band .hero-pic img { aspect-ratio: 16 / 9; }
.hero .hero-body { grid-column: 1; grid-row: 1; padding: 0; margin: 0; max-width: none; }
.hero h1, .hero.band h1 { color: var(--ink); text-shadow: none; font-size: clamp(2rem, 4.2vw, 3.4rem); max-width: 20ch; }
.hero .hero-place { color: var(--ink-3); }
.hero-dek { color: var(--ink-2); text-shadow: none; }
.hero-meta { color: var(--ink-3); }
.hero-meta a, .hero-body .eyebrow a, .hero .eyebrow.light a { color: var(--accent); }
.hero .eyebrow, .hero .eyebrow.light { color: var(--accent); }
.hero .fav { color: var(--ink-3); }
.hero .st { border-color: var(--rule-2); color: var(--ink); }
.hero.plate-hero { grid-template-columns: 1fr; }
.hero.plate-hero > .plate, .hero.plate-hero > .hero-pic { display: none; }
@media (max-width: 860px) {
  .hero, .hero.tall, .hero.band, .hero.entity { grid-template-columns: 1fr; gap: 1.2rem; padding-top: 1.4rem; }
  .hero .hero-pic { grid-column: 1; grid-row: 2; }
}
/* tiles: picture on top, words underneath */
.tile { background: none; color: var(--ink); min-height: 0; overflow: visible; }
.tile::before, .tile.is-plate::before { display: none; }
.tile::after { display: none; }
.tile .tile-img { position: relative; inset: auto; display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 2px; }
.tile .tile-img img { height: 100%; }
.tile:hover .tile-img img { transform: none; }
.tile-body { position: static; padding: .6rem .1rem .2rem; border-top: 2px solid var(--h, var(--accent)); margin-top: .5rem; }
.tile .tile-kicker, .lead-body .tile-kicker { color: var(--ink-3); }
.tile-title, .tile.wide .tile-title, .tile.tall .tile-title { color: var(--ink); text-shadow: none; font-size: 1.2rem; }
.tile-meta { color: var(--ink-3); }
.tile:hover .tile-title { color: var(--accent); }
.now-tiles { grid-auto-rows: auto; }
.now-tiles .tile.tall { grid-row: auto; }
.rtiles .tile, .stiles .tile, .ctiles .tile { aspect-ratio: auto; }
.rtiles .tile .tile-img, .stiles .tile .tile-img { aspect-ratio: 3 / 4; }
.ctiles .tile.wide .tile-img { aspect-ratio: 8 / 3; }
/* In the press: headlines as text, no photographs */
.ptile { aspect-ratio: auto; }
.ptile .tile-img { display: none; }
.ptile .tile-body { border-top: 1px solid var(--rule-2); margin-top: 0; padding-top: .7rem; }
.ptile .tile-title { font-size: 1.05rem; }
/* the lead story: photograph, then the words */
.lead { min-height: 0; background: none; color: var(--ink); overflow: visible; }
.lead::before { display: none; }
.lead .lead-img { position: relative; inset: auto; display: block; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 2px; }
.lead .lead-img img { height: 100%; }
.lead-body { position: static; padding: .8rem 0 0; }
.lead-title { color: var(--ink); text-shadow: none; }
.lead-dek { color: var(--ink-2); }
.lead:hover .lead-title { color: var(--accent); }
/* footer: no faded photograph behind the text */
.foot-photo { display: none; }
.foot-in { padding-top: 2.4rem; }
/* home: circuits and seasonal guides read as text; the photographs stay with the events */
.textonly .tile-img { display: none; }
.textonly .tile.wide { grid-column: auto; }
.textonly .tile-body { margin-top: 0; }

/* 19 Sep 2026: the importance label (span.band) picked up the full-width section band styles and covered
   its own heading as a tall beige box. */
span.band { background: none; padding-block: 0; font-family: var(--sans); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--h, var(--accent)); margin-inline-start: .3rem; }

/* 19 Sep 2026: one-column grids may shrink below their widest item on a phone, so a long word, a wide
   table or a sidebar line can no longer push the page past the screen edge. Same conditions as the rules above. */
@media (max-width: 1100px) { .foot-brand, .entity-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 950px) { .split, .featgrid, .drows { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .ledger .lrow, .ledger.tight .lrow, .entity-rail { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 520px) { .wkcards, .wkcards.two { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 460px) { .ptiles { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 720px) { .mweek { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .dtiles { grid-template-columns: minmax(0, 1fr); } }
.hero.plate-hero { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 860px) { .hero, .hero.tall, .hero.band, .hero.entity { grid-template-columns: minmax(0, 1fr); } }

/* ===== 20 Sep 2026 (Laurence): back to the original house style — Bodoni display, the
   seasonal hues, the same layout — but the paper is white rather than ivory, and the
   recessed bands are a neutral grey so nothing reads as beige. ===== */
:root {
  --paper: #FFFFFF; --paper-2: #F3F3F1; --paper-3: #FFFFFF;
  --rule: #E2E1DD; --rule-2: #C7C5C0;
}

/* 20 Sep 2026: map pins are drawn in the map's 1000-unit space, so on a phone the whole map is about a third
   of that and a 3-unit dot disappeared. Bigger dots and halos below 640px keep every map readable. */
@media (max-width: 640px) {
  .wmap .mp .dot { r: 9px; }
  .wmap .mp .halo { r: 20px; }
}
