/* LATVERA lux detail: the product template of all 80 routes (BUILD-BRIEFS B10–B12; GRAMMAR §8.7, §8.8, §8.10, §8.17).
 * Every rule sits under #detailDialog .lux-detail, the in-app bar (html:not([data-publication]) #detailDialog:has(.lux-detail))
 * or the publication bar (html[data-publication="true"] #detailDialog:has(.lux-detail)); the protected zone cannot read it.
 * Dialog units: --lux-unit = the sheet unit su = min(u, 100dvh/1200) inside #detailDialog (lux/tokens.css).
 * Flow is the default of every card: the stacked layout exists only under .lux-stack[data-lux-live] (V3-02), the sheet is
 * open unless its toggle collapsed it, and nothing is hidden by CSS until a script arms it. */

/* ── Dialog chrome: product-only additions to the shared route chrome of lux/primitives.css (B0) ────────────────────── */
html:not([data-publication]) #detailDialog:has(.lux-detail) { scrollbar-gutter:stable both-edges; }
#detailDialog:has(> #detailContent > .lux-detail) #detailContent { padding:0; }
/* Publication documents: the site bar stays in flow above the card frame, on the ground, legible (V2 M10, V3-04). */
html[data-publication="true"] #detailDialog:has(.lux-detail) .detail-top {
  position:static; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 24px; min-height:0;
  padding:12px var(--lux-edge); background:var(--lux-ground); -webkit-backdrop-filter:none; backdrop-filter:none; color:var(--lux-cream);
  font-size:var(--lux-fs-small); line-height:1.3; letter-spacing:-.015em;
}
html[data-publication="true"] #detailDialog:has(.lux-detail) .detail-top::after { content:none; }
html[data-publication="true"] #detailDialog:has(.lux-detail) .detail-top :is(a, button) {
  display:inline-flex; align-items:center; min-height:44px; padding:0; border:0; background:none; color:var(--lux-cream);
  font:inherit; text-decoration:none; letter-spacing:inherit;
}
html[data-publication="true"] #detailDialog:has(.lux-detail) .detail-top nav { display:flex; flex-wrap:wrap; align-items:center; gap:0 24px; }

/* ── Root ──────────────────────────────────────────────────────────────────────────────────────────────────────────── */
#detailDialog .lux-detail {
  position:relative; display:block; margin:0; padding:0; background:var(--lux-ground); color:var(--lux-cream);
  font-size:var(--lux-fs-small); font-weight:400; line-height:var(--lux-lh-small); letter-spacing:-.015em;
}
/* catalog-experience.css `.lv-product button{font:inherit}` (0,1,1) outweighs the (0,1,0) role primitives on buttons. */
#detailDialog .lux-detail :is(button, a).lux-small { font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); letter-spacing:-.015em; }
#detailDialog .lux-detail :is(h2, h3, h4, p, figure, dl, dd) { margin:0; }
#detailDialog .lux-detail #detailTitle {
  margin:0; font-size:var(--lux-fs-lead); line-height:1.04; letter-spacing:-.004em; font-weight:400; color:var(--lux-cream);
  white-space:nowrap;
}
/* The app focuses the heading (tabindex −1) when a route opens; it is not a control, so it carries no ring. */
#detailDialog .lux-detail #detailTitle:focus { outline:none; box-shadow:none; }
/* Sentence case of an all-caps data category: on an inner inline-block, because ::first-letter does not reach past the
 * paren's generated "(" in Chromium or WebKit (the primitive alone rendered "(louvered roof system)"). */
#detailDialog .lux-detail .lux-sentence { display:inline-block; text-transform:lowercase; }
#detailDialog .lux-detail .lux-sentence::first-letter { text-transform:uppercase; }

/* ── Cards (GRAMMAR §8.17 card 0, §8.10 view cards): flow is the default ───────────────────────────────────────────── */
#detailDialog .lux-detail .lux-card {
  --lux-lane:40px; /* the bottom cluster's centreline above the card bottom: the Close pill's centre (100dvh − 48) */
  position:relative; box-sizing:border-box; height:calc(100svh - 16px); margin:8px; overflow:hidden; isolation:isolate;
  border-radius:var(--radius); background:var(--lux-panel); color:var(--lux-cream);
}
#detailDialog .lux-detail .lux-card-media { position:absolute; inset:0; overflow:hidden; border-radius:inherit; }
#detailDialog .lux-detail .lux-card-img {
  position:absolute; inset:0; display:block; width:100%; height:100%; max-width:none; max-height:none;
  object-fit:cover; object-position:var(--lux-pos, 50% 50%); transform-origin:50% 50%;
}
/* Functional scrims (GRAMMAR §2): under the text that sits on the photograph, and only there. */
#detailDialog .lux-detail .lux-card-media::after {
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:var(--lux-scrim-bottom);
}
/* View titles sit on skies: the top scrim is laid twice (the measured VENTO "Light & air" title reached 2.71:1 over one). */
#detailDialog .lux-detail .lux-card--view .lux-card-media::after { background:var(--lux-scrim-top), var(--lux-scrim-top), var(--lux-scrim-bottom); }
#detailDialog .lux-detail .lux-card--product .lux-card-media::before {
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:var(--lux-scrim-left);
  opacity:0; transition:opacity .5s var(--lux-ease-ui);
}
#detailDialog .lux-detail .lux-card--product[data-sheet="collapsed"] .lux-card-media::before { opacity:1; }
/* The stack's dim (the outgoing card, written by stack()) paints over the whole card, the sheet's dim only over the photo. */
#detailDialog .lux-detail .lux-dim {
  position:absolute; inset:0; z-index:9; pointer-events:none; background:var(--lux-ground); opacity:0; border-radius:inherit;
}
#detailDialog .lux-detail .lux-sheet-dim {
  position:absolute; inset:0; z-index:3; pointer-events:none; background:var(--lux-dim); opacity:1;
  transition:opacity .3s var(--lux-ease-fill);
}
#detailDialog .lux-detail .lux-card--product[data-sheet="collapsed"] .lux-sheet-dim { opacity:0; }

/* Bottom cluster: the Details disc, the caption beside it and the provenance line, on one line with the Close pill. */
#detailDialog .lux-detail .lux-sheet-toggle {
  position:absolute; z-index:7; left:calc(30 * var(--lux-unit)); bottom:calc(var(--lux-lane) - 22px);
}
/* + when the sheet is collapsed, × when it is open; the grow tweens the same variable (GRAMMAR §8.2). */
#detailDialog .lux-detail .lux-sheet-toggle[aria-expanded="true"] { --lux-disc-turn:135deg; }
/* Above the .58 sheet dim (z 3), like the provenance line: under it the 13.5 px caption rendered at 3.1–3.9:1 (C-WP4-R2-03). */
#detailDialog .lux-detail .lux-card-caption {
  position:absolute; z-index:4; left:calc(30 * var(--lux-unit) + 56px); bottom:var(--lux-lane); transform:translateY(50%);
  max-width:calc(640 * var(--lux-unit)); color:var(--lux-cream); text-wrap:balance;
}
#detailDialog .lux-detail .lux-card-media > .lux-provenance {
  position:absolute; z-index:4; right:calc(var(--lux-edge) - 8px); bottom:var(--lux-lane); transform:translateY(50%);
  max-width:calc(50% - 90px); color:var(--lux-cream); text-align:right; text-wrap:balance;
}
/* The presentational name of a collapsed card: VELOX's name box (x = --lux-edge, `name` role, vertically centred). */
#detailDialog .lux-detail .lux-card-name {
  position:absolute; z-index:5; left:calc(var(--lux-edge) - 8px); top:50%; transform:translateY(-50%); margin:0;
  font-size:var(--lux-fs-name); line-height:.93; letter-spacing:-.055em; color:var(--lux-cream); white-space:nowrap;
  opacity:0; pointer-events:none; transition:opacity .5s var(--lux-ease-ui);
}
#detailDialog .lux-detail .lux-card--product[data-sheet="collapsed"] .lux-card-name { opacity:1; }

/* ── The Details sheet (GRAMMAR §8.7): R3 R-D1 at 1440×900, grown from the disc ────────────────────────────────────── */
#detailDialog .lux-detail .lux-sheet {
  position:absolute; z-index:6; left:calc(30 * var(--lux-unit)); bottom:calc(var(--lux-lane) + 34px);
  box-sizing:border-box; width:max(360px, calc(537 * var(--lux-unit))); height:min(82dvh, calc(100% - var(--lux-lane) - 42px));
  display:flex; flex-direction:column; justify-content:space-between; gap:calc(20 * var(--lux-unit));
  padding:calc(40 * var(--lux-unit)) calc(40 * var(--lux-unit)) calc(20 * var(--lux-unit));
  border-radius:var(--radius); background:var(--lux-panel); color:var(--lux-cream);
  overflow-y:auto; overscroll-behavior:contain; scrollbar-width:none;
}
#detailDialog .lux-detail .lux-sheet::-webkit-scrollbar { display:none; }
/* ASAŞ sheets carry 0–6 short rows, so a fixed 82dvh panel left most of them a tall empty slab (61 % empty on REFD77).
 * They size to their content instead, keeping the reference's empty band (≈ 28 % of the panel), capped at the 82dvh
 * panel: --lux-body-h is the body's own height, written by luxBind (a ResizeObserver, no layout read); without it
 * (publication, no JS) the panel keeps 82dvh (C-WP4-R1-08). */
@media (min-width:701px) {
  #detailDialog .lux-detail--supplier .lux-sheet {
    height:min(82dvh, calc(100% - var(--lux-lane) - 42px), calc((var(--lux-body-h, 100dvh) + 60 * var(--lux-unit) + max(48px, 90 * var(--lux-unit))) / .72));
  }
}
#detailDialog .lux-detail .lux-sheet[data-state="collapsed"] { visibility:hidden; }
/* the gap is guaranteed: a long nowrap title (MICROTENSE at 1440) keeps 24 px from the thumbnail */
#detailDialog .lux-detail .lux-sheet-head { display:flex; justify-content:space-between; align-items:flex-start; gap:max(24px, calc(30 * var(--lux-unit))); }
/* The heading takes the room the thumbnail leaves (basis 0, grow 1) and never gets narrower than its nowrap title (the flex
 * item's automatic minimum), so a long paren wraps inside it; the thumbnail or tile keeps its size and gives way only to a
 * title that does not fit beside it (MICROTENSE at 1440). A heading that could not shrink pushed the ASAŞ tile and its
 * label out of the panel on long modelNames ("Outward Opening Joinery System with Insect Screen") (C-WP4-R2-01). */
#detailDialog .lux-detail .lux-sheet-heading { flex:1 1 0%; }
#detailDialog .lux-detail .lux-sheet-heading .lux-paren { display:block; width:fit-content; margin-top:2px; color:var(--lux-cream); }
#detailDialog .lux-detail .lux-sheet-heading .lux-paren--sentence { display:inline-block; }
#detailDialog .lux-detail .lux-sheet-thumb {
  flex:0 1 calc(161 * var(--lux-unit)); display:block; width:calc(161 * var(--lux-unit)); min-width:64px; height:calc(82 * var(--lux-unit)); max-width:none;
  border-radius:var(--lux-r-nested); object-fit:cover; background:var(--lux-ground);
}
/* ASAŞ: the supplier product visual on its cream tile, labelled (OD-10; V2 M3). The column is as wide as the wider of the
 * 161su tile and its one-line label, so the label lies inside the column and the panel; it wraps only if a title ever
 * squeezes the column (C-WP4-R2-01). */
#detailDialog .lux-detail .lux-sheet-tile { flex:0 1 auto; min-width:64px; display:flex; flex-direction:column; align-items:flex-end; }
#detailDialog .lux-detail .lux-tile { display:block; overflow:hidden; box-sizing:border-box; width:calc(161 * var(--lux-unit)); max-width:100%; border-radius:var(--lux-r-nested); background:#f4efe7; }
#detailDialog .lux-detail .lux-sheet-tile .lux-sheet-thumb {
  width:100%; min-width:0; box-sizing:border-box; padding:6%; border-radius:0; background:none; object-fit:contain; mix-blend-mode:multiply;
}
#detailDialog .lux-detail .lux-tile-label { margin-top:6px; color:var(--lux-taupe); text-align:right; }
#detailDialog .lux-detail .lux-sheet-caption { display:none; }
#detailDialog .lux-detail .lux-sheet-sentence { margin:calc(30 * var(--lux-unit)) 0 calc(16 * var(--lux-unit)); color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-sheet-head + .lux-rows,
#detailDialog .lux-detail .lux-sheet-head + .lux-sheet-note { margin-top:calc(30 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-sheet-note { margin-top:calc(14 * var(--lux-unit)); color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-rows { margin:0; }
#detailDialog .lux-detail .lux-rows dd { margin:0; }
#detailDialog .lux-detail .lux-sheet-cta { margin-top:calc(20 * var(--lux-unit)); color:var(--lux-cream); cursor:pointer; }
/* The sheet's CTA keeps its 44 px target through an invisible hit extension instead of the L1 padding, so the panel's
 * empty band is measured from the text (O3 G8 calibration had no padding on the CTA). */
#detailDialog .lux-detail .lux-sheet .lux-sheet-cta { --lux-link-pad:0px; padding:0; }
#detailDialog .lux-detail .lux-sheet .lux-sheet-cta::before {
  content:""; position:absolute; left:0; right:0; top:50%; height:44px; transform:translateY(-50%); background:transparent;
}
/* The request link reads as the second line of "Technical PDF on request"; after the ASAŞ qualifier the CTA keeps a
 * 10u step (the full 20u would take ASW34's empty band under B12 #2's 20 % at 1440 — measured 19.3 %). */
#detailDialog .lux-detail .lux-sheet-note + .lux-sheet-cta { margin-top:calc(10 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-sheet-note--pdf + .lux-sheet-cta { margin-top:0; }
/* The black bottom bar (GRAMMAR §8.7; R3 §2.1 Cost pill): "Catalog" ∣ "Pages 5–7 ↗". */
#detailDialog .lux-detail .lux-bar {
  --lux-focus-r:999px;
  flex:none; display:flex; align-items:center; justify-content:space-between; gap:16px; box-sizing:border-box;
  width:calc(100% + 40 * var(--lux-unit)); height:max(48px, calc(90 * var(--lux-unit))); margin:0 calc(-20 * var(--lux-unit));
  padding:0 calc(25 * var(--lux-unit)); border:0; border-radius:999px; background:var(--lux-ground); color:var(--lux-cream);
  font:inherit; font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); letter-spacing:-.015em; text-align:left;
  text-decoration:none; cursor:pointer;
}
#detailDialog .lux-detail .lux-bar-label { color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-bar-value { color:var(--lux-cream); text-align:right; transition:color .3s var(--lux-ease-ui); }

/* ── The stack (GRAMMAR §8.10): stacked only under [data-lux-live], written by stack() once its trigger exists ─────── */
#detailDialog .lux-detail .lux-stack[data-lux-live] { height:calc(100svh * (1 + 1.3 * (var(--lux-n) - 1))); }
#detailDialog .lux-detail .lux-stack[data-lux-live] > .lux-stack-stage {
  position:sticky; top:0; height:100svh; overflow:clip; perspective:1400px;
}
#detailDialog .lux-detail .lux-stack[data-lux-live] > .lux-stack-stage > .lux-card {
  position:absolute; inset:8px; height:auto; margin:0; transform-origin:50% 100%; will-change:transform;
}

/* View cards: title top-left, couplet bottom-left, chips bottom-right (the set shown). */
#detailDialog .lux-detail .lux-view-top {
  position:absolute; z-index:2; left:calc(var(--lux-edge) - 8px); right:calc(var(--lux-edge) - 8px); top:calc(50 * var(--lux-unit));
  max-width:calc(900 * var(--lux-unit));
}
#detailDialog .lux-detail .lux-view-top { display:flex; flex-wrap:wrap; align-items:baseline; column-gap:12px; }
#detailDialog .lux-detail .lux-view-top .lux-title { text-wrap:balance; }
#detailDialog .lux-detail .lux-view-text {
  position:absolute; z-index:2; left:calc(var(--lux-edge) - 8px); bottom:var(--lux-lane); transform:translateY(50%);
  max-width:calc(640 * var(--lux-unit)); color:var(--lux-cream); text-wrap:balance;
}
#detailDialog .lux-detail .lux-card-media > .lux-chips {
  position:absolute; z-index:2; right:calc(var(--lux-edge) - 8px); bottom:var(--lux-lane); transform:translateY(50%);
}
#detailDialog .lux-detail .lux-chips > * { font-size:var(--lux-fs-small); }

/* VENTO "Light & air": the covered louvers wipe up over the open ones while the stack scrubs ([data-wipe], written by
 * luxBind). Static (phone, reduced motion, publication, the flow fallback): the two states as two plain images side by
 * side, each its own rounded panel on the ground, never one photo cut by a line (C-WP4-R1-07). */
#detailDialog .lux-detail .lux-wipe { position:absolute; inset:0; overflow:hidden; }
#detailDialog .lux-detail .lux-wipe-line {
  position:absolute; z-index:2; left:0; right:0; top:50%; height:1px; background:rgba(244,239,231,.72); pointer-events:none;
}
#detailDialog .lux-detail .lux-card--view:not([data-wipe]) .lux-wipe-line { display:none; }
#detailDialog .lux-detail .lux-card--view:has(.lux-wipe):not([data-wipe]) { background:transparent; }
#detailDialog .lux-detail .lux-card--view:not([data-wipe]) .lux-card-media > .lux-card-img:has(+ .lux-wipe) {
  right:auto; width:calc(50% - 4px); border-radius:var(--radius);
}
#detailDialog .lux-detail .lux-card--view:not([data-wipe]) .lux-wipe { left:calc(50% + 4px); border-radius:var(--radius); }
/* The state label sits 12 px after the view title on its baseline (GRAMMAR §8.6), where the doubled top scrim is densest. */
#detailDialog .lux-detail .lux-wipe-state { display:grid; justify-items:start; margin:0; }
#detailDialog .lux-detail .lux-wipe-state > .lux-paren { grid-area:1 / 1; color:var(--lux-cream); transition:opacity .5s var(--lux-ease-quad-out); }
/* Static (no scroll scrub): the image shows both states, half and half, and both labels are named. */
#detailDialog .lux-detail .lux-card:not([data-wipe]) .lux-wipe-state { display:flex; gap:12px; }
#detailDialog .lux-detail .lux-card[data-wipe="open"] [data-wipe-label="covered"],
#detailDialog .lux-detail .lux-card[data-wipe="covered"] [data-wipe-label="open"] { opacity:0; }

/* ── End block: the close and the route footer, at least one viewport tall, so the last viewport holds only the couplet,
 * the band and the footer (the reference's closing viewport, ref journey/desktop/frames/078_y16895.jpg); any extra room
 * opens above the couplet. It was shorter than a viewport, and the resting frame showed a 26–60 px sliver of card 0 with
 * the Details disc cut in half (C-WP4-R2-05). ──────────────────────────────────────────────────────────────────────── */
#detailDialog .lux-detail .lux-end { display:flex; flex-direction:column; justify-content:flex-end; min-height:100dvh; }

/* ── Close: the couplet and the marquee into the enquiry (GRAMMAR §8.9, as a <button>) ─────────────────────────────── */
#detailDialog .lux-detail .lux-close { padding-top:calc(240 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-close-couplet { margin:0 var(--lux-edge); color:var(--lux-cream); }
#detailDialog .lux-detail .lux-marquee {
  --lux-focus-r:var(--radius); --lux-focus-offset:-6px;
  display:flex; align-items:center; box-sizing:border-box; width:100%; height:max(110px, calc(270 * var(--lux-unit)));
  margin:0; padding:0; border:0; background:none; color:var(--lux-cream); font:inherit; text-align:left; overflow:hidden; cursor:pointer;
  transition:color .5s var(--lux-ease-quad-out);
}
#detailDialog .lux-detail .lux-marquee-track { display:flex; flex:none; white-space:nowrap; }
#detailDialog .lux-detail .lux-marquee-group { display:flex; flex:none; }
#detailDialog .lux-detail .lux-marquee-group > span {
  font-size:var(--lux-fs-mega); line-height:.94; letter-spacing:-.06em; font-weight:400;
}
/* No JS, reduced motion, publication, or a route band without a dialog-aware marquee primitive (C-WP4-R2-02): one static
 * copy at the text edge that wraps when the width cannot hold the phrase (the phone's 17vw "Let’s make room—"), never a
 * cropped fragment; the band grows with it. */
#detailDialog .lux-detail .lux-marquee:not([data-lux-live]) { height:auto; min-height:max(110px, calc(270 * var(--lux-unit))); padding-block:20px; }
#detailDialog .lux-detail .lux-marquee:not([data-lux-live]) .lux-marquee-track { padding:0 var(--lux-edge); }
#detailDialog .lux-detail .lux-marquee:not([data-lux-live]) :is(.lux-marquee-track, .lux-marquee-group) { flex:1 1 auto; min-width:0; white-space:normal; }
#detailDialog .lux-detail .lux-marquee:not([data-lux-live]) [aria-hidden="true"] { display:none; }

/* ── Route footer: every truth block of the legacy page, set quietly (B10 "Close + footer CSS") ─────────────────────── */
#detailDialog .lux-detail .lux-route-footer {
  display:grid; grid-template-columns:minmax(0, calc(745 * var(--lux-unit))) minmax(0, 1fr); gap:calc(80 * var(--lux-unit));
  padding:calc(140 * var(--lux-unit)) var(--lux-edge) max(120px, calc(140 * var(--lux-unit)));
}
/* A multi-sentence intro reads at the footer paragraph's `sub` role in taupe (GRAMMAR §8.15; ref frame 082_y17718), not at
 * `lead`: six 36 px taupe lines outweighed the 36 px heading under them (C-WP4-R2-10, a taste call for WP6 to confirm). */
#detailDialog .lux-detail .lux-route-intro { margin-bottom:calc(80 * var(--lux-unit)); color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-route-title { color:var(--lux-cream); }
#detailDialog .lux-detail .lux-route-kicker { color:var(--lux-cream); }
#detailDialog .lux-detail .lux-route-note { max-width:calc(640 * var(--lux-unit)); margin-top:calc(30 * var(--lux-unit)); color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-route-kicker + .lux-route-note { margin-top:6px; }
#detailDialog .lux-detail .lux-route-main > :first-child { margin-top:0; }
#detailDialog .lux-detail .lux-route-resources { margin-top:calc(60 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-route-resources + .lux-route-note { margin-top:calc(40 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure { border:0; border-top:1px solid var(--lux-hair); }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure:last-child { border-bottom:1px solid var(--lux-hair); }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary {
  display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:64px; padding:10px 0; list-style:none; cursor:pointer;
  font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); letter-spacing:-.015em; color:var(--lux-cream);
}
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary::-webkit-details-marker { display:none; }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary > :is(.lv-line-icon, .lv-summary-meta) { display:none; }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary > .lv-summary-toggle {
  display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; border-radius:50%; background:var(--lux-cream); color:var(--ink);
  transition:background-color .2s var(--ease);
}
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary > .lv-summary-toggle svg { width:16px; height:16px; stroke-width:2; }
#detailDialog .lux-detail .lux-route-resources .lv-disclosure summary:focus-visible { border-radius:0; outline-offset:3px; }
#detailDialog .lux-detail .lux-route-resources .lv-facts {
  display:grid; grid-template-columns:1fr; gap:calc(24 * var(--lux-unit)); padding:4px 0 calc(34 * var(--lux-unit));
}
#detailDialog .lux-detail .lux-route-resources .lv-facts h4 {
  margin:0 0 4px; font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); letter-spacing:-.015em; font-weight:400; color:var(--lux-cream);
}
#detailDialog .lux-detail .lux-route-resources :is(.lv-facts p, .lv-disclosure-copy) {
  max-width:calc(640 * var(--lux-unit)); font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); letter-spacing:-.015em; color:var(--lux-taupe);
}
#detailDialog .lux-detail .lux-route-resources .lv-fact-source {
  display:block; margin-top:6px; font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); color:var(--lux-taupe);
}
#detailDialog .lux-detail .lux-route-resources .lv-source-link {
  display:inline-flex; align-items:center; min-height:44px; margin:0 0 calc(24 * var(--lux-unit)); color:var(--lux-cream);
  font-size:var(--lux-fs-small); line-height:var(--lux-lh-small); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px;
}
#detailDialog .lux-detail .lux-route-nav { display:flex; flex-direction:column; align-items:flex-end; }
#detailDialog .lux-detail .lux-route-link {
  display:inline-flex; align-items:center; gap:.28em; min-height:44px; color:var(--lux-cream); text-decoration:none; text-align:right;
  font-size:var(--lux-fs-sub); line-height:1.12; letter-spacing:-.006em;
}

/* Materials: the two split halves (R3 §2.9), exactly two article.pj-material-card (AT-09). */
/* A type-led breath after the perspectives' photo run (the section break, GRAMMAR §4), so the last perspective has left
 * the viewport before the two material images arrive (≤ 2 images per viewport, B10 check 3). */
#detailDialog .lux-detail .lux-materials-block { padding:var(--lux-break) 0 0; }
#detailDialog .lux-detail .lux-materials-head {
  display:grid; grid-template-columns:1fr 1fr; align-items:end; gap:calc(40 * var(--lux-unit));
  padding:0 var(--lux-edge) calc(120 * var(--lux-unit));
}
#detailDialog .lux-detail .lux-materials-head .lux-title { grid-row:1; grid-column:1; }
#detailDialog .lux-detail .lux-materials-lead { grid-row:1; grid-column:2; color:var(--lux-taupe); } /* `sub`, as the footer intro (R2-10) */
#detailDialog .lux-detail .lux-materials { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:0 8px; }
/* One content inset for everything in the card (GRAMMAR §4 "card content inset"): the card sits in the 8 px frame, so a
 * padding of edge − 8 px puts the title, the copy, the link, the image and its caption on the text edge (C-WP4-R1-03). */
#detailDialog .lux-detail .lux-materials > article {
  display:flex; flex-direction:column; box-sizing:border-box; height:calc(100svh - 16px); min-height:560px;
  padding:calc(50 * var(--lux-unit)) calc(var(--lux-edge) - 8px) calc(var(--lux-edge) - 8px); border-radius:var(--radius); background:var(--lux-panel);
}
#detailDialog .lux-detail .lux-materials > article > .lux-material-text { margin-top:14px; max-width:calc(560 * var(--lux-unit)); color:var(--lux-taupe); }
/* the L1 link keeps the primitive's 44 px hit padding, so its bar sits at the text's foot (C-WP4-R1-02) */
#detailDialog .lux-detail .lux-materials > article > .lux-link { align-self:flex-start; margin-top:0; color:var(--lux-cream); }
#detailDialog .lux-detail .lux-materials > article > figure { display:flex; flex-direction:column; flex:1; min-height:0; margin-top:calc(30 * var(--lux-unit)); }
#detailDialog .lux-detail .lux-material-img {
  flex:1; min-height:0; display:block; width:100%; height:100%; max-width:none; object-fit:cover; border-radius:var(--lux-r-nested);
}
#detailDialog .lux-detail .lux-materials > article figcaption { margin-top:12px; color:var(--lux-taupe); }
#detailDialog .lux-detail .lux-materials-note { max-width:calc(640 * var(--lux-unit)); margin:calc(30 * var(--lux-unit)) var(--lux-edge) 0; color:var(--lux-taupe); }

/* ── Hover (fine pointer) ──────────────────────────────────────────────────────────────────────────────────────────── */
@media (hover:hover) and (pointer:fine) {
  #detailDialog .lux-detail .lux-bar:hover .lux-bar-value { color:var(--lux-taupe); }
  #detailDialog .lux-detail .lux-marquee:hover { color:var(--lux-taupe); }
  #detailDialog .lux-detail .lux-route-resources .lv-disclosure summary:hover > .lv-summary-toggle { background:var(--lux-pill-hover); }
}
#detailDialog .lux-detail .lux-marquee:focus-visible { color:var(--lux-taupe); }

/* ── Density step and short landscape (GRAMMAR §1.2) ──────────────────────────────────────────────────────────────── */
@media (max-width:1000px) {
  #detailDialog .lux-detail .lux-route-footer { grid-template-columns:1fr; }
  /* one text edge for the single column: every row and its wrapped lines start at the left (C-WP4-R2-04) */
  #detailDialog .lux-detail .lux-route-nav { align-items:flex-start; }
  #detailDialog .lux-detail .lux-route-link { text-align:left; }
  #detailDialog .lux-detail .lux-materials { grid-template-columns:1fr; }
  #detailDialog .lux-detail .lux-materials-head { grid-template-columns:1fr; }
  #detailDialog .lux-detail .lux-materials-head .lux-title, #detailDialog .lux-detail .lux-materials-lead { grid-row:auto; grid-column:auto; }
}

/* ── Phone ≤700 (GRAMMAR §8.7 phone: the sheet in flow under a 160 px image; fixed px, no u) ─────────────────────── */
@media (max-width:700px) {
  #detailDialog .lux-detail .lux-card { border-radius:28px; }
  /* card 0: the Details sheet in flow; the bottom padding keeps the bar clear of the Close pill lane */
  #detailDialog .lux-detail .lux-card--product {
    display:flex; flex-direction:column; height:auto; min-height:calc(100svh - 16px); padding:20px 20px 76px; overflow:visible;
  }
  #detailDialog .lux-detail .lux-card--product .lux-card-media { position:relative; inset:auto; flex:none; height:160px; border-radius:23px; }
  #detailDialog .lux-detail .lux-card--product .lux-card-img { object-position:var(--lux-pos-m, 50% 50%); }
  #detailDialog .lux-detail .lux-card--product :is(.lux-card-caption, .lux-sheet-dim, .lux-card-name, .lux-sheet-toggle),
  #detailDialog .lux-detail .lux-card--product .lux-card-media::before { display:none; }
  #detailDialog .lux-detail .lux-card-media > .lux-provenance {
    left:14px; right:14px; bottom:12px; max-width:none; transform:none; text-align:left; font-size:14px;
  }
  #detailDialog .lux-detail .lux-sheet {
    position:static; flex:1; width:auto; height:auto; padding:0; gap:24px; border-radius:0; background:none; overflow:visible;
    visibility:visible;
  }
  #detailDialog .lux-detail .lux-sheet-head { margin-top:28px; align-items:flex-start; }
  #detailDialog .lux-detail:not(.lux-detail--supplier) .lux-sheet-head > .lux-sheet-thumb { display:none; }
  #detailDialog .lux-detail:not(.lux-detail--supplier) .lux-sheet-heading {
    display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:4px 12px; width:100%;
  }
  #detailDialog .lux-detail:not(.lux-detail--supplier) .lux-sheet-heading .lux-paren { margin-top:0; text-align:right; }
  /* ASAŞ: the code and its full modelName take the width; the labelled supplier visual gets its own row under them, the
   * label under the tile as on desktop (C-WP4-R2-01: at 320 the side-by-side header ran 16–121 px out of the dialog) */
  #detailDialog .lux-detail--supplier .lux-sheet-head { flex-direction:column; align-items:stretch; gap:16px; }
  #detailDialog .lux-detail--supplier .lux-sheet-heading { flex:none; }
  #detailDialog .lux-detail .lux-sheet-tile { flex:none; min-width:0; align-items:flex-start; }
  #detailDialog .lux-detail .lux-tile { width:120px; }
  #detailDialog .lux-detail .lux-sheet-tile .lux-sheet-thumb { height:62px; }
  #detailDialog .lux-detail .lux-tile-label { text-align:left; }
  #detailDialog .lux-detail .lux-sheet-caption { display:block; margin-top:14px; color:var(--lux-cream); }
  #detailDialog .lux-detail .lux-sheet-sentence { margin:20px 0 12px; }
  #detailDialog .lux-detail .lux-sheet-cta { margin-top:18px; }
  #detailDialog .lux-detail .lux-bar { width:100%; height:72px; margin:0; padding:0 24px; border-radius:24px; }
  /* written by luxBind when the bar would sit in the Close pill's lane on the first viewport (C-WP4-R2-11) */
  #detailDialog .lux-detail .lux-card--product .lux-bar { margin-top:var(--lux-bar-drop, 0px); }
  /* views in flow: image 1.4:1, chips over its bottom-left, text below on the ground (R3 §2.6 phone) */
  #detailDialog .lux-detail .lux-card--view { height:auto; margin:8px 8px 50px; overflow:visible; border-radius:0; background:none; }
  #detailDialog .lux-detail .lux-card--view .lux-card-media { position:relative; inset:auto; aspect-ratio:1.4; border-radius:28px; }
  #detailDialog .lux-detail .lux-card--view .lux-card-media::after { background:var(--lux-scrim-bottom); }
  #detailDialog .lux-detail .lux-card--view .lux-card-media > .lux-chips { left:12px; right:auto; bottom:12px; transform:none; }
  #detailDialog .lux-detail .lux-view-top { position:static; max-width:none; padding:20px 16px 0; }
  #detailDialog .lux-detail .lux-view-text { position:static; max-width:none; margin:8px 16px 0; transform:none; color:var(--lux-taupe); }
  #detailDialog .lux-detail .lux-card--view .lux-dim { display:none; }
  /* the VENTO pair on the phone: open above, covered below, two 1.4:1 panels */
  #detailDialog .lux-detail .lux-card--view:has(.lux-wipe):not([data-wipe]) .lux-card-media { aspect-ratio:auto; height:calc((100vw - 16px) / 1.4 * 2 + 8px); }
  #detailDialog .lux-detail .lux-card--view:not([data-wipe]) .lux-card-media > .lux-card-img:has(+ .lux-wipe) { width:100%; bottom:auto; height:calc(50% - 4px); border-radius:28px; }
  #detailDialog .lux-detail .lux-card--view:not([data-wipe]) .lux-wipe { left:0; top:calc(50% + 4px); border-radius:28px; }
  #detailDialog .lux-detail .lux-close { padding-top:120px; }
  #detailDialog .lux-detail .lux-marquee, #detailDialog .lux-detail .lux-marquee:not([data-lux-live]) { height:auto; min-height:110px; }
  #detailDialog .lux-detail .lux-route-footer { gap:56px; padding:80px 24px 120px; }
  #detailDialog .lux-detail .lux-route-intro { margin-bottom:48px; }
  #detailDialog .lux-detail .lux-route-link { font-size:20px; }
  #detailDialog .lux-detail .lux-materials-block { padding-top:80px; }
  #detailDialog .lux-detail .lux-materials-head { padding:0 24px 40px; gap:20px; }
  #detailDialog .lux-detail .lux-materials > article { height:auto; min-height:0; padding:30px 16px 16px; border-radius:28px; }
  #detailDialog .lux-detail .lux-materials > article > figure { flex:none; }
  #detailDialog .lux-detail .lux-material-img { height:auto; aspect-ratio:1.4; border-radius:23px; }
  #detailDialog .lux-detail .lux-materials-note { margin:24px 24px 0; max-width:none; }
  /* the phone tree never reads the unit (GRAMMAR §1.2): every u-based width and gap gets its px value */
  #detailDialog .lux-detail .lux-sheet-head { gap:12px; }
  #detailDialog .lux-detail .lux-sheet-note { margin-top:12px; }
  #detailDialog .lux-detail .lux-sheet-head + :is(.lux-rows, .lux-sheet-note) { margin-top:24px; }
  #detailDialog .lux-detail .lux-wipe-state { margin:0; }
  #detailDialog .lux-detail :is(.lux-route-note, .lux-view-text, .lux-materials-lead, .lux-route-resources .lv-facts p, .lux-route-resources .lv-disclosure-copy) { max-width:none; }
  #detailDialog .lux-detail .lux-route-note { margin-top:16px; }
  #detailDialog .lux-detail .lux-route-resources { margin-top:32px; }
  #detailDialog .lux-detail .lux-route-resources + .lux-route-note { margin-top:24px; }
  #detailDialog .lux-detail .lux-route-resources .lv-facts { gap:18px; padding:4px 0 24px; }
  #detailDialog .lux-detail .lux-route-resources .lv-source-link { margin-bottom:18px; }
  #detailDialog .lux-detail .lux-materials > article > figure { margin-top:24px; }
  #detailDialog .lux-detail .lux-materials > article > .lux-material-text { max-width:none; }
}
@media (max-height:540px) and (orientation:landscape) {
  #detailDialog .lux-detail .lux-card { height:auto; min-height:calc(100svh - 16px); }
  #detailDialog .lux-detail .lux-card--product { display:flex; flex-direction:column; justify-content:flex-end; padding:20px; }
  #detailDialog .lux-detail .lux-sheet { position:relative; left:auto; bottom:auto; height:auto; max-height:none; margin-top:40vh; }
  #detailDialog .lux-detail .lux-card-caption, #detailDialog .lux-detail .lux-sheet-toggle { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  #detailDialog .lux-detail * { scroll-behavior:auto; }
}
