/* =====================================================================
   Żar theme — tokens copied from design/tokens.css (color-expert, 2026-09-27).
   @font-face comes from theme.json (fontFace). Do not edit colours here:
   change design/tokens.css and copy again.
   ===================================================================== */
:root {
  color-scheme: dark;

  /* ---------- Primitive: warm charcoal neutral, h 47 (= accent hue), C 0.010–0.012 ---------- */
  --neutral-50:  #f5ede9; /* oklch(0.951 0.010 48.6) text-strong */
  --neutral-100: #e7dfdc; /* oklch(0.909 0.010 41.9) text */
  --neutral-200: #c8bfba; /* oklch(0.811 0.012 51.3) text-muted */
  --neutral-300: #aba29e; /* oklch(0.719 0.012 45.7) text-subtle */
  --neutral-400: #8d8480; /* oklch(0.620 0.012 45.6) disabled text only */
  --neutral-500: #736b67; /* oklch(0.534 0.012 48.5) field border (≥ 3:1 on bg, surface-1, surface-2) */
  --neutral-600: #4d4642; /* oklch(0.400 0.012 51.9) border */
  --neutral-700: #3b3430; /* oklch(0.331 0.012 51.8) border-subtle */
  --neutral-800: #322b28; /* oklch(0.296 0.012 44.6) surface-3 (hover on surfaces) */
  --neutral-850: #28211e; /* oklch(0.255 0.012 44.6) surface-2 (highlighted band) */
  --neutral-900: #1e1815; /* oklch(0.215 0.011 48.2) surface-1 (raised) */
  --neutral-950: #150f0c; /* oklch(0.175 0.012 48.0) page background — the client's black */

  /* ---------- Primitive: ember accent scale (palette.py scale #ec8047; seed on step 400) ---------- */
  --accent-50:  #fdf5f1; /* oklch(0.975 0.010 48.6) */
  --accent-100: #fbe9e0; /* oklch(0.946 0.023 48.5) */
  --accent-200: #f6d6c8; /* oklch(0.899 0.041 45.1) */
  --accent-300: #f0bca3; /* oklch(0.836 0.069 46.9) */
  --accent-400: #ec8047; /* oklch(0.710 0.151 46.8) CTA fill */
  --accent-500: #d67441; /* oklch(0.661 0.139 46.5) */
  --accent-600: #b55112; /* oklch(0.554 0.147 46.5) */
  --accent-700: #9d460e; /* oklch(0.500 0.131 46.9) */
  --accent-800: #803709; /* oklch(0.430 0.114 46.5) */
  --accent-900: #662d0b; /* oklch(0.370 0.093 46.9) */
  --accent-950: #401e0c; /* oklch(0.279 0.060 46.7) */

  /* ---------- Primitive: flame (decorative, hero only; never behind text) ---------- */
  --flame-core:  #f2b95a; /* oklch(0.820 0.130 78.0)  R/(R+G+B) 0.47 — not "saturated red" */
  --flame-mid:   #e98a35; /* oklch(0.721 0.150 58.1)  R/(R+G+B) 0.55 */
  --flame-tip:   #ce6330; /* oklch(0.621 0.150 43.9)  R/(R+G+B) 0.58 */
  --flame-ember: #9a4825; /* oklch(0.500 0.120 42.3)  static "żar" state and band glow */

  /* ---------- Semantic roles (dark, the only shipped theme) ---------- */
  --color-background: var(--neutral-950);
  --color-surface:    var(--neutral-900);
  --color-surface-2:  var(--neutral-850);
  --color-surface-3:  var(--neutral-800);
  --color-border-subtle: var(--neutral-700);
  --color-border:     var(--neutral-600);
  --color-border-strong: var(--neutral-500);
  --color-text-strong: var(--neutral-50);   /* headings, prices, dish names */
  --color-text:       var(--neutral-100);   /* body: 14.46:1 on bg, 12.05:1 on surface-2 */
  --color-text-muted: var(--neutral-200);   /* dish descriptions, portions, allergen codes: ≥ 7.68:1 everywhere */
  --color-text-subtle: var(--neutral-300);  /* captions "Zdjęcie poglądowe", meta: ≥ 5.55:1 everywhere */
  --color-text-disabled: var(--neutral-400);

  --color-primary:        var(--accent-400);  /* "Zarezerwuj stolik" only */
  --color-on-primary:     var(--neutral-950); /* 7.00:1, APCA Lc 51 */
  --color-primary-hover:  #fd9057; /* oklch(0.760 0.150 47.0) ΔL +0.05 — ember brightens; label 8.41:1 */
  --color-primary-active: #de733a; /* oklch(0.669 0.151 46.4) ΔL −0.04; label 5.98:1 */
  --color-accent:         var(--accent-400);
  --color-on-accent:      var(--neutral-950);
  --color-accent-line:    var(--accent-400);
  --img-grade-bright: brightness(0.85);  /* 2–3 px current-page / current-category bars only */

  --color-link:        #efc8aa; /* oklch(0.859 0.060 59.4) always underlined; 12.22:1 on bg */
  --color-link-underline: var(--accent-400);
  --color-focus-ring:  #f3ebd5; /* oklch(0.941 0.030 90.3) 2 px + dark halo; ≥ 11.67:1 on every surface */
  --color-focus-halo:  var(--neutral-950);

  /* status: separated by lightness as well as hue (CVD), always icon + word */
  --success: #76be86; --on-success: var(--neutral-950); --success-text: #76be86; --success-bg: #17261a; /* oklch(0.739 0.109 150.2) */
  --warning: #f9d783; --on-warning: var(--neutral-950); --warning-text: #f9d783; --warning-bg: #282110; /* oklch(0.890 0.110 88.1) */
  --error:   #ffaea7; --on-error:   var(--neutral-950); --error-text:   #ffaea7; --error-bg:   #2f1c1a; /* oklch(0.827 0.096 24.8) */
  --info:    #8cbde8; --on-info:    var(--neutral-950); --info-text:    #8cbde8; --info-bg:    #15232f; /* oklch(0.779 0.081 245.6) */

  /* ---------- Section bands (ux-spec §8) ---------- */
  --band-base: var(--color-background);                 /* default black */
  --band-highlight: var(--color-surface-2);             /* S-04 prices, S-07 / N-04 contact + booking */
  --band-glow: radial-gradient(60% 3rem at 50% 0, color-mix(in oklch, var(--flame-ember) 45%, transparent), transparent 100%); /* static ember edge, no motion */
  --band-edge: 1px solid color-mix(in oklch, var(--flame-ember) 70%, var(--neutral-850));

  /* ---------- Typography ---------- */
  --font-heading: "Young Serif", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --font-body: "Karla", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --weight-regular: 400; --weight-semibold: 600; --weight-bold: 700; /* display: Young Serif 400 */
  /* Utopia: 360 → 1440 px, 17 px / 1.2 → 19 px / 1.25 */
  --step--2: 0.75rem;                                           /* 12 px floor: legal footnotes only */
  --step--1: clamp(0.8854rem, 0.8639rem + 0.0957vw, 0.9500rem); /* 14.2 → 15.2 */
  --step-0:  clamp(1.0625rem, 1.0208rem + 0.1852vw, 1.1875rem); /* 17.0 → 19.0 body, prices, weights */
  --step-1:  clamp(1.2750rem, 1.2052rem + 0.3102vw, 1.4844rem); /* 20.4 → 23.8 */
  --step-2:  clamp(1.5300rem, 1.4215rem + 0.4822vw, 1.8555rem); /* 24.5 → 29.7 */
  --step-3:  clamp(1.8360rem, 1.6749rem + 0.7161vw, 2.3193rem); /* 29.4 → 37.1 */
  --step-4:  clamp(2.2032rem, 1.9712rem + 1.0311vw, 2.8992rem); /* 35.3 → 46.4 */
  --step-5:  clamp(2.6438rem, 2.3171rem + 1.4520vw, 3.6240rem); /* 42.3 → 58.0 */
  --leading-display: 1.1; --leading-heading: 1.2; --leading-ui: 1.33; --leading-body: 1.5;
  --tracking-display: -0.01em; --tracking-caps: 0.08em;
  --measure-body: 66ch; --measure-heading: 22ch;
  --numeric-prices: tabular-nums lining-nums; /* font-variant-numeric for every price/weight column */

  /* ---------- Spacing (4 px base) ---------- */
  --space-0: 0; --space-0-5: 0.125rem; --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem;
  --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem; --space-20: 5rem; --space-24: 6rem; --space-32: 8rem; --space-40: 10rem;
  --space-stack-label: var(--space-2);   /* label → field */
  --space-stack-field: var(--space-6);   /* field → next field */
  --space-menu-item: var(--space-5);     /* between dishes */
  --space-menu-category: var(--space-16);/* between categories (≥ 2× item gap, Gestalt) */
  --space-inset-card: var(--space-6);
  --space-gap-cards: var(--space-8);
  --space-page-x: clamp(1rem, 0.333rem + 2.963vw, 3rem);          /* 16 → 48 */
  --space-section: clamp(4rem, 3.333rem + 2.963vw, 6rem);         /* 64 → 96 */
  --space-section-sm: clamp(3rem, 2.667rem + 1.481vw, 4rem);      /* 48 → 64 */
  --container-prose: 66ch; --container-form: 40rem; --container-default: 75rem; /* 1200 px (ux-spec) */

  /* ---------- Sizes ---------- */
  --control-sm: 2rem; --control-md: 2.5rem; --control-lg: 3rem; --target-min: 2.75rem;
  --icon-sm: 1rem; --icon-md: 1.25rem; --icon-lg: 1.5rem; --icon-stroke: 1.75px;

  /* ---------- Shape: "sharp" personality (craft, butcher block) ---------- */
  --radius-xs: 2px; --radius-sm: 4px; --radius-md: 4px; --radius-lg: 4px; --radius-full: 9999px;
  --radius-media: 2px;
  --border-hairline: 1px; --border-strong: 2px; --border-accent: 3px;
  --focus-ring-width: 2px; --focus-ring-offset: 2px;

  /* ---------- Depth: elevation = lighter surface; shadows only for overlays ---------- */
  --shadow-color: 20deg 27.3% 3%; /* hue + saturation of the bg #150f0c (hsl 20 27.3% 6.5%), darker */
  --shadow-1: 0 1px 2px hsl(var(--shadow-color) / 0.40);
  --shadow-2: 0 2px 4px hsl(var(--shadow-color) / 0.40), 0 4px 8px hsl(var(--shadow-color) / 0.30);
  --shadow-3: 0 4px 8px hsl(var(--shadow-color) / 0.45), 0 12px 24px hsl(var(--shadow-color) / 0.35);
  --img-edge: inset 0 0 0 1px color-mix(in oklch, var(--neutral-50) 8%, transparent); /* keeps dark photo edges visible on black */

  /* ---------- Opacity scale ---------- */
  --state-hover: 0.08; --state-focus: 0.10; --state-pressed: 0.10; --state-dragged: 0.16;
  --disabled-content: 0.38; --disabled-container: 0.12;
  --scrim: 0.60;

  /* ---------- Motion ---------- */
  --dur-instant: 100ms; --dur-fast: 150ms; --dur-panel: 250ms; --dur-header: 300ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --ease-enter: cubic-bezier(0, 0, 0, 1);
  --ease-exit: cubic-bezier(0.3, 0, 1, 1);

  /* ---------- Flame effect B-07/B-08 (ux-spec §6.2) ---------- */
  --flame-sequence: 4.5s;       /* total; motion ≤ 5 s → WCAG 2.2.2 needs no pause, B-08 given anyway */
  --flame-settle: 1s;           /* last second: monotonic dim to ember (not a flash pair) */
  --flame-cycle-tip: 1.2s;      /* each layer ≥ 1.2 s per cycle → ≤ 0.83 light/dark pairs per second */
  --flame-cycle-mid: 1.5s;
  --flame-cycle-core: 1.8s;
  --ease-flame: cubic-bezier(0.37, 0, 0.63, 1); /* sine in-out: no jumps */
  --flame-scale-min: 0.92; --flame-scale-max: 1.06;
  --flame-shift: 4px;           /* translateX ±4 px */
  --flame-opacity-tip-min: 0.55;  --flame-opacity-tip-max: 0.85;  /* ΔY 0.087 alone */
  --flame-opacity-mid-min: 0.60;  --flame-opacity-mid-max: 0.80;  /* ΔY 0.096 tip+mid */
  --flame-opacity-core-min: 0.75; --flame-opacity-core-max: 0.85; /* ΔY 0.086 alone, 0.059 stacked */
  --flame-ember-scale: 0.45; --flame-ember-opacity: 0.35;         /* static end state */
  --flame-settle-opacity: 0.7; --flame-settle-opacity-core: 0.8;  /* at 3.5 s, inside the ranges above */
  --flame-blur: 3px;            /* STATIC filter on each tongue, never animated */
  --flame-width: 312px;         /* (312 + 8) × (64 × 1.06) = 21 709 px² ≤ 21 824 (25 % of 341×256) */
  --flame-height: 64px;
}

/* Optional light "paper" field for the menu list and forms (ux-spec §8 / R-22 fallback).
   Apply with data-theme="light" on the menu <section> or the form only, never on the whole site. */
:root[data-theme="light"], [data-theme="light"] {
  color-scheme: light;
  --color-background: #f8f2eb; /* oklch(0.964 0.011 71.9) */
  --color-surface:    #fefbf7; /* oklch(0.989 0.006 75.4) */
  --color-surface-2:  #f8f2eb;
  --color-surface-3:  #ede7df; /* oklch(0.930 0.012 75) hover */
  --color-border-subtle: #dbd2ce; /* oklch(0.870 0.012 47) */
  --color-border:     #c5bcb7; /* oklch(0.800 0.012 47) */
  --color-border-strong: #938a86; /* oklch(0.640 0.012 45.6) 3.04:1 */
  --color-text-strong: #241e1a; /* oklch(0.241 0.012 55.7) */
  --color-text:       #241e1a;  /* 14.81:1 */
  --color-text-muted: #534b48;  /* oklch(0.420 0.012 41.8) 7.66:1 */
  --color-text-subtle: #534b48;
  --color-link:       #8f4111;  /* oklch(0.470 0.120 47.0) 6.44:1 */
  --color-focus-ring: #241e1a;
  --color-focus-halo: #fefbf7;
  --success: #1d5522; --success-text: #1d5522; --on-success: #ffffff; --success-bg: #ebf5ed; /* 7.92:1 */
  --warning: #604200; --warning-text: #604200; --on-warning: #ffffff; --warning-bg: #f6f1e7; /* 8.19:1 */
  --error:   #742e29; --error-text:   #742e29; --on-error:   #ffffff; --error-bg:   #fceeec; /* 8.58:1 */
  --info:    #124a7b; --info-text:    #124a7b; --on-info:    #ffffff; --info-bg:    #ebf3fc; /* 8.19:1 */
  --band-highlight: #ede7df;
  /* the CTA keeps --color-primary #ec8047 with the dark label (7.00:1); its fill is 2.43:1 against paper,
     allowed because the label identifies the button (WCAG 1.4.11 note) */
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-instant: 0ms; --dur-fast: 0ms; --dur-panel: 0ms; --dur-header: 0ms; }
}
@media (prefers-contrast: more) {
  :root { --color-text-muted: var(--neutral-100); --color-text-subtle: var(--neutral-200); --color-border: var(--neutral-500); }
}

/* =====================================================================
   Components — every class maps to a pattern ID of design/ux-spec.md
   (catalogue: ux-architect/references/section-patterns-a.md / -b.md).
   Class prefix z-. Breakpoints: 720 px (one column below), 1024 px (N-02).
   ===================================================================== */

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; } }
body {
  margin: 0; background: var(--color-background); color: var(--color-text);
  font-family: var(--font-body); font-size: var(--step-0); line-height: var(--leading-body);
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 400; color: var(--color-text-strong); line-height: var(--leading-heading); margin: 0 0 var(--space-4); text-wrap: balance; }
h1 { font-size: var(--step-5); line-height: var(--leading-display); letter-spacing: var(--tracking-display); max-inline-size: var(--measure-heading); }
h2 { font-size: var(--step-3); }
h3 { font-size: var(--step-1); }
p, ul, ol, dl { margin: 0 0 var(--space-4); }
p { max-inline-size: var(--measure-body); }
.z-check li, .z-steps li, .z-plan__items li, .z-legal__body li { max-inline-size: var(--measure-body); }
strong { color: var(--color-text-strong); }
a { color: var(--color-link); text-decoration: underline; text-decoration-color: var(--color-link-underline); text-decoration-thickness: var(--border-hairline); text-underline-offset: 0.2em; }
a:hover { text-decoration-thickness: var(--border-strong); }
:focus-visible { outline: var(--focus-ring-width) solid var(--color-focus-ring); outline-offset: var(--focus-ring-offset); box-shadow: 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width) + var(--border-strong)) var(--color-focus-halo); }
[tabindex="-1"]:focus:not(:focus-visible) { outline: none; box-shadow: none; }
img { max-inline-size: 100%; block-size: auto; }
abbr[title] { text-decoration: none; }
::placeholder { color: var(--color-text-subtle); opacity: 1; }
[hidden] { display: none !important; }
.screen-reader-text { position: absolute !important; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.z-main { display: block; }
.z-main:focus { outline: none; }
.wp-block-post-content > * { margin-block: 0; }

/* ---------- Skip link (B-23), demo banner ---------- */
.z-skip { position: absolute; inset-inline-start: var(--space-4); inset-block-start: calc(-1 * var(--space-16)); z-index: 100; padding: var(--space-3) var(--space-4); background: var(--color-text-strong); color: var(--color-background); font-weight: var(--weight-bold); border-radius: var(--radius-sm); }
.z-skip:focus { inset-block-start: var(--space-2); }
.z-draft { padding: var(--space-2) var(--space-page-x); background: var(--warning-bg); color: var(--warning-text); font-size: var(--step--1); text-align: center; }
.z-draft a { color: var(--warning-text); }

/* ---------- Buttons (levels: primary = only accent fill; secondary = outline) ---------- */
.z-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-block-size: var(--control-lg); padding: var(--space-2) var(--space-6); border: var(--border-hairline) solid transparent; border-radius: var(--radius-md);
  font: var(--weight-bold) var(--step-0)/1.2 var(--font-body); text-decoration: none; cursor: pointer; text-align: center;
  transition: background-color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);
}
.z-btn--primary { background: var(--color-primary); color: var(--color-on-primary); }
.z-btn--primary:hover { background: var(--color-primary-hover); color: var(--color-on-primary); }
.z-btn--primary:active { background: var(--color-primary-active); }
.z-btn--secondary { background: transparent; color: var(--color-text-strong); border-color: var(--color-border-strong); }
.z-btn--secondary:hover { background: var(--color-surface-3); color: var(--color-text-strong); }
.z-btn--wide { inline-size: 100%; }
.z-btn:disabled, .z-btn[aria-disabled="true"] { opacity: var(--disabled-content); cursor: progress; }
.z-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; margin-block: var(--space-6) 0; }
.z-more a, a.z-more { font-weight: var(--weight-semibold); }
.z-more a::after, a.z-more::after { content: " →"; }
.z-phone { white-space: nowrap; font-variant-numeric: var(--numeric-prices); }

/* ---------- Header: N-01 P-A-35:V2 (static bar + utility row) ---------- */
.z-header { position: relative; z-index: 40; background: var(--color-background); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-utility { border-block-end: var(--border-hairline) solid var(--color-border-subtle); font-size: var(--step--1); color: var(--color-text-muted); }
.z-utility__inner, .z-masthead__inner { padding-inline: max(var(--space-page-x), calc((100% - var(--container-default)) / 2)); display: flex; align-items: center; gap: var(--space-6); }
.z-utility__inner { justify-content: flex-end; min-block-size: var(--control-md); }
.z-utility a { color: var(--color-text); }
.z-masthead__inner { min-block-size: 4.5rem; justify-content: space-between; }
.z-brand { display: flex; flex-direction: column; text-decoration: none; color: var(--color-text-strong); line-height: 1.1; }
.z-brand__name { font-family: var(--font-heading); font-size: var(--step-2); }
.z-brand__role { font-size: var(--step--1); color: var(--color-text-muted); margin-block-start: var(--space-1); }
.z-nav__list { display: flex; gap: var(--space-1); list-style: none; margin: 0; padding: 0; }
.z-nav__list a { white-space: nowrap; display: flex; align-items: center; min-block-size: var(--target-min); padding-inline: var(--space-3); color: var(--color-text); text-decoration: none; font-weight: var(--weight-semibold); box-shadow: inset 0 calc(-1 * var(--border-accent)) 0 transparent; }
.z-nav__list a:hover { color: var(--color-text-strong); box-shadow: inset 0 calc(-1 * var(--border-hairline)) 0 var(--color-border-strong); }
.z-nav__list a[aria-current="page"] { color: var(--color-text-strong); box-shadow: inset 0 calc(-1 * var(--border-accent)) 0 var(--color-accent-line); }
.z-masthead__cta { flex: none; }
.z-masthead__cta[aria-current="page"] { box-shadow: 0 0 0 var(--border-hairline) var(--color-text-strong); }
.z-masthead__mobile { display: none; align-items: center; gap: var(--space-2); }
.z-more-panel { display: none; }
@media (max-width: 1599px) { .z-brand__role { display: none; } }
@media (min-width: 1024px) and (max-width: 1365px) { .z-nav__list a { padding-inline: var(--space-2); } .z-masthead__inner { gap: var(--space-4); } }
@media (min-width: 1024px) and (max-width: 1199px) { .z-nav__list a { font-size: var(--step--1); padding-inline: 0.375rem; } .z-masthead__cta { padding-inline: var(--space-4); } }

/* ---------- N-02 P-A-13:V3 (< 1024 px): top bar logo · Menu · Więcej; bottom action bar ---------- */
.z-actionbar { display: none; }
@media (max-width: 1023px) {
  .z-header { position: sticky; top: 0; transition: transform var(--dur-header) var(--ease-standard); }
  .z-header.is-hidden { transform: translateY(-100%); }
  .z-utility, .z-nav, .z-masthead__cta { display: none; }
  .z-masthead__inner { min-block-size: 3.5rem; gap: var(--space-3); }
  .z-brand__name { font-size: var(--step-1); }
  .z-brand__role { display: none; }
  .z-masthead__mobile { display: flex; }
  .z-masthead__menu, .z-more-toggle { display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: var(--target-min); padding-inline: var(--space-3); color: var(--color-text-strong); font: var(--weight-semibold) var(--step-0)/1 var(--font-body); text-decoration: none; background: transparent; border: var(--border-hairline) solid var(--color-border-strong); border-radius: var(--radius-sm); cursor: pointer; }
  .z-masthead__menu { border-color: transparent; text-decoration: underline; text-decoration-color: var(--color-link-underline); text-underline-offset: 0.25em; }
  .z-masthead__menu[aria-current="page"] { text-decoration-thickness: var(--border-accent); }
  .z-more-toggle__icon { inline-size: 1rem; block-size: 0.75rem; background: linear-gradient(currentColor 0 0) top / 100% 2px no-repeat, linear-gradient(currentColor 0 0) center / 100% 2px no-repeat, linear-gradient(currentColor 0 0) bottom / 100% 2px no-repeat; }
  .z-more-toggle[aria-expanded="true"] .z-more-toggle__icon { background: linear-gradient(45deg, transparent 45%, currentColor 45% 55%, transparent 55%), linear-gradient(-45deg, transparent 45%, currentColor 45% 55%, transparent 55%); block-size: 1rem; }
  .z-more-panel { display: block; position: absolute; inset-inline: 0; inset-block-start: 100%; max-block-size: calc(100svh - 3.5rem); overflow-y: auto; padding: var(--space-4) var(--space-page-x) var(--space-8); background: var(--color-surface); border-block-end: var(--border-hairline) solid var(--color-border); box-shadow: var(--shadow-3); }
  .z-more-panel__list { list-style: none; margin: 0 0 var(--space-4); padding: 0; }
  .z-more-panel__list a { display: flex; align-items: center; min-block-size: var(--control-lg); color: var(--color-text-strong); text-decoration: none; font-weight: var(--weight-semibold); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
  .z-more-panel__list a[aria-current="page"] { box-shadow: inset var(--border-accent) 0 0 var(--color-accent-line); padding-inline-start: var(--space-3); }
  .z-more-panel__meta { color: var(--color-text-muted); margin: var(--space-2) 0 0; }
  body.z-no-scroll { overflow: hidden; }
  .z-actionbar { display: grid; grid-template-columns: 1fr 1.6fr; gap: var(--space-2); position: fixed; inset-inline: 0; inset-block-end: 0; z-index: 50; padding: var(--space-2) var(--space-page-x) calc(var(--space-2) + env(safe-area-inset-bottom)); background: var(--color-background); border-block-start: var(--border-hairline) solid var(--color-border); transition: transform var(--dur-panel) var(--ease-standard); }
  .z-actionbar .z-btn { min-block-size: var(--control-lg); padding-inline: var(--space-3); }
  .z-actionbar.is-hidden { transform: translateY(110%); visibility: hidden; }
  body { padding-block-end: calc(var(--control-lg) + var(--space-4) + env(safe-area-inset-bottom)); }
}

/* ---------- Sections and bands ---------- */
.z-section { padding-block: var(--space-section); padding-inline: max(var(--space-page-x), calc((100% - var(--container-default)) / 2)); }
.z-section + .z-section:not(.z-band) { padding-block-start: 0; }
.z-band { background-color: var(--band-highlight); background-image: var(--band-glow); border-block-start: var(--band-edge); padding-block: var(--space-section-sm); }
.z-band + .z-section:not(.z-band) { padding-block-start: var(--space-section); }
.z-section__head { max-inline-size: 48rem; margin-block-end: var(--space-8); }
.z-section__head p { color: var(--color-text-muted); }
.z-lead { font-size: var(--step-1); color: var(--color-text); max-inline-size: 38ch; }
.z-meta { color: var(--color-text-muted); font-size: var(--step--1); }
.z-caption, figcaption { font-size: var(--step--1); color: var(--color-text-subtle); margin-block-start: var(--space-2); }

/* ---------- Photos (images.md: 2 px corners, 1 px inner edge on black) ---------- */
.z-photo { position: relative; margin: 0; }
.z-photo picture { display: block; inline-size: 100%; position: relative; overflow: hidden; border-radius: var(--radius-media); background: var(--color-surface); }
.z-photo picture::after { content: ""; position: absolute; inset: 0; box-shadow: var(--img-edge); border-radius: inherit; pointer-events: none; }
.z-photo img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }

/* ---------- P-A-01:V1 typographic page header ---------- */
.z-hero { padding-block: var(--space-section-sm) var(--space-12); }
.z-hero h1 { margin-block-end: var(--space-4); }
.z-hero .z-lead { margin-block-end: var(--space-2); }

/* ---------- P-A-02:V1 split header: text 7/12 + photo 5/12 in the container ---------- */
.z-hero--split { display: grid; grid-template-columns: 7fr 5fr; gap: var(--space-12); align-items: center; padding-block: var(--space-section-sm); }
.z-hero--split > * { margin: 0; }
.z-hero--split .z-photo picture { aspect-ratio: 3 / 2; }

/* ---------- P-A-02:V3 home hero: text 7/12 in the container, photo half-bleeds to the right edge ---------- */
.z-hero--bleed {
  --c: min(var(--container-default), 100% - 2 * var(--space-page-x));
  display: grid; grid-template-columns: calc((100% - var(--c)) / 2) calc(var(--c) * 7 / 12) 1fr;
  padding: 0; align-items: stretch;
}
.z-hero--bleed > .z-hero__text { grid-column: 2; align-self: center; padding-block: var(--space-12); padding-inline-end: var(--space-12); margin: 0; }
.z-hero--bleed > .z-hero__media { grid-column: 3; margin: 0; }
.z-hero--bleed .z-photo, .z-hero--bleed .z-photo picture { block-size: 100%; }
.z-hero--bleed .z-photo picture { aspect-ratio: 4 / 5; max-block-size: min(44rem, calc(100svh - 7rem)); min-block-size: 30rem; border-radius: 0; }
.z-hero--bleed .z-photo picture::after { box-shadow: none; }
.z-hero__eyebrow { font-size: var(--step--1); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--color-text-muted); margin-block-end: var(--space-3); }
.z-hero__fact { color: var(--color-text-muted); margin-block: var(--space-6) 0; }
.z-hero__fact .z-phone { color: var(--color-text-strong); }

@media (max-width: 719px) {
  .z-hero--split, .z-hero--bleed { grid-template-columns: 1fr; gap: var(--space-6); }
  .z-hero--bleed > .z-hero__text { grid-column: 1; padding: var(--space-8) var(--space-page-x) 0; }
  .z-hero--bleed > .z-hero__media { grid-column: 1; }
  .z-hero--bleed .z-photo picture { aspect-ratio: 4 / 3; min-block-size: 0; max-block-size: none; }
  .z-actions .z-btn { flex: 1 1 12rem; }
}

/* ---------- P-A-20:V1 aligned rows: image left 4/12, text right 8/12; whole row is one link (B-09) ---------- */
.z-rows { display: grid; gap: var(--space-8); list-style: none; padding: 0; margin: 0; }
.z-row { position: relative; display: grid; grid-template-columns: 4fr 8fr; gap: var(--space-8); align-items: center; padding-block-end: var(--space-8); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-row > * { margin: 0; }
.z-row .z-photo picture { aspect-ratio: 3 / 2; }
.z-row h3 { font-size: var(--step-2); margin-block-end: var(--space-2); }
.z-row h3 a { color: var(--color-text-strong); text-decoration: none; }
.z-row h3 a::after { content: ""; position: absolute; inset: 0; }
.z-row:hover h3 a { text-decoration: underline; text-decoration-color: var(--color-link-underline); }
.z-row:focus-within { outline: var(--focus-ring-width) solid var(--color-focus-ring); outline-offset: var(--space-2); }
.z-row h3 a:focus-visible { outline: none; box-shadow: none; }
.z-row p { color: var(--color-text-muted); margin-block-end: var(--space-2); }
.z-row .z-row__price { color: var(--color-text-strong); font-weight: var(--weight-bold); font-variant-numeric: var(--numeric-prices); margin: 0; }
.z-rows-after { margin-block-start: var(--space-8); display: grid; gap: var(--space-2); }
.z-rows-after p { margin: 0; }
@media (max-width: 719px) { .z-row { grid-template-columns: 1fr; gap: var(--space-4); } }

/* ---------- P-A-33:V1 key-number band ---------- */
.z-keynums { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); margin: 0; }
.z-keynums > div { margin: 0; }
.z-keynums dt { font: 400 var(--step-3)/var(--leading-heading) var(--font-heading); color: var(--color-text-strong); font-variant-numeric: var(--numeric-prices); }
.z-keynums dd { margin: var(--space-2) 0 0; color: var(--color-text-muted); }
.z-keynums dd strong { display: block; color: var(--color-text); font-weight: var(--weight-semibold); }
@media (max-width: 1023px) { .z-keynums { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- P-A-30:V1 definition list (label 4/12, value 8/12); V2 summary cards ---------- */
.z-kv { margin: 0; border-block-start: var(--border-hairline) solid var(--color-border-subtle); }
.z-kv__row { display: grid; grid-template-columns: 4fr 8fr; gap: var(--space-6); padding-block: var(--space-4); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-kv dt { font-weight: var(--weight-semibold); color: var(--color-text-strong); }
.z-kv dd { margin: 0; color: var(--color-text); }
.z-kv dd > :last-child { margin-block-end: 0; }
.z-kv--center { max-inline-size: calc(var(--container-default) * 8 / 12); margin-inline: auto; }
.z-kv--compact .z-kv__row { grid-template-columns: 9rem 1fr; padding-block: var(--space-3); }
.z-kv-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-gap-cards); }
.z-kv-card { background: var(--color-surface); border: var(--border-hairline) solid var(--color-border-subtle); border-radius: var(--radius-lg); padding: var(--space-inset-card); }
.z-kv-card h3 { margin-block-end: var(--space-4); }
.z-kv-card .z-kv__row { grid-template-columns: 2fr 3fr; }
@media (max-width: 719px) {
  .z-kv__row, .z-kv--compact .z-kv__row, .z-kv-card .z-kv__row { grid-template-columns: 1fr; gap: var(--space-1); }
  .z-kv-cards { grid-template-columns: 1fr; }
}

/* ---------- P-A-21:V1 split screen fork: two equal panels, each photo 4:5 + heading + link ---------- */
.z-fork { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); }
.z-fork__panel { position: relative; display: flex; flex-direction: column; gap: var(--space-3); }
.z-fork__panel > * { margin: 0; }
.z-fork__panel .z-photo picture { aspect-ratio: 4 / 5; max-block-size: 34rem; }
.z-fork__panel h3 { font-size: var(--step-3); margin-block-start: var(--space-3); }
.z-fork__panel h3 a { color: var(--color-text-strong); text-decoration: none; }
.z-fork__panel h3 a::after { content: ""; position: absolute; inset: 0; }
.z-fork__panel:hover h3 a { text-decoration: underline; text-decoration-color: var(--color-link-underline); }
.z-fork__panel:focus-within { outline: var(--focus-ring-width) solid var(--color-focus-ring); outline-offset: var(--space-2); }
.z-fork__panel h3 a:focus-visible { outline: none; box-shadow: none; }
.z-fork__panel p { color: var(--color-text-muted); }
.z-fork__panel .z-fork__extra { position: relative; z-index: 1; }
@media (max-width: 719px) { .z-fork { grid-template-columns: 1fr; } .z-fork__panel .z-photo picture { aspect-ratio: 3 / 2; } }

/* ---------- P-B-33:V1 contact block: details 7/12, static map 5/12; B-19 map facade ---------- */
.z-contact { display: grid; grid-template-columns: 7fr 5fr; gap: var(--space-12); align-items: start; }
.z-contact__today { margin-block-end: var(--space-4); }
.z-address { font-style: normal; }
.z-hours { margin: 0; }
.z-hours__row { display: flex; flex-wrap: wrap; gap: 0 var(--space-3); }
.z-hours dt { min-inline-size: 5.5rem; color: var(--color-text-muted); }
.z-hours dd { margin: 0; font-variant-numeric: var(--numeric-prices); }
.z-hours__note { color: var(--color-text-muted); font-size: var(--step--1); margin-block: var(--space-2) 0; }
.z-status { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: var(--weight-semibold); color: var(--color-text-strong); }
.z-status::before { content: ""; inline-size: 0.6rem; block-size: 0.6rem; border-radius: var(--radius-full); background: var(--success); flex: none; }
.z-status.is-closed::before { background: transparent; border: var(--border-strong) solid var(--color-text-muted); }
.z-closed-hint { margin: var(--space-2) 0 0; color: var(--color-text-muted); font-size: var(--step--1); }
.z-icon-info { display: inline-grid; place-items: center; inline-size: 1.1em; block-size: 1.1em; border: var(--border-hairline) solid currentColor; border-radius: var(--radius-full); font-size: 0.85em; font-weight: var(--weight-bold); }
.z-reviews { margin-block: var(--space-6) 0; color: var(--color-text-muted); }
.z-map__static { margin: 0; }
.z-map__static picture, .z-map iframe { display: block; aspect-ratio: 3 / 2; inline-size: 100%; border: 0; border-radius: var(--radius-media); overflow: hidden; background: var(--color-surface); }
.z-map__static img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }
.z-map__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; margin-block: var(--space-4) 0; }
.z-map__route { margin: 0; }
.z-map__route a { font-weight: var(--weight-semibold); }
.z-map__notice { color: var(--color-text-muted); font-size: var(--step--1); margin-block: var(--space-2) 0; }
@media (max-width: 1023px) { .z-map__load { display: none !important; } }
@media (max-width: 719px) { .z-contact { grid-template-columns: 1fr; gap: var(--space-8); } }

/* ---------- P-B-30:V4 final contact band: booking + phone + today ---------- */
.z-cta { text-align: start; }
.z-cta h2 { margin-block-end: var(--space-2); }
.z-cta p { color: var(--color-text-muted); }
.z-cta .z-actions { margin-block: var(--space-6) var(--space-4); }
.z-cta .z-status { font-weight: var(--weight-regular); color: var(--color-text); }

/* ---------- P-A-37 notices: V3 key fact, V4 urgent route ---------- */
.z-notice { border-radius: var(--radius-sm); padding: var(--space-5) var(--space-6); margin-block: var(--space-6); }
.z-notice > :last-child { margin-block-end: 0; }
.z-notice p { max-inline-size: none; }
.z-notice--fact { background: var(--color-surface); border: var(--border-hairline) solid var(--color-border); border-inline-start: var(--border-accent) solid var(--color-text-muted); }
.z-notice--urgent { background: var(--color-surface-2); border: var(--border-strong) solid var(--color-text-strong); }
.z-notice__title { font-weight: var(--weight-bold); color: var(--color-text-strong); margin-block-end: var(--space-2); }
.z-notice--urgent .z-phone { font-weight: var(--weight-bold); font-size: var(--step-1); }
@media (max-width: 719px) { .z-notice--urgent .z-btn { inline-size: 100%; } }

/* ---------- P-A-28:V2 checklist, V1 icon + text grid ---------- */
.z-check { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-3); }
.z-check li { position: relative; padding-inline-start: var(--space-8); }
.z-check li::before { content: ""; position: absolute; inset-inline-start: 0; inset-block-start: 0.2em; inline-size: 1.25rem; block-size: 1.25rem; border-radius: var(--radius-full); border: var(--border-hairline) solid var(--color-border-strong);
  background: linear-gradient(var(--color-text-strong), var(--color-text-strong)) 50% 50% / 0 0 no-repeat; }
.z-check li::after { content: ""; position: absolute; inset-inline-start: 0.42rem; inset-block-start: calc(0.2em + 0.25rem); inline-size: 0.4rem; block-size: 0.65rem; border: solid var(--color-text-strong); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.z-features { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: var(--space-8); }
.z-features li { max-inline-size: none; border-block-start: var(--border-hairline) solid var(--color-border); padding-block-start: var(--space-4); }
.z-features li strong { display: block; font-family: var(--font-heading); font-weight: 400; font-size: var(--step-1); margin-block-end: var(--space-2); }
.z-features li::before { content: ""; display: block; inline-size: 1.5rem; block-size: var(--border-accent); background: var(--color-text-muted); margin-block-end: var(--space-3); }

/* ---------- P-A-29:V1 vertical numbered steps; P-B-14:V1 horizontal steps ---------- */
.z-steps { list-style: none; counter-reset: z-step; padding: 0; margin: 0; display: grid; gap: var(--space-6); }
.z-steps li { counter-increment: z-step; position: relative; padding-inline-start: var(--space-16); max-inline-size: 48rem; }
.z-steps li::before { content: counter(z-step); position: absolute; inset-inline-start: 0; inset-block-start: -0.1em; inline-size: var(--space-10); block-size: var(--space-10); display: grid; place-items: center; border: var(--border-hairline) solid var(--color-border-strong); border-radius: var(--radius-full); font: 400 var(--step-1)/1 var(--font-heading); color: var(--color-text-strong); }
.z-steps li strong { display: block; font-size: var(--step-1); font-family: var(--font-heading); font-weight: 400; margin-block-end: var(--space-1); }
.z-steps--row { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: var(--space-8); }
.z-steps--row li { padding: var(--space-16) 0 0; border-block-start: var(--border-hairline) solid var(--color-border); }
.z-steps--row li::before { inset-block-start: var(--space-4); }
@media (max-width: 719px) { .z-steps--row { grid-template-columns: 1fr; } .z-steps--row li { padding: 0 0 0 var(--space-16); border: 0; } .z-steps--row li::before { inset-block-start: -0.1em; } }

/* ---------- P-A-17 table (comparison / doneness); B-13 rows become labelled blocks on phones ---------- */
.z-table-wrap, .wp-block-table.z-table { margin-block: var(--space-8); }
.z-table, .z-table table { inline-size: 100%; border-collapse: collapse; font-variant-numeric: var(--numeric-prices); }
.z-table caption, .z-table figcaption { text-align: start; font: 400 var(--step-2)/var(--leading-heading) var(--font-heading); color: var(--color-text-strong); margin-block-end: var(--space-4); caption-side: top; }
.z-table th, .z-table td { text-align: start; vertical-align: top; padding: var(--space-3) var(--space-4) var(--space-3) 0; border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-table thead th { font-size: var(--step--1); font-weight: var(--weight-semibold); color: var(--color-text-muted); border-block-end-color: var(--color-border); }
.z-table tbody th { font-weight: var(--weight-bold); color: var(--color-text-strong); }
.wp-block-table.z-table thead { border: 0; }
@media (max-width: 719px) {
  .z-table thead { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .z-table tr { display: block; padding-block: var(--space-3); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
  .z-table th, .z-table td { display: grid; grid-template-columns: 8rem 1fr; gap: var(--space-3); padding: var(--space-1) 0; border: 0; }
  .z-table th[data-label]::before, .z-table td[data-label]::before { content: attr(data-label); font-weight: var(--weight-regular); font-size: var(--step--1); color: var(--color-text-muted); }
}

/* ---------- P-A-27:V1 sticky section heading 4/12 + scrolling topics 8/12 ---------- */
.z-split { display: grid; grid-template-columns: 4fr 8fr; gap: var(--space-12); align-items: start; }
.z-split > .z-split__head { position: sticky; top: var(--space-6); }
.z-split__body > * + h3 { margin-block-start: var(--space-10); }
@media (max-width: 719px) { .z-split { grid-template-columns: 1fr; gap: var(--space-4); } .z-split > .z-split__head { position: static; } }

/* ---------- P-A-27:V4 legal: sticky TOC + numbered sections ---------- */
.z-legal { display: grid; grid-template-columns: 3fr 9fr; gap: var(--space-12); align-items: start; }
.z-legal__toc { position: sticky; top: var(--space-6); font-size: var(--step--1); }
.z-legal__toc ol { padding-inline-start: var(--space-5); }
.z-legal__toc li { margin-block-end: var(--space-2); }
.z-legal__body h2 { font-size: var(--step-2); margin-block-start: var(--space-12); scroll-margin-top: var(--space-6); }
.z-legal__body h2:first-child { margin-block-start: 0; }
@media (max-width: 1023px) { .z-legal { grid-template-columns: 1fr; gap: var(--space-6); } .z-legal__toc { position: static; } }

/* ---------- P-A-35 in-page anchor row (Z-02) ---------- */
.z-anchors { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); list-style: none; padding: var(--space-4) 0; margin: 0 0 var(--space-8); border-block: var(--border-hairline) solid var(--color-border-subtle); }
.z-anchors a { display: inline-flex; align-items: center; min-block-size: var(--target-min); font-weight: var(--weight-semibold); }

/* ---------- P-B-28:V1 questions as headings with visible answers ---------- */
.z-faq__index { columns: 2 18rem; column-gap: var(--space-8); padding-inline-start: var(--space-5); margin-block-end: var(--space-12); }
.z-faq__index li { break-inside: avoid; margin-block-end: var(--space-2); }
.z-faq__group + .z-faq__group { margin-block-start: var(--space-16); }
.z-faq__group > h2 { scroll-margin-top: var(--space-6); }
.z-faq__item { max-inline-size: 48rem; padding-block: var(--space-4); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-faq__item h3 { font-size: var(--step-1); scroll-margin-top: var(--space-6); }
.z-faq__item > :last-child { margin-block-end: 0; }
.z-faq__top { font-size: var(--step--1); margin-block-start: var(--space-4); }

/* ---------- P-B-21:V1 group menu cards (same order of courses, no highlight) ---------- */
.z-plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-gap-cards); }
.z-plan { background: var(--color-surface); border: var(--border-hairline) solid var(--color-border-subtle); border-radius: var(--radius-lg); padding: var(--space-inset-card); display: flex; flex-direction: column; }
.z-plan h3 { font-size: var(--step-2); margin-block-end: var(--space-1); }
.z-plan__for { color: var(--color-text-muted); }
.z-plan__price { color: var(--color-text-muted); font-variant-numeric: var(--numeric-prices); }
.z-plan__price strong { font: 400 var(--step-3)/1 var(--font-heading); color: var(--color-text-strong); margin-inline-end: var(--space-1); }
.z-plan__items { padding-inline-start: var(--space-5); display: grid; gap: var(--space-2); }
.z-plan__min { margin: auto 0 0; color: var(--color-text-muted); font-size: var(--step--1); }
.z-plans__note { margin-block-start: var(--space-6); color: var(--color-text-muted); }
@media (max-width: 1023px) { .z-plans { grid-template-columns: 1fr; } }

/* ---------- Menu page: M-03 P-A-14:V3 sticky categories 3/12 + M-04 P-B-22:V1+V4 price list ---------- */
.z-menu__before { max-inline-size: 60rem; margin-block: 0 var(--space-12); }
.z-menu__grid { display: grid; grid-template-columns: 3fr 9fr; gap: var(--space-12); align-items: start; }
.z-toc { position: sticky; top: var(--space-6); max-block-size: calc(100vh - var(--space-12)); overflow-y: auto; }
.z-toc:focus { outline: none; }
.z-toc__title { font-size: var(--step--1); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--color-text-muted); margin-block-end: var(--space-3); }
.z-toc ul { list-style: none; margin: 0; padding: 0; border-inline-start: var(--border-hairline) solid var(--color-border-subtle); }
.z-toc a { display: flex; align-items: center; min-block-size: var(--target-min); padding: var(--space-1) var(--space-4); color: var(--color-text-muted); text-decoration: none; }
.z-toc a:hover { color: var(--color-text-strong); background: var(--color-surface); }
.z-toc a[aria-current="true"] { color: var(--color-text-strong); font-weight: var(--weight-semibold); box-shadow: inset var(--border-accent) 0 0 var(--color-accent-line); }
.z-toc__extra:first-of-type { margin-block-start: var(--space-3); border-block-start: var(--border-hairline) solid var(--color-border-subtle); padding-block-start: var(--space-3); }
.z-menu-cat, .z-menu-extra { scroll-margin-top: var(--space-6); }
.z-menu-cat + .z-menu-cat, .z-menu-extra { margin-block-start: var(--space-menu-category); }
.z-menu-cat h2, .z-menu-extra h2 { font-size: var(--step-3); margin-block-end: var(--space-2); }
.z-menu-cat h2:focus, .z-menu-extra h2:focus { outline: none; }
.z-menu-cat__intro { color: var(--color-text-muted); margin-block-end: var(--space-4); }
.z-menu-cat__note { color: var(--color-text-muted); font-size: var(--step--1); margin-block: var(--space-4) 0; }
.z-menu-cat__links { display: flex; flex-wrap: wrap; gap: var(--space-6); margin-block: var(--space-4) 0; font-size: var(--step--1); }
.z-menu-cat__up { display: none; }
.z-dishes { list-style: none; margin: 0; padding: 0; }
.z-dish { display: grid; grid-template-columns: 1fr auto; column-gap: var(--space-6); row-gap: var(--space-1); padding-block: var(--space-menu-item); border-block-end: var(--border-hairline) solid var(--color-border-subtle); max-inline-size: none; scroll-margin-top: var(--space-6); }
.z-dish > p { margin: 0; max-inline-size: none; }
.z-dish__name { grid-column: 1; font-weight: var(--weight-bold); color: var(--color-text-strong); }
.z-dish__cut { font-weight: var(--weight-regular); color: var(--color-text-muted); }
.z-dish__price { grid-column: 2; grid-row: 1; text-align: end; font-weight: var(--weight-bold); color: var(--color-text-strong); font-variant-numeric: var(--numeric-prices); white-space: nowrap; }
.z-dish__desc { grid-column: 1 / -1; color: var(--color-text-muted); }
.z-dish__portion { grid-column: 1 / -1; color: var(--color-text); font-variant-numeric: var(--numeric-prices); }
.z-dish__portion--weight { font-weight: var(--weight-semibold); }
.z-dish__how { font-weight: var(--weight-regular); margin-inline-start: var(--space-2); }
.z-dish__meta { grid-column: 1 / -1; color: var(--color-text-muted); }
.z-diet { display: inline-block; margin-inline-start: var(--space-2); padding: 0 var(--space-2); border: var(--border-hairline) solid var(--color-border-strong); border-radius: var(--radius-xs); font-size: var(--step--1); font-weight: var(--weight-semibold); color: var(--color-text); letter-spacing: 0.02em; }
.z-dish__prep { white-space: nowrap; }
.z-menu .z-notice { margin-block: var(--space-6); }
.z-legend { columns: 2 16rem; column-gap: var(--space-8); list-style: none; padding: 0; margin: var(--space-4) 0; }
.z-legend li { break-inside: avoid; padding-block: var(--space-2); border-block-end: var(--border-hairline) solid var(--color-border-subtle); }
.z-legend__code { display: inline-block; min-inline-size: 2ch; font-weight: var(--weight-bold); color: var(--color-text-strong); font-variant-numeric: var(--numeric-prices); margin-inline-end: var(--space-2); }
.z-legend__diets { color: var(--color-text); }
@media (max-width: 1023px) {
  .z-menu__grid { grid-template-columns: 1fr; gap: var(--space-8); }
  .z-toc { position: static; max-block-size: none; overflow: visible; }
  .z-toc ul { columns: 2; column-gap: var(--space-4); border: 0; }
  .z-toc li { break-inside: avoid; }
  .z-toc a { padding-inline: 0; }
  .z-toc a[aria-current="true"] { box-shadow: none; }
  .z-toc__extra:first-of-type { margin: 0; border: 0; padding: 0; }
  .z-menu-cat__up { display: inline; }
}
@media (max-width: 479px) {
  .z-dish { grid-template-columns: 1fr; }
  .z-dish__price { grid-column: 1; grid-row: auto; text-align: end; }
}

/* ---------- Forms: P-B-34:V2 single column; date/time/party in one row on desktop ---------- */
.z-form-layout { display: grid; grid-template-columns: 5fr 7fr; gap: var(--space-12); align-items: start; }
.z-form-layout > * { margin: 0; }
@media (max-width: 1023px) { .z-form-layout { grid-template-columns: 1fr; gap: var(--space-8); } }
.z-form { max-inline-size: var(--container-form); background: var(--color-surface); border: var(--border-hairline) solid var(--color-border-subtle); border-radius: var(--radius-lg); padding: var(--space-8); scroll-margin-top: var(--space-6); }
.z-form__title { font-size: var(--step-2); margin-block-end: var(--space-2); }
.z-form__intro { color: var(--color-text); }
.z-form__row { display: grid; grid-template-columns: 1fr 1fr 0.8fr; grid-template-rows: repeat(5, auto); column-gap: var(--space-4); align-items: start; margin-block-end: var(--space-stack-field); }
.z-form__row > .z-field { grid-row: span 5; grid-template-rows: subgrid; row-gap: var(--space-stack-label); margin: 0; }
.z-form__row .z-field__hint { align-self: end; }
.z-form__row .z-field > label { grid-row: 1; } .z-form__row .z-field > .z-field__hint { grid-row: 2; } .z-form__row .z-field > .z-field__error { grid-row: 3; }
.z-form__row .z-field > input, .z-form__row .z-field > select { grid-row: 4; } .z-form__row .z-field > .z-field__live { grid-row: 5; }
.z-field { display: grid; gap: var(--space-stack-label); margin-block-end: var(--space-stack-field); }
.z-field > * { margin: 0; }
.z-field label, .z-field legend { font-weight: var(--weight-semibold); color: var(--color-text-strong); }
.z-req { color: var(--color-text-strong); }
.z-optional { font-weight: var(--weight-regular); color: var(--color-text-muted); }
.z-field__hint, .z-field__live { font-size: var(--step--1); color: var(--color-text-muted); }
.z-field__live:empty { visibility: hidden; }
.z-field input:not([type="checkbox"]), .z-field select, .z-field textarea {
  inline-size: 100%; min-block-size: var(--control-lg); padding: var(--space-2) var(--space-3);
  font: inherit; font-size: max(1rem, var(--step-0)); color: var(--color-text-strong);
  background: var(--color-background); border: var(--border-hairline) solid var(--color-border-strong); border-radius: var(--radius-sm);
}
.z-field textarea { min-block-size: 7rem; resize: vertical; }
.z-field input:focus-visible, .z-field select:focus-visible, .z-field textarea:focus-visible { border-color: var(--color-focus-ring); }
.z-field input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(0.9); }
.z-field [aria-invalid="true"] { border: var(--border-strong) solid var(--error) !important; }
.z-field__error { color: var(--error-text); font-weight: var(--weight-semibold); font-size: var(--step--1); display: flex; gap: var(--space-2); align-items: baseline; }
.z-field--check { grid-template-columns: auto 1fr; align-items: center; gap: var(--space-3); }
.z-field--check input { inline-size: 1.5rem; block-size: 1.5rem; accent-color: var(--color-primary); margin: 0; }
.z-form__notice:empty { display: none; }
.z-form__notice .z-notice { margin-block: 0 var(--space-stack-field); }
.z-error-summary { background: var(--error-bg); border: var(--border-strong) solid var(--error); border-radius: var(--radius-sm); padding: var(--space-4) var(--space-5); margin-block-end: var(--space-6); }
.z-error-summary__title { font-weight: var(--weight-bold); color: var(--error-text); margin-block-end: var(--space-2); }
.z-error-summary__title::before { content: "✕ "; }
.z-error-summary ul { margin: 0; padding-inline-start: var(--space-5); }
.z-error-summary a { color: var(--color-text-strong); }
.z-form__legal { font-size: var(--step--1); color: var(--color-text-muted); }
.z-form__submit { margin-block: var(--space-6) 0; }
.z-form__slow { font-size: var(--step--1); color: var(--color-text-muted); margin: var(--space-2) 0 0; }
.z-form__slow:empty { display: none; }
.z-hp { position: absolute; inset-inline-start: -10000px; inline-size: 1px; block-size: 1px; overflow: hidden; }
.z-success { background: var(--success-bg); border: var(--border-hairline) solid var(--success); border-inline-start: var(--border-accent) solid var(--success); border-radius: var(--radius-sm); padding: var(--space-5) var(--space-6); max-inline-size: 48rem; margin-block: var(--space-6); }
.z-success > :last-child { margin-block-end: 0; }
.z-success__title { font-weight: var(--weight-bold); color: var(--color-text-strong); }
.z-icon-ok { color: var(--success-text); }
@media (max-width: 719px) {
  .z-form { padding: var(--space-5); margin-inline: calc(var(--space-2) * -1); }
  .z-form__row { display: block; margin: 0; }
  .z-form__row > .z-field { margin-block-end: var(--space-stack-field); }
  .z-form__row .z-field__hint:empty { display: none; }
}

/* ---------- Footer: N-03 P-B-38:V2 doormat + mini contact ---------- */
.z-footer { margin-block-start: var(--space-section); background: var(--color-surface); border-block-start: var(--border-hairline) solid var(--color-border-subtle); font-size: var(--step--1); color: var(--color-text); }
.z-band + .z-footer-part .z-footer, .z-main:has(> .wp-block-post-content > .z-band:last-child) + .z-footer-part .z-footer { margin-block-start: 0; }
.z-footer__inner { padding: var(--space-16) max(var(--space-page-x), calc((100% - var(--container-default)) / 2)) var(--space-12); display: grid; grid-template-columns: 4fr 8fr; gap: var(--space-12); }
.z-footer__nav { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--space-8); }
.z-footer__name { font: 400 var(--step-1)/1.2 var(--font-heading); color: var(--color-text-strong); }
.z-footer__title { font: var(--weight-semibold) var(--step--1)/1.3 var(--font-body); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--color-text-muted); margin-block-end: var(--space-3); }
.z-footer ul { list-style: none; margin: 0; padding: 0; }
.z-footer li a { display: inline-flex; align-items: center; min-block-size: 2rem; color: var(--color-text); }
.z-footer .z-hours { margin-block: var(--space-4); }
.z-footer__bar { padding: var(--space-6) max(var(--space-page-x), calc((100% - var(--container-default)) / 2)); border-block-start: var(--border-hairline) solid var(--color-border-subtle); color: var(--color-text-muted); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-2) var(--space-8); }
.z-footer__bar p { margin: 0; max-inline-size: none; }
.z-footer__bar a { color: var(--color-text-muted); }
@media (max-width: 1023px) { .z-footer__inner { grid-template-columns: 1fr; } }
