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

/* ============================================================
   PT-BASELINE 2026-10-24 (ported from Oriental Bowl, generic; standing decision 18.8)
   Clean, bright, minimal, photo-led. White base, light-grey panels.
   ONE accent (--brand, from the logo) on buttons + at most 2 full-colour bands
   (.menu-band + .cta-band). Top bar, kickers, heading <em>, nav active = ink.
   16px image corners (logo + hero excluded). No shadows, no gradients, no glass.
   Two type styles only (600 headings/labels, 400 body) - see PT-DESIGN-RULES rule 5.
   ============================================================ */
:root {
  --pt-r-img: 16px;
  --shadow-sm: none; --shadow-md: none; --shadow-lg: none; --pt-shadow: none;
}
html, body { background: #ffffff; }
b, strong, th, dt { font-weight: 600; }
*, *::before, *::after { box-shadow: none !important; text-shadow: none !important; }

/* photos: 16px corners (logos + hero slides excluded) */
main img, .plate img, .gallery img, figure img, .ph-img img, .dish-hero img, .about-img img,
.story img, .split img, .media img, .contact-sec iframe, main iframe {
  border-radius: var(--pt-r-img);
}
.brand img, .foot-brand img, .hero-slide img, .hero-full img, .hero-slides img, [class*="hero-slide"] img { border-radius: 0; }

/* no glass */
*, *::before, *::after { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }

/* accent budget: accent only on buttons + .menu-band + .cta-band */
.site-topline { background: var(--canvas); color: var(--ink); }
.site-topline a, .site-topline a:hover { color: var(--ink); }
.kicker, .kicker--light, .menu-band .kicker { color: var(--pt-ink-2); }
h1 em, h2 em, h3 em, .sec-head em, .faq-intro em, .story-copy em { color: inherit; font-style: normal; background: none; }
.menu-band h2 em, .cta-band h2 em { color: #fff; }
.plate-foot, .plate-no { color: var(--pt-ink-2); }
.site-nav a.active, .site-nav a:hover { background: var(--canvas); color: var(--ink); }
main a:not(.btn):not(.btn-line):not(.btn-ghost):not(.cat-tile):not(.arrow-btn) { color: var(--ink); text-decoration-color: var(--pt-line); }
i[class^="ri-"] { color: var(--ink); }
.delivery-area-card h3, .package-card h3 { color: var(--ink); }

/* no icon rows: store bar + info cards are text only (markup removed; this hides leftovers) */
.store-bar .sb-ico, .info-card .ic, .chip .ico, .chip-row .ico { display: none !important; }

/* ---- Dennis QA fixes from Oriental Bowl that apply to every PT site ---- */
/* white text/link on the accent CTA band (>= 4.5:1), beating the ink link rule above */
.cta-band a:not(.btn), .cta-band .cta-phone a, .cta-band .cta-phone a:hover { color: #fff !important; text-decoration-color: rgba(255, 255, 255, 0.6); }
/* opened mobile nav: the order button stays white on accent (hover included) */
.site-nav .nav-extra .btn, .site-nav .nav-extra .btn:hover, .site-nav .nav-extra .btn:focus-visible { color: #fff; }
/* mobile CLS: #header-container holds the top line + header height while components.js loads it
   (34.375 + 81 px on the PT header; re-measure only if a store changes the header). */
#header-container:empty { display: block; min-height: 115.375px; }
body:not(.header-loaded) .breadcrumb-container { position: absolute; top: 0; left: 0; right: 0; z-index: 5; }
/* store bar (Dennis PT QA F1): works with 4 cells (template default) and 3 cells (rating dropped).
   <=1080 (2-up): only a LAST 3rd cell spans the full row, so 4 cells = 2 + 2, 3 cells = 2 + 1 full.
   >=1081: 3 cells = 3 columns (no empty quarter); 4 cells keep 4 columns. */
@media (max-width: 1080px) {
  .store-bar .sb-cell:nth-child(3) { grid-column: auto; }
  .store-bar .sb-cell:nth-child(3):last-child { grid-column: 1 / -1; }
}
@media (min-width: 1081px) { .store-bar:not(:has(.sb-cell:nth-child(4))) { grid-template-columns: repeat(3, 1fr); } }

/* FONT-PAIR (one line, the only place a store sets its fonts): replace "grotesk" x3 with barlow or fraunces.
   pizza/burgers/wings/donair = barlow; Indian/Italian family/bakery/fine dining = fraunces; everything else = grotesk.
   Type unclear? Pick one and keep building (decision 18.9). */
:root { --font-display: var(--fp-fraunces-head); --font-body: var(--fp-fraunces-body); --fw-head: var(--fp-fraunces-weight); }

/* ============================================================
   PT-DESIGN-RULES 2026-10-24 (Rakesh 16:57, standing for PT; Atlas 17:30 red-band + <480px calls)
   verify.py check D keys off the "PT-DESIGN-RULES" marker above: keep it.
   1. SPLIT BUTTONS. Markup (pt_design.py writes it):
      <a class="btn|btn-line"><span class="btn__label">Text</span><span class="btn__arrow">arrow-right svg</span></a>
      Primary (.btn) = every ORDER button (orders.iorders.online): accent label, accent darkened ~25% arrow block,
      white text + white arrow-right (never a chevron). Secondary (.btn-line) = every other button: white label,
      thin border, dark text; light-grey arrow block, dark arrow. No gap; 6px radius on the OUTER corners only;
      padding 12px 18px (label) / 12px 14px (arrow); heading font at 600. One primary per section (nav separate).
      White label text must be >= 4.5:1 on the accent: rebrand sets --btn-accent-dark/--btn-accent-hover to
      checked hex values for the store's accent (color-mix below is only the fallback).
   2. RED-BAND VARIANT (Atlas 17:30): on a full-accent band (.menu-band, .cta-band) the primary's label turns
      white with accent text; the arrow block keeps the darkened accent + white arrow.
   3. UNDER 480px the header order button is hidden: the fixed full-width order bar (.order-float), the button
      in the opened menu and the menu toggle stay, so ordering is one tap away and no two primaries show.
   4. NO open/closed badge, no eyebrows/kickers, no 01/02/03 numbering, no icon cards, no watermark,
      no uppercase labels/links, no "See ... ->" arrows (pt_design.py removes the markup; this hides leftovers).
   5. FONTS (Rakesh 2026-10-24 19:34, decision 18.9): one pair per restaurant type, picked on the FONT-PAIR line
      at the top of this file (grotesk | barlow | fraunces). Two styles only: headings/labels at the pair's
      head weight, body 400. Six fonts are banned (decision 18.10, check D).
   ============================================================ */
:root {
  --btn-accent: var(--brand);
  --btn-accent-dark: #960C23;   /* rebrand: #C8102E darkened 25%, white text 8.85:1 */
  --btn-accent-hover: #A50D26;  /* rebrand: THEME.md hover, white text 7.82:1 */
  --btn-sec-line: #C9C9C7;
  --btn-sec-arrow: #E8E8E6;
}
.btn, .btn-line,
.site-nav .nav-extra .btn, .header-cta .btn, .btn.order-float {
  display: inline-flex !important;
  align-items: stretch !important;
  gap: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 6px !important;
  background: none !important;
  overflow: hidden;
  font-family: var(--font-display) !important;
  font-weight: var(--fw-head, 600) !important;
  font-size: 0.95rem;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none !important;
  text-decoration: none !important;
  transform: none !important;
  white-space: nowrap;
  vertical-align: middle;
}
.btn::before, .btn::after, .btn-line::before, .btn-line::after { content: none !important; display: none !important; }
.btn .btn__label, .btn-line .btn__label {
  display: flex; align-items: center; justify-content: center; flex: 1 1 auto;
  padding: 12px 18px;
  border-radius: 6px 0 0 6px;
  font-family: var(--font-display) !important;
  font-weight: var(--fw-head, 600) !important;
  transition: background-color .15s ease;
}
.btn .btn__arrow, .btn-line .btn__arrow {
  display: flex !important; align-items: center; justify-content: center; flex: none;
  padding: 12px 14px;
  border-radius: 0 6px 6px 0;
}
.btn .btn__arrow .ico, .btn-line .btn__arrow .ico { display: block !important; width: 1em; height: 1em; }
/* primary */
.btn .btn__label { background: var(--btn-accent); color: #fff !important; }
.btn .btn__arrow { background: var(--btn-accent-dark); color: #fff !important; }
.btn:hover .btn__label, .btn:focus-visible .btn__label { background: var(--btn-accent-hover); }
.site-nav .nav-extra .btn, .site-nav .nav-extra .btn * { color: #fff !important; }   /* opened phone menu: never ink on accent */
/* secondary */
.btn-line .btn__label { background: #fff; color: var(--ink) !important; border: 1px solid var(--btn-sec-line); border-right: 0; }
.btn-line .btn__arrow { background: var(--btn-sec-arrow); color: var(--ink) !important; border: 1px solid var(--btn-sec-arrow); }
.btn-line:hover .btn__label, .btn-line:focus-visible .btn__label { border-color: var(--ink); }
/* red-band variant */
.menu-band .btn .btn__label, .cta-band .btn .btn__label { background: #fff; color: var(--btn-accent) !important; }
.menu-band .btn:hover .btn__label, .cta-band .btn:hover .btn__label { background: #f3f3f3; }
.btn:focus-visible, .btn-line:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.btn.order-float { justify-content: stretch; }

/* No eyebrows, no numbering, no icon grids, no watermark, no uppercase labels/links */
.kicker, .kicker::before, .ch-no, .step-number, .v-ico, .open-badge { display: none !important; }
.chapter { grid-template-columns: 1fr !important; }
.cat-tile::before, .qa summary::before, .menu-band::after { content: none !important; display: none !important; }
.values-copy { max-width: 46rem; margin-top: 1rem; }
.plate .plate-no, .plate .plate-foot, .chip, .item-desc span, .info-card strong,
#home-hero .cs-subtitle, .cs-subtitle, .cs-topper, .sticker {
  text-transform: none !important;
  letter-spacing: 0 !important;
}
#home-hero .cs-subtitle::before, .cs-topper::before { content: none !important; display: none !important; }
@media (max-width: 479px) { .header-cta .btn { display: none !important; } }

/* ---------- PT default type (rule 5): two styles only ---------- */
body { font-family: var(--font-body); font-size: 16px; line-height: 1.4; font-weight: 400; }
p, li, dd, td { font-size: 1rem; line-height: 1.4; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-display); font-weight: var(--fw-head, 600); letter-spacing: -0.015em; line-height: 1.15; }
h1 { font-size: clamp(1.875rem, 3.4vw, 2.5rem); }
h2 { font-size: clamp(1.5rem, 2.2vw, 1.75rem); }          /* ~28px */
h3 { font-size: clamp(1.125rem, 1.6vw, 1.25rem); }
body * { font-weight: 400 !important; }
h1, h2, h3, h4, h5, h6, h1 *, h2 *, h3 *, h4 *, h5 *, h6 *,
.site-nav a, summary, summary *, .menu-title, .menu-title *, .dropbtn, .qa-ico, .privacy-title {
  font-family: var(--font-display) !important;
  font-weight: var(--fw-head, 600) !important;
}

/* ============================================================
   PT-LAYOUT 2026-10-24 (Rakesh 19:34, decisions 18.13 + 18.14)
   Alternating full-width 50/50 sections: image | heading + ONE sentence + ONE button.
   .pt-split = image left; .pt-split--flip = image right. White base, generous space, no shadows.
   Home order: hero, featured dishes, story (.story.pt-split), menu CTA (.menu-band), gallery
   (.home-gallery), catering (.home-catering), location (.home-location), reviews (.quotes),
   FAQ (.faq), map + hours (.contact-sec). Blocks without store facts are deleted, never faked.
   ============================================================ */
.pt-split { padding-block: clamp(3.5rem, 7vw, 6rem); background: #fff; }
.story.pt-split { background: #fff; }
.pt-split .wrap {
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4.5rem); align-items: center;
}
.pt-split--flip .pt-split__media { order: 2; }
.pt-split__media img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--pt-r-img); }
.pt-split__copy h2 { margin: 0 0 0.75rem; }
.pt-split__copy p { max-width: 42ch; margin: 0 0 1.5rem; color: var(--ink); }
.home-catering.pt-split, .home-location.pt-split--flip { background: var(--pt-grey, #f6f6f6); }
@media (max-width: 860px) {
  .pt-split .wrap { grid-template-columns: 1fr; }
  .pt-split--flip .pt-split__media { order: 0; }
}
.home-gallery { padding-block: clamp(3.5rem, 7vw, 6rem); }
.home-gallery h2 { margin: 0 0 1.5rem; }
.home-gallery__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.home-gallery__grid img { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--pt-r-img); }
@media (max-width: 700px) { .home-gallery__grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; } }
.contact-sec .menu-btn-wrapper { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.75rem; margin-top: 1.25rem; }
.contact-sec .map-frame iframe { display: block; width: 100%; min-height: 360px; border: 0; }
#find-us { padding-top: clamp(3.5rem, 7vw, 6rem); }

/* ============================================================
   PT-MENU 2026-10-24 (Rakesh 19:34, decision 18.15): the full menu in ONE scroll.
   Every category shows under its own heading on every screen size; the sticky category bar
   (side rail on desktop, horizontal bar on phones) only jumps to a heading. No tabs, no dropdown.
   Active category = ink, not accent (accent budget, decision 18.8).
   ============================================================ */
.menu-items .category-header {
  display: block; grid-column: 1 / -1;
  font-family: var(--font-display); font-size: clamp(1.25rem, 1.8vw, 1.5rem); line-height: 1.2;
  margin: 1.75rem 0 0.25rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--pt-line);
  scroll-margin-top: 8rem;
}
.menu-items .category-header:first-child { margin-top: 0; }
.menu-item:hover { transform: none; }
.item-desc { color: var(--pt-ink-2); }
.menu-buttons a.menu-button { display: block; text-decoration: none; color: var(--ink); }
.menu-buttons a.menu-button.active-button, .menu-buttons a.menu-button.active-button:hover { background: var(--ink); color: #fff !important; }
.mobile-menu-controls {
  display: flex; width: min(var(--max), calc(100% - 2 * var(--pad))); margin: 0 auto 1.25rem; padding: 0;
  position: static; border: 0; background: none;
}
#menu-search {
  flex: 1; font: inherit; font-size: 1rem; padding: 0.7rem 1rem; min-width: 0;
  border: 1px solid var(--btn-sec-line, #c9c9c7); border-radius: 6px; background: #fff; color: var(--ink);
}
#menu-search::placeholder { color: var(--pt-ink-2); }
@media (max-width: 768px) {
  .mobile-menu-controls { position: static; padding: 0; border: 0; background: none; margin-bottom: 0.75rem; }
  .menu-buttons {
    display: flex !important; flex-direction: row; flex: none; gap: 0.4rem;
    position: sticky; top: 4.5rem; z-index: 41; max-height: none; overflow-x: auto; overflow-y: hidden;
    margin: 0 calc(-1 * var(--pad)) 1rem; padding: 0.6rem var(--pad);
    background: #fff; border-bottom: 1px solid var(--pt-line); border-radius: 0; scrollbar-width: none;
  }
  .menu-buttons::-webkit-scrollbar { display: none; }
  .menu-buttons a.menu-button { flex: none; white-space: nowrap; }
  .menu-items .category-header { scroll-margin-top: 9rem; }
}
.info-card:hover { transform: none; }
