    /* ====================================================
       Top strip + Nav (unchanged from v4)
       ==================================================== */
    /* R13: baggrunden er full-bleed, indholdet kappes — samme kant som .nav__row.
       Sidepadding'en er derfor gutter PLUS det, der er tilovers uden for
       --content-w. Under 1480px er (100% − 1480px) negativ, så max() falder
       tilbage på ren var(--gutter): no-op på laptop og mobil. */
    .topstrip { background: var(--ink); color: var(--snow); padding: 10px max(var(--gutter), calc((100% - var(--content-w)) / 2 + var(--gutter))); font-size: 11.5px; font-weight: 500; letter-spacing: 0.04em; display: flex; justify-content: space-between; align-items: center; }
    .topstrip__pills { display: flex; gap: 28px; }
    .topstrip__pills span { display: inline-flex; align-items: center; gap: 8px; opacity: 0.8; }
    .topstrip__pills span .dot { background: var(--cobalt-soft); }
    .topstrip__lang { display: flex; gap: 20px; }
    .topstrip__lang a { opacity: 0.6; transition: opacity var(--d-fast) var(--ease); }
    .topstrip__lang a:hover, .topstrip__lang a[aria-current="true"] { opacity: 1; }

    .nav { background: var(--snow); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 50; }
    .nav__row { max-width: var(--content-w); margin: 0 auto; padding: 18px var(--gutter); display: grid; grid-template-columns: auto 1fr auto; gap: 48px; align-items: center; }
    .logo__img { height: 44px; width: auto; }
    .nav__primary { display: flex; gap: 36px; justify-content: center; font-size: 14.5px; font-weight: 500; }
    .nav__primary a { padding: 8px 0; border-bottom: 1.5px solid transparent; }
    .nav__primary a:hover, .nav__primary a[aria-current="page"] { border-color: var(--cobalt); }
    .nav__util { display: flex; gap: 28px; align-items: center; font-size: 14px; }
    .nav__util a { display: inline-flex; align-items: center; gap: 8px; }
    .nav__util .cart { background: var(--ink); color: var(--snow); padding: 10px 18px; border-radius: var(--r-1); font-weight: 500; transition: background var(--d-fast) var(--ease); }
    .nav__util .cart:hover { background: var(--cobalt); }
    .nav__util .cart b { font-family: var(--font-mono); font-size: 12px; opacity: 0.8; margin-left: 6px; font-weight: 400; }
    .nav__primary > .nav-item { position: relative; }
    .nav__primary > .nav-item > a { padding: 8px 0; border-bottom: 1.5px solid transparent; display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
    .nav__primary > .nav-item > a:hover, .nav__primary > .nav-item[data-open="true"] > a { border-color: var(--cobalt); }
    .nav__primary > .nav-item > a .caret { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-1px); transition: transform var(--d-fast) var(--ease); opacity: 0.6; }
    .nav__primary > .nav-item[data-open="true"] > a .caret { transform: rotate(-135deg) translateY(-1px); }

    /* MEGA MENU */
    /* F9-F2 (Marc 20/8, "større på iMac eller fixed?"): FAST bredde er den
       pæne løsning — et panel der vokser med 2560px bliver en strakt banner
       med kæmpe gab (samme argument som auth-cappen). Men 880 var i
       underkanten til 6 fliser + 4 kolonner; 1080 giver fliserne ~155px
       uden at panelet mister sin kort-karakter. */
    .mega { position: absolute; top: calc(100% + 12px); left: 50%; transform: translateX(-50%) translateY(8px); width: min(1080px, 92vw); background: var(--snow); border: 1.5px solid var(--ink); box-shadow: 0 24px 48px -24px rgba(13,16,25,0.4); opacity: 0; visibility: hidden; transition: opacity var(--d-fast) var(--ease), transform var(--d-fast) var(--ease); z-index: 60; }
    .nav-item[data-open="true"] .mega { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
    /* F7-6: kvalitets-tiles med produktfotos øverst i STOF-panelet (GM-mønsteret). */
    .mega__tiles { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; padding: 18px 22px 16px; border-bottom: 1px solid var(--line); }
    .mega__tiles a { display: grid; gap: 7px; font-size: 12.5px; font-weight: 500; color: var(--ink); text-align: left; }
    .mega__tiles img { width: 100%; aspect-ratio: 1; object-fit: cover; border: 1px solid var(--line); }
    .mega__tiles a:hover img { border-color: var(--ink); }
    .mega__inner { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1.2fr; }
    .mega__col { padding: 24px 24px; border-right: 1px solid var(--line); }
    .mega__col:last-child { border-right: 0; }
    .mega__col h4 { font-family: var(--font-sans); font-size: 10.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); margin: 0 0 14px; }
    .mega__col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
    .mega__col ul a { font-size: 14px; font-weight: 500; color: var(--ink-soft); display: flex; justify-content: space-between; align-items: center; gap: 12px; }
    .mega__col ul a:hover { color: var(--cobalt); }
    .mega__col ul a .ct { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-faint); }
    .mega__swatches { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
    .mega__sw { width: 100%; aspect-ratio: 1; border-radius: 50%; border: 1px solid var(--line); }
    .mega__feature { padding: 0; border-right: 0; position: relative; overflow: hidden; }
    .mega__feature .bg { position: absolute; inset: 0; }
    .mega__feature .body { position: absolute; bottom: 0; left: 0; right: 0; padding: 18px 20px; background: linear-gradient(to top, rgba(13,16,25,0.85), transparent); color: var(--snow); }
    .mega__feature .body .k { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(248,248,244,0.75); }
    .mega__feature .body b { display: block; font-family: var(--font-sans); font-weight: 500; font-size: 17px; letter-spacing: -0.015em; margin-top: 4px; }
    .mega__feature .body span { font-size: 11.5px; color: rgba(248,248,244,0.8); }

    @media (max-width: 1100px) {
      .nav__row { grid-template-columns: auto 1fr auto; }
      .nav__primary { display: none; }
      .nav__util .util-text { display: none; }
      .nav__burger { display: inline-flex; }
    }
    @media (min-width: 1101px) { .nav__burger { display: none; } }

    /* HAMBURGER */
    .nav__burger { width: 42px; height: 42px; border: 1.5px solid var(--ink); background: var(--snow); cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
    .nav__burger span { width: 18px; height: 1.5px; background: var(--ink); transition: transform var(--d-fast) var(--ease), opacity var(--d-fast) var(--ease); }

    /* MOBILE DRAWER */
    .drawer { position: fixed; inset: 0; z-index: 100; visibility: hidden; pointer-events: none; }
    .drawer[data-open="true"] { visibility: visible; pointer-events: auto; }
    .drawer__backdrop { position: absolute; inset: 0; background: rgba(13,16,25,0.4); opacity: 0; transition: opacity var(--d-med) var(--ease); }
    .drawer[data-open="true"] .drawer__backdrop { opacity: 1; }
    .drawer__panel { position: absolute; top: 0; right: 0; width: 360px; max-width: 88vw; height: 100vh; background: var(--snow); border-left: 1.5px solid var(--ink); transform: translateX(100%); transition: transform var(--d-med) var(--ease); display: flex; flex-direction: column; overflow-y: auto; }
    .drawer[data-open="true"] .drawer__panel { transform: translateX(0); }
    .drawer__head { display: flex; justify-content: space-between; align-items: center; padding: 18px 24px; border-bottom: 1.5px solid var(--ink); }
    .drawer__head img { height: 36px; }
    .drawer__close { width: 38px; height: 38px; border: 1.5px solid var(--ink); background: var(--snow); cursor: pointer; font-size: 16px; display: grid; place-items: center; }
    .drawer__close:hover { background: var(--ink); color: var(--snow); }
    .drawer__search { padding: 16px 24px; border-bottom: 1px solid var(--line); }
    .drawer__search a { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1.5px solid var(--line); font-size: 14px; color: var(--ink-mute); }
    .drawer__search a:hover { border-color: var(--ink); color: var(--ink); }
    .drawer__nav { padding: 8px 0; }
    .drawer__group { border-bottom: 1px solid var(--line); }
    .drawer__group > button { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; background: 0; border: 0; cursor: pointer; font-family: var(--font-sans); font-size: 16px; font-weight: 500; color: var(--ink); }
    .drawer__group > button .caret { width: 8px; height: 8px; border-right: 1.5px solid var(--ink-mute); border-bottom: 1.5px solid var(--ink-mute); transform: rotate(45deg); transition: transform var(--d-fast) var(--ease); }
    .drawer__group[data-open="true"] > button .caret { transform: rotate(-135deg); }
    .drawer__sub { display: none; padding: 0 24px 16px; flex-direction: column; gap: 2px; }
    .drawer__group[data-open="true"] .drawer__sub { display: flex; }
    .drawer__sub a { display: flex; justify-content: space-between; padding: 9px 14px; font-size: 13.5px; color: var(--ink-soft); background: var(--snow-deep); }
    .drawer__sub a:hover { color: var(--cobalt); }
    .drawer__sub a .ct { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-faint); }
    .drawer__link { display: block; padding: 16px 24px; font-size: 16px; font-weight: 500; color: var(--ink); border-bottom: 1px solid var(--line); }
    .drawer__link:hover { color: var(--cobalt); }
    .drawer__foot { margin-top: auto; padding: 20px 24px; background: var(--ink); color: var(--snow); display: flex; flex-direction: column; gap: 12px; }
    .drawer__foot a { color: rgba(248,248,244,0.85); font-size: 13.5px; display: flex; align-items: center; gap: 8px; }
    .drawer__foot a:hover { color: var(--cobalt-soft); }
    .drawer__foot .phone { font-family: var(--font-sans); font-weight: 500; font-size: 18px; color: var(--snow); letter-spacing: -0.01em; }

    /* ====================================================
       1 / HERO — full-bleed cobalt
       ==================================================== */
    .hero { background: var(--cobalt); color: var(--snow); padding: 80px var(--gutter) 0; position: relative; overflow: hidden; }
    .hero__inner { max-width: var(--content-inner); margin: 0 auto; display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; min-height: 660px; position: relative; align-items: end; }
    .hero__copy { grid-column: 1 / span 6; padding-bottom: 100px; position: relative; z-index: 3; }
    .hero__copy .eyebrow { color: rgba(248,248,244,0.7); margin-bottom: 32px; }
    .hero__copy .eyebrow::before { background: rgba(248,248,244,0.7); }
    /* overflow-wrap: dansk og finsk er sammensætningssprog, og overskriften står
       i en 6/12-kolonne hvor BÅDE skrift og kolonne skalerer med vw. Et for
       langt ord retter sig derfor aldrig af sig selv ved en anden bredde. Målt
       på /tukku/: "kilpailijoillasi" lå 20px uden for kolonnen i HELE båndet
       1040-1400px. Ikke hyphens: auto. Den delte også "kon-kurrenter" på den
       danske side, hvor intet løb over, og en bindestreg midt i en 112px
       display-overskrift er en dårligere fejl end den vi retter. break-word
       rører kun et ord der ikke kan være der. */
    .hero__copy h1 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-display); line-height: 0.94; letter-spacing: -0.035em; margin: 0 0 32px; max-width: 12ch; overflow-wrap: break-word; }
    .hero__copy h1 em { font-style: italic; font-weight: 400; }
    .hero__copy h1 b { font-weight: 500; }
    .hero__copy p { font-size: var(--t-body-l); line-height: 1.5; color: rgba(248,248,244,0.82); max-width: 44ch; margin: 0 0 40px; }
    .hero__actions { display: flex; gap: 12px; flex-wrap: wrap; }

    .hero__collage { grid-column: 7 / span 6; position: relative; min-height: 660px; padding-bottom: 80px; }
    .hero__block-1 { position: absolute; top: 64px; left: 32px; width: 78%; height: 60%; background: var(--snow); z-index: 1; }
    .hero__img-1 { position: absolute; top: 24px; left: 0; width: 78%; aspect-ratio: 16/10; background: var(--stone); border: 1.5px solid var(--snow); z-index: 2; }
    .hero__img-1 .ph { width: 100%; height: 100%; }
    .hero__img-2 { position: absolute; right: 0; bottom: 120px; width: 44%; aspect-ratio: 4/5; background: var(--stone); border: 1.5px solid var(--snow); z-index: 3; }
    .hero__img-2 .ph { width: 100%; height: 100%; }
    .hero__stamp { position: absolute; top: 0; right: 64px; width: 116px; height: 116px; border-radius: 50%; background: var(--ink); color: var(--snow); display: grid; place-items: center; text-align: center; font-size: 9px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.4; padding: 0 14px; z-index: 4; transform: rotate(-1.5deg); }
    .hero__stamp::before { content: ""; position: absolute; inset: 8px; border: 1px solid rgba(248,248,244,0.2); border-radius: 50%; }
    .hero__stamp b { display: block; font-family: var(--font-sans); font-weight: 500; font-size: 28px; line-height: 1; letter-spacing: -0.03em; color: var(--cobalt-soft); margin: 4px 0; }

    @media (max-width: 1000px) {
      .hero__inner { grid-template-columns: 1fr; min-height: 0; }
      .hero__copy { grid-column: 1; padding-bottom: 32px; }
      .hero__collage { grid-column: 1; min-height: 460px; }
    }

    /* ====================================================
       2 / TICKER — full-bleed ink
       ==================================================== */
    .ticker { background: var(--ink); color: var(--snow); }
    .ticker__inner { max-width: var(--content-w); margin: 0 auto; padding: 0 var(--gutter); display: grid; grid-template-columns: repeat(5, 1fr); }
    .ticker__cell { padding: 32px 24px; border-right: 1px solid rgba(248,248,244,0.12); display: flex; flex-direction: column; gap: 8px; }
    .ticker__cell:last-child { border-right: 0; }
    .ticker__cell .lbl { font-size: 11px; font-weight: 500; letter-spacing: var(--tracked-eye); text-transform: uppercase; color: rgba(248,248,244,0.5); }
    .ticker__cell .val { font-family: var(--font-sans); font-weight: 400; font-size: 42px; line-height: 1; letter-spacing: -0.03em; }
    .ticker__cell .val small { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(248,248,244,0.5); margin-left: 4px; vertical-align: 18px; font-weight: 400; }
    .ticker__cell:nth-child(odd) .val { color: var(--cobalt-soft); }
    @media (max-width: 900px) { .ticker__inner { grid-template-columns: 1fr 1fr; } .ticker__cell:nth-child(odd) { border-right: 1px solid rgba(248,248,244,0.12); } .ticker__cell { border-bottom: 1px solid rgba(248,248,244,0.12); } }

    /* ====================================================
       Section base + headers
       ==================================================== */
    .sec { max-width: var(--content-w); margin: 0 auto; padding: 128px var(--gutter); }
    /* R13: om/kontakt/discover/faq/legal/faq-arkiv lægger et .wrap INDE i .sec, så
       gutteren blev talt to gange (112px inset, indhold 1256px i stedet for 1368px)
       på ALLE viewports. Her dropper .sec sin egen sidepadding og lader .wrap'et
       eje kapningen — præcis som .form-section (linje 546) allerede gør.
       :has(> .wrap) er bevidst: forsidens .sec-sektioner har INTET .wrap-barn og
       ville gå kant-til-kant hvis padding'en blev fjernet ubetinget. */
    .sec:has(> .wrap) { padding-inline: 0; }
    .sec--snow { background: var(--snow); }
    .sec--snow-deep { background: var(--snow); }
    .sec-head { display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: end; margin-bottom: 64px; }
    .sec-head__index { grid-column: 1 / span 1; font-size: 14px; font-weight: 500; color: var(--cobalt); }
    .sec-head__title { grid-column: 2 / span 6; }
    .sec-head__title h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-h1); line-height: var(--lh-tight); letter-spacing: -0.028em; margin: 16px 0 0; }
    .sec-head__title h2 em { font-style: italic; font-weight: 400; color: var(--cobalt); }
    .sec-head__title h2 b { font-weight: 500; }
    .sec-head__lead { grid-column: 8 / span 5; color: var(--ink-soft); font-size: var(--t-body-l); max-width: 38ch; margin: 0; line-height: 1.5; }
    @media (max-width: 900px) {
      .sec-head { grid-template-columns: 1fr; }
      .sec-head__index, .sec-head__title, .sec-head__lead { grid-column: 1; }
    }

    /* ====================================================
       3 / CATEGORIES — bento grid 12×3, mixed-size tiles
       resolving to a clean rectangle
       ==================================================== */
    .cats {
      display: grid;
      grid-template-columns: repeat(12, 1fr);
      grid-auto-rows: 260px;
      gap: 14px;
    }
    .cat {
      position: relative;
      overflow: hidden;
      border: 1.5px solid var(--ink);
      display: block;
      background: var(--stone);
      transition: transform var(--d-med) var(--ease);
    }
    .cat:hover { transform: translateY(-3px); }
    .cat::after {
      /* dark gradient toward bottom so label is always legible */
      content: "";
      position: absolute; left: 0; right: 0; bottom: 0;
      height: 60%;
      background: linear-gradient(to bottom, transparent 0%, rgba(13,16,25,0.0) 30%, rgba(13,16,25,0.62) 100%);
      pointer-events: none; z-index: 1;
    }
    .cat__bg {
      /* per-audience color tint that doubles as fabric placeholder */
      position: absolute; inset: 0; z-index: 0;
    }
    .cat__bg::after {
      content: "";
      position: absolute; inset: 0;
      background-image: repeating-linear-gradient(45deg, transparent 0 18px, rgba(13,16,25,0.06) 18px 19px);
    }
    /* F7-11: ægte produktfoto i flisen. Fotoet ligger i bunden, tinten er
       flisens egen gradient (background: inherit fra .cat__bg) som multiply-
       lag OVENPÅ — farveidentiteten består, teksten forbliver læsbar via
       .cat::after-mørkningen. Tint som ELEMENT, ikke ::before: pseudoen males
       FØR børn og ville lægge sig under fotoet. Uden foto: ren gradient som
       hidtil. */
    .cat__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
    .cat__tint { position: absolute; inset: 0; background: inherit; opacity: 0.30; mix-blend-mode: multiply; }
    /* .cat__hint fjernet: den viste mock'ens engelske art-direction-noter */

    /* per-audience tints (placeholders — swap for real photos later)
       De fire første har hver et FARVEROLLE-alias ved siden af sig. Uden for
       dansk bærer de samme fire pladser motiv-fliser (M-06b), og en flise der
       hedder "Animals" må ikke bære klassen .cat--girls: så ville den næste der
       restyler pigefarven ramme et motiv uden at vide det. Aliaset peger på
       præcis samme gradient — værdien står ét sted, så de to ikke kan skride
       fra hinanden. */
    .cat--women  .cat__bg,
    .cat--rose   .cat__bg { background: linear-gradient(155deg, #D9A8A0 0%, #B85A47 100%); }
    .cat--girls  .cat__bg,
    .cat--blush  .cat__bg { background: linear-gradient(155deg, #F0C9D6 0%, #C87A8E 100%); }
    .cat--boys   .cat__bg,
    .cat--indigo .cat__bg { background: linear-gradient(155deg, #4A6BA8 0%, #1D2944 100%); }
    .cat--unisex .cat__bg,
    .cat--sage   .cat__bg { background: linear-gradient(155deg, #B5C0A0 0%, #6B7A55 100%); }
    .cat--bamboo .cat__bg { background: linear-gradient(155deg, #E8DDC0 0%, #B89F75 100%); }
    .cat--rib    .cat__bg { background: linear-gradient(155deg, #B89C82 0%, #5E4A38 100%); }
    .cat--mobel  .cat__bg { background: linear-gradient(155deg, #8A9B7E 0%, #3D5238 100%); }

    /* Tile sizes — bento layout that resolves to 12×3 rectangle */
    .cat--xl   { grid-column: span 6; grid-row: span 2; }
    .cat--m    { grid-column: span 3; grid-row: span 1; }
    .cat--wide { grid-column: span 6; grid-row: span 1; }

    .cat__lbl {
      position: absolute; bottom: 0; left: 0; right: 0;
      padding: 22px 24px 22px;
      display: flex; align-items: end; justify-content: space-between;
      gap: 16px; z-index: 2;
      color: var(--snow);
    }
    .cat__lbl h3 {
      font-family: var(--font-sans); font-weight: 500;
      line-height: 0.94;
      letter-spacing: -0.025em; margin: 0;
      color: var(--snow);
      font-size: 30px;
    }
    .cat--xl .cat__lbl h3   { font-size: 64px; letter-spacing: -0.035em; }
    .cat--wide .cat__lbl h3 { font-size: 48px; letter-spacing: -0.03em; }
    .cat__lbl .sub {
      margin-top: 6px; font-size: 11px; font-weight: 500;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: rgba(248,248,244,0.78);
    }
    .cat__lbl .count {
      display: flex; flex-direction: column; align-items: flex-end; gap: 4px;
      flex-shrink: 0;
    }
    .cat__lbl .count b {
      font-family: var(--font-sans); font-weight: 500;
      font-size: 26px; line-height: 1; letter-spacing: -0.02em;
      color: var(--snow);
    }
    .cat--xl .cat__lbl .count b { font-size: 42px; }
    .cat__lbl .count span {
      font-family: var(--font-mono); font-size: 10px;
      color: rgba(248,248,244,0.6); letter-spacing: 0.06em;
      text-transform: uppercase;
    }
    .cat__badge {
      position: absolute; top: 14px; left: 14px;
      background: var(--cobalt); color: var(--snow);
      padding: 6px 12px;
      font-size: 10.5px; font-weight: 500;
      letter-spacing: 0.08em; text-transform: uppercase;
      z-index: 3;
    }
    .cat__badge--ink { background: var(--ink); }

    /* Vault tile — wide foil anchor */
    .cat--vault {
      background: var(--vault-bg);
      border-color: var(--vault-bg);
    }
    .cat--vault::after { display: none; }
    .cat--vault .cat__bg {
      background:
        radial-gradient(circle at 78% 18%, rgba(245,220,149,0.16), transparent 55%),
        radial-gradient(circle at 22% 82%, rgba(201,150,85,0.12), transparent 55%);
    }
    .cat--vault .cat__bg::after {
      background-image: repeating-linear-gradient(45deg, transparent 0 16px, rgba(232,239,251,0.045) 16px 17px);
    }
    .cat--vault .cat__lbl {
      background: linear-gradient(to right, rgba(13,10,6,0.7) 0%, transparent 70%);
    }
    .cat--vault .cat__lbl h3 {
      background: var(--vault-foil);
      -webkit-background-clip: text; background-clip: text;
      color: transparent;
    }
    .cat--vault .cat__lbl .sub { color: var(--vault-mute); }
    .cat--vault .cat__lbl .count b { color: var(--vault-ink); }
    .cat--vault .cat__badge {
      background: var(--vault-foil); color: #1A1408;
    }

    @media (max-width: 1000px) {
      .cats { grid-template-columns: repeat(6, 1fr); grid-auto-rows: 220px; }
      .cat--xl { grid-column: span 6; grid-row: span 2; }
      .cat--m, .cat--wide { grid-column: span 3; grid-row: span 1; }
      .cat--wide { grid-column: span 6; }
    }
    @media (max-width: 600px) {
      .cats { grid-template-columns: 1fr; grid-auto-rows: 200px; }
      .cat--xl, .cat--m, .cat--wide { grid-column: 1; grid-row: span 1; }
      .cat--xl .cat__lbl h3 { font-size: 44px; }
      .cat--wide .cat__lbl h3 { font-size: 36px; }
    }

    /* ====================================================
       4 / EDITS — 3 large editorial landscape cards
       (replaces the false "every Wednesday" claim)
       ==================================================== */
    .edits {
      display: grid; grid-template-columns: repeat(3, 1fr);
      gap: 20px;
    }
    /* Scopet til .edits. Klassen .edit stod uscoped og ramte derfor også
       WooCommerces Redigér-link på adressekortet, som fik display:flex,
       flex-direction:column, gap:20px og et hover-løft på 4px det aldrig
       skulle have haft. theme.css lægges på hver eneste frontend-side, så
       lækagen gjaldt overalt hvor et plugin skriver class="edit".
       I temaet selv bruges .edit kun ét sted, front-page.php:275, og altid
       inde i .edits, så indsnævringen ændrer intet på forsiden. */
    .edits .edit {
      position: relative;
      display: flex; flex-direction: column;
      gap: 20px;
      transition: transform var(--d-med) var(--ease);
    }
    .edits .edit:hover { transform: translateY(-4px); }
    /* F9-1: hele kortet er klikbart — CTA'ens ::after strækkes over .edit
       (nærmeste positionerede forfader). Ét anker, hele fladen. z-index 2:
       .edit__media ligger på z-index 1 og vandt ellers hit-testen (målt 20/8 —
       elementFromPoint gav edit__img, ikke linket). */
    .edits .edit .cta::after { content: ''; position: absolute; inset: 0; z-index: 2; }
    .edit__media-wrap {
      position: relative;
      padding: 16px 0 0 16px;
    }
    .edit__media-bg {
      position: absolute;
      top: 0; left: 0; bottom: 16px; right: 16px;
      background: var(--cobalt);
      z-index: 0;
    }
    .edit--basics .edit__media-bg { background: var(--ink); }
    .edit--best .edit__media-bg { background: var(--cobalt-deep); }
    .edit__media {
      position: relative; z-index: 1;
      aspect-ratio: 5/4;
      background: var(--stone);
      border: 1.5px solid var(--ink);
    }
    .edit__media .ph { width: 100%; height: 100%; }
    .edit__media .ribbon {
      position: absolute; bottom: 16px; right: 16px;
      background: var(--snow); color: var(--ink);
      padding: 6px 12px;
      font-size: 11px; font-weight: 500;
      letter-spacing: var(--tracked-eye); text-transform: uppercase;
      border: 1.5px solid var(--ink);
    }
    .edit__body {
      padding: 0 4px;
      display: flex; flex-direction: column; gap: 8px;
      /* Pernille 2/9: kroppen fylder kortet, så __foot kan bundforankres og
         alle tre CTA'er står på samme linje uanset tekstlængde. */
      flex: 1;
    }
    .edit__kicker {
      font-size: 11px; font-weight: 500;
      letter-spacing: var(--tracked-eye); text-transform: uppercase;
      color: var(--cobalt);
    }
    .edit__title {
      font-family: var(--font-sans); font-weight: 500;
      font-size: 30px; line-height: 1.04;
      letter-spacing: -0.022em; margin: 0;
    }
    .edit__title em { font-style: italic; font-weight: 400; color: var(--cobalt); }
    .edit__desc {
      font-size: 14.5px; color: var(--ink-soft);
      margin: 4px 0 0; line-height: 1.5;
    }
    /* F-17: tælle-badgen til venstre er fjernet (tallene var opdigtede). Med kun
       ét barn tilbage ville space-between trække CTA'en helt til venstre — flex-end
       holder den, hvor designet satte den. .count-reglen er slettet med badgen;
       en regel uden element er kun en invitation til at genindføre tallet. */
    .edit__foot {
      display: flex; justify-content: flex-end; align-items: center;
      padding-top: 12px; margin-top: auto;
      border-top: 1px solid var(--line);
      font-size: 13px;
    }
    .edit__foot .cta {
      font-weight: 500;
      border-bottom: 1.5px solid var(--ink);
      padding-bottom: 1px;
    }

    /* "Find ved at browse" — pattern-type discovery chip row */
    /* F9-2 (20/8): rækken lignede et afsnit "kastet ind uden omtanke" (Marc) —
       nøgen labelrække på sektionens bund. Nu et indrammet bånd med labelen
       som egen mini-overskrift og luft nok til at chippene læses som et valg,
       ikke som resterende tags. */
    .discover {
      display: flex; gap: 12px 12px; flex-wrap: wrap;
      align-items: center;
      margin-top: 64px;
      padding: 26px 28px 30px;
      background: var(--paper);
      border: 1.5px solid var(--line);
    }
    .discover .lbl {
      flex-basis: 100%;
      font-size: 12px; font-weight: 500;
      letter-spacing: var(--tracked-eye); text-transform: uppercase;
      color: var(--ink-mute);
      margin: 0 0 6px;
    }
    .discover .chip { padding: 10px 18px; font-size: 13.5px; }
    .chip {
      padding: 8px 14px;
      background: var(--snow);
      border: 1.5px solid var(--ink);
      border-radius: var(--r-pill);
      font-size: 13px; font-weight: 500;
      transition: background var(--d-fast) var(--ease), color var(--d-fast) var(--ease);
    }
    .chip:hover { background: var(--ink); color: var(--snow); }
    .chip--brand { background: var(--cobalt); color: var(--snow); border-color: var(--cobalt); }
    .chip--brand:hover { background: var(--cobalt-deep); border-color: var(--cobalt-deep); color: var(--snow); }
    .chip .ct {
      font-family: var(--font-mono); font-size: 10.5px;
      color: var(--ink-mute); margin-left: 6px;
      letter-spacing: 0.04em;
    }
    .chip:hover .ct { color: rgba(248,248,244,0.7); }
    .chip--brand .ct { color: rgba(248,248,244,0.7); }

    @media (max-width: 1000px) { .edits { grid-template-columns: 1fr; } }

    /* ====================================================
       5 / MANIFESTO — snow background, cobalt internal accent
       ==================================================== */
    .manifesto { background: var(--snow); color: var(--ink); padding: 128px var(--gutter); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
    .manifesto__inner { max-width: var(--content-inner); margin: 0 auto; display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: center; }
    .manifesto__collage { grid-column: 1 / span 5; position: relative; min-height: 540px; }
    .manifesto__block { position: absolute; top: 32px; right: 32px; width: 80%; height: 88%; background: var(--cobalt); z-index: 1; }
    .manifesto__img { position: absolute; top: 0; left: 0; width: 80%; aspect-ratio: 4/5; background: var(--stone); border: 1.5px solid var(--ink); z-index: 2; }
    .manifesto__img .ph { width: 100%; height: 100%; }
    .manifesto__num { position: absolute; bottom: 0; right: 0; background: var(--ink); color: var(--snow); padding: 24px 32px; z-index: 3; transform: rotate(-1.5deg); }
    .manifesto__num .n { font-size: 80px; font-weight: 400; line-height: 0.9; letter-spacing: -0.04em; }
    .manifesto__num .l { font-size: 11px; font-weight: 500; letter-spacing: var(--tracked-eye); text-transform: uppercase; color: rgba(248,248,244,0.7); margin-top: 6px; }
    .manifesto__copy { grid-column: 7 / span 6; }
    .manifesto__copy .eyebrow { color: var(--ink-mute); margin-bottom: 24px; }
    .manifesto__copy .eyebrow::before { background: var(--cobalt); }
    .manifesto__copy h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-h1); line-height: var(--lh-tight); letter-spacing: -0.028em; margin: 0 0 28px; color: var(--ink); }
    .manifesto__copy h2 em { font-style: italic; font-weight: 400; color: var(--cobalt); }
    .manifesto__copy h2 b { font-weight: 500; }
    .manifesto__copy p { font-size: var(--t-body-l); line-height: 1.55; color: var(--ink-soft); max-width: 44ch; margin: 0 0 18px; }
    .manifesto__copy .actions { display: flex; gap: 12px; margin-top: 32px; flex-wrap: wrap; }
    @media (max-width: 1000px) { .manifesto__inner { grid-template-columns: 1fr; gap: 80px; } .manifesto__collage, .manifesto__copy { grid-column: 1; } }

    /* ====================================================
       6 / VAULT — pitch black + foil (lighter than before since we have a teaser in the cats grid)
       ==================================================== */
    .vault { background: var(--vault-bg); color: var(--vault-ink); padding: 128px 0; position: relative; overflow: hidden; }
    .vault__bg { position: absolute; top: 80px; left: -3vw; right: -3vw; font-family: var(--font-sans); font-weight: 600; font-size: clamp(160px, 24vw, 400px); line-height: 0.85; letter-spacing: -0.06em; background: var(--vault-foil); -webkit-background-clip: text; background-clip: text; color: transparent; opacity: 0.13; pointer-events: none; }
    .vault__inner { position: relative; z-index: 2; max-width: var(--content-w); margin: 0 auto; padding: 0 var(--gutter); display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: end; }
    .vault__pitch { grid-column: 1 / span 5; }
    .vault__pitch .eyebrow { color: var(--vault-mute); margin-bottom: 24px; }
    .vault__pitch .eyebrow::before { background: var(--vault-foil); }
    .vault__pitch h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-h1); line-height: var(--lh-tight); letter-spacing: -0.028em; margin: 0 0 28px; }
    .vault__pitch h2 em { font-style: italic; }
    .vault__pitch p { color: var(--vault-mute); font-size: var(--t-body-l); line-height: 1.55; max-width: 38ch; margin: 0 0 32px; }
    .vault__pitch .actions { display: flex; gap: 12px; flex-wrap: wrap; }
    .btn--foil { background: var(--vault-foil); color: #1A1408; border: 1.5px solid transparent; font-weight: 600; }
    .btn--foil:hover { filter: brightness(1.1); }
    .vault__mosaic { grid-column: 7 / span 6; position: relative; height: 520px; }
    .vault__tile { position: absolute; background: #11141C; border: 1px solid var(--vault-line); overflow: hidden; }
    .vault__tile .ph { width: 100%; height: 100%; background: linear-gradient(135deg, rgba(232,239,251,0.04), rgba(232,239,251,0.08)), repeating-linear-gradient(45deg, transparent 0 14px, rgba(232,239,251,0.05) 14px 15px); }
    .vault__tile .ph__label { background: var(--vault-bg); color: var(--vault-mute); }
    .vault__tile--1 { top: 0;    left: 0;     width: 300px; height: 300px; z-index: 3; }
    .vault__tile--2 { top: 40px; left: 260px; width: 220px; height: 340px; z-index: 2; }
    .vault__tile--3 { top: 120px;left: 440px; width: 200px; height: 220px; z-index: 3; }
    .vault__tile--4 { top: 320px;left: 100px; width: 230px; height: 180px; z-index: 2; }
    .vault__tile--5 { top: 280px;left: 340px; width: 240px; height: 200px; z-index: 1; }
    .vault__tile--6 { top: 220px; left: 620px; width: 150px; height: 150px; background: var(--vault-foil); color: #1A1408; display: grid; place-items: center; text-align: center; padding: 14px; font-size: 12px; font-weight: 600; letter-spacing: var(--tracked-eye); text-transform: uppercase; z-index: 4; transform: rotate(-1.5deg); line-height: 1.3; }
    @media (max-width: 1000px) { .vault__inner { grid-template-columns: 1fr; gap: 80px; } .vault__pitch, .vault__mosaic { grid-column: 1; } }
    @media (max-width: 700px) { .vault__mosaic { transform: scale(0.7); transform-origin: top left; height: 380px; } }

    /* ====================================================
       7 / ONBOARDING (unchanged)
       ==================================================== */
    .onb { max-width: var(--content-w); margin: 0 auto; padding: 128px var(--gutter); }
    .onb__head { display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: end; margin-bottom: 64px; }
    .onb__head .idx { grid-column: 1 / span 1; color: var(--cobalt); font-size: 14px; font-weight: 500; }
    .onb__head .title { grid-column: 2 / span 7; }
    .onb__head .title h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-h1); line-height: var(--lh-tight); letter-spacing: -0.028em; margin: 16px 0 0; }
    .onb__head .title h2 em { font-style: italic; color: var(--cobalt); }
    .onb__head p { grid-column: 9 / span 4; color: var(--ink-soft); font-size: var(--t-body-l); margin: 0; max-width: 36ch; line-height: 1.5; }
    .onb__head p b { color: var(--ink); font-weight: 500; }
    /* Marc 1/9: "dette afsnit ser ud til kun at fylde halvdelen af skærmen på
       mobil: Sådan foregår det". Målt efter: det var en tredjedel, ikke
       halvdelen, og på iPad en sjettedel.

       Fejlen var at reglen her tvang BØRNENE ind i spalte 1, men aldrig rørte
       selve gridet, som blev ved med at være repeat(12, 1fr) med 32px gap. Ved
       390px giver det 11 tomme spor plus 11 gaps a 32px = 352px i en kasse der
       kun er 350px bred. Sporene og deres gaps var altså bredere end kassen,
       de tomme 1fr-spor blev klemt til 0, og al tekst endte i spalte 1 på
       113px = 32 % af skærmen. Overskriften brækkede til en høj smal ribbe, så
       hovedet blev 749px højt mod 280px nu. Ved 834px var teksten nede på 15 %.

       Gridet skal kollapses, ikke kun børnene. Det er præcis hvad linjen for
       .onb__steps nedenfor allerede gør, og at hovedet manglede den er grunden
       til at trinnene så rigtige ud mens overskriften over dem ikke gjorde.

       column-gap nulstilles fordi et vandret mellemrum ikke betyder noget når
       der kun er ét spor. row-gap sættes til 20px, ikke 32, fordi de tre led
       (nummer, overskrift, manchet) læses som én blok når de er stablet.
       Manchettens max-width: 36ch bliver stående: trinnenes egne afsnit lige
       nedenfor er cappet på 30ch, og uden cap bliver manchetlinjen 95 tegn
       bred på iPad. Målt på kontrolfladen før noget blev skrevet her.

       Samme fejl står på .tests__head længere nede. Den er urørt med vilje:
       ingen markup i temaet bruger den klasse, så den er død CSS. */
    @media (max-width: 900px) { .onb__head { grid-template-columns: 1fr; column-gap: 0; row-gap: 20px; } .onb__head > * { grid-column: 1 !important; } }
    .onb__steps { display: grid; grid-template-columns: repeat(12, 1fr); gap: 0; border-top: 1.5px solid var(--ink); }
    .step { grid-column: span 4; border-right: 1px solid var(--line); padding: 32px 32px 40px 0; position: relative; }
    .step:last-child { border-right: 0; padding-right: 0; }
    .step .n { display: inline-block; margin-bottom: 32px; font-size: 13px; font-weight: 500; color: var(--cobalt); letter-spacing: var(--tracked-eye); text-transform: uppercase; }
    .step h3 { font-family: var(--font-sans); font-weight: 500; font-size: 26px; line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 12px; }
    .step p { color: var(--ink-soft); margin: 0; font-size: var(--t-body); line-height: 1.5; max-width: 30ch; }
    @media (max-width: 900px) { .onb__steps { grid-template-columns: 1fr; } .step { grid-column: 1; border-right: 0; border-bottom: 1px solid var(--line); padding-right: 0; } }

    /* ====================================================
       8 / TESTIMONIALS (unchanged)
       ==================================================== */
    .tests { background: var(--snow); padding: 128px var(--gutter); border-top: 1px solid var(--line); }
    .tests__inner { max-width: var(--content-inner); margin: 0 auto; }
    .tests__head { display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: end; margin-bottom: 64px; }
    .tests__head .idx { grid-column: 1 / span 1; color: var(--cobalt); font-size: 14px; font-weight: 500; }
    .tests__head .title { grid-column: 2 / span 6; }
    .tests__head .title h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-h1); line-height: var(--lh-tight); letter-spacing: -0.028em; margin: 16px 0 0; }
    .tests__head .title h2 em { font-style: italic; color: var(--cobalt); }
    .tests__head .meta { grid-column: 9 / span 4; text-align: right; color: var(--ink-mute); font-size: 13px; line-height: 1.55; }
    .tests__head .meta b { color: var(--ink); font-weight: 500; }
    @media (max-width: 900px) { .tests__head > * { grid-column: 1 !important; text-align: left !important; } }
    .tests__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; align-items: start; }
    .quote { background: var(--snow); border: 1.5px solid var(--ink); padding: 36px 32px 28px; display: flex; flex-direction: column; gap: 28px; grid-column: span 4; }
    .quote--offset { margin-top: 56px; }
    .quote blockquote { font-family: var(--font-sans); font-weight: 400; font-size: 24px; line-height: 1.25; letter-spacing: -0.015em; margin: 0; }
    .quote blockquote em { font-style: italic; font-weight: 400; }
    .quote__by { display: flex; gap: 14px; align-items: center; margin-top: auto; }
    .quote__by .avt { width: 48px; height: 48px; border-radius: 50%; background: var(--cobalt); color: var(--snow); display: grid; place-items: center; font-weight: 500; font-size: 18px; flex-shrink: 0; }
    .quote__by .who { font-size: 13px; line-height: 1.4; }
    .quote__by .who b { display: block; font-weight: 500; }
    .quote__by .who span { color: var(--ink-mute); font-size: 11.5px; }
    @media (max-width: 900px) { .tests__grid { grid-template-columns: 1fr; } .quote { grid-column: 1; } .quote--offset { margin-top: 0; } }

    /* ====================================================
       9 / CLOSER (unchanged)
       ==================================================== */
    .closer { background: var(--cobalt); color: var(--snow); padding: 128px 0; position: relative; overflow: hidden; }
    .closer__bg { position: absolute; bottom: -40px; left: -3vw; font-family: var(--font-sans); font-weight: 600; font-size: clamp(180px, 24vw, 380px); line-height: 0.85; letter-spacing: -0.06em; color: rgba(248,248,244,0.08); pointer-events: none; }
    .closer__inner { max-width: var(--content-w); margin: 0 auto; padding: 0 var(--gutter); display: grid; grid-template-columns: repeat(12, 1fr); gap: 32px; align-items: end; position: relative; z-index: 2; }
    .closer__main { grid-column: 1 / span 7; }
    .closer__main h2 { font-family: var(--font-sans); font-weight: 400; font-size: var(--t-display); line-height: 0.96; letter-spacing: -0.035em; margin: 0; max-width: 14ch; }
    .closer__main h2 em { font-style: italic; }
    .closer__main .actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 40px; }
    .closer__contact { grid-column: 9 / span 4; display: flex; flex-direction: column; gap: 4px; }
    .closer__contact .eyebrow { color: rgba(248,248,244,0.7); margin-bottom: 16px; }
    .closer__contact .eyebrow::before { background: rgba(248,248,244,0.7); }
    .closer__contact a { font-size: 16px; padding: 14px 0; border-bottom: 1px solid rgba(248,248,244,0.25); transition: color var(--d-fast) var(--ease), border-color var(--d-fast) var(--ease); font-weight: 500; }
    .closer__contact a:hover { color: var(--ink); border-color: var(--ink); }
    @media (max-width: 900px) { .closer__inner { grid-template-columns: 1fr; gap: 48px; } .closer__main, .closer__contact { grid-column: 1; } }

    /* ====================================================
       PRIVATKUNDE-UDGANGEN (.pk-exit) · Marc 26/8
       "lidt for subtilt … måske skal det laves som en knap"

       ÉN chip, fire vægte. Basen herunder er den letteste form (hvid bund,
       1px --line). Hver flade skruer OP eller NED i sit eget ark; ingen flade
       arver en vægt den ikke selv har valgt. Alle fire overskrivninger er
       skrevet med højere specificitet end basen, så rækkefølgen mellem arkene
       ikke kan drive. Basen ligger i theme.css fordi det er det ene ark der
       indlæses på alle fire flader (functions.php, 'jydsk-v2-main');
       access-gate.css, pdp.css og account.css indlæses efter.

       Firkantet (--r-1 = 2px), ingen skygge, ingen ny token.
       min-height: 44px = Apples og Googles tapmål, samme tal som .ag__x.
       ⚠️ Brug ALDRIG .btn--mini her: den er 38px og falder under tapmålet.
       ==================================================== */
    .pk-exit {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
      min-height: 44px;
      padding: 9px 14px;
      border: 1px solid var(--line);
      border-radius: var(--r-1);
      background: var(--paper);
      font-family: var(--font-sans);
      font-size: var(--t-body-s);
      font-weight: 600;
      line-height: 1.25;
      letter-spacing: -0.005em;
      color: var(--ink);
      text-decoration: none;
      transition: background var(--d-fast) var(--ease), border-color var(--d-fast) var(--ease), color var(--d-fast) var(--ease);
    }
    .pk-exit:hover { background: var(--cobalt-wash); border-color: var(--cobalt); color: var(--cobalt-deep); }
    /* Chippen er nu en knap, ikke en tekstlinje, så den skal have en synlig
       fokusring. En understregning rækker ikke længere. */
    .pk-exit:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 2px; }

    /* Ekstern-glyffen. Se jydsk_v2_ext_svg() for hvorfor det er inline SVG og
       ikke et ↗-tegn. stroke="currentColor", så farven styres herfra. */
    .pk-exit__ext {
      flex: 0 0 auto;
      color: var(--ink-mute);
      transition: color var(--d-fast) var(--ease), transform var(--d-fast) var(--ease);
    }
    .pk-exit:hover .pk-exit__ext { color: var(--cobalt); transform: translate(1px, -1px); }

    /* ====================================================
       FOOTER (unchanged)
       ==================================================== */
    footer.site { background: var(--ink); color: var(--snow); padding: 96px var(--gutter) 40px; }
    footer.site .ftr { max-width: var(--content-inner); margin: 0 auto; display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); gap: 56px; }
    footer.site .brand { display: flex; flex-direction: column; gap: 20px; max-width: 36ch; }
    footer.site .brand img { width: 220px; height: auto; filter: brightness(0) invert(1); opacity: 0.95; }
    footer.site .brand p { color: rgba(248,248,244,0.6); font-size: 13.5px; margin: 0; line-height: 1.55; }
    /* Privatkunde-udgangen i footeren, v2 (Marc 26/8). Chip, ikke fodnote, men
       den dæmpede af de fire varianter — se noten i footer.php for hvorfor
       netop denne flade holdes nede.
       Selektoren footer.site .brand a.pk-exit er (0,3,2) og slår både
       footer.site a (0,1,2) på farve og footer.site a:hover (0,2,2) på hover.
       ⚠️ Hover-linjen er BÆRENDE: uden den vinder footer.site a:hover og maler
       teksten kobolt-blå (--cobalt-soft) på den mørke bund.
       Den gamle p.-form er unødvendig nu: elementet er en <div> med en <a>
       indeni, så footer.site .brand p (0,2,2) rammer intet.
       Den negative margin ophæver .brand's gap: 20px, som er afstand MELLEM
       afsnit; chippen hører til sætningen over. */
    footer.site .brand .brand__exit { margin-top: -8px; }
    footer.site .brand a.pk-exit {
      background: transparent;
      border-color: rgba(248,248,244,0.28);
      color: rgba(248,248,244,0.85);
      font-size: 12.5px;
      font-weight: 500;
    }
    footer.site .brand a.pk-exit:hover {
      background: rgba(248,248,244,0.06);
      border-color: rgba(248,248,244,0.60);
      color: var(--snow);
    }
    footer.site .brand a.pk-exit .pk-exit__ext { color: rgba(248,248,244,0.55); }
    footer.site .brand a.pk-exit:hover .pk-exit__ext { color: var(--cobalt-soft); }
    footer.site h4 { font-size: 11px; font-weight: 500; letter-spacing: var(--tracked-eye); text-transform: uppercase; color: rgba(248,248,244,0.4); margin: 0 0 18px; }
    footer.site ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; font-size: 13.5px; }
    footer.site a { color: rgba(248,248,244,0.75); }
    footer.site a:hover { color: var(--cobalt-soft); }
    footer.site .base { max-width: var(--content-inner); margin: 72px auto 0; padding-top: 28px; border-top: 1px solid rgba(248,248,244,0.12); display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; font-size: 12px; color: rgba(248,248,244,0.5); }
    @media (max-width: 900px) { footer.site .ftr { grid-template-columns: 1fr 1fr; } }

    /* ---- Nyhedsbrev i footeren (Marc 28/8: "byg den i v2's footer") ----
       ⚠️ Der fandtes INGEN feltstil på mørk baggrund i hele v2 før denne blok.
       Hver eneste input-regel i temaet antager --paper-hvid flade og --line-kant,
       og dem kan man ikke lægge på --ink uden at det ligner en fejl. Præcedensen
       er pk-exit-chippen ovenfor (theme.css:635): gennemsigtig flade, kant i
       snow med lav alpha, fyld først ved hover/fokus. Samme alfatrin genbruges
       her (.06 / .12 / .28 / .40 / .45 / .60), så footeren beholder ét sprog.
       Layoutet låner .closer's to spalter og .search-bar's feltrække; begge
       findes i forvejen. Ét brud ved 900px, samme som .ftr. */
    footer.site .ftr-news {
      max-width: var(--content-inner);
      margin: var(--s-10) auto 0;
      padding-top: var(--s-10);
      border-top: 1px solid rgba(248,248,244,0.12);
      display: grid;
      grid-template-columns: 1.4fr 2fr;
      gap: 56px;
      align-items: start;
    }
    footer.site .ftr-news__title { font-size: 19px; line-height: 1.3; color: var(--snow); margin: 0 0 8px; }
    footer.site .ftr-news__lead  { font-size: 13.5px; line-height: 1.55; color: rgba(248,248,244,0.6); margin: 0; max-width: 34ch; }

    /* MC4WP tegner ét <p> pr. felt inde i .mc4wp-form-fields. Den danske
       formular har fire: Fornavn, Firmanavn, E-mail, knap — altså 2×2.

       Knappen fylder IKKE bredden. Gjorde den det, faldt e-mailfeltet ned i
       række to alene med en tom halvdel ved siden af (målt: felt 380px, hul
       380px) og knappen blev 772px bred. Fire felter i to spalter er 2×2, og
       knappen hører hjemme i det fjerde felt.

       Slås GDPR-boksen til, bliver antallet ulige. Så fylder afkrydsning,
       e-mail OG knap hver sin række, for ellers flytter hullet sig bare. */
    footer.site .ftr-news .mc4wp-form-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0; }
    footer.site .ftr-news .mc4wp-form-fields > p { margin: 0; }
    footer.site .ftr-news .mc4wp-form-fields > p:has(input[type="checkbox"]) { grid-column: 1 / -1; }
    footer.site .ftr-news .mc4wp-form-fields:has(input[type="checkbox"]) > p:has(input[type="email"]),
    footer.site .ftr-news .mc4wp-form-fields:has(input[type="checkbox"]) > p:has(input[type="submit"]),
    footer.site .ftr-news .mc4wp-form-fields:has(input[type="checkbox"]) > p:has(button) { grid-column: 1 / -1; }

    footer.site .ftr-news label {
      display: block; font-size: 11px; font-weight: 500;
      letter-spacing: var(--tracked-eye); text-transform: uppercase;
      color: rgba(248,248,244,0.4); margin: 0 0 7px;
    }
    footer.site .ftr-news .mc4wp-form-fields > p:has(input[type="checkbox"]) label {
      display: inline; font-size: 12.5px; text-transform: none;
      letter-spacing: 0; color: rgba(248,248,244,0.6);
    }

    footer.site .ftr-news input[type="text"],
    footer.site .ftr-news input[type="email"] {
      width: 100%; height: 48px; padding: 0 14px;
      font-family: var(--font-sans); font-size: 14px;
      background: rgba(248,248,244,0.06);
      border: 1.5px solid rgba(248,248,244,0.28);
      border-radius: var(--r-1);
      color: var(--snow);
      transition: border-color var(--d-fast) var(--ease), background var(--d-fast) var(--ease);
    }
    footer.site .ftr-news input::placeholder { color: rgba(248,248,244,0.45); }
    footer.site .ftr-news input[type="text"]:focus,
    footer.site .ftr-news input[type="email"]:focus {
      outline: 0;
      border-color: var(--cobalt-soft);
      background: rgba(248,248,244,0.12);
      box-shadow: 0 0 0 3px rgba(74,130,219,0.30);
    }

    /* Knappen er .btn--on-cobalt's greb: snow-flade på mørk bund. Den er den
       eneste lyse flade i footeren, og det er meningen. */
    footer.site .ftr-news button[type="submit"],
    footer.site .ftr-news input[type="submit"] {
      width: 100%; height: 48px; padding: 0 28px;
      font-family: var(--font-sans); font-size: 14.5px; font-weight: 500;
      letter-spacing: -0.005em; line-height: 1; cursor: pointer;
      background: var(--snow); color: var(--ink);
      border: 1.5px solid var(--snow); border-radius: var(--r-1);
      transition: background var(--d-fast) var(--ease), border-color var(--d-fast) var(--ease), color var(--d-fast) var(--ease);
    }
    footer.site .ftr-news button[type="submit"]:hover,
    footer.site .ftr-news input[type="submit"]:hover {
      background: var(--cobalt-soft); border-color: var(--cobalt-soft); color: var(--snow);
    }

    /* Kvittering og fejl. --error (#8A2A1F) er umulig at læse på --ink, så de
       to tilstande har lyse varianter. Første gang v2 har brug for dem. */
    footer.site .ftr-news .mc4wp-alert,
    footer.site .ftr-news .mc4wp-response { font-size: 13px; line-height: 1.5; margin-top: 12px; }
    footer.site .ftr-news .mc4wp-success p { color: #8FD6A2; margin: 0; }
    footer.site .ftr-news .mc4wp-error p,
    footer.site .ftr-news .mc4wp-notice p { color: #F0A594; margin: 0; }

    @media (max-width: 900px) {
      footer.site .ftr-news { grid-template-columns: 1fr; gap: 28px; }
      footer.site .ftr-news .mc4wp-form-fields { grid-template-columns: 1fr; }
    }

/* WP port: classes replacing the mock's inline styles */
.drawer__foot-label { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.6; }
.base__legal { display: flex; gap: 24px; }
.ph--fill { height: 100%; }

/* Content pages (about/contact) */
.about-hero, .contact-hero { padding: var(--s-24) 0 var(--s-16); background: var(--cobalt); color: var(--snow); }
.about-hero h1, .contact-hero h1 { font-size: var(--t-display); line-height: var(--lh-display); margin: var(--s-4) 0 0; }
.about-hero .eyebrow, .contact-hero .eyebrow { color: rgba(248,248,244,0.65); }
.sec--page-content, .form-section { padding: var(--s-16) 0; }
/* F9-11: notits når vault-CTA'en lander på formularen med ?emne=vault */
.form-note { margin: 12px 0 20px; padding: 12px 16px; background: var(--cobalt-wash, #eef2fc); border-left: 3px solid var(--cobalt); font-size: 14px; }

/* F9-8: map-card fra designpakkens contact.html — tegnet SVG, intet embed */
.map-strip { margin: 0 auto var(--s-16); }
.map-card { background: var(--snow); border: 1.5px solid var(--ink); overflow: hidden; display: grid; grid-template-columns: 1.6fr 1fr; }
.map-card__map { aspect-ratio: 21/9; position: relative; background: var(--cobalt-wash, #eef2fc); border-right: 1.5px solid var(--ink); overflow: hidden; }
.map-card__map svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.map-card__pin { position: absolute; top: 42%; left: 45%; transform: translate(-50%, -100%); display: flex; flex-direction: column; align-items: center; pointer-events: none; }
.map-card__pin .marker { width: 36px; height: 36px; border-radius: 50% 50% 50% 0; background: var(--cobalt); transform: rotate(-45deg); border: 3px solid var(--snow); box-shadow: 0 4px 14px rgba(13,16,25,0.3); position: relative; }
.map-card__pin .marker::after { content: ""; position: absolute; top: 8px; left: 8px; width: 14px; height: 14px; border-radius: 50%; background: var(--snow); }
.map-card__pin .lbl { background: var(--ink); color: var(--snow); padding: 5px 10px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; margin-top: 14px; font-weight: 600; }
.map-card__addr { padding: 28px 32px; display: flex; flex-direction: column; gap: 18px; justify-content: space-between; }
.map-card__addr .kicker { font-size: 11px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); display: inline-flex; align-items: center; gap: 10px; }
.map-card__addr .kicker::before { content: ""; width: 24px; height: 1.5px; background: var(--cobalt); }
.map-card__addr h3 { font-weight: 500; font-size: 28px; margin: 8px 0 0; letter-spacing: -0.022em; line-height: 1.1; }
.map-card__addr p { font-size: 14px; color: var(--ink-soft); margin: 8px 0 0; line-height: 1.5; max-width: 32ch; }
.map-card__addr .actions { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.map-card__addr .actions .primary { background: var(--ink); color: var(--snow); padding: 12px 18px; font-size: 13.5px; font-weight: 500; }
.map-card__addr .actions .primary:hover { background: var(--cobalt); }
@media (max-width: 900px) {
  .map-card { grid-template-columns: 1fr; }
  .map-card__map { border-right: 0; border-bottom: 1.5px solid var(--ink); aspect-ratio: 4/3; }
}

/* F9-21: CF7-formularen i temaets feltsprog (samme udtryk som kassens felter) */
.form-section .wpcf7 { max-width: 680px; }
.form-section .wpcf7 label { display: block; font-size: var(--t-eyebrow, 11px); font-weight: 500; letter-spacing: var(--tracked-eye); text-transform: uppercase; color: var(--ink-mute); margin-bottom: 6px; }
.form-section .wpcf7 input[type="text"],
.form-section .wpcf7 input[type="email"],
.form-section .wpcf7 input[type="tel"],
.form-section .wpcf7 select {
  width: 100%; height: 48px; padding: 0 14px; font: inherit;
  background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--r-1, 3px);
}
.form-section .wpcf7 textarea { width: 100%; min-height: 170px; padding: 12px 14px; font: inherit; background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--r-1, 3px); }
.form-section .wpcf7 input:focus, .form-section .wpcf7 textarea:focus { outline: none; border-color: var(--cobalt); }
.form-section .wpcf7 p { margin: 0 0 18px; }
.form-section .wpcf7 input[type="submit"] { background: var(--cobalt); color: var(--snow); border: 0; height: 50px; padding: 0 28px; font: inherit; font-weight: 500; cursor: pointer; }
.form-section .wpcf7 input[type="submit"]:hover { background: var(--cobalt-deep, var(--ink)); }
.team-grid, .contact-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: var(--s-8); margin-top: var(--s-8); }
@media (max-width: 700px) { .team-grid, .contact-grid { grid-template-columns: 1fr; } }
.team-card__photo { aspect-ratio: 4/5; }
.team-card b { display: block; margin-top: var(--s-3); }
.team-card span { color: var(--ink-mute); font-size: var(--t-body-s); }
.contact-list { list-style: none; padding: 0; margin: var(--s-4) 0 0; }
.contact-list li { padding: 8px 0; border-bottom: var(--rule-thin); }

/* Search results */
.search-bar { padding: var(--s-12) 0 var(--s-4); border-bottom: var(--rule-thin); }
.search-bar form { display: flex; gap: var(--s-3); }
.search-bar input[type="search"] { flex: 1; height: 52px; padding: 0 16px; font: inherit; font-size: var(--t-body-l); background: var(--paper); border: 1.5px solid var(--ink); border-radius: var(--r-1); }
.search-bar input[type="search"]:focus { outline: none; border-color: var(--cobalt); }
/* Ikonet og ryd-knappen fra search.php's formrække. Reglerne manglede helt:
   uden dem fyldte viewBox-SVG'en 100 % bredde (kæmpe lup, målt 3/9). */
.search-bar__ico { flex: 0 0 auto; width: 22px; height: 22px; align-self: center; color: var(--ink-mute); }
.search-bar__clear { flex: 0 0 auto; align-self: center; width: 32px; height: 32px; border: 0; background: none; font-size: var(--t-body-l); line-height: 1; color: var(--ink-mute); cursor: pointer; }
.search-bar__clear:hover { color: var(--ink); }
.search-bar__meta { padding: var(--s-3) 0; }
.results { padding: var(--s-8) 0 var(--s-24); }
.result-row { grid-column: 1 / -1; padding: var(--s-4) 0; border-bottom: var(--rule-thin); }
.result-row__type { font-size: var(--t-eyebrow); letter-spacing: var(--tracked-eye); text-transform: uppercase; color: var(--ink-mute); }

/* Vault program landing (dark/foil) */
.vault-program { background: var(--vault-bg); color: var(--vault-ink); }
.vp-hero { padding: var(--s-32) 0 var(--s-16); }
.vp-hero h1 { font-size: var(--t-mega); line-height: var(--lh-display); margin: var(--s-4) 0; }
.vp-hero__lead { max-width: 560px; font-size: var(--t-body-l); color: var(--vault-mute); }
.vp-hero__actions { margin-top: var(--s-8); }
.btn--foil { background: var(--vault-foil); color: var(--vault-bg); border: 0; font-weight: 600; }
.vp-pillars { padding: var(--s-16) 0; border-top: 1px solid var(--vault-line); }
.vp-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--s-8); }
@media (max-width: 900px) { .vp-grid { grid-template-columns: 1fr; } }
.vp-pillar .n { font-family: var(--font-mono); font-size: var(--t-mono); color: var(--vault-mute); }
.vp-pillar h3 { margin: var(--s-2) 0; }
.vp-pillar p { color: var(--vault-mute); font-size: var(--t-body-s); }
.vp-how, .vp-apply { padding: var(--s-16) 0; border-top: 1px solid var(--vault-line); }
.vp-steps { list-style: none; counter-reset: step; padding: 0; margin: var(--s-8) 0 0; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--s-6); }
@media (max-width: 900px) { .vp-steps { grid-template-columns: 1fr; } }
.vp-steps li { counter-increment: step; border-top: 1px solid var(--vault-line); padding-top: var(--s-4); }
.vp-steps li::before { content: "0" counter(step); font-family: var(--font-mono); font-size: var(--t-mono); color: var(--vault-mute); display: block; margin-bottom: var(--s-2); }
.vp-steps b { display: block; margin-bottom: var(--s-1); }
.vp-steps span { color: var(--vault-mute); font-size: var(--t-body-s); }

/* FAQ content rhythm (existing Q/A markup passthrough) */
.faq-content { max-width: 780px; }
.faq-content a[tabindex] { display: block; font-size: var(--t-h3); font-weight: 600; margin: var(--s-8) 0 var(--s-2); padding-top: var(--s-4); border-top: var(--rule-thin); color: var(--ink); }
.faq-content p { color: var(--ink-soft); }
.faq-content img { display: none; } /* legacy generic stock images add nothing */

/* Quick order */
.quick-order__form { display: grid; gap: var(--s-4); max-width: 520px; }
.quick-order textarea { font-family: var(--font-mono); font-size: 13px; padding: 14px; background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--r-1); }
.quick-order textarea:focus { outline: none; border-color: var(--cobalt); }
.qo-msg { padding: 10px 14px; border: 1.5px solid var(--line); font-size: var(--t-body-s); }
.qo-msg--ok { border-color: var(--moss); color: var(--moss); }
.qo-msg--err { border-color: var(--rust); color: var(--rust); }
.faq-item { border-top: var(--rule-thin); padding: var(--s-6) 0; }
.faq-item__q { font-size: var(--t-h3); margin: 0 0 var(--s-3); }
.faq-item__a { color: var(--ink-soft); }

/* Cart flyout */
/* R12: samme containment som .drawer (linje ~661). .flyout__panel er 420px bred
   og står med transform: translateX(100%) når kurven er lukket, altså 420px ude
   til højre for viewporten (359px ved 390px pga. max-width:92vw). Flyouten
   renderes på HVER side via footer.php. .drawer fik overflow:hidden i A4-runden
   med præcis den begrundelse; .flyout blev overset dengang. */
.flyout { position: fixed; inset: 0; overflow: hidden; z-index: 300; visibility: hidden; }
.flyout[data-open="true"] { visibility: visible; }
.flyout__backdrop { position: absolute; inset: 0; background: rgba(13,16,25,0.4); opacity: 0; transition: opacity var(--d-med) var(--ease); }
.flyout[data-open="true"] .flyout__backdrop { opacity: 1; }
/* V-07: bredden var deklareret tre steder med SAMME specificitet — 420px her,
   460px i plp.css og pdp.css — så kurven var 460 på shop/PDP/kurv og 420 på
   forsiden. Deklarationerne i plp.css og pdp.css er slettet; theme.css ejer
   panelet nu. 460 er valgt fordi det er det kunderne faktisk ser i dag på de
   fire af fem flader hvor kurven bruges. */
.flyout__panel { position: absolute; top: 0; right: 0; width: 460px; max-width: 92vw; height: 100vh; background: var(--snow); border-left: 1.5px solid var(--ink); transform: translateX(100%); transition: transform var(--d-med) var(--ease); display: flex; flex-direction: column; overflow-y: auto; }
.flyout[data-open="true"] .flyout__panel { transform: none; }
.flyout__head { display: flex; justify-content: space-between; align-items: center; padding: 18px 24px; border-bottom: 1.5px solid var(--ink); }
.flyout__head h2 { margin: 0; font-size: var(--t-h3); }
.flyout__close { width: 38px; height: 38px; border: 1.5px solid var(--ink); background: var(--snow); cursor: pointer; display: grid; place-items: center; }
/* V-07: her lå sidste rest af den FØRSTE flyout-udgave (10 linjer, slettet
   2026-08-01). Den kostede tre fejl på én gang:
   1) .widget_shopping_cart_content havde padding 18px 24px OVEN I de indre
      blokkes egne 20px — 88 af 458,5 px, altså 19,2 % af panelbredden, var ren
      padding, og det gav de fem forskellige venstrekanter Marc så.
   2) .woocommerce-mini-cart li satte grid 64px 1fr på de samme <li> som
      .flyout .fline styrer. Sammen med wrapperens ekstra 48 px havde
      antalsvælgeren <=101,3 px at stå på og krævede >=109 px, så den løb ind
      under prisen. Uden den gamle regel og uden dobbeltpaddingen er der plads.
   3) .woocommerce-mini-cart__total satte display:flex på <p class="fly-total"
      hidden> (mini-cart.php:84). En forfatter-display slår UA-reglen
      [hidden]{display:none} i Chrome, så WC's rå total kunne dukke op UNDER
      .flyout__totals. I Gecko er UA-reglen !important, så fejlen var
      browserafhængig — derfor så den tilfældig ud.
   Alt levende er dækket af .flyout .flines / .fline* / .fly-buttons / .fly-empty
   nedenfor (linje ~903-942), som alle har højere specificitet. */
button.single_add_to_cart_button.loading { opacity: 0.6; }

/* Mobile overflow fixes (A4 audit 2026-07-02: ~61px overflow on all pages) */
html, body { overflow-x: clip; }

/* R12 (2026-07-31) — ÅRSAGEN til Marcs feedback 8: "the login page is too wide
   and I can move and drag the site with my fingers on mobile".
   Det er IKKE overflow. Målt på live (iframe-viewport 386px, /my-account-2/?v2=1):
   documentElement.scrollWidth == clientWidth == 386, både med og uden masken
   (html,body{overflow-x:clip} + html{overflow-y:scroll}) tvangsdeaktiveret.
   223 elementer stikker ud over højre kant, men ALLE er klippet af en scroller
   eller en fixed forfader. Dokumentet er altså ikke bredere end viewporten.

   Det der sker er iOS Safaris auto-zoom: fokuseres et input/select/textarea med
   computed font-size UNDER 16px, zoomer Safari hele siden ind. Derefter er det
   visuelle viewport mindre end layout-viewporten, og siden kan trækkes frit i
   alle retninger med fingrene — præcis symptomet. Login-siden er netop den side
   hvor man tapper et felt som det allerførste, hvilket forklarer at Marc ser det
   dér. Vores felter lå under grænsen overalt: .auth .inputwrap input 15px
   (account.css:197), registreringsfelterne 14px (:229), adressefelterne 14px
   (:255), .nav__search 13.5px (theme.css:673), .drawer__search 14px (:1081),
   .quick-order textarea 13px (:594), .toolbar select 12px (plp.css:63),
   .pc__qty 12px (plp.css:418), .fline__qty 12px (plp.css:282), cart 13-14px.

   16px er Safaris hårde grænse, så det er et gulv og ikke en smagssag. !important
   er nødvendigt: reglerne ovenfor er klassebaserede (0,2,1) og ville ellers vinde
   over enhver ren elementselektor. Scoped til pointer:coarse, så desktop-
   typografien er fuldstændig urørt. Højderne holder — det smalleste felt er
   .fline__qty (26px boks, 44px bredt); 16px giver ~19px linjehøjde og "100" i
   mono fylder ~29px. */
@media (pointer: coarse) {
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="submit"]):not([type="button"]),
  select,
  textarea { font-size: 16px !important; }
}

/* Marc 2026-07-26: "alt indhold rykker nogle pixels til hoejre" paa visse
   produktsider og naar man klikker side 2 i paginationen.
   Aarsag: en side uden scrollbar har 15px mere viewport (macOS bruger
   pladskraevende scrollbars naar der er mus i). Alt centreret ligger i
   .wrap { max-width:1480px; margin:0 auto }, saa 15px mere bredde = 7,5px
   forskydning til hoejre. Skifter man mellem en lang og en kort side — eller
   siden bliver hoej foerst naar billeder lander — hopper hele layoutet.

   overflow-y:scroll reserverer altid scrollbaren, saa clientWidth er den samme
   uanset sidelaengde. Maalt: kort side 1500px -> 1485px, dvs. skift 0.

   scrollbar-gutter:stable virker IKKE her — maalt skift stadig 15px, ogsaa med
   eksplicit overflow-y:auto. overflow-x:clip goer nemlig overflow-y til
   'visible', saa html er ikke scroll-container og gutteren har intet at
   reservere i. (Noten i account.css l.133 afviste gutter-fixet som "site-wide
   aendring for en ~8px skaevhed" — det er nu et rapporteret symptom, og
   gutteren loeser det alligevel ikke.)

   Bivirkning, bevidst: naar den ene akse scroller, beregnes overflow-x:clip
   til 'hidden'. Samme klipning visuelt; forskellen er at html bliver
   scroll-container. Verificeret efter aendringen: scrolling virker, sticky nav
   saetter sig (69,3px -> 0 + .nav--stuck), og der er kun EEN scrollbar. */
html { overflow-y: scroll; }
.vault__bg, .closer__bg { max-width: 100vw; overflow: hidden; }
@media (max-width: 700px) {
  .topstrip__pills { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .topstrip__pills::-webkit-scrollbar { display: none; }
  /* F9-6 (20/8): pillerne klippede midt i ord ("EU-handel uden mo…") uden noget
     signal om at der er mere. Fade i højre kant gør klipningen til en bevidst
     swipe-affordance i stedet for en fejl. */
  .topstrip__pills {
    -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 calc(100% - 32px), transparent 100%);
    mask-image: linear-gradient(90deg, #000 0%, #000 calc(100% - 32px), transparent 100%);
    padding-right: 16px;
  }
  .topstrip__pills span { flex: 0 0 auto; }
  .toolbar { flex-wrap: wrap; gap: 10px; }
  .specs__desc h2, .specs__desc p { max-width: 100%; overflow-wrap: break-word; }
}

/* A4 root cause: closed drawer panel (translateX 100%) leaked horizontal overflow.
   Contain it inside its fixed-position container. */
.drawer { position: fixed; inset: 0; overflow: hidden; visibility: hidden; z-index: 250; }
.drawer[data-open="true"] { visibility: visible; }

/* YITH instant search in the header */
.nav__search { position: relative; }
.nav__search form { display: flex; align-items: center; }
.nav__search input[type="search"], .nav__search input[type="text"] {
  width: 180px; height: 40px; padding: 0 12px; font: inherit; font-size: 13.5px;
  background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--r-1);
  transition: width var(--d-med) var(--ease), border-color var(--d-fast) var(--ease);
}
.nav__search input:focus { width: 260px; outline: none; border-color: var(--cobalt); }
.nav__search button[type="submit"] { display: none; }
@media (max-width: 1100px) { .nav__search { display: none; } }
/* YITH dropdown restyle (both markup generations) */
.autocomplete-suggestions, .yith-wcas-search-results, ywcas-search-results {
  background: var(--paper) !important; border: 1.5px solid var(--ink) !important;
  border-radius: var(--r-1); box-shadow: 0 12px 32px rgba(13,16,25,0.12); z-index: 400;
}
.autocomplete-suggestion, .yith-wcas-result { padding: 10px 14px; border-bottom: var(--rule-thin); font-size: 13.5px; }
.autocomplete-suggestion:hover, .autocomplete-selected { background: var(--cobalt-wash) !important; }

/* Discover print wall */
.wall-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin-top: var(--s-6); }
.wall-tile { aspect-ratio: 1; overflow: hidden; display: block; }
.wall-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--d-med) var(--ease); }
.wall-tile:hover img { transform: scale(1.06); }

/* P1 batch 1 (ultracode audit) */
#jydsk-newsletter-wrap { display: none !important; } /* legacy old-brand bar; injector is server-side */
.cart-empty-actions { display: flex; gap: 12px; padding-bottom: var(--s-24); }
/* P1: mega panels have 3 children (2 cols + feature) — kill the dead 4th track */
.nav .mega__inner { grid-template-columns: 1fr 1fr 1.3fr; }

/* About/kontakt hero grids + warehouse + channels (P1 batch 4) */
.about-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) 380px; gap: var(--s-12); align-items: end; }
@media (max-width: 900px) { .about-hero__grid { grid-template-columns: 1fr; } }
.hero__lede { max-width: 520px; opacity: 0.85; margin-top: var(--s-4); }
.hero__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: rgba(248,248,244,0.25); border: 1px solid rgba(248,248,244,0.25); }
.hero__stat { background: var(--cobalt); padding: 16px 18px; }
.hero__stat b { display: block; font-size: 24px; }
.hero__stat span { font-size: var(--t-body-s); opacity: 0.75; }
.hero__phone { background: var(--paper); color: var(--ink); border: var(--rule); padding: var(--s-6); display: grid; gap: 6px; }
.hero__phone .lbl { font-size: var(--t-eyebrow); letter-spacing: var(--tracked-eye); text-transform: uppercase; color: var(--ink-mute); }
.hero__phone a { font-size: 26px; font-weight: 600; }
.hero__phone .note { font-size: var(--t-body-s); color: var(--ink-mute); }
.sec-lead { max-width: 560px; color: var(--ink-soft); }
.warehouse { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-10); margin-top: var(--s-8); align-items: start; }
@media (max-width: 900px) { .warehouse { grid-template-columns: 1fr; } }
.warehouse__photo .ph { aspect-ratio: 4/3; }
.wh-specs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--line); border: var(--rule-thin); margin-top: var(--s-5); }
.wh-specs .spec { background: var(--paper); padding: 12px 14px; }
.wh-specs .lbl { font-size: var(--t-eyebrow); text-transform: uppercase; letter-spacing: var(--tracked-eye); color: var(--ink-mute); }
.wh-specs .val { font-family: var(--font-mono); font-size: 16px; }
.channels { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-6); }
@media (max-width: 900px) { .channels { grid-template-columns: 1fr; } }
.channel { border: var(--rule); background: var(--paper); padding: var(--s-6); display: grid; gap: 6px; }
.channel .lbl { font-size: var(--t-eyebrow); text-transform: uppercase; letter-spacing: var(--tracked-eye); color: var(--ink-mute); }
.channel a { font-weight: 600; }
.channel p { margin: 0; font-size: var(--t-body-s); color: var(--ink-mute); }
.values-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-6); margin-top: var(--s-8); }
@media (max-width: 1000px) { .values-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .values-grid { grid-template-columns: 1fr; } }
.value { border-top: var(--rule); padding-top: var(--s-4); }
.value .num { font-family: var(--font-mono); font-size: var(--t-mono); color: var(--cobalt); }
.value h3 { margin: var(--s-2) 0; font-size: var(--t-h3); }
.value p { color: var(--ink-soft); font-size: var(--t-body-s); }
.cert-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-6); margin-top: var(--s-8); }
@media (max-width: 900px) { .cert-cards { grid-template-columns: 1fr; } }
.cert-card { border: var(--rule); background: var(--paper); padding: var(--s-6); }
.cert-card h3 { margin: 0 0 var(--s-2); }
.cert-card p { margin: 0; color: var(--ink-soft); font-size: var(--t-body-s); }
.quick { padding: var(--s-6) 0; }
.match { padding: var(--s-8) 0 var(--s-16); }
.match-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-4); margin-top: var(--s-4); }
@media (max-width: 900px) { .match-grid { grid-template-columns: repeat(2, 1fr); } }
.timeline { position: relative; }
.timeline::before { content: ""; position: absolute; left: 120px; top: 8px; bottom: 0; width: 1.5px; background: var(--ink); }
.timeline__entry { display: grid; grid-template-columns: 120px 1fr; gap: 48px; padding: 0 0 56px; position: relative; }
.timeline__entry::before { content: ""; position: absolute; left: 113px; top: 10px; width: 15px; height: 15px; border-radius: 50%; background: var(--snow); border: 2px solid var(--ink); z-index: 1; }
.timeline__entry.is-cobalt::before { background: var(--cobalt); border-color: var(--cobalt); box-shadow: 0 0 0 4px rgba(31,93,196,0.18); }
.timeline__year { font-family: var(--font-sans); font-weight: 500; font-size: 32px; line-height: 1; letter-spacing: -0.025em; color: var(--ink); padding-top: 4px; }
.timeline__entry.is-cobalt .timeline__year { color: var(--cobalt); }
.timeline__body { padding-left: 32px; }
.timeline__body h3 { font-family: var(--font-sans); font-weight: 500; font-size: 22px; margin: 0 0 8px; letter-spacing: -0.018em; line-height: 1.2; }
.timeline__body p { font-size: 14.5px; color: var(--ink-soft); margin: 0 0 8px; line-height: 1.55; max-width: 58ch; }
.timeline__body .meta { font-family: var(--font-mono); font-size: 11px; color: var(--ink-mute); letter-spacing: 0.04em; text-transform: uppercase; margin-top: 6px; display: flex; gap: 12px; flex-wrap: wrap; }
.timeline__body .meta b { color: var(--ink); font-family: var(--font-mono); font-weight: 500; }
.reach { background: var(--snow-deep); padding: var(--s-20) var(--gutter); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.reach__layout { max-width: var(--content-inner); margin: 0 auto; display: grid; grid-template-columns: 1.4fr 1fr; gap: 48px; align-items: start; }
.reach__map { background: var(--snow); border: 1.5px solid var(--ink); aspect-ratio: 6/5; position: relative; overflow: hidden; }
.reach__map svg { width: 100%; height: 100%; display: block; }
.reach__map .city-label { font-size: 9.5px; font-weight: 500; fill: var(--ink); letter-spacing: 0.04em; }
.reach__map .city-num { font-size: 10px; font-weight: 600; fill: var(--snow); }
.reach__map .hq-label { font-size: 10px; font-weight: 600; fill: var(--ink); letter-spacing: 0.08em; text-transform: uppercase; }
.reach__map circle.city { transition: transform var(--d-fast) var(--ease); transform-origin: center; transform-box: fill-box; }
.reach__map .city-group:hover circle.city { transform: scale(1.18); }
.reach__list { display: flex; flex-direction: column; }
.reach__list .title { font-size: 11px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); margin-bottom: 16px; display: flex; justify-content: space-between; }
.reach__row { display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); font-size: 13.5px; }
.reach__row:last-child { border-bottom: 1px solid var(--line); }
.reach__row .country { display: flex; align-items: center; gap: 10px; }
.reach__row .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--cobalt); }
.reach__row b { font-weight: 500; }
.reach__row .count { font-family: var(--font-mono); font-size: 13px; color: var(--ink); font-weight: 500; min-width: 36px; text-align: right; }
.reach__row .bar { grid-column: 1 / -1; height: 2px; background: var(--cobalt); margin-top: 6px; }
.reach__total { margin-top: 24px; padding-top: 24px; border-top: 1.5px solid var(--ink); display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.reach__total > div .lbl { font-size: 11px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); margin-bottom: 4px; }
.reach__total > div .val { font-size: 32px; font-weight: 400; line-height: 1; letter-spacing: -: -0.025em; }
/* WC notices — site-wide (moved from pdp.css, P2 batch 3) + the login/coupon
   toggles on checkout: the coupon toggle is v2's ONLY coupon entry point. */
.woocommerce-message, .woocommerce-error, .woocommerce-info { border: 1.5px solid var(--line); border-left: 3px solid var(--moss); background: var(--paper); padding: 14px 18px; margin: 0 0 16px; list-style: none; font-size: 13.5px; color: var(--ink); }
.woocommerce-error { border-left-color: var(--error, #B4232A); }
/* WooCommerce hænger et ikon i sin egen ikonfont på ::before og placerer det
   absolut ved left:1.5em, fordi dens egen kasse har 3.5em venstrepadding.
   Vores kasse ovenfor har 18px, og ingen har fjernet ikonet. Målt 27/8 på et
   fejlet login: ikonet stod oven i tekstens første bogstav, så "E-mail eller
   adgangskode er forkert" begyndte med et ikon og et halvt E. Enten flytter
   man teksten væk fra ikonet, eller også fjerner man ikonet. Huset har
   allerede valgt det sidste én gang, i pdp.css:346. */
.woocommerce-message::before, .woocommerce-error::before, .woocommerce-info::before { display: none; }
/* Tekst og links arvede WooCommerces grå #515151. Målt samme sted: "Glemt din
   adgangskode?" stod i nøjagtig samme grå som beskeden omkring den og lignede
   ikke et link. a.button har sin egen styling på næste linje og holdes udenfor. */
.woocommerce-message a:not(.button), .woocommerce-error a:not(.button), .woocommerce-info a:not(.button) { color: var(--cobalt-deep); text-decoration: underline; }
.woocommerce-message a.button, .woocommerce-info a.button { float: right; background: var(--ink); color: var(--snow); padding: 6px 14px; font-size: 12px; margin-left: 12px; }
.woocommerce-form-login-toggle .woocommerce-info, .woocommerce-form-coupon-toggle .woocommerce-info { border-left-color: var(--cobalt); }
.woocommerce-form-login-toggle a, .woocommerce-form-coupon-toggle a { font-weight: 500; color: var(--cobalt); }
form.woocommerce-form-login, form.checkout_coupon { border: 1.5px solid var(--line); background: var(--paper); padding: 20px 24px; margin: 0 0 20px; }
form.checkout_coupon input[type="text"] { border: 1.5px solid var(--line); padding: 10px 12px; font: inherit; }
form.checkout_coupon button { background: var(--ink); color: var(--snow); border: 1.5px solid var(--ink); padding: 10px 18px; font: inherit; font-weight: 500; cursor: pointer; }
form.checkout_coupon button:hover { background: var(--cobalt); border-color: var(--cobalt); }

/* Breadcrumbs — site-wide (moved from plp.css; now on PDP/cart/about/kontakt too) */
.crumb { max-width: var(--content-w); margin: 0 auto; padding: 20px var(--gutter) 0; font-size: 12px; color: var(--ink-mute); display: flex; gap: 8px; }
.crumb a:hover { color: var(--ink); }
.crumb span[aria-current] { color: var(--ink); }
.crumb { padding-top: 16px; }

/* Mega feature-card gradient layer (per audience, reusing the cat palette) */
.mega__feature { position: relative; overflow: hidden; }
.mega__feature .body { position: relative; z-index: 1; }
.mega__feature .bg { position: absolute; inset: 0; opacity: 0.92; }
.mega__feature-bg--kvinder { background: linear-gradient(155deg, #D9A8A0 0%, #B85A47 100%); }
.mega__feature-bg--piger { background: linear-gradient(155deg, #F0C9D6 0%, #C87A8E 100%); }
.mega__feature-bg--drenge { background: linear-gradient(155deg, #4A6BA8 0%, #1D2944 100%); }
.mega__feature-bg--unisex { background: linear-gradient(155deg, #B5C0A0 0%, #6B7A55 100%); }

/* Checkout order-review line thumbs (woocommerce_cart_item_name filter) */
.woocommerce-checkout img.co-line-thumb { width: 34px; height: 34px; object-fit: cover; border: 1px solid var(--line); vertical-align: middle; margin-right: 10px; }
.woocommerce-checkout .co-line-meta { display: block; font-size: 10.5px; color: var(--ink-mute); }
.woocommerce-checkout .co-line-name { display: inline-block; vertical-align: middle; max-width: 70%; }
.cta { max-width: var(--content-w); margin: 0 auto; padding: var(--s-20) var(--gutter); display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cta-card { background: var(--snow); border: 1.5px solid var(--ink); padding: 36px 40px; display: flex; flex-direction: column; gap: 16px; }
.cta-card.cobalt { background: var(--cobalt); color: var(--snow); border-color: var(--cobalt); }
.cta-card h3 { font-family: var(--font-sans); font-weight: 400; font-size: clamp(28px, 3.5vw, 44px); margin: 0; letter-spacing: -0.025em; line-height: 1.04; }
.cta-card h3 em { font-style: italic; color: var(--cobalt); }
.cta-card.cobalt h3 em { color: var(--snow); }
.cta-card p { color: var(--ink-soft); margin: 0; font-size: 14.5px; max-width: 36ch; line-height: 1.5; }
.cta-card.cobalt p { color: rgba(248,248,244,0.85); }
.cta-card .actions { display: flex; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.cta-card .actions a { display: inline-flex; align-items: center; padding: 12px 22px; font-family: var(--font-sans); font-size: 13.5px; font-weight: 500; }
.cta-card .actions .primary { background: var(--ink); color: var(--snow); border: 1.5px solid var(--ink); }
.cta-card .actions .primary:hover { background: var(--cobalt); border-color: var(--cobalt); }
.cta-card .actions .secondary { background: 0; color: var(--ink); border: 1.5px solid var(--ink); }
.cta-card .actions .secondary:hover { background: var(--ink); color: var(--snow); }
.cta-card.cobalt .actions .primary { background: var(--snow); color: var(--ink); border-color: var(--snow); }
.cta-card.cobalt .actions .primary:hover { background: var(--ink); color: var(--snow); border-color: var(--ink); }
.cta-card.cobalt .actions .secondary { color: var(--snow); border-color: rgba(248,248,244,0.5); }
.cta-card.cobalt .actions .secondary:hover { background: var(--snow); color: var(--cobalt); border-color: var(--snow); }
/* 404 (reuses the search no-results card language) */
.nf-404 { margin: 64px auto; max-width: 640px; background: var(--snow); border: 1.5px solid var(--ink); padding: 60px 40px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.nf-404 .ico { width: 56px; height: 56px; border-radius: 50%; background: var(--snow-deep); border: 1.5px solid var(--ink); display: grid; place-items: center; }
.nf-404 h1 { font-weight: 400; font-size: 34px; margin: 0; letter-spacing: -0.025em; }
.nf-404 h1 em { font-style: italic; color: var(--cobalt); }
.nf-404 p { color: var(--ink-soft); max-width: 44ch; margin: 0; }
.nf-404__search { display: flex; gap: 0; width: 100%; max-width: 420px; }
.nf-404__search input { flex: 1; border: 1.5px solid var(--ink); border-right: 0; padding: 12px 16px; font: inherit; outline: 0; }
.nf-404 .suggestions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 8px; }

/* Order-received (thank-you) — CSS-only skin, money-path markup untouched */
.woocommerce-order .woocommerce-thankyou-order-received { font-size: 28px; font-weight: 500; letter-spacing: -0.02em; color: var(--ink); border-left: 3px solid var(--moss, #4A6741); padding: 14px 20px; background: var(--paper); margin: 24px 0; }
.woocommerce-order ul.woocommerce-order-overview { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0; padding: 0; border: 1.5px solid var(--ink); margin: 0 0 32px; }
.woocommerce-order ul.woocommerce-order-overview li { border-right: 1px solid var(--line); padding: 14px 18px; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-mute); float: none; width: auto; margin: 0; }
.woocommerce-order ul.woocommerce-order-overview li:last-child { border-right: 0; }
.woocommerce-order ul.woocommerce-order-overview li strong { display: block; font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); margin-top: 4px; }
.woocommerce-order .woocommerce-order-details table.order_details, .woocommerce-order .woocommerce-customer-details address { border: 1.5px solid var(--line); padding: 16px 20px; width: 100%; }

/* Ship-bar site-wide (flyout + checkout render it too; rules from cart.css) */
.ship-bar { padding: 14px 24px; border-bottom: 1px solid var(--line); background: var(--cobalt-wash); }
.ship-bar__row { display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 12.5px; }
.ship-bar__row b { color: var(--cobalt-deep); font-weight: 600; }
.ship-bar__track { height: 4px; background: var(--snow); border: 1px solid var(--cobalt); border-radius: var(--r-pill); overflow: hidden; }
.ship-bar__fill { height: 100%; background: var(--cobalt); border-radius: var(--r-pill); }
.flyout .ship-bar { margin: 8px 24px 0; }

/* R1 Lane 1: condensed sticky header (Marc: sticky alt for stor / logo kæmpe).
   Top-of-page keeps the designed 44px logo; scrolled state shrinks to ~52px bar. */
.nav.nav--stuck .nav__row { padding-top: 8px; padding-bottom: 8px; }
.nav.nav--stuck .logo__img { height: 30px; }
.nav .nav__row, .nav .logo__img { transition: padding 0.18s ease, height 0.18s ease; }

/* R1 Lane 1: topstrip text centered (Marc), lang switcher stays right */
.topstrip { justify-content: center; position: relative; }
/* R13: switcheren er absolut og måler fra .topstrip's PADDING-kasse (= hele
   viewporten), så var(--gutter) alene hængte den 540px længere ude end kurv-
   knappen på 2560px. Samme max()-udtryk som padding'en → højrekant på 1368px-
   kassen. No-op under 1480px. */
.topstrip__lang { position: absolute; right: max(var(--gutter), calc((100% - var(--content-w)) / 2 + var(--gutter))); top: 50%; transform: translateY(-50%); }

/* ===== Flyout — mock category-v2 EXACT block (R1 overhaul; replaces my
   earlier approximation — Marc: "alt skal have en overhaling") ===== */
.flyout__head { padding: 24px 28px 20px; border-bottom: 1.5px solid var(--ink); display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: start; }
.flyout__head .ey { font-size: 10.5px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); display: block; margin-bottom: 8px; }
.flyout__head h2 { font-family: var(--font-sans); font-weight: 400; font-size: 28px; line-height: 1; letter-spacing: -0.025em; margin: 0; }
.flyout__head h2 em { font-style: italic; color: var(--cobalt); }
.flyout__close { width: 36px; height: 36px; display: grid; place-items: center; border: 1.5px solid var(--ink); cursor: pointer; font-size: 16px; background: var(--snow); }
.flyout__close:hover { background: var(--ink); color: var(--snow); }
.flyout .flines { list-style: none; margin: 0; padding: 16px 28px; display: flex; flex-direction: column; gap: 0; }
.flyout .fline { position: relative; display: grid; grid-template-columns: 56px 1fr auto; gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--line); align-items: start; }
.flyout .fline:last-child { border-bottom: 0; }
.flyout .fline__media { width: 56px; height: 56px; background: var(--stone); border: 1px solid var(--line); overflow: hidden; }
.flyout .fline__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.flyout .fline__name { font-family: var(--font-sans); font-weight: 500; font-size: 14px; line-height: 1.2; margin: 0; display: block; padding-right: 20px; }
.flyout .fline__name a { color: var(--ink); }
.flyout .fline dl.variation { display: flex; gap: 8px; margin: 4px 0 0; font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-mute); align-items: center; }
.flyout .fline dl.variation dt, .flyout .fline dl.variation dd { margin: 0; display: inline; }
.flyout .fline dl.variation dd p { margin: 0; display: inline; }
.flyout .fline__qty { display: inline-flex; align-items: stretch; border: 1px solid var(--line); margin-top: 8px; background: var(--paper); font-family: var(--font-mono); font-size: 12px; height: 26px; }
.flyout .fline__step { width: 24px; cursor: pointer; background: 0; border: 0; color: var(--ink-soft); }
.flyout .fline__step:hover { background: var(--ink); color: var(--snow); }
.flyout .fline__input { width: 44px; text-align: center; border: 0; background: transparent; font: inherit; outline: 0; color: var(--ink); -moz-appearance: textfield; }
.flyout .fline__input::-webkit-outer-spin-button, .flyout .fline__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.flyout .fline__qty .unit { padding: 0 8px 0 6px; color: var(--ink-mute); display: flex; align-items: center; border-left: 1px solid var(--line); font-size: 10px; letter-spacing: 0.04em; text-transform: uppercase; }
.flyout .fline__price { text-align: right; min-width: 88px; display: flex; flex-direction: column; align-items: end; gap: 4px; }
.flyout .fline__price .total { font-family: var(--font-sans); font-weight: 500; font-size: 18px; letter-spacing: -0.015em; }
.flyout .fline__price .quantity { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-mute); }
.flyout .fline .remove_from_cart_button { position: absolute; top: 14px; right: 0; color: var(--ink-mute); font-size: 15px; line-height: 1; }
.flyout .fline .remove_from_cart_button:hover { color: var(--ink); }
.flyout .flyout__totals { padding: 20px 28px 0; display: flex; flex-direction: column; gap: 8px; }
.flyout .flyout__totals .row { display: flex; justify-content: space-between; font-size: 13.5px; }
.flyout .flyout__totals .row .lbl { color: var(--ink-soft); }
.flyout .flyout__totals .row.big { border-top: 1.5px solid var(--ink); padding-top: 14px; margin-top: 6px; font-family: var(--font-sans); font-weight: 500; font-size: 18px; }
.flyout .flyout__totals .row .val { font-family: var(--font-mono); }
.flyout .flyout__totals .row.big .val { font-size: 22px; letter-spacing: -0.015em; font-family: var(--font-sans); }
.flyout .delivery-info { margin: 16px 28px 0; padding: 12px 14px; border: 1px solid var(--line); background: var(--paper); display: flex; gap: 12px; align-items: center; font-size: 12px; }
.flyout .delivery-info b { display: block; font-size: 12.5px; }
.flyout .delivery-info span { color: var(--ink-mute); }
.flyout .ship-bar { margin: 16px 28px 0; }
.flyout .fly-buttons { display: grid; gap: 8px; padding: 16px 28px 28px; margin: 0; }
.flyout .fly-buttons a { display: flex; align-items: center; justify-content: center; height: 48px; font-weight: 500; }
.flyout .fly-buttons a.checkout { background: var(--cobalt); color: var(--snow); border: 1.5px solid var(--cobalt); }
.flyout .fly-buttons a.checkout:hover { background: var(--cobalt-deep); }
.flyout .fly-buttons a:not(.checkout) { border: 1.5px solid var(--ink); color: var(--ink); }
.flyout .fly-empty { padding: 32px 28px; color: var(--ink-mute); }
/* remove-x: hover-reveal at media corner — was colliding with line totals */
.flyout .fline .remove_from_cart_button { top: 12px; right: auto; left: -8px; width: 20px; height: 20px; display: grid; place-items: center; background: var(--snow); border: 1px solid var(--line); border-radius: 50%; font-size: 12px; opacity: 0; transition: opacity 0.12s ease; }
.flyout .fline:hover .remove_from_cart_button { opacity: 1; }

/* ROOT-CAUSE FIX (Marc's "logo er kæmpe"): woocommerce-layout.css's
   `.woocommerce-page img { height: auto }` (0,1,1) beat `.logo__img` (0,1,0)
   on ALL shop pages — home was fine, hence the earlier confusion. Specificity
   raised; the stuck rule (0,3,0) still wins on scroll. */
.nav .logo__img, .co-nav .logo__img { height: 44px !important; width: auto !important; }
.nav.nav--stuck .logo__img { height: 30px !important; }

/* Real images in former placeholder slots */
.ph-real { width: 100%; height: 100%; object-fit: cover; display: block; }
.team-card__photo--real { aspect-ratio: 4/5; overflow: hidden; border: 1.5px solid var(--ink); }

/* ===== R2 fixes (Marcs anden gennemgang) ===== */

/* WC's DEFAULT PURPLE buttons leaked through (single_add_to_cart, checkout,
   update cart, .button.alt) — hard override to the theme palette. */
.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button,
.woocommerce input.button, .woocommerce button.button.alt, .woocommerce a.button.alt,
button.single_add_to_cart_button, .checkout-button, #place_order {
  background-color: var(--cobalt) !important; color: var(--snow) !important;
  border: 1.5px solid var(--cobalt) !important; border-radius: 0 !important;
  font-family: var(--font-sans) !important; font-weight: 500 !important;
}
.woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover,
button.single_add_to_cart_button:hover, .checkout-button:hover, #place_order:hover {
  background-color: var(--cobalt-deep) !important; border-color: var(--cobalt-deep) !important;
}
.woocommerce button.button[name="update_cart"] {
  background: transparent !important; color: var(--ink) !important; border-color: var(--ink) !important;
}
.woocommerce button.button[name="update_cart"]:hover { background: var(--ink) !important; color: var(--snow) !important; }

/* Onboarding-bokse: padding på HELE boksen (Marc R1+R2) */
.onb__steps > * { padding: 24px 26px !important; box-sizing: border-box; }

/* Flyout: fuld bredde + ens luft pr. række + centreret midte */
.flyout .flines { padding: 8px 20px; }
.flyout .fline { grid-template-columns: 56px minmax(0,1fr) auto; gap: 12px; padding: 14px 0; align-items: center; }
.flyout .fline__media { align-self: center; background: var(--snow); }
.flyout .fline__media img { object-fit: cover; }
.flyout .flyout__totals { padding: 16px 20px 0; }
.flyout .delivery-info, .flyout .ship-bar { margin-left: 20px; margin-right: 20px; }
.flyout .fly-buttons { padding: 14px 20px 22px; }

/* Kassens/kurvens forsendelses-tekst: én font (Marc: "font er off") */
.ship-label, .ship-label * { font-family: var(--font-sans) !important; font-size: 13.5px; }
.woocommerce ul#shipping_method li label, .cart_totals .woocommerce-shipping-methods label { font-family: var(--font-sans); }

/* R3: ægte GLS-logo + pickup-ikon i forsendelsesvalg */
/* img.-prefix + !important: WC's .woocommerce-page img{height:auto} (0,1,1) slog
   ellers højden på shop-sider → GLS-logo på 231px (samme klasse som logo-blowup). */
img.ship-badge-img { height: 20px !important; width: auto !important; max-width: none; margin-right: 10px; vertical-align: middle; }
.ship-badge--pickup { display: inline-grid; place-items: center; width: 34px; height: 24px; margin-right: 10px; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 3px; vertical-align: middle; }

/* ===== Godkendt menu-IA: STOF-mega 4-kol + A-Å-indeks ===== */
.mega__inner--4 { grid-template-columns: repeat(4, 1fr); }
.mega--aaa .mega__inner--index { display: block; max-height: 70vh; overflow-y: auto; }
.mega__index { columns: 4; column-gap: 40px; list-style: none; margin: 0; padding: 0; }
.mega__index li { break-inside: avoid; padding: 4px 0; }
.mega__index a { font-size: 13px; color: var(--ink); display: flex; justify-content: space-between; gap: 12px; }
.mega__index a:hover { color: var(--cobalt); }
.mega__index .ct { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-mute); }
@media (max-width: 1100px) { .mega__index { columns: 2; } .mega__inner--4 { grid-template-columns: 1fr 1fr; } }
/* mega--stof: 4 kolonner vinder over basis-panelet; bredere panel */
.mega--stof .mega__inner { grid-template-columns: repeat(4, minmax(180px, 1fr)); min-width: 880px; }
@media (max-width: 1100px) { .mega--stof .mega__inner { grid-template-columns: 1fr 1fr; min-width: 0; } }
/* F-10: kolonneoverskriften bærer nu forældrearkivets tal, og Jersey-kolonnen
   har undergrupper (print/ensfarvet). h4 løftes derfor et niveau, så h5 kan
   overtage den gamle gruppe-look uden at de to overskrifter ligner hinanden. */
.mega--stof .mega__col > h4 { font-size: 12px; color: var(--ink); margin-bottom: 16px; }
.mega__grp + .mega__grp { margin-top: 22px; }
.mega__grp h5 { font-family: var(--font-sans); font-size: 10.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); margin: 0 0 12px; }
.mega__col h4 .ct, .mega__grp h5 .ct { font-family: var(--font-mono); font-size: 10px; font-weight: 400; letter-spacing: 0; color: var(--ink-faint); margin-left: 6px; }
/* Jersey-kolonnens overskrift i skuffen: tallet skal stå til højre som i
   .drawer__sub, men .drawer__link er block (ikke flex) og bruges også af
   punkter uden tal — float rører derfor kun de linjer der HAR et tal. */
.drawer__link .ct { float: right; font-family: var(--font-mono); font-size: 10.5px; font-weight: 400; color: var(--ink-faint); line-height: 1.5; }
/* Print-panelet har VARIABELT antal kolonner, og det er ikke en skødesløshed:
   Teknik + Motiv + feature på /en/ og /fi/, plus Målgruppe på dansk (M-06). Står
   der et tomt spor tilbage på de to andre sprog, ligner det en fejl frem for et
   sprogvalg, så sporene tælles.

   Rækkefølgen er reglen: nth-child(3) er OGSÅ sand når der er fire børn, så
   4-kolonne-reglen skal stå SIDST for at vinde. Bytter man om, får dansk tre
   spor til fire kolonner og feature-flisen bliver mast. */
.mega--print .mega__inner { grid-template-columns: 1fr 1.4fr; }
.mega--print .mega__inner:has(.mega__col:nth-child(3)) { grid-template-columns: 1fr 1.5fr 1.4fr; }
.mega--print .mega__inner:has(.mega__col:nth-child(4)) { grid-template-columns: 1fr 1.5fr 0.85fr 1.4fr; }

/* 12 motiver ved siden af 8 teknikker og 5 målgrupper gør panelet halvanden
   gang så højt som det behøver, og et menupanel der er højere end det er bredt
   scanner man ikke — man leder i det. To spalter bringer det ned på højde med
   nabokolonnen. break-inside forhindrer at et punkt knækker over spaltekanten. */
.mega__col--motiv ul { display: block; column-count: 2; column-gap: 28px; }
.mega__col--motiv ul li { break-inside: avoid; margin-bottom: 10px; }
@media (max-width: 1240px) { .mega__col--motiv ul { column-count: 1; } }

/* Nyheder fremhævet (Marc 2026-08-02: "maybe we need to make the 'nyheder' blue
   so it's more visible then the others").

   Farven er --cobalt, den samme som naven ALLEREDE bruger til hover og aktiv
   understregning — ikke en ny blå. En anden blå ville betyde "et andet slags
   punkt", og kunden skulle lære to systemer.

   font-weight bærer forskellen sammen med farven. Farve alene er ikke en
   tilgængelig markør: en rød-grøn-blind bruger, en telefon i sollys og et
   gråtone-print ser alle det samme punkt som resten. */
.nav__primary > .nav-item--ny > a { color: var(--cobalt); font-weight: 600; }
.nav__primary > .nav-item--ny > a:hover { border-color: var(--cobalt); }
.drawer__link--ny { color: var(--cobalt); font-weight: 600; }
/* Mobil: absolut-positioneret lang-switcher (R1-centrering) lå OVER de scrollende
   USP-pills → tekst-kollision. Switcher flytter i drawer-foden ≤1100px. */
/* 0,2,0-specificitet: plp/pdp/cart.css genudråber .topstrip__lang{display:flex}
   fladt EFTER theme.css og ville ellers slå media-reglen her. */
@media (max-width: 1100px) { .topstrip .topstrip__lang { display: none; } }

/* R4: mega-paneler centreres under NAVEN, ikke under punktet — punkter mod højre
   (Stof A-Z) skubbede ellers panelet ud over viewport-kanten (klippet tekst,
   usynlig Bambus). Events følger DOM'en, så hover på panelet tæller stadig som
   hover på .nav-item selvom boksen nu er positioneret mod .nav (sticky = anker). */
.nav__primary > .nav-item { position: static; }
.nav .mega { left: 50%; transform: translateX(-50%) translateY(8px); }
.nav .nav-item[data-open="true"] .mega { transform: translateX(-50%) translateY(0); }
/* R4: A-Z-panelet var trangt — bredere, mere luft, mere synligt indhold */
.mega--aaa { width: min(1160px, 94vw); }
.mega--aaa .mega__inner--index { padding: 32px 40px; max-height: 76vh; }
/* R4: person-ikon på konto-linket; label skifter til Min konto ved login */
.util-account { display: inline-flex; align-items: center; gap: 7px; }
.util-account__ico { flex-shrink: 0; }
.drawer__lang { display: flex; gap: 16px; padding-bottom: 4px; border-bottom: 1px solid rgba(248,248,244,0.15); }
.drawer__lang a[aria-current="true"] { color: var(--snow); font-weight: 600; }

/* R4 flyout-ARMOR: WC's widget-CSS (ul.cart_list li img{float:right;width:32px},
   li-padding m.fl.) vandt afhængigt af minify-bundlerækkefølgen PR. SIDE — derfor
   så flyouten rigtig ud på hjem/PDP men kollapset på shop. ID-forankring (1,x,x)
   slår alle widget-regler uanset rækkefølge. */
/* WC's clearfix li::before/::after{display:table} blev FANTOM-grid-items i
   .fline-gridden → alle rigtige børn forskudt ét spor (body i auto-sporet,
   pris wrappet til række 2). Det VAR hele "flyout ødelagt på shop"-mysteriet. */
#cart-flyout .fline::before, #cart-flyout .fline::after { content: none !important; display: none !important; }
#cart-flyout ul.woocommerce-mini-cart { list-style: none !important; margin: 0 !important; }
#cart-flyout ul.woocommerce-mini-cart li.fline { list-style: none !important; margin: 0 !important; padding: 16px 0 !important; }
#cart-flyout .fline__media { width: 56px !important; height: 56px !important; }
#cart-flyout .fline__media img { float: none !important; width: 100% !important; height: 100% !important; max-width: none !important; margin: 0 !important; box-shadow: none !important; }
#cart-flyout .fline__name { margin: 0 !important; }
/* R4: fuld bredde i flyouten — sidepadding 28→20px på alle indre blokke */
#cart-flyout .flines { padding: 16px 20px; }
#cart-flyout .flyout__totals { padding: 20px 20px 0; }
#cart-flyout .delivery-info { margin: 16px 20px 0; }
#cart-flyout .ship-bar { margin: 16px 20px 0; }
#cart-flyout .fly-buttons { padding: 16px 20px 24px; }

/* R7 A2: Vault ansøgnings-kort */
.vp-apply__card { border: 1.5px dashed rgba(248,248,244,0.4); padding: 26px 28px; margin-top: 24px; max-width: 640px; }
.vp-apply__card .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.75; }
.vp-apply__card p { margin: 10px 0 18px; opacity: 0.9; }
.vp-apply__actions { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }

/* R7 C1: underskriften i korrekt proportion (var proppet i foto-rammen, ulæselig) */
.manifesto__sign { margin-top: 24px; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.manifesto__sign img { height: 44px !important; width: auto !important; max-width: none; }
.manifesto__sign span { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-mute); }

/* R7-addendum: kompakt mobil-header. Topstrip = ÉN slank scrollende linje
   (pills wrappede før over 3 linjer = høj mørk klods); person/kurv = ikoner. */
.cart__ico { display: none; }
@media (max-width: 700px) {
  /* R8: auto/auto-grid klumpede logo+ikoner i venstre side m/ dødt rum til højre */
  .nav__row { display: flex; justify-content: space-between; align-items: center; }
  .topstrip { padding: 7px 14px; }
  .topstrip__pills { gap: 18px; }
  .topstrip__pills span { white-space: nowrap; font-size: 10.5px; letter-spacing: 0.02em; }
  .nav__row { padding: 10px 14px; gap: 10px; }
  .nav .logo__img { height: 34px !important; }
  .nav__util { gap: 14px; }
  .nav__util .nav__search { display: none; }
  .util-account { gap: 0; }
  .util-account__ico { width: 22px; height: 22px; }
  /* linje 52 gemmer .util-text på mobil — konto-IKONET skal netop VISES (Marc R7) */
  .nav__util .util-text.util-account { display: inline-flex; font-size: 0; }
  .nav__util .cart { padding: 9px 12px; display: inline-flex; align-items: center; gap: 6px; }
  .cart__ico { display: block; flex-shrink: 0; }
  .cart__label { display: none; }
  .nav__util .cart b { margin-left: 0; font-size: 12.5px; opacity: 1; }
  .nav__burger { width: 40px; height: 40px; }
}

/* R8: instant-søgnings-dropdown. To spalter á 5 ved 6+ træffere (Marc 1/8).
   Spalte-major (grid-auto-flow: column), så DOM-rækkefølgen 1-10 — faldende
   relevans — læses nedad i venstre spalte og fortsætter øverst i højre. Det
   betyder også at ↑↓ virker uændret: næste DOM-element ER næste visuelle
   række, uden gitter-aritmetik i tastaturhåndteringen. */
.isearch { position: absolute; top: calc(100% + 6px); right: 0; left: auto; width: min(380px, calc(100vw - 48px)); background: var(--snow); border: 1.5px solid var(--ink); box-shadow: 0 24px 48px -20px rgba(13,16,25,0.35); z-index: 80; max-height: 70vh; overflow-y: auto; }
/* F7-1: I headeren løsrives panelet fra inputfeltets højrekant og centreres i
   viewporten — bredere, med plads til 2×7 resultater. Skuffens panel (mobil)
   er urørt af dette: .drawer__search-reglerne længere nede vinder dér. .nav
   har hverken transform eller filter, så fixed er viewport-relativ trods
   sticky. Toppen er målt til værste fald: ved sidetop står topbaren OVER
   nav'en og headerens underkant ligger på 118 px; scrollet klæber nav'en på
   0 og bunder i 72. 130 rydder begge — luften i scrollet tilstand er
   tilsigtet, panelet er en kommandopalet, ikke en dropdown. */
.nav__search .isearch { position: fixed; top: 130px; left: 50%; right: auto; transform: translateX(-50%); width: min(560px, calc(100vw - 48px)); max-height: min(72vh, 640px); }
.isearch.is-wide { width: min(728px, calc(100vw - 48px)); }
.nav__search .isearch.is-wide { width: min(880px, calc(100vw - 48px)); }
.isearch.is-wide .isearch__grid { display: grid; grid-auto-flow: column; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(7, auto); }
.isearch.is-wide .isearch__row:nth-child(-n+7) { border-right: 1px solid var(--line); }
/* To klasser, ikke én: .nav__util a (theme.css:23 og plp.css:19) sætter
   inline-flex og vinder på specificitet over en enkelt .isearch__row. Rækkerne
   blev derfor krympet til indholdsbredde — flosset højrekant, og ellipsen på
   lange navne udløste aldrig, fordi rækken bare voksede. */
.isearch .isearch__row { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--line); color: var(--ink); min-width: 0; }
.isearch__row:hover, .isearch__row.is-active { background: var(--cobalt-tint); }
.isearch__row img, .isearch__noimg { width: 40px; height: 40px; object-fit: cover; flex-shrink: 0; background: var(--stone); border: 1px solid var(--line); }
.isearch__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.isearch__body b { font-size: 13.5px; font-weight: 500; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.isearch__meta { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.isearch__sku { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-mute); letter-spacing: 0.04em; flex-shrink: 0; }
.isearch__cat { font-size: 10.5px; color: var(--ink-mute); letter-spacing: 0.06em; text-transform: uppercase; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* min-width reserverer pladsen FØR prisen er hentet (F-09e). Målt på live
   2026-08-02: prisstrengen er "36,00 kr. p/m" — 13 tegn i 60 af 60 stikprøver.
   Uden reservationen krymper .isearch__body i samme øjeblik priserne lander,
   og navnet bliver klippet om midt for øjnene af kunden. Højrestillet, så
   tallene står i en kolonne der kan skimmes. */
.isearch__price { font-family: var(--font-mono); font-size: 12px; color: var(--cobalt-deep); white-space: nowrap; min-width: 13ch; text-align: right; }
.isearch__all { display: block; padding: 11px 14px; text-align: center; font-size: 12.5px; font-weight: 500; color: var(--cobalt); background: var(--paper); }
.isearch__all:hover { background: var(--cobalt-tint); }
.isearch__empty { padding: 16px 14px; color: var(--ink-mute); font-size: 13px; }
/* Under 780 px er der ikke plads til to spalter ved siden af hinanden — og
   skuffe-søgningen er altid enkeltspaltet. */
@media (max-width: 780px) {
  .isearch.is-wide { width: min(380px, calc(100vw - 48px)); }
  .isearch.is-wide .isearch__grid { display: block; }
  .isearch.is-wide .isearch__row:nth-child(-n+7) { border-right: 0; }
  /* F7-1 (mobil): navnet må bryde over to linjer i stedet for at ende som
     "Jersey …" — ALLE produkter starter med Jersey, så en énlinjes ellipse
     bar ingen information. Prisen flytter ned på egen linje under navnet
     (indrykket forbi billedet) i stedet for at reservere 13ch af rækken;
     gæster har ingen pris, og en tom prislinje må ikke efterlade luft. */
  .isearch .isearch__row { flex-wrap: wrap; row-gap: 2px; }
  .isearch__body { flex: 1 1 0; }
  .isearch__body b { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .isearch__price { flex: 0 0 100%; margin-left: 52px; min-width: 0; text-align: left; }
  .isearch__price:empty { display: none; }
}
/* F8-13 (Marc 7/8): feltet stod 48px inde i hver side — wrapperen (.drawer__search,
   24px) OG formen (24px) paddede oveni hinanden. Formen nulstilles, så feltet
   flugter med menupunkternes 24px-kant og udfylder flyoutens bredde. */
.drawer__search form { display: block; padding: 0; }
.drawer__search input { width: 100%; height: 44px; padding: 0 14px; background: var(--paper); border: 1.5px solid var(--line); font-family: var(--font-sans); font-size: 14px; outline: 0; }
/* F7-1: fuld skuffebredde — panelet var smallere end skuffens menurækker, så
   menupunkter og produkttal stak ud til højre for resultaterne og lå visuelt
   "oveni" dem. Panelet er absolut i FORMEN, som arver .drawer__search'
   24 px-padding — de negative offsets træder ud af den, så panelet dækker
   kant til kant og alt nedenunder. */
.drawer__search .isearch, .drawer__search .isearch.is-wide { width: auto; left: -24px; right: -24px; border-left: 0; border-right: 0; }
.drawer__search .isearch.is-wide .isearch__grid { display: block; }
.drawer__search .isearch.is-wide .isearch__row:nth-child(-n+7) { border-right: 0; }

/* R9: vault-program genbygget efter vault/home.html (LYS katalog-entré) */
.vault-program-v2 { padding-bottom: var(--s-20); }
.vp2-head .page-head__kicker, .vp2-sec .page-head__kicker { font-size: 11px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-mute); display: inline-flex; align-items: center; gap: 10px; }
.foil-pill { background: var(--vault-foil, linear-gradient(120deg, #E8C87A, #C99655)); color: #1A1408; padding: 3px 10px; font-weight: 600; letter-spacing: 0.08em; }
.vp2-head { max-width: var(--content-w); margin: 0 auto; padding: 36px var(--gutter) 28px; display: grid; grid-template-columns: 1fr auto; gap: 32px; align-items: end; }
.vp2-head h1 { font-family: var(--font-sans); font-weight: 400; font-size: clamp(40px, 5.5vw, 72px); margin: 14px 0 0; letter-spacing: -0.028em; line-height: 0.98; }
.vp2-head h1 em { font-style: italic; color: var(--cobalt); }
.vp2-head .page-head__lede { color: var(--ink-soft); font-size: 15.5px; margin: 12px 0 0; max-width: 60ch; line-height: 1.5; }
.vp2-head .page-head__count { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.vp2-head .page-head__count b { font-family: var(--font-sans); font-weight: 500; font-size: 56px; line-height: 1; letter-spacing: -0.025em; }
.vp2-head .page-head__count span { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-mute); }
.invite-banner--always { display: block; max-width: var(--content-w); margin: 0 auto 24px; padding: 0 var(--gutter); }
.invite-banner__inner { background: linear-gradient(135deg, #FFF8E8 0%, #FBEFC8 100%); border: 1.5px solid #C99655; padding: 20px 24px; display: grid; grid-template-columns: auto 1fr auto; gap: 20px; align-items: center; }
.invite-banner__icon { width: 40px; height: 40px; border-radius: 50%; background: var(--vault-foil, #E8C87A); display: grid; place-items: center; color: #1A1408; }
.invite-banner b { display: block; font-family: var(--font-sans); font-weight: 600; font-size: 14px; }
.invite-banner p { font-size: 13px; color: var(--ink-soft); margin: 4px 0 0; line-height: 1.45; }
.invite-banner .links { display: flex; gap: 8px; flex-wrap: wrap; }
.invite-banner .links a { padding: 10px 16px; font-family: var(--font-sans); font-size: 12.5px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; }
.invite-banner .links .primary { background: #1A1408; color: var(--snow); }
.invite-banner .links .primary:hover { background: var(--ink); }
.invite-banner .links .secondary { background: var(--snow); color: var(--ink); border: 1.5px solid var(--ink); }
.invite-banner .links .secondary:hover { background: var(--ink); color: var(--snow); }
.vp2-sec { padding-top: var(--s-10); }
.vp2-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.vp2-pillar { border: 1.5px solid var(--line); background: var(--paper); padding: 24px; }
.vp2-pillar .n { font-family: var(--font-mono); font-size: 11px; color: var(--ink-mute); }
.vp2-pillar h3 { font-family: var(--font-sans); font-weight: 500; font-size: 19px; margin: 10px 0 8px; }
.vp2-pillar p { color: var(--ink-soft); font-size: 13.5px; line-height: 1.5; margin: 0; }
.vp2-h2 { font-family: var(--font-sans); font-weight: 400; font-size: clamp(28px, 3.4vw, 44px); letter-spacing: -0.025em; margin: 14px 0 22px; }
.foil-text { background: var(--vault-foil, linear-gradient(120deg, #E8C87A, #C99655)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.vp2-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; counter-reset: vpstep; }
.vp2-steps li { border-top: 1.5px solid var(--ink); padding-top: 14px; counter-increment: vpstep; }
.vp2-steps li::before { content: "0" counter(vpstep); font-family: var(--font-mono); font-size: 11px; color: var(--ink-mute); display: block; margin-bottom: 8px; }
.vp2-steps b { display: block; font-family: var(--font-sans); font-weight: 500; font-size: 16px; margin-bottom: 6px; }
.vp2-steps span { color: var(--ink-soft); font-size: 13px; line-height: 1.5; }
@media (max-width: 900px) { .vp2-grid, .vp2-steps { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) { .vp2-head { grid-template-columns: 1fr; } .vp2-head .page-head__count { align-items: flex-start; } .invite-banner__inner { grid-template-columns: 1fr; } .vp2-grid, .vp2-steps { grid-template-columns: 1fr; } }

/* R10: rigtige billeder i forside-slots */
.edit__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vault__tile-img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; opacity: 0.85; }

/* F8-11b: instant-panelets forankring på søgeresultatsidens felt — venstrestillet
   under feltet i fuld feltbredde, i modsætning til headerens centrerede variant. */
.search-bar { position: relative; }
.search-bar .isearch { left: 0; right: auto; width: 100%; }

/* Skjuleregel for .screen-reader-text. jydsk-v2 udsender ALDRIG selv klassen
   (målt: 0 forekomster i temaets PHP), så den er her udelukkende som værn om
   arvet WooCommerce-markup.

   Hvorfor den skal findes: 15 af WooCommerces egne frontend-skabeloner udsender
   klassen, og v2 overrider kun to af dem (cart/cart.php og myaccount/form-login.php,
   som begge allerede har droppet den). Resten arves ordret, blandt andet
   global/quantity-input.php ("Antal" på hver produktside og hver kurvlinje),
   loop/add-to-cart.php og loop/result-count.php (butiksarkivet),
   checkout/form-coupon.php ("Rabatkode:") og content-widget-price-filter.php
   ("Min. pris"/"Maks. pris").

   I dag skjules teksten kun fordi WooCommerces eget ark leverer reglen. Porto
   ejer sin egen udgave i themes/porto/css/theme.css, og det er præcis derfor
   Porto kan tillade sig at smide WooCommerces CSS væk på functions.php:109.
   jydsk-v2 ejede ingen af delene. Gjorde vi det samme som Porto uden denne
   regel, ville alle de etiketter stå som synlig tekst på butik, produkt, kurv
   og kasse. Reglen skal derfor ligge her FØR nogen beslutter noget om de ark.
   theme.css er valgt frem for tokens-v4.css, fordi tokens-filen holder
   variabler og denne er en komponent. Begge indlæses ubetinget. */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; word-wrap: normal !important; }
/* Får en skjult tekst alligevel fokus (typisk et spring-til-indhold-link), skal
   den kunne ses. Ellers tabbar en tastaturbruger hen på noget usynligt. */
.screen-reader-text:focus { position: static !important; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; clip-path: none; white-space: normal; }

/* Pernille 2/9, mobil-fund. (1) Om os-CTA-kortene (proever/Vault) stakker nu
   i stedet for at klemme to kolonner paa 390 px. (2) Talbaandets femte celle
   spaender begge kolonner, saa den ikke staar alene i et hjoerne. (3) Heroens
   toppadding ned, saa begge knapper naar over folden. */
@media (max-width: 700px) {
  .cta { grid-template-columns: 1fr; }
  .ticker__cell:nth-child(odd):last-child { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .hero { padding-top: 44px; }
}

/* Marc 2/9 (Pernille pkt. 6+7): Vault-udtrykket (sort/guld fra PDP'ens strip)
   paa Om os-kortet og kontaktsidens nye Vault-sektion. */
.cta-card--vault { background: var(--vault-bg); color: var(--vault-ink); border: 0; }
.cta-card--vault h3, .cta-card--vault h3 em { color: var(--vault-ink); }
.cta-card--vault h3 em { font-style: italic; background: var(--vault-foil); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cta-card--vault p { color: rgba(244, 240, 232, 0.82); }
.cta-card--vault .actions .primary { background: var(--vault-foil); color: #1A1408; border: 0; }
.vault-inline { background: var(--vault-bg); color: var(--vault-ink); display: flex; align-items: center; gap: 24px; padding: 28px 32px; flex-wrap: wrap; }
.vault-inline__foil { background: var(--vault-foil); color: #1A1408; padding: 5px 12px; font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.vault-inline__body { flex: 1; min-width: 240px; }
.vault-inline__body h3 { margin: 0 0 4px; font-weight: 400; font-size: 24px; letter-spacing: -0.02em; }
.vault-inline__body h3 em { font-style: italic; background: var(--vault-foil); -webkit-background-clip: text; background-clip: text; color: transparent; }
.vault-inline__body p { margin: 0; font-size: 13px; color: rgba(244, 240, 232, 0.82); }
.vault-inline__cta { background: var(--vault-foil); color: #1A1408; padding: 13px 22px; font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; }
