/* ==========================================================
   OLB PRODUCT_PAGE ADAPTER v0.10 (runtime 0.13.9)
   v0.10: flyttet uændret fra Bricks global CSS til OLB Runtime (fælles styling ejes af plugins).
          Bricks-kopien SKAL slettes fra Bricks → Indstillinger → Brugerdefineret CSS.
   ========================================================== */

/* ==========================================================
   OLB PRODUCT_PAGE ADAPTER v0.9
   v0.9: produktbillede centreret og indeholdt (object-fit: contain) også når Bricks
         renderer <img> direkte; mere luft (80 px desktop / 32 px mobil).
   v0.8: leveringsboks = trust "Pakkes inden 2 hverdage / Sendes fra Fuengirola"
         (D-26) i stedet for postnummer-knappen. Structure JSON v0.6.
   v0.7: mindre produktbillede (mere luft i galleriet, billedet beskæres aldrig) ·
         relaterede varer: grid + afstand (kortets egen stil = PRODUCT CARD SPECIALIST RC3)
   v0.6: "Læs mere" folder kort beskrivelse ud på stedet · separator mellem
         vægt og oprindelse · Om varen lukket som standard. Structure JSON v0.5.
   v0.5: strammere efter mockup – pris | lager på samme linje, kort beskrivelse
         2 linjer + "Læs mere", levering + hjælp som én boks med skillelinje
         (også mobil), tættere rytme i købszonen. Structure JSON v0.4.
   v0.4: layout efter mockup – desktop 40/60 (galleri / købszone), informations-
         sektionerne i højre kolonne under købszonen, relaterede i fuld bredde ·
         mindre galleri · levering + hjælp som to bokse side om side · stor CTA ·
         lager med statusprik · accordion med chevron i højre side
   Klassifikation: component adapter
   Requires: OLB Design System v1.0 (LOCK-KANDIDAT, K21) – runtime:
             Farve 1.0.5 · Typo 0.9.8 · Layout 1.0 LOCKED · F&D 1.0 · Buttons 1.0.2
   Functional master: OLB_PRODUKTSIDE_MASTER_v2.0_LOCKED (+ v2.1-tillæg)
   Specialist master: n/a
   Structure: OLB_PRODUCT_PAGE_STRUCTURE_PLAN_v1.0 · JSON v0.3
   Mockup: Produktside desktop + mobil (2026-09-27)
   Build mode: B
   Owns: placering, grid, rækkefølge, rytme, skjul af tomme felter,
         adapter-regler der kobler Woo-/plugin-markup til canonical tokens
   Does NOT own: farver, typografi, spacing-skala, radius, skygger,
                 knapper/felter/kort/ikoner, fokus, globale states,
                 produktgrid, breakpoints
   Breakpoints: kun canonical (768 / 1024)
   Documented deviations:
     A-1 pris-states som produktkortet (DCR: fælles pris-class)
     A-2 Woo-knap + quantity mappes til Buttons-tokens (til canonical stepper)
     A-3 kolonneforhold 2fr/3fr = Layout-masterens 40/60-split (hero-systemet)
     A-4 accordion-chevron som CSS-form, til sprite-ikonet olb-i-chevron-down (D-25)
     A-5 statusprik ved lager er en dekorativ CSS-form; teksten bærer statussen
     A-6 line-clamp 2 på kort beskrivelse (projektejer 2026-10-02)
   ========================================================== */

/* ---------- Ramme ---------- */
.olb-pdp {
  padding-block: var(--space-4) var(--section-space-lg);
}

/* Tomme felter og SLOTs må ikke tage plads */
.olb-pdp .brxe-div:empty,
.olb-pdp .brxe-text-basic:empty,
.olb-pdp .brxe-text:empty {
  display: none;
}

.olb-pdp__breadcrumb {
  margin-bottom: var(--gap-component);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-breadcrumb);
  line-height: var(--line-height-ui);
  color: var(--color-text-secondary);
}

.olb-pdp__breadcrumb a {
  color: var(--color-link);
}

/* ---------- Grid: mobil stablet ---------- */
.olb-pdp__main {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--gap-card-list);
}

/* ---------- Grid: desktop (A-3) ----------
   Rækker: 1 brødkrumme · 2 galleri | købszone · 3 galleri | sektioner · 4 relaterede */
@media (min-width: 1024px) {
  .olb-pdp > .olb-container {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    column-gap: var(--space-9);
    align-items: start;
  }

  .olb-pdp__breadcrumb,
  .olb-pdp__related {
    grid-column: 1 / -1;
  }

  .olb-pdp__main {
    display: contents;
  }

  .olb-pdp__gallery {
    grid-column: 1;
    grid-row: 2 / span 2;
  }

  .olb-pdp__buy {
    grid-column: 2;
    grid-row: 2;
  }

  .olb-pdp__info {
    grid-column: 2;
    grid-row: 3;
  }
}

/* ---------- Galleri ---------- */
.olb-pdp__gallery {
  position: relative;
  aspect-ratio: 4 / 3;
  border: var(--border-card);
  border-radius: var(--radius-card);
  background: var(--color-surface-product);
  overflow: hidden;
}

@media (min-width: 1024px) {
  .olb-pdp__gallery {
    aspect-ratio: 1 / 1;
  }
}

/* Billedet centreres og skaleres NED til rammen – aldrig op, aldrig beskåret.
   Virker både når Bricks renderer <figure class="olb-pdp__image"><picture><img>
   og når den (uden caption/link) renderer <img class="olb-pdp__image"> direkte. */
.olb-pdp .olb-pdp__gallery .olb-pdp__image {
  position: absolute;
  top: var(--space-7);
  left: var(--space-7);
  width: calc(100% - 2 * var(--space-7));
  height: calc(100% - 2 * var(--space-7));
  margin: 0;
  object-fit: contain;
  object-position: center;
}

@media (min-width: 1024px) {
  .olb-pdp .olb-pdp__gallery .olb-pdp__image {
    top: var(--space-11);
    left: var(--space-11);
    width: calc(100% - 2 * var(--space-11));
    height: calc(100% - 2 * var(--space-11));
  }
}

.olb-pdp .olb-pdp__gallery .olb-pdp__image picture,
.olb-pdp .olb-pdp__gallery .olb-pdp__image img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: contain;
  object-position: center;
}

.olb-pdp__image figcaption {
  display: none;
}

.olb-pdp [data-olb-role="badge"] {
  position: absolute;
  top: var(--gap-component);
  left: var(--gap-component);
  z-index: var(--z-raised);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-badge);
  background: var(--color-sale);
  color: var(--color-sale-fg);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-badge);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-price);
  letter-spacing: var(--tracking-badge);
}

/* ---------- Købszone ---------- */
.olb-pdp__buy {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: 0;
  row-gap: var(--gap-inline);
  min-width: 0;
}

.olb-pdp__buy > * {
  grid-column: 1 / -1;
}

.olb-pdp__buy > .olb-pdp__delivery,
.olb-pdp__buy > .olb-pdp__help {
  grid-column: auto;
}

.olb-pdp__brand {
  font-family: var(--font-family-ui);
  font-size: var(--font-size-meta);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-ui);
  letter-spacing: var(--tracking-meta);
  color: var(--color-link);
}

.olb-pdp__buy h1 {
  margin: 0;
}

.olb-pdp__brand {
  margin-bottom: calc(-1 * var(--gap-tight));
}

.olb-pdp__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: var(--gap-hairline);
  margin-top: calc(-1 * var(--gap-tight));
  font-family: var(--font-family-ui);
  font-size: var(--font-size-meta);
  line-height: var(--line-height-ui);
  color: var(--color-text-secondary);
}

.olb-pdp__meta > :not(:empty) ~ :not(:empty)::before {
  content: "·";
  margin-inline-end: var(--gap-hairline);
  color: var(--color-text-muted);
}

/* ---------- Pris (A-1) ---------- */
.olb-pdp__price {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: var(--gap-block);
  row-gap: var(--product-price-to-unit);
  margin-top: var(--gap-tight);
}

.olb-pdp__price > .brxe-product-price { grid-column: 1; grid-row: 1; }
.olb-pdp__price > .brxe-text         { grid-column: 2; grid-row: 1; }
.olb-pdp__price > .brxe-text-basic   { grid-column: 1 / -1; grid-row: 2; }

/* Lager i pris-rækken ({olb_stock}) – A-5 statusprik */
.olb-stock {
  display: inline-flex;
  align-items: center;
  gap: var(--gap-tight);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-stock);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-card);
}

.olb-stock::before {
  content: "";
  width: var(--space-2);
  height: var(--space-2);
  border-radius: var(--radius-pill);
  background: currentColor;
}

.olb-stock--in  { color: var(--color-success); }
.olb-stock--out { color: var(--color-text-secondary); }

.olb-pdp__price .price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--gap-tight);
  margin: 0;
  color: var(--color-text-primary);
  font-family: var(--font-family-numeric);
  font-size: var(--font-size-price-lg);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-price);
  font-variant-numeric: tabular-nums lining-nums;
}

.olb-pdp__price ins {
  color: var(--color-sale);
  text-decoration: none;
}

.olb-pdp__price del {
  order: 1;
  color: var(--color-text-secondary);
  font-size: var(--font-size-price-old-lg);
  font-weight: var(--font-weight-regular);
}

.olb-pdp__price > .brxe-text-basic {
  color: var(--color-text-secondary);
  font-family: var(--font-family-numeric);
  font-size: var(--font-size-price-unit-lg);
  line-height: var(--line-height-price);
  font-variant-numeric: tabular-nums lining-nums;
}

/* ---------- Kort beskrivelse ---------- */
.olb-pdp__excerpt {
  max-width: var(--measure-product-desc);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

.olb-pdp__excerpt-text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; /* A-6 */
  overflow: hidden;
}

.olb-pdp__excerpt-text p {
  display: inline;
  margin: 0;
}

.olb-pdp__excerpt-text p + p::before {
  content: " ";
}

/* "Læs mere / Vis mindre" (native details, ingen JS) */
.olb-pdp__excerpt:has(.olb-pdp__more[open]) .olb-pdp__excerpt-text {
  display: block;
  -webkit-line-clamp: unset;
  overflow: visible;
}

.olb-pdp__excerpt:has(.olb-pdp__more[open]) .olb-pdp__excerpt-text p {
  display: block;
}

.olb-pdp__excerpt:has(.olb-pdp__more[open]) .olb-pdp__excerpt-text p + p {
  margin-top: var(--gap-tight);
}

.olb-pdp__excerpt:has(.olb-pdp__more[open]) .olb-pdp__excerpt-text p + p::before {
  content: none;
}

.olb-pdp__more {
  margin-top: var(--gap-hairline);
}

.olb-pdp__more summary {
  display: inline-block;
  cursor: pointer;
  list-style: none;
  color: var(--color-link);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-semibold);
  text-decoration: underline;
  text-underline-offset: var(--space-1);
}

.olb-pdp__more summary::-webkit-details-marker {
  display: none;
}

.olb-pdp__more-close,
.olb-pdp__more[open] .olb-pdp__more-open {
  display: none;
}

.olb-pdp__more[open] .olb-pdp__more-close {
  display: inline;
}

/* ---------- Købshandling (A-2) ---------- */
/* Lagerteksten vises i pris-rækken; Woo's kopi i formularen skjules */
.olb-pdp__purchase .stock {
  display: none;
}

.olb-pdp__purchase form.cart {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  margin: 0;
}

/* Master §14: før kurv kun "Læg i kurv". Antal vises med .is-in-cart (canonical stepper). */
.olb-pdp__purchase .quantity {
  display: none;
}

.olb-pdp__purchase.is-in-cart .quantity {
  display: grid;
  grid-template-columns: minmax(48px, 3rem) minmax(0, 1fr) minmax(48px, 3rem); /* = .olb-quantity */
  height: var(--button-height-large);
  border: var(--border-control);
  border-radius: var(--radius-quantity);
  background: var(--color-surface);
}

.olb-pdp__purchase .single_add_to_cart_button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--button-gap);
  width: 100%;
  min-height: var(--button-height-large);
  padding-inline: var(--button-padding-x-large);
  border: var(--border-width-strong) solid transparent;
  border-radius: var(--button-radius);
  background: var(--color-cta-bg);
  color: var(--color-cta-fg);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-button-lg);
  font-weight: var(--font-weight-bold);
  cursor: pointer;
}

@media (hover: hover) and (pointer: fine) {
  .olb-pdp__purchase .single_add_to_cart_button:hover:not(:disabled) {
    background: var(--color-cta-hover);
  }
}

.olb-pdp__purchase .single_add_to_cart_button:disabled {
  background: var(--color-cta-disabled-bg);
  color: var(--color-text-muted);
  cursor: not-allowed;
}

/* ---------- Frostadvarsel ---------- */
.olb-pdp__notice {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-control);
  background: var(--color-warning-soft);
  color: var(--color-warning);
  font-size: var(--font-size-small);
  line-height: var(--line-height-help);
}

/* ---------- Levering + hjælp: to bokse (mockup) ---------- */
.olb-pdp__delivery,
.olb-pdp__help {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--gap-hairline);
  min-width: 0;
  min-height: var(--button-height-large);
  padding: var(--space-3) var(--space-4);
  border: var(--border-card);
  background: var(--color-surface-cool);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-small);
  line-height: var(--line-height-help);
  color: var(--color-text-secondary);
}

/* Én boks: levering venstre, hjælp højre, delt af skillelinje */
.olb-pdp__delivery {
  border-radius: var(--radius-card) 0 0 var(--radius-card);
  border-inline-end: var(--border-divider);
}

.olb-pdp__help {
  border-radius: 0 var(--radius-card) var(--radius-card) 0;
  border-inline-start: 0;
}

/* Trust-linje (D-26): overskrift + undertekst */
.olb-pdp__delivery > .brxe-text-basic:first-child,
.olb-pdp__help a {
  color: var(--color-text-primary);
  font-weight: var(--font-weight-semibold);
}

.olb-pdp__help a {
  text-decoration: none;
}

.olb-pdp__help span {
  display: block;
}

/* Desktop: kort beskrivelse over købshandlingen (D-8) */
@media (min-width: 1024px) {
  .olb-pdp__excerpt   { order: 1; }
  .olb-pdp__purchase,
  .olb-pdp__notice,
  .olb-pdp__delivery,
  .olb-pdp__help      { order: 2; }
}

/* ---------- Informationssektioner ---------- */
.olb-pdp__info {
  display: flex;
  flex-direction: column;
  gap: var(--gap-tight);
  margin-top: var(--gap-card-list);
}



.olb-pdp__info details {
  border: var(--border-card);
  border-radius: var(--radius-card);
  background: var(--color-surface);
}

.olb-pdp__info summary {
  display: flex;
  align-items: center;
  gap: var(--gap-inline);
  min-height: var(--button-height-large);
  padding: var(--space-3) var(--space-4);
  cursor: pointer;
  list-style: none;
  color: var(--color-text-primary);
}

.olb-pdp__info summary::-webkit-details-marker {
  display: none;
}

/* A-4: chevron, til sprite-ikon */
.olb-pdp__info summary::after {
  content: "";
  flex: none;
  width: var(--space-2);
  height: var(--space-2);
  margin-inline-start: auto;
  border-right: var(--border-width-strong) solid currentColor;
  border-bottom: var(--border-width-strong) solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--olb-motion-base) ease;
}

.olb-pdp__info details[open] > summary::after {
  transform: rotate(-135deg);
}

.olb-pdp__info summary h2 {
  margin: 0;
  font-family: var(--font-family-ui);
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-subheading);
  letter-spacing: var(--tracking-normal);
}

.olb-pdp__info details > :not(summary) {
  padding: 0 var(--space-4) var(--space-4);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

.olb-pdp__info details > :not(summary) h2,
.olb-pdp__info details > :not(summary) h3 {
  margin-block: var(--space-4) var(--space-2);
  font-family: var(--font-family-ui);
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}

.olb-pdp__info details > :not(summary) p {
  margin-block: 0 var(--gap-inline);
}

/* Produktdetaljer (dl fra {olb_product_details}) */
.olb-pdp__details {
  display: grid;
  gap: var(--gap-tight);
  margin: 0;
}

.olb-pdp__details > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: var(--gap-inline);
  padding-block-end: var(--gap-tight);
  border-bottom: var(--border-divider);
}

.olb-pdp__details dt {
  color: var(--color-text-muted);
}

.olb-pdp__details dd {
  margin: 0;
  color: var(--color-text-primary);
}

/* ---------- Relaterede varer ---------- */
.olb-pdp__related {
  margin-top: var(--section-space-lg);
}

.olb-pdp__related:not(:has(.olb-product-card)) {
  display: none;
}

.olb-pdp__related > h2 {
  margin: 0 0 var(--section-heading-gap);
}

/* Grid ejes af Layout (.olb-product-grid 2/3/4/5). Kun kortets højde udlignes her. */
.olb-pdp__related .olb-product-grid {
  align-items: stretch;
}
