/* ==========================================================================
   Doina Vin · kit/components.css
   Static component layer (end states only; every transition and animation lives in motion.css).
   Requires tokens.css + base.css. Our classes are prefixed dvh-; real WooCommerce / WordPress
   class names are styled alongside where an element maps to one (full table: WOO-MAP.md).

   Contents
    0  Shared marks: dot, rule, pending, example tag, stand-in tag, focal crop
    1  Top bar (not on pages until the free-delivery threshold is confirmed)
    2  Header (desktop + phone)      12  Spec band, spec table, accordion
    3  Phone menu sheet (+ search)   13  Medal chips, critic line
    4  Footer                        14  Cart drawer, line items, progress, cross-sell, visit rows + strip
    5  Buttons, icon buttons         15  Form fields, choice controls, option cards
    6  Chips, facets, filter bar     15b Form helpers: affix, range, tags, switch, radio segments, repeater
    6b Filter partial (sidebar+sheet) 16 Checkout skin; 16a Checkout block; 16b order received
    7  Product card + grids          17  Visits: facts, experience card, hero frame, itinerary,
    7b Rail, house tile, bleed, thumb      booking card (compact, next dates), slot picker, steps
    8  House band, page head         18  Notices, toast
    8b House story: label strip, fact 19  Age gate
       list, honours, awards         20  Cookie bar
    9  Section head, crumbs, pager   21  Admin (wp-admin skin); 21b full-page shell, list tables,
   10  Gallery, buy panel, stepper,        save bar; 21c login screen
       trust, critic line, label art, distinctions card, image view
   11  Buy bar (phone + desktop), booking bar
   ========================================================================== */

/* ---- 0. Shared marks ------------------------------------------------------------------------- */
.dvh-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--house-deep); flex: none; }
.dvh-rule { display: inline-block; width: 24px; height: 3px; background: var(--house-deep); flex: none; }
.dvh-pending { color: var(--muted); font-weight: var(--fw-text); font-style: normal; white-space: nowrap; }   /* "se confirmă" never splits */
.dvh-example {
  display: inline-flex; align-items: center; gap: var(--sp-1); vertical-align: middle;
  padding: 2px 6px; border: 1px dashed var(--control); border-radius: var(--radius-control);
  font-family: var(--font-text); font-style: normal; font-size: var(--fs-eyebrow); line-height: 16px; font-weight: var(--fw-strong);
  letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); background: var(--surface);
}
/* stand-in tag on a photo that does not yet show what it illustrates (until the photo shoot) */
.dvh-standin { position: absolute; left: var(--sp-2); top: var(--sp-2); z-index: 2; }
/* focal crop: zoom a photo toward a focus point so a noisy edge (the cellar's cable tray, parked cars)
   stays out of the frame; --zoom and --focus are set per image (WordPress: the attachment's focal point) */
.dvh-crop { overflow: clip; }
.dvh-crop > img { object-fit: cover; object-position: var(--focus, 50% 50%); transform: scale(var(--zoom, 1)); transform-origin: var(--focus, 50% 50%); }
.dvh-house-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-3); }
.dvh-house-row .dvh-eyebrow { color: var(--ink); }

/* ---- 1. Top bar (optional promise bar, 32 px; costs 32 px of every first screen) ----------------- */
.dvh-topbar { background: var(--band); color: var(--ink); font-size: var(--fs-meta); line-height: 20px; }
.dvh-topbar__inner { min-height: var(--topbar-h); display: flex; align-items: center; justify-content: center; gap: var(--sp-5); padding-block: 6px; }
.dvh-topbar__item { display: inline-flex; align-items: center; gap: var(--sp-2); }
.dvh-topbar__item + .dvh-topbar__item { display: none; }
@media (min-width: 900px) { .dvh-topbar__item + .dvh-topbar__item { display: inline-flex; } }

/* ---- 2. Header ------------------------------------------------------------------------------- */
.dvh-header {
  position: sticky; top: 0; z-index: var(--z-header);
  background: var(--ground);
  border-bottom: 1px solid var(--line);
}
.dvh-header__inner {
  height: calc(var(--header-h) - 1px);   /* + the 1 px hairline = exactly --header-h */
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--sp-3);
}
.dvh-header__logo { justify-self: center; display: block; padding-block: var(--sp-2); }
.dvh-header__logo img { height: 28px; width: auto; }
.dvh-header .dvh-header__menu {
  justify-self: start; display: inline-flex; align-items: center; gap: var(--sp-2); width: auto;
  padding-inline: var(--sp-2) var(--sp-3); margin-left: calc(-1 * var(--sp-2)); font-size: var(--fs-ui); font-weight: var(--fw-ui);
}
.dvh-header__tools { justify-self: end; display: flex; align-items: center; gap: var(--sp-1); }
/* phone: menu button, centred logo, cart; everything else from 900 px */
.dvh-header .dvh-nav, .dvh-header .dvh-header__search, .dvh-header .dvh-header__account,
.dvh-header .dvh-header__lang, .dvh-header .dvh-header__cta { display: none; }

.dvh-nav__list { display: flex; align-items: center; gap: var(--sp-1); list-style: none; padding: 0; }
.dvh-nav__link {
  display: inline-flex; align-items: center; min-height: var(--tap); padding-inline: var(--sp-3);
  color: var(--ink); text-decoration: none; font-size: var(--fs-ui); line-height: var(--lh-ui); font-weight: var(--fw-ui);
  text-decoration-line: underline; text-decoration-color: transparent; text-decoration-thickness: 2px; text-underline-offset: 10px;
}
.dvh-nav__link:hover { text-decoration-color: var(--line); }
.dvh-nav__link[aria-current="page"] { text-decoration-color: var(--ink); }

.dvh-lang { display: flex; align-items: center; }
.dvh-lang a {
  display: inline-grid; place-items: center; min-width: 32px; min-height: var(--tap); padding-inline: 4px;
  color: var(--muted); text-decoration: none; font-size: var(--fs-meta); font-weight: var(--fw-ui); letter-spacing: .02em;
}
.dvh-lang a:hover { color: var(--ink); }
.dvh-lang a[aria-current="true"] { color: var(--ink); font-weight: var(--fw-strong); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }

.dvh-cartbtn { position: relative; display: inline-grid; place-items: center; width: var(--tap); height: var(--tap); color: var(--ink); text-decoration: none; border-radius: var(--radius-control); }
.dvh-cartbtn:hover { background: var(--band); }
.dvh-cartbtn__count {
  position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding-inline: 4px;
  display: grid; place-items: center; border-radius: var(--radius-control);
  background: var(--ink); color: var(--surface); font-size: var(--fs-eyebrow); line-height: 1; font-weight: var(--fw-strong);
  font-variant-numeric: tabular-nums;
}
.dvh-cartbtn__count:empty { display: none; }

@media (min-width: 900px) {
  .dvh-header__inner { grid-template-columns: auto 1fr auto; gap: var(--sp-5); }
  .dvh-header .dvh-header__menu { display: none; }
  .dvh-header__logo { justify-self: start; grid-column: 1; grid-row: 1; }
  .dvh-header__logo img { height: 32px; }
  .dvh-header .dvh-nav { display: block; justify-self: center; }
  .dvh-header .dvh-header__search, .dvh-header .dvh-header__account { display: inline-grid; }
  .dvh-header .dvh-header__lang { display: flex; margin-inline: var(--sp-1); }
}
@media (min-width: 1200px) {
  .dvh-header .dvh-header__cta { display: inline-flex; margin-left: var(--sp-3); }
}
/* "Vizite de grup" beside "Rezervă o vizită" (owner 2026-10-20) once both fit next to the menu in every language;
   narrower screens keep one button and get the group link in the menu sheet */
.dvh-header .dvh-header__cta--group { display: none; }
@media (min-width: 1360px) {
  .dvh-header .dvh-header__cta--group { display: inline-flex; }
  .dvh-header .dvh-header__cta--group + .dvh-header__cta { margin-left: var(--sp-2); }
}

/* ---- 3. Phone menu sheet (dialog, full screen, light) ------------------------------------------ */
.dvh-menu {
  position: fixed; inset: 0; width: 100%; max-width: none; height: 100dvh; max-height: none;
  margin: 0; padding: 0 var(--page-gutter) var(--sp-6); border: 0;
  background: var(--ground); color: var(--ink); overflow-y: auto; overscroll-behavior: contain;
}
.dvh-menu::backdrop { background: var(--scrim); }
.dvh-menu.is-static { position: relative; inset: auto; height: auto; max-width: 420px; border: 1px solid var(--line); border-radius: var(--radius-media); overflow: visible; }
.dvh-menu.is-static .dvh-menu__head { position: relative; border-radius: var(--radius-media) var(--radius-media) 0 0; }
.dvh-menu__head { position: sticky; top: 0; z-index: 1; height: var(--header-h); display: flex; align-items: center; justify-content: space-between; background: var(--ground); border-bottom: 1px solid var(--line); margin-inline: calc(-1 * var(--page-gutter)); padding-inline: var(--page-gutter); }
.dvh-menu__head img { height: 28px; width: auto; }
.dvh-menu__search { padding-top: var(--sp-4); }   /* the phone search lives in the menu (every page) */
.dvh-menu__actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); padding-block: var(--sp-5) var(--sp-4); }
.dvh-menu__groupbtn { grid-column: 1 / -1; gap: var(--sp-2); }
.dvh-menu__nav > ul { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.dvh-menu__nav > ul > li { border-bottom: 1px solid var(--line); }
.dvh-menu__link, .dvh-menu__nav summary {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  min-height: 56px; color: var(--ink); text-decoration: none; cursor: pointer;
  font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-display);
  list-style: none;
}
.dvh-menu__nav summary::-webkit-details-marker { display: none; }
.dvh-menu__nav details[open] > summary .dvh-icon { rotate: 180deg; }
.dvh-menu__count { margin-left: auto; font-family: var(--font-text); font-size: var(--fs-meta); color: var(--muted); font-variant-numeric: tabular-nums; }
.dvh-menu__houses { list-style: none; padding: 0 0 var(--sp-3); display: grid; grid-template-columns: 1fr; }
.dvh-menu__house { display: flex; align-items: center; gap: var(--sp-3); min-height: var(--tap); color: var(--ink); text-decoration: none; font-size: var(--fs-ui); font-weight: var(--fw-ui); }
.dvh-menu__house img { width: 14px; height: 44px; object-fit: contain; }
.dvh-menu__foot { display: grid; gap: var(--sp-3); padding-top: var(--sp-5); }
.dvh-menu__foot .dvh-seg { justify-self: start; }
.dvh-menu__note { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-menu { container-type: inline-size; }
@container (min-width: 560px) { .dvh-menu__houses { grid-template-columns: 1fr 1fr; column-gap: var(--sp-5); } }

/* segmented control (RO / RU / EN, view toggles) */
.dvh-seg { display: inline-flex; border: 1px solid var(--control); border-radius: var(--radius-control); overflow: hidden; background: var(--surface); }
.dvh-seg > * {
  display: inline-grid; place-items: center; min-width: 56px; min-height: var(--tap); padding-inline: var(--sp-4);
  color: var(--ink); text-decoration: none; font-size: var(--fs-ui); font-weight: var(--fw-ui);
}
.dvh-seg > * + * { border-left: 1px solid var(--control); }
.dvh-seg > [aria-current="true"], .dvh-seg > [aria-pressed="true"] { background: var(--ink); color: var(--surface); }

/* ---- 4. Footer (the one deep surface: forest + bone) ------------------------------------------- */
.dvh-footer { --ring: var(--focus-on-deep); position: relative; isolation: isolate; overflow: clip; background: var(--deep); color: var(--on-deep); padding-block: var(--sp-8) var(--sp-6); font-size: var(--fs-ui); line-height: 1.55; }
.dvh-footer::before {   /* the monogram rings (the one graphic device of A+) at 6 %: one brand mark on every page */
  content: ""; position: absolute; z-index: -1; right: -140px; top: -140px; width: 520px; aspect-ratio: 1;
  opacity: .06; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400' fill='none' stroke='%23ECE8E1'%3E%3Ccircle cx='200' cy='200' r='186' stroke-width='16'/%3E%3Ccircle cx='200' cy='200' r='150' stroke-width='2'/%3E%3Cpath d='M200 70a130 130 0 0 1 0 260' stroke-width='14'/%3E%3Cpath d='M200 40v320' stroke-width='14'/%3E%3C/svg%3E") center / contain no-repeat;
}
.dvh-footer a { color: var(--on-deep); text-decoration-color: var(--line-on-deep); }
.dvh-footer a:hover { text-decoration-color: currentColor; }
.dvh-footer__top { display: grid; gap: var(--sp-4); padding-bottom: var(--sp-7); border-bottom: 1px solid var(--line-on-deep); }
.dvh-footer__logo { height: 36px; width: auto; }
.dvh-footer__line { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); max-width: 34ch; text-wrap: balance; }
.dvh-footer__line .dvh-kicker { color: var(--on-deep-muted); display: block; margin-bottom: var(--sp-2); }
.dvh-footer__cols { display: grid; grid-template-columns: 1fr; gap: var(--sp-6) var(--sp-5); padding-block: var(--sp-7); }
.dvh-footer__title { font-family: var(--font-text); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--on-deep-muted); margin-bottom: var(--sp-3); }
.dvh-footer__list { list-style: none; padding: 0; display: grid; gap: 2px; }
.dvh-footer__list a { display: inline-flex; align-items: center; min-height: 36px; }
.dvh-footer address { font-style: normal; }
.dvh-footer__more { margin-top: var(--sp-2); }
.dvh-footer__cta { margin-top: var(--sp-4); }
.dvh-footer .dvh-pending { color: var(--on-deep-muted); }
.dvh-footer__legal { display: grid; gap: var(--sp-2); padding-top: var(--sp-5); border-top: 1px solid var(--line-on-deep); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--on-deep-muted); }
.dvh-footer__legal .dvh-lang a { color: var(--on-deep-muted); }
.dvh-footer__legal .dvh-lang a[aria-current="true"] { color: var(--on-deep); }
@media (min-width: 600px) { .dvh-footer__cols { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) {
  .dvh-footer__cols { grid-template-columns: 1.3fr 1fr 1fr 1fr; }
}

/* ---- 5. Buttons ----------------------------------------------------------------------------------
   One filled action per view (--action). Secondary = 1 px ink outline. Tertiary = underlined link.
   Woo: .single_add_to_cart_button, .checkout-button, #place_order, .button.alt -> primary;
        .add_to_cart_button (loops) -> card add; other .button -> secondary.                       */
.dvh-btn, .button, .wc-block-components-button {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2);
  min-height: 48px; padding: 0 var(--sp-5);
  border: 1px solid transparent; border-radius: var(--radius-control);
  font-family: var(--font-text); font-size: var(--fs-btn); line-height: 1.2; font-weight: var(--fw-strong);
  text-decoration: none; text-align: center; white-space: nowrap; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.dvh-btn--primary, .single_add_to_cart_button, .checkout-button, #place_order, .button.alt,
.wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button {
  background: var(--action); color: var(--on-action); border-color: var(--action);
}
.dvh-btn--primary:hover, .single_add_to_cart_button:hover, .checkout-button:hover, #place_order:hover, .button.alt:hover,
.wc-block-components-checkout-place-order-button:hover, .wc-block-cart__submit-button:hover {
  background: var(--action-hover); border-color: var(--action-hover);
}
.dvh-btn--secondary, .button:not(.alt):not(.add_to_cart_button):not(.single_add_to_cart_button):not(.checkout-button) {
  background: transparent; color: var(--ink); border-color: var(--ink);
}
.dvh-btn--secondary:hover, .button:not(.alt):not(.add_to_cart_button):not(.single_add_to_cart_button):not(.checkout-button):hover { background: var(--band); }
.dvh-btn--tertiary, .added_to_cart {
  min-height: var(--tap); padding: 0; border: 0; background: none; color: var(--link);
  font-size: var(--fs-ui); font-weight: var(--fw-ui); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em;
}
.dvh-btn--tertiary:hover, .added_to_cart:hover { text-decoration-thickness: 2px; }
.dvh-btn--on-deep { background: transparent; color: var(--on-deep); border-color: var(--on-deep); }
.dvh-btn--on-deep:hover { background: rgb(236 232 225 / .10); }
.dvh-btn--sm { min-height: 40px; padding-inline: var(--sp-4); font-size: var(--fs-ui); }
.dvh-btn--block { display: flex; width: 100%; }
.dvh-btn[disabled], .dvh-btn[aria-disabled="true"], .button.disabled, .button:disabled {
  background: var(--band); color: var(--muted); border-color: var(--band);
}
/* price inside the button (Away pattern): "Adaugă în coș · 349,00 MDL" */
.dvh-btn__price { display: inline-flex; align-items: center; gap: var(--sp-2); font-variant-numeric: tabular-nums; font-weight: var(--fw-strong); }
.dvh-btn__price::before { content: ""; width: 1px; height: 18px; background: currentColor; opacity: .35; }

/* icon button: 44 px hit area */
.dvh-iconbtn {
  display: inline-grid; place-items: center; width: var(--tap); height: var(--tap);
  border-radius: var(--radius-control); color: var(--ink); text-decoration: none; background: transparent;
}
.dvh-iconbtn:hover { background: var(--band); }

/* card add: 40 px outline "Adaugă", fills on hover/press, "În coș" success state */
.dvh-add, .add_to_cart_button {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 40px; padding: 0 var(--sp-3); border: 1px solid var(--ink); border-radius: var(--radius-control);
  background: var(--surface); color: var(--ink); font-size: var(--fs-ui); line-height: 1; font-weight: var(--fw-strong);
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.dvh-add::before, .add_to_cart_button::before { content: ""; position: absolute; inset: -3px; }   /* 46 px hit area */
.dvh-add:hover, .dvh-add:active, .add_to_cart_button:hover { background: var(--action); border-color: var(--action); color: var(--on-action); }
.dvh-add__idle, .dvh-add__done { display: inline-flex; align-items: center; gap: 6px; }
.dvh-add .dvh-add__done { display: none; }
.dvh-add[aria-pressed="true"], .dvh-add.is-added, .add_to_cart_button.added {
  background: var(--surface); border-color: var(--success); color: var(--success);
}
.dvh-add[aria-pressed="true"] .dvh-add__idle, .dvh-add.is-added .dvh-add__idle { display: none; }
.dvh-add[aria-pressed="true"] .dvh-add__done, .dvh-add.is-added .dvh-add__done { display: inline-flex; align-items: center; gap: 6px; }

/* ---- 6. Chips, facets, filter bar ---------------------------------------------------------------- */
.dvh-chip {
  position: relative; display: inline-flex; align-items: center; gap: var(--sp-2);
  height: 32px; padding: 0 var(--sp-3); border: 1px solid var(--line); border-radius: var(--radius-control);
  background: var(--surface); color: var(--ink); font-size: var(--fs-meta); line-height: 1; font-weight: var(--fw-ui);
  white-space: nowrap; text-decoration: none; cursor: pointer;
}
.dvh-chip::before { content: ""; position: absolute; inset: -6px -2px; }   /* 44 px hit area */
.dvh-chip:hover { border-color: var(--control); }
.dvh-chip[aria-pressed="true"], .dvh-chip[aria-current="true"] { background: var(--ink); border-color: var(--ink); color: var(--surface); }
.dvh-chip[aria-pressed="true"] .dvh-dot, .dvh-chip[aria-current="true"] .dvh-dot { box-shadow: 0 0 0 1.5px var(--surface); }
.dvh-chip__count { color: var(--muted); font-variant-numeric: tabular-nums; font-weight: var(--fw-text); }
.dvh-chip[aria-pressed="true"] .dvh-chip__count, .dvh-chip[aria-current="true"] .dvh-chip__count { color: var(--line); }
.dvh-chip--remove { padding-right: var(--sp-2); }
.dvh-chip--remove .dvh-icon { width: 14px; height: 14px; }

/* horizontally scrollable chip row with edge fade and arrows (desktop) */
.dvh-chiprow { position: relative; display: flex; align-items: center; min-width: 0; }
.dvh-chiprow__track {
  display: flex; gap: var(--sp-2); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity;
  scrollbar-width: none; padding-block: 6px; padding-inline: 2px;
  mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent 100%);   /* fade only where more chips wait */
}
.dvh-chiprow__track::-webkit-scrollbar { display: none; }
.dvh-chiprow__track > * { scroll-snap-align: start; flex: none; }
.dvh-chiprow__arrow { display: none; }
@media (min-width: 900px) and (hover: hover) {
  .dvh-chiprow__arrow { display: inline-grid; flex: none; }
}

/* facet button + panel */
.dvh-facet { position: relative; }
.dvh-facet__btn {
  display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 var(--sp-3);
  border: 1px solid var(--control); border-radius: var(--radius-control); background: var(--surface);
  font-size: var(--fs-meta); font-weight: var(--fw-ui); color: var(--ink); white-space: nowrap;
}
.dvh-facet__btn .dvh-icon { width: 16px; height: 16px; }
.dvh-facet__btn[aria-expanded="true"] { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.dvh-facet__btn[aria-expanded="true"] .dvh-icon { rotate: 180deg; }
.dvh-facet__btn .dvh-facet__n { display: inline-grid; place-items: center; min-width: 20px; height: 20px; border-radius: var(--radius-control); background: var(--ink); color: var(--surface); font-size: 12px; font-variant-numeric: tabular-nums; }
.dvh-facet__panel {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: var(--z-pop);
  width: max-content; min-width: 260px; max-width: min(360px, 90vw); padding: var(--sp-4);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); box-shadow: var(--shadow-pop);
}
.dvh-facet__list { list-style: none; padding: 0; display: grid; gap: 2px; }
.dvh-facet__actions { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); margin-top: var(--sp-3); padding-top: var(--sp-3); border-top: 1px solid var(--line); }
.dvh-facet__panel.is-static { position: static; box-shadow: none; }
a.dvh-facet__btn { text-decoration: none; }
/* one-option facet as a toggle in the filter bar ("Medaliate"): aria-pressed, same box as the facets */
.dvh-facet__btn[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--surface); }
.dvh-facet__btn[aria-pressed="true"] .dvh-chip__count { color: var(--line); }
/* compact select (filter bar sort, admin rows, language switchers) */
.dvh-select--sm { min-height: 40px; padding-block: 8px; font-size: var(--fs-meta); }

/* sticky filter bar under the header */
.dvh-filterbar {
  position: sticky; top: var(--header-h); z-index: var(--z-sticky);
  background: var(--ground); border-bottom: 1px solid var(--line);
}
.dvh-filterbar.is-static { position: relative; top: auto; z-index: auto; }
.dvh-filterbar__inner { min-height: var(--filterbar-h); display: flex; align-items: center; gap: var(--sp-3); }
.dvh-filterbar__chips { flex: 1 1 auto; min-width: 0; }
.dvh-filterbar__facets, .dvh-filterbar__sort { display: none; }
.dvh-filterbar__phone { flex: none; }
@media (min-width: 900px) {
  .dvh-filterbar__facets { display: flex; align-items: center; gap: var(--sp-2); flex: none; }
  .dvh-filterbar__sort { display: block; flex: none; }
  .dvh-filterbar__phone { display: none; }
  .dvh-filterbar__chips { flex-basis: 0; }
}
.dvh-activefilters { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); padding-block: var(--sp-3); }
.dvh-activefilters__label { font-size: var(--fs-meta); color: var(--muted); margin-right: var(--sp-1); }
.dvh-activefilters__count { margin-right: var(--sp-2); font-size: var(--fs-ui); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; }
.dvh-activefilters .dvh-btn--tertiary { margin-left: var(--sp-2); }

/* search field */
.dvh-search { position: relative; display: flex; align-items: center; }
.dvh-search .dvh-icon { position: absolute; left: 14px; color: var(--muted); pointer-events: none; }
.dvh-search input { padding-left: 44px; }

/* ---- 6b. Filter partial: one markup for the desktop sidebar and the phone sheet ---------------
   Vocabulary (blueprint 3.5): Sortare, Culoare, Zahăr, Categorie, Soi, Preț, Medaliate, IGP Codru.
   Native layered-nav GET parameters (?filter_culoare=rosu&filter_zahar=sec), so it works without JS. */
.dvh-filters { min-width: 0; }
.dvh-filters__title { margin-bottom: var(--sp-3); }
.dvh-filters__group { margin: 0; padding: var(--sp-4) 0; border: 0; border-top: 1px solid var(--line); min-inline-size: 0; }
.dvh-filters__group:first-child { border-top: 0; padding-top: var(--sp-2); }
/* floated, the legend sits in the flow and leaves the hairline whole (a rendered legend would cut it) */
.dvh-filters__legend { float: left; width: 100%; margin-bottom: var(--sp-1); padding: 0; color: var(--ink); }
.dvh-filters__legend + * { clear: both; }
.dvh-filters__group > .dvh-select { margin-top: var(--sp-1); }
.dvh-filters__more > summary { list-style: none; }
.dvh-filters__more > summary::-webkit-details-marker { display: none; }
.dvh-filters__more[open] > summary .dvh-icon { rotate: 180deg; }
/* desktop sidebar: sticky under the filter bar, scrolling inside itself when taller than the screen */
.dvh-filters--side {
  position: sticky; top: calc(var(--header-h) + var(--filterbar-h) + var(--sp-4));
  max-height: calc(100vh - var(--header-h) - var(--filterbar-h) - 2 * var(--sp-4));
  overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; padding-right: var(--sp-3);
}
/* phone sheet = the drawer dialog holding the same groups, with a pinned foot ("Resetează" +
   "Arată N vinuri"). Its #id anchor state shows it open without JS (and on review links). */
dialog.dvh-drawer:target { display: flex; flex-direction: column; z-index: var(--z-drawer); }
dialog.dvh-drawer:target:not([open]) { translate: none; }

/* ---- 7. Product card + grid (WooCommerce li.product) ---------------------------------------------
   Neutral --well in mixed-house grids; --house-tint only on single-house surfaces
   (.dvh-house-surface / tax-product_cat term pages). House identity in a mixed grid = eyebrow + dot. */
.dvh-cards, ul.products {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4) var(--col-gap);
}
@media (min-width: 600px) { .dvh-cards, ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-5) var(--col-gap); } }
@media (min-width: 1200px) { .dvh-cards, ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.dvh-house-surface { --card-well: var(--house-tint); }
/* fluid grid: columns follow the results column, not the viewport (4 x 234 px beside the 1440 sidebar,
   3 x 248 px at 1200); the parent carries .dvh-results */
.dvh-results { min-width: 0; container: dvh-results / inline-size; }
@container dvh-results (max-width: 559.98px) { .dvh-cards--fluid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container dvh-results (min-width: 560px) { .dvh-cards--fluid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container dvh-results (min-width: 960px) { .dvh-cards--fluid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* single-house strip ("Din aceeași casă"): the kit grid from 600 px; on phones a swipe row of 66 %
   cards (wide enough for a medal chip) running to the screen edge */
@media (max-width: 599.98px) {
  .dvh-cards--strip {
    grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 66%;
    overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
    margin-inline: calc(-1 * var(--page-gutter)); padding-inline: var(--page-gutter); scroll-padding-inline: var(--page-gutter);
  }
  .dvh-cards--strip::-webkit-scrollbar { display: none; }
  .dvh-cards--strip > .dvh-card { scroll-snap-align: start; }
}

.dvh-card, ul.products li.product {
  position: relative; display: flex; flex-direction: column; min-width: 0;
  padding: 6px 6px var(--sp-3); background: var(--surface); border-radius: var(--radius-media);
  container: dvh-card / inline-size;
}
.dvh-card__link { display: flex; flex-direction: column; color: inherit; text-decoration: none; border-radius: var(--radius-media); }
.dvh-card__link:hover .dvh-card__title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.dvh-card__well {
  position: relative; aspect-ratio: 4 / 5; overflow: clip; isolation: isolate;
  background: var(--card-well, var(--well)); border-radius: 6px;
}
/* bottle: renders carry ~5 % transparent padding; 87 % image height = bottle at ~78 % of the well */
.dvh-card__img {
  position: absolute; left: 50%; bottom: 4%; z-index: 1;
  height: 87%; width: auto; max-width: none; translate: -50% 0;
}
.dvh-card__well::before {   /* the one contact shadow */
  content: ""; position: absolute; left: 50%; bottom: 8.4%; z-index: 0;
  width: 34%; height: 4.5%; translate: -50% 50%; background: var(--contact-shadow);
}
.dvh-card__badges, .dvh-gallery__badges { list-style: none; padding: 0; display: flex; flex-wrap: nowrap; gap: 4px; }
.dvh-card__badges { position: absolute; top: 6px; left: 6px; right: 6px; z-index: 2; }
.dvh-card__badges .dvh-medal, .dvh-gallery__badges .dvh-medal { min-width: 0; flex: 0 1 auto; }
.dvh-card__badges .dvh-medal:last-child:not(:first-child), .dvh-gallery__badges .dvh-medal:last-child:not(:first-child) { flex: none; }   /* the "+N" chip */
.dvh-card__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: var(--sp-3) 6px 0; }
.dvh-card__eyebrow { display: flex; align-items: flex-start; gap: 6px; font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.dvh-card__eyebrow .dvh-dot { margin-top: 4px; }   /* centred on the first line */
/* a long house name wraps to a second line instead of being cut */
.dvh-card__eyebrow > span:last-child { min-width: 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.dvh-card__title, .woocommerce-loop-product__title {
  margin-top: var(--sp-2);
  font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title);
  color: var(--ink); text-wrap: balance;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
}
.dvh-card__meta { margin-top: var(--sp-1); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-card__meta > span + span::before { content: " · "; }
/* meta line and price row sit outside the card link (one action per card): they take the body's inset */
.dvh-card > .dvh-card__meta, .dvh-card > .dvh-card__foot { padding-inline: 6px; }
.dvh-card__foot { margin-top: auto; padding-top: var(--sp-3); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-2) var(--sp-3); }
.dvh-card__price, ul.products li.product .price { font-size: var(--fs-price); line-height: var(--lh-price); font-weight: var(--fw-strong); color: var(--ink); }
/* the price row stacks by card width, not by viewport: under 264 px ("1.250,00 MDL" + "Adaugă") the
   price sits above a full-width add, so every card in a row has the same anatomy in every state */
@container dvh-card (max-width: 263.98px) {
  .dvh-card__foot { flex-direction: column; align-items: stretch; }
  .dvh-card__foot .dvh-add { width: 100%; }
}
/* phone-width cards (under 200 px): the standard 750 ml is implied (other volumes still show), and a
   medal chip keeps medal + year (the competition stays for screen readers; full names on the wine page) */
@container dvh-card (max-width: 199.98px) {
  .dvh-card__meta > .is-std { display: none; }
  .dvh-card__meta > .is-std:first-child + span::before { content: none; }
  .dvh-card__badges .dvh-medal__comp { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}
.dvh-card--compact .dvh-card__well { aspect-ratio: 4 / 5; }
.dvh-card--compact .dvh-card__title { -webkit-line-clamp: 1; line-clamp: 1; }

/* ---- 7b. Rail (a row of cards with arrows; reuses .dvh-chiprow so kit.js scrolls it), house tile ---- */
.dvh-rail { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--sp-5) var(--sp-4); }
.dvh-rail__head > * + * { margin-top: var(--sp-2); }
.dvh-rail__nav { display: flex; gap: var(--sp-2); }
.dvh-rail > .dvh-chiprow__track { grid-column: 1 / -1; gap: var(--col-gap); padding-block: 0 var(--sp-2); }
/* house tile: the house's bottles as one group (three, or two for two-wine houses), one contact shadow;
   mixed houses, so neutral wells and the house dot */
.dvh-housetile { width: min(40vw, 216px); }
.dvh-housetile .dvh-card__well::before { width: 70%; }
.dvh-housetile .dvh-card__img { height: 74%; }
.dvh-housetile .dvh-card__img:nth-of-type(1) { left: 27%; }  /* -of-type: cards.js inserts a turntable <video> after a bottle */
.dvh-housetile .dvh-card__img:nth-of-type(2) { left: 50%; height: 86%; z-index: 2; }
.dvh-housetile .dvh-card__img:nth-of-type(3) { left: 73%; }
.dvh-housetile .dvh-card__img:nth-of-type(1):nth-last-of-type(2) { left: 37%; height: 82%; }
.dvh-housetile .dvh-card__img:nth-of-type(2):last-of-type { left: 63%; height: 82%; }
.dvh-housetile .dvh-card__img:only-of-type { left: 50%; height: 86%; }  /* one-wine lines (KAVI, MOG) */
/* phone: horizontal scrollers run to the screen edge, so the next item peeks in (no fade over it) */
@media (max-width: 899.98px) {
  .dvh-bleed { margin-inline: calc(-1 * var(--page-gutter)); padding-inline: var(--page-gutter); scroll-padding-inline: var(--page-gutter); mask-image: none; }
}

/* small bottle thumbnail (lists): neutral well, house tint on a single-house surface */
.dvh-thumb { position: relative; flex: none; width: 48px; height: 60px; overflow: clip; background: var(--card-well, var(--well)); border-radius: 6px; }
.dvh-thumb img { position: absolute; left: 50%; bottom: 3%; height: 92%; width: auto; max-width: none; translate: -50% 0; }
.dvh-thumb--sm { width: 28px; height: 40px; border-radius: var(--radius-control); }

/* ---- 8. House band and page head -------------------------------------------------------------- */
.dvh-houseband {
  --ring: var(--focus-on-deep);
  position: relative; isolation: isolate; overflow: clip;
  background: var(--house-deep); color: var(--on-house);
}
.dvh-houseband::before {   /* monogram rings as a line device, 10 % */
  content: ""; position: absolute; z-index: -1; right: -120px; top: 50%; width: 560px; aspect-ratio: 1; translate: 0 -50%;
  opacity: .1; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400' fill='none' stroke='%23fff'%3E%3Ccircle cx='200' cy='200' r='186' stroke-width='16'/%3E%3Ccircle cx='200' cy='200' r='150' stroke-width='2'/%3E%3Cpath d='M200 70a130 130 0 0 1 0 260' stroke-width='14'/%3E%3Cpath d='M200 40v320' stroke-width='14'/%3E%3C/svg%3E") center / contain no-repeat;
}
.dvh-houseband a { color: inherit; }
.dvh-houseband__inner { display: grid; gap: var(--sp-5); align-items: center; padding-block: var(--sp-6); }
.dvh-houseband__eyebrow { display: flex; flex-wrap: wrap; gap: var(--sp-2); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: rgb(255 255 255 / .82); }
.dvh-houseband__title { margin-top: var(--sp-2); font-size: var(--fs-h1); line-height: var(--lh-h1); color: inherit; }
.dvh-houseband__line { margin-top: var(--sp-2); max-width: 52ch; font-size: var(--fs-body); line-height: 1.55; color: rgb(255 255 255 / .9); text-wrap: pretty; }
/* house name and its kicker "(IGP Codru)" on one baseline; the kicker at the eyebrow's 82 % white */
.dvh-houseband__titlerow { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: var(--sp-3); margin-top: var(--sp-2); }
.dvh-houseband__titlerow .dvh-houseband__title { margin-top: 0; }
.dvh-houseband .dvh-kicker { color: inherit; opacity: .82; }
/* proof row under the house line: medals (link to the distinctions) and the critics' range.
   Phone: one line, "·" separators, short labels; from 600 px: 16 px icons and long labels */
.dvh-houseband__proof {
  list-style: none; padding: 0; margin-top: var(--sp-3);
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-1) var(--sp-2);
  font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui);
}
.dvh-houseband__proof li { display: inline-flex; align-items: center; gap: 6px; }
.dvh-houseband__proof li + li::before { content: "·"; margin-right: 2px; }
.dvh-houseband__proof .dvh-icon, .dvh-houseband__long { display: none; }
@media (min-width: 600px) {
  .dvh-houseband__proof { gap: var(--sp-2) var(--sp-5); margin-top: var(--sp-4); }
  .dvh-houseband__proof li + li::before { content: none; }
  .dvh-houseband__proof .dvh-icon { display: block; width: 16px; height: 16px; }
  .dvh-houseband__long { display: inline; }
}
@media (max-width: 899.98px) { .dvh-houseband__inner { padding-block: var(--sp-5); } }   /* phone price stays on the first screen */
.dvh-houseband__bottles { display: none; }
@media (min-width: 900px) {
  .dvh-houseband__inner { grid-template-columns: minmax(0, 1fr) 360px; min-height: 230px; max-height: 230px; padding-block: 0; }
  .dvh-houseband__bottles {
    display: flex; justify-content: center; align-items: flex-end; gap: 4px; align-self: stretch;
    padding: 20px 24px 0; background: var(--house-tint); border-radius: var(--radius-media) var(--radius-media) 0 0; margin-top: 24px;
  }
  .dvh-houseband__bottles img { height: 176px; width: auto; margin-inline: -4px; }
}

.dvh-pagehead { padding-block: var(--sp-5) var(--sp-4); }
.dvh-pagehead__row { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--sp-3) var(--sp-5); }
.dvh-pagehead__title { font-size: var(--fs-h1); line-height: var(--lh-h1); }
.dvh-pagehead__count { margin-top: var(--sp-1); font-size: var(--fs-ui); color: var(--muted); }
.dvh-pagehead .dvh-search { flex: 0 1 360px; }
@media (max-width: 599.98px) { .dvh-pagehead .dvh-search { flex-basis: 100%; } }

/* ---- 8b. House page story: label art, facts, medals by wine, critics, house-level awards ---------- */
/* label art by vintage (a 4:5 crop of the bottle render: label paper, vintage and painting); phone scroller */
.dvh-labelstrip {
  list-style: none; padding: 0 0 var(--sp-2);
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(148px, 42%); gap: var(--col-gap);
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scrollbar-width: thin;
}
.dvh-labelstrip > li { min-width: 0; scroll-snap-align: start; }
@media (min-width: 900px) { .dvh-labelstrip { grid-auto-flow: row; grid-template-columns: repeat(5, minmax(0, 1fr)); overflow: visible; padding-bottom: 0; } }
.dvh-labelstrip__frame { position: relative; aspect-ratio: 4 / 5; overflow: clip; background: var(--house-tint); border-radius: var(--radius-media); }
.dvh-labelstrip__frame img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 74%; }
.dvh-labelstrip figcaption { display: grid; justify-items: start; gap: var(--sp-1); margin-top: var(--sp-3); }
.dvh-labelstrip__artist { font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title); }
.dvh-labelstrip__artist--pending { font-family: var(--font-text); font-size: var(--fs-ui); font-weight: var(--fw-text); line-height: calc(var(--fs-card) * var(--lh-card)); }
.dvh-labelstrip__wine { font-size: var(--fs-meta); line-height: var(--lh-meta); }
/* short fact list (label left from 600 px) */
.dvh-factlist { border-top: 1px solid var(--line); }
.dvh-factlist > div { display: grid; gap: var(--sp-1); padding-block: var(--sp-4); border-bottom: 1px solid var(--line); }
.dvh-factlist dd { font-size: var(--fs-ui); line-height: 1.55; }
@media (min-width: 600px) { .dvh-factlist > div { grid-template-columns: 88px minmax(0, 1fr); gap: var(--sp-4); align-items: baseline; } }
/* medals by wine: thumb, name (wraps) and price (top right), then the full medal names (they wrap) */
.dvh-honours { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.dvh-honours > li { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: var(--sp-2) var(--sp-4); padding-block: var(--sp-4); border-bottom: 1px solid var(--line); }
.dvh-honours > li > .dvh-thumb { grid-row: span 2; }
.dvh-honours__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: var(--sp-1) var(--sp-3); }
.dvh-honours__name { font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title); }
.dvh-honours__head .dvh-price { line-height: var(--lh-card); }
.dvh-honours .dvh-medal { white-space: normal; }
.dvh-honours .dvh-medal > span:last-child { overflow: visible; }
.dvh-critics { border-top: 1px solid var(--line); }
/* house-level awards named as on the certificate (never on a live SKU) */
.dvh-awardlist { list-style: none; padding: 0; margin-top: var(--sp-3); border-top: 1px solid var(--line); }
.dvh-awardlist li { display: grid; gap: 2px; padding-block: var(--sp-3); border-bottom: 1px solid var(--line); }
.dvh-awardlist__what { font-size: var(--fs-ui); line-height: var(--lh-ui); font-weight: var(--fw-ui); }

/* ---- 9. Section head, breadcrumb, pager -------------------------------------------------------- */
.dvh-sechead { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--sp-3) var(--sp-5); margin-bottom: var(--sp-6); }
.dvh-sechead__text > * + * { margin-top: var(--sp-2); }
.dvh-crumbs, .woocommerce-breadcrumb { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-crumbs ol { list-style: none; padding: 0; display: flex; flex-wrap: wrap; align-items: center; }
.dvh-crumbs li + li::before { content: "/"; margin-inline: var(--sp-2); color: var(--line); }
.dvh-crumbs a, .woocommerce-breadcrumb a { color: var(--muted); text-decoration: none; }
.dvh-crumbs a:hover, .woocommerce-breadcrumb a:hover { color: var(--ink); text-decoration: underline; }
.dvh-crumbs [aria-current="page"] { color: var(--ink); }
.dvh-more { display: grid; justify-items: center; gap: var(--sp-3); padding-top: var(--sp-7); }
/* how far the reader is ("Ați văzut 24 din 59 de vinuri"): --seen is the share already shown */
.dvh-more__seen { position: relative; width: 240px; max-width: 100%; height: 2px; background: var(--line); }
.dvh-more__seen::before { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--seen, 0%); background: var(--ink); }

/* ---- 10. Gallery, buy panel, stepper, trust checklist ------------------------------------------- */
.dvh-product { display: grid; gap: var(--sp-5); padding-top: var(--sp-3); }
@media (min-width: 900px) {
  .dvh-product { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--sp-7); padding-top: var(--sp-5); align-items: start; }
}
.dvh-gallery, .woocommerce-product-gallery { position: relative; }
.dvh-gallery__well {
  position: relative; overflow: clip; isolation: isolate; aspect-ratio: 4 / 5; max-height: 380px; width: 100%;
  background: var(--house-tint); border-radius: var(--radius-media);
}
.dvh-gallery__well::before { content: ""; position: absolute; left: 50%; bottom: 8.4%; width: 26%; height: 4%; translate: -50% 50%; background: var(--contact-shadow); }
.dvh-gallery__img { position: absolute; left: 50%; bottom: 4%; z-index: 1; height: 87%; width: auto; max-width: none; translate: -50% 0; }
.dvh-gallery__badges { position: absolute; top: var(--sp-3); left: var(--sp-3); right: var(--sp-3); z-index: 2; gap: 6px; }
.dvh-zoom {
  position: absolute; right: var(--sp-3); bottom: var(--sp-3); z-index: 2;
  display: inline-grid; place-items: center; width: var(--tap); height: var(--tap);
  background: var(--surface); color: var(--ink); border: 1px solid var(--line); border-radius: var(--radius-control);
}
.dvh-zoom:hover { border-color: var(--ink); }
@media (min-width: 900px) {
  .dvh-gallery { position: sticky; top: calc(var(--header-h) + var(--sp-5)); }
  .dvh-gallery__well { max-height: calc(100vh - var(--header-h) - 2 * var(--sp-5)); max-height: calc(100svh - var(--header-h) - 2 * var(--sp-5)); }
}

.dvh-buy, .summary.entry-summary { min-width: 0; }
.dvh-buy > * + * { margin-top: var(--sp-3); }
.dvh-buy .dvh-crumbs + * { margin-top: var(--sp-4); }
.dvh-buy__title, .product_title { margin-top: var(--sp-2); font-family: var(--font-display); font-size: var(--fs-h1-wine); line-height: var(--lh-h1-wine); font-weight: var(--fw-title); text-wrap: balance; }
.dvh-buy .dvh-buy__title { margin-top: var(--sp-2); }
.dvh-buy__meta { font-size: var(--fs-ui); line-height: var(--lh-ui); color: var(--muted); }
.dvh-buy__price, .summary .price { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--sp-2) var(--sp-3); margin-top: var(--sp-4); }
.dvh-buy__price .dvh-price-lg, .summary .price .woocommerce-Price-amount { font-size: var(--fs-price-lg); line-height: 1.15; }
.dvh-buy__desc, .woocommerce-product-details__short-description { max-width: 60ch; font-size: var(--fs-body); line-height: 1.6; text-wrap: pretty; }
/* scoped to the summary: the buy bar is printed as a second form.cart and keeps its own grid */
.dvh-buy__form, .summary form.cart { display: flex; flex-wrap: wrap; gap: var(--sp-3); margin-top: var(--sp-5); }
.dvh-buy__form .dvh-btn--primary, .summary form.cart .single_add_to_cart_button { flex: 1 1 240px; }
.dvh-buy__links { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-5); }
/* critic score under the meta line (Wine.com "JS 93" pattern), linking to the distinctions */
.dvh-criticline { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--sp-3); width: fit-content; color: inherit; text-decoration: none; }
.dvh-criticline__score { font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title); font-variant-numeric: tabular-nums lining-nums; }
.dvh-criticline__score small { font-family: var(--font-text); font-size: var(--fs-meta); font-weight: var(--fw-text); color: var(--muted); }
.dvh-criticline__src { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); text-decoration: underline; text-decoration-color: transparent; text-underline-offset: .2em; }
a.dvh-criticline:hover .dvh-criticline__src { color: var(--ink); text-decoration-color: currentColor; }
/* label art: a CSS crop of the label from the 345 x 1000 bottle render (x 66-278, y 580-848) */
.dvh-labelart { position: relative; display: block; aspect-ratio: 212 / 268; overflow: clip; border-radius: 2px; }
.dvh-labelart img { position: absolute; left: 0; top: 0; width: 162.74%; height: auto; max-width: none; translate: -19.13% -58%; }
/* label teaser at the foot of the buy panel: links to the label story */
.dvh-labeltease {
  display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: var(--sp-4);
  margin-top: var(--sp-5); padding: var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-3);
  background: var(--surface); border-radius: var(--radius-media); color: var(--ink); text-decoration: none;
}
.dvh-labeltease__text { display: grid; gap: 2px; min-width: 0; }
.dvh-labeltease__name { font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title); }
.dvh-labeltease:hover .dvh-labeltease__name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
/* distinctions on a white card: medals stacked (long names wrap), the critic score under a hairline */
.dvh-palmares { padding: var(--sp-6) var(--sp-5); background: var(--surface); border-radius: var(--radius-media); }
@media (min-width: 900px) { .dvh-palmares { padding: var(--sp-6); } }
.dvh-palmares .dvh-medals { flex-direction: column; align-items: flex-start; margin-top: var(--sp-5); }
.dvh-palmares .dvh-medal { max-width: 100%; white-space: normal; }
.dvh-palmares .dvh-critic { margin-top: var(--sp-5); border-top: 1px solid var(--line); border-bottom: 0; padding-bottom: 0; }
.dvh-palmares .dvh-critic__src a { white-space: nowrap; }
.dvh-palmares .dvh-critic__src .dvh-icon { display: inline-block; vertical-align: -2px; margin-left: 2px; }
/* image view opened by the gallery's zoom button: the bottle on the house tint, as tall as the screen allows */
.dvh-zoomview {
  width: min(calc(100vw - 2 * var(--page-gutter)), 560px); max-width: none; max-height: calc(100dvh - 2 * var(--sp-5));
  margin: auto; padding: var(--sp-7) var(--sp-5) var(--sp-5); border: 0; border-radius: var(--radius-media);
  background: var(--house-tint); color: var(--ink); box-shadow: var(--shadow-overlay); overflow: hidden;
}
.dvh-zoomview::backdrop { background: var(--scrim); }
.dvh-zoomview img { height: min(1000px, calc(100dvh - 2 * var(--sp-5) - var(--sp-7) - var(--sp-5))); width: auto; margin-inline: auto; }
.dvh-zoomview__close { position: absolute; top: var(--sp-2); right: var(--sp-2); }

/* quantity stepper (WooCommerce .quantity input.qty keeps its id, name, min, max) */
.dvh-stepper, .quantity {
  display: inline-flex; align-items: stretch; height: 48px;
  border: 1px solid var(--control); border-radius: var(--radius-control); background: var(--surface);
}
.dvh-stepper__btn {
  display: inline-grid; place-items: center; width: 44px; color: var(--ink);
}
.dvh-stepper__btn:hover { background: var(--band); }
.dvh-stepper__btn:disabled { color: var(--line); background: transparent; }
.dvh-stepper__input, .quantity .qty {
  width: 48px; border: 0; border-inline: 1px solid var(--line); background: transparent; text-align: center;
  font-size: var(--fs-btn); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield;
}
.dvh-stepper__input::-webkit-outer-spin-button, .dvh-stepper__input::-webkit-inner-spin-button,
.quantity .qty::-webkit-outer-spin-button, .quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.dvh-stepper--sm { height: 40px; }
.dvh-stepper--sm .dvh-stepper__btn { width: 36px; }
.dvh-stepper--sm .dvh-stepper__btn::before { content: ""; position: absolute; inset: -2px 0; }
.dvh-stepper--sm .dvh-stepper__btn { position: relative; }
.dvh-stepper--sm .dvh-stepper__input { width: 36px; font-size: var(--fs-ui); }

/* trust checklist under the add button (Bose) */
.dvh-trust { list-style: none; padding: var(--sp-4) 0 0; margin-top: var(--sp-4); border-top: 1px solid var(--line); display: grid; gap: var(--sp-2); }
.dvh-trust li { display: grid; grid-template-columns: 20px 1fr; gap: var(--sp-3); align-items: start; font-size: var(--fs-meta); line-height: 20px; }
.dvh-trust .dvh-icon { width: 20px; height: 20px; color: var(--leaf); stroke-width: 2; }
.dvh-trust .dvh-pending { display: inline; }

/* ---- 11. Buy bar: fixed on phone from first paint; on desktop it docks once the in-panel button
        has scrolled away (motion.css; without scroll-timeline support it simply stays visible) ----- */
.dvh-buybar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-buybar);
  background: var(--surface); box-shadow: var(--shadow-bar);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.dvh-buybar__inner {
  height: var(--buybar-h);
  display: grid; align-items: center; align-content: center; column-gap: var(--sp-2);
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  grid-template-areas: "thumb info step btn" "thumb price step btn";
}
.dvh-buybar__thumb { grid-area: thumb; position: relative; width: 28px; height: 44px; border-radius: 4px; background: var(--house-tint); overflow: clip; }
.dvh-buybar__thumb img { position: absolute; left: 50%; bottom: 2px; height: 96%; width: auto; max-width: none; translate: -50% 0; }
.dvh-buybar__info { grid-area: info; min-width: 0; align-self: end; }
.dvh-buybar__house { display: none; }
.dvh-buybar__name { font-family: var(--font-display); font-size: var(--fs-ui); line-height: 20px; font-weight: var(--fw-title); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dvh-buybar__price { grid-area: price; align-self: start; min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dvh-buybar__price .dvh-buybar__qty { color: var(--muted); font-weight: var(--fw-text); }
.dvh-buybar .dvh-stepper { grid-area: step; }
.dvh-buybar .dvh-stepper--sm .dvh-stepper__btn { width: 40px; }
.dvh-buybar .dvh-stepper--sm .dvh-stepper__input { width: 32px; }
.dvh-buybar__btn { grid-area: btn; min-height: 44px; padding-inline: var(--sp-3); }
.dvh-buybar.is-static { position: relative; z-index: auto; }
@media (max-width: 899.98px) { .dvh-buybar__qty { display: none; } }   /* phone: live total only; the stepper shows the quantity */
@media (max-width: 359.98px) { .dvh-buybar__thumb { display: none; } }
@media (min-width: 900px) {
  .dvh-buybar { border-top: 1px solid var(--line); box-shadow: 0 -12px 32px -18px rgb(26 23 27 / .22); }
  .dvh-buybar__inner { column-gap: var(--sp-5); grid-template-columns: auto minmax(0, 1fr) auto auto auto; grid-template-areas: "thumb info price step btn"; }
  .dvh-buybar__info, .dvh-buybar__price { align-self: center; }
  .dvh-buybar__house { display: flex; align-items: center; gap: 6px; font-size: var(--fs-eyebrow); line-height: 16px; font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
  .dvh-buybar__name { font-size: var(--fs-card); line-height: 24px; }
  .dvh-buybar__price { font-size: var(--fs-price); line-height: 24px; }
  .dvh-buybar__btn { min-height: 48px; padding-inline: var(--sp-5); }
  .dvh-buybar__thumb { width: 40px; height: 56px; }
}
/* phone: the bar is the buy control, so the in-panel form steps aside (one filled action per view) */
@media (max-width: 899.98px) { .dvh-has-buybar .dvh-buy__form { display: none; } }
/* booking bar (experience page, phones): name, price and one action, no thumb or stepper; motion.css
   hands the action over to the booking card while that card is on screen. From 900 px the sticky card
   is the control. */
.dvh-buybar--book .dvh-buybar__inner { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "info btn" "price btn"; column-gap: var(--sp-3); }
@media (min-width: 900px) { .dvh-buybar--book { display: none; } }

/* ---- 12. Spec band, spec table, accordion ------------------------------------------------------- */
.dvh-specband { background: var(--band); border-top: 3px solid var(--house-deep); }
.dvh-specband__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dvh-spec { padding: var(--sp-5) var(--sp-4) var(--sp-5) 0; border-bottom: 1px solid var(--line); min-width: 0; }
.dvh-spec dt { font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.dvh-spec dd { margin-top: var(--sp-2); }
.dvh-spec .dvh-numeral { display: flex; align-items: baseline; gap: 2px; font-family: var(--font-display); }
.dvh-spec__unit { font-family: var(--font-text); font-size: var(--fs-ui); color: var(--muted); margin-left: 4px; }
.dvh-spec__text { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-display); text-wrap: balance; }
.dvh-spec .dvh-pending { font-size: var(--fs-ui); line-height: 32px; }
@media (min-width: 900px) {
  .dvh-specband__grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
  .dvh-spec { padding: var(--sp-6) var(--sp-5); border-bottom: 0; border-left: 1px solid var(--line); }
  .dvh-spec:first-child { border-left: 0; padding-left: 0; }
}

.dvh-spectable, .woocommerce-product-attributes, .shop_attributes { width: 100%; border-collapse: collapse; font-size: var(--fs-ui); }
.dvh-spectable th, .dvh-spectable td,
.woocommerce-product-attributes th, .woocommerce-product-attributes td { padding: var(--sp-3) 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.dvh-spectable th, .woocommerce-product-attributes-item__label { width: 40%; padding-right: var(--sp-4); font-weight: var(--fw-text); color: var(--muted); }
.woocommerce-product-attributes-item__value p { margin: 0; }

.dvh-accordion { border-top: 1px solid var(--line); }
.dvh-acc { border-bottom: 1px solid var(--line); }
.dvh-acc > summary {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4);
  min-height: 60px; cursor: pointer; list-style: none;
  font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-display);
}
.dvh-acc > summary::-webkit-details-marker { display: none; }
.dvh-acc[open] > summary .dvh-icon { rotate: 180deg; }
.dvh-acc__body { padding-bottom: var(--sp-5); max-width: var(--text-measure); }
.dvh-acc__body > * + * { margin-top: var(--sp-3); }

/* quote (italic = quotes only) */
.dvh-quotebox { border-left: 3px solid var(--house-deep); padding-left: var(--sp-5); }
.dvh-quotebox blockquote p { font-family: var(--font-display); font-size: var(--fs-quote); line-height: var(--lh-quote); font-style: italic; text-wrap: balance; }
.dvh-quotebox figcaption { margin-top: var(--sp-3); font-size: var(--fs-meta); color: var(--muted); }

/* ---- 13. Medal chips, critic line (verified entries only; no gold) ------------------------------- */
.dvh-medals, .dv-awards { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.dvh-medal, .dv-award {
  display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 3px 10px 3px 8px;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-control);
  font-size: var(--fs-eyebrow); line-height: 16px; font-weight: var(--fw-ui); color: var(--ink); white-space: nowrap; min-width: 0;
}
.dvh-medal > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* .dvh-medal__comp wraps the competition inside a chip, so narrow cards can keep "Aur · 2019" (section 7);
   .dvh-wide / .dvh-narrow swap a long and a short competition name at 600 px */
.dvh-narrow { display: none; text-decoration: none; }
@media (max-width: 599.98px) { .dvh-wide { display: none; } .dvh-narrow { display: inline; } }
.dvh-medal .dvh-icon { width: 16px; height: 16px; stroke-width: 1.6; }
.dvh-medal b, .dv-award__medal { font-weight: var(--fw-strong); }
.dvh-medal--lg { min-height: 36px; padding: 6px 12px 6px 10px; font-size: var(--fs-meta); line-height: 20px; }
.dvh-critic { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-1) var(--sp-4); align-items: baseline; padding-block: var(--sp-4); border-bottom: 1px solid var(--line); }
.dvh-critic__score { font-family: var(--font-display); font-size: var(--fs-h2); line-height: 1; font-variant-numeric: tabular-nums; }
.dvh-critic__score small { font-family: var(--font-text); font-size: var(--fs-meta); color: var(--muted); }
.dvh-critic__src { font-size: var(--fs-meta); color: var(--muted); }

/* ---- 14. Cart drawer (dialog: right 440 px, full screen on phone) -------------------------------- */
.dvh-drawer {
  position: fixed; inset: 0 0 0 auto; width: min(var(--drawer-w), 100vw); height: 100dvh; max-width: 100vw; max-height: none;
  margin: 0; padding: 0; border: 0; background: var(--surface); color: var(--ink); box-shadow: var(--shadow-overlay);
  overflow: hidden;
}
.dvh-drawer[open], .dvh-drawer.is-static { display: flex; flex-direction: column; }
.dvh-drawer::backdrop { background: var(--scrim); }
.dvh-drawer.is-static { position: relative; inset: auto; width: 100%; max-width: var(--drawer-w); height: auto; box-shadow: none; border: 1px solid var(--line); border-radius: var(--radius-media); }
.dvh-drawer__head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); height: 64px; padding-inline: var(--sp-5) var(--sp-3); border-bottom: 1px solid var(--line); }
.dvh-drawer__title { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); }
.dvh-drawer__body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: var(--sp-2) var(--sp-5) var(--sp-5); }
.dvh-drawer__foot { flex: none; display: grid; gap: var(--sp-3); padding: var(--sp-4) var(--sp-5) calc(var(--sp-4) + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line); background: var(--surface); }
.dvh-drawer__total { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); font-size: var(--fs-body); font-weight: var(--fw-strong); }
.dvh-drawer__total .dvh-price { font-size: var(--fs-price-lg); }
.dvh-drawer__note { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); text-wrap: pretty; }
/* foot actions: "Continuă cumpărăturile" (link) and the one filled action; side by side when they fit
   (440 px drawer, filter sheet), otherwise the filled action takes its own full-width row at the bottom */
.dvh-drawer__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-5); }
.dvh-drawer__actions > .dvh-btn--primary { flex: 1 1 auto; padding-inline: var(--sp-4); }
/* "added" status under the head, after an add (role=status; kit.js fills the name) */
.dvh-drawer__added {
  display: flex; align-items: center; gap: var(--sp-2); margin-top: var(--sp-3); padding: 6px var(--sp-3);
  border-radius: var(--radius-control); background: var(--ground); color: var(--success);
  font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui);
}
.dvh-drawer__added .dvh-icon { stroke-width: 2; }
.dvh-drawer__section { padding-top: var(--sp-5); }
.dvh-drawer__section > h3 { display: flex; align-items: center; gap: var(--sp-2); font-family: var(--font-text); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); margin-bottom: var(--sp-3); }

/* line item (mini-cart / cart rows) */
.dvh-lines, .woocommerce-mini-cart { list-style: none; padding: 0; }
.dvh-line, .woocommerce-mini-cart-item {
  display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: var(--sp-1) var(--sp-4);
  padding-block: var(--sp-4); border-bottom: 1px solid var(--line);
}
.dvh-line__thumb { grid-row: span 2; position: relative; width: 64px; height: 80px; border-radius: 6px; background: var(--well); overflow: clip; }
.dvh-line__thumb img { position: absolute; left: 50%; bottom: 3%; height: 92%; width: auto; max-width: none; translate: -50% 0; }
.dvh-line__thumb--photo img { inset: 0; translate: none; width: 100%; height: 100%; object-fit: cover; }
.dvh-line__name { font-family: var(--font-display); font-size: var(--fs-ui); line-height: 20px; font-weight: var(--fw-title); }
.dvh-line__meta { font-size: var(--fs-meta); line-height: 20px; color: var(--muted); }
.dvh-line__total { font-size: var(--fs-ui); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.dvh-line__actions { grid-column: 2 / -1; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); margin-top: var(--sp-2); }
.dvh-line__remove, .remove_from_cart_button { display: inline-flex; align-items: center; gap: 6px; min-height: var(--tap); color: var(--muted); font-size: var(--fs-meta); text-decoration: underline; text-underline-offset: .2em; }
.dvh-line__remove:hover { color: var(--ink); }

/* free-delivery progress (MDL), shown only once the threshold is a confirmed fact */
.dvh-progress { display: grid; gap: var(--sp-2); padding: var(--sp-3) var(--sp-4); background: var(--ground); border-radius: var(--radius-control); font-size: var(--fs-meta); line-height: var(--lh-meta); }
.dvh-progress__track { height: 6px; border-radius: 1px; background: var(--band); overflow: hidden; }
.dvh-progress__fill { height: 100%; width: var(--progress, 0%); background: var(--action); border-radius: inherit; }
.dvh-delivery-line { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-4); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--ink); }
.dvh-delivery-line > span { display: inline-flex; align-items: center; gap: 6px; }
.dvh-delivery-line .dvh-icon { width: 16px; height: 16px; color: var(--leaf); }

/* compact product (drawer cross-sell, "Din aceeași casă" strips) */
.dvh-minis { list-style: none; padding: 0; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(140px, 1fr); gap: var(--sp-3); overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: thin; padding-bottom: var(--sp-2); min-width: 0; max-width: 100%; contain: inline-size; }
.dvh-mini { display: grid; gap: 6px; align-content: start; min-width: 0; padding: 6px 6px var(--sp-2); background: var(--surface); border-radius: var(--radius-media); scroll-snap-align: start; }
.dvh-drawer .dvh-mini { padding: 0; }
.dvh-mini__well { position: relative; aspect-ratio: 4 / 5; border-radius: 6px; background: var(--card-well, var(--well)); overflow: clip; }
.dvh-mini__well img { position: absolute; left: 50%; bottom: 4%; height: 87%; width: auto; max-width: none; translate: -50% 0; }
.dvh-mini__name { font-family: var(--font-display); font-size: var(--fs-meta); line-height: 18px; font-weight: var(--fw-title); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.dvh-mini__row { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.dvh-mini__price { font-size: var(--fs-meta); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dvh-mini .dvh-add { min-height: 36px; padding-inline: 10px; }

/* visit teaser: one row per visit (Literata name, price, chevron); the same rows on the house and wine
   strips, in the drawer, on the thank-you page and under "Alte vizite". Phone: the price under the name.
   Every visit price is per person (owner 2026-10-18): the price carries .dvh-per "de persoană". */
.dvh-visitrows { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.dvh-visitrow {
  display: grid; grid-template-columns: minmax(0, 1fr) 20px; grid-template-areas: "name go" "price go";
  align-items: center; gap: 2px var(--sp-3); min-height: 64px; padding-block: var(--sp-3);
  border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none;
}
@media (min-width: 600px) { .dvh-visitrow { grid-template-columns: minmax(0, 1fr) auto 20px; grid-template-areas: "name price go"; } }
.dvh-visitrow > .dvh-icon { grid-area: go; }
.dvh-visitrow__name { grid-area: name; font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--fw-title); }
.dvh-visitrow__price { grid-area: price; font-size: var(--fs-ui); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dvh-visitrow:hover .dvh-visitrow__name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
/* "de persoană" after a visit price (rows, visit cards, home visits); in a row it sits under the price from 600 px */
.dvh-per { font-size: var(--fs-meta); line-height: var(--lh-meta); font-weight: var(--fw-text); color: var(--muted); white-space: nowrap; }
@media (min-width: 600px) { .dvh-visitrow__price:has(.dvh-per) { text-align: end; } .dvh-visitrow__price .dvh-per { display: block; } }
/* visit strip (house and wine pages): photo 7 / text 5 */
.dvh-visitstrip__inner { display: grid; gap: var(--sp-6); align-items: center; }
@media (min-width: 900px) { .dvh-visitstrip__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--sp-8); } }
.dvh-visitstrip__media { aspect-ratio: 3 / 2; overflow: clip; border-radius: var(--radius-media); background: var(--surface); }
.dvh-visitstrip__media img { width: 100%; height: 100%; object-fit: cover; }
.dvh-visitstrip__body > * + * { margin-top: var(--sp-3); }
.dvh-visitstrip__where { display: flex; align-items: flex-start; gap: var(--sp-2); }
.dvh-visitstrip__where .dvh-icon { margin-top: 2px; }
.dvh-visitstrip__body > .dvh-visitrows, .dvh-visitstrip__body > .dvh-visitstrip__cta { margin-top: var(--sp-5); }
.dvh-empty { display: grid; justify-items: center; gap: var(--sp-3); padding: var(--sp-8) var(--sp-4); text-align: center; }
.dvh-empty .dvh-icon { width: 40px; height: 40px; color: var(--line); stroke-width: 1.2; }

/* ---- 15. Form fields, choice controls, option cards --------------------------------------------- */
.dvh-field, .form-row { display: grid; gap: 6px; align-content: start; min-width: 0; }
.dvh-label, .form-row label, .wc-block-components-text-input label { font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui); color: var(--ink); }
.dvh-label .dvh-req, .form-row .required { color: var(--error); text-decoration: none; border: 0; }
.dvh-input, .dvh-select, .dvh-textarea,
.form-row .input-text, .form-row select, .woocommerce-input-wrapper .input-text,
.wc-block-components-text-input input {
  width: 100%; min-height: 48px; padding: 12px 14px;
  background: var(--surface); color: var(--ink); border: 1px solid var(--control); border-radius: var(--radius-control);
  font-size: var(--fs-btn); line-height: 22px;
}
.dvh-input::placeholder, .dvh-textarea::placeholder { color: var(--muted); opacity: 1; }
.dvh-input:hover, .dvh-select:hover, .dvh-textarea:hover { border-color: var(--ink); }
.dvh-input:focus-visible, .dvh-select:focus-visible, .dvh-textarea:focus-visible { outline-offset: 1px; border-color: var(--ink); }
.dvh-textarea { min-height: 112px; resize: vertical; }
.dvh-select, .form-row select {
  appearance: none; padding-right: 44px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A171B' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 9.5l5.5 5.5 5.5-5.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 20px;
}
.dvh-help { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-field.is-invalid .dvh-input, .dvh-field.is-invalid .dvh-select, .woocommerce-invalid .input-text, .has-error input {
  border-color: var(--error); box-shadow: inset 0 0 0 1px var(--error);
}
.dvh-error, .woocommerce-invalid .woocommerce-error { display: flex; gap: 6px; align-items: start; font-size: var(--fs-meta); line-height: 20px; color: var(--error); }
.dvh-error .dvh-icon { width: 16px; height: 16px; margin-top: 2px; }
.dvh-fields { display: grid; gap: var(--sp-4); }
@media (min-width: 600px) { .dvh-fields--2 { grid-template-columns: 1fr 1fr; } .dvh-fields--2 > .dvh-field--full { grid-column: 1 / -1; } }

.dvh-check, .dvh-radio { display: flex; align-items: flex-start; gap: var(--sp-3); min-height: var(--tap); padding-block: 10px; font-size: var(--fs-ui); line-height: 24px; cursor: pointer; }
.dvh-check input, .dvh-radio input, .wc-block-components-checkbox__input, .woocommerce-form__input-checkbox {
  appearance: none; flex: none; width: 20px; height: 20px; margin: 2px 0 0; display: grid; place-content: center;
  border: 1.5px solid var(--control); border-radius: 4px; background: var(--surface); cursor: pointer;
}
.dvh-radio input { border-radius: 50%; }
.dvh-check input:checked, .wc-block-components-checkbox__input:checked, .woocommerce-form__input-checkbox:checked {
  background: var(--action) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 14px no-repeat;
  border-color: var(--action);
}
.dvh-radio input:checked { border-color: var(--action); background: radial-gradient(circle, var(--action) 0 4.5px, var(--surface) 5px); }
.dvh-check input:hover, .dvh-radio input:hover { border-color: var(--ink); }
.dvh-count { margin-left: auto; color: var(--muted); font-size: var(--fs-meta); font-variant-numeric: tabular-nums; }

/* option cards (delivery, payment): label wraps a radio */
.dvh-options { display: grid; gap: var(--sp-2); }
.dvh-option, .wc-block-components-radio-control__option {
  display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: var(--sp-1) var(--sp-3); align-items: start;
  padding: var(--sp-4); border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--surface); cursor: pointer;
}
.dvh-option input { appearance: none; width: 20px; height: 20px; margin: 2px 0 0; border: 1.5px solid var(--control); border-radius: 50%; background: var(--surface); cursor: pointer; }
.dvh-option input:checked { border-color: var(--action); background: radial-gradient(circle, var(--action) 0 4.5px, var(--surface) 5px); }
.dvh-option:hover { border-color: var(--control); }
.dvh-option:has(input:checked) { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.dvh-option:has(input:disabled) { cursor: not-allowed; background: var(--ground); }
.dvh-option__title { font-weight: var(--fw-ui); font-size: var(--fs-ui); line-height: 24px; }
.dvh-option__desc { grid-column: 2 / -1; font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-option__price { font-size: var(--fs-ui); line-height: 24px; font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---- 15b. Form helpers (wp-admin product sheet and settings; usable in the shop too) ------------- */
/* unit affix: "13,5 | % vol", "349,00 | MDL" */
.dvh-affix { display: flex; align-items: stretch; min-width: 0; }
.dvh-affix .dvh-input { min-width: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.dvh-affix__unit {
  display: inline-flex; align-items: center; flex: none; padding-inline: var(--sp-3);
  background: var(--band); color: var(--muted); border: 1px solid var(--control); border-left: 0;
  border-radius: 0 var(--radius-control) var(--radius-control) 0; font-size: var(--fs-ui); white-space: nowrap;
}
/* from–to pair */
.dvh-range { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: var(--sp-2); }
.dvh-range__dash { color: var(--muted); }
/* tag input (grapes, pairings): removable tags and a free input; the ring follows keyboard focus */
.dvh-tags {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 48px; padding: 7px 8px;
  background: var(--surface); border: 1px solid var(--control); border-radius: var(--radius-control); cursor: text;
}
.dvh-tags:hover { border-color: var(--ink); }
.dvh-tags:has(.dvh-tags__input:focus-visible) { border-color: var(--ink); outline: 2px solid var(--focus); outline-offset: 1px; }
.dvh-tags__list { display: contents; list-style: none; }
.dvh-tags__tag { display: inline-flex; align-items: center; height: 32px; padding-left: 10px; background: var(--ground); border: 1px solid var(--line); border-radius: var(--radius-control); font-size: var(--fs-meta); font-weight: var(--fw-ui); white-space: nowrap; }
.dvh-tags__remove { display: inline-grid; place-items: center; width: 30px; height: 30px; color: var(--muted); border-radius: var(--radius-control); }
.dvh-tags__remove:hover { color: var(--ink); }
.dvh-tags__remove .dvh-icon { width: 14px; height: 14px; }
.dvh-tags__input { flex: 1 1 14ch; min-width: 14ch; height: 32px; padding: 0 6px; border: 0; background: transparent; font-size: var(--fs-btn); }   /* the placeholder never truncates */
.dvh-tags__input::placeholder { color: var(--muted); opacity: 1; }
.dvh-tags__input:focus-visible { outline: none; }
/* switch: square-cornered track (no pill), filled with --action when on */
.dvh-switch { position: relative; display: inline-flex; align-items: center; gap: var(--sp-3); min-height: var(--tap); cursor: pointer; font-size: var(--fs-ui); font-weight: var(--fw-ui); }
.dvh-switch input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; }
.dvh-switch__track { position: relative; flex: none; width: 44px; height: 24px; background: var(--surface); border: 1.5px solid var(--control); border-radius: var(--radius-control); }
.dvh-switch__track::after { content: ""; position: absolute; top: 3px; left: 3px; width: 15px; height: 15px; border-radius: 2px; background: var(--control); }
.dvh-switch input:checked + .dvh-switch__track { background: var(--action); border-color: var(--action); }
.dvh-switch input:checked + .dvh-switch__track::after { translate: 20px 0; background: var(--on-action); }
.dvh-switch input:focus-visible + .dvh-switch__track { outline: 2px solid var(--focus); outline-offset: 2px; }
.dvh-switch:hover .dvh-switch__track { border-color: var(--ink); }
.dvh-switch:hover input:checked + .dvh-switch__track { background: var(--action-hover); border-color: var(--action-hover); }
/* segmented control built from radios (language tabs of a text box); panels follow with :has(), no JS */
fieldset.dvh-seg { margin: 0; padding: 0; min-width: 0; }
.dvh-seg--radio > input { position: absolute; width: 1px; height: 1px; min-width: 0; min-height: 0; margin: 0; padding: 0; opacity: 0; pointer-events: none; }
.dvh-seg--radio > * + * { border-left: 0; }
.dvh-seg--radio > label + input + label { border-left: 1px solid var(--control); }
.dvh-seg--radio > label { display: inline-flex; gap: 6px; min-height: 40px; padding-inline: var(--sp-4); font-weight: var(--fw-strong); cursor: pointer; white-space: nowrap; }
.dvh-seg--radio > label:hover { background: var(--band); }
.dvh-seg--radio > label .dvh-pending { font-size: var(--fs-meta); }
.dvh-seg--radio > label .dvh-icon { width: 16px; height: 16px; color: var(--success); stroke-width: 2; }
.dvh-seg--radio > input:checked + label { background: var(--ink); color: var(--surface); }
.dvh-seg--radio > input:checked + label :is(.dvh-pending, .dvh-icon) { color: var(--line); }
.dvh-seg--radio > input:focus-visible + label { outline: 2px solid var(--focus); outline-offset: -4px; }
@media (max-width: 782.98px) { .dvh-seg--radio > label { min-height: var(--tap); padding-inline: var(--sp-3); } }
/* repeater (medals of a wine): grip, fields, move up / down, delete; labelled stacked fields in a narrow box */
.dvh-repeater { container: dvh-repeater / inline-size; }
.dvh-repeater__cols, .dvh-repeater__row { display: grid; grid-template-columns: 20px 140px minmax(0, 1fr) 96px 112px; gap: var(--sp-3); align-items: center; }
.dvh-repeater__cols { padding: 0 var(--sp-3) var(--sp-2); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.dvh-repeater__rows { list-style: none; padding: 0; display: grid; gap: var(--sp-2); }
.dvh-repeater__row { padding: var(--sp-2) var(--sp-3); background: var(--ground); border: 1px solid var(--line); border-radius: var(--radius-control); }
.dvh-repeater__grip { display: inline-grid; place-items: center; color: var(--muted); cursor: grab; }
.dvh-repeater__grip .dvh-icon { width: 20px; height: 20px; }
.dvh-repeater__field { display: grid; gap: 4px; min-width: 0; }
.dvh-repeater__label { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.dvh-repeater__actions { display: flex; align-items: center; gap: 2px; }
.dvh-repeater__actions .dvh-iconbtn { width: 36px; height: 36px; color: var(--muted); }
.dvh-repeater__actions .dvh-iconbtn:hover { color: var(--ink); background: var(--band); }
.dvh-repeater__actions .dvh-iconbtn:disabled { color: var(--line); background: transparent; }
.dvh-repeater__actions .dvh-icon { width: 18px; height: 18px; }
.dvh-repeater__add { margin-top: var(--sp-3); }
/* the competition comes from a fixed list carrying the short chip label; free text only under "Alt concurs" */
.dvh-repeater__pick { display: grid; gap: 4px; min-width: 0; }
.dvh-repeater__other { display: none; gap: 4px; margin-top: var(--sp-2); }
.dvh-repeater__field:has(option[value="alt"]:checked) .dvh-repeater__other { display: grid; }
@container dvh-repeater (max-width: 599.98px) {
  .dvh-repeater__cols { display: none; }
  .dvh-repeater__row { grid-template-columns: minmax(0, 1fr) 88px; grid-template-areas: "medal year" "comp comp" "acts acts"; padding: var(--sp-3); }
  .dvh-repeater__grip { display: none; }
  .dvh-repeater__row > [data-col="medal"] { grid-area: medal; }
  .dvh-repeater__row > [data-col="comp"] { grid-area: comp; }
  .dvh-repeater__row > [data-col="year"] { grid-area: year; }
  .dvh-repeater__actions { grid-area: acts; justify-content: flex-end; border-top: 1px solid var(--line); padding-top: var(--sp-2); }
  .dvh-repeater__actions .dvh-iconbtn { width: var(--tap); height: var(--tap); }
  .dvh-repeater__label { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip-path: none; font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui); color: var(--ink); }
}

/* ---- 16. Checkout skin (minimal template: no full navigation, no motion) ------------------------ */
.dvh-checkout-head { background: var(--ground); border-bottom: 1px solid var(--line); }
.dvh-checkout-head__inner { height: var(--header-h); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); }
.dvh-checkout-head img { height: 28px; width: auto; }
.dvh-checkout-head__logo { display: block; padding-block: var(--sp-2); }
.dvh-checkout-head__tools { display: flex; align-items: center; gap: var(--sp-4); }
.dvh-checkout-head__secure { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-meta); font-weight: var(--fw-ui); }
/* questions link (mail), icon-only under 600 px */
.dvh-checkout-head__help { display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2); min-height: var(--tap); min-width: var(--tap); color: var(--ink); font-size: var(--fs-meta); font-weight: var(--fw-ui); text-decoration: none; }
.dvh-checkout-head__help:hover { text-decoration: underline; }
@media (max-width: 599.98px) { .dvh-checkout-head__helptext { display: none; } }
/* slim legal strip under the minimal template */
.dvh-checkout-legal { border-top: 1px solid var(--line); }
.dvh-checkout-legal p { padding-block: var(--sp-5); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-checkout { display: grid; gap: var(--sp-5); padding-block: var(--sp-5) var(--sp-8); align-items: start; }
@media (min-width: 900px) { .dvh-checkout { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--sp-7); } }
.dvh-step, .wc-block-components-checkout-step { padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
.dvh-step + .dvh-step { margin-top: var(--sp-4); }
.dvh-step__head { display: flex; align-items: baseline; gap: var(--sp-3); margin-bottom: var(--sp-4); }
.dvh-step__n { font-family: var(--font-display); font-size: var(--fs-h3); line-height: 1; color: var(--muted); font-variant-numeric: tabular-nums; }
.dvh-step__title, .wc-block-components-checkout-step__title { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); }
/* the summary card: in the Checkout block the card is the order-summary block (the inner
   .wc-block-components-order-summary is only the item list) */
.dvh-summary, .wc-block-components-checkout-order-summary { padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
@media (min-width: 900px) { .dvh-summary, .wc-block-checkout__sidebar { position: sticky; top: var(--sp-5); align-self: start; } }
.dvh-summary__title { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); margin-bottom: var(--sp-2); }
.dvh-totals { display: grid; gap: var(--sp-2); padding-block: var(--sp-4); border-bottom: 1px solid var(--line); font-size: var(--fs-ui); }
.dvh-totals > div, .wc-block-components-totals-item { display: flex; justify-content: space-between; gap: var(--sp-3); }
.dvh-totals dd { font-variant-numeric: tabular-nums; font-weight: var(--fw-ui); text-align: right; }
.dvh-grandtotal { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); padding-block: var(--sp-4); font-weight: var(--fw-strong); }
.dvh-grandtotal .dvh-price-lg { font-size: var(--fs-price-lg); }
.dvh-coupon > summary { min-height: var(--tap); display: inline-flex; align-items: center; color: var(--link); text-decoration: underline; text-underline-offset: .2em; cursor: pointer; font-size: var(--fs-ui); list-style: none; }
.dvh-coupon > summary::-webkit-details-marker { display: none; }

/* ---- 16a. WooCommerce Checkout block skin (wc-block-components-*; page 7). Layout of the block's
        sidebar and address grid comes from WooCommerce's own block CSS. ------------------------------ */
/* steps: fieldsets numbered with a counter, as the block does */
fieldset.wc-block-components-checkout-step { min-width: 0; margin: 0; }
.wc-block-checkout__form--with-step-numbers { counter-reset: dvh-checkout-step; }
.wc-block-components-checkout-step--with-step-number { counter-increment: dvh-checkout-step; }
.wc-block-components-checkout-step__heading { margin-bottom: var(--sp-4); }
.wc-block-components-checkout-step--with-step-number .wc-block-components-checkout-step__title::before {
  content: counter(dvh-checkout-step, decimal-leading-zero); margin-right: var(--sp-3);
  color: var(--muted); font-weight: var(--fw-display); font-variant-numeric: tabular-nums lining-nums;
}
.wc-block-components-checkout-step__description { margin-bottom: var(--sp-4); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.wc-block-components-checkout-step__content { display: grid; gap: var(--sp-4); }
/* fields: labels above (the block floats its labels inside the input; A+ does not) */
.wc-block-components-text-input { display: grid; gap: 6px; align-content: start; min-width: 0; }
.wc-block-components-text-input label { grid-row: 1; position: static; transform: none; }
.wc-block-components-text-input :is(input, textarea) { grid-row: 2; }
.wc-block-components-text-input .wc-block-components-validation-error { grid-row: 3; }
.wc-block-components-text-input input:hover { border-color: var(--ink); }
.wc-block-components-text-input input:focus-visible { outline-offset: 1px; border-color: var(--ink); }
.wc-blocks-components-select__container { position: relative; display: grid; gap: 6px; min-width: 0; }
.wc-blocks-components-select__label { position: static; transform: none; font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui); color: var(--ink); }
.wc-blocks-components-select__select {
  width: 100%; min-width: 0; min-height: 48px; padding: 12px 44px 12px 14px; appearance: none; cursor: pointer;
  background: var(--surface); color: var(--ink); border: 1px solid var(--control); border-radius: var(--radius-control);
  font-size: var(--fs-btn); line-height: 22px; text-overflow: ellipsis;
}
.wc-blocks-components-select__select:hover { border-color: var(--ink); }
.wc-blocks-components-select__select:focus-visible { outline-offset: 1px; border-color: var(--ink); }
.wc-blocks-components-select__expand { position: absolute; right: 12px; bottom: 14px; pointer-events: none; }
/* a single option (one shipping country) prints as text, not as a control */
.dvh-static-field { display: grid; gap: 6px; }
.dvh-static-field__value { font-size: var(--fs-btn); line-height: 22px; font-weight: var(--fw-ui); }
.wc-block-components-textarea {
  width: 100%; min-height: 96px; padding: 12px 14px; resize: vertical;
  background: var(--surface); color: var(--ink); border: 1px solid var(--control); border-radius: var(--radius-control);
  font-size: var(--fs-btn); line-height: 22px;
}
.wc-block-components-checkbox label { display: flex; align-items: flex-start; gap: var(--sp-3); min-height: var(--tap); padding-block: 10px; font-size: var(--fs-ui); line-height: 24px; cursor: pointer; }
.wc-block-components-checkbox__mark { display: none; }   /* the kit draws the tick on the input itself */
.wc-block-components-checkbox__input:hover { border-color: var(--ink); }
/* radio rows: delivery rates and payment methods */
.wc-block-components-radio-control { display: grid; gap: var(--sp-2); }
.wc-block-components-radio-control__option { position: relative; grid-template-columns: 20px minmax(0, 1fr); gap: var(--sp-3); }
.wc-block-components-radio-control__input {
  appearance: none; width: 20px; height: 20px; margin: 2px 0 0; cursor: pointer;
  border: 1.5px solid var(--control); border-radius: 50%; background: var(--surface);
}
.wc-block-components-radio-control__input:checked { border-color: var(--action); background: radial-gradient(circle, var(--action) 0 4.5px, var(--surface) 5px); }
.wc-block-components-radio-control__option:hover .wc-block-components-radio-control__input:not(:disabled) { border-color: var(--ink); }
.wc-block-components-radio-control > .wc-block-components-radio-control__option:has(.wc-block-components-radio-control__input:checked),
.wc-block-components-radio-control__option-checked { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.wc-block-components-radio-control__option-layout { display: grid; gap: var(--sp-1); min-width: 0; }
.wc-block-components-radio-control__label-group { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); }
.wc-block-components-radio-control__label { flex: 1 1 auto; min-width: 0; font-size: var(--fs-ui); line-height: 24px; font-weight: var(--fw-ui); }
.wc-block-components-radio-control__secondary-label { flex: none; font-size: var(--fs-ui); line-height: 24px; font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.wc-block-components-radio-control__secondary-label .dvh-pending { font-weight: var(--fw-text); }
.wc-block-components-radio-control__description { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
/* payment: one card per method, its note inside the card; an unavailable method sits on --ground */
.wc-block-components-radio-control-accordion-option { border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--surface); }
.wc-block-components-radio-control-accordion-option > .wc-block-components-radio-control__option { border: 0; box-shadow: none; background: transparent; }
.wc-block-components-radio-control-accordion-option:has(.wc-block-components-radio-control__input:checked),
.wc-block-components-radio-control-accordion-option--checked-option-highlighted { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.wc-block-components-radio-control-accordion-content { padding: 0 var(--sp-4) var(--sp-4) calc(var(--sp-4) + 20px + var(--sp-3)); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.wc-block-components-radio-control-accordion-content > * + * { margin-top: var(--sp-1); }
.wc-block-components-radio-control-accordion-option:has(.wc-block-components-radio-control__input:disabled) { background: var(--ground); }
.wc-block-components-radio-control__option:has(.wc-block-components-radio-control__input:disabled) { cursor: not-allowed; }
.wc-block-components-radio-control__input:disabled { border-color: var(--line); background: var(--ground); cursor: not-allowed; }
/* order summary: an open sidebar card on desktop, a collapsed bar with the total on phones */
.wc-block-components-checkout-order-summary__title { display: flex; align-items: center; gap: var(--sp-3); min-height: var(--tap); list-style: none; cursor: pointer; }
.wc-block-components-checkout-order-summary__title::-webkit-details-marker { display: none; }
.wc-block-components-checkout-order-summary__title-text { margin-right: auto; font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); }
.wc-block-components-checkout-order-summary__title-price { font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.wc-block-components-checkout-order-summary[open] .wc-block-components-checkout-order-summary__title-icon { rotate: 180deg; }
.wc-block-components-checkout-order-summary__content { padding-top: var(--sp-2); }
@media (max-width: 899.98px) {
  .wc-block-components-checkout-order-summary { padding: var(--sp-2) var(--sp-4); }
  .wc-block-components-checkout-order-summary__title-text { font-size: var(--fs-card); line-height: var(--lh-card); }
}
@media (min-width: 900px) {
  .wc-block-components-checkout-order-summary__title { cursor: default; pointer-events: none; min-height: 0; }
  .wc-block-components-checkout-order-summary__title :is(.wc-block-components-checkout-order-summary__title-price, .wc-block-components-checkout-order-summary__title-icon) { display: none; }
}
.wc-block-components-order-summary-item {
  display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: var(--sp-1) var(--sp-4); align-items: start;
  padding-block: var(--sp-4); border-bottom: 1px solid var(--line);
}
.wc-block-components-order-summary-item__image { position: relative; width: 48px; height: 60px; border-radius: 6px; background: var(--well); }
.wc-block-components-order-summary-item__image img { position: absolute; left: 50%; bottom: 3%; height: 92%; width: auto; max-width: none; translate: -50% 0; }
.wc-block-components-order-summary-item__quantity {
  position: absolute; top: -8px; right: -8px; z-index: 1; display: grid; place-items: center;
  min-width: 20px; height: 20px; padding-inline: 5px; border-radius: var(--radius-control);
  background: var(--ink); color: var(--surface); font-size: var(--fs-eyebrow); line-height: 1; font-weight: var(--fw-strong); font-variant-numeric: tabular-nums;
}
.wc-block-components-order-summary-item__description { min-width: 0; }
.wc-block-components-product-name { display: block; font-family: var(--font-display); font-size: var(--fs-ui); line-height: 20px; font-weight: var(--fw-title); color: var(--ink); }
.wc-block-components-product-metadata, .wc-block-components-order-summary-item__individual-prices { font-size: var(--fs-meta); line-height: 20px; color: var(--muted); font-variant-numeric: tabular-nums; }
.wc-block-components-order-summary-item__total-price { font-size: var(--fs-ui); line-height: 20px; font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.wc-block-components-totals-wrapper { padding-block: var(--sp-3); border-bottom: 1px solid var(--line); }
.wc-block-components-totals-wrapper:last-child { border-bottom: 0; padding-bottom: 0; }
.wc-block-components-totals-item { flex-wrap: wrap; align-items: baseline; gap: 0 var(--sp-3); font-size: var(--fs-ui); line-height: 24px; }
.wc-block-components-totals-item__value { font-weight: var(--fw-ui); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.wc-block-components-totals-item__description { flex-basis: 100%; font-size: var(--fs-meta); line-height: var(--lh-meta); font-weight: var(--fw-text); color: var(--muted); }
.wc-block-components-totals-footer-item { font-weight: var(--fw-strong); }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: var(--fs-price-lg); line-height: 1.15; font-weight: var(--fw-strong); }
.wc-block-components-totals-coupon .wc-block-components-panel__content { margin-top: var(--sp-2); }
/* terms and actions: the place-order button carries the total from 600 px; on phones a "Total de plată"
   row sits right above it */
.wc-block-checkout__terms { padding-top: var(--sp-2); border-top: 1px solid var(--line); }
.wc-block-checkout__terms-note { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); padding-left: calc(20px + var(--sp-3)); }
.wc-block-checkout__actions { display: grid; gap: var(--sp-3); }
.wc-block-checkout__actions_row { display: flex; flex-direction: column; gap: var(--sp-2); }
.wc-block-components-checkout-return-to-cart-button { display: inline-flex; align-items: center; gap: var(--sp-1); min-height: var(--tap); align-self: flex-start; color: var(--link); font-size: var(--fs-ui); font-weight: var(--fw-ui); }
.wc-block-components-checkout-place-order-button { width: 100%; }
.wc-block-components-checkout-place-order-button .wc-block-components-button__text { display: inline-flex; align-items: center; gap: var(--sp-2); }
.dvh-paytotal { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); font-weight: var(--fw-strong); }
.dvh-paytotal .dvh-price-lg { font-size: var(--fs-price-lg); }
@media (max-width: 599.98px) { .wc-block-components-checkout-place-order-button .dvh-btn__price { display: none; } }
@media (min-width: 600px) {
  .dvh-paytotal { display: none; }
  .wc-block-checkout__actions_row { flex-direction: row; align-items: center; justify-content: space-between; gap: var(--sp-5); }
  .wc-block-components-checkout-place-order-button { width: auto; flex: 0 1 auto; }
}

/* ---- 16b. Order received (classic checkout/thankyou.php) + "Ce urmează" ------------------------- */
.woocommerce-order-overview {
  list-style: none; padding: var(--sp-5) 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4) var(--sp-5);
  border-block: 1px solid var(--line);
}
@media (min-width: 600px) { .woocommerce-order-overview { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.woocommerce-order-overview li {
  display: grid; gap: 2px; align-content: start; min-width: 0;
  font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted);
}
.woocommerce-order-overview strong { font-size: var(--fs-ui); line-height: 22px; letter-spacing: 0; text-transform: none; color: var(--ink); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.woocommerce-bacs-bank-details, .woocommerce-order-details { padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
.wc-bacs-bank-details-heading, .woocommerce-order-details__title, .dv-flow-summary__title {
  font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title);
}
.woocommerce-bacs-bank-details > p { margin-top: var(--sp-3); font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.wc-bacs-bank-details { list-style: none; padding: 0; margin-top: var(--sp-4); border-top: 1px solid var(--line); }
.wc-bacs-bank-details li {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px var(--sp-4);
  padding-block: var(--sp-3); border-bottom: 1px solid var(--line); font-size: var(--fs-meta); line-height: 22px; color: var(--muted);
}
.wc-bacs-bank-details strong { color: var(--ink); font-size: var(--fs-ui); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; text-align: right; }
.wc-bacs-bank-details strong .dvh-pending { font-weight: var(--fw-text); }
.dv-flow-summary__title { margin-bottom: var(--sp-4); }
.dv-flow-summary .dvh-steps { grid-template-columns: minmax(0, 1fr); gap: var(--sp-4); }   /* a sequence: one column, number at the left */
.dv-flow-summary .dvh-steps li { grid-template-columns: 56px minmax(0, 1fr); gap: var(--sp-1) var(--sp-3); }
.dv-flow-summary .dvh-steps li::before { grid-row: span 3; }
.dv-flow-summary .dvh-steps li > * { grid-column: 2; }
.woocommerce-order-details__title { margin-bottom: var(--sp-2); }
.woocommerce-table--order-details { width: 100%; border-collapse: collapse; font-size: var(--fs-ui); line-height: 1.45; }
.woocommerce-table--order-details :is(th, td) { padding: var(--sp-3) 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; font-weight: var(--fw-text); }
.woocommerce-table--order-details thead th { padding-top: var(--sp-2); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.woocommerce-table--order-details :is(.product-total, tfoot td) { padding-left: var(--sp-4); text-align: right; }
.woocommerce-table--order-details .product-name a { color: var(--ink); font-family: var(--font-display); font-weight: var(--fw-title); text-decoration: none; }
.woocommerce-table--order-details .product-name a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.woocommerce-table--order-details .product-quantity { font-weight: var(--fw-text); color: var(--muted); white-space: nowrap; }
.woocommerce-table--order-details tfoot th { color: var(--muted); }
.woocommerce-table--order-details tfoot tr:last-child :is(th, td) { border-bottom: 0; padding-bottom: 0; color: var(--ink); font-weight: var(--fw-strong); }
.woocommerce-table--order-details tfoot tr:last-child .woocommerce-Price-amount { font-size: var(--fs-price-lg); line-height: 1.15; }
.woocommerce-order-details > .dvh-meta { margin-top: var(--sp-3); }

/* ---- 17. Visits ----------------------------------------------------------------------------------- */
/* facts strip */
.dvh-facts { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4) var(--sp-5); padding-block: var(--sp-5); border-block: 1px solid var(--line); }
.dvh-fact { display: grid; grid-template-columns: 24px 1fr; gap: 2px var(--sp-3); align-items: start; align-content: start; min-width: 0; }   /* stretched facts keep their rows at the top */
.dvh-fact .dvh-icon { grid-row: span 2; width: 24px; height: 24px; color: var(--ink); stroke-width: 1.4; }
.dvh-fact__label { font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.dvh-fact__value { font-size: var(--fs-ui); line-height: 22px; font-weight: var(--fw-ui); }
.dvh-fact__value .dvh-pending { font-weight: var(--fw-text); }
@media (min-width: 900px) { .dvh-facts { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

/* experience card */
.dvh-expcards { list-style: none; padding: 0; display: grid; gap: var(--sp-5) var(--col-gap); }
@media (min-width: 900px) { .dvh-expcards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.dvh-expcard { display: flex; flex-direction: column; background: var(--surface); border-radius: var(--radius-media); overflow: clip; }
.dvh-expcard__media { aspect-ratio: 3 / 2; min-height: 0; overflow: clip; background: var(--band); }   /* min-height: 0, or a flex column keeps the image's natural height and ignores the ratio */
.dvh-expcard__media img { width: 100%; height: 100%; object-fit: cover; }
/* the tour loop (dv-visit-loops) plays over the still: hold it inside the frame, same box, same rounding
   (owner 2026-10-20: the playing clip stuck out of its card, square-cornered, when it started mid-scroll) */
.dvh-expcard__media { position: relative; isolation: isolate; }
.dvh-expcard__media > video { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover; border-radius: inherit; }
.dvh-expcard__body { display: flex; flex-direction: column; flex: 1 1 auto; gap: var(--sp-2); padding: var(--sp-5); }
.dvh-expcard__title { font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); }
.dvh-expcard__pitch { font-size: var(--fs-ui); line-height: 1.55; color: var(--ink); }
.dvh-expcard__meta { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-4); font-size: var(--fs-meta); line-height: 20px; color: var(--muted); }
.dvh-expcard__meta li { display: inline-flex; align-items: center; gap: 6px; }
.dvh-expcard__meta .dvh-icon { width: 16px; height: 16px; }
.dvh-expcard__title a { color: inherit; text-decoration: none; }
.dvh-expcard__title a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
/* next free date (example data until the slot engine exists) */
.dvh-expcard__next { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-1) var(--sp-2); font-size: var(--fs-meta); line-height: 20px; color: var(--ink); }
.dvh-expcard__next .dvh-icon { width: 16px; height: 16px; color: var(--muted); }
.dvh-expcard__foot { margin-top: auto; padding-top: var(--sp-3); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-3); border-top: 1px solid var(--line); }
/* visit price: printed bare until decision D4 says what it covers (per person or per visit) */
.dvh-expcard__price { font-size: var(--fs-price); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* hero photo frame: the image is one drift taller than its frame, so the scroll drift (motion.css) never
   opens a gap; absolute, because a negative margin would collapse through overflow: clip */
.dvh-hero__media { position: relative; overflow: clip; background: var(--band); }
.dvh-hero__media > img { position: absolute; left: 0; top: calc(-1 * var(--drift)); width: 100%; max-width: none; height: calc(100% + var(--drift)); object-fit: cover; }

/* itinerary ("Cum decurge vizita"): numbered steps on a rail, one photo per step; the ink rail is drawn
   at rest and drawn in by scroll (motion.css) */
.dvh-itin { position: relative; display: grid; gap: var(--sp-7); list-style: none; padding: 0; }
.dvh-itin::before, .dvh-itin::after { content: ""; position: absolute; left: 15px; top: var(--sp-3); bottom: var(--sp-3); width: 1px; pointer-events: none; }
.dvh-itin::before { background: var(--line); }
.dvh-itin::after { background: var(--ink); transform-origin: 50% 0; }
.dvh-itin__step { display: grid; grid-template-columns: 32px minmax(0, 1fr); column-gap: var(--sp-4); row-gap: var(--sp-4); }
.dvh-itin__n {
  grid-column: 1; grid-row: 1 / span 2; align-self: start; position: relative; z-index: 1;
  padding-block: var(--sp-1); background: var(--ground); text-align: center;
  font-family: var(--font-display); font-size: var(--fs-card); line-height: var(--lh-card); font-variant-numeric: tabular-nums lining-nums;
}
.dvh-itin__text { grid-column: 2; min-width: 0; }
.dvh-itin__text > * + * { margin-top: var(--sp-2); }
.dvh-itin__media { grid-column: 2; margin: 0; min-width: 0; }
.dvh-itin__frame { position: relative; aspect-ratio: 4 / 3; overflow: clip; border-radius: var(--radius-media); background: var(--band); }
.dvh-itin__frame img { display: block; width: 100%; height: 100%; object-fit: cover; }
.dvh-itin__media figcaption { margin-top: var(--sp-2); }
@media (min-width: 900px) {
  .dvh-itin__step { grid-template-columns: 32px minmax(0, 1fr) 280px; column-gap: var(--sp-5); }
  .dvh-itin__media { grid-column: 3; grid-row: 1 / span 2; }
}

/* booking card (sticky on desktop) */
.dvh-booking { padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
@media (min-width: 900px) { .dvh-booking { position: sticky; top: calc(var(--header-h) + var(--sp-5)); } }
.dvh-booking > * + * { margin-top: var(--sp-5); }
.dvh-booking__price { display: flex; align-items: baseline; gap: var(--sp-2); }
.dvh-booking__label { font-size: var(--fs-meta); line-height: 20px; font-weight: var(--fw-ui); margin-bottom: var(--sp-2); display: flex; justify-content: space-between; gap: var(--sp-3); }
.dvh-booking__total { display: flex; justify-content: space-between; align-items: baseline; gap: var(--sp-3); padding-top: var(--sp-4); border-top: 1px solid var(--line); font-weight: var(--fw-strong); }
.dvh-booking--deep { --ring: var(--focus-on-deep); background: var(--deep); color: var(--on-deep); border-color: var(--deep); }
.dvh-booking--deep .dvh-meta, .dvh-booking--deep .dvh-pending { color: var(--on-deep-muted); }
/* persons + the one filled action: phone "label step" / "btn btn"; the total names the persons
   ("Total pentru 2 persoane"), kit.js keeps it in step with the stepper */
.dvh-booking__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "label step" "sum sum" "btn btn"; align-items: center; gap: var(--sp-3); }
.dvh-booking__row .dvh-booking__label { grid-area: label; margin: 0; }
.dvh-booking__row .dvh-stepper { grid-area: step; }
.dvh-booking__row .dvh-booking__sum { grid-area: sum; }
.dvh-booking__row .dvh-btn { grid-area: btn; width: 100%; }
.dvh-booking__sum { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); font-size: var(--fs-meta); line-height: 20px; color: var(--muted); }
.dvh-booking__sum b { color: var(--ink); font-size: var(--fs-ui); font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; }
/* next free dates (Airbnb pattern): a shortcut row above the month grid */
.dvh-nextdates { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-2); }
.dvh-nextdates .dvh-slot { width: 100%; min-height: 52px; }
/* compact card on desktop: the whole sequence fits one 900 px screen; shorter screens scroll inside it */
@media (min-width: 900px) {
  .dvh-booking--compact { max-height: calc(100vh - var(--header-h) - 2 * var(--sp-5)); overflow-y: auto; overscroll-behavior: contain; }
  .dvh-booking--compact > * + *, .dvh-booking--compact .dvh-trust { margin-top: var(--sp-3); }
  .dvh-booking--compact .dvh-cal__dow { line-height: 24px; }
  .dvh-booking--compact .dvh-day { height: 36px; }
  .dvh-booking--compact .dvh-slots .dvh-slot { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); min-height: 44px; }
  .dvh-booking--compact .dvh-booking__row { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "label sum" "step btn"; row-gap: var(--sp-2); }
}

/* slot picker: Monday-first month grid + time slots */
.dvh-cal { display: grid; gap: var(--sp-2); }
.dvh-cal__head { display: flex; align-items: center; justify-content: space-between; }
.dvh-cal__month { font-family: var(--font-display); font-size: var(--fs-card); font-weight: var(--fw-title); }
.dvh-cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; text-align: center; }
.dvh-cal__dow { font-size: var(--fs-eyebrow); line-height: 28px; font-weight: var(--fw-strong); color: var(--muted); }
.dvh-day {
  position: relative; display: grid; place-items: center; height: 44px; border-radius: var(--radius-control);
  font-size: var(--fs-ui); font-variant-numeric: tabular-nums; color: var(--ink); background: transparent;
}
.dvh-day:hover:not(:disabled) { background: var(--band); }
.dvh-day:disabled { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--line); opacity: .7; }
.dvh-day.is-few::after { content: ""; position: absolute; bottom: 5px; width: 4px; height: 4px; border-radius: 50%; background: var(--ink); }
.dvh-day.is-full { color: var(--muted); text-decoration: line-through; }
.dvh-day[aria-pressed="true"] { background: var(--surface); box-shadow: inset 0 0 0 2px var(--leaf); font-weight: var(--fw-strong); }
.dvh-day.is-today { font-weight: var(--fw-strong); }
.dvh-day.is-past { text-decoration: none; opacity: .5; }   /* past days read as unavailable, not as closed or full */
.dvh-cal__legend { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-4); font-size: var(--fs-meta); color: var(--muted); }
.dvh-cal__legend span { display: inline-flex; align-items: center; gap: 6px; }
.dvh-cal__legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; border: 1px solid var(--control); }
.dvh-cal__legend i.is-few { border-color: var(--control); background: radial-gradient(circle, var(--ink) 0 1.5px, transparent 2px); }
.dvh-cal__legend i.is-full { background: linear-gradient(to top right, transparent 45%, var(--muted) 47% 53%, transparent 55%); }
.dvh-slots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-2); }
.dvh-slot {
  display: grid; gap: 2px; justify-items: start; min-height: 56px; padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--control); border-radius: var(--radius-control); background: var(--surface); text-align: left;
}
.dvh-slot b { font-size: var(--fs-ui); font-variant-numeric: tabular-nums; }
.dvh-slot small { font-size: var(--fs-eyebrow); line-height: 16px; color: var(--muted); }
.dvh-slot:hover:not(:disabled) { border-color: var(--ink); }
.dvh-slot[aria-pressed="true"] { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.dvh-slot:disabled { background: var(--ground); color: var(--muted); }
@media (min-width: 600px) { .dvh-slots { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.dvh-booking .dvh-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* steps ("Ce urmează după rezervare") */
.dvh-steps { list-style: none; padding: 0; display: grid; gap: var(--sp-5); counter-reset: dvh-step; }
@media (min-width: 900px) { .dvh-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.dvh-steps li { counter-increment: dvh-step; display: grid; gap: var(--sp-2); padding-top: var(--sp-4); border-top: 1px solid var(--ink); }
.dvh-steps li::before { content: counter(dvh-step, decimal-leading-zero); font-family: var(--font-display); font-size: var(--fs-h2); line-height: 1; font-variant-numeric: tabular-nums; }
.dvh-steps h3 { font-size: var(--fs-card); line-height: var(--lh-card); }
.dvh-steps p { font-size: var(--fs-ui); line-height: 1.55; color: var(--muted); }

/* ---- 18. Notices, toast (woocommerce-message / -info / -error, block notice banners) ------------- */
/* a 1 px frame on all sides and a 20 px status icon (no side stripe); the status reads from the icon
   and its words, never from colour alone */
.dvh-notice, .woocommerce-message, .woocommerce-info, .woocommerce-error, .wc-block-components-notice-banner {
  display: flex; align-items: flex-start; gap: var(--sp-3); padding: var(--sp-4);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-control);
  font-size: var(--fs-ui); line-height: 1.5; color: var(--ink); list-style: none;
}
.dvh-notice > .dvh-icon { width: 20px; height: 20px; margin-top: 2px; color: var(--ink); stroke-width: 2; }
.dvh-notice__body { flex: 1 1 auto; min-width: 0; }
.dvh-notice__body > * + * { margin-top: var(--sp-1); }
.dvh-notice__action { flex: none; align-self: center; }
.dvh-notice--success > .dvh-icon { color: var(--success); }
.dvh-notice--info > .dvh-icon { color: var(--ink); }
.dvh-notice--error { border-color: var(--error); }
.dvh-notice--error > .dvh-icon { color: var(--error); }
/* WooCommerce notices carry no icon element: the same 20 px mark as a mask */
:is(.woocommerce-message, .woocommerce-info, .woocommerce-error, .wc-block-components-notice-banner)::before {
  content: ""; flex: none; width: 20px; height: 20px; margin-top: 2px; background: var(--ink);
  -webkit-mask: var(--notice-icon) center / contain no-repeat; mask: var(--notice-icon) center / contain no-repeat;
  --notice-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M12 11v5.5M12 7.75v.5'/%3E%3C/svg%3E");
}
:is(.woocommerce-message, .wc-block-components-notice-banner.is-success)::before {
  background: var(--success);
  --notice-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
}
:is(.woocommerce-error, .wc-block-components-notice-banner.is-error) { border-color: var(--error); }
:is(.woocommerce-error, .wc-block-components-notice-banner.is-error)::before {
  background: var(--error);
  --notice-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4l9 15.5H3z'/%3E%3Cpath d='M12 10v4.5M12 17v.5'/%3E%3C/svg%3E");
}

.dvh-toast {
  position: fixed; left: 50%; bottom: calc(var(--buybar-h) + var(--sp-4) + env(safe-area-inset-bottom, 0px)); z-index: var(--z-toast);
  translate: -50% 0; width: max-content; max-width: calc(100vw - 2 * var(--page-gutter));
  display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4);
  background: var(--ink); color: var(--surface); border-radius: var(--radius-control); box-shadow: var(--shadow-pop); font-size: var(--fs-ui);
}
.dvh-toast:empty { display: none; }   /* kit.js keeps one empty live region and fills it after an add */
.dvh-toast a { color: var(--surface); font-weight: var(--fw-strong); }
.dvh-toast .dvh-icon { color: var(--surface); }
.dvh-toast.is-static { position: relative; left: auto; bottom: auto; translate: none; }

/* ---- 19. Age gate (modal; the cover keeps its own gate while locked) ----------------------------- */
.dvh-agegate {
  position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: var(--page-gutter);
  border: 0; background: var(--ground); color: var(--ink);
}
.dvh-agegate[open], .dvh-agegate.is-static { display: grid; place-items: center; }
.dvh-agegate::backdrop { background: var(--ground); }
.dvh-agegate.is-static { position: relative; inset: auto; height: auto; min-height: 520px; border-radius: var(--radius-media); background: var(--band); }
.dvh-agegate__card {
  width: min(480px, 100%); padding: var(--sp-7) var(--sp-6) var(--sp-6); text-align: center;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media);
}
.dvh-agegate__card > * + * { margin-top: var(--sp-4); }
.dvh-agegate__mark { width: 56px; height: auto; margin-inline: auto; }
.dvh-agegate__title { font-size: var(--fs-h2); line-height: var(--lh-h2); }
.dvh-agegate__text { font-size: var(--fs-ui); line-height: 1.55; color: var(--muted); text-wrap: pretty; }
.dvh-agegate__actions { display: grid; gap: var(--sp-3); padding-top: var(--sp-2); }
@media (min-width: 600px) { .dvh-agegate__actions { grid-template-columns: 1.4fr 1fr; } }
.dvh-agegate__legal { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-agegate .dvh-lang { justify-content: center; }

/* ---- 20. Cookie bar (equal Accept / Reject weight, Law 195/2024 + 284/2004 pending the lawyer) --- */
.dvh-cookie {
  position: fixed; left: var(--sp-3); right: var(--sp-3); bottom: var(--sp-3); z-index: var(--z-cookie);
  display: grid; gap: var(--sp-3); padding: var(--sp-4) var(--sp-5);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); box-shadow: var(--shadow-overlay);
  font-size: var(--fs-meta); line-height: var(--lh-meta);
}
.dvh-cookie__actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2); }
.dvh-cookie__actions .dvh-btn { min-height: 44px; }
.dvh-cookie.is-static { position: relative; left: auto; right: auto; bottom: auto; box-shadow: none; }
@media (min-width: 900px) {
  .dvh-cookie { left: auto; right: var(--sp-5); bottom: var(--sp-5); width: 520px; }
  .dvh-cookie.is-static { width: auto; max-width: 560px; }
}

/* ==========================================================================
   21. Admin (wp-admin skin). Port as a separate admin stylesheet (admin_enqueue_scripts);
       it only restyles: no WordPress behaviour changes. Example rows carry .dvh-example.
   ========================================================================== */
.dvh-admin { --admin-menu-w: 200px; background: var(--ground); color: var(--ink); font-size: var(--fs-meta); line-height: 1.5; border: 1px solid var(--line); border-radius: var(--radius-media); overflow: clip; }
/* the bar and the menu share one dark colour (forest), split by a bone hairline */
.dvh-adminbar, #wpadminbar {
  --ring: var(--focus-on-deep);
  display: flex; align-items: center; gap: var(--sp-4); height: 40px; padding-inline: var(--sp-3);
  background: var(--deep); color: var(--on-deep); font-size: var(--fs-meta); box-shadow: inset 0 -1px 0 var(--line-on-deep);
  white-space: nowrap; overflow-x: auto; scrollbar-width: none;
}
.dvh-adminbar a { color: var(--on-deep); text-decoration: none; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; }
.dvh-adminbar a:hover { text-decoration: underline; }
.dvh-adminbar img { height: 18px; width: auto; }
.dvh-adminbar__end { margin-left: auto; color: var(--on-deep-muted); }
.dvh-adminshell { display: grid; grid-template-columns: 1fr; min-height: 560px; }
.dvh-adminmenu, #adminmenuwrap { --ring: var(--focus-on-deep); display: none; background: var(--deep); color: var(--on-deep); padding-block: var(--sp-3); }
.dvh-adminmenu ul { list-style: none; padding: 0; }
.dvh-adminmenu a {
  position: relative; display: flex; align-items: center; gap: var(--sp-3); min-height: 40px; padding-inline: var(--sp-4);
  color: var(--on-deep); text-decoration: none; font-size: var(--fs-meta); font-weight: var(--fw-ui);
}
.dvh-adminmenu a:hover { background: rgb(236 232 225 / .08); }
.dvh-adminmenu a[aria-current="page"] { background: rgb(236 232 225 / .12); }
.dvh-adminmenu a[aria-current="page"]::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; background: var(--leaf); }
.dvh-adminmenu .dvh-icon { width: 18px; height: 18px; color: var(--on-deep-muted); }
.dvh-adminmenu__sub a { min-height: 32px; padding-left: 46px; font-weight: var(--fw-text); color: var(--on-deep-muted); }
.dvh-adminmenu__sub a[aria-current="page"] { color: var(--on-deep); background: transparent; }
.dvh-adminmenu__sub a[aria-current="page"]::before { display: none; }
.dvh-adminmain, #wpbody-content { min-width: 0; padding: var(--sp-5) var(--sp-4) var(--sp-6); }
@media (min-width: 783px) {
  .dvh-adminshell { grid-template-columns: var(--admin-menu-w) minmax(0, 1fr); }
  .dvh-adminmenu { display: block; }
  .dvh-adminmain { padding-inline: var(--sp-6); }
}
.dvh-adminhead, .wrap > .wp-heading-inline { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3) var(--sp-4); margin-bottom: var(--sp-4); }
.dvh-adminhead h1, .wrap h1.wp-heading-inline { font-family: var(--font-display); font-size: var(--fs-h2); line-height: var(--lh-h2); font-weight: var(--fw-display); }
.dvh-adminhead__end { margin-left: auto; display: flex; gap: var(--sp-2); align-items: center; }
.dvh-subsub, .subsubsub { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-4); margin-bottom: var(--sp-4); font-size: var(--fs-meta); }
.dvh-subsub a, .subsubsub a { color: var(--ink); text-decoration: none; }
.dvh-subsub a[aria-current="page"], .subsubsub a.current { font-weight: var(--fw-strong); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }
.dvh-subsub .dvh-count { margin-left: 4px; }

.dvh-admincards { display: grid; gap: var(--sp-4); margin-bottom: var(--sp-5); }
@media (min-width: 600px) { .dvh-admincards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.dvh-admincard, .postbox { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); padding: var(--sp-4) var(--sp-5); min-width: 0; }
.dvh-admincard__head, .postbox .postbox-header { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); margin-bottom: var(--sp-3); }
.dvh-admincard__title, .postbox .hndle { font-family: var(--font-text); font-size: var(--fs-eyebrow); line-height: var(--lh-eyebrow); font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted); }
.dvh-admincard__value { font-family: var(--font-display); font-size: var(--fs-h2); line-height: 1.1; font-variant-numeric: tabular-nums; }

.dvh-tablewrap { overflow-x: auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
.dvh-table, .wp-list-table { width: 100%; border-collapse: collapse; font-size: var(--fs-meta); }
.dvh-table th, .wp-list-table thead th {
  padding: var(--sp-3) var(--sp-4); background: var(--band); text-align: left; white-space: nowrap;
  font-size: var(--fs-eyebrow); line-height: 16px; font-weight: var(--fw-strong); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--muted);
}
.dvh-table td, .wp-list-table td { padding: var(--sp-3) var(--sp-4); border-top: 1px solid var(--line); vertical-align: middle; }
.dvh-table tbody tr:hover { background: var(--ground); }
.dvh-table .dvh-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.dvh-table a { color: var(--ink); font-weight: var(--fw-ui); }
.dvh-rowactions, .row-actions { display: flex; gap: var(--sp-3); margin-top: 2px; font-size: var(--fs-eyebrow); visibility: hidden; }
.dvh-table tr:hover .dvh-rowactions, .dvh-table tr:focus-within .dvh-rowactions { visibility: visible; }
@media (hover: none), (max-width: 782.98px) { .dvh-rowactions, .row-actions { visibility: visible; } }   /* touch screens have no hover */
.dvh-rowactions a { color: var(--link); font-weight: var(--fw-text); }

/* status chips (WooCommerce order statuses: mark.order-status.status-*) */
.dvh-status, mark.order-status {
  display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px;
  border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--surface);
  font-size: var(--fs-eyebrow); line-height: 1; font-weight: var(--fw-strong); color: var(--ink); white-space: nowrap;
}
.dvh-status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.dvh-status--processing::before, .status-processing::before { background: var(--success); }
/* completed carries a check, so it never depends on its green alone (processing is a green dot) */
.dvh-status--completed::before, .status-completed::before {
  width: 12px; height: 12px; border-radius: 0; background: var(--action);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.dvh-status--on-hold::before, .status-on-hold::before { background: var(--surface); box-shadow: inset 0 0 0 2px var(--muted); }
.dvh-status--pending::before, .status-pending::before { background: var(--line); box-shadow: inset 0 0 0 1px var(--muted); }
.dvh-status--failed, .status-failed { color: var(--error); border-color: var(--error); }
.dvh-status--failed::before, .status-failed::before { background: var(--error); }
.dvh-status--cancelled, .dvh-status--refunded, .status-cancelled, .status-refunded { color: var(--muted); }

/* admin tabs (nav-tab-wrapper, WooCommerce settings tabs) */
.dvh-tabs, .nav-tab-wrapper { display: flex; gap: var(--sp-1); border-bottom: 1px solid var(--line); margin-bottom: var(--sp-5); overflow-x: auto; scrollbar-width: none; }
.dvh-tabs a, .nav-tab {
  display: inline-flex; align-items: center; min-height: var(--tap); padding-inline: var(--sp-4); margin-bottom: -1px;
  color: var(--muted); text-decoration: none; font-weight: var(--fw-ui); white-space: nowrap; border-bottom: 2px solid transparent;
}
.dvh-tabs a:hover, .nav-tab:hover { color: var(--ink); }
.dvh-tabs a[aria-current="page"], .nav-tab-active { color: var(--ink); border-bottom-color: var(--ink); }

/* form boxes (form-table: label left, control right) */
.dvh-formtable, .form-table { width: 100%; border-collapse: collapse; }
.dvh-formtable th, .form-table th { width: 220px; padding: var(--sp-4) var(--sp-5) var(--sp-4) 0; text-align: left; vertical-align: top; font-weight: var(--fw-ui); }
.dvh-formtable td, .form-table td { padding: var(--sp-3) 0; }
.dvh-formtable tr + tr > *, .form-table tr + tr > * { border-top: 1px solid var(--line); }
@media (max-width: 782.98px) {
  .dvh-formtable th, .dvh-formtable td, .form-table th, .form-table td { display: block; width: auto; padding-right: 0; }
  .dvh-formtable td { padding-top: 0; border-top: 0 !important; }
}

/* ---- 21b. Full-page wp-admin shell [#wpwrap]: the specimen frame removed. Phones get a 48 px bar with
        icons only (labels stay for screen readers) and the menu as a native popover sheet (no JS). ---- */
.dvh-admin--page { min-height: 100vh; min-height: 100dvh; border: 0; border-radius: 0; overflow: visible; }
.dvh-admin--page .dvh-adminshell { min-height: calc(100vh - 40px); }
.dvh-admin--page .dvh-adminbar { position: sticky; top: 0; z-index: var(--z-header); }
.dvh-adminbar__toggle { display: none; }                                   /* [#wp-admin-bar-menu-toggle] */
.dvh-adminmenu__head { display: none; }
.dvh-adminmenu__list > li.is-group { margin-top: var(--sp-2); padding-top: var(--sp-2); border-top: 1px solid var(--line-on-deep); }   /* [.wp-menu-separator] */
.dvh-adminmenu a[aria-current="true"] { background: rgb(236 232 225 / .12); }   /* [li.wp-has-current-submenu > a] */
.dvh-adminmenu a[aria-current="true"]::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; background: var(--leaf); }
.dvh-adminmenu a[aria-current] > .dvh-icon { color: var(--on-deep); }
.dvh-adminmenu__sub { padding-bottom: var(--sp-2); }
.dvh-adminmenu__collapse {                                                   /* [#collapse-button] */
  display: flex; align-items: center; gap: var(--sp-3); width: 100%; min-height: 40px; padding-inline: var(--sp-4);
  color: var(--on-deep-muted); font-size: var(--fs-meta); font-weight: var(--fw-ui); text-align: left;
}
.dvh-adminmenu__collapse:hover { color: var(--on-deep); }
.dvh-adminmenu__collapse .dvh-icon { width: 18px; height: 18px; }
.dvh-adminbar__toggle:hover, .dvh-adminmenu__close:hover { background: rgb(236 232 225 / .08); }
@media (min-width: 783px) {
  /* the menu is a popover on phones only: undo the UA popover box on desktop */
  .dvh-admin--page .dvh-adminmenu[popover] { position: static; inset: auto; width: auto; height: auto; margin: 0; padding: var(--sp-3) 0; border: 0; overflow: visible; }
  .dvh-admin--page .dvh-adminmain { padding-top: var(--sp-6); }
}
@media (min-width: 783px) and (min-height: 800px) {
  .dvh-adminmenu__list { position: sticky; top: calc(40px + var(--sp-3)); }
}
@media (max-width: 782.98px) {
  .dvh-admin--page .dvh-adminbar { height: 48px; gap: 0; padding-inline: var(--sp-1); }
  .dvh-admin--page .dvh-adminbar a, .dvh-adminbar__toggle { display: inline-grid; place-items: center; min-width: var(--tap); min-height: 48px; }
  .dvh-adminbar__toggle { color: var(--on-deep); border-radius: var(--radius-control); }
  .dvh-adminbar__label { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .dvh-admin--page .dvh-adminshell { min-height: calc(100vh - 48px); }
  .dvh-admin--page .dvh-adminmenu:popover-open {
    display: block; position: fixed; inset: 0 auto 0 0; width: min(304px, 86vw); height: 100dvh; max-height: none;
    margin: 0; padding: 0 0 var(--sp-6); border: 0; overflow-y: auto; overscroll-behavior: contain; box-shadow: var(--shadow-overlay);
  }
  .dvh-admin--page .dvh-adminmenu::backdrop { background: var(--scrim); }
  .dvh-adminmenu__head {
    display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); height: 48px;
    padding-inline: var(--sp-4) var(--sp-1); margin-bottom: var(--sp-2); border-bottom: 1px solid var(--line-on-deep);
    color: var(--on-deep); font-weight: var(--fw-strong);
  }
  .dvh-adminmenu__close { display: inline-grid; place-items: center; width: var(--tap); height: var(--tap); color: var(--on-deep); border-radius: var(--radius-control); }
  .dvh-admin--page .dvh-adminmenu a { min-height: var(--tap); }
  .dvh-adminmenu__collapse { display: none; }   /* a sheet does not collapse */
}

/* page lead, section heads, desktop control density, phone card padding */
.dvh-admin--page .dvh-adminmain { padding-bottom: var(--sp-8); }
.dvh-admin--page .dvh-adminhead { margin-bottom: var(--sp-2); }
.dvh-adminlead { margin-bottom: var(--sp-5); max-width: var(--text-measure); }
.dvh-adminsechead { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-3); margin-bottom: var(--sp-3); }
.dvh-adminsechead h2 { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--fw-title); }
.dvh-adminsechead__end { margin-left: auto; }
.dvh-tabs a[aria-current="true"] { color: var(--ink); border-bottom-color: var(--ink); }
@media (min-width: 783px) { .dvh-admin :is(.dvh-input, .dvh-select) { min-height: 40px; padding-block: 8px; } }
@media (max-width: 599.98px) { .dvh-admincard { padding-inline: var(--sp-4); } }
/* phone: a list table becomes one card per row [table.wp-list-table on small screens] */
@media (max-width: 782.98px) {
  .dvh-table--stack thead { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .dvh-table--stack, .dvh-table--stack tbody { display: block; }
  .dvh-table--stack tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px var(--sp-3); padding: var(--sp-4); border-top: 1px solid var(--line); }
  .dvh-table--stack tbody tr:first-child { border-top: 0; }
  .dvh-table--stack td { display: block; padding: 0; border: 0; min-width: 0; }
  .dvh-table--stack td[data-label]::before { content: attr(data-label) ": "; color: var(--muted); }
  .dvh-table--stack .is-empty { display: none; }
}
/* save bar on single-column layouts (under 1100 px): one filled action per view, as the shop's buy bar;
   its twin primary in the Publish box steps aside meanwhile [admin_footer partial] */
.dvh-savebar { display: none; }
.dvh-savebar__state { font-size: var(--fs-meta); line-height: var(--lh-meta); color: var(--muted); }
.dvh-savebar__state b { color: var(--ink); font-weight: var(--fw-ui); }
@media (max-width: 1099.98px) {
  .dvh-has-savebar .dvh-adminmain { padding-bottom: calc(var(--sp-8) + var(--buybar-h)); }
  .dvh-savebar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-buybar);
    display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
    min-height: var(--buybar-h); padding: var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom, 0px));
    background: var(--surface); box-shadow: var(--shadow-bar);
  }
  .dvh-has-savebar [data-savebar-twin] { display: none; }
}
@media (min-width: 783px) and (max-width: 1099.98px) { .dvh-savebar { left: var(--admin-menu-w); padding-inline: var(--sp-6); } }

/* ---- 21c. Login screen [wp-login.php: body.login, #login, #loginform, .user-pass-wrap, .wp-hide-pw,
        #rememberme, #wp-submit, #nav, #backtoblog, .language-switcher; login_enqueue_scripts].
        Daylight split: the form on limewash, the courtyard photograph beside it (a band on phones). --- */
.dvh-login { min-height: 100vh; min-height: 100dvh; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; background: var(--ground); }
.dvh-login__photo { position: relative; order: -1; height: 112px; margin: 0; overflow: clip; background: var(--band); }
.dvh-login__photo img { width: 100%; height: 100%; object-fit: cover; }
.dvh-login__caption {
  position: absolute; left: var(--page-gutter); bottom: var(--sp-3); max-width: calc(100% - 2 * var(--page-gutter));
  display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px;
  background: var(--surface); color: var(--ink); border-radius: var(--radius-control);
  font-size: var(--fs-eyebrow); line-height: 16px; font-weight: var(--fw-ui);
}
.dvh-login__caption .dvh-icon { width: 14px; height: 14px; color: var(--muted); }
.dvh-login__panel { display: grid; align-content: center; justify-items: center; padding: var(--sp-4) var(--page-gutter) var(--sp-6); }
.dvh-login__inner { width: 100%; max-width: 400px; }
.dvh-login__logo { display: block; width: fit-content; }
.dvh-login__logo a { display: block; }
.dvh-login__logo img { height: 30px; width: auto; }
.dvh-login__head { margin-top: var(--sp-5); }
.dvh-login__title { margin-top: var(--sp-1); font-size: var(--fs-h2); line-height: var(--lh-h2); }
.dvh-login__lead { margin-top: var(--sp-2); }
.dvh-login__card { display: grid; gap: var(--sp-4); margin-top: var(--sp-4); padding: var(--sp-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-media); }
.dvh-login__pass { position: relative; }
.dvh-login__pass .dvh-input { padding-right: 52px; }
.dvh-login__pass .dvh-iconbtn { position: absolute; top: 50%; right: 2px; translate: 0 -50%; color: var(--muted); }
.dvh-login__pass .dvh-iconbtn:hover { color: var(--ink); }
.dvh-login__card .dvh-check { padding-block: 4px; }
.dvh-login__card .dvh-btn--primary { margin-top: var(--sp-1); }
.dvh-login__links { display: grid; justify-items: start; gap: var(--sp-1); margin-top: var(--sp-3); font-size: var(--fs-ui); }
.dvh-login__links a { display: inline-flex; align-items: center; min-height: 36px; }
.dvh-login__lang { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin-top: var(--sp-5); padding-top: var(--sp-4); border-top: 1px solid var(--line); }
.dvh-login__lang label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-meta); font-weight: var(--fw-ui); color: var(--muted); }
.dvh-login__lang label .dvh-icon { width: 18px; height: 18px; }
.dvh-login__lang .dvh-select { flex: 1 1 140px; width: auto; min-width: 0; }
@media (min-width: 900px) {
  .dvh-login { grid-template-columns: minmax(440px, 5fr) 7fr; grid-template-rows: none; }
  .dvh-login__photo { order: 2; height: auto; min-height: 100vh; min-height: 100dvh; }
  .dvh-login__photo img { position: absolute; inset: 0; }
  .dvh-login__caption { left: var(--sp-5); bottom: var(--sp-5); font-size: var(--fs-meta); line-height: 20px; }
  .dvh-login__panel { padding: var(--sp-7); }
  .dvh-login__logo img { height: 34px; }
  .dvh-login__head { margin-top: var(--sp-6); }
  .dvh-login__card { margin-top: var(--sp-5); padding: var(--sp-6); }
  .dvh-login__links { margin-top: var(--sp-4); }
  .dvh-login__lang { margin-top: var(--sp-6); }
}

/* ==========================================================================
   Film hero (.dvh-film): full-bleed looping film, Castel Mimi style, without its flaws.
   Poster first (it is the LCP image), the film plays only while on screen, never under
   prefers-reduced-motion unless the visitor presses play, a visible pause button (WCAG 2.2.2).
   No caption on the film (owner 2026-10-17). Only on brand-like pages (visits, Crama, story);
   never on listing, wine pages, cart or checkout.
   ========================================================================== */
.dvh-film {
  position: relative; isolation: isolate; overflow: clip;
  display: grid; align-items: end;
  min-height: min(72svh, 720px);
  background: var(--deep); color: var(--on-action);
}
.dvh-film--tall { min-height: min(86svh, 860px); }
.dvh-film--band { min-height: min(60svh, 560px); }
.dvh-film__media { position: absolute; inset: 0; z-index: -2; }
.dvh-film__media :is(video, img) { display: block; width: 100%; height: 100%; object-fit: cover; }
.dvh-film::before {           /* legibility scrim: only behind the text block, the picture stays bright on top */
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgb(26 23 27 / 0) 18%, rgb(26 23 27 / .46) 52%, rgb(26 23 27 / .84) 100%);
}
.dvh-film__body { display: grid; gap: var(--sp-3); padding-block: var(--sp-8) calc(var(--sp-7) + 40px); max-width: 1296px; }
.dvh-film__body > * { max-width: 46rem; }
.dvh-film__body :is(h1, h2, .dvh-kicker, .dvh-lead, .dvh-film__price) { text-shadow: 0 1px 14px rgb(26 23 27 / .45); }
.dvh-film :is(h1, h2) { color: var(--on-action); text-wrap: balance; }
.dvh-film h1 { font-size: var(--fs-display); line-height: 1.04; }
.dvh-film .dvh-kicker { color: rgb(255 255 255 / .86); }
.dvh-film .dvh-lead { color: rgb(255 255 255 / .92); }
.dvh-film__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3) var(--sp-5); margin-top: var(--sp-3); }
.dvh-film__price { font-size: var(--fs-lead, 1.125rem); color: rgb(255 255 255 / .92); }
.dvh-film__price b { font-weight: var(--fw-strong); font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--on-action); }
.dvh-btn.dvh-btn--film { background: var(--surface); color: var(--ink); border-color: var(--surface); }
.dvh-btn.dvh-btn--film:hover { background: var(--ground); border-color: var(--ground); }
.dvh-btn.dvh-btn--film-ghost { background: transparent; color: var(--on-action); border-color: rgb(255 255 255 / .7); }
.dvh-btn.dvh-btn--film-ghost:hover { background: rgb(255 255 255 / .12); }
.dvh-film__foot {
  position: absolute; inset-inline: 0; bottom: 0;
  display: flex; justify-content: flex-end; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) var(--page-gutter); font-size: 12px; line-height: 1.4; color: rgb(255 255 255 / .82);
}
.dvh-film__toggle {
  flex: none; display: inline-grid; place-items: center; width: 44px; height: 44px; padding: 0;
  border: 1px solid rgb(255 255 255 / .65); border-radius: 50%; background: rgb(26 23 27 / .35); color: var(--on-action); cursor: pointer;
  transition: background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out);
}
.dvh-film__toggle:hover { background: rgb(26 23 27 / .55); border-color: var(--on-action); }
.dvh-film__toggle:focus-visible { outline: 2px solid var(--on-action); outline-offset: 3px; }
.dvh-film__toggle svg { width: 16px; height: 16px; fill: currentColor; }
.dvh-film__toggle [data-icon="play"] { display: none; }
.dvh-film__toggle[data-state="paused"] [data-icon="pause"] { display: none; }
.dvh-film__toggle[data-state="paused"] [data-icon="play"] { display: block; }
.dvh-film__caption { margin: 0; font-size: 12px; color: rgb(255 255 255 / .82); }
@media (min-width: 900px) {
  .dvh-film__body { padding-block: var(--sp-9, 120px) calc(var(--sp-8) + 24px); }
}
@media (prefers-reduced-motion: no-preference) {
  .dvh-film video { animation: dvh-film-in 900ms var(--ease-out) both; }
}
@keyframes dvh-film-in { from { opacity: .6; } to { opacity: 1; } }

/* Tour prices read heavier than the other figures (owner 2026-10-20: "bolder tours prices 280 MDL"): the hub's hero and
   cards, the package page's price and booking total */
.dvh-expcard__price, .dvh-film__price b, .dvh-booking__price .dvh-price-lg, .pg-experience-price .dvh-price-lg, .dvh-booking__sum b { font-weight: 700; }

/* "Vizite de grup" in a colour of its own beside the outlined "Rezervă o vizită" (owner 2026-10-20): soft green fill,
   dark green text (11:1), header and phone menu alike */
.dvh-header .dvh-header__cta--group, .dvh-menu .dvh-menu__groupbtn { background: #E6F0E7; border-color: #E6F0E7; color: var(--action); }
.dvh-header .dvh-header__cta--group:hover, .dvh-menu .dvh-menu__groupbtn:hover { background: #D3E5D6; border-color: #D3E5D6; color: var(--action); }
/* also over the home film, where the header's buttons turn into white outlines (home.css): keep the green fill */
.pg-home:not(.is-scrolled) .dvh-header .dvh-btn.dvh-header__cta--group { background: #E6F0E7; border-color: #E6F0E7; color: var(--action); }
