/* EllaWeb core */
.site-v2 {
--_brand-primary: var(--brand-primary, #211c17);
--_brand-secondary: var(--brand-secondary, #b3401f);
--_bg-main: var(--bg-main, #faf5ec);
--_bg-alt: var(--bg-alt, #f3ead9);
--_surface: var(--surface, #fffcf7);
--_text-primary: var(--text-primary, #211c17);
--_text-secondary: var(--text-secondary, #6b5f53);
--_accent: var(--accent, #b3401f);
--_accent-contrast: var(--accent-contrast, #fff);
--_line: var(--line, #ece1d1);
--_font-heading: var(--font-heading, Georgia, serif);
--_font-body: var(--font-body, system-ui, sans-serif);
--_weight-heading: var(--weight-heading, 600);
--_title-scale: var(--title-scale, 1);
--_ls-heading: var(--letter-spacing-heading, -0.01em);
--_button-radius: var(--button-radius, 999px);
--_card-radius: var(--card-radius, 18px);
--_input-radius: var(--input-radius, 12px);
--_image-radius: var(--image-radius, 14px);
--_button-height: var(--button-height, 48px);
--_container: var(--container-width, 1240px);
--_section-gap: var(--section-gap, 72px);
--_img-ratio: var(--product-image-ratio, 4 / 3);
--_shadow-card: var(--shadow-card, 0 12px 32px -20px rgba(33, 28, 23, 0.18));
--_shadow-hover: var(--shadow-hover, 0 20px 44px -22px rgba(33, 28, 23, 0.28));
--_overlay: var(--overlay-strength, 0.35);
--color-ink: var(--_text-primary);
--color-ink-soft: var(--_text-secondary);
--color-cream: var(--_bg-main);
--color-cream-card: var(--_surface);
--color-line: var(--_line);
--color-accent: var(--_accent);
--color-accent-dark: color-mix(in srgb, var(--_accent) 78%, #000);
--color-accent-soft: color-mix(in srgb, var(--_accent) 12%, var(--_surface));
--color-badge: var(--_accent);
background: var(--_bg-main);
color: var(--_text-primary);
font-family: var(--_font-body);
-webkit-font-smoothing: antialiased;
overflow-x: clip;
}
.site-v2 > * {
min-width: 0;
}
.site-v2 .font-display {
font-family: var(--_font-heading);
}
.site-v2 .bg-cream { background-color: var(--_bg-main); }
.site-v2 .bg-cream-card { background-color: var(--_surface); }
.site-v2 .text-ink { color: var(--_text-primary); }
.site-v2 .text-ink-soft { color: var(--_text-secondary); }
.site-v2 .border-line { border-color: var(--_line); }
.site-v2 .divide-line > * { border-color: var(--_line); }
.site-v2 .text-accent { color: var(--_accent); }
.site-v2 .bg-accent { background-color: var(--_accent); }
.site-v2 .ring-accent\/40 { --tw-ring-color: color-mix(in srgb, var(--_accent) 40%, transparent); }
.site-v2 h1,
.site-v2 h2,
.site-v2 h3,
.site-v2 .site-heading {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
letter-spacing: var(--_ls-heading);
color: var(--_text-primary);
text-wrap: balance;
}
.site-v2[data-heading-case="uppercase"] h1,
.site-v2[data-heading-case="uppercase"] h2 {
text-transform: uppercase;
letter-spacing: 0.04em;
}
.site-container {
width: 100%;
max-width: var(--_container);
margin-inline: auto;
padding-inline: clamp(16px, 4vw, 40px);
}
.site-v2-page {
min-height: 55vh;
}
.site-v2-page:not(:has(.restaurant-hero)):not(:has(.restaurant-hero--slider)) {
max-width: var(--_container);
margin-inline: auto;
padding: clamp(22px, 4vw, 44px) clamp(16px, 4vw, 40px) clamp(60px, 10vw, 100px);
}
.restaurant-section {
padding-block: calc(var(--_section-gap) * 0.5);
}
.restaurant-section__title {
font-size: calc(1.7rem * var(--_title-scale));
line-height: 1.08;
margin: 0 0 1.2rem;
}
@media (min-width: 768px) {
.restaurant-section {
padding-block: calc(var(--_section-gap) * 0.62);
}
.restaurant-section__title {
font-size: calc(2.4rem * var(--_title-scale));
}
}
.restaurant-section__title em {
font-style: italic;
color: var(--_accent);
font-weight: inherit;
}
.restaurant-section__eyebrow {
display: flex;
align-items: center;
gap: 12px;
margin: 0 0 14px;
font-family: var(--_font-body);
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--_accent);
}
.restaurant-section__eyebrow::before {
content: "";
width: 28px;
height: 2px;
background: currentColor;
flex: none;
}
.site-v2 [data-section-tone="dark"] {
--_bg-main: var(--_brand-primary);
--_bg-alt: color-mix(in srgb, var(--_brand-primary) 84%, #fff);
--_surface: color-mix(in srgb, var(--_brand-primary) 90%, #fff);
--_text-primary: #f6f2ea;
--_text-secondary: color-mix(in srgb, #f6f2ea 66%, transparent);
--_line: color-mix(in srgb, #f6f2ea 15%, transparent);
background: var(--_brand-primary);
color: var(--_text-primary);
}
.site-v2 [data-section-tone="brand"] {
--_bg-main: var(--_accent);
--_bg-alt: color-mix(in srgb, var(--_accent) 86%, #000);
--_surface: color-mix(in srgb, var(--_accent) 88%, #000);
--_text-primary: var(--_accent-contrast);
--_text-secondary: color-mix(in srgb, var(--_accent-contrast) 78%, transparent);
--_line: color-mix(in srgb, var(--_accent-contrast) 22%, transparent);
background: var(--_accent);
color: var(--_text-primary);
}
.site-v2 [data-section-tone="light"] {
background: var(--_surface);
}
.site-v2 [data-section-tone="dark"] .restaurant-section__title,
.site-v2 [data-section-tone="brand"] .restaurant-section__title,
.site-v2 [data-section-tone] h2,
.site-v2 [data-section-tone] h3 {
color: var(--_text-primary);
}
.site-v2 [data-section-tone="brand"] .restaurant-section__eyebrow,
.site-v2 [data-section-tone="brand"] .restaurant-section__title em {
color: var(--_text-primary);
}
.restaurant-header {
position: relative;
z-index: 40;
background: var(--_surface);
border-bottom: 1px solid var(--_line);
}
.site-v2[data-header-sticky="true"] .restaurant-header {
position: sticky;
top: 0;
}
.restaurant-header__inner {
display: flex;
align-items: center;
gap: clamp(14px, 2.5vw, 32px);
min-height: 72px;
}
.restaurant-header__logo {
display: flex;
align-items: center;
gap: 12px;
flex: none;
text-decoration: none;
color: inherit;
}
.restaurant-header__logo img {
height: 46px;
width: auto;
max-width: 220px;
object-fit: contain;
}
.restaurant-header__logo-mark {
height: 44px;
width: 44px;
border-radius: 999px;
background: var(--_brand-primary);
color: var(--_bg-main);
display: flex;
align-items: center;
justify-content: center;
font-family: var(--_font-heading);
font-weight: 700;
}
.restaurant-header__logo-name {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1.05rem;
}
.restaurant-navigation {
display: none;
align-items: center;
justify-content: center;
gap: clamp(14px, 1.8vw, 28px);
min-width: 0;
flex: 1 1 auto;
overflow-x: auto;
scrollbar-width: none;
}
.restaurant-navigation::-webkit-scrollbar {
display: none;
}
.restaurant-navigation a {
flex: none;
white-space: nowrap;
}
.site-v2[data-header-nav="categories"] .restaurant-navigation {
justify-content: flex-start;
-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
}
@media (min-width: 1024px) {
.restaurant-navigation {
display: flex;
}
}
.restaurant-header__burger {
display: grid;
gap: 4px;
width: 42px;
height: 42px;
padding: 10px;
margin-left: auto;
border: 1px solid var(--_line);
border-radius: var(--_input-radius);
background: transparent;
cursor: pointer;
}
.restaurant-header__burger span {
height: 2px;
background: currentColor;
border-radius: 2px;
}
@media (min-width: 1024px) {
.restaurant-header__burger {
display: none;
}
}
.restaurant-navigation[data-open="true"] {
display: flex;
position: fixed;
inset: 68px 0 0;
z-index: 60;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
gap: 26px;
padding: 36px clamp(20px, 6vw, 48px);
overflow-y: auto;
background: var(--_surface);
color: var(--_text-primary);
-webkit-mask-image: none;
mask-image: none;
font-size: 1.3rem;
}
.site-v2[data-header-style="overlay"] .restaurant-header.is-nav-open,
.site-v2[data-header-style="dark"] .restaurant-header.is-nav-open {
background: var(--_surface);
color: var(--_text-primary);
}
.restaurant-navigation a {
flex-shrink: 0;
white-space: nowrap;
text-decoration: none;
color: var(--_text-primary);
font-weight: 600;
font-size: 0.98rem;
padding-block: 4px;
border-bottom: 2px solid transparent;
transition: border-color 0.15s, color 0.15s;
}
.restaurant-navigation a:hover {
border-color: var(--_line);
}
.restaurant-navigation a[aria-current="page"],
.restaurant-navigation a.is-active {
color: var(--_accent);
border-color: var(--_accent);
}
.restaurant-header__actions {
display: flex;
align-items: center;
gap: 10px;
flex: none;
margin-left: auto;
}
.restaurant-header__actions > * {
white-space: nowrap;
}
.restaurant-navigation + .restaurant-header__actions {
margin-left: 0;
}
.restaurant-header__phone {
font-weight: 700;
font-size: 0.9rem;
text-decoration: none;
color: inherit;
padding-inline: 6px;
white-space: nowrap;
}
.restaurant-header__order {
font-weight: 700;
}
.restaurant-header__cart {
gap: 8px;
}
.restaurant-header__cart-icon {
position: relative;
display: inline-flex;
}
.restaurant-header__cart-count {
position: absolute;
top: -7px;
right: -9px;
min-width: 16px;
height: 16px;
padding: 0 3px;
display: grid;
place-items: center;
border-radius: 999px;
background: var(--_accent);
color: var(--_accent-contrast);
font-size: 0.62rem;
font-weight: 700;
line-height: 1;
}
.restaurant-header__cart-total {
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.site-v2[data-header-style="overlay"] .restaurant-header {
position: absolute;
inset: 0 0 auto;
background: transparent;
border-bottom-color: transparent;
color: #fff;
}
.site-v2[data-header-style="overlay"] .restaurant-header.is-scrolled {
position: fixed;
background: var(--_surface);
border-bottom-color: var(--_line);
color: var(--_text-primary);
box-shadow: var(--_shadow-card);
}
.site-v2[data-header-style="overlay"] .restaurant-header:not(.is-scrolled):not([data-context="page"]) .restaurant-navigation a,
.site-v2[data-header-style="overlay"] .restaurant-header:not(.is-scrolled):not([data-context="page"]) .restaurant-header__logo-name {
color: #fff;
}
.site-v2 .restaurant-header[data-context="page"] {
position: sticky;
inset: 0 0 auto;
background: var(--_surface);
color: var(--_text-primary);
border-bottom-color: var(--_line);
backdrop-filter: none;
}
.site-v2 .restaurant-header[data-context="page"] .restaurant-navigation a,
.site-v2 .restaurant-header[data-context="page"] .restaurant-header__logo-name {
color: var(--_text-primary);
}
.site-v2 .restaurant-header[data-context="page"] .restaurant-header__logo img {
filter: none;
}
.site-v2[data-header-style="dark"] .restaurant-header {
background: var(--_brand-primary);
color: #fff;
border-bottom-color: rgba(255, 255, 255, 0.12);
}
.site-v2[data-header-style="dark"] .restaurant-navigation a,
.site-v2[data-header-style="dark"] .restaurant-header__logo-name {
color: #fff;
}
.site-v2[data-header-style="compact"] .restaurant-header__inner {
min-height: 56px;
}
.btn {
--btn-bg: var(--_accent);
--btn-fg: var(--_accent-contrast);
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-height: var(--_button-height);
padding-inline: 22px;
border-radius: var(--_button-radius);
background: var(--btn-bg);
color: var(--btn-fg);
border: 1px solid transparent;
font-family: var(--_font-body);
font-weight: 600;
font-size: 0.95rem;
line-height: 1;
cursor: pointer;
text-decoration: none;
transition: transform 0.12s ease, box-shadow 0.15s ease, background 0.15s ease;
}
.btn:hover {
box-shadow: var(--_shadow-hover);
}
.btn:active {
transform: translateY(1px);
}
.btn:disabled {
opacity: 0.55;
cursor: not-allowed;
}
.btn--secondary {
--btn-bg: var(--_surface);
--btn-fg: var(--_text-primary);
border-color: var(--_line);
}
.btn--ghost {
--btn-bg: transparent;
--btn-fg: var(--_text-primary);
}
.btn--outline {
--btn-bg: transparent;
--btn-fg: var(--_accent);
border-color: currentColor;
}
.btn--lg {
min-height: calc(var(--_button-height) + 8px);
padding-inline: 30px;
font-size: 1rem;
}
.btn--sm {
min-height: 38px;
padding-inline: 14px;
font-size: 0.85rem;
}
.site-card {
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
box-shadow: var(--_shadow-card);
}
.restaurant-hero {
position: relative;
isolation: isolate;
overflow: hidden;
background: var(--_brand-primary);
color: #fff;
}
.restaurant-hero[data-height="compact"] {
min-height: 44vh;
}
.restaurant-hero[data-height="large"] {
min-height: 66vh;
}
.restaurant-hero[data-height="fullscreen"] {
min-height: 88vh;
}
@media (max-width: 767px) {
.restaurant-hero[data-height="fullscreen"],
.restaurant-hero[data-height="large"] {
min-height: 72vh;
}
}
.restaurant-hero__media {
position: absolute;
inset: 0;
z-index: -2;
}
.restaurant-hero__media img {
width: 100%;
height: 100%;
object-fit: cover;
}
.restaurant-hero::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(
to top,
rgba(0, 0, 0, calc(var(--_overlay) + 0.25)),
rgba(0, 0, 0, var(--_overlay)) 45%,
rgba(0, 0, 0, calc(var(--_overlay) * 0.5))
);
}
.restaurant-hero__inner {
position: relative;
min-height: inherit;
display: grid;
grid-template-columns: 1fr;
align-items: center;
gap: clamp(28px, 5vw, 56px);
padding-block: clamp(88px, 15vh, 176px);
}
.restaurant-hero__content {
position: relative;
display: flex;
flex-direction: column;
gap: 20px;
max-width: 42rem;
}
.restaurant-hero__content[data-align="center"] {
margin-inline: auto;
text-align: center;
align-items: center;
}
.restaurant-hero__eyebrow {
display: flex;
align-items: center;
gap: 12px;
font-family: var(--_font-body);
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--_accent);
}
.restaurant-hero__eyebrow::before {
content: "";
width: 28px;
height: 2px;
background: currentColor;
flex: none;
}
.restaurant-hero__content[data-align="center"] .restaurant-hero__eyebrow {
justify-content: center;
}
.restaurant-hero__title {
font-size: clamp(2.3rem, 1.4rem + 4.4vw, calc(4.4rem * var(--_title-scale)));
line-height: 1.03;
margin: 0;
color: #fff;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.28), 0 8px 40px rgba(0, 0, 0, 0.4);
}
.restaurant-hero__title em {
font-style: italic;
color: var(--_accent);
font-weight: inherit;
}
.restaurant-hero__subtitle {
font-size: clamp(1rem, 0.95rem + 0.4vw, 1.22rem);
color: rgba(255, 255, 255, 0.92);
max-width: 34rem;
margin: 0;
line-height: 1.6;
text-shadow: 0 1px 12px rgba(0, 0, 0, 0.4);
}
.restaurant-hero[data-hero-layout="c"] .restaurant-hero__title,
.restaurant-hero[data-hero-layout="c"] .restaurant-hero__subtitle,
.site-v2[data-hero-fit="contain"] .restaurant-hero__title,
.site-v2[data-hero-fit="contain"] .restaurant-hero__subtitle {
text-shadow: none;
}
.restaurant-hero__actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 6px;
}
.restaurant-hero__aside {
position: relative;
width: 100%;
}
.restaurant-hero__proof {
display: flex;
flex-wrap: wrap;
gap: 14px 22px;
margin-top: 30px;
font-size: 0.76rem;
font-weight: 700;
letter-spacing: 0.04em;
color: rgba(255, 255, 255, 0.78);
}
.restaurant-hero__proof span {
padding-left: 22px;
border-left: 1px solid rgba(255, 255, 255, 0.24);
}
.restaurant-hero__proof span:first-child {
padding-left: 0;
border-left: 0;
}
@media (min-width: 980px) {
.restaurant-hero[data-hero-layout="b"] .restaurant-hero__inner,
.restaurant-hero--slider .restaurant-hero__inner {
grid-template-columns: minmax(0, 1fr) minmax(320px, 400px);
}
.restaurant-hero[data-hero-layout="b"] .restaurant-hero__aside,
.restaurant-hero--slider .restaurant-hero__aside {
justify-self: end;
max-width: 400px;
}
}
.restaurant-hero[data-hero-layout="c"] {
background: var(--_surface);
color: var(--_text-primary);
}
.restaurant-hero[data-hero-layout="c"]::after {
display: none;
}
.restaurant-hero[data-hero-layout="c"] .restaurant-hero__title {
color: var(--_text-primary);
}
.restaurant-hero[data-hero-layout="c"] .restaurant-hero__subtitle {
color: var(--_text-secondary);
}
.restaurant-hero__media--split {
position: relative;
inset: auto;
z-index: 0;
border-radius: var(--_image-radius);
overflow: hidden;
align-self: stretch;
min-height: 340px;
}
@media (min-width: 900px) {
.restaurant-hero[data-hero-layout="c"] .restaurant-hero__inner {
grid-template-columns: 1fr 1fr;
}
}
.site-v2[data-hero-fit="contain"] .restaurant-hero {
display: flex;
flex-direction: column;
background: var(--_surface);
color: var(--_text-primary);
min-height: 0;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero[data-height] {
min-height: 0;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero::after {
display: none;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__media {
position: relative;
inset: auto;
z-index: 0;
width: 100%;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__media img {
display: block;
width: 100%;
height: auto;
object-fit: contain;
}
@media (min-width: 1100px) {
.site-v2[data-hero-fit="contain"] .restaurant-hero__media img {
max-height: 78vh;
object-fit: contain;
}
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__inner {
display: block;
min-height: 0;
padding-block: clamp(20px, 4vw, 36px);
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__content {
min-height: 0;
max-width: none;
align-items: center;
text-align: center;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__content:empty {
display: none;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__aside {
margin-top: 20px;
margin-inline: auto;
max-width: 400px;
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__title {
color: var(--_text-primary);
}
.site-v2[data-hero-fit="contain"] .restaurant-hero__subtitle {
color: var(--_text-secondary);
}
.restaurant-hero--slider {
position: relative;
}
.restaurant-hero__slide {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.7s ease;
pointer-events: none;
}
.restaurant-hero__slide.is-active {
opacity: 1;
pointer-events: auto;
position: relative;
}
.restaurant-hero__dots {
position: absolute;
z-index: 3;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 8px;
}
.restaurant-hero__dots button {
width: 8px;
height: 8px;
border-radius: 999px;
border: none;
background: rgba(255, 255, 255, 0.4);
cursor: pointer;
transition: width 0.2s, background 0.2s;
}
.restaurant-hero__dots button.is-active {
width: 22px;
background: #fff;
}
.restaurant-hero__arrow {
position: absolute;
z-index: 3;
top: 50%;
transform: translateY(-50%);
width: 44px;
height: 44px;
border-radius: 999px;
border: none;
background: rgba(0, 0, 0, 0.3);
color: #fff;
cursor: pointer;
display: none;
}
@media (min-width: 768px) {
.restaurant-hero__arrow {
display: grid;
place-items: center;
}
}
.restaurant-hero__arrow--prev {
left: 16px;
}
.restaurant-hero__arrow--next {
right: 16px;
}
.ordering-widget {
background: var(--_surface);
color: var(--_text-primary);
border-radius: var(--_card-radius);
box-shadow: var(--_shadow-hover);
padding: 20px;
width: 100%;
max-width: 24rem;
}
.ordering-widget__methods {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
margin-bottom: 12px;
}
.ordering-widget__method {
border: 1px solid var(--_line);
border-radius: var(--_input-radius);
background: var(--_bg-alt);
padding: 10px 6px;
font-size: 0.82rem;
font-weight: 600;
cursor: pointer;
text-align: center;
transition: border-color 0.15s, background 0.15s;
}
.ordering-widget__method.is-active {
border-color: var(--_accent);
background: var(--_accent);
color: var(--_accent-contrast);
}
.ordering-widget select {
width: 100%;
min-height: 44px;
border-radius: var(--_input-radius);
border: 1px solid var(--_line);
background: var(--_surface);
padding-inline: 12px;
margin-bottom: 10px;
font: inherit;
color: inherit;
}
.ordering-widget__status {
display: flex;
gap: 10px;
align-items: flex-start;
margin: 4px 0 14px;
font-size: 0.82rem;
}
.ordering-widget__status-dot {
width: 8px;
height: 8px;
margin-top: 5px;
flex: none;
border-radius: 50%;
background: #7edf73;
box-shadow: 0 0 0 5px rgba(126, 223, 115, 0.14);
}
.ordering-widget__status strong {
display: block;
}
.ordering-widget__status small {
display: block;
margin-top: 2px;
color: var(--_text-secondary);
font-size: 0.76rem;
line-height: 1.4;
}
.ordering-widget__contact {
margin: 12px 0 0;
text-align: center;
font-size: 0.8rem;
color: var(--_text-secondary);
}
.ordering-widget__contact a {
color: inherit;
font-weight: 700;
white-space: nowrap;
}
.restaurant-infostrip {
position: relative;
z-index: 6;
}
.restaurant-infostrip__inner {
display: grid;
grid-template-columns: 1fr;
}
@media (min-width: 720px) {
.restaurant-infostrip__inner {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1080px) {
.restaurant-infostrip__inner {
grid-template-columns: repeat(4, 1fr);
}
}
.restaurant-infostrip__cell {
padding: clamp(20px, 3vw, 30px) clamp(16px, 2.4vw, 28px);
border-bottom: 1px solid var(--_line);
}
@media (min-width: 1080px) {
.restaurant-infostrip__cell {
border-bottom: 0;
border-right: 1px solid var(--_line);
}
.restaurant-infostrip__cell:last-child {
border-right: 0;
}
}
.restaurant-infostrip__label {
display: block;
margin-bottom: 6px;
font-family: var(--_font-body);
font-size: 0.7rem;
font-weight: 800;
letter-spacing: 0.16em;
text-transform: uppercase;
opacity: 0.82;
}
.restaurant-infostrip__value {
font-family: var(--_font-heading);
font-size: 0.98rem;
line-height: 1.5;
}
.restaurant-infostrip__value a {
color: inherit;
text-decoration: underline;
text-underline-offset: 3px;
font-weight: 600;
}
.category-nav {
display: flex;
gap: 8px;
overflow-x: auto;
scrollbar-width: none;
padding-block: 12px;
}
.category-nav::-webkit-scrollbar {
display: none;
}
.site-v2[data-category-nav="sticky"] .category-nav,
.site-v2[data-category-nav="bar"] .category-nav {
position: sticky;
top: 68px;
z-index: 20;
background: var(--_bg-main);
border-bottom: 1px solid var(--_line);
}
.category-nav__item {
flex-shrink: 0;
white-space: nowrap;
padding: 9px 16px;
border-radius: var(--_button-radius);
border: 1px solid var(--_line);
background: var(--_surface);
color: var(--_text-secondary);
font-weight: 600;
font-size: 0.9rem;
cursor: pointer;
text-decoration: none;
transition: all 0.15s;
}
.category-nav__item.is-active {
background: var(--_brand-primary);
color: var(--_bg-main);
border-color: var(--_brand-primary);
}
.site-v2[data-category-nav="vertical"] .category-nav {
flex-direction: column;
overflow: visible;
}
@media (max-width: 1023px) {
.site-v2[data-category-nav="vertical"] .category-nav {
flex-direction: row;
overflow-x: auto;
}
}
.product-card-grid {
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.site-v2[data-product-card="compact"] .product-card-grid,
.site-v2[data-product-card="minimal"] .product-card-grid {
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}
.product-card {
display: flex;
flex-direction: column;
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
overflow: hidden;
box-shadow: var(--_shadow-card);
transition: box-shadow 0.18s, transform 0.18s;
}
.product-card:hover {
box-shadow: var(--_shadow-hover);
transform: translateY(-2px);
}
.product-card__image {
aspect-ratio: var(--_img-ratio);
width: 100%;
object-fit: contain;
padding: 5%;
background: var(--_bg-alt);
}
.product-card__content {
display: flex;
flex-direction: column;
gap: 4px;
padding: 14px 16px 16px;
flex: 1;
}
.product-card__title {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1rem;
margin: 0;
}
.product-card__description {
font-size: 0.85rem;
color: var(--_text-secondary);
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.product-card__footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-top: auto;
padding-top: 8px;
}
.product-card__price {
font-weight: 700;
font-size: 1rem;
}
.product-card__price del {
color: var(--_text-secondary);
font-weight: 400;
margin-right: 6px;
}
.product-card__add {
display: inline-grid;
place-items: center;
width: 42px;
height: 42px;
flex: none;
border-radius: 999px;
border: 1px solid var(--_accent);
background: var(--_accent);
color: var(--_accent-contrast);
cursor: pointer;
transition: transform 0.14s ease, background 0.14s ease;
}
.product-card__add svg {
width: 18px;
height: 18px;
}
.product-card:hover .product-card__add {
transform: scale(1.08);
}
.site-v2[data-product-card="compact"] .product-card,
.site-v2[data-product-card="minimal"] .product-card {
flex-direction: row;
align-items: stretch;
}
.site-v2[data-product-card="compact"] .product-card__image,
.site-v2[data-product-card="minimal"] .product-card__image {
width: 108px;
aspect-ratio: 1;
flex-shrink: 0;
}
.site-v2[data-product-card="minimal"] .product-card {
border: none;
box-shadow: none;
border-bottom: 1px solid var(--_line);
border-radius: 0;
}
.product-card--nophoto .product-card__image {
display: none;
}
.product-card--nophoto .product-card__content {
padding: 18px 20px;
}
.product-card__badge {
position: absolute;
top: 10px;
left: 10px;
z-index: 2;
padding: 3px 9px;
border-radius: 999px;
background: var(--_accent);
color: var(--_accent-contrast);
font-size: 0.68rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.product-card {
position: relative;
}
.restaurant-footer {
background: var(--_brand-primary);
color: rgba(255, 255, 255, 0.75);
padding-block: 48px;
margin-top: var(--_section-gap);
}
.restaurant-footer a {
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
}
.restaurant-footer a:hover {
color: #fff;
}
.restaurant-split {
display: grid;
gap: clamp(16px, 3vw, 28px);
}
@media (min-width: 860px) {
.restaurant-split {
grid-template-columns: 1fr 1fr;
}
}
.restaurant-split > div:empty {
display: none;
}
.restaurant-split > div {
display: flex;
}
.restaurant-split > div > * {
flex: 1;
}
.restaurant-info {
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
box-shadow: var(--_shadow-card);
padding: clamp(18px, 3vw, 26px);
}
.restaurant-info__label {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1.1rem;
margin: 0 0 14px;
}
.restaurant-info__value {
margin: 2px 0;
font-size: 0.94rem;
color: var(--_text-secondary);
}
.restaurant-info__value a {
color: inherit;
}
.restaurant-info .ordering-widget {
box-shadow: none;
border: none;
background: transparent;
padding: 0;
max-width: none;
}
.restaurant-hours {
list-style: none;
padding: 0;
margin: 0;
font-size: 0.92rem;
}
.restaurant-hours li {
display: flex;
justify-content: space-between;
gap: 16px;
padding: 6px 0;
border-bottom: 1px solid var(--_line);
color: var(--_text-secondary);
}
.restaurant-hours li:last-child {
border-bottom: none;
}
.restaurant-hours li.is-today {
color: var(--_text-primary);
font-weight: 600;
}
.gallery-strip {
display: grid;
grid-auto-flow: column;
grid-auto-columns: 44vw;
gap: 10px;
overflow-x: auto;
scrollbar-width: none;
padding-bottom: 4px;
scroll-snap-type: x mandatory;
}
.gallery-strip::-webkit-scrollbar {
display: none;
}
.gallery-strip img {
width: 100%;
aspect-ratio: 1 / 1;
object-fit: cover;
border-radius: var(--_image-radius);
background: var(--_bg-alt);
scroll-snap-align: start;
}
@media (min-width: 640px) {
.gallery-strip {
grid-auto-flow: row;
grid-template-columns: repeat(3, 1fr);
grid-auto-columns: auto;
overflow: visible;
gap: 12px;
}
}
@media (min-width: 1000px) {
.gallery-strip {
grid-template-columns: repeat(6, 1fr);
}
}
.restaurant-categories {
display: grid;
gap: clamp(10px, 2vw, 16px);
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 640px) {
.restaurant-categories {
grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 980px) {
.restaurant-categories {
grid-template-columns: repeat(4, 1fr);
}
}
.category-card {
position: relative;
display: flex;
align-items: flex-end;
min-height: 128px;
padding: 14px 16px;
border-radius: var(--_card-radius);
overflow: hidden;
background: var(--_bg-alt);
border: 1px solid var(--_line);
color: #fff;
text-decoration: none;
isolation: isolate;
transition: transform 0.16s ease, box-shadow 0.16s ease;
}
.category-card:hover {
transform: translateY(-2px);
box-shadow: var(--_shadow-hover);
}
.category-card img {
position: absolute;
inset: 0;
z-index: -2;
width: 100%;
height: 100%;
object-fit: cover;
}
.category-card::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(to top, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.12) 60%, rgba(0, 0, 0, 0.05));
}
.category-card--plain {
color: var(--_text-primary);
background: var(--_surface);
}
.category-card--plain::after {
display: none;
}
.category-card__name {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1.05rem;
line-height: 1.15;
}
.restaurant-about__grid {
display: grid;
gap: clamp(28px, 5vw, 64px);
align-items: center;
grid-template-columns: 1fr;
}
@media (min-width: 900px) {
.restaurant-about__grid {
grid-template-columns: minmax(0, 0.92fr) minmax(0, 1fr);
}
.restaurant-about[data-about-layout="media-right"] .restaurant-about__grid {
grid-template-columns: minmax(0, 1fr) minmax(0, 0.92fr);
}
.restaurant-about[data-about-layout="media-right"] .restaurant-about__media {
order: 2;
}
}
.restaurant-about[data-about-layout="stacked"] .restaurant-about__grid {
grid-template-columns: 1fr;
max-width: 46rem;
margin-inline: auto;
text-align: center;
}
.restaurant-about__media {
position: relative;
border-radius: var(--_image-radius);
overflow: hidden;
box-shadow: var(--_shadow-card);
aspect-ratio: 4 / 5;
background: var(--_bg-alt);
}
.restaurant-about__media img {
width: 100%;
height: 100%;
object-fit: cover;
}
.restaurant-about__badge {
position: absolute;
left: 0;
bottom: 22px;
background: var(--_accent);
color: var(--_accent-contrast);
padding: 12px 20px;
border-radius: 0 var(--_button-radius) var(--_button-radius) 0;
font-family: var(--_font-body);
font-weight: 800;
font-size: 0.8rem;
letter-spacing: 0.06em;
text-transform: uppercase;
box-shadow: var(--_shadow-card);
}
.restaurant-about__kicker {
font-size: 0.95rem;
font-weight: 600;
color: var(--_text-secondary);
margin: 0 0 10px;
}
.restaurant-about__title {
margin: 0 0 0.6rem;
}
.restaurant-about__text {
color: var(--_text-secondary);
line-height: 1.75;
font-size: 1.04rem;
margin: 0;
white-space: pre-line;
}
.restaurant-about__cta {
margin-top: 26px;
}
.restaurant-spotlight__grid {
display: grid;
gap: clamp(28px, 5vw, 68px);
align-items: center;
grid-template-columns: 1fr;
}
@media (min-width: 900px) {
.restaurant-spotlight__grid {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
}
.restaurant-spotlight__media {
border-radius: var(--_image-radius);
overflow: hidden;
aspect-ratio: 1 / 1;
background: var(--_bg-alt);
box-shadow: var(--_shadow-card);
}
.restaurant-spotlight__media img {
width: 100%;
height: 100%;
object-fit: cover;
}
.restaurant-spotlight__content {
display: flex;
flex-direction: column;
gap: 14px;
align-items: flex-start;
}
.restaurant-spotlight__title {
font-size: clamp(2rem, 1.4rem + 3vw, calc(3.4rem * var(--_title-scale)));
line-height: 1.03;
margin: 0;
}
.restaurant-spotlight__lead {
color: var(--_accent);
font-weight: 600;
margin: 0;
}
.restaurant-spotlight__list {
list-style: none;
padding: 0;
margin: 4px 0;
display: grid;
gap: 6px;
color: var(--_text-secondary);
}
.restaurant-spotlight__list li {
position: relative;
padding-left: 18px;
}
.restaurant-spotlight__list li::before {
content: "•";
position: absolute;
left: 2px;
color: var(--_accent);
}
.restaurant-spotlight__price {
font-family: var(--_font-body);
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--_text-secondary);
margin: 6px 0 0;
}
.restaurant-spotlight__price strong {
font-family: var(--_font-heading);
font-size: 1.9rem;
letter-spacing: 0;
text-transform: none;
color: var(--_text-primary);
margin-left: 8px;
}
.restaurant-spotlight__cta {
margin-top: 10px;
}
.restaurant-reviews {
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}
.restaurant-reviews > * {
height: 100%;
}
.review-card {
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
box-shadow: var(--_shadow-card);
padding: 20px;
display: flex;
flex-direction: column;
gap: 8px;
}
.review-card__head {
display: flex;
align-items: center;
gap: 10px;
}
.review-card__avatar {
width: 38px;
height: 38px;
flex: 0 0 38px;
border-radius: 999px;
object-fit: cover;
background: var(--_surface-alt, rgba(128, 128, 128, 0.12));
}
.review-card__avatar--fallback {
display: inline-flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 0.95rem;
color: var(--_text-secondary);
}
.review-card__meta {
min-width: 0;
}
.review-card__date {
margin: 2px 0 0;
font-size: 0.78rem;
color: var(--_text-secondary);
}
.review-card__stars {
margin: 0;
color: #e5a300;
letter-spacing: 2px;
}
.review-card__text {
margin: 0;
font-size: 0.92rem;
color: var(--_text-secondary);
line-height: 1.6;
white-space: pre-line;
}
.review-card__text[data-clamped] {
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
}
.review-card__more {
align-self: flex-start;
margin: 0;
padding: 0;
background: none;
border: 0;
font: inherit;
font-size: 0.82rem;
font-weight: 600;
color: var(--_accent, var(--_text-primary));
cursor: pointer;
text-decoration: underline;
text-underline-offset: 2px;
}
.review-card__reply {
margin-top: auto;
padding: 10px 12px;
border-radius: calc(var(--_card-radius) / 2);
background: var(--_surface-alt, rgba(128, 128, 128, 0.08));
border-left: 3px solid var(--_accent, var(--_line));
}
.review-card__reply-label {
margin: 0 0 3px;
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--_text-secondary);
}
.review-card__reply-text {
margin: 0;
font-size: 0.86rem;
line-height: 1.55;
color: var(--_text-secondary);
white-space: pre-line;
}
.review-card__author {
margin: 0;
font-weight: 600;
font-size: 0.85rem;
}
.reviews-footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-top: 18px;
}
.reviews-attribution {
margin: 0;
font-size: 0.78rem;
color: var(--_text-secondary);
}
.site-v2-page:has(.menu-page) {
max-width: none;
padding: 0;
}
.menu-page {
--menu-w: min(1360px, 100% - clamp(32px, 8vw, 96px));
padding-bottom: clamp(60px, 10vw, 110px);
}
.menu-body {
max-width: var(--menu-w);
margin: clamp(24px, 4vw, 40px) auto 0;
}
.menu-closed {
max-width: var(--menu-w);
margin: 16px auto 0;
padding: 12px 16px;
border-radius: var(--_input-radius);
background: color-mix(in srgb, var(--_accent) 8%, var(--_surface));
border: 1px solid var(--_line);
font-size: 0.9rem;
}
.menu-intro {
max-width: var(--menu-w);
margin: clamp(28px, 5vw, 56px) auto clamp(18px, 3vw, 28px);
text-align: center;
}
.menu-intro__eyebrow {
display: block;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--_accent);
}
.menu-intro__lead {
margin: 10px 0 0;
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: clamp(1.5rem, 1rem + 2vw, 2.4rem);
letter-spacing: var(--_ls-heading);
color: var(--_text-primary);
}
.menu-search {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 14px;
border: 1px solid var(--_line);
border-radius: 999px;
color: var(--_text-secondary);
background: var(--_surface);
}
.menu-search--intro {
margin-top: 16px;
width: min(320px, 100%);
}
.menu-search svg {
width: 15px;
height: 15px;
flex: none;
}
.menu-search input {
border: 0;
background: none;
outline: none;
font: inherit;
color: var(--_text-primary);
width: 100%;
min-width: 0;
}
.menu-nav {
position: sticky;
top: 0;
z-index: 30;
padding: 8px clamp(16px, 4vw, 48px);
background: color-mix(in srgb, var(--_bg-main) 92%, transparent);
backdrop-filter: blur(10px);
border-bottom: 1px solid var(--_line);
}
.menu-nav__inner {
display: flex;
gap: clamp(8px, 1.4vw, 22px);
max-width: var(--menu-w);
margin-inline: auto;
overflow-x: auto;
scrollbar-width: none;
}
.menu-nav__inner::-webkit-scrollbar {
display: none;
}
.menu-nav__item {
flex: none;
padding: 9px 2px;
font-size: 0.86rem;
font-weight: 600;
color: var(--_text-secondary);
white-space: nowrap;
border: 0;
border-bottom: 2px solid transparent;
background: none;
cursor: pointer;
transition: color 0.15s, border-color 0.15s;
}
.menu-nav__item:hover {
color: var(--_text-primary);
}
.menu-nav__item.is-active {
color: var(--_accent);
border-bottom-color: var(--_accent);
}
.menu-cats {
display: grid;
gap: clamp(14px, 2vw, 22px);
grid-template-columns: repeat(2, 1fr);
margin-top: clamp(8px, 2vw, 20px);
}
@media (min-width: 680px) {
.menu-cats {
grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 1080px) {
.menu-cats {
grid-template-columns: repeat(4, 1fr);
}
}
.menu-cat {
position: relative;
display: flex;
align-items: flex-end;
aspect-ratio: 4 / 5;
padding: 16px;
overflow: hidden;
border: 0;
border-radius: var(--_image-radius);
background: color-mix(in srgb, var(--_bg-alt) 60%, var(--_surface));
color: #fff;
cursor: pointer;
isolation: isolate;
transition: transform 0.16s ease;
}
.menu-cat:hover {
transform: translateY(-2px);
}
.menu-cat img {
position: absolute;
inset: 0;
z-index: -2;
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.4s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.menu-cat:hover img {
transform: scale(1.05);
}
.menu-cat::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(to top, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0.05) 60%);
}
.menu-cat--plain {
color: var(--_text-primary);
background: var(--_surface);
border: 1px solid var(--_line);
}
.menu-cat--plain::after {
display: none;
}
.menu-cat__name {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: clamp(1rem, 0.85rem + 0.6vw, 1.25rem);
line-height: 1.15;
letter-spacing: var(--_ls-heading);
}
.menu-cathead {
margin: clamp(6px, 1.5vw, 14px) 0 clamp(22px, 3.5vw, 36px);
}
.menu-cathead__back {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0;
border: 0;
background: none;
font-size: 0.85rem;
font-weight: 600;
color: var(--_text-secondary);
cursor: pointer;
}
.menu-cathead__back:hover {
color: var(--_accent);
}
.menu-cathead__crumbs {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin-top: 8px;
font-size: 0.8rem;
color: color-mix(in srgb, var(--_text-secondary) 80%, transparent);
}
.menu-cathead__crumbs button {
border: 0;
background: none;
color: inherit;
cursor: pointer;
}
.menu-cathead__crumbs button:hover {
color: var(--_text-primary);
}
.menu-cathead__crumbs b {
color: var(--_text-secondary);
}
.menu-cathead__title {
margin: 10px 0 0;
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: clamp(1.8rem, 1.1rem + 2.6vw, 3rem);
letter-spacing: var(--_ls-heading);
line-height: 1.05;
}
.menu-cathead__desc {
margin: 8px 0 0;
color: var(--_text-secondary);
max-width: 42rem;
}
.menu-subnav {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: clamp(18px, 3vw, 28px);
}
@media (max-width: 640px) {
.menu-subnav {
flex-wrap: nowrap;
overflow-x: auto;
scrollbar-width: none;
padding-bottom: 4px;
}
.menu-subnav::-webkit-scrollbar {
display: none;
}
}
.menu-subnav__item {
flex: none;
padding: 7px 14px;
font-size: 0.82rem;
font-weight: 600;
color: var(--_text-secondary);
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: 999px;
cursor: pointer;
white-space: nowrap;
transition: all 0.15s;
}
.menu-subnav__item:hover {
color: var(--_text-primary);
}
.menu-subnav__item.is-active {
color: var(--_accent-contrast);
background: var(--_accent);
border-color: var(--_accent);
}
.menu-direct {
margin-top: clamp(28px, 4vw, 44px);
padding-top: clamp(20px, 3vw, 32px);
border-top: 1px solid var(--_line);
}
.menu-grid {
display: grid;
gap: clamp(22px, 3vw, 40px) clamp(16px, 2.5vw, 32px);
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 720px) {
.menu-grid {
grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 1180px) {
.menu-grid {
grid-template-columns: repeat(4, 1fr);
}
}
.menu-item {
display: flex;
flex-direction: column;
cursor: pointer;
border-radius: var(--_image-radius);
transition: background 0.18s;
}
.menu-item:hover {
background: color-mix(in srgb, var(--_accent) 5%, transparent);
}
.menu-item.is-out {
opacity: 0.55;
}
.menu-item__media {
aspect-ratio: 4 / 3;
display: grid;
place-items: center;
overflow: hidden;
border-radius: var(--_image-radius);
background: color-mix(in srgb, var(--_bg-alt) 50%, var(--_surface));
}
.menu-item__media img {
width: 100%;
height: 100%;
object-fit: contain;
padding: 6%;
transition: transform 0.4s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.menu-item:hover .menu-item__media img {
transform: scale(1.05);
}
.menu-item__body {
display: flex;
flex-direction: column;
gap: 2px;
padding: 12px 6px 6px;
flex: 1;
}
.menu-item--text .menu-item__body {
padding: 16px;
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
background: var(--_surface);
height: 100%;
}
.menu-item__name {
margin: 0;
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1.02rem;
line-height: 1.25;
letter-spacing: var(--_ls-heading);
}
.menu-item__meta {
margin: 2px 0 0;
font-size: 0.83rem;
color: var(--_text-secondary);
line-height: 1.45;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.menu-item__portion {
margin: 3px 0 0;
font-size: 0.76rem;
font-weight: 600;
letter-spacing: 0.03em;
color: color-mix(in srgb, var(--_text-secondary) 85%, transparent);
}
.menu-item__foot {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-top: auto;
padding-top: 10px;
}
.menu-item__price {
font-weight: 700;
font-size: 0.98rem;
}
.menu-item__add {
display: grid;
place-items: center;
width: 38px;
height: 38px;
flex: none;
border-radius: 999px;
border: 1px solid var(--_accent);
background: transparent;
color: var(--_accent);
cursor: pointer;
opacity: 0.75;
transition: opacity 0.15s, background 0.15s, transform 0.15s;
}
.menu-item:hover .menu-item__add {
opacity: 1;
background: var(--_accent);
color: var(--_accent-contrast);
}
.menu-item__add:hover {
transform: scale(1.1);
}
.menu-item__add:disabled {
opacity: 0.3;
cursor: not-allowed;
}
.menu-item__add.is-added {
background: #2f9e6a;
border-color: #2f9e6a;
color: #fff;
opacity: 1;
}
.menu-item__add svg {
width: 17px;
height: 17px;
}
.menu-empty {
margin: clamp(30px, 6vw, 60px) auto;
text-align: center;
color: var(--_text-secondary);
}
.menu-empty .btn {
margin-top: 14px;
}
.menu-toast {
position: fixed;
left: 50%;
bottom: 84px;
z-index: 50;
transform: translateX(-50%);
padding: 10px 18px;
border-radius: 999px;
background: var(--_brand-primary);
color: #fff;
font-size: 0.86rem;
font-weight: 600;
box-shadow: var(--_shadow-hover);
animation: menu-toast-in 0.2s ease both;
}
@keyframes menu-toast-in {
from {
opacity: 0;
transform: translate(-50%, 8px);
}
}
.cart-bar {
position: fixed;
z-index: 45;
left: 12px;
right: 12px;
bottom: 12px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 13px 18px;
border-radius: var(--_card-radius);
background: var(--_accent);
color: var(--_accent-contrast);
text-decoration: none;
box-shadow: var(--_shadow-hover);
font-size: 0.9rem;
}
.cart-bar__cta {
font-weight: 700;
white-space: nowrap;
}
@media (min-width: 1024px) {
.cart-bar {
left: auto;
right: 20px;
bottom: 20px;
min-width: 280px;
}
}
.menu-sheet-backdrop {
position: fixed;
inset: 0;
z-index: 60;
display: grid;
place-items: center;
padding: clamp(8px, 3vw, 32px);
background: rgba(8, 15, 12, 0.55);
backdrop-filter: blur(3px);
animation: menu-toast-in 0.15s ease both;
}
.menu-sheet {
position: relative;
width: 100%;
max-width: 40rem;
max-height: 92vh;
overflow-y: auto;
border-radius: var(--_card-radius);
background: var(--_surface);
color: var(--_text-primary);
box-shadow: 0 30px 90px rgba(0, 0, 0, 0.4);
}
.menu-sheet__close {
position: absolute;
top: 12px;
right: 12px;
z-index: 2;
width: 34px;
height: 34px;
border-radius: 999px;
border: 0;
background: color-mix(in srgb, var(--_surface) 70%, transparent);
backdrop-filter: blur(6px);
color: var(--_text-primary);
cursor: pointer;
}
.menu-sheet__media {
aspect-ratio: 16 / 10;
background: color-mix(in srgb, var(--_bg-alt) 60%, var(--_surface));
display: grid;
place-items: center;
}
.menu-sheet__media img {
width: 100%;
height: 100%;
object-fit: contain;
padding: 3%;
}
.menu-sheet__body {
padding: clamp(18px, 4vw, 28px);
}
.menu-sheet__title {
margin: 0;
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: clamp(1.3rem, 1rem + 1.4vw, 1.8rem);
}
.menu-sheet__desc {
margin: 8px 0 0;
color: var(--_text-secondary);
white-space: pre-line;
}
.menu-sheet__fine {
margin: 6px 0 0;
font-size: 0.8rem;
color: var(--_text-secondary);
}
.menu-sheet__group {
margin-top: 20px;
}
.menu-sheet__group-label {
display: flex;
justify-content: space-between;
margin: 0 0 8px;
font-size: 0.76rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--_text-secondary);
}
.menu-sheet__count.is-unmet {
color: var(--_accent);
}
.menu-sheet__pills {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.menu-pill {
padding: 8px 14px;
border: 1px solid var(--_line);
border-radius: 999px;
background: var(--_surface);
color: var(--_text-primary);
font-size: 0.85rem;
cursor: pointer;
transition: all 0.15s;
}
.menu-pill.is-active {
background: var(--_accent);
border-color: var(--_accent);
color: var(--_accent-contrast);
}
.menu-sheet__rows {
display: grid;
gap: 8px;
}
.menu-sheet__row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
border: 1px solid var(--_line);
border-radius: var(--_input-radius);
font-size: 0.88rem;
}
.menu-sheet__stepper {
display: inline-flex;
align-items: center;
gap: 10px;
}
.menu-sheet__stepper button {
width: 30px;
height: 30px;
border-radius: 999px;
border: 1px solid var(--_line);
background: var(--_surface);
color: var(--_text-primary);
cursor: pointer;
}
.menu-sheet__stepper button:disabled {
opacity: 0.3;
}
.menu-sheet__textarea {
width: 100%;
border: 1px solid var(--_line);
border-radius: var(--_input-radius);
background: var(--_surface);
padding: 10px 12px;
font: inherit;
color: inherit;
}
.menu-sheet__foot {
display: flex;
align-items: center;
gap: 12px;
margin-top: 24px;
}
.menu-sheet__add {
flex: 1;
}
.payment-grid {
display: grid;
gap: clamp(12px, 2vw, 20px);
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 760px) {
.payment-grid {
grid-template-columns: repeat(4, 1fr);
}
}
.payment-method {
display: flex;
flex-direction: column;
gap: 4px;
padding: clamp(18px, 3vw, 26px);
text-align: center;
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
}
.payment-method__title {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1rem;
}
.payment-method__note {
font-size: 0.85rem;
color: var(--_text-secondary);
}
.restaurant-cart-empty {
max-width: 30rem;
margin: clamp(20px, 6vw, 60px) auto;
padding: clamp(28px, 5vw, 44px);
text-align: center;
background: var(--_surface);
border: 1px solid var(--_line);
border-radius: var(--_card-radius);
box-shadow: var(--_shadow-card);
}
.restaurant-cart-empty svg {
width: 48px;
height: 48px;
margin: 0 auto 16px;
color: var(--_accent);
}
.restaurant-cart-empty__title {
font-family: var(--_font-heading);
font-weight: var(--_weight-heading);
font-size: 1.5rem;
margin: 0 0 8px;
}
.restaurant-cart-empty__text {
color: var(--_text-secondary);
line-height: 1.6;
margin: 0 0 22px;
}
.open-badge {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 5px 12px;
border-radius: 999px;
font-size: 0.82rem;
font-weight: 600;
background: rgba(255, 255, 255, 0.14);
color: #fff;
}
.open-badge__dot {
width: 7px;
height: 7px;
border-radius: 999px;
background: currentColor;
}
.open-badge.is-open {
color: #6ee7a8;
}
@media (prefers-reduced-motion: reduce) {
.site-v2 *,
.restaurant-hero__slide {
transition: none !important;
animation: none !important;
}
}
.reveal {
animation: reveal-up 0.5s ease both;
}
@keyframes reveal-up {
from {
opacity: 0;
transform: translateY(12px);
}
}
/* theme */
[data-theme="pizzeria"] {
--_olive: var(--_brand-secondary);
--_crust: color-mix(in srgb, var(--_accent) 24%, #e8a13a);
}
[data-theme="pizzeria"] .restaurant-header {
background: var(--_surface);
border-bottom: 2px solid color-mix(in srgb, var(--_accent) 18%, var(--_line));
}
[data-theme="pizzeria"] .restaurant-header__inner {
min-height: 76px;
}
[data-theme="pizzeria"] .restaurant-navigation a {
font-weight: 700;
font-size: 0.92rem;
}
[data-theme="pizzeria"] .restaurant-navigation a:hover,
[data-theme="pizzeria"] .restaurant-navigation a.is-active {
color: var(--_accent);
border-bottom-color: var(--_accent);
}
[data-theme="pizzeria"] .restaurant-header__order {
font-weight: 800;
box-shadow: 0 8px 20px color-mix(in srgb, var(--_accent) 26%, transparent);
}
[data-theme="pizzeria"] .restaurant-hero {
background: var(--_brand-primary);
}
[data-theme="pizzeria"] .restaurant-hero::after {
background: linear-gradient(
to top,
rgba(20, 12, 8, 0.82),
rgba(20, 12, 8, 0.34) 55%,
rgba(20, 12, 8, 0.12)
);
}
[data-theme="pizzeria"] .restaurant-hero__eyebrow {
color: var(--_crust);
letter-spacing: 0.18em;
}
[data-theme="pizzeria"] .restaurant-hero__eyebrow::before {
background: var(--_crust);
width: 22px;
}
[data-theme="pizzeria"] .restaurant-hero__title {
font-size: clamp(2.8rem, 1.4rem + 5.4vw, calc(5.4rem * var(--_title-scale)));
line-height: 1;
}
[data-theme="pizzeria"] .restaurant-hero__title em {
color: var(--_crust);
font-style: normal;
}
[data-theme="pizzeria"] .restaurant-hero__aside .ordering-widget {
border-radius: 22px;
border: 2px solid color-mix(in srgb, var(--_accent) 30%, #fff);
box-shadow: 0 30px 70px rgba(20, 12, 8, 0.4);
}
[data-theme="pizzeria"] .restaurant-infostrip {
background: var(--_accent);
color: var(--_accent-contrast);
}
[data-theme="pizzeria"] .restaurant-infostrip__cell {
border-color: color-mix(in srgb, var(--_accent-contrast) 22%, transparent);
}
[data-theme="pizzeria"] .restaurant-infostrip__label {
color: color-mix(in srgb, var(--_accent-contrast) 82%, transparent);
opacity: 1;
}
[data-theme="pizzeria"] .restaurant-infostrip__value,
[data-theme="pizzeria"] .restaurant-infostrip__value a {
color: var(--_accent-contrast);
}
[data-theme="pizzeria"] .restaurant-section__eyebrow {
color: var(--_olive);
}
[data-theme="pizzeria"] .restaurant-section__eyebrow::before {
background: var(--_olive);
}
[data-theme="pizzeria"] .restaurant-section__title em {
color: var(--_accent);
font-style: normal;
}
[data-theme="pizzeria"] .category-card {
border-radius: 20px;
border: 0;
box-shadow: 0 14px 32px rgba(43, 35, 32, 0.16);
}
[data-theme="pizzeria"] .category-card::after {
background: linear-gradient(to top, rgba(28, 18, 12, 0.86), rgba(28, 18, 12, 0.05) 62%);
}
[data-theme="pizzeria"] .category-card__name {
font-size: clamp(1.05rem, 0.85rem + 0.7vw, 1.35rem);
}
[data-theme="pizzeria"] .product-card {
border: 0;
border-radius: 18px;
box-shadow: 0 12px 34px rgba(43, 35, 32, 0.12);
}
[data-theme="pizzeria"] .product-card:hover {
transform: translateY(-3px);
box-shadow: 0 20px 46px rgba(43, 35, 32, 0.2);
}
[data-theme="pizzeria"] .product-card__image {
aspect-ratio: 3 / 2;
}
[data-theme="pizzeria"] .product-card__content {
padding: 18px 20px 20px;
gap: 6px;
}
[data-theme="pizzeria"] .product-card__title {
font-size: 1.22rem;
font-weight: 700;
}
[data-theme="pizzeria"] .product-card__price {
font-family: var(--_font-heading);
font-size: 1.25rem;
color: var(--_accent);
}
[data-theme="pizzeria"] .product-card__add {
width: 46px;
height: 46px;
}
[data-theme="pizzeria"] .menu-item__portion {
color: var(--_accent);
font-weight: 700;
}
[data-theme="pizzeria"] .menu-item__price {
color: var(--_accent);
font-family: var(--_font-heading);
}
[data-theme="pizzeria"] .restaurant-about__badge {
background: var(--_olive);
border-radius: 999px 999px 999px 0;
}
[data-theme="pizzeria"] .restaurant-spotlight {
background:
radial-gradient(70% 60% at 20% 0%, color-mix(in srgb, var(--_crust) 26%, transparent), transparent 60%),
color-mix(in srgb, var(--_brand-primary) 96%, #000);
}
[data-theme="pizzeria"] .restaurant-spotlight__lead {
color: var(--_crust);
}
[data-theme="pizzeria"] .btn {
font-weight: 800;
letter-spacing: 0.01em;
}
[data-theme="pizzeria"] .btn--lg {
min-height: calc(var(--_button-height) + 12px);
padding-inline: 34px;
font-size: 1.05rem;
box-shadow: 0 12px 28px color-mix(in srgb, var(--_accent) 30%, transparent);
}
[data-theme="pizzeria"] .restaurant-footer {
background: var(--_brand-primary);
}
/* restaurant */
[data-restaurant="demo-pizzeria"]{--brand-primary:#2b2320;--brand-secondary:#6b7040;--bg-main:#faf5ea;--bg-alt:#f1e7d4;--surface:#fffdf8;--text-primary:#2b2320;--text-secondary:#6f645a;--accent:#b3312a;--accent-contrast:#fff8f0;--line:#e7dcc6;--font-heading:var(--font-bricolage), 'Trebuchet MS', system-ui, sans-serif;--font-body:var(--font-geist-sans), system-ui, sans-serif;--weight-heading:700;--title-scale:1.06;--letter-spacing-heading:-0.01em;--button-radius:999px;--card-radius:18px;--input-radius:12px;--image-radius:16px;--button-height:48px;--container-width:1240px;--section-gap:84px;--product-image-ratio:1 / 1;--shadow-card:0 1px 2px rgba(33,28,23,.05), 0 12px 32px -20px rgba(33,28,23,.18);--shadow-hover:0 2px 4px rgba(33,28,23,.06), 0 20px 44px -22px rgba(33,28,23,.28);--overlay-strength:0.44}