/* ============================================================
   GO CASENTINO — one stylesheet for the whole site.
   GENERATED by scripts/build_site.py — edit the script, not this file.

   Tokens from design/DESIGN.md (variant 2, stripped back): warm stone
   paper, forest-green structure, terracotta accent, Fraunces + Work Sans.
   Mobile-first. Rules, not shadows. The list is the product.
   ============================================================ */

:root{
  --stone-050: oklch(0.97 0.012 85);
  --stone-100: oklch(0.94 0.014 82);
  --stone-200: oklch(0.89 0.016 80);
  --stone-300: oklch(0.82 0.020 78);
  --sand-400:  oklch(0.75 0.035 75);
  --ink-900:   oklch(0.20 0.014 60);
  --ink-700:   oklch(0.34 0.018 60);
  --ink-500:   oklch(0.52 0.020 66);

  --forest-900: oklch(0.30 0.045 150);
  --forest-700: oklch(0.42 0.060 150);

  --terracotta-700: oklch(0.47 0.120 38);
  --terracotta-600: oklch(0.55 0.130 40);
  --terracotta-500: oklch(0.63 0.140 45);
  --terracotta-100: oklch(0.92 0.030 55);
  --gold-500:  oklch(0.72 0.100 75);

  --cat-food:      oklch(0.47 0.120 38);
  --cat-music:     oklch(0.42 0.060 150);
  --cat-religious: oklch(0.42 0.070 20);
  --cat-outdoors:  oklch(0.45 0.055 130);
  --cat-market:    oklch(0.42 0.015 60);
  --cat-craft:     oklch(0.47 0.070 75);
  --cat-culture:   oklch(0.44 0.045 55);

  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px;
  --s-6:32px; --s-7:48px; --s-8:64px;

  --r-xs:2px; --r-sm:4px; --r-pill:999px;
  --shadow-2: 0 6px 24px -8px oklch(0.20 0.014 60 / 0.16);

  --dur-fast:120ms; --dur-base:180ms;
  --ease: cubic-bezier(0.2, 0, 0, 1);

  --serif: "Fraunces", Georgia, serif;
  --sans:  "Work Sans", system-ui, -apple-system, sans-serif;

  --page: 1080px;
  --gutter: 20px;
  --header-h: 56px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0;
  background: var(--stone-050);
  color: var(--ink-700);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
body.is-locked{ overflow:hidden; }
h1,h2,h3{
  margin:0; color: var(--ink-900);
  font-family: var(--serif); font-weight:400;
  font-variation-settings:"SOFT" 0,"WONK" 0;
  letter-spacing:-0.012em;
}
p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
a{ color:inherit; }
button{ font:inherit; color:inherit; }
img{ max-width:100%; height:auto; }

.num{ font-variant-numeric: tabular-nums lining-nums; font-feature-settings:"tnum" 1,"lnum" 1; }
.it{ font-family: var(--serif); font-style:italic; font-weight:300; color: var(--ink-500); }
.eyebrow{
  font-family: var(--sans); font-size:0.6875rem; line-height:1.2; font-weight:600;
  letter-spacing:0.12em; text-transform:uppercase; color: var(--ink-500);
}
.visually-hidden{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
:focus-visible{ outline:2px solid var(--forest-700); outline-offset:2px; border-radius: var(--r-xs); }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:100;
  padding: var(--s-3) var(--s-4);
  background: var(--stone-050); color: var(--ink-900);
  border:1px solid var(--ink-900); border-radius: var(--r-sm);
  font-size:0.875rem; font-weight:600; text-decoration:none;
}
.skip-link:focus{ left: var(--s-3); top: var(--s-3); }

.wrap{ width:100%; max-width: var(--page); margin-inline:auto; padding-inline: var(--gutter); }

/* ── HEADER — wordmark + menu button, nothing else on mobile ── */
.site-header{
  position:sticky; top:0; z-index:30;
  background: var(--stone-050);
  border-bottom:1px solid var(--stone-300);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap: var(--s-4); min-height: var(--header-h);
}
.brand{ text-decoration:none; display:inline-flex; align-items:center; }
.wordmark{
  font-family: var(--serif); font-size:1.25rem; line-height:1.1;
  color: var(--forest-700); letter-spacing:-0.02em;
  font-variation-settings:"SOFT" 20,"WONK" 1;
}
.wordmark b{ font-weight:600; }

.menu-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; margin-right:-10px; padding:0;
  background:none; border:0; cursor:pointer; color: var(--ink-900);
  transition: color var(--dur-fast) var(--ease);
}
.menu-btn .bars{ display:block; width:20px; height:11px; position:relative; }
.menu-btn .bars::before,
.menu-btn .bars::after{
  content:""; position:absolute; left:0; right:0; height:1.5px; background: currentColor;
}
.menu-btn .bars::before{ top:0; }
.menu-btn .bars::after{ bottom:0; }
.menu-btn:hover{ color: var(--terracotta-600); }

.desk-nav{ display:none; }

/* ── MENU OVERLAY ──────────────────────────────────────── */
.menu[hidden]{ display:none; }
.menu{ position:fixed; inset:0; z-index:60; }
.menu-backdrop{
  position:absolute; inset:0; border:0; padding:0; cursor:pointer;
  background: oklch(0.20 0.014 60 / 0.42);
}
.menu-panel{
  position:relative; z-index:1;
  margin-left:auto; width:min(100%, 380px); height:100%;
  display:flex; flex-direction:column;
  background: var(--stone-050);
  border-left:1px solid var(--stone-300);
  box-shadow: var(--shadow-2);
  animation: menu-in var(--dur-base) var(--ease);
}
@keyframes menu-in{ from{ transform:translateX(12px); opacity:0; } to{ transform:none; opacity:1; } }
.menu-head{
  display:flex; align-items:center; justify-content:space-between;
  min-height: var(--header-h); padding-inline: var(--gutter);
  border-bottom:1px solid var(--stone-300);
}
.menu-close{
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; margin-right:-10px; padding:0;
  background:none; border:0; cursor:pointer;
  font-size:1.5rem; line-height:1; color: var(--ink-700);
  transition: color var(--dur-fast) var(--ease);
}
.menu-close:hover{ color: var(--terracotta-600); }
.menu-nav{ padding: var(--s-4) var(--gutter) 0; }
.menu-nav a{
  display:flex; align-items:center; min-height:56px;
  font-family: var(--serif); font-size:1.375rem; font-weight:400;
  color: var(--ink-900); text-decoration:none;
  border-bottom:1px solid var(--stone-300);
  transition: color var(--dur-fast) var(--ease);
}
.menu-nav a:hover{ color: var(--terracotta-600); }
.menu-nav a[aria-current="page"]{ color: var(--forest-700); }
.menu-foot{ margin-top:auto; padding: var(--s-5) var(--gutter) var(--s-6); }

.lang{ display:inline-flex; border:1px solid var(--stone-300); border-radius: var(--r-sm); overflow:hidden; }
.lang a{
  display:flex; align-items:center; justify-content:center;
  min-width:48px; min-height:44px; padding:0 var(--s-3);
  font-size:0.75rem; font-weight:600; letter-spacing:0.08em;
  color: var(--ink-500); text-decoration:none;
  transition: background-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.lang a + a{ border-left:1px solid var(--stone-300); }
.lang a:hover{ background: var(--stone-100); color: var(--ink-900); }
.lang a[aria-current="true"]{ background: var(--stone-200); color: var(--ink-900); }

/* ── BUTTONS ───────────────────────────────────────────── */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap: var(--s-2);
  min-height:48px; padding:0 var(--s-5);
  font-size:0.9375rem; font-weight:600;
  border:1px solid transparent; border-radius: var(--r-sm);
  text-decoration:none; cursor:pointer; background:transparent;
  transition: background-color var(--dur-fast) var(--ease),
              border-color var(--dur-fast) var(--ease),
              color var(--dur-fast) var(--ease),
              transform var(--dur-fast) var(--ease);
}
.btn-primary{ background: var(--terracotta-600); color: var(--stone-050); }
.btn-primary:hover{ background: var(--terracotta-500); }
.btn-primary:active{ transform: translateY(1px); }
.btn-secondary{ border-color: var(--ink-900); color: var(--ink-900); }
.btn-secondary:hover{ background: var(--stone-200); }

/* ── FEATURED SLIDER ──────────────────────────────────────
   Deliberately short: the calendar has to start above the fold. */
.featured{ padding-top: var(--s-4); }
.featured-head{ display:flex; align-items:baseline; gap: var(--s-2); padding-bottom: var(--s-2); }
.featured-head .it{ font-size:0.875rem; text-transform:none; letter-spacing:0; }

.slider{ position:relative; }
.slides{
  display:flex; gap: var(--s-4);
  overflow-x:auto; overscroll-behavior-x:contain;
  scroll-snap-type: x mandatory;
  scrollbar-width:none;
  padding-inline: var(--gutter);
  scroll-padding-inline: var(--gutter);
}
.slides::-webkit-scrollbar{ display:none; }
.slide{ flex:0 0 100%; scroll-snap-align:start; }
.slide-link{
  display:block; text-decoration:none; color:inherit;
  padding-bottom: var(--s-3);
  border-bottom:1px solid var(--stone-300);
}
.ph{
  display:block; position:relative; aspect-ratio: 21 / 9;
  border-radius: var(--r-xs); overflow:hidden;
  background:
    linear-gradient(178deg, oklch(0.86 0.035 115 / 0.85) 0%, oklch(0.86 0.035 115 / 0) 46%),
    linear-gradient(2deg, oklch(0.70 0.060 120) 0%, oklch(0.70 0.060 120 / 0) 38%),
    linear-gradient(180deg, oklch(0.92 0.030 55) 0%, oklch(0.75 0.035 75) 100%);
}
.ph-2{
  background:
    linear-gradient(176deg, oklch(0.86 0.035 115 / 0.7) 0%, oklch(0.86 0.035 115 / 0) 52%),
    linear-gradient(4deg, oklch(0.55 0.130 40 / 0.55) 0%, oklch(0.55 0.130 40 / 0) 42%),
    linear-gradient(180deg, oklch(0.94 0.014 82) 0%, oklch(0.75 0.035 75) 100%);
}
.ph-3{
  background:
    linear-gradient(180deg, oklch(0.92 0.030 55) 0%, oklch(0.92 0.030 55 / 0) 44%),
    linear-gradient(6deg, oklch(0.42 0.060 150 / 0.6) 0%, oklch(0.42 0.060 150 / 0) 40%),
    linear-gradient(180deg, oklch(0.86 0.035 115) 0%, oklch(0.70 0.060 120) 100%);
}
.ph-label{
  position:absolute; left:8px; bottom:8px;
  padding:3px 7px; border-radius: var(--r-xs);
  background: oklch(0.97 0.012 85 / 0.85); color: var(--ink-700);
  font-size:0.625rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase;
}
.slide-body{ padding-top: var(--s-3); }
.slide-meta{
  display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  font-size:0.75rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase;
  color: var(--ink-500);
}
.slide-meta .d{ color: var(--terracotta-700); }
.slide-meta .sep{ color: var(--stone-300); }
.slide-title{
  margin-top:4px;
  font-family: var(--serif); font-weight:500; font-size:1.25rem; line-height:1.2;
  letter-spacing:-0.014em; color: var(--ink-900);
  transition: color var(--dur-fast) var(--ease);
}
.slide-desc{
  margin-top:5px;
  font-size:0.875rem; line-height:1.45; color: var(--ink-500); max-width: 52ch;
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.slide-more{
  display:inline-flex; align-items:center; gap:6px; margin-top: var(--s-2);
  font-size:0.8125rem; font-weight:600; color: var(--ink-900);
  border-bottom:1px solid var(--sand-400); padding-bottom:2px;
  transition: border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.slide-more .arrow{ transition: transform var(--dur-fast) var(--ease); }
.slide-link:hover .slide-title{ color: var(--terracotta-700); }
.slide-link:hover .slide-more{ color: var(--terracotta-600); border-color: var(--terracotta-600); }
.slide-link:hover .slide-more .arrow{ transform: translateX(3px); }

.slider-controls{ display:flex; align-items:center; gap: var(--s-2); padding-top: var(--s-1); }
.s-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; padding:0;
  border:1px solid var(--stone-300); border-radius: var(--r-sm);
  background: var(--stone-050); color: var(--ink-700);
  font-size:1rem; line-height:1; cursor:pointer;
  transition: background-color var(--dur-fast) var(--ease),
              border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.s-btn:hover{ background: var(--stone-100); border-color: var(--ink-500); color: var(--ink-900); }
.dots{ display:flex; gap:2px; margin-left:auto; }
.dot{
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:44px; padding:0; background:none; border:0; cursor:pointer;
}
.dot::before{
  content:""; width:100%; height:2px; background: var(--stone-300);
  transition: background-color var(--dur-base) var(--ease);
}
.dot:hover::before{ background: var(--sand-400); }
.dot[aria-current="true"]::before{ background: var(--terracotta-600); }

/* ── AGENDA ────────────────────────────────────────────── */
.agenda{ padding-top: var(--s-4); }
.agenda-head{
  max-width: var(--page); margin-inline:auto;
  padding-inline: var(--gutter); padding-bottom: var(--s-2);
  border-bottom:2px solid var(--ink-900);
}
.agenda-head h2{ font-size:1.375rem; line-height:1.15; font-variation-settings:"SOFT" 20,"WONK" 1; }
.agenda-head .sub{ margin-top:2px; font-size:0.8125rem; color: var(--ink-500); }
.months{ max-width: var(--page); margin-inline:auto; }

.month-rule{
  position:sticky; top: var(--header-h); z-index:10;
  display:flex; align-items:baseline; gap: var(--s-3);
  padding: var(--s-3) var(--gutter);
  background: var(--stone-050);
  border-bottom:1px solid var(--ink-900);
}
.month-rule h3{
  font-family: var(--sans); font-size:0.75rem; font-weight:600;
  letter-spacing:0.14em; text-transform:uppercase; color: var(--ink-900);
}
.month-rule .count{ margin-left:auto; font-size:0.75rem; color: var(--ink-500); }

/* Full-bleed rows: no card, no container padding, hairline edge to edge.
   The row is a row, never a card. */
.event{ border-bottom:1px solid var(--stone-300); }
.event-link{
  position:relative;
  display:grid; grid-template-columns: 54px 1fr; gap: var(--s-3);
  padding: 14px var(--gutter);
  text-decoration:none; color:inherit;
  transition: background-color var(--dur-fast) var(--ease);
}
.event-link::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background: var(--terracotta-600); opacity:0;
  transition: opacity var(--dur-fast) var(--ease);
}
.event-link:hover, .event-link:focus-visible{ background: var(--stone-100); }
.event-link:hover::before, .event-link:focus-visible::before{ opacity:1; }
.event-link:hover .event-title{ color: var(--terracotta-700); }

.date{ display:block; padding-top:1px; }
.date .dd{
  display:block;
  font-size:1.25rem; line-height:1.1; font-weight:600; color: var(--ink-900);
  letter-spacing:-0.02em; white-space:nowrap;
  font-variant-numeric: tabular-nums lining-nums; font-feature-settings:"tnum" 1,"lnum" 1;
}
.date .mon{
  display:block; margin-top:1px;
  font-size:0.625rem; font-weight:600; letter-spacing:0.1em; text-transform:uppercase;
  color: var(--terracotta-700);
}
.date.multi .dd{ font-size:0.9375rem; line-height:1.35; }

.event-body{ display:block; min-width:0; }
.event-title{
  display:block;
  font-family: var(--serif); font-weight:500; font-size:1.0625rem; line-height:1.3;
  color: var(--ink-900);
  transition: color var(--dur-fast) var(--ease);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.event-meta{
  display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  margin-top:2px;
  font-size:0.8125rem; line-height:1.4; color: var(--ink-500);
}
.event-meta .town{ font-weight:500; }
.event-meta .sep{ color: var(--stone-300); }
.event-meta .now{
  font-size:0.6875rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase;
  color: var(--terracotta-700);
}

/* Category: a dot and a word. Not a chip, not a badge, not a saturated pill. */
.tag{
  display:inline-flex; align-items:center; gap:5px;
  font-size:0.6875rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase;
  color: var(--ink-500);
}
.tag::before{
  content:""; width:5px; height:5px; border-radius: var(--r-pill);
  background: var(--cat-market);
}
.tag-food::before{ background: var(--cat-food); }
.tag-music::before{ background: var(--cat-music); }
.tag-religious::before{ background: var(--cat-religious); }
.tag-outdoors::before{ background: var(--cat-outdoors); }
.tag-market::before{ background: var(--cat-market); }
.tag-craft::before{ background: var(--cat-craft); }
.tag-culture::before{ background: var(--cat-culture); }

.agenda-foot{
  max-width: var(--page); margin-inline:auto;
  padding: var(--s-4) var(--gutter) 0;
  font-size:0.8125rem; color: var(--ink-500);
}
.agenda-foot em{ font-style:italic; }

/* Past events: present, but folded away. No JS. */
.earlier{ max-width: var(--page); margin: var(--s-5) auto 0; border-top:1px solid var(--stone-300); }
.earlier summary{
  display:flex; align-items:baseline; gap: var(--s-3); flex-wrap:wrap;
  min-height:52px; padding: var(--s-3) var(--gutter);
  cursor:pointer; list-style:none;
  transition: background-color var(--dur-fast) var(--ease);
}
.earlier summary::-webkit-details-marker{ display:none; }
.earlier summary:hover{ background: var(--stone-100); }
.earlier .s-label{
  font-size:0.75rem; font-weight:600; letter-spacing:0.14em; text-transform:uppercase;
  color: var(--ink-900);
}
.earlier .s-label::before{ content:"+ "; color: var(--terracotta-700); }
.earlier[open] .s-label::before{ content:"\2212 "; }
.earlier .s-note{ font-size:0.8125rem; color: var(--ink-500); }
.earlier > ul{ border-top:1px solid var(--stone-300); }
.earlier .event-title{ color: var(--ink-700); }

/* ── SUBMIT CTA CARD ──────────────────────────────────── */
.cta{ margin-top: var(--s-7); }
main{ padding-bottom: var(--s-8); }
.cta-card{
  display:grid; grid-template-columns: 1fr; align-items:stretch;
  gap: var(--s-6);
  background: var(--stone-100); color: var(--ink-900);
  border-radius: 18px; overflow:hidden;
  border:1px solid var(--stone-300);
  box-shadow: 0 12px 32px -16px rgba(0,0,0,.25);
}
.cta-body{ padding: var(--s-6) var(--s-6) var(--s-6) var(--s-7); display:flex; flex-direction:column; justify-content:center; }
.cta h2{ font-size:1.5rem; line-height:1.2; font-variation-settings:"SOFT" 20,"WONK" 1; max-width: 22ch; color: var(--ink-900); }
.cta h2 .it{ display:block; margin-top:4px; font-size:1.0625rem; color: var(--ink-500); }
.cta .note{ margin-top: var(--s-3); font-size:0.9375rem; color: var(--ink-500); max-width: 46ch; }
.cta .btn{ margin-top: var(--s-5); align-self:flex-start; }
.cta-media{
  background-color: var(--forest-800);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-height: 220px;
}
@media (min-width: 720px){
  .cta-media{ min-height: 0; }
}

/* ── EVENT PAGE ────────────────────────────────────────── */
.crumb{ margin-bottom: var(--s-2); font-size:0.8125rem; }
.crumb a{
  display:inline-flex; align-items:center; min-height:44px;
  color: var(--ink-500); text-decoration:none; font-weight:500;
  transition: color var(--dur-fast) var(--ease);
}
.crumb a:hover{ color: var(--terracotta-700); }

.event-head{ padding-top: var(--s-2); padding-bottom: var(--s-5); }
.event-head .eyebrow .sep{ color: var(--stone-300); }
.event-head h1{
  margin-top: var(--s-2);
  font-size: clamp(1.75rem, 5.5vw, 2.5rem); line-height:1.08; letter-spacing:-0.02em;
  font-variation-settings:"SOFT" 30,"WONK" 1;
  max-width: 22ch; text-wrap: balance;
}
.event-head .gloss{ margin-top: var(--s-2); font-size:1.125rem; line-height:1.3; }
.event-head .dateline{
  margin-top: var(--s-4); padding-top: var(--s-4);
  border-top:2px solid var(--ink-900);
  font-size:1rem; font-weight:600; color: var(--terracotta-700);
}

.notice{
  margin-top: var(--s-4); padding: var(--s-3) var(--s-4);
  background: var(--stone-100);
  border-left:3px solid var(--sand-400);
  border-radius: var(--r-xs);
  font-size:0.875rem; color: var(--ink-700); max-width: 62ch;
}
.notice-loud{
  background: var(--terracotta-100); border-left-color: var(--terracotta-600);
  color: var(--terracotta-700); font-weight:500;
}

.event-cols{ padding-bottom: var(--s-7); }
.event-main{ max-width: 62ch; }

/* Key facts — the AEO block. A definition list, because that is what it is. */
.facts{ margin: var(--s-3) 0 0; padding:0; border-top:1px solid var(--stone-300); }
.facts .fact{
  display:grid; grid-template-columns: 96px 1fr; gap: var(--s-3);
  padding: 10px 0;
  border-bottom:1px solid var(--stone-300);
}
.facts dt{
  font-size:0.6875rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase;
  color: var(--ink-500); padding-top:3px;
}
.facts dd{
  margin:0; font-size:0.9375rem; color: var(--ink-900);
  font-variant-numeric: tabular-nums lining-nums;
}

.prose{ margin-top: var(--s-6); max-width: 62ch; }
.prose p + p{ margin-top: var(--s-4); }
.prose h2{
  margin-top: var(--s-7);
  margin-bottom: var(--s-3); padding-bottom: var(--s-2);
  border-bottom:1px solid var(--stone-300);
  font-size:1.375rem; line-height:1.2; font-variation-settings:"SOFT" 20,"WONK" 1;
}
.prose h2 .it{ font-size:0.8em; margin-left: var(--s-2); }
.prose a{
  color: var(--ink-900); font-weight:500;
  text-decoration:underline; text-decoration-color: var(--sand-400);
  text-underline-offset:0.2em; text-decoration-thickness:1px;
  transition: text-decoration-color var(--dur-fast) var(--ease),
              text-decoration-thickness var(--dur-fast) var(--ease);
}
.prose a:hover{ text-decoration-color: var(--terracotta-600); text-decoration-thickness:2px; }
.prose em{ font-style:italic; }

.event-actions{ display:flex; gap: var(--s-3); flex-wrap:wrap; margin-top: var(--s-6); }

.sources{ margin-top: var(--s-6); padding-top: var(--s-4); border-top:1px solid var(--stone-300); }
.sources h3{
  font-family: var(--sans); font-size:0.6875rem; font-weight:600;
  letter-spacing:0.12em; text-transform:uppercase; color: var(--ink-500);
}
.sources ul{ margin-top: var(--s-1); }
.sources li{ border-bottom:1px solid var(--stone-300); }
.sources a{
  display:flex; align-items:center; min-height:44px;
  font-size:0.875rem; color: var(--ink-700); text-decoration:none;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  transition: color var(--dur-fast) var(--ease);
}
.sources a:hover{ color: var(--terracotta-700); }

.related{ padding-top: var(--s-6); }
.related-head{ padding-bottom: var(--s-2); border-bottom:2px solid var(--ink-900); }
.related-head .sub{ margin-top:2px; font-size:0.8125rem; color: var(--ink-500); }
.related > ul{ max-width: var(--page); margin-inline:auto; }

/* ── PAGE HEAD (submit) + 404 ──────────────────────────── */
.page-head{ padding-top: var(--s-6); padding-bottom: var(--s-5); }
.page-head h1{
  margin-top: var(--s-2);
  font-size: clamp(1.875rem, 6vw, 2.75rem); line-height:1.06; letter-spacing:-0.02em;
  font-variation-settings:"SOFT" 30,"WONK" 1; max-width: 14ch;
}
.page-head h1 .it{ display:block; font-size:0.62em; margin-top:6px; }
.page-head .deck{
  margin-top: var(--s-4); padding-top: var(--s-4);
  border-top:1px solid var(--stone-300);
  font-size:1rem; color: var(--ink-700); max-width: 56ch;
}

.notfound{ padding-block: var(--s-8); }
.notfound h1{
  margin-top: var(--s-2);
  font-size: clamp(1.875rem, 6vw, 2.75rem); line-height:1.08; letter-spacing:-0.02em;
  font-variation-settings:"SOFT" 30,"WONK" 1; max-width: 18ch; text-wrap: balance;
}
.notfound .deck{
  margin-top: var(--s-4); padding-top: var(--s-4);
  border-top:1px solid var(--stone-300);
  font-size:1rem; color: var(--ink-700); max-width: 52ch;
}
.notfound .actions{ display:flex; gap: var(--s-3); flex-wrap:wrap; margin-top: var(--s-5); }

/* ── FORM ──────────────────────────────────────────────── */
.form-wrap{ padding-bottom: var(--s-8); }
.form{ max-width: 640px; }
.fs{ border:0; margin:0 0 var(--s-6); padding:0; }
.fs legend{
  width:100%; padding:0 0 var(--s-2);
  margin-bottom: var(--s-4);
  border-bottom:1px solid var(--ink-900);
  font-size:0.6875rem; font-weight:600; letter-spacing:0.12em; text-transform:uppercase;
  color: var(--ink-900);
}
.field{ margin-bottom: var(--s-4); }
.field > label,
.field > .label{
  display:block; margin-bottom:6px;
  font-size:0.875rem; font-weight:600; color: var(--ink-900);
}
.opt{ font-weight:400; color: var(--ink-500); }
.hint{ display:block; margin-top:5px; font-size:0.8125rem; color: var(--ink-500); }
.hint.it{ font-family: var(--serif); font-style:italic; font-weight:300; }

input[type="text"], input[type="email"], input[type="url"],
input[type="date"], input[type="time"], select, textarea{
  width:100%; min-height:48px;
  padding: 11px var(--s-3);
  font-family: var(--sans); font-size:1rem; line-height:1.4; color: var(--ink-900);
  background: var(--stone-050);
  border:1px solid var(--stone-300); border-radius: var(--r-sm);
  transition: border-color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease);
  appearance:none;
}
input[type="date"], input[type="time"]{
  font-variant-numeric: tabular-nums lining-nums; font-feature-settings:"tnum" 1,"lnum" 1;
}
textarea{ min-height:112px; resize:vertical; line-height:1.5; }
input::placeholder, textarea::placeholder{ color: var(--sand-400); }
input:hover, select:hover, textarea:hover{ border-color: var(--ink-500); }
input:focus-visible, select:focus-visible, textarea:focus-visible{
  border-color: var(--forest-700); background: oklch(0.99 0.006 85);
  outline:2px solid var(--forest-700); outline-offset:1px;
}
select{
  padding-right: var(--s-6);
  background-image: linear-gradient(45deg, transparent 50%, var(--ink-500) 50%),
                    linear-gradient(135deg, var(--ink-500) 50%, transparent 50%);
  background-position: calc(100% - 19px) calc(50% + 1px), calc(100% - 14px) calc(50% + 1px);
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}

.row{ display:grid; grid-template-columns:1fr; gap: var(--s-4); }

/* a real <input type="file">, restyled — not a fake dropzone */
.file{
  display:flex; align-items:center; gap: var(--s-3); flex-wrap:wrap;
  padding: var(--s-3);
  border:1px dashed var(--stone-300); border-radius: var(--r-sm);
  background: var(--stone-100);
}
.file input[type="file"]{ flex:1; min-width:0; font-size:0.875rem; color: var(--ink-700); }
.file input[type="file"]::file-selector-button{
  min-height:44px; margin-right: var(--s-3); padding:0 var(--s-4);
  font-family: var(--sans); font-size:0.875rem; font-weight:600; color: var(--ink-900);
  background: var(--stone-050);
  border:1px solid var(--ink-900); border-radius: var(--r-sm);
  cursor:pointer;
  transition: background-color var(--dur-fast) var(--ease);
}
.file input[type="file"]::file-selector-button:hover{ background: var(--stone-200); }

.review-note{
  padding: var(--s-4) 0;
  border-top:1px solid var(--stone-300);
  font-size:0.9375rem; color: var(--ink-500); max-width: 52ch;
}
.form-actions{ display:flex; align-items:center; gap: var(--s-4); flex-wrap:wrap; padding-top: var(--s-2); }
.form-actions .btn-primary{ flex:1 1 auto; }

.done[hidden]{ display:none; }
.done{ max-width: 560px; padding-block: var(--s-6) var(--s-8); }
.done .eyebrow{ color: var(--terracotta-700); }
.done h2{
  margin-top: var(--s-2);
  font-size:1.875rem; line-height:1.15; font-variation-settings:"SOFT" 30,"WONK" 1;
}
.done h2 .it{ display:block; font-size:0.66em; margin-top:6px; }
.done p{ margin-top: var(--s-4); color: var(--ink-700); }
.done .what-next{
  margin-top: var(--s-5); padding-top: var(--s-4);
  border-top:1px solid var(--stone-300);
  font-size:0.9375rem; color: var(--ink-500);
}
.done .actions{ display:flex; gap: var(--s-3); flex-wrap:wrap; margin-top: var(--s-5); }

/* ── ABOUT ─────────────────────────────────────────────── */
.about{ padding-top: var(--s-6); padding-bottom: var(--s-8); }
.about-head h1{
  margin-top: var(--s-2);
  font-size: clamp(2rem, 7vw, 3.25rem); line-height:1.04; letter-spacing:-0.025em;
  font-variation-settings:"SOFT" 30,"WONK" 1;
  max-width: 15ch; text-wrap: balance;
}
.about-head h1 em{ font-style:italic; font-weight:300; color: var(--forest-700); }
.lede{
  margin-top: var(--s-5); padding-top: var(--s-5);
  border-top:1px solid var(--stone-300);
  font-family: var(--serif); font-weight:300; font-style:italic;
  font-size:1.25rem; line-height:1.45; color: var(--ink-700);
  max-width: 34ch;
}
.rules{ margin-top: var(--s-4); }
.rules li{
  display:grid; grid-template-columns: auto 1fr; gap: var(--s-3);
  padding: var(--s-3) 0;
  border-bottom:1px solid var(--stone-300);
}
.rules li:first-child{ border-top:1px solid var(--stone-300); }
.rules .n{
  font-size:0.8125rem; font-weight:600; color: var(--terracotta-700);
  font-variant-numeric: tabular-nums lining-nums; font-feature-settings:"tnum" 1,"lnum" 1;
  padding-top:2px;
}
.rules p{ font-size:0.9375rem; }
.rules b{ color: var(--ink-900); font-weight:600; }

.about-cta{
  margin-top: var(--s-7); padding-top: var(--s-5);
  border-top:2px solid var(--ink-900);
  max-width: 62ch;
}
.about-cta h2{
  font-size:1.5rem; line-height:1.2; font-variation-settings:"SOFT" 20,"WONK" 1;
  max-width: 22ch;
}
.about-cta h2 .it{ display:block; margin-top:4px; font-size:0.72em; }
.about-cta p{ margin-top: var(--s-3); font-size:0.9375rem; color: var(--ink-500); }
.about-cta .actions{ display:flex; gap: var(--s-3); flex-wrap:wrap; margin-top: var(--s-5); }

/* ── FOOTER ────────────────────────────────────────────── */
.site-footer{ background: var(--forest-900); color: var(--stone-100); }
.site-footer :focus-visible{ outline-color: var(--gold-500); }
.footer-inner{ padding-block: var(--s-6); }
.footer-inner .wordmark{ color: var(--stone-050); }
.footer-links{ display:flex; flex-wrap:wrap; gap: var(--s-4); margin-top: var(--s-1); }
.footer-links a{
  display:inline-flex; align-items:center; min-height:44px;
  font-size:0.9375rem; color: oklch(0.86 0.025 100); text-decoration:none;
  border-bottom:1px solid transparent;
  transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}
.footer-links a:hover{ color: var(--stone-050); border-bottom-color: var(--gold-500); }
.footer-bottom{
  display:flex; justify-content:space-between; gap: var(--s-3); flex-wrap:wrap;
  width:100%; margin-top: var(--s-3); padding-top: var(--s-4);
  border-top:1px solid oklch(0.55 0.07 145 / 0.35);
  font-size:0.8125rem; color: oklch(0.75 0.030 100);
}
.footer-bottom .it{ color: oklch(0.78 0.030 100); }

/* ── ≥720px ────────────────────────────────────────────── */
@media (min-width: 720px){
  :root{ --gutter: 32px; --header-h: 64px; }

  .menu-btn{ display:none; }
  .desk-nav{ display:flex; align-items:center; margin-left:auto; }
  .desk-nav ul{ display:flex; }
  .desk-nav a{
    display:flex; align-items:center; min-height:44px; padding:0 var(--s-3);
    font-size:0.9375rem; font-weight:500; color: var(--ink-700); text-decoration:none;
    border-bottom:2px solid transparent;
    transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
  }
  .desk-nav a:hover{ color: var(--ink-900); border-bottom-color: var(--stone-300); }
  .desk-nav a[aria-current="page"]{ color: var(--ink-900); border-bottom-color: var(--terracotta-600); }
  .desk-nav .lang{ margin-left: var(--s-4); }

  .featured{ padding-top: var(--s-6); }
  .featured-head{ padding-bottom: var(--s-3); }
  .slide-link{
    display:grid; grid-template-columns: 1fr 1fr; gap: var(--s-6);
    align-items:center; padding-bottom: var(--s-5);
  }
  .ph{ aspect-ratio: 16 / 9; }
  .slide-body{ padding-top:0; }
  .slide-title{ font-size:1.75rem; margin-top:6px; }
  .slide-desc{ display:block; overflow:visible; margin-top: var(--s-2); font-size:0.9375rem; line-height:1.5; }
  .slide-more{ margin-top: var(--s-3); }
  .slider-controls{ padding-top: var(--s-3); }

  .agenda{ padding-top: var(--s-6); }
  .agenda-head{ padding-bottom: var(--s-3); }
  .agenda-head h2{ font-size:1.875rem; }
  .agenda-head .sub{ font-size:0.875rem; }
  .event-link{ grid-template-columns: 68px 1fr; gap: var(--s-5); padding: 16px var(--gutter); }
  .date .dd{ font-size:1.5rem; }
  .date.multi .dd{ font-size:1.0625rem; }
  .event-body{ display:grid; grid-template-columns: 1fr auto; gap: var(--s-5); align-items:baseline; }
  .event-title{ font-size:1.1875rem; }
  .event-meta{ margin-top:0; justify-content:flex-end; flex-wrap:nowrap; white-space:nowrap; }

  .cta-card{ grid-template-columns: 1.5fr 1fr; }
  .cta-media{ min-height: 0; order: 0; }
  .cta-body{ padding: var(--s-7); }
  .cta .btn{ margin-top: var(--s-5); }

  .event-head{ padding-top: var(--s-4); }
  .facts .fact{ grid-template-columns: 128px 1fr; }

  .page-head{ padding-top: var(--s-8); }
  .row-2{ grid-template-columns: 1fr 1fr; }
  .form-actions .btn-primary{ flex:0 0 auto; min-width: 200px; }

  .about{ padding-top: var(--s-8); }
  .lede{ font-size:1.5rem; max-width: 30ch; }

  .footer-inner{ display:flex; align-items:center; justify-content:space-between; gap: var(--s-5); flex-wrap:wrap; }
  .footer-links{ margin-top:0; }
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important; animation-iteration-count:1 !important;
    transition-duration:0.01ms !important; scroll-behavior:auto !important;
  }
}
