/* Страница с меню, которую гость открывает по QR. Один компонент .gm: цвета и шрифты приходят переменными CSS из дизайна
   (design.js), вёрстка переключается атрибутами data-* на корне. Шаблон — только заготовка этих значений, поэтому редактор
   меняет их по одному, а страница не знает ни о каких «темах».

   Правила, которые здесь держатся: цифры цен — табличные и «строчные» (в Cormorant и Playfair по умолчанию старые цифры,
   и «1 200» превращается в «1 2oo»); цвет акцента в тексте — только --accent-t (проверенный контраст), сам --accent — для
   линий, заливок и знаков; интерфейс гостя не зависит от темы системы — дизайн задаёт владелец, а не телефон гостя. */

[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body.gm-page{margin:0;background:var(--page-bg,#fff)}

.gm{
  /* значения по умолчанию — «минимал»; дизайн перекрывает их переменными на этом же элементе */
  --bg:#FFFFFF;--ink:#141414;--ink2:#565A61;--ink3:#6A6E76;--line:#D9DCE0;--line2:#ECEEF0;
  --accent:#141414;--accent-t:#141414;--fill:#141414;--on-fill:#FFFFFF;--soft:#EFEFEF;--card:#F5F5F5;--ok:#2E8B57;
  --f-display:"Inter","Noto Sans Georgian",system-ui,sans-serif;--f-text:"Inter","Noto Sans Georgian",system-ui,sans-serif;--r:8px;
  --f-cat:var(--f-text);--f-price:var(--f-text);
  --pad:22px;--w:640px;
  --t-size:clamp(32px,calc(var(--vw,1vw)*9),44px);--t-w:700;--t-ls:-.024em;--t-lh:1.05;--t-case:none;
  --c-size:12.5px;--c-w:700;--c-ls:.12em;
  --n-size:17px;--n-w:600;--d-size:14.5px;--p-size:17px;--p-w:600;
  --gap-i:14px;--gap-s:40px;--btn-r:12px;
  /* dvh вторым объявлением — iOS Safari меряет 100vh по спрятанной адресной строке, и при
     появлении/скрытии строки во время скролла контейнер лишний раз дёргается (admin.css уже так делает). */
  position:relative;min-height:100vh;min-height:100dvh;overflow-x:hidden;
  background:var(--bg);color:var(--ink);
  font:400 16px/1.55 var(--f-text);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;
}
.gm *,.gm *::before,.gm *::after{box-sizing:border-box}
.gm ::selection{background:var(--soft);color:var(--ink)}
/* :where — нулевая специфичность: базовые правила для ссылок и кнопок не должны перебивать классы компонентов (.gm-btn, .gm-langs button…);
   с «.gm button» цвет и шрифт кнопки записи всегда оказывались унаследованными, а не заданными — текст тёмный по тёмному, вес и кегль не те */
:where(.gm) a{color:inherit}
:where(.gm) button{font:inherit;color:inherit}

/* ---------- заготовки: типографика ---------- */
.gm[data-tpl=bistro]{--t-size:clamp(38px,calc(var(--vw,1vw)*10.5),52px);--t-w:700;--t-ls:-.018em;--t-lh:1.02;--c-size:12.5px;--c-w:600;--c-ls:.24em;--n-size:18px;--n-w:600;--d-size:15px;--p-size:18px;--p-w:600;--btn-r:2px;--gap-s:46px}
.gm[data-tpl=noir]{--t-size:clamp(42px,calc(var(--vw,1vw)*12),60px);--t-w:600;--t-ls:-.012em;--t-lh:.98;--c-size:11.5px;--c-w:600;--c-ls:.3em;--n-size:17.5px;--n-w:500;--d-size:14.5px;--p-size:17px;--p-w:600;--btn-r:2px;--gap-i:17px;--gap-s:52px}
.gm[data-tpl=fresh]{--t-size:clamp(31px,calc(var(--vw,1vw)*8.8),40px);--t-w:700;--t-ls:-.01em;--t-lh:1.1;--c-size:14px;--c-w:700;--c-ls:.01em;--n-size:17px;--n-w:700;--d-size:14.5px;--p-size:15px;--p-w:800;--btn-r:999px;--f-cat:var(--f-display)}
.gm[data-tpl=street]{--t-size:clamp(50px,calc(var(--vw,1vw)*15),76px);--t-w:700;--t-ls:.004em;--t-lh:.9;--t-case:uppercase;--c-size:21px;--c-w:600;--c-ls:.05em;--n-size:18px;--n-w:700;--d-size:14.5px;--p-size:25px;--p-w:700;--btn-r:0;--f-cat:var(--f-display);--f-price:var(--f-display)}
.gm[data-tpl=supra]{--t-size:clamp(34px,calc(var(--vw,1vw)*9.6),48px);--t-w:400;--t-ls:.012em;--t-lh:1.08;--c-size:14px;--c-w:400;--c-ls:.2em;--n-size:18px;--n-w:600;--d-size:15px;--p-size:18px;--p-w:600;--btn-r:0;--f-cat:var(--f-display);--gap-s:46px}
.gm[data-density=airy]{--gap-i:18px;--gap-s:52px}
.gm[data-density=dense]{--gap-i:10px;--gap-s:30px}

/* ---------- бумага и свет ---------- */
.gm[data-grain="1"]::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.09;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .28 0 0 0 0 .2 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.gm[data-tpl=noir]::after{
  content:"";position:absolute;inset:0 0 auto 0;height:420px;pointer-events:none;z-index:0;
  background:radial-gradient(90% 100% at 50% 0%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%);
}
.gm-in{position:relative;z-index:1;max-width:var(--w);margin:0 auto;padding:0 var(--pad) 128px}

/* ---------- шапка ---------- */
.gm-hd{position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:calc(var(--pad)*1.7) 0 var(--gap-s);text-align:left}
.gm[data-head=center] .gm-hd,.gm[data-head=framed] .gm-hd{align-items:center}
.gm-hd>*{order:5}
.gm-hd>.gm-mark{order:0}.gm-hd>.gm-title{order:1}
.gm[data-head=left] .gm-hd>.gm-orn{order:2}
.gm-hd>.gm-tag{order:3}.gm-hd>.gm-note{order:4}
.gm[data-head=center] .gm-hd>.gm-orn,.gm[data-head=framed] .gm-hd>.gm-orn,.gm[data-head=block] .gm-hd>.gm-orn{order:5}
.gm-hd>.gm-open{order:6}.gm-hd>.gm-langs{order:7}
.gm[data-head=center] .gm-hd,.gm[data-head=framed] .gm-hd{text-align:center}
.gm-mark{
  width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin:0 0 20px;
  font:600 21px/1 var(--f-display);letter-spacing:.02em;color:var(--accent-t);border:1.5px solid var(--accent);
  font-variant-numeric:lining-nums;
}
.gm[data-head=center] .gm-mark,.gm[data-head=framed] .gm-mark{margin-left:auto;margin-right:auto}
.gm-title{
  margin:0;font-family:var(--f-display);font-weight:var(--t-w);font-size:var(--t-size);line-height:var(--t-lh);
  letter-spacing:var(--t-ls);text-transform:var(--t-case);text-wrap:balance;overflow-wrap:anywhere;hyphens:auto;
  font-variant-numeric:lining-nums;
}
html[lang=ka] .gm-title{letter-spacing:0;text-transform:none;line-height:1.14}
.gm-tag{margin:14px 0 0;font:500 13.5px/1.5 var(--f-text);color:var(--ink2);letter-spacing:.04em}
.gm[data-caps="1"] .gm-tag{text-transform:uppercase;letter-spacing:.14em;font-size:12px}
html[lang=ka] .gm[data-caps="1"] .gm-tag,html[lang=ka] .gm-tag{text-transform:none;letter-spacing:.02em;font-size:13.5px}
.gm-note{margin:10px 0 0;font:400 14.5px/1.5 var(--f-text);color:var(--ink2);font-style:italic;max-width:46ch}
/* В грузинском письме курсива нет: браузер наклоняет прямые буквы, и выходит «кривой» шрифт */
html[lang=ka] .gm-note,html[lang=ka] .gm[data-it="1"] .gm-d{font-style:normal}
.gm[data-head=center] .gm-note,.gm[data-head=framed] .gm-note{margin-left:auto;margin-right:auto}
.gm-open{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font:500 13.5px/1 var(--f-text);color:var(--ink2)}
.gm-open::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ink3)}
.gm-open.on::before{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}
.gm-langs{display:inline-flex;gap:2px;margin-top:20px}
.gm[data-head=center] .gm-langs,.gm[data-head=framed] .gm-langs{display:flex;justify-content:center}
.gm-langs button{
  border:1px solid transparent;background:none;cursor:pointer;min-height:44px;min-width:44px;padding:0 12px;border-radius:calc(var(--r) + 2px);
  font:600 12.5px/1 var(--f-text);letter-spacing:.06em;color:var(--ink3);
}
.gm-langs button[aria-pressed=true]{color:var(--ink);border-color:var(--line);background:var(--card)}
.gm-langs button:hover{color:var(--ink)}

/* украшения */
.gm-orn{display:none;height:14px;width:132px;margin:22px 0 0;background:var(--accent);opacity:.95;
  -webkit-mask:var(--orn) center/contain no-repeat;mask:var(--orn) center/contain no-repeat}
.gm[data-head=center] .gm-orn,.gm[data-head=framed] .gm-orn{margin-left:auto;margin-right:auto}
.gm[data-head=left] .gm-orn{margin:20px 0 4px}
.gm:not([data-orn=none]) .gm-orn{display:block}
.gm[data-orn=diamond]{--orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 14'%3E%3Cpath d='M0 7H52M80 7H132' stroke='%23000' stroke-width='1'/%3E%3Cpath d='M66 1.5 71.5 7 66 12.5 60.5 7z' fill='%23000'/%3E%3C/svg%3E")}
.gm[data-orn=dots]{--orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 14'%3E%3Ccircle cx='54' cy='7' r='2'/%3E%3Ccircle cx='66' cy='7' r='2'/%3E%3Ccircle cx='78' cy='7' r='2'/%3E%3C/svg%3E")}
.gm[data-orn=bar]{--orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Crect x='0' y='6' width='46' height='2'/%3E%3C/svg%3E")}
.gm[data-orn=bar] .gm-orn{width:46px}
.gm[data-orn=cross] .gm-orn{width:176px;height:22px}
.gm[data-orn=vine] .gm-orn{width:150px;height:22px}
.gm[data-orn=cross]{--orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 22'%3E%3Cpath d='M0 11H49M83 11H132' stroke='%23000' stroke-width='1'/%3E%3Cg fill='%23000'%3E%3Cpath id='a' d='M64 9.4 62.9 5.4 60.9 1.4H71.1L69.1 5.4 68 9.4z'/%3E%3Cpath d='M64 9.4 62.9 5.4 60.9 1.4H71.1L69.1 5.4 68 9.4z' transform='rotate(90 66 11)'/%3E%3Cpath d='M64 9.4 62.9 5.4 60.9 1.4H71.1L69.1 5.4 68 9.4z' transform='rotate(180 66 11)'/%3E%3Cpath d='M64 9.4 62.9 5.4 60.9 1.4H71.1L69.1 5.4 68 9.4z' transform='rotate(270 66 11)'/%3E%3C/g%3E%3C/svg%3E")}
.gm[data-orn=vine]{--orn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 20'%3E%3Cpath d='M0 10C11 10 15 4 24 4S37 16 46 16 55 10 66 10 77 16 86 16 95 4 108 4 121 10 132 10' fill='none' stroke='%23000' stroke-width='1.2'/%3E%3Cg fill='%23000'%3E%3Cpath d='M30 4C32 0 37 0 39 2 37 5 33 6 30 4z'/%3E%3Cpath d='M52 16C54 20 59 20 61 18 59 15 55 14 52 16z'/%3E%3Cpath d='M71 16C73 20 78 20 80 18 78 15 74 14 71 16z'/%3E%3Cpath d='M93 4C95 0 100 0 102 2 100 5 96 6 93 4z'/%3E%3Ccircle cx='66' cy='10' r='2'/%3E%3C/g%3E%3C/svg%3E")}

/* «блок»: цветная шапка с мягким низом, знак цепляется за её край */
.gm[data-head=block] .gm-hd{
  margin:0 calc(var(--pad)*-1) var(--gap-s);padding:40px var(--pad) 54px;overflow:hidden;
  background:var(--fill);color:var(--on-fill);border-radius:0 0 calc(var(--r)*2.4) calc(var(--r)*2.4);
}
.gm[data-head=block] .gm-hd::before{content:"";position:absolute;right:-64px;top:-64px;width:220px;height:220px;border-radius:50%;
  background:rgba(255,255,255,.09);background:color-mix(in srgb,var(--on-fill) 9%,transparent);pointer-events:none}
.gm[data-head=block] .gm-hd::after{content:"";position:absolute;right:38px;bottom:-46px;width:96px;height:96px;border-radius:50%;
  background:rgba(255,255,255,.07);background:color-mix(in srgb,var(--on-fill) 7%,transparent);pointer-events:none}
.gm[data-head=block] .gm-title,.gm[data-head=block] .gm-tag,.gm[data-head=block] .gm-note,.gm[data-head=block] .gm-open{color:var(--on-fill)}
.gm[data-head=block] .gm-tag{opacity:.92}
.gm[data-head=block] .gm-mark{background:var(--bg);color:var(--accent-t);border-color:var(--bg);margin-bottom:22px}
/* color-mix есть не везде (Chrome < 111, Safari < 16.2): без запасного значения подпись неактивного языка на цветной шапке оставалась цветом текста страницы — тёмным по цветному */
.gm[data-head=block] .gm-langs button{color:var(--on-fill);color:color-mix(in srgb,var(--on-fill) 72%,transparent)}
.gm[data-head=block] .gm-langs button[aria-pressed=true]{color:var(--on-fill);background:rgba(128,128,128,.28);background:color-mix(in srgb,var(--on-fill) 16%,transparent);border-color:transparent}
.gm[data-head=block] .gm-orn{background:var(--on-fill)}
.gm[data-head=block] .gm-hd button:focus-visible{outline-color:var(--on-fill)}      /* кнопки языка стоят на заливке: кольцо цвета акцента там сливалось бы с фоном */
.gm[data-head=block] .gm-open::before{background:var(--on-fill);background:color-mix(in srgb,var(--on-fill) 60%,transparent)}
.gm[data-head=block] .gm-open.on::before{background:#7CF2A6;box-shadow:0 0 0 3px rgba(124,242,166,.25)}
/* «рамка»: двойная линия, как на обложке бумажного меню */
.gm[data-head=framed] .gm-hd{
  margin:var(--pad) 0 var(--gap-s);padding:38px 22px 32px;
  border:1px solid var(--accent);outline:1px solid var(--accent);outline-offset:5px;
}
.gm[data-head=framed] .gm-in{padding-top:6px}

/* ---------- переход по разделам ---------- */
.gm-jump{
  position:sticky;top:0;z-index:6;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;
  margin:0 calc(var(--pad)*-1) 4px;padding:0 calc(var(--pad) - 10px);
  background:var(--bg);background:color-mix(in srgb,var(--bg) 90%,transparent);
  -webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);
  border-bottom:1px solid var(--line2);
}
.gm-jump::-webkit-scrollbar{display:none}
.gm-jump a{
  flex:none;padding:15px 12px 13px;font:600 13.5px/1 var(--f-text);color:var(--ink2);text-decoration:none;
  border-bottom:2px solid transparent;letter-spacing:.01em;
}
.gm-jump a[aria-current=true]{color:var(--ink);border-bottom-color:var(--accent)}

/* ---------- разделы ---------- */
.gm-sec{padding-top:var(--gap-s);scroll-margin-top:52px}
.gm-sec:first-child{padding-top:0}
.gm-cat{
  margin:0 0 6px;font-family:var(--f-cat);font-weight:var(--c-w);font-size:var(--c-size);letter-spacing:var(--c-ls);
  color:var(--accent-t);line-height:1.2;text-wrap:balance;
}
.gm[data-caps="1"] .gm-cat{text-transform:uppercase}
html[lang=ka] .gm-cat{text-transform:none;letter-spacing:.06em;font-size:calc(var(--c-size) + 1.5px)}
.gm[data-cat=rule] .gm-cat{display:flex;align-items:center;gap:16px;justify-content:center;text-align:center;margin-bottom:10px}
.gm[data-cat=rule] .gm-cat::before,.gm[data-cat=rule] .gm-cat::after{content:"";flex:1;height:1px;background:var(--line);min-width:18px}
.gm[data-cat=caps] .gm-cat{padding-bottom:12px;margin-bottom:0;border-bottom:1px solid var(--line);position:relative}
.gm[data-cat=caps] .gm-cat::after{content:"";position:absolute;left:0;bottom:-1px;width:34px;height:2px;background:var(--accent)}
.gm[data-cat=pill] .gm-cat{display:inline-block;padding:8px 16px;margin-bottom:4px;background:var(--soft);border-radius:999px;color:var(--accent-t)}
.gm[data-cat=block] .gm-cat{
  margin:0 -8px 4px;padding:9px calc(var(--pad) - 4px) 7px;background:var(--ink);color:var(--bg);
  transform:rotate(-1deg);transform-origin:left center;
}
.gm[data-cat=plain] .gm-cat{color:var(--ink);font-size:calc(var(--c-size) + 5px);letter-spacing:0;text-transform:none;font-weight:700}

/* ---------- позиции ---------- */
.gm-list{list-style:none;margin:0;padding:0}
.gm-it{padding:var(--gap-i) 0;border-bottom:1px solid var(--line2)}
.gm-it:last-child{border-bottom:0}
.gm-row{display:flex;align-items:baseline;gap:10px}
.gm-n{min-width:0;font-family:var(--f-text);font-weight:var(--n-w);font-size:var(--n-size);line-height:1.32;color:var(--ink);overflow-wrap:anywhere}
.gm-u{margin-left:.55em;font-weight:400;font-size:.8em;color:var(--ink3);white-space:nowrap}
.gm-lead{display:none;flex:1 1 18px;min-width:14px;height:5px;align-self:flex-end;margin-bottom:.42em;
  background:radial-gradient(circle,var(--ink3) 1.1px,transparent 1.5px) 0 50%/6px 5px repeat-x;opacity:.7}
.gm-p{
  margin-left:auto;flex:none;font-family:var(--f-price);font-weight:var(--p-w);font-size:var(--p-size);line-height:1.1;
  font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum","tnum";color:var(--accent-t);white-space:nowrap;
}
.gm-p.req{font-weight:500;font-size:.84em;color:var(--ink3);font-family:var(--f-text)}
.gm-d{margin:4px 0 0;max-width:46ch;font:400 var(--d-size)/1.45 var(--f-text);color:var(--ink2)}
.gm[data-it="1"] .gm-d{font-style:italic}
.gm[data-price=leader] .gm-lead{display:block}
.gm[data-price=leader] .gm-it{border-bottom:0}
.gm[data-price=leader] .gm-p{margin-left:0}
.gm[data-price=pill] .gm-p{padding:.34em .78em;background:var(--soft);border-radius:999px;font-size:calc(var(--p-size) - 1px)}
.gm[data-price=pill] .gm-p.req{background:transparent;padding:0}
.gm[data-tpl=street] .gm-it{border-bottom:2px solid var(--ink)}
.gm[data-tpl=street] .gm-it:last-child{border-bottom:0}
.gm[data-tpl=street] .gm-p{color:var(--ink)}
.gm[data-tpl=street] .gm-n{text-transform:none}

/* ---------- контакты ---------- */
.gm-ft{margin-top:var(--gap-s);padding-top:26px;border-top:1px solid var(--line);display:grid;gap:4px}
.gm[data-head=center] .gm-ft,.gm[data-head=framed] .gm-ft{border-top:0;padding-top:6px}
.gm[data-head=center] .gm-ft::before,.gm[data-head=framed] .gm-ft::before{content:"";display:block;height:14px;width:132px;margin:0 auto 22px;background:var(--accent);opacity:.9;
  -webkit-mask:var(--orn) center/contain no-repeat;mask:var(--orn) center/contain no-repeat}
.gm[data-orn=none] .gm-ft::before{display:none!important}
.gm-ft a,.gm-ft .gm-ln{display:flex;gap:14px;align-items:flex-start;padding:10px 0;min-height:44px;font:500 15.5px/1.4 var(--f-text);color:var(--ink);text-decoration:none}
.gm-ft a:hover .gm-lv{text-decoration:underline;text-underline-offset:3px}
.gm-ft svg{flex:none;width:21px;height:21px;margin-top:1px;fill:none;stroke:var(--accent-t);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gm-lv small{display:block;margin-top:2px;font-weight:400;font-size:13px;color:var(--ink3)}
/* ---------- подпись Gahide и приглашение для владельцев (внизу, после контактов) ---------- */
.gm-promo{margin:34px 0 0;padding:22px 4px 6px;border-top:1px solid var(--line);text-align:center;color:var(--ink2)}
.gm-pm-h{margin:0;display:flex;align-items:center;justify-content:center;gap:8px;font:600 13px/1.3 var(--f-text);color:var(--ink)}
.gm-pm-mark{display:inline-flex;flex:none;color:var(--accent-t)}
.gm-pm-mark svg{width:18px;height:18px;fill:currentColor;stroke:none}
.gm-pm-t{margin:6px auto 0;max-width:30em;font:400 13.5px/1.5 var(--f-text);color:var(--ink2);text-wrap:balance}
.gm-pm-act{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;justify-content:center}
.gm-pm-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border:1.5px solid var(--ink);border-radius:var(--btn-r);
  font:600 14px/1 var(--f-text);color:var(--ink);text-decoration:none}
.gm-pm-btn:hover{background:var(--soft)}
.gm-pm-ln{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;font:500 13.5px/1.3 var(--f-text);color:var(--accent-t);text-decoration:underline;text-underline-offset:3px}
.gm-pm-btn:focus-visible,.gm-pm-ln:focus-visible{outline:2px solid var(--accent-t);outline-offset:3px}

/* ---------- кнопка записи ---------- */
.gm-cta{position:sticky;bottom:0;z-index:8;padding:14px var(--pad) max(14px,env(safe-area-inset-bottom));
  background:linear-gradient(to top,var(--bg) 68%,transparent)}
.gm-cta>div{max-width:var(--w);margin:0 auto}
.gm-btn{
  display:flex;align-items:center;justify-content:center;width:100%;min-height:54px;padding:0 20px;border:0;cursor:pointer;
  background:var(--fill);color:var(--on-fill);border-radius:var(--btn-r);
  font:700 15.5px/1 var(--f-text);letter-spacing:.02em;text-decoration:none;
  box-shadow:0 10px 26px -14px color-mix(in srgb,var(--fill) 80%,transparent);
}
.gm[data-tpl=bistro] .gm-btn,.gm[data-tpl=supra] .gm-btn{letter-spacing:.14em;font-size:12.5px;text-transform:uppercase;box-shadow:inset 0 0 0 3px var(--fill),inset 0 0 0 4px var(--on-fill);border:0}
html[lang=ka] .gm .gm-btn{text-transform:none;letter-spacing:.02em;font-size:15.5px}
.gm[data-tpl=noir] .gm-btn{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.gm[data-tpl=street] .gm-btn{box-shadow:5px 5px 0 var(--ink);font-family:var(--f-display);font-size:19px;letter-spacing:.04em;text-transform:uppercase;border:3px solid var(--ink)}
html[lang=ka] .gm[data-tpl=street] .gm-btn{font-family:var(--f-text);font-size:15.5px}
.gm-btn:active{transform:translateY(1px)}
.gm-btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.gm-btn:disabled{opacity:.5}

/* ---------- окно заявки ---------- */
.gm dialog{
  border:0;padding:0;width:calc(100% - 32px);max-width:420px;border-radius:calc(var(--r) + 8px);
  background:var(--bg);color:var(--ink);box-shadow:0 30px 80px -24px rgba(0,0,0,.55),0 0 0 1px var(--line);
}
.gm dialog::backdrop{background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
/* Браузер без <dialog> (iOS Safari до 15.4) считает его неизвестным тегом и показывает всегда — форма заявки торчала бы под меню. Закрытое прячем сами,
   открытое (menu.js ставит атрибут open) показываем блоком; там, где <dialog> есть, это то же самое, что и его собственные правила. */
.gm dialog:not([open]){display:none}
.gm dialog[open]{display:block}
.gm-dl{padding:24px 22px 20px}
.gm-dl h2{margin:0 0 6px;font:var(--t-w) 22px/1.2 var(--f-display);letter-spacing:0;text-transform:none}
.gm-dl p{margin:0 0 16px;font:400 14.5px/1.5 var(--f-text);color:var(--ink2)}
.gm-f{display:block;margin:0 0 14px}
.gm-f span{display:block;margin-bottom:6px;font:600 12.5px/1 var(--f-text);color:var(--ink2);letter-spacing:.03em}
.gm-f input{width:100%;min-height:48px;padding:0 14px;border:1px solid var(--line);border-radius:calc(var(--r) + 2px);background:var(--card);color:var(--ink);font:400 16px var(--f-text)}
.gm-f input:focus{outline:2px solid var(--accent-t);outline-offset:1px;border-color:transparent}
.gm-row2{display:flex;gap:10px;margin-top:6px}
.gm-row2 .gm-btn{flex:1;min-height:50px}
.gm-msg{margin:10px 0 0;font:500 14px/1.4 var(--f-text);color:var(--ink2)}
.gm-msg.bad{color:var(--accent-t)}
.gm-dl .gm-fine{margin:14px 0 0;font-size:12.5px}
.gm-dl .gm-fine a{color:var(--ink3)}

/* ---------- прочее ---------- */
.gm-skel{height:14px;border-radius:7px;background:var(--line2);margin:16px 0}
.gm-toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom));z-index:60;max-width:min(92vw,420px);
  padding:11px 16px;border-radius:12px;background:var(--ink);color:var(--bg);font:500 14px/1.35 var(--f-text);text-align:center;box-shadow:0 8px 28px rgba(0,0,0,.25)}
.gm a:focus-visible,.gm button:focus-visible,.gm input:focus-visible{outline:2px solid var(--accent-t);outline-offset:3px;border-radius:4px}
.gm-fade{animation:gm-in .5s ease both}
@keyframes gm-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.gm *{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
@media(min-width:720px){
  .gm{--pad:32px}.gm-hd{padding-top:64px}
  .gm[data-head=block] .gm-hd{margin:28px 0 var(--gap-s);border-radius:calc(var(--r)*2.4)}
  .gm[data-head=framed] .gm-hd{margin-top:40px}
}
@media print{.gm-cta,.gm-jump,.gm-langs{display:none!important}.gm{min-height:0}.gm-in{padding-bottom:0}}

/* подсветка строки, которую владелец правит в редакторе: предпросмотр листает к ней и на секунду выделяет */
.gm-it.gm-pulse{animation:gm-pulse 1.3s ease}
@keyframes gm-pulse{0%,55%{background:color-mix(in srgb,var(--accent) 13%,transparent)}100%{background:transparent}}

/* образец в галерее стилей (редактор): шапка и три позиции на «телефонной» ширине 390px; уменьшает его внешний контейнер.
   Размеры заголовков считаются от --vw (1% ширины «экрана»): у образца это 3,9px, а не процент окна редактора. */
.gm.gm-sp{--vw:3.9px;--pad:22px;width:390px;min-height:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}
.gm.gm-sp .gm-fade{animation:none}
.gm.gm-sp .gm-in{padding-bottom:18px}
.gm.gm-sp .gm-hd{padding:calc(var(--pad)*1.7) 0 30px}
.gm.gm-sp[data-head=block] .gm-hd{margin:0 calc(var(--pad)*-1) 26px;padding:38px var(--pad) 46px;border-radius:0 0 calc(var(--r)*2.4) calc(var(--r)*2.4)}
.gm.gm-sp[data-head=framed] .gm-hd{margin:var(--pad) 0 26px}
.gm.gm-sp .gm-sec{padding-top:0}
