*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{--ink:#293c35;--muted:#5e6c60;--accent:#344d3e;--paper:#fff;--outer:#f0f3eb;--tint:#edf1e5;--line:#dce3d6;--display:Georgia,serif;margin:0;color:var(--ink);background:var(--outer);font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:1.55}button,a,input{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer;min-height:44px}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #b67528;outline-offset:3px}button{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:9px 13px}button:hover{border-color:var(--accent)}button svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7}p,h1,h2,h3{margin:0}[hidden]{display:none!important}.owner{background:#fff;color:#293c35;padding:30px max(24px,calc((100% - 1120px)/2));border-bottom:1px solid #dce3d6;font-family:Arial,Helvetica,sans-serif}.owner-intro>a{font-size:12px;display:block;width:max-content;margin-bottom:20px}.owner-intro>span{font-size:10px;letter-spacing:.12em;color:#58675b}.owner h1{font-size:28px;letter-spacing:-1px;line-height:1.2;margin:9px 0}.owner-intro p{color:#58675b;font-size:13px}.style-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px}.style-options button{background:#fff;display:flex;align-items:center;text-align:left;gap:14px;border:1px solid #dce3d6;padding:13px;border-radius:9px;color:#293c35}.style-options button[aria-pressed=true]{border-color:#344d3e;box-shadow:inset 0 0 0 1px #344d3e}.style-options strong{font-size:14px;display:block}.style-options small{font-size:12px;color:#5e6c60}.swatch{display:grid;place-items:center;width:46px;height:50px;flex:none;font-style:normal;font-size:24px}.bistro-swatch{background:#edf1e5;color:#344d3e;font-family:Georgia,serif;border-radius:6px}.classic-swatch{background:#f4e9d8;color:#6d302c;font-family:Georgia,serif;border:1px double #9a7560}.modern-swatch{background:#242d32;color:#fff;font-family:Arial,sans-serif;font-weight:700;letter-spacing:-2px}.owner-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:17px;font-size:12px}.owner-bottom p{color:#58675b}.owner-bottom a{flex-shrink:0}.guest-shell{max-width:1020px;margin:42px auto;background:var(--paper);padding:0 56px;box-shadow:0 8px 40px #293c3505;border:1px solid var(--line);border-radius:4px}.restaurant{position:relative;text-align:center;padding:38px 0 24px}.restaurant-mark{width:58px;height:48px;margin:0 auto 8px}.restaurant-mark svg{width:100%;height:100%;stroke:var(--accent);stroke-width:1.5;fill:none}.restaurant-overline{font-size:10px;letter-spacing:.28em;color:var(--muted)}.restaurant h1{font:52px/1.04 var(--display);letter-spacing:-1.8px;margin-top:5px}.modern-dot{display:none}.ornament{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--accent);font-size:10px;margin-top:18px}.ornament span{height:1px;width:50px;background:var(--line)}.controls-wrap{padding-bottom:16px}.controls{display:flex;justify-content:center;gap:10px}.controls button{display:flex;gap:9px;align-items:center;font-size:12px;border-color:var(--line)}#language-button{min-width:146px;justify-content:space-between}.selected-area{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}.selected-area:has(button:not([hidden])){margin-top:12px}#selected-chips{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}#selected-chips button{font-size:12px;background:#fbf0e5;border-color:#dfc4a5;color:#70441f;padding:6px 10px}#direct-clear{border:0;text-decoration:underline;font-size:11px;background:transparent}.selection-status{text-align:center;font-size:11px;color:var(--muted);margin-top:8px}.hide-matches{display:flex;justify-content:center;align-items:center;gap:8px;font-size:12px;min-height:44px}.hide-matches input{width:17px;height:17px;accent-color:var(--accent)}.category-nav{position:sticky;top:0;z-index:2;display:flex;justify-content:center;gap:25px;border-block:1px solid var(--line);background:var(--paper);overflow:auto;scrollbar-width:none}.category-nav a{display:flex;align-items:center;justify-content:center;min-height:48px;font-size:12px;white-space:nowrap;text-decoration:none}.category-nav a:hover{text-decoration:underline}.category-nav a span{font-size:10px;opacity:.65;margin-inline-start:7px}#menu{padding:13px 0 22px;display:grid;grid-template-columns:1fr 1fr;gap:14px 44px;align-items:start}.menu-section{scroll-margin-top:75px}.section-heading{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:19px 0 12px;margin-bottom:1px}.section-heading h2{font:25px/1.2 var(--display);letter-spacing:-.5px}.section-number{font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted)}.dish{padding:17px 0 15px;border-bottom:1px solid var(--line)}.dish:last-child{border-bottom:0}.dish-heading{display:flex;justify-content:space-between;gap:15px;align-items:baseline}.dish h3{font-size:14px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}.price{white-space:nowrap;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink)}.allergen-badges{display:flex;gap:5px 10px;flex-wrap:wrap;margin-top:8px}.allergen-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;line-height:1.3;color:var(--muted)}.allergen-badge img{width:19px;height:19px;object-fit:contain}.allergen-badge.selected{color:#814923;font-weight:700}.dish.matching{background:#fff7ef;border-inline-start:3px solid #ad703d;padding-inline:10px;margin-inline:-10px}.match-note{font-size:10px;color:#7d431c;margin-top:8px;line-height:1.5}.trace-mark{font-size:9px;vertical-align:super;margin-inline-start:-3px}.trace-legend{font-size:11px;color:var(--muted);padding:4px 0 0}.guest-footer{border-top:1px solid var(--line);padding:22px 0 26px;display:flex;align-items:start;gap:10px;color:var(--muted);font-size:11px;line-height:1.65}.guest-footer>svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.3;fill:none;flex:none;margin-top:2px}.guest-footer p{max-width:630px}.guest-footer a{margin-inline-start:auto;white-space:nowrap;font-size:10px}.prototype-note{max-width:1020px;margin:0 auto 30px;text-align:center;font-size:11px;color:#5e6c60}.guest-only .owner{display:none}.guest-only .guest-shell{margin-top:26px}dialog{border:1px solid var(--line);border-radius:12px;width:min(480px,calc(100% - 24px));max-height:85dvh;padding:22px;background:var(--paper);color:var(--ink);box-shadow:0 24px 100px #0002}dialog::backdrop{background:#15201bd0;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}.dialog-head h2{font:24px/1.15 var(--display)}.close-dialog{border:0;min-width:44px;font-size:27px;line-height:1;background:transparent}.language-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px;direction:ltr}.language-grid button{text-align:left;font-size:13px;display:flex;align-items:center;justify-content:flex-start;gap:8px;direction:ltr}.language-grid button[aria-pressed=true]{background:var(--tint);border-color:var(--accent)}#filter-help{font-size:13px;color:var(--muted);margin:0 0 16px}#allergen-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}#allergen-options button{display:flex;gap:8px;align-items:center;text-align:start;font-size:12px;min-height:50px;padding:8px}#allergen-options img{width:27px;height:27px}#allergen-options button[aria-pressed=true]{background:var(--tint);border-color:var(--accent);font-weight:700}#allergen-options button .check{margin-inline-start:auto}.dialog-actions{display:flex;gap:10px;position:sticky;bottom:-22px;background:var(--paper);padding:17px 0 0;margin-top:5px}.dialog-actions #done{flex:1;background:var(--accent);color:#fff;border-color:var(--accent);font-size:13px}.dialog-actions #clear{font-size:12px}#empty{padding:35px;text-align:center}#empty p{margin-bottom:15px;color:var(--muted)}
/* Warm classical hospitality: typesetting, paper and ornamental rules. */
body[data-style=klassiek]{--ink:#392824;--muted:#75635a;--accent:#77382e;--paper:#fffaf0;--outer:#eee6d8;--tint:#f2e4d4;--line:#ded0bb;--display:Georgia,'Times New Roman',serif}body[data-style=klassiek] .guest-shell{border-radius:0;border:6px double #d8c5a9;max-width:980px;padding:0 52px;box-shadow:0 16px 48px #432c1910}body[data-style=klassiek] .restaurant{padding-top:36px}body[data-style=klassiek] .restaurant h1{font-size:62px;font-style:italic;letter-spacing:-2.5px}body[data-style=klassiek] .restaurant-mark{display:none}body[data-style=klassiek] .restaurant-overline{letter-spacing:.4em;color:var(--accent)}body[data-style=klassiek] .ornament{font-size:16px;margin-top:18px}body[data-style=klassiek] .ornament span{width:70px;background:#c7a884}body[data-style=klassiek] .category-nav{border-block:3px double var(--line);gap:28px}body[data-style=klassiek] .category-nav a{font-family:Georgia,serif;font-size:14px}body[data-style=klassiek] .section-heading{justify-content:center;padding-bottom:15px;border-bottom:3px double var(--line)}body[data-style=klassiek] .section-heading h2{font-style:italic;font-size:27px}body[data-style=klassiek] .section-number{display:none}body[data-style=klassiek] .dish h3{font-family:Georgia,serif;font-size:17px;font-weight:normal}body[data-style=klassiek] .price{font-family:Georgia,serif;font-size:14px}body[data-style=klassiek] .dish{padding:19px 0;border-bottom-style:dashed}body[data-style=klassiek] .allergen-badge{font-size:10px}body[data-style=klassiek] .controls button{border-radius:0}
/* Modern editorial menu: asymmetric masthead, compact rows and typographic numbers. */
body[data-style=modern]{--ink:#222d33;--muted:#5d6c75;--accent:#2d4655;--paper:#fff;--outer:#e9eef0;--tint:#eaf0f3;--line:#dbe2e5;--display:Arial,Helvetica,sans-serif}body[data-style=modern] .guest-shell{max-width:1080px;padding:0 52px;border-radius:0;border:0;box-shadow:none;border-top:7px solid #263a47}body[data-style=modern] .restaurant{text-align:start;display:flex;flex-direction:column;align-items:start;padding:28px 0 22px;border-bottom:1px solid var(--line);margin-bottom:15px}body[data-style=modern] .restaurant-mark,body[data-style=modern] .ornament{display:none}body[data-style=modern] .restaurant-overline{font-size:10px;letter-spacing:.18em}body[data-style=modern] .restaurant h1{font-size:65px;font-weight:700;letter-spacing:-4px;margin:4px 0 0;line-height:.95}body[data-style=modern] .modern-dot{display:inline;color:#7794a4}body[data-style=modern] .controls{justify-content:flex-start}body[data-style=modern] .controls button{border-radius:0}body[data-style=modern] .selected-area,body[data-style=modern] #selected-chips,body[data-style=modern] .hide-matches{justify-content:flex-start}body[data-style=modern] .selection-status{text-align:start}body[data-style=modern] .category-nav{justify-content:flex-start;gap:25px;border-top:0;border-bottom:2px solid var(--ink)}body[data-style=modern] .section-heading{gap:12px;padding:23px 0 12px;border-bottom:2px solid var(--line)}body[data-style=modern] .section-number{font-size:28px;letter-spacing:-2px;line-height:1;font-weight:400;color:#80939e}body[data-style=modern] .section-heading h2{font-size:17px;font-weight:600;letter-spacing:-.4px}body[data-style=modern] .dish{padding:13px 0}body[data-style=modern] .allergen-badges{gap:5px 9px;margin-top:6px}body[data-style=modern] .dish h3{font-weight:500;font-size:14px}body[data-style=modern] .allergen-badge img{width:17px;height:17px}
@media(max-width:1100px){.guest-shell{margin:24px;max-width:none}.guest-only .guest-shell{margin:24px}.prototype-note{margin-inline:24px}}
@media(max-width:650px){.owner{padding:22px 16px}.owner h1{font-size:25px}.owner-intro p{font-size:12px}.style-options{gap:6px;margin-top:18px}.style-options button{display:block;padding:9px 7px;text-align:left;line-height:1.35}.swatch{width:34px;height:34px;font-size:19px;margin-bottom:9px}.style-options strong{font-size:11px}.style-options small{font-size:10px;display:block;margin-top:4px;line-height:1.45}.owner-bottom{align-items:start;gap:15px;font-size:11px}.owner-bottom p{max-width:210px}.guest-shell,.guest-only .guest-shell{margin:14px 0 0;border:0;border-radius:0;padding:0 20px;box-shadow:none}.restaurant{padding:27px 0 18px}.restaurant-mark{width:44px;height:37px;margin-bottom:5px}.restaurant h1{font-size:41px;letter-spacing:-1.6px}.restaurant-overline{font-size:9px}.ornament{margin-top:14px}.controls-wrap{padding-bottom:13px}.controls{gap:7px}.controls button{font-size:11px;padding:8px 10px}#language-button{min-width:140px}.selection-status{font-size:10px}.category-nav{gap:0;justify-content:space-between;margin-inline:-20px;padding-inline:20px}.category-nav a{font-size:11px;min-height:46px}.category-nav a span{display:none}#menu{grid-template-columns:1fr;gap:0;padding-top:5px}.section-heading{padding:21px 0 11px}.section-heading h2{font-size:24px}.dish{padding:14px 0}.dish h3{font-size:14px}.price{font-size:12px}.allergen-badges{margin-top:7px;gap:4px 9px}.allergen-badge{font-size:10px}.allergen-badge img{width:18px;height:18px}.guest-footer{flex-wrap:wrap;padding:20px 0}.guest-footer p{flex:1}.guest-footer a{margin-inline-start:26px;flex-basis:100%}.prototype-note{font-size:10px;margin:18px 20px 25px}dialog{padding:18px;max-height:88dvh}.dialog-head h2{font-size:21px}.dialog-actions{bottom:-18px;padding-top:14px}#allergen-options{gap:6px}#allergen-options button{font-size:11px;min-height:48px}.language-grid button{font-size:12px}body[data-style=klassiek] .guest-shell{border-width:0;margin:14px 0 0;padding:0 22px}body[data-style=klassiek] .restaurant{padding:30px 0 21px;border-top:3px double var(--line)}body[data-style=klassiek] .restaurant h1{font-size:50px}body[data-style=klassiek] .category-nav{gap:0;justify-content:space-between;margin-inline:-22px;padding-inline:22px}body[data-style=klassiek] .category-nav a{font-size:12px}body[data-style=klassiek] .section-heading{padding-top:23px}body[data-style=klassiek] .section-heading h2{font-size:25px}body[data-style=klassiek] .dish{padding:16px 0}body[data-style=klassiek] .dish h3{font-size:17px}body[data-style=modern] .guest-shell{padding:0 20px;border-top-width:5px}body[data-style=modern] .restaurant{padding:26px 0 21px}body[data-style=modern] .restaurant h1{font-size:55px;letter-spacing:-3px}body[data-style=modern] .category-nav{gap:0;justify-content:space-between}body[data-style=modern] .section-heading{padding-top:23px}body[data-style=modern] .dish{padding:12px 0}body[data-style=modern] .section-number{font-size:26px}body[data-style=modern] .section-heading h2{font-size:17px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.owner,.controls-wrap,.category-nav,.prototype-note,dialog{display:none!important}.guest-shell{margin:0;border:0;box-shadow:none}body{background:#fff}#menu{display:block}.dish{break-inside:avoid}}
/* QR-first guest view: one readable phone-width menu at every viewport. */
body .guest-shell,body[data-style=klassiek] .guest-shell,body[data-style=modern] .guest-shell,body.guest-only .guest-shell{width:100%;max-width:480px;margin:24px auto 0;padding:0 20px;border-radius:12px;border:1px solid var(--line);box-shadow:0 8px 32px #243c3208}
body #menu{grid-template-columns:minmax(0,1fr);gap:0;padding-top:4px}
body .restaurant,body[data-style=klassiek] .restaurant,body[data-style=modern] .restaurant{padding:22px 0 16px;margin-bottom:0;border-top:0}
body .restaurant-mark{display:none}
body .restaurant h1,body[data-style=klassiek] .restaurant h1,body[data-style=modern] .restaurant h1{font-size:38px;line-height:1.1;letter-spacing:-1.4px}
body .ornament{display:none}
body .restaurant-overline{font-size:10px}
body .controls{justify-content:center;gap:8px;flex-wrap:wrap}
/* Flat and only as wide as their label (Laurens, 18-09: "veel platter"). */
body .controls button{font-size:13px;min-height:36px;padding:6px 10px;flex:0 1 auto;min-width:0}
body #language-button{min-width:0}
body .controls-wrap{padding-bottom:12px}
body .selection-status{font-size:12px;line-height:1.5;margin-top:8px}
body .category-nav,body[data-style=klassiek] .category-nav,body[data-style=modern] .category-nav{justify-content:flex-start;gap:22px;margin-inline:-20px;padding-inline:20px;border-width:1px;overscroll-behavior-x:contain}
body .category-nav a,body[data-style=klassiek] .category-nav a{font-size:14px;min-height:48px;flex-shrink:0}
body .category-nav a span{display:none}
body .section-heading,body[data-style=klassiek] .section-heading,body[data-style=modern] .section-heading{padding:20px 0 10px}
body .section-heading h2{font-size:24px}
body .dish,body[data-style=klassiek] .dish,body[data-style=modern] .dish{padding:15px 0}
body .dish h3,body[data-style=modern] .dish h3{font-size:16px;line-height:1.4}
body .price,body[data-style=klassiek] .price{font-size:14px}
body .allergen-badge,body[data-style=klassiek] .allergen-badge{font-size:12px;line-height:1.4}
body .allergen-badge img,body[data-style=modern] .allergen-badge img{width:20px;height:20px}
body .allergen-badges{gap:6px 10px;margin-top:8px}
body .match-note{font-size:12px}
body .guest-footer{font-size:12px;flex-wrap:wrap;padding-bottom:max(24px,env(safe-area-inset-bottom))}
body .guest-footer p{flex:1}
body .guest-footer a{margin-inline-start:26px;flex-basis:100%;font-size:12px}
body #direct-clear,body .hide-matches{font-size:13px}
body .guest-only .prototype-note{font-size:11px}
body dialog{max-height:90dvh;overscroll-behavior:contain}
body .language-grid button,body #allergen-options button{font-size:14px;min-height:48px;overflow-wrap:anywhere}
body #allergen-options button{min-width:0}
body #allergen-options img{flex:none;width:24px;height:24px}
body .dialog-actions{padding-bottom:env(safe-area-inset-bottom);gap:8px}
body #filter-help{font-size:14px}
@media(max-width:520px){body{background:var(--paper)}body .guest-shell,body[data-style=klassiek] .guest-shell,body[data-style=modern] .guest-shell,body.guest-only .guest-shell{margin:0 auto;border:0;border-radius:0;box-shadow:none;padding-inline:18px}body .category-nav,body[data-style=klassiek] .category-nav,body[data-style=modern] .category-nav{margin-inline:-18px;padding-inline:18px}body dialog{width:100%;max-width:none;margin:auto 0 0;border-radius:18px 18px 0 0;padding:18px 16px max(18px,env(safe-area-inset-bottom))}body .dialog-actions{bottom:-18px}body .restaurant{padding-top:max(18px,env(safe-area-inset-top))}}

/* Price never shares its column with badges; long allergen lists put price last. */
body .dish{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px}
body .dish-heading{display:contents}
body .dish-heading h3{grid-column:1;grid-row:1}
body .price{grid-column:2;grid-row:1;align-self:start}
body .allergen-badges{grid-column:1;grid-row:2;margin-top:0}
/* The price stays on the dish's own line; only the badge row spans the full width. */
body .many-allergens .allergen-badges{grid-column:1/-1}
body .match-note{grid-column:1/-1;grid-row:4;display:flex;align-items:flex-start;gap:7px;margin:2px 0 0}
body .match-note svg{width:17px;height:17px;flex:none;margin-top:1px}
