:root {
  color-scheme: light;
  --ink: #24272a;
  --muted: #646b72;
  --paper: #fafbfc;
  --line: #cdd1d5;
  --orange: #f05a18;
  background: #e8ebee;
  color: var(--ink);
  font: 14px/1.5 "Bahnschrift", "Arial Narrow", sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; padding: 10px 12px 0; }
button, select, input { font: inherit; }
button, select { color: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }
.topbar {
  display: flex;
  align-items: center;
  gap: 17px;
  min-height: 48px;
  padding: 10px 24px;
  background: var(--paper);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-family: "Consolas", monospace;
  font-size: 16px;
}
.site-views { display: flex; align-items: center; gap: 8px; }
.site-views a { display: flex; align-items: center; justify-content: center; gap: 9px; min-height: 44px; padding: 9px 14px; border: 1px solid #929ba4; background: #eef1f4; text-decoration: none; font-size: 13px; letter-spacing: .08em; }
.site-views a svg { flex: 0 0 18px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.site-views a:hover { background: #fff0e6; border-color: #b33d0a; }
.site-views a[aria-current="page"] { background: #fff0e6; border-color: #b33d0a; color: #8f3107; }
.site-views a:active { background: #ffdfce; }
.site-name { display: inline-flex; flex: none; align-items: baseline; gap: 5px; text-transform: none; }
.brand-wordmark { display: block; width: 174px; height: auto; }
.site-domain { font-size: 13px; letter-spacing: .08em; color: var(--muted); }
.hatch { flex: 1; height: 13px; margin-left: 20px; border-block: 1px dashed var(--line); }
.explorer { display: grid; grid-template-columns: 222px minmax(0, 1fr); gap: 10px; margin-top: 10px; }
.sidebar { background: var(--paper); padding: 20px 22px 16px; display: flex; flex-direction: column; }
.identity { padding-bottom: 12px; }
h1 { text-transform: uppercase; margin: 0; font-size: 25px; font-weight: 400; line-height: 1.1; letter-spacing: -.025em; }
h1 strong { display: block; font-size: 52px; font-weight: 400; letter-spacing: -.06em; }
.identity p { font-family: "Consolas", monospace; font-size: 16px; margin: 12px 0 0; }
.identity .market { margin-top: 4px; font-size: 13px; color: var(--muted); }
.categories { padding-block: 8px; border-block: 1px dashed var(--line); display: grid; gap: 4px; }
.categories button { border: 0; background: transparent; display: flex; align-items: center; gap: 12px; padding: 9px 0; min-height: 44px; text-transform: uppercase; text-align: left; }
.categories button span { width: 17px; height: 17px; border: 1px solid #edaa8c; display: grid; place-items: center; }
.categories button[aria-pressed="true"] span { background: var(--orange); border-color: var(--orange); }
.categories button[aria-pressed="true"] span::after { content: "✓"; color: white; font-size: 13px; }
.views { display: flex; gap: 6px; flex-wrap: wrap; margin-top: auto; padding-top: 16px; }
.views button { flex: 1; min-height: 44px; border: 0; border-bottom: 2px solid transparent; padding: 6px 2px; background: transparent; text-transform: uppercase; font-size: 13px; }
.views button[aria-pressed="true"] { border-color: var(--orange); color: #aa3500; }
.viewer { min-width: 0; display: flex; flex-direction: column; background: var(--paper); }
.studio {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  flex: 1;
  min-height: clamp(400px, 57vh, 730px);
  background: #e0e4e8;
}
.studio::before { content: ""; position: absolute; z-index: 0; pointer-events: none; inset: 24px; border: 1px solid #bdc4cb; opacity: .48; }
.studio img, .studio canvas { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.studio canvas { visibility: hidden; }
.studio[data-ready] img { visibility: hidden; }
.studio[data-ready] canvas { visibility: visible; cursor: grab; touch-action: pan-y; }
.studio canvas:active { cursor: grabbing; }
.studio[data-ready] canvas[data-picking]:not(:active) { cursor: pointer; }
.studio[data-ready] .view-snapshot { visibility: visible; pointer-events: none; object-fit: fill; background: #e0e4e8; }
.scene-label { position: absolute; z-index: 2; left: 27px; top: 26px; text-transform: uppercase; letter-spacing: .12em; font: 12px/1.8 "Consolas", monospace; color: var(--muted); pointer-events: none; }
.viewer-status { position: absolute; z-index: 0; bottom: 36px; left: 40px; right: 40px; text-align: center; font-size: 12px; color: #5d6772; pointer-events: none; margin: 0; }
.model-loading { display: none; position: absolute; z-index: 3; bottom: 26px; left: 27px; width: min(340px, calc(100% - 54px)); padding: 16px 18px; background: var(--paper); border: 1px solid var(--line); }
html[data-js] .studio:not([data-ready]) .model-loading { display: block; }
html[data-js] .studio:has(.model-loading:not([hidden])) .viewer-status { visibility: hidden; }
.model-loading strong { display: block; font-size: 17px; font-weight: 500; }
.loading-details { display: flex; justify-content: space-between; gap: 12px; margin-top: 8px; color: var(--muted); font-size: 13px; }
#loading-percent { font-family: "Consolas", monospace; font-variant-numeric: tabular-nums; white-space: nowrap; }
.model-loading progress { display: block; width: 100%; height: 5px; margin-top: 12px; accent-color: var(--orange); }
.loading-error, .loading-retry { display: none; }
.model-loading[data-state="error"] .loading-details, .model-loading[data-state="error"] progress { display: none; }
.model-loading[data-state="error"] .loading-error { display: block; margin: 8px 0 0; font-size: 13px; color: var(--muted); }
.model-loading[data-state="error"] .loading-retry { display: block; margin-top: 12px; min-height: 44px; padding: 7px 12px; background: transparent; border: 1px solid var(--line); }
.part-card { position: absolute; z-index: 3; pointer-events: none; width: max-content; max-width: min(220px, 65%); padding: 8px 11px; background: var(--paper); border: 1px solid var(--line); font-size: 13px; }
.part-card strong { display: block; text-transform: uppercase; font-weight: 500; letter-spacing: .03em; }
.part-card span { display: block; margin-top: 3px; color: #6a422c; font-size: 12px; }
.part-card span:empty { display: none; }
.part-leader { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: hidden; }
.part-leader path { stroke: var(--orange); stroke-width: 1.2; fill: none; }
.part-leader circle { fill: var(--orange); stroke: var(--paper); stroke-width: 1.5; }
.console { grid-column: 1 / -1; background: var(--paper); padding: 0 18px 14px; }
.console:has(.part-info[hidden]) { display: none; }
.control-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; min-height: 66px; padding: 8px 16px; border-top: 1px solid var(--line); }
.explosion { display: flex; flex: 1; align-items: center; gap: 24px; text-transform: uppercase; letter-spacing: .1em; }
.explosion input { min-width: 0; flex: 1; height: 44px; accent-color: var(--orange); cursor: ew-resize; }
.viewer .explosion { flex-basis: 300px; gap: 14px; }
.viewer .zoom-controls { margin-left: auto; }
.zoom-controls { display: flex; gap: 8px; align-items: center; padding-left: 22px; border-left: 1px solid var(--line); }
.zoom-controls span { margin-right: 10px; text-transform: uppercase; letter-spacing: .1em; }
.zoom-controls button { width: 42px; min-height: 42px; border: 1px solid #8c949b; background: transparent; font-size: 25px; line-height: 1; }
button:disabled { opacity: .4; cursor: default; }
.part-info { display: grid; grid-template-columns: 1.2fr 1fr; margin-top: 10px; min-height: 176px; }
.catalogue { display: flex; gap: 8px; overflow-x: auto; padding-right: 16px; align-items: stretch; }
.catalogue button { flex: 1 0 95px; max-width: 180px; border: 1px solid transparent; background: transparent; padding: 6px; min-height: 150px; text-transform: uppercase; font-size: 13px; letter-spacing: .06em; }
.catalogue img { display: block; width: 100%; height: 112px; object-fit: contain; margin-bottom: 8px; }
.catalogue button[aria-pressed="true"] { border-color: var(--orange); background: #fff4ed; }
.inspector { display: flex; align-items: center; gap: 12px; border-left: 1px solid var(--line); padding-left: 18px; min-width: 0; }
.inspector-copy { min-width: 0; flex: 1; }
.inspector select { font-size: 20px; text-transform: uppercase; font-weight: 500; border: 0; border-left: 3px solid var(--orange); background: transparent; width: 100%; padding: 8px 6px; min-height: 44px; }
.inspector p { color: #4d555d; margin: 12px 0 4px; max-width: 39ch; font-size: 15px; }
.part-info[data-overview] { grid-template-columns: 1fr; }
.part-info[data-overview] .inspector { border: 0; padding: 0; }
.part-info[data-overview] .inspector p { max-width: none; }
.part-info[data-overview] #vehicle-specs { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.part-info[data-overview] #vehicle-specs div { display: block; }
.part-info[data-overview] #vehicle-specs dd { margin-top: 4px; font-size: 15px; }
#vehicle-specs { margin: 10px 0; display: grid; gap: 7px; font-size: 13px; }
#vehicle-specs div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0 10px; }
#vehicle-specs dt { color: var(--muted); }
#vehicle-specs dd { margin: 0; }
.inspector-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.inspector-action { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 9px 12px; border: 1px solid #929ba4; background: #eef1f4; color: var(--ink); font-size: 13px; line-height: 1.3; text-decoration: none; cursor: pointer; }
.inspector-action svg { flex: 0 0 16px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.inspector-action:hover, .inspector-action[aria-pressed="true"] { background: #fff0e6; border-color: #b33d0a; color: #8f3107; }
.inspector-action:active { background: #ffdfce; }
#engine-photo-dialog { width: min(1150px, 94vw); max-height: 94dvh; padding: 14px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); }
#engine-photo-dialog::backdrop { background: rgb(15 24 32 / 78%); }
.photo-heading { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 12px; }
.photo-heading h2 { margin: 0; font-size: 18px; font-weight: 500; }
.photo-heading button { min-height: 44px; padding: 5px 12px; border: 1px solid var(--line); background: transparent; }
#engine-photo-dialog img { display: block; width: 100%; height: auto; }
#engine-photo-dialog p { margin: 10px 0 0; font-size: 13px; color: var(--muted); }
.photo-pagination { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; }
.photo-pagination button { min-height: 44px; border: 1px solid var(--line); padding: 6px 12px; background: transparent; }
.photo-pagination span { font-family: "Consolas", monospace; font-variant-numeric: tabular-nums; white-space: nowrap; }
#engine-photo-dialog img { height: auto; max-height: calc(94dvh - 180px); object-fit: contain; background: #e8ebee; }
body:has(dialog[open]) { overflow: hidden; }
/* Select the initial view before the module graph has downloaded. These anchors
   also keep both views usable when JavaScript is unavailable. */
.photo-gallery { display: none; margin-top: 10px; padding: 20px 24px 14px; background: var(--paper); }
.photo-gallery:target, .photo-gallery:has(.photo-series:target) { display: block; }
html[data-initial-view="photos"] .photo-gallery:not([hidden]) { display: block; }
html[data-initial-view="photos"] main:has(> .photo-gallery:not([hidden])) > .explorer { display: none; }
main:has(> .photo-gallery:target:not([hidden]), > .photo-gallery:not([hidden]) .photo-series:target) > .explorer { display: none; }
/* After startup, the existing hidden attributes also support pushState links,
   which do not update :target. This works with previously cached JS modules. */
main:has(> .explorer[hidden]) > .photo-gallery { display: block; }
.gallery-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.gallery-heading h1 { margin: 0; font-size: 26px; font-weight: 400; line-height: 1.2; text-transform: none; letter-spacing: 0; }
.gallery-heading p { margin: 5px 0 0; font-size: 13px; color: var(--muted); }
.photo-filters { display: flex; flex-wrap: wrap; gap: 0 24px; }
.photo-filters a { display: flex; align-items: center; min-height: 44px; border-bottom: 2px solid transparent; text-decoration: none; white-space: nowrap; }
.photo-filters a[aria-current="true"] { border-color: var(--orange); }
.gallery-feature { margin: 0; }
.gallery-enlarge { display: flex; justify-content: center; align-items: center; position: relative; height: clamp(320px, 55vh, 660px); background: #e0e4e8; }
.gallery-enlarge img { display: block; width: 100%; height: 100%; object-fit: contain; }
.gallery-enlarge[data-photo="avant-campagne"] img { object-fit: cover; object-position: 50% 52%; }
.enlarge-label { position: absolute; bottom: 12px; right: 14px; padding: 7px 12px; color: var(--ink); background: var(--paper); font-size: 13px; }
.gallery-feature figcaption { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding-block: 12px; }
.gallery-feature strong { font-size: 17px; font-weight: 500; }
.gallery-feature figcaption div { display: flex; gap: 6px 20px; align-items: baseline; flex-wrap: wrap; }
#gallery-caption, #gallery-position { font-size: 13px; color: var(--muted); }
#gallery-position { font-family: "Consolas", monospace; font-variant-numeric: tabular-nums; white-space: nowrap; }
.photo-series { display: flex; gap: 10px; overflow-x: auto; padding: 2px 2px 8px; }
.photo-series a { flex: 0 0 142px; border: 1px solid transparent; padding: 4px; text-decoration: none; }
.photo-series a[aria-current="true"] { border-color: var(--orange); }
.photo-series img { display: block; width: 132px; height: 86px; object-fit: cover; }
.photo-series span { display: block; font-size: 12px; padding-top: 5px; }
.gallery-note { margin: 5px 0 0; color: var(--muted); font-size: 12px; }
.technical { --technical-line: #e3e6e9; display: none; margin-top: 10px; background: var(--paper); font-variant-numeric: tabular-nums; }
.technical:target, .technical:has(.technical-panel:target), html[data-initial-view="technique"] .technical:not([hidden]), html[data-view="technique"] .technical:not([hidden]) { display: block; }
html:not([data-view])[data-initial-view="technique"] main > .explorer, html:not([data-view]) main:has(> .technical:target, > .technical .technical-panel:target) > .explorer { display: none; }
.technical-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 24px; border-bottom: 1px solid var(--line); }
.technical-heading h1 { font-size: 28px; text-transform: none; letter-spacing: -.025em; }
.technical-heading p { margin: 8px 0 0; color: var(--muted); font-size: 14px; }
.technical-layout { display: grid; grid-template-columns: 222px minmax(0, 1fr); }
.technical-nav { padding: 18px 14px; border-right: 1px solid var(--line); align-self: start; display: grid; gap: 4px; }
.technical-nav a { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; padding: 9px 10px; border-left: 2px solid transparent; color: var(--ink); text-decoration: none; }
.technical-nav a span { color: var(--muted); font: 12px "Consolas", monospace; font-variant-numeric: tabular-nums; }
.technical-nav a:hover { background: #eef1f4; }
.technical-nav a[aria-current="page"] { border-color: var(--orange); background: #fff0e6; color: #8f3107; }
.technical-content { min-width: 0; padding: 22px 26px; }
.technical-panel { display: none; }
.technical-panel[data-tech-panel="recap"] { display: block; }
.technical:has(.technical-panel:target) .technical-panel { display: none; }
.technical:has(.technical-panel:target) .technical-panel:target, .technical[data-ready] .technical-panel:not([hidden]) { display: block; }
.technical-search { display: grid; grid-template-columns: auto minmax(160px, 330px) 1fr; align-items: center; gap: 12px; margin-bottom: 26px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.technical-search label { font-size: 13px; }
.technical-search input { width: 100%; min-height: 44px; padding: 8px 12px; color: var(--ink); background: var(--paper); border: 1px solid #929ba4; border-radius: 0; }
.technical-search p { margin: 0; color: var(--muted); font-size: 13px; justify-self: end; }
.technical h2 { margin: 0; font-size: 24px; line-height: 1.25; font-weight: 500; letter-spacing: -.02em; }
.technical-intro p, .technical-dossier-heading p { color: var(--muted); margin: 8px 0 0; }
.technical-highlights { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; margin: 24px 0 32px; }
.technical-highlights dt { color: var(--muted); font-size: 13px; }
.technical-highlights dd { margin: 7px 0 0; font-size: 22px; line-height: 1.4; font-variant-numeric: tabular-nums; }
.technical-index { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 26px; }
.technical-index > a { display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--line); padding: 18px 0; color: var(--ink); text-decoration: none; }
.technical-index h3 { margin: 0; font-size: 18px; font-weight: 500; }
.technical-index p { margin: 5px 0 0; font-size: 13px; color: var(--muted); }
.technical-index > a > span { font-size: 20px; }
.technical-index > a:hover h3 { color: #a4380b; }
.technical-complete { margin-top: 24px; border-block: 1px solid var(--line); }
.technical-complete:not([open]) > div { display: none; }
.technical-complete summary { min-height: 52px; padding: 14px 0; cursor: pointer; font-size: 16px; }
.technical-complete summary span { margin-left: 12px; color: var(--muted); font-size: 12px; }
.technical-summary-group { margin-top: 24px; }
.technical-dossier-heading { display: flex; align-items: center; justify-content: space-between; gap: 22px; min-height: 150px; margin-bottom: 26px; }
.technical-dossier-heading img { width: 180px; height: 140px; object-fit: contain; flex: none; }
.technical-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.technical:not([data-ready]) [data-open-curves], .technical[data-ready] .curve-fallback { display: none; }
.technical-group { margin: 24px 0 32px; }
.technical-group h3 { margin: 0 0 10px; font-size: 16px; font-weight: 500; }
.technical-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 14px; line-height: 1.5; }
.technical-table thead { color: var(--muted); }
.technical-table th, .technical-table td { padding: 12px 14px 12px 0; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); overflow-wrap: break-word; }
.technical-table thead th { font-size: 12px; font-weight: 400; }
.technical-table th:first-child { width: 30%; font-weight: 400; }
.technical-table th:nth-child(2) { width: 29%; }
.technical-table td:last-child { padding-right: 0; color: var(--muted); font-size: 13px; }
.technical-table .technical-value { font-weight: 500; font-size: 15px; font-variant-numeric: tabular-nums; }
.technical-table td small { display: block; margin-top: 4px; font-size: 12px; }
.technical-table td a { color: inherit; text-underline-offset: 3px; }
.technical-table [data-source="pending"] .technical-value { color: #9b3515; }
.technical-empty { margin: 24px 0; padding: 18px; border-left: 2px solid var(--orange); background: #fff0e6; }
.technical-footnote { margin-top: 26px; color: var(--muted); font-size: 13px; }
.technical-index > a, .technical-complete, .technical-group th, .technical-group td, .technical-nav, .technical-search, .technical-heading { border-color: var(--technical-line); }
.technical-nav a[aria-current="page"] { border-color: var(--orange); }
.technical:not([data-ready]):has(.technical-panel:target) .technical-nav a[aria-current="page"] { background: transparent; border-color: transparent; color: var(--ink); }
html:not([data-view]) body:has(.technical:target, .technical-panel:target) .site-views a[aria-current="page"] { background: #eef1f4; border-color: #929ba4; color: var(--ink); }
html:not([data-view]) body:has(.technical:target, .technical-panel:target) .site-views a[href="#technique"] { background: #fff0e6; border-color: #b33d0a; color: #8f3107; }
#overview-technical { margin-top: 14px; }
@media (max-width: 1100px) {
  .technical-search { grid-template-columns: auto minmax(140px, 1fr); }
  .technical-search p { grid-column: 1 / -1; justify-self: start; }
  .technical-highlights { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 800px) {
  .technical-layout { grid-template-columns: minmax(0, 1fr); }
  .technical-nav { display: flex; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line); padding: 10px 14px; gap: 6px; }
  .technical-nav a { white-space: nowrap; border-left: 0; border-bottom: 2px solid transparent; }
  .technical-nav a span { display: none; }
  .technical-content { padding: 22px; }
}
@media (max-width: 620px) {
  .topbar .site-views { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; width: 100%; }
  .topbar .site-views a { flex-direction: column; gap: 4px; padding: 8px 2px; font-size: 12px; line-height: 1.4; letter-spacing: 0; }
  .technical { margin-top: 8px; }
  .technical-heading { display: block; padding: 18px 14px; }
  .technical-heading h1 { font-size: 26px; }
  .technical-heading > a { margin-top: 14px; }
  .technical-content { padding: 18px 14px; }
  .technical-search { display: block; margin-bottom: 22px; }
  .technical-search input { margin-top: 6px; }
  .technical-search p { margin-top: 8px; }
  .technical-highlights { gap: 18px 14px; }
  .technical-highlights dd { font-size: 20px; }
  .technical-index { grid-template-columns: minmax(0, 1fr); }
  .technical-dossier-heading { align-items: flex-start; gap: 10px; min-height: 0; }
  .technical-dossier-heading img { width: 80px; height: 100px; }
  .technical h2 { font-size: 22px; }
  .technical-table, .technical-table tbody, .technical-table tr { display: block; }
  .technical-table thead { display: none; }
  .technical-table tr { padding: 13px 0; border-bottom: 1px solid var(--line); }
  .technical-table th:first-child, .technical-table td { display: block; padding: 0; border: 0; width: auto; }
  .technical-table th:first-child { color: var(--muted); font-size: 13px; }
  .technical-table .technical-value { margin-top: 4px; font-size: 16px; }
  .technical-table td:last-child { margin-top: 5px; }
}
#gallery-error, #photo-error { color: #9b3515; }
#engine-specs { margin: 12px 0 0; display: grid; gap: 6px; font-size: 14px; }
#engine-specs div { display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 8px; }
#engine-specs dt { color: var(--muted); }
#engine-specs dd { margin: 0; }
#engine-specs dd span { white-space: nowrap; }
.scene-label { white-space: pre-line; }
.part-info[data-engine] { grid-template-columns: minmax(220px, .42fr) minmax(0, 1fr); }
.part-info[data-engine] .catalogue { padding-right: 18px; }
.part-info[data-engine] .catalogue button { max-width: none; width: 100%; min-height: 220px; }
.part-info[data-engine] .catalogue img { height: 182px; margin: 0; }
.part-info[data-engine] #engine-specs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 24px; }
.part-info[data-engine] #engine-specs div { display: block; }
.part-info[data-engine] #engine-specs dd { margin-top: 3px; font-size: 16px; }
#engine-curves-dialog { width: min(1160px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); padding: 26px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); }
#engine-curves-dialog::backdrop { background: rgb(15 24 32 / 78%); }
.curve-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.curve-reference { margin: 0 0 8px; font: 12px Consolas, monospace; letter-spacing: .08em; color: var(--muted); }
.curve-heading h2 { font-size: clamp(24px, 3vw, 34px); font-weight: 500; margin: 0; }
.curve-readings { display: grid; grid-template-columns: 1.2fr 1fr 1fr; border-block: 1px solid var(--line); padding-block: 18px; margin-block: 22px 16px; }
.curve-readings > div { padding-inline: 24px; border-left: 1px solid var(--line); }
.curve-readings > div:first-child { padding-left: 0; border: 0; }
.curve-readings span { display: block; font-size: 13px; color: var(--muted); }
.curve-readings strong { display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; font-size: 36px; font-weight: 500; font-variant-numeric: tabular-nums; }
.curve-readings small { font: 13px Consolas, monospace; color: var(--muted); }
.curve-readings > div:nth-child(2) output { color: #b63d08; }
.curve-readings > div:nth-child(3) output { color: #354956; }
.curve-plots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.curve-plots svg { display: block; width: 100%; height: auto; touch-action: pan-y; }
.curve-slider { display: flex; gap: 18px; align-items: center; padding: 12px 0 18px; border-bottom: 1px solid var(--line); font: 12px Consolas, monospace; }
.curve-slider label, .curve-slider span { white-space: nowrap; }
.curve-slider input { width: 100%; min-width: 60px; accent-color: var(--orange); cursor: pointer; }
.curve-peaks { margin: 16px 0; font-size: 14px; }
.curve-peaks strong { white-space: nowrap; font-weight: 500; }
.curve-scale { display: block; color: var(--muted); margin-top: 4px; font-size: 12px; }
.curve-footnote { display: flex; gap: 24px; align-items: start; justify-content: space-between; }
.curve-footnote p { margin: 0; max-width: 80ch; font-size: 13px; color: var(--muted); }
.curve-footnote a { flex-shrink: 0; }
.curve-data { margin-top: 16px; font-size: 13px; }
.curve-data summary { width: fit-content; padding: 10px 0; cursor: pointer; text-decoration: underline; text-underline-offset: 4px; }
.curve-data table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; text-align: right; }
.curve-data th, .curve-data td { border-bottom: 1px solid var(--line); padding: 8px; }
.curve-data th { font-weight: 500; }
.curve-data caption { text-align: left; color: var(--muted); padding-block: 10px; }
@media (max-width: 960px) {
  .curve-plots { grid-template-columns: 1fr; gap: 16px; }
  .curve-footnote { flex-wrap: wrap; gap: 12px; }
}
@media (max-width: 850px) {
  .part-info[data-engine] { grid-template-columns: minmax(160px, .35fr) minmax(0, 1fr); }
  .part-info[data-engine] #engine-specs { grid-template-columns: 1fr; gap: 7px; }
}
@media (max-width: 620px) {
  .part-info[data-engine] { grid-template-columns: 1fr; }
  .part-info[data-engine] .catalogue { padding: 0 0 8px; }
  .part-info[data-engine] .catalogue button { min-height: 170px; }
  .part-info[data-engine] .catalogue img { height: 148px; }
  .part-info[data-engine] #engine-specs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .part-info[data-engine] #engine-specs dd { font-size: 14px; }
  #engine-curves-dialog { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); padding: 14px; }
  .curve-heading { gap: 8px; align-items: start; }
  .curve-reference { font-size: 11px; }
  .curve-heading h2 { font-size: 23px; }
  .curve-heading button { padding-inline: 8px; }
  .curve-readings { margin-top: 18px; padding-block: 12px; grid-template-columns: 1.2fr 1fr 1fr; }
  .curve-readings > div { padding-inline: 10px; }
  .curve-readings span { font-size: 11px; }
  .curve-readings strong { font-size: 25px; gap: 0 5px; }
  .curve-readings small { font-size: 11px; }
  .curve-slider { flex-wrap: wrap; gap: 5px 10px; }
  .curve-slider input { flex-basis: 100%; order: 1; min-height: 32px; }
  .curve-slider span { margin-left: auto; font-size: 11px; }
  .curve-peaks { line-height: 1.8; }
}
.credits { display: flex; justify-content: space-between; gap: 8px 20px; flex-wrap: wrap; padding: 12px 4px 16px; color: var(--muted); font-size: 12px; }
a { color: inherit; text-underline-offset: 3px; }
button:hover:not(:disabled):not(.inspector-action) { background-color: #fff0e6; }
:focus-visible { outline: 2px solid #ad3b09; outline-offset: 3px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (prefers-reduced-motion: no-preference) {
  .inspector-action, .catalogue button, .photo-series a, .site-views a, .photo-filters a, .views button { transition: background-color 140ms ease, border-color 140ms ease, color 140ms ease; }
  #engine-photo-dialog[open]::backdrop { animation: backdrop-in 180ms ease-out; }
}
@keyframes backdrop-in { from { background: rgb(15 24 32 / 0%); } to { background: rgb(15 24 32 / 78%); } }
@media (min-width: 1700px) { body { max-width: 1840px; margin: auto; } }
@media (max-width: 850px) {
  .part-info[data-overview] #vehicle-specs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .explorer { grid-template-columns: 174px minmax(0, 1fr); }
  .sidebar { padding: 22px 14px 15px; }
  .part-info { grid-template-columns: 1fr 1fr; }
  .inspector select { font-size: 16px; }
}
@media (max-width: 620px) {
  .part-info[data-overview] #vehicle-specs { grid-template-columns: 1fr; gap: 10px; }
  body { padding: 8px 8px 0; }
  .topbar { font-size: 12px; gap: 9px; padding: 10px 12px; min-height: 40px; letter-spacing: .05em; }
  .site-views { flex-basis: 100%; gap: 8px; letter-spacing: 0; }
  .site-views a { flex: 1; padding: 8px 10px; font-size: 12px; }
  .topbar { flex-wrap: wrap; padding-block: 10px; gap: 8px 10px; }
  .brand-wordmark { width: 156px; }
  .credits { padding-inline: 8px; }
  .photo-gallery { padding: 16px 12px 12px; margin-top: 8px; }
  .gallery-heading { display: block; margin-bottom: 12px; }
  .gallery-heading h1 { font-size: 24px; }
  .photo-filters { margin-top: 8px; gap: 0 18px; }
  .gallery-enlarge { height: auto; aspect-ratio: 4 / 3; }
  .gallery-enlarge[data-photo="avant-campagne"] img { object-fit: contain; }
  .gallery-feature figcaption div { display: block; }
  #gallery-caption { display: block; margin-top: 3px; }
  .gallery-feature strong { font-size: 16px; }
  .photo-series a { flex-basis: 112px; }
  .photo-series img { width: 102px; height: 76px; }
  .enlarge-label { bottom: 8px; right: 8px; padding: 5px 8px; }
  .photo-pagination { gap: 8px; }
  .photo-pagination button { padding-inline: 8px; font-size: 13px; }
  .hatch { display: none; }
  .explorer { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
  .sidebar { padding: 12px; display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: center; }
  .identity { padding: 0; }
  h1 { font-size: 14px; }
  h1 strong { display: inline; font-size: 27px; margin-left: 4px; }
  .identity p { font-size: 12px; margin: 5px 0 0; }
  .identity .market { display: none; }
  .views { padding: 0; margin: 0; grid-column: 2; grid-row: 1; }
  .views button { font-size: 12px; padding: 6px; }
  .categories { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 0 14px; border-bottom: 0; padding: 5px 0 0; }
  .categories button { flex-shrink: 0; font-size: 12px; gap: 6px; padding: 2px 0; }
  .categories button span { width: 13px; height: 13px; }
  .viewer { min-height: 0; }
  .studio { flex: none; height: 360px; min-height: 0; }
  .scene-label { top: 14px; left: 14px; font-size: 11px; }
  .viewer-status { left: 30px; right: 30px; bottom: 34px; font-size: 11px; }
  .model-loading { left: 14px; bottom: 14px; width: calc(100% - 28px); padding: 12px 14px; }
  .model-loading strong { font-size: 16px; }
  .part-card { max-width: 170px; font-size: 12px; padding: 7px 9px; }
  .console { padding: 0 10px 12px; }
  .control-row { gap: 0; padding: 4px 10px; }
  .explosion { flex-basis: 100%; gap: 12px; font-size: 12px; }
  .viewer .explosion { flex-basis: 100%; gap: 12px; }
  .zoom-controls { border: 0; padding: 0 0 5px; }
  .zoom-controls button { width: 38px; min-height: 38px; }
  .part-info { grid-template-columns: 1fr; min-height: 0; }
  .catalogue { padding: 0 0 8px; }
  .catalogue button { min-height: 116px; flex-basis: 86px; }
  .catalogue img { height: 76px; }
  .inspector { padding: 10px 0 0; border-left: 0; border-top: 1px solid var(--line); gap: 8px; }
  .inspector p { font-size: 14px; margin-top: 5px; }
}
