/*! ISHOD — конструктор сайтів ishod.studio. Код і шаблони — лише для сайтів на платформі ISHOD; копіювання й використання поза нею заборонено: https://ishod.studio/umovy/#p6 */
/* Блок «Меню з фото» (kind menu, templates/store/sections/menu.html): варіанти list / cards / magazine.
   Кольори, шрифти й кути — лише з теми сайту (--bg, --surface, --text, --muted, --accent, --radius, --font-head);
   фони — через currentColor, тож блок однаково читається на світлій, м'якій, акцентній і темній схемі секції. */
.mn { --mn-line: color-mix(in srgb, currentColor 16%, transparent); --mn-tint: color-mix(in srgb, currentColor 5%, transparent);
  --mn-muted: color-mix(in srgb, currentColor 64%, transparent); --mn-thumb: clamp(60px, calc(80px * var(--k, 1)), 120px); }
.mn-list { list-style: none; margin: 0; padding: 0; }
.mn-sec { scroll-margin-top: 88px; }
.mn-sec + .mn-sec { margin-top: clamp(32px, 5vw, 56px); }
.mn-sec__t { font-family: var(--font-head); font-size: calc(clamp(1.15rem, 2.2vw, 1.4rem) * (0.8 + var(--k, 1) * 0.2)); margin: 0 0 6px;
  padding-bottom: 10px; border-bottom: 1px solid var(--mn-line); text-wrap: balance; }
.mn-sec__note { margin: 8px 0 0; color: var(--mn-muted); font-size: .92rem; max-width: 64ch; }
.mn-sec__t + .mn-list, .mn-sec__note + .mn-list { margin-top: 20px; }

/* навігація розділами: стрічка, що гортається пальцем, — лише всередині себе (сторінка вбік не їде) */
.mn-nav { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; margin: 0 0 clamp(24px, 4vw, 36px); padding: 2px 0;
  scroll-snap-type: x proximity; overscroll-behavior-x: contain; }
.mn-nav::-webkit-scrollbar { display: none; }
.mn-nav a { flex: none; scroll-snap-align: start; display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px;
  border-radius: var(--btn-radius, 999px); text-decoration: none; font-size: .92rem; font-weight: 500;
  background: var(--mn-tint); box-shadow: inset 0 0 0 1px var(--mn-line); color: inherit; }
.mn-nav a:hover { box-shadow: inset 0 0 0 1.5px currentColor; }
.sx--align-center .mn-nav { justify-content: safe center; }

/* --- страва: спільне ---------------------------------------------------------- */
.mn-dish { position: relative; display: grid; min-width: 0; }
.mn-dish__img { position: relative; display: block; overflow: hidden; background: var(--mn-tint); border-radius: calc(var(--radius, 14px) * .8); }
.mn-dish__img img { width: 100%; height: 100%; object-fit: cover; }
.mn-dish__main { min-width: 0; }
.mn-dish__name { margin: 0; font-family: var(--font-head); font-size: calc(1.04rem * (0.85 + var(--k, 1) * 0.15)); font-weight: 600;
  line-height: 1.3; letter-spacing: 0; overflow-wrap: anywhere; }
.mn-dish__name a { text-decoration: none; color: inherit; }
.mn-dish__name a:hover { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.mn-dish__desc { margin: 4px 0 0; color: var(--mn-muted); font-size: .9rem; line-height: 1.45; overflow-wrap: anywhere; }
.mn-dish__meta { margin: 4px 0 0; color: var(--mn-muted); font-size: .84rem; font-variant-numeric: tabular-nums; }
.mn-tag { display: inline-block; vertical-align: .12em; margin-left: .5em; padding: 2px 8px; border-radius: 999px; font: 600 .72rem/1.35 var(--font-body);
  letter-spacing: .01em; color: var(--accent-ink, var(--accent)); background: color-mix(in srgb, var(--accent) 14%, transparent); white-space: nowrap; }
.mn-dish__buy { display: flex; align-items: center; gap: 10px; }
.mn-dish__price { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; justify-content: flex-end; gap: 0 .45em;
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.mn-dish__price b { font-weight: 700; font-size: calc(1.02rem * (0.85 + var(--k, 1) * 0.15)); }
.mn-dish__price s { color: var(--mn-muted); font-size: .85em; }
.mn-dish__out { color: var(--mn-muted); font-size: .82rem; line-height: 1.25; text-align: right; }
.mn-dish__form { margin: 0; display: contents; }

/* кнопка «+»: 44 px — палець влучає; у «Журналі» з підписом */
.mn-add { flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: 44px; height: 44px; padding: 0;
  border: 0; border-radius: 999px; background: var(--accent); color: #fff; cursor: pointer; text-decoration: none; font: 600 .92rem var(--font-body);
  transition: transform .15s ease, filter .15s ease; }
.mn-add svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; }
.mn-add:hover { filter: brightness(1.08); }
.mn-add:active { transform: scale(.94); }
.mn-add:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.mn-add__t { display: none; }
.sx--scheme-accent .mn-add { background: #fff; color: var(--accent); }
.sx--scheme-accent .mn-tag, .sx--scheme-dark .mn-tag { color: inherit; background: color-mix(in srgb, currentColor 16%, transparent); }

/* заглушка без фото: «тарілка» з першою літерою в кольорах теми */
.mn-ph { position: absolute; inset: 0; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--accent) 10%, transparent) 0 34%, transparent 35%),
              linear-gradient(150deg, color-mix(in srgb, var(--accent) 22%, var(--mn-tint)), var(--mn-tint)); }
.mn-ph::before { content: ""; position: absolute; width: 62%; aspect-ratio: 1; border-radius: 50%;
  box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 34%, transparent); }
.mn-ph__l { position: relative; font: 600 clamp(1.3rem, calc(var(--mn-thumb) * .32), 3.2rem)/1 var(--font-head);
  color: color-mix(in srgb, var(--accent) 60%, currentColor); opacity: .7; }
.sx--scheme-accent .mn-ph { background: linear-gradient(150deg, rgba(255, 255, 255, .2), rgba(255, 255, 255, .08)); }
.sx--scheme-accent .mn-ph::before { box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .45); }
.sx--scheme-accent .mn-ph__l { color: #fff; }

/* немає в наявності: лишається на місці, тьмяніше */
.mn-dish--out .mn-dish__img { opacity: .5; filter: grayscale(.7); }
.mn-dish--out .mn-dish__name, .mn-dish--out .mn-dish__price b { opacity: .6; }
/* редактор: прихована страва й підказка «Змінити страву» */
.mn-dish--off { opacity: .45; filter: grayscale(1); }
.is-editing .mn-dish[data-pid] { cursor: pointer; }
.is-editing .mn-dish[data-pid]:hover .card__edit { opacity: 1; }
.is-editing .mn-dish[data-pid]:hover { outline: 2px solid #fffb44; outline-offset: 4px; box-shadow: 0 0 0 6px rgba(11, 11, 12, .55); border-radius: 6px; }
.mn--list .card__edit { right: 4px; bottom: 4px; padding: 5px 6px; font-size: 10px; }
.is-editing .mn-sec__t[data-cat-id] { cursor: pointer; }

/* --- list: мініатюра · назва з крапками до ціни · ціна й «+» праворуч ------------- */
.mn--list .mn-list { display: grid; gap: 22px clamp(32px, 5vw, 64px); }
.mn--list .mn-dish { grid-template-columns: var(--mn-thumb) minmax(0, 1fr) auto; column-gap: 14px; align-items: start; }
.mn--list .mn-dish__img { width: var(--mn-thumb); aspect-ratio: 1; }
.mn--list .mn-dish__main { display: grid; align-content: start; }
/* крапки від назви до ціни — як у паперовому меню */
.mn--list .mn-dish__name { display: flex; align-items: baseline; gap: 0 .4em; flex-wrap: wrap; }
.mn--list .mn-dish__name::after { content: ""; flex: 1 0 1.5em; align-self: flex-end; margin-bottom: .32em; border-bottom: 2px dotted var(--mn-line); }
.mn--list .mn-tag { margin-left: 0; }
.mn--list .mn-dish__buy { flex-direction: column; align-items: flex-end; gap: 8px; padding-top: 0; }
.mn--list .mn-dish__price { line-height: 1.3; }
@media (min-width: 900px) {
  .mn--list .mn-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* --- cards: велике фото зверху ----------------------------------------------------- */
.mn--cards .mn-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2.4vw, 28px); }
.mn--cards .mn-dish { grid-template-rows: auto 1fr auto; border-radius: var(--radius, 14px); background: var(--mn-tint);
  box-shadow: inset 0 0 0 1px var(--mn-line); overflow: hidden; }
.mn--cards .mn-dish__img { aspect-ratio: 4 / 3; border-radius: 0; }
.mn--cards .mn-dish__img img { transition: transform .5s ease; }
.mn--cards .mn-dish:hover .mn-dish__img img { transform: scale(1.03); }
.mn--cards .mn-dish__main { padding: 14px 16px 0; }
.mn--cards .mn-dish__desc { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.mn--cards .mn-dish__buy { justify-content: space-between; padding: 12px 12px 12px 16px; }
.mn--cards .mn-dish__price { justify-content: flex-start; }
.mn--cards .mn-dish__out { text-align: left; }
.mn--cards .mn-tag { position: absolute; top: 12px; left: 12px; margin: 0; background: var(--bg); color: var(--text);
  box-shadow: 0 1px 2px rgba(0, 0, 0, .12); }
.mn--cards .mn-dish__name .mn-tag { z-index: 1; }
.mn--cards .mn-ph__l { font-size: clamp(2.4rem, 6vw, 4rem); }
@media (max-width: 899px) { .mn--cards .mn-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 559px) {
  .mn--cards .mn-list { gap: 12px; }
  .mn--cards .mn-dish__main { padding: 10px 12px 0; }
  .mn--cards .mn-dish__name { font-size: .98rem; }
  .mn--cards .mn-dish__desc { font-size: .84rem; -webkit-line-clamp: 2; }
  .mn--cards .mn-dish__buy { padding: 8px 8px 8px 12px; gap: 6px; }
  .mn--cards .mn-dish__price { flex-direction: column; align-items: flex-start; gap: 0; }
}
@media (max-width: 349px) { .mn--cards .mn-list { grid-template-columns: minmax(0, 1fr); } }

/* --- magazine: велике фото й текст, сторони по черзі ----------------------------------- */
.mn--magazine .mn-list { display: grid; gap: clamp(36px, 6vw, 72px); }
.mn--magazine .mn-dish { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); grid-template-rows: 1fr auto 1fr;
  column-gap: clamp(28px, 5vw, 72px); align-items: center; }
.mn--magazine .mn-dish__img { grid-row: 1 / 4; aspect-ratio: 5 / 4; border-radius: calc(var(--radius, 14px) * 1.2); }
.mn--magazine .mn-dish__main { grid-column: 2; grid-row: 1; align-self: end; }
.mn--magazine .mn-dish__buy { grid-column: 2; grid-row: 2; justify-content: flex-start; gap: 18px; margin-top: 20px; align-self: start; }
.mn--magazine .mn-list > .mn-dish:nth-child(even) { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
.mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__img { grid-column: 2; }
.mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__main,
.mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__buy { grid-column: 1; }
.mn--magazine .mn-dish__name { font-size: calc(clamp(1.45rem, 3vw, 2.1rem) * (0.8 + var(--k, 1) * 0.2)); font-weight: 700; line-height: 1.15;
  letter-spacing: -.01em; text-wrap: balance; }
.mn--magazine .mn-tag { vertical-align: .35em; font-size: .78rem; }
.mn--magazine .mn-dish__desc { margin-top: 12px; font-size: 1rem; line-height: 1.6; max-width: 46ch; }
.mn--magazine .mn-dish__meta { margin-top: 8px; font-size: .9rem; }
.mn--magazine .mn-dish__price { justify-content: flex-start; }
.mn--magazine .mn-dish__price b { font-size: calc(1.35rem * (0.85 + var(--k, 1) * 0.15)); }
.mn--magazine .mn-add { width: auto; padding: 0 20px 0 16px; border-radius: var(--btn-radius, 999px); }
.mn--magazine .mn-add__t { display: inline; }
.mn--magazine .mn-dish__out { text-align: left; }
.mn--magazine .mn-ph__l { font-size: clamp(3rem, 9vw, 6rem); }
@media (max-width: 759px) {
  .mn--magazine .mn-dish, .mn--magazine .mn-list > .mn-dish:nth-child(even) { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
  .mn--magazine .mn-dish__img, .mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__img { grid-column: 1; grid-row: auto; aspect-ratio: 4 / 3; margin-bottom: 16px; }
  .mn--magazine .mn-dish__main, .mn--magazine .mn-dish__buy,
  .mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__main,
  .mn--magazine .mn-list > .mn-dish:nth-child(even) .mn-dish__buy { grid-column: 1; grid-row: auto; }
  .mn--magazine .mn-dish__buy { margin-top: 14px; }
  .mn--magazine .mn-dish__desc { font-size: .95rem; }
}

/* по центру (стиль секції): заголовки розділів по центру, самі страви — як були, читати рядки зліва легше */
.sx--align-center .mn-sec__t, .sx--align-center .mn-sec__note { text-align: center; margin-left: auto; margin-right: auto; }
.sx--align-center .mn-dish { text-align: left; }

@media (prefers-reduced-motion: reduce) {
  .mn-add, .mn--cards .mn-dish__img img { transition: none; }
  .mn--cards .mn-dish:hover .mn-dish__img img { transform: none; }
  .mn-add:active { transform: none; }
}

/* --- Блок «Страви з фото» (kind dishes, templates/store/sections/dishes.html) ----------------------------------
   carte — як друкована карта шефа: велика назва ліворуч, опис праворуч, тонкі лінії; фото страви з'являється біля
   курсора (js/store-chrome.js, .ds-float). rows — мініатюра завжди видна. На телефоні й без миші — мініатюра
   праворуч, дотик розгортає фото на всю ширину рядка. */
.ds { --ds-line: color-mix(in srgb, currentColor 16%, transparent); --ds-muted: color-mix(in srgb, currentColor 70%, transparent);
  --ds-tint: color-mix(in srgb, currentColor 6%, transparent);
  position: relative; list-style: none; margin: 0; padding: 0; }
.ds-note { margin: 0 0 clamp(20px, 3vw, 32px); max-width: 62ch; color: color-mix(in srgb, currentColor 72%, transparent); }
.ds-note:empty:not([data-ed]) { display: none; }
.ds-row { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "main thumb" "price thumb";
  column-gap: 16px; align-items: start; padding: clamp(16px, 2.4vw, 28px) 0; }
.ds-row + .ds-row { border-top: 1px solid var(--ds-line); }
.ds-row__main { grid-area: main; min-width: 0; }
.ds-name { margin: 0; font-family: var(--font-head); font-size: calc(clamp(1.2rem, 2vw, 1.6rem) * (0.85 + var(--k, 1) * 0.15));
  line-height: 1.15; overflow-wrap: anywhere; text-wrap: balance; }
.ds-text { margin: 6px 0 0; color: var(--ds-muted); line-height: 1.5; overflow-wrap: anywhere; max-width: 64ch; }
.ds-price { grid-area: price; margin: 8px 0 0; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ds-price:empty:not([data-ed]) { display: none; }
.ds-thumb { grid-area: thumb; position: relative; display: block; width: 76px; aspect-ratio: 1; padding: 0; border: 0; overflow: hidden;
  border-radius: calc(var(--radius, 14px) * .8); background: var(--ds-tint); cursor: zoom-in; color: inherit;
  transition: width .28s ease, aspect-ratio .28s ease; }
.ds-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ds-thumb:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.ds-thumb--empty { display: grid; place-items: center; font-size: .78rem; color: var(--ds-muted); cursor: default;
  box-shadow: inset 0 0 0 1px var(--ds-line); }
/* розгорнуте фото (дотик по мініатюрі): на всю ширину над назвою */
.ds-row.is-open { grid-template-areas: "thumb thumb" "main main" "price price"; }
.ds-row.is-open .ds-thumb { width: 100%; aspect-ratio: 4 / 3; margin-bottom: 14px; cursor: zoom-out; }

/* rows на комп'ютері: мініатюра ліворуч, ціна праворуч */
@media (min-width: 761px) {
  .ds--rows .ds-row { grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "thumb main price"; column-gap: clamp(16px, 2.4vw, 28px); }
  .ds--rows .ds-thumb { width: clamp(88px, 9vw, 120px); }
  .ds--rows .ds-price { margin: 0; }
  .ds--rows .ds-row.is-open { grid-template-areas: "thumb main price"; }
  .ds--rows .ds-row.is-open .ds-thumb { width: clamp(220px, 26vw, 360px); aspect-ratio: 4 / 3; margin: 0; }

  /* carte: назва ліворуч великим шрифтом, опис праворуч, ціна в кінці рядка */
  .ds--carte .ds-row { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr) auto; grid-template-areas: "name text price";
    column-gap: clamp(24px, 4vw, 64px); padding: clamp(24px, 3vw, 40px) 0; }
  .ds--carte .ds-row__main { display: contents; }
  .ds--carte .ds-name { grid-area: name; font-size: calc(clamp(1.6rem, 2.7vw, 2.6rem) * (0.85 + var(--k, 1) * 0.15)); font-weight: 400;
    line-height: 1.08; transition: transform .35s ease; }
  .ds--carte .ds-text { grid-area: text; margin: .45em 0 0; font-size: 1.04rem; }
  .ds--carte .ds-price { grid-area: price; margin: .45em 0 0; }
  .ds--carte .ds-thumb { grid-area: thumb; }
  .ds--carte .ds-row.is-open { grid-template-areas: "name text price" "thumb thumb thumb"; }
  .ds--carte .ds-row.is-open .ds-thumb { width: min(100%, 520px); margin: 20px 0 0; }
}
/* carte з мишею: мініатюр немає — фото страви пливе за курсором; назва під курсором ледь відсувається */
@media (min-width: 761px) and (hover: hover) and (pointer: fine) {
  .ds--carte .ds-thumb { display: none; }
  .ds--carte .ds-row--ph { cursor: default; }
  .ds--carte .ds-row:hover .ds-name { transform: translateX(10px); }
}
.ds-float { position: fixed; left: 0; top: 0; z-index: 30; width: clamp(200px, 17vw, 280px); aspect-ratio: 4 / 5; pointer-events: none;
  overflow: hidden; border-radius: calc(var(--radius, 14px) * .8); background: var(--ds-tint);
  box-shadow: 0 18px 50px -18px rgba(0, 0, 0, .45); opacity: 0; translate: var(--x, 0) var(--y, 0); transform: scale(.9) rotate(-3deg);
  transition: opacity .22s ease, transform .22s ease; }
.ds-float.is-on { opacity: 1; transform: scale(1) rotate(-1.5deg); }
.ds-float img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (prefers-reduced-motion: reduce) {
  .ds-thumb, .ds-float, .ds--carte .ds-name { transition: none; }
  .ds--carte .ds-row:hover .ds-name { transform: none; }
}
/* заголовок «Карти» — більший за назви страв, інакше ієрархія перевертається */
.sx--dishes.sx--v-carte .sx-head h2 { font-size: calc(clamp(1.9rem, 3.6vw, 3.2rem) * (0.85 + var(--k, 1) * 0.15)); line-height: 1.05; font-weight: 400; }
