@import '_content/Tma.Surface.Components/Tma.Surface.Components.28npwexbw0.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-jtk51gox6l] {
    background: #fff4cc;
    border-top: 1px solid rgba(44, 62, 80, 0.18);
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(44, 62, 80, 0.18);
    color: #2c3e50;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-jtk51gox6l] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Pages/Diners.razor.rz.scp.css */
/* Diner branch — mobile-first patron teaser that segues straight into the WASM item-first journey at
   /app/. The page is static SSR (no interactive circuit), so the single "Find your menu" anchor carries
   the whole hand-off: it is a plain anchor well above the 44px minimum, and nothing gates browsing. */

.diner-branch-hero[b-jnrc0p59nr] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
    max-width: 46rem;
    margin: 0 auto 1.5rem;
    padding: 0 1.25rem;
    text-align: left;
}

.diner-branch-headline[b-jnrc0p59nr] {
    font-weight: 800;
    line-height: 1.2;
}

.diner-branch-subhead[b-jnrc0p59nr] {
    color: var(--mud-palette-text-secondary);
    line-height: 1.5;
}

.diner-branch-actions[b-jnrc0p59nr] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
}

/* Primary CTA: the one clear path straight into /app/ — never behind an account. */
.diner-branch-primary[b-jnrc0p59nr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0.85rem 1.5rem;
    border-radius: 0.75rem;
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-weight: 700;
    text-decoration: none;
    box-shadow: var(--mud-elevation-2);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.diner-branch-primary:hover[b-jnrc0p59nr],
.diner-branch-primary:focus-visible[b-jnrc0p59nr] {
    transform: translateY(-2px);
    box-shadow: var(--mud-elevation-6);
}

.diner-branch-primary:focus-visible[b-jnrc0p59nr] {
    outline: 3px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

/* The "no account needed" reassurance stays quiet — it is a note, not a gate. */
.diner-branch-note[b-jnrc0p59nr] {
    color: var(--mud-palette-text-secondary);
    font-size: 0.9rem;
    line-height: 1.5;
}

.diner-branch-section[b-jnrc0p59nr] {
    max-width: 46rem;
    margin: 0 auto;
    padding: 0 1.25rem;
}

.diner-branch-path-grid[b-jnrc0p59nr] {
    margin-top: 1rem;
}

/* Tablet and up: the hero relaxes and the CTA sits inline rather than full-bleed. */
@media (min-width: 768px) {
    .diner-branch-actions[b-jnrc0p59nr] {
        flex-direction: row;
        align-items: center;
    }

    .diner-branch-primary[b-jnrc0p59nr] {
        min-width: 16rem;
    }
}

/* Desktop: a touch more breathing room at the top of the teaser. */
@media (min-width: 1280px) {
    .diner-branch-hero[b-jnrc0p59nr] {
        margin-top: 0.5rem;
    }
}
/* /Components/Pages/ForRestaurants.razor.rz.scp.css */
/* Restaurant branch — mobile-first sales landing that drives into the signup -> Stripe chain.
   The page is static SSR (no interactive circuit), so the CTA links and plan cards carry the whole
   funnel: every touch target is a plain anchor well above the 44px minimum. */

.restaurant-branch-hero[b-jnfr9ozrss] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
    max-width: 46rem;
    margin: 0 auto 1.5rem;
    padding: 0 1.25rem;
    text-align: left;
}

.restaurant-branch-headline[b-jnfr9ozrss] {
    font-weight: 800;
    line-height: 1.2;
}

.restaurant-branch-subhead[b-jnfr9ozrss] {
    color: var(--mud-palette-text-secondary);
    line-height: 1.5;
}

.restaurant-branch-actions[b-jnfr9ozrss] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
}

/* Primary CTA: the one clear path into /signup. */
.restaurant-branch-primary[b-jnfr9ozrss] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0.85rem 1.5rem;
    border-radius: 0.75rem;
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-weight: 700;
    text-decoration: none;
    box-shadow: var(--mud-elevation-2);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.restaurant-branch-primary:hover[b-jnfr9ozrss],
.restaurant-branch-primary:focus-visible[b-jnfr9ozrss] {
    transform: translateY(-2px);
    box-shadow: var(--mud-elevation-6);
}

.restaurant-branch-primary:focus-visible[b-jnfr9ozrss],
.restaurant-branch-secondary:focus-visible[b-jnfr9ozrss],
.restaurant-plan-cta:focus-visible[b-jnfr9ozrss] {
    outline: 3px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

/* Secondary links: calculator + pricing, quieter than the primary CTA. */
.restaurant-branch-secondary[b-jnfr9ozrss] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-weight: 600;
    color: var(--mud-palette-primary);
    text-decoration: none;
}

.restaurant-branch-secondary:hover[b-jnfr9ozrss] {
    text-decoration: underline;
}

/* Static plan cards — each is a per-plan deep link into /signup?...&planKind=<kind>. */
.restaurant-plan-grid[b-jnfr9ozrss] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    width: 100%;
}

.restaurant-plan-card[b-jnfr9ozrss] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.5rem 1.25rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 1rem;
    background: var(--mud-palette-surface);
    box-shadow: var(--mud-elevation-1);
}

.restaurant-plan-card--featured[b-jnfr9ozrss] {
    border-color: var(--mud-palette-primary);
    box-shadow: var(--mud-elevation-4);
}

.restaurant-plan-name[b-jnfr9ozrss] {
    font-size: 1.1rem;
    font-weight: 700;
}

.restaurant-plan-price[b-jnfr9ozrss] {
    font-size: 1.5rem;
    font-weight: 800;
}

.restaurant-plan-cadence[b-jnfr9ozrss] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.restaurant-plan-lock[b-jnfr9ozrss] {
    align-self: flex-start;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    background: var(--mud-palette-primary-hover);
    color: var(--mud-palette-primary);
    font-size: 0.75rem;
    font-weight: 700;
}

.restaurant-plan-cta[b-jnfr9ozrss] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    margin-top: 0.5rem;
    padding: 0.65rem 1.25rem;
    border-radius: 0.65rem;
    border: 1px solid var(--mud-palette-primary);
    color: var(--mud-palette-primary);
    font-weight: 700;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.restaurant-plan-card--featured .restaurant-plan-cta[b-jnfr9ozrss] {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    border-color: var(--mud-palette-primary);
}

.restaurant-plan-cta:hover[b-jnfr9ozrss] {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}

/* Tablet: the actions sit inline and the plan cards fan out. */
@media (min-width: 768px) {
    .restaurant-branch-actions[b-jnfr9ozrss] {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }

    .restaurant-plan-grid[b-jnfr9ozrss] {
        grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    }
}

/* Desktop: a touch more breathing room around the hero. */
@media (min-width: 1280px) {
    .restaurant-branch-hero[b-jnfr9ozrss] {
        padding: 0.5rem 1.25rem 0;
    }
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* Restaurant-first front door — mobile-first (375px base, layered up with min-width).
   The page is static SSR: no interactive circuit, so styling carries the whole experience. */

.home-hero[b-spijl2gq41] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: center;
    padding: 2.5rem 1.25rem 2rem;
    max-width: 72rem;
    margin: 0 auto;
    text-align: center;
}

.home-hero-eyebrow[b-spijl2gq41] {
    letter-spacing: 0.14em;
    color: var(--mud-palette-text-secondary);
}

.home-hero-title[b-spijl2gq41] {
    font-weight: 800;
    line-height: 1.15;
    max-width: 20ch;
}

.home-hero-subtitle[b-spijl2gq41] {
    color: var(--mud-palette-text-secondary);
    font-weight: 500;
    max-width: 56ch;
}

/* Base (phone) layout stacks the two actions full-width; the row layout waits for the tablet breakpoint. */
.home-hero-actions[b-spijl2gq41] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
    max-width: 24rem;
    margin-top: 0.75rem;
}

.home-hero-cta[b-spijl2gq41] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0.75rem 1.75rem;
    border-radius: 999px;
    font-size: 1.05rem;
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.home-hero-cta:hover[b-spijl2gq41],
.home-hero-cta:focus-visible[b-spijl2gq41] {
    transform: translateY(-2px);
    box-shadow: var(--mud-elevation-4);
}

.home-hero-cta:focus-visible[b-spijl2gq41] {
    outline: 3px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

.home-hero-cta--primary[b-spijl2gq41] {
    /* AA: white on #1f6e96 is 5.63:1. This literal predates the theme's foreground ramp (F-136);
       --mud-palette-primary is now TmaBrand.PrimaryOnLight (#1F6A99, 5.87:1) and is AA-safe, so the
       componentization pass should fold this back onto the token rather than keep a near-duplicate. */
    background: #1f6e96;
    color: #ffffff;
}

.home-hero-cta--secondary[b-spijl2gq41] {
    /* AA: 5.63:1 on the white canvas; the border rides currentColor so it stays AA-safe too. */
    color: #1f6e96;
    border: 2px solid currentColor;
    background: transparent;
}

/* The diner entry: one unmissable full-width band straight into the patron app. */
.home-diner-band[b-spijl2gq41] {
    padding: 1rem 1.25rem 3rem;
    max-width: 72rem;
    margin: 0 auto;
}

.home-diner-link[b-spijl2gq41] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
    min-height: 44px;
    padding: 1.5rem 1.25rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 1rem;
    background: var(--mud-palette-surface);
    text-align: left;
    text-decoration: none;
    color: inherit;
    box-shadow: var(--mud-elevation-1);
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.home-diner-link:hover[b-spijl2gq41],
.home-diner-link:focus-visible[b-spijl2gq41] {
    transform: translateY(-2px);
    box-shadow: var(--mud-elevation-6);
    border-color: var(--mud-palette-primary);
}

.home-diner-link:focus-visible[b-spijl2gq41] {
    outline: 3px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

.home-diner-icon[b-spijl2gq41] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 0.75rem;
    background: var(--mud-palette-action-default-hover);
}

.home-diner-copy[b-spijl2gq41] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.home-diner-title[b-spijl2gq41] {
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.2;
}

.home-diner-body[b-spijl2gq41] {
    color: var(--mud-palette-text-secondary);
    font-size: 0.95rem;
    line-height: 1.5;
}

.home-diner-cta[b-spijl2gq41] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 700;
    /* AA: 5.14:1 on the white card. Like the hero CTA above, this literal predates the ramp (F-136):
       --mud-palette-secondary is now TmaBrand.SecondaryOnLight (#0F6E6E, 6.04:1), not the illegible
       brand teal, so the componentization pass can fold this onto the token. */
    color: #0f7a7a;
}

/* Tablet and up: hero actions sit side by side; the diner band becomes one horizontal row. */
@media (min-width: 768px) {
    .home-hero[b-spijl2gq41] {
        gap: 1.25rem;
        padding: 4rem 2rem 2.5rem;
    }

    .home-hero-actions[b-spijl2gq41] {
        flex-direction: row;
        justify-content: center;
        max-width: none;
        width: auto;
    }

    .home-diner-band[b-spijl2gq41] {
        padding: 1.5rem 2rem 4rem;
    }

    .home-diner-link[b-spijl2gq41] {
        flex-direction: row;
        align-items: center;
        padding: 1.75rem 2rem;
    }

    .home-diner-copy[b-spijl2gq41] {
        flex: 1;
    }
}

/* Desktop: a touch more breathing room. */
@media (min-width: 1280px) {
    .home-hero[b-spijl2gq41] {
        padding: 5rem 2rem 3rem;
    }

    .home-hero-title[b-spijl2gq41] {
        font-size: 3rem;
    }
}
/* /Components/Pages/PatronAccount.razor.rz.scp.css */
/* The shared include/exclude term modules, wearing this site's skin.

   The MARKUP is the patron app's — one editor, so include/exclude behaves the same wherever a guest meets it — but
   the patron app's stylesheet is not loaded here, so the account page dresses those hooks in its own tokens rather
   than importing a second design language next to the Mud fields around them.

   These live in the page's isolated stylesheet rather than app.css for two reasons: app.css is a browser-visible
   asset held to a size budget, and these rules apply to exactly one page. `::deep` is what carries them past the
   component boundary into the modules' own markup — and into MoodPreferenceCard, which is only ever rendered here.

   Mobile-first: the add row wraps on a narrow phone and every control keeps a 44px tap target. Measured headless at
   375 / 768 / 1280 — no overflow at any width, chips wrap to three rows at 375. */

.patron-account-management-grid[b-yz169e5rhn]  .term-module,
.patron-account-card-grid[b-yz169e5rhn]  .term-module {
    display: grid;
    gap: 0.5rem;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-module-label,
.patron-account-card-grid[b-yz169e5rhn]  .term-module-label {
    color: var(--tma-muted);
    font-size: 0.74rem;
    font-weight: 900;
    text-transform: uppercase;
}

.patron-account-management-grid[b-yz169e5rhn]  .ym-chip-input,
.patron-account-card-grid[b-yz169e5rhn]  .ym-chip-input {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-module-input,
.patron-account-card-grid[b-yz169e5rhn]  .term-module-input {
    background: var(--mud-palette-surface);
    border: 1px solid var(--tma-border);
    border-radius: 4px;
    color: var(--tma-ink);
    flex: 1 1 8rem;
    font: inherit;
    min-height: 44px;
    padding: 0.5rem 0.75rem;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-module-input:focus-visible,
.patron-account-card-grid[b-yz169e5rhn]  .term-module-input:focus-visible {
    border-color: var(--mud-palette-primary);
    outline: 1px solid var(--mud-palette-primary);
}

.patron-account-management-grid[b-yz169e5rhn]  .term-module-add,
.patron-account-card-grid[b-yz169e5rhn]  .term-module-add {
    background: transparent;
    border: 1px solid var(--mud-palette-primary);
    border-radius: 4px;
    color: var(--mud-palette-primary);
    cursor: pointer;
    font-weight: 700;
    min-height: 44px;
    min-width: 44px;
    padding: 0 1rem;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-chips,
.patron-account-card-grid[b-yz169e5rhn]  .term-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-chips li,
.patron-account-card-grid[b-yz169e5rhn]  .term-chips li {
    align-items: center;
    display: inline-flex;
}

/* The chip pill repeats the read-only mood term pill (.patron-mood-term-list span in app.css) so the editable and
   summary views of the same terms read as one set. */
.patron-account-management-grid[b-yz169e5rhn]  .term-chips .search-chip,
.patron-account-card-grid[b-yz169e5rhn]  .term-chips .search-chip {
    background: color-mix(in srgb, var(--mud-palette-primary) 10%, transparent);
    border: 1px solid var(--tma-border);
    border-radius: 999px;
    color: var(--tma-ink);
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1;
    padding: 0.42rem 0.58rem;
}

.patron-account-management-grid[b-yz169e5rhn]  .term-chips .search-chip.is-exclusion,
.patron-account-card-grid[b-yz169e5rhn]  .term-chips .search-chip.is-exclusion {
    background: color-mix(in srgb, var(--mud-palette-warning) 12%, transparent);
}

.patron-account-management-grid[b-yz169e5rhn]  .term-chip-remove,
.patron-account-card-grid[b-yz169e5rhn]  .term-chip-remove {
    align-items: center;
    background: none;
    border: 0;
    color: var(--tma-muted);
    cursor: pointer;
    display: inline-flex;
    font-size: 1.1rem;
    justify-content: center;
    line-height: 1;
    min-height: 44px;
    min-width: 44px;
}
/* /Components/Shared/CheckoutEmbeddedPaymentStep.razor.rz.scp.css */
.checkout-embedded-step[b-wy1h0utbfg] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
}

.checkout-embedded-heading[b-wy1h0utbfg] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.checkout-embedded-heading span[b-wy1h0utbfg] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.checkout-embedded-heading small[b-wy1h0utbfg] {
    opacity: 0.78;
}

/* The Stripe iframe is responsive; our chrome only has to give it full width and honest height,
   down to the 375px mobile-first baseline. */
.checkout-embedded-mount[b-wy1h0utbfg] {
    width: 100%;
    min-height: 480px;
}

.checkout-embedded-retry[b-wy1h0utbfg] {
    display: flex;
    justify-content: flex-start;
}
/* /Components/Shared/CheckoutVerificationStep.razor.rz.scp.css */
/* Scoped, not app.css: that stylesheet sits at its enforced public-surface byte cap, and this chrome belongs to one
   component anyway (same reasoning as CheckoutEmbeddedPaymentStep.razor.css). */
.checkout-verification-card[b-e5p0lmoelz] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
    width: 100%;
    max-width: 32rem;
    padding: 1.5rem;
}

.checkout-verification-alert[b-e5p0lmoelz] {
    width: 100%;
}

.checkout-verification-form[b-e5p0lmoelz] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 100%;
}

.checkout-verification-label[b-e5p0lmoelz] {
    font-weight: 600;
}

/* Wide letter-spacing and a large type size so a six-digit code read off a phone is unambiguous. */
.checkout-verification-input[b-e5p0lmoelz] {
    width: 100%;
    max-width: 14rem;
    padding: 0.75rem 1rem;
    font-size: 1.5rem;
    letter-spacing: 0.4rem;
    text-align: center;
    border: 1px solid currentColor;
    border-radius: 0.5rem;
    background: transparent;
    color: inherit;
}

.checkout-verification-help[b-e5p0lmoelz] {
    margin: 0;
    font-size: 0.875rem;
    opacity: 0.78;
}

.checkout-verification-submit[b-e5p0lmoelz] {
    width: fit-content;
}

.checkout-verification-resend[b-e5p0lmoelz] {
    margin: 0;
}

.checkout-verification-footnote[b-e5p0lmoelz] {
    opacity: 0.78;
}
