/* Quiet public journeys. Staff and the shared editor do not load this opt-in layer. */
.public-site.public-page {
    --text-primary: #f7f5f1;
    --text-secondary: #ccc6bf;
    --text-muted: #aaa49e;
    --surface-gray: #24201d;
    --border-gray: #ffffff29;
    color-scheme: dark;
    display: block;
    padding: 0;
    min-height: 100svh;
    background: #0c0d10;
    overflow: visible;
}
.public-page::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background-image: var(--public-background-shade, linear-gradient(180deg, #0c0d1055, #0c0d1080)), var(--public-background-wide, none);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
}
.public-page { isolation: isolate; }
/* Decorative artwork is shared by related routes; venue and dish images stay real. */
.public-page[data-public-background="menu-reading"] {
    --public-background-wide: url('../images/public/backdrops/discovery-warm-1600.webp');
    --public-background-small: url('../images/public/backdrops/discovery-warm-800.webp');
    --public-background-mobile-position: 85% center;
    --public-background-shade: linear-gradient(180deg, #0c0d1080, #0c0d10a6);
    --public-background-shade-mobile: linear-gradient(180deg, #0c0d1099, #0c0d10b3);
}
.public-page[data-public-background="restaurant-registration"] {
    --public-background-wide: url('../images/public/page-backgrounds/restaurant-registration-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/restaurant-registration-768.webp');
    --public-background-mobile-position: 18% center;
    --public-background-shade: linear-gradient(90deg, #0c0d1099, #0c0d104d 75%);
    --public-background-shade-mobile: linear-gradient(180deg, #0c0d108c, #0c0d1080);
}
.public-page[data-public-background="account-entry"] {
    --public-background-wide: url('../images/public/page-backgrounds/account-entry-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/account-entry-768.webp');
    --public-background-mobile-position: 80% center;
}
.public-page[data-public-background="restaurant-verification"] {
    --public-background-wide: url('../images/public/page-backgrounds/restaurant-verification-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/restaurant-verification-768.webp');
    --public-background-mobile-position: 15% center;
}
.public-page[data-public-background="app-arrival"] {
    --public-background-wide: url('../images/public/page-backgrounds/app-arrival-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/app-arrival-768.webp');
    --public-background-mobile-position: 80% center;
}
.public-page[data-public-background="shared-evening"] {
    --public-background-wide: url('../images/public/page-backgrounds/shared-evening-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/shared-evening-768.webp');
    --public-background-mobile-position: 65% center;
}
.public-page[data-public-background="quiet-reading"] {
    --public-background-wide: url('../images/public/page-backgrounds/quiet-reading-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/quiet-reading-768.webp');
    --public-background-mobile-position: 12% center;
}
.public-page[data-public-background="guest-contact"] {
    --public-background-wide: url('../images/public/page-backgrounds/guest-contact-1536.webp');
    --public-background-small: url('../images/public/page-backgrounds/guest-contact-768.webp');
    --public-background-mobile-position: 80% center;
}
.public-page :is(a, button, input, select, textarea):focus-visible { outline: 2px solid white; outline-offset: 4px; }
.public-page :is(.portal-page, .legal-page-shell, .legal-page) { background: none; min-height: 0; }
.public-page :is(.portal-page, .legal-page-shell, .legal-page, .menu-main, .restaurant-share-main, .invite-wrap, .wrap) {
    padding: calc(var(--public-nav-height, 148px) + 64px) 32px 96px;
}
.public-page .public-footer { background: #0c0d10; }
.public-page .public-footer__links { flex-wrap: wrap; }
.public-page .public-shell { width: min(1280px, calc(100% - 64px)); }
.public-page :is(.glass-card, .portal-card, .portal-mini-card, .legal-document, .legal-container, .restaurant-share-card, .invite-card) {
    background: linear-gradient(135deg, #24201ef7, #171719fc);
    border: 1px solid #ffffff26;
    box-shadow: 0 20px 70px #0004, inset 0 1px #ffffff08;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    color: var(--text-primary);
}
.public-page :is(.auth-input, .portal-input, .portal-select, .portal-textarea) {
    background: #111214; color: #fff; border: 1px solid #ffffff38; box-shadow: none;
    min-height: 50px; border-radius: 10px;
}
.public-page :is(input, textarea)::placeholder { color: #a7a29d; opacity: 1; }
.public-page :is(.auth-btn, .portal-button, .primary-action, .restaurant-share-card__primary, .menu-state__btn) {
    background: #ff5a5f; color: #fff; box-shadow: none; border: 1px solid transparent; min-height: 50px;
}
.public-page :is(.auth-btn, .portal-button, .primary-action, .restaurant-share-card__primary, .menu-state__btn):hover {
    background: #ec484f; color: white; box-shadow: none;
}
.public-page :is(.portal-button-secondary, .menu-back-button) { background: #211f1e; border: 1px solid #ffffff40; color: white; box-shadow: none; }
.public-page :is(.portal-back-link, .back-link):hover { color: white; transform: none; }
.public-page .skeleton { background: #ffffff0c; }
.public-page .skeleton::after { background: linear-gradient(90deg, transparent, #ffffff0c, transparent); }

/* Account creation has room to explain the restaurant journey beside the form. */
.public-account .portal-auth { min-height: 0; padding: 0; }
.public-account .portal-card { width: min(540px, 100%); padding: 42px; }
.public-account .portal-title { font-size: clamp(30px, 3vw, 40px); line-height: 1.16; letter-spacing: -.035em; }
.public-account .portal-eyebrow { letter-spacing: .14em; font-size: 11px; margin-bottom: 18px; }
.public-account .portal-subtitle { line-height: 1.75; margin-top: 18px; }
.public-account .auth-form { margin-top: 28px; gap: 22px; }
.public-account .auth-label { color: #eee9e3; font-size: 13px; }
.public-account .password-toggle { color: #dad4cf; min-width: 44px; min-height: 44px; }
.public-account .legal-consent-row { background: #ffffff05; border-color: #ffffff21; padding: 16px; line-height: 1.65; }
.public-account .auth-footer { color: #ccc6bf; border-color: #ffffff24; }
.public-account .auth-error { background: #431f23; color: #ffd3d5; border-color: #ad555a; }
.public-account .auth-success { background: #193a30; color: #d6f5e7; border-color: #518872; }
.public-account .public-account-layout { width: min(1160px, 100%); margin: auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 7vw, 100px); align-items: center; }
.public-account-intro h2 { font-size: clamp(36px, 4vw, 58px); line-height: 1.12; font-weight: 500; letter-spacing: -.045em; margin: 0 0 28px; }
.public-account-intro > p { max-width: 440px; }
.public-account-intro .public-account-steps { list-style: none; padding: 28px 0 0; margin: 32px 0 0; border-top: 1px solid #ffffff33; display: grid; gap: 22px; counter-reset: account-step; }
.public-account-steps li { display: flex; gap: 18px; align-items: center; color: #ded8d0; font-size: 14px; }
.public-account-steps li::before { counter-increment: account-step; content: '0' counter(account-step); color: #fff; font-size: 11px; border: 1px solid #ffffff36; border-radius: 50%; width: 34px; height: 34px; display: grid; place-items: center; flex-shrink: 0; }
.public-account .portal-stepper { gap: 8px; flex-wrap: wrap; margin: 28px 0; }
.public-account .portal-step { background: #ffffff0a; border-color: #ffffff29; color: #d1cac3; }
.public-account .portal-step.active { background: #ff5a5f; color: #fff; border-color: #ff5a5f; box-shadow: none; }
.public-account .portal-step.done { background: #ffffff24; color: #fff; }
.public-account :is(.portal-mini-card, .portal-empty) { background: #ffffff06; border: 1px solid #ffffff26; color: #e6e0da; }
.public-account :is(.portal-mini-card, .portal-empty) p { color: #c7c0b9; }
.public-account :is(.owner-price-options, .owner-info-field-row, .owner-hours-row) { border-color: #ffffff26; }
.public-account :is(.owner-price-option, .owner-cuisine-chip, .owner-public-preview, .owner-preview-logo) { background: #ffffff08; color: #f3eee8; border-color: #ffffff30; }
.public-account :is(.owner-price-option.active, .owner-cuisine-chip.active) { background: #ff5a5f; border-color: #ff5a5f; color: #fff; }
.public-account .owner-info-field-row input, .public-account .owner-hours-times input { color: #fff; background: #111214; border: 1px solid #ffffff30; border-radius: 8px; padding: 10px; min-height: 44px; width: 100%; }
.public-account .owner-info-note { color: #bfb8b1; }
.public-account .owner-info-grid { grid-template-columns: 1fr; }

/* Real venue photography becomes the header; dish content stays on calm surfaces. */
.public-menu .menu-main { padding-top: calc(var(--public-nav-height, 148px) + 40px); }
.public-menu .menu-container { max-width: 1120px; gap: 28px; }
.public-menu .menu-hero { position: relative; overflow: hidden; border-radius: 24px; padding: 0; gap: 0; }
.public-menu .menu-hero__top { position: relative; display: grid; grid-template-columns: 1fr; align-items: end; min-height: 380px; gap: 0; }
.public-menu .menu-hero__photo { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 0; }
.public-menu .menu-hero__photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg,#141313 1%,#141313b3 50%,#14131312); pointer-events: none; }
.public-menu .menu-hero__photo-image { object-position: center 45%; }
.public-menu .menu-hero__photo .menu-back-button { top: 24px; left: 24px; z-index: 2; background: #141313c9; color: #fff; }
.public-menu .menu-hero__text { position: relative; padding: 100px 42px 38px; pointer-events: none; }
.public-menu .menu-hero__text :is(a,button) { pointer-events: auto; }
.public-menu .menu-hero__name { font-size: clamp(30px, 4vw, 50px); letter-spacing: -.04em; font-weight: 600; text-wrap: balance; }
.public-menu .menu-hero__name-rating-row { align-items: end; gap: 24px; }
.public-menu .menu-hero__address { margin-top: 16px; color: #e3ddd5; }
.public-menu .menu-hero__cuisine { opacity: 1; color: #c2bbb3; margin-top: 8px; }
.public-menu .menu-hero__tabs { padding: 0 42px 28px; position: relative; }
.public-menu .menu-hero--no-photo .menu-hero__top { min-height: 240px; }
.public-menu .menu-hero--no-photo .menu-hero__text { padding-top: 32px; }
.public-menu .menu-guest-message__accent { width: 1px; background: #ffffff66; box-shadow: none; }
.public-menu .menu-guest-message { max-width: 680px; }
.public-menu .menu-sticky-nav { top: var(--public-nav-height, 148px); background: #111214f5; border: 1px solid #ffffff25; box-shadow: none; padding: 18px 14px; backdrop-filter: blur(12px); }
.public-menu :is(.menu-l2-toggle, .menu-chip, .menu-tab, .menu-chips-arrow, .menu-search__input) { background: #211f1e; color: #eee9e3; border-color: #ffffff30; box-shadow: none; backdrop-filter: none; }
.public-menu :is(.menu-l2-btn, .menu-chip, .menu-tab) { min-height: 44px; }
.public-menu :is(.menu-l2-btn, .menu-chip, .menu-tab):hover { background: #ffffff16; color: white; box-shadow: none; transform: none; }
.public-menu :is(.menu-l2-btn.active, .menu-chip.active, .menu-tab.active, .menu-photo-filter.active) { background: #ff5a5f; color: white; box-shadow: none; border-color: #ff5a5f; }
.public-menu .menu-photo-filter { background: #25211e; color: #fff; border-color: #ffffff44; box-shadow: none; animation: none; will-change: auto; }
.public-menu .menu-photo-filter:hover { transform: none; background: #34302c; }
.public-menu .menu-photo-filter__count { background: #ffffff12; }
.public-menu .menu-search { margin: 0; }
.public-menu .menu-search input { background: #151517; color: white; border: 1px solid #ffffff36; box-shadow: none; min-height: 54px; }
.public-menu .menu-section { padding: 32px; border-radius: 20px; margin-bottom: 28px; scroll-margin-top: calc(var(--public-nav-height, 148px) + 160px); }
.public-menu .menu-section__header { border-color: #ffffff24; margin-bottom: 10px; }
.public-menu .menu-section__title { font-size: 25px; letter-spacing: -.025em; }
.public-menu .menu-section__notes { background: #ffffff05; border-color: #ffffff4d; }
.public-menu .menu-item { padding: 24px 8px; border-color: #ffffff1c; gap: 28px; }
.public-menu .menu-item:has(.menu-item__image) { grid-template-columns: minmax(0,1fr) 132px; }
.public-menu .menu-item:hover { background: #ffffff06; }
.public-menu .menu-item__image { width: 132px; height: 112px; border-radius: 12px; }
.public-menu .menu-item-name { font-size: 18px; line-height: 1.45; }
.public-menu .menu-item-desc { font-size: 14px; opacity: 1; color: #bdb7b0; line-height: 1.7; margin-top: 6px; }
.public-menu .menu-item__footer { margin-top: 14px; }
.public-menu .menu-item-price { font-size: 18px; }
.public-menu :is(.menu-dietary-chip, .menu-drawer__chip) { background: #ffffff0c; color: #d9d3cc; border-color: #ffffff22; }
.public-menu .menu-noresults { padding: 60px 24px; background: #211f1e; border: 1px solid #ffffff20; border-radius: 20px; color: #d3ccc5; }
.public-menu .menu-drawer__sheet { background: #1b1918; box-shadow: 0 20px 90px #0009; border: 1px solid #ffffff29; padding: 0; }
.public-menu .menu-drawer__close { background: #242120; color: #fff; border-color: #ffffff44; }
.public-menu .menu-drawer--with-photo .menu-drawer__close { background: #171719d9; color: white; }
.public-menu .menu-drawer__photo { margin: 0; border-radius: 0; }
.public-menu .menu-drawer__content { padding: 36px; }
.public-menu .menu-drawer__title { font-size: 30px; }
.public-menu :is(.menu-drawer__row, .menu-drawer__section, .menu-review) { border-color: #ffffff24; }
.public-menu :is(.menu-drawer__desc, .menu-drawer__row-meta, .menu-drawer__rating-hint, .menu-review__text) { opacity: 1; color: #c9c2bb; }
.public-menu .menu-review { background: #ffffff04; }
.public-menu .menu-review__avatar { color: #ddd6cf; }

/* Reading pages share the source legal renderer and version selection. */
.public-reading :is(.legal-document, .legal-container) { width: min(800px,100%); padding: 54px 60px; margin: auto; border-radius: 20px; }
.public-reading .legal-title { font-size: clamp(32px,4vw,46px); letter-spacing: -.04em; line-height: 1.15; margin-top: 30px; }
.public-reading .legal-section { margin-bottom: 38px; padding-top: 26px; border-top: 1px solid #ffffff1c; }
.public-reading .legal-section h2 { font-size: 22px; margin-bottom: 20px; line-height: 1.4; text-wrap: pretty; }
.public-reading :is(.legal-section p, .legal-section li, .legal-subtitle, .legal-notice p) { font-size: 15px; line-height: 1.9; color: #d2ccc5; }
.public-reading .legal-date { color: #aaa39a; }
.public-reading .legal-switcher { flex-wrap: wrap; }
.public-reading :is(.contact-info, .legal-notice) { background: #ffffff05; padding: 22px; border: 1px solid #ffffff1c; border-radius: 12px; backdrop-filter: none; }
.public-reading a { overflow-wrap: anywhere; }

/* Fast, compact app-entry pages keep the original deep links and store fallbacks. */
.public-entry .app-download-banner { display: none !important; }
.public-entry :is(.restaurant-share-main, .invite-wrap, .wrap) { display: grid; justify-items: center; align-content: center; gap: 24px; width: 100%; max-width: none; min-height: 76svh; }
.public-entry :is(.restaurant-share-card, .invite-card, .public-entry-card) { width: min(540px,100%); border-radius: 24px; padding: 44px; text-align: center; }
.public-entry .public-entry-card { background: linear-gradient(135deg,#24201ef7,#171719fc); border: 1px solid #ffffff26; }
.public-entry :is(.restaurant-share-card__title, .invite-card h1, .public-entry-card h1) { color: #fff; font-size: clamp(29px,3vw,38px); line-height: 1.16; letter-spacing: -.035em; margin: 22px 0; }
.public-entry :is(.restaurant-share-card__body, .invite-card p, .public-entry-card p) { color: #c9c2bb; font-size: 15px; line-height: 1.8; }
.public-entry :is(.restaurant-share-card__logo, .invite-card > .logo, .public-entry-card > .logo) { width: 68px; height: 90px; object-fit: contain; margin: 0 auto 24px; }
.public-entry .stores { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; width: min(440px,100%); }
.public-entry :is(.primary-action, .restaurant-share-card__primary) { display: flex; justify-content: center; align-items: center; width: 100%; padding: 14px 22px; border-radius: 10px; margin: 28px 0; text-decoration: none; font-weight: 600; }
.public-entry .fine-print { color: #b2aaa2; font-size: 13px; line-height: 1.75; width: min(440px,100%); text-align: center; margin: 0; }
.public-entry .public-entry-notice { color: #eee7de; border: 1px solid #ffffff33; border-radius: 10px; padding: 16px; margin-top: 24px; font-size: 14px; }
.public-entry :is(.store-link, .restaurant-share-card__store-link) { min-height: 52px; }
.public-entry .store-link { display: inline-flex; align-items: center; justify-content: center; width: 164px; height: 52px; }
.public-entry .badge { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; }

@media (max-width: 899px) {
    .public-account .public-account-layout { grid-template-columns: 1fr; max-width: 600px; gap: 40px; }
    .public-account .portal-card { width: 100%; }
    .public-account-intro h2 { max-width: 520px; }
    .public-account-intro .public-account-steps { grid-template-columns: repeat(3,1fr); gap: 18px; }
    .public-account-steps li { align-items: start; flex-direction: column; font-size: 13px; }
}
@media (max-width: 600px) {
    .public-page::before {
        background-image: var(--public-background-shade-mobile, linear-gradient(180deg, #0c0d1066, #0c0d1099)), var(--public-background-small, none);
        background-position: var(--public-background-mobile-position, center);
    }
    .public-page :is(.portal-page, .legal-page-shell, .legal-page, .menu-main, .restaurant-share-main, .invite-wrap, .wrap) { padding: calc(var(--public-nav-height, 132px) + 32px) 18px 64px; }
    .public-page .public-shell { width: calc(100% - 36px); }
    .public-account .portal-card { padding: 28px 22px; border-radius: 18px; }
    .public-account .public-account-steps { margin-top: 24px; padding-top: 24px; }
    .public-account .portal-form-row, .public-account .portal-grid--two { grid-template-columns: 1fr; }
    .public-menu .menu-container { gap: 20px; }
    .public-menu .menu-hero__top { min-height: 340px; }
    .public-menu .menu-hero__text { padding: 100px 24px 28px; }
    .public-menu .menu-hero__name-rating-row { flex-direction: column; align-items: flex-start; gap: 14px; }
    .public-menu .menu-hero__name-rating-row .menu-hero__rating { margin: 0; }
    .public-menu .menu-hero__tabs { padding: 0 24px 24px; }
    .public-menu .menu-section { padding: 24px 16px; border-radius: 16px; }
    .public-menu .menu-item { gap: 14px; padding: 22px 0; }
    .public-menu .menu-item:has(.menu-item__image) { grid-template-columns: minmax(0,1fr) 86px; }
    .public-menu .menu-item__image { width: 86px; height: 98px; }
    .public-menu .menu-item-name { font-size: 16px; }
    .public-menu .menu-item__footer { flex-wrap: wrap; gap: 8px; }
    .public-menu .menu-sticky-controls { gap: 8px; }
    .public-menu .menu-l2-btn { padding: 8px 12px; }
    .public-menu .menu-drawer__content { padding: 26px 22px; }
    .public-menu .menu-drawer__title { font-size: 27px; }
    .public-reading :is(.legal-document,.legal-container) { padding: 28px 22px; border-radius: 16px; }
    .public-entry :is(.restaurant-share-card,.invite-card,.public-entry-card) { padding: 30px 24px; }
    .public-entry .restaurant-share-card__stores { flex-direction: row; flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
    .public-page *, .public-page *::before, .public-page *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media print {
    .public-reading { background: white !important; color: #111; color-scheme: light; }
    .public-reading::before, .public-reading .navbar, .public-reading .public-footer, .public-reading #nomoraConsent { display: none !important; }
    .public-reading :is(.legal-page-shell,.legal-page) { padding: 0; }
    .public-reading :is(.legal-document,.legal-container,.legal-notice,.contact-info) { padding: 0; background: none; border: 0; box-shadow: none; max-width: none; }
    .public-reading :is(h1,h2,h3,p,li,a,strong,.legal-date) { color: #111 !important; }
    .public-reading .legal-section { border-color: #ccc; break-inside: avoid; }
}
