/* Danish Fuel configurator. Theme tokens from core.css (DESIGN-SYSTEM.md): luxury ground, instrument
   motifs only (step numbers, mono labels, the certificate). Brass marks active state only. */
.dfc{--dfc-field:#fbfbfa;--dfc-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4 6.6 11.4 12.5 4.8' fill='none' stroke='%23cfb87c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");width:100%;max-width:var(--w-max,1600px);margin-inline:auto;color:var(--t2);font-family:var(--f-sans);text-align:left}
.prose:has(>.dfc),.prose:has(>p>.dfc){max-width:none}
.dfc p{margin:0}
.dfc button:not(.df-btn){font:inherit;color:inherit}
.dfc .df-btn{color:var(--fg)}
.dfc__grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,1fr);gap:var(--s12);align-items:start}

/* stage */
.dfc__visual{position:sticky;top:calc(var(--header-h,72px) + var(--s4));min-width:0}
.dfc__stage{position:relative;margin:0;aspect-ratio:1;max-height:calc(100vh - var(--header-h,72px) - 128px);width:100%;background:var(--stage);border-radius:var(--r);overflow:hidden}
.dfc__img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;opacity:0;transition:opacity var(--t-mid) var(--ease)}
.dfc__img.is-on{opacity:1}
.dfc__img:not([src]){display:none}
/* Caption sits top-left on a paper chip: product photos carry a baked-in watermark bottom-left (QA-048). */
.dfc__cap{position:absolute;left:var(--s4);top:var(--s4);padding:6px var(--s2);border-radius:var(--r);background:rgba(247,247,245,.86);font:700 var(--fs-12)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--t2)}
.dfc__thumbs{display:flex;gap:var(--s3);margin-top:var(--s3);overflow-x:auto;scrollbar-width:none;min-height:72px}
.dfc__thumbs::-webkit-scrollbar{display:none}
.dfc__thumb{flex:0 0 72px;height:72px;cursor:pointer;padding:0;border:1px solid var(--line);border-radius:var(--r);background:var(--stage);transition:border-color var(--t-fast) var(--ease)}
.dfc__thumb img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
.dfc__thumb:hover{border-color:var(--t4)}
.dfc__thumb[aria-pressed=true]{border-color:var(--t1);box-shadow:inset 0 0 0 1px var(--t1)}

/* panel */
.dfc__panel{min-width:0;display:flex;flex-direction:column}
.dfc__head{margin-bottom:var(--s8)}
.dfc .dfc__title{margin:0;font:800 var(--fs-48)/1 var(--f-display);letter-spacing:.01em;color:var(--t1)}
.dfc__sub{margin-top:var(--s2)!important;font-size:var(--fs-18);color:var(--t3)}

.dfc__nav{margin-bottom:var(--s8)}
.dfc__steps{list-style:none;margin:0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--s2);overflow-x:auto;scrollbar-width:none}
.dfc__steps::-webkit-scrollbar{display:none}
.dfc .dfc__steps li{margin:0}
.dfc__stepbtn{display:flex;flex-direction:column;gap:2px;width:100%;min-height:52px;padding:var(--s2) 0;border:0;background:none;text-align:left;cursor:pointer}
.dfc__n{font:700 var(--fs-12)/1.2 var(--f-mono);letter-spacing:.08em;color:var(--t2)}
.dfc__sl{font:800 var(--fs-16)/1.1 var(--f-display);letter-spacing:.06em;text-transform:uppercase;color:var(--t3);transition:color var(--t-fast) var(--ease)}
.dfc__stepbtn:hover .dfc__sl,.dfc__stepbtn.is-done .dfc__sl{color:var(--t2)}
.dfc__stepbtn[aria-current=step] .dfc__sl{color:var(--t1)}
.dfc__stepbtn[aria-current=step] .dfc__n{color:var(--t1)}
.dfc__progress{height:2px;background:var(--line);margin-top:var(--s1);overflow:hidden}
.dfc__progress span{display:block;height:100%;background:var(--brass);transform-origin:left;transition:transform var(--t-mid) var(--ease)}

.dfc__body{margin:0;min-height:320px}
.dfc__step{border:0;margin:0;padding:0;min-inline-size:0}
.dfc__step[hidden]{display:none}
.dfc .dfc__legend{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s4);width:100%;padding:0;margin:0 0 var(--s3);outline:0}
.dfc__legend-n{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.dfc__legend-t{font:800 var(--fs-28)/1.05 var(--f-display);letter-spacing:.02em;text-transform:uppercase;color:var(--t1)}
.dfc__legend-v{margin-left:auto;font-size:var(--fs-16);font-weight:600;color:var(--t2)}
.dfc__help{font-size:var(--fs-15);line-height:1.55;color:var(--t3);max-width:60ch;margin:0 0 var(--s6)!important}

/* swatches: compact chips. The cabinet photo already shows colour and wood, so a chip is the name,
   the price difference and, for colours, a small paint dot (René, 2026-10-25). */
.dfc__swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:var(--s2)}
.dfc__sw{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;align-content:center;gap:2px var(--s3);min-height:56px;padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r);background:var(--dfc-field);cursor:pointer;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.dfc__swatches--wood .dfc__sw{grid-template-columns:minmax(0,1fr)}
.dfc__sw:hover{border-color:var(--t4)}
.dfc__radio,.dfc__check{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.dfc__dot{grid-row:1/span 2;width:20px;height:20px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 1px rgba(22,21,18,.18),inset 0 -3px 5px rgba(0,0,0,.16),inset 0 2px 3px rgba(255,255,255,.22)}
.dfc__dot.is-metal{background:linear-gradient(135deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,0) 45%,rgba(0,0,0,.2) 100%),var(--c)}
.dfc__swname{min-width:0;font-size:var(--fs-15);font-weight:700;line-height:1.2;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dfc__pill{display:inline-flex;align-items:center;min-height:22px;padding:2px var(--s2);border-radius:var(--pill);background:rgba(22,21,18,.06);font:700 var(--fs-12)/1.2 var(--f-mono);letter-spacing:.02em;color:var(--t2);white-space:nowrap}
.dfc__sw .dfc__pill{justify-self:start;min-height:20px;padding:1px var(--s2)}
.dfc__pill.is-zero{background:none;box-shadow:inset 0 0 0 1px var(--line);color:var(--t3)}
.dfc__pill:empty{display:none}
.dfc__sw:has(:checked){border-color:var(--t1);box-shadow:inset 0 0 0 1px var(--t1)}
.dfc__sw:has(:checked) .dfc__pill,.dfc__card:has(:checked) .dfc__pill{background:var(--ink);box-shadow:none;color:var(--d1)}
.dfc__card--choice:has(:checked)::after{content:"";position:absolute;z-index:2;top:var(--s3);right:var(--s3);width:24px;height:24px;border-radius:50%;background:var(--ink) var(--dfc-check) center/14px no-repeat;box-shadow:0 0 0 2px var(--paper)}
.dfc__sw:has(:focus-visible),.dfc__card:has(:focus-visible){outline:2px solid var(--ink);outline-offset:3px}
.dfc__sw.is-na{cursor:not-allowed;background:transparent}
.dfc__sw.is-na .dfc__swname{color:var(--t4);text-decoration:line-through;text-decoration-thickness:1px}
.dfc__sw.is-na:hover{border-color:var(--line)}

/* cards: add-ons and choices */
.dfc__pers,.dfc__choices{display:grid;gap:var(--s3)}
.dfc__choices{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.dfc__card{position:relative;display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:var(--s1) var(--s4);padding:var(--s5);border:1px solid var(--line);border-radius:var(--r);background:var(--dfc-field);cursor:pointer;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.dfc__card:hover{border-color:var(--t4)}
.dfc__card:has(:checked){border-color:var(--t1);box-shadow:inset 0 0 0 1px var(--t1)}
.dfc__card-t{font-weight:650;font-size:var(--fs-16);line-height:1.3;color:var(--t1)}
.dfc__card-d{grid-column:2/-1;font-size:var(--fs-15);line-height:1.5;color:var(--t3)}
.dfc__tick{grid-row:1;width:24px;height:24px;border:1.5px solid var(--t4);border-radius:var(--r);background:var(--paper);transition:border-color var(--t-fast) var(--ease)}
.dfc__card--toggle:hover .dfc__tick{border-color:var(--t2)}
.dfc__card--toggle:has(:checked) .dfc__tick{border-color:var(--ink);background:var(--ink) var(--dfc-check) center/14px no-repeat}
.dfc__card--choice{grid-template-columns:minmax(0,1fr) auto;align-content:start;padding:var(--s2) var(--s2) var(--s5)}
.dfc__card--choice .dfc__card-img{grid-column:1/-1;display:block;aspect-ratio:4/3;margin-bottom:var(--s3);border-radius:2px;background:var(--stage);overflow:hidden}
.dfc__card--choice .dfc__card-img img{display:block;width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;transition:transform var(--t-slow) var(--ease)}
.dfc__card--choice:hover .dfc__card-img img{transform:scale(1.03)}
.dfc__card--choice .dfc__card-t,.dfc__card--choice .dfc__card-d{padding-inline:var(--s3) 0}
.dfc__card--choice .dfc__card-p{margin-right:var(--s3)}
.dfc__card--choice .dfc__card-d{grid-column:1/-1;padding-right:var(--s3)}

/* personalise: the real certificate */
.dfc__opt.is-on .dfc__card{border-bottom-left-radius:0;border-bottom-right-radius:0}
.dfc__fields{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--s8);padding:var(--s8) var(--s6);border:1px solid var(--t1);border-top:0;border-radius:0 0 var(--r) var(--r);background:radial-gradient(90% 120% at 20% 30%,#f4f4f1 0%,var(--stage) 75%)}
.dfc__fields[hidden]{display:none}
.dfc__fields--one{grid-template-columns:minmax(0,1fr);padding-top:var(--s6)}
.dfc__certwrap{display:grid;justify-items:center;gap:var(--s3)}
.dfc .dfc__cert{--cert-w:208px;cursor:pointer}
.dfc__laserimg{display:grid;justify-items:center;gap:var(--s3);margin:0}
.dfc__laserimg img{display:block;width:208px;height:auto;aspect-ratio:1/.84;object-fit:cover;object-position:50% 0;background:#fff;border-radius:var(--r);box-shadow:0 0 0 1px var(--line)}
.dfc__laserimg figcaption{font:400 var(--fs-13)/1.3 var(--f-mono);letter-spacing:.04em;color:var(--t3)}
.dfc__certnote{font:400 var(--fs-12)/1.3 var(--f-mono);letter-spacing:.04em;color:var(--t3)}
.dfc__certfb{display:grid;gap:var(--s2);width:208px;padding:var(--s5);border-radius:var(--r);background:var(--ink);color:var(--d2);font:400 var(--fs-12)/1.3 var(--f-mono);text-align:center}
.dfc__certfb-v{min-height:32px;padding:var(--s2);border-radius:2px;background:#e4e4df;color:var(--t1);font-weight:700;letter-spacing:.2em;overflow-wrap:anywhere}
.dfc__inputs{display:grid;gap:var(--s5)}
.dfc__field{display:grid;gap:var(--s2);align-content:start}
.dfc__field label{font:700 var(--fs-12)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--t2)}
.dfc__field input{font-size:var(--fs-16)}
.dfc__field input[data-field=id]{max-width:200px;font:700 var(--fs-18)/1 var(--f-mono);letter-spacing:.2em;text-transform:uppercase}
.dfc__field input[aria-invalid=true]{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal)}
.dfc__hint{font-size:var(--fs-13);line-height:1.4;color:var(--t3)}
.dfc__hint span{font-family:var(--f-mono);white-space:nowrap}
.dfc__err{font-size:var(--fs-13);line-height:1.4;font-weight:600;color:var(--signal)}
.dfc__err:empty{display:none}

/* summary */
.dfc__sum{display:grid;grid-template-columns:auto 1fr;margin:var(--s2) 0 0;padding:var(--s1) var(--s5);border:1px solid var(--line);border-radius:var(--r);background:var(--dfc-field)}
.dfc__sum dt,.dfc__sum dd{margin:0;padding:var(--s4) 0;border-bottom:1px solid var(--line)}
.dfc__sum dt:nth-last-of-type(1),.dfc__sum dd:last-child{border-bottom:0}
.dfc__sum dt{display:flex;align-items:center;padding-right:var(--s6);font:700 var(--fs-12)/1.6 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--t2)}
.dfc__sum dd{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s4)}
.dfc__sum-ic{flex:0 0 auto;display:grid;place-items:center}
.dfc__sum-ic .dfc__dot{width:24px;height:24px}
.dfc__sum-v{flex:1 1 auto;min-width:0;font-weight:600;color:var(--t1);overflow-wrap:anywhere}
.dfc__sum-p{font:400 var(--fs-13)/1.4 var(--f-mono);color:var(--t2);white-space:nowrap}
.dfc__link{padding:0;border:0;background:none;font:700 var(--fs-12)/1.4 var(--f-mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--t1)!important;text-decoration:underline;text-underline-offset:.2em;cursor:pointer;min-height:24px}
.dfc__link:hover{text-decoration-color:var(--brass-ink)}
.dfc__done{margin-top:var(--s6);padding:var(--s6);border:1px solid var(--t1);border-radius:var(--r);background:var(--dfc-field);outline:0}
.dfc__done[hidden]{display:none}
.dfc__done-t{font-weight:650;font-size:var(--fs-18);line-height:1.4;color:var(--t1);margin-bottom:var(--s4)!important;padding-left:32px;background:left 2px/22px no-repeat;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='%23161512'/%3E%3Cpath d='M6 11.4 9.5 14.8 16 7.6' fill='none' stroke='%23cfb87c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.dfc__done-a{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s4)}
.dfc__formerr{margin-top:var(--s4)!important;font-size:var(--fs-15);font-weight:600;color:var(--signal)}
.dfc__formerr:empty{display:none}

/* bar */
/* Total bar: one floating card on the panel column (solid paper, ring, float shadow), stuck 16px above the fold. */
.dfc__bar{position:sticky;bottom:var(--s4);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--s4);margin-top:var(--s8);padding:var(--s3) var(--s3) var(--s3) var(--s6);border:1px solid var(--line);border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow-float)}
.dfc__total{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:var(--s2)}
.dfc__total-l{grid-column:1/-1;font:700 var(--fs-12)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--t2)}
.dfc__price{font:800 var(--fs-36)/1 var(--f-display);letter-spacing:.02em;color:var(--t1);font-variant-numeric:tabular-nums}
.dfc__total-n{font-size:var(--fs-12);color:var(--t2);white-space:nowrap}
.dfc__mini{display:none;flex:0 0 48px;width:48px;height:48px;padding:0;border:1px solid var(--line);border-radius:var(--r);background:var(--stage);overflow:hidden}
.dfc__mini img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
.dfc__next .df-btn__arrow{flex:none}
.dfc__actions{display:flex;gap:var(--s2);align-items:center}
.dfc__back{display:inline-grid;place-items:center;width:48px;height:48px;padding:0;border:1px solid var(--t1);border-radius:var(--r);background:transparent;color:var(--t1);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.dfc__back[hidden]{display:none}
.dfc__back:hover{background:var(--t1);color:var(--d1)}
.dfc__back svg{width:20px;height:20px}
.dfc__next{min-width:220px}
.dfc__next[hidden]{display:none}
.dfc__next[aria-busy=true]{opacity:.7;cursor:progress}

@media (max-width:1180px){.dfc__grid{gap:var(--s8)}.dfc .dfc__title{font-size:var(--fs-36)}}
@media (max-width:1023px){
  .dfc__grid{grid-template-columns:minmax(0,1fr);gap:var(--s6)}
  /* The photo stays in view under the header while colours and woods are picked, so a choice and its
     result are on screen together (René: no scrolling up and down). */
  .dfc__visual{position:sticky;top:var(--header-h,60px);z-index:4;margin-inline:calc(var(--gut) * -1);padding:var(--s2) var(--gut);background:var(--stage);box-shadow:0 1px 0 var(--line)}
  .dfc__stage{height:min(38svh,420px);max-height:none;aspect-ratio:auto;max-width:none}
  /* Thumbnails are tap targets: 56px with 12px between (René: fat finger proof). */
  .dfc__thumbs{min-height:0;margin-top:var(--s2)}
  /* Centred when they fit; auto margins (not justify-content) so an overflowing row still scrolls from the first. */
  .dfc__thumb:first-child{margin-left:auto}
  .dfc__thumb:last-child{margin-right:auto}
  .dfc__thumb{flex-basis:56px;height:56px}
  .dfc__cap{left:0;top:0}
  .dfc__mini{display:none!important}
  .dfc__head{margin-bottom:var(--s6)}
  .dfc__nav{margin-bottom:var(--s6)}
  .dfc__steps{grid-auto-columns:max-content;gap:var(--s6)}
  .dfc__body{min-height:0}
  .dfc__total{margin-right:auto}
  .dfc__bar{bottom:0;margin-inline:calc(var(--gut) * -1);padding:var(--s3) var(--gut) calc(var(--s3) + env(safe-area-inset-bottom));border-width:1px 0 0;border-radius:0}
}
@media (max-width:560px){
  .dfc .dfc__title{font-size:var(--fs-28)}
  .dfc__sub{font-size:var(--fs-16)}
  .dfc__legend-t{font-size:var(--fs-22)}
  .dfc__swatches{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dfc__sw{min-height:56px;padding:var(--s2);column-gap:var(--s2)}
  .dfc__dot{width:20px;height:20px}
  .dfc__swname{font-size:var(--fs-16);white-space:normal;overflow-wrap:anywhere}
  .dfc__sw .dfc__pill{font-size:var(--fs-13)}
  /* Options first, the explanation under them, so a whole step fits under the sticky photo. */
  .dfc__step:not([hidden]){display:flex;flex-direction:column}
  .dfc__step>.dfc__help{order:2;font-size:var(--fs-15);line-height:1.5;margin:var(--s4) 0 0!important}
  .dfc .dfc__legend{margin-bottom:var(--s3)}
  .dfc__nav{margin-bottom:var(--s4)}
  .dfc__stepbtn{min-height:0;padding:var(--s2) 0}
  .dfc__stepbtn .dfc__sl{display:none}
  .dfc__stage{height:min(30svh,300px)}
  .dfc__thumb{flex-basis:52px;height:52px}
  .dfc__fields{grid-template-columns:minmax(0,1fr);gap:var(--s6);padding:var(--s6) var(--s4) var(--s5)}
  .dfc .dfc__cert{--cert-w:168px}
  .dfc__laserimg img{width:168px}
  .dfc__field input[data-field=id]{max-width:none}
  .dfc__card{padding:var(--s4);column-gap:var(--s3)}
  .dfc__choices{grid-template-columns:minmax(0,1fr)}
  .dfc__card--choice{grid-template-columns:96px minmax(0,1fr);align-items:start;padding:var(--s2)}
  .dfc__card--choice .dfc__card-img{grid-column:1;grid-row:1/span 3;aspect-ratio:1;margin:0}
  .dfc__card--choice .dfc__card-t{grid-column:2;padding:var(--s1) var(--s8) 0 0}
  .dfc__card--choice .dfc__card-p{grid-column:2;justify-self:start;margin:0}
  .dfc__card--choice .dfc__card-d{grid-column:2;padding:0;font-size:var(--fs-13)}
  .dfc__card--choice:has(:checked)::after{top:var(--s3);right:var(--s3);width:20px;height:20px;background-size:12px}
  .dfc__price{font-size:var(--fs-28)}
  .dfc__total{grid-template-columns:auto}
  .dfc__total-n{line-height:1.2}
  .dfc__next{min-width:0;padding:0 var(--s4)}
  .dfc__next-to{display:none}
  .dfc__bar{gap:var(--s3)}
  .dfc__sum{grid-template-columns:minmax(0,1fr)}
  .dfc__sum dt{padding-bottom:0;border-bottom:0}
  .dfc__sum dd{padding-top:var(--s1)}
  /* Five steps do not fit at 390: numbers for all, the label for the current step only (others stay readable to screen readers). */
  .dfc__steps{gap:var(--s4)}
  .dfc__stepbtn:not([aria-current=step]) .dfc__sl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .dfc__stepbtn{min-width:44px}
}
@media (prefers-reduced-motion:reduce){.dfc *{transition:none!important}.dfc__card--choice:hover .dfc__card-img img{transform:none}}
