/*
Theme Name: EZ-Ravintola Gold
Theme URI: https://ez-ravintola.fi
Author: EZ-Ravintola
Description: Commercial restaurant storefront with a guided installer for six bundled first-party EZ-Ravintola modules. No external WordPress plugin dependency.
Version: 14.0.0
Requires at least: 6.8
Requires PHP: 8.1
Text Domain: ez-ravintola
Domain Path: /languages
License: GPL-2.0-or-later
*/

@layer ezr-reset, ezr-tokens, ezr-base, ezr-layout, ezr-components, ezr-header, ezr-footer, ezr-responsive, ezr-utilities;

@layer ezr-reset {
  *, *::before, *::after { box-sizing: border-box; }
  html { min-width: 320px; scroll-behavior: smooth; scroll-padding-top: 7rem; }
  body { min-width: 320px; max-width: 100%; margin: 0; overflow-x: clip; }
  img, picture, video, canvas, svg, iframe { display: block; max-width: 100%; }
  img { height: auto; }
  button, input, select, textarea { font: inherit; }
  button { cursor: pointer; }
  a { color: inherit; }
  address { font-style: normal; }
  main, section, article, aside, header, footer, nav, form, fieldset,
  .wp-site-blocks, .wp-site-blocks > *, .wp-block-group, .wp-block-post-content { min-width: 0; }
  .wp-site-blocks { min-height: 100vh; padding: 0 !important; display: flex; flex-direction: column; }
  .wp-site-blocks > main { flex: 1 0 auto; }
  [hidden] { display: none !important; }
  .screen-reader-text {
    position: absolute !important; width: 1px !important; height: 1px !important;
    padding: 0 !important; margin: -1px !important; overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important;
  }
}

@layer ezr-tokens {
  :root {
    --ezr-primary: #a12f3e;
    --ezr-on-primary: #ffffff;
    --ezr-secondary: #245d51;
    --ezr-on-secondary: #ffffff;
    --ezr-accent: #d8ad55;
    --ezr-on-accent: #251d10;
    --ezr-background: #fbfaf7;
    --ezr-surface: #ffffff;
    --ezr-surface-alt: #f2efe8;
    --ezr-text: #1f2421;
    --ezr-muted: #626a65;
    --ezr-border: #ddd9d1;
    --ezr-success: #247553;
    --ezr-warning: #94620a;
    --ezr-danger: #ac3342;
    --ezr-header-bg: rgba(255,255,255,.96);
    --ezr-header-text: var(--ezr-text);
    --ezr-footer-bg: #f2efe8;
    --ezr-footer-text: var(--ezr-text);
    --ezr-focus: #126a58;

    --ezr-font-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --ezr-font-heading: "Iowan Old Style", Charter, Baskerville, Georgia, serif;
    --ezr-font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --ezr-base-size: 16px;
    --ezr-body-line-height: 1.62;
    --ezr-heading-weight: 650;
    --ezr-body-weight: 400;
    --ezr-heading-letter-spacing: -.032em;

    --ezr-text-xs: clamp(.76rem, .74rem + .08vw, .82rem);
    --ezr-text-sm: clamp(.88rem, .85rem + .12vw, .96rem);
    --ezr-text-md: clamp(1rem, .97rem + .14vw, 1.08rem);
    --ezr-text-lg: clamp(1.18rem, 1.08rem + .38vw, 1.42rem);
    --ezr-title-sm: clamp(1.75rem, 1.45rem + 1vw, 2.35rem);
    --ezr-title-md: clamp(2.2rem, 1.65rem + 2vw, 3.35rem);
    --ezr-title-lg: clamp(3rem, 2rem + 4vw, 5.8rem);

    --ezr-space-1: .4rem;
    --ezr-space-2: .7rem;
    --ezr-space-3: 1rem;
    --ezr-space-4: clamp(1.25rem, 1rem + .65vw, 1.8rem);
    --ezr-space-5: clamp(1.8rem, 1.25rem + 1.5vw, 2.75rem);
    --ezr-space-6: clamp(2.7rem, 1.8rem + 2.7vw, 4.4rem);
    --ezr-space-7: clamp(4rem, 2.6rem + 4.4vw, 7rem);

    --ezr-gutter: clamp(1rem, 3vw, 2.25rem);
    --ezr-content-width: 760px;
    --ezr-wide-width: 1240px;
    --ezr-shell-width: min(var(--ezr-wide-width), calc(100vw - (2 * var(--ezr-gutter))));
    --ezr-measure: 68ch;
    --ezr-section-space: 92px;
    --ezr-card-radius: 20px;
    --ezr-button-radius: 12px;
    --ezr-radius-sm: 12px;
    --ezr-radius-md: 18px;
    --ezr-radius-lg: 28px;
    --ezr-header-height: 72px;
    --ezr-shadow-sm: 0 1px 2px rgba(27,33,29,.04), 0 8px 24px rgba(27,33,29,.05);
    --ezr-shadow-md: 0 18px 50px rgba(27,33,29,.10);
    --ezr-shadow-lg: 0 30px 90px rgba(27,33,29,.14);
    --ezr-ease: cubic-bezier(.2,.75,.25,1);
  }
}

@layer ezr-base {
  body {
    background: var(--ezr-background);
    color: var(--ezr-text);
    font-family: var(--ezr-font-body);
    font-size: var(--ezr-base-size);
    font-weight: var(--ezr-body-weight);
    line-height: var(--ezr-body-line-height);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }
  body, button, input, select, textarea { font-family: var(--ezr-font-body); }
  h1, h2, h3, h4, h5, h6 {
    margin: 0;
    color: inherit;
    font-family: var(--ezr-font-heading);
    font-weight: var(--ezr-heading-weight);
    letter-spacing: var(--ezr-heading-letter-spacing);
    line-height: 1.04;
    overflow-wrap: normal;
    word-break: normal;
    text-wrap: balance;
  }
  p { max-width: var(--ezr-measure); }
  p, li, address { text-wrap: pretty; }
  a { text-underline-offset: .2em; }
  :focus-visible { outline: 3px solid var(--ezr-focus); outline-offset: 3px; }
  ::selection { background: var(--ezr-accent); color: var(--ezr-on-accent); }
}

@layer ezr-layout {
  .ezr-site-main { width: 100%; }
  .ezr-page-frame { width: var(--ezr-shell-width); margin-inline: auto; padding-block: var(--ezr-space-7); }
  .ezr-page-title { max-width: 18ch; margin: 0 0 var(--ezr-space-4); font-size: var(--ezr-title-lg); }
  .ezr-app-template .ezr-site-header,
  .ezr-app-template .ezr-site-footer { display: none; }
  .ezr-app-template main { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
}

@layer ezr-components {
  .ezr-eyebrow {
    margin: 0 0 .75rem;
    color: var(--ezr-primary);
    font: 800 var(--ezr-text-xs)/1.25 var(--ezr-font-ui);
    letter-spacing: .095em;
    text-transform: uppercase;
  }
  .ezr-button,
  .ezr-header-order-link,
  .ezr-primary-action,
  .ezr-public-form button[type="submit"] {
    min-height: 46px;
    padding: .78rem 1.1rem;
    border: 1px solid transparent;
    border-radius: var(--ezr-button-radius);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    font: 760 .9rem/1.2 var(--ezr-font-ui);
    text-align: center;
    text-decoration: none;
    transition: transform .18s var(--ezr-ease), background .18s var(--ezr-ease), border-color .18s var(--ezr-ease), color .18s var(--ezr-ease), box-shadow .18s var(--ezr-ease);
  }
  .ezr-button:hover,
  .ezr-header-order-link:hover,
  .ezr-primary-action:hover,
  .ezr-public-form button[type="submit"]:hover { transform: translateY(-1px); }
  .ezr-button--primary,
  .ezr-header-order-link,
  .ezr-public-form button[type="submit"] { background: var(--ezr-primary); color: var(--ezr-on-primary); box-shadow: 0 7px 18px color-mix(in srgb, var(--ezr-primary) 20%, transparent); }
  .ezr-button--primary:hover,
  .ezr-header-order-link:hover,
  .ezr-public-form button[type="submit"]:hover { background: color-mix(in srgb, var(--ezr-primary) 88%, #000); }
  .ezr-button--secondary { background: var(--ezr-secondary); color: var(--ezr-on-secondary); }
  .ezr-button--ghost { border-color: var(--ezr-border); background: var(--ezr-surface); color: var(--ezr-text); }
  .ezr-button--ghost:hover { border-color: color-mix(in srgb, var(--ezr-primary) 45%, var(--ezr-border)); background: color-mix(in srgb, var(--ezr-primary) 4%, var(--ezr-surface)); }
  .ezr-button--dark { background: var(--ezr-text); color: var(--ezr-surface); }
  .ezr-text-link { display: inline-flex; align-items: center; gap: .45rem; color: var(--ezr-primary); font-weight: 760; text-decoration-thickness: 1px; }
  .ezr-open-status {
    width: fit-content; max-width: 100%; min-height: 34px; padding: .42rem .65rem;
    border: 1px solid var(--ezr-border); border-radius: 999px; background: var(--ezr-surface);
    display: inline-flex; align-items: center; gap: .45rem;
    color: var(--ezr-muted); font: 720 var(--ezr-text-xs)/1.2 var(--ezr-font-ui);
  }
  .ezr-open-status__dot { width: 8px; height: 8px; flex: 0 0 auto; border-radius: 50%; background: var(--ezr-success); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ezr-success) 12%, transparent); }
  .ezr-open-status.is-closed .ezr-open-status__dot { background: var(--ezr-danger); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ezr-danger) 12%, transparent); }
}

@layer ezr-header {
  .ezr-site-header { position: relative; z-index: 1000; width: 100%; color: var(--ezr-header-text); }
  .ezr-header-sticky .ezr-site-header { position: sticky; top: 0; }
  .admin-bar.ezr-header-sticky .ezr-site-header { top: 32px; }
  .ezr-announcement { width: 100%; background: var(--ezr-secondary); color: var(--ezr-on-secondary); }
  .ezr-announcement__inner {
    width: var(--ezr-shell-width); min-height: 38px; margin-inline: auto; padding-block: .48rem;
    display: flex; align-items: center; justify-content: center; gap: 1rem;
    font: 700 var(--ezr-text-xs)/1.3 var(--ezr-font-ui);
  }
  .ezr-announcement p { max-width: none; margin: 0; text-align: center; }
  .ezr-announcement .ezr-open-status { flex: 0 0 auto; border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.1); color: inherit; }
  .ezr-header-main { border-bottom: 1px solid color-mix(in srgb, var(--ezr-border) 78%, transparent); background: var(--ezr-header-bg); backdrop-filter: blur(16px); }
  .ezr-header-inner {
    width: var(--ezr-shell-width); min-height: var(--ezr-header-height); margin-inline: auto; padding: 0 !important;
    display: grid; grid-template-columns: minmax(150px, 230px) minmax(0,1fr); align-items: center; gap: clamp(1rem,2vw,2rem);
  }
  .ezr-site-brand { min-width: 0; display: inline-flex; align-items: center; gap: .7rem; color: inherit; text-decoration: none; }
  .ezr-site-brand__logo { width: auto; max-width: 190px; max-height: 44px; object-fit: contain; }
  .ezr-site-brand__name { min-width: 0; overflow: hidden; font: var(--ezr-heading-weight) clamp(1.2rem,1.05rem + .5vw,1.65rem)/1 var(--ezr-font-heading); text-overflow: ellipsis; white-space: nowrap; }
  .ezr-dynamic-navigation { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 1rem; }
  .ezr-dynamic-navigation nav { min-width: 0; }
  .ezr-dynamic-navigation nav ul { margin: 0; padding: 0; display: flex; align-items: center; justify-content: flex-end; gap: clamp(.55rem,1.1vw,1rem); list-style: none; }
  .ezr-dynamic-navigation nav a { min-height: 44px; padding: .7rem .12rem; display: inline-flex; align-items: center; color: inherit; font: 720 clamp(.78rem,.72rem + .15vw,.88rem)/1.2 var(--ezr-font-ui); text-decoration: none; white-space: nowrap; }
  .ezr-dynamic-navigation nav a:hover { color: var(--ezr-primary); }
  .ezr-nav-actions { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; }
  .ezr-language-switcher { padding: .2rem; border: 1px solid var(--ezr-border); border-radius: 999px; background: var(--ezr-surface); display: flex; align-items: center; }
  .ezr-language-switcher a,
  .ezr-mobile-languages a { min-width: 34px; min-height: 34px; border-radius: 50%; display: grid; place-items: center; font: 760 .68rem/1 var(--ezr-font-ui); text-decoration: none; }
  .ezr-language-switcher a[aria-current="true"],
  .ezr-mobile-languages a[aria-current="true"] { background: var(--ezr-text); color: var(--ezr-surface); }
  .ezr-header-order-link { min-height: 42px; padding-inline: .9rem; white-space: nowrap; }
  .ezr-header-order-link i { font-style: normal; }
  .ezr-nav-toggle { width: 46px; height: 46px; padding: 0; border: 1px solid var(--ezr-border); border-radius: 12px; background: var(--ezr-surface); display: none; place-content: center; gap: 5px; }
  .ezr-nav-toggle > span:not(.screen-reader-text) { width: 19px; height: 2px; border-radius: 2px; background: currentColor; transition: transform .2s var(--ezr-ease), opacity .2s var(--ezr-ease); }
  .ezr-mobile-languages { display: none; }
}

@layer ezr-footer {
  .ezr-site-footer { margin-top: var(--ezr-space-7); border-top: 1px solid var(--ezr-border); background: var(--ezr-footer-bg); color: var(--ezr-footer-text); }
  .ezr-footer-cta { width: var(--ezr-shell-width); margin-inline: auto; padding-block: clamp(2.5rem,5vw,4.5rem); border-bottom: 1px solid color-mix(in srgb, var(--ezr-border) 85%, transparent); display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 2rem; }
  .ezr-footer-cta h2 { max-width: 18ch; font-size: var(--ezr-title-sm); }
  .ezr-footer-cta p { margin: .75rem 0 0; color: var(--ezr-muted); }
  .ezr-footer-grid { width: var(--ezr-shell-width); margin-inline: auto; padding-block: var(--ezr-space-6); display: grid; grid-template-columns: minmax(220px,1.4fr) repeat(3,minmax(150px,1fr)); gap: clamp(1.5rem,4vw,4rem); }
  .ezr-footer-brand h3 { font-size: clamp(1.5rem,1.25rem + .7vw,2rem); }
  .ezr-footer-brand p { color: var(--ezr-muted); }
  .ezr-footer-grid h4 { margin-bottom: .8rem; font-family: var(--ezr-font-ui); font-size: var(--ezr-text-xs); letter-spacing: .08em; text-transform: uppercase; }
  .ezr-footer-links { margin: 0; padding: 0; display: grid; gap: .5rem; list-style: none; }
  .ezr-footer-links a,
  .ezr-footer-links button { min-height: 32px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; text-decoration: underline; text-decoration-color: transparent; }
  .ezr-footer-links a:hover,
  .ezr-footer-links button:hover { text-decoration-color: currentColor; }
  .ezr-footer-social { display: flex; flex-wrap: wrap; gap: .5rem .9rem; }
  .ezr-footer-social a { font-weight: 700; }
  .ezr-contact-card { min-width: 0; padding: var(--ezr-space-4); border: 1px solid var(--ezr-border); border-radius: var(--ezr-card-radius); background: var(--ezr-surface); box-shadow: var(--ezr-shadow-sm); }
  .ezr-contact-card h3 { margin-bottom: .55rem; font-size: var(--ezr-text-lg); }
  .ezr-contact-card p { margin: .25rem 0; overflow-wrap: anywhere; }
  .ezr-footer-bottom { width: var(--ezr-shell-width); margin-inline: auto; padding-block: 1.1rem; border-top: 1px solid var(--ezr-border); display: flex; justify-content: space-between; gap: 1rem; color: var(--ezr-muted); font-size: var(--ezr-text-xs); }
}

@layer ezr-responsive {
  @media (max-width: 1080px) {
    .ezr-header-inner { grid-template-columns: minmax(140px,190px) minmax(0,1fr); }
    .ezr-language-switcher { display: none; }
    .ezr-dynamic-navigation nav ul { gap: .55rem; }
    .ezr-dynamic-navigation nav a { font-size: .78rem; }
    .ezr-footer-grid { grid-template-columns: 1.2fr 1fr 1fr; }
    .ezr-footer-grid > :last-child { grid-column: 2 / -1; }
  }

  @media (max-width: 860px) {
    html { scroll-padding-top: 5.5rem; }
    .ezr-header-inner { min-height: 64px; grid-template-columns: minmax(0,1fr) auto; }
    .ezr-dynamic-navigation { display: grid; grid-template-columns: auto; justify-items: end; }
    .ezr-dynamic-navigation nav {
      position: fixed; inset: auto var(--ezr-gutter) auto var(--ezr-gutter); top: calc(var(--ezr-header-height) + 8px);
      max-height: calc(100dvh - var(--ezr-header-height) - 24px); padding: 1rem; overflow: auto;
      border: 1px solid var(--ezr-border); border-radius: 18px; background: var(--ezr-surface); box-shadow: var(--ezr-shadow-lg);
      opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .18s ease, transform .18s ease, visibility .18s;
    }
    .admin-bar .ezr-dynamic-navigation nav { top: calc(var(--ezr-header-height) + 40px); }
    .ezr-dynamic-navigation nav.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
    .ezr-dynamic-navigation nav ul { display: grid; justify-content: stretch; gap: .25rem; }
    .ezr-dynamic-navigation nav a { width: 100%; min-height: 48px; padding: .7rem .8rem; border-radius: 10px; font-size: 1rem; }
    .ezr-dynamic-navigation nav a:hover { background: var(--ezr-surface-alt); }
    .ezr-mobile-languages { margin-top: .75rem; padding-top: .75rem; border-top: 1px solid var(--ezr-border); display: flex; gap: .35rem; }
    .ezr-nav-actions { position: static; transform: none; }
    .ezr-header-order-link { display: none; }
    .ezr-nav-toggle { display: grid; }
    .ezr-nav-toggle[aria-expanded="true"] > span:nth-of-type(2) { transform: translateY(7px) rotate(45deg); }
    .ezr-nav-toggle[aria-expanded="true"] > span:nth-of-type(3) { opacity: 0; }
    .ezr-nav-toggle[aria-expanded="true"] > span:nth-of-type(4) { transform: translateY(-7px) rotate(-45deg); }
    .ezr-footer-cta { grid-template-columns: 1fr; align-items: start; }
    .ezr-footer-grid { grid-template-columns: 1fr 1fr; }
    .ezr-footer-grid > :last-child { grid-column: auto; }
  }

  @media (max-width: 782px) {
    .admin-bar.ezr-header-sticky .ezr-site-header { top: 46px; }
  }

  @media (max-width: 620px) {
    :root { --ezr-gutter: 1rem; --ezr-card-radius: 16px; --ezr-button-radius: 11px; --ezr-header-height: 64px; }
    .ezr-announcement__inner { justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
    .ezr-announcement__inner::-webkit-scrollbar { display: none; }
    .ezr-announcement p { min-width: max-content; text-align: left; }
    .ezr-site-brand__name { font-size: 1.25rem; }
    .ezr-footer-grid { grid-template-columns: 1fr; }
    .ezr-footer-bottom { align-items: flex-start; flex-direction: column; }
  }

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

@layer ezr-utilities {
  .ezr-platform-required { width: min(760px, calc(100% - 2rem)); margin: 8vh auto; padding: 2rem; border: 1px solid var(--ezr-border); border-radius: var(--ezr-card-radius); background: var(--ezr-surface); box-shadow: var(--ezr-shadow-md); }
  .ezr-platform-required h1 { font-size: var(--ezr-title-sm); }
  .ezr-platform-required a { display: inline-flex; margin-top: 1rem; font-weight: 750; color: var(--ezr-primary); }
  .ezr-rtl { direction: rtl; }
}

/* Mobile quick actions are hidden on larger screens and become a usable
 * safe-area-aware action bar on phones. */
.ezr-mobile-actions { display: none; }
@media (max-width: 860px) {
  .ezr-site-footer { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
  .ezr-mobile-actions {
    position: fixed; left: max(.75rem, env(safe-area-inset-left));
    right: max(.75rem, env(safe-area-inset-right));
    bottom: max(.75rem, env(safe-area-inset-bottom)); z-index: 1200;
    min-width: 0; padding: .45rem; border: 1px solid var(--ezr-border);
    border-radius: 18px; background: color-mix(in srgb, var(--ezr-surface) 96%, transparent);
    box-shadow: var(--ezr-shadow-lg); backdrop-filter: blur(16px);
    display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: .4rem;
  }
  .ezr-mobile-actions a {
    min-width: 0; min-height: 46px; padding: .65rem .7rem; border-radius: 13px;
    display: inline-flex; align-items: center; justify-content: center;
    font: 760 .78rem/1.15 var(--ezr-font-ui); text-align: center; text-decoration: none;
    background: var(--ezr-secondary);
  }
  .ezr-mobile-actions a.is-primary { background: var(--ezr-primary); }
}

/*
 * WordPress Global Styles compatibility bridge.
 * Core emits link styles outside cascade layers. Unlayered declarations outrank
 * normal declarations inside @layer regardless of selector specificity, which
 * could recolour primary-button labels with the primary background colour and
 * make them disappear. Keep these semantic foregrounds outside every layer.
 */
a.ezr-button.ezr-button--primary,
a.ezr-header-order-link,
.ezr-dish-card__footer > a,
.ezr-card-action,
.ezr-floating-cart,
.ezr-mobile-actions a.is-primary,
.ezr-public-form button[type="submit"],
button.ezr-primary-action {
  color: var(--ezr-on-primary) !important;
}
a.ezr-button.ezr-button--secondary,
.ezr-mobile-actions a:not(.is-primary) {
  color: var(--ezr-on-secondary) !important;
}
a.ezr-button.ezr-button--ghost {
  color: var(--ezr-text) !important;
}
.ezr-language-switcher a[aria-current="true"],
.ezr-mobile-languages a[aria-current="true"] {
  color: var(--ezr-surface) !important;
}
.ezr-hero-facts a,
.ezr-announcement a {
  color: inherit !important;
}
.ezr-dynamic-navigation nav a {
  color: var(--ezr-header-text) !important;
}
.ezr-footer-links a,
.ezr-footer-social a,
.ezr-footer-brand {
  color: inherit !important;
}
.ezr-announcement {
  color: var(--ezr-on-secondary);
}

/* Hero facts are editorial page content, not a secondary-colour card. */
.ezr-hero-facts {
  color: var(--ezr-text);
}


/* 9.0.6: the logo and restaurant name are two independent brand assets.
   Never truncate the legal/public restaurant name merely because a logo exists. */
@layer ezr-header {
  .ezr-header-inner { grid-template-columns: auto minmax(0,1fr); }
  .ezr-site-brand { max-width: min(360px,42vw); flex: 0 1 auto; }
  .ezr-site-brand__logo { flex: 0 0 auto; width: auto; max-width: 88px; max-height: 46px; }
  .ezr-site-brand__name {
    min-width: 0;
    max-width: 18ch;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
    line-height: 1.02;
    text-wrap: balance;
  }
}

@layer ezr-responsive {
  @media (max-width: 1120px) {
    .ezr-header-inner { grid-template-columns: minmax(0,1fr) auto; }
    .ezr-dynamic-navigation nav {
      position: fixed; inset: auto var(--ezr-gutter) auto var(--ezr-gutter); top: calc(var(--ezr-header-height) + 8px);
      max-height: calc(100dvh - var(--ezr-header-height) - 24px); padding: 1rem; overflow: auto;
      border: 1px solid var(--ezr-border); border-radius: 16px; background: var(--ezr-surface); box-shadow: var(--ezr-shadow-md);
      opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .2s var(--ezr-ease), transform .2s var(--ezr-ease), visibility .2s;
    }
    .ezr-dynamic-navigation nav.is-open { opacity: 1; visibility: visible; transform: none; }
    .ezr-dynamic-navigation nav ul { display: grid; justify-items: stretch; }
    .ezr-dynamic-navigation nav a { width: 100%; justify-content: flex-start; padding: .75rem; }
    .ezr-nav-toggle { display: grid; }
    .ezr-language-switcher { display: none; }
    .ezr-mobile-languages { margin-top: .7rem; padding-top: .7rem; border-top: 1px solid var(--ezr-border); display: flex; }
  }
  @media (max-width: 520px) {
    .ezr-site-brand { max-width: calc(100vw - 140px); }
    .ezr-site-brand__logo { max-width: 58px; max-height: 38px; }
    .ezr-site-brand__name { max-width: 15ch; font-size: 1.05rem; }
  }
}


/* 9.0.6: do not place a contact card inside the footer surface. */
@layer ezr-footer {
  .ezr-site-footer .ezr-contact-card {
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }
}

/* 10.1.0 consolidated public navigation and device hardening. */
html.ezr-menu-open,
html.ezr-menu-open body { overflow: hidden; }

@media (max-width: 1120px) {
  .ezr-dynamic-navigation nav[aria-hidden="true"] { pointer-events: none; }
  .ezr-dynamic-navigation nav[aria-hidden="false"] { pointer-events: auto; }
  .ezr-dynamic-navigation nav a,
  .ezr-mobile-languages a,
  .ezr-nav-toggle { min-width: 44px; min-height: 44px; }
}

@media (max-width: 620px) {
  .ezr-dynamic-navigation nav {
    left: max(.75rem, env(safe-area-inset-left));
    right: max(.75rem, env(safe-area-inset-right));
    max-height: calc(100dvh - var(--ezr-header-height) - env(safe-area-inset-bottom) - 1.5rem);
    overscroll-behavior: contain;
  }
}

@media (forced-colors: active) {
  .ezr-nav-toggle,
  .ezr-mobile-actions,
  .ezr-dynamic-navigation nav { border: 1px solid ButtonText; }
  .ezr-nav-toggle > span:not(.screen-reader-text) { background: ButtonText; }
}

/* 10.2.1: generated restaurant pages must never inherit the narrow default
 * WordPress page column. The installer also repairs the assigned template, but
 * these guards keep old/stale template metadata from shifting full-width pages
 * to the right or exposing a duplicate core page title. */
@layer ezr-layout {
  body.ezr-generated-page .wp-site-blocks,
  body.ezr-generated-page .wp-site-blocks > main,
  body.ezr-generated-page main.ezr-page-frame,
  body.ezr-generated-page .wp-block-post-content {
    width: 100% !important;
    max-width: none !important;
    margin-inline: 0 !important;
    padding-inline: 0 !important;
  }
  body.ezr-generated-page { overflow-x: hidden; }
  body.ezr-generated-page .ezr-page-title { display: none !important; }
  body.ezr-generated-page .wp-block-post-content-is-layout-flow > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
  body.ezr-generated-page .wp-block-post-content > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
    max-width: none !important;
  }
  body.ezr-generated-page .wp-block-post-content > :first-child { margin-block-start: 0; }
  body.ezr-generated-page .ezr-page-hero,
  body.ezr-generated-page .ezr-menu-app,
  body.ezr-generated-page .ezr-order-page,
  body.ezr-generated-page .ezr-form-page,
  body.ezr-generated-page .ezr-lunch-page,
  body.ezr-generated-page .ezr-contact-layout,
  body.ezr-generated-page .ezr-public-gallery,
  body.ezr-generated-page .ezr-legal-copy {
    max-width: calc(100% - (2 * var(--ezr-gutter)));
  }
}


/* 10.2.1 final full-width system-page guard.
 * This block is deliberately unlayered and last: WordPress global styles can
 * be unlayered, so a layered override alone is not reliable. */
html { max-width: 100%; overflow-x: clip; }
body.ezr-generated-page { width: 100%; max-width: 100%; overflow-x: clip; }
body.ezr-generated-page .wp-site-blocks,
body.ezr-generated-page .wp-site-blocks > main,
body.ezr-generated-page main.ezr-page-frame,
body.ezr-generated-page main.ezr-wide-page,
body.ezr-generated-page .wp-block-post-content,
body.ezr-generated-page .wp-block-post-content-is-layout-constrained {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
body.ezr-generated-page .wp-block-post-content-is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
body.ezr-generated-page .wp-block-post-content-is-layout-flow > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
body.ezr-generated-page .wp-block-post-content > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  max-width: none !important;
}
body.ezr-generated-page .wp-block-post-title,
body.ezr-generated-page .ezr-page-title { display: none !important; }
body.ezr-generated-page .wp-block-post-content > .ezr-page-hero,
body.ezr-generated-page .wp-block-post-content > .ezr-menu-app,
body.ezr-generated-page .wp-block-post-content > .ezr-order-page,
body.ezr-generated-page .wp-block-post-content > .ezr-form-page,
body.ezr-generated-page .wp-block-post-content > .ezr-lunch-page,
body.ezr-generated-page .wp-block-post-content > .ezr-contact-layout,
body.ezr-generated-page .wp-block-post-content > .ezr-public-gallery,
body.ezr-generated-page .wp-block-post-content > .ezr-legal-copy,
body.ezr-generated-page .ezr-page-hero,
body.ezr-generated-page .ezr-menu-app,
body.ezr-generated-page .ezr-order-page,
body.ezr-generated-page .ezr-form-page,
body.ezr-generated-page .ezr-lunch-page,
body.ezr-generated-page .ezr-contact-layout,
body.ezr-generated-page .ezr-public-gallery,
body.ezr-generated-page .ezr-legal-copy {
  width: min(var(--ezr-wide-width), calc(100% - (2 * var(--ezr-gutter)))) !important;
  max-width: calc(100% - (2 * var(--ezr-gutter))) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}
body.ezr-generated-page .ezr-menu-grid,
body.ezr-generated-page .ezr-menu-products { min-width: 0; }
body.ezr-generated-page .ezr-product-card,
body.ezr-generated-page .ezr-product-card__body,
body.ezr-generated-page .ezr-product-card__top { min-width: 0; }
body.ezr-generated-page .ezr-product-card h3,
body.ezr-generated-page .ezr-product-card p { overflow-wrap: anywhere; }
@media (max-width: 720px) {
  body.ezr-generated-page .ezr-menu-grid,
  body.ezr-generated-page .ezr-menu-products { grid-template-columns: minmax(0, 1fr) !important; }
  body.ezr-generated-page .ezr-product-card { grid-template-columns: 82px minmax(0, 1fr); gap: .85rem; }
  body.ezr-generated-page .ezr-product-card > img,
  body.ezr-generated-page .ezr-product-card__placeholder { width: 82px; min-width: 82px; }
}
@media (max-width: 380px) {
  body.ezr-generated-page .ezr-product-card { grid-template-columns: 68px minmax(0, 1fr); }
  body.ezr-generated-page .ezr-product-card > img,
  body.ezr-generated-page .ezr-product-card__placeholder { width: 68px; min-width: 68px; }
}


/* 10.3.0 definitive viewport and generated-page layout contract. */
html,
body,
.wp-site-blocks {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}
body.ezr-generated-page,
body.ezr-generated-page .wp-site-blocks,
body.ezr-generated-page .wp-site-blocks > main,
body.ezr-generated-page main,
body.ezr-generated-page .wp-block-post-content,
body.ezr-generated-page .wp-block-post-content-is-layout-constrained,
body.ezr-generated-page .wp-block-post-content-is-layout-flow {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}
body.ezr-generated-page .wp-block-post-content > *,
body.ezr-generated-page .wp-block-post-content-is-layout-constrained > *,
body.ezr-generated-page .wp-block-post-content-is-layout-flow > * {
  min-width: 0 !important;
}
body.ezr-generated-page .wp-block-post-title,
body.ezr-generated-page .ezr-page-title { display: none !important; }
body.ezr-generated-page :is(.ezr-page-hero,.ezr-menu-app,.ezr-order-page,.ezr-form-page,.ezr-lunch-page,.ezr-contact-layout,.ezr-public-gallery,.ezr-legal-copy) {
  width: min(1240px, calc(100vw - (2 * clamp(16px, 4vw, 48px)))) !important;
  max-width: min(1240px, calc(100vw - (2 * clamp(16px, 4vw, 48px)))) !important;
  min-width: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}
body.ezr-generated-page :is(.ezr-menu-grid,.ezr-menu-products,.ezr-product-card,.ezr-product-card__body,.ezr-product-card__top) {
  min-width: 0 !important;
  max-width: 100% !important;
}
body.ezr-generated-page .ezr-product-card :is(h2,h3,p,strong,span) {
  overflow-wrap: anywhere;
  word-break: normal;
}
@media (max-width: 720px) {
  body.ezr-generated-page :is(.ezr-menu-grid,.ezr-menu-products) {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    width: 100% !important;
  }
  body.ezr-generated-page .ezr-product-card {
    width: 100% !important;
    grid-template-columns: 82px minmax(0, 1fr) !important;
    gap: .8rem !important;
  }
  body.ezr-generated-page .ezr-product-card > img,
  body.ezr-generated-page .ezr-product-card__placeholder {
    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;
  }
}
@media (max-width: 380px) {
  body.ezr-generated-page :is(.ezr-page-hero,.ezr-menu-app,.ezr-order-page,.ezr-form-page,.ezr-lunch-page,.ezr-contact-layout,.ezr-public-gallery,.ezr-legal-copy) {
    width: calc(100vw - 24px) !important;
    max-width: calc(100vw - 24px) !important;
  }
  body.ezr-generated-page .ezr-product-card {
    grid-template-columns: 68px minmax(0, 1fr) !important;
  }
  body.ezr-generated-page .ezr-product-card > img,
  body.ezr-generated-page .ezr-product-card__placeholder {
    width: 68px !important;
    min-width: 68px !important;
    max-width: 68px !important;
  }
}
