/* ==========================================================================
   Brigit — hlavní stránka
   ========================================================================== */

.section { padding-block: clamp(80px, 12vw, 160px); position: relative; }
.sec-head { display: grid; gap: 18px; margin-bottom: clamp(40px, 6vw, 72px); max-width: 760px; }
.sec-head.center { margin-inline: auto; text-align: center; justify-items: center; }
.sec-head.center .lead { margin-inline: auto; }

/* ---------- reveal animace ---------- */
.reveal { opacity: 0; transform: translateY(26px); filter: blur(6px); transition: opacity 1.1s var(--ease), transform 1.1s var(--ease), filter 1.1s var(--ease); transition-delay: var(--d, 0s); }
.reveal.in { opacity: 1; transform: none; filter: none; }
.no-js .reveal { opacity: 1; transform: none; filter: none; }

/* ---------- navigace ---------- */
.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  padding-top: env(safe-area-inset-top, 0px);
  transition: background-color .5s var(--ease), border-color .5s, backdrop-filter .5s;
  border-bottom: 1px solid transparent;
}
.nav::before { content: ''; position: absolute; inset: 0; z-index: -2; opacity: 0; background: color-mix(in srgb, var(--bg) 78%, transparent); backdrop-filter: blur(18px) saturate(1.3); -webkit-backdrop-filter: blur(18px) saturate(1.3); transition: opacity .5s var(--ease); }
.nav.scrolled { border-color: var(--line); }
.nav.scrolled::before { opacity: 1; }
.nav-in { display: flex; align-items: center; justify-content: space-between; height: 84px; gap: 24px; transition: height .5s var(--ease); }
.nav.scrolled .nav-in { height: 68px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; }

.brand-text { display: grid; line-height: 1; }
.brand-text small { font: 400 .72rem/1 var(--f-display); letter-spacing: .28em; color: var(--ink-2); margin-bottom: 3px; }
.brand-text b { font: 500 1.35rem/1 var(--f-display); letter-spacing: .14em; text-transform: uppercase; background: var(--gilt); -webkit-background-clip: text; background-clip: text; color: transparent; }
.nav-links { display: flex; gap: clamp(16px, 2.4vw, 36px); }
.nav-links a {
  position: relative;
  text-decoration: none;
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-2);
  padding-block: 6px;
  transition: color .3s;
}
.nav-links a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--gold); transform: scaleX(0); transform-origin: right; transition: transform .5s var(--ease); }
.nav-links a:hover, .nav-links a.active { color: var(--ink); }
.nav-links a:hover::after, .nav-links a.active::after { transform: scaleX(1); transform-origin: left; }
.nav-actions { display: flex; align-items: center; gap: 12px; }
.burger { display: none; width: 44px; height: 44px; border: 1px solid var(--line-strong); border-radius: 50%; background: none; cursor: pointer; position: relative; }
.burger span { position: absolute; left: 13px; right: 13px; height: 1px; background: var(--ink); transition: transform .5s var(--ease), top .5s var(--ease); }
.burger span:first-child { top: 18px; }
.burger span:last-child { top: 25px; }
.burger[aria-expanded="true"] span:first-child { top: 21px; transform: rotate(45deg); }
.burger[aria-expanded="true"] span:last-child { top: 21px; transform: rotate(-45deg); }

@media (max-width: 980px) {
  .burger { display: block; }
  .nav-cta { display: none; }
  .nav-links {
    position: fixed; inset: 0; z-index: -1;
    flex-direction: column; justify-content: center; align-items: center; gap: 22px;
    background: var(--bg);
    opacity: 0; pointer-events: none; visibility: hidden;
    transition: opacity .5s var(--ease), visibility 0s linear .5s;
  }
  .nav-links a { font: 400 2.2rem/1 var(--f-display); letter-spacing: 0; text-transform: none; color: var(--ink); opacity: 0; transform: translateY(12px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
  .nav-links.open { opacity: 1; pointer-events: auto; visibility: visible; transition: opacity .5s var(--ease), visibility 0s; }
  .nav-links.open a { opacity: 1; transform: none; }
  .nav-links.open a:nth-child(2) { transition-delay: .05s; } .nav-links.open a:nth-child(3) { transition-delay: .1s; }
  .nav-links.open a:nth-child(4) { transition-delay: .15s; } .nav-links.open a:nth-child(5) { transition-delay: .2s; } .nav-links.open a:nth-child(6) { transition-delay: .25s; }
}

/* ---------- hero ---------- */
.hero { min-height: 100svh; display: flex; align-items: center; padding-top: 120px; padding-bottom: 60px; }
.hero-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(32px, 6vw, 90px); align-items: center; }
.hero-copy { display: grid; gap: 28px; }
.hero h1 em { padding-right: .06em; }
.hero-cta { display: flex; flex-wrap: wrap; gap: 14px; }
.hero-stats { display: flex; flex-wrap: wrap; gap: clamp(22px, 4vw, 48px); margin: 12px 0 0; padding-top: 28px; border-top: 1px solid var(--line); }
.hero-stats div { display: grid; gap: 4px; }
.hero-stats dt { font: 400 2.2rem/1 var(--f-display); display: flex; align-items: baseline; gap: 4px; }
.hero-stats .star { color: var(--gold); font-size: 1.2rem; }
.hero-stats dd { margin: 0; font-size: .76rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
#nextFree { font-size: 1.55rem; min-height: 2.2rem; display: flex; align-items: flex-end; }

.hero-art { position: relative; aspect-ratio: 4 / 5; max-height: 78vh; justify-self: end; width: 100%; }
.arch { position: relative; overflow: hidden; border-radius: 999px 999px 3px 3px; background: var(--bg-2); }
.arch::after { content: ''; position: absolute; inset: 10px; border: 1px solid rgba(240, 220, 170, .55); border-radius: inherit; pointer-events: none; }
.arch img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 1.6s var(--ease); }
.arch:hover img { transform: scale(1.12); }
.arch-lg { position: absolute; right: 0; top: 0; width: 76%; height: 92%; box-shadow: var(--shadow); }
.arch-sm { position: absolute; left: 0; bottom: 0; width: 40%; height: 46%; box-shadow: var(--shadow); outline: 10px solid var(--bg); }
.arch-md { aspect-ratio: 3 / 4; width: min(100%, 360px); margin-top: 40px; }
.hero-seal { position: absolute; left: 22%; top: 8%; width: 120px; height: 120px; display: grid; place-items: center; color: var(--gold); }
.hero-seal svg { position: absolute; inset: 0; animation: spin 40s linear infinite; }
.hero-seal text { font: 600 6.3px var(--f-body); letter-spacing: .08em; fill: currentColor; }
.hero-seal .seal-fig { width: 58%; aspect-ratio: 501 / 109; }
.hero-seal { background: color-mix(in srgb, var(--bg) 70%, transparent); border-radius: 50%; backdrop-filter: blur(6px); }
@keyframes spin { to { transform: rotate(360deg); } }

@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-art { max-height: none; aspect-ratio: 1 / 1; max-width: 520px; justify-self: center; }
  .hero { padding-top: 100px; }
  .hero-seal { width: 92px; height: 92px; left: 12%; }
}

/* ---------- pás ---------- */
.ribbon { border-block: 1px solid var(--line); overflow: hidden; padding-block: 22px; background: color-mix(in srgb, var(--bg-2) 50%, transparent); }
.ribbon-track { display: flex; gap: 48px; width: max-content; animation: ribbon 60s linear infinite; font: italic 300 clamp(1.6rem, 3vw, 2.4rem)/1 var(--f-display); color: var(--ink-2); white-space: nowrap; }
.ribbon-track span { display: inline-flex; align-items: center; gap: 48px; }
.ribbon-track span::after { content: '✦'; font-style: normal; font-size: .7em; color: var(--gold); }
@keyframes ribbon { to { transform: translateX(-50%); } }

/* ---------- o studiu ---------- */
.about-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(40px, 7vw, 110px); align-items: center; }
.frame { position: relative; aspect-ratio: 4 / 5; overflow: hidden; }
.frame::before { content: ''; position: absolute; inset: -14px 14px 14px -14px; border: 1px solid var(--gold); z-index: -1; }
.frame img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.2) contrast(1.05); }
.about-img { position: relative; padding: 14px 0 0 14px; }
.about-copy { display: grid; gap: 26px; }
.pillars { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--line); }
.pillars li { padding: 20px 0 20px 34px; border-bottom: 1px solid var(--line); color: var(--ink-2); position: relative; }
.pillars li::before { content: ''; position: absolute; left: 4px; top: 29px; width: 8px; height: 8px; border: 1px solid var(--gold); transform: rotate(45deg); }
.pillars b { color: var(--ink); font-weight: 600; }
@media (max-width: 860px) { .about-grid { grid-template-columns: 1fr; } .about-img { max-width: 440px; } }

/* ---------- masáže ---------- */
.services { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(14px, 2vw, 24px); }
.svc {
  grid-column: span 4;
  position: relative;
  display: flex;
  flex-direction: column;
  text-align: left;
  border: 1px solid var(--line);
  background: var(--surface);
  backdrop-filter: blur(6px);
  cursor: pointer;
  overflow: hidden;
  padding: 0;
  transition: border-color .5s var(--ease), transform .7s var(--ease), box-shadow .7s var(--ease);
}
.svc.half { grid-column: span 6; }
.svc.wide { grid-column: span 12; flex-direction: row; }
.svc:hover { border-color: var(--gold); transform: translateY(-4px); box-shadow: var(--shadow); }
.svc-img { aspect-ratio: 16 / 10; overflow: hidden; position: relative; }
.svc.wide .svc-img { aspect-ratio: auto; width: 48%; min-height: 320px; }
.svc-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--ease), filter 1s; filter: saturate(.85); }
.svc:hover .svc-img img { transform: scale(1.06); filter: saturate(1); }
.svc-cat { position: absolute; left: 16px; top: 16px; padding: 7px 12px; background: color-mix(in srgb, var(--bg) 80%, transparent); backdrop-filter: blur(8px); font: 600 .62rem/1 var(--f-body); letter-spacing: .24em; text-transform: uppercase; color: var(--gold); }
.svc-body { padding: clamp(22px, 2.4vw, 32px); display: grid; gap: 12px; flex: 1; align-content: start; }
.svc.wide .svc-body { align-content: center; padding: clamp(28px, 4vw, 56px); }
.svc h3 { font-size: clamp(1.7rem, 2.6vw, 2.3rem); }
.svc.wide h3 { font-size: clamp(2.2rem, 4vw, 3.4rem); }
.svc p { margin: 0; color: var(--ink-2); }
.svc-foot { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: auto; padding-top: 16px; border-top: 1px solid var(--line); }
.svc-dur { font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.svc-price { font: 400 1.5rem/1 var(--f-display); color: var(--gold); }
.svc-price small { font: 500 .7rem var(--f-body); letter-spacing: .1em; color: var(--muted); margin-right: 4px; text-transform: uppercase; }
@media (max-width: 980px) { .svc, .svc.half { grid-column: span 6; } }
@media (max-width: 640px) {
  .svc, .svc.half { grid-column: span 12; }
  .svc.wide { flex-direction: column; }
  .svc.wide .svc-img { width: 100%; min-height: 0; aspect-ratio: 16 / 10; }
}

/* detail masáže (dialog) */
.sheet {
  width: min(760px, calc(100vw - 24px));
  max-height: calc(100svh - 40px);
  padding: 0;
  border: 1px solid var(--line-strong);
  background: var(--surface-solid);
  color: var(--ink);
  box-shadow: var(--shadow);
  overflow: auto;
}
.sheet[open] { animation: sheetIn .6s var(--ease); }
.sheet::backdrop { background: rgba(10, 8, 6, .55); backdrop-filter: blur(6px); animation: fade .5s var(--ease); }
@keyframes sheetIn { from { opacity: 0; transform: translateY(30px) scale(.98); } }
@keyframes fade { from { opacity: 0; } }
.sheet-img { aspect-ratio: 21 / 9; overflow: hidden; }
.sheet-img img { width: 100%; height: 100%; object-fit: cover; }
.sheet-body { padding: clamp(24px, 4vw, 44px); display: grid; gap: 20px; }
.sheet-close { position: absolute; right: 14px; top: 14px; width: 42px; height: 42px; border-radius: 50%; border: none; background: color-mix(in srgb, var(--bg) 80%, transparent); backdrop-filter: blur(8px); color: var(--ink); font-size: 1.4rem; cursor: pointer; }
.benefits { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 22px; padding: 0; margin: 0; }
.benefits li { display: flex; gap: 10px; align-items: center; color: var(--ink-2); font-size: .94rem; }
.benefits li::before { content: ''; width: 6px; height: 6px; border: 1px solid var(--gold); transform: rotate(45deg); }
.variants { display: grid; gap: 10px; }
.variant { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 18px; border: 1px solid var(--line-strong); background: transparent; cursor: pointer; transition: border-color .3s, background .3s; text-align: left; }
.variant:hover { border-color: var(--gold); background: var(--gold-soft); }
.variant b { font: 400 1.4rem/1 var(--f-display); color: var(--gold); }

/* ---------- průvodce ---------- */
.guide { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); padding: clamp(20px, 4vw, 56px); border: 1px solid var(--line); background: var(--surface); backdrop-filter: blur(8px); }
.guide-body { display: grid; justify-items: center; align-content: start; gap: 14px; }
.body-map { --muscle: #3b2a1e; --skin: #241810; width: 100%; max-width: 480px; height: auto; overflow: visible; user-select: none; -webkit-tap-highlight-color: transparent; }
:root:not([data-theme="dark"]) .body-map { --muscle: #eadcc8; --skin: #f7efe3; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .body-map { --muscle: #3b2a1e; --skin: #241810; } }
.body-map .sil-edge path { fill: var(--gold); stroke: var(--gold); stroke-width: 9.5; stroke-linejoin: round; opacity: .75; }
.body-map .sil path { fill: var(--skin); stroke: var(--skin); stroke-width: 7.5; stroke-linejoin: round; }
.body-map .deco path { fill: none; stroke: var(--gold); stroke-opacity: .35; stroke-width: .7; pointer-events: none; }
.body-map .fig-label { fill: var(--muted); font: 600 9px var(--f-body); letter-spacing: .3em; text-anchor: middle; }
.body-map .zone { cursor: pointer; outline: none; }
.body-map .zone path { fill: var(--muscle); stroke: var(--gold); stroke-opacity: .55; stroke-width: .8; stroke-linejoin: round; transition: fill .45s var(--ease), stroke-opacity .3s; }
.body-map .zone.hover path, .body-map .zone:focus-visible path { fill: color-mix(in srgb, var(--gold) 35%, var(--muscle)); stroke-opacity: 1; }
.body-map .zone.on path { fill: url(#gg); stroke-opacity: 1; }
.body-map .zone.on { filter: drop-shadow(0 0 8px rgba(226, 168, 101, .45)); }
.map-hint { font-size: .78rem; letter-spacing: .08em; color: var(--gold); text-align: center; margin: 0; min-height: 1.3em; }
.guide-q { display: grid; gap: 30px; align-content: start; }
.q { display: grid; gap: 14px; }
.q .label { margin: 0; }
.pressure { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line-strong); }
.pressure button { display: flex; align-items: center; justify-content: center; gap: 4px; min-height: 52px; border: none; background: transparent; cursor: pointer; font-size: .9rem; transition: background .4s var(--ease), color .4s; }
.pressure button + button { border-left: 1px solid var(--line-strong); }
.pressure i { width: 5px; height: 14px; background: currentColor; opacity: .45; margin-right: 1px; }
.pressure button i:last-of-type { margin-right: 10px; }
.pressure button[aria-checked="true"] { background: var(--gold-soft); color: var(--gold); }
.pressure button[aria-checked="true"] i { opacity: 1; }
.guide-result { border-top: 1px solid var(--line); padding-top: 26px; min-height: 140px; }
.rec { display: grid; grid-template-columns: 140px 1fr; gap: 22px; align-items: center; animation: recIn .8s var(--ease); }
@keyframes recIn { from { opacity: 0; transform: translateY(14px); } }
.rec-img { aspect-ratio: 3 / 4; overflow: hidden; border-radius: 999px 999px 2px 2px; }
.rec-img img { width: 100%; height: 100%; object-fit: cover; }
.rec-body { display: grid; gap: 10px; }
.rec-kicker { font: 600 .66rem/1 var(--f-body); letter-spacing: .26em; text-transform: uppercase; color: var(--gold); }
.rec h3 { font-size: clamp(1.8rem, 3vw, 2.5rem); }
.rec p { margin: 0; color: var(--ink-2); }
.rec-why { font-size: .88rem; color: var(--muted) !important; }
.rec-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 6px; }
.rec-alt { font-size: .88rem; color: var(--muted); }
.rec-alt button { background: none; border: none; color: var(--gold); cursor: pointer; padding: 0; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 820px) {
  .guide { grid-template-columns: 1fr; }
  .body-map { max-width: 420px; }
  .rec { grid-template-columns: 90px 1fr; }
}

/* ---------- ceník ---------- */
.pricing-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(40px, 7vw, 110px); }
.pricing-side { display: grid; gap: 22px; align-content: start; position: sticky; top: 100px; align-self: start; }
.menu { display: grid; gap: 44px; }
.menu-group h3 { font-size: 1rem; font-family: var(--f-body); font-weight: 600; letter-spacing: .28em; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }
.menu-item { padding: 18px 0; border-bottom: 1px solid var(--line); }
.menu-line { display: flex; align-items: baseline; gap: 10px; }
.menu-line .n { font: 400 1.55rem/1.15 var(--f-display); }
.menu-line .dots { flex: 1; border-bottom: 1px dotted var(--line-strong); transform: translateY(-6px); min-width: 20px; }
.menu-prices { display: flex; flex-wrap: wrap; gap: 6px 18px; justify-content: flex-end; }
.menu-prices span { white-space: nowrap; font-size: .95rem; }
.menu-prices small { color: var(--muted); margin-right: 6px; font-size: .78rem; letter-spacing: .06em; }
.menu-prices b { font: 500 1.25rem/1 var(--f-display); color: var(--gold); }
.menu-desc { margin: 6px 0 0; color: var(--muted); font-size: .9rem; }
.menu-item.pkg .n { font-style: italic; }
.menu-vars { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 6px; }
.menu-vars li { display: grid; grid-template-columns: 58px 1fr auto; gap: 12px; align-items: baseline; font-size: .92rem; color: var(--ink-2); }
.menu-vars .min { font: 500 .8rem var(--f-mono); color: var(--muted); }
.menu-vars b { font: 500 1.15rem/1 var(--f-display); color: var(--gold); white-space: nowrap; }
.menu-item .n { font-size: 1.35rem; }

/* předplatné */
.club { display: grid; gap: clamp(40px, 5vw, 64px); max-width: 1100px; margin-inline: auto; }
.club-group { display: grid; gap: 18px; align-content: start; }
.club-group > header { display: flex; align-items: baseline; gap: 6px 20px; flex-wrap: wrap; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.club-group > header h3 { font-size: 1.6rem; }
.club-group > header p { margin: 0; font-size: .88rem; color: var(--muted); }
.club-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 16px; }
.club-group.kind-club .club-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.club-group.kind-pack .club-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1000px) { .club-group.kind-pack .club-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .club-group.kind-club .club-row { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .club-group.kind-pack .club-row { grid-template-columns: 1fr; } }

.club-card { position: relative; display: flex; flex-direction: column; gap: 16px; padding: 30px 26px 26px; border: 1px solid var(--line-strong); background: var(--surface); backdrop-filter: blur(8px); transition: transform .6s var(--ease), border-color .4s, box-shadow .6s var(--ease); }
.club-card:hover { transform: translateY(-4px); border-color: var(--gold); box-shadow: var(--shadow); }
.cc-head { display: grid; gap: 6px; }
.club-type { font: 600 .62rem/1 var(--f-body); letter-spacing: .26em; text-transform: uppercase; color: var(--gold); }
.club-card h3 { font-size: 1.7rem; line-height: 1.1; }
.club-price { display: grid; gap: 2px; padding-top: 14px; border-top: 1px solid var(--line); }
.club-price b { font: 500 clamp(1.9rem, 3vw, 2.3rem)/1 var(--f-display); white-space: nowrap; background: var(--gilt); -webkit-background-clip: text; background-clip: text; color: transparent; }
.club-price span { color: var(--muted); font-size: .85rem; }
.club-save { align-self: flex-start; justify-self: start; padding: 5px 10px; border: 1px solid var(--gold); color: var(--gold); font: 600 .66rem/1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; }
.club-card ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 9px; font-size: .92rem; }
.club-card li { padding-left: 20px; position: relative; color: var(--ink-2); line-height: 1.45; }
.club-card li::before { content: '✦'; position: absolute; left: 0; color: var(--gold); font-size: .7rem; top: 4px; }
.club-card .btn { margin-top: auto; width: 100%; }
/* zvýrazněná karta v barvách tištěného poukazu */
.club-card.featured { border-color: transparent; color: #efe2cf; background: radial-gradient(ellipse 90% 80% at 60% 30%, #3a261a, #1d130d 60%, #140d09); box-shadow: 0 30px 60px -28px rgba(20, 10, 4, .7), inset 0 0 0 1px rgba(226, 168, 101, .55); }
.club-card.featured li { color: #d9c7b0; }
.club-card.featured .club-price { border-color: rgba(226, 168, 101, .25); }
.club-card.featured .club-price span { color: #b39b82; }
.club-card.featured .club-type, .club-card.featured .club-save { color: #e9b271; border-color: #e9b271; }
.club-card.featured::before { content: 'Nejoblíbenější'; position: absolute; top: -11px; right: 22px; padding: 5px 12px; background: var(--gilt); color: #24160d; font: 600 .6rem/1 var(--f-body); letter-spacing: .2em; text-transform: uppercase; }
.club-note { text-align: center; color: var(--muted); font-size: .88rem; margin-top: 26px; }
@media (max-width: 860px) {
  .pricing-grid { grid-template-columns: 1fr; }
  .pricing-side { position: static; }
  .arch-md { display: none; }
  .menu-line { flex-wrap: wrap; }
  .menu-line .dots { display: none; }
  .menu-prices { justify-content: flex-start; width: 100%; }
}

/* ---------- rezervace ---------- */
.booking { border: 1px solid var(--line); background: var(--surface); backdrop-filter: blur(10px); padding: clamp(20px, 3.4vw, 48px); }
.steps { list-style: none; display: flex; gap: 0; margin: 0 0 clamp(26px, 4vw, 44px); padding: 0; border-bottom: 1px solid var(--line); counter-reset: s; }
.steps li { flex: 1; display: flex; align-items: center; gap: 12px; padding: 0 0 18px; color: var(--muted); font-size: .82rem; letter-spacing: .14em; text-transform: uppercase; position: relative; transition: color .5s; }
.steps li span { font: 400 1.5rem/1 var(--f-display); letter-spacing: 0; }
.steps li::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: var(--gilt); transform: scaleX(0); transform-origin: left; transition: transform .8s var(--ease); }
.steps li.on, .steps li.done { color: var(--ink); }
.steps li.on span, .steps li.done span { color: var(--gold); }
.steps li.on::after, .steps li.done::after { transform: scaleX(1); }
.booking-grid { display: grid; grid-template-columns: 1fr 300px; gap: clamp(24px, 4vw, 56px); align-items: start; }
.pane { display: none; }
.pane.on { display: block; animation: paneIn .7s var(--ease); }
@keyframes paneIn { from { opacity: 0; transform: translateX(18px); } }
.pane-foot { display: flex; justify-content: space-between; gap: 12px; margin-top: 30px; flex-wrap: wrap; }
.pane-foot .btn.solid:only-child, .pane-foot .btn.solid:first-child:last-child { margin-left: auto; }

.pick-list { display: grid; gap: 10px; }
.pick { border: 1px solid var(--line); transition: border-color .4s, background .4s; }
.pick.on { border-color: var(--gold); background: var(--gold-soft); }
.pick-head { width: 100%; display: grid; grid-template-columns: 56px 1fr auto; gap: 16px; align-items: center; padding: 12px 16px 12px 12px; background: none; border: none; cursor: pointer; text-align: left; }
.pick-head img { width: 56px; height: 56px; object-fit: cover; border-radius: 999px 999px 2px 2px; }
.pick-head b { font: 400 1.35rem/1.1 var(--f-display); display: block; }
.pick-head small { color: var(--muted); font-size: .82rem; }
.pick-head .from { font: 400 1.1rem/1 var(--f-display); color: var(--gold); white-space: nowrap; }
.pick-vars { display: none; flex-wrap: wrap; gap: 8px; padding: 0 16px 16px 84px; }
.pick.on .pick-vars { display: flex; animation: fade .5s var(--ease); }
@media (max-width: 560px) { .pick-vars { padding-left: 16px; } .pick-head { grid-template-columns: 44px minmax(0, 1fr) auto; } .pick-head img { width: 44px; height: 44px; } }

.cal-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(20px, 3vw, 40px); }
.cal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.cal-head b { font: 400 1.6rem/1 var(--f-display); text-transform: capitalize; }
.cal-nav { width: 40px; height: 40px; border: 1px solid var(--line-strong); border-radius: 50%; background: none; cursor: pointer; transition: border-color .3s; }
.cal-nav:hover:not(:disabled) { border-color: var(--gold); }
.cal-nav:disabled { opacity: .3; cursor: default; }
.cal-dow, .cal-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.cal-dow span { font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); padding-bottom: 8px; }
.day { position: relative; aspect-ratio: 1; display: grid; place-items: center; border: 1px solid transparent; background: none; cursor: pointer; font-size: .95rem; transition: all .3s var(--ease); }
.day:disabled { color: var(--muted); opacity: .35; cursor: default; }
.day:not(:disabled):hover { border-color: var(--gold); }
.day::after { content: ''; position: absolute; bottom: 6px; width: 4px; height: 4px; border-radius: 50%; background: var(--gold); opacity: 0; }
.day.free::after { opacity: 1; }
.day.few::after { background: var(--danger); opacity: 1; }
.day.sel { background: var(--gilt); color: var(--on-gold); border-color: transparent; }
.day.sel::after { background: var(--on-gold); }
.day.today { font-weight: 700; }
.day.loading { animation: pulse 1.2s var(--ease-soft) infinite; }
@keyframes pulse { 50% { opacity: .4; } }
.cal-legend { display: flex; gap: 8px 18px; align-items: center; font-size: .78rem; color: var(--muted); margin: 14px 0 0; flex-wrap: wrap; }
.cal-legend .dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); margin-right: -10px; }
.cal-legend .dot.few { background: var(--danger); }
.slots .label { margin: 8px 0 18px; display: block; }
.slot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }
.slot { min-height: 46px; border: 1px solid var(--line-strong); background: transparent; cursor: pointer; font: 500 .95rem var(--f-mono); transition: all .3s var(--ease); animation: slotIn .5s var(--ease) backwards; }
.slot:hover { border-color: var(--gold); color: var(--gold); }
.slot.sel { background: var(--gilt); color: var(--on-gold); border-color: transparent; }
@keyframes slotIn { from { opacity: 0; transform: translateY(8px); } }
.slot-empty { color: var(--muted); font-size: .92rem; grid-column: 1 / -1; }
@media (max-width: 720px) { .cal-wrap { grid-template-columns: 1fr; } }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.span2 { grid-column: span 2; }
@media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } .span2 { grid-column: auto; } }
.voucher-apply { display: flex; gap: 8px; }
.voucher-apply .input { text-transform: uppercase; }
#voucherInfo.ok { color: var(--ok); }
#voucherInfo.err { color: var(--danger); }
.msg { margin-top: 20px; }

.summary { position: sticky; top: 100px; padding: 26px; border: 1px solid var(--line); background: var(--surface-2); display: grid; gap: 12px; }
.summary .label { margin: 0 0 6px; color: var(--gold); }
.sum-row { display: flex; justify-content: space-between; gap: 12px; font-size: .9rem; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.sum-row span { color: var(--muted); }
.sum-row b { font-weight: 500; text-align: right; }
.sum-total { display: flex; justify-content: space-between; align-items: baseline; padding-top: 6px; }
.sum-total b { font: 400 2rem/1 var(--f-display); color: var(--gold); }
.sum-note { font-size: .8rem; color: var(--muted); margin: 6px 0 0; }
@media (max-width: 900px) { .booking-grid { grid-template-columns: minmax(0, 1fr); } .summary { position: static; } }
@media (max-width: 560px) {
  .steps li { font-size: .68rem; letter-spacing: .1em; gap: 6px; }
  .steps li:not(.on) { font-size: 0; }
  .steps li:not(.on) span { font-size: 1.3rem; }
  .pick-head small { display: none; }
  .pick-head b { font-size: 1.2rem; }
  .pick-head .from { font-size: 1rem; }
  .booking { padding: 18px 14px; margin-inline: calc(var(--gut) * -.5); }
}

/* potvrzení */
.done-wrap { display: grid; gap: 26px; text-align: center; justify-items: center; padding-block: 10px 20px; }
.done-seal { width: 88px; height: 88px; border-radius: 50%; display: grid; place-items: center; background: var(--gilt); color: var(--on-gold); font-size: 2rem; animation: seal 1s var(--ease); }
@keyframes seal { from { transform: scale(.4) rotate(-40deg); opacity: 0; } }
.done-wrap h3 { font-size: clamp(2rem, 4vw, 3rem); }
.ids { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--line); border: 1px solid var(--line); width: min(100%, 520px); }
.ids div { background: var(--surface-solid); padding: 18px; display: grid; gap: 6px; }
.ids span { font-size: .66rem; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); }
.ids b { font: 500 1.25rem var(--f-mono); color: var(--gold); }
.done-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.aftercare { text-align: left; width: min(100%, 620px); border-top: 1px solid var(--line); padding-top: 24px; }
.aftercare ul { margin: 12px 0 0; padding-left: 20px; color: var(--ink-2); display: grid; gap: 6px; }

/* ---------- dech ---------- */
.breathe-sec { background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--bg-2) 70%, transparent), transparent); }
.breathe-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 100px); align-items: center; }
.breathe-grid > div:first-child { display: grid; gap: 24px; justify-items: start; }
.breathe { display: grid; justify-items: center; gap: 26px; }
.breathe-ring { width: min(340px, 70vw); aspect-ratio: 1; border-radius: 50%; border: 1px solid var(--line-strong); display: grid; place-items: center; position: relative; }
.breathe-ring::before { content: ''; position: absolute; inset: 14%; border-radius: 50%; border: 1px dashed var(--line-strong); }
.breathe-orb { width: 34%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #f6e6bd, #c9a45c 45%, #7a5a22); box-shadow: 0 0 60px rgba(217, 182, 109, .35); transition: transform 4s cubic-bezier(.45, 0, .55, 1); }
.breathe-orb.big { transform: scale(2.6); }
.breathe-label { font: italic 400 1.8rem/1 var(--f-display); color: var(--gold); margin: 0; min-height: 1.8rem; }
@media (max-width: 820px) { .breathe-grid { grid-template-columns: 1fr; } }

/* ---------- poukazy ---------- */
.voucher-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 6vw, 90px); align-items: start; }
.voucher-form { display: grid; gap: 24px; }
.seg { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--line-strong); }
.seg button { min-height: 50px; border: none; background: none; cursor: pointer; font-size: .9rem; transition: background .4s, color .4s; }
.seg button + button { border-left: 1px solid var(--line-strong); }
.seg button.on { background: var(--gold-soft); color: var(--gold); }
#vCustom { margin-top: 10px; }
.designs { display: flex; gap: 10px; flex-wrap: wrap; }
.designs button { display: flex; align-items: center; gap: 10px; padding: 8px 16px 8px 8px; border: 1px solid var(--line-strong); background: none; cursor: pointer; font-size: .9rem; transition: border-color .3s; }
.designs button.on { border-color: var(--gold); color: var(--gold); }
.sw { width: 30px; height: 30px; display: block; }
.sw.noir { background: linear-gradient(120deg, #1a110b 0 46%, #d49a5a 46% 52%, #1a110b 52%); box-shadow: inset 0 0 0 1px #c9894a; }
.sw.perla { background: #f3ece1 url('/img/pattern-light.svg') center / 90px; box-shadow: inset 0 0 0 1px #c9894a; }
.sw.bronze { background: linear-gradient(135deg, #7a3f16, #e0a462 50%, #8a4a1c); box-shadow: inset 0 0 0 1px #3d271a; }
.btn.wide { width: 100%; }

.voucher-preview-wrap { position: sticky; top: 100px; display: grid; gap: 26px; }

/* ----- dárkový poukaz (podle tištěného poukazu studia) ----- */
.voucher-card {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #3a261a 0%, #1d130d 55%, #120b07 100%);
  --vc-ink: #efe2cf;
  --vc-gold: linear-gradient(115deg, #9a5a26 0%, #e7a969 30%, #f8d19a 45%, #c07a38 62%, #f0bb7a 82%, #9a5a26 100%);
  --vc-logo: url('/img/brand/logo-dark.webp');
  position: relative;
  aspect-ratio: 2.1;
  overflow: hidden;
  color: var(--vc-ink);
  background: var(--vc-bg);
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .55);
  container-type: inline-size;
  transform: perspective(1200px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transition: transform 1s var(--ease), background .8s var(--ease);
  isolation: isolate;
}
.voucher-card.perla {
  --vc-bg: #f4ede2;
  --vc-ink: #3a2517;
  --vc-gold: linear-gradient(115deg, #6e3812 0%, #b36d2e 35%, #d99a57 50%, #9c5a22 70%, #6e3812 100%);
  --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(70, 40, 18, .45), inset 0 0 0 1px rgba(160, 100, 50, .35);
}
.voucher-card.bronze {
  --vc-bg: linear-gradient(125deg, #6b3714 0%, #c98542 35%, #f1c182 52%, #b87434 70%, #6b3714 100%);
  --vc-ink: #22140b;
  --vc-gold: linear-gradient(115deg, #22140b, #3d2414);
  --vc-logo: url('/img/brand/logo-light.webp');
}
/* Perla: vzor ve vlastní vrstvě — cqi přímo na kartě by se měřilo podle okna prohlížeče (každý monitor jiný vzor), ve vrstvě se měří podle karty */
.voucher-card.perla::before { content: ''; position: absolute; inset: 0; z-index: -2; pointer-events: none; background: url('/img/pattern-light.svg') center / 46cqi; }
/* Vše na kartě je v jednotkách cqi (procenta šířky karty) → karta se škáluje jako obrázek: náhled = tisk = PDF */
.vc-sash { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.vc-sash.mirror { transform: scaleX(-1); }
.voucher-card.bronze .vc-sash { opacity: .25; mix-blend-mode: multiply; }
.vc-logo { position: absolute; right: 4.5%; top: 9%; width: 33%; aspect-ratio: 528 / 404; background: var(--vc-logo) center / contain no-repeat; }
.vc-left { position: absolute; left: 6%; top: 9%; bottom: 9%; width: 40%; display: flex; flex-direction: column; justify-content: space-between; gap: 2cqi; }
.vc-title { margin: 0; font: 500 6.6cqi/1.02 var(--f-display); letter-spacing: .06em; text-transform: uppercase; background: var(--vc-gold); -webkit-background-clip: text; background-clip: text; color: transparent; }
.vc-body { display: grid; gap: .8cqi; min-width: 0; }
.vc-for { margin: 0; font: italic 400 2.3cqi/1.25 var(--f-display); opacity: .9; }
.vc-value { margin: 0; font: 500 6.4cqi/1.05 var(--f-display); background: var(--vc-gold); -webkit-background-clip: text; background-clip: text; color: transparent; overflow-wrap: anywhere; }
.vc-value.vc-svc { font-size: 4.2cqi; line-height: 1.12; }
.vc-value.vc-svc.md { font-size: 3.6cqi; }
.vc-value.vc-svc.sm { font-size: 3cqi; }
.vc-value.vc-svc.xs { font-size: 2.6cqi; }
.vc-msg { margin: 0; font-size: 1.75cqi; opacity: .8; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.vc-foot { position: absolute; right: 4.5%; bottom: 7%; display: grid; grid-template-columns: auto auto; grid-auto-flow: column; grid-template-rows: auto auto; align-items: end; justify-items: end; column-gap: 1.6cqi; row-gap: .6cqi; text-align: right; font: 500 1.6cqi/1.3 var(--f-mono); letter-spacing: .08em; opacity: .9; }
.vc-foot .vc-valid { font-family: var(--f-body); letter-spacing: .14em; text-transform: uppercase; opacity: .75; }

/* zadní strana */
.voucher-card.back { display: grid; grid-template-columns: 28% 1fr; }
.vb-left { position: absolute; left: 5%; top: 10%; bottom: 10%; width: 27%; display: flex; flex-direction: column; justify-content: space-between; }
.vb-logo { width: 100%; aspect-ratio: 528 / 404; background: var(--vc-logo) center / contain no-repeat; }
.vb-contact { margin: 0; font: 400 1.55cqi/1.55 var(--f-body); opacity: .85; }
.vb-right { position: absolute; left: 57%; right: 5%; top: 10%; bottom: 9%; display: flex; flex-direction: column; gap: 1.2cqi; }
.vb-h { margin: 0; font: 500 2.9cqi/1.1 var(--f-display); letter-spacing: .04em; background: var(--vc-gold); -webkit-background-clip: text; background-clip: text; color: transparent; }
.vb-right ol { margin: 0; padding-left: 2.4cqi; display: grid; gap: .8cqi; font: 400 1.55cqi/1.45 var(--f-body); }
.vb-right ol b { font-weight: 600; }
.vb-code { margin: auto 0 0; display: grid; gap: .3cqi; font: 500 2.2cqi/1.2 var(--f-mono); letter-spacing: .08em; }
.vb-code span { font: 600 1.2cqi/1 var(--f-body); letter-spacing: .24em; text-transform: uppercase; opacity: .7; }
.vb-fine { margin: 0; font-size: 1.25cqi; opacity: .65; }

/* otáčení karty */
.flip { perspective: 1600px; cursor: pointer; outline: none; }
.flip-in { position: relative; display: grid; transition: transform .9s var(--ease); transform-style: preserve-3d; }
.flip-face { grid-area: 1 / 1; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.flip-back { transform: rotateY(180deg); }
.flip.flipped .flip-in { transform: rotateY(180deg); }
.flip:focus-visible .flip-in { outline: 1.5px solid var(--gold); outline-offset: 6px; }
.flip-btn { margin-top: 12px; background: none; border: 0; color: var(--gold); font: 500 .85rem var(--f-body); cursor: pointer; padding: 6px 0; }
.vc-qr { grid-row: 1 / 3; width: 12cqi; background: #fff; padding: .7cqi; }
.voucher-card:has(.vc-qr) .vc-logo { width: 29%; top: 7%; }
.vc-qr svg { display: block; width: 100%; height: auto; }
.vc-trust { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; font-size: .92rem; color: var(--ink-2); }
.vc-trust li { padding-left: 24px; position: relative; }
.vc-trust li::before { content: '✦'; position: absolute; left: 0; color: var(--gold); font-size: .8rem; top: 2px; }
.vc-trust b { color: var(--ink); font-weight: 600; }
@media (max-width: 900px) { .voucher-grid { grid-template-columns: 1fr; } .voucher-preview-wrap { position: static; order: -1; } }

.voucher-done { margin-top: 30px; border: 1px solid var(--gold); background: var(--surface); padding: clamp(24px, 4vw, 52px); animation: paneIn .8s var(--ease); }
.pay { display: grid; grid-template-columns: auto 1fr; gap: clamp(24px, 4vw, 56px); align-items: center; }
.qr { background: #fff; padding: 14px; width: 220px; }
.qr svg, .qr img { width: 100%; height: auto; display: block; }
.qr-cap { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-top: 10px; text-align: center; }
.pay dl { display: grid; grid-template-columns: auto 1fr; gap: 12px 24px; margin: 20px 0; }
.pay dt { color: var(--muted); font-size: .85rem; }
.pay dd { margin: 0; font-weight: 500; }
.pay dd.mono { color: var(--gold); }
@media (max-width: 680px) { .pay { grid-template-columns: 1fr; justify-items: start; } }

/* ---------- galerie ---------- */
.gallery { display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: clamp(90px, 11vw, 150px); gap: clamp(8px, 1.4vw, 16px); }
.g { padding: 0; border: none; cursor: zoom-in; overflow: hidden; background: var(--bg-2); position: relative; }
.g img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--ease), filter .8s; filter: saturate(.8); }
.g:hover img { transform: scale(1.05); filter: saturate(1); }
.g1 { grid-column: 1 / 6; grid-row: 1 / 4; }
.g2 { grid-column: 6 / 9; grid-row: 1 / 5; }
.g3 { grid-column: 9 / 13; grid-row: 1 / 3; }
.g4 { grid-column: 9 / 13; grid-row: 3 / 6; }
.g5 { grid-column: 1 / 4; grid-row: 4 / 8; }
.g6 { grid-column: 4 / 6; grid-row: 4 / 6; }
.g7 { grid-column: 6 / 9; grid-row: 5 / 8; }
.g8 { grid-column: 9 / 13; grid-row: 8 / 11; }
.g9 { grid-column: 4 / 6; grid-row: 6 / 8; }
.g10 { grid-column: 9 / 13; grid-row: 6 / 8; }
.g11 { grid-column: 1 / 5; grid-row: 8 / 11; }
.g12 { grid-column: 5 / 9; grid-row: 8 / 11; }
@media (max-width: 700px) {
  .gallery { grid-template-columns: 1fr 1fr; grid-auto-rows: 140px; }
  .g1, .g2, .g3, .g4, .g5, .g6, .g7, .g8, .g9, .g10, .g11, .g12 { grid-column: auto; grid-row: span 1; }
  .g1, .g4 { grid-column: span 2; grid-row: span 2; }
}
.lightbox { padding: 0; border: none; background: transparent; max-width: 94vw; max-height: 92svh; overflow: visible; }
.lightbox::backdrop { background: rgba(8, 6, 4, .88); backdrop-filter: blur(8px); }
.lightbox[open] img { animation: sheetIn .6s var(--ease); max-height: 88svh; max-width: 94vw; object-fit: contain; }
.lb-close { position: fixed; top: calc(16px + env(safe-area-inset-top, 0px)); right: 16px; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .3); background: rgba(0, 0, 0, .3); color: #fff; font-size: 1.6rem; cursor: pointer; }

/* ---------- recenze ---------- */
.reviews-head { display: flex; justify-content: space-between; align-items: end; gap: 30px; flex-wrap: wrap; margin-bottom: 50px; }
.reviews-head > div { display: grid; gap: 18px; }
.rating-badge { display: grid; grid-template-columns: auto auto; column-gap: 16px; align-items: center; padding: 18px 26px; border: 1px solid var(--gold); text-decoration: none; transition: background .4s; }
.rating-badge:hover { background: var(--gold-soft); }
.rb-score { grid-row: span 2; font: 400 3.4rem/1 var(--f-display); }
.rb-stars { color: var(--gold); letter-spacing: .12em; }
.rb-meta { font-size: .8rem; color: var(--muted); }
.reviews { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 18px; }
.review { padding: 30px; border: 1px solid var(--line); background: var(--surface); backdrop-filter: blur(6px); display: grid; gap: 16px; align-content: start; position: relative; }
.review::before { content: '“'; position: absolute; right: 22px; top: 6px; font: 400 5rem/1 var(--f-display); color: var(--gold); opacity: .35; }
.review .stars { color: var(--gold); letter-spacing: .14em; font-size: .9rem; }
.review p { margin: 0; font: 400 1.2rem/1.5 var(--f-display); }
.review footer { display: flex; justify-content: space-between; gap: 10px; font-size: .8rem; color: var(--muted); border-top: 1px solid var(--line); padding-top: 14px; margin-top: auto; }
.review footer b { color: var(--ink); font-weight: 600; }
.review-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }
.review-form { margin-top: 30px; max-width: 720px; display: grid; gap: 22px; padding: 30px; border: 1px solid var(--line); background: var(--surface); animation: paneIn .6s var(--ease); }
.stars-input { display: flex; gap: 4px; }
.stars-input button { font-size: 2rem; background: none; border: none; cursor: pointer; color: var(--line-strong); transition: color .25s, transform .3s var(--ease); padding: 0 2px; }
.stars-input button.on { color: var(--gold); }
.stars-input button:hover { transform: scale(1.15); }

/* ---------- FAQ ---------- */
.faq-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(30px, 6vw, 90px); }
.faq-grid > div:first-child { display: grid; gap: 18px; align-content: start; }
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 24px 0; font: 400 1.45rem/1.25 var(--f-display); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; font: 300 1.6rem/1 var(--f-body); color: var(--gold); transition: transform .5s var(--ease); flex: none; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq .ans { overflow: hidden; color: var(--ink-2); padding-bottom: 24px; max-width: 60ch; }
.faq details[open] .ans { animation: faqIn .6s var(--ease); }
@keyframes faqIn { from { opacity: 0; transform: translateY(-8px); } }
@media (max-width: 820px) { .faq-grid { grid-template-columns: 1fr; } }

/* ---------- kontakt ---------- */
.contact-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(30px, 6vw, 90px); align-items: stretch; }
.contact-copy { display: grid; gap: 26px; align-content: start; }
address { font-style: normal; font: 400 1.5rem/1.6 var(--f-display); }
.hours dl { display: grid; grid-template-columns: auto 1fr; gap: 8px 24px; margin: 12px 0 0; font-size: .95rem; }
.hours dt { color: var(--muted); }
.hours dd { margin: 0; }
.hours .today { color: var(--gold); }
.socials { display: flex; gap: 22px; flex-wrap: wrap; }
.map { min-height: 420px; border: 1px solid var(--line); position: relative; overflow: hidden; }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: grayscale(1) sepia(.25) contrast(1.05); transition: filter .8s; }
.map:hover iframe { filter: none; }
:root[data-theme="dark"] .map iframe { filter: grayscale(1) invert(.9) sepia(.35) hue-rotate(-10deg) contrast(.9); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .map iframe { filter: grayscale(1) invert(.9) sepia(.35) hue-rotate(-10deg) contrast(.9); } }
@media (max-width: 820px) { .contact-grid { grid-template-columns: 1fr; } .map { min-height: 320px; } }

/* ---------- patička ---------- */
.footer { border-top: 1px solid var(--line); padding-block: 44px calc(44px + env(safe-area-inset-bottom, 0px)); }
.foot-in { display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; font-size: .88rem; }
.foot-in p { margin: 0; }

.mobile-cta { display: none; }
@media (max-width: 700px) {
  .mobile-cta {
    display: flex; position: fixed; z-index: 40;
    left: 16px; right: 16px; bottom: calc(14px + env(safe-area-inset-bottom, 0px));
    transform: translateY(140%); transition: transform .6s var(--ease);
    box-shadow: var(--shadow);
  }
  .mobile-cta.show { transform: none; }
  .footer { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }
}


/* ---------- důvody nedostupnosti v kalendáři ---------- */
.day.off { color: var(--muted); background: repeating-linear-gradient(135deg, transparent 0 5px, var(--line) 5px 6px); }
.day.off::after { opacity: 0; }
.day.part::before { content: ''; position: absolute; top: 5px; right: 5px; width: 5px; height: 5px; border-radius: 50%; border: 1px solid var(--gold); }
.day[aria-disabled="true"] { cursor: help; }
.day[aria-disabled="true"]:hover { border-color: var(--line-strong); }
.day-note { grid-column: 1 / -1; display: grid; gap: 4px; padding: 14px 16px; border-left: 2px solid var(--gold); background: var(--gold-soft); font-size: .9rem; margin-bottom: 6px; animation: fade .5s var(--ease); }
.day-note b { font-weight: 600; }
.day-note span { color: var(--ink-2); }
.day-note.closed { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, transparent); }
.link-btn { background: none; border: none; padding: 0; color: var(--gold); cursor: pointer; font: inherit; text-decoration: underline; text-underline-offset: 3px; }

/* ---------- další doporučení ---------- */
.rec-more { margin: 24px 0 10px; }
.rec-alts { display: grid; gap: 8px; }
.rec-alt-card { display: grid; grid-template-columns: 52px 1fr; gap: 14px; align-items: center; padding: 10px 14px 10px 10px; border: 1px solid var(--line); background: var(--surface-2); cursor: pointer; text-align: left; transition: border-color .3s, transform .4s var(--ease); }
.rec-alt-card:hover { border-color: var(--gold); transform: translateX(3px); }
.rec-alt-card img { width: 52px; height: 52px; object-fit: cover; border-radius: 999px 999px 2px 2px; }
.rec-alt-card b { display: block; font: 500 1.05rem/1.2 var(--f-display); }
.rec-alt-card small { color: var(--muted); font-size: .82rem; }

/* ---------- klub ---------- */
.club-rules { max-width: 1100px; margin: 40px auto 0; display: flex; flex-wrap: wrap; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.club-rules > div { flex: 1 1 260px; background: var(--surface-solid); padding: 22px; display: grid; gap: 6px; align-content: start; }
.club-rules b { font: 500 1.1rem var(--f-display); color: var(--gold); }
.club-rules p { margin: 0; font-size: .9rem; color: var(--ink-2); }
.club-form { gap: 22px; }
.plan-pick { display: grid; gap: 8px; }
.plan-pick .chip { justify-content: flex-start; border-radius: var(--r); }

/* ---------- poukaz po objednání ---------- */
.done-card { max-width: 640px; margin: 0 auto 32px; }
.chips.dedic .chip { min-height: 36px; font-size: .84rem; border-radius: var(--r); text-align: left; }
.rating-badge.empty { grid-template-columns: auto; row-gap: 6px; }

/* hlavička: sedm odkazů + logo se musí vejít i na menší notebook */
.brand-text small, .brand-text b { white-space: nowrap; }
@media (max-width: 1240px) and (min-width: 981px) {
  .nav-links { gap: 18px; }
  .nav-links a { font-size: .7rem; letter-spacing: .1em; }
  .brand-fig { width: 48px; }
}

/* recenze: průběžná nápověda místo chyby po odeslání */
.stars-row { display: flex; align-items: center; gap: 14px; }
.review-hint { margin: 0; font-size: .88rem; color: var(--muted); transition: color .3s; }
.review-hint.ready { color: var(--ok); }
.review-hint.shake { animation: shake .45s var(--ease); color: var(--danger); }
@keyframes shake { 20%, 60% { transform: translateX(-5px); } 40%, 80% { transform: translateX(5px); } }
#reviewSubmit[aria-disabled="true"] { opacity: .55; }

/* mobil: nic nesmí roztáhnout stránku do šířky (dlouhá tlačítka v doporučení apod.) */
@media (max-width: 820px) {
  .guide { grid-template-columns: minmax(0, 1fr); }
  .rec { grid-template-columns: 90px minmax(0, 1fr); }
  .rec-body, .guide-q, .q { min-width: 0; }
}
@media (max-width: 560px) {
  .btn { white-space: normal; height: auto; min-height: var(--h); padding-block: 12px; text-align: center; line-height: 1.35; }
  .rec { grid-template-columns: 1fr; }
  .rec-img { width: 110px; }
}
html { overflow-x: clip; }
#isicMsg.ok, .club-form small.ok { color: var(--ok); }
#isicMsg.err, .club-form small.err { color: var(--danger); }
#isicWrap { gap: 10px; }

.code-notice { max-width: 900px; margin: 0 auto 22px; padding: 14px 18px; border-left: 3px solid var(--gold); background: var(--gold-soft); font-size: .95rem; }
.code-notice.ok { border-color: var(--ok); background: color-mix(in srgb, var(--ok) 9%, transparent); }
.code-notice.bad { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, transparent); }

/* volba platby */
.pay-choice { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pc { position: relative; display: grid; gap: 2px; padding: 14px 16px 14px 44px; border: 1px solid var(--line-strong); cursor: pointer; transition: border-color .3s, background .3s; }
.pc input { position: absolute; left: 16px; top: 17px; width: 18px; height: 18px; min-height: 0; padding: 0; margin: 0; accent-color: var(--gold); }
.pc b { font-weight: 600; }
.pc small { color: var(--muted); font-size: .8rem; }
.pc:has(input:checked) { border-color: var(--gold); background: var(--gold-soft); }
@media (max-width: 560px) { .pay-choice { grid-template-columns: 1fr; } }

/* ----- sezónní akce: výrazný pruh v barvách akce, vyskakovací upozornění, tečka v menu ----- */
.promo-strip { position: relative; z-index: 1; }
.promo-band { --pb-bg: linear-gradient(100deg, #3a241a, #1d130d); --pb-ink: #f6e8d4; --pb-acc: #f0c67d; --pb-pat: none;
  position: relative; overflow: hidden; color: var(--pb-ink); background: var(--pb-bg); border-block: 1px solid color-mix(in srgb, var(--pb-acc) 50%, transparent); }
.promo-band::before { content: ''; position: absolute; inset: 0; background: var(--pb-pat) 0 0 / 70px; opacity: .14; pointer-events: none; animation: drift 60s linear infinite; }
@keyframes drift { to { background-position: 70px 140px; } }
.promo-band.promo-vanoce { --pb-bg: linear-gradient(105deg, #6e1620 0%, #3d0a12 45%, #0d3023 100%); --pb-pat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='none' stroke='%23fff' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M30 20v20M21.3 25l17.4 10M21.3 35l17.4-10'/%3E%3Ccircle cx='8' cy='52' r='1'/%3E%3Ccircle cx='52' cy='9' r='1.2'/%3E%3C/g%3E%3C/svg%3E"); }
.promo-band.promo-valentyn { --pb-bg: linear-gradient(105deg, #8e1a2c, #c85a6a 60%, #f0b9ad); --pb-acc: #ffe1d8; --pb-pat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath fill='%23fff' d='M30 38c-6-4.5-9-7.6-9-11a4.5 4.5 0 0 1 9-1.2 4.5 4.5 0 0 1 9 1.2c0 3.4-3 6.5-9 11z'/%3E%3C/svg%3E"); }
.promo-band.promo-den-matek { --pb-bg: linear-gradient(105deg, #f9e0e3, #e3daf0 55%, #d3dcbd); --pb-ink: #3a2a30; --pb-acc: #8a4b56; --pb-pat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='%23fff'%3E%3Ccircle cx='30' cy='24' r='4'/%3E%3Ccircle cx='35.7' cy='28.1' r='4'/%3E%3Ccircle cx='33.5' cy='34.9' r='4'/%3E%3Ccircle cx='26.5' cy='34.9' r='4'/%3E%3Ccircle cx='24.3' cy='28.1' r='4'/%3E%3C/g%3E%3C/svg%3E"); }
.promo-band.promo-den-matek::before { opacity: .5; }
.promo-band.promo-black-friday { --pb-bg: #0c0c0c; --pb-acc: #d9d9d9; }
.promo-in { display: grid; grid-template-columns: auto 1fr auto; gap: 14px 26px; align-items: center; padding-block: clamp(22px, 3vw, 34px); position: relative; }
.promo-copy { display: grid; gap: 5px; }
.promo-copy .eyebrow { margin: 0; color: var(--pb-acc); }
.promo-copy .eyebrow::before { background: var(--pb-acc); }
.promo-copy h3 { font-size: clamp(1.5rem, 3vw, 2.2rem); margin: 0; color: var(--pb-ink); }
.promo-copy p:not(.eyebrow) { margin: 0; opacity: .88; font-size: .98rem; max-width: 64ch; }
.promo-badge { align-self: start; padding: 7px 12px; background: var(--pb-acc, #f0c67d); color: #1a0f0a; font: 700 .64rem/1 var(--f-body); letter-spacing: .22em; text-transform: uppercase; animation: badge 2.8s var(--ease) infinite; }
@keyframes badge { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--pb-acc, #f0c67d) 25%, transparent); } }
.promo-band .btn.solid { background: var(--pb-acc); color: #1a0f0a; border-color: var(--pb-acc); }
@media (max-width: 720px) { .promo-in { grid-template-columns: 1fr; } .promo-in .btn { justify-self: start; } }
/* vyskakovací upozornění (jednou za akci) */
.promo-pop { --pb-acc: #f0c67d; position: fixed; left: 20px; bottom: 20px; z-index: 70; width: min(360px, calc(100vw - 32px)); display: grid; gap: 8px; padding: 22px 22px 20px;
  color: #f6e8d4; background: linear-gradient(135deg, #3a241a, #140d09); border: 1px solid var(--pb-acc); box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .6);
  transform: translateY(calc(100% + 40px)); opacity: 0; transition: transform .8s var(--ease), opacity .5s; }
.promo-pop.in { transform: none; opacity: 1; }
.promo-pop.promo-vanoce { background: linear-gradient(135deg, #6e1620, #0d3023); }
.promo-pop.promo-valentyn { background: linear-gradient(135deg, #8e1a2c, #c85a6a); --pb-acc: #ffe1d8; }
.promo-pop.promo-den-matek { background: linear-gradient(135deg, #f9e0e3, #e3daf0); color: #3a2a30; --pb-acc: #8a4b56; }
.promo-pop.promo-black-friday { background: #0c0c0c; --pb-acc: #d9d9d9; }
.promo-pop b { font: 500 1.35rem/1.2 var(--f-display); }
.promo-pop p { margin: 0; font-size: .9rem; opacity: .88; }
.promo-pop .promo-badge { justify-self: start; }
.promo-pop .btn { justify-self: start; margin-top: 6px; background: var(--pb-acc); color: #1a0f0a; border-color: var(--pb-acc); }
.promo-x { position: absolute; right: 10px; top: 8px; width: 34px; height: 34px; border: none; background: none; color: inherit; font-size: 1.5rem; cursor: pointer; opacity: .7; }
.promo-x:hover { opacity: 1; }
@media (max-width: 640px) { .promo-pop { left: 16px; bottom: 16px; } }
@media (prefers-reduced-motion: reduce) { .promo-band::before, .promo-badge { animation: none; } .promo-pop { transition: none; } }
/* tečka v menu u odkazu na akci */
.nav-links a.has-promo::before { content: ''; position: absolute; right: -9px; top: 3px; width: 6px; height: 6px; border-radius: 50%; background: #e2554a; box-shadow: 0 0 0 0 rgba(226, 85, 74, .6); animation: ping 2s infinite; }
@keyframes ping { 70% { box-shadow: 0 0 0 7px rgba(226, 85, 74, 0); } }
/* sezónní masáž mezi ostatními */
.svc.seasonal { border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold), 0 30px 70px -35px color-mix(in srgb, var(--gold) 70%, transparent); }
.svc.seasonal .promo-tag { font-size: .7rem; padding: 8px 14px; animation: badge 2.8s var(--ease) infinite; --pb-acc: #f0c67d; }
/* sezónní vzhledy poukazu v návrháři */
.designs-seasonal { grid-column: 1 / -1; flex-basis: 100%; display: grid; gap: 8px; padding: 12px; border: 1px dashed var(--gold); background: var(--gold-soft); }
.designs-seasonal p { margin: 0; font: 600 .7rem/1 var(--f-body); letter-spacing: .18em; text-transform: uppercase; color: var(--gold); }
.designs-seasonal > div { display: flex; flex-wrap: wrap; gap: 8px; }
.promo-tag { position: absolute; right: 12px; top: 12px; padding: 5px 10px; background: var(--gilt); color: #24160d; font: 600 .62rem/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; }
s.was { opacity: .55; font-weight: 400; margin-right: 4px; text-decoration-thickness: 1px; }
.v-bonus { display: grid; gap: 3px; padding: 12px 14px; border: 1px dashed var(--gold); background: var(--gold-soft); font-size: .9rem; }
.v-bonus b { color: var(--gold); }
.designs button.seasonal small { display: block; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; color: var(--gold); }
.sw.vanoce { background: radial-gradient(circle at 30% 30%, #7b1a22, #3b0a10); box-shadow: inset 0 0 0 1px #d4a05c; }
.sw.valentyn { background: linear-gradient(135deg, #f6dcd6, #e7b3a8); box-shadow: inset 0 0 0 1px #b86b5a; }
.sw.jaro { background: linear-gradient(135deg, #eef0e2, #cdd6b4); box-shadow: inset 0 0 0 1px #8d9a67; }
/* vánoční: hluboká vínová, zlato a jemné vločky */
.voucher-card.vanoce {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #6e1620 0%, #3d0a12 58%, #22060a 100%);
  --vc-ink: #f6e8d4;
  --vc-gold: linear-gradient(115deg, #b0782e 0%, #f0c67d 35%, #fbe2ae 48%, #c88f3f 65%, #f3cf8a 85%, #a86f28 100%);
  --vc-logo: url('/img/brand/logo-dark.webp');
}

/* valentýnský: pudrová růže a měď */
.voucher-card.valentyn {
  --vc-bg: linear-gradient(125deg, #fbeae5 0%, #f2d1c8 55%, #e9bcb0 100%);
  --vc-ink: #4a2320;
  --vc-gold: linear-gradient(115deg, #7c2f24, #b8573f 45%, #d98a6b 60%, #8c3a2b);
  --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(120, 50, 40, .4), inset 0 0 0 1px rgba(184, 107, 90, .45);
}
/* jarní (Den matek): šalvěj a krém */
.voucher-card.jaro {
  --vc-bg: linear-gradient(125deg, #f5f3e8 0%, #e6ead6 55%, #d3dcbd 100%);
  --vc-ink: #2f3522;
  --vc-gold: linear-gradient(115deg, #5d4a1e, #9a7a35 45%, #c4a25a 60%, #6d5724);
  --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(60, 70, 40, .35), inset 0 0 0 1px rgba(141, 154, 103, .5);
}
.voucher-card.valentyn .vc-sash, .voucher-card.jaro .vc-sash { opacity: .35; mix-blend-mode: multiply; }

.svc.seasonal { border-color: var(--gold); }
.svc.seasonal .svc-cat { background: var(--gilt); color: #24160d; }

/* ===== sezónní vzhledy poukazů =====
   vzor (vločky, srdíčka, květy) je v ::after; --vc-s1..4 = barvy šikmého pásu */
.voucher-card.vanoce-zelena {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #1f5c40 0%, #0d3023 58%, #061a12 100%);
  --vc-ink: #f3ead8; --vc-gold: linear-gradient(115deg, #b0782e 0%, #f0c67d 35%, #fbe2ae 48%, #c88f3f 65%, #f3cf8a 85%, #a86f28 100%); --vc-logo: url('/img/brand/logo-dark.webp');
}
.voucher-card.vanoce-mix {
  --vc-bg: radial-gradient(ellipse 70% 100% at 25% 45%, #7a1822 0%, #4a0d15 70%, #33070e 100%);
  --vc-split-a: #145238; --vc-split-b: #062519;
  --vc-ink: #f6e8d4; --vc-gold: linear-gradient(115deg, #b0782e 0%, #f0c67d 35%, #fbe2ae 48%, #c88f3f 65%, #f3cf8a 85%, #a86f28 100%); --vc-logo: url('/img/brand/logo-dark.webp');
}
.voucher-card.vanoce-modra {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 40%, #2b5687 0%, #142b4d 58%, #0a1629 100%);
  --vc-ink: #eef3fa; --vc-gold: linear-gradient(115deg, #7f93ab 0%, #dfe7f1 38%, #ffffff 50%, #aebdd0 66%, #e9eff7 85%, #74879f 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-s1: #7d91aa; --vc-s2: #f4f8fc; --vc-s3: #a9b9cc; --vc-s4: #e6edf6;
}
.voucher-card.valentyn-srdce {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #8e1a2c 0%, #5c0c1b 58%, #33060f 100%);
  --vc-ink: #fdecec; --vc-gold: linear-gradient(115deg, #a8595a 0%, #f0b9ad 38%, #ffe1d8 50%, #d68d84 66%, #f4c5bb 85%, #98494c 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-s1: #9a4b4d; --vc-s2: #ffd9cf; --vc-s3: #d68d84; --vc-s4: #f7c9be;
}
.voucher-card.valentyn-krem {
  --vc-bg: #fbf4ec; --vc-ink: #4a2320; --vc-gold: linear-gradient(115deg, #7c2f24, #b8573f 45%, #d98a6b 60%, #8c3a2b);
  --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(120, 50, 40, .35), inset 0 0 0 1px rgba(184, 107, 90, .4);
  --vc-s1: #b76a5a; --vc-s2: #f2b8a6; --vc-s3: #d68d7a; --vc-s4: #f7cdbf;
}
.voucher-card.jaro-kvet {
  --vc-bg: linear-gradient(125deg, #fff5f4 0%, #f9e0e3 55%, #f1c9cf 100%); --vc-ink: #4a2a30;
  --vc-gold: linear-gradient(115deg, #7a3b47, #b86b7a 45%, #dca0aa 60%, #83424f); --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(120, 60, 70, .35), inset 0 0 0 1px rgba(200, 130, 145, .45);
  --vc-s1: #b56f7c; --vc-s2: #f7d3d8; --vc-s3: #d99aa5; --vc-s4: #fbe3e6;
}
.voucher-card.jaro-levandule {
  --vc-bg: linear-gradient(125deg, #f4f1f9 0%, #e3daf0 55%, #cfc1e6 100%); --vc-ink: #33294a;
  --vc-gold: linear-gradient(115deg, #4b3b78, #7f6db3 45%, #a797d4 60%, #54448a); --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(70, 55, 110, .35), inset 0 0 0 1px rgba(150, 130, 200, .45);
  --vc-s1: #7d6aad; --vc-s2: #e3dbf3; --vc-s3: #a898d2; --vc-s4: #efe9f8;
}
/* Black Friday: matná černá, chromové písmo, jemná zrnitost jako u matného papíru */
.voucher-card.black-mat {
  --vc-bg: radial-gradient(ellipse 90% 90% at 50% 40%, #1d1d1d 0%, #111 60%, #080808 100%);
  --vc-ink: #e6e6e6; --vc-gold: linear-gradient(115deg, #4d4d4d 0%, #cfcfcf 38%, #ffffff 50%, #8f8f8f 66%, #d9d9d9 85%, #3f3f3f 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='60' height='60' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .7), inset 0 0 0 1px rgba(255, 255, 255, .08);
  --vc-s1: #3a3a3a; --vc-s2: #d6d6d6; --vc-s3: #6f6f6f; --vc-s4: #bdbdbd;
}
/* vzory: tvar = maska (--pat), barva podle vzhledu (--vc-pat-color); třída pat-* přepíše výchozí vzor vzhledu */
.voucher-card:is(.vanoce, .vanoce-zelena, .vanoce-mix, .vanoce-modra, .valentyn, .valentyn-srdce, .valentyn-krem, .jaro, .jaro-kvet, .jaro-levandule)::after {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: calc(var(--vc-pat-op, .2) * var(--pat-k, 1));
  background: var(--vc-pat-color, #f3cf8a);
  -webkit-mask: var(--pat) 0 0 / 11cqi repeat; mask: var(--pat) 0 0 / 11cqi repeat;
}
.voucher-card.vanoce { --pat: var(--pat-vlocky); --vc-pat-color: #f3cf8a; }
.voucher-card.vanoce-zelena { --pat: var(--pat-vlocky); --vc-pat-color: #f3cf8a; }
.voucher-card.vanoce-mix { --pat: var(--pat-vlocky); --vc-pat-color: #f3cf8a; }
.voucher-card.vanoce-modra { --pat: var(--pat-vlocky); --vc-pat-color: #ffffff; }
.voucher-card.valentyn { --pat: var(--pat-srdicka); --pat-k: 0.65; --vc-pat-color: #c06a5c; --vc-pat-op: 0.35; }
.voucher-card.valentyn-srdce { --pat: var(--pat-srdicka); --pat-k: 0.65; --vc-pat-color: #f0b9ad; }
.voucher-card.valentyn-krem { --pat: var(--pat-srdicka); --pat-k: 0.65; --vc-pat-color: #e59a9a; --vc-pat-op: 0.35; }
.voucher-card.jaro { --pat: var(--pat-kvitky); --pat-k: 0.8; --vc-pat-color: #ffffff; --vc-pat-op: 0.45; }
.voucher-card.jaro-kvet { --pat: var(--pat-kvitky); --pat-k: 0.8; --vc-pat-color: #ffffff; --vc-pat-op: 0.55; }
.voucher-card.jaro-levandule { --pat: var(--pat-levandule); --pat-k: 0.9; --vc-pat-color: #9b88c9; --vc-pat-op: 0.35; }
:root {
  --pat-vlocky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.1' stroke-linecap='round'%3E%3Cpath d='M30 30L30.0 19.0M30.0 23.5L32.4 21.1M30.0 23.5L27.6 21.1M30.0 21.0L31.6 19.4M30.0 21.0L28.4 19.4M30 30L39.5 24.5M35.6 26.8L38.9 27.6M35.6 26.8L36.5 23.5M37.8 25.5L39.9 26.1M37.8 25.5L38.4 23.4M30 30L39.5 35.5M35.6 33.2L36.5 36.5M35.6 33.2L38.9 32.4M37.8 34.5L38.4 36.6M37.8 34.5L39.9 33.9M30 30L30.0 41.0M30.0 36.5L27.6 38.9M30.0 36.5L32.4 38.9M30.0 39.0L28.4 40.6M30.0 39.0L31.6 40.6M30 30L20.5 35.5M24.4 33.2L21.1 32.4M24.4 33.2L23.5 36.5M22.2 34.5L20.1 33.9M22.2 34.5L21.6 36.6M30 30L20.5 24.5M24.4 26.8L23.5 23.5M24.4 26.8L21.1 27.6M22.2 25.5L21.6 23.4M22.2 25.5L20.1 26.1'/%3E%3C/g%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3Ccircle cx='52' cy='9' r='1.5'/%3E%3C/svg%3E");
  --pat-zvonecky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M30 19c-5.5 0-8.5 4.3-8.5 10.5v5.2L18 39.5h24l-3.5-4.8v-5.2C38.5 23.3 35.5 19 30 19z'/%3E%3Ccircle cx='30' cy='42.5' r='2.6'/%3E%3Cpath d='M30 19c-2-3-6-4-7-1.5s4 2.8 7 1.5c3 1.3 8 1 7-1.5s-5-1.5-7 1.5z'/%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3C/svg%3E");
  --pat-pernicky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3Cmask id='m'%3E%3Crect width='60' height='60' fill='%23fff'/%3E%3Cg fill='%23000'%3E%3Ccircle cx='28' cy='18' r='1'/%3E%3Ccircle cx='32' cy='18' r='1'/%3E%3Ccircle cx='30' cy='28' r='1.2'/%3E%3Ccircle cx='30' cy='32.5' r='1.2'/%3E%3C/g%3E%3Cpath d='M27.5 21q2.5 2 5 0' fill='none' stroke='%23000' stroke-width='.9' stroke-linecap='round'/%3E%3C/mask%3E%3C/defs%3E%3Cg mask='url(%23m)'%3E%3Ccircle cx='30' cy='18.5' r='6'/%3E%3Cg stroke='%23000' stroke-linecap='round' fill='none'%3E%3Cpath d='M21 28.5h18' stroke-width='6'/%3E%3Cpath d='M30 25v11' stroke-width='10'/%3E%3Cpath d='M28 36l-5 8M32 36l5 8' stroke-width='6'/%3E%3C/g%3E%3C/g%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3C/svg%3E");
  --pat-lizatka: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3Cmask id='m'%3E%3Crect width='60' height='60' fill='%23fff'/%3E%3Cpath d='M20 44l20-20M20 38l20-20M20 32l20-20M20 50l20-20M20 26l20-20' stroke='%23000' stroke-width='1.3'/%3E%3C/mask%3E%3C/defs%3E%3Cpath mask='url(%23m)' d='M33.5 45V25.5a5 5 0 0 0-10 0' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3Ccircle cx='52' cy='9' r='1.4'/%3E%3C/svg%3E");
  --pat-stromecky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M30 13l8.5 10.5h-4.2l6.3 8.5h-4.8L42 41H18l6.2-9h-4.8l6.3-8.5h-4.2z'/%3E%3Crect x='27.6' y='41' width='4.8' height='5.5'/%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3C/svg%3E");
  --pat-hvezdy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M30 17l3.6 8.3 9 .8-6.8 6 2 8.9L30 36.3 22.2 41l2-8.9-6.8-6 9-.8z'/%3E%3Cpath d='M9 47l1.2 2.8 3 .3-2.3 2 .7 3L9 53.5l-2.6 1.6.7-3-2.3-2 3-.3z'/%3E%3C/svg%3E");
  --pat-srdicka: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M30 40c-7-5.2-10.5-8.8-10.5-12.8a5.3 5.3 0 0 1 10.5-1.4 5.3 5.3 0 0 1 10.5 1.4c0 4-3.5 7.6-10.5 12.8z'/%3E%3Cpath transform='translate(-19 22) scale(.45)' d='M30 40c-7-5.2-10.5-8.8-10.5-12.8a5.3 5.3 0 0 1 10.5-1.4 5.3 5.3 0 0 1 10.5 1.4c0 4-3.5 7.6-10.5 12.8z'/%3E%3C/svg%3E");
  --pat-pusinky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M17 29.5c3.5-4 7.5-6 10.5-4.3.9.5 1.7.9 2.5.9s1.6-.4 2.5-.9c3-1.7 7 .3 10.5 4.3-3.5.8-9 1.1-13 1.1s-9.5-.3-13-1.1z'/%3E%3Cpath d='M17 31c3.3 5.5 8 8.5 13 8.5s9.7-3 13-8.5c-3.8.9-8.8 1.3-13 1.3s-9.2-.4-13-1.3z'/%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3C/svg%3E");
  --pat-sipy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath transform='translate(30 30) scale(.62) translate(-30 -31.5)' d='M30 40c-7-5.2-10.5-8.8-10.5-12.8a5.3 5.3 0 0 1 10.5-1.4 5.3 5.3 0 0 1 10.5 1.4c0 4-3.5 7.6-10.5 12.8z'/%3E%3Cg fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='M15 45L43.5 16.5M15 45h-3.6M15 45v3.6M17.8 42.2h-3.6M17.8 42.2v3.6M20.6 39.4h-3.4M20.6 39.4v3.4'/%3E%3C/g%3E%3Cpath d='M46.5 13.5l-8.6 2.8 5.8 5.8z'/%3E%3C/svg%3E");
  --pat-ruze: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3Cmask id='m'%3E%3Crect width='60' height='60' fill='%23fff'/%3E%3Cpath d='M30 25.5a2.2 2.2 0 0 1 2.3 2.3 4 4 0 0 1-4.3 3.7 5.8 5.8 0 0 1-5.4-6M26 21.5a7 7 0 0 1 10 1.5' fill='none' stroke='%23000' stroke-width='1.1' stroke-linecap='round'/%3E%3C/mask%3E%3C/defs%3E%3Cpath mask='url(%23m)' d='M30 17c5.5 0 9 3.6 9 8.3 0 5.6-4.2 9.7-9 9.7s-9-4.1-9-9.7c0-4.7 3.5-8.3 9-8.3z'/%3E%3Cpath d='M29.3 34.5h1.4V47h-1.4z'/%3E%3Cpath d='M30 41.5c-3.5.4-6.3-1.2-7.2-4 3.4-.5 6 1 7.2 4zM30 39c3-.1 5.4-1.6 6-4-3-.1-5.2 1.4-6 4z'/%3E%3C/svg%3E");
  --pat-kvitky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg%3E%3Ccircle cx='30' cy='23.5' r='4.2'/%3E%3Ccircle cx='36.2' cy='28' r='4.2'/%3E%3Ccircle cx='33.8' cy='35.3' r='4.2'/%3E%3Ccircle cx='26.2' cy='35.3' r='4.2'/%3E%3Ccircle cx='23.8' cy='28' r='4.2'/%3E%3C/g%3E%3Ccircle cx='8' cy='52' r='1.6'/%3E%3C/svg%3E");
  --pat-levandule: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M29.6 46V18h.8v28z'/%3E%3Cg%3E%3Cellipse cx='27.6' cy='22' rx='1.6' ry='2.6' transform='rotate(-25 27.6 22)'/%3E%3Cellipse cx='32.4' cy='22' rx='1.6' ry='2.6' transform='rotate(25 32.4 22)'/%3E%3Cellipse cx='27.4' cy='28' rx='1.7' ry='2.8' transform='rotate(-25 27.4 28)'/%3E%3Cellipse cx='32.6' cy='28' rx='1.7' ry='2.8' transform='rotate(25 32.6 28)'/%3E%3Cellipse cx='27.2' cy='34' rx='1.8' ry='3' transform='rotate(-25 27.2 34)'/%3E%3Cellipse cx='32.8' cy='34' rx='1.8' ry='3' transform='rotate(25 32.8 34)'/%3E%3Cellipse cx='30' cy='17' rx='1.4' ry='2.4'/%3E%3C/g%3E%3C/svg%3E");
  --pat-listky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M19 41c0-12.5 8.5-21 22-22 0 13-8.5 22-22 22zm2.2-2.4l17-17-.6-.6-17 17z' fill-rule='evenodd'/%3E%3Ccircle cx='52' cy='9' r='1.4'/%3E%3C/svg%3E");
  --pat-motyli: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M29.3 24h1.4v14h-1.4z'/%3E%3Cpath d='M29 27c-3-5-10-8-12-5s1 8 6 9c-4 1-6 5-4 7s7-1 10-6z'/%3E%3Cpath d='M31 27c3-5 10-8 12-5s-1 8-6 9c4 1 6 5 4 7s-7-1-10-6z'/%3E%3C/svg%3E");
}
.voucher-card.pat-vlocky { --pat: var(--pat-vlocky); --pat-k: 1; }
.voucher-card.pat-zvonecky { --pat: var(--pat-zvonecky); --pat-k: 0.6; }
.voucher-card.pat-pernicky { --pat: var(--pat-pernicky); --pat-k: 0.55; }
.voucher-card.pat-lizatka { --pat: var(--pat-lizatka); --pat-k: 0.75; }
.voucher-card.pat-stromecky { --pat: var(--pat-stromecky); --pat-k: 0.6; }
.voucher-card.pat-hvezdy { --pat: var(--pat-hvezdy); --pat-k: 0.65; }
.voucher-card.pat-srdicka { --pat: var(--pat-srdicka); --pat-k: 0.65; }
.voucher-card.pat-pusinky { --pat: var(--pat-pusinky); --pat-k: 0.6; }
.voucher-card.pat-sipy { --pat: var(--pat-sipy); --pat-k: 0.9; }
.voucher-card.pat-ruze { --pat: var(--pat-ruze); --pat-k: 0.65; }
.voucher-card.pat-kvitky { --pat: var(--pat-kvitky); --pat-k: 0.8; }
.voucher-card.pat-levandule { --pat: var(--pat-levandule); --pat-k: 0.9; }
.voucher-card.pat-listky { --pat: var(--pat-listky); --pat-k: 0.6; }
.voucher-card.pat-motyli { --pat: var(--pat-motyli); --pat-k: 0.6; }
.voucher-card.pat-zadny::after { display: none; }
.voucher-card.black-mat::after { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .07; background: var(--vc-noise) 0 0 / 30cqi; }
/* malý náhled vzoru v návrháři */
.pat-sw { width: 26px; height: 26px; background: currentColor; -webkit-mask: var(--pat) center / 150% no-repeat; mask: var(--pat) center / 150% no-repeat; }
.pat-sw.pat-vlocky { --pat: var(--pat-vlocky); }
.pat-sw.pat-zvonecky { --pat: var(--pat-zvonecky); }
.pat-sw.pat-pernicky { --pat: var(--pat-pernicky); }
.pat-sw.pat-lizatka { --pat: var(--pat-lizatka); }
.pat-sw.pat-stromecky { --pat: var(--pat-stromecky); }
.pat-sw.pat-hvezdy { --pat: var(--pat-hvezdy); }
.pat-sw.pat-srdicka { --pat: var(--pat-srdicka); }
.pat-sw.pat-pusinky { --pat: var(--pat-pusinky); }
.pat-sw.pat-sipy { --pat: var(--pat-sipy); }
.pat-sw.pat-ruze { --pat: var(--pat-ruze); }
.pat-sw.pat-kvitky { --pat: var(--pat-kvitky); }
.pat-sw.pat-levandule { --pat: var(--pat-levandule); }
.pat-sw.pat-listky { --pat: var(--pat-listky); }
.pat-sw.pat-motyli { --pat: var(--pat-motyli); }
.voucher-card:is(.vanoce-modra, .black-mat) :is(.vc-logo, .vb-logo) { filter: grayscale(1) brightness(1.7) contrast(.9); }
.voucher-card:is(.valentyn-krem, .jaro-kvet, .jaro-levandule) .vc-sash { opacity: .45; mix-blend-mode: multiply; }
/* vzorníky */
.sw.vanoce-zelena { background: radial-gradient(circle at 30% 30%, #1f5c40, #061a12); box-shadow: inset 0 0 0 1px #d4a05c; }
.sw.vanoce-mix { background: linear-gradient(118deg, #7a1822 0 48%, #0f3d29 52%); box-shadow: inset 0 0 0 1px #d4a05c; }
.sw.vanoce-modra { background: radial-gradient(circle at 30% 30%, #2b5687, #0a1629); box-shadow: inset 0 0 0 1px #dfe7f1; }
.sw.valentyn-srdce { background: radial-gradient(circle at 30% 30%, #8e1a2c, #33060f); box-shadow: inset 0 0 0 1px #f0b9ad; }
.sw.valentyn-krem { background: #fbf4ec url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='%23e59a9a'%3E%3Cpath d='M30 38c-6-4.5-9-7.6-9-11a4.5 4.5 0 0 1 9-1.2 4.5 4.5 0 0 1 9 1.2c0 3.4-3 6.5-9 11z'/%3E%3Cpath transform='translate(-18 18) scale(.5)' d='M30 38c-6-4.5-9-7.6-9-11a4.5 4.5 0 0 1 9-1.2 4.5 4.5 0 0 1 9 1.2c0 3.4-3 6.5-9 11z'/%3E%3C/g%3E%3C/svg%3E") center / 14px; box-shadow: inset 0 0 0 1px #d68d7a; }
.sw.jaro-kvet { background: linear-gradient(135deg, #fff5f4, #f1c9cf); box-shadow: inset 0 0 0 1px #d99aa5; }
.sw.jaro-levandule { background: linear-gradient(135deg, #f4f1f9, #cfc1e6); box-shadow: inset 0 0 0 1px #a898d2; }
.sw.black-mat { background: #111; box-shadow: inset 0 0 0 1px #6f6f6f; }

.pat-pick { display: flex; flex-wrap: wrap; gap: 6px; }
.designs .pat-pick button { padding: 6px 12px 6px 6px; gap: 8px; font-size: .82rem; }
.designs .pat-pick button.on { border-color: var(--gold); color: var(--gold); background: color-mix(in srgb, var(--gold) 10%, transparent); }
.pat-sw { display: block; flex: none; color: var(--gold); }
.pat-sw.none { background: none; border: 1px dashed currentColor; border-radius: 50%; width: 20px; height: 20px; margin: 3px; -webkit-mask: none; mask: none; }

/* ----- doplňky, last-minute, razítka, doporučení ----- */
.addon-pick { margin-top: 22px; display: grid; gap: 10px; }
.addon-pick .label { margin: 0; }
.addon-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 8px; }
.addon { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid var(--line); cursor: pointer; transition: border-color .3s, background .3s; }
.addon:hover { border-color: var(--gold-2); }
.addon:has(input:checked) { border-color: var(--gold); background: var(--gold-soft); }
.addon input { width: 18px; height: 18px; accent-color: var(--gold-2); margin: 0; }
.addon span { display: grid; gap: 2px; font-size: .92rem; }
.addon small { color: var(--muted); font-size: .78rem; }
.addon em { font-style: normal; color: var(--gold); font-weight: 600; white-space: nowrap; }
.slot.lm { position: relative; border-color: #e2554a; }
.slot.lm small { display: block; font-size: .64rem; letter-spacing: .08em; color: #e2554a; margin-top: 2px; }
.slot { display: flex; flex-direction: column; align-items: center; justify-content: center; }
.day.lm::after { content: '−%'; position: absolute; top: 2px; right: 3px; font: 700 .5rem/1 var(--f-body); color: #e2554a; }
.day { position: relative; }
.day-note.lm { border-color: #e2554a; }
.day-note.lm b { color: #e2554a; }
.sum-row.disc b { color: var(--ok); }
.sum-loyalty { display: grid; gap: 6px; padding-top: 12px; margin-top: 4px; border-top: 1px dashed var(--line); font-size: .78rem; color: var(--muted); letter-spacing: .06em; }
.stamps { display: flex; gap: 5px; flex-wrap: wrap; }
.stamps i { width: 14px; height: 14px; border-radius: 50%; border: 1px solid var(--gold-2); }
.stamps i.on { background: var(--gilt); border-color: transparent; }
.stamps i.gift { border-style: dashed; position: relative; }
.stamps i.gift::after { content: '½'; position: absolute; inset: 0; display: grid; place-items: center; font: 700 .5rem/1 var(--f-body); color: var(--gold); }
.stamps i.gift.on::after { color: #24160d; }
.done-loyalty, .done-ref { display: grid; gap: 8px; padding: 14px 16px; border: 1px solid var(--line); background: var(--surface); text-align: left; font-size: .9rem; }
.done-loyalty > span { color: var(--muted); font-size: .8rem; }
.done-ref { border-color: var(--gold); }
.done-ref .btn { justify-self: start; }
#refInfo.ok { color: var(--ok); } #refInfo.err { color: var(--danger); }

/* doručení poukazu a firemní objednávka */
.delivery { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 8px; }
.delivery .pc { display: grid; gap: 3px; padding: 12px 14px; border: 1px solid var(--line); cursor: pointer; position: relative; }
.delivery .pc input { position: absolute; opacity: 0; pointer-events: none; }
.delivery .pc:has(input:checked) { border-color: var(--gold); background: var(--gold-soft); }
.delivery .pc b { font-weight: 600; font-size: .92rem; }
.delivery .pc small { color: var(--muted); font-size: .78rem; }
.b2b { margin-top: 26px; padding: 20px; border: 1px solid var(--line); display: grid; gap: 8px; }
.b2b .eyebrow, .b2b p { margin: 0; }
.b2b p:not(.eyebrow) { color: var(--ink-2); font-size: .9rem; }
.b2b .btn { justify-self: start; }
.co-items { display: grid; gap: 8px; }
.co-row { display: grid; grid-template-columns: 1fr auto 90px auto auto; gap: 8px; align-items: center; }
.co-total { display: grid; gap: 6px; padding-top: 12px; border-top: 1px solid var(--line); }
.co-total > span { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.co-total .co-sum b { font: 500 1.6rem var(--f-display); color: var(--gold); }
.co-total .co-disc { color: var(--ok); }
.co-total .co-next { padding: 8px 12px; border-left: 3px solid var(--gold); background: var(--gold-soft); color: var(--ink-2); font-size: .85rem; }
.b2b-tiers { font-size: .88rem; color: var(--ink-2); }
.co-total small { flex-basis: 100%; }
#coIco.ok { color: var(--ok); } #coIco.err, .co-total .err { color: var(--danger); }
#coForm .form-grid { align-items: start; }

/* o masérce */
.about-copy > p:not(.eyebrow):not(.lead) { color: var(--ink-2); margin: 0; line-height: 1.75; }
.about-quote { margin: 4px 0; padding: 6px 0 6px 22px; border-left: 2px solid var(--gold); font: italic 400 clamp(1.25rem, 2.2vw, 1.6rem)/1.4 var(--f-display); color: var(--ink); }
.creds { display: grid; gap: 10px; padding: 18px 20px; border: 1px solid var(--line); background: var(--surface); }
.creds .label { margin: 0; }
.creds ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.creds li { padding: 6px 12px; border: 1px solid var(--line-strong); font-size: .84rem; color: var(--ink-2); }
.creds li:first-child { border-color: var(--gold); color: var(--gold); }
.creds .muted { margin: 0; font-size: .86rem; }
.about-img { align-self: start; position: sticky; top: 100px; }
@media (max-width: 860px) { .about-img { position: relative; top: auto; } }
/* předplatné: přepínač období a dvě široké karty */
.club-group.kind-club > header { align-items: center; }
.period-switch { display: inline-flex; border: 1px solid var(--line-strong); margin-left: auto; }
.period-switch button { border: none; background: none; padding: 10px 16px; cursor: pointer; font-size: .88rem; color: var(--ink-2); transition: background .3s, color .3s; }
.period-switch button + button { border-left: 1px solid var(--line-strong); }
.period-switch button.on { background: var(--gold-soft); color: var(--gold); }
.period-switch small { display: block; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; opacity: .75; }
.club-group.kind-club .club-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 900px) {
  .club-group.kind-club .club-card { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); grid-auto-rows: min-content; column-gap: 30px; row-gap: 14px; }
  .club-group.kind-club .club-card > :not(ul) { grid-column: 1; }
  .club-group.kind-club .club-card ul { grid-column: 2; grid-row: 1 / span 5; align-self: center; padding-left: 26px; border-left: 1px solid var(--line); }
  .club-group.kind-club .club-card.featured ul { border-color: rgba(226, 168, 101, .25); }
}
@media (max-width: 900px) { .club-group.kind-club .club-row { grid-template-columns: 1fr; } .period-switch { margin-left: 0; width: 100%; } .period-switch button { flex: 1; } }
.club-save { justify-self: start; }

/* ===== Halloween: černo-oranžová, dýňová, čarodějnická fialová, jedová zelená ===== */
.voucher-card.halloween {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #2a1a10 0%, #120b07 58%, #050302 100%);
  --vc-ink: #fbe9d4; --vc-gold: linear-gradient(115deg, #9c3d06 0%, #ff8a1f 35%, #ffc27a 48%, #d9611a 65%, #ffa84a 85%, #8f3505 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-s1: #8a3406; --vc-s2: #ffb458; --vc-s3: #e0631a; --vc-s4: #ffc98a;
}
.voucher-card.halloween-dyne {
  --vc-bg: radial-gradient(ellipse 80% 90% at 50% 40%, #f39a3d 0%, #e0701f 55%, #b44d0c 100%);
  --vc-ink: #1a0d05; --vc-gold: linear-gradient(115deg, #0d0806 0%, #3a1e0c 40%, #5a2f12 50%, #1c0f07 70%, #0d0806 100%); --vc-logo: url('/img/brand/logo-light.webp');
  box-shadow: 0 40px 80px -30px rgba(150, 60, 10, .5), inset 0 0 0 1px rgba(60, 25, 5, .35);
  --vc-s1: #120a05; --vc-s2: #4a2610; --vc-s3: #1f1008; --vc-s4: #3a1d0b;
}
.voucher-card.halloween-fialova {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #4a1f6e 0%, #26103d 58%, #110620 100%);
  --vc-ink: #f3e9fb; --vc-gold: linear-gradient(115deg, #a4470e 0%, #ff9a3c 38%, #ffd09a 50%, #e0701f 66%, #ffb25e 85%, #9a400c 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-s1: #9a400c; --vc-s2: #ffc27a; --vc-s3: #e0701f; --vc-s4: #ffd6a2;
}
.voucher-card.halloween-jed {
  --vc-bg: radial-gradient(ellipse 80% 90% at 55% 45%, #16261a 0%, #0a120c 58%, #030604 100%);
  --vc-ink: #eaf7e0; --vc-gold: linear-gradient(115deg, #3f7a12 0%, #9be34a 38%, #d8ffa8 50%, #6fb826 66%, #b4f06a 85%, #36690f 100%); --vc-logo: url('/img/brand/logo-dark.webp');
  --vc-s1: #3a6f10; --vc-s2: #c6ff86; --vc-s3: #74c02a; --vc-s4: #b6f472;
}
.voucher-card:is(.halloween, .halloween-dyne, .halloween-fialova, .halloween-jed)::after {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: calc(var(--vc-pat-op, .2) * var(--pat-k, 1));
  background: var(--vc-pat-color, #ff9a3c);
  -webkit-mask: var(--pat) 0 0 / 11cqi repeat; mask: var(--pat) 0 0 / 11cqi repeat;
}
.voucher-card.halloween { --pat: var(--pat-dyne); --pat-k: 0.6; --vc-pat-color: #ff8a1f; --vc-pat-op: 0.4; }
.voucher-card.halloween-dyne { --pat: var(--pat-netopyri); --pat-k: 0.7; --vc-pat-color: #1a0d05; --vc-pat-op: 0.22; }
.voucher-card.halloween-fialova { --pat: var(--pat-mesic); --pat-k: 0.6; --vc-pat-color: #c9a6ee; --vc-pat-op: 0.35; }
.voucher-card.halloween-jed { --pat: var(--pat-pavuciny); --pat-k: 0.8; --vc-pat-color: #9be34a; --vc-pat-op: 0.3; }
.voucher-card.halloween-jed :is(.vc-logo, .vb-logo) { filter: hue-rotate(40deg) saturate(1.3); }
.voucher-card.halloween-dyne .vc-sash { opacity: .75; }
.sw.halloween { background: radial-gradient(circle at 30% 30%, #2a1a10, #050302); box-shadow: inset 0 0 0 2px #ff8a1f; }
.sw.halloween-dyne { background: radial-gradient(circle at 30% 30%, #f39a3d, #b44d0c); box-shadow: inset 0 0 0 1px #1a0d05; }
.sw.halloween-fialova { background: radial-gradient(circle at 30% 30%, #4a1f6e, #110620); box-shadow: inset 0 0 0 2px #ff9a3c; }
.sw.halloween-jed { background: radial-gradient(circle at 30% 30%, #16261a, #030604); box-shadow: inset 0 0 0 2px #9be34a; }
.promo-band.promo-halloween { --pb-bg: linear-gradient(105deg, #120b07 0%, #2a1406 50%, #8f3505 100%); --pb-ink: #fbe9d4; --pb-acc: #ff9a3c; --pb-pat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath fill='%23fff' d='M30 26.6c-1.1 0-1.7.8-2 1.8-2.4-2.2-6.4-3.2-11-2.2 2.2 1.1 3.3 3.2 2.8 5.4 1.6-1 3.8-1 4.9.6 1-1.6 3.3-1.6 4.4.4.4-.7.9-1 .9-1s.5.3.9 1c1.1-2 3.4-2 4.4-.4 1.1-1.6 3.3-1.6 4.9-.6-.5-2.2.6-4.3 2.8-5.4-4.6-1-8.6 0-11 2.2-.3-1-.9-1.8-2-1.8z'/%3E%3Cpath fill='%23fff' d='M28.6 27.3l-.5-2.3 1.5 1.3zM31.4 27.3l.5-2.3-1.5 1.3z'/%3E%3Ccircle cx='8' cy='50' r='1.2'/%3E%3C/svg%3E"); }
.promo-band.promo-halloween::before { opacity: .22; }
.promo-pop.promo-halloween { background: linear-gradient(135deg, #1a0f08, #6e2a05); --pb-acc: #ff9a3c; }
:root {
  --pat-dyne: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3Cmask id='m'%3E%3Crect width='60' height='60' fill='%23fff'/%3E%3Cg fill='%23000'%3E%3Cpath d='M23.6 31.2l2.6-3.8 2.6 3.8z'/%3E%3Cpath d='M31.2 31.2l2.6-3.8 2.6 3.8z'/%3E%3Cpath d='M22.8 35.2q7.2 6.2 14.4 0l-2 .9-1.2 1.6-1.6-1.2-2.4 1.6-2.4-1.6-1.6 1.2-1.2-1.6z'/%3E%3C/g%3E%3C/mask%3E%3C/defs%3E%3Cg mask='url(%23m)'%3E%3Cellipse cx='22.5' cy='33.5' rx='7' ry='8.6'/%3E%3Cellipse cx='37.5' cy='33.5' rx='7' ry='8.6'/%3E%3Cellipse cx='30' cy='33.5' rx='8' ry='9.6'/%3E%3C/g%3E%3Cpath d='M29 24.2q-.2-4.4 3.4-6.6l1.2 1.4q-2.6 1.8-2.4 5.2z'/%3E%3Ccircle cx='8' cy='52' r='1.3'/%3E%3C/svg%3E");
  --pat-duchove: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3Cmask id='m'%3E%3Crect width='60' height='60' fill='%23fff'/%3E%3Cg fill='%23000'%3E%3Cellipse cx='26.8' cy='28.5' rx='1.5' ry='2.2'/%3E%3Cellipse cx='33.2' cy='28.5' rx='1.5' ry='2.2'/%3E%3Cellipse cx='30' cy='34' rx='1.7' ry='2.3'/%3E%3C/g%3E%3C/mask%3E%3C/defs%3E%3Cpath mask='url(%23m)' d='M21.5 45V28a8.5 8.5 0 0 1 17 0v17l-2.8-2.6-2.9 2.6-2.8-2.6-2.8 2.6-2.9-2.6z'/%3E%3Ccircle cx='52' cy='9' r='1.2'/%3E%3C/svg%3E");
  --pat-netopyri: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M30 26.6c-1.1 0-1.7.8-2 1.8-2.4-2.2-6.4-3.2-11-2.2 2.2 1.1 3.3 3.2 2.8 5.4 1.6-1 3.8-1 4.9.6 1-1.6 3.3-1.6 4.4.4.4-.7.9-1 .9-1s.5.3.9 1c1.1-2 3.4-2 4.4-.4 1.1-1.6 3.3-1.6 4.9-.6-.5-2.2.6-4.3 2.8-5.4-4.6-1-8.6 0-11 2.2-.3-1-.9-1.8-2-1.8z'/%3E%3Cpath d='M28.6 27.3l-.5-2.3 1.5 1.3zM31.4 27.3l.5-2.3-1.5 1.3z'/%3E%3Ccircle cx='8' cy='50' r='1.2'/%3E%3C/svg%3E");
  --pat-pavuciny: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg fill='none' stroke='%23000' stroke-width='.9' stroke-linecap='round'%3E%3Cpath d='M30 29L42.9 34.4M30 29L35.4 41.9M30 29L24.6 41.9M30 29L17.1 34.4M30 29L17.1 23.6M30 29L24.6 16.1M30 29L35.4 16.1M30 29L42.9 23.6M34.2 30.7Q32.5 31.5 31.7 33.2Q30.0 32.5 28.3 33.2Q27.5 31.5 25.8 30.7Q26.5 29.0 25.8 27.3Q27.5 26.5 28.3 24.8Q30.0 25.5 31.7 24.8Q32.5 26.5 34.2 27.3Q33.5 29.0 34.2 30.7M38.3 32.4Q35.0 34.0 33.4 37.3Q30.0 36.0 26.6 37.3Q25.0 34.0 21.7 32.4Q23.0 29.0 21.7 25.6Q25.0 24.0 26.6 20.7Q30.0 22.0 33.4 20.7Q35.0 24.0 38.3 25.6Q37.0 29.0 38.3 32.4M42.2 34.1Q37.3 36.3 35.1 41.2Q30.0 39.3 24.9 41.2Q22.7 36.3 17.8 34.1Q19.7 29.0 17.8 23.9Q22.7 21.7 24.9 16.8Q30.0 18.7 35.1 16.8Q37.3 21.7 42.2 23.9Q40.3 29.0 42.2 34.1'/%3E%3Cpath d='M53 0v7'/%3E%3C/g%3E%3Ccircle cx='53' cy='9' r='1.9'/%3E%3C/svg%3E");
  --pat-mesic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M33 17.5a12.5 12.5 0 1 0 9.5 20.6A10 10 0 1 1 33 17.5z'/%3E%3Cpath d='M16 20l.9 2.1 2.1.9-2.1.9-.9 2.1-.9-2.1-2.1-.9 2.1-.9z'/%3E%3Cpath d='M44 44l.7 1.6 1.6.7-1.6.7-.7 1.6-.7-1.6-1.6-.7 1.6-.7z'/%3E%3Ccircle cx='9' cy='50' r='1.1'/%3E%3C/svg%3E");
}
.voucher-card.pat-dyne { --pat: var(--pat-dyne); --pat-k: 0.6; }
.voucher-card.pat-duchove { --pat: var(--pat-duchove); --pat-k: 0.6; }
.voucher-card.pat-netopyri { --pat: var(--pat-netopyri); --pat-k: 0.7; }
.voucher-card.pat-pavuciny { --pat: var(--pat-pavuciny); --pat-k: 0.8; }
.voucher-card.pat-mesic { --pat: var(--pat-mesic); --pat-k: 0.6; }
.pat-sw.pat-dyne { --pat: var(--pat-dyne); }
.pat-sw.pat-duchove { --pat: var(--pat-duchove); }
.pat-sw.pat-netopyri { --pat: var(--pat-netopyri); }
.pat-sw.pat-pavuciny { --pat: var(--pat-pavuciny); }
.pat-sw.pat-mesic { --pat: var(--pat-mesic); }
.gift-note { flex-basis: 100%; margin: 6px 0 0; padding: 10px 14px; border: 1px dashed var(--gold); background: var(--gold-soft); color: var(--ink); font-size: .9rem; }
#giftInfo.ok { color: var(--ok); } #giftInfo.err { color: var(--danger); }
/* přidané dárkové poukazy (rezervace i objednávka karty) */
.v-chips { display: grid; gap: 6px; margin-top: 8px; }
.v-chip { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding: 9px 12px; border: 1px solid var(--gold); background: var(--gold-soft); font-size: .86rem; }
.v-chip .mono { color: var(--gold); letter-spacing: .06em; }
.v-chip b { margin-left: auto; font-weight: 600; }
.v-chip button { border: none; background: none; padding: 0; color: var(--muted); font-size: .78rem; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.v-chip button:hover { color: var(--danger); }
#voucherInfo.ok, #giftInfo.ok { color: var(--ink-2); }
/* prodloužení karty */
.renew-opts { display: grid; gap: 8px; }
.renew-opts.grid2 { grid-template-columns: 1fr 1fr; }
.renew-opts.grid2 .renew-opt { grid-template-columns: auto 1fr; grid-template-rows: auto auto; gap: 2px 10px; }
.renew-opts.grid2 .renew-opt em { grid-column: 2; }
.renew-opts.grid2 .renew-opt input { grid-row: 1 / span 2; }
.renew-opt > span { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; }
.renew-opt { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); cursor: pointer; transition: border-color .3s, background .3s; }
.renew-opt:hover { border-color: var(--gold-2); }
.renew-opt:has(input:checked) { border-color: var(--gold); background: var(--gold-soft); }
.renew-opt input { accent-color: var(--gold-2); margin: 0; }
.renew-opt small { flex-basis: 100%; font-size: .6rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.renew-opt .muted { font-size: .82rem; }
.renew-opt em { font-style: normal; font-weight: 600; color: var(--gold); white-space: nowrap; }
.renew-sum { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); font-size: .9rem; }
.renew-sum b { font: 500 1.5rem var(--f-display); color: var(--gold); }
#rGiftInfo.err { color: var(--danger); }
/* předplatné: dva přepínače (období, délka masáže) */
.club-switches { display: grid; gap: 10px; margin-left: auto; justify-items: end; }
.club-switches .sw-row { display: flex; align-items: center; gap: 12px; }
.club-switches .sw-row > span { font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.club-switches .period-switch { margin-left: 0; }
@media (max-width: 900px) {
  .club-switches { margin-left: 0; justify-items: stretch; width: 100%; }
  .club-switches .sw-row { flex-direction: column; align-items: stretch; gap: 6px; }
}
.rgrid { display: grid; grid-template-columns: auto 1fr; gap: 8px 12px; align-items: center; }
.rgrid > span { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.rsw { margin: 0; width: 100%; }
.rsw button { flex: 1; padding: 9px 8px; }
.rsw button:disabled { opacity: .3; cursor: not-allowed; }
.rmode { margin: 0 0 4px; width: 100%; }
.rmode button { flex: 1; }
.renew-lines { display: grid; gap: 4px; font-size: .86rem; color: var(--ink-2); }
.renew-lines > div { display: flex; justify-content: space-between; gap: 10px; }
@media (max-width: 520px) { .rgrid { grid-template-columns: 1fr; } }
/* Můj přehled v hlavičce: na počítači ikona + text, na mobilu ikona a položka v menu */
.nav-me { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px 0 12px; border: 1px solid var(--line-strong); border-radius: 999px;
  text-decoration: none; color: var(--ink-2); font-size: .72rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; transition: border-color .3s, color .3s; }
.nav-me:hover { border-color: var(--gold); color: var(--gold); }
.nav-me svg { width: 20px; height: 20px; flex: none; }
.nav-links .nav-me-link { display: none; }
@media (max-width: 1240px) { .nav-me { width: 44px; padding: 0; justify-content: center; } .nav-me span { display: none; } }
@media (max-width: 980px) { .nav-links .nav-me-link { display: block; color: var(--gold); } }
@media (min-width: 981px) and (max-width: 1180px) {
  .nav-links { gap: 14px; }
  .nav-links a { letter-spacing: .1em; }
  .nav-actions { gap: 8px; }
}
@media (min-width: 901px) { .club-switches .period-switch { width: 340px; } .club-switches .period-switch button { flex: 1; padding-inline: 8px; } }

/* =========================================================
   Stránky masáží (/masaze, /masaze/<slug>)
   ========================================================= */
.sp-main { padding-top: 110px; }
.sp-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-bottom: clamp(24px, 4vw, 44px); }
.sp-crumbs a { color: var(--ink-2); text-decoration: none; transition: color .3s; }
.sp-crumbs a:hover { color: var(--gold); }
.sp-hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(28px, 5vw, 70px); align-items: center; }
.sp-hero h1 { font: 400 clamp(2.5rem, 5.5vw, 4.4rem)/1.02 var(--f-display); margin: 0 0 20px; letter-spacing: -.01em; }
.sp-hero .lead { margin: 0 0 28px; }
.sp-hero-img { position: relative; aspect-ratio: 4 / 5; overflow: hidden; }
.sp-hero-img::after { content: ''; position: absolute; inset: 14px; border: 1px solid rgba(240, 198, 125, .35); pointer-events: none; }
.sp-hero-img img { width: 100%; height: 100%; object-fit: cover; }
.sp-prices { display: grid; gap: 8px; margin-bottom: 26px; }
.sp-price { display: grid; grid-template-columns: 78px 1fr auto; align-items: center; gap: 16px; padding: 14px 18px; border: 1px solid var(--line-strong); text-decoration: none; color: var(--ink); transition: border-color .3s, background .3s, transform .4s var(--ease); }
.sp-price:hover { border-color: var(--gold); background: var(--gold-soft); transform: translateX(4px); }
.sp-min { font: 400 2rem/1 var(--f-display); color: var(--gold); }
.sp-min small { font: 500 .7rem/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; margin-left: 4px; color: var(--muted); }
.sp-note { font-size: .9rem; color: var(--ink-2); }
.sp-price b { font-weight: 600; font-feature-settings: 'lnum'; white-space: nowrap; }
.sp-cta { display: flex; flex-wrap: wrap; gap: 10px; }
.sp-body { display: grid; grid-template-columns: 1.3fr .7fr; gap: clamp(30px, 6vw, 90px); padding-block: clamp(60px, 9vw, 120px) clamp(40px, 6vw, 70px); }
.sp-text { display: grid; gap: 40px; align-content: start; }
.sp-text h2, .sp-caution h2, .sp-faq h2, .sp-more h2 { font: 400 clamp(1.7rem, 3vw, 2.3rem)/1.15 var(--f-display); margin: 0 0 16px; }
.sp-text p { margin: 0; color: var(--ink-2); line-height: 1.8; font-size: 1.05rem; max-width: 62ch; }
.sp-side { display: grid; gap: 16px; align-content: start; position: sticky; top: 100px; }
.sp-box { border: 1px solid var(--line); background: var(--surface); padding: 22px 24px; }
.sp-box .label { margin: 0 0 14px; color: var(--gold); }
.sp-list, .sp-steps { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.sp-list li { position: relative; padding-left: 22px; color: var(--ink-2); }
.sp-list li::before { content: ''; position: absolute; left: 0; top: .72em; width: 10px; height: 1px; background: var(--gold); }
.sp-steps { counter-reset: st; }
.sp-steps li { counter-increment: st; display: grid; grid-template-columns: 28px 1fr; gap: 8px; color: var(--ink-2); }
.sp-steps li::before { content: counter(st, decimal-leading-zero); font: 500 .8rem/1.9 var(--f-mono, monospace); color: var(--gold); }
.sp-narrow { max-width: 860px; display: grid; gap: clamp(40px, 6vw, 70px); padding-bottom: clamp(60px, 9vw, 110px); }
.sp-caution { border-left: 2px solid var(--gold); padding: 6px 0 6px 26px; }
.sp-caution p { margin: 0; color: var(--ink-2); line-height: 1.75; }
.sp-faq { border-top: 1px solid var(--line); }
.sp-faq h2 { margin-top: 30px; }
.sp-faq details { border-bottom: 1px solid var(--line); }
.sp-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 0; font: 400 1.3rem/1.3 var(--f-display); }
.sp-faq summary::-webkit-details-marker { display: none; }
.sp-faq summary::after { content: '+'; font: 300 1.6rem/1 var(--f-body); color: var(--gold); transition: transform .5s var(--ease); flex: none; }
.sp-faq details[open] summary::after { transform: rotate(45deg); }
.sp-faq .ans { color: var(--ink-2); padding-bottom: 22px; line-height: 1.75; max-width: 62ch; }
.sp-faq details[open] .ans { animation: faqIn .6s var(--ease); }
.sp-more { padding-bottom: clamp(60px, 9vw, 110px); }
.sp-more-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 10px; }
.sp-more-row a { display: flex; align-items: center; gap: 14px; padding: 10px; border: 1px solid var(--line); text-decoration: none; color: var(--ink); transition: border-color .3s, background .3s; }
.sp-more-row a:hover { border-color: var(--gold); background: var(--gold-soft); }
.sp-more-row img { width: 56px; height: 56px; object-fit: cover; flex: none; }
.sp-more-row span { display: grid; gap: 3px; }
.sp-more-row b { font-weight: 500; font-size: .95rem; }
.sp-more-row small { color: var(--gold); font-size: .82rem; }
.sp-where { border-top: 1px solid var(--line); background: var(--surface); }
.sp-where-in { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; padding-block: clamp(40px, 6vw, 64px); }
.sp-where h2 { font: 400 clamp(1.6rem, 3vw, 2.2rem)/1.15 var(--f-display); margin: 8px 0; }
.sp-where p { margin: 0; }
.sp-where-cta { display: flex; flex-wrap: wrap; gap: 10px; }
.sp-foot-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; margin-bottom: 14px; font-size: .84rem; }
.sp-foot-links a { color: var(--ink-2); text-decoration: none; transition: color .3s; }
.sp-foot-links a:hover { color: var(--gold); }
/* přehled masáží */
.sp-index-head { max-width: 760px; margin-bottom: clamp(36px, 6vw, 60px); }
.sp-index-head h1 { font: 400 clamp(2.8rem, 6vw, 4.6rem)/1 var(--f-display); margin: 0 0 18px; }
.sp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 18px; padding-bottom: clamp(60px, 9vw, 110px); }
.sp-card { display: grid; grid-template-rows: auto 1fr; border: 1px solid var(--line); text-decoration: none; color: var(--ink); background: var(--surface); transition: border-color .4s, transform .6s var(--ease); }
.sp-card:hover { border-color: var(--gold); transform: translateY(-4px); }
.sp-card-img { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.sp-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.sp-card:hover .sp-card-img img { transform: scale(1.04); }
.sp-card-img span { position: absolute; left: 12px; top: 12px; padding: 5px 10px; background: rgba(12, 8, 5, .7); color: #f3e8d8; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; }
.sp-card-body { display: grid; gap: 10px; padding: 20px 22px; align-content: start; }
.sp-card h2 { font: 400 1.45rem/1.2 var(--f-display); margin: 0; }
.sp-card p { margin: 0; color: var(--ink-2); font-size: .95rem; }
.sp-card-foot { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-top: 6px; padding-top: 12px; border-top: 1px solid var(--line); font-size: .85rem; color: var(--muted); }
.sp-card-foot b { color: var(--gold); font-weight: 600; white-space: nowrap; }
.sheet-more { display: inline-block; margin-top: 18px; font-size: .9rem; }
@media (max-width: 900px) {
  .sp-hero, .sp-body { grid-template-columns: 1fr; }
  .sp-hero-img { aspect-ratio: 16 / 10; order: -1; }
  .sp-side { position: static; }
  .sp-main { padding-top: 90px; }
}
@media (max-width: 520px) { .sp-price { grid-template-columns: 62px 1fr auto; gap: 10px; padding: 12px 14px; } .sp-min { font-size: 1.6rem; } }
/* systém má vypnuté animace → pás se nehýbe, masáže se ukážou celé a vystředěné */
@media (prefers-reduced-motion: reduce) {
  .ribbon-track { animation: none; width: auto; flex-wrap: wrap; justify-content: center; white-space: normal; gap: 14px 40px; padding-inline: 20px; font-size: clamp(1.3rem, 2.2vw, 1.8rem); }
  .ribbon-track span { gap: 40px; }
  .ribbon-track .dup { display: none; }
  .ribbon-track span:nth-last-child(1 of :not(.dup))::after { display: none; }
}
/* QR platba za masáž (potvrzení rezervace, Spravovat rezervaci) */
.qr-pay { border: 1px solid var(--line); background: var(--surface); text-align: left; }
.qr-pay summary { cursor: pointer; list-style: none; padding: 14px 16px; font-weight: 500; display: flex; justify-content: space-between; gap: 10px; }
.qr-pay summary::-webkit-details-marker { display: none; }
.qr-pay summary::after { content: '+'; color: var(--gold); font-size: 1.3rem; line-height: 1; transition: transform .4s var(--ease); }
.qr-pay[open] summary::after { transform: rotate(45deg); }
.qr-pay-in { display: grid; grid-template-columns: 170px 1fr; gap: 18px; align-items: start; padding: 0 16px 16px; }
.qr-pay .qr { background: #fff; padding: 8px; }
.qr-pay .qr svg { display: block; width: 100%; height: auto; }
.qr-dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; margin: 12px 0; font-size: .9rem; }
.qr-dl dt { color: var(--muted); } .qr-dl dd { margin: 0; }
@media (max-width: 520px) { .qr-pay-in { grid-template-columns: 1fr; } .qr-pay .qr { max-width: 220px; } }
.qr-pay summary { justify-content: flex-start; align-items: baseline; }
.qr-pay summary .muted { font-weight: 400; font-size: .85rem; }
.qr-pay summary::after { margin-left: auto; }
.qr-pay-in > * { min-width: 0; }
.qr-pay .qr { width: 100%; max-width: 170px; box-sizing: border-box; }
@media (max-width: 520px) { .qr-pay .qr { max-width: 220px; } }
/* zatím nedostupné volby (tištěný poukaz, doplňky k masáži) */
.soon-tag { display: inline-block; margin-left: 6px; padding: 3px 7px; border: 1px solid var(--line-strong); font: 600 .58rem/1 var(--f-body); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); vertical-align: middle; }
.delivery .pc.soon, .addon-list.soon .addon { opacity: .5; cursor: not-allowed; }
.delivery .pc.soon:hover, .addon-list.soon .addon:hover { border-color: var(--line); }
.soon-note { margin: 0; font-size: .86rem; color: var(--muted); }
.qr-pay.chosen { border-color: var(--gold); }
.qr-pay.chosen summary { color: var(--gold); }
.pay-choice { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.pay-hint { display: block; margin-top: 8px; font-size: .82rem; }
.pay-check { display: grid; gap: 6px; justify-items: start; } .pay-check small { font-size: .82rem; }
.frame.portrait img { filter: none; object-position: center top; }
#gallery .g6 img { object-position: 78% center; }

/* malé telefony (do ~420 px): hlavička se musí vejít celá — menší logo, tlačítka a mezery */
@media (max-width: 480px) {
  .nav-in { gap: 10px; height: 72px; }
  .nav.scrolled .nav-in { height: 62px; }
  .nav-actions { gap: 6px; }
  .nav-me, .theme-toggle, .burger { width: 40px; height: 40px; }
  .burger span { left: 11px; right: 11px; }
  .burger span:first-child { top: 16px; } .burger span:last-child { top: 23px; }
  .burger[aria-expanded="true"] span:first-child, .burger[aria-expanded="true"] span:last-child { top: 19px; }
  .brand { gap: 8px; min-width: 0; }
  .brand-fig { width: 44px; }
  .brand-text small { font-size: .62rem; letter-spacing: .2em; }
  .brand-text b { font-size: 1.15rem; letter-spacing: .12em; }
  .eyebrow { letter-spacing: .18em; line-height: 1.6; }
  .eyebrow::before { width: 22px; flex: none; }
}
@media (max-width: 345px) {
  .brand-fig { display: none; }
}
/* firemní objednávka: náhled poukazu ve zvoleném vzhledu */
.co-preview { display: grid; gap: 8px; }
.co-preview > span { font-size: .8rem; }
.co-preview #coPreview { max-width: 420px; }
/* nabídka poukazu: pod hlavními tlačítky a po dokončení rezervace */
.hero-gift { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: baseline; font-size: .92rem; color: var(--ink-2); text-decoration: none; border-bottom: 1px solid transparent; justify-self: start; transition: color .3s, border-color .3s; }
.hero-gift span:first-child { color: var(--gold); font-weight: 600; }
.hero-gift:hover { color: var(--ink); border-color: var(--gold); }
.hero-gift .arrow { transition: transform .4s var(--ease); }
.hero-gift:hover .arrow { transform: translateX(4px); }
.done-gift { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid var(--gold); background: var(--gold-soft); text-decoration: none; color: var(--ink); text-align: left; width: 100%; max-width: 560px; transition: background .3s; }
.done-gift span { color: var(--ink-2); font-size: .9rem; }
.done-gift em { font-style: normal; color: var(--gold); font-weight: 600; font-size: .88rem; }
.done-gift:hover { background: color-mix(in srgb, var(--gold) 16%, transparent); }
