:root {
    color-scheme: light;
    --ink: #29251e;
    --muted: #645b4d;
    --paper: #fffaf0;
    --surface: #fffdf8;
    --line: #e6dac5;
    --red: #9c3628;
    --green: #25473b;
    --dark: #183c32;
    --cream: #ffecd0;
    --highlight: #f4c482;
    --display: Georgia, "Times New Roman", serif;
    --body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html {
    --topbar-height: 4.6rem;
    scroll-padding-top: calc(var(--topbar-height) + 1rem);
}
body { margin: 0; color: var(--ink); background: var(--paper); font: 1rem/1.55 var(--body); }
a { color: inherit; text-underline-offset: .2em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--highlight); outline-offset: 4px; }
h1, h2, h3, h4, p, dl, dd { margin: 0; }
ul { margin: 0; padding: 0; }
.shell { width: min(70rem, calc(100% - 3rem)); margin-inline: auto; }
.visually-hidden, .skip:not(:focus) {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}
.skip:focus { position: fixed; z-index: 4; top: 1rem; left: 1rem; padding: .7rem 1rem; background: var(--surface); }

.site-navigation {
    position: sticky;
    top: 0;
    z-index: 3;
    color: var(--cream);
    background: var(--dark);
}
.masthead {
    color: var(--cream);
    background: radial-gradient(ellipse at 80% 80%, color-mix(in srgb, var(--dark) 87%, var(--cream)), transparent 65%), var(--dark);
    border-bottom: .45rem solid var(--red);
}
.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    min-height: var(--topbar-height);
    border-bottom: 1px solid #ffffff35;
}
.wordmark, .hero-brand, .footer-brand {
    display: inline-block;
    background: var(--paper);
    border-radius: .65rem;
    padding: .35rem .55rem;
}
.wordmark img, .hero-brand img, .footer-brand img { display: block; height: auto; }
.wordmark img { width: 4.2rem; max-height: 2.9rem; object-fit: contain; }
.wordmark-text { max-width: 12rem; font-weight: 750; text-decoration: none; overflow-wrap: anywhere; }
.topbar nav { display: flex; gap: clamp(.75rem, 3vw, 2rem); font-size: .9rem; }
.topbar nav a { text-decoration: none; }
.topbar nav a:hover { text-decoration: underline; }
.hero { display: grid; grid-template-columns: 1.15fr 1fr; align-items: center; gap: clamp(1.25rem, 5vw, 4rem); padding-block: clamp(2rem, 5vw, 4rem); }
.hero-copy { max-width: 45rem; }
.eyebrow {
    display: flex;
    align-items: center;
    gap: .55rem;
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.eyebrow span { display: inline-block; width: .55rem; aspect-ratio: 1; background: currentColor; border-radius: 50%; }
.hero-brand { margin-block: .85rem; padding: .65rem .8rem; }
.hero-brand img { width: clamp(11rem, 25vw, 16rem); max-height: 12rem; object-fit: contain; }
.hero-heading-text { display: block; margin-block: .55rem; font: 700 clamp(2.25rem, 6vw, 4.5rem)/1.05 var(--display); }
.slogan { color: var(--highlight); font: italic 1.55rem/1.25 var(--display); }
.intro { margin-top: .9rem; max-width: 30rem; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: 1.6rem; }
.button { padding: .7rem 1rem; border: 1px solid var(--cream); border-radius: .35rem; background: var(--cream); color: var(--dark); text-decoration: none; font-weight: 720; }
.button-outline { color: var(--cream); background: transparent; }
.button:hover { text-decoration: underline; }
.phone-button { text-align: center; }
.phone-button > span { display: block; font-size: .88em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.hero-photo { display: block; width: 100%; height: clamp(14rem, 32vw, 24rem); object-fit: cover; object-position: center 65%; border-radius: .65rem; }
.hero-visual { min-width: 0; }
.hero-visual .opening-hours { margin-top: 1.2rem; }

.menu { padding-top: clamp(2rem, 6vw, 4.5rem); }
h2 { font: 700 clamp(2.2rem, 5vw, 3.75rem)/1.06 var(--display); letter-spacing: -.035em; margin-top: .35rem; }
.search { width: min(20rem, 100%); }
.search label { display: block; font-weight: 650; font-size: .83rem; margin-bottom: .4rem; }
.search input { width: 100%; min-height: 2.8rem; border: 1px solid var(--line); border-radius: .35rem; padding: .55rem .75rem; font: inherit; background: var(--surface); color: var(--ink); }
.category-nav { display: flex; flex-wrap: wrap; gap: .5rem; margin-block: 1.55rem 2.25rem; }
.category-nav a { padding: .35rem .7rem; color: var(--green); border: 1px solid var(--line); border-radius: 99rem; background: var(--surface); font-size: .83rem; font-weight: 650; text-decoration: none; }
.category-nav a:hover { border-color: var(--green); text-decoration: underline; }
.result-count { margin-bottom: 1rem; color: var(--muted); }
.menu-sections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; align-items: start; }
.menu-section {
    min-width: 0;
    background: var(--surface);
    border: 1px solid var(--line);
    border-top: .28rem solid var(--green);
    border-radius: .5rem;
    padding: clamp(.95rem, 2vw, 1.5rem);
}
.menu-section:first-child, .menu-section-wide { grid-column: 1 / -1; }
.menu-section h3 { font: bold 1.65rem/1.15 var(--display); color: var(--green); }
.category-note { color: var(--muted); margin-top: .4rem; font-size: .88rem; }
.category-photos { display: flex; gap: .45rem; margin-top: .75rem; }
.category-photos img {
    flex: 1 1 0;
    display: block;
    min-width: 0;
    width: 0;
    height: clamp(7rem, 19vw, 11rem);
    object-fit: cover;
    border-radius: .35rem;
    background: var(--line);
}
.category-photos img.category-photo-contain { object-fit: contain; background: #000; }
.category-photos-tall img { height: clamp(10.5rem, 28vw, 13rem); }
.category-photos img.category-photo-portrait { flex: 0 1 auto; width: auto; max-width: 45%; aspect-ratio: 3 / 4; object-fit: contain; }
.category-photos img.category-photo-portrait:only-child { max-width: 100%; }
.menu-list { list-style: none; }
.menu-item { display: flex; align-items: start; justify-content: space-between; gap: 1rem; padding-block: .85rem; border-bottom: 1px solid var(--line); }
.menu-item:last-child { border-bottom: 0; padding-bottom: 0; }
.item-copy { display: flex; align-items: start; gap: .55rem; min-width: 0; }
.number { font-size: 1.05rem; line-height: 1.3; font-weight: 750; color: var(--red); flex: 0 0 2.3rem; }
.item-copy h4 { line-height: 1.35; }
.item-copy p { font-size: .88rem; color: var(--muted); margin-top: .28rem; }
.item-controls { display: flex; align-items: center; gap: .75rem; }
.heart-button, .saved-close, .saved-list button {
    cursor: pointer;
    color: var(--red);
    border: 1px solid var(--line);
    background: var(--surface);
    border-radius: .45rem;
    font: inherit;
}
.heart-button { display: grid; place-items: center; flex: 0 0 2.75rem; width: 2.75rem; height: 2.75rem; }
.heart-button svg { width: 1.3rem; height: 1.3rem; }
.heart-button:hover, .saved-close:hover, .saved-list button:hover { border-color: var(--red); }
.heart-button[aria-pressed="true"] { color: var(--red); background: color-mix(in srgb, var(--red) 12%, var(--surface)); border-color: color-mix(in srgb, var(--red) 48%, var(--surface)); }
.heart-button[aria-pressed="true"] svg { fill: currentColor; }
small { font-size: .77rem; font-weight: 500; color: var(--muted); }
.prices { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .45rem .7rem; text-align: right; font-variant-numeric: tabular-nums; }
.prices div { min-width: 3.2rem; }
.prices dt { color: var(--muted); font-size: .73rem; }
.prices dd { font-weight: 750; color: var(--green); white-space: nowrap; }
.codes { display: flex; flex-wrap: wrap; gap: .24rem; margin-top: .32rem; }
.codes-inline { display: inline; margin: 0; }
.code-badge {
    display: inline-grid;
    place-items: center;
    min-width: .88rem;
    min-height: .88rem;
    border: 0;
    padding: 0 .12rem;
    border-radius: .2rem;
    background: var(--line);
    color: var(--ink);
    font: 740 .56rem var(--body);
    cursor: default;
    -webkit-tap-highlight-color: transparent;
}
.codes-inline .code-badge { vertical-align: .1em; }
.heading-code { vertical-align: super; }
.vegetarian-badge {
    display: inline-block;
    min-width: 0;
    min-height: 0;
    background: transparent;
    padding: 0;
    font: inherit;
    vertical-align: baseline;
}
.vegetarian-icon { display: block; width: auto; height: .72em; height: 1cap; }
.label-hint {
    position: fixed;
    z-index: 3;
    width: max-content;
    max-width: min(20rem, calc(100vw - 1rem));
    padding: .4rem .6rem;
    border: 1px solid var(--line);
    border-radius: .35rem;
    color: var(--ink);
    background: var(--surface);
    box-shadow: 0 .15rem .55rem #201d1826;
    font-size: .8rem;
    overflow-wrap: anywhere;
}

.menu-item.menu-item-with-toppings {
    flex-wrap: wrap;
    margin-block: .75rem;
    padding: .75rem;
    border: 1px solid var(--line);
    border-radius: .45rem;
    background: var(--paper);
}
.menu-item .topping-details {
    flex: 0 0 100%;
    min-width: 0;
    border: 0;
    border-top: 1px solid var(--line);
}
.topping-details summary { color: var(--green); padding-block: .65rem; }
.topping-details > p { color: var(--muted); }
.rate-list { justify-content: start; text-align: left; gap: .7rem 1.4rem; margin-top: .65rem; }
.toppings { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: .6rem; list-style: none; margin-block: .85rem; }
.toppings li { border: 1px solid var(--line); border-radius: .35rem; padding: .65rem; background: var(--surface); }
.toppings small { display: block; }
.notes { margin-block: 2rem 3.5rem; }
details { border-top: 1px solid var(--line); }
details:last-child { border-bottom: 1px solid var(--line); }
summary { cursor: pointer; font-weight: 720; padding-block: .9rem; }
.legend { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 0 0 1rem; }
.legend h3 { margin-bottom: .3rem; }
.legend dl div { display: flex; gap: .65rem; }
.legend dt { min-width: 1rem; font-weight: 700; }
.dietary-legend { grid-column: 1 / -1; }
.dietary-legend div { align-items: center; }
.notices { padding-bottom: 1rem; }
.notices div + div { margin-top: .6rem; }
.notices dt { font-weight: 700; }
.privacy-copy p + p { margin-top: 1em; }

footer { background: var(--dark); color: var(--cream); padding-block: 2.75rem 5.5rem; }
.footer-brand { margin-top: .55rem; }
.footer-brand img { width: 7.2rem; }
.footer-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2.25rem; }
address { display: grid; gap: .2rem; font-style: normal; margin-top: 1rem; }
.valid-from { font-size: .8rem; opacity: .8; margin-top: .9rem; }
.hours { margin-top: .7rem; }
.hours > div { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid #ffffff35; padding-block: .45rem; }
.hours dd { text-align: right; }
.hours span { display: block; white-space: nowrap; }

.saved-trigger, .category-shortcut {
    position: fixed;
    z-index: 2;
    bottom: max(1rem, env(safe-area-inset-bottom));
    display: flex;
    align-items: center;
    gap: .55rem;
    min-height: 2.9rem;
    padding: .6rem .8rem;
    cursor: pointer;
    color: var(--cream);
    background: var(--green);
    border: 1px solid var(--line);
    border-radius: 2rem;
    box-shadow: 0 .15rem .75rem #201d1840;
    font: 700 .9rem var(--body);
}
.saved-trigger { right: max(1rem, env(safe-area-inset-right)); }
.category-shortcut {
    display: none;
    left: max(1rem, env(safe-area-inset-left));
    max-width: calc(100% - max(1rem, env(safe-area-inset-left)) - max(1rem, env(safe-area-inset-right)) - 10rem);
    color: var(--green);
    background: var(--surface);
    border-color: var(--line);
    text-decoration: none;
    line-height: 1.15;
}
.category-shortcut:hover { text-decoration: underline; }
.saved-count { min-width: 1.45rem; border-radius: 2rem; padding: .1rem .28rem; text-align: center; background: var(--cream); color: var(--dark); }
.saved-dialog {
    width: min(32rem, calc(100% - 1.5rem));
    max-height: min(80vh, 44rem);
    padding: clamp(1rem, 4vw, 1.5rem);
    border: 1px solid var(--line);
    border-radius: .7rem;
    color: var(--ink);
    background: var(--surface);
}
.saved-dialog::backdrop { background: #1c281ec0; }
.saved-header { display: flex; justify-content: space-between; align-items: center; gap: .75rem; }
.saved-header h2 { font-size: clamp(1.75rem, 6vw, 2.45rem); margin: 0; }
.saved-close { min-width: 2.75rem; min-height: 2.75rem; font-size: 1.45rem; line-height: 1; }
.saved-hint, .saved-empty { color: var(--muted); margin-top: .55rem; }
.saved-list { list-style: none; margin-top: .75rem; }
.saved-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .35rem .75rem; align-items: start; padding-block: .65rem; border-bottom: 1px solid var(--line); }
.saved-item-copy p { margin-top: .22rem; font-size: .84rem; color: var(--muted); }
.saved-list .prices { grid-column: 1 / -1; justify-content: flex-start; text-align: left; }
.saved-list button { min-height: 2.75rem; padding: .35rem .55rem; font-size: .8rem; }
.saved-actions { margin-top: 1rem; }
.saved-actions .button { display: inline-block; color: var(--cream); background: var(--green); border-color: var(--green); }

@media (max-width: 52rem) {
    .menu-sections { grid-template-columns: 1fr; gap: 1.2rem; }
    .category-shortcut { display: flex; }
}
@media (max-width: 36rem) {
    html { --topbar-height: 3.75rem; }
    .shell { width: calc(100% - 1.75rem); }
    .topbar { gap: .75rem; }
    .topbar nav { align-items: center; gap: .65rem; font-size: .8rem; line-height: 1.25; }
    .hero { grid-template-columns: 1fr; padding-block: 1.8rem; }
    .hero-photo { height: 11rem; }
    .menu-section { padding-inline: clamp(.5rem, calc(14vw - 2.3rem), .95rem); }
    .menu-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0 .4rem; }
    .item-copy { display: grid; grid-column: 1 / 3; grid-template-columns: subgrid; column-gap: normal; }
    .item-copy .number { min-width: 2.15rem; }
    .item-copy:not(:has(.number)) > div { grid-column: 1 / -1; }
    .item-controls { display: contents; }
    .item-controls .prices { grid-column: 1 / 3; grid-row: 2; column-gap: clamp(.3rem, calc(8vw - 1.3rem), .85rem); }
    .menu-item:has(.number) .item-controls .prices { grid-column: 2; }
    .item-controls .prices dd { font-size: clamp(.6875rem, 3.4vw, .84rem); }
    .item-controls .heart-button { grid-column: 3; grid-row: 1 / 3; align-self: start; width: 2.25rem; height: 2.25rem; }
    .heart-button svg { width: 1.1rem; height: 1.1rem; }
    .menu-item .topping-details { grid-column: 1 / -1; margin-block-start: .6rem; }
    .menu-item:has(.item-description) .item-controls .prices { margin-block-start: .6rem; }
    .prices { text-align: left; justify-content: flex-start; gap: .35rem .65rem; }
    .prices div { min-width: 0; }
    .prices dt { font-size: .7rem; }
    .prices dd { font-size: .84rem; }
    .toppings { grid-template-columns: repeat(auto-fit, minmax(min(100%, 6.6rem), 1fr)); gap: .35rem; margin-block: .55rem; }
    .toppings li { padding: .35rem .4rem; font-size: .8rem; line-height: 1.25; overflow-wrap: anywhere; }
    .toppings small { font-size: .67rem; }
    .toppings .codes { margin-top: .2rem; }
    .footer-grid, .legend { grid-template-columns: 1fr; }
}
