:root {
    --bg: #ffffff;
    --bg2: #ffffff;
    --bg3: #f9fafb;
    --bg4: #f3f4f6;
    --border: #e5e7eb;
    --border2: #d1d5db;
    --text: #111827;
    --text2: #6b7280;
    --text3: #9ca3af;
    --accent: #006233;
    --accent-red: #d21034;
    --accent-dark: #004d28;
    --blue: #6366f1;
    --green: #22c55e;
    --red: #ef4444;
    --purple: #a855f7;
}

body { font-family: 'Plus Jakarta Sans', sans-serif; color: var(--text); }
.font-sora { font-family: 'Sora', sans-serif; }
.font-jakarta { font-family: 'Plus Jakarta Sans', sans-serif; }

/* ── Fond granuleux global (style Stripe) ── */
.scani-body {
    position: relative;
    overflow-x: hidden;
    min-height: 100vh;
    background: transparent;
}

.scani-bg {
    position: fixed;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
    background: linear-gradient(165deg, #f8fafc 0%, #f1f5f9 35%, #eef2ff 70%, #faf5ff 100%);
}

.scani-bg-blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    opacity: 0.55;
    animation: scaniBlobFloat 18s ease-in-out infinite;
}
.scani-bg-blob-1 {
    width: 520px; height: 520px;
    top: -12%; right: -8%;
    background: radial-gradient(circle, rgba(0,98,51,0.4) 0%, rgba(0,98,51,0) 70%);
}
.scani-bg-blob-2 {
    width: 480px; height: 480px;
    bottom: -15%; left: -10%;
    background: radial-gradient(circle, rgba(210,16,52,0.28) 0%, rgba(210,16,52,0) 70%);
    animation-delay: -6s;
}
.scani-bg-blob-3 {
    width: 360px; height: 360px;
    top: 40%; left: 35%;
    background: radial-gradient(circle, rgba(168,85,247,0.28) 0%, rgba(168,85,247,0) 70%);
    animation-delay: -12s;
}

.scani-bg-grain {
    position: absolute;
    inset: 0;
    opacity: 0.35;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-repeat: repeat;
    background-size: 180px 180px;
    mix-blend-mode: overlay;
}

@keyframes scaniBlobFloat {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(2%, -2%) scale(1.04); }
    66% { transform: translate(-2%, 1%) scale(0.98); }
}

/* Alias auth */
.auth-body { position: relative; overflow-x: hidden; min-height: 100vh; background: transparent; }
.auth-body-centered {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 1.5rem 1rem 2.5rem;
}
.auth-body-centered .auth-page {
    width: 100%;
    position: relative;
    z-index: 1;
    margin: 0 auto;
}
.auth-page-narrow { max-width: 28rem; }
.auth-page-wide { max-width: 42rem; }

/* Panneaux verre sur le dégradé */
.glass-panel {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.85);
    box-shadow: 0 0 0 1px rgba(0,0,0,0.03), 0 8px 32px rgba(15,23,42,0.06);
}

/* ── Auth ── */
.auth-page { width: 100%; position: relative; z-index: 1; }
.auth-brand { position: relative; }
.auth-brand a { color: #006233; text-decoration: none; }
.auth-brand a:hover { color: #004d28; }

.auth-card {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 20px;
    padding: 2rem;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.03), 0 8px 40px rgba(15,23,42,0.08), 0 2px 8px rgba(15,23,42,0.04);
}
.auth-section {
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #f3f4f6;
}
.auth-section:last-of-type { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.auth-section-title {
    font-family: 'Sora', sans-serif;
    font-size: 0.9375rem;
    font-weight: 700;
    color: #111827;
    margin-bottom: 1rem;
}
.auth-form-group { margin-bottom: 1rem; }
.auth-form-group:last-child { margin-bottom: 0; }
.auth-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
@media (min-width: 640px) {
    .auth-grid-2 { grid-template-columns: 1fr 1fr; }
    .auth-grid-span-2 { grid-column: span 2; }
}
.auth-field-label {
    display: block;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 0.375rem;
}
.auth-field,
.form-input,
.form-select,
.form-textarea {
    display: block;
    width: 100%;
    box-sizing: border-box;
    background: #ffffff;
    border: 1.5px solid #d1d5db;
    border-radius: 10px;
    padding: 0.6875rem 0.875rem;
    font-size: 0.9375rem;
    font-family: inherit;
    color: #111827;
    transition: border-color 0.15s, box-shadow 0.15s;
    -webkit-text-fill-color: #111827;
}
.auth-field-area,
.form-textarea { resize: vertical; min-height: 5rem; }
.auth-field::placeholder,
.form-input::placeholder,
.form-textarea::placeholder { color: #9ca3af; opacity: 1; }
.auth-field:focus,
.form-input:focus,
.form-select:focus,
.form-textarea:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(0, 98, 51, 0.15);
}
.auth-field[type="color"] { padding: 0.25rem; height: 2.75rem; cursor: pointer; }
.auth-field[type="file"] {
    padding: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    color: #6b7280;
}
.auth-checkbox {
    display: flex; align-items: flex-start; gap: 0.625rem;
    font-size: 0.875rem; color: #6b7280; cursor: pointer;
}
.auth-checkbox input { margin-top: 0.2rem; accent-color: var(--accent); }
.auth-submit {
    width: 100%; padding: 0.8125rem 1rem;
    margin-top: 0.5rem;
    font-size: 1rem;
}
.auth-footer-link {
    text-align: center; font-size: 0.875rem; color: #6b7280; margin-top: 1.25rem;
}
.auth-footer-link a { color: var(--accent); font-weight: 600; text-decoration: none; }
.auth-footer-link a:hover { text-decoration: underline; }
.auth-hint {
    text-align: center; font-size: 0.75rem; color: #9ca3af; margin-top: 1.5rem;
}

/* ── Auth split (connexion) ── */
.auth-body-split {
    min-height: 100vh;
    display: block;
    padding: 0;
}
.auth-split {
    position: relative;
    z-index: 1;
    display: grid;
    min-height: 100vh;
}
@media (min-width: 900px) {
    .auth-split { grid-template-columns: 1fr 1fr; }
}
.auth-split-panel {
    display: none;
    background: linear-gradient(165deg, #f0fdf4 0%, #ecfdf5 30%, #f0fdfa 55%, #f8fafc 80%, #ffffff 100%);
    color: #0f172a;
    padding: 2.5rem;
    position: relative;
    overflow: hidden;
}
@media (min-width: 900px) {
    .auth-split-panel { display: flex; align-items: center; justify-content: center; }
}
.auth-split-panel::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 15% 20%, rgba(0, 98, 51, 0.22) 0%, transparent 45%),
        radial-gradient(circle at 85% 75%, rgba(210, 16, 52, 0.1) 0%, transparent 50%),
        radial-gradient(circle at 60% 40%, rgba(0, 98, 51, 0.08) 0%, transparent 40%);
    pointer-events: none;
}
.auth-split-panel::after {
    content: '';
    position: absolute;
    inset: 0;
    opacity: 0.35;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-size: 180px 180px;
    mix-blend-mode: overlay;
    pointer-events: none;
}
.auth-split-panel-inner { position: relative; z-index: 1; max-width: 28rem; width: 100%; }
/* ——— Logo SCANI ——— */
.brand-logo {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    text-decoration: none;
    color: #006233;
    line-height: 1;
}
.brand-logo-mark {
    flex-shrink: 0;
    display: flex;
    color: #006233;
}
.brand-logo-mark svg { display: block; width: 100%; height: 100%; }
.brand-logo-text {
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    letter-spacing: -0.03em;
    color: inherit;
}
.brand-logo-text-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.brand-logo-tagline {
    font-size: 0.75rem;
    font-weight: 500;
    color: #64748b;
    letter-spacing: 0;
}
.brand-logo--split {
    margin-bottom: 2rem;
}
.brand-logo--split .brand-logo-mark { width: 2.75rem; height: 2.75rem; }
.brand-logo--split .brand-logo-text { font-size: 1.75rem; }
.brand-logo--card {
    display: flex;
    justify-content: center;
    margin-bottom: 1.25rem;
}
.brand-logo--card .brand-logo-mark { width: 2.25rem; height: 2.25rem; }
.brand-logo--card .brand-logo-text { font-size: 1.375rem; }
.brand-logo--nav .brand-logo-mark { width: 2rem; height: 2rem; }
.brand-logo--nav .brand-logo-text { font-size: 1.375rem; }
.brand-logo--footer .brand-logo-mark { width: 1.75rem; height: 1.75rem; }
.brand-logo--footer .brand-logo-text { font-size: 1.25rem; }
.brand-logo:hover { color: #004d28; }
.auth-login-brand {
    display: flex;
    justify-content: center;
    margin-bottom: 0.25rem;
}
@media (min-width: 900px) {
    .auth-login-brand { display: none; }
}
.auth-split-title {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    line-height: 1.15;
    margin-bottom: 1rem;
    color: #0f172a;
}
.auth-split-lead {
    font-size: 1rem;
    color: #64748b;
    line-height: 1.6;
    margin-bottom: 2rem;
}
.auth-split-features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.auth-split-features li {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.9375rem;
    font-weight: 500;
    color: #334155;
}
.auth-split-icon {
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 98, 51, 0.1);
    border-radius: 10px;
    font-size: 1.1rem;
}
.auth-split-main {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1.25rem;
    min-height: 100vh;
}
.auth-split-main-inner {
    width: 100%;
    max-width: 420px;
}
.auth-login-card {
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.95);
    border-radius: 24px;
    padding: 2rem 1.75rem;
    box-shadow: 0 12px 48px rgba(15, 23, 42, 0.1);
}
.auth-login-head { margin-bottom: 1.75rem; }
.auth-login-title {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1.5rem;
    color: #111827;
    margin-bottom: 0.35rem;
}
.auth-login-sub { font-size: 0.875rem; color: #6b7280; }
.auth-label-icon { margin-right: 0.25rem; opacity: 0.7; }
.auth-submit-lg { padding: 0.875rem 1rem; font-size: 1rem; font-weight: 600; }
.auth-login-divider {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 1.5rem 0;
    color: #9ca3af;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.auth-login-divider::before,
.auth-login-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: #e5e7eb;
}
.auth-login-form .contact-method-wrap--auth { margin-bottom: 0.25rem; }
.auth-login-form .contact-method-wrap--auth .contact-method-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 0.5rem;
}
.auth-login-form .contact-method-tabs {
    background: #f3f4f6;
    margin-bottom: 0.85rem;
}
.auth-login-form .contact-method-tab {
    font-size: 0.8125rem;
    padding: 0.5rem 0.65rem;
}
.auth-login-form .contact-method-tab.is-active {
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    color: var(--green, #006233);
}
.auth-login-form .phone-field-row .auth-field,
.auth-login-form .phone-field-row .phone-dial-select {
    min-height: 2.75rem;
}

.auth-cta-link {
    display: block;
    margin-top: 0.5rem;
    padding: 0.75rem 1rem;
    text-align: center;
    background: #ecfdf5;
    color: #006233 !important;
    border-radius: 12px;
    font-weight: 600;
    text-decoration: none;
    border: 1px solid rgba(0, 98, 51, 0.2);
    transition: background 0.15s;
}
.auth-cta-link:hover { background: #d1fae5; text-decoration: none !important; }
.auth-hint-split { margin-top: 1.25rem; text-align: center; }

/* Sidebar overlay — ne pas dépendre uniquement de Tailwind */
#sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 40;
    background: rgba(0, 0, 0, 0.4);
    pointer-events: none;
}
#sidebar-overlay:not(.hidden) {
    display: block;
    pointer-events: auto;
}
@media (min-width: 1024px) {
    #sidebar-overlay {
        display: none !important;
        pointer-events: none !important;
    }
}

/* ── Page Mon compte ── */
.account-page {
    max-width: 40rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    position: relative;
    z-index: 2;
}
.account-page .account-card {
    background: #ffffff;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}
.account-page .account-input {
    background: #ffffff !important;
    color: #111827 !important;
    -webkit-text-fill-color: #111827;
    cursor: text;
    position: relative;
    z-index: 1;
}
.account-page .form-select.account-input { cursor: pointer; }
.account-page .account-input:disabled {
    background: #f3f4f6 !important;
    cursor: not-allowed;
    opacity: 0.85;
}
.account-page .account-input::placeholder {
    color: #9ca3af !important;
    opacity: 1;
}
.account-suggest-btn {
    display: inline;
    padding: 0;
    border: none;
    background: none;
    font: inherit;
    font-size: 0.8125rem;
    color: var(--accent);
    font-weight: 600;
    text-decoration: underline;
    cursor: pointer;
}
.account-suggest-btn:hover { color: var(--accent-dark); }
.account-alert { margin-bottom: 0; }
.account-card { padding: 1.5rem 1.75rem; }
.account-card-head { margin-bottom: 1.25rem; }
.account-card-head h2,
.account-card-head h3 { margin: 0 0 0.25rem; font-size: 1.0625rem; }
.account-card-desc {
    margin: 0;
    font-size: 0.875rem;
    color: var(--text2);
    line-height: 1.5;
}
.account-dl {
    display: grid;
    gap: 1rem;
    margin: 0 0 1rem;
}
@media (min-width: 480px) {
    .account-dl { grid-template-columns: 1fr 1fr; }
}
.account-dl dt {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text2);
    margin-bottom: 0.2rem;
}
.account-dl dd {
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--text);
    word-break: break-word;
}
.account-email {
    display: inline-block;
    padding: 0.35rem 0.65rem;
    background: var(--bg3);
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.875rem;
}
.account-support-note {
    margin: 0;
    padding: 0.75rem 1rem;
    font-size: 0.8125rem;
    line-height: 1.55;
    color: var(--text2);
    background: var(--bg3);
    border-radius: 10px;
    border: 1px solid var(--border);
}
.account-support-note a {
    color: var(--accent);
    font-weight: 600;
    text-decoration: none;
}
.account-support-note a:hover { text-decoration: underline; }
.account-form { display: flex; flex-direction: column; gap: 0; }
.account-field { margin-bottom: 1.125rem; }
.account-field:last-of-type { margin-bottom: 0; }
.account-field-hint {
    margin: 0.4rem 0 0;
    font-size: 0.8125rem;
    line-height: 1.45;
    color: var(--text2);
}
.account-form-actions {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border);
}
.form-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.85rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}

/* ── Compte en attente de validation ── */
.dash-pending-banner {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    padding: 1rem 1.25rem;
    background: linear-gradient(135deg, #ecfdf5 0%, #f0fdf4 50%, #fffbeb 100%);
    border: 1px solid #a7f3d0;
    border-radius: 14px;
}
.dash-pending-banner-lg { padding: 1.5rem 1.75rem; }
.dash-pending-icon {
    font-size: 1.75rem;
    line-height: 1;
    flex-shrink: 0;
}
.dash-pending-title {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1rem;
    color: var(--text);
    margin: 0 0 0.35rem;
}
.dash-pending-text {
    font-size: 0.875rem;
    line-height: 1.6;
    color: #334155;
    margin: 0;
}
.dash-pending-sub {
    font-size: 0.8125rem;
    color: var(--text2);
    margin: 0.5rem 0 0;
    line-height: 1.5;
}

/* ── Inscription confirmation ── */
.auth-card-success { text-align: center; }
.auth-success-header { margin-bottom: 1.5rem; }
.auth-success-icon {
    width: 4rem;
    height: 4rem;
    margin: 1.25rem auto 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.75rem;
    font-weight: 700;
    color: #fff;
    background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
    border-radius: 50%;
    box-shadow: 0 8px 24px rgba(0, 98, 51, 0.25);
}
.auth-success-message {
    font-size: 1.0625rem;
    line-height: 1.65;
    color: var(--text);
    margin: 0.75rem auto 0;
    max-width: 28rem;
}
.auth-success-sub { font-size: 0.875rem; color: var(--text2); margin: 0.75rem 0 0; }
.auth-success-actions { display: flex; flex-direction: column; gap: 0.75rem; align-items: stretch; }
.auth-success-home { font-size: 0.875rem; font-weight: 600; color: var(--text2); text-decoration: none; }
.auth-success-home:hover { color: var(--accent); }

/* ── Inscription wizard ── */
.auth-body-wizard.auth-body-centered { align-items: center; }
.auth-body-wizard .auth-page-wide { width: 100%; }
.auth-card-wizard {
    padding: 1.75rem 1.5rem;
    width: 100%;
    margin: 0 auto;
}
@media (min-width: 640px) {
    .auth-card-wizard { padding: 2rem 2.25rem; }
}
.auth-wizard-header { text-align: center; margin-bottom: 1.5rem; }
.auth-wizard-logo {
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    font-size: 1.75rem;
    color: #006233;
    text-decoration: none;
}
.auth-wizard-title {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1.35rem;
    margin-top: 0.75rem;
    color: #111827;
}
.auth-wizard-sub { font-size: 0.875rem; color: #6b7280; margin-top: 0.25rem; }
.auth-wizard-progress {
    list-style: none;
    padding: 0;
    margin: 0 0 1.75rem;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    align-items: start;
}
.auth-wizard-progress-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.4rem;
    text-align: center;
    color: #9ca3af;
    font-weight: 600;
    line-height: 1.2;
    min-width: 0;
}
.auth-wizard-step-num {
    display: grid;
    place-items: center;
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    margin: 0;
    padding: 0;
    border-radius: 50%;
    background: #f3f4f6;
    border: 2px solid #e5e7eb;
    font-size: 0.8125rem;
    font-weight: 700;
    font-family: 'Sora', sans-serif;
    line-height: 1;
    transition: background 0.2s, border-color 0.2s, color 0.2s;
}
.auth-wizard-step-label {
    display: block;
    font-size: 0.6875rem;
    line-height: 1.25;
    max-width: 100%;
}
.auth-wizard-progress-item.active .auth-wizard-step-num,
.auth-wizard-progress-item.done .auth-wizard-step-num {
    background: #006233;
    border-color: #006233;
    color: #fff;
}
.auth-wizard-progress-item.active { color: #006233; }
.auth-wizard-progress-item.active .auth-wizard-step-label { color: #006233; }
.auth-wizard-progress-item.done { color: #374151; }
.auth-wizard-progress-item.done .auth-wizard-step-label { color: #374151; }
@media (max-width: 480px) {
    .auth-wizard-step-label { font-size: 0.625rem; }
}
.auth-wizard-step { display: none; }
.auth-wizard-step.active { display: block; animation: authStepIn 0.25s ease; }
@keyframes authStepIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}
.auth-step-heading {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1.125rem;
    margin-bottom: 0.35rem;
    color: #111827;
}
.auth-step-desc {
    font-size: 0.875rem;
    color: #6b7280;
    margin-bottom: 1.25rem;
    line-height: 1.5;
}
.auth-step-tip {
    font-size: 0.75rem;
    color: #9ca3af;
    margin-top: 0.5rem;
}
.auth-wizard-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid #f3f4f6;
}
.auth-wizard-nav .btn-primary { margin-left: auto; }
.auth-wizard-nav .hidden { display: none !important; }
.auth-field-color { max-width: 5rem; }

.phone-field-row {
    display: grid;
    grid-template-columns: minmax(9.5rem, 11rem) 1fr;
    gap: 0.5rem;
    align-items: stretch;
}
.phone-dial-select {
    min-width: 0;
    padding-right: 1.75rem !important;
    font-size: 0.875rem !important;
}
.cart-panel .phone-field-row .cart-field { min-height: 2.75rem; }
.cart-panel .phone-dial-select { font-size: 0.8125rem !important; }
.phone-local-input { min-width: 0; }
@media (max-width: 480px) {
    .phone-field-row { grid-template-columns: 1fr; }
}

/* Nav links */
.nav-link {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.875rem;
    border-radius: 8px;
    color: var(--text2);
    font-size: 0.875rem;
    font-weight: 500;
    transition: all 0.15s;
}
.nav-link:hover { background: var(--bg3); color: var(--text); }
.nav-link.active { background: #ecfdf5; color: var(--accent); }

/* Cards */
.card {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 14px;
    padding: 1.5rem;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.03), 0 8px 32px rgba(15,23,42,0.06);
}

/* Stat cards */
.stat-card {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 14px;
    padding: 1.25rem 1.5rem;
    position: relative;
    overflow: hidden;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.03), 0 8px 32px rgba(15,23,42,0.06);
}
.stat-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
    background: var(--accent-color, var(--accent));
}
.stat-card .stat-icon {
    position: absolute;
    top: 1rem; right: 1rem;
    opacity: 0.15;
    width: 2rem; height: 2rem;
}

/* Admin — filtres pays restaurants */
.admin-country-filters { gap: 0.5rem; }
.admin-country-filter {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--bg);
    color: var(--text2);
    font-size: 0.8125rem;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.admin-country-filter:hover {
    border-color: var(--accent);
    color: var(--accent);
}
.admin-country-filter.is-active {
    background: rgba(0, 98, 51, 0.1);
    border-color: var(--accent);
    color: var(--accent);
}
.admin-country-filter-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    padding: 0 0.35rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.06);
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1.4;
}
.admin-country-filter.is-active .admin-country-filter-count {
    background: var(--accent);
    color: #fff;
}
.admin-country-section td {
    padding: 0.65rem 0.75rem 0.35rem;
    background: var(--bg3);
    border-bottom: 1px solid var(--border);
}
.admin-country-section-label {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 0.8125rem;
    color: var(--text);
}
.admin-country-section-meta {
    margin-left: 0.5rem;
    font-size: 0.75rem;
    color: var(--text2);
}
.admin-country-badge {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}
.admin-country-badge--dz {
    background: #dcfce7;
    color: #166534;
}
.admin-country-badge--fr {
    background: #dbeafe;
    color: #1e40af;
}

/* Admin — modes de commande globaux */
.admin-order-modes .modes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1rem;
}
.mode-card {
    background: var(--bg);
    border-radius: 16px;
    border: 2px solid var(--border);
    padding: 1.25rem;
    transition: border-color 0.2s ease, opacity 0.2s ease;
}
.mode-card--active { border-color: var(--accent, #006233); }
.mode-card--disabled { background: var(--bg3); opacity: 0.9; }
.mode-card-header {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}
.mode-icon { font-size: 1.75rem; flex-shrink: 0; line-height: 1; }
.mode-info { flex: 1; min-width: 0; }
.mode-info h3 { font-size: 1rem; font-weight: 700; margin: 0 0 0.25rem; }
.mode-info p { font-size: 0.75rem; color: var(--text2); margin: 0; }
.mode-toggle {
    position: relative;
    display: inline-flex;
    cursor: pointer;
    flex-shrink: 0;
}
.mode-toggle input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}
.mode-toggle-track {
    display: block;
    width: 44px;
    height: 26px;
    border-radius: 999px;
    background: #d1d5db;
    transition: background 0.2s ease;
    position: relative;
}
.mode-toggle--on .mode-toggle-track { background: var(--accent, #006233); }
.mode-toggle-thumb {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    transition: transform 0.2s ease;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.mode-toggle--on .mode-toggle-thumb { transform: translateX(18px); }
.mode-card-status {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border);
}
.status-badge {
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.25rem 0.75rem;
    border-radius: 999px;
}
.status-active { background: #dcfce7; color: #166534; }
.status-inactive { background: #fee2e2; color: #b91c1c; }
.status-legal { font-size: 0.6875rem; font-weight: 600; }
.status-legal--ok { color: #166534; }
.status-legal--warn { color: #c2410c; }
.status-legal--danger { color: #b91c1c; }
.mode-card-reason {
    margin-top: 0.65rem;
    background: #fffbeb;
    border-radius: 8px;
    padding: 0.5rem 0.75rem;
    font-size: 0.75rem;
    color: var(--text2);
}
.admin-alert {
    display: flex;
    gap: 0.875rem;
    align-items: flex-start;
}
.admin-alert-info { background: #f0fdf4; border-color: #bbf7d0; }
.admin-alert .alert-icon { font-size: 1.5rem; line-height: 1; }
.admin-alert .alert-content p {
    font-size: 0.8125rem;
    color: var(--text2);
    margin: 0.35rem 0 0;
    line-height: 1.55;
}
.modes-summary .summary-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    margin-top: 1rem;
}
.summary-stat {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    font-weight: 500;
}
.summary-stat .stat-val {
    font-weight: 700;
    padding: 0.15rem 0.55rem;
    border-radius: 6px;
    font-size: 0.75rem;
}
.val-on { background: #dcfce7; color: #166534; }
.val-off { background: #fee2e2; color: #b91c1c; }
.order-modes-toast {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 200;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    font-size: 0.875rem;
    font-weight: 600;
    box-shadow: 0 8px 24px rgba(15,23,42,0.15);
}
.order-modes-toast--success { background: #166534; color: #fff; }
.order-modes-toast--warning { background: #b45309; color: #fff; }
.order-modes-toast--error { background: #b91c1c; color: #fff; }
.modes-tag {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: 100px;
}
.modes-all { background: #e6f4ed; color: #1a5c38; }
.modes-restricted { background: #fff3e0; color: #e8562a; }
.modes-default { background: #f4f4f0; color: #888; }
.country-rules { margin-top: 0; }
.country-rules h3 { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
.country-rules .legal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}
.country-rules .legal-table th,
.country-rules .legal-table td {
    padding: 0.5rem 0.75rem;
    text-align: left;
    border-bottom: 1px solid var(--border, #e5e7eb);
}
.country-rules .legal-table th {
    font-weight: 600;
    color: var(--text2);
    font-size: 0.75rem;
}
.td-yes { color: #1a5c38; font-weight: 700; text-align: center; }
.td-no { color: #c0392b; font-weight: 700; text-align: center; }
.country-rules-footnote {
    font-size: 12px;
    color: #999;
    margin-top: 8px;
}
.country-modes-table .text-center { text-align: center; }
.country-modes-label {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 600;
    font-size: 0.875rem;
}
.country-modes-code {
    font-weight: 500;
    color: var(--text2);
    font-size: 0.75rem;
}
.country-modes-reason {
    font-size: 0.8125rem;
    color: var(--text2);
    max-width: 220px;
}
.country-mode-cell {
    text-align: center;
    vertical-align: middle;
}
.country-mode-toggle {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    cursor: pointer;
}
.country-mode-toggle input { display: none; }
.country-mode-toggle-track {
    width: 40px;
    height: 22px;
    background: #e5e7eb;
    border-radius: 100px;
    position: relative;
    transition: background 0.2s;
}
.country-mode-toggle--on .country-mode-toggle-track { background: #1a5c38; }
.country-mode-toggle-thumb {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 16px;
    height: 16px;
    background: #fff;
    border-radius: 50%;
    transition: transform 0.2s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.country-mode-toggle--on .country-mode-toggle-thumb { transform: translateX(18px); }
.country-mode-status {
    font-size: 0.875rem;
    line-height: 1;
}
.cart-no-modes {
    font-size: 0.875rem;
    color: var(--text2);
    background: var(--bg3);
    border-radius: 10px;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}

/* Forms dashboard */
.form-label {
    display: block;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 0.375rem;
}

.prep-time-range {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.prep-time-range .form-input { flex: 1; min-width: 0; }
.prep-time-range-sep {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--text2, #6b7280);
    flex-shrink: 0;
}
.form-hint {
    margin: 0.35rem 0 0;
    font-size: 0.75rem;
    color: var(--text2, #6b7280);
}

.btn-secondary { background: #ffffff; color: var(--text); border: 1px solid var(--border); }
.btn-secondary:hover { background: var(--bg3); }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.625rem 1.25rem;
    border-radius: 8px;
    font-size: 0.875rem;
    font-weight: 600;
    transition: all 0.15s;
    cursor: pointer;
    border: none;
}
.btn-primary { background: var(--accent); color: white; }
.btn-primary:hover { filter: brightness(1.1); }
.btn-danger { background: rgba(239,68,68,0.15); color: var(--red); border: 1px solid rgba(239,68,68,0.3); }
.btn-danger:hover { background: rgba(239,68,68,0.25); }
.btn-sm { padding: 0.375rem 0.75rem; font-size: 0.8125rem; }

.badge {
    display: inline-flex;
    align-items: center;
    padding: 0.125rem 0.5rem;
    border-radius: 6px;
    font-size: 0.75rem;
    font-weight: 600;
}
.badge-green { background: rgba(34,197,94,0.15); color: var(--green); }
.badge-red { background: rgba(239,68,68,0.15); color: var(--red); }
.badge-orange { background: rgba(0,98,51,0.12); color: var(--accent); }
.text-dz-green { color: #006233; }
.text-dz-red { color: #d21034; }
.bg-dz-red { background-color: #d21034; color: #fff; }
.landing-dz-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    font-size: 0.65em;
    padding: 0.1em 0.45em;
    margin-left: 0.25em;
    border-radius: 4px;
    background: linear-gradient(135deg, #006233, #004d28);
    color: #fff;
    vertical-align: middle;
    letter-spacing: 0.05em;
}

.order-row-new { background: rgba(0,98,51,0.06); border-color: rgba(0,98,51,0.2) !important; }
.order-row-prep { background: rgba(234,179,8,0.08); border-color: rgba(234,179,8,0.28) !important; }
.badge-prep {
    background: #fef9c3;
    color: #854d0e;
    border: 1px solid #fde047;
}
.btn-finalize {
    background: #006233;
    color: #fff;
    border: none;
    font-weight: 600;
}
.btn-finalize:hover { background: #004d28; filter: brightness(1.05); }
.btn-order-delete {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    color: #dc2626;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 0.5rem;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s, border-color 0.15s;
}
.btn-order-delete svg {
    width: 1rem;
    height: 1rem;
    display: block;
}
.btn-order-delete:hover {
    background: #fee2e2;
    border-color: #f87171;
    color: #b91c1c;
}
.order-row-actions {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem;
}
.orders-table summary { list-style: none; }
.orders-table summary::-webkit-details-marker { display: none; }

.orders-filter-form {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.75rem 1rem;
}
.orders-filter-field {
    flex: 1 1 10rem;
    min-width: 0;
}
.orders-filter-field--narrow {
    flex: 0 1 8rem;
}
.orders-filter-form .form-label {
    display: block;
    width: 100%;
    margin-bottom: 0.25rem;
    text-align: left;
}
.orders-filter-form .form-input {
    width: 100%;
}
.orders-filter-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    flex: 0 0 auto;
}
@media (max-width: 639px) {
    .orders-filter-form {
        flex-direction: column;
        align-items: stretch;
    }
    .orders-filter-field,
    .orders-filter-field--narrow {
        flex: 1 1 auto;
        width: 100%;
    }
    .orders-filter-actions {
        width: 100%;
        padding-top: 0.25rem;
    }
    .orders-filter-actions .btn {
        flex: 1;
        justify-content: center;
        min-height: 44px;
    }
}

.btn-validate {
    background: var(--accent);
    color: #fff;
    border: none;
    font-weight: 600;
}
.btn-validate:hover { background: var(--accent-dark); filter: brightness(1.05); }

.btn-purge-day {
    font-size: 0.75rem;
    color: var(--text3);
    background: transparent;
    border: none;
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer;
    padding: 0.35rem 0.5rem;
}
.btn-purge-day:hover { color: var(--text2); }

/* Modale détail commande */
.order-detail-modal { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.order-detail-modal.hidden { display: none; }
.order-detail-backdrop { position: absolute; inset: 0; background: rgba(15, 23, 42, 0.45); backdrop-filter: blur(2px); }
.order-detail-box {
    position: relative; z-index: 1; width: 100%; max-width: 32rem; max-height: min(90vh, 640px);
    background: #fff; border-radius: 1rem; border: 1px solid var(--border);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); display: flex; flex-direction: column; overflow: hidden;
}
.order-detail-head {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
    padding: 1.25rem 1.25rem 0.75rem; border-bottom: 1px solid var(--border);
}
.order-detail-eyebrow { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text2); margin-bottom: 0.15rem; }
.order-detail-close {
    width: 2rem; height: 2rem; border-radius: 0.5rem; border: none; background: var(--bg3);
    font-size: 1.35rem; line-height: 1; color: var(--text2); cursor: pointer;
}
.order-detail-close:hover { background: var(--border); color: var(--text); }
.order-detail-body { padding: 1rem 1.25rem 1.25rem; overflow-y: auto; }
.order-detail-type {
    display: flex; align-items: center; gap: 0.75rem; padding: 0.85rem 1rem; border-radius: 0.75rem;
    border: 1px solid var(--border); margin-bottom: 1rem;
}
.order-detail-type.order-type-sur_place { background: rgba(0, 98, 51, 0.06); border-color: rgba(0, 98, 51, 0.2); }
.order-detail-type.order-type-emporter { background: rgba(239, 68, 68, 0.06); border-color: rgba(239, 68, 68, 0.2); }
.order-detail-type.order-type-livraison { background: rgba(249, 115, 22, 0.08); border-color: rgba(249, 115, 22, 0.25); }
.order-detail-type-icon { font-size: 1.5rem; line-height: 1; }
.order-detail-type-label { font-family: var(--font-sora, 'Sora', sans-serif); font-weight: 700; font-size: 1rem; }
.order-detail-type-hint { font-size: 0.75rem; color: var(--text2); margin-top: 0.1rem; }
.order-detail-type .badge { margin-left: auto; flex-shrink: 0; }
.order-detail-context {
    font-size: 0.875rem; line-height: 1.5; color: var(--text2); margin-bottom: 1rem;
    padding: 0.75rem 1rem; background: var(--bg3); border-radius: 0.75rem;
}
.order-detail-context p + p { margin-top: 0.35rem; }
.order-detail-section-title {
    font-family: var(--font-sora, 'Sora', sans-serif); font-weight: 600; font-size: 0.8rem;
    text-transform: uppercase; letter-spacing: 0.04em; color: var(--text2); margin-bottom: 0.5rem;
}
.order-detail-items { list-style: none; margin: 0; padding: 0; }
.order-detail-item {
    display: flex; align-items: flex-start; gap: 0.5rem; padding: 0.55rem 0;
    border-bottom: 1px solid var(--border);
}
.order-detail-item:last-child { border-bottom: none; }
.order-detail-item-qty { font-weight: 700; min-width: 2rem; color: var(--accent); }
.order-detail-item-name { flex: 1; font-size: 0.9rem; }
.order-detail-item-price { font-weight: 600; white-space: nowrap; font-size: 0.85rem; }
.order-detail-item-sub { display: block; margin-top: 0.2rem; }
.order-detail-item-tag { font-size: 0.7rem; color: var(--text2); }
.order-detail-note {
    margin-top: 0.75rem; padding: 0.75rem 1rem; border-radius: 0.75rem;
    background: rgba(249, 115, 22, 0.08); border: 1px solid rgba(249, 115, 22, 0.2);
    font-size: 0.875rem; font-style: italic;
}
.order-detail-totals { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px dashed var(--border); }
.order-detail-total-line { display: flex; justify-content: space-between; font-size: 0.875rem; color: var(--text2); padding: 0.15rem 0; }
.order-detail-discount { color: #15803d; }
.order-detail-total-final { font-family: var(--font-sora, 'Sora', sans-serif); font-weight: 700; font-size: 1.05rem; color: var(--accent); margin-top: 0.35rem; }
.order-detail-validated { font-size: 0.75rem; color: var(--text2); margin-top: 0.75rem; text-align: right; }
.order-detail-empty { font-size: 0.875rem; color: var(--text2); padding: 0.5rem 0; }
.btn-order-detail { display: inline-flex; align-items: center; justify-content: center; padding: 0.35rem 0.5rem; }

.order-type-pill {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.15rem 0.5rem;
    border-radius: 9999px;
    border: 1px solid var(--border);
    white-space: nowrap;
    line-height: 1.25;
}
.order-type-sur_place { background: #ecfdf5; color: #006233; border-color: #a7f3d0; }
.order-type-emporter { background: #fef2f2; color: #d21034; border-color: #fecaca; }
.order-type-livraison { background: #fff7ed; color: #9a3412; border-color: #fed7aa; }

/* QR codes publication */
.order-setting-row {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border-radius: 0.75rem;
    border: 1px solid var(--border);
    background: var(--bg3);
    cursor: pointer;
}
.order-setting-row:hover { border-color: rgba(0, 98, 51, 0.25); }
.order-setting-row input { margin-top: 0.15rem; flex-shrink: 0; }

.qr-card-selectable { position: relative; }
.qr-card-check {
    position: absolute;
    top: 0.65rem;
    left: 0.65rem;
    z-index: 2;
    background: rgba(255,255,255,0.95);
    border-radius: 0.35rem;
    padding: 0.15rem;
    border: 1px solid var(--border);
}
.qr-select-all-label { color: var(--text2); }

.pub-order-notice {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    padding: 1rem 1.125rem;
    margin-bottom: 1rem;
    border-radius: 14px;
    border: 1px solid transparent;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
}
.pub-order-notice--blocked {
    background: linear-gradient(135deg, #fff5f5 0%, #fef2f2 100%);
    border-color: rgba(210, 16, 52, 0.22);
    color: #7f1d1d;
}
.pub-order-notice--delivery {
    background: linear-gradient(135deg, #fffbeb 0%, #fff7ed 100%);
    border-color: rgba(234, 88, 12, 0.22);
    color: #9a3412;
}
.public-body.dark .pub-order-notice--blocked {
    background: linear-gradient(135deg, rgba(127, 29, 29, 0.35) 0%, rgba(69, 10, 10, 0.4) 100%);
    border-color: rgba(248, 113, 113, 0.35);
    color: #fecaca;
}
.public-body.dark .pub-order-notice--delivery {
    background: linear-gradient(135deg, rgba(124, 45, 18, 0.35) 0%, rgba(67, 20, 7, 0.4) 100%);
    border-color: rgba(251, 146, 60, 0.35);
    color: #fed7aa;
}
.pub-order-notice-icon {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
}
.pub-order-notice--blocked .pub-order-notice-icon {
    background: rgba(210, 16, 52, 0.12);
    color: #d21034;
}
.pub-order-notice--delivery .pub-order-notice-icon {
    background: rgba(234, 88, 12, 0.12);
    color: #ea580c;
}
.pub-order-notice-icon svg {
    width: 1.25rem;
    height: 1.25rem;
}
.pub-order-notice-body {
    flex: 1;
    min-width: 0;
}
.pub-order-notice-title {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-weight: 700;
    font-size: 0.9375rem;
    line-height: 1.3;
}
.pub-order-notice-text {
    font-size: 0.8125rem;
    margin-top: 0.3rem;
    line-height: 1.5;
    opacity: 0.92;
}
.pub-order-notice-hint {
    font-size: 0.75rem;
    margin-top: 0.45rem;
    line-height: 1.4;
    font-weight: 600;
    opacity: 0.85;
}
.pub-order-notice--delivery .pub-order-notice-hint {
    color: #15803d;
}
.public-body.dark .pub-order-notice--delivery .pub-order-notice-hint {
    color: #86efac;
}

.qr-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem;
}
.qr-card {
    display: flex;
    gap: 1rem;
    padding: 1rem;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: var(--bg3);
    align-items: flex-start;
}
.qr-card-main {
    background: rgba(249, 115, 22, 0.06);
    border-color: rgba(249, 115, 22, 0.2);
}
.qr-card-preview {
    flex-shrink: 0;
    background: #fff;
    border-radius: 10px;
    padding: 0.5rem;
    border: 1px solid var(--border);
}
.qr-img {
    display: block;
    width: 140px;
    height: 140px;
    object-fit: contain;
}
.qr-card-main .qr-img { width: 160px; height: 160px; }
.qr-card-info { flex: 1; min-width: 0; }
.qr-bulk-details summary { list-style: none; }
.qr-bulk-details summary::-webkit-details-marker { display: none; }

/* Plan de salle */
.floor-plan-wrap { width: 100%; }
.floor-plan-room {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 10;
    min-height: 280px;
    max-height: 520px;
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    border: 2px solid var(--border);
    border-radius: 16px;
    overflow: hidden;
}
.floor-plan-grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(0,0,0,0.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0,0,0,0.04) 1px, transparent 1px);
    background-size: 8.33% 10%;
    pointer-events: none;
}
.floor-plan-tables { position: absolute; inset: 0; }
.floor-plan-empty {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 1rem;
    font-size: 0.875rem;
    color: var(--text2);
}
.floor-table {
    position: absolute;
    display: grid;
    grid-template-rows: minmax(0, auto) 1fr minmax(0, auto);
    grid-template-columns: 1fr auto;
    grid-template-areas:
        "server server"
        "num num"
        "seats badge";
    align-items: center;
    justify-items: center;
    gap: 0.1rem;
    padding: 3px 5px 4px;
    box-sizing: border-box;
    overflow: hidden;
    background: #fff;
    border: 2px solid #cbd5e1;
    box-shadow: 0 2px 8px rgba(15,23,42,0.08);
    cursor: grab;
    user-select: none;
    transition: box-shadow 0.15s, border-color 0.15s, background 0.15s;
    text-decoration: none;
    color: inherit;
}
.floor-table-round { border-radius: 50%; }
.floor-table-square { border-radius: 8px; }
.floor-table-rect { border-radius: 10px; min-width: 12%; }
.floor-table-selected {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(0,98,51,0.25);
    z-index: 5;
}
.floor-table-active {
    background: #ecfdf5;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(0,98,51,0.35);
    animation: floorPulse 2s ease-in-out infinite;
    z-index: 4;
}
.floor-table-request {
    background: #eff6ff;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.35);
    animation: floorRequestPulse 1.4s ease-in-out infinite;
    z-index: 6;
}
.floor-table-active.floor-table-request {
    background: linear-gradient(135deg, #ecfdf5 50%, #eff6ff 50%);
    border-color: #2563eb;
    animation: floorRequestPulse 1.4s ease-in-out infinite;
}
@keyframes floorPulse {
    0%, 100% { box-shadow: 0 0 0 3px rgba(0,98,51,0.35); }
    50% { box-shadow: 0 0 0 6px rgba(0,98,51,0.15); }
}
@keyframes floorRequestPulse {
    0%, 100% { box-shadow: 0 0 0 3px rgba(37,99,235,0.4); }
    50% { box-shadow: 0 0 0 8px rgba(37,99,235,0.12); }
}
.floor-table-num {
    grid-area: num;
    align-self: center;
    justify-self: center;
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: clamp(0.7rem, 2.2vw, 1.125rem);
    color: #334155;
    line-height: 1;
    min-width: 0;
}
.floor-table-seats {
    grid-area: seats;
    justify-self: start;
    align-self: end;
    position: static;
    font-size: clamp(0.4375rem, 1.4vw, 0.5625rem);
    font-weight: 600;
    color: #64748b;
    background: rgba(255,255,255,0.9);
    padding: 1px 4px;
    border-radius: 4px;
    line-height: 1.2;
    max-width: 100%;
}
.floor-table-server {
    grid-area: server;
    align-self: start;
    justify-self: stretch;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    position: static;
    font-size: clamp(0.4rem, 1.5vw, 0.5625rem);
    font-weight: 600;
    color: #475569;
    background: rgba(255,255,255,0.92);
    padding: 1px 4px;
    border-radius: 4px;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
}
.floor-table:not(:has(.floor-table-server)) {
    grid-template-rows: 1fr minmax(0, auto);
    grid-template-areas:
        "num num"
        "seats badge";
}
.floor-table-selected .floor-table-seats { color: var(--accent); }
.floor-table-selected .floor-table-server { color: #c2410c; }

.floor-servers-list { list-style: none; padding: 0; margin: 0; }
.floor-servers-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.375rem 0.5rem;
    border-radius: 8px;
    background: var(--bg3);
    border: 1px solid var(--border);
    margin-bottom: 0.375rem;
}
.floor-servers-list li span { font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.floor-servers-list li small { color: var(--text2); font-size: 0.6875rem; white-space: nowrap; }
.floor-servers-list button {
    border: none;
    background: transparent;
    color: #dc2626;
    cursor: pointer;
    font-size: 0.75rem;
    padding: 0.125rem 0.375rem;
    border-radius: 4px;
}
.floor-servers-list button:hover { background: rgba(220,38,38,0.08); }
.floor-table-active .floor-table-num { color: var(--accent); }
.floor-table-badge {
    grid-area: badge;
    justify-self: end;
    align-self: end;
    position: static;
    color: var(--accent);
    font-size: clamp(0.4375rem, 1.2vw, 0.625rem);
    line-height: 1;
}
.floor-table-request-badge {
    grid-column: 1 / -1;
    grid-row: 3;
    justify-self: stretch;
    align-self: end;
    position: static;
    font-size: clamp(0.375rem, 1.2vw, 0.4375rem);
    font-weight: 600;
    line-height: 1.15;
    color: #1d4ed8;
    background: rgba(255,255,255,0.95);
    padding: 2px 4px;
    border-radius: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
    max-width: 100%;
}
.floor-table:has(.floor-table-request-badge) .floor-table-seats {
    display: none;
}
.floor-preset-row {
    display: grid;
    grid-template-columns: 2.5rem 1fr auto 2rem;
    gap: 0.35rem;
    align-items: center;
    padding: 0.35rem 0;
    border-bottom: 1px solid var(--border);
}
.floor-preset-row:last-child { border-bottom: none; }
.floor-preset-row label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
}
.floor-preset-del {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: #dc2626;
    cursor: pointer;
    flex-shrink: 0;
}
.floor-preset-del:hover { background: rgba(220, 38, 38, 0.08); }
.floor-preset-del svg { display: block; }
.floor-preset-icon-input {
    width: 2.5rem;
    text-align: center;
    padding: 0.35rem 0.25rem;
    font-size: 1rem;
}
.floor-plan-room[data-mode="edit"] .floor-table:active { cursor: grabbing; }

.floor-props-panel.floor-props-active {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(0,98,51,0.12);
}
.floor-prop-error {
    margin-top: 0.25rem;
    font-size: 0.75rem;
    color: #dc2626;
}
.form-input.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 2px rgba(220,38,38,0.12) !important;
}

.alert {
    padding: 0.875rem 1rem;
    border-radius: 8px;
    font-size: 0.875rem;
}
.alert-success { background: rgba(34,197,94,0.1); border: 1px solid rgba(34,197,94,0.3); color: var(--green); }
.seo-details summary { list-style: none; }
.seo-details summary::-webkit-details-marker { display: none; }
.seo-details[open] .seo-chevron { transform: rotate(180deg); }
.seo-chevron { transition: transform 0.2s; }

/* Anti-gaspillage — compact */
.aw-section-compact {
    margin-bottom: 1.25rem;
    scroll-margin-top: 5rem;
}
.aw-strip {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.5rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.625rem;
    background: rgba(236, 253, 245, 0.9);
    border: 1px solid #bbf7d0;
    border-radius: 10px;
    font-size: 0.8125rem;
    color: #166534;
}
.public-body.dark .aw-strip {
    background: rgba(6, 78, 59, 0.25);
    border-color: rgba(52, 211, 153, 0.35);
    color: #6ee7b7;
}
.aw-strip-label { font-weight: 600; }
.aw-strip-sep { opacity: 0.5; }
.aw-strip-live { font-weight: 600; color: #15803d; }
.aw-strip-soon strong {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.aw-offers-compact {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.aw-offer-compact {
    display: flex;
    gap: 0.75rem;
    align-items: stretch;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.public-body.dark .aw-offer-compact {
    background: var(--bg2, #1e2535);
    border-color: #2a3347;
}
.aw-offer-live {
    border-color: #bbf7d0;
}
.aw-offer-soon {
    opacity: 0.72;
}
.aw-offer-thumb {
    position: relative;
    width: 5.5rem;
    min-width: 5.5rem;
    flex-shrink: 0;
    background: #f1f5f9;
}
.aw-offer-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    min-height: 5.5rem;
}
.aw-offer-thumb-ph {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 5.5rem;
    font-size: 1.5rem;
    background: linear-gradient(135deg, #ecfdf5, #d1fae5);
}
.aw-offer-badge {
    position: absolute;
    top: 4px;
    left: 4px;
    font-size: 0.625rem;
    font-weight: 700;
    padding: 0.15rem 0.35rem;
    border-radius: 4px;
    background: #16a34a;
    color: #fff;
    line-height: 1.2;
}
.aw-offer-pct {
    font-size: 0.75rem;
    font-weight: 700;
    color: #dc2626;
}
.public-body.dark .aw-offer-pct { color: #f87171; }
.aw-offer-body {
    flex: 1;
    min-width: 0;
    padding: 0.5rem 0.625rem 0.5rem 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.aw-offer-title {
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.25;
    margin: 0 0 0.125rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.aw-offer-meta {
    font-size: 0.6875rem;
    color: #64748b;
    margin: 0 0 0.375rem;
    line-height: 1.3;
}
.aw-offer-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}
.aw-offer-prices {
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    flex-wrap: wrap;
}
.aw-offer-old {
    font-size: 0.6875rem;
    color: #94a3b8;
    text-decoration: line-through;
}
.aw-offer-new {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--accent, #f97316);
}
.aw-offer-btn {
    flex-shrink: 0;
    padding: 0.35rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    border: none;
    border-radius: 8px;
    background: #16a34a;
    color: #fff;
    cursor: pointer;
    transition: opacity 0.15s;
}
.aw-offer-btn:hover:not(:disabled) { filter: brightness(1.08); }
.aw-offer-btn:disabled {
    background: #e2e8f0;
    color: #94a3b8;
    cursor: not-allowed;
}
.aw-offer-soon .aw-offer-btn:disabled {
    background: #fef3c7;
    color: #92400e;
}

/* Legacy anti-gaspillage (menu grid) — keep minimal */
.aw-public-section { scroll-margin-top: 5rem; }
.aw-discount-pill {
    position: absolute; top: 8px; left: 8px;
    background: #16a34a; color: #fff;
    font-size: 0.75rem; font-weight: 700;
    padding: 0.25rem 0.5rem; border-radius: 8px;
}
.aw-live-pill {
    position: absolute; top: 8px; right: 8px;
    background: #22c55e; color: #fff;
    font-size: 0.625rem; font-weight: 700;
    padding: 0.2rem 0.45rem; border-radius: 6px;
    text-transform: uppercase; letter-spacing: 0.03em;
}
.aw-no-img { background: linear-gradient(135deg, #d1fae5, #a7f3d0) !important; }
.btn-anti-waste {
    display: flex; align-items: center; justify-content: center;
    width: 100%; padding: 0.625rem 1rem;
    background: linear-gradient(135deg, #16a34a, #15803d);
    color: #fff; border: none; border-radius: 10px;
    font-size: 0.875rem; font-weight: 600; cursor: pointer;
    transition: transform 0.15s, opacity 0.15s;
}
.btn-anti-waste:hover:not(:disabled) { transform: translateY(-1px); filter: brightness(1.05); }
.btn-anti-waste:disabled { opacity: 0.5; cursor: not-allowed; }
.aw-discount-badge {
    display: inline-block; background: #16a34a; color: #fff;
    font-size: 0.75rem; font-weight: 700; padding: 0.125rem 0.5rem; border-radius: 6px;
}
.aw-offer-live { border-color: #86efac !important; box-shadow: 0 0 0 1px rgba(34,197,94,0.15); }
.aw-dialog {
    border: none; border-radius: 16px; padding: 0;
    max-width: min(32rem, 95vw); box-shadow: 0 25px 50px rgba(0,0,0,0.2);
}
.aw-dialog::backdrop { background: rgba(15,23,42,0.45); }
.pub-cart-item-aw { background: #f0fdf4; border-radius: 8px; padding: 0.25rem; }
.public-body.dark .pub-cart-item-aw { background: rgba(6,78,59,0.25); }

.cart-takeaway-notice {
    font-size: 0.8125rem;
    color: #047857;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    border-radius: 10px;
    padding: 0.625rem 0.75rem;
    margin-bottom: 0.625rem;
    line-height: 1.4;
}
.cart-order-types .order-type-disabled {
    opacity: 0.45;
    pointer-events: none;
}
.cart-order-types .order-type-disabled span {
    text-decoration: line-through;
}

.grid-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1rem;
}

/* Toggle switch */
.toggle { position: relative; display: inline-block; width: 44px; height: 24px; }
.toggle input { opacity: 0; width: 0; height: 0; }
.toggle-slider {
    position: absolute; cursor: pointer;
    inset: 0; background: var(--bg4);
    border-radius: 24px; transition: 0.2s;
    border: 1px solid var(--border);
}
.toggle-slider:before {
    content: ''; position: absolute;
    height: 18px; width: 18px; left: 2px; bottom: 2px;
    background: var(--text2); border-radius: 50%; transition: 0.2s;
}
.toggle input:checked + .toggle-slider { background: var(--accent); border-color: var(--accent); }
.toggle input:checked + .toggle-slider:before { transform: translateX(20px); background: white; }

/* Sortable */
.sortable-ghost { opacity: 0.4; }
.drag-handle { cursor: grab; color: var(--text3); }
.drag-handle:active { cursor: grabbing; }
.menu-option-row .option-drag {
    flex-shrink: 0;
    align-self: center;
    font-size: 1.125rem;
    line-height: 1;
    padding: 0.35rem 0.15rem;
    user-select: none;
}
.menu-options-sortable .sortable-ghost {
    opacity: 0.45;
    background: var(--bg3);
    border-radius: 8px;
}
.menu-option-group {
    position: relative;
}
.menu-option-group-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: -0.15rem 0 0.15rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px dashed var(--border2, var(--border));
}
.menu-option-group-head .group-drag {
    font-size: 1.125rem;
    line-height: 1;
    padding: 0.2rem 0.15rem;
    user-select: none;
}
.menu-option-group-head-label {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text2);
}
.menu-option-groups > .sortable-ghost {
    opacity: 0.5;
    border: 2px dashed var(--accent, #006233);
    border-radius: 12px;
}
.menu-option-template-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.menu-option-template-tag {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    border: 1px solid var(--accent, #006233);
    background: rgba(0, 98, 51, 0.08);
    color: var(--accent, #006233);
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.15s ease, color 0.15s ease;
}
.menu-option-template-tag:hover {
    background: var(--accent, #006233);
    color: #fff;
}
.menu-option-templates-hint {
    font-size: 0.75rem;
    color: var(--text2);
    font-style: italic;
}

/* ── Public page ── */
.public-body { background: transparent; color: #1a1a2e; transition: color 0.3s; }
.public-body.dark { background: #0f1117; color: #e8edf5; }
.public-body.dark .scani-bg { opacity: 0; visibility: hidden; transition: opacity 0.3s; }
.public-body.dark .pub-card { background: #161b27; border-color: #2a3347; }
.public-body.dark .pub-topbar { background: #161b27; border-color: #2a3347; }
.public-body.dark .pub-search { background: #1e2535; border-color: #2a3347; color: #e8edf5; }
.public-body.dark .pub-category-card { background: #161b27; border-color: #2a3347; }
.public-body.dark .pub-footer { background: #161b27; border-color: #2a3347; }
.public-body.dark .text-muted { color: #8a96b0; }

.pub-topbar {
    position: sticky; top: 0; z-index: 40;
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.9);
    padding: 0.75rem 1rem;
    box-shadow: 0 1px 12px rgba(15, 23, 42, 0.04);
}
/* Menu public — layout + icônes autonomes (ne pas dépendre du CDN Tailwind) */
.pub-topbar-inner {
    max-width: 56rem;
    margin-left: auto;
    margin-right: auto;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.pub-topbar-spacer { flex: 1 1 0%; min-width: 0; }
.pub-search-wrap {
    flex: 1 1 0%;
    min-width: 0;
    position: relative;
}
.pub-search {
    width: 100%;
    box-sizing: border-box;
    padding: 0.625rem 1rem 0.625rem 2.5rem;
    border-radius: 9999px;
    border: 1px solid #e5e7eb;
    font-size: 0.875rem;
    line-height: 1.25rem;
    background: #fff;
    color: #111827;
}
.pub-search:focus {
    outline: none;
    border-color: var(--accent, #006233);
    box-shadow: 0 0 0 3px rgba(0, 98, 51, 0.15);
}
.pub-search-icon {
    position: absolute;
    left: 0.875rem;
    top: 50%;
    transform: translateY(-50%);
    width: 1rem;
    height: 1rem;
    max-width: 1rem;
    max-height: 1rem;
    pointer-events: none;
    color: #9ca3af;
    flex-shrink: 0;
    display: block;
}
.pub-menu-page .pub-topbar svg,
.pub-menu-page .btn-accent svg,
.pub-menu-page .btn-account-light svg,
.pub-menu-page .pub-icon-btn svg,
.pub-menu-page .cart-panel-header-icon svg,
.pub-menu-page .cart-close-btn svg,
.pub-menu-page .customer-auth-close svg,
.pub-menu-page .item-options-back svg {
    width: 1.25rem;
    height: 1.25rem;
    max-width: 1.25rem;
    max-height: 1.25rem;
    flex-shrink: 0;
    display: block;
}
.pub-menu-page .pub-icon-svg {
    width: 1.25rem;
    height: 1.25rem;
    max-width: 1.25rem;
    max-height: 1.25rem;
}
.pub-header-meta .pub-icon-svg {
    width: 0.9375rem;
    height: 0.9375rem;
    max-width: 0.9375rem;
}
.pub-header-logo-placeholder .pub-icon-svg {
    width: 2rem;
    height: 2rem;
    max-width: 2rem;
}
.pub-header-share svg {
    width: 1.125rem;
    height: 1.125rem;
    max-width: 1.125rem;
}
.pub-shrink-0 { flex-shrink: 0; }
.pub-hide-mobile { display: none; }
@media (min-width: 640px) {
    .pub-hide-mobile { display: inline; }
}
.pub-banner,
.restaurant-header {
    position: relative;
    height: 140px;
    overflow: hidden;
}
@media (min-width: 768px) {
    .pub-banner,
    .restaurant-header { height: 200px; }
}
.pub-banner img,
.header-cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}
.pub-banner-overlay,
.header-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, transparent 40%, rgba(0,0,0,0.4) 100%);
}
.header-cover-fallback {
    position: relative;
    width: 100%;
    height: 100%;
}
.header-pattern {
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 20% 50%, rgba(255,255,255,0.05) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(232,86,42,0.1) 0%, transparent 40%);
}

/* En-tête restaurant — logo centré */
.pub-header-wrap {
    max-width: 56rem;
    margin: -3.5rem auto 0;
    padding: 0 1rem;
    position: relative;
    z-index: 10;
}
.pub-header-card {
    position: relative;
    background: #fff;
    border-radius: 16px;
    border: 1px solid #eee;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
    padding: 3.75rem 1.25rem 1.25rem;
    text-align: center;
}
.public-body.dark .pub-header-card {
    background: #161b27;
    border-color: #2a3347;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
}
.pub-header-logo-wrap {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
}
.pub-header-logo {
    width: 5.5rem;
    height: 5.5rem;
    border-radius: 16px;
    border: 4px solid #fff;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
    object-fit: cover;
    display: block;
    background: #fff;
}
.public-body.dark .pub-header-logo {
    border-color: #161b27;
    background: #1e2535;
}
.pub-header-logo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #9ca3af;
}
.pub-header-logo-placeholder .pub-icon-svg {
    width: 2rem;
    height: 2rem;
}
.pub-header-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
}
.pub-header-name {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1.375rem;
    line-height: 1.25;
    margin: 0;
    color: #111;
}
@media (min-width: 768px) {
    .pub-header-name { font-size: 1.625rem; }
}
.public-body.dark .pub-header-name { color: #e8edf5; }
.pub-header-badge { margin-top: 0.15rem; }
.pub-header-meta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    font-size: 0.8125rem;
    color: #6b7280;
    margin: 0.15rem 0 0;
}
.pub-header-meta .pub-icon-svg {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    opacity: 0.7;
}
.pub-header-desc {
    font-size: 0.875rem;
    color: #6b7280;
    line-height: 1.5;
    margin: 0.25rem 0 0;
    max-width: 28rem;
}
.public-body.dark .pub-header-desc { color: #9ca3af; }
.public-body.dark .pub-header-meta { color: #8a96b0; }
.pub-header-share {
    position: absolute;
    top: 0.875rem;
    right: 0.875rem;
    margin: 0;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    color: #374151;
    border-radius: 50%;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.pub-header-share:hover { background: #e5e7eb; }
.public-body.dark .pub-header-share {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.15);
    color: #e8edf5;
}
.btn-share {
    background: rgba(45, 27, 105, 0.08);
    border: 1px solid rgba(45, 27, 105, 0.15);
    color: #2d1b69;
    border-radius: 10px;
    padding: 8px 12px;
    cursor: pointer;
    transition: background 0.2s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.btn-share:hover { background: rgba(45, 27, 105, 0.14); }
.public-body.dark .btn-share {
    background: rgba(255,255,255,0.08);
    border-color: rgba(255,255,255,0.2);
    color: #e8edf5;
}
.pub-icon-svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    display: block;
}
.pub-service-tags {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    margin-top: 0.75rem;
}
.pub-service-tag {
    font-size: 0.75rem;
    font-weight: 500;
    color: #4b5563;
    background: #f3f4f6;
    padding: 5px 12px;
    border-radius: 6px;
    line-height: 1.2;
}
.public-body.dark .pub-service-tag {
    background: #1e2535;
    color: #9ca3af;
}
.pub-info-strip {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0;
    width: 100%;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid #eee;
}
.public-body.dark .pub-info-strip { border-top-color: #2a3347; }
.pub-info-link {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    padding: 0 1rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: #374151;
    text-decoration: none;
    background: none;
    border: none;
    cursor: pointer;
    font-family: inherit;
    transition: color 0.15s;
    min-width: 4.5rem;
}
.pub-info-link .pub-icon-svg {
    width: 20px;
    height: 20px;
    color: #111;
}
.pub-info-link:hover {
    color: var(--accent);
}
.pub-info-link:hover .pub-icon-svg {
    color: var(--accent);
}
.public-body.dark .pub-info-link { color: #c5cdd8; }
.public-body.dark .pub-info-link .pub-icon-svg { color: #e8edf5; }
.pub-info-divider {
    width: 1px;
    height: 2rem;
    background: #e5e7eb;
    flex-shrink: 0;
}
.public-body.dark .pub-info-divider { background: #2a3347; }
@media (max-width: 380px) {
    .pub-info-link {
        padding: 0 0.65rem;
        font-size: 0.6875rem;
        min-width: 0;
    }
}
.pub-main { max-width: 48rem; margin: 0 auto; padding: 1.25rem 1rem 6rem; }
.pub-main.has-cart-sticky { padding-bottom: 6.5rem; }
.pub-main.has-cart-sticky-collapsed { padding-bottom: 4.25rem; }
@media (min-width: 768px) {
    .pub-main { padding-bottom: 2.5rem; }
    .pub-main.has-cart-sticky { padding-bottom: 2.5rem; }
    .pub-main.has-cart-sticky-collapsed { padding-bottom: 2.5rem; }
}

/* Page menu — fond blanc */
.pub-menu-page { background: #fff !important; }
.pub-menu-page .scani-bg { display: none; }
.pub-menu-page .pub-topbar {
    background: #fff;
    border-bottom: 1px solid #eee;
    box-shadow: none;
}
.public-body.dark.pub-menu-page { background: #0f1117 !important; }
.public-body.dark.pub-menu-page .pub-topbar {
    background: #161b27;
    border-bottom-color: #2a3347;
}

/* Compteur panier visible */
.cart-badge-empty { display: none !important; }
.cart-badge-visible { display: flex !important; }
.pub-card {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 14px; overflow: hidden;
    box-shadow: 0 4px 20px rgba(15, 23, 42, 0.05);
}
.pub-item-img { aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.btn-accent {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--accent); color: white;
    border-radius: 9999px; padding: 0.5rem 1.25rem;
    font-weight: 600; font-size: 0.875rem;
    transition: filter 0.15s;
    border: none;
    cursor: pointer;
    white-space: nowrap;
}
.btn-accent:hover { filter: brightness(1.1); }
.price-accent { color: var(--accent); font-weight: 700; font-family: 'Sora', sans-serif; }

/* ── Panier latéral ── */
.cart-panel {
    position: fixed; top: 0; right: 0; bottom: 0;
    width: 100%; max-width: 440px;
    background: #ffffff; z-index: 10050;
    transform: translateX(100%);
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: -8px 0 40px rgba(0,0,0,0.12);
    display: flex; flex-direction: column;
    color: #111827;
}
.cart-panel.open { transform: translateX(0); }

.cart-panel-header {
    display: flex; align-items: center; gap: 0.875rem;
    padding: 1.125rem 1.25rem;
    border-bottom: 1px solid #f1f5f9;
    background: #fff;
    flex-shrink: 0;
}
.cart-panel-header-icon {
    width: 2.75rem; height: 2.75rem; border-radius: 12px;
    background: linear-gradient(135deg, var(--accent), var(--accent-dark));
    color: white; display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.cart-close-btn {
    width: 2.25rem; height: 2.25rem; border-radius: 10px;
    border: 1px solid #e5e7eb; background: #f9fafb;
    color: #6b7280; padding: 0;
    display: grid; place-items: center;
    cursor: pointer; transition: all 0.15s; flex-shrink: 0;
    line-height: 0;
}
.cart-close-btn svg { width: 14px; height: 14px; display: block; }
.cart-close-btn:hover { background: #f3f4f6; color: #111827; border-color: #d1d5db; }

.cart-panel-body {
    flex: 1 1 0%;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    display: flex;
    flex-direction: column;
}

.cart-panel-items {
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    flex-shrink: 0;
}

.cart-panel-footer {
    border-top: 1px solid #f1f5f9;
    background: #fafafa;
    flex-shrink: 0;
}

.cart-totals {
    padding: 1rem 1.25rem;
    background: #fff;
    border-bottom: 1px solid #f1f5f9;
}
.cart-totals-row {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 0.875rem; color: #6b7280; padding: 0.2rem 0;
}
.cart-totals-row span:last-child { color: #374151; font-weight: 500; }
.cart-totals-final {
    margin-top: 0.5rem; padding-top: 0.75rem;
    border-top: 1px dashed #e5e7eb;
    font-size: 1.0625rem; font-weight: 700; color: #111827 !important;
}
.cart-totals-final span:last-child { font-size: 1.125rem; }
.cart-totals-discount span:last-child { font-weight: 600; }

.cart-coupon {
    padding: 0.75rem 1.25rem;
    border-bottom: 1px solid #f1f5f9;
    background: #fff;
}
.cart-coupon-row {
    display: flex;
    gap: 0.5rem;
}
.cart-coupon-input {
    flex: 1;
    min-width: 0;
    text-transform: uppercase;
    font-family: ui-monospace, monospace;
    font-size: 0.875rem !important;
}
.cart-coupon-btn {
    flex-shrink: 0;
    padding: 0.5rem 0.875rem;
    font-size: 0.8125rem;
    font-weight: 600;
    border: none;
    border-radius: 10px;
    background: #f1f5f9;
    color: #374151;
    cursor: pointer;
    transition: background 0.15s;
}
.cart-coupon-btn:hover:not(:disabled) { background: #e2e8f0; }
.cart-coupon-btn:disabled { opacity: 0.6; cursor: wait; }
.cart-coupon-msg {
    font-size: 0.75rem;
    margin-top: 0.375rem;
}
.cart-coupon-msg-error { color: #dc2626; }
.cart-coupon-msg-ok { color: #16a34a; }
.cart-coupon-applied {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-top: 0.5rem;
    padding: 0.5rem 0.625rem;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    border-radius: 8px;
    font-size: 0.8125rem;
    color: #047857;
}
.cart-coupon-remove {
    border: none;
    background: transparent;
    color: #b45309;
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: underline;
}

/* Formulaire panier — toujours fond blanc, texte noir */
.cart-form {
    padding: 1rem 1.25rem 1.25rem;
    display: flex; flex-direction: column; gap: 0.625rem;
}
.cart-form-title,
.cart-field-label {
    display: block;
    font-size: 0.8125rem; font-weight: 600;
    color: #374151; margin-bottom: 0.125rem;
}
.cart-form-title { margin-bottom: 0.25rem; margin-top: 0.25rem; }

.cart-field {
    width: 100%;
    background: #ffffff !important;
    border: 1.5px solid #d1d5db !important;
    border-radius: 10px !important;
    padding: 0.6875rem 0.875rem !important;
    font-size: 0.9375rem !important;
    color: #111827 !important;
    transition: border-color 0.15s, box-shadow 0.15s;
    -webkit-text-fill-color: #111827;
}
.cart-field-area { resize: vertical; min-height: 4.5rem; }
.cart-field::placeholder { color: #9ca3af !important; opacity: 1; }
.cart-field:focus {
    outline: none !important;
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.12) !important;
}

.cart-order-types {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem;
    margin-bottom: 0.5rem;
}
.order-type-opt { display: block; cursor: pointer; }
.order-type-opt input { display: none; }
.cart-order-types .order-type-opt span {
    background: #ffffff;
    border: 1.5px solid #d1d5db;
    color: #374151;
    padding: 0.5625rem 0.375rem;
    border-radius: 10px;
    font-size: 0.75rem; font-weight: 600;
}
.cart-order-types .order-type-opt input:checked + span {
    background: var(--accent);
    border-color: var(--accent);
    color: #ffffff;
    box-shadow: 0 2px 8px rgba(249, 115, 22, 0.35);
}

.pub-cart-item {
    display: flex; align-items: center; gap: 0.75rem;
    padding: 0.875rem; border-radius: 12px;
    background: #fff; border: 1px solid #e5e7eb;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.pub-cart-item p:first-child { color: #111827; font-weight: 600; }

.pub-cart-empty { text-align: center; padding: 2.5rem 1rem; color: #9ca3af; }
.pub-cart-empty span { font-size: 2.5rem; display: block; margin-bottom: 0.5rem; }

.qty-btn {
    width: 2rem; height: 2rem; border-radius: 8px;
    border: 1.5px solid #d1d5db; background: #fff;
    color: #374151; padding: 0;
    display: grid; place-items: center;
    line-height: 0; cursor: pointer;
    transition: all 0.15s;
}
.qty-btn-icon {
    width: 14px;
    height: 14px;
    display: block;
    pointer-events: none;
}
.qty-btn:hover { border-color: var(--accent); color: var(--accent); background: #ecfdf5; }

.btn-submit-order {
    display: flex; align-items: center; justify-content: center; gap: 0.5rem;
    width: 100%; padding: 0.875rem 1rem; margin-top: 0.375rem;
    background: linear-gradient(135deg, var(--accent), var(--accent-dark));
    color: white; border: none; border-radius: 12px;
    font-size: 0.9375rem; font-weight: 700; cursor: pointer;
    box-shadow: 0 4px 14px rgba(249, 115, 22, 0.35);
    transition: transform 0.15s, box-shadow 0.15s, opacity 0.15s;
}
.btn-submit-order:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(249, 115, 22, 0.45);
}
.btn-submit-order:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}

.cart-order-success {
    margin-top: 0.75rem;
    padding: 1rem 1.1rem;
    border-radius: 10px;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    color: #047857;
    font-size: 0.95rem;
    font-weight: 600;
    text-align: center;
    line-height: 1.45;
}
.cart-order-success-sub {
    display: block;
    margin-top: 0.35rem;
    font-size: 0.8rem;
    font-weight: 500;
    color: #065f46;
}
.cart-order-error {
    margin-top: 0.75rem;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
    font-size: 0.875rem;
    font-weight: 500;
    text-align: center;
}

.cart-fields-hidden {
    display: none !important;
}

.cart-contact-fields,
.cart-delivery-fields {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    margin-top: 0.5rem;
}

.cart-delivery-fields .cart-field-label:first-child {
    margin-top: 0;
}

.cart-overlay {
    position: fixed; inset: 0; background: rgba(15, 23, 42, 0.45);
    backdrop-filter: blur(2px);
    z-index: 10040; opacity: 0; pointer-events: none;
    transition: opacity 0.3s;
}
.cart-overlay.open { opacity: 1; pointer-events: auto; }

@media (max-width: 767px) {
    .cart-panel {
        top: auto; max-width: 100%; height: 92vh;
        border-radius: 20px 20px 0 0;
        transform: translateY(100%);
    }
    .cart-panel.open { transform: translateY(0); }
    .cart-order-types .order-type-opt span {
        font-size: 0.6875rem;
        padding: 0.5rem 0.25rem;
    }
}

/* Panier toujours clair, même en mode sombre */
.public-body.dark .cart-panel,
.public-body.dark .cart-panel-header,
.public-body.dark .cart-panel-footer,
.public-body.dark .cart-totals,
.public-body.dark .pub-cart-item {
    background: #ffffff;
    color: #111827;
}
.public-body.dark .cart-panel-header h2,
.public-body.dark .pub-cart-item p { color: #111827; }
.public-body.dark .cart-field-label,
.public-body.dark .cart-form-title { color: #374151; }
.public-body.dark .cart-totals-row { color: #6b7280; }
.public-body.dark .cart-totals-row span:last-child { color: #374151; }

.pub-category-card {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 14px; padding: 1.25rem;
    text-align: center; cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.04);
}
.pub-category-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }

.categories-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 1rem;
}

.menu-items-grid {
    display: flex;
    flex-direction: column;
    gap: 0;
    background: #fff;
    border-radius: 12px;
    border: 1px solid #eee;
    overflow: hidden;
}
.public-body.dark .menu-items-grid {
    background: #161b27;
    border-color: #2a3347;
}

@media (max-width: 767px) {
    .grid-stats { grid-template-columns: repeat(2, 1fr); }
}

/* Sidebar dashboard — mobile LTR + RTL */
@media (max-width: 1023px) {
    body.has-substitution-banner .sidebar {
        top: var(--substitution-banner-h);
        max-height: calc(100dvh - var(--substitution-banner-h));
    }
    body.has-substitution-banner #sidebar-overlay {
        top: var(--substitution-banner-h);
    }
    .sidebar {
        position: fixed;
        top: 0;
        bottom: 0;
        width: min(280px, 88vw);
        max-width: 88vw;
        z-index: 50;
        transition: transform 0.3s ease;
        will-change: transform;
    }
    html:not([dir="rtl"]) .sidebar {
        left: 0;
        right: auto;
        transform: translate3d(-100%, 0, 0);
    }
    html[dir="rtl"] .sidebar {
        left: auto;
        right: 0;
        border-right: none;
        border-left: 1px solid rgba(255, 255, 255, 0.6);
        transform: translate3d(100%, 0, 0);
    }
    .sidebar.open {
        transform: translate3d(0, 0, 0) !important;
    }
    .sidebar-close-btn {
        flex-shrink: 0;
        width: 2rem;
        height: 2rem;
        padding: 0;
        border: 1px solid #e5e7eb;
        border-radius: 8px;
        background: #f9fafb;
        color: #374151;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
    }
    .sidebar-close-btn svg {
        display: block;
        flex-shrink: 0;
    }
    .sidebar-close-btn:hover { background: #f3f4f6; }
    body.sidebar-open .flex-1.flex.flex-col {
        pointer-events: none;
    }
}
@media (min-width: 1024px) {
    .sidebar {
        position: static !important;
        transform: none !important;
        width: 240px;
    }
    #sidebar-close { display: none !important; }
}

/* Dashboard carte — formulaires mobile */
.category-block-head {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}
.category-block-fields {
    flex: 1;
    min-width: 0;
    display: grid;
    gap: 0.5rem;
}
.category-block-fields-form {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.5rem;
    align-items: center;
}
.category-block-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem;
}
.category-block-actions form {
    margin: 0;
}
@media (max-width: 767px) {
    .category-block-head {
        flex-wrap: wrap;
        align-items: flex-start;
    }
    .category-block-fields {
        width: 100%;
    }
    .category-block-fields-form {
        grid-template-columns: 1fr;
    }
    .category-block .form-input,
    .category-block .form-select {
        min-width: 0;
        width: 100%;
    }
    .orders-table td:has(.order-type-pill) {
        min-width: 5.75rem;
    }
    .orders-table .order-type-pill {
        font-size: 0.625rem;
        padding: 0.2rem 0.45rem;
    }
    .category-block details summary {
        flex-wrap: wrap;
        gap: 0.5rem;
    }
    .category-block details .p-4 {
        padding: 0.75rem;
    }
    .category-block details form {
        grid-template-columns: 1fr !important;
    }
    main.flex-1.p-4 {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }
}

/* ── Public page v2 ── */
.pub-banner-fallback {
    background: linear-gradient(135deg, #1a1a2e 0%, #2d1b69 50%, #1a5c38 100%);
    width: 100%;
    height: 100%;
}
.pub-icon-btn {
    width: 2.5rem; height: 2.5rem; border-radius: 9999px;
    border: 1px solid #e5e7eb; display: flex; align-items: center; justify-content: center;
    font-size: 1.25rem; transition: background 0.15s;
}
.public-body.dark .pub-icon-btn { border-color: #2a3347; }
.pub-action-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem;
    padding: 8px 14px; border-radius: 100px; border: 1px solid #e5e7eb;
    font-size: 0.8125rem; font-weight: 600; transition: all 0.15s;
}
.pub-action-btn:hover { border-color: var(--accent); color: var(--accent); }
.public-body.dark .pub-action-btn { border-color: #2a3347; }
.public-body.dark .pub-action-btn:hover { background: #1e2535; }
/* pub-action-btn conservé pour d'autres vues */

.pub-cat-nav {
    position: sticky;
    top: 3.5rem;
    z-index: 30;
    background: #fff;
    padding: 0.75rem 0 0.5rem;
    margin: 0 -1rem 1.25rem;
    padding-left: 1rem;
    padding-right: 1rem;
    border-bottom: 1px solid #eee;
}
.public-body.dark .pub-cat-nav {
    background: #0f1117;
    border-bottom-color: #2a3347;
}
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }
.scrollbar-hide::-webkit-scrollbar { display: none; }
.pub-cat-pill {
    display: inline-flex; align-items: center; gap: 0.375rem;
    padding: 0.5rem 1rem; border-radius: 9999px; white-space: nowrap;
    border: 1px solid #e5e7eb; font-size: 0.8125rem; font-weight: 500;
    transition: all 0.15s; flex-shrink: 0;
}
.pub-cat-pill:hover, .pub-cat-pill.active {
    background: var(--accent); color: white; border-color: var(--accent);
}
.public-body.dark .pub-cat-pill { border-color: #2a3347; }

/* Ligne plat — carte menu */
.dish-row {
    display: flex;
    align-items: stretch;
    gap: 14px;
    padding: 16px;
    border-bottom: 1px solid #eee;
    background: #fff;
    transition: background 0.15s;
}
.dish-row:last-child { border-bottom: none; }
.dish-row:hover { background: #fafafa; }
.public-body.dark .dish-row {
    background: #161b27;
    border-bottom-color: #2a3347;
}
.public-body.dark .dish-row:hover { background: #1a2030; }

.dish-row-body {
    flex: 1;
    min-width: 0;
    padding-right: 4px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.dish-name {
    font-size: 1rem;
    font-weight: 600;
    color: #111;
    margin: 0;
    line-height: 1.35;
}
.public-body.dark .dish-name { color: #e8edf5; }
.dish-desc {
    font-size: 0.8125rem;
    color: #6b7280;
    line-height: 1.45;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.public-body.dark .dish-desc { color: #9ca3af; }
.dish-row-foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    padding-top: 6px;
}
.dish-price {
    font-size: 1rem;
    font-weight: 700;
    color: #111;
    font-family: 'Sora', sans-serif;
}
.public-body.dark .dish-price { color: #e8edf5; }
.dish-time {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    color: #6b7280;
    font-weight: 500;
}
.dish-time::before {
    content: '';
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    background: currentColor;
    opacity: 0.45;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E") center / contain no-repeat;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E") center / contain no-repeat;
}

.dish-row-media {
    width: 104px;
    height: 104px;
    flex-shrink: 0;
    position: relative;
    border-radius: 10px;
    overflow: visible;
}
@media (min-width: 768px) {
    .dish-row-media { width: 120px; height: 120px; }
}
.dish-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    border-radius: 10px;
}
.dish-img.dish-unavailable { filter: grayscale(60%) opacity(0.55); }
.dish-img-placeholder {
    width: 100%;
    height: 100%;
    border-radius: 10px;
    background: #f3f4f6;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.75rem;
}
.public-body.dark .dish-img-placeholder { background: #1e2535; }

.btn-add-dish {
    position: absolute;
    right: -6px;
    bottom: -6px;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #fff;
    color: var(--accent, #006233);
    border: 2px solid #e5e7eb;
    padding: 0;
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: all 0.2s ease;
    line-height: 0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
    z-index: 2;
}
.btn-add-dish-icon { display: block; pointer-events: none; }
.btn-add-dish-check {
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}
.btn-add-dish:hover {
    background: var(--accent, #006233);
    color: #fff;
    border-color: var(--accent, #006233);
    transform: scale(1.08);
}
.btn-add-dish:active { transform: scale(0.95); }
.btn-add-dish.added {
    background: #1a5c38 !important;
    color: #fff !important;
    border-color: #1a5c38 !important;
    animation: btn-pop 0.3s ease;
}
@keyframes btn-pop {
    0% { transform: scale(1); }
    50% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

.dish-unavailable-badge {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.45);
    color: #fff;
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-radius: 10px;
    text-align: center;
    padding: 4px;
}
.pub-item-image-wrap { position: relative; overflow: hidden; }
.pub-item-no-img {
    display: flex; align-items: center; justify-content: center;
    font-size: 3rem; background: #f3f4f6;
}
.public-body.dark .pub-item-no-img { background: #1e2535; }
.pub-prep-badge {
    position: absolute; bottom: 0.5rem; left: 0.5rem;
    background: rgba(0,0,0,0.65); color: white;
    font-size: 0.75rem; padding: 0.125rem 0.5rem; border-radius: 6px;
}
.pub-restaurant-badge {
    display: inline-flex;
    align-items: center;
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.3rem 0.7rem;
    border-radius: 999px;
    line-height: 1.2;
    white-space: nowrap;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.12);
}
.pub-restaurant-badge--preview {
    font-size: 0.625rem;
    vertical-align: middle;
}
.pub-restaurant-badge--header {
    font-size: 0.75rem;
    padding: 0.4rem 0.85rem;
    flex-shrink: 0;
}
.pub-restaurant-badge--populaire {
    background: linear-gradient(135deg, #fb923c 0%, #ea580c 100%);
    color: #fff;
}
.pub-restaurant-badge--recommande {
    background: linear-gradient(135deg, #006233 0%, #15803d 100%);
    color: #fff;
}
.pub-restaurant-badge--recommande::before {
    content: '★ ';
}
.pub-restaurant-badge--nouveau {
    background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
    color: #fff;
}
.public-body.dark .pub-restaurant-badge--populaire {
    background: linear-gradient(135deg, #c2410c 0%, #9a3412 100%);
}
.public-body.dark .pub-restaurant-badge--recommande {
    background: linear-gradient(135deg, #14532d 0%, #166534 100%);
}
.public-body.dark .pub-restaurant-badge--nouveau {
    background: linear-gradient(135deg, #1e40af 0%, #1e3a8a 100%);
}
.pub-empty { text-align: center; padding: 4rem 1rem; }
.pub-menu-empty {
    display: flex;
    justify-content: center;
    padding: 2rem 1rem 4rem;
}
.pub-menu-empty-card {
    width: 100%;
    max-width: 28rem;
    text-align: center;
    padding: 2.5rem 2rem;
    border-radius: 1.25rem;
    border: 1px solid #e5e7eb;
    background: #fff;
    box-shadow: 0 10px 40px rgba(15, 23, 42, 0.06);
}
.public-body.dark .pub-menu-empty-card {
    background: #161b27;
    border-color: #2a3347;
}
.pub-menu-empty-icon {
    font-size: 3.5rem;
    line-height: 1;
    margin-bottom: 1rem;
    opacity: 0.85;
}
.pub-menu-empty-title {
    font-size: 1.35rem;
    font-weight: 700;
    color: #111827;
    line-height: 1.3;
}
.public-body.dark .pub-menu-empty-title { color: #e8edf5; }
.pub-menu-empty-text {
    margin-top: 0.75rem;
    font-size: 0.95rem;
    line-height: 1.55;
    color: #6b7280;
}
.public-body.dark .pub-menu-empty-text { color: #9ca3af; }
.pub-menu-empty-btn {
    display: inline-flex;
    margin-top: 1.5rem;
    padding: 0.75rem 1.5rem;
    font-weight: 600;
    border-radius: 9999px;
    text-decoration: none;
}
.pub-social-link {
    padding: 0.375rem 0.875rem; border-radius: 9999px;
    border: 1px solid #e5e7eb; font-size: 0.8125rem; color: inherit;
    transition: all 0.15s;
}
.pub-social-link:hover { border-color: var(--accent); color: var(--accent); }
.public-body.dark .pub-social-link { border-color: #2a3347; }
.pub-border { border-color: #e5e7eb; }
.public-body.dark .pub-border { border-color: #2a3347; }

.cart-sticky-shell {
    position: fixed;
    bottom: max(16px, env(safe-area-inset-bottom, 0px));
    left: 50%;
    transform: translateX(-50%) translateY(120px);
    width: calc(100% - 32px);
    max-width: 48rem;
    z-index: 90;
    display: none;
    opacity: 0;
    pointer-events: none;
    transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease;
}
.cart-sticky-shell.is-visible {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
    pointer-events: auto;
}
.cart-sticky-shell.is-visible.is-collapsed {
    transform: translateX(-50%) translateY(calc(100% - 1.5rem));
}
.cart-sticky-shell.cart-sticky-suppressed {
    transform: translateX(-50%) translateY(120px) !important;
    opacity: 0 !important;
    pointer-events: none !important;
}
.cart-sticky {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--accent, #006233);
    color: white;
    border-radius: 14px;
    box-shadow: 0 8px 28px rgba(0, 98, 51, 0.35);
    overflow: hidden;
    transition: box-shadow 0.3s ease, background 0.2s ease;
}
.cart-sticky-body {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px 10px;
    cursor: pointer;
    transition: opacity 0.25s ease, max-height 0.35s ease, padding 0.35s ease;
    max-height: 5rem;
}
.cart-sticky-body:hover { background: var(--accent-dark, #004d28); }
.cart-sticky-body:active { transform: scale(0.99); }
.cart-sticky-shell.is-collapsed .cart-sticky {
    background: transparent;
    box-shadow: none;
}
.cart-sticky-shell.is-collapsed .cart-sticky-body {
    max-height: 0;
    padding-top: 0;
    padding-bottom: 0;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}
.cart-sticky-toggle {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 1.5rem;
    margin: 0 0 2px;
    padding: 0;
    border: none;
    border-radius: 0 0 12px 12px;
    background: var(--accent, #006233);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(0, 98, 51, 0.35);
    transition: background 0.2s ease, box-shadow 0.3s ease, border-radius 0.3s ease;
}
.cart-sticky-toggle:hover { background: var(--accent-dark, #004d28); }
.cart-sticky-shell.is-collapsed .cart-sticky-toggle {
    border-radius: 12px 12px 0 0;
    margin-bottom: 0;
    box-shadow: 0 -4px 16px rgba(0, 98, 51, 0.35);
}
.cart-sticky-toggle-chevron {
    display: block;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.cart-sticky-shell.is-collapsed .cart-sticky-toggle-chevron {
    transform: rotate(180deg);
}
.cart-sticky-left {
    display: flex;
    align-items: center;
    gap: 8px;
}
.cart-sticky-count {
    background: white;
    color: var(--accent, #006233);
    width: 26px;
    height: 26px;
    border-radius: 50%;
    font-weight: 700;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.cart-sticky-label {
    font-size: 14px;
    opacity: 0.85;
}
.cart-sticky-text {
    font-size: 15px;
    font-weight: 600;
}
.cart-sticky-total {
    font-size: 15px;
    font-weight: 700;
}
@media (min-width: 1024px) {
    .cart-sticky-shell { display: none !important; }
}

/* Menu public — bulle WhatsApp (si numéro renseigné dans le dashboard) */
.pub-wa-fab {
    --pub-wa-green: #25d366;
    position: fixed;
    z-index: 85;
    right: max(16px, env(safe-area-inset-right, 0px));
    bottom: max(20px, env(safe-area-inset-bottom, 0px));
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--pub-wa-green);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 20px rgba(37, 211, 102, 0.45);
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.pub-wa-fab:hover {
    transform: scale(1.06);
    box-shadow: 0 6px 28px rgba(37, 211, 102, 0.55);
    color: #fff;
}
.pub-wa-fab svg {
    width: 30px;
    height: 30px;
    fill: currentColor;
}
.pub-wa-fab-label {
    position: absolute;
    right: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
    white-space: nowrap;
    background: #111827;
    color: #fff;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.4rem 0.65rem;
    border-radius: 8px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease;
}
.pub-wa-fab:hover .pub-wa-fab-label,
.pub-wa-fab:focus-visible .pub-wa-fab-label {
    opacity: 1;
}
[dir="rtl"] .pub-wa-fab {
    right: auto;
    left: max(16px, env(safe-area-inset-left, 0px));
}
[dir="rtl"] .pub-wa-fab-label {
    right: auto;
    left: calc(100% + 10px);
}
@media (max-width: 1023px) {
    .pub-menu-page.pub-has-cart-sticky .pub-wa-fab {
        bottom: calc(5.75rem + env(safe-area-inset-bottom, 0px));
    }
    .pub-menu-page.pub-has-cart-sticky-collapsed .pub-wa-fab {
        bottom: calc(3.25rem + env(safe-area-inset-bottom, 0px));
    }
    .pub-wa-fab-label { display: none; }
}

.cart-toast,
.toast-added {
    position: fixed;
    top: 80px;
    left: 50%;
    transform: translateX(-50%) translateY(-20px);
    background: #1a5c38;
    color: white;
    padding: 10px 20px;
    border-radius: 100px;
    font-size: 14px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
    z-index: 9995;
    opacity: 0;
    pointer-events: none;
    transition: all 0.25s ease;
    white-space: nowrap;
    box-shadow: 0 4px 20px rgba(26,92,56,0.35);
}
.cart-toast.show,
.toast-added.show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
.toast-icon {
    width: 20px;
    height: 20px;
    background: rgba(255,255,255,0.2);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
}

/* Horaires hebdomadaires */
.hours-form .hours-time-input:disabled { background: #f3f4f6; cursor: not-allowed; }

/* Autocomplétion adresse */
.address-autocomplete { position: relative; }
/* Dropdown natif Google (widget Autocomplete) — masqué, on utilise notre liste */
.pac-container,
.pac-logo,
.pac-icon { display: none !important; }
.address-suggestions {
    position: absolute;
    left: 0; right: 0; top: calc(100% + 4px);
    z-index: 50;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
    max-height: 220px;
    overflow-y: auto;
    list-style: none;
    margin: 0;
    padding: 0.25rem 0;
}
.address-suggestion {
    padding: 0.625rem 0.875rem;
    font-size: 0.875rem;
    cursor: pointer;
    color: #111827;
}
.address-suggestion:hover { background: #ecfdf5; color: var(--accent); }

/* Admin — tri des sections landing */
.landing-sort-list { list-style: none; margin: 0; padding: 0; }
.landing-sort-item { cursor: grab; user-select: none; }
.landing-sort-item.is-dragging { opacity: 0.45; cursor: grabbing; }
.landing-sort-item.is-drag-over { border-color: var(--accent) !important; background: rgba(0, 98, 51, 0.06) !important; }
.landing-sort-handle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border: none;
    border-radius: 8px;
    background: var(--bg3);
    color: var(--text2);
    font-size: 1rem;
    line-height: 1;
    cursor: grab;
}
.landing-sort-handle:active { cursor: grabbing; }

.info-modal { position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.info-modal.hidden { display: none; }
.info-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.5); }
.info-modal-box {
    position: relative; background: white; border-radius: 14px;
    padding: 1.5rem; max-width: 24rem; width: 100%;
    box-shadow: 0 20px 40px rgba(0,0,0,0.15);
}
.public-body.dark .info-modal-box { background: #161b27; color: #e8edf5; }

.pub-hours-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}
.pub-hours-list li {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
.pub-hours-list li:last-child { border-bottom: none; padding-bottom: 0; }
.pub-hours-list li:first-child { padding-top: 0; }
.pub-hours-day { font-weight: 600; color: inherit; flex-shrink: 0; }
.pub-hours-time { text-align: right; color: var(--text-muted, #64748b); }
.public-body.dark .pub-hours-list li { border-bottom-color: rgba(255, 255, 255, 0.1); }
.public-body.dark .pub-hours-time { color: #94a3b8; }
.pub-hours-legacy { margin: 0; }

/* Espace cuisine */
.kitchen-header { position: sticky; top: 0; z-index: 30; }
.kitchen-stats {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}
.kitchen-stat {
    flex: 1;
    min-width: 140px;
    padding: 1rem 1.25rem;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: var(--bg3);
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.kitchen-stat-new { border-color: rgba(210, 16, 52, 0.25); background: rgba(254, 242, 242, 0.7); }
.kitchen-stat-prep { border-color: rgba(234, 179, 8, 0.3); background: rgba(254, 252, 232, 0.7); }
.kitchen-stat-done { border-color: rgba(34, 197, 94, 0.25); background: rgba(240, 253, 244, 0.7); }
.kitchen-stat-label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text2); font-weight: 600; }
.kitchen-stat-value { font-family: var(--font-sora, 'Sora', sans-serif); font-size: 2rem; font-weight: 800; line-height: 1; }
.kitchen-stat-new .kitchen-stat-value { color: #d21034; }
.kitchen-stat-prep .kitchen-stat-value { color: #ca8a04; }
.kitchen-stat-done .kitchen-stat-value { color: #16a34a; }
.kitchen-done-section { margin-top: 1.5rem; padding: 1.25rem; }
.kitchen-done-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem 1rem;
    margin-bottom: 1rem;
}
.kitchen-done-title {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-size: 1rem;
    font-weight: 700;
    color: #16a34a;
}
.kitchen-done-sub { font-size: 0.8rem; color: var(--text2); margin-top: 0.2rem; }
.kitchen-done-list { display: flex; flex-direction: column; gap: 0.5rem; }
.kitchen-done-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-radius: 12px;
    border: 1px solid rgba(34, 197, 94, 0.15);
    background: rgba(240, 253, 244, 0.45);
}
.kitchen-done-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    min-width: 0;
}
.kitchen-done-num {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-weight: 800;
    color: #006233;
    font-size: 0.95rem;
}
.kitchen-done-meta { font-size: 0.8rem; color: var(--text2); font-weight: 600; }
.kitchen-done-actions { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.kitchen-sound-hint {
    position: fixed;
    bottom: 1.25rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10060;
    animation: kitchen-hint-in 0.35s ease;
}
.kitchen-sound-ok {
    position: fixed;
    bottom: 1.25rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10060;
    padding: 0.65rem 1.25rem;
    border-radius: 999px;
    background: #006233;
    color: #fff;
    font-weight: 700;
    font-size: 0.875rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    animation: kitchen-hint-in 0.35s ease;
}
.kitchen-sound-hint-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.65rem 1.1rem;
    border-radius: 999px;
    border: 1px solid rgba(34, 197, 94, 0.35);
    background: #fff;
    color: #006233;
    font-weight: 700;
    font-size: 0.875rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    cursor: pointer;
}
.kitchen-sound-hint-btn:hover { background: rgba(240, 253, 244, 0.95); }
.kitchen-sound-hint-btn--on {
    border-color: rgba(107, 114, 128, 0.35);
    color: #374151;
    background: #f9fafb;
}
.kitchen-sound-hint-btn--on:hover { background: #f3f4f6; }
@keyframes kitchen-hint-in {
    from { opacity: 0; transform: translateX(-50%) translateY(12px); }
    to { opacity: 1; transform: translateX(-50%) translateY(0); }
}
.kitchen-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    align-items: start;
}
@media (max-width: 900px) {
    .kitchen-columns { grid-template-columns: 1fr; }
}
.kitchen-column-title {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid rgba(0, 0, 0, 0.06);
}
.kitchen-column-new .kitchen-column-title { color: #d21034; border-color: rgba(210, 16, 52, 0.2); }
.kitchen-column-prep .kitchen-column-title { color: #ca8a04; border-color: rgba(234, 179, 8, 0.25); }
.kitchen-column-empty {
    font-size: 0.875rem;
    color: var(--text2);
    padding: 1.5rem 1rem;
    text-align: center;
    background: rgba(241, 245, 249, 0.45);
    border-radius: 12px;
    border: 1px dashed rgba(0, 0, 0, 0.08);
}
.kitchen-orders-stack {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.kitchen-item-body {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}
.kitchen-item-opt {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text2);
    background: rgba(241, 245, 249, 0.8);
    border-radius: 6px;
    padding: 0.15rem 0.45rem;
    width: fit-content;
}
.kitchen-orders-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1rem;
}
.kitchen-order-card {
    border-radius: 16px;
    border: 2px solid var(--border);
    background: #fff;
    padding: 1.125rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
}
.kitchen-order-card-new {
    border-color: rgba(210, 16, 52, 0.35);
    background: linear-gradient(180deg, #fff 0%, #fff8f8 100%);
}
.kitchen-order-card-prep {
    border-color: rgba(234, 179, 8, 0.35);
    background: linear-gradient(180deg, #fff 0%, #fffef5 100%);
}
.kitchen-order-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}
.kitchen-order-num {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-weight: 800;
    font-size: 1.125rem;
    color: var(--accent, #006233);
}
.kitchen-order-title {
    font-weight: 700;
    font-size: 1rem;
    margin-top: 0.15rem;
}
.kitchen-order-time {
    font-size: 0.8125rem;
    color: var(--text2);
}
.kitchen-order-items {
    list-style: none;
    margin: 0;
    padding: 0.75rem;
    background: rgba(241, 245, 249, 0.7);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.kitchen-order-items li {
    align-items: flex-start;
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
    font-size: 0.9375rem;
}
.kitchen-item-qty {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-weight: 800;
    color: var(--accent, #006233);
    min-width: 2rem;
}
.kitchen-item-name { font-weight: 600; }
.kitchen-order-note {
    font-size: 0.8125rem;
    color: var(--text2);
    padding: 0.5rem 0.75rem;
    background: rgba(241, 245, 249, 0.5);
    border-radius: 8px;
    line-height: 1.45;
}
.kitchen-actions-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: auto;
    padding-top: 0.25rem;
}
.btn-kitchen-validate {
    background: #006233;
    color: #fff;
    border: none;
    font-weight: 700;
    padding: 0.5rem 1rem;
    border-radius: 10px;
    cursor: pointer;
    font-size: 0.875rem;
    transition: filter 0.15s;
}
.btn-kitchen-validate:hover { filter: brightness(1.08); }
.btn-kitchen-done {
    background: #006233;
    color: #fff;
    border: none;
    font-weight: 700;
    padding: 0.5rem 1rem;
    border-radius: 10px;
    cursor: pointer;
    font-size: 0.875rem;
    transition: filter 0.15s;
}
.btn-kitchen-done:hover { filter: brightness(1.08); }
.btn-kitchen-print { font-size: 0.875rem; }
.kitchen-action-form { flex: 1; min-width: 0; }
.kitchen-action-form .btn-kitchen-validate,
.kitchen-action-form .btn-kitchen-done { width: 100%; }

/* Compte client — menu public (même vert que badge « Menu publié ») */
.btn-account-light {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.55rem 0.9rem;
    border: 1px solid rgba(34, 197, 94, 0.28);
    border-radius: 10px;
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--green);
    background: rgba(34, 197, 94, 0.15);
    box-shadow: none;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.btn-account-light:hover {
    background: rgba(34, 197, 94, 0.22);
    border-color: rgba(34, 197, 94, 0.4);
}
.btn-account-light--sm { padding: 0.45rem 0.75rem; font-size: 0.8125rem; }
.btn-account-light--block { width: 100%; padding: 0.75rem 1rem; }

.cart-account-bar {
    margin: 0 0 0.75rem;
    padding: 0.75rem 0.875rem;
    border-radius: 12px;
    background: rgba(34, 197, 94, 0.1);
    border: 1px solid rgba(34, 197, 94, 0.22);
}
.cart-form .cart-account-bar { margin-top: 0.25rem; }
.cart-account-text { margin: 0 0 0.65rem; font-size: 0.8125rem; color: #334155; }
.cart-account-logged-info { display: flex; align-items: center; gap: 0.65rem; }
.cart-account-avatar {
    width: 2.25rem; height: 2.25rem;
    display: flex; align-items: center; justify-content: center;
    background: #fff; border-radius: 50%;
    font-size: 1.1rem;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.cart-account-name { margin: 0; font-weight: 700; font-size: 0.9rem; color: var(--green); }
.cart-account-sub { margin: 0; font-size: 0.75rem; color: #64748b; }
.cart-account-link { color: var(--accent); font-weight: 600; text-decoration: none; }
.cart-account-link:hover { text-decoration: underline; }

.customer-auth-modal {
    position: fixed; inset: 0; z-index: 10100;
    display: flex; align-items: center; justify-content: center;
    padding: 1rem;
}
.customer-auth-modal.hidden { display: none !important; }
.customer-auth-backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(4px);
}
.customer-auth-box {
    position: relative; width: 100%; max-width: 24rem;
    background: #fff; border-radius: 16px;
    padding: 1.5rem;
    box-shadow: 0 24px 48px rgba(0,0,0,0.18);
    max-height: 90vh; overflow-y: auto;
}
.public-body.dark .customer-auth-box { background: #1e293b; color: #e2e8f0; }
.customer-auth-close {
    position: absolute; top: 0.75rem; right: 0.75rem;
    width: 2rem; height: 2rem; border: none; background: transparent;
    padding: 0;
    display: grid; place-items: center;
    line-height: 0; cursor: pointer; color: #64748b;
}
.customer-auth-close svg { width: 14px; height: 14px; display: block; }
.customer-auth-title {
    font-family: var(--font-sora, 'Sora', sans-serif);
    font-size: 1.125rem; font-weight: 700;
    margin: 0 0 0.35rem;
}
.customer-auth-lead { margin: 0 0 1rem; font-size: 0.875rem; color: #64748b; }
.customer-auth-tabs {
    display: flex; gap: 0.35rem; margin-bottom: 1rem;
    background: #f1f5f9; padding: 0.25rem; border-radius: 10px;
}
.customer-auth-tab {
    flex: 1; border: none; background: transparent;
    padding: 0.5rem; border-radius: 8px;
    font-weight: 600; font-size: 0.8125rem; cursor: pointer; color: #64748b;
}
.customer-auth-tab.is-active {
    background: rgba(34, 197, 94, 0.15); color: var(--green);
    box-shadow: none;
}
.customer-auth-form { display: flex; flex-direction: column; gap: 0.5rem; }

.contact-method-wrap { margin-bottom: 0.25rem; }
.contact-method-label {
    margin: 0 0 0.4rem; font-size: 0.75rem; font-weight: 600; color: #64748b;
}
.contact-method-tabs {
    display: flex; gap: 0.25rem; margin-bottom: 0.65rem;
    background: #f1f5f9; padding: 0.2rem; border-radius: 8px;
}
.contact-method-tab {
    flex: 1; display: flex; align-items: center; justify-content: center;
    padding: 0.4rem 0.5rem; border-radius: 6px;
    font-weight: 600; font-size: 0.75rem; cursor: pointer; color: #64748b;
    margin: 0;
}
.contact-method-tab.is-active {
    background: rgba(34, 197, 94, 0.15); color: var(--green);
}
.contact-method-radio {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.contact-method-panel.hidden { display: none !important; }
.public-body.dark .contact-method-tabs { background: #334155; }
.public-body.dark .contact-method-tab { color: #94a3b8; }
.public-body.dark .contact-method-tab.is-active { color: #4ade80; }
.customer-auth-hint { margin: 0 0 0.5rem; font-size: 0.75rem; color: #64748b; }
.customer-auth-error {
    margin: 0 0 0.75rem; padding: 0.65rem 0.75rem;
    background: #fef2f2; color: #b91c1c;
    border-radius: 8px; font-size: 0.8125rem;
}
.customer-auth-success {
    margin: 0 0 0.75rem; padding: 0.65rem 0.75rem;
    background: #ecfdf5; color: #047857;
    border-radius: 8px; font-size: 0.8125rem;
}

.customer-body { min-height: 100vh; background: var(--bg, #f8fafc); }
.customer-header {
    position: sticky; top: 0; z-index: 20;
    background: rgba(255,255,255,0.9);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--border);
}
.customer-nav-link { color: var(--text2); text-decoration: none; font-weight: 500; }
.customer-nav-link:hover { color: var(--accent); }
.customer-auth-card { max-width: 26rem; }

/* ── Gestion clients (dashboard restaurant) ── */
.customer-page {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    width: 100%;
    max-width: none;
}
.customer-page-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.customer-page-back {
    font-size: 0.875rem;
    color: var(--accent);
    text-decoration: none;
    font-weight: 500;
}
.customer-page-back:hover { text-decoration: underline; }
.customer-id-badge {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.8125rem;
    color: var(--text2);
    background: var(--bg3);
    padding: 0.35rem 0.85rem;
    border-radius: 999px;
    border: 1px solid var(--border);
}
.customer-page-title {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 1.5rem;
    margin: 0;
}
.customer-page-lead {
    margin: 0.35rem 0 0;
    font-size: 0.875rem;
    color: var(--text2);
}
.customer-page-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-start;
    justify-content: space-between;
}
.customer-show-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}
@media (min-width: 1024px) {
    .customer-show-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
.customer-show-col {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    min-width: 0;
}
.customer-show-orders {
    min-width: 0;
}
@media (min-width: 1024px) {
    .customer-show-orders { position: sticky; top: 5.5rem; }
}
.customer-show-orders-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    max-height: 70vh;
    overflow-y: auto;
    padding-right: 0.25rem;
}
.customer-order-card {
    padding: 0.85rem 1rem;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: rgba(249, 250, 251, 0.9);
}
.customer-order-card-head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: flex-start;
}
.customer-order-card-title {
    margin: 0;
    font-weight: 600;
    font-size: 0.9375rem;
}
.customer-order-card-meta {
    margin: 0.25rem 0 0;
    font-size: 0.75rem;
    color: var(--text2);
}
.customer-order-card-price {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    white-space: nowrap;
}
.customer-page .customer-panel {
    background: #ffffff;
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 1.5rem;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
}
.customer-page .customer-panel-title {
    font-family: 'Sora', sans-serif;
    font-weight: 600;
    font-size: 1rem;
    margin: 0 0 1rem;
}
.customer-page .customer-panel-danger {
    border-color: rgba(239, 68, 68, 0.35);
}
.customer-page .customer-panel-danger .customer-panel-title { color: var(--red); }
.customer-page .customer-dl { margin: 0; display: grid; gap: 0.5rem; font-size: 0.875rem; }
.customer-page .customer-dl dt { display: inline; color: var(--text2); }
.customer-page .customer-dl dd { display: inline; margin: 0; }
.customer-page .customer-form { display: flex; flex-direction: column; gap: 1rem; max-width: 100%; }
.customer-page .customer-form-row-2 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.75rem;
}
@media (min-width: 640px) {
    .customer-page .customer-form-row-2 { grid-template-columns: 1fr 1fr; }
}
.customer-page .form-input,
.customer-page .form-textarea,
.customer-page select.form-input {
    width: 100%;
    background: #ffffff;
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 0.625rem 0.875rem;
    font-size: 0.875rem;
}
.customer-page .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.625rem 1.25rem;
    border-radius: 8px;
    font-size: 0.875rem;
    font-weight: 600;
    border: none;
    cursor: pointer;
    text-decoration: none;
}
.customer-page .btn-primary { background: var(--accent); color: #fff; }
.customer-page .btn-primary:hover { filter: brightness(1.08); }
.customer-page .btn-secondary {
    background: #fff;
    color: var(--text);
    border: 1px solid var(--border);
}
.customer-page .btn-secondary:hover { background: var(--bg3); }
.customer-page .btn-sm { padding: 0.375rem 0.75rem; font-size: 0.8125rem; }
.customers-search-panel { margin-bottom: 0; }
.customers-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.customers-table th,
.customers-table td {
    padding: 0.75rem 1rem;
    text-align: left;
    border-bottom: 1px solid var(--border);
    vertical-align: top;
}
.customers-table th {
    color: var(--text2);
    font-weight: 600;
    font-size: 0.8125rem;
}
.customers-table tbody tr:hover { background: rgba(249, 250, 251, 0.9); }
.customers-table .customer-id-cell {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    color: var(--text2);
    white-space: nowrap;
}
.customers-table .customer-actions { text-align: right; white-space: nowrap; }
.customers-search-empty {
    display: none;
    padding: 1rem;
    font-size: 0.875rem;
    color: var(--text2);
    border-top: 1px solid var(--border);
}
.customers-search-empty.is-visible { display: block; }
.customers-table [data-customer-row].is-hidden { display: none; }
.customers-table .scani-price { font-size: 0.8125rem; }

@media (max-width: 767px) {
    .customers-table th,
    .customers-table td {
        padding: 0.625rem 0.5rem;
        font-size: 0.8125rem;
    }
    .customers-table .customer-actions .btn-sm {
        min-height: 36px;
        padding: 0.35rem 0.6rem;
    }
    .orders-table th,
    .orders-table td {
        padding: 0.625rem 0.5rem;
        vertical-align: middle;
    }
    .orders-table td.text-right .scani-price,
    .orders-table .font-semibold .scani-price {
        justify-content: flex-end;
    }
    .order-row-actions {
        flex-wrap: nowrap;
        gap: 0.25rem;
    }
    .order-row-actions .btn-sm:not(.btn-order-delete) {
        min-height: 36px;
        padding: 0.35rem 0.55rem;
        font-size: 0.75rem;
    }
    .order-row-actions .btn-ticket-pdf {
        min-width: 2rem;
        width: 2rem;
        height: 2rem;
        padding: 0;
        font-size: 0.875rem;
    }
}


/* ── RTL / Arabe ──────────────────────────────────────────── */
[dir="rtl"] { text-align: right; }
[dir="rtl"] body { font-family: 'Noto Sans Arabic', -apple-system, BlinkMacSystemFont, sans-serif; }
[dir="rtl"] .sidebar { left: auto; right: 0; }
@media (min-width: 1024px) {
    [dir="rtl"] .sidebar { transform: none !important; }
}
[dir="rtl"] .nav-link { flex-direction: row-reverse; }
[dir="rtl"] .nav-link .ml-auto { margin-left: 0; margin-right: auto; }
[dir="rtl"] .card { text-align: right; }
[dir="rtl"] input, [dir="rtl"] textarea { text-align: right; }
[dir="rtl"] .alert { text-align: right; }
/* Landing RTL */
[dir="rtl"] .landing-hero-grid { direction: rtl; }
[dir="rtl"] .landing-hero-cta { flex-direction: row-reverse; flex-wrap: wrap; }
[dir="rtl"] .landing-footer-inner { flex-direction: row-reverse; }
[dir="rtl"] .landing-trust-list li { text-align: right; }

/* ── Personnalisation article ── */
.item-options-modal {
    position: fixed;
    inset: 0;
    z-index: 10150;
    display: flex;
    align-items: flex-end;
    justify-content: center;
}
.item-options-modal.hidden { display: none !important; }
.item-options-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
}
.item-options-sheet {
    position: relative;
    width: 100%;
    max-width: 32rem;
    max-height: 92vh;
    background: #fff;
    border-radius: 20px 20px 0 0;
    display: flex;
    flex-direction: column;
    box-shadow: 0 -8px 40px rgba(0, 0, 0, 0.15);
}
@media (min-width: 640px) {
    .item-options-modal { align-items: center; padding: 1rem; }
    .item-options-sheet { border-radius: 20px; max-height: 88vh; }
}
.item-options-header {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #eee;
    flex-shrink: 0;
}
.item-options-back {
    width: 2.25rem;
    height: 2.25rem;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #f9fafb;
    display: grid;
    place-items: center;
    padding: 0;
    cursor: pointer;
    color: #374151;
    flex-shrink: 0;
}
.item-options-title {
    font-family: 'Sora', sans-serif;
    font-size: 1.0625rem;
    font-weight: 700;
    margin: 0;
    line-height: 1.3;
}
.item-options-body {
    flex: 1 1 0%;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.item-opt-group {
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #f1f5f9;
}
.item-opt-group-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}
.item-opt-group-title {
    font-size: 1rem;
    font-weight: 700;
    margin: 0 0 0.2rem;
    color: #111;
}
.item-opt-group-hint {
    font-size: 0.8125rem;
    color: #6b7280;
    margin: 0;
}
.item-opt-badge {
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 6px;
    background: #f3f4f6;
    color: #6b7280;
    white-space: nowrap;
    flex-shrink: 0;
}
.item-opt-badge--req {
    background: #f3f4f6;
    color: #374151;
}
.item-opt-list { display: flex; flex-direction: column; }
.item-opt-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.875rem 0;
    border-bottom: 1px solid #f3f4f6;
    cursor: pointer;
}
.item-opt-row:last-child { border-bottom: none; }
.item-opt-row-main {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}
.item-opt-name {
    font-size: 0.9375rem;
    font-weight: 500;
    color: #111;
}
.item-opt-supplement {
    font-size: 0.8125rem;
    color: #6b7280;
}
.item-opt-input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.item-opt-control {
    width: 22px;
    height: 22px;
    border: 2px solid #d1d5db;
    border-radius: 50%;
    flex-shrink: 0;
    position: relative;
    transition: all 0.15s;
}
.item-opt-input[type="checkbox"] + .item-opt-control { border-radius: 6px; }
.item-opt-input:checked + .item-opt-control {
    border-color: var(--accent, #006233);
    background: var(--accent, #006233);
    box-shadow: inset 0 0 0 3px #fff;
}
.item-options-footer {
    padding: 1rem 1.25rem 1.25rem;
    border-top: 1px solid #eee;
    background: #fff;
    flex-shrink: 0;
}
.item-options-save-btn {
    width: 100%;
    padding: 0.95rem 1rem;
    border: none;
    border-radius: 12px;
    background: #111;
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s;
}
.item-options-save-btn:hover { background: #000; }
.pub-cart-opts {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 2px 0 4px;
}
.pub-cart-opt {
    font-size: 0.6875rem;
    color: #6b7280;
    line-height: 1.3;
}
.scani-num { direction: ltr; unicode-bidi: isolate; display: inline-block; }
.scani-price {
    display: inline-flex;
    align-items: baseline;
    gap: 0.2rem;
    white-space: nowrap;
    flex-wrap: nowrap;
    max-width: 100%;
}
.scani-price-amount {
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}
.scani-price-currency {
    font-size: 0.72em;
    font-weight: 600;
    color: var(--text2);
    letter-spacing: 0.02em;
}

/* ── Avis Google (menu public) ─────────────────────────────────────────── */
.google-review-banner {
    position: fixed;
    bottom: 5.5rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 85;
    width: min(22rem, calc(100vw - 2rem));
    padding: 1rem 1.1rem 1rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    box-shadow: 0 12px 40px rgba(0,0,0,.14);
}
.google-review-close {
    position: absolute;
    top: .4rem;
    right: .55rem;
    border: none;
    background: transparent;
    font-size: 1.35rem;
    line-height: 1;
    color: #9ca3af;
    cursor: pointer;
}
.google-review-title {
    font-weight: 700;
    font-size: .95rem;
    margin: 0 1.5rem .35rem 0;
    color: #111;
}
.google-review-text {
    font-size: .8125rem;
    color: #6b7280;
    margin: 0 0 .75rem;
    line-height: 1.45;
}
.google-review-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
.google-review-actions .btn-sm {
    font-size: .75rem;
    padding: .45rem .65rem;
}
body.dark .google-review-banner {
    background: #1f2937;
    border-color: #374151;
}
body.dark .google-review-title { color: #f9fafb; }
body.dark .google-review-text { color: #d1d5db; }

/* ── Appel serveur (menu public) ───────────────────────────────────────── */
.table-request-btn {
    display: inline-flex;
    width: 100%;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 0.75rem;
    padding: 0.7rem 1rem;
    border: 1px solid var(--accent, #006233);
    border-radius: 10px;
    background: rgba(0, 98, 51, 0.08);
    color: var(--accent, #006233);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.25;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.table-request-btn:hover {
    background: var(--accent, #006233);
    color: #fff;
}
.table-request-btn:active { transform: scale(0.99); }
.table-request-btn-icon { font-size: 1rem; line-height: 1; }
.table-request-btn-label { text-align: center; }
.public-body.dark .table-request-btn {
    background: rgba(0, 98, 51, 0.18);
    border-color: var(--accent, #006233);
    color: #86efac;
}
.public-body.dark .table-request-btn:hover {
    background: var(--accent, #006233);
    color: #fff;
}
.table-request-modal {
    position: fixed;
    inset: 0;
    z-index: 90;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.table-request-modal.hidden { display: none; }
.table-request-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.45);
}
.table-request-box {
    position: relative;
    width: min(26rem, 100%);
    max-height: min(90vh, 36rem);
    overflow-y: auto;
    background: #fff;
    border-radius: 16px;
    padding: 1.25rem 1.25rem 1.5rem;
    box-shadow: 0 20px 50px rgba(0,0,0,.2);
}
.table-request-close {
    position: absolute;
    top: .65rem;
    right: .75rem;
    border: none;
    background: transparent;
    font-size: 1.5rem;
    line-height: 1;
    color: #9ca3af;
    cursor: pointer;
}
.table-request-title {
    font-size: 1.125rem;
    font-weight: 700;
    margin: 0 2rem .35rem 0;
}
.table-request-lead {
    font-size: .8125rem;
    color: #6b7280;
    margin: 0 0 1rem;
}
.table-request-presets {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
    margin: .75rem 0 1rem;
}
.table-request-preset {
    display: flex;
    align-items: center;
    gap: .45rem;
    padding: .65rem .75rem;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #f9fafb;
    font-size: .8125rem;
    cursor: pointer;
    text-align: left;
}
.table-request-preset.is-selected {
    border-color: var(--accent, #006233);
    background: rgba(0,98,51,.08);
}
body.dark .table-request-box { background: #1f2937; }
body.dark .table-request-preset { background: #111827; border-color: #374151; color: #f3f4f6; }

/* ── Demandes table (dashboard / cuisine) ──────────────────────────────── */
.table-requests-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}
.table-requests-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.5rem;
    padding: 0 .4rem;
    border-radius: 999px;
    background: #2563eb;
    color: #fff;
    font-size: .75rem;
    font-weight: 700;
}
.table-requests-count:empty,
.table-requests-count[data-count="0"] {
    background: #e5e7eb;
    color: #6b7280;
}
.table-request-server {
    font-size: .75rem;
    font-weight: 600;
    color: #1d4ed8;
}
.table-request-server--none {
    font-weight: 500;
    color: var(--text2, #9ca3af);
    font-style: italic;
}
.table-requests-empty { margin: 0; padding: .5rem 0; }
.table-requests-panel .table-requests-list { display: flex; flex-direction: column; gap: .5rem; }
.table-request-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .65rem .75rem;
    border: 1px solid var(--border, #e5e7eb);
    border-radius: 10px;
    background: #fffbeb;
}
.table-request-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    min-width: 0;
}
.table-request-table { font-weight: 600; font-size: .875rem; }
.table-request-msg { font-size: .875rem; color: var(--text2, #6b7280); }
.table-request-time { font-size: .75rem; color: var(--text2, #9ca3af); }
.kitchen-stat-tr .kitchen-stat-value { color: #b45309; }

/* ══════════════════════════════════════════════════════════════
   PWA + Mobile shell (320px → 1440px)
   ══════════════════════════════════════════════════════════════ */

.admin-topbar {
    padding-top: max(1rem, env(safe-area-inset-top));
}

.admin-menu-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: 0.5rem;
    border-radius: 10px;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    color: #374151;
    flex-shrink: 0;
}
.admin-menu-btn:hover { background: #e5e7eb; }

.has-mobile-nav .admin-main {
    padding-bottom: calc(5rem + env(safe-area-inset-bottom));
}

.substitution-banner {
    position: sticky;
    top: 0;
    z-index: 70;
    flex-shrink: 0;
    text-align: center;
    color: #fff;
    background-color: #9333ea;
    padding: 0.5rem 1rem;
}
.substitution-banner a {
    color: #fff;
}
body.has-substitution-banner {
    --substitution-banner-h: 2.5rem;
}

.admin-header-sound {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}
.admin-header-sound .kitchen-sound-hint {
    position: static;
    left: auto;
    bottom: auto;
    transform: none;
    animation: none;
    z-index: auto;
}
.admin-header-sound .kitchen-sound-hint-btn {
    min-width: 44px;
    min-height: 36px;
    padding: 0.35rem 0.55rem;
    border-radius: 8px;
    box-shadow: none;
    font-size: 0.6875rem;
    gap: 0.3rem;
    white-space: nowrap;
}
.admin-header-sound .sound-btn-icon {
    font-size: 1rem;
    line-height: 1;
}
@media (max-width: 1023px) {
    .admin-header-sound .sound-btn-text {
        display: none;
    }
    .admin-header-sound .kitchen-sound-hint-btn {
        padding: 0.45rem;
        justify-content: center;
    }
}

.mobile-bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 46;
    display: flex;
    align-items: stretch;
    justify-content: space-around;
    gap: 0.15rem;
    padding: 0.35rem 0.5rem;
    padding-bottom: max(0.35rem, env(safe-area-inset-bottom));
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-top: 1px solid rgba(0, 0, 0, 0.08);
    box-shadow: 0 -4px 24px rgba(15, 23, 42, 0.06);
}
.mobile-bottom-nav__item {
    position: relative;
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
    min-height: 44px;
    min-width: 44px;
    max-width: 5.5rem;
    padding: 0.25rem 0.15rem;
    border: none;
    background: transparent;
    color: var(--text2);
    font-size: 0.625rem;
    font-weight: 600;
    text-decoration: none;
    line-height: 1.2;
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
}
.mobile-bottom-nav__item.is-active {
    color: var(--accent);
    background: rgba(0, 98, 51, 0.08);
}
.mobile-bottom-nav__icon {
    width: 1.35rem;
    height: 1.35rem;
    flex-shrink: 0;
}
.mobile-bottom-nav__badge {
    position: absolute;
    top: 0.1rem;
    right: 0.35rem;
    min-width: 1.1rem;
    height: 1.1rem;
    padding: 0 0.25rem;
    border-radius: 999px;
    background: var(--accent-red);
    color: #fff;
    font-size: 0.625rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
[dir="rtl"] .mobile-bottom-nav__badge {
    right: auto;
    left: 0.35rem;
}

.pwa-install-modal {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
    animation: pwa-modal-in 0.3s ease;
}
.pwa-install-modal.hidden { display: none !important; }
.pwa-install-modal:not(.hidden) { display: flex !important; }
.pwa-install-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
}
.pwa-install-modal__box {
    position: relative;
    width: min(22rem, 100%);
    background: #fff;
    border-radius: 18px;
    padding: 1.5rem 1.25rem 1.25rem;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22);
    text-align: center;
}
.pwa-install-modal__close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    width: 2.5rem;
    height: 2.5rem;
    border: none;
    background: transparent;
    color: #9ca3af;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    border-radius: 8px;
}
.pwa-install-modal__close:hover { color: #374151; background: #f3f4f6; }
.pwa-install-modal__icon {
    font-size: 2.25rem;
    line-height: 1;
    margin-bottom: 0.75rem;
}
.pwa-install-modal__title {
    margin: 0 0 0.5rem;
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--text, #111827);
}
.pwa-install-modal__desc {
    margin: 0 0 0.75rem;
    font-size: 0.875rem;
    line-height: 1.45;
    color: var(--text2, #6b7280);
}
.pwa-install-modal__ios,
.pwa-install-modal__hint {
    margin: 0 0 1rem;
    padding: 0.65rem 0.75rem;
    border-radius: 10px;
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    font-size: 0.8125rem;
    line-height: 1.4;
    color: #166534;
    text-align: left;
}
.pwa-install-modal__hint.is-hidden { display: none; }
.pwa-install-modal__actions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.pwa-install-modal__btn {
    min-height: 48px;
    padding: 0.65rem 1rem;
    border-radius: 12px;
    border: 1px solid var(--border, #e5e7eb);
    background: #f9fafb;
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
}
.pwa-install-modal__btn--primary {
    background: var(--accent, #006233);
    border-color: var(--accent, #006233);
    color: #fff;
}
.pwa-install-modal__btn.is-hidden { display: none !important; }
.pwa-install-modal__btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}
.public-body.dark .pwa-install-modal__box,
body.dark .pwa-install-modal__box { background: #1f2937; }
.public-body.dark .pwa-install-modal__title,
body.dark .pwa-install-modal__title { color: #f9fafb; }
.public-body.dark .pwa-install-modal__desc,
body.dark .pwa-install-modal__desc { color: #d1d5db; }
.public-body.dark .pwa-install-modal__btn,
body.dark .pwa-install-modal__btn { background: #111827; border-color: #374151; color: #f3f4f6; }
.public-body.dark .pwa-install-modal__close:hover,
body.dark .pwa-install-modal__close:hover { background: #374151; color: #f9fafb; }
[dir="rtl"] .pwa-install-modal__close {
    right: auto;
    left: 0.5rem;
}
[dir="rtl"] .pwa-install-modal__ios { text-align: right; }
@keyframes pwa-modal-in {
    from { opacity: 0; }
    to { opacity: 1; }
}
@keyframes pwa-banner-in {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 1023px) {
    body.sidebar-open .mobile-bottom-nav {
        display: none !important;
    }
    #sidebar {
        z-index: 80;
        max-height: 100dvh;
        padding-bottom: env(safe-area-inset-bottom);
    }
    body.has-substitution-banner #sidebar {
        max-height: calc(100dvh - var(--substitution-banner-h));
    }
    #sidebar > nav {
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
        min-height: 0;
    }
    #sidebar-overlay {
        z-index: 55;
    }
    .mobile-bottom-nav__item.is-active#mobile-nav-more,
    #mobile-nav-more.is-active {
        color: var(--accent);
        background: rgba(0, 98, 51, 0.08);
    }
    .nav-link {
        min-height: 44px;
        padding: 0.75rem 0.875rem;
    }
    .sidebar-close-btn {
        width: 2.25rem;
        height: 2.25rem;
        min-width: 2.25rem;
        min-height: 2.25rem;
    }
    .btn,
    .btn-primary,
    .btn-secondary,
    .btn-sm {
        min-height: 44px;
    }
    .btn-sm {
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
    }
    .btn-purge-day {
        min-height: 44px;
        padding: 0.5rem 0.75rem;
    }
}

@media (max-width: 767px) {
    .form-input,
    .form-select,
    .form-textarea,
    .cart-field,
    .auth-field {
        font-size: 16px;
    }
    .card {
        padding: 1rem;
    }
    body.has-mobile-nav.admin-shell .kitchen-sound-hint:not(.kitchen-sound-hint--header) {
        bottom: calc(4.75rem + env(safe-area-inset-bottom));
    }
    .table-request-box {
        padding-bottom: max(1.25rem, env(safe-area-inset-bottom));
    }
    .floor-plan-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Cuisine — affichage tablette */
@media (min-width: 768px) and (max-width: 1199px) {
    .kitchen-columns {
        grid-template-columns: 1fr 1fr;
        gap: 1.5rem;
    }
    .kitchen-order-card {
        padding: 1.25rem;
    }
    .kitchen-order-card .btn {
        min-height: 48px;
        font-size: 0.9375rem;
    }
    .kitchen-stats {
        grid-template-columns: repeat(3, 1fr);
    }
}
@media (min-width: 1200px) {
    .kitchen-body .max-w-6xl {
        max-width: 80rem;
    }
    .kitchen-order-card {
        padding: 1.375rem;
    }
    .kitchen-done-list {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 0.75rem;
    }
}

/* ══════════════════════════════════════════════════════════════
   Menu public — mobile & safe areas (phase 4)
   ══════════════════════════════════════════════════════════════ */

.auth-lang-fixed {
    position: fixed;
    top: max(16px, env(safe-area-inset-top));
    right: max(20px, env(safe-area-inset-right));
    z-index: 9999;
}
[dir="rtl"] .auth-lang-fixed {
    right: auto;
    left: max(20px, env(safe-area-inset-left));
}

.pub-menu-page .pub-topbar {
    padding-top: max(0.75rem, env(safe-area-inset-top));
    padding-left: max(1rem, env(safe-area-inset-left));
    padding-right: max(1rem, env(safe-area-inset-right));
}

.pub-offline-banner {
    position: fixed;
    top: calc(3.25rem + env(safe-area-inset-top));
    left: max(0.75rem, env(safe-area-inset-left));
    right: max(0.75rem, env(safe-area-inset-right));
    z-index: 55;
    padding: 0.625rem 0.875rem;
    border-radius: 10px;
    background: #fef3c7;
    border: 1px solid #fcd34d;
    color: #92400e;
    font-size: 0.8125rem;
    font-weight: 600;
    text-align: center;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
}
.pub-online-toast {
    position: fixed;
    bottom: max(1rem, env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    z-index: 100;
    padding: 0.625rem 1rem;
    border-radius: 999px;
    background: #ecfdf5;
    border: 1px solid #86efac;
    color: #065f46;
    font-size: 0.8125rem;
    font-weight: 600;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
    animation: pwa-banner-in 0.3s ease;
}
@media (max-width: 767px) {
    .pub-menu-page .pub-search {
        font-size: 16px;
    }
    .pub-menu-page .btn-accent,
    .pub-menu-page .btn-account-light,
    .pub-menu-page .pub-icon-btn,
    .pub-menu-page .btn-share {
        min-width: 44px;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .pub-menu-page .cart-close-btn {
        width: 44px;
        height: 44px;
    }
    .cart-panel-header {
        padding-top: max(1.125rem, env(safe-area-inset-top));
    }
    .cart-panel-footer {
        padding-bottom: max(0.75rem, env(safe-area-inset-bottom));
    }
    .cart-panel {
        height: min(92dvh, 92vh);
    }
    .btn-submit-order,
    #table-request-send {
        min-height: 48px;
    }
    .table-request-btn {
        min-height: 48px;
    }
    .table-request-close {
        width: 44px;
        height: 44px;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .table-request-preset {
        min-height: 44px;
    }
    .table-request-box {
        margin-bottom: env(safe-area-inset-bottom);
        max-height: min(88dvh, 88vh);
    }
    .categories-grid {
        grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
        gap: 0.75rem;
    }
    .pub-header-card {
        margin-left: max(0.75rem, env(safe-area-inset-left));
        margin-right: max(0.75rem, env(safe-area-inset-right));
    }
    .pub-category-nav {
        padding-left: max(0.5rem, env(safe-area-inset-left));
        padding-right: max(0.5rem, env(safe-area-inset-right));
    }
    .customer-main {
        padding-bottom: max(2rem, env(safe-area-inset-bottom));
    }
    .customer-nav-link {
        min-height: 44px;
        display: inline-flex;
        align-items: center;
    }
}

@media (max-width: 359px) {
    .pub-menu-page .pub-topbar-inner {
        gap: 0.5rem;
    }
    .pub-header-card {
        padding: 1rem 0.875rem;
    }
}


/* ── Module Hôtel ─────────────────────────────────────────── */
.hotel-mode-switcher {
    display: flex;
    background: rgba(0,0,0,.06);
    border-radius: 10px;
    padding: 3px;
    gap: 2px;
}
.hotel-mode-btn {
    flex: 1;
    padding: 6px 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    text-align: center;
    border: none;
    background: transparent;
    color: var(--text2);
    cursor: pointer;
    transition: all .15s ease;
    white-space: nowrap;
}
.hotel-mode-btn.active {
    background: #fff;
    color: var(--accent);
    box-shadow: 0 1px 4px rgba(0,0,0,.12);
}
.hotel-mode-btn:hover:not(.active) {
    color: var(--text1);
}
.hotel-quick-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 16px 12px;
    background: rgba(255,255,255,.7);
    border: 1px solid rgba(0,0,0,.06);
    border-radius: 16px;
    text-decoration: none;
    color: inherit;
    transition: all .15s ease;
}
.hotel-quick-btn:hover {
    background: rgba(255,255,255,.95);
    box-shadow: 0 4px 12px rgba(0,0,0,.08);
    transform: translateY(-2px);
}

/* ── Allergènes & régimes (dashboard menu) ── */
.dietary-chip-label,
.allergen-chip-label {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 99px;
    border: 1.5px solid #e5e7eb;
    font-size: 12px;
    cursor: pointer;
    transition: all .15s;
}
.dietary-cb:checked + .dietary-chip-label {
    background: color-mix(in srgb, var(--chip-color) 15%, white);
    border-color: var(--chip-color);
    color: var(--chip-color);
    font-weight: 600;
}
.allergen-cb:checked + .allergen-chip-label {
    background: #fef9c3;
    border-color: #ca8a04;
    color: #854d0e;
    font-weight: 600;
}

/* ── Tags public menu ── */
.dish-tags-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}
.dish-dietary-tag {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 99px;
    background: color-mix(in srgb, var(--tag-color) 12%, white);
    color: var(--tag-color);
    border: 1px solid color-mix(in srgb, var(--tag-color) 30%, white);
}
.dish-allergen-tag {
    font-size: 14px;
    line-height: 1;
    opacity: .85;
}

