/* One fixed coordinate system keeps the installed parts aligned at every viewport. */
.scroll-story{height:390svh}
.photo-assembly{overflow:visible}
.assembly-workspace{position:absolute;left:0;top:50%;width:100%;aspect-ratio:2.25;transform:translateY(-50%);isolation:isolate}
.assembly-shell,.assembly-carriage{position:absolute;left:18%;top:17%;width:64%;aspect-ratio:1500/673;height:auto}
.assembly-shell{z-index:1;opacity:calc(1 - var(--cover,1));filter:drop-shadow(0 12px 7px #0004);pointer-events:none}
.assembly-carriage{z-index:4;opacity:var(--cover,1);transform:translateX(calc((var(--arrival,1) - 1 + var(--departure,0))*125vw));will-change:transform;pointer-events:none}
.assembly-carriage .assembly-complete{position:relative;inset:auto;width:100%;height:auto;opacity:1;transform:none;filter:drop-shadow(0 12px 8px #0005)}
.assembly-rim{position:absolute;z-index:3;top:57.2%;width:12.2%;aspect-ratio:1;border-radius:50%;background-image:url('images/hero-car.webp');background-size:819.672% 367.76%;background-position:var(--rim-x) 78.6%;transform:rotate(calc(var(--wheel-turn,0)*1deg))}
.assembly-rim.rear{left:13.8%;--rim-x:15.72%}.assembly-rim.front{left:76%;--rim-x:86.56%}
.assembly-ground{position:absolute;left:17%;top:74%;width:66%;height:2%;border-radius:50%;background:#0005;filter:blur(7px);opacity:calc(1 - var(--cover,1))}
.assembly-parts{z-index:3}
.photo-part{--spread:var(--mechanical,0);left:calc((var(--x) + var(--dx)*var(--spread))*1%);top:calc((var(--y) + var(--dy)*var(--spread))*1%);width:calc(var(--w)*1%);transform:translate(-50%,-50%) rotate(calc(var(--rotation)*var(--spread)*1deg));opacity:clamp(0,calc(var(--spread)*6),1);filter:drop-shadow(0 5px 5px #0006)}
.photo-part.group-panels{--spread:var(--panels,0)}.photo-part.group-wheels{--spread:var(--wheels,0)}
.group-panels .atlas-tile{filter:brightness(.72) contrast(1.1)}
.photo-part.matched-wheel{aspect-ratio:1}
.matched-wheel .atlas-tile,.matched-wheel-preview{background-image:url('images/hero-car.webp');background-size:604.84% 271.37%;background-position:14.38% 81.88%;border-radius:50%;clip-path:circle(49.5%)}
.matched-wheel-preview{width:min(100%,340px);height:auto;aspect-ratio:1;margin-inline:auto}
.parts-visible .photo-part{pointer-events:auto}
.photo-part:focus-visible{outline:1px solid #fa8a6a;outline-offset:3px}
.assembly-guides{z-index:4;opacity:calc(var(--mechanical,0)*.45);stroke-dasharray:3 4;stroke:#de9984}
.assembly-tag{z-index:5;opacity:var(--mechanical,0);font-size:7px;background:#1b2022a8;padding:3px 6px}
.tag-body{left:40%;top:1%}.tag-power{right:0;top:25%}.tag-chassis{left:34%;bottom:4%}
.assembly-hint{min-height:16px;margin-top:10px;color:#c6cec9;letter-spacing:.02em}
@media(max-width:600px){.scroll-story{height:360svh}.photo-assembly{height:210px}.assembly-hint{min-height:26px;font-size:8px;line-height:1.5;margin-top:0}.assembly-workspace{width:calc(100% + 16px);left:-8px}.assembly-guides,.assembly-tag{display:none}.group-panels .atlas-tile{filter:brightness(.85) contrast(1.08)}}
@media(max-width:600px) and (max-height:700px){.photo-assembly{height:160px}.assembly-hint{font-size:7px;min-height:22px}}
html[data-motion='off'] .assembly-carriage{opacity:1;transform:none!important}html[data-motion='off'] .assembly-shell,html[data-motion='off'] .assembly-ground{display:none}html[data-motion='off'] .assembly-rim{transform:none}
@media(prefers-reduced-motion:reduce){.assembly-carriage{opacity:1;transform:none!important}.assembly-shell,.assembly-ground{display:none}.assembly-rim{transform:none}}
/* Exterior panels come from the actual car photograph, keeping paint and geometry consistent. */
.photo-part.body-cutout{left:18%;top:17%;width:64%;aspect-ratio:1500/673;transform:translate(calc(var(--tx)*var(--spread)*1%),calc(var(--ty)*var(--spread)*1%));clip-path:var(--panel-mask);opacity:calc(1 - var(--cover,1))}
.body-cutout .atlas-tile{background-image:url('images/hero-car.webp');background-size:100% 100%;background-position:0 0;filter:none!important}
.body-cutout:hover .atlas-tile,.body-cutout:focus-visible .atlas-tile{scale:1;filter:brightness(1.25)!important}
.group-wheels:nth-child(9),.group-wheels:nth-child(10){opacity:calc(1 - var(--cover,1))}
