:root {
  --kd-bg: #f0efed; --kd-surface: #ffffff; --kd-text: #3a2e2a; --kd-muted: #78685f;
  --kd-accent: #c02b2b; --kd-on-accent: #f8f8f7; --kd-accent-2: #e0a830; --kd-accent-ink: #c02b2b;
}

/* ---------- Base ---------- */
:root {
  --marker: "Permanent Marker", "Comic Sans MS", cursive;
  --sans: "Nunito", system-ui, sans-serif;
  --m: 20px;
  --tape: color-mix(in srgb, var(--kd-accent-2) 72%, transparent);
  --tape-red: color-mix(in srgb, var(--kd-accent) 55%, transparent);
  --paper-2: color-mix(in srgb, var(--kd-accent-2) 22%, var(--kd-bg));
}
@media (min-width: 900px) { :root { --m: 32px; } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--kd-bg);
  color: var(--kd-text);
  font-family: var(--sans);
  font-size: 18px;
  line-height: 1.5;
  overflow-x: clip;
}
img { display: block; max-width: 100%; }
h1, h2, h3, p, ul, figure, blockquote, address { margin: 0; padding: 0; }
ul { list-style: none; }
address { font-style: normal; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--kd-accent-ink); outline-offset: 3px; }
.wrap { max-width: 1600px; margin-inline: auto; padding-inline: var(--m); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: 0 28px;
  background: var(--kd-accent); color: var(--kd-on-accent);
  font-family: var(--marker); font-size: 20px; letter-spacing: 0.02em;
  text-decoration: none; border-radius: 0;
}

/* ---------- Polaroids and tape ---------- */
.polaroid {
  position: relative;
  background: var(--kd-surface);
  padding: var(--p) var(--p) 0;
}
.polaroid::before {
  content: "";
  position: absolute; z-index: 2;
  top: -13px; left: 50%;
  width: 92px; height: 26px;
  translate: -50% 0; rotate: -4deg;
  background: var(--tape);
}
.polaroid.tape-red::before { background: var(--tape-red); rotate: 3deg; }
.tilt-l { rotate: -2deg; }
.tilt-r { rotate: 1.8deg; }
.polaroid .ph { overflow: hidden; }
.polaroid .ph img { width: 100%; height: 100%; object-fit: cover; }
.polaroid figcaption {
  height: var(--cap);
  display: flex; align-items: center;
  font-family: var(--marker); font-size: 16px; line-height: 1.1;
  color: var(--kd-text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ---------- Hero: a strip of polaroids, four corners ---------- */
.hero {
  --side: var(--m);
  --edge: 20px;
  min-height: 100svh;
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 8px auto 1fr auto auto;
  padding-block: var(--edge) 24px;
  font-size: 16px;
}
.hero-name { grid-area: 1 / 1; padding-left: var(--side); align-self: center; }
.hero-name a {
  font-family: var(--marker); font-size: 22px; line-height: 1.2;
  text-decoration: none; color: var(--kd-text);
}
.hero-link {
  grid-area: 1 / 2; align-self: center; padding-right: var(--side);
  font-weight: 600; color: var(--kd-accent-ink);
  text-underline-offset: 4px;
  min-height: 44px; display: inline-flex; align-items: center;
}
.hero-say {
  grid-area: 5 / 1 / 6 / -1;
  padding-inline: var(--side);
}
/* Display scale, lettered like the OPEN EVERY DAY sign. */
.hero-say h1 {
  font-family: var(--marker); font-weight: 400;
  text-transform: uppercase; text-wrap: balance;
  font-size: clamp(32px, 9.5vw, 64px); line-height: 0.9; letter-spacing: -0.02em;
}
.hero-say p { margin-top: 6px; color: var(--kd-text); line-height: 1.45; max-width: 36ch; }
.hero-act {
  grid-area: 6 / 1; justify-self: start;
  margin: 16px 0 0 var(--side);
}

.strip {
  --p: 10px;
  --cap: 40px;
  --g: 10px;
  --H: calc(46svh - 2 * var(--p) - var(--cap));
  grid-area: 3 / 1 / 4 / -1;
  display: flex; gap: var(--g);
  overflow-x: auto; overflow-y: hidden;
  scroll-snap-type: x proximity;
  padding-block: 18px;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--kd-text) 30%, transparent) transparent;
}
.strip:focus-visible { outline-offset: -3px; }
.frame { flex: none; scroll-snap-align: center; }
.frame .ph { height: var(--H); aspect-ratio: 1; }
/* Captions after the lit frame sit right, so an edge card is cut through blank paper, never through words. */
.frame.is-lit ~ .frame figcaption { justify-content: flex-end; }
.frame .ph img { filter: brightness(0.55); }
.frame.is-lit .ph img,
.frame:hover .ph img { filter: none; }
.frame-lead2 { display: none; }
/* Centre the lit frame: the lead frame tucks under the left edge. */
.frame-lead {
  margin-left: calc(50% - 1.5 * var(--H) - 3 * var(--p) - var(--g));
}

@media (min-width: 900px) {
  .hero {
    --side: 72px;
    --edge: 44px;
    grid-template-rows: auto 12px auto 1fr auto;
    padding-block: var(--edge);
  }
  .hero-say { grid-area: 5 / 1; align-self: end; }
  .hero-say h1 { font-size: clamp(64px, 7vw, 128px); }
  .hero-act { grid-area: 5 / 2; align-self: end; margin: 0 var(--side) 0 0; }
  /* Strip width W shows: part of lead (1.5), lead2 (0.8), lit (1.5), next (1.5), part of the 0.8 after it.
     Each partial card hides its caption words: 211px of lead, 158px of the right one.
     W = 3.8H + 100 + (1.5H - 191) + (0.8H - 138), so H = (W + 229) / 6.1. */
  .strip { container-type: inline-size; --H: calc((100cqw + 229px) / 6.1); }
  .frame .ph { aspect-ratio: var(--r); }
  .frame-lead2 { display: block; }
  .frame-lead { margin-left: -211px; }
}

/* ---------- Intro: statement tiles ---------- */
.board {
  margin-top: 120px;
  padding: 6px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}
.tile { position: relative; overflow: hidden; }
.tile-slogan {
  grid-column: 1 / -1;
  min-height: 46svh;
  display: flex; align-items: flex-end;
  padding: 20px 20px 30px;
  background: var(--kd-accent); color: var(--kd-on-accent);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), 96% 100%, 90% calc(100% - 7px), 83% 100%, 76% calc(100% - 9px), 69% calc(100% - 1px), 61% calc(100% - 8px), 54% 100%, 46% calc(100% - 10px), 38% calc(100% - 2px), 30% calc(100% - 8px), 22% 100%, 14% calc(100% - 9px), 7% calc(100% - 1px), 0 calc(100% - 7px));
}
.tile-slogan h2 {
  font-family: var(--marker); font-weight: 400;
  text-transform: uppercase;
  font-size: min(13vw, 120px); line-height: 0.86; letter-spacing: -0.02em;
}
.tile-word {
  aspect-ratio: 1;
  background: var(--paper-2);
  padding: 20px;
  display: flex; flex-direction: column; justify-content: space-between;
}
.tile-word::before {
  content: ""; position: absolute; top: 10px; right: -14px;
  width: 90px; height: 24px; rotate: 32deg;
  background: var(--tape-red);
}
.tile-note { font-size: 16px; line-height: 1.35; max-width: 16ch; }
.tile-fig {
  font-family: var(--marker);
  font-size: min(13vw, 120px); line-height: 0.86; letter-spacing: -0.02em;
  white-space: nowrap;
}
.tile-photo { aspect-ratio: 1; }
.tile-photo img { width: 100%; height: 100%; object-fit: cover; }
.tile-text { grid-column: 1 / -1; padding: 28px 20px 0; }
.tile-text-body p { font-size: 18px; line-height: 1.5; max-width: 62ch; }
.tile-text-body p + p { margin-top: 1em; }

@media (min-width: 900px) {
  .board {
    margin-top: 140px;
    padding: 8px; gap: 8px;
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: 38svh 38svh auto;
    max-width: 1600px; margin-inline: auto;
  }
  .tile-slogan {
    grid-column: 1 / 9; grid-row: 1 / 3;
    min-height: 0;
    padding: 20px 20px 36px;
  }
  .tile-slogan h2 { font-size: clamp(64px, 9vw, 132px); }
  .tile-word { grid-column: 9 / 13; grid-row: 1; aspect-ratio: auto; }
  .tile-fig { font-size: clamp(64px, 9vw, 132px); }
  .tile-photo { grid-column: 9 / 13; grid-row: 2; aspect-ratio: auto; }
  .tile-text {
    grid-column: 1 / -1; grid-row: 3;
    display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px;
    padding: 0;
  }
  .tile-text-body { grid-column: 7 / 13; padding: 40px; }
  .tile-text-body p { font-size: 22px; line-height: 1.4; }
}

/* ---------- Menu: one-size name columns ---------- */
.menu { padding-block: 20vh; }
.menu h2 {
  font-family: var(--marker); font-weight: 400;
  font-size: 24px; line-height: 1.1;
  margin-bottom: 48px;
}
.menu-cols { display: grid; gap: 40px; }
.menu-group h3 {
  font-family: var(--marker); font-weight: 400;
  font-size: 18px; line-height: 1.4; color: var(--kd-text);
  margin-bottom: 1.4em;
}
.menu-group li { font-size: 18px; line-height: 1.4; color: var(--kd-muted); }
.menu-group .sum { margin-top: 14px; font-size: 18px; line-height: 1.45; color: var(--kd-muted); max-width: 42ch; }
.menu .spot { display: none; }
.menu .desc { display: block; margin-top: 2px; font-size: 15px; line-height: 1.35; }
.menu-group li:has(.desc) + li { margin-top: 10px; }
.week li { font-variant-numeric: tabular-nums; }

@media (min-width: 900px) {
  .menu h2 { font-size: 28px; margin-bottom: 96px; }
  .menu-cols {
    --gap: 24px;
    position: relative;
    grid-template-columns: repeat(12, 1fr);
    column-gap: var(--gap); row-gap: 0;
  }
  .menu-group:nth-child(1) { grid-column: 1 / 4; }
  .menu-group:nth-child(2) { grid-column: 4 / 7; }
  .menu-group:nth-child(3) { grid-column: 7 / 10; }
  .menu-group h3 { font-size: 17px; line-height: 1.25; margin-bottom: 1.25em; }
  .menu-group li { font-size: 17px; line-height: 1.25; cursor: default; }
  .menu-group .sum { display: none; }
  .menu .spot {
    display: block;
    position: absolute; top: 0;
    left: calc((100% - 11 * var(--gap)) / 12 * 9 + 9 * var(--gap));
    width: calc((100% - 11 * var(--gap)) / 12 * 3 + 2 * var(--gap));
    font-size: 17px; line-height: 1.25;
    color: var(--kd-muted);
  }
  .menu-group li:hover { color: var(--kd-text); }
}

/* ---------- Guests: shallow frames, small quotes ---------- */
.voices { padding-bottom: 160px; font-size: 16px; line-height: 1.45; }
.voices h2 {
  font-family: var(--marker); font-weight: 400;
  font-size: 18px; line-height: 1.3;
  margin-bottom: 24px;
}
.voices-row { display: grid; gap: 40px; }
.voice-ph { position: relative; height: 84px; }
.voice-ph img { width: 100%; height: 100%; object-fit: cover; }
.voice-ph::before {
  content: ""; position: absolute; z-index: 1;
  top: -10px; left: 14px; width: 70px; height: 22px;
  rotate: -6deg; background: var(--tape);
}
.voice:nth-child(2) .voice-ph::before { background: var(--tape-red); rotate: 4deg; }
.voice figcaption { margin-top: 12px; }
.who { color: var(--kd-text); font-weight: 700; }
.role { color: var(--kd-muted); }
.voice blockquote { margin-top: 4px; color: var(--kd-muted); max-width: 46ch; }

@media (min-width: 900px) {
  .voices {
    display: grid; grid-template-columns: repeat(12, 1fr); gap: 0 24px;
    align-items: start;
  }
  .voices h2 { grid-column: 1 / 3; margin: 0; }
  .voices-row {
    grid-column: 3 / 13;
    grid-template-columns: 4fr 3fr 3fr;
    gap: 8px;
  }
  .voice-ph { height: 110px; }
  .voice { padding-right: 16px; }
}

/* ---------- Visit: a torn sheet ---------- */
.sheet {
  background: var(--kd-surface);
  padding-block: 72px 64px;
  clip-path: polygon(0 10px, 4% 3px, 9% 12px, 14% 5px, 19% 13px, 25% 2px, 31% 10px, 37% 4px, 43% 12px, 50% 3px, 56% 11px, 62% 5px, 68% 13px, 74% 2px, 80% 9px, 86% 4px, 92% 12px, 100% 5px,
    100% calc(100% - 9px), 95% calc(100% - 2px), 89% calc(100% - 12px), 83% calc(100% - 4px), 77% calc(100% - 11px), 70% calc(100% - 3px), 63% calc(100% - 12px), 57% calc(100% - 5px), 50% calc(100% - 13px), 44% calc(100% - 3px), 37% calc(100% - 10px), 31% calc(100% - 2px), 24% calc(100% - 11px), 18% calc(100% - 4px), 11% calc(100% - 12px), 5% calc(100% - 3px), 0 calc(100% - 9px));
}
.sheet-row {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 32px 20px;
  align-items: start;
}
.sheet-say {
  grid-column: 1 / -1;
  font-size: 24px; line-height: 1.2; font-weight: 600; letter-spacing: -0.01em;
  max-width: 24ch;
}
.sheet-pic { grid-column: 1; padding-top: 10px; }
.polaroid-sm { --p: 6px; padding-bottom: 18px; background: var(--kd-bg); }
.polaroid-sm::before { width: 56px; height: 18px; top: -8px; }
.polaroid-sm .ph { aspect-ratio: 1; }
.sheet-ask { grid-column: 2; }
.sheet-ask h2 { font-family: var(--marker); font-weight: 400; font-size: 20px; line-height: 1.2; }
.sheet-ask address { display: flex; flex-direction: column; align-items: flex-start; margin-top: 16px; }
.clink {
  font-size: 18px; font-weight: 600; line-height: 1.3;
  color: var(--kd-accent-ink);
  text-decoration-thickness: 2px; text-underline-offset: 4px;
  min-height: 44px; display: inline-flex; align-items: center;
}
.nap { margin-top: 14px; font-size: 15px; line-height: 1.45; color: var(--kd-muted); }

@media (max-width: 899px) {
  .sheet-row { row-gap: 0; }
  .sheet-say { margin-bottom: 36px; }
  .sheet-ask, .sheet-ask address { display: contents; }
  .sheet-pic { grid-column: 1; grid-row: 2 / span 3; }
  .sheet-ask h2 { grid-column: 2; grid-row: 2; padding-top: 6px; }
  .clink { grid-column: 2; }
  .clink:nth-of-type(1) { grid-row: 3; }
  .clink:nth-of-type(2) { grid-row: 4; }
  .nap { grid-column: 1 / -1; grid-row: 5; margin-top: 20px; }
}

@media (min-width: 900px) {
  .sheet { padding-block: 160px 120px; }
  .sheet-row { grid-template-columns: repeat(12, 1fr); gap: 0 24px; }
  .sheet-say { grid-column: 1 / 6; font-size: clamp(24px, 2.1vw, 30px); line-height: 1.15; max-width: none; }
  .sheet-pic { grid-column: 8 / 10; grid-row: 1; padding-top: 0; }
  .polaroid-sm { width: 172px; --p: 8px; padding-bottom: 26px; }
  .sheet-ask { grid-column: 10 / 13; grid-row: 1; }
  .sheet-ask address { margin-top: 20px; }
  .nap { font-size: 15px; }
}

/* ---------- Footer: one quiet line ---------- */
.foot {
  margin-top: 20svh;
  padding-bottom: 24px;
  display: grid; gap: 8px;
  font-size: 15px; line-height: 1.45;
  color: var(--kd-muted);
}
.foot-links { display: flex; flex-wrap: wrap; gap: 0 24px; }
.foot-links a {
  color: var(--kd-text); font-weight: 600;
  text-decoration: none;
  display: inline-flex; min-height: 44px; align-items: center;
}
.foot-links a:hover { text-decoration: underline; text-underline-offset: 4px; }

@media (min-width: 900px) {
  .foot {
    margin-top: 30svh;
    padding-bottom: 30px;
    grid-template-columns: 1fr auto 1fr;
    align-items: baseline;
    gap: 24px;
  }
  .foot-end { justify-self: end; }
}

/* ---------- Hover and focus ---------- */
@media (prefers-reduced-motion: no-preference) {
  .btn { transition: background-color 0.2s ease, transform 0.2s ease; }
  .btn:hover { background: color-mix(in srgb, var(--kd-accent) 86%, var(--kd-text)); transform: translateY(-2px); }
  .frame .ph img { transition: filter 0.35s ease; }
  .hero-link, .clink { transition: color 0.2s ease, text-decoration-color 0.2s ease; }
  .menu-group li { transition: color 0.15s ease; }
}
.hero-link:hover, .clink:hover { color: var(--kd-text); }
.btn:active { background: color-mix(in srgb, var(--kd-accent) 75%, var(--kd-text)); }
