/* Меню для гостей: общая раскладка + четыре оформления (Bistrot, Ardoise, Cahier, Plaque).
   Цвета ресторана приходят переменными --paper --ink --muted --rule --accent --frame. */

/* ---------- шрифты ---------- */
@font-face { font-family: "JM Pagella"; src: url(/_/fonts/jm-pagella-regular.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Pagella"; src: url(/_/fonts/jm-pagella-italic.woff) format("woff"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "JM Pagella"; src: url(/_/fonts/jm-pagella-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Bonum"; src: url(/_/fonts/jm-bonum-regular.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Bonum"; src: url(/_/fonts/jm-bonum-italic.woff) format("woff"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "JM Bonum"; src: url(/_/fonts/jm-bonum-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Chorus"; src: url(/_/fonts/jm-chorus.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Schola"; src: url(/_/fonts/jm-schola-regular.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Schola"; src: url(/_/fonts/jm-schola-italic.woff) format("woff"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "JM Schola"; src: url(/_/fonts/jm-schola-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Heros"; src: url(/_/fonts/jm-heros-regular.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Heros"; src: url(/_/fonts/jm-heros-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Heros Cn"; src: url(/_/fonts/jm-heroscn-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Adventor"; src: url(/_/fonts/jm-adventor-regular.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Adventor"; src: url(/_/fonts/jm-adventor-bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Garamond"; src: url(/_/fonts/cormorant-garamond-latin.woff2) format("woff2"); font-weight: 300 700; font-style: normal; font-display: swap; }
@font-face { font-family: "JM Garamond"; src: url(/_/fonts/cormorant-garamond-italic-latin.woff2) format("woff2"); font-weight: 300 700; font-style: italic; font-display: swap; }

/* Японский, китайский и арабский берутся из системных шрифтов телефона. */
:root {
  --cjk-serif: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif CJK JP", "Noto Serif JP";
  --cjk-sans: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Noto Sans CJK JP", "Noto Sans JP";
  --ar-serif: "Noto Naskh Arabic", "Geeza Pro", "Amiri", "Times New Roman";
  --ar-sans: "Noto Sans Arabic", "Geeza Pro", "Segoe UI", "Tahoma";
  --gutter: 1.25rem;
  --col: 37rem;
}
:root:lang(zh) {
  --cjk-serif: "Songti SC", "STSong", "Noto Serif CJK SC", "Noto Serif SC";
  --cjk-sans: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC";
}

/* ---------- основа ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100vh;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 1.0625rem;
  line-height: 1.45;
  font-kerning: normal;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
:lang(ja), :lang(zh) { line-break: strict; }
:lang(ja) { word-break: auto-phrase; }
/* У японского, китайского и арабского нет настоящего курсива — браузер лишь наклонил бы буквы. */
body :is(:lang(ja), :lang(zh), :lang(ar)) { font-style: normal !important; }
html:lang(ja) body, html:lang(zh) body { line-height: 1.65; }
html:lang(ar) body { font-size: 1.125rem; line-height: 1.7; }
img { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; }
p, h1, h2, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

.tools, .masthead, .bar > *, .carte, .info, .gate-title, .gate-langs { width: min(100% - 2 * var(--gutter), var(--col)); margin-inline: auto; }

/* шапка */
.masthead { padding-block: 1.5rem 1.75rem; text-align: center; }
.masthead .plate { display: flex; flex-direction: column; align-items: center; gap: .35rem; }
.logo { max-height: 5.5rem; max-width: 70%; object-fit: contain; margin-bottom: .5rem; }
.name { font-family: var(--f-title); font-weight: 400; font-size: 2.6rem; line-height: 1.05; color: var(--accent); overflow-wrap: anywhere; }
.tagline { color: var(--muted); font-style: italic; font-size: 1.05rem; max-width: 28rem; }
.district { display: none; }
.cover { margin-top: 1.5rem; }
.cover-img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }

/* панель: язык, аллергии, рубрики */
.bar { position: sticky; top: 0; z-index: 5; background: var(--paper); padding-block: .25rem; }
.tools { display: flex; justify-content: space-between; gap: .75rem; padding-top: .5rem; }
.tool {
  display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; padding: 0 .1rem;
  background: none; border: 0; text-decoration: none; cursor: pointer; font-size: 1rem;
  -webkit-tap-highlight-color: transparent;
}
.lang-btn .tool-label::after { content: ""; display: inline-block; width: .42em; height: .42em; margin-inline-start: .45em; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-.2em) rotate(45deg); }
.count:not(:empty) { font-variant-numeric: lining-nums; min-width: 1.4em; height: 1.4em; padding: 0 .3em; border-radius: 1em; background: var(--accent); color: var(--paper); font-size: .8rem; line-height: 1.4em; text-align: center; }
.sections { display: flex; gap: 1.25rem; overflow-x: auto; scrollbar-width: none; padding-block: .35rem .4rem; scroll-padding-inline: 1rem; -webkit-overflow-scrolling: touch; }
.sections::-webkit-scrollbar { display: none; }
.sections a { display: block; white-space: nowrap; text-decoration: none; padding-block: .3rem; color: var(--muted); }
.sections a[aria-current="true"] { color: var(--ink); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .35em; text-decoration-color: var(--accent); }

/* рубрики и блюда */
.carte { padding-block: 1rem 2rem; }
.cat { padding-block: 1.75rem .5rem; scroll-margin-top: 4rem; }
.cat-title { font-family: var(--f-title); font-weight: 400; font-size: 1.6rem; line-height: 1.15; color: var(--accent); text-align: center; }
.cat-note { margin-top: .4rem; text-align: center; color: var(--muted); font-style: italic; font-size: .95rem; }
.items { margin-top: 1.25rem; display: flex; flex-direction: column; gap: 1.15rem; }
.item { display: flex; gap: .9rem; align-items: flex-start; }
.item-body { flex: 1; min-width: 0; }
.item-head { display: flex; align-items: baseline; gap: .35rem; }
.item-head::after, .variants li::after { content: ""; display: table; clear: both; }
.item-name { flex: 0 1 auto; min-width: 0; overflow-wrap: break-word; font-size: 1.08rem; }
.leader { flex: 1 1 1.5rem; min-width: 1.5rem; }
.price { flex: none; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.item-orig { color: var(--muted); font-size: .88rem; font-style: italic; }
.item-desc { margin-top: .15rem; color: var(--muted); font-size: .95rem; font-style: italic; }
.variants { margin-top: .35rem; display: flex; flex-direction: column; gap: .15rem; font-size: .98rem; }
.variants li { display: flex; align-items: baseline; gap: .35rem; }
.variant-label { color: var(--muted); }
.tags { margin-top: .3rem; font-size: .85rem; color: var(--accent); }
.tag + .tag::before { content: ", "; }
html:lang(ja) .tag + .tag::before, html:lang(zh) .tag + .tag::before { content: "、"; }
html:lang(ar) .tag + .tag::before { content: "، "; }
.allergens { margin-top: .3rem; font-size: .8rem; color: var(--muted); }
.soldout .item-name, .soldout .price, .soldout .item-desc { color: var(--muted); }
.soldout .photo { opacity: .5; }
.soldout .price { text-decoration: line-through; }
.soldout-note { margin-top: .3rem; font-size: .9rem; font-weight: 700; color: var(--accent); }
.filtered { display: none; }
.filter-note { margin-top: .5rem; text-align: center; font-size: .9rem; color: var(--muted); }

/* фото блюд */
[data-photos="small"] .photo { flex: none; width: 4.75rem; order: 2; }
[data-photos="small"] .photo-img { width: 4.75rem; height: 4.75rem; object-fit: cover; }
[data-photos="large"] .item.has-photo { flex-direction: column; align-items: stretch; gap: .7rem; }
[data-photos="large"] .photo { width: 100%; }
[data-photos="large"] .photo-img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }

/* низ страницы */
.info { padding-block: 2rem 3rem; text-align: center; display: flex; flex-direction: column; gap: 1.25rem; }
.house-note { font-style: italic; color: var(--muted); }
.info-grid { display: grid; gap: 1.25rem; }
.info-title { font-family: var(--f-title); font-weight: 400; font-size: 1.15rem; color: var(--accent); margin-bottom: .2rem; }
.actions, .links { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.25rem; }
.action { display: inline-flex; align-items: center; min-height: 2.75rem; text-decoration-thickness: 1px; text-underline-offset: .25em; }
.links a { color: var(--muted); }
.allergen-note { font-size: .82rem; color: var(--muted); }
.credit { font-size: .8rem; color: var(--muted); }
.credit a { text-decoration: none; border-bottom: 1px solid var(--rule); }
.demo-note { padding: .9rem var(--gutter) calc(.9rem + env(safe-area-inset-bottom)); text-align: center; font-family: "JM Heros", system-ui, sans-serif; font-size: .8rem; line-height: 1.4; background: var(--ink); color: var(--paper); }

/* окна: язык и аллергии */
.sheet {
  width: min(100%, 30rem); max-width: 100%; max-height: min(85vh, 40rem); margin: auto auto 0; padding: 1.25rem var(--gutter) calc(1.5rem + env(safe-area-inset-bottom));
  border: 0; border-radius: 0; background: var(--paper); color: var(--ink); overflow-y: auto; overscroll-behavior: contain;
}
.sheet[open] { animation: sheet-up .22s cubic-bezier(.2, .8, .3, 1); }
.sheet::backdrop { background: rgb(0 0 0 / .45); }
@keyframes sheet-up { from { transform: translateY(2rem); opacity: 0; } }
@media (min-width: 40rem) { .sheet { margin: auto; } }
.sheet-close { position: absolute; inset-inline-end: .5rem; top: .5rem; }
.close { width: 2.75rem; height: 2.75rem; border: 0; background: none; font-size: 1.8rem; line-height: 1; cursor: pointer; color: var(--muted); }
.sheet-title { font-family: var(--f-title); font-weight: 400; font-size: 1.5rem; color: var(--accent); padding-inline-end: 3rem; margin-bottom: .9rem; }
.sheet-lead { color: var(--muted); margin-bottom: .75rem; }
.lang-list li + li, .gate-langs li + li { border-top: 1px solid var(--rule); }
.lang-list a, .gate-langs a { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; min-height: 3.25rem; padding-block: .7rem; text-decoration: none; }
.lang-list .native, .gate-langs .native { font-size: 1.15rem; }
.lang-list .translated, .gate-langs .translated { color: var(--muted); font-size: .9rem; text-align: end; }
.lang-list a[aria-current="true"] .native { color: var(--accent); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .3em; }
.allergen-list { display: grid; grid-template-columns: 1fr 1fr; gap: .1rem 1rem; }
.allergen-list label { display: flex; align-items: center; gap: .6rem; min-height: 2.9rem; cursor: pointer; }
.allergen-list input { width: 1.3rem; height: 1.3rem; margin: 0; accent-color: var(--accent); flex: none; }
.sheet-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem; margin-top: 1.25rem; }
.btn-clear, .btn-apply { min-height: 3rem; padding: 0 1.1rem; cursor: pointer; border: 1.5px solid var(--ink); background: none; white-space: nowrap; }
.btn-apply { background: var(--ink); color: var(--paper); flex: 1; }

/* страница выбора языка */
.page-gate { display: flex; flex-direction: column; }
.gate { flex: 1; padding-bottom: 3rem; }
.gate-title { text-align: center; color: var(--muted); margin-block: .5rem 1.25rem; font-style: italic; font-weight: 400; font-size: 1.15rem; }
.gate-langs { max-width: 26rem; }
.gate-langs .suggested .native { font-size: 1.45rem; color: var(--accent); }
.plain { padding-top: 22vh; text-align: center; }
.plain .name { margin-bottom: 1.25rem; font-size: 2.2rem; }
.plain .gate-title + .gate-title { margin-top: 0; }

@media (prefers-reduced-motion: reduce) { .sheet[open] { animation: none; } html { scroll-behavior: auto; } }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }

/* ======================================================================
   BISTROT — карта брассери: бумага, пунктир до цены, заголовки в рамке филетов
   ====================================================================== */
[data-theme="bistrot"] { --f-body: "JM Pagella", "Palatino Linotype", Palatino, var(--cjk-serif), var(--ar-serif), serif; --f-title: var(--f-body); }
[data-theme="bistrot"][data-font="bonum"] { --f-body: "JM Bonum", "Bookman Old Style", var(--cjk-serif), var(--ar-serif), serif; }
[data-theme="bistrot"][data-font="garamond"] { --f-body: "JM Garamond", Garamond, var(--cjk-serif), var(--ar-serif), serif; font-size: 1.2rem; }
[data-theme="bistrot"] .price { font-variant-numeric: oldstyle-nums proportional-nums; }
[data-theme="bistrot"] .masthead { padding-block: 2rem 2rem; }
[data-theme="bistrot"] .name { font-size: clamp(2.5rem, 11vw, 3.4rem); letter-spacing: .01em; }
[data-theme="bistrot"] .masthead .plate::after {
  /* двойной филет под названием */
  content: ""; width: 5.5rem; height: 5px; margin-top: .9rem; border-block: 1px solid var(--accent);
}
[data-theme="bistrot"] .bar { border-bottom: 1px solid var(--rule); }
[data-theme="bistrot"] .sections a { font-style: italic; }
[data-theme="bistrot"] .tool { font-style: italic; }
[data-theme="bistrot"] .cat-title { display: flex; align-items: center; gap: .9rem; font-style: italic; }
[data-theme="bistrot"] .cat-title::before, [data-theme="bistrot"] .cat-title::after { content: ""; flex: 1; border-top: 1px solid var(--accent); opacity: .5; }
[data-theme="bistrot"] .cat-title span { max-width: 80%; }
[data-theme="bistrot"] .item-head, [data-theme="bistrot"] .variants li { display: block; position: relative; font-size: 1.08rem; line-height: 1.45; }
[data-theme="bistrot"] .variants li { font-size: .98rem; }
[data-theme="bistrot"] .item-name { font-size: 1em; }
[data-theme="bistrot"] .item-name, [data-theme="bistrot"] .variant-label {
  position: relative; z-index: 1; background: var(--paper); padding-inline-end: .3em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
[data-theme="bistrot"] .item-head .price, [data-theme="bistrot"] .variants .price {
  position: relative; z-index: 1; float: right; float: inline-end; background: var(--paper); padding-inline-start: .3em;
}
/* Пунктир на последней строке названия — там же, где цена. */
[data-theme="bistrot"] .leader {
  position: absolute; inset-inline: 0; bottom: .37em; height: .3em; min-width: 0;
  background: radial-gradient(circle, var(--muted) .06em, transparent .075em) 0 50% / .4em .3em repeat-x;
}
[data-theme="bistrot"][data-font="garamond"] .leader { bottom: .42em; }
[data-theme="bistrot"] .tags { font-style: italic; }
[data-theme="bistrot"] .highlight { margin-block: 1.5rem .5rem; padding: 1.4rem 1.2rem 1.5rem; border: 4px double var(--accent); }
[data-theme="bistrot"] .highlight .cat-title::before, [data-theme="bistrot"] .highlight .cat-title::after { display: none; }
[data-theme="bistrot"] .highlight .cat-title { justify-content: center; }
[data-theme="bistrot"][data-photos="small"] .photo-img { border: 1px solid var(--rule); padding: 3px; background: var(--paper); }
[data-theme="bistrot"] .info { border-top: 1px solid var(--rule); margin-top: 1rem; }
[data-theme="bistrot"] .info-title { font-style: italic; }
[data-theme="bistrot"][data-paper="kraft"] .bar { background: var(--paper); }
@media (min-width: 48rem) {
  [data-theme="bistrot"] { background-color: color-mix(in srgb, var(--paper) 86%, var(--ink)); padding-block: 2.5rem; }
  [data-theme="bistrot"].page-menu > :is(.tools, .masthead, .bar, .carte, .info) { width: var(--col); margin-inline: auto; padding-inline: 3rem; box-sizing: content-box; background-color: var(--paper); }
  [data-theme="bistrot"].page-menu > .tools { padding-top: 1.25rem; }
  [data-theme="bistrot"].page-menu > .masthead { padding-top: 2.5rem; }
  [data-theme="bistrot"].page-menu > .info { padding-bottom: 3.5rem; margin-top: 0; }
  [data-theme="bistrot"].page-menu > .bar > * { width: 100%; }
  [data-theme="bistrot"].page-menu { background-image: none; }
  [data-theme="bistrot"] .demo-note { width: calc(var(--col) + 6rem); margin: 0 auto; }
}

/* ======================================================================
   ARDOISE — грифельная доска: мел, жёлтая цена, рамка из дерева
   ====================================================================== */
[data-theme="ardoise"] {
  --f-body: "JM Pagella", Palatino, var(--cjk-serif), var(--ar-serif), serif;
  --f-title: "JM Chorus", "Apple Chancery", var(--cjk-serif), var(--ar-serif), cursive;
  --chalk-dust: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-image:
    radial-gradient(60rem 30rem at 20% 10%, rgb(255 255 255 / .05), transparent 70%),
    radial-gradient(40rem 25rem at 85% 60%, rgb(255 255 255 / .04), transparent 70%),
    var(--chalk-dust);
}
[data-theme="ardoise"][data-font="capitales"] { --f-title: "JM Heros Cn", "Arial Narrow", var(--cjk-sans), var(--ar-sans), sans-serif; --f-body: "JM Heros", Helvetica, Arial, var(--cjk-sans), var(--ar-sans), sans-serif; }
[data-theme="ardoise"]::before {
  /* деревянная рамка доски */
  content: ""; position: fixed; inset: 0; z-index: 20; pointer-events: none;
  border: 7px solid #5d4430;
  box-shadow: inset 0 0 0 1px rgb(0 0 0 / .45), inset 0 0 1.5rem rgb(0 0 0 / .35);
  border-image: linear-gradient(135deg, #6f5238, #4e3826 40%, #745639 60%, #4a3524) 1;
}
[data-theme="ardoise"] .name, [data-theme="ardoise"] .cat-title, [data-theme="ardoise"] .item-name, [data-theme="ardoise"] .price {
  text-shadow: 0 0 1px rgb(255 255 255 / .35), 0 0 .12em rgb(255 255 255 / .12);
}
[data-theme="ardoise"] .name { font-size: clamp(3rem, 14vw, 4.2rem); color: var(--ink); line-height: 1; }
[data-theme="ardoise"][data-font="capitales"] .name { text-transform: uppercase; font-size: clamp(2.5rem, 12vw, 3.6rem); letter-spacing: .02em; }
[data-theme="ardoise"] .tagline { color: var(--accent); font-size: 1.1rem; }
[data-theme="ardoise"] .bar { background: transparent; backdrop-filter: none; }
[data-theme="ardoise"] .bar.stuck { background: var(--paper); box-shadow: 0 1px 0 rgb(255 255 255 / .12); }
[data-theme="ardoise"] .cat-title { font-size: 2.3rem; color: var(--ink); }
[data-theme="ardoise"][data-font="capitales"] .cat-title { text-transform: uppercase; font-size: 1.75rem; letter-spacing: .04em; }
[data-theme="ardoise"] .cat-title span { position: relative; display: inline-block; padding-bottom: .35rem; }
[data-theme="ardoise"] .cat-title span::after {
  /* мелом от руки подчёркнуто */
  content: ""; position: absolute; inset-inline: -.3em; bottom: 0; height: .32em; background: var(--accent); opacity: .85;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 40 3, 80 10, 120 6 S 180 4, 198 7' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 40 3, 80 10, 120 6 S 180 4, 198 7' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
[data-theme="ardoise"] .cat-note { color: var(--muted); }
[data-theme="ardoise"] .item-name { font-size: 1.15rem; }
[data-theme="ardoise"] .price { color: var(--accent); font-size: 1.1rem; }
[data-theme="ardoise"] .leader { min-width: 1rem; }
[data-theme="ardoise"] .item-desc { color: var(--muted); }
[data-theme="ardoise"] .tags { color: var(--accent); font-style: italic; }
[data-theme="ardoise"] .sections a[aria-current="true"] { color: var(--ink); text-decoration-color: var(--accent); }
[data-theme="ardoise"] .highlight {
  margin-block: 1.5rem .5rem; padding: 1.5rem 1.25rem;
  border: 2px solid rgb(236 235 227 / .75);
  border-radius: 255px 12px 225px 12px / 12px 225px 12px 255px;
}
[data-theme="ardoise"] .soldout-note { color: var(--accent); }
[data-theme="ardoise"] .soldout .price { text-decoration-color: var(--ink); }
[data-theme="ardoise"][data-photos="small"] .photo-img { border-radius: 2px; filter: saturate(.85); }
[data-theme="ardoise"] .info { border-top: 1px dashed rgb(236 235 227 / .3); }
[data-theme="ardoise"] .info-title { color: var(--accent); }
[data-theme="ardoise"] .count:not(:empty) { color: var(--paper); }
[data-theme="ardoise"] .btn-clear { border-color: var(--ink); }
[data-theme="ardoise"] .btn-apply { background: var(--ink); color: var(--paper); }
[data-theme="ardoise"] .sheet { background-color: var(--paper); background-image: var(--chalk-dust); }
[data-theme="ardoise"] .sheet-title { color: var(--ink); font-size: 2rem; }
[data-theme="ardoise"] .lang-list li + li, [data-theme="ardoise"] .gate-langs li + li { border-top: 1px dashed rgb(236 235 227 / .25); }
[data-theme="ardoise"] .gate-langs .suggested .native { font-family: var(--f-title); font-size: 2rem; color: var(--accent); }
[data-theme="ardoise"] .demo-note { background: #5d4430; color: #f3eee4; }
html:lang(ja) [data-theme="ardoise"], html:lang(zh) [data-theme="ardoise"], html:lang(ar) [data-theme="ardoise"] { --f-title: var(--f-body); }
@media (min-width: 48rem) { [data-theme="ardoise"]::before { border-width: 16px; } [data-theme="ardoise"] .masthead { padding-top: 4rem; } }

/* ======================================================================
   CAHIER — тетрадь Сейес: синие чернила, поле с красной линией, заголовки подчёркнуты красным
   ====================================================================== */
[data-theme="cahier"] {
  --f-body: "JM Schola", "Century Schoolbook", var(--cjk-serif), var(--ar-serif), serif;
  --f-title: var(--f-body);
  --u: .5rem;               /* шаг тонких линеек */
  --margin-x: 2.6rem;       /* где проходит красная линия поля */
  --red: #d8453b;
  background-color: var(--paper);
  background-image:
    linear-gradient(to right, transparent calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) + 1px), transparent calc(var(--margin-x) + 1px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(4 * var(--u) - 1px), rgb(110 110 205 / .42) calc(4 * var(--u) - 1px) calc(4 * var(--u))),
    repeating-linear-gradient(to bottom, transparent 0 calc(var(--u) - 1px), rgb(140 150 220 / .2) calc(var(--u) - 1px) var(--u)),
    repeating-linear-gradient(to right, transparent 0 calc(4 * var(--u) - 1px), rgb(140 150 220 / .2) calc(4 * var(--u) - 1px) calc(4 * var(--u)));
  /* +4px: базовая линия текста ложится ровно на линейку */
  background-position: 0 0, 0 calc(2 * var(--u) + 4px), 0 calc(2 * var(--u) + 4px), calc(var(--margin-x) + 1px) 0;
  line-height: calc(3 * var(--u));
}
[data-theme="cahier"][data-paper="carreaux"] {
  background-image:
    linear-gradient(to right, transparent calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) + 1px), transparent calc(var(--margin-x) + 1px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(1.25rem - 1px), rgb(120 150 200 / .3) calc(1.25rem - 1px) 1.25rem),
    repeating-linear-gradient(to right, transparent 0 calc(1.25rem - 1px), rgb(120 150 200 / .3) calc(1.25rem - 1px) 1.25rem);
  background-position: 0 0, 0 0, calc(var(--margin-x) + 1px) 0;
}
[data-theme="cahier"][data-font="plume"] { --f-title: "JM Chorus", "Apple Chancery", var(--cjk-serif), var(--ar-serif), cursive; }
html:lang(ja) [data-theme="cahier"], html:lang(zh) [data-theme="cahier"], html:lang(ar) [data-theme="cahier"] { --f-title: var(--f-body); line-height: 1.7; }
[data-theme="cahier"] .tools, [data-theme="cahier"] .masthead, [data-theme="cahier"] .bar > *, [data-theme="cahier"] .carte, [data-theme="cahier"] .info, [data-theme="cahier"] .gate-title, [data-theme="cahier"] .gate-langs {
  width: auto; max-width: var(--col); margin-inline: calc(var(--margin-x) + .9rem) var(--gutter);
}
@media (min-width: 46rem) {
  /* На широком экране поле с красной линией сдвигается так, чтобы текст стоял по центру. */
  [data-theme="cahier"] { --margin-x: max(5rem, calc((100vw - var(--col)) / 2 - 2rem)); }
  [data-theme="cahier"] .tools, [data-theme="cahier"] .masthead, [data-theme="cahier"] .bar > *, [data-theme="cahier"] .carte, [data-theme="cahier"] .info, [data-theme="cahier"] .gate-title, [data-theme="cahier"] .gate-langs { margin-inline-start: calc(var(--margin-x) + 2rem); }
}
[data-theme="cahier"] .masthead { text-align: start; padding-block: calc(5 * var(--u)) calc(3 * var(--u)); }
[data-theme="cahier"] .masthead .plate { align-items: flex-start; gap: var(--u); }
[data-theme="cahier"] .name { font-weight: 700; font-size: 2.3rem; line-height: calc(6 * var(--u)); color: var(--accent); }
[data-theme="cahier"][data-font="plume"] .name { font-weight: 400; font-size: 3rem; }
[data-theme="cahier"] .name, [data-theme="cahier"] .cat-title span {
  text-decoration: underline; text-decoration-color: var(--red); text-decoration-thickness: 2px; text-underline-offset: .28em;
}
[data-theme="cahier"] .tagline { color: var(--muted); }
[data-theme="cahier"] .bar { background: transparent; }
[data-theme="cahier"] .bar.stuck { background: var(--paper); box-shadow: 0 1px 0 rgb(110 110 205 / .45), 0 6px 10px -8px rgb(40 40 90 / .35); }
[data-theme="cahier"] .bar::before {
  /* красная линия поля продолжается и на закреплённой панели */
  content: ""; position: absolute; top: 0; bottom: 0; inset-inline-start: calc(var(--margin-x) - 1px); width: 2px; background: var(--red);
}
/* В арабской тетради поле справа. */
html[dir="rtl"] [data-theme="cahier"] {
  background-image:
    linear-gradient(to left, transparent calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) + 1px), transparent calc(var(--margin-x) + 1px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(4 * var(--u) - 1px), rgb(110 110 205 / .42) calc(4 * var(--u) - 1px) calc(4 * var(--u))),
    repeating-linear-gradient(to bottom, transparent 0 calc(var(--u) - 1px), rgb(140 150 220 / .2) calc(var(--u) - 1px) var(--u)),
    repeating-linear-gradient(to left, transparent 0 calc(4 * var(--u) - 1px), rgb(140 150 220 / .2) calc(4 * var(--u) - 1px) calc(4 * var(--u)));
  background-position: 0 0, 0 calc(2 * var(--u) + 4px), 0 calc(2 * var(--u) + 4px), 0 0;
}
html[dir="rtl"] [data-theme="cahier"][data-paper="carreaux"] {
  background-image:
    linear-gradient(to left, transparent calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) - 1px), var(--red) calc(var(--margin-x) + 1px), transparent calc(var(--margin-x) + 1px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(1.25rem - 1px), rgb(120 150 200 / .3) calc(1.25rem - 1px) 1.25rem),
    repeating-linear-gradient(to left, transparent 0 calc(1.25rem - 1px), rgb(120 150 200 / .3) calc(1.25rem - 1px) 1.25rem);
  background-position: 0 0, 0 0, 0 0;
}
[data-theme="cahier"] .tools { padding-top: var(--u); }
[data-theme="cahier"] .tool { min-height: calc(6 * var(--u)); color: var(--accent); }
[data-theme="cahier"] .bar { padding-block: 0; }
[data-theme="cahier"] .sections { padding-block: var(--u); gap: 1.5rem; }
[data-theme="cahier"] .sections a { padding-block: var(--u); line-height: calc(3 * var(--u)); }
[data-theme="cahier"] .cat-note, [data-theme="cahier"] .item-desc, [data-theme="cahier"] .item-orig, [data-theme="cahier"] .tags,
[data-theme="cahier"] .allergens, [data-theme="cahier"] .variants, [data-theme="cahier"] .soldout-note { margin-top: 0; }
[data-theme="cahier"] .variants { gap: 0; }
[data-theme="cahier"] .info, [data-theme="cahier"] .info-grid { gap: calc(3 * var(--u)); }
[data-theme="cahier"] .info-title { margin-bottom: 0; line-height: calc(4 * var(--u)); }
[data-theme="cahier"] .action { min-height: calc(6 * var(--u)); }
[data-theme="cahier"] .masthead .tagline { font-size: 1.05rem; }
[data-theme="cahier"] .sections a[aria-current="true"] { color: var(--accent); text-decoration-color: var(--red); }
[data-theme="cahier"] .cat { padding-block: calc(4 * var(--u)) var(--u); }
[data-theme="cahier"] .cat-title { text-align: start; font-weight: 700; font-size: 1.45rem; line-height: calc(4 * var(--u)); color: var(--accent); }
[data-theme="cahier"][data-font="plume"] .cat-title { font-weight: 400; font-size: 2rem; }
[data-theme="cahier"] .cat-note { text-align: start; }
[data-theme="cahier"] .items { margin-top: calc(2 * var(--u)); gap: calc(2 * var(--u)); }
[data-theme="cahier"] .item-name { font-weight: 700; font-size: 1.05rem; }
[data-theme="cahier"] .price { color: var(--accent); font-weight: 700; }
[data-theme="cahier"] .item-desc, [data-theme="cahier"] .item-orig { font-size: .95rem; }
[data-theme="cahier"] .tags { color: var(--red); font-style: italic; }
[data-theme="cahier"] .highlight .cat-title span {
  /* выделено маркером */
  text-decoration: none; padding: 0 .25em; margin-inline-start: -.25em;
  background: linear-gradient(100deg, transparent .1em, rgb(255 236 90 / .85) .2em, rgb(255 230 70 / .75) calc(100% - .3em), transparent calc(100% - .1em));
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
[data-theme="cahier"] .highlight {
  margin-block: calc(3 * var(--u)) var(--u); padding: calc(2 * var(--u)) 1rem calc(3 * var(--u));
  box-shadow: 0 0 0 2px var(--red); border-radius: 18px 6px 14px 8px / 8px 16px 6px 18px;
}
[data-theme="cahier"] .photo-img {
  padding: 4px 4px 12px; background: #fff; box-shadow: 0 1px 2px rgb(0 0 0 / .25); transform: rotate(-2.5deg);
}
[data-theme="cahier"] .item:nth-child(even) .photo-img { transform: rotate(2deg); }
[data-theme="cahier"] .photo { position: relative; }
[data-theme="cahier"] .photo::after {
  /* скотч */
  content: ""; position: absolute; top: -6px; left: 50%; width: 2.6rem; height: .9rem; margin-left: -1.3rem;
  background: rgb(240 232 200 / .75); box-shadow: 0 0 1px rgb(0 0 0 / .15); transform: rotate(-4deg);
}
[data-theme="cahier"][data-photos="small"] .photo, [data-theme="cahier"][data-photos="small"] .photo-img { width: 5.25rem; }
[data-theme="cahier"][data-photos="small"] .photo-img { height: calc(12 * var(--u)); }
[data-theme="cahier"][data-photos="large"] .photo-img { transform: rotate(-1deg); padding: 6px 6px 18px; }
[data-theme="cahier"] .info { text-align: start; }
[data-theme="cahier"] .actions, [data-theme="cahier"] .links { justify-content: flex-start; }
[data-theme="cahier"] .info-title { font-weight: 700; color: var(--accent); }
[data-theme="cahier"] .sheet { background-color: var(--paper); }
[data-theme="cahier"] .sheet-title { font-weight: 700; text-decoration: underline; text-decoration-color: var(--red); text-decoration-thickness: 2px; text-underline-offset: .28em; }
[data-theme="cahier"] .gate-title { text-align: start; }
[data-theme="cahier"] .btn-apply { background: var(--accent); border-color: var(--accent); color: #fff; }
[data-theme="cahier"] .count:not(:empty) { background: var(--red); color: #fff; }
[data-theme="cahier"] .demo-note { background: var(--accent); color: #fff; }

/* ======================================================================
   PLAQUE — эмалированные таблички парижских улиц: синий, белые буквы, зелёная рамка
   ====================================================================== */
[data-theme="plaque"] {
  --f-body: "JM Heros", "Helvetica Neue", Helvetica, Arial, var(--cjk-sans), var(--ar-sans), sans-serif;
  --f-title: "JM Heros Cn", "Helvetica Neue", "Arial Narrow", var(--cjk-sans), var(--ar-sans), sans-serif;
  --enamel: #ffffff;
}
[data-theme="plaque"][data-font="adventor"] {
  --f-body: "JM Adventor", "Century Gothic", "Avant Garde", var(--cjk-sans), var(--ar-sans), sans-serif;
  --f-title: var(--f-body);
}
[data-theme="plaque"][data-paper="pierre"] {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.55' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .4 0 0 0 0 .38 0 0 0 0 .33 0 0 0 .12 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
[data-theme="plaque"] { font-size: 1rem; }
/* табличка: эмаль цвета ресторана, белый кант, рамка */
[data-theme="plaque"] .masthead .plate, [data-theme="plaque"] .cat-title span, [data-theme="plaque"] .price, [data-theme="plaque"] .highlight {
  background: var(--accent); color: var(--enamel);
  box-shadow: inset 0 0 0 3px var(--accent), inset 0 0 0 5px var(--enamel), 0 0 0 4px var(--frame), 0 2px 0 4px rgb(0 0 0 / .18);
}
[data-theme="plaque"] .masthead { padding-block: 2.25rem 1.5rem; }
[data-theme="plaque"] .masthead .plate { padding: 1rem 1.25rem 1.15rem; border-radius: .7rem; gap: .2rem; }
[data-theme="plaque"] .district { display: block; font-family: var(--f-title); font-weight: 700; font-size: .95rem; letter-spacing: .02em; padding-bottom: .35rem; border-bottom: 2px solid var(--enamel); margin-bottom: .45rem; }
[data-theme="plaque"] .name { font-family: var(--f-title); font-weight: 700; text-transform: uppercase; color: var(--enamel); font-size: clamp(2.1rem, 10.5vw, 3.2rem); line-height: .98; letter-spacing: .01em; }
[data-theme="plaque"] .tagline { color: rgb(255 255 255 / .82); font-style: normal; font-size: .95rem; margin-top: .3rem; }
[data-theme="plaque"] .logo { filter: brightness(0) invert(1); }
[data-theme="plaque"] .cover-img { border-radius: .5rem; }
[data-theme="plaque"] .bar { background: var(--paper); border-bottom: 2px solid var(--accent); }
[data-theme="plaque"] .tool { font-weight: 700; }
[data-theme="plaque"] .sections { gap: .5rem; }
[data-theme="plaque"] .sections a { font-family: var(--f-title); font-weight: 700; padding: .25rem .6rem; border-radius: .35rem; color: var(--ink); }
[data-theme="plaque"] .sections { padding-inline: 4px; }
[data-theme="plaque"] .sections a[aria-current="true"] {
  background: var(--accent); color: var(--enamel); text-decoration: none;
  box-shadow: inset 0 0 0 2px var(--accent), inset 0 0 0 3.5px var(--enamel), 0 0 0 2.5px var(--frame);
}
[data-theme="plaque"] .cat { padding-top: 2rem; }
[data-theme="plaque"] .cat-title { text-align: start; }
[data-theme="plaque"] .cat-title span {
  display: inline-block; padding: .45rem .9rem .4rem; border-radius: .45rem; margin-inline-start: 4px;
  font-family: var(--f-title); font-weight: 700; font-size: 1.4rem; text-transform: uppercase; letter-spacing: .02em; line-height: 1.1;
}
[data-theme="plaque"] .cat-note { text-align: start; font-style: normal; margin-top: .75rem; }
[data-theme="plaque"] .items { gap: 0; margin-top: 1rem; }
[data-theme="plaque"] .item { padding-block: .85rem; border-bottom: 1px solid var(--rule); }
[data-theme="plaque"] .item:last-child { border-bottom: 0; }
[data-theme="plaque"] .item-head { align-items: flex-start; gap: .75rem; }
[data-theme="plaque"] .item-name { font-weight: 700; font-size: 1.05rem; padding-top: .1rem; }
[data-theme="plaque"] .leader { min-width: .5rem; }
/* цена — маленькая табличка, как номер дома */
[data-theme="plaque"] .price {
  font-family: var(--f-title); font-weight: 700; font-size: .98rem; line-height: 1; padding: .42rem .55rem .38rem; border-radius: .3rem; margin: 3px 4px;
  box-shadow: inset 0 0 0 2px var(--accent), inset 0 0 0 3.5px var(--enamel), 0 0 0 2.5px var(--frame);
}
[data-theme="plaque"] .variants { gap: .45rem; margin-top: .55rem; }
[data-theme="plaque"] .variants li { align-items: center; }
[data-theme="plaque"] .item-desc, [data-theme="plaque"] .item-orig { font-style: normal; }
[data-theme="plaque"] .item-orig { font-size: .85rem; }
[data-theme="plaque"] .tags { color: var(--accent); font-weight: 700; font-size: .82rem; }
[data-theme="plaque"] .soldout .price { text-decoration: none; opacity: .4; }
[data-theme="plaque"] .soldout-note { color: var(--accent); }
[data-theme="plaque"] .highlight { margin-block: 1.75rem .5rem; padding: 1.25rem 1.2rem 1.35rem; border-radius: .7rem; }
[data-theme="plaque"] .highlight .cat-title span { box-shadow: none; padding: 0; background: none; font-size: 1.6rem; margin: 0; }
[data-theme="plaque"] .highlight .cat-note, [data-theme="plaque"] .highlight .item-desc, [data-theme="plaque"] .highlight .item-orig { color: rgb(255 255 255 / .8); }
[data-theme="plaque"] .highlight .item { border-color: rgb(255 255 255 / .3); }
[data-theme="plaque"] .highlight .price { background: var(--enamel); color: var(--accent); box-shadow: 0 0 0 2px var(--enamel); }
[data-theme="plaque"] .highlight .tags { color: var(--enamel); }
[data-theme="plaque"][data-photos="small"] .photo-img { border-radius: .4rem; }
[data-theme="plaque"][data-photos="large"] .photo-img { border-radius: .5rem; }
[data-theme="plaque"] .info { text-align: start; border-top: 2px solid var(--accent); }
[data-theme="plaque"] .actions, [data-theme="plaque"] .links { justify-content: flex-start; }
[data-theme="plaque"] .action { padding: 0 1rem; border-radius: .35rem; background: var(--accent); color: var(--enamel); text-decoration: none; font-weight: 700; }
[data-theme="plaque"] .info-title { font-family: var(--f-title); font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--accent); }
[data-theme="plaque"] .house-note { font-style: normal; }
[data-theme="plaque"] .sheet { border-radius: .8rem .8rem 0 0; }
[data-theme="plaque"] .sheet-title { font-family: var(--f-title); font-weight: 700; text-transform: uppercase; }
[data-theme="plaque"] .gate-title { font-style: normal; }
[data-theme="plaque"] .gate-langs .native { font-weight: 700; }
[data-theme="plaque"] .gate-langs .suggested a {
  margin: .5rem 4px; padding-inline: 1rem; border-radius: .45rem; background: var(--accent); color: var(--enamel);
  box-shadow: inset 0 0 0 3px var(--accent), inset 0 0 0 5px var(--enamel), 0 0 0 4px var(--frame);
}
[data-theme="plaque"] .gate-langs .suggested .native { color: var(--enamel); }
[data-theme="plaque"] .gate-langs .suggested + li { border-top: 0; }
[data-theme="plaque"] .btn-apply { background: var(--accent); border-color: var(--accent); color: var(--enamel); border-radius: .35rem; }
[data-theme="plaque"] .btn-clear { border-radius: .35rem; }
[data-theme="plaque"] .demo-note { background: var(--frame); color: #fff; }
@media (min-width: 40rem) { [data-theme="plaque"] .sheet { border-radius: .8rem; } }
