
  *{ margin:0; padding:0; box-sizing:border-box; }
  html,body{ min-height:100%; }
  html{
    -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
    /* clip — NOT hidden: `overflow-x:hidden` forces the computed overflow-y to
       `auto`, turning <html>/<body> into scroll containers, which silently breaks
       `position:sticky` on descendants (it killed the pinned "The Week" filmstrip,
       leaving blank paper when you scrolled). `clip` still forbids sideways scroll
       but keeps overflow-y visible, so it creates no scroll container and sticky
       keeps pinning. (Supported in all evergreen browsers.) */
    overflow-x:clip;              /* sections below are full-width; never scroll sideways */
    scroll-behavior:smooth;       /* fallback glide for anchors when Lenis is off (reduced-motion / no-JS / touch) */
    /* never auto-inflate type on orientation change (iOS Safari) — the layout is
       already fluid, so the OS text-zoom would only double-scale and clip it */
    -webkit-text-size-adjust:100%; text-size-adjust:100%;
    /* the whole page is one vertical scroller; contain the rubber-band so an
       overscroll at either end never reveals a mismatched paper/wine gutter
       beneath the first/last section (the "white flash" past the RSVP finale) */
    overscroll-behavior-y:none;
  }
  /* Lenis owns the eased scroll while it's smoothing — let it, so native CSS
     smooth-scroll doesn't fight it. (Classes are toggled on <html> by Lenis.) */
  .lenis.lenis-smooth{ scroll-behavior: auto !important; }
  .lenis.lenis-smooth [data-lenis-prevent]{ overscroll-behavior: contain; }
  .lenis.lenis-stopped{ overflow: hidden; }

  body{
    background: var(--paper);
    color: var(--ink);
    font-family: 'Archivo', system-ui, sans-serif;
    cursor: crosshair;            /* hint: this surface reacts to you */
    overflow-x:clip;              /* belt-and-braces against any sub-pixel side-scroll on phones (clip, not hidden — see <html> note: hidden would re-break sticky) */
  }

  /* ── native-feel touch layer ─────────────────────────────────────────
     Mobile browsers paint a translucent grey/blue box over any element you
     tap (the "ugly web" flash) and pop a text-selection / image-save sheet on
     a press-hold. Suppress both on the chrome the guest actually taps, keep a
     ~zero tap delay, and stop a stray drag from selecting a button's label.
     Body copy stays fully selectable; content images stay long-press-saveable. */
  a, button, summary, label, [role="button"],
  .nav a, .btn, .rsvp__cta, .pill, .food__plate,
  .food__close, .food__nav, .rail-nav, .audio-toggle{
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;        /* kill the legacy 300ms tap delay + double-tap zoom on controls */
  }
  button, summary, [role="button"],
  .nav a, .btn, .rsvp__cta, .pill,
  .food__close, .food__nav, .rail-nav, .audio-toggle{
    -webkit-user-select: none; user-select: none;   /* a tap can't smear into a text selection */
    -webkit-touch-callout: none;                     /* no iOS long-press menu over a control */
  }
