/* Précision: preview-only, following the selected v3 shell / v4 variant 03. */
:root[data-concord-ui="precision"] {
  --paper:#fff; --ink:#14263d; --secondary:#526276; --action:#224fbb;
  --action-dark:#17367a; --action-soft:#edf2fc; --line:#d5dce6; --surface:#f4f6f9;
  --blue:var(--action); --bg:var(--paper); --muted:var(--secondary);
  --font-display:Arial,Helvetica,sans-serif; --font-body:Arial,Helvetica,sans-serif;
  --indigo-700:var(--action); --indigo-100:var(--action-soft); --radius-md:6px;
  --radius-lg:8px; --shadow-sm:none; --ink-800:var(--ink); --ink-500:var(--secondary);
  color-scheme:light; font-size:16px;
}
[data-concord-ui] body { color:var(--ink); background:var(--paper); font-family:var(--font-body); line-height:1.5; }
[data-concord-ui] button,[data-concord-ui] input,[data-concord-ui] select,[data-concord-ui] textarea { font:inherit; }
[data-concord-ui] button,[data-concord-ui] a { -webkit-tap-highlight-color:transparent; }
[data-concord-ui] a { color:var(--action); }
[data-concord-ui] :focus-visible { outline:3px solid #2058ce; outline-offset:3px; }
[data-concord-ui] button { cursor:pointer; }
.v2-icon { width:22px; height:22px; flex:none; vertical-align:middle; }
.v2-skip { position:fixed; inset-block-start:-100px; inset-inline-start:16px; background:white; padding:12px; z-index:1000; }
.v2-skip:focus { inset-block-start:10px; }
/* The header keeps its height and the wordmark takes the room inside it (#994):
   76 px tall, 10 px of vertical padding instead of 14, which leaves a 56 px band
   — enough for a 176 px lockup (≈52 px tall at the artwork's own ratio) and still
   above the 44 px minimum every control in this row is built to. */
[data-concord-ui] body > header { min-height:76px; background:#fff!important; color:var(--ink)!important;
  border-bottom:1px solid var(--line); padding:calc(10px + env(safe-area-inset-top)) 24px 10px; gap:12px; box-shadow:none; }
[data-concord-ui] .v2-logo { background:none; padding:0; border:0; border-radius:0; display:flex; align-items:center; margin-inline-end:auto; }
[data-concord-ui] .v2-logo a { display:flex; align-items:center; min-height:44px; }
/* `!important` on the two box properties, and it is load-bearing: the shell's own
   `#brand img { height:1rem }` and `#brand.mark img { width:.87rem }` are ID rules
   this class cannot outrank, so the mark was being drawn 54 px wide inside a
   140 px box that `object-fit:contain` letterboxed — which is the whole of « the
   wordmark reads smaller than the header warrants » (#994). */
[data-concord-ui] .v2-logo img { width:176px!important; height:auto!important;
  max-height:56px; filter:none; object-fit:contain; }
[data-concord-ui] header #title,[data-concord-ui] header #back { display:none!important; }
[data-concord-ui] #langChip { color:var(--ink)!important; background:white!important; border:1px solid var(--line); border-radius:6px;
  min-height:44px; padding:8px; font-size:14px; max-width:130px; }
[data-concord-ui] header #env { color:var(--secondary)!important; background:var(--surface)!important; font-size:12px; }
.v2-pro { color:var(--ink)!important; display:flex; gap:6px; align-items:center; justify-content:center; min-width:44px; min-height:44px; text-decoration:none; font-size:14px; }
[data-concord-ui] #main { flex:1; overflow:auto; background:white; scroll-padding:20px; min-height:0; }
[data-concord-ui] .page { max-width:1040px; margin:0 auto; padding:28px 32px; gap:20px; width:100%; }
[data-concord-ui] body > nav { background:#fff; border-top:1px solid var(--line); padding:6px max(12px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)); gap:8px; flex:none; justify-content:center; }
[data-concord-ui] body > nav a { display:flex; flex-direction:row; align-items:center; justify-content:center; gap:10px; border:0; border-radius:6px;
  color:var(--secondary); font-size:16px; min-height:48px; padding:10px 22px; flex:1; max-width:260px; text-decoration:none; }
[data-concord-ui] body > nav a.on { color:var(--action-dark); background:var(--action-soft); font-weight:600; }
[data-concord-ui] body > nav a span { font-size:inherit; }
[data-concord-ui] #law { display:none; }
[data-concord-ui] #fbLink { color:var(--secondary); min-height:28px; font-size:12px; }
.v2-advisory { width:calc(100% - 64px); max-width:976px; margin:0 auto; padding:10px 0 18px;
  color:var(--secondary); font-size:12px; line-height:1.5; flex:none; }
.v2-advisory > summary { width:max-content; max-width:100%; min-height:36px; display:flex; align-items:center;
  cursor:pointer; list-style:none; }
.v2-advisory > summary::-webkit-details-marker { display:none; }
.v2-advisory > summary span { color:var(--action); margin-inline-start:4px; }
.v2-advisory-body { border-inline-start:2px solid var(--line); margin-top:4px; padding:8px 12px; max-width:720px; }
.v2-advisory-body #fbLink { display:block; margin-top:6px; padding:4px 0; }
.v2-advisory-foot { display:flex; flex-wrap:wrap; align-items:center; gap:4px 16px; margin-top:6px; }
.v2-advisory-foot #fbLink { margin-top:0; }
.v2-version { font-size:12px; color:var(--secondary); font-variant-numeric:tabular-nums; }
[data-concord-ui] .btn { border-radius:6px; min-height:44px; box-shadow:none; background:var(--action); border-color:var(--action); }
[data-concord-ui] .btn.sec { background:white; color:var(--action); border:1px solid var(--line); }
[data-concord-ui] input,[data-concord-ui] textarea { background:white; color:var(--ink); border:1px solid var(--line); border-radius:6px; }
[data-concord-ui] .card { box-shadow:none; border:1px solid var(--line); border-radius:6px; background:#fff; }
.v2-kicker { color:var(--secondary); font-size:12px; font-weight:600; letter-spacing:.12em; margin-bottom:12px; }
.v2-loading { color:var(--secondary); padding-block:64px!important; }
.v2-error { align-items:flex-start; max-width:620px!important; padding-block:64px!important; }
.v2-error h1 { font-size:28px; letter-spacing:-.025em; }
.v2-error .btn { width:auto; padding:10px 24px; text-decoration:none; }
/* Back link only (owner, 2026-09-12): the FDS lives in « Documents », and the row lost its 8 px margin. */
.v2-product-toolbar { display:flex; align-items:center; font-size:14px; }
.v2-product-toolbar a { display:inline-flex; gap:8px; align-items:center; min-height:44px; text-decoration:none; background:none; border:0; padding:0; }
.v2-product-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start; }
.v2-overview,.v2-reference { min-width:0; }
/* The reference heads the identity block rather than a row of its own (#966):
   it is what the packshot aligns its top with, and the alignment is then the
   grid's rather than a magic negative margin's. */
.v2-product-meta { display:flex; align-items:center; gap:12px; margin:0 0 12px; flex-wrap:wrap; }
.v2-ref { border-inline-start:4px solid var(--product-colour); padding-inline-start:8px; color:var(--secondary); font-size:14px; letter-spacing:.02em; }
/* « Concentré » (#1111), in the reference row rather than over the name: it is
   an attribute of the product, read with the ref, not a second title. Same
   shape as the dosage badge below — one pill vocabulary on this page. */
.v2-badge { padding:3px 8px; border-radius:3px; background:#fff; border:1px solid #c5d2e9;
  color:var(--action-dark); font-size:12px; font-weight:600; }
.v2-identity { display:grid; grid-template-columns:minmax(0,1fr) 112px; gap:20px; align-items:start; margin-bottom:24px; }
.v2-identity h1 { font-size:38px; line-height:1.1; letter-spacing:-.045em; color:var(--ink); font-weight:700; overflow-wrap:anywhere; margin:0 0 8px; }
.v2-designation { font-size:16px; line-height:1.45; margin-bottom:5px; }
.v2-collection { font-size:14px; color:var(--secondary); }
.v2-packshot { display:flex; align-items:flex-start; justify-content:center; }
/* Big enough to identify the bidon on a shelf (#966): it spans the identity
   block, from the reference to about the collection line. `contain` keeps the
   aspect ratio of both the photo and the drawn fallback, so neither is
   stretched into the taller box. */
.v2-packshot img,.v2-packshot svg { width:112px!important; max-width:112px!important; height:156px!important; max-height:156px!important; object-fit:contain; }
.v2-targets { font-size:16px; line-height:1.65; margin:0 0 22px; }
.v2-targets strong { font-weight:600; }
/* Points forts — a list that wraps, never pills: a claim is a sentence (#966). */
.v2-claims { margin:0 0 22px; }
.v2-claims h2 { font-size:14px; color:var(--secondary); font-weight:600; margin:0 0 10px; }
.v2-claims ul { list-style:none; padding:0; margin:0; display:grid; gap:10px; }
.v2-claims li { display:flex; align-items:flex-start; gap:10px; font-size:16px; line-height:1.5; min-width:0; }
.v2-claims li .v2-icon { width:18px; height:18px; color:var(--action); margin-top:3px; }
.v2-claims li span { min-width:0; overflow-wrap:break-word; }
.v2-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); background:var(--action-soft); border-radius:6px; margin:0 0 20px; padding:6px; }
.v2-fact { display:flex; align-items:flex-start; gap:10px; padding:14px 10px; min-width:0; color:var(--action-dark); }
.v2-fact .v2-icon { width:27px; height:27px; margin-top:20px; }
.v2-fact:nth-child(even) { border-inline-start:1px solid #c9d5ed; }
.v2-fact:nth-child(n+3) { border-block-start:1px solid #c9d5ed; }
.v2-fact span { display:block; font-size:12px; line-height:1.35; margin-bottom:5px; }
.v2-fact strong { display:block; font-size:16px; line-height:1.35; font-weight:600; overflow-wrap:break-word; }
.v2-fact small { display:block; font-size:14px; margin-top:5px; line-height:1.4; }
.v2-dosage { background:var(--action-soft); border-radius:6px; padding:18px; margin-bottom:20px; overflow-x:auto; }
.v2-dosage .eyebrow { color:var(--action-dark); margin-top:0; line-height:1.5; }
.v2-dose-badge { display:inline-block; margin-inline-start:8px; padding:3px 8px; border-radius:3px;
  background:#fff; border:1px solid #c5d2e9; color:var(--action-dark); font-size:12px; font-weight:600; }
.v2-dosage table { width:100%; font-size:14px; border-collapse:collapse; }
.v2-dosage td,.v2-dosage th { padding:8px; border:1px solid #c5d2e9; white-space:normal; }
.v2-dosage .dose-mode { margin-bottom:10px; }
.v2-use-constraints { border:1px solid var(--line); background:var(--surface); border-radius:6px; padding:14px; margin:20px 0; }
.v2-use-constraints h2 { font-size:14px; color:var(--secondary); font-weight:600; margin:0 0 10px; }
.v2-use-constraints h3 { font-size:14px; margin:14px 0 8px; }
.v2-use-constraints .kv { display:grid; grid-template-columns:minmax(100px,1fr) minmax(0,1.25fr); gap:7px 14px; margin:8px 0; font-size:14px; }
.v2-use-constraints .kv dt { color:var(--secondary); }
.v2-use-constraints .kv dd { overflow-wrap:anywhere; }
.v2-use-constraints table { width:100%; border-collapse:collapse; font-size:14px; }
.v2-use-constraints td,.v2-use-constraints th { padding:7px; border:1px solid var(--line); }
.v2-use-constraints .v2-list { font-size:14px; margin-bottom:8px; }
.v2-precautions { border-inline-start:2px solid #b52630; padding:0 0 0 14px; margin:24px 0 12px; }
[dir="rtl"] .v2-precautions { padding:0 14px 0 0; }
.v2-precautions h2 { font-size:14px; color:var(--secondary); font-weight:600; margin:0 0 7px; }
.v2-precautions p { font-size:14px; line-height:1.6; margin:7px 0; }
.v2-language,.v2-missing { padding:10px 12px; border:1px solid var(--line); color:var(--secondary); font-size:14px; border-radius:4px; margin:0 0 18px; }
.v2-withdrawn { padding:14px; border-inline-start:3px solid #b52630; background:#fff4f3; font-size:16px; margin-bottom:20px; }
.v2-section { border:0; border-top:1px solid var(--line); margin:0; border-radius:0; background:#fff; }
.v2-section:last-child { border-bottom:1px solid var(--line); }
.v2-section > summary { list-style:none; display:flex; align-items:center; gap:12px; min-height:76px; padding:16px 0; cursor:pointer; font-size:16px; }
.v2-section > summary::-webkit-details-marker { display:none; }
.v2-section > summary > .v2-icon { color:var(--action); }
.v2-section > summary > span:not(.v2-plus) { flex:1; min-width:0; }
.v2-section-label { display:block; font-size:16px; line-height:1.45; color:var(--ink); }
.v2-section summary small { display:block; margin-top:4px; color:var(--secondary); font-size:14px; font-weight:400; line-height:1.5; }
.v2-plus { color:var(--action); font-size:22px; flex:none; width:22px; text-align:center; }
.v2-section[open] > summary .v2-plus { font-size:0; }
.v2-section[open] > summary .v2-plus::before { content:'−'; font-size:22px; }
.v2-section-body { padding:0 0 22px; font-size:16px; overflow-wrap:anywhere; }
.v2-section-body h3 { font-size:14px; font-weight:600; margin:18px 0 10px; }
.v2-section-body .eyebrow { margin-top:22px; font-size:12px; line-height:1.5; }
.v2-list { padding-inline-start:20px; display:grid; gap:8px; margin:10px 0 22px; }
.v2-section-body .steps { padding-inline-start:28px; list-style:decimal; display:grid; gap:16px; font-size:16px; }
.v2-section-body .steps li { padding-inline-start:5px; line-height:1.6; }
.v2-section-body .steps li::marker { color:var(--action); font-weight:600; }
.v2-section-body .steps li::before { content:none; }
.v2-section-body .kv { display:grid; grid-template-columns:minmax(90px,1fr) minmax(0,1.2fr); gap:8px 16px; font-size:14px; margin:12px 0; }
.v2-section-body .kv dt { color:var(--secondary); }
.v2-section-body table { border-collapse:collapse; width:100%; font-size:14px; }
.v2-section-body td,.v2-section-body th { border:1px solid var(--line); padding:7px; }
/* Closed: the pictograms, and only the pictograms (#966). The captions are
   hidden rather than dropped from the markup so the artwork keeps the accessible
   name its `alt` and `title` carry — the meaning is spelled out in the open
   state, where the signal word and the statements own their one place. */
.v2-hazard-summary { flex:none; display:flex; align-items:center; gap:8px; max-width:132px; flex-wrap:wrap; }
.v2-hazard-summary .ghs-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:0; }
.v2-hazard-summary .ghs { width:auto; }
.v2-hazard-summary .ghs img,.v2-hazard-summary .ghs svg { width:36px; height:36px; }
.v2-hazard-summary .ghs small { display:none; }
.v2-hazard-full .phr { margin:9px 0; font-size:14px; line-height:1.6; }
.v2-hazard-full .danger-label { border:1px solid var(--line); padding:14px; border-radius:4px; }
.v2-hazard-full .dl-head .ghs { width:auto; max-width:104px; }
.v2-hazard-full .dl-head .ghs img,.v2-hazard-full .dl-head .ghs svg { width:44px; height:44px; }
.v2-hazard-full .dl-head .ghs small { font-size:12px; line-height:1.35; }
.v2-hazard-full .dl-langs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:12px; }
.v2-hazard-full .dl-lang { padding:8px 10px; min-height:44px; border:1px solid var(--line); background:white; color:var(--secondary); border-radius:4px; }
.v2-hazard-full .dl-lang.on { color:var(--action-dark); background:var(--action-soft); }
.v2-hazard-full .dl-note { font-size:12px; color:var(--secondary); margin:10px 0; }
.v2-doc { display:flex!important; align-items:center; gap:12px; padding:12px 0!important; min-height:52px; border:0!important; border-bottom:1px solid var(--line)!important;
  background:none!important; border-radius:0!important; font-size:14px!important; text-decoration:none; }
.v2-doc span { flex:1; }
/* #1094: every language but the page's, behind one door. The summary sits on the
   14 px step and at the same 44 px tap height as the rows it opens; the rows
   themselves are `.v2-doc` either side of the fold, so opening it changes nothing
   but what is on screen. */
.v2-doc-langs > summary { list-style:none; display:flex; align-items:center; gap:12px; min-height:44px;
  padding:12px 0; cursor:pointer; font-size:14px; color:var(--action-dark);
  border-bottom:1px solid var(--line); }
.v2-doc-langs > summary::-webkit-details-marker { display:none; }
.v2-doc-langs > summary::after { content:'+'; margin-inline-start:auto; color:var(--action); font-size:16px; }
.v2-doc-langs[open] > summary::after { content:'−'; }
/* In the document flow, after the practical overview and before the reference
   accordions (#966). It was sticky on mobile, between an independently scrolling
   page, the advisory disclosure and the bottom navigation — three things that
   squeezed and clipped it. A full-width in-flow action needs none of them. */
.v2-product-action { display:flex; margin:24px 0 4px; }
.v2-product-action button { border:1px solid #b8c9e9; background:var(--action-soft); color:var(--action-dark);
  display:flex; align-items:center; gap:12px; width:100%; min-height:56px; padding:12px 16px; font-size:16px; border-radius:6px; }
.v2-product-action button span { flex:1; min-width:0; text-align:start; }
.v2-product-action button:hover { background:#e0e9fa; }
.v2-status-note { margin:20px 0 0; color:var(--secondary); font-size:12px; line-height:1.5; }
.v2-reference .pro { margin-top:16px; font-size:14px; }
.v2-reference .pro > summary { min-height:44px; cursor:pointer; }
.v2-expert { max-width:820px; margin:0 auto; height:100%; display:flex; flex-direction:column; padding:24px 32px 8px; }
.v2-expert-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex:none; padding-bottom:12px; }
.v2-expert-toolbar > span { display:flex; align-items:center; flex-wrap:wrap; gap:10px; font-size:16px; }
.v2-ai { border:1px solid var(--line); color:var(--secondary); border-radius:3px; font-size:12px; padding:3px 6px; font-weight:400; }
.v2-new-chat { border:0; background:white; color:var(--action); min-width:44px; min-height:44px; display:grid; place-items:center; }
/* `display:grid` above outranks the UA's `[hidden] { display:none }`, so the fresh
   landing needs this line to really drop the button out of the flow (#995). */
.v2-new-chat[hidden] { display:none; }
.v2-expert .chatlog { padding:16px 0; max-width:none; width:100%; gap:20px; }
.v2-expert.v2-new { height:auto; min-height:100%; padding-top:34px; }
.v2-new .chatlog { flex:none!important; overflow:visible!important; padding:20px 0 30px; }
.v2-welcome h1 { font-size:clamp(34px,4.3vw,52px); letter-spacing:-.045em; line-height:1.15; max-width:640px; margin:0; font-weight:700; }
.v2-welcome h1 span { color:var(--action); }
.v2-expert .composer { border:1px solid #b8c9e9; border-radius:7px; background:white; display:grid;
  grid-template-columns:auto minmax(0,1fr) 48px; align-items:center; padding:8px; gap:10px; margin:0; flex:none; }
.v2-expert .composer textarea { border:0; border-radius:0; box-shadow:none; background:white; resize:vertical; padding:10px 0; width:100%; font-size:16px; min-height:44px; }
.v2-expert .composer .cam { background:white; color:var(--secondary); border:0; border-radius:4px; width:auto; height:44px; padding:0 7px; display:flex; align-items:center; gap:8px; }
.v2-expert:not(.v2-new) .cam span { display:none; }
.v2-expert .composer .send { display:grid; place-items:center; background:var(--action); color:white; border:0; border-radius:5px; width:48px; height:48px; }
.v2-new .composer { grid-template-columns:minmax(0,1fr) 48px; padding:14px; }
.v2-new .composer textarea { grid-column:1/-1; grid-row:1; min-height:96px; padding:2px 2px 10px; }
.v2-new .composer .cam { grid-column:1; grid-row:2; justify-self:start; font-size:14px; padding:0; }
.v2-new .composer .send { grid-column:2; grid-row:2; }
.v2-expert .draft { margin:0 0 8px; border-radius:6px; background:var(--action-soft); padding:10px; color:var(--secondary); flex:none; }
.v2-expert .draft[hidden] { display:none; }
.v2-examples { padding:22px 0 0; }
.v2-prompt-buttons { display:flex; gap:10px; flex-wrap:wrap; }
.v2-prompt-buttons button { background:white; color:var(--secondary); border:1px solid var(--line); border-radius:5px; min-height:44px; padding:9px 14px; font-size:14px; }
.v2-prompt-buttons button:hover { background:var(--action-soft); color:var(--action); }
.v2-catalogue-link { display:flex; align-items:center; gap:12px; text-decoration:none; border-top:1px solid var(--line); margin-top:34px; padding:18px 0; font-size:16px; }
.v2-catalogue-link span { flex:1; }
.v2-context { display:flex; align-items:center; justify-content:space-between; padding:8px 12px; background:var(--action-soft); border-radius:5px; gap:10px; font-size:14px; flex:none; }
.v2-context[hidden] { display:none; }
.v2-context a { display:flex; gap:8px; align-items:center; text-decoration:none; }
.v2-context button { width:44px; min-height:44px; border:0; background:none; color:var(--secondary); font-size:22px; }
.v2-history { color:var(--secondary); font-size:14px; padding:12px 0; flex:none; }
.v2-history > summary { min-height:36px; cursor:pointer; }
.v2-history-items { display:flex; flex-direction:column; gap:2px; max-height:180px; overflow:auto; }
.v2-history-items a { display:block; padding:10px; border-bottom:1px solid var(--line); text-decoration:none; }
.v2-expert .msg { max-width:100%; font-size:16px; line-height:1.65; border-radius:6px; padding:14px 18px; }
.v2-expert .msg.user { background:var(--surface); color:var(--ink); border:1px solid var(--line); align-self:flex-end; max-width:90%; }
.v2-expert .msg.bot { background:white; border:0; color:var(--ink); padding-inline:0; }
.v2-expert .status { font-size:14px; color:var(--secondary); }
.v2-catalogue-head h1 { font-size:34px; line-height:1.2; letter-spacing:-.035em; }
[data-concord-ui] [data-view="products"] #q { min-height:48px; font-size:16px; }
[data-concord-ui] .gammes { gap:7px; }
[data-concord-ui] .gammes button { min-height:40px; padding:8px 12px; border:1px solid var(--line); border-radius:5px; font-size:14px; background:white; color:var(--secondary); }
[data-concord-ui] .gammes button.on { background:var(--action-soft); border-color:#aebfe5; color:var(--action-dark); }
[data-concord-ui] .item { border:1px solid var(--line); border-radius:5px; box-shadow:none; padding:14px 16px; }
[data-concord-ui] .item .t { font-size:16px; color:var(--ink); }
[data-concord-ui] .item .s { font-size:14px; color:var(--secondary); }
/* Old-shell text v2 never restated: it sizes in em/rem off the old ramp, so it fell between the v2
   steps (12 / 14 / 16 px, owner-approved 2026-09-12). Pinned by test_v2_text_sits_on_the_type_scale. */
[data-concord-ui] .item .ref,[data-concord-ui] .item .ecobadge { font-size:12px; }
/* The ⚖ toggle is absolute (32 px, 10 px in): the old shell reserved room with .prod-row's
   padding-right, which the v2 .item padding above overrides — titles and descriptions ran under it. */
[data-concord-ui] .item.prod-row { padding-inline-end:60px; }
[data-concord-ui] .v2-dosage th,[data-concord-ui] .v2-dosage .dose-r { font-size:12px; }
[data-concord-ui] .dl-head .signal,[data-concord-ui] .pack-grid .pack,[data-concord-ui] ul.notes li { font-size:14px; }
/* The catalogue's two pull-downs (#962) share ONE row at every width (#969, owner
   review 2026-09-10): two equal columns with a fixed gap, down to 320 px where each
   control is ~140 px wide. A selected text that does not fit is ellipsized by the
   control — the accessible name is the `aria-label` the script sets, never the
   visible text — and the 44 px height keeps the touch target whatever the width.
   `minmax(0, 1fr)` is what stops a long option from widening its column past the
   page: a select's intrinsic minimum is its widest option, not zero. The row holds
   nothing else in the preview — the éco toggle and the certification chips are
   off (`certificationFilter: false`) — so there is no third control to wrap. */
[data-concord-ui] .pfilters { font-size:14px; padding:12px 0; display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; align-items:center; }
[data-concord-ui] .pfilters select { min-height:44px; width:100%; max-width:100%; min-width:0; margin:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
[data-concord-ui] .pfilters button { margin:0; min-height:44px; }
[data-concord-ui] .gammes:empty { display:none; }
[data-concord-ui] .cmpdock { bottom:110px; }
[data-concord-ui] #sheet,[data-concord-ui] #docview { background:#fff; }
[data-concord-ui] #sheet .head,[data-concord-ui] #docview .bar { color:var(--ink); background:white; border-bottom:1px solid var(--line); }
/* #228's in-app document viewer keeps its white-on-blue pills from the old shell. On the white bar
   above, ✕ and « Navigateur ↗ » were white on white: the installed app showed no way out. */
[data-concord-ui] #docview .bar a,[data-concord-ui] #docview .bar button { color:var(--action-dark); background:var(--action-soft);
  min-height:44px; padding-inline:14px; font-size:14px; }
[data-concord-ui] #docview .bar .x { width:44px; height:44px; padding:0; color:var(--ink); background:var(--surface); font-size:18px; }
@media(min-width:1100px) {
  [data-concord-ui] body > header { padding-inline:max(32px,calc((100vw - 1100px)/2)); }
  .v2-product { padding-block-start:24px!important; }
  .v2-reference { margin-top:4px; }
}
@media(max-width:740px) {
  [data-concord-ui] body > header { min-height:66px; padding:calc(8px + env(safe-area-inset-top)) 18px 8px; gap:8px; }
  /* The mark is the brand on the smallest screen too (#966): 156 px here (#994),
     and the language selector and the Pro lock still fit the row without
     wrapping. 120 px is what remains below 350 px. The 50 px band the padding
     leaves takes the 46 px lockup and every 44 px control unchanged. */
  [data-concord-ui] .v2-logo img { width:156px!important; max-height:50px; }
  [data-concord-ui] #langChip { max-width:103px; font-size:14px; }
  [data-concord-ui] header #env { display:none; }
  [data-concord-ui] .page { padding:18px 20px 24px; gap:16px; }
  [data-concord-ui] .v2-product { padding-block-start:10px; }
  .v2-advisory { width:calc(100% - 40px); padding-bottom:14px; }
  .v2-pro span { display:none; }
  .v2-product-grid { grid-template-columns:1fr; gap:24px; }
  .v2-identity h1 { font-size:34px; }
  .v2-identity { margin-bottom:18px; }
  .v2-targets { font-size:16px; margin-bottom:18px; }
  .v2-precautions { margin:18px 0 0; }
  .v2-use-constraints .kv { grid-template-columns:1fr; gap:2px; }
  .v2-use-constraints .kv dd { margin:0 0 8px; }
  .v2-product-action { margin:20px 0 0; }
  .v2-product-action button { font-size:16px; }
  .v2-section > summary { min-height:72px; }
  .v2-expert { padding:18px 20px 0; }
  .v2-expert.v2-new { padding-top:24px; }
  .v2-new .chatlog { padding:20px 0 28px; }
  .v2-welcome h1 { font-size:36px; }
  .v2-expert-toolbar > span { font-size:14px; }
  .v2-new-chat { width:44px; min-width:44px; }
  .v2-prompt-buttons { gap:7px; }
  .v2-prompt-buttons button { font-size:14px; padding:8px 10px; }
  .v2-catalogue-link { margin-top:24px; }
  .v2-expert .msg { font-size:16px; }
  .v2-catalogue-head h1 { font-size:29px; }
}
@media(max-width:350px) {
  [data-concord-ui] .page { padding-inline:16px; }
  [data-concord-ui] body > header { padding-inline:14px; }
  [data-concord-ui] .v2-logo img { width:120px!important; }
  /* 120 + 96 + 44 and two 8 px gaps inside 320 − 28 of padding: the row fits with
     room to spare, and the selector keeps its 44 px target and its ellipsis. */
  [data-concord-ui] #langChip { max-width:96px; }
  .v2-expert { padding-inline:16px; }
  .v2-welcome h1 { font-size:32px; }
  .v2-facts { grid-template-columns:1fr; }
  .v2-fact:nth-child(even) { border-inline-start:0; }
  .v2-fact + .v2-fact { border-block-start:1px solid #c9d5ed; }
  .v2-fact { padding:12px; }
  .v2-fact .v2-icon { margin-top:7px; }
  /* Narrower, never hidden: the name needs the width, the bidon still has to be
     recognisable (#966). */
  .v2-identity { grid-template-columns:minmax(0,1fr) 84px; gap:14px; }
  .v2-packshot img,.v2-packshot svg { width:84px!important; max-width:84px!important; height:118px!important; max-height:118px!important; }
  .v2-claims li { font-size:16px; }
}
@media(prefers-reduced-motion:reduce) { [data-concord-ui] * { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
@media print {
  [data-concord-ui] body,[data-concord-ui] #main { height:auto!important; overflow:visible!important; display:block; }
  [data-concord-ui] body > header,[data-concord-ui] body > nav,[data-concord-ui] #law,.v2-advisory,.v2-product-toolbar,.v2-product-action,.v2-skip { display:none!important; }
  .v2-product-grid { display:block; }
  .v2-reference { margin-top:24px; }
  .v2-section { break-inside:auto; }
  .v2-section-body { display:block!important; }
  .v2-plus,.v2-hazard-full .dl-langs { display:none; }
  .v2-section > summary { break-after:avoid; min-height:44px; }
  .v2-section-body .steps li { break-inside:avoid; }
  .v2-doc { color:#14263d; }
}
