/* ==========================================================================
   Yaseem Nasi Kandar — demo site stylesheet
   --------------------------------------------------------------------------
   §1–§6  the design system's six token files, transcribed VERBATIM from
          _ds/yaseem-nasi-kandar-design-system-e979e09a-306c-44a1-9590-957db2f99682/
          tokens/ (fonts, colors, typography, spacing, effects, base).
          Values unchanged.
   §7     AA-safe variants where a token falls short of WCAG AA on the ground
          it is used on. The originals above stay exactly as the DS defined
          them; these are additions.
   §8+    the reset, the shared Nav/Footer components, the canvas's brand
          devices (tape, snapshot, handwritten note, menu panel, heritage
          seal) and the four page layouts.
   ========================================================================== */

/* ── §1 fonts.css ──────────────────────────────────────────────────────────
   The DS loads its webfonts with an @import. Here the four families are
   <link>ed from each page's <head> instead — one <link> per family — so they
   are discovered by the preload scanner rather than after the CSS parses.
   Families are unchanged: Bree Serif, Bebas Neue, Source Sans 3, and the
   canvas's Permanent Marker for the handwritten register.                  */

/* ── §2 colors.css ────────────────────────────────────────────────────────
   Sampled from uploads/08-logo.jpg + uploads/09-storefront.jpg.            */
:root{
  /* Base */
  --red-500:#C73A22; /* logo script bright */
  --red-600:#B5301C; /* logo red (sampled) — primary action */
  --red-700:#8E2412; /* pressed / deep sambal */
  --yellow-400:#FFC24E;
  --yellow-500:#F9AA27; /* kandar yellow (sampled logo outline) */
  --yellow-600:#DE8F0D;
  --green-600:#1E7A3E; /* signage green */
  --green-700:#175C30;
  --green-800:#123F23;
  --kicap-950:#231208; /* darkest gravy */
  --kicap-900:#2E1A0E;
  --kicap-800:#3B2417; /* kicap black-brown — ink */
  --kicap-600:#5C4433;
  --kicap-400:#8A7260; /* muted text on light */
  --rice-50:#FCF7EC;  /* page cream */
  --rice-100:#F6EEDC; /* tinted panel */
  --rice-200:#EBDFC4; /* hairline-adjacent fill */
  --white:#FFFFFF;
  /* Semantic */
  --surface-page:var(--rice-50);
  --surface-card:var(--white);
  --surface-tint:var(--rice-100);
  --surface-dark:var(--kicap-900);
  --surface-brand:var(--green-700);
  --text-body:var(--kicap-800);
  --text-muted:var(--kicap-400);
  --text-on-dark:var(--rice-50);
  --text-on-brand:#FFF9EA;
  --accent-action:var(--red-600);
  --accent-action-hover:var(--red-500);
  --accent-action-press:var(--red-700);
  --accent-highlight:var(--yellow-500);
  --border-line:rgba(59,36,23,.14);
  --border-strong:rgba(59,36,23,.32);
  --focus-ring:0 0 0 3px rgba(249,170,39,.55);
}

/* ── §3 typography.css ───────────────────────────────────────────────────── */
:root{
  --font-display:'Bree Serif',Rockwell,'Roboto Slab',serif; /* warm slab — headings */
  --font-condensed:'Bebas Neue','Arial Narrow',sans-serif;  /* eyebrows, prices, badges — caps only */
  --font-body:'Source Sans 3','Segoe UI',sans-serif;
  /* Scale (desktop) */
  --text-hero:clamp(44px,6vw,72px);
  --text-h1:44px;
  --text-h2:32px;
  --text-h3:22px;
  --text-lead:19px;
  --text-base:16px;
  --text-small:14px;
  --text-price:26px;   /* Bebas */
  --text-eyebrow:15px; /* Bebas, tracked */
  --track-eyebrow:.14em;
  --leading-display:1.08;
  --leading-body:1.55;
}

/* ── §4 spacing.css ──────────────────────────────────────────────────────── */
:root{
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;
  --container:1120px;
  --section-pad:var(--sp-9) 0;
}

/* ── §5 effects.css ──────────────────────────────────────────────────────── */
:root{
  --radius-sm:6px;   /* inputs, menu labels */
  --radius-md:14px;  /* cards, callout capsules */
  --radius-pill:999px; /* buttons, tags — echoes signage ovals */
  --shadow-card:0 2px 10px rgba(59,36,23,.10);
  --shadow-lift:0 10px 28px rgba(35,18,8,.18);
  --border-card:1px solid var(--border-line);
  --ease-brand:cubic-bezier(.33,1,.68,1); /* quick out — snappy, no bounce */
  --dur-fast:120ms;
  --dur-med:220ms;
}

/* ── §6 base.css ─────────────────────────────────────────────────────────── */
body{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);color:var(--text-body);background:var(--surface-page)}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;line-height:var(--leading-display);margin:0}
a{color:var(--red-600);text-decoration:none}
a:hover{color:var(--red-500);text-decoration:underline}
::selection{background:var(--yellow-500);color:var(--kicap-900)}

/* ── §7 AA-safe variants and measured contrast ────────────────────────────
   All four pages sit on --kicap-950 #231208 (relative luminance 0.0083), the
   ground the canvases set with `body{background:var(--kicap-950)}`. Ratios
   below are measured against the exact ground named.

   ON --kicap-950 #231208 — every value used for text:
     --rice-50    #FCF7EC                      = 16.60:1  passes
     rgba(252,247,236,.85) → #D6D0C4           = 11.02:1  passes
     rgba(252,247,236,.80) → #CDC7BB           =  9.98:1  passes
     rgba(252,247,236,.75) → #C6BEB3           =  9.72:1  passes
     rgba(252,247,236,.70) → #BCB5A9           =  8.42:1  passes
     rgba(252,247,236,.60) → #A59B91           =  6.64:1  passes
     rgba(252,247,236,.50) → #8F857A           =  4.95:1  passes (AA floor)
     --yellow-500 #F9AA27                      =  9.27:1  passes
     --red-500    #C73A22                      =  3.50:1  LARGE TEXT ONLY
   The only --red-500 on dark is the "Yaseem" wordmark: 27px in the nav, 34px
   in the footer, clamp(52–104px) in the hero — all far above the 24px WCAG
   large-text threshold, where 3:1 is the requirement. It also carries a
   yellow-600 hard shadow that lifts its perceived edge. It is never used for
   body copy on dark.

   ON #FFFFFF (the snapshot cards and the menu panel):
     --kicap-800 #3B2417                       = 14.50:1  passes
     --kicap-900 #2E1A0E                       = 16.06:1  passes
     --kicap-600 #5C4433                       =  8.97:1  passes
     --red-600   #B5301C                       =  6.17:1  passes
     --kicap-400 #8A7260 (muted)               =  4.19:1  FAILS  → not used
     --muted-on-card #6E5747                   =  6.90:1  passes → used instead

   ON --yellow-500 #F9AA27 (the About fact card, the Contact CALL US card):
     --kicap-950 #231208                       =  9.27:1  passes
     --kicap-900 #2E1A0E                       =  8.51:1  passes

   ON --red-600 #B5301C (the two slab buttons):
     --yellow-500 #F9AA27                      =  3.18:1  LARGE TEXT ONLY
   3.18:1 clears the 3:1 large-text threshold but not the 4.5:1 normal-text
   one, so both slab labels are FLOORED AT 24px (WCAG large text = 18pt =
   24px; Bebas ships only weight 400, so the 14pt-bold shortcut is not
   available). The clamps therefore start at 24px rather than the 22/21px
   they once did — which is also closer to the canvas's own fixed 30px/28px.
   Bebas is a condensed face, so an AA-safe variant is kept for any label
   that ever has to sit below 24px on this ground:
     --highlight-on-red #FFD98C on --red-600   =  4.57:1  passes            */
:root{
  --muted-on-card:#6E5747;
  --highlight-on-red:#FFD98C;
  --ink-on-dark:var(--rice-50);
  --ink-on-dark-85:rgba(252,247,236,.85);
  --ink-on-dark-80:rgba(252,247,236,.80);
  --ink-on-dark-75:rgba(252,247,236,.75);
  --ink-on-dark-70:rgba(252,247,236,.70);
  --ink-on-dark-60:rgba(252,247,236,.60);
  --ink-on-dark-50:rgba(252,247,236,.50);
  --hairline-on-dark:rgba(252,247,236,.14);
  --hairline-on-dark-soft:rgba(252,247,236,.12);
  --font-hand:'Permanent Marker',cursive;
  --shadow-slab:6px 8px 0 rgba(0,0,0,.45);
  --shadow-slab-lg:9px 12px 0 rgba(0,0,0,.45);
  --tape:rgba(250,240,205,.62);
  --page-max:1180px;
  --gutter:32px;
  --z-drawer-backdrop:60;
  --z-drawer:61;
  --z-skip:200;
}

/* ── §8 Reset ─────────────────────────────────────────────────────────────
   The UA gives <figure> a 1em/40px margin and <blockquote> the same. Both are
   zeroed here: an un-zeroed figure once inset every photograph on a site 40px
   from its column — invisible at desktop, badly wrong at 414px.            */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{overflow-x:hidden;text-wrap:pretty}
figure,blockquote{margin:0}
p{margin:0}
img{display:block;max-width:100%}
iframe{border:0;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:2px}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:var(--z-skip);
  background:var(--yellow-500);color:var(--kicap-950);
  padding:12px 20px;font-family:var(--font-condensed);font-size:16px;letter-spacing:.12em;
}
.skip-link:focus{left:16px;top:16px}

/* ── §9 Shared page shell ────────────────────────────────────────────────── */
.page{background:var(--kicap-950)}
.wrap{max-width:var(--page-max);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
.eyebrow{
  font-family:var(--font-condensed);font-size:var(--text-eyebrow);
  letter-spacing:.16em;color:var(--yellow-500);display:block;
}
.eyebrow--quiet{color:var(--ink-on-dark-60)}
.hand{font-family:var(--font-hand);line-height:1.15}
.rule-top{border-top:1px solid var(--hairline-on-dark-soft)}

/* The site's to-confirm marker. Placeholder markers are the one piece of
   build apparatus that belongs on a customer-facing page. */
.tc{
  font-family:var(--font-body);font-style:italic;font-weight:400;
  color:var(--muted-on-card);white-space:nowrap;
}
.tc--dark{color:var(--ink-on-dark-60);font-style:italic}

/* ── §10 Brand devices: tape + snapshot ──────────────────────────────────── */
.snap{
  position:relative;background:var(--white);
  box-shadow:var(--shadow-slab);
  transform:rotate(var(--rot,0deg));
}
.tape{
  position:absolute;top:-12px;height:24px;width:74px;
  background:var(--tape);box-shadow:0 1px 3px rgba(20,9,3,.2);
  transform:rotate(var(--tape-rot,-4deg));pointer-events:none;
}
.tape--l{left:24px}
.tape--c{left:50%;margin-left:-37px}
.tape--r{right:22px}
.tape--wide{width:84px;height:28px;top:-14px;margin-left:-42px}

.snap__cap{
  font-family:var(--font-hand);font-size:20px;line-height:1.25;
  color:var(--kicap-800);margin-top:10px;
}
.snap__cap--red{color:var(--red-600)}

/* Every photograph gets a fixed aspect ratio + object-fit:cover, so its height
   never depends on the length of the copy beside it. */
.snap__img{width:100%;height:auto;aspect-ratio:var(--ar,3 / 2);object-fit:cover}

/* ── §11 Buttons ─────────────────────────────────────────────────────────── */
.slab{
  display:inline-block;background:var(--red-600);color:var(--yellow-500);
  font-family:var(--font-condensed);font-size:clamp(24px,3vw,30px);letter-spacing:.06em;
  line-height:1.1;padding:17px 32px 13px;min-height:48px;
  box-shadow:var(--shadow-slab);text-decoration:none;
  transform:rotate(var(--rot,1.2deg));cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-brand);
}
.slab:hover{background:var(--accent-action-hover);color:var(--yellow-500);text-decoration:none}
.slab:active{background:var(--accent-action-press)}
.slab--sm{font-size:clamp(24px,2.6vw,28px);padding:16px 30px 12px}

/* The handwritten inline link ("read the story →"). */
.hand-link{
  display:inline-block;font-family:var(--font-hand);
  font-size:clamp(19px,2.2vw,23px);color:var(--yellow-500);
  transform:rotate(-2deg);text-decoration:none;min-height:44px;padding:8px 0;
}
.hand-link:hover{color:var(--yellow-400);text-decoration:underline}

/* ── §12 Nav (shared component — Nav.dc.html) ────────────────────────────── */
.nav{background:var(--kicap-950);border-bottom:1px solid var(--hairline-on-dark)}
.nav__in{
  max-width:var(--page-max);margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:12px var(--gutter);
}
.brand{position:relative;display:flex;align-items:baseline;gap:14px;text-decoration:none;flex-shrink:1;min-width:0}
.brand:hover{text-decoration:none}
/* 44px touch target without moving a pixel of the wordmark. */
.brand::after{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:44px}
.brand__mark{
  display:inline-block;font-family:var(--font-display);font-size:27px;line-height:1;
  color:var(--red-500);text-shadow:2px 2px 0 var(--yellow-600);transform:rotate(-1.5deg);
}
.brand__sub{
  font-family:var(--font-condensed);font-size:13px;letter-spacing:.22em;
  color:var(--ink-on-dark-60);white-space:nowrap;
}
.nav__right{display:flex;align-items:center;gap:32px}
.nav__links{display:flex;align-items:center;gap:32px}
.nav__link{
  display:inline-block;padding:12px 0;
  font-family:var(--font-condensed);font-size:16px;letter-spacing:.14em;
  color:var(--ink-on-dark-85);text-decoration:none;
}
.nav__link:hover{color:var(--rice-50);text-decoration:none}
.nav__link::after{
  content:"";display:block;height:3px;margin-top:3px;
  background:transparent;transform:rotate(-2deg);
}
.nav__link[aria-current="page"]{color:var(--rice-50)}
.nav__link[aria-current="page"]::after{background:var(--red-500)}
.nav__badge{display:inline-flex;align-items:center;gap:8px}
.nav__dot{
  width:9px;height:9px;border-radius:99px;background:var(--yellow-500);
  box-shadow:0 0 0 3px rgba(249,170,39,.3);flex:0 0 auto;
}
.nav__badge span:last-child{
  font-family:var(--font-condensed);font-size:15px;letter-spacing:.14em;color:var(--yellow-500);
}
.nav-toggle{
  display:none;align-items:center;gap:9px;cursor:pointer;
  min-height:44px;padding:8px 14px;
  border:1px solid var(--hairline-on-dark);
  font-family:var(--font-condensed);font-size:16px;letter-spacing:.14em;
  color:var(--ink-on-dark-85);
}
.nav-toggle .bars{display:inline-flex;flex-direction:column;gap:3px}
.nav-toggle .bars i{display:block;width:17px;height:2px;background:currentColor}

/* ── §13 Drawer — hidden IN PLACE with opacity/visibility. Never translated
   off-screen: a translated drawer creates horizontal overflow at phone
   widths. ───────────────────────────────────────────────────────────────── */
.nav-backdrop{
  position:fixed;inset:0;z-index:var(--z-drawer-backdrop);background:rgba(20,9,3,.62);
  opacity:0;visibility:hidden;
  transition:opacity var(--dur-med) var(--ease-brand),visibility var(--dur-med) var(--ease-brand);
}
.nav-backdrop[data-open="true"]{opacity:1;visibility:visible}
.nav-drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:var(--z-drawer);width:min(320px,86vw);
  background:var(--kicap-900);border-left:1px solid var(--hairline-on-dark);
  padding:18px 24px 32px;display:flex;flex-direction:column;overflow-y:auto;
  opacity:0;visibility:hidden;
  transition:opacity var(--dur-med) var(--ease-brand),visibility var(--dur-med) var(--ease-brand);
}
.nav-drawer[data-open="true"]{opacity:1;visibility:visible}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.drawer-close{
  min-width:44px;min-height:44px;font-size:28px;line-height:1;
  color:var(--ink-on-dark-75);cursor:pointer;
}
.drawer-close:hover{color:var(--rice-50)}
.drawer-link{
  display:block;padding:15px 0;border-bottom:1px solid var(--hairline-on-dark-soft);
  font-family:var(--font-condensed);font-size:20px;letter-spacing:.14em;
  color:var(--ink-on-dark-85);text-decoration:none;
}
.drawer-link[aria-current="page"]{color:var(--yellow-500)}
.drawer-link:hover{color:var(--rice-50);text-decoration:none}
.drawer-foot{margin-top:22px;display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.drawer-hours{
  font-family:var(--font-body);font-size:var(--text-small);line-height:1.7;color:var(--ink-on-dark-75);
}
.drawer-call{
  display:inline-block;font-family:var(--font-condensed);font-size:26px;letter-spacing:.04em;
  color:var(--yellow-500);text-decoration:none;min-height:44px;padding:6px 0;
}

/* ── §14 Footer (shared component — Footer.dc.html) ──────────────────────── */
.site-footer{background:var(--kicap-950);border-top:1px solid var(--hairline-on-dark)}
.footer__in{max-width:var(--page-max);margin:0 auto;padding:64px var(--gutter) 28px}
.footer__grid{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:40px;align-items:start}
.footer__mark{
  position:relative;
  display:inline-block;font-family:var(--font-display);font-size:34px;line-height:1;
  color:var(--red-500);text-shadow:2px 2px 0 var(--yellow-600);transform:rotate(-1.5deg);
  text-decoration:none;
}
.footer__mark::after{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:44px}
.footer__mark:hover{text-decoration:none;color:var(--red-500)}
.footer__sub{
  font-family:var(--font-condensed);font-size:var(--text-small);letter-spacing:.22em;
  color:var(--ink-on-dark-60);margin-top:8px;
}
.footer__addr{
  font-family:var(--font-body);font-style:normal;font-size:15px;line-height:1.6;
  color:var(--ink-on-dark-75);margin-top:16px;
}
/* The phone number is the site's primary contact action, so it gets a full
   48px target. It is the last line of the address, so the block only grows
   downward. */
.footer__addr a{
  display:inline-flex;align-items:center;min-height:48px;
  color:var(--ink-on-dark-75);text-decoration:underline;text-underline-offset:3px;
}
.footer__addr a:hover{color:var(--yellow-500)}
.footer__head{
  font-family:var(--font-condensed);font-size:var(--text-eyebrow);letter-spacing:.16em;
  color:var(--yellow-500);display:block;
}
.footer__lines{font-family:var(--font-body);font-size:15px;line-height:1.7;color:var(--ink-on-dark-75);margin-top:14px}
.footer__lines--airy{line-height:1.9}
/* Inline-block padding grows the line box too, so these <br>-separated rows
   space themselves apart rather than overlapping. 33px clears the WCAG 2.5.8
   minimum of 24px while keeping the footer's designed rhythm. */
.footer__lines a{
  display:inline-block;padding:6px 0;
  color:var(--ink-on-dark-75);text-decoration:underline;text-underline-offset:3px;
}
.footer__lines a:hover{color:var(--yellow-400)}
.footer__lines a.is-order{color:var(--yellow-500)}
.footer__note{
  font-family:var(--font-hand);font-size:19px;color:var(--ink-on-dark-85);
  transform:rotate(-2deg);margin-top:18px;display:inline-block;
}
.footer__map{display:flex;flex-direction:column;gap:2px;margin-top:14px}
.footer__map a{
  display:flex;align-items:center;min-height:44px;
  font-family:var(--font-body);font-size:15px;line-height:1.7;color:var(--ink-on-dark-75);
  text-decoration:underline;text-underline-offset:3px;
}
.footer__map a:hover{color:var(--yellow-400)}
.footer__bottom{
  border-top:1px solid var(--hairline-on-dark-soft);margin-top:48px;padding-top:20px;
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
}
.footer__fine{font-family:var(--font-body);font-size:var(--text-small);color:var(--ink-on-dark-50)}

/* ── §15 Home — hero ─────────────────────────────────────────────────────── */
.hero{position:relative;padding-top:66px}
.hero__tube{
  position:absolute;top:24px;left:10%;right:10%;height:10px;border-radius:6px;background:#FFF6DC;
  box-shadow:0 0 26px 6px rgba(255,240,200,.55),0 0 90px 34px rgba(255,214,130,.16);
}
.hero__shot{position:relative}
.hero__img{
  width:100%;height:clamp(240px,30vw,430px);object-fit:cover;object-position:center 62%;
  filter:brightness(.92) contrast(1.14) saturate(1.22);
}
.hero__vig{
  position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 20%,rgba(20,9,3,0) 40%,rgba(20,9,3,.62) 100%);
}
.hero__grain{
  position:absolute;inset:0;opacity:.15;
  background-image:radial-gradient(rgba(20,9,3,.6) 1px,transparent 1.3px);background-size:4px 4px;
}
.hero__card{
  position:absolute;left:7%;bottom:-30px;max-width:min(84%,470px);
  padding:14px 22px 12px;--rot:-2deg;
}
.hero__card .hand{font-size:clamp(17px,3.4vw,24px);color:var(--red-600)}
.hero__card-sub{
  font-family:var(--font-condensed);font-size:13px;letter-spacing:.12em;
  color:var(--kicap-800);margin-top:5px;
}
.hero__body{position:relative;max-width:var(--page-max);margin:0 auto;padding:64px var(--gutter) 76px}
.hero__wm{margin:0}
.hero__wm-a{
  display:inline-block;font-family:var(--font-display);font-weight:400;
  font-size:clamp(52px,8.6vw,104px);line-height:.9;color:var(--red-500);
  transform:rotate(-2deg);text-shadow:3px 3px 0 var(--yellow-600);
}
.hero__wm-b{
  display:block;font-family:var(--font-condensed);font-weight:400;
  font-size:clamp(34px,7vw,88px);letter-spacing:.05em;line-height:.95;
  color:var(--yellow-500);margin-top:12px;
}
.hero__row{display:flex;align-items:center;gap:32px;margin-top:34px;flex-wrap:wrap}
.hero__lede{
  font-family:var(--font-body);font-size:17px;line-height:1.5;
  color:var(--ink-on-dark-85);max-width:380px;
}
.hero__aside{
  margin-left:auto;font-family:var(--font-hand);font-size:clamp(18px,2.1vw,22px);
  color:rgba(252,247,236,.9);transform:rotate(3deg);display:inline-block;
}

/* ── §16 Home — story teaser ─────────────────────────────────────────────── */
.story__grid{
  max-width:var(--page-max);margin:0 auto;padding:88px var(--gutter);
  display:grid;grid-template-columns:1fr 420px;gap:72px;align-items:center;
}
.story__title{
  font-family:var(--font-display);font-weight:400;font-size:clamp(28px,4.2vw,42px);
  line-height:1.12;color:var(--rice-50);margin:16px 0 0;
}
.story__body{
  font-family:var(--font-body);font-size:17px;line-height:1.65;
  color:var(--ink-on-dark-80);max-width:540px;margin:18px 0 0;
}
.story__snap{--rot:2deg;padding:12px 12px 10px}
.story__snap .snap__img{filter:saturate(1.1) contrast(1.05)}

/* ── §17 Home — masala highlight ─────────────────────────────────────────── */
.masala{max-width:var(--page-max);margin:0 auto;padding:88px var(--gutter) 104px}
.masala__title{
  font-family:var(--font-display);font-weight:400;font-size:clamp(27px,4vw,40px);
  line-height:1.12;color:var(--rice-50);margin:0;
}
.masala__lede{
  font-family:var(--font-body);font-size:16px;line-height:1.6;
  color:var(--ink-on-dark-70);max-width:560px;margin:14px 0 0;
}
.masala__row{display:flex;align-items:flex-start;gap:40px;margin-top:52px}
.fact{flex:1 1 0;min-width:0;padding:26px 30px 22px}
.fact--a{--rot:-2deg}
.fact--b{--rot:1.4deg;margin-top:22px}
.fact--c{--rot:-1deg;margin-top:8px}
.fact__n{font-family:var(--font-hand);font-size:clamp(40px,4.6vw,58px);line-height:1;color:var(--red-600)}
.fact__label{
  font-family:var(--font-condensed);font-size:15px;letter-spacing:.12em;
  color:var(--kicap-800);margin-top:10px;
}

/* ── §18 Menu page ───────────────────────────────────────────────────────── */
.menu-head{max-width:var(--page-max);margin:0 auto;padding:72px var(--gutter) 8px}
.menu-head__row{display:flex;align-items:baseline;gap:36px;flex-wrap:wrap}
.menu-head__h1{
  font-family:var(--font-condensed);font-weight:400;font-size:clamp(56px,11.5vw,110px);
  line-height:.95;letter-spacing:.04em;color:var(--yellow-500);margin:10px 0 0;
}
.menu-head__aside{
  font-family:var(--font-hand);font-size:clamp(17px,2.1vw,22px);
  color:var(--ink-on-dark-85);transform:rotate(-2deg);display:inline-block;
}
.dish-row{
  max-width:var(--page-max);margin:0 auto;padding:48px var(--gutter) 24px;
  display:flex;align-items:flex-start;gap:8px;
}
.dish{flex:1 1 0;min-width:0;padding:12px 12px 10px}
.dish--a{--rot:-2deg}
.dish--b{--rot:1.4deg;margin-top:26px}
.dish--c{--rot:-1deg;margin-top:10px}
.dish .snap__img{--ar:3 / 2;filter:saturate(1.15) contrast(1.06)}
.dish__foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.dish__name{font-family:var(--font-hand);font-size:clamp(17px,1.9vw,20px);color:var(--kicap-800)}
.dish__price{
  background:var(--yellow-500);padding:6px 12px 4px;
  font-family:var(--font-hand);font-size:clamp(17px,1.9vw,20px);color:var(--kicap-950);
  box-shadow:3px 4px 0 rgba(20,9,3,.25);transform:rotate(var(--prot,2deg));white-space:nowrap;
}

.menu-panel-wrap{max-width:var(--page-max);margin:0 auto;padding:56px var(--gutter) 96px}
.menu-panel{
  position:relative;max-width:1000px;margin:0 auto;background:var(--white);
  padding:56px 64px 48px;box-shadow:var(--shadow-slab-lg);transform:rotate(-.5deg);
}
.menu-panel__grain{
  position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(rgba(59,36,23,.07) 1px,transparent 1.3px);background-size:5px 5px;
}
.menu-panel__grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:44px 72px}
.menu-cat{
  font-family:var(--font-condensed);font-size:clamp(20px,2.2vw,23px);letter-spacing:.14em;
  color:var(--red-600);border-bottom:3px solid var(--yellow-500);padding-bottom:8px;
}
.menu-cat--next{margin-top:40px}
.menu-item{display:flex;align-items:baseline;gap:12px;margin-top:16px}
.menu-item--first{margin-top:20px}
.menu-item__name{
  font-family:var(--font-body);font-weight:700;font-size:15px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--kicap-900);
}
.menu-item__sub{
  display:block;font-family:var(--font-body);font-weight:600;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--red-600);
}
.menu-item__lead{flex:1 1 auto;min-width:14px;border-bottom:2px dotted rgba(59,36,23,.3)}
.menu-item__price{font-family:var(--font-condensed);font-size:22px;color:var(--red-600);white-space:nowrap}
.menu-note{font-family:var(--font-body);font-size:13px;line-height:1.6;color:var(--kicap-600);margin-top:14px}
.menu-panel__foot{
  position:relative;display:flex;align-items:baseline;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-top:52px;
}
.menu-panel__foot .hand{
  font-size:clamp(18px,2.2vw,23px);color:var(--red-600);transform:rotate(-1.5deg);display:inline-block;
}
.menu-panel__fine{font-family:var(--font-body);font-size:var(--text-small);color:var(--kicap-600)}

/* ── §19 About page ──────────────────────────────────────────────────────── */
.about-head{max-width:var(--page-max);margin:0 auto;padding:88px var(--gutter) 72px}
.about-head__inner{max-width:860px}
.about-head__h1{
  font-family:var(--font-display);font-weight:400;font-size:clamp(30px,5.2vw,52px);
  line-height:1.1;color:var(--rice-50);margin:18px 0 0;
}
.about-head__p{
  font-family:var(--font-body);font-size:18px;line-height:1.65;
  color:var(--ink-on-dark-80);max-width:680px;margin:26px 0 0;
}
.about-head__p + .about-head__p{margin-top:18px}
.collage{display:flex;align-items:flex-start;gap:12px;margin-top:72px}
.collage__a{--rot:-2deg;flex:1 1 0;min-width:0;max-width:480px;padding:12px 12px 10px}
.collage__b{--rot:1.6deg;flex:1 1 0;min-width:0;max-width:480px;padding:12px 12px 10px;margin:34px 0 0 -18px}
.collage__a .snap__img{--ar:472 / 368;filter:saturate(1.12) contrast(1.05)}
.collage__b .snap__img{--ar:3 / 2;filter:saturate(1.1) contrast(1.05)}
.collage__seal{margin:60px 0 0 16px;transform:rotate(8deg);opacity:.9;flex:0 0 auto}

.seal{
  width:110px;height:110px;flex:0 0 auto;display:inline-flex;flex-direction:column;
  align-items:center;justify-content:center;border-radius:50%;
  border:2px solid var(--rice-50);outline:1px solid var(--rice-50);outline-offset:-8px;
  color:var(--rice-50);text-align:center;font-family:var(--font-condensed);line-height:1;
}
.seal__est{font-size:14px;letter-spacing:.2em;margin-bottom:2px}
.seal__yr{font-size:33px;letter-spacing:.04em}
.seal__city{font-size:10px;letter-spacing:.16em;margin-top:5px}

.about-band{
  max-width:var(--page-max);margin:0 auto;padding:80px var(--gutter) 96px;
  display:grid;grid-template-columns:1fr 400px;gap:72px;align-items:center;
}
.about-band__title{
  font-family:var(--font-display);font-weight:400;font-size:clamp(27px,4vw,40px);
  line-height:1.12;color:var(--rice-50);margin:0;
}
.about-band__p{
  font-family:var(--font-body);font-size:17px;line-height:1.65;
  color:var(--ink-on-dark-80);max-width:600px;margin:20px 0 0;
}
.fact-card{
  position:relative;background:var(--yellow-500);padding:26px 30px;
  box-shadow:var(--shadow-slab);transform:rotate(1.4deg);
}
.fact-card .tape{background:rgba(250,240,205,.7)}
.fact-card__lines{
  font-family:var(--font-hand);font-size:clamp(21px,2.6vw,26px);
  color:var(--kicap-950);line-height:1.35;
}
.fact-card__sub{
  font-family:var(--font-condensed);font-size:14px;letter-spacing:.12em;
  color:var(--kicap-900);margin-top:12px;
}

/* ── §20 Contact page ────────────────────────────────────────────────────── */
.contact{max-width:var(--page-max);margin:0 auto;padding:72px var(--gutter) 96px}
.contact__h1{
  font-family:var(--font-condensed);font-weight:400;font-size:clamp(56px,11.5vw,110px);
  line-height:.95;letter-spacing:.04em;color:var(--yellow-500);margin:0;
}
.contact__addr{
  font-family:var(--font-display);font-size:clamp(21px,3.1vw,30px);line-height:1.25;
  color:var(--rice-50);margin-top:14px;font-style:normal;
}
.contact__grid{display:grid;grid-template-columns:1fr 1.15fr;gap:64px;align-items:start;margin-top:56px}
.contact__col{display:flex;flex-direction:column;gap:34px;align-items:stretch}
.hours-card{--rot:-1.6deg;padding:22px 28px 20px}
.hours-card .hand{font-size:clamp(22px,2.7vw,27px);color:var(--red-600)}
.hours-card__p{font-family:var(--font-body);font-size:16px;line-height:1.7;color:var(--kicap-800);margin-top:10px}
.call-card{
  position:relative;background:var(--yellow-500);padding:20px 28px 18px;
  box-shadow:var(--shadow-slab);transform:rotate(1.2deg);
}
.call-card .tape{background:rgba(250,240,205,.7)}
.call-card__head{
  font-family:var(--font-condensed);font-size:var(--text-eyebrow);letter-spacing:.16em;color:var(--kicap-900);
}
.call-card__num{
  display:inline-block;font-family:var(--font-condensed);font-size:clamp(29px,5vw,38px);
  letter-spacing:.04em;color:var(--kicap-950);text-decoration:none;margin-top:6px;
  min-height:44px;padding:3px 0;
}
.call-card__num:hover{color:var(--kicap-950);text-decoration:underline}
.contact__order{align-self:flex-start;--rot:-1.2deg}
.contact__social{font-family:var(--font-body);font-size:15px;line-height:1.9;color:var(--ink-on-dark-75)}
.contact__social a{
  color:var(--ink-on-dark-85);text-decoration:underline;text-underline-offset:3px;
  display:inline-block;padding:11px 0;
}
.contact__social a:hover{color:var(--yellow-500)}
.map-card{--rot:1deg;padding:12px 12px 10px;box-shadow:8px 11px 0 rgba(0,0,0,.45)}
.map-card iframe{display:block;width:100%;height:clamp(300px,46vw,480px)}

/* ── §21 Responsive ──────────────────────────────────────────────────────── */

/* Tablet and below — collapse the two- and three-up rows. */
@media (max-width:1023px){
  .story__grid{grid-template-columns:1fr;gap:44px;padding:64px var(--gutter)}
  .story__snap{max-width:480px}
  .about-band{grid-template-columns:1fr;gap:44px;padding:64px var(--gutter) 80px}
  .fact-card{max-width:440px}
  .contact__grid{grid-template-columns:1fr;gap:44px}
  .masala__row{gap:28px}
  .about-head{padding:64px var(--gutter) 56px}
  .collage{gap:10px;margin-top:56px}
  .collage__b{margin-left:-12px}
  .collage__seal{margin:40px 0 0 8px}
  .footer__grid{grid-template-columns:1fr 1fr;gap:36px}
}

/* Below 900px: the nav collapses to the drawer. */
@media (max-width:899px){
  .nav__links{display:none}
  .nav-toggle{display:inline-flex}
  .nav__right{gap:16px}
  .brand__sub{display:none}
  .masala__row{flex-direction:column;gap:26px}
  .fact{width:100%;max-width:460px;flex:0 0 auto}
  .fact--b,.fact--c{margin-top:0}
  .dish-row{flex-direction:column;gap:26px;padding:40px var(--gutter) 16px}
  .dish{width:100%;max-width:460px;flex:0 0 auto}
  .dish--b,.dish--c{margin-top:0}
  .collage{flex-direction:column;align-items:flex-start;gap:34px}
  .collage__a,.collage__b{max-width:480px;width:100%}
  .collage__b{margin:0}
  .collage__seal{margin:4px 0 0 12px}
  .menu-panel{padding:44px 40px 40px}
  .menu-panel__grid{grid-template-columns:1fr;gap:36px}
  .menu-panel-wrap{padding:40px var(--gutter) 72px}
  .hero__body{padding:56px var(--gutter) 60px}
  .hero__aside{margin-left:0}
}

/* Phones. */
@media (max-width:719px){
  :root{--gutter:20px}
  .nav__in{padding:10px var(--gutter)}
  /* 25px, not 23px: --red-500 on --kicap-950 measures 3.50:1, which passes AA
     only as LARGE text (>=24px). Shrinking the wordmark below 24px would have
     dropped it under the threshold. */
  .brand__mark{font-size:25px}
  .hero{padding-top:52px}
  .hero__tube{top:18px;left:8%;right:8%;height:8px}
  .hero__card{left:5%;bottom:-26px;max-width:88%;padding:12px 16px 10px}
  .hero__body{padding:52px var(--gutter) 52px}
  .hero__row{gap:22px;margin-top:28px}
  .hero__lede{max-width:none}
  .story__grid{padding:56px var(--gutter);gap:38px}
  .masala{padding:56px var(--gutter) 72px}
  .masala__row{margin-top:38px}
  .fact{padding:22px 24px 20px}
  .menu-head{padding:56px var(--gutter) 4px}
  .menu-head__row{gap:18px}
  .menu-panel{padding:36px 26px 32px;transform:rotate(-.3deg)}
  .menu-panel__foot{margin-top:38px;gap:14px}
  .menu-item__name{font-size:14px}
  .menu-item__price{font-size:20px}
  .about-head{padding:56px var(--gutter) 48px}
  .about-head__p{font-size:17px}
  .collage{margin-top:44px}
  .about-band{padding:56px var(--gutter) 72px}
  .fact-card{padding:22px 24px}
  .contact{padding:56px var(--gutter) 72px}
  .contact__grid{margin-top:40px}
  .contact__col{gap:28px}
  .footer__in{padding:52px var(--gutter) 24px}
  .footer__grid{grid-template-columns:1fr;gap:32px}
  .footer__bottom{margin-top:36px;gap:10px}
  .snap__cap{font-size:18px}
}

/* Small phones — trim the tilt so no rotated card can reach the viewport edge. */
@media (max-width:400px){
  :root{--gutter:16px}
  .hero__card{--rot:-1.4deg;left:4%;max-width:90%}
  .dish--a{--rot:-1.2deg}
  .dish--b{--rot:1deg}
  .dish--c{--rot:-.7deg}
  .fact--a{--rot:-1.2deg}
  .fact--b{--rot:1deg}
  .fact--c{--rot:-.7deg}
  .collage__a{--rot:-1.2deg}
  .collage__b{--rot:1deg}
  .story__snap{--rot:1.2deg}
  .map-card{--rot:.6deg}
  .hours-card{--rot:-1deg}
  .call-card,.fact-card{transform:rotate(.8deg)}
  .menu-panel{transform:rotate(-.2deg)}
}
