.client-shell .cr-page{width:min(1280px,calc(100% - 28px));margin-inline:auto}


/* ===== SOURCE: chapresto-auth.css ===== */

:root {
    --cr-primary: #ea580c;
    --cr-primary-dark: #c2410c;
    --cr-bg: #fff7ed;
    --cr-card: #ffffff;
    --cr-text: #1f2937;
    --cr-muted: #6b7280;
    --cr-line: #fed7aa;
    --cr-soft: #ffedd5;
    --cr-danger: #b91c1c;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--cr-text); background: var(--cr-bg); }
a { color: inherit; text-decoration: none; }

.cr-shell { min-height: 100vh; }
.cr-topbar {
    position: sticky; top: 0; z-index: 10;
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: .85rem clamp(1rem, 3vw, 2rem);
    background: rgba(255, 247, 237, .92); backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--cr-line);
}
.cr-brand { display: inline-flex; align-items: center; gap: .55rem; font-size: 1.05rem; }
.cr-brand span { width: 2.25rem; height: 2.25rem; display: grid; place-items: center; border-radius: 1rem; background: var(--cr-soft); }
.cr-nav { display: flex; align-items: center; gap: .9rem; font-size: .95rem; }
.cr-primary-link { color: var(--cr-primary-dark); font-weight: 700; }
.cr-link-btn { border: 0; background: transparent; cursor: pointer; font: inherit; color: var(--cr-primary-dark); }

.cr-hero { min-height: calc(100vh - 74px); display: grid; place-items: center; padding: 2rem; }
.cr-hero > div { max-width: 860px; text-align: center; }
.cr-hero h1 { font-size: clamp(2.4rem, 7vw, 5.2rem); line-height: .95; margin: 1rem 0; letter-spacing: -.06em; }
.cr-hero p { color: var(--cr-muted); font-size: clamp(1rem, 2vw, 1.25rem); max-width: 680px; margin: 0 auto 1.5rem; }
.cr-pill, .cr-badge { display: inline-flex; align-items: center; border-radius: 999px; padding: .35rem .75rem; background: var(--cr-soft); color: var(--cr-primary-dark); font-weight: 700; font-size: .82rem; }

.cr-page { padding: clamp(1rem, 3vw, 2rem); max-width: 1180px; margin: 0 auto; }
.cr-page.narrow { max-width: 780px; }
.cr-page-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.cr-page-head h1, .cr-form-card h1, .cr-auth-card h1 { margin: 0 0 .35rem; }
.cr-page-head p, .cr-muted { margin: 0; color: var(--cr-muted); }

.cr-auth-page { min-height: calc(100vh - 74px); display: grid; place-items: center; padding: 1.25rem; }
.cr-card { background: var(--cr-card); border: 1px solid var(--cr-line); border-radius: 1.4rem; box-shadow: 0 18px 45px rgba(154, 52, 18, .08); }
.cr-auth-card, .cr-form-card { width: min(100%, 520px); padding: 1.25rem; display: grid; gap: .75rem; }
.cr-form-card { width: 100%; }
.cr-input { width: 100%; min-height: 46px; border: 1px solid #fdba74; border-radius: .9rem; padding: .72rem .9rem; font: inherit; background: #fff; }
textarea.cr-input { min-height: 96px; resize: vertical; }
label { font-weight: 700; font-size: .92rem; }
.cr-check, .cr-check-row { display: flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--cr-muted); }
.cr-check-row { flex-wrap: wrap; margin: .35rem 0; }
.cr-two { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }

.cr-btn { border: 0; border-radius: .95rem; min-height: 46px; padding: .7rem 1rem; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; cursor: pointer; }
.cr-btn-primary { background: var(--cr-primary); color: white; }
.cr-btn-primary:hover { background: var(--cr-primary-dark); }
.cr-btn-light { background: var(--cr-soft); color: var(--cr-primary-dark); }
.cr-actions { display: flex; justify-content: center; gap: .8rem; flex-wrap: wrap; }
.cr-actions.compact { justify-content: flex-start; }
.cr-alert { border-radius: .9rem; padding: .75rem .9rem; color: var(--cr-danger); background: #fee2e2; border: 1px solid #fecaca; }
.cr-auth-links { display: flex; justify-content: space-between; gap: .75rem; flex-wrap: wrap; color: var(--cr-primary-dark); font-weight: 700; font-size: .9rem; }
.cr-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; }
.cr-restaurant-card { padding: 1rem; display: grid; gap: .8rem; }
.cr-restaurant-card h2 { margin: 0; }
.cr-restaurant-card p { margin: 0; color: var(--cr-muted); }
.cr-status-row { display: flex; gap: .5rem; flex-wrap: wrap; }
.cr-badge.ok { background: #dcfce7; color: #166534; }
.cr-badge.off { background: #f3f4f6; color: #4b5563; }
.cr-badge.warn { background: #fef3c7; color: #92400e; }
.cr-empty { padding: 2rem; text-align: center; }

@media (max-width: 720px) {
    .cr-topbar { align-items: flex-start; }
    .cr-nav { gap: .55rem; font-size: .86rem; flex-wrap: wrap; justify-content: flex-end; }
    .cr-page-head { align-items: flex-start; flex-direction: column; }
    .cr-two { grid-template-columns: 1fr; }
    .cr-auth-card, .cr-form-card { border-radius: 1.1rem; }
}




/* ===== SOURCE: chapresto-public.css ===== */

:root {
    --cr-bg: #f8f5ef;
    --cr-card: #ffffff;
    --cr-text: #231f20;
    --cr-muted: #746f68;
    --cr-primary: #d96b27;
    --cr-primary-dark: #a94712;
    --cr-green: #0f7a4a;
    --cr-border: rgba(35,31,32,.10);
    --cr-shadow: 0 18px 45px rgba(42, 30, 18, .10);
    --cr-radius: 22px;
}

body {
    background: var(--cr-bg);
    color: var(--cr-text);
}

.cr-shell main {
    max-width: 1180px;
    margin: 0 auto;
    padding: 22px 18px 96px;
}

.cr-topbar {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 14px 22px;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--cr-border);
}

.cr-brand,
.cr-nav a {
    text-decoration: none;
    color: var(--cr-text);
}

.cr-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 1.15rem;
}

.cr-nav {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: .95rem;
}

.cr-primary-link,
.cr-link-btn {
    border-radius: 999px;
    padding: 9px 14px;
}

.cr-primary-link {
    background: var(--cr-text);
    color: #fff !important;
}

.cr-link-btn {
    border: 0;
    background: transparent;
    cursor: pointer;
    font: inherit;
}

.cr-cart-link {
    position: relative;
}

.cr-cart-link span,
.cr-bottom-nav em {
    display: inline-grid;
    place-items: center;
    min-width: 18px;
    height: 18px;
    margin-left: 5px;
    border-radius: 999px;
    background: var(--cr-primary);
    color: #fff;
    font-size: .72rem;
    font-style: normal;
}

.cr-public-hero {
    min-height: 340px;
    display: grid;
    align-items: center;
    padding: 42px;
    border-radius: 34px;
    background:
        radial-gradient(circle at right top, rgba(217,107,39,.24), transparent 32%),
        linear-gradient(135deg, #fff7ea, #fff);
    box-shadow: var(--cr-shadow);
}

.cr-kicker,
.cr-section-title p,
.cr-page-head p {
    margin: 0 0 8px;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .78rem;
    color: var(--cr-primary-dark);
    font-weight: 800;
}

.cr-public-hero h1,
.cr-page-head h1 {
    max-width: 720px;
    margin: 0;
    font-size: clamp(2rem, 5vw, 4.4rem);
    line-height: .98;
}

.cr-public-hero p:not(.cr-kicker) {
    max-width: 620px;
    color: var(--cr-muted);
    font-size: 1.08rem;
}

.cr-searchbar,
.cr-filter-panel {
    display: flex;
    gap: 10px;
    align-items: center;
}

.cr-searchbar {
    max-width: 760px;
    margin-top: 24px;
    padding: 8px;
    border-radius: 999px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(0,0,0,.08);
}

.cr-searchbar input,
.cr-filter-panel input,
.cr-filter-panel select,
.cr-input {
    width: 100%;
    min-height: 46px;
    border: 1px solid var(--cr-border);
    border-radius: 14px;
    padding: 0 14px;
    background: #fff;
    color: var(--cr-text);
    outline: none;
}

.cr-searchbar input {
    border: 0;
    min-height: 48px;
    font-size: 1rem;
}

.cr-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 18px;
    border: 0;
    border-radius: 14px;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
}

.cr-btn-primary {
    background: var(--cr-primary);
    color: #fff;
}

.cr-btn-light {
    background: #fff;
    color: var(--cr-text);
    border: 1px solid var(--cr-border);
}

.cr-btn-full {
    width: 100%;
}

.cr-btn:disabled,
.cr-add-btn:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.cr-quick-filters {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding: 18px 2px 4px;
}

.cr-quick-filters button {
    white-space: nowrap;
    min-height: 40px;
    border: 1px solid var(--cr-border);
    border-radius: 999px;
    padding: 0 16px;
    background: #fff;
    cursor: pointer;
}

.cr-quick-filters button.active {
    background: var(--cr-text);
    color: #fff;
}

.cr-section {
    margin-top: 34px;
}

.cr-section-title,
.cr-page-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}

.cr-section-title h2 {
    margin: 0;
    font-size: 1.75rem;
}

.cr-section-title a {
    color: var(--cr-primary-dark);
    font-weight: 800;
    text-decoration: none;
}

.cr-restaurant-grid,
.cr-menu-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.cr-page-grid {
    margin-top: 18px;
}

.cr-rest-card,
.cr-menu-card,
.cr-form-card,
.cr-cart-total,
.cr-order-status,
.cr-detail-info > div {
    background: var(--cr-card);
    border: 1px solid var(--cr-border);
    border-radius: var(--cr-radius);
    box-shadow: var(--cr-shadow);
}

.cr-rest-card {
    overflow: hidden;
    cursor: pointer;
}

.cr-rest-cover,
.cr-menu-img,
.cr-row-img,
.cr-detail-cover {
    background: linear-gradient(135deg, #f4d7b7, #f7eee2);
    background-size: cover;
    background-position: center;
}

.cr-rest-cover {
    position: relative;
    height: 140px;
}

.cr-badge {
    position: absolute;
    top: 12px;
    left: 12px;
    border-radius: 999px;
    padding: 7px 10px;
    background: rgba(35,31,32,.88);
    color: #fff;
    font-size: .75rem;
    font-weight: 800;
}

.cr-rest-body {
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: 12px;
    padding: 14px;
}

.cr-rest-logo,
.cr-detail-logo {
    display: grid;
    place-items: center;
    border-radius: 16px;
    background: var(--cr-green);
    color: #fff;
    font-weight: 900;
}

.cr-rest-logo {
    width: 52px;
    height: 52px;
}

.cr-rest-body h3,
.cr-menu-body h3,
.cr-cart-row h3,
.cr-menu-row h4 {
    margin: 0 0 4px;
}

.cr-rest-body p,
.cr-menu-body p,
.cr-menu-body small,
.cr-menu-row p,
.cr-cart-row p {
    margin: 0;
    color: var(--cr-muted);
}

.cr-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
    font-size: .82rem;
}

.cr-meta-row span {
    border-radius: 999px;
    padding: 5px 9px;
    background: rgba(217,107,39,.10);
    color: #6c3817;
    font-weight: 700;
}

.cr-menu-card {
    overflow: hidden;
}

.cr-menu-img {
    position: relative;
    height: 160px;
}

.cr-menu-body {
    padding: 14px;
}

.cr-filter-panel {
    position: sticky;
    top: 68px;
    z-index: 10;
    flex-wrap: wrap;
    padding: 14px;
    margin-bottom: 20px;
    border-radius: 22px;
    background: rgba(255,255,255,.94);
    box-shadow: var(--cr-shadow);
}

.cr-filter-panel input,
.cr-filter-panel select {
    flex: 1 1 160px;
}

.cr-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 12px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid var(--cr-border);
    white-space: nowrap;
}

.cr-loading,
.cr-empty {
    margin: 30px 0;
    padding: 30px;
    border-radius: var(--cr-radius);
    background: #fff;
    box-shadow: var(--cr-shadow);
    text-align: center;
}

.cr-detail-cover {
    min-height: 290px;
    border-radius: 34px;
    position: relative;
    box-shadow: var(--cr-shadow);
}

.cr-back {
    position: absolute;
    top: 18px;
    left: 18px;
    border: 0;
    border-radius: 999px;
    padding: 10px 14px;
    background: rgba(255,255,255,.92);
    cursor: pointer;
}

.cr-detail-head {
    display: grid;
    grid-template-columns: 90px 1fr;
    gap: 18px;
    margin: -42px 22px 0;
    padding: 20px;
    border-radius: 26px;
    background: #fff;
    position: relative;
    box-shadow: var(--cr-shadow);
}

.cr-detail-logo {
    width: 90px;
    height: 90px;
    font-size: 1.6rem;
}

.cr-detail-head h1 {
    margin: 4px 0;
    font-size: clamp(1.8rem, 4vw, 3rem);
}

.cr-detail-actions,
.cr-detail-info {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin: 20px 0;
}

.cr-detail-info {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
}

.cr-detail-info > div {
    padding: 16px;
}

.cr-menu-list {
    display: grid;
    gap: 12px;
}

.cr-menu-group {
    margin: 18px 0 2px;
}

.cr-menu-row,
.cr-cart-row {
    display: grid;
    grid-template-columns: 82px 1fr auto;
    gap: 14px;
    align-items: center;
    padding: 12px;
    border-radius: 20px;
    background: #fff;
    border: 1px solid var(--cr-border);
}

.cr-row-img {
    width: 82px;
    height: 82px;
    border-radius: 18px;
}

.cr-add-btn {
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 14px;
    background: var(--cr-primary);
    color: #fff;
    font-size: 1.5rem;
    cursor: pointer;
}

.cr-floating-cart {
    position: fixed;
    z-index: 30;
    left: 50%;
    bottom: 22px;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 18px;
    min-width: min(420px, calc(100vw - 28px));
    justify-content: space-between;
    padding: 14px 18px;
    border-radius: 999px;
    background: var(--cr-text);
    color: #fff;
    text-decoration: none;
    box-shadow: 0 16px 38px rgba(0,0,0,.25);
}

.cr-cart-wrap,
.cr-checkout {
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 18px;
    align-items: start;
}

.cr-cart-list,
.cr-form-card {
    display: grid;
    gap: 12px;
}

.cr-form-card,
.cr-cart-total,
.cr-order-status {
    padding: 18px;
}

.cr-form-card label {
    font-weight: 800;
    margin-top: 6px;
}

textarea.cr-input {
    min-height: 96px;
    padding-top: 12px;
}

.cr-cart-row {
    grid-template-columns: 1fr auto auto;
}

.cr-cart-row input {
    width: 100%;
    margin-top: 8px;
    min-height: 38px;
    border: 1px solid var(--cr-border);
    border-radius: 12px;
    padding: 0 10px;
}

.cr-qty {
    display: flex;
    align-items: center;
    gap: 10px;
    border: 1px solid var(--cr-border);
    border-radius: 999px;
    padding: 4px;
}

.cr-qty button {
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 50%;
    background: var(--cr-bg);
    cursor: pointer;
}

.cr-cart-total {
    position: sticky;
    top: 92px;
    display: grid;
    gap: 12px;
}

.cr-cart-total div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
}

.cr-error {
    padding: 12px;
    border-radius: 14px;
    background: #fff0f0;
    color: #a51818;
}

.cr-status-steps {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 16px;
}

.cr-status-steps span {
    padding: 9px 12px;
    border-radius: 999px;
    background: #eee;
    color: var(--cr-muted);
    font-weight: 800;
}

.cr-status-steps span.active {
    background: var(--cr-green);
    color: #fff;
}

.cr-bottom-nav {
    display: none;
}

@media (max-width: 980px) {
    .cr-restaurant-grid,
    .cr-menu-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cr-cart-wrap,
    .cr-checkout,
    .cr-detail-info {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 720px) {
    .cr-shell main {
        padding: 14px 12px 92px;
    }

    .cr-topbar {
        padding: 12px 14px;
    }

    .cr-nav {
        display: none;
    }

    .cr-public-hero {
        min-height: 300px;
        padding: 26px;
        border-radius: 26px;
    }

    .cr-searchbar {
        border-radius: 22px;
        flex-direction: column;
        align-items: stretch;
    }

    .cr-section-title,
    .cr-page-head {
        align-items: start;
        flex-direction: column;
    }

    .cr-restaurant-grid,
    .cr-menu-grid {
        grid-template-columns: 1fr;
    }

    .cr-filter-panel {
        top: 57px;
        align-items: stretch;
        flex-direction: column;
    }

    .cr-detail-cover {
        min-height: 220px;
        border-radius: 24px;
    }

    .cr-detail-head {
        grid-template-columns: 64px 1fr;
        margin: -30px 10px 0;
        padding: 14px;
    }

    .cr-detail-logo {
        width: 64px;
        height: 64px;
        font-size: 1.2rem;
    }

    .cr-menu-row {
        grid-template-columns: 68px 1fr auto;
        gap: 10px;
    }

    .cr-row-img {
        width: 68px;
        height: 68px;
    }

    .cr-cart-row {
        grid-template-columns: 1fr;
    }

    .cr-cart-total {
        position: static;
    }

    .cr-bottom-nav {
        position: fixed;
        z-index: 25;
        left: 0;
        right: 0;
        bottom: 0;
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 2px;
        padding: 8px 8px calc(8px + env(safe-area-inset-bottom));
        border-top: 1px solid var(--cr-border);
        background: rgba(255,255,255,.95);
        backdrop-filter: blur(16px);
    }

    .cr-bottom-nav a {
        position: relative;
        display: grid;
        place-items: center;
        gap: 2px;
        color: var(--cr-text);
        text-decoration: none;
        font-size: 1.05rem;
    }

    .cr-bottom-nav span {
        font-size: .72rem;
    }

    .cr-bottom-nav em {
        position: absolute;
        top: 0;
        right: 24%;
    }

    .cr-floating-cart {
        bottom: 76px;
    }
}




/* ===== SOURCE: chapresto-public-layout.css ===== */

﻿/* Place this file after chapresto-app.css in App.razor */

:root {
    --cr-public-max: 1180px;
}

.cr-page-head,
.cr-filter-panel,
.cr-page-grid,
.cr-empty,
.cr-cart-wrap,
.cr-order-status,
.cr-loading {
    width: min(100% - 2rem, var(--cr-public-max));
    margin-left: auto;
    margin-right: auto;
}

.cr-page-head {
    padding-top: clamp(3rem, 7vw, 4.8rem);
    margin-bottom: 1.6rem;
}

    .cr-page-head > div {
        max-width: 820px;
    }

    .cr-page-head p {
        margin: 0 0 .5rem;
        color: var(--cr-primary-dark, #a74113);
        font-size: .78rem;
        font-weight: 950;
        letter-spacing: .18em;
        text-transform: uppercase;
    }

    .cr-page-head h1 {
        margin: 0;
        color: var(--cr-text, #201b17);
        font-size: clamp(2.35rem, 5vw, 3.55rem);
        line-height: 1.02;
        letter-spacing: -.055em;
    }

.cr-filter-panel {
    display: grid;
    grid-template-columns: minmax(220px, 1.4fr) repeat(4, minmax(130px, auto)) auto;
    gap: .65rem;
    align-items: center;
    margin-bottom: 1.35rem;
    padding: .75rem;
    background: rgba(255, 255, 255, .92);
    border: 1px solid var(--cr-border, #eee3d7);
    border-radius: 22px;
    box-shadow: var(--cr-shadow, 0 18px 45px rgba(49, 37, 26, .08));
}

    .cr-filter-panel input,
    .cr-filter-panel select {
        width: 100%;
        min-height: 44px;
        border: 1px solid var(--cr-border, #eee3d7);
        border-radius: 13px;
        background: #fff;
        color: var(--cr-text, #201b17);
        padding: .65rem .78rem;
        outline: none;
        font-weight: 700;
    }

        .cr-filter-panel input:focus,
        .cr-filter-panel select:focus {
            border-color: #efa15f;
            box-shadow: 0 0 0 4px rgba(239, 108, 0, .10);
        }

    .cr-filter-panel .cr-check {
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: .45rem;
        padding: .5rem .75rem;
        border: 1px solid var(--cr-border, #eee3d7);
        border-radius: 999px;
        background: #fff;
        color: var(--cr-text, #201b17);
        font-size: .92rem;
        font-weight: 900;
        white-space: nowrap;
    }

        .cr-filter-panel .cr-check input {
            width: 16px;
            min-height: 16px;
            height: 16px;
            padding: 0;
            accent-color: var(--cr-primary, #d85b1f);
        }

    .cr-filter-panel .cr-btn {
        min-height: 44px;
        padding-left: 1.35rem;
        padding-right: 1.35rem;
    }

.cr-page-grid {
    display: grid;
    gap: 1.1rem;
    align-items: stretch;
    margin-top: 0;
    margin-bottom: 4rem;
}

.cr-restaurant-grid,
.cr-menu-grid {
    grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
}

.cr-rest-card,
.cr-menu-card {
    min-width: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--cr-border, #eee3d7);
    border-radius: 24px;
    box-shadow: var(--cr-shadow-soft, 0 10px 25px rgba(49, 37, 26, .06));
    transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

    .cr-rest-card:hover,
    .cr-menu-card:hover {
        transform: translateY(-2px);
        border-color: var(--cr-border-strong, #f2cfaa);
        box-shadow: var(--cr-shadow, 0 18px 45px rgba(49, 37, 26, .08));
    }

.cr-rest-card {
    cursor: pointer;
}

.cr-rest-cover,
.cr-menu-img {
    width: 100%;
    background-color: #f8e7d1;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
}

.cr-rest-cover {
    position: relative;
    height: 140px;
}

.cr-menu-img {
    height: 170px;
}

.cr-rest-body,
.cr-menu-body {
    padding: 1rem;
}

.cr-rest-body {
    display: flex;
    gap: .8rem;
    align-items: flex-start;
}

.cr-rest-logo {
    width: 52px;
    height: 52px;
    border-radius: 15px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    background: #078443;
    color: #fff;
    font-weight: 950;
}

.cr-rest-body h3,
.cr-menu-body h3 {
    margin: 0 0 .35rem;
    color: var(--cr-text, #201b17);
    font-size: 1.12rem;
    line-height: 1.15;
    letter-spacing: -.025em;
}

.cr-rest-body p,
.cr-menu-body p,
.cr-menu-body small {
    color: var(--cr-muted, #766b61);
}

.cr-rest-body p,
.cr-menu-body p {
    margin: 0 0 .55rem;
}

.cr-menu-body small {
    min-height: 40px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.35;
}

.cr-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    align-items: center;
    margin: .7rem 0;
}

    .cr-meta-row span {
        display: inline-flex;
        align-items: center;
        min-height: 28px;
        padding: .32rem .58rem;
        border-radius: 999px;
        background: var(--cr-primary-soft, #fff1e7);
        color: #5b351f;
        font-size: .82rem;
        font-weight: 900;
    }

.cr-badge {
    position: absolute;
    top: .75rem;
    left: .75rem;
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: .3rem .6rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, .92);
    color: var(--cr-primary-dark, #a74113);
    font-size: .78rem;
    font-weight: 950;
}

.cr-btn-full {
    width: 100%;
}

.cr-empty,
.cr-loading {
    display: grid;
    place-items: center;
    text-align: center;
    min-height: 190px;
    margin-top: 1rem;
    padding: 2rem;
    background: #fff;
    border: 1px solid var(--cr-border, #eee3d7);
    border-radius: 24px;
    box-shadow: var(--cr-shadow-soft, 0 10px 25px rgba(49, 37, 26, .06));
    color: var(--cr-muted, #766b61);
    font-weight: 750;
}

    .cr-empty h3,
    .cr-empty h2 {
        margin: 0 0 .55rem;
        color: var(--cr-text, #201b17);
    }

    .cr-empty p {
        margin: 0 0 .75rem;
    }

.cr-cart-wrap {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 1.1rem;
    align-items: start;
    margin-bottom: 4rem;
}

.cr-cart-list,
.cr-cart-total,
.cr-order-status {
    background: #fff;
    border: 1px solid var(--cr-border, #eee3d7);
    border-radius: 24px;
    box-shadow: var(--cr-shadow-soft, 0 10px 25px rgba(49, 37, 26, .06));
    padding: 1.15rem;
}

    .cr-cart-list h2,
    .cr-cart-total h3,
    .cr-order-status h2 {
        margin: 0 0 1rem;
        color: var(--cr-text, #201b17);
        letter-spacing: -.025em;
    }

.cr-cart-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 1rem;
    align-items: center;
    padding: 1rem 0;
    border-top: 1px solid var(--cr-border, #eee3d7);
}

    .cr-cart-row:first-of-type {
        border-top: 0;
    }

    .cr-cart-row h3 {
        margin: 0 0 .25rem;
        font-size: 1.02rem;
    }

    .cr-cart-row p {
        margin: 0 0 .5rem;
        color: var(--cr-muted, #766b61);
    }

    .cr-cart-row input {
        width: 100%;
        min-height: 42px;
        border: 1px solid var(--cr-border, #eee3d7);
        border-radius: 12px;
        padding: .55rem .7rem;
    }

.cr-qty {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .35rem;
    background: var(--cr-surface-soft, #fffaf4);
    border: 1px solid var(--cr-border, #eee3d7);
    border-radius: 999px;
}

    .cr-qty button {
        width: 32px;
        height: 32px;
        border: 0;
        border-radius: 999px;
        background: #fff;
        color: var(--cr-text, #201b17);
        font-weight: 950;
    }

.cr-cart-total {
    position: sticky;
    top: calc(var(--cr-header-height, 76px) + 1rem);
    display: grid;
    gap: .75rem;
}

    .cr-cart-total div {
        display: flex;
        justify-content: space-between;
        gap: .75rem;
    }

    .cr-cart-total small,
    .cr-cart-total p {
        color: var(--cr-muted, #766b61);
    }

.cr-order-status {
    margin-bottom: 1.1rem;
}

.cr-status-steps {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: .45rem;
    margin-top: 1rem;
}

    .cr-status-steps span {
        min-height: 42px;
        display: grid;
        place-items: center;
        border-radius: 999px;
        background: #f3eee8;
        color: #7a6d62;
        font-size: .85rem;
        font-weight: 900;
        text-align: center;
    }

        .cr-status-steps span.active {
            background: var(--cr-success-soft, #e9f8ee);
            color: var(--cr-success, #147a39);
        }

.cr-floating-cart {
    position: fixed;
    right: 1.1rem;
    bottom: 1.1rem;
    z-index: 30;
    display: inline-flex;
    align-items: center;
    gap: .85rem;
    padding: .85rem 1rem;
    border-radius: 999px;
    background: var(--cr-text, #201b17);
    color: #fff;
    text-decoration: none;
    box-shadow: 0 18px 38px rgba(32, 27, 23, .25);
    font-weight: 900;
}

@media (max-width: 1100px) {
    .cr-filter-panel {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

        .cr-filter-panel .cr-btn {
            grid-column: 1 / -1;
        }

    .cr-cart-wrap {
        grid-template-columns: 1fr;
    }

    .cr-cart-total {
        position: static;
    }
}

@media (max-width: 720px) {
    .cr-page-head,
    .cr-filter-panel,
    .cr-page-grid,
    .cr-empty,
    .cr-cart-wrap,
    .cr-order-status,
    .cr-loading {
        width: min(100% - 1rem, var(--cr-public-max));
    }

    .cr-page-head {
        padding-top: 1.8rem;
    }

    .cr-filter-panel {
        grid-template-columns: 1fr;
        border-radius: 18px;
    }

    .cr-restaurant-grid,
    .cr-menu-grid {
        grid-template-columns: 1fr;
    }

    .cr-cart-row {
        grid-template-columns: 1fr;
    }

    .cr-status-steps {
        grid-template-columns: 1fr 1fr;
    }
}




/* ===== SOURCE: chapresto-home-portal-final.css ===== */

﻿/* =========================================================
   ChapResto Home Portal Final
   Home is only a discovery gateway.
   Restaurant page handles order/cart/rating flow.
   ========================================================= */

.cr-home-clickable-card,
.cr-home-menu-link {
    color: inherit;
    text-decoration: none;
}

.cr-home-clickable-card {
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

    .cr-home-clickable-card:hover {
        transform: translateY(-3px);
        box-shadow: 0 18px 42px rgba(45, 30, 18, .12);
        border-color: rgba(226, 98, 34, .24);
    }

.cr-home-restaurant-grid,
.cr-home-menu-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 1.15rem !important;
    align-items: stretch;
}

.cr-home-menu-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.cr-home-menu-link {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.cr-home-menu-card .cr-menu-img {
    height: 190px;
    border-radius: 22px 22px 0 0;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    background-color: #efe3d3;
}

.cr-home-menu-card .cr-menu-body {
    flex: 1;
}

.cr-home-menu-desc {
    display: -webkit-box;
    min-height: 42px;
    color: #6f655d;
    font-size: .95rem;
    line-height: 1.35;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: .35rem 0 .65rem;
}

.cr-home-menu-actions {
    padding: 0 1rem 1rem;
}

    .cr-home-menu-actions .cr-btn {
        min-height: 46px;
    }

.cr-public-hero h1,
.cr-public-hero p,
.cr-public-hero .cr-kicker {
    text-wrap: balance;
}

@media (max-width: 1280px) {
    .cr-home-restaurant-grid,
    .cr-home-menu-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }
}

@media (max-width: 980px) {
    .cr-home-restaurant-grid,
    .cr-home-menu-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}

@media (max-width: 640px) {
    .cr-home-restaurant-grid,
    .cr-home-menu-grid {
        grid-template-columns: 1fr !important;
        gap: 1rem !important;
    }

    .cr-home-menu-card .cr-menu-img {
        height: 210px;
    }

    .cr-section-title {
        align-items: flex-start;
        gap: .65rem;
    }

        .cr-section-title a {
            align-self: flex-start;
        }
}

/* =========================================================
   Portal final cleanup: no oversized result count badge
   ========================================================= */
.cr-result-count {
    display: none !important;
}




/* ===== SOURCE: chapresto-restaurants-final.css ===== */

﻿/* =========================================================
   ChapResto Restaurants Directory Final
   Portal page only: user opens restaurant page to order.
   ========================================================= */

.cr-restaurants-head span {
    display: block;
    max-width: 860px;
    margin-top: .75rem;
    color: #6f665e;
    font-size: 1.03rem;
    line-height: 1.55;
    font-weight: 650;
}

.cr-restaurants-filter {
    display: grid !important;
    grid-template-columns: minmax(180px, 1fr) minmax(180px, .9fr) minmax(140px, .75fr) minmax(140px, .75fr) auto auto auto;
    align-items: center;
    gap: .65rem;
}

    .cr-restaurants-filter input,
    .cr-restaurants-filter select {
        min-height: 48px;
    }


.cr-restaurants-directory-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 1.15rem !important;
    align-items: stretch;
}

.cr-restaurants-clickable-card {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

    .cr-restaurants-clickable-card:hover {
        transform: translateY(-3px);
        box-shadow: 0 18px 42px rgba(45, 30, 18, .12);
        border-color: rgba(226, 98, 34, .24);
    }

    .cr-restaurants-clickable-card .cr-rest-cover {
        height: 170px;
        background-position: center;
        background-size: cover;
        background-repeat: no-repeat;
        background-color: #efe3d3;
    }

.cr-rest-card-action {
    margin-top: .8rem;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    color: #df6424;
    font-weight: 950;
    font-size: .92rem;
}

    .cr-rest-card-action i {
        transition: transform .18s ease;
    }

.cr-restaurants-clickable-card:hover .cr-rest-card-action i {
    transform: translateX(3px);
}

@media (max-width: 1280px) {
    .cr-restaurants-directory-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }

    .cr-restaurants-filter {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .cr-restaurants-directory-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    .cr-restaurants-filter {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

        .cr-restaurants-filter .cr-check,
        .cr-restaurants-filter .cr-btn {
            min-height: 48px;
        }
}

@media (max-width: 640px) {
    .cr-restaurants-directory-grid {
        grid-template-columns: 1fr !important;
        gap: 1rem !important;
    }

    .cr-restaurants-filter {
        grid-template-columns: 1fr !important;
        padding: 1rem;
    }

    .cr-restaurants-clickable-card .cr-rest-cover {
        height: 210px;
    }

    .cr-section-title {
        align-items: flex-start;
    }
}

/* =========================================================
   Portal final cleanup: no oversized result count badge
   ========================================================= */
.cr-result-count {
    display: none !important;
}




/* ===== SOURCE: chapresto-menu-search-final.css ===== */

﻿/* =========================================================
   ChapResto Menu Search Final
   Portal page only: food opens restaurant page + popup.
   No ordering directly from /menu.
   ========================================================= */

.cr-menu-search-head span {
    display: block;
    max-width: 900px;
    margin-top: .75rem;
    color: #6f665e;
    font-size: 1.03rem;
    line-height: 1.55;
    font-weight: 650;
}

.cr-menu-search-filter {
    display: grid !important;
    grid-template-columns: minmax(200px, 1fr) auto auto auto minmax(130px, .65fr) minmax(130px, .65fr) auto auto;
    align-items: center;
    gap: .65rem;
}

    .cr-menu-search-filter input {
        min-height: 48px;
    }


.cr-menu-search-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 1.15rem !important;
    align-items: stretch;
}

.cr-menu-search-card {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

    .cr-menu-search-card:hover {
        transform: translateY(-3px);
        box-shadow: 0 18px 42px rgba(45, 30, 18, .12);
        border-color: rgba(226, 98, 34, .24);
    }

.cr-menu-search-link {
    color: inherit;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.cr-menu-search-card .cr-menu-img {
    height: 190px;
    position: relative;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    background-color: #efe3d3;
}

.cr-menu-search-card .cr-menu-body {
    flex: 1;
}

    .cr-menu-search-card .cr-menu-body small {
        display: -webkit-box;
        min-height: 42px;
        color: #6f655d;
        font-size: .95rem;
        line-height: 1.35;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin: .35rem 0 .65rem;
    }

.cr-menu-search-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: .55rem;
    padding: 0 1rem 1rem;
}

    .cr-menu-search-actions .cr-btn {
        min-height: 44px;
    }

.cr-badge-muted {
    background: rgba(35, 31, 28, .72) !important;
    color: #fff !important;
}

@media (max-width: 1280px) {
    .cr-menu-search-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }

    .cr-menu-search-filter {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .cr-menu-search-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    .cr-menu-search-filter {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

        .cr-menu-search-filter .cr-check,
        .cr-menu-search-filter .cr-btn {
            min-height: 48px;
        }
}

@media (max-width: 640px) {
    .cr-menu-search-grid {
        grid-template-columns: 1fr !important;
        gap: 1rem !important;
    }

    .cr-menu-search-filter {
        grid-template-columns: 1fr !important;
        padding: 1rem;
    }

    .cr-menu-search-card .cr-menu-img {
        height: 220px;
    }

    .cr-section-title {
        align-items: flex-start;
    }
}

/* =========================================================
   Portal final cleanup: no oversized result count badge
   ========================================================= */
.cr-result-count {
    display: none !important;
}




/* ===== SOURCE: chapresto-menu-card-image-fit.css ===== */

﻿/* =========================================================
   ChapResto Menu Card Image - Final Clean Fill
   Use this for public food cards.
   Goal:
   - no white side gaps
   - image fills the card top
   - clean commercial display
   - small premium hover zoom
   ========================================================= */

/* Main image containers */
.rs-menu-gallery-image,
.rs-post-img,
.cr-menu-img {
    position: relative !important;
    overflow: hidden !important;
    isolation: isolate !important;
    background-color: #efe3d3 !important;
    background-position: center center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

    /* Real visible image layer: fills card */
    .rs-menu-gallery-image::before,
    .rs-post-img::before,
    .cr-menu-img::before {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        background-image: inherit;
        background-position: center center;
        background-size: cover;
        background-repeat: no-repeat;
        transform: scale(1);
        transition: transform .22s ease, filter .22s ease;
        pointer-events: none;
    }

/* Small hover zoom */
.rs-menu-gallery-card:hover .rs-menu-gallery-image::before,
.rs-recommended-menu-card:hover .rs-menu-gallery-image::before,
.rs-post-card:hover .rs-post-img::before,
.cr-menu-card:hover .cr-menu-img::before {
    transform: scale(1.045);
    filter: saturate(1.05) contrast(1.02);
}

/* Soft overlay */
.rs-menu-gallery-image::after,
.rs-post-img::after,
.cr-menu-img::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(180deg, rgba(0, 0, 0, .01), rgba(0, 0, 0, .07));
    pointer-events: none;
}

/* Fixed image heights */
.rs-menu-gallery-image,
.cr-menu-img {
    height: 170px !important;
    border-radius: 20px 20px 0 0 !important;
}

.rs-recommended-menu-card .rs-menu-gallery-image {
    height: 170px !important;
    border-radius: 20px 20px 0 0 !important;
}

.rs-post-img {
    height: 220px !important;
    border-radius: 20px 20px 0 0 !important;
}

/* Keep badges above image layers */
.rs-menu-discount,
.rs-publication-label,
.rs-publication-discount,
.cr-badge {
    position: absolute;
    z-index: 5 !important;
}

/* No-image fallback */
.rs-menu-gallery-image:not([style*="background-image"]),
.rs-post-img:not([style*="background-image"]),
.cr-menu-img:not([style*="background-image"]) {
    background-image: radial-gradient(circle at 30% 22%, rgba(224, 95, 32, .18), transparent 28%), linear-gradient(135deg, #f8e5d2, #fff8f0) !important;
}

    .rs-menu-gallery-image:not([style*="background-image"])::before,
    .rs-post-img:not([style*="background-image"])::before,
    .cr-menu-img:not([style*="background-image"])::before {
        display: none;
    }

/* Card cleanup */
.rs-menu-gallery-card,
.rs-recommended-menu-card,
.cr-menu-card,
.rs-post-card {
    overflow: hidden !important;
}

/* Keep card body above image area if needed */
.rs-menu-gallery-body,
.cr-menu-card-body,
.rs-post-body {
    position: relative;
    z-index: 3;
}

/* Mobile */
@media (max-width: 640px) {
    .rs-menu-gallery-image,
    .rs-recommended-menu-card .rs-menu-gallery-image,
    .cr-menu-img {
        height: 155px !important;
    }

    .rs-post-img {
        height: 190px !important;
    }
}


