/* ============================================================
   CUSTOM — Per-store overrides for Template TF
   Add store-specific tweaks here. Loaded last so it wins
   over theme.css and style.css.
   ============================================================ */

/* Rakesh 2026-10-29: overflow:hidden makes min-height 0, so 26 categories shrank instead of scrolling - keep full height, sidebar scrolls */
.menu-buttons .menu-button { flex-shrink: 0; }
/* ---------- Maps (squad map pattern, 2026-11-05) ----------
   No overflow at 360-414 (grid children may shrink, fixed mobile height instead of a ratio);
   no scroll trap: a transparent .map-shield covers the iframe on touch screens until the first tap
   (components.js), and returns once the map scrolls out of view. .map-block = map + Get directions. */
.contact-sec .wrap > *, .map-block { min-width: 0; }
.map-block { display: flex; flex-direction: column; gap: .75rem; }
.map-block .map-directions { align-self: flex-start; }
.map-frame { position: relative; width: 100%; max-width: 100%; overflow: hidden; }
.map-shield { position: absolute; inset: 0; z-index: 2; display: flex; align-items: flex-end; justify-content: center; padding: 0; border: 0; background: transparent; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.map-shield span { margin-bottom: .75rem; padding: .45rem .9rem; border-radius: 999px; background: rgba(0,0,0,.78); color: #fff; font-size: .875rem; font-weight: 600; font-family: var(--font-display); line-height: 1.2; }
.map-shield:focus-visible { outline: 3px solid currentColor; outline-offset: -3px; }
.map-frame.is-live .map-shield { display: none; }
@media (hover: hover) and (pointer: fine) { .map-shield { display: none; } }

/* ---------- Logo (Brandy pack v1: official round badge, 1:1, red field works on the light header) ---------- */
.brand img { width: 72px; height: 72px; padding: 0; background: transparent; border-radius: 50%; box-shadow: none; object-fit: contain; }
.foot-brand img { width: 120px; height: 120px; padding: 0; background: transparent; border-radius: 50%; object-fit: contain; }
@media (max-width: 600px) { .brand img { width: 60px; height: 60px; } }

/* CLS (Mr. Schnapp's/Ruth lesson): until components.js injects the header, the breadcrumb fallback
   holds the header's measured height (85px <=900px, 135px >=901px incl. the top line). */
body:not(.header-loaded) .breadcrumb-container { min-height: 85px; box-sizing: border-box; }
@media (min-width: 901px) { body:not(.header-loaded) .breadcrumb-container { min-height: 135px; } }

/* Menu page TBT (Halal Oven lesson): 76 live dishes render off-screen lazily. */
.menu-items .menu-item, #menu-items .menu-item { content-visibility: auto; contain-intrinsic-size: auto 120px; }

/* PT TWO-WEIGHT LOCK (18.9, Dennis F1): only Schibsted Grotesk 600 + system 400 render. */
html { font-synthesis: none; }
h1, h2, h3, h4, h5, h6, strong, b, th, summary { font-family: var(--font-display); font-weight: 600; }

/* PT banned patterns (18.5, Dennis F2/F3): no sequence numbers, no watermark word. */
.cat-tile::before, .qa summary::before, .menu-band::after { content: none; }
.chapter { grid-template-columns: 1fr; }
.values-copy { max-width: 60ch; margin: 0; font-size: 1.0625rem; line-height: 1.55; color: var(--ink, #1f1f1f); }

/* PT line length (Dennis F6): reading text stays under 75 characters per line at every width. */
p, li, dd, blockquote, figcaption { max-width: min(55ch, 100%) !important; }
.privacy-desc { max-width: min(48ch, 100%) !important; }
.cs-content > .cs-text, .cta-content > p, .cta-phone { margin-left: auto; margin-right: auto; }
