/* MatMeg's existing Candy Club visual language inside one reusable restaurant card. */
body.restaurant-open { overflow:hidden; }
body.restaurant-open .review-bar { display:none; }
.restaurant-stage { position:fixed; inset:0; z-index:30; background:transparent; }
.browse-shell[data-restaurant-background] { position:fixed; top:var(--restaurant-background-top,0px); inset-inline:0; width:100%; pointer-events:none; }
.restaurant-card { color:var(--ink); background:var(--paper); }
.restaurant-heading { padding:4px 18px 16px; }
.restaurant-heading h1 { font-size:1.65rem; line-height:1.12; letter-spacing:-.035em; font-weight:720; margin:0; overflow-wrap:anywhere; }
.restaurant-secondary { display:flex; flex-wrap:wrap; gap:4px 10px; align-items:center; margin-top:7px; font-size:.8125rem; color:var(--muted); }
.restaurant-area:after { content:'·'; margin-left:10px; }
.restaurant-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:13px; }
.restaurant-actions .button { width:auto; min-height:46px; padding:10px 14px; border-radius:99px; font-size:.9rem; gap:8px; flex:1 1 8rem; white-space:normal; }
.restaurant-actions .button svg { width:19px; height:19px; flex:none; }
.restaurant-actions .save-branch > .save-label { font-size:inherit; line-height:1.3; }
.restaurant-actions .save-branch > span[aria-hidden] { font-size:1.45rem; }
.restaurant-actions .share-branch { flex:0 0 46px; padding:10px; }
.restaurant-body { padding:0 18px max(20px,env(safe-area-inset-bottom)); }
.restaurant-bento { display:grid; grid-template-columns:1.25fr 1fr; grid-template-rows:repeat(2,minmax(0,1fr)); gap:7px; height:300px; height:clamp(240px,80cqw,420px); margin:0 0 22px; }
.restaurant-bento .bento-tile { border-radius:17px; }
.restaurant-bento .bento-tile:first-child { grid-row:span 2; }
.restaurant-bento .bento-tile img { width:100%; height:100%; object-fit:cover; }
.restaurant-bento.bento-1 { display:block; height:auto; }
.restaurant-bento.bento-1 .bento-tile { aspect-ratio:4/3; height:auto; max-height:420px; }
.restaurant-bento.bento-2 { grid-template-rows:minmax(0,1fr); height:clamp(210px,65cqw,380px); }
.restaurant-bento.bento-2 .bento-tile:first-child { grid-row:auto; }
.restaurant-media-empty { display:grid; place-items:center; border:1px dashed var(--control-line); border-radius:18px; min-height:140px; margin-bottom:22px; color:var(--muted); }
.video-placeholder { display:grid; place-items:center; height:100%; background:var(--surface); color:var(--action); font-size:2.5rem; }
.restaurant-section-title { display:flex; flex-wrap:wrap; gap:5px 10px; justify-content:space-between; align-items:baseline; margin-bottom:12px; }
.restaurant-section-title h2,.restaurant-about h2 { font-size:1.125rem; font-weight:650; line-height:1.25; margin:0; letter-spacing:-.02em; }
.restaurant-section-title > span { font-size:.75rem; color:var(--muted); }
.restaurant-card .branch-dish { background:#fff; border:1px solid var(--line); border-radius:19px; }
.restaurant-card .festival-offer .dish-copy { padding:16px; }
.restaurant-card .offer-title-row { gap:8px 12px; }
.restaurant-card .offer-title-row h3 { font-size:1.15rem; flex:1 1 8rem; margin:0; }
.restaurant-card .branch-dish .offer-title-row .offer-price { font-size:2.35rem; color:var(--action); font-weight:750; }
.restaurant-card .allergen-details { margin-top:12px; }
.restaurant-card .offer-pass-condition { margin-top:7px; }
.dish-summary { display:flex; align-items:center; gap:14px; }
.dish-thumbnail { position:relative; display:block; flex:0 0 100px; width:100px; height:112px; padding:0; border:0; border-radius:13px; overflow:hidden; background:var(--surface); cursor:zoom-in; }
.dish-thumbnail img { display:block; width:100%; height:100%; object-fit:cover; }
.dish-photo-count { position:absolute; right:5px; bottom:5px; padding:3px 6px; border-radius:7px; background:#fff3f8ee; color:var(--ink); font-size:.6875rem; }
.dish-heading { min-width:0; flex:1; }
.restaurant-card .dish-heading h3 { margin:0; font-size:1.125rem; line-height:1.2; overflow-wrap:anywhere; }
.restaurant-card .dish-heading .offer-price { margin:7px 0 0; color:var(--action); font-size:2.15rem; line-height:1; font-weight:750; white-space:nowrap; }
.restaurant-card .dish-heading .offer-price small { font-size:1rem; font-weight:550; }
.restaurant-card .dish-heading .offer-pass-condition { font-size:.6875rem; margin-top:5px; }
.dish-summary + .sub { margin-top:14px; }
.restaurant-pass-action { margin-top:12px; font-size:.875rem; }
.restaurant-about { margin-top:26px; }
.restaurant-about p { font-size:.9375rem; line-height:1.5; margin:9px 0 0; max-width:44rem; }
.restaurant-practical { margin-top:22px; }
.restaurant-practical .visit-info { border-top:0; border-bottom:0; }
.restaurant-practical .visit-row,.restaurant-practical .visit-hours summary { padding:12px; border-radius:14px; background:#ffe1ed99; }
.restaurant-practical .visit-address-line { margin-bottom:7px; }
.restaurant-practical .visit-address-line .visit-row { min-height:48px; }
.restaurant-practical .visit-hours,.restaurant-practical .visit-website { margin-top:7px; }
.restaurant-card .gallery-note { margin-top:-12px; }
.restaurant-card .footer { margin-top:20px; }
@container (min-width:640px) {
  .restaurant-heading { padding:8px 28px 22px; }
  .restaurant-heading h1 { font-size:2.2rem; }
  .restaurant-actions { max-width:400px; }
  .restaurant-body { padding-inline:28px; }
  .restaurant-bento { grid-template-columns:1.5fr 1fr; gap:10px; height:420px; }
  .restaurant-bento.bento-1 { max-width:680px; height:auto; }
  .restaurant-bento.bento-2 { height:340px; }
  .restaurant-card .branch-dishes { grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); }
}
@container (max-width:345px) {
  .dish-summary { gap:10px; }
  .dish-thumbnail { flex-basis:82px; width:82px; height:104px; }
  .restaurant-heading,.restaurant-body { padding-inline:13px; }
  .restaurant-heading h1 { font-size:1.45rem; }
  .restaurant-actions .button { padding-inline:10px; font-size:.85rem; }
}
@media(prefers-reduced-motion:reduce) { .restaurant-bento .bento-tile img { transition:none; } }
/* The content owns horizontal spacing; avoid double gutters in the scroll frame. */
.restaurant-card .restaurant-scroll { padding:0; }

/* Keep closed status readable; detail photos retain their original colours. */
.opening-status.is-closed { color:#701a42;font-weight:750; }
