@font-face { font-family: Quicksand; src: url("/fonts/Quicksand-Variable.ttf") format("truetype"); font-weight: 300 700; font-display: swap; }
@font-face { font-family: Poppins; src: url("/fonts/Poppins-Regular.ttf") format("truetype"); font-weight: 400; font-display: swap; }
:root { --rivis-ink: #302d37; --rivis-accent: #761513; --rivis-accent-dark: #58100e; --rivis-line: #eae3e4; --rivis-warm: #fcf1f0; --rivis-muted: #77717a; --rivis-soft: #f7f4f4; --rivis-radius: 22px; }
html body { font-family: Poppins, system-ui, sans-serif !important; font-weight: 400; background: #fff !important; color: var(--rivis-ink); --bs-body-font-family: Poppins, system-ui, sans-serif; }
h1, h2, h3, h4, h5, h6, .rivis-card-title { font-family: Quicksand, system-ui, sans-serif; font-weight: 500; letter-spacing: -.02em; }
button, input, select, textarea { font-family: inherit; }
img { -webkit-user-drag: none; -webkit-touch-callout: none; user-select: none; }
.rivis-ordering-page, body[data-counter-mode="kiosk"] { -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
.rivis-ordering-page :is(input, textarea, select) { -webkit-user-select: text; user-select: text; }
.rivis-icon { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }

/* Rounded controls everywhere on ordering pages */
.rivis-ordering-page .btn, .rivis-ordering-page .btn.rounded, .modal .btn { border-radius: 999px !important; }
.btn { font-weight: 400 !important; }
.rivis-service-control a, .rivis-ordering-page a.text-primary, .modal a.text-primary { color: var(--rivis-accent) !important; text-decoration: none; }
.rivis-ordering-page :is(.form-control, .form-select):not(textarea), .modal :is(.form-control, .form-select):not(textarea) { border-radius: 999px !important; border-color: var(--rivis-line); padding-left: 20px; padding-right: 20px; min-height: 48px; }
.rivis-ordering-page textarea.form-control, .modal textarea.form-control { border-radius: 20px !important; border-color: var(--rivis-line); padding: 14px 18px; }
.rivis-ordering-page .form-floating > label { padding-left: 22px; }
.rivis-ordering-page :is(.form-control, .form-select):focus, .modal :is(.form-control, .form-select):focus { border-color: var(--rivis-accent); box-shadow: 0 0 0 4px #7615131f; }
.rivis-ordering-page .form-check-input:checked { background-color: var(--rivis-accent); border-color: var(--rivis-accent); }
.rivis-ordering-page .input-group { flex-wrap: nowrap; gap: 8px; }
.rivis-ordering-page .input-group > * { border-radius: 999px !important; margin: 0 !important; }
.rivis-ordering-page #cart-coupon { border-color: var(--rivis-line) !important; }
.rivis-ordering-page #cart-coupon .btn { width: 48px; min-width: 48px; height: 48px; display: grid; place-items: center; background: var(--rivis-warm); border: 1px solid var(--rivis-line); color: var(--rivis-accent); }
.btn-primary, .rivis-ordering-page .btn-primary, .modal .btn-primary { --bs-btn-bg: var(--rivis-accent); --bs-btn-border-color: var(--rivis-accent); --bs-btn-hover-bg: var(--rivis-accent-dark); --bs-btn-hover-border-color: var(--rivis-accent-dark); --bs-btn-active-bg: var(--rivis-accent-dark); --bs-btn-active-border-color: var(--rivis-accent-dark); --bs-btn-disabled-bg: #c9b6a6; --bs-btn-disabled-border-color: #c9b6a6; --bs-btn-color: #fff; --bs-btn-hover-color: #fff; background-color: var(--bs-btn-bg) !important; border-color: var(--bs-btn-border-color) !important; color: #fff !important; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background-color: var(--rivis-accent-dark) !important; border-color: var(--rivis-accent-dark) !important; }
.btn-primary:disabled, .btn-primary.disabled { background-color: #c9b6a6 !important; border-color: #c9b6a6 !important; }
.btn-outline-primary { --bs-btn-color: var(--rivis-accent-dark); --bs-btn-border-color: var(--rivis-line); --bs-btn-hover-bg: var(--rivis-warm); --bs-btn-hover-color: var(--rivis-accent-dark); --bs-btn-hover-border-color: var(--rivis-accent); --bs-btn-active-bg: var(--rivis-warm); --bs-btn-active-color: var(--rivis-accent-dark); color: var(--rivis-accent-dark) !important; border-color: var(--rivis-line) !important; }
.btn-outline-primary:hover { background: var(--rivis-warm) !important; border-color: var(--rivis-accent) !important; }
.btn-light { background: var(--rivis-soft); border-color: var(--rivis-soft); }

/* Toolbar: logo, service, search, cart */
.rivis-order-toolbar { position: relative; display: flex; align-items: center; gap: 18px; padding-top: 18px; padding-bottom: 14px; }
.rivis-toolbar-logo { flex: 0 0 auto; display: block; line-height: 0; }
.rivis-toolbar-logo img { height: 46px; width: auto; }
.rivis-service-control { border: 1px solid var(--rivis-line); background: var(--rivis-warm); border-radius: 999px; padding: 12px 20px; font-size: 14px; min-width: 0; }
.rivis-service-control a { font-weight: 400; }
.rivis-toolbar-actions { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.rivis-icon-button { width: 48px; height: 48px; flex: 0 0 auto; display: grid; place-items: center; padding: 0; border: 1px solid var(--rivis-line); border-radius: 50%; background: #fff; color: var(--rivis-ink); transition: background .2s, border-color .2s; }
.rivis-icon-button:hover { background: var(--rivis-warm); border-color: #d9c3ad; }
.rivis-search { position: relative; display: flex; align-items: center; }
.rivis-search input { width: 0; height: 48px; padding: 0; opacity: 0; border: 1px solid transparent; border-radius: 999px; background: #fff; color: var(--rivis-ink); outline: none; transition: width .32s cubic-bezier(.2, .8, .2, 1), opacity .2s, padding .32s; }
.rivis-search input::-webkit-search-cancel-button { display: none; }
.rivis-search.is-open input { width: min(320px, 34vw); padding: 0 54px 0 22px; opacity: 1; border-color: var(--rivis-line); box-shadow: 0 6px 20px #30271d10; }
.rivis-search.is-open input:focus { border-color: var(--rivis-accent); box-shadow: 0 0 0 4px #7615131f; }
.rivis-search.is-open .rivis-icon-button { position: absolute; right: 4px; width: 40px; height: 40px; border-color: transparent; background: var(--rivis-warm); }
.rivis-cart-link { display: flex; align-items: center; gap: 10px; height: 48px; color: var(--rivis-ink); text-decoration: none; border: 1px solid var(--rivis-line); border-radius: 999px; padding: 0 18px; }
.rivis-cart-link:hover { background: var(--rivis-warm); color: var(--rivis-ink); }

/* Category strip */
.rivis-category-bar { z-index: 1010; border-bottom: 1px solid var(--rivis-line); }
.rivis-category-nav, .category-tabs { overflow-x: auto; scrollbar-width: none; scroll-behavior: smooth; overscroll-behavior-x: contain; }
.rivis-category-nav { padding: 14px 0; }
.rivis-category-nav::-webkit-scrollbar, .category-tabs::-webkit-scrollbar { display: none; }
.rivis-category-nav.is-dragging, .category-tabs.is-dragging { scroll-behavior: auto; cursor: grabbing; }
.rivis-category-nav.is-dragging a, .category-tabs.is-dragging a { pointer-events: none; }
#navbar-categories { gap: 10px; margin: 0; padding: 0; }
#navbar-categories .nav-link, .category-tabs a { border: 1px solid #dbd2c8; border-radius: 999px; padding: 11px 22px; color: var(--rivis-ink); background: #fff; white-space: nowrap; font-size: 14px; text-decoration: none; transition: background .2s, border-color .2s, color .2s; }
#navbar-categories .nav-link:hover, .category-tabs a:hover { border-color: var(--rivis-accent); }
#navbar-categories .nav-link.active, .category-tabs a.active { background: var(--rivis-warm); color: var(--rivis-accent-dark); border-color: var(--rivis-accent); }

/* Menu sections and cards */
.rivis-menu-section { padding: 22px 0 28px; scroll-margin-top: 104px; }
.rivis-menu-section > h2 { font-size: clamp(22px, 2.2vw, 28px); margin-bottom: 18px; }
.rivis-category-description { font-size: 13px; }
.rivis-menu-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.rivis-menu-card { width: 100%; height: 100%; display: flex; flex-direction: column; padding: 0; text-align: left; border: 1px solid var(--rivis-line); border-radius: 20px; background: #fff; color: var(--rivis-ink); overflow: hidden; box-shadow: 0 3px 6px #30271d08; transition: box-shadow .2s, transform .2s; }
.rivis-menu-card:not(:disabled):hover { transform: translateY(-2px); box-shadow: 0 10px 26px #30271d14; }
.rivis-menu-card:not(:disabled):active { transform: scale(.985); }
.rivis-menu-card:focus-visible { outline: 3px solid var(--rivis-accent); outline-offset: 3px; }
.rivis-menu-card:disabled { opacity: .6; cursor: not-allowed; }
.rivis-menu-card > img, .rivis-menu-card > .rivis-photo-placeholder { width: 100%; aspect-ratio: 1.5; object-fit: cover; pointer-events: none; }
.rivis-photo-placeholder { display: grid; place-items: center; background: var(--rivis-soft); }
.rivis-photo-placeholder img { width: 52%; max-width: 220px; height: auto; }
.rivis-card-copy { display: flex; flex: 1; flex-direction: column; gap: 6px; padding: 14px 16px 16px; }
.rivis-card-title { font-size: 17px; line-height: 1.35; }
.rivis-card-description { color: var(--rivis-muted); font-size: 12.5px; line-height: 1.5; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.rivis-card-price { font-size: 15px; margin-top: auto; padding-top: 4px; }
.rivis-unavailable { color: #8f5a3d; font-size: 12px; }

/* Sidebar cart */
.rivis-cart-column > div { position: sticky; top: 100px; }
#cart-box { border-color: var(--rivis-line) !important; border-radius: var(--rivis-radius) !important; padding: 22px !important; box-shadow: none !important; }
.cart-items > ul > li { padding: 16px 0; border-bottom: 1px solid var(--rivis-line); margin: 0 !important; }
.cart-items ul ul li { padding: 0; border: 0; }
.cart-items li .price { white-space: nowrap; font-size: 14px; }
.cart-items .btn, .cart-items p { font-size: 14px; }
.cart-items .small { color: var(--rivis-muted); font-size: 12px; }
.checkout-btn, .rivis-cart-actions .btn { border-radius: 999px; font-size: 15px; }
.rivis-cart-actions { display: grid; gap: 10px; margin-top: 16px; }
.rivis-mobile-cart { position: fixed; top: 16px; right: 16px; z-index: 1020; display: flex; gap: 6px; align-items: center; height: 48px; text-decoration: none; padding: 0 14px; color: var(--rivis-ink); border: 1px solid var(--rivis-line); border-radius: 999px; background: #fff; box-shadow: 0 4px 16px #0000001a; }
.rivis-cart-badge { background: var(--rivis-warm); color: var(--rivis-accent-dark); border-radius: 999px; min-width: 24px; text-align: center; padding: 3px 7px; font-size: 12px; }
.rivis-cart-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
.rivis-cart-row .rivis-quantity { grid-column: 1 / -1; }
.rivis-cart-row small { display: block; color: var(--rivis-muted); font-size: 12px; }
.rivis-cart-row .rivis-quantity button { width: 34px; height: 34px; min-height: 34px; }
.rivis-cart-item-name { display: block; border: 0; padding: 0; background: none; color: inherit; text-align: left; font-size: 16px; font-weight: 400; }

/* Item dialog: landscape on desktop */
#orange-modal:has(.rivis-modal-pending) .modal-dialog { visibility: hidden; }
.modal-backdrop.show { opacity: .38; }
#orange-modal .rivis-item-dialog, .rivis-item-dialog { --bs-modal-width: min(1180px, calc(100vw - 48px)); max-width: min(1180px, calc(100vw - 48px)); width: 100%; margin: 24px auto; min-height: calc(100% - 48px); }
.rivis-item-dialog .modal-content { position: relative; border-radius: 28px; padding: 0; overflow: hidden; max-height: calc(100dvh - 48px); display: flex; flex-direction: column; box-shadow: 0 30px 90px #302d372e; animation: rivis-dialog-in .32s cubic-bezier(.2, .8, .2, 1) both; }
.rivis-item-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); flex: 1; min-height: 0; }
.rivis-item-media { position: relative; min-height: 460px; background: var(--rivis-soft); }
.rivis-item-media > img, .rivis-item-media > .rivis-photo-placeholder { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rivis-item-panel { overflow-y: auto; padding: 32px 32px 20px; overscroll-behavior: contain; }
.rivis-item-intro { padding: 0 44px 8px 0; }
.rivis-item-intro h2 { font-size: clamp(24px, 2.4vw, 32px); margin-bottom: 8px; }
.rivis-item-intro p { font-size: 13.5px; line-height: 1.6; margin-bottom: 8px; }
.rivis-item-intro .rivis-item-price { font-size: 19px; color: var(--rivis-ink); margin-bottom: 0; }
.rivis-modal-close { position: absolute; right: 18px; top: 18px; z-index: 3; }
.rivis-modal-close, .modal .btn-close, .rivis-icon-close { width: 40px; height: 40px; padding: 0; box-sizing: border-box; border: 0 !important; border-radius: 50%; background-color: var(--rivis-soft); background-size: 12px; background-position: center; background-repeat: no-repeat; opacity: 1; box-shadow: none !important; outline: none !important; transition: background-color .15s, transform .12s; }
.rivis-modal-close:hover, .modal .btn-close:hover, .rivis-icon-close:hover { background-color: #ece5dd; opacity: 1; }
.rivis-modal-close:active, .modal .btn-close:active, .rivis-icon-close:active { transform: scale(.9); background-color: #e5ddd3; }
.rivis-modal-close:focus-visible, .modal .btn-close:focus-visible, .rivis-icon-close:focus-visible { outline: 2px solid var(--rivis-accent) !important; outline-offset: 2px; }
.rivis-icon-close { min-height: 0; flex: 0 0 auto; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M.3.3a1 1 0 0 1 1.4 0L8 6.6 14.3.3a1 1 0 1 1 1.4 1.4L9.4 8l6.3 6.3a1 1 0 0 1-1.4 1.4L8 9.4l-6.3 6.3a1 1 0 0 1-1.4-1.4L6.6 8 .3 1.7a1 1 0 0 1 0-1.4z' fill='%23302d37'/%3e%3c/svg%3e"); }
.rivis-search .is-close { display: none; }
.rivis-search.is-open .is-search { display: none; }
.rivis-search.is-open .is-close { display: block; width: 20px; height: 20px; }
.rivis-empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 46vh; text-align: center; padding: 40px 16px; animation: rivis-pop .3s both; }
.rivis-empty-state svg { width: 96px; height: 96px; padding: 18px; margin-bottom: 18px; border-radius: 50%; background: var(--rivis-warm); fill: none; stroke: var(--rivis-accent); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.rivis-empty-state h2 { font-size: 24px; margin-bottom: 6px; }
.rivis-empty-state p { color: var(--rivis-muted); margin: 0; }
.rivis-checkout-page.container { max-width: 1040px; }
.rivis-checkout-card { padding: 8px 4px; border: 1px solid var(--rivis-line); border-radius: var(--rivis-radius); background: #fff; }
.rivis-checkout-summary { position: sticky; top: 24px; }
.rivis-option-section { padding: 18px; margin: 16px 0; border: 1px solid #f0ece7; box-shadow: 0 3px 14px #30271d08; border-radius: 18px; }
.rivis-option-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin-bottom: 14px; width: 100%; }
.rivis-option-heading h3 { font: 400 16px Poppins, sans-serif; margin: 0; letter-spacing: 0; }
.rivis-option-chips { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.rivis-chip { display: inline-block; padding: 5px 10px; font-size: 11px; border-radius: 999px; background: #fcf0df; color: var(--rivis-accent); white-space: nowrap; }
.rivis-option-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.rivis-option-tile { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 72px; margin: 0; padding: 12px 14px; border: 1px solid #ddd5cc; border-radius: 16px; cursor: pointer; font-size: 13px; font-weight: 400; transition: background .18s, border-color .18s, transform .18s; }
.rivis-option-tile:active { transform: scale(.98); }
.rivis-option-tile:has(input:checked) { background: var(--rivis-warm); border-color: #aa7f56; }
.rivis-option-tile:has(input:focus-visible) { outline: 2px solid var(--rivis-accent); outline-offset: 2px; }
.rivis-option-tile:has(input:disabled) { opacity: .5; cursor: not-allowed; }
.rivis-option-tile input { accent-color: var(--rivis-accent); width: 18px; height: 18px; flex: 0 0 auto; margin: 0; }
.rivis-option-tile input[type=number] { width: 56px; height: 40px; border: 1px solid var(--rivis-line); border-radius: 999px; text-align: center; }
.rivis-option-tile span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.rivis-option-tile small { display: block; color: var(--rivis-muted); font-size: 11px; margin-top: 3px; }
.rivis-option-tile img { width: 48px; height: 48px; border-radius: 12px; object-fit: cover; }
.rivis-option-grid select { grid-column: 1 / -1; }
.rivis-item-note { display: block; margin-top: 18px; padding: 16px 16px 14px; border-radius: 20px; background: var(--rivis-soft); }
.rivis-item-note-title { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--rivis-ink); }
.rivis-item-note-title .rivis-icon { width: 18px; height: 18px; color: var(--rivis-accent); }
.rivis-item-note-title small { margin-left: auto; color: var(--rivis-muted); font-size: 11.5px; }
.rivis-item-note textarea, .modal .rivis-item-note textarea.form-control { margin-top: 10px; min-height: 64px; resize: none; background: #fff; border: 0 !important; border-radius: 14px !important; box-shadow: inset 0 0 0 1px var(--rivis-line); font-size: 14px; }
.rivis-item-note textarea:focus { box-shadow: inset 0 0 0 1px var(--rivis-accent), 0 0 0 4px #7615131a !important; }
.rivis-item-actions { display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-start; gap: 12px; border-top: 1px solid var(--rivis-line); background: #fff; padding: 16px 24px; }
.rivis-item-actions > .btn { margin: 0; white-space: nowrap; min-width: 0; min-height: 50px; padding: 0 24px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.rivis-add-button { min-width: 220px; }
.rivis-short { display: none; }
.rivis-quantity { display: flex; align-items: center; gap: 12px; margin-right: auto; }
.rivis-quantity button { background: #fff; border: 1px solid #ddd5cc; width: 44px; height: 44px; min-height: 0; padding: 0; display: inline-grid; place-items: center; border-radius: 50%; color: var(--rivis-ink); font-size: 18px; line-height: 1; transition: background .18s; }
.rivis-quantity button:hover { background: var(--rivis-warm); }
.rivis-quantity span { min-width: 18px; text-align: center; }

/* Fulfillment dialog */
.rivis-fulfillment .modal-dialog { max-width: 560px; }
.rivis-fulfillment .modal-content { border: 0; border-radius: 28px; box-shadow: 0 30px 90px #302d372e; overflow: hidden; }
.rivis-fulfillment .modal-header { border: 0; padding: 26px 28px 6px; }
.rivis-fulfillment .modal-title { font-size: 24px; }
.rivis-fulfillment .modal-body { padding: 14px 28px 8px; }
.rivis-fulfillment .modal-footer { border: 0; padding: 12px 28px 26px; }
.rivis-service-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.rivis-service-option { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 16px; border: 1px solid var(--rivis-line); border-radius: 20px; cursor: pointer; transition: background .18s, border-color .18s, transform .18s; }
.rivis-service-option:active { transform: scale(.98); }
.rivis-service-option input { position: absolute; opacity: 0; pointer-events: none; }
.rivis-service-option .rivis-icon { color: var(--rivis-accent); width: 28px; height: 28px; }
.rivis-service-option strong { display: block; font-weight: 400; font-size: 15px; }
.rivis-service-option small { display: block; color: var(--rivis-muted); font-size: 12px; line-height: 1.4; }
.rivis-service-option:has(input:checked) { background: var(--rivis-warm); border-color: var(--rivis-accent); box-shadow: inset 0 0 0 1px var(--rivis-accent); }
.rivis-service-option:has(input:focus-visible) { outline: 2px solid var(--rivis-accent); outline-offset: 2px; }
.rivis-service-option.is-disabled { opacity: .5; cursor: not-allowed; }
.rivis-when { margin-top: 22px; }
.rivis-when h3 { font: 400 15px Poppins, sans-serif; letter-spacing: 0; margin-bottom: 10px; }
.rivis-when-toggle { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); padding: 4px; border-radius: 999px; background: var(--rivis-soft); }
.rivis-when-toggle label { position: relative; text-align: center; border-radius: 999px; padding: 11px 12px; font-size: 13.5px; cursor: pointer; transition: background .2s, box-shadow .2s; }
.rivis-when-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.rivis-when-toggle label:has(input:checked) { background: #fff; box-shadow: 0 3px 10px #30271d14; color: var(--rivis-accent-dark); }
.rivis-when-toggle label:has(input:focus-visible) { outline: 2px solid var(--rivis-accent); }
.rivis-date-chips { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 14px 0 6px; }
.rivis-date-chips::-webkit-scrollbar { display: none; }
.rivis-time-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); gap: 8px; max-height: 220px; overflow-y: auto; padding: 8px 2px 2px; }
.rivis-chip-option { position: relative; flex: 0 0 auto; margin: 0; cursor: pointer; }
.rivis-chip-option input { position: absolute; opacity: 0; pointer-events: none; }
.rivis-chip-option span { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 44px; padding: 8px 16px; border: 1px solid var(--rivis-line); border-radius: 999px; font-size: 13.5px; transition: background .18s, border-color .18s; }
.rivis-date-chips .rivis-chip-option span { border-radius: 18px; min-width: 76px; }
.rivis-chip-option b { font-weight: 400; }
.rivis-chip-option small { color: var(--rivis-muted); font-size: 11px; }
.rivis-chip-option:has(input:checked) span { background: var(--rivis-warm); border-color: var(--rivis-accent); color: var(--rivis-accent-dark); }
.rivis-chip-option:has(input:focus-visible) span { outline: 2px solid var(--rivis-accent); }
.rivis-hours-note { color: var(--rivis-muted); font-size: 12px; margin: 10px 0 0; }
.rivis-address-input { position: relative; }
.rivis-address-input .form-control { padding-right: 56px; }
.rivis-address-input .rivis-icon-button { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; border: 0; background: var(--rivis-warm); }
.rivis-address-summary { padding: 13px 20px; border: 1px solid var(--rivis-line); border-radius: 999px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Cart / checkout pages */
.rivis-cart-page.container { max-width: 900px; padding-top: 28px; padding-bottom: 50px; }
.rivis-checkout-choice { border: 1px solid var(--rivis-line); background: var(--rivis-warm); border-radius: var(--rivis-radius); padding: 20px; margin: 20px 0; }
.rivis-ordering-page .card, .rivis-ordering-page .module-box { border-radius: var(--rivis-radius) !important; border-color: var(--rivis-line) !important; }
.ordering-settings { display: flex; flex-wrap: wrap; gap: 16px; align-items: end; border: 1px solid var(--rivis-line); padding: 20px; border-radius: 18px; margin-bottom: 30px; }
.ordering-settings p { flex-basis: 100%; margin: 0; }

/* Confirmation dialog */
.rivis-confirm { width: min(420px, calc(100% - 32px)); padding: 30px 28px 26px; border: 0; border-radius: 28px; text-align: center; color: var(--rivis-ink); box-shadow: 0 30px 90px #302d3733; }
.rivis-confirm[open] { animation: rivis-pop .28s cubic-bezier(.2, .8, .2, 1.1) both; }
.rivis-confirm::backdrop { background: #302d3740; backdrop-filter: blur(3px); }
.rivis-confirm-icon { display: grid; place-items: center; width: 60px; height: 60px; margin: 0 auto 16px; border-radius: 50%; background: var(--rivis-warm); color: var(--rivis-accent); }
.rivis-confirm-icon svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.rivis-confirm h2 { font-size: 23px; margin-bottom: 8px; }
.rivis-confirm p { color: var(--rivis-muted); font-size: 14px; line-height: 1.6; margin: 0 0 22px; }
.rivis-confirm-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rivis-confirm-actions button { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; border-radius: 999px; border: 1px solid var(--rivis-line); background: var(--rivis-soft); color: var(--rivis-ink); font-size: 14px; font-weight: 400; padding: 0 14px; }
.rivis-confirm-actions .rivis-confirm-ok { background: var(--rivis-accent); border-color: var(--rivis-accent); color: #fff; }
.rivis-confirm-actions .rivis-confirm-ok:hover { background: var(--rivis-accent-dark); }
.rivis-confirm.is-danger .rivis-confirm-icon { background: #fbefea; color: #a4503a; }

/* Processing dialog: logo colour-fill */
.rivis-busy { position: fixed; inset: 0; z-index: 10080; display: grid; place-items: center; background: #ffffff4d; backdrop-filter: blur(2px); opacity: 0; transition: opacity .15s; }
.rivis-busy.is-visible { opacity: 1; }
.rivis-busy-card { width: 156px; aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 18px; border-radius: 34px; background: #fff; box-shadow: 0 24px 70px #302d3726, 0 0 0 1px #30271d0d; transform: scale(.9); transition: transform .25s cubic-bezier(.2, .8, .2, 1.2); }
.rivis-busy.is-visible .rivis-busy-card { transform: scale(1); }
.rivis-busy-logo { position: relative; width: 112px; aspect-ratio: 900 / 455; }
.rivis-busy-logo img { position: absolute; inset: 0; width: 100%; height: 100%; }
.rivis-busy-base { opacity: .9; }
.rivis-busy-fill { clip-path: inset(0 100% 0 0); animation: rivis-logo-fill 1.1s cubic-bezier(.65, 0, .35, 1) infinite; }
.rivis-busy-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); margin: 0; }

@keyframes rivis-logo-fill { 0% { clip-path: inset(0 100% 0 0); } 55% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(0 0 0 100%); } }
@keyframes rivis-spin { to { transform: rotate(360deg); } }
@keyframes rivis-draw { to { stroke-dashoffset: 0; } }
@keyframes rivis-pop { from { opacity: 0; transform: scale(.86); } to { opacity: 1; transform: scale(1); } }
@keyframes rivis-dialog-in { from { opacity: 0; transform: translateY(18px) scale(.97); } to { opacity: 1; transform: none; } }

@media (min-width: 1200px) { .rivis-menu-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 992px) { .rivis-mobile-cart { display: none; } }
@media (max-width: 991px) {
    .rivis-cart-link { display: none; }
    .rivis-order-toolbar.container { flex-wrap: wrap; padding-right: 210px; }
    .rivis-service-control { order: 3; flex-basis: 100%; }
    .rivis-toolbar-actions { margin-left: auto; }
    .rivis-search.is-open input { position: fixed; z-index: 1030; top: 16px; left: 12px; right: 12px; width: auto; max-width: none; }
    .rivis-search.is-open .rivis-icon-button { position: fixed; z-index: 1031; top: 20px; right: 16px; }
    .rivis-item-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); }
}
@media (max-width: 767px) {
    #orange-modal .rivis-item-dialog, .rivis-item-dialog { --bs-modal-width: calc(100vw - 16px); max-width: calc(100vw - 16px); margin: 8px auto; min-height: calc(100% - 16px); }
    .rivis-item-dialog .modal-content { max-height: calc(100dvh - 16px); border-radius: 24px; }
    .rivis-item-layout { display: block; overflow-y: auto; }
    .rivis-item-media { min-height: 0; aspect-ratio: 1.6; }
    .rivis-item-panel { overflow: visible; padding: 20px 16px 12px; }
    .rivis-item-intro { padding-right: 0; }
}
@media (max-width: 600px) {
    .rivis-toolbar-logo img { height: 36px; }
    .rivis-order-toolbar.container { padding-right: 112px; }
    .rivis-mobile-cart > span:last-child { display: none; }
    .rivis-menu-grid { gap: 12px; } .rivis-card-copy { padding: 12px; } .rivis-card-title { font-size: 15.5px; } .rivis-card-price { font-size: 14px; }
    .rivis-card-description { font-size: 11.5px; }
    .rivis-option-grid { gap: 8px; } .rivis-option-section { padding: 14px; }
    .rivis-option-tile { padding: 10px; font-size: 12px; } .rivis-option-tile img { width: 36px; height: 36px; }
    .rivis-item-actions { gap: 8px; padding: 12px; }
    .rivis-item-actions > .btn { min-height: 46px; padding: 0 16px; font-size: 13.5px; }
    .rivis-continue { width: 46px; padding: 0 !important; flex: 0 0 auto; }
    .rivis-short { display: inline; font-size: 18px; } .rivis-long { display: none; }
    .rivis-add-button { flex: 1; min-width: 0; }
    .rivis-quantity { gap: 6px; } .rivis-quantity button { width: 38px; height: 38px; }
    .rivis-service-control { padding: 11px 16px; font-size: 12.5px; }
    #navbar-categories .nav-link, .category-tabs a { padding: 10px 18px; font-size: 13px; }
    .rivis-fulfillment .modal-header, .rivis-fulfillment .modal-body, .rivis-fulfillment .modal-footer { padding-left: 18px; padding-right: 18px; }
    .rivis-service-options { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
    .rivis-service-option { padding: 12px 10px; gap: 6px; } .rivis-service-option small { display: none; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto !important; } *, *::before, *::after { transition: none !important; animation: none !important; } .rivis-busy-fill { clip-path: inset(0 40% 0 0); } }

/* Option rules: required / max feedback (website and kiosk) */
.rivis-option-section { transition: border-color .2s, background .2s, box-shadow .2s; }
.rivis-option-section.is-invalid { border-color: #d4343c !important; background: #fff7f7 !important; box-shadow: 0 0 0 3px #d4343c26; animation: option-shake .38s both; }
.rivis-option-section.is-invalid .rivis-chip.is-required { background: #d4343c; color: #fff; }
.rivis-option-error { display: none; margin: 0 0 10px; color: #b4232a; font-size: 13px; font-weight: 500; }
.rivis-option-section.is-invalid .rivis-option-error:not(:empty) { display: block; }
.rivis-option-tile.is-capped { opacity: .4; filter: grayscale(.6); }
@keyframes option-shake { 0%, 100% { transform: none; } 25% { transform: translateX(-6px); } 50% { transform: translateX(5px); } 75% { transform: translateX(-3px); } }

/* v5 checkout redesign */
.rivis-checkout-page.container { max-width: 1080px; }
.rivis-back-link { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 18px; padding: 9px 16px 9px 12px; border-radius: 999px; background: var(--rivis-soft); color: var(--rivis-ink); font-size: 14px; text-decoration: none; transition: background .2s; }
.rivis-back-link:hover { background: #ece6df; color: var(--rivis-ink); }
.rivis-back-link svg, .rivis-co-icon svg, .rivis-co-submit svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.rivis-checkout-title h1 { margin: 0 0 4px; font: 500 clamp(28px, 4vw, 38px) Quicksand, system-ui, sans-serif; }
.rivis-checkout-title p { margin: 0 0 20px; color: var(--rivis-muted); }
.rivis-checkout-choice { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; padding: 14px 14px 14px 16px; border: 0; border-radius: 24px; background: var(--rivis-warm); }
.rivis-checkout-choice strong { display: block; font-weight: 500; }
.rivis-checkout-choice p { margin: 0; color: var(--rivis-muted); font-size: 13px; }
.rivis-checkout-choice > div { flex: 1; min-width: 0; }
.rivis-checkout-signin { padding: 10px 18px; border-radius: 999px; background: #fff; color: var(--rivis-accent) !important; font-size: 14px; font-weight: 500; text-decoration: none; box-shadow: 0 1px 0 #302d3714; white-space: nowrap; }
.rivis-checkout-card { padding: 0; border: 0; background: none; }
.rivis-checkout-form { display: grid; gap: 16px; }
.rivis-co-section { padding: 22px; border: 1px solid #efe9e2; border-radius: 26px; background: #fff; box-shadow: 0 6px 24px #30271d0a; }
.rivis-co-head { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.rivis-co-head h2 { margin: 0; font: 500 18px Quicksand, system-ui, sans-serif; color: var(--rivis-ink); }
.rivis-co-head p { margin: 2px 0 0; color: var(--rivis-muted); font-size: 13px; }
.rivis-co-head > div { flex: 1; min-width: 0; }
.rivis-co-icon { flex: 0 0 auto; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 16px; background: #f8efe6; color: var(--rivis-accent); }
.rivis-co-icon svg { width: 22px; height: 22px; }
.rivis-co-section .row { --bs-gutter-y: 12px; margin-bottom: 0 !important; }
.rivis-co-section .form-floating > .form-control { border-radius: 18px !important; background: #fcfaf8; }
.rivis-co-section .form-floating > textarea.form-control { min-height: 96px; }
.rivis-co-section .form-floating > .form-control:focus { background: #fff; }
.rivis-co-fulfillment { padding: 14px 18px; border-radius: 20px; background: var(--rivis-warm); font-size: 15px; }
.rivis-co-fulfillment a { color: var(--rivis-accent); text-decoration: none; font-weight: 500; }
.rivis-pay-options { display: grid; gap: 10px; }
.rivis-pay-option { position: relative; padding: 14px 16px; border: 1px solid var(--rivis-line); border-radius: 20px; background: #fff; transition: border-color .2s, background .2s, box-shadow .2s; }
.rivis-pay-option:has(input:checked), .rivis-pay-option.selected { border-color: var(--rivis-accent); background: var(--rivis-warm); box-shadow: 0 0 0 3px #76151314; }
.rivis-pay-option .form-check { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 0; }
.rivis-pay-option .form-check-input { float: none; width: 20px; height: 20px; margin: 2px 0 0; border-color: #cbbfb2; }
.rivis-pay-option .form-check-input:checked { background-color: var(--rivis-accent); border-color: var(--rivis-accent); }
.rivis-pay-option .form-check-label { flex: 1; margin: 0 !important; font-weight: 500; cursor: pointer; }
.rivis-co-terms:empty, .rivis-co-terms > .row:empty { display: none; }
.rivis-co-terms .p-3 { padding: 4px 8px !important; }
.rivis-co-terms .form-check-input:checked { background-color: var(--rivis-accent); border-color: var(--rivis-accent); }
.rivis-co-submit { display: grid; gap: 10px; justify-items: center; padding: 4px 0 8px; }
.rivis-co-submit .checkout-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 60px; border-radius: 999px; font-size: 17px; }
.rivis-co-submit .checkout-btn svg { width: 22px; height: 22px; stroke-width: 2.2; }
.rivis-co-submit p { display: inline-flex; align-items: center; gap: 6px; margin: 0; color: var(--rivis-muted); font-size: 12.5px; }
.rivis-co-submit p svg { width: 14px; height: 14px; }
.rivis-checkout-summary { top: 92px; }
.rivis-basket { padding: 22px; border: 1px solid #efe9e2; border-radius: 26px; background: #fff; box-shadow: 0 6px 24px #30271d0a; }
.rivis-basket .rivis-co-head { margin-bottom: 8px; }
.rivis-basket-edit { padding: 7px 14px; border-radius: 999px; background: var(--rivis-soft); color: var(--rivis-ink) !important; font-size: 13px; text-decoration: none; }
.rivis-basket-items { margin: 0; padding: 0; list-style: none; }
.rivis-basket-items li { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: 10px; align-items: start; padding: 14px 0; border-bottom: 1px dashed #e8e1d9; }
.rivis-basket-qty { display: grid; place-items: center; height: 28px; border-radius: 10px; background: #f8efe6; color: var(--rivis-accent); font-size: 13px; font-weight: 500; }
.rivis-basket-name strong { display: block; font-weight: 500; font-size: 15px; line-height: 1.35; }
.rivis-basket-name small { display: block; color: var(--rivis-muted); font-size: 12.5px; line-height: 1.4; }
.rivis-basket-note { font-style: italic; }
.rivis-basket-price { font-weight: 500; white-space: nowrap; }
.rivis-basket-empty { margin: 10px 0 0; color: var(--rivis-muted); }
.rivis-basket #cart-totals { margin-top: 10px !important; padding-top: 6px; border: 0 !important; }
.rivis-basket #cart-totals td { padding: 5px 0; color: var(--rivis-muted); font-size: 14px; }
.rivis-basket #cart-totals td.text-end { color: var(--rivis-ink); }
.rivis-basket #cart-totals tr.fw-bold td { padding-top: 14px; border-top: 1px solid var(--rivis-line); color: var(--rivis-ink); font: 500 19px Quicksand, system-ui, sans-serif; }
@media (max-width: 575px) {
    .rivis-co-section, .rivis-basket { padding: 18px 16px; border-radius: 22px; }
    .rivis-co-icon { width: 38px; height: 38px; border-radius: 13px; }
    .rivis-checkout-choice { flex-wrap: wrap; }
}
.rivis-pay-option .form-check .form-check-input { margin-left: 0 !important; flex: 0 0 auto; }
