﻿/* =============================================================
   PRESTIGE CAR CENTER — design system
   Client-First -pohjainen luokitus, siirrettävissä Webflow'hun
   ============================================================= */

/* ---------- Fallback-fontti Switzerin metriikoilla ----------
   Switzer ladataan Fontsharesta ja saapuu vasta ~300 ms ensimmäisen
   maalauksen jälkeen. Ilman tätä varafontin eri rivikorkeus siirsi
   sisältöä ~11 px alaspäin kun oikea fontti vaihtui (CLS-nytkähdys).
   Arvot mitattu selaimessa: Switzer 100 px → leveys 2585.6, ascent 98,
   descent 25; Arial vastaavasti 2557.4 / 91 / 21.
   size-adjust skaalaa myös override-arvot, joten ne on jaettu 1.011:llä. */
@font-face {
  font-family: 'Switzer Fallback';
  src: local('Arial'), local('Helvetica Neue'), local('Segoe UI');
  size-adjust: 101.1%;
  ascent-override: 96.93%;
  descent-override: 24.73%;
  line-gap-override: 0%;
}

/* ---------- Tokens ---------- */
:root {
  /* Colors */
  --color-night: #111010;
  --color-carbon: #1a1917;
  --color-carbon-2: #232120;
  --color-paper: #f3f0ea;
  --color-bone: #e9e4da;
  --color-white: #fbfaf7;
  --color-ink: #161511;
  --color-smoke: #8d8a83;
  --color-smoke-dark: #6f6c66;
  --color-champagne: #c8a35f;
  --color-champagne-soft: rgba(200, 163, 95, 0.14);
  --line-dark: rgba(251, 250, 247, 0.12);
  --line-light: rgba(22, 21, 17, 0.14);

  /* Type */
  --font-display: 'Switzer', 'Switzer Fallback', 'Helvetica Neue', 'Segoe UI', sans-serif;
  --font-body: 'Switzer', 'Switzer Fallback', 'Segoe UI', sans-serif;

  --text-hero: clamp(2.9rem, 5.6vw, 11rem);
  --text-display: clamp(2.4rem, 5.2vw, 5.2rem);
  --text-h2: clamp(1.9rem, 2.9vw, 5.4rem);
  --text-h3: clamp(1.45rem, 2.4vw, 2.15rem);
  --text-h4: clamp(1.15rem, 1.6vw, 1.4rem);
  --text-large: clamp(1.1rem, 1.4vw, 1.3rem);
  --text-regular: 1rem;
  --text-small: 0.875rem;
  --text-tiny: 0.72rem;

  /* Space */
  --space-section: clamp(6rem, 5vw + 3rem, 10rem);
  --space-section-small: clamp(3.5rem, 3vw + 2rem, 6rem);
  --gutter: clamp(1.25rem, 3.5vw, 3.5rem);
  /* Kehysleveys: navi ja kulmamerkit eivät ylitä heron auton mittoja */
  --frame-max: 1680px;

  /* Shape — pehmeät kulmat */
  --radius-card: 18px;
  --radius-tile: 18px;
  --radius-button: 8px;
  --radius-input: 12px;

  /* Motion */
  --ease-luxe: cubic-bezier(0.65, 0.05, 0, 1);
  --dur: 0.9s;
}

/* ---------- Reset & base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }

body {
  font-family: var(--font-body);
  font-size: var(--text-regular);
  line-height: 1.55;
  color: var(--color-paper);
  background-color: var(--color-night);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }

::selection { background: var(--color-champagne); color: var(--color-night); }

:focus-visible {
  outline: 2px solid var(--color-champagne);
  outline-offset: 3px;
  border-radius: 2px;
}

.skip-link {
  position: fixed; top: -100px; left: 1rem; z-index: 300;
  padding: 0.75rem 1.25rem; background: var(--color-champagne);
  color: var(--color-night); border-radius: var(--radius-button);
  font-size: var(--text-small); font-weight: 500;
  transition: top 0.3s var(--ease-luxe);
}
.skip-link:focus { top: 1rem; }

/* Film grain */
body::after {
  content: ''; position: fixed; inset: -50%; z-index: 250;
  pointer-events: none; opacity: 0.05; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Client-First structure ---------- */
.page-wrapper { position: relative; overflow: clip; }
.main-wrapper { position: relative; }

.padding-global { padding-left: var(--gutter); padding-right: var(--gutter); }
.container-large { max-width: 1440px; margin-left: auto; margin-right: auto; }
.container-medium { max-width: 1080px; margin-left: auto; margin-right: auto; }
.container-small { max-width: 760px; margin-left: auto; margin-right: auto; }
.padding-section-large { padding-top: var(--space-section); padding-bottom: var(--space-section); }
.padding-section-medium { padding-top: var(--space-section-small); padding-bottom: var(--space-section-small); }

/* ---------- Utilities ---------- */
.background-color-night { background-color: var(--color-night); color: var(--color-paper); }
.background-color-carbon { background-color: var(--color-carbon); color: var(--color-paper); }
.background-color-paper { background-color: var(--color-paper); color: var(--color-ink); }
.background-color-bone { background-color: var(--color-bone); color: var(--color-ink); }

.heading-style-h1, .heading-style-h2, .heading-style-h3, .heading-style-h4 {
  font-family: var(--font-display);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -0.02em;
}
.heading-style-h1 { font-size: var(--text-hero); letter-spacing: -0.03em; }
.heading-style-h2 { font-size: var(--text-h2); }
.heading-style-h3 { font-size: var(--text-h3); line-height: 1.1; }
.heading-style-h4 { font-size: var(--text-h4); line-height: 1.2; }
.heading-style-display { font-size: var(--text-display); letter-spacing: -0.03em; line-height: 1.0; }

.text-size-large { font-size: var(--text-large); line-height: 1.5; }
.text-size-regular { font-size: var(--text-regular); }
.text-size-small { font-size: var(--text-small); }
.text-size-tiny { font-size: var(--text-tiny); }
.text-weight-medium { font-weight: 500; }
.text-weight-semibold { font-weight: 600; }
.text-color-smoke { color: var(--color-smoke); }
.text-color-champagne { color: var(--color-champagne); }
.text-style-allcaps { text-transform: uppercase; letter-spacing: 0.18em; }

.max-width-medium { max-width: 44rem; }
.max-width-small { max-width: 32rem; }

.spacer-xsmall { height: 0.75rem; }
.spacer-small { height: 1.5rem; }
.spacer-medium { height: 2.5rem; }
.spacer-large { height: 4rem; }

/* Micro-label — EI viivaa, pelkkä hienovarainen caps-label */
.micro-label {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-size: var(--text-tiny);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.24em;
  color: var(--color-smoke);
}
.micro-label .micro-label_dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--color-champagne);
}

/* Ghost index numeral */
.ghost-numeral {
  position: absolute;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(8rem, 18vw, 20rem);
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1px currentColor;
  opacity: 0.07;
  pointer-events: none;
  user-select: none;
}

/* ---------- Buttons — Semler-tyylinen pilleri + nuolisirkkeli ---------- */
.button {
  --btn-bg: rgba(251, 250, 247, 0.1);
  --btn-label: var(--color-paper);
  --btn-circle-bg: var(--color-paper);
  --btn-circle-fg: var(--color-night);
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  padding: 0.4rem 1.35rem 0.4rem 1.6rem;
  min-height: 50px;
  border: none;
  border-radius: var(--radius-button);
  background: var(--btn-bg);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: var(--btn-label);
  white-space: nowrap;
  transition: background-color 0.55s var(--ease-luxe), color 0.55s var(--ease-luxe);
}
.background-color-paper .button, .background-color-bone .button, .process_item .button {
  --btn-bg: rgba(22, 21, 17, 0.07);
  --btn-label: var(--color-ink);
  --btn-circle-bg: var(--color-ink);
  --btn-circle-fg: var(--color-paper);
}
/* Tumma täysvärinen variantti vaalealle taustalle */
.button.is-dark,
.background-color-paper .button.is-dark,
.background-color-bone .button.is-dark {
  --btn-bg: var(--color-ink);
  --btn-label: var(--color-paper);
  --btn-circle-bg: var(--color-champagne);
  --btn-circle-fg: var(--color-night);
}
.button.is-dark:hover { --btn-bg: #2a2823; }
.button_label {
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  line-height: 1;
}
/* Nuoli ilman ympyrää — osoittaa oikeaan yläkulmaan, diagonaalinen swap-hover */
.button_circle {
  position: relative;
  width: 26px; height: 26px;
  overflow: hidden;
  flex-shrink: 0;
  display: grid;
  place-items: center;
  color: inherit;
}
.button_circle i {
  position: absolute;
  inset: 0;
  font-style: normal;
  display: grid;
  place-items: center;
  transition: transform 0.55s var(--ease-luxe);
}
.button_circle i svg { width: 19px; height: 19px; display: block; }
.button_circle i:nth-child(2) { transform: translate(-140%, 140%); }
.button:hover .button_circle i:nth-child(1) { transform: translate(140%, -140%); }
.button:hover .button_circle i:nth-child(2) { transform: translate(0, 0); }
.button:hover { background: rgba(251, 250, 247, 0.16); }
.background-color-paper .button:hover, .background-color-bone .button:hover { background: rgba(22, 21, 17, 0.12); }

/* Primary: valkoinen täyttö */
/* Vaalea päänappi. Kulta on varattu pienille aksenteille, jotta se
   säilyttää tehonsa — iso kultainen pinta söisi sen. */
.button.is-primary { background: var(--color-paper); color: var(--color-night); backdrop-filter: none; }
.button.is-primary:hover { background: var(--color-champagne); color: var(--color-night); }

/* Rivian-tyylinen täytetty pilleri (toissijainen muoto) */
.button.is-solid {
  background: var(--color-paper);
  color: var(--color-night);
  padding: 0 1.8rem;
}
.button.is-solid:hover { background: var(--color-champagne); color: var(--color-night); }

.button.is-text {
  border: none; padding: 0.4rem 0; min-height: 0; border-radius: 0;
  gap: 0.5rem;
  background: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.button.is-text:hover { background: none; }
.button.is-text .button_label { letter-spacing: 0.18em; }
.button.is-text::before {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: currentColor; opacity: 0.35;
}
.button.is-text::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--color-champagne);
  transform: scaleX(0); transform-origin: left;
  transition: transform 0.55s var(--ease-luxe);
}
.button.is-text:hover::after { transform: scaleX(1); }

/* ---------- Navigation ---------- */
.nav_component {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
}
/* Hienovarainen tummennus navin taakse: nostaa logon esiin vaaleaa taustaa vasten */
.nav_component::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 150px;
  pointer-events: none;
  background: linear-gradient(to bottom, rgba(6, 5, 5, 0.5) 0%, rgba(6, 5, 5, 0.26) 42%, transparent 100%);
  opacity: 1;
  transition: opacity 0.5s var(--ease-luxe);
}
/* Vaalean sektion päällä scrim pois — logo on silloin tumma */
body.nav-on-light .nav_component::before { opacity: 0; }
.nav_bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.9rem var(--gutter);
  max-width: none;
  margin-inline: auto;
  transition: transform 0.6s var(--ease-luxe);
}
.nav_component.is-hidden .nav_bar { transform: translateY(-130%); }

.nav_logo { display: flex; align-items: center; z-index: 220; color: var(--color-paper); }
/* Logo maskina → väri seuraa currentColoria, joten se toimii tummalla ja vaalealla */
.nav_logo-img {
  display: block;
  width: 128px; height: 34px;
  background-color: currentColor;
  /* Absoluuttinen osoite: tyylitiedosto tarjoillaan Webflow'n CDN:sta,
     jolloin suhteellinen ../assets/logo.svg osoittaisi CDN:n juureen ja
     maski jaisi lataamatta — logo katoaisi kokonaan. */
  -webkit-mask: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a7205d7de580f28fef415d4_logo.svg") center / contain no-repeat;
  mask: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a7205d7de580f28fef415d4_logo.svg") center / contain no-repeat;
  filter: drop-shadow(0 2px 9px rgba(0, 0, 0, 0.55));
  transition: color 0.4s var(--ease-luxe), filter 0.4s var(--ease-luxe);
}
body.nav-on-light .nav_bar > .nav_logo .nav_logo-img {
  filter: drop-shadow(0 2px 10px rgba(255, 255, 255, 0.65));
}
/* Vaalean sektion päällä logo tummaksi */
body.nav-on-light .nav_bar > .nav_logo { color: var(--color-ink); }
.footer_brand .nav_logo { color: var(--color-paper); }
.footer_brand .nav_logo-img { width: 132px; height: 36px; }

/* Geolava-tyylinen kelluva lasikapseli — logo, linkit ja napit samassa */
.nav_pillbar {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  padding: 6px 7px;
  border-radius: 12px;
  background: rgba(19, 18, 17, 0.55);
  backdrop-filter: blur(22px) saturate(1.05);
  -webkit-backdrop-filter: blur(22px) saturate(1.05);
  z-index: 220;
  transition: background-color 0.5s var(--ease-luxe);
}
.nav_component.is-scrolled .nav_pillbar { background: rgba(17, 16, 16, 0.78); }
.nav_pillbar-links { display: flex; align-items: center; }
.nav_pillbar-link {
  font-size: 0.74rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: rgba(251, 250, 247, 0.8);
  padding: 0.7rem 1.05rem;
  border-radius: 8px;
  transition: color 0.35s, background-color 0.35s;
  white-space: nowrap;
}
/* Perustila on entinen hover-sävy; hover erottuu nyt samppanjaan vaihtuvalla
   lasilla eikä pelkällä kirkkauserolla */
.nav_pillbar-link { background: rgba(251, 250, 247, 0.13); }
.nav_pillbar-link:hover { color: var(--color-champagne); background: rgba(200, 163, 95, 0.2); }
.nav_pillbar-link.is-active { color: var(--color-champagne); }
.nav_divider { width: 1px; height: 20px; background: rgba(251, 250, 247, 0.16); margin: 0 0.4rem; flex-shrink: 0; }

.nav_lang {
  display: flex; align-items: center; gap: 0.05rem;
  font-size: 0.7rem; letter-spacing: 0.1em;
  background: rgba(251, 250, 247, 0.13);
  border-radius: 8px;
  padding: 0 0.35rem;
  min-height: 40px;
}
.nav_lang a { padding: 0.55rem 0.4rem; color: var(--color-smoke); transition: color 0.3s; border-radius: 6px; }
.nav_lang a.is-active, .nav_lang a:hover { color: var(--color-paper); }

.nav_boxbtn {
  display: inline-flex; align-items: center; gap: 0.6rem;
  font-size: 0.66rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--color-paper);
  padding: 0.7rem 1.15rem;
  min-height: 40px;
  border: none;
  border-radius: 8px;
  white-space: nowrap;
  transition: color 0.4s, background-color 0.4s;
}
.nav_boxbtn { background: rgba(251, 250, 247, 0.13); }
.nav_boxbtn:hover { color: var(--color-champagne); background: rgba(200, 163, 95, 0.2); }
.nav_boxbtn.is-accent {
  background: var(--color-paper);
  color: var(--color-night);
}
.nav_boxbtn.is-accent:hover { background: var(--color-champagne); color: var(--color-night); }

.nav_burger-icon { position: relative; width: 22px; height: 10px; flex-shrink: 0; }
.nav_burger-icon span {
  position: absolute; left: 0; width: 100%; height: 1.5px;
  background: currentColor;
  transition: transform 0.5s var(--ease-luxe), top 0.5s var(--ease-luxe), width 0.4s var(--ease-luxe);
}
.nav_burger-icon span:nth-child(1) { top: 0; }
.nav_burger-icon span:nth-child(2) { top: 8px; width: 65%; }
.nav_burger:hover .nav_burger-icon span:nth-child(2) { width: 100%; }
body.menu-open .nav_burger-icon span:nth-child(1) { top: 4px; transform: rotate(45deg); }
body.menu-open .nav_burger-icon span:nth-child(2) { top: 4px; width: 100%; transform: rotate(-45deg); }


/* ---------- Bento-tiilet (363-tyyli) — käytössä valikossa JA sektioissa ---------- */
.bento_grid { display: grid; gap: 6px; }
.bento_tile {
  position: relative;
  border-radius: var(--radius-tile);
  background: var(--color-carbon);
  overflow: hidden;
  padding: 1.4rem;
  display: flex; flex-direction: column; justify-content: flex-end;
  min-height: 150px;
  color: var(--color-paper);
}
.bento_tile-media { position: absolute; inset: 0; }
.bento_tile-media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1), filter 0.45s ease-out;
}
.bento_tile-media::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10, 9, 9, 0.82) 0%, rgba(10, 9, 9, 0.12) 45%, rgba(10, 9, 9, 0.25) 100%);
  transition: opacity 0.8s var(--ease-luxe);
}
/* Matala ja leveä tiili: teksti alkaa korkeammalta kuin isoissa tiilissä,
   joten pelkkä alareunan gradientti ei riitä. Vasen laita tummennetaan
   erikseen, jotta kuva pysyy näkyvissä oikealla. */
.bento_tile.is-cell-b .bento_tile-media::after {
  background:
    linear-gradient(to right,
      rgba(10, 9, 9, 0.74) 0%, rgba(10, 9, 9, 0.5) 34%,
      rgba(10, 9, 9, 0.12) 62%, transparent 100%),
    linear-gradient(to top,
      rgba(10, 9, 9, 0.9) 0%, rgba(10, 9, 9, 0.62) 34%,
      rgba(10, 9, 9, 0.22) 68%, rgba(10, 9, 9, 0.3) 100%);
}
a.bento_tile:hover .bento_tile-media img { transform: scale(1.055); filter: brightness(1.08); }
.bento_tile > *:not(.bento_tile-media) { position: relative; z-index: 2; }
.bento_tile-eyebrow {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--color-paper); opacity: 0.75; font-weight: 500;
}
.bento_tile-title {
  font-family: var(--font-display);
  font-size: clamp(1.3rem, 1.8vw, 1.8rem);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -0.01em;
}
.bento_tile-title.is-large { font-size: clamp(1.7rem, 2.6vw, 2.6rem); }
.bento_tile-desc { font-size: var(--text-small); color: rgba(251, 250, 247, 0.75); line-height: 1.55; max-width: 26rem; margin-top: 0.5rem; }
/* Footer: teksti ja sen alla paksu ↗-nuoli (363-tyyli) */
.bento_tile-footer {
  display: flex; flex-direction: column; align-items: flex-start; gap: 0.7rem;
  width: 100%;
}
/* Lasipinta kullan sijaan — sama kieli kuin navin kapselissa */
.bento_tile > .bento_tile-icon {
  position: absolute; top: 0.9rem; right: 0.9rem; z-index: 3;
  width: 38px; height: 38px;
  border-radius: 10px;
  background: rgba(251, 250, 247, 0.12);
  backdrop-filter: blur(16px) saturate(1.05);
  -webkit-backdrop-filter: blur(16px) saturate(1.05);
  border: 1px solid rgba(251, 250, 247, 0.16);
  color: var(--color-paper);
  display: grid; place-items: center;
  transition: transform 0.55s var(--ease-luxe), background-color 0.45s var(--ease-luxe);
}
a.bento_tile:hover > .bento_tile-icon { background: rgba(251, 250, 247, 0.2); }
.bento_tile > .bento_tile-icon svg { width: 19px; height: 19px; }
.bento_tile.is-plain {
  background: rgba(251, 250, 247, 0.05);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(251, 250, 247, 0.08);
  justify-content: space-between;
}
/* flex: none — muuten pidempi leipäteksti litistää ikonikapselin
   (Rahoitus-tiili näytti pienemmältä kuin muut) */
.bento_tile.is-plain > .bento_tile-icon { position: static; margin: 0 0 1.5rem; flex: none; }
.bento_tile.is-plain .bento_tile-title { font-size: 0.95rem; line-height: 1.25; overflow-wrap: anywhere; }
.bento_tile.is-plain { padding: 1.1rem; }
a.bento_tile.is-plain:hover { background: rgba(251, 250, 247, 0.09); border-color: rgba(200, 163, 95, 0.35); }

/* Fullscreen overlay menu — 363-henkinen, yhtenäinen grid */
.nav_overlay {
  position: fixed; inset: 0; z-index: 210;
  background: rgba(10, 9, 9, 0.92);
  backdrop-filter: blur(24px) saturate(1.05);
  -webkit-backdrop-filter: blur(24px) saturate(1.05);
  padding: clamp(4.5rem, 8vh, 6rem) clamp(1rem, 4vw, 4rem) clamp(4.5rem, 9vh, 6.5rem);
  opacity: 0; visibility: hidden;
  transition: opacity 0.65s var(--ease-luxe), visibility 0s linear 0.65s;
  overflow-y: auto;
  /* Vakaa vierityspalkin tila: muuten sisältö nytkähtää sivusuunnassa, kun
     tiilien sisääntulo (translateY) kasvattaa hetkeksi sisällön korkeutta */
  scrollbar-gutter: stable both-edges;
  display: grid;
  place-items: center;
}
body.menu-open .nav_overlay {
  opacity: 1; visibility: visible;
  transition: opacity 0.65s var(--ease-luxe);
}

/* 363-klooni: iso brändi-tiili vasemmalla, oikealla some/info + Esittelyssä + pikkutiilet */
.nav_overlay-grid {
  display: grid;
  width: 100%;
  max-width: 1240px;
  grid-template-columns: repeat(12, 1fr);
  /* Alarivin raidan minimi on 150 px eikä 140: .bento_tile min-height on
     150, joten pienempi raita jätti laatan raidan ulkopuolelle ja
     alareunan ↗-nuoli leikkautui. */
  grid-template-rows: 64px minmax(200px, 1fr) minmax(158px, 20vh);
  gap: 8px;
  min-height: min(700px, calc(100svh - 12rem));
}
/* Alarivin pikkulaatat mahtuivat 150 px raitaan vain juuri ja juuri:
   38 px ikonikapseli + 1,5 rem marginaali vei yksin 62 px, ja
   kaksiriviset otsikot ("Rahoitus & takuu") työnsivät nuolen laatan
   alapuolelle — overflow: hidden piilotti sen äänettömästi. */
.nav_overlay-row .bento_tile.is-plain { padding: 1rem; }
.nav_overlay-row .bento_tile.is-plain > .bento_tile-icon {
  width: 32px; height: 32px; margin-bottom: 0.7rem;
}
.nav_overlay-row .bento_tile.is-plain > .bento_tile-icon svg { width: 16px; height: 16px; }
.nav_overlay-row .bento_tile-footer { gap: 0.45rem; }
.nav_overlay-row .tile_arrow svg { width: 18px; height: 18px; }
.nav_overlay-grid .is-menu-hero { grid-column: 1 / 9; grid-row: 1 / 3; }
.nav_overlay-grid .is-menu-sub1 { grid-column: 1 / 5; grid-row: 3; }
.nav_overlay-grid .is-menu-sub2 { grid-column: 5 / 9; grid-row: 3; }
.nav_overlay-grid .is-menu-social {
  grid-column: span 1; grid-row: 1;
  padding: 0; min-height: 0;
  display: grid; place-content: center; place-items: center;
}
.nav_overlay-grid .is-menu-social svg { width: 18px; height: 18px; }
.nav_overlay-grid .is-menu-info {
  grid-column: 11 / 13; grid-row: 1;
  flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.3rem;
  min-height: 0; padding: 0 1.1rem;
  overflow: hidden;
}
.nav_overlay-grid .is-menu-info .bento_tile-eyebrow {
  font-size: 0.58rem; letter-spacing: 0.12em; opacity: 0.7;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
}
.nav_overlay-grid .is-menu-info .nav_overlay-hours { font-size: 0.74rem; white-space: nowrap; }
.nav_overlay-grid .is-menu-featured { grid-column: 9 / 13; grid-row: 2; }
.nav_overlay-row {
  grid-column: 9 / 13; grid-row: 3;
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px;
}
a.bento_tile.is-menu-social { transition: background-color 0.5s var(--ease-luxe), color 0.4s; }
a.bento_tile.is-menu-social:hover { background: rgba(251, 250, 247, 0.1); color: var(--color-champagne); }
.nav_overlay .bento_tile { border: 1px solid rgba(251, 250, 247, 0.07); }
.nav_overlay .bento_tile-title { font-size: clamp(1.05rem, 1.4vw, 1.35rem); }
.nav_overlay .is-menu-hero .bento_tile-title { font-size: clamp(1.9rem, 3vw, 3rem); }
.nav_overlay .is-menu-sub1 .bento_tile-title, .nav_overlay .is-menu-sub2 .bento_tile-title { font-size: clamp(1.3rem, 1.8vw, 1.7rem); }

/* Tiilien porrastettu smooth sisääntulo/poistuminen */
.nav_overlay .bento_tile {
  transform: translateY(22px) scale(0.985);
  opacity: 0;
  transition: transform 0.75s var(--ease-luxe), opacity 0.55s ease,
              background-color 0.28s ease-out, border-color 0.28s ease-out;
}
/* Valikon korttien hover: nopea ja terävä */
body.menu-open .nav_overlay .bento_tile { transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.3s ease, background-color 0.25s ease-out, border-color 0.25s ease-out; }
.nav_overlay .tile_arrow { transition: color 0.22s ease-out; }
.nav_overlay .tile_arrow svg { transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
.nav_overlay .bento_tile-icon { transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
body.menu-open .nav_overlay .bento_tile { transform: translateY(0) scale(1); opacity: 1; }
body.menu-open .nav_overlay .bento_tile:nth-child(1) { transition-delay: 0.05s; }
body.menu-open .nav_overlay .bento_tile:nth-child(2) { transition-delay: 0.1s; }
body.menu-open .nav_overlay .bento_tile:nth-child(3) { transition-delay: 0.15s; }
body.menu-open .nav_overlay .bento_tile:nth-child(4) { transition-delay: 0.19s; }
body.menu-open .nav_overlay .bento_tile:nth-child(5) { transition-delay: 0.23s; }
body.menu-open .nav_overlay .bento_tile:nth-child(6) { transition-delay: 0.27s; }
body.menu-open .nav_overlay .bento_tile:nth-child(7) { transition-delay: 0.31s; }
body.menu-open .nav_overlay .bento_tile:nth-child(8) { transition-delay: 0.34s; }
body.menu-open .nav_overlay .bento_tile:nth-child(9) { transition-delay: 0.37s; }
body.menu-open .nav_overlay .bento_tile:nth-child(10) { transition-delay: 0.4s; }

.nav_overlay-meta {
  font-size: 0.9rem;
  font-weight: 500;
  color: rgba(251, 250, 247, 0.7);
  margin-top: 0.4rem;
  text-shadow: 0 1px 10px rgba(0, 0, 0, 0.85);
}
/* Tummennus painottuu alareunaan, jossa otsikko on. Ylaosa jatetaan
   selvasti kirkkaammaksi, jotta kuva erottuu — aiemmin koko laatta oli
   niin tumma ettei autoa erottanut. */
.nav_overlay .bento_tile-media::after {
  background: linear-gradient(to top, rgba(8, 7, 7, 0.92) 0%, rgba(8, 7, 7, 0.6) 22%, rgba(8, 7, 7, 0.12) 52%, transparent 100%);
}
.nav_overlay .bento_tile-title { text-shadow: 0 2px 14px rgba(0, 0, 0, 0.7); }
.nav_overlay .bento_tile-desc { color: rgba(251, 250, 247, 0.68); text-shadow: 0 1px 10px rgba(0, 0, 0, 0.85); }
.nav_overlay-hours { font-size: var(--text-small); color: var(--color-paper); line-height: 1.4; }
.nav_overlay-hours span { color: var(--color-smoke); }

/* Sulje-nappi keskellä alhaalla (363-tyyli) */
.nav_overlay-close {
  position: fixed;
  bottom: 1.4rem; left: 50%;
  transform: translate(-50%, 80px);
  z-index: 230;
  display: inline-flex; align-items: center; gap: 0.9rem;
  padding: 0.95rem 1.9rem;
  background: rgba(22, 21, 20, 0.92);
  backdrop-filter: blur(12px);
  border: 1px solid var(--line-dark);
  border-radius: 8px;
  color: var(--color-paper);
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  opacity: 0;
  transition: transform 0.7s var(--ease-luxe), opacity 0.5s ease, background-color 0.4s;
}
body.menu-open .nav_overlay-close { transform: translate(-50%, 0); opacity: 1; transition-delay: 0.35s; }
.nav_overlay-close:hover { background: rgba(35, 33, 32, 0.95); }
.nav_overlay-close .close-x { font-size: 0.9rem; }

/* ---------- Hero (etusivu) — minimalistinen, kinemaattinen ---------- */
.section_hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  overflow: clip;
}
.hero_background { position: absolute; inset: 0; overflow: hidden; }
.hero_background img,
.hero_background video {
  position: absolute; inset: 0;
  width: 100%; height: 106%;
  object-fit: cover;
  opacity: 0.88;
  filter: brightness(1.06) saturate(1.05);
  transform-origin: center;
}
.hero_background video { z-index: 1; }
@media (prefers-reduced-motion: reduce) {
  .hero_background video { display: none; }
}

/* Spotlight-hero: studiopimeä siluetti + kursoria seuraava valokeila */
.section_hero.is-spotlight {
  background: #060505;
  perspective: 1500px;
  perspective-origin: 50% 55%;
}
/* 3D-kallistus: auto kääntyy hiiren mukana, tausta liikkuu vastakkain.
   z-index 2 = taustakuvan (0) ja kontaktivarjon (1) päällä. */
.is-spotlight .hero_background { z-index: 2; }
.is-spotlight .hero_background {
  transform-style: preserve-3d;
  will-change: transform;
}
.is-spotlight .hero_backdrop { will-change: transform; }
/* Kontaktivarjo: auto leijuu, mutta varjo ankkuroi sen tilaan.
   Ilman tätä irtileikattu auto näyttäisi liimatulta taustan päälle. */
.hero_ground {
  position: absolute;
  left: 50%; bottom: calc(15% + 1rem);
  width: 37%; height: 6.5%;
  transform: translateX(-50%);
  z-index: 1;
  pointer-events: none;
  /* Tiiviimpi ja tummempi kuin ennen: auto saa selvän kontaktivarjon,
     joka ankkuroi sen taustaan sen sijaan että se leijuisi irrallaan */
  background: radial-gradient(50% 50% at 50% 50%, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.5) 40%, transparent 74%);
  filter: blur(20px);
}
/* Taustamaisema: blurrattu maisema screen-blendillä auton YLÄPUOLELLE.
   Maski häivyttää sen ennen auton koria, joten tausta ei näy auton läpi. */
/* Taustakuva on nyt AUTON TAKANA ja selvästi näkyvissä (z-index 0).
   Auto nostetaan sen päälle omalla z-indexillään. */
.hero_backdrop {
  position: absolute; inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  /* Kuva näkyy vain heron yläpuoliskossa ja häipyy pehmeästi mustaan */
  -webkit-mask-image: linear-gradient(to bottom,
    #000 0%, #000 28%, rgba(0, 0, 0, 0.85) 40%,
    rgba(0, 0, 0, 0.5) 50%, rgba(0, 0, 0, 0.18) 58%, transparent 66%);
  mask-image: linear-gradient(to bottom,
    #000 0%, #000 28%, rgba(0, 0, 0, 0.85) 40%,
    rgba(0, 0, 0, 0.5) 50%, rgba(0, 0, 0, 0.18) 58%, transparent 66%);
}
/* Rajaus kuvan yläosaan: vuoret, kuusikko ja usva. Kuvan oma auto jää
   alapuolelle rajauksen ulkopuolelle. */
.hero_backdrop img {
  position: absolute; inset: auto;
  left: 0; top: 0;
  width: 100%; height: 155%;
  max-width: none;   /* yleinen img-reset rajoittaisi muuten 100 %:iin */
  object-fit: cover;
  /* Tyhjä parkkihalli: katto, pilarit ja pakopiste keskellä.
     Kuvassa ei ole autoa, joten rajaus voi näyttää myös lattiaa. */
  object-position: center 34%;
  z-index: 0;
  /* Keltamusta parkkihalli: sävy kuivataan lähes harmaaksi (keltainen
     riitelisi samppanjan kanssa) ja kirkkaat loisteputket vaimennetaan.
     Perusblur on kevyt — yläreuna saa jäädä terävimmäksi, syvyys tehdään
     alempana porrastetulla blur-kerroksella (::before). */
  filter: blur(0.6px) brightness(0.78) contrast(1.05) saturate(0.2);
}
/* Porrastettu syväterävyys: yläreuna terävä, keskeltä alaspäin sumenee.
   backdrop-filter + maski = liukuva blur, jota pelkkä filter ei osaa. */
.hero_backdrop::before {
  content: ''; position: absolute; inset: 0; z-index: 1;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  -webkit-mask-image: linear-gradient(to bottom,
    transparent 0%, transparent 14%, rgba(0, 0, 0, 0.3) 26%,
    rgba(0, 0, 0, 0.72) 38%, #000 50%);
  mask-image: linear-gradient(to bottom,
    transparent 0%, transparent 14%, rgba(0, 0, 0, 0.3) 26%,
    rgba(0, 0, 0, 0.72) 38%, #000 50%);
}
/* Tummennuskerros: pitää otsikon ja alatekstin luettavina kuvan päällä */
.hero_backdrop::after {
  content: ''; position: absolute; inset: 0; z-index: 2;
  background:
    /* Vasen laita tummempi otsikkoa varten */
    linear-gradient(100deg,
      rgba(6, 5, 5, 0.34) 0%, rgba(6, 5, 5, 0.2) 32%,
      rgba(6, 5, 5, 0.1) 60%, rgba(6, 5, 5, 0.18) 100%),
    /* Keskelle pehmeä tummennus: auto irtoaa taustasta */
    radial-gradient(64% 52% at 54% 46%,
      rgba(6, 5, 5, 0.42) 0%, rgba(6, 5, 5, 0.2) 55%, transparent 82%),
    /* Ylhäällä kevyin, keskeltä alaspäin selvästi tummempi */
    linear-gradient(to bottom,
      rgba(6, 5, 5, 0.2) 0%, rgba(6, 5, 5, 0.3) 24%,
      rgba(6, 5, 5, 0.58) 42%, rgba(6, 5, 5, 0.8) 60%,
      rgba(6, 5, 5, 0.94) 100%);
}
/* Pehmeä tummennus reunoille erillisenä kerroksena (ei blendiä) */
.section_hero.is-spotlight::before {
  content: ''; position: absolute; inset: 0; z-index: 4;
  pointer-events: none;
  background:
    /* Pehmeä valo vasempaan laitaan — nostaa otsikkopuolen pimeydestä */
    radial-gradient(52% 58% at 14% 34%,
      rgba(255, 250, 242, 0.13) 0%, rgba(255, 250, 242, 0.05) 45%, transparent 75%),
    /* Kevyt tummennus otsikon taakse, jotta teksti pysyy luettavana */
    linear-gradient(108deg,
      rgba(6, 5, 5, 0.34) 0%, rgba(6, 5, 5, 0.22) 24%,
      rgba(6, 5, 5, 0.08) 46%, transparent 68%),
    /* Reunavinjetti kevennetty 0.4 -> 0.24: reunat olivat niin tummat etta
       kuva katosi niista kokonaan. Otsikon takana oleva tummennus jaa
       ennalleen, joten teksti pysyy luettavana. */
    radial-gradient(120% 92% at 50% 46%, transparent 62%, rgba(6, 5, 5, 0.24) 100%);
}
/* Studiohehku: pehmeä valo auton takana, seuraa keilaa */
.hero_studio {
  position: absolute; inset: 0; z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(58% 46% at var(--spot-x, 62%) calc(var(--spot-y, 55%) - 4%),
      rgba(238, 238, 238, 0.16) 0%, rgba(220, 220, 220, 0.07) 38%, transparent 72%),
    radial-gradient(120% 70% at 50% 116%, rgba(255, 255, 255, 0.07) 0%, transparent 60%);
}
/* Lattian heijastus: geometrisesti oikea peilikuva koko autosta.
   Peilitaso on --refl-b:n kohdalla; kuva peilataan ja siirretään niin,
   että auto jatkuu saumattomasti alaspäin. */
.hero_reflection {
  --refl-b: 62%;
  position: absolute;
  left: 0; right: 0;
  top: var(--refl-b);
  bottom: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
  opacity: 0.22;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0.4) 34%, transparent 72%);
  mask-image: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0.4) 34%, transparent 72%);
}
.hero_reflection img {
  position: absolute;
  left: 0;
  top: -100%;
  width: 100%;
  height: 263%;
  object-fit: cover;
  object-position: center;
  transform: scaleY(-1);
  filter: brightness(0.8) blur(1.6px) saturate(0.92);
}
/* Ylimitoitus estää kuvan reunan paljastumisen 3D-kallistuksessa */
.is-spotlight .hero_background {
  inset: -7%;
  width: 114%;
  height: 114%;
}
/* Auto mahtuu kokonaan ruudulle ja sivuille jää tilaa */
/* Umpinainen siluetti auton takana: estää hiukkasia näkymästä korin läpi.
   Musta mustaa taustaa vasten, joten se ei näy itsessään. */
.hero_spot-mask { z-index: 0; }
.is-spotlight .hero_background img {
  opacity: 1;
  inset: auto;
  /* Uusi cutout on rajattu tiiviisti auton ympärille (vanhassa oli n. 20 %
     tyhjää ylä- ja alareunassa), joten laatikkoa pienennettiin vastaavasti */
  left: 29%; top: calc(34% - 1rem);
  width: 44%; height: 51%;
  object-fit: contain;
  object-position: center 62%;
  image-rendering: -webkit-optimize-contrast;
}
/* ---- Osoitinmerkintä auton vieressä ----
   Ankkuripiste on elementin vasemmassa alakulmassa: viiva ja teksti kasvavat
   siitä ylös oikealle, joten sijoittelu tapahtuu yhdellä koordinaatilla. */
.hero_tag {
  position: absolute;
  left: 74%; top: 44%;
  z-index: 5;
  width: 0; height: 0;          /* pelkkä ankkuri — lapset asemoidaan siitä */
  pointer-events: auto;
}
.hero_tag-dot {
  position: absolute; left: -4px; top: -4px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--color-paper);
  box-shadow: 0 0 14px rgba(255, 252, 245, 0.6), 0 0 3px rgba(255, 252, 245, 0.9);
}
.hero_tag-line {
  /* Alkaa tasan pallon keskipisteestä (ankkurin 0,0), ei sen reunasta */
  position: absolute; left: 0; top: -0.5px;
  width: 62px; height: 1px;
  background: linear-gradient(to right,
    rgba(251, 250, 247, 0.8) 0%, rgba(251, 250, 247, 0.28) 100%);
  transform-origin: 0 50%;
  transform: rotate(-34deg);
}
.hero_tag-text {
  position: absolute;
  /* Viivan kärki on (54px, -35px) ankkurista — teksti alkaa siitä hieman
     irti, jotta merkintä hengittää eikä liimaudu viivaan kiinni */
  left: 68px; bottom: 26px;
  display: block;
  white-space: nowrap;
}
.hero_tag-eyebrow {
  display: block;
  font-size: var(--text-tiny);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--color-champagne);
}
.hero_tag-title {
  display: block;
  font-family: var(--font-display);
  font-size: 0.92rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--color-paper);
  margin-top: 0.12rem;
}
/* Hover vain himmentää tekstiä — samppanja veti liikaa huomiota pieneen
   merkintään, joka ei ole sivun päätoiminto */
.hero_tag:hover .hero_tag-title { color: rgba(251, 250, 247, 0.62); }
.hero_tag:hover .hero_tag-dot { box-shadow: 0 0 18px rgba(255, 252, 245, 0.7), 0 0 4px rgba(255, 252, 245, 0.95); }
.hero_tag-dot,
.hero_tag-title { transition: color 0.4s var(--ease-luxe), box-shadow 0.4s var(--ease-luxe); }

/* ---- Heron alkutilat CSS:ssä, ei JS:ssä ----
   html.js asetetaan <head>-skriptissä ennen ensimmäistä maalausta. Ilman tätä
   selaimen välimuistista tulevat hero-elementit ehtivät välähtää lopullisessa
   asussaan ennen kuin GSAP asettaa ne alkutilaan — juuri sen näkee kun palaa
   etusivulle toiselta sivulta, ei tavallisessa reloadissa jossa kuvat latautuvat
   hitaammin. */
html.js .section_hero.is-spotlight .hero_backdrop { opacity: 0; }
html.js .section_hero.is-spotlight .hero_background img:not(.hero_spot-lights) { opacity: 0; }
/* Otsikko piilotetaan opacityllä eikä siirrolla: GSAP tulkitsee CSS:n
   translateY(120%) pikseleiksi (y), jolloin sen oma yPercent-animaatio ei
   kumoaisi sitä ja otsikko jäisi maskin alle pysyvästi. */
html.js .section_hero .hero_heading { opacity: 0; }
html.js .section_hero [data-hero-footer] { opacity: 0; }
html.js .hero_tag-dot { transform: scale(0); }
/* Ei rotate()-arvoa tähän: kierron omistaa GSAP, muuten se johtaa
   matriisin uudelleenkoostamisessa vinouteen puhtaan kierron sijaan */
html.js .hero_tag-line { transform: scaleX(0); }
html.js .hero_tag-text { opacity: 0; }

/* Ajovalokerros: screen-blend lisää valoa auton päälle sitä peittämättä.
   Spesifisyys nostettu img-valitsimella, muutta yleinen sääntö pakottaisi
   opacityn ykköseen ja valot palaisivat heti sivun latautuessa. */
.is-spotlight .hero_background img.hero_spot-lights {
  z-index: 3;
  opacity: 0;
  mix-blend-mode: screen;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  /* Ilman animaatiota valot vain ovat päällä */
  .is-spotlight .hero_background img.hero_spot-lights { opacity: 0.85; }
}
/* Pohja: hillitty kirkastus + kontrasti, jotta muodot erottuvat myös keilan ulkopuolella */
.is-spotlight .hero_spot-dim { filter: brightness(0.78) contrast(1.1) saturate(0.96); }
/* Valokeila: hienovarainen lisävalo, auto pysyy kirkkaana myös sen ulkopuolella */
.is-spotlight .hero_spot-lit {
  filter: brightness(1.14) contrast(1.04) saturate(1.08);
  -webkit-mask-image: radial-gradient(circle var(--spot-r, 42vw) at var(--spot-x, 62%) var(--spot-y, 55%),
    rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.88) 30%, rgba(0, 0, 0, 0.45) 62%, transparent 88%);
  mask-image: radial-gradient(circle var(--spot-r, 42vw) at var(--spot-x, 62%) var(--spot-y, 55%),
    rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.88) 30%, rgba(0, 0, 0, 0.45) 62%, transparent 88%);
}
.is-spotlight .hero_background::after { background: none; }
/* Alareunan tummennus omalle kerrokselleen, jotta blend ei syö sitä */
.section_hero.is-spotlight::after {
  content: ''; position: absolute; inset: 0; z-index: 2;
  pointer-events: none;
  background: linear-gradient(to top, rgba(6, 5, 5, 0.94) 2%, rgba(6, 5, 5, 0.5) 18%, transparent 34%);
}
/* Hiukkaset AUTON TAKANA: z-index 0 ja DOM-järjestyksessä ennen
   .hero_background-elementtiä, joten auto peittää ne kokonaan.
   Hiukkasia näkyy siis vain taustassa auton ympärillä. */
.hero_dust {
  position: absolute; inset: 0; z-index: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  /* Näkyviin vasta kun auto on latautunut (JS lisää .is-ready) */
  opacity: 0;
  transition: opacity 1.1s var(--ease-luxe);
}
.hero_dust.is-ready { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .hero_dust { display: none; } }

.is-spotlight .hero_component { position: relative; z-index: 5; }
/* Otsikko kahdella rivillä ylhäällä, irti autosta */
.is-spotlight .hero_heading {
  margin: clamp(1.5rem, 5vh, 3.5rem) 0 auto;
  font-size: clamp(3.4rem, 7vw, 14rem);
  font-weight: 600;
  letter-spacing: -0.038em;
  text-shadow: none;
}
.is-spotlight .hero_footer { position: relative; z-index: 4; }
/* Minimalistiset kulmamerkit (+) — studio/blueprint-detalji */
.hero_background::after {
  content: ''; position: absolute; inset: 0;
  background:
    radial-gradient(130% 100% at 70% 20%, transparent 45%, rgba(17, 16, 16, 0.32) 100%),
    linear-gradient(to top, rgba(17, 16, 16, 0.88) 2%, rgba(17, 16, 16, 0.05) 34%, rgba(17, 16, 16, 0.42) 78%, rgba(17, 16, 16, 0.62) 100%);
}
.hero_component {
  position: relative; z-index: 2;
  width: 100%;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-bottom: clamp(1.8rem, 4.5vh, 3.5rem);
  padding-top: 7rem;
}
/* Monumenttiotsikko kahdella rivillä, keskellä vasenta laitaa */
.hero_heading {
  margin: clamp(2.5rem, 10vh, 6rem) 0 auto;
  font-size: clamp(3.2rem, 7vw, 14rem);
  line-height: 0.96;
  letter-spacing: -0.03em;
  /* Hieman himmeämpi kuin puhdas valkoinen — ei polta silmiä tummaa vasten */
  color: rgba(255, 255, 255, 0.87);
  /* Kaksi varjoa: tiukka kontrastia varten, laaja irrottamaan taustasta */
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5), 0 4px 44px rgba(0, 0, 0, 0.6);
}
.hero_heading-line { display: block; overflow: hidden; padding-bottom: 0.16em; margin-bottom: -0.16em; }
.hero_heading-line.is-indent { margin-left: clamp(3rem, 16vw, 18rem); }
.hero_line-inner { display: block; }
.hero_heading .hero_heading-accent { color: var(--color-champagne); font-weight: 400; }
.hero_lead { max-width: 27rem; color: var(--color-paper); opacity: 0.85; }
/* Alarivi: tagline vasemmalla, napit oikealla — ei viivoja */
.hero_footer {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 2.5rem;
  margin-top: clamp(2rem, 5vh, 3.5rem);
}
.hero_actions { display: flex; gap: 0.8rem; flex-wrap: wrap; }
.hero_tagline { max-width: 34rem; }
.hero_tagline-main {
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 1.5vw, 2.9rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  color: var(--color-paper);
}
.hero_tagline-desc {
  margin-top: 0.8rem;
  font-size: var(--text-regular);
  line-height: 1.6;
  color: rgba(251, 250, 247, 0.78);
  max-width: 30rem;
}
/* ---------- Paksut ↗-nuolet ilman ympyröitä (363-tyyli) ---------- */
.tile_arrow {
  color: var(--color-paper);
  display: grid; place-items: center;
  flex-shrink: 0;
  padding: 0.2rem 0;
  transition: color 0.45s var(--ease-luxe);
}
.tile_arrow svg { width: 22px; height: 22px; transition: transform 0.5s var(--ease-luxe); }
a:hover > .tile_arrow, a:hover .bento_tile-footer .tile_arrow { color: var(--color-champagne); }
a:hover > .tile_arrow svg, a:hover .bento_tile-footer .tile_arrow svg { transform: translate(4px, -4px); }
.background-color-paper .tile_arrow, .background-color-bone .tile_arrow { color: var(--color-ink); }

/* ---------- Showcase — draggable slider ---------- */
/* Sama syvä musta kuin herossa, jotta sektiot jatkuvat saumattomasti */
.section_showcase.background-color-night { background-color: #060505; }
/* Padding marginaalin sijaan: muuten alamarginaali vuotaa sektion ulkopuolelle
   ja väliin jää body-taustaa */
.section_showcase { position: relative; padding-bottom: var(--space-section-small); }
.showcase_header {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem;
  padding-top: var(--space-section);
  padding-bottom: 3.6rem;
}
.showcase_nav { display: flex; gap: 1.6rem; }
.showcase_nav { gap: 1.9rem; }
.showcase_nav .tile_arrow { cursor: pointer; padding: 0.5rem 0.2rem; }
.showcase_nav .tile_arrow svg { width: 40px; height: 40px; }
.showcase_nav .tile_arrow:hover:not(:disabled) { color: var(--color-champagne); }
.showcase_nav .tile_arrow:hover:not(:disabled) svg { transform: translateX(3px); }
.showcase_nav [data-slider-prev]:hover:not(:disabled) svg { transform: translateX(-3px); }
.showcase_nav .tile_arrow:disabled { opacity: 0.25; cursor: default; }
.showcase_track {
  display: flex; gap: clamp(1rem, 2vw, 2rem);
  padding-bottom: 3rem;
  overflow-x: auto;
  scrollbar-width: none;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.showcase_track::-webkit-scrollbar { display: none; }
.showcase_track.is-dragging { cursor: grabbing; scroll-behavior: auto; }
.showcase_track.is-dragging .showcase_card { pointer-events: none; }
/* ---- Liquid glass -kortti ----
   Kolme kerrosta: (0) sumea kopio auton kuvasta = taittuva "neste",
   (1) sisältö, (2) spekulaarikiilto reunoilla. Pelkkä backdrop-filter
   ei riittäisi, koska sektion tausta on tasainen musta. */
.showcase_card {
  position: relative;
  flex: 0 0 auto;
  width: clamp(340px, 42vw, 640px);
  border-radius: var(--radius-tile);
  overflow: hidden;
  isolation: isolate;
  background: rgba(251, 250, 247, 0.04);
  border: 1px solid rgba(251, 250, 247, 0.12);
  box-shadow:
    0 22px 60px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    inset 0 -1px 0 rgba(255, 255, 255, 0.05);
  transition: border-color 0.6s var(--ease-luxe), background-color 0.6s var(--ease-luxe),
              box-shadow 0.6s var(--ease-luxe), transform 0.6s var(--ease-luxe);
}
.showcase_card-wash {
  position: absolute; inset: -18%;
  width: 136%; height: 136%;
  max-width: none;
  object-fit: cover;
  z-index: 0;
  /* Hillitty: pelkkä vihje auton väristä, ei värillistä laattaa */
  opacity: 0.3;
  filter: blur(46px) saturate(0.75) brightness(0.62);
  pointer-events: none;
  transition: opacity 0.7s var(--ease-luxe), transform 1.2s var(--ease-luxe);
}
/* Spekulaarikiilto: kapea valojuova yläkulmasta ja samppanjahehku alanurkkaan */
.showcase_card::after {
  content: ''; position: absolute; inset: 0; z-index: 3;
  border-radius: inherit;
  pointer-events: none;
  background:
    linear-gradient(128deg,
      rgba(255, 255, 255, 0.24) 0%, rgba(255, 255, 255, 0.06) 18%,
      transparent 42%, transparent 74%,
      rgba(200, 163, 95, 0.12) 92%, rgba(255, 255, 255, 0.16) 100%);
  opacity: 0.9;
  transition: opacity 0.6s var(--ease-luxe);
}
.showcase_card:hover {
  border-color: rgba(200, 163, 95, 0.42);
  background: rgba(251, 250, 247, 0.07);
  box-shadow:
    0 30px 70px rgba(0, 0, 0, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.32),
    inset 0 -1px 0 rgba(255, 255, 255, 0.07);
}
.showcase_card:hover .showcase_card-wash { opacity: 0.42; transform: scale(1.06); }
.showcase_card:hover::after { opacity: 1; }
/* 2/1 (oli 16/10, sitten 16/9): kortti oli alun perin 562 px korkea
   605 px leveana, eli kuva yksin vei 377 px. 2/1 madaltaa kuvan
   302 px:aan ja kortin n. 487 px:aan
   — juuri sen verran ettei kortti enaa jatku taitteen alle matalalla
   naytolla, mutta rajaus pysyy leveana ja elokuvamaisena. */
.showcase_card-image { position: relative; z-index: 1; aspect-ratio: 2 / 1; overflow: hidden; }
.showcase_card-image img {
  width: 100%; height: 100%; object-fit: cover;
  /* 1,2 s tuntui hoverissa hitaalta ja veltolta. Lyhyempi kesto ja
     terävämmin pysähtyvä kaari saavat zoomin nappaamaan heti. */
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), filter 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
.showcase_card:hover .showcase_card-image img { transform: scale(1.05); filter: brightness(1.07); }
.showcase_card-circle {
  position: absolute; right: 1.2rem; bottom: 1.1rem; z-index: 2;
  color: var(--color-paper);
  display: grid; place-items: center;
  opacity: 0;
  transform: translate(-8px, 8px);
  transition: opacity 0.5s var(--ease-luxe), transform 0.6s var(--ease-luxe);
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.5));
}
.showcase_card-circle svg { width: 24px; height: 24px; }
.showcase_card:hover .showcase_card-circle { opacity: 1; transform: translate(0, 0); }
/* Tekstiosa on varsinainen lasilevy: se sumentaa alla olevan wash-kuvan
   uudelleen, jolloin auton värit taittuvat pintaan mutta teksti pysyy luettavana */
.showcase_card-body {
  position: relative; z-index: 2;
  padding: 1.5rem 1.6rem 1.7rem;
  background: linear-gradient(to bottom, rgba(12, 11, 11, 0.5), rgba(12, 11, 11, 0.72));
  backdrop-filter: blur(26px) saturate(0.8);
  -webkit-backdrop-filter: blur(26px) saturate(0.8);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.showcase_card-title { font-family: var(--font-display); font-size: clamp(1.35rem, 1.7vw, 1.7rem); font-weight: 500; letter-spacing: -0.01em; }
.showcase_card-version { color: var(--color-smoke); font-size: var(--text-small); margin-top: 0.25rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.showcase_card-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  margin-top: 1.1rem; padding-top: 1.1rem;
  border-top: 1px solid var(--line-dark);
}
.showcase_card-specs { font-size: var(--text-tiny); color: var(--color-smoke); letter-spacing: 0.06em; }
.showcase_card-price { font-family: var(--font-display); font-weight: 500; font-size: 1.25rem; color: var(--color-champagne); white-space: nowrap; }
/* Kapea raita + liikuteltava liquid glass -nuppi */
.showcase_progress {
  position: relative;
  width: clamp(170px, 22vw, 300px);
  height: 4px;
  border-radius: 999px;
  background: rgba(251, 250, 247, 0.12);
  margin: 0 auto;
  cursor: pointer;
}
.showcase_progress-thumb {
  position: absolute;
  top: 50%;
  left: 0;
  /* Kiintea pieni nuppi. !important siksi, etta vanhemmat julkaistut
     pcc.js-versiot kirjoittavat leveyden viela inline-tyylina. */
  width: 22px !important;
  height: 22px;
  border-radius: 7px;
  transform: translateY(-50%);
  background: rgba(251, 250, 247, 0.14);
  backdrop-filter: blur(12px) saturate(1.5);
  -webkit-backdrop-filter: blur(12px) saturate(1.5);
  border: 1px solid rgba(251, 250, 247, 0.3);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.35);
  cursor: grab;
  transition: background-color 0.4s var(--ease-luxe), border-color 0.4s var(--ease-luxe), height 0.35s var(--ease-luxe);
}
.showcase_progress-thumb::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background: linear-gradient(120deg, rgba(255, 255, 255, 0.22) 0%, transparent 42%, rgba(200, 163, 95, 0.16) 100%);
  pointer-events: none;
}
.showcase_progress-thumb:hover { background: rgba(251, 250, 247, 0.2); border-color: rgba(200, 163, 95, 0.6); width: 26px !important; height: 26px; }
.showcase_progress-thumb.is-grabbing { cursor: grabbing; background: rgba(251, 250, 247, 0.24); border-color: var(--color-champagne); width: 26px !important; height: 26px; }

/* ---------- Intro / manifesto + stats ---------- */
.section_intro { position: relative; }
.intro_statement {
  font-family: var(--font-display);
  font-size: var(--text-h2);
  font-weight: 500;
  line-height: 1.14;
  letter-spacing: -0.02em;
  max-width: 21ch;
}
.intro_statement .word { opacity: 0.14; transition: opacity 0.4s linear; }
.intro_statement .word.is-lit { opacity: 1; }
/* Manifesti + iso kuva editorial-splittinä */
.intro_media-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: clamp(1.5rem, 3vw, 3rem);
  /* Teksti pystysuunnassa kuvan keskelle. Korkeamman kuvarajauksen jalkeen
     ylareunaan tasattu teksti jai roikkumaan kuvan ylalaitaan. */
  align-items: center;
  /* Ei ylämarginaalia: sektion oma padding hoitaa välit, jolloin ylä- ja
     alareunan tila on yhtä suuri. */
}
.intro_media {
  /* Kapeampi ja korkeampi kehys nostaa auton isommaksi kuvassa. */
  grid-column: 1 / 8;
  position: relative;
  aspect-ratio: 4 / 4.35;
  overflow: hidden;
  border-radius: var(--radius-card);
}
/* Yläreuna häivytetään läpinäkyväksi, jolloin taivas sulautuu sektion omaan
   taustavärin sävyyn ilman että väri on kovakoodattu tähän. Rajaus on
   painotettu alas ja kuvaa on zoomattu, jotta auto on isommin esillä. */
.intro_media img {
  /* Zoomataan koolla eika transformilla: paljastusanimaatio ajaa saman
     elementin transformia, joten skaalaus siina haviaisi animaation
     paatteeksi. */
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 72%;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.35) 9%, #000 26%);
  mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.35) 9%, #000 26%);
}
.intro_media-caption {
  position: absolute; left: 1.3rem; bottom: 1.2rem; z-index: 2;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--color-paper);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.5);
}
.intro_side {
  grid-column: 8 / 13;
  /* Ei ylapaddingia: sisalto keskitetaan gridissa. */
  padding-left: clamp(1.2rem, 2vw, 2rem);
}
.intro_side p { color: var(--color-smoke-dark); }
/* Otsikko oikealla, alatekstin päällä */
.intro_side .intro_statement {
  font-size: clamp(2.4rem, 4.4vw, 4.6rem);
  line-height: 1.08;
  letter-spacing: -0.025em;
  max-width: none;
  color: var(--color-ink);
  margin-bottom: clamp(2.8rem, 7vh, 5rem);
}

/* Statsit — linjattu rivi hiusviivoilla, viivat osana designia */
.stats_component {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: clamp(4rem, 8vh, 6.5rem);
  border-top: 1px solid var(--line-light);
}
.background-color-night .stats_component, .background-color-carbon .stats_component { border-color: var(--line-dark); }
.stats_item {
  padding: clamp(2rem, 4vh, 3.2rem) clamp(1.2rem, 2.5vw, 2.5rem) 0.5rem;
  border-left: 1px solid var(--line-light);
}
.background-color-night .stats_item, .background-color-carbon .stats_item { border-color: var(--line-dark); }
.stats_item:first-child { border-left: none; padding-left: 0; }
.stats_value {
  font-family: var(--font-display);
  font-size: clamp(3.4rem, 6.5vw, 6.5rem);
  font-weight: 500;
  line-height: 0.95;
  letter-spacing: -0.03em;
}
.stats_value sup { font-size: 0.32em; color: var(--color-champagne); margin-left: 0.15em; letter-spacing: 0; }
.stats_label {
  margin-top: 1rem;
  font-size: var(--text-tiny);
  text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--color-smoke);
}

/* ---------- Palvelukortit (pesu & fiksaus) ---------- */
.care_grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem, 1.8vw, 1.6rem);
  margin-top: clamp(2.2rem, 4vw, 3.4rem);
}
.care_card {
  display: flex; flex-direction: column;
  border-radius: var(--radius-card);
  overflow: hidden;
  background: var(--color-white);
  border: 1px solid var(--line-light);
  transition: transform 0.6s var(--ease-luxe), box-shadow 0.6s var(--ease-luxe);
}
.care_card:hover { transform: translateY(-5px); box-shadow: 0 34px 58px -40px rgba(22, 21, 17, 0.5); }
.care_card-media { position: relative; aspect-ratio: 4 / 2.9; overflow: hidden; }
.care_card-media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 1.1s var(--ease-luxe);
}
.care_card:hover .care_card-media img { transform: scale(1.05); }
/* Pystykuva rajautuu ylhäältä, jotta konsoli ja vaihdevalitsin näkyvät */
.care_card-media img.is-interior { object-position: center 22%; }
.care_card-index {
  position: absolute; top: 0.85rem; left: 0.95rem; z-index: 2;
  font-size: var(--text-tiny); letter-spacing: 0.2em; font-weight: 500;
  color: var(--color-night);
  background: var(--color-champagne);
  padding: 0.32rem 0.6rem; border-radius: 6px;
}
.care_card-body {
  display: flex; flex-direction: column; flex: 1;
  padding: clamp(1.2rem, 1.8vw, 1.6rem);
}
.care_card-title {
  font-family: var(--font-display);
  font-size: clamp(1.3rem, 1.9vw, 1.65rem); font-weight: 500;
  letter-spacing: -0.01em;
}
.care_card-desc {
  font-size: var(--text-small); color: var(--color-smoke-dark);
  line-height: 1.65; margin-top: 0.65rem;
}
.care_card-meta {
  display: flex; align-items: center; gap: 0.55rem;
  margin-top: auto; padding-top: 1.2rem;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--color-smoke);
}
.care_card-meta::before {
  content: ''; width: 5px; height: 5px; border-radius: 50%;
  background: var(--color-champagne); flex-shrink: 0;
}

/* ---------- Ajanvaraus — tumma keskitetty paneeli ---------- */
.booking_panel {
  border-radius: 24px;
  background: var(--color-carbon);
  border: 1px solid var(--line-dark);
  color: var(--color-paper);
  padding: clamp(2.2rem, 5vw, 4.2rem) clamp(1.4rem, 4vw, 3.5rem);
  text-align: center;
}
.booking_panel .micro-label { justify-content: center; }
.booking_heading {
  font-family: var(--font-display);
  font-size: clamp(1.9rem, 3.6vw, 3.2rem); font-weight: 500;
  line-height: 1.06; letter-spacing: -0.02em;
  margin-top: 0.8rem;
}
.booking_lead {
  color: var(--color-smoke); max-width: 40rem;
  margin: 1rem auto 0; line-height: 1.68;
}
/* Palveluvalinnan esikatselu — havainnollistaa mihin upotus tulee */
.booking_chips {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem;
  margin-top: clamp(1.8rem, 3vw, 2.6rem);
}
.booking_chip {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em;
  padding: 0.7rem 1.15rem; border-radius: 8px;
  background: rgba(251, 250, 247, 0.07);
  color: rgba(251, 250, 247, 0.8);
}
.booking_chip.is-active { background: var(--color-champagne); color: var(--color-night); }
.booking_slot {
  margin-top: 1.4rem;
  border: 1px dashed rgba(251, 250, 247, 0.22);
  border-radius: 16px;
  padding: clamp(2rem, 4vw, 3.2rem) 1.2rem;
}
.booking_slot p {
  font-size: var(--text-small); color: var(--color-smoke);
  max-width: 38rem; margin-inline: auto; line-height: 1.65;
}
.booking_slot .heading-style-h4 { color: var(--color-paper); }
/* gap puuttui kokonaan, joten kaksi nappia olivat kiinni toisissaan.
   Sama arvo toimii myos mobiilin pystysuuntaisessa pinossa. */
.booking_actions { margin-top: 1.8rem; display: flex; justify-content: center; gap: 0.75rem; }

/* ---------- Services index list ---------- */
.section_services { position: relative; }
.services_list { border-top: 1px solid var(--line-light); }
.background-color-night .services_list, .background-color-carbon .services_list { border-color: var(--line-dark); }
.services_item {
  position: relative;
  display: grid;
  grid-template-columns: 4rem 1fr auto auto;
  align-items: center;
  gap: clamp(1rem, 3vw, 3rem);
  padding: clamp(1.6rem, 3.5vh, 2.6rem) 0;
  border-bottom: 1px solid var(--line-light);
  transition: padding-left 0.6s var(--ease-luxe);
}
.background-color-night .services_item, .background-color-carbon .services_item { border-color: var(--line-dark); }
.services_item:hover { padding-left: 1.25rem; }
.services_index { font-size: var(--text-tiny); color: var(--color-smoke); letter-spacing: 0.15em; }
.services_title {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 3vw, 2.6rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.05;
  transition: color 0.4s;
}
.services_item:hover .services_title { color: var(--color-champagne); }
.services_desc { font-size: var(--text-small); color: var(--color-smoke-dark); max-width: 22rem; }
.background-color-night .services_desc { color: var(--color-smoke); }
.services_arrow {
  width: 52px; height: 52px; border-radius: 50%;
  border: 1px solid var(--line-light);
  display: grid; place-items: center;
  transition: background-color 0.5s var(--ease-luxe), transform 0.5s var(--ease-luxe), border-color 0.5s;
  flex-shrink: 0;
}
.background-color-night .services_arrow { border-color: var(--line-dark); }
.services_item:hover .services_arrow {
  background: var(--color-ink); color: var(--color-paper);
  transform: rotate(45deg); border-color: transparent;
}
.background-color-night .services_item:hover .services_arrow { background: var(--color-paper); color: var(--color-ink); }
.services_preview {
  position: fixed; z-index: 90;
  width: 300px; aspect-ratio: 4 / 3;
  border-radius: var(--radius-card);
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transform: scale(0.85) rotate(-3deg);
  transition: opacity 0.4s var(--ease-luxe), transform 0.5s var(--ease-luxe);
}
.services_preview.is-visible { opacity: 1; transform: scale(1) rotate(0deg); }
.services_preview img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0; transition: opacity 0.35s;
}
.services_preview img.is-active { opacity: 1; }

/* ---------- Order split (Semler-tyyli) ---------- */
.section_order { position: relative; overflow: hidden; }
.order_component {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  min-height: 80vh;
  align-items: center;
}
.order_background { position: absolute; inset: 0; overflow: hidden; }
.order_background img {
  width: 100%; height: 100%; object-fit: cover;
  opacity: 0.5;
  filter: blur(1.5px) brightness(0.8) saturate(1.05);
  transform: scale(1.06);
}
.order_background::after {
  content: ''; position: absolute; inset: 0;
  background:
    linear-gradient(100deg, var(--color-night) 22%, rgba(17, 16, 16, 0.55) 62%, rgba(17, 16, 16, 0.8) 100%),
    linear-gradient(to top, var(--color-night) 2%, transparent 30%),
    linear-gradient(to bottom, var(--color-night) 2%, transparent 30%);
}
.order_background img { will-change: transform; }
.order_content { position: relative; z-index: 3; max-width: 40rem; padding: var(--space-section) 0; }
.order_content .heading-style-display { max-width: 13ch; }
.order_image-panel {
  position: absolute;
  right: clamp(1rem, 6vw, 7rem);
  top: 50%;
  transform: translateY(-50%);
  width: clamp(240px, 30vw, 460px);
  aspect-ratio: 3 / 4.1;
  overflow: hidden;
  border-radius: 24px;
  z-index: 2;
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.5);
}
/* Tilaussektion otsikko kevyemmällä leikkauksella */
.order_content .heading-style-display { font-weight: 400; letter-spacing: -0.035em; }
/* Ylimääräinen korkeus molempiin päihin, jotta parallax ei paljasta
   tyhjää yläreunasta kun kuvaa liikutetaan alaspäin. */
.order_image-panel img {
  position: absolute; left: 0; top: -8%;
  width: 100%; height: 116%; object-fit: cover;
}
.order_steps { display: flex; gap: 2.5rem; margin-top: 2.8rem; flex-wrap: wrap; }
.order_step { max-width: 9.5rem; }
.order_step-num { font-size: var(--text-tiny); color: var(--color-champagne); letter-spacing: 0.2em; }
.order_step-title { font-family: var(--font-display); font-weight: 500; font-size: 1.05rem; margin-top: 0.5rem; }

/* ---------- Quote / palaute — tumma premium-kortti, kuva + limittyvä sitaatti ---------- */
.section_quote { position: relative; }
.quote_component {
  position: relative;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: clamp(2rem, 4.5vw, 5rem);
  align-items: center;
  color: var(--color-paper);
}
.quote_media {
  grid-column: 1 / 6;
  position: relative;
  aspect-ratio: 4 / 4.4;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 40px 80px rgba(0, 0, 0, 0.45);
}
/* Ylimääräinen korkeus jaetaan ylä- ja alareunalle, jotta parallax ei
   paljasta tyhjää yläreunasta kun kuvaa liikutetaan alaspäin. */
.quote_media img {
  position: absolute; left: 0; top: -8%;
  width: 100%; height: 116%; object-fit: cover;
}
.quote_media-caption {
  position: absolute; left: 1.2rem; bottom: 1.1rem; z-index: 2;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--color-paper);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.5);
}
.quote_body { grid-column: 6 / 13; position: relative; }
.quote_mark {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(5rem, 8vw, 8rem);
  line-height: 0.4;
  margin-bottom: 1.2rem;
  color: var(--color-champagne);
}
.quote_text {
  font-family: var(--font-display);
  font-size: clamp(1.3rem, 2vw, 1.95rem);
  font-weight: 500;
  line-height: 1.32;
  letter-spacing: -0.01em;
  max-width: 26ch;
}
.quote_author {
  position: relative;
  display: flex; align-items: center; gap: 1.1rem;
  margin-top: 2.2rem; padding-top: 1.6rem;
}
/* Lyhyt erotinviiva, ei koko palstan levyinen */
.quote_author::before {
  content: ''; position: absolute; left: 0; top: 0;
  width: clamp(4rem, 22%, 9rem); height: 1px;
  background: var(--line-dark);
}
.quote_author .micro-label { color: var(--color-smoke); }
.quote_avatar {
  position: relative;
  width: 54px; height: 54px; border-radius: 50%;
  overflow: hidden;
  background: var(--color-champagne-soft);
  border: 1px solid rgba(200, 163, 95, 0.4);
  color: var(--color-champagne);
  display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 500; font-size: 1.05rem;
  flex-shrink: 0;
}
/* Kuva täyttää ympyrän ja peittää monogrammin */
.quote_avatar img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center 18%;
}

/* ---------- CTA split ---------- */
.section_cta-split { position: relative; }
.cta-split_component {
  display: flex;
  min-height: 62vh;
}
.cta-split_panel {
  position: relative;
  flex: 1;
  display: flex; align-items: flex-end;
  padding: clamp(2rem, 4vw, 4rem);
  overflow: hidden;
  transition: flex 0.9s var(--ease-luxe);
  border-right: 1px solid var(--line-dark);
}
.cta-split_panel:last-child { border-right: none; }
.cta-split_panel:hover { flex: 1.6; }
.cta-split_panel img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0.45;
  transition: opacity 0.8s var(--ease-luxe), transform 1.4s var(--ease-luxe);
}
.cta-split_panel:hover img { opacity: 0.65; transform: scale(1.04); }
.cta-split_panel::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(17,16,16,0.9) 0%, rgba(17,16,16,0.1) 60%);
}
.cta-split_content { position: relative; z-index: 2; }
.cta-split_title { font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 2.8rem); font-weight: 500; letter-spacing: -0.02em; }
.cta-split_desc { color: var(--color-paper); opacity: 0.75; max-width: 24rem; margin-top: 0.6rem; }
.cta-split_content .button { margin-top: 1.5rem; }

/* ---------- Footer ---------- */
.footer_component {
  position: relative;
  background: var(--color-night);
  color: var(--color-paper);
  border-top: 1px solid var(--line-dark);
  overflow: hidden;
}
.footer_top {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 3rem;
  padding-top: clamp(5rem, 9vw, 9rem);
  padding-bottom: 4rem;
}
.footer_brand p { color: var(--color-smoke); font-size: var(--text-small); max-width: 20rem; margin-top: 1.2rem; }
.footer_heading {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.22em;
  color: var(--color-smoke); margin-bottom: 1.3rem; font-weight: 500;
}
.footer_list { display: flex; flex-direction: column; gap: 0.65rem; font-size: var(--text-small); }
.footer_list a { position: relative; width: fit-content; color: var(--color-paper); opacity: 0.8; transition: opacity 0.3s, color 0.3s; }
.footer_list a:hover { opacity: 1; color: var(--color-champagne); }
.footer_list span { color: var(--color-smoke); }
/* Sanamerkki alimmaisena: footerin levyinen ja hieman ruudun ulkopuolelle rajautuva */
.footer_wordmark {
  display: block;
  margin-top: 1.6rem;
  /* Sanamerkki oli rajattu alareunasta (-0.17em) niin etta kirjainten
     jalka jai footerin ulkopuolelle. Nyt se nakyy kokonaan. */
  margin-bottom: 0;
  /* Kirjainten muste ulottuu rivilaatikon alapuolelle noin 0,06 em;
     footerilla on overflow: hidden, joten ilman tata jalka leikkautuisi. */
  padding-bottom: 0.1em;
  text-align: center;
  user-select: none;
  font-family: var(--font-display);
  font-weight: 700;
  /* Lahtokoko vain siksi ajaksi ennen kuin pcc.js mittaa merkin ja skaalaa
     sen tasan kaareen levyiseksi. Ei !importantia: sovitus kirjoittaa
     lopullisen koon inline-tyyliksi. */
  font-size: min(8.2vw, 130px);
  /* Oli 0.8, jolloin kirjainten ylä- ja alareuna jaivat laatikon
     ulkopuolelle ja footerin overflow: hidden leikkasi ne. */
  line-height: 1;
  letter-spacing: -0.012em;
  text-transform: uppercase;
  color: rgba(251, 250, 247, 0.1);
  white-space: nowrap;
}
.footer_bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1.4rem 0 1.6rem;
  border-top: 1px solid var(--line-dark);
  font-size: var(--text-tiny);
  color: var(--color-smoke);
  letter-spacing: 0.06em;
}
.footer_bottom a:hover { color: var(--color-paper); }

/* ---------- Page hero (sisäsivut) ---------- */
.section_page-hero { position: relative; padding-top: clamp(9rem, 16vh, 13rem); }

/* Koko ruudun levyinen taustakuva sisäsivun heroon — ei täyskorkea sektio,
   vaan kuva häivytetään pohjaväriin ennen sisältöä. */
.section_page-hero.has-media { overflow: hidden; padding-bottom: clamp(2rem, 4vw, 4rem); }
.section_page-hero.has-media > .padding-global { position: relative; z-index: 2; }
.page-hero_media { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.page-hero_media img {
  width: 100%; height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center 56%;
  filter: brightness(0.46) saturate(0.88) contrast(1.04);
}
/* Kaksi kerrosta: pystysuunta sulattaa kuvan pohjaväriin, vaakasuunta
   pitää otsikkopuolen tummana jotta teksti erottuu. */
.page-hero_media::after {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(to right,
      rgba(6, 5, 5, 0.82) 0%, rgba(6, 5, 5, 0.6) 26%,
      rgba(6, 5, 5, 0.28) 52%, rgba(6, 5, 5, 0.12) 76%, transparent 100%),
    linear-gradient(to bottom,
      rgba(6, 5, 5, 0.62) 0%, rgba(6, 5, 5, 0.3) 26%,
      rgba(17, 16, 16, 0.55) 62%, rgba(17, 16, 16, 0.92) 86%, var(--color-night) 100%);
}
.page-hero_heading { max-width: 14ch; }
.page-hero_row {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem;
  margin-top: 2.6rem; flex-wrap: wrap;
}
.page-hero_lead { max-width: 34rem; color: var(--color-smoke); font-size: clamp(0.95rem, 1.02vw, 1.06rem); line-height: 1.6; }
.background-color-paper .page-hero_lead { color: var(--color-smoke-dark); }

/* ---------- Inventory (vaihtoautot) ---------- */
.section_inventory {
  padding-top: clamp(1.5rem, 2.4vw, 2.6rem);
  padding-bottom: clamp(5rem, 7vw, 8.5rem);
}

/* Suodatinpalkki = sama lasikapseli kuin navissa, kaikki suodattimet esillä */
/* Suodattimet vasemmalle, järjestys ja tyhjennys oikeaan laitaan.
   Uloin kääre EI rivity — vain suodatinryhmä sisällään, jolloin työkalut
   pysyvät oikeassa reunassa vaikka suodattimia olisi monta riviä. */
.inventory_filterbar-inner {
  display: flex; flex-wrap: nowrap; align-items: flex-start;
  gap: 0.6rem;
  /* Negatiivinen marginaali kumoaa kapselin oman paddingin, jolloin
     pillerien reunat linjautuvat otsikon ja korttien kanssa. */
  margin-left: -7px; margin-right: -7px;
  padding: 6px 7px;
  border-radius: 12px;
  background: rgba(19, 18, 17, 0.55);
  backdrop-filter: blur(22px) saturate(1.05);
  -webkit-backdrop-filter: blur(22px) saturate(1.05);
}
.filterbar_group {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem;
}
.filterbar_tools {
  flex: 0 0 auto;
  display: flex; align-items: center; gap: 0.25rem;
}

.filter_select-wrapper { position: relative; }
.filter_select, .filter_input {
  appearance: none;
  background: rgba(251, 250, 247, 0.07);
  border: none;
  border-radius: 8px;
  color: rgba(251, 250, 247, 0.8);
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 0.7rem 2.1rem 0.7rem 1.05rem;
  min-height: 40px;
  white-space: nowrap;
  cursor: pointer;
  transition: color 0.35s, background-color 0.35s;
}
.filter_input { padding-right: 1.1rem; cursor: text; min-width: 12rem; }
.filter_select:hover, .filter_input:hover { color: var(--color-paper); background: rgba(251, 250, 247, 0.13); }
.filter_select:focus-visible, .filter_input:focus-visible { outline: none; box-shadow: inset 0 0 0 1px var(--color-champagne); }
.filter_select.is-active { color: var(--color-champagne); }
.filter_select option {
  background: var(--color-carbon); color: var(--color-paper);
  text-transform: none; letter-spacing: 0; font-size: 0.9rem;
}
.filter_select-wrapper::after {
  content: ''; position: absolute; right: 0.95rem; top: 50%;
  width: 6px; height: 6px;
  border-right: 1.4px solid rgba(251, 250, 247, 0.45);
  border-bottom: 1.4px solid rgba(251, 250, 247, 0.45);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}

/* Toimintopillerit — sama muotokieli kuin navin linkeissä */
.filter_reset {
  display: inline-flex; align-items: center; gap: 0.55rem;
  font-family: inherit;
  font-size: 0.72rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.14em;
  min-height: 40px; padding: 0.7rem 1.05rem;
  border: none; border-radius: 8px;
  background: rgba(251, 250, 247, 0.07);
  color: rgba(251, 250, 247, 0.8);
  white-space: nowrap; cursor: pointer;
  transition: color 0.35s, background-color 0.35s;
}
.filter_reset { background: transparent; color: var(--color-smoke); }
.filter_reset:hover { background: rgba(251, 250, 247, 0.07); color: var(--color-champagne); }

.inventory_count-row {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: clamp(2.6rem, 4vw, 3.8rem) 0 1.6rem;
  color: var(--color-smoke);
  font-size: var(--text-small);
}

.inventory_grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem, 2vw, 1.75rem);
}
.card_car {
  position: relative;
  grid-column: span 1;
  border-radius: var(--radius-card);
  overflow: hidden;
  background: rgba(251, 250, 247, 0.05);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(251, 250, 247, 0.09);
  transition: border-color 0.5s, background-color 0.5s, transform 0.7s var(--ease-luxe);
  display: block;
}
.card_car:hover { border-color: rgba(251, 250, 247, 0.2); background: rgba(251, 250, 247, 0.08); }
.card_car.is-featured { grid-column: span 2; grid-row: span 1; }
.card_car-image {
  position: relative;
  aspect-ratio: 4 / 2.9;
  overflow: hidden;
  background: var(--color-carbon-2);
}
.card_car.is-featured .card_car-image { aspect-ratio: 16 / 8.2; }
.card_car-image img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  /* Sama napakampi ajoitus kuin esittelykarusellin korteilla. */
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.32s ease;
}
.card_car-image img.is-hover { opacity: 0; transform: scale(1.05); }
.card_car:hover .card_car-image img.is-primary { opacity: 0; }
.card_car:hover .card_car-image img.is-hover { opacity: 1; transform: scale(1); }
.card_car:hover .card_car-image img.is-primary:only-child { opacity: 1; transform: scale(1.06); }
.card_car-badge {
  position: absolute; top: 1rem; left: 1rem; z-index: 3;
  padding: 0.4rem 0.9rem;
  background: rgba(17,16,16,0.65);
  backdrop-filter: blur(8px);
  border-radius: var(--radius-button);
  font-size: var(--text-tiny);
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--color-champagne);
}
.card_car-body { padding: 1.3rem 1.4rem 1.5rem; }
.card_car-title { font-family: var(--font-display); font-size: 1.25rem; font-weight: 500; letter-spacing: -0.01em; }
.card_car-version {
  color: var(--color-smoke); font-size: var(--text-small); margin-top: 0.15rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* Tiedot omina lokeroinaan kuten vanhalla sivustolla — helpompi silmäillä
   kuin pisteillä eroteltu jono */
.card_car-specs {
  display: flex; flex-wrap: wrap; gap: 0.35rem;
  margin-top: 0.9rem;
  font-size: var(--text-tiny);
  letter-spacing: 0.05em;
}
.card_car-specs span {
  padding: 0.28rem 0.55rem;
  border-radius: 6px;
  background: rgba(251, 250, 247, 0.07);
  border: 1px solid rgba(251, 250, 247, 0.08);
  color: rgba(251, 250, 247, 0.72);
  white-space: nowrap;
}
.background-color-paper .card_car-specs span,
.background-color-bone .card_car-specs span {
  background: rgba(22, 21, 17, 0.05);
  border-color: rgba(22, 21, 17, 0.1);
  color: var(--color-smoke-dark);
}
.card_car-footer {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  margin-top: 1rem; padding-top: 1rem;
  border-top: 1px solid var(--line-dark);
}
.card_car-price { font-family: var(--font-display); font-size: 1.2rem; font-weight: 500; color: var(--color-paper); }
.card_car-monthly { font-size: var(--text-tiny); color: var(--color-smoke); }
.inventory_empty {
  grid-column: 1 / -1;
  padding: 5rem 2rem; text-align: center; color: var(--color-smoke);
  border: 1px dashed var(--line-dark); border-radius: var(--radius-card);
}

/* ---------- Car detail ---------- */
.section_car-hero {
  padding-top: clamp(7rem, 12vh, 9rem);
  /* Galleria ja tietokortti ovat samassa sektiossa, joten alapehmuste
     tulee tänne (aiemmin erillisen car-info-sektion padding-luokalta) */
  padding-bottom: var(--space-section-small);
}
.car-hero_breadcrumb {
  display: flex; gap: 0.6rem; align-items: center;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.16em;
  color: var(--color-smoke); margin-bottom: 1.6rem;
}
.car-hero_breadcrumb a:hover { color: var(--color-paper); }
.car-hero_gallery { display: grid; grid-template-columns: 1fr; gap: 0.6rem; }
.car-hero_main {
  position: relative;
  aspect-ratio: 16 / 8.5;
  border-radius: var(--radius-card);
  overflow: hidden;
  background: var(--color-carbon);
}
.car-hero_main img { width: 100%; height: 100%; object-fit: cover; }
/* Nuolinavigaatio pääkuvan päällä: autolla voi olla kymmeniä kuvia, jotka
   eivät mahdu thumb-nauhaan kerralla. Sama lasikieli kuin navin kapselissa. */
.car-hero_nav {
  position: absolute; top: 50%; z-index: 2;
  transform: translateY(-50%);
  width: 46px; height: 46px;
  display: grid; place-items: center;
  border: 1px solid rgba(251, 250, 247, 0.16);
  border-radius: 50%;
  background: rgba(10, 9, 9, 0.45);
  backdrop-filter: blur(14px) saturate(1.05);
  -webkit-backdrop-filter: blur(14px) saturate(1.05);
  color: var(--color-paper);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.35s var(--ease-luxe), background-color 0.3s ease-out, border-color 0.3s ease-out;
}
.car-hero_nav.is-prev { left: 0.9rem; }
.car-hero_nav.is-next { right: 0.9rem; }
.car-hero_nav svg { width: 20px; height: 20px; }
.car-hero_nav:hover { background: rgba(10, 9, 9, 0.75); border-color: rgba(200, 163, 95, 0.45); }
.car-hero_gallery:hover .car-hero_nav,
.car-hero_nav:focus-visible { opacity: 1; }
/* Kosketuslaitteilla ei ole hoveria, joten nuolet ovat aina näkyvissä */
@media (hover: none) {
  .car-hero_nav { opacity: 1; }
}
.car-hero_counter {
  position: absolute; right: 0.9rem; bottom: 0.9rem; z-index: 2;
  padding: 0.35rem 0.7rem;
  border-radius: 9px;
  background: rgba(10, 9, 9, 0.5);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(251, 250, 247, 0.12);
  font-size: var(--text-tiny);
  letter-spacing: 0.1em;
  color: var(--color-paper);
}
/* [hidden] häviäisi muuten display: grid -säännölle (sama spesifisyys) */
.car-hero_nav[hidden], .car-hero_counter[hidden] { display: none; }
.car-hero_thumbs {
  display: flex; gap: 0.6rem;
  overflow-x: auto; overscroll-behavior-x: contain;
  padding-bottom: 0.3rem;
  scrollbar-width: none;
}
.car-hero_thumbs::-webkit-scrollbar { display: none; }
.car-hero_thumb {
  flex: 0 0 auto; width: 130px; aspect-ratio: 4 / 3;
  border-radius: 12px; overflow: hidden;
  border: 1px solid transparent;
  opacity: 0.55;
  transition: opacity 0.3s, border-color 0.3s;
}
.car-hero_thumb img { width: 100%; height: 100%; object-fit: cover; }
.car-hero_thumb.is-active, .car-hero_thumb:hover { opacity: 1; border-color: var(--color-champagne); }

.car_layout {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 2rem;
  align-items: start;
}
.car_summary-card {
  position: sticky; top: 90px;
  background: rgba(251, 250, 247, 0.05);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(251, 250, 247, 0.09);
  border-radius: 20px;
  padding: clamp(1.5rem, 2.5vw, 2.2rem);
}
.car_summary-title { font-family: var(--font-display); font-size: 1.6rem; font-weight: 500; line-height: 1.1; }
.car_summary-version { color: var(--color-smoke); font-size: var(--text-small); margin-top: 0.4rem; }
.car_summary-price-row { display: flex; align-items: baseline; gap: 0.9rem; margin-top: 1.4rem; }
.car_summary-price { font-family: var(--font-display); font-size: 2.1rem; font-weight: 500; color: var(--color-champagne); }
.car_summary-monthly { color: var(--color-smoke); font-size: var(--text-small); }
.car_summary-note { font-size: var(--text-tiny); color: var(--color-smoke); margin-top: 0.4rem; }
.car_summary-specs {
  display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem 1rem;
  margin: 1.6rem 0;
  padding: 1.4rem 0;
  border-top: 1px solid var(--line-dark);
  border-bottom: 1px solid var(--line-dark);
}
.car_summary-spec-label { font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em; color: var(--color-smoke); }
.car_summary-spec-value { font-size: var(--text-small); font-weight: 500; margin-top: 0.2rem; }
.car_summary-actions { display: flex; flex-direction: column; gap: 0.7rem; }
.car_summary-actions .button { width: 100%; justify-content: space-between; }

.car_section-heading { margin-bottom: 1.8rem; }
.car_description { color: var(--color-smoke); max-width: 38rem; }
.car_equipment-list {
  columns: 2; column-gap: 2.5rem;
  margin-top: 1.5rem;
}
.car_equipment-list li {
  position: relative;
  padding: 0.45rem 0 0.45rem 1.3rem;
  font-size: var(--text-small);
  color: var(--color-paper);
  opacity: 0.85;
  break-inside: avoid;
}
.car_equipment-list li::before {
  content: ''; position: absolute; left: 0; top: 0.95rem;
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--color-champagne);
}
.car_tech-table { width: 100%; border-collapse: collapse; margin-top: 1.5rem; }
.car_tech-table tr { border-bottom: 1px solid var(--line-dark); }
.car_tech-table td { padding: 0.85rem 0; font-size: var(--text-small); }
.car_tech-table td:first-child { color: var(--color-smoke); padding-right: 2rem; white-space: nowrap; }

.car_block { padding-top: 3.5rem; margin-top: 3.5rem; border-top: 1px solid var(--line-dark); }
.car_block:first-child { padding-top: 0; margin-top: 0; border-top: none; }

/* Calculator */
.calculator_component {
  background: rgba(251, 250, 247, 0.05);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(251, 250, 247, 0.09);
  border-radius: 20px;
  padding: clamp(1.5rem, 3vw, 2.5rem);
  display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem;
  align-items: center;
}
.calculator_fields { display: grid; gap: 1.1rem; }
.calculator_field label {
  display: block;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.16em;
  color: var(--color-smoke); margin-bottom: 0.45rem;
}
.calculator_field input {
  width: 100%;
  background: var(--color-night);
  border: 1px solid var(--line-dark);
  border-radius: var(--radius-input);
  padding: 0.8rem 1rem;
  font-size: var(--text-small);
  transition: border-color 0.3s;
}
.calculator_field input:focus { outline: none; border-color: var(--color-champagne); }
.calculator_result { text-align: center; }
.calculator_result-value {
  font-family: var(--font-display);
  font-size: clamp(2.5rem, 4vw, 3.8rem);
  font-weight: 500;
  color: var(--color-champagne);
  line-height: 1;
}
.calculator_result-label { color: var(--color-smoke); font-size: var(--text-small); margin-top: 0.8rem; }
.calculator_note { font-size: var(--text-tiny); color: var(--color-smoke); margin-top: 1.4rem; max-width: 22rem; margin-inline: auto; }

/* ---------- Yhteystiedot: suorat yhteystavat lomakkeen rinnalla ---------- */
.contact_direct { list-style: none; margin-top: clamp(2rem, 3.5vw, 3rem); max-width: 26rem; }
.contact_direct li {
  display: flex; flex-direction: column; gap: 0.28rem;
  padding: 1.05rem 0;
  border-top: 1px solid var(--line-light);
}
.background-color-night .contact_direct li { border-top-color: var(--line-dark); }
.contact_direct li:last-child { border-bottom: 1px solid var(--line-light); }
.background-color-night .contact_direct li:last-child { border-bottom-color: var(--line-dark); }
.contact_direct-label {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--color-smoke);
}
.contact_direct a {
  font-family: var(--font-display);
  font-size: clamp(1.05rem, 1.4vw, 1.25rem); font-weight: 500;
  color: var(--color-ink); width: fit-content;
}
.background-color-night .contact_direct a { color: var(--color-paper); }
.contact_direct a:hover { color: var(--color-champagne); }
.contact_direct-note { font-size: var(--text-small); color: var(--color-smoke); }

/* Tumma lomakekortti — sama pintakieli kuin tiimikorteissa */
.form_contact.is-card,
.background-color-paper .form_contact.is-card {
  background: var(--color-carbon);
  border: 1px solid rgba(251, 250, 247, 0.1);
  border-radius: 20px;
  padding: clamp(1.5rem, 2.8vw, 2.4rem);
  color: var(--color-paper);
}
.form_contact.is-card .form_field label { color: var(--color-smoke); }
.background-color-paper .form_contact.is-card .form_field input,
.background-color-paper .form_contact.is-card .form_field textarea,
.background-color-paper .form_contact.is-card .form_field select,
.form_contact.is-card .form_field input,
.form_contact.is-card .form_field textarea,
.form_contact.is-card .form_field select {
  background: rgba(251, 250, 247, 0.05);
  border-color: rgba(251, 250, 247, 0.14);
  color: var(--color-paper);
}
.form_contact.is-card .form_field input::placeholder,
.form_contact.is-card .form_field textarea::placeholder { color: var(--color-smoke); }
.form_contact.is-card .form_field select option { background: var(--color-carbon); color: var(--color-paper); }
.form_contact.is-card .form_field input:focus,
.form_contact.is-card .form_field textarea:focus,
.form_contact.is-card .form_field select:focus { border-color: var(--color-champagne); }
/* Lomakkeen nappi on vaalea tummalla kortilla */
.background-color-paper .form_contact.is-card .button {
  --btn-bg: var(--color-paper);
  --btn-label: var(--color-night);
  --btn-circle-bg: var(--color-night);
  --btn-circle-fg: var(--color-paper);
}

/* ---------- Team — isot kortit. Mediakenttä on valmis kuvalle:
   pudota <img> .team_card-media -elementin sisään ja monogrammi väistyy. ---------- */
.team_cards {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(1.2rem, 2vw, 2rem);
  max-width: 64rem;
  margin-top: clamp(2.2rem, 4vw, 3.4rem);
}
/* Kortit ovat aina tummia, myös vaalean sektion päällä */
.team_card {
  position: relative;
  border-radius: var(--radius-card);
  overflow: hidden;
  background: var(--color-carbon);
  border: 1px solid rgba(251, 250, 247, 0.1);
  color: var(--color-paper);
  transition: transform 0.6s var(--ease-luxe), box-shadow 0.6s var(--ease-luxe),
              border-color 0.6s var(--ease-luxe);
}
.team_card:hover {
  transform: translateY(-6px);
  border-color: rgba(200, 163, 95, 0.42);
  box-shadow: 0 40px 70px -42px rgba(0, 0, 0, 0.8);
}
.team_card-media {
  position: relative;
  aspect-ratio: 4 / 3.3;
  display: grid; place-items: center;
  overflow: hidden;
  background:
    radial-gradient(70% 90% at 30% 15%, rgba(200, 163, 95, 0.2) 0%, transparent 62%),
    linear-gradient(150deg, rgba(251, 250, 247, 0.06) 0%, transparent 60%);
}
/* Kuvan alareuna sulaa kortin tummaan runkoon */
.team_card-media::before {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 42%;
  z-index: 1; pointer-events: none;
  background: linear-gradient(to top, var(--color-carbon) 0%, rgba(26, 25, 23, 0.55) 42%, transparent 100%);
}
.team_card-media img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center 22%;
}
.team_card-media:has(img) .team_card-monogram { display: none; }
.team_card-monogram {
  font-family: var(--font-display);
  font-size: clamp(3rem, 5.6vw, 4.6rem);
  font-weight: 500; letter-spacing: 0.04em;
  color: transparent;
  -webkit-text-stroke: 1.5px rgba(200, 163, 95, 0.7);
}
.team_card-body { padding: clamp(1.3rem, 2vw, 1.8rem); }
.team_card-name {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 1.8vw, 1.55rem); font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--color-paper);
}
.team_card-role {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--color-smoke); margin-top: 0.45rem;
}
.team_card-links { display: flex; flex-direction: column; gap: 0.4rem; margin-top: 1.1rem; }
.team_card-links a { font-size: 0.95rem; color: var(--color-champagne); width: fit-content; }
.team_card-links a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Team (vanha kompakti listaus) ---------- */
.team_grid { display: grid; grid-template-columns: repeat(2, minmax(0, 22rem)); gap: 1.5rem; }
.team_item {
  display: flex; align-items: center; gap: 1.3rem;
  padding: 1.4rem;
  background: var(--color-carbon);
  border: 1px solid var(--line-dark);
  border-radius: 20px;
}
.background-color-paper .team_item, .background-color-bone .team_item {
  background: var(--color-white); border-color: var(--line-light);
}
.team_avatar {
  position: relative; overflow: hidden;
  width: 72px; height: 72px; border-radius: 50%;
  background: var(--color-champagne-soft);
  color: var(--color-champagne);
  display: grid; place-items: center;
  font-family: var(--font-display); font-size: 1.3rem; font-weight: 500;
  flex-shrink: 0;
}
.team_avatar img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center 18%;
}
.team_name { font-family: var(--font-display); font-weight: 500; font-size: 1.15rem; }
.team_role { font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em; color: var(--color-smoke); margin-top: 0.25rem; }
.team_phone { display: inline-block; font-size: var(--text-small); margin-top: 0.5rem; color: var(--color-champagne); }
.team_phone:hover { text-decoration: underline; }

/* ---------- Forms ---------- */
.form_contact { display: grid; gap: 1.1rem; }
.form_row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.form_field label {
  display: block;
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.16em;
  color: var(--color-smoke); margin-bottom: 0.45rem;
}
.form_field input, .form_field textarea, .form_field select {
  width: 100%;
  background: transparent;
  border: 1px solid var(--line-dark);
  border-radius: var(--radius-input);
  padding: 0.9rem 1.1rem;
  font-size: var(--text-small);
  color: inherit;
  transition: border-color 0.3s;
}
.background-color-paper .form_field input, .background-color-paper .form_field textarea,
.background-color-bone .form_field input, .background-color-bone .form_field textarea {
  border-color: var(--line-light);
}
.form_field input:focus, .form_field textarea:focus { outline: none; border-color: var(--color-champagne); }
.form_field textarea { min-height: 130px; resize: vertical; }
.form_success {
  display: none;
  padding: 1.2rem 1.4rem;
  border: 1px solid var(--color-champagne);
  border-radius: var(--radius-input);
  color: var(--color-champagne);
  font-size: var(--text-small);
}
.form_success.is-visible { display: block; }

/* ---------- Process steps — kiskomalli, ei laatikoita ----------
   Ohut vaakakisko, jonka solmukohdat merkitsevät askeleet. Numero on
   iso typografinen elementti, ei pikkuteksti laatikon nurkassa. */
/* Porrastettu diagonaali: jokainen askel istuu edellistä alempana, ja
   pystyviiva jatkaa liikettä alaspäin. Etenemisen tuntu syntyy asettelusta. */
.process_rail {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: clamp(1.2rem, 2.4vw, 2.6rem);
  list-style: none;
  position: relative;
  margin-top: clamp(3rem, 5vw, 5.5rem);
  padding-bottom: clamp(3rem, 6vw, 7rem);
}
.process_step {
  position: relative;
  padding-top: 1.5rem;
  padding-left: clamp(1rem, 1.4vw, 1.4rem);
  border-top: 1px solid var(--line-light);
}
.background-color-night .process_step { border-top-color: var(--line-dark); }
/* Kaikki askeleet samalla rivillä — ei porrastusta */

/* Pystyviiva askeleen vasemmassa laidassa — kasvaa kun osio tulee näkyviin */
.process_step-node {
  position: absolute; left: 0; top: 0;
  width: 2px; height: clamp(2.2rem, 4vw, 3.4rem);
  background: var(--color-champagne);
  transform: scaleY(0); transform-origin: top center;
}
.process_rail.is-drawn .process_step-node {
  transform: scaleY(1);
  transition: transform 0.75s var(--ease-luxe);
}
.process_rail.is-drawn .process_step:nth-child(1) .process_step-node { transition-delay: 0.1s; }
.process_rail.is-drawn .process_step:nth-child(2) .process_step-node { transition-delay: 0.25s; }
.process_rail.is-drawn .process_step:nth-child(3) .process_step-node { transition-delay: 0.4s; }
.process_rail.is-drawn .process_step:nth-child(4) .process_step-node { transition-delay: 0.55s; }
html:not(.js) .process_step-node { transform: scaleY(1); }

.process_step-num {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(1.7rem, 2.4vw, 2.4rem);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--color-champagne);
  margin-bottom: clamp(2.4rem, 4vw, 4rem);
}

/* ---------- Process steps (vanha ruudukko, käytössä muualla) ---------- */
.process_grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--line-light);
  border: 1px solid var(--line-light);
  border-radius: 20px;
  overflow: hidden;
}
.background-color-night .process_grid, .background-color-carbon .process_grid {
  background: var(--line-dark); border-color: var(--line-dark);
}
.process_item { background: var(--color-paper); padding: 2.2rem 1.8rem 2.6rem; }
.background-color-night .process_item { background: var(--color-carbon); }
.process_num { font-size: var(--text-tiny); letter-spacing: 0.2em; color: var(--color-champagne); }
.process_title { font-family: var(--font-display); font-size: 1.3rem; font-weight: 500; margin-top: 1.1rem; }
.process_desc { font-size: var(--text-small); color: var(--color-smoke-dark); margin-top: 0.7rem; line-height: 1.6; }
.background-color-night .process_desc { color: var(--color-smoke); }
.process_step .process_title { margin-top: 0; font-size: clamp(1.15rem, 1.6vw, 1.5rem); letter-spacing: -0.01em; }
.process_step .process_desc { margin-top: 0.85rem; max-width: 22rem; }

/* ---------- Editorial split ---------- */
.split_component {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: clamp(2.2rem, 3.6vw, 4.5rem);
  align-items: center;
}
/* Kääre EI rajaa sisältöään, jotta pikkukuva voi roikkua isokuvan ulkopuolelle.
   Rajaus ja pyöristys hoidetaan sisemmässä .split_image-main-elementissä. */
.split_image-wrapper {
  grid-column: 1 / 7;
  position: relative;
}
.split_image-main {
  position: relative;
  border-radius: var(--radius-card);
  overflow: hidden;
  aspect-ratio: 4 / 4.6;
}
.split_image-wrapper img { width: 100%; height: 100%; object-fit: cover; }
/* Pääkuvalle varaa parallaxille tilaa molempiin päihin, jottei ylä- tai
   alareuna jää vajaaksi kun kuvaa liikutetaan. */
.split_image-main img {
  position: absolute; left: 0; top: -8%;
  width: 100%; height: 116%;
}
.split_image-small {
  position: absolute;
  right: clamp(-5.5rem, -4vw, -2.5rem);
  bottom: clamp(-3rem, -2vw, -1.5rem);
  width: clamp(200px, 21vw, 310px);
  aspect-ratio: 1;
  border-radius: var(--radius-card);
  overflow: hidden;
  border: 6px solid var(--color-paper);
  box-shadow: 0 32px 60px -34px rgba(22, 21, 17, 0.55);
  z-index: 3;
}
.background-color-night .split_image-small { border-color: var(--color-night); }
.split_image-small img { width: 100%; height: 100%; object-fit: cover; }
.split_content { grid-column: 8 / 13; }
/* Molemmat aina ensimmaiselle riville. Jos sisalto on merkkauksessa ennen
   kuvaa, gridin automaattisijoittelu tyontaisi kuvan seuraavalle riville,
   koska sen sarakkeet jaavat kursorin taakse. */
.split_image-wrapper, .split_content { grid-row: 1; }
.split_component.is-flipped .split_image-wrapper { grid-column: 7 / 13; order: 2; }
.split_component.is-flipped .split_content { grid-column: 1 / 6; order: 1; }
.split_content .checklist { margin-top: 1.9rem; }
/* Checkmark istuu omassa kehyksessään → erottuu selvästi taustasta */
.checklist li {
  position: relative;
  padding: 0.62rem 0 0.62rem 2.6rem;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-ink);
}
.background-color-night .checklist li,
.background-color-carbon .checklist li { color: var(--color-paper); }
.checklist li + li { border-top: 1px solid rgba(22, 21, 17, 0.08); }
.background-color-night .checklist li + li { border-top-color: rgba(251, 250, 247, 0.08); }
/* Täytetty kultainen ympyrä ja vaalea check — erottuu selvästi vaaleaa taustaa vasten */
.checklist li::before {
  content: ''; position: absolute; left: 0; top: 50%;
  width: 20px; height: 20px; margin-top: -10px;
  border-radius: 50%;
  background: var(--color-champagne);
}
.checklist li::after {
  content: ''; position: absolute; left: 6px; top: 50%;
  width: 8px; height: 4px; margin-top: -3.5px;
  border-left: 2px solid var(--color-night);
  border-bottom: 2px solid var(--color-night);
  transform: rotate(-45deg);
}

/* ---------- Yrityksestä: manifesti + faktalista ---------- */
/* Väittämä omalla rivillään koko leveydeltä, sen alla kuva + sisältö splittinä */
.intro_statement.is-about {
  max-width: 30ch;
  font-size: clamp(1.9rem, 3.4vw, 3.5rem);
}
.about_split { margin-top: clamp(3rem, 5vw, 5.5rem); align-items: center; }
.about_split .split_image-main { aspect-ratio: 4 / 3.2; }
.about_manifesto-lead { color: var(--color-smoke-dark); line-height: 1.7; }
.about_facts { margin-top: clamp(1.8rem, 3vw, 2.8rem); }
.about_fact {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1.2rem;
  padding: 0.95rem 0;
  border-top: 1px solid var(--line-light);
}
.about_fact:last-child { border-bottom: 1px solid var(--line-light); }
.about_fact dt {
  font-size: var(--text-tiny); text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--color-smoke); white-space: nowrap;
}
.about_fact dd { font-size: 0.95rem; font-weight: 500; text-align: right; }

/* ---------- Yrityksestä: aikajana pystykiskolla ---------- */
.about_timeline {
  --tl-rail: 10rem;
  position: relative;
  margin-top: clamp(3rem, 5vw, 5.5rem);
}
.about_timeline-rail {
  position: absolute; left: var(--tl-rail); top: 0.9rem; bottom: 3.2rem;
  width: 1px; background: var(--line-light);
}
.background-color-night .about_timeline-rail { background: var(--line-dark); }
.about_timeline-fill {
  position: absolute; inset: 0;
  background: var(--color-champagne);
  transform: scaleY(0); transform-origin: top center;
}
.about_timeline-item {
  position: relative;
  display: grid; grid-template-columns: 8.5rem 1fr;
  gap: 3rem;
  padding-bottom: clamp(2.6rem, 4vw, 4.4rem);
}
.about_timeline-item:last-child { padding-bottom: 0; }
.about_timeline-item::before {
  content: ''; position: absolute;
  left: var(--tl-rail); top: 0.55rem;
  width: 11px; height: 11px; margin-left: -5px;
  border-radius: 50%;
  background: var(--color-paper);
  border: 1.5px solid var(--color-champagne);
  z-index: 2;
}
.background-color-night .about_timeline-item::before { background: var(--color-night); }
.about_timeline-year {
  font-family: var(--font-display);
  font-size: clamp(1.9rem, 2.7vw, 2.9rem);
  font-weight: 500; line-height: 0.95;
  letter-spacing: -0.02em;
  color: var(--color-champagne);
}
.about_timeline-body h3 {
  font-family: var(--font-display);
  font-size: clamp(1.15rem, 1.5vw, 1.4rem); font-weight: 500;
}
.about_timeline-body p {
  color: var(--color-smoke-dark); font-size: var(--text-small);
  margin-top: 0.6rem; max-width: 36rem; line-height: 1.68;
}
.background-color-night .about_timeline-body p { color: var(--color-smoke); }

/* ---------- Timeline (vanha, muilla sivuilla) ---------- */
.timeline_component { position: relative; margin-top: 3rem; }
.timeline_item {
  display: grid;
  grid-template-columns: 8rem 1fr;
  gap: 2rem;
  padding: 2rem 0;
  border-top: 1px solid var(--line-light);
}
.background-color-night .timeline_item { border-color: var(--line-dark); }
.timeline_year { font-family: var(--font-display); font-size: 1.6rem; font-weight: 500; color: var(--color-champagne); }
.timeline_body h3 { font-family: var(--font-display); font-size: 1.2rem; font-weight: 500; }
.timeline_body p { color: var(--color-smoke-dark); font-size: var(--text-small); margin-top: 0.5rem; max-width: 34rem; }
.background-color-night .timeline_body p { color: var(--color-smoke); }

/* ---------- Accordion (UKK) ---------- */
.accordion_item { border-bottom: 1px solid var(--line-light); }
.background-color-night .accordion_item { border-color: var(--line-dark); }
.accordion_trigger {
  width: 100%;
  display: flex; justify-content: space-between; align-items: center; gap: 1.5rem;
  padding: 1.5rem 0;
  text-align: left;
  font-family: var(--font-display);
  font-size: 1.15rem; font-weight: 500;
  transition: color 0.3s;
}
.accordion_trigger:hover { color: var(--color-champagne); }
.accordion_icon { position: relative; width: 14px; height: 14px; flex-shrink: 0; }
.accordion_icon::before, .accordion_icon::after {
  content: ''; position: absolute; background: currentColor;
  transition: transform 0.5s var(--ease-luxe);
}
.accordion_icon::before { left: 0; right: 0; top: 6px; height: 1.5px; }
.accordion_icon::after { top: 0; bottom: 0; left: 6px; width: 1.5px; }
.accordion_item.is-open .accordion_icon::after { transform: scaleY(0); }
.accordion_content {
  max-height: 0; overflow: hidden;
  transition: max-height 0.6s var(--ease-luxe);
}
.accordion_content p {
  padding-bottom: 1.5rem;
  color: var(--color-smoke-dark);
  font-size: var(--text-small);
  max-width: 40rem;
  line-height: 1.65;
}
.background-color-night .accordion_content p { color: var(--color-smoke); }

/* ---------- Contact page ---------- */
.contact_grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(2rem, 4vw, 5rem);
  align-items: start;
}
.contact_info-list { display: grid; gap: 1.8rem; margin-top: 2.2rem; }
.contact_info-item .footer_heading { margin-bottom: 0.5rem; }
.contact_info-item a { transition: color 0.3s; }
.contact_info-item a:hover { color: var(--color-champagne); }
.contact_map {
  border-radius: 20px;
  overflow: hidden;
  aspect-ratio: 16 / 10;
  border: 1px solid var(--line-dark);
  filter: grayscale(1) contrast(1.05) brightness(0.9);
}
.contact_map iframe { width: 100%; height: 100%; border: 0; display: block; }
.hours_table { width: 100%; border-collapse: collapse; }
.hours_table td { padding: 0.55rem 0; font-size: var(--text-small); border-bottom: 1px solid var(--line-dark); }
.hours_table td:last-child { text-align: right; }

/* Booking embed placeholder */
.booking_embed {
  border: 1px dashed var(--line-dark);
  border-radius: 20px;
  padding: 4rem 2rem;
  text-align: center;
  color: var(--color-smoke);
}

/* ---------- Palvelut — tumma bento-grid (etusivu) ---------- */
.services_bento {
  grid-template-columns: 1.45fr 1fr 1fr;
  grid-template-rows: minmax(280px, 1fr) minmax(220px, 0.8fr);
}
.services_bento .is-cell-a { grid-row: 1 / 3; min-height: 460px; }
.services_bento .is-cell-b { grid-column: 2 / 4; }
.services_bento .bento_tile { padding: clamp(1.4rem, 2.2vw, 2.2rem); }

/* ---------- Iso kuva, joka valuu vaalean sektion päälle ---------- */
.media-breakout {
  position: relative;
  z-index: 5;
  border-radius: 22px;
  overflow: hidden;
  margin-bottom: calc(-1 * clamp(4rem, 12vw, 10rem));
}
/* Varaa parallaxille tilaa molempiin päihin, jottei yläreuna jää vajaaksi */
.media-breakout img {
  position: absolute; left: 0; top: -8%;
  width: 100%; height: 116%; object-fit: cover;
}
.media-breakout video { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Äänipainike videon päällä — sama lasikieli kuin navissa */
.media-sound {
  position: absolute; right: clamp(0.9rem, 2vw, 1.6rem); bottom: clamp(0.9rem, 2vw, 1.6rem);
  z-index: 3;
  display: inline-flex; align-items: center; gap: 0.6rem;
  padding: 0.6rem 1rem; min-height: 42px;
  border: none; border-radius: 10px;
  background: rgba(19, 18, 17, 0.55);
  backdrop-filter: blur(18px) saturate(1.05);
  -webkit-backdrop-filter: blur(18px) saturate(1.05);
  color: rgba(251, 250, 247, 0.85);
  font-family: inherit; font-size: 0.68rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.16em;
  cursor: pointer;
  transition: color 0.35s, background-color 0.35s;
}
.media-sound:hover { color: var(--color-paper); background: rgba(19, 18, 17, 0.78); }
.media-sound svg { width: 17px; height: 17px; display: block; }
.media-sound_icon.is-on { display: none; }
.media-sound[aria-pressed="true"] .media-sound_icon.is-off { display: none; }
.media-sound[aria-pressed="true"] .media-sound_icon.is-on { display: block; }
.media-sound[aria-pressed="true"] { color: var(--color-champagne); }
.section-after-breakout .padding-section-large,
.section-after-breakout > .padding-global > .container-large > div:first-child {
  padding-top: clamp(11rem, 21vw, 18rem);
}

/* ---------- Nestemäinen lasireveal (liquid glass) ---------- */
.svg-defs { position: absolute; width: 0; height: 0; overflow: hidden; }
/* Emolla vain turbulenssi: se vääristää maskatun tuloksen -> reuna aaltoilee nesteenä.
   Rajaus hoituu isäntäelementin overflow:hiddenillä. */
.glass_liquid {
  --wipe: -34%;
  position: absolute; inset: 0; z-index: 4;
  pointer-events: none;
  filter: url(#liquid-warp);
}
/* Lasilevy: sumea kopio kuvasta, joka pyyhkiytyy pois pehmeällä diagonaalireunalla */
.glass_liquid-layer {
  position: absolute; inset: -10%;
  background-size: cover;
  background-position: center;
  filter: blur(26px) saturate(1.3) brightness(1.1) contrast(1.03);
  transform: scale(1.06);
  will-change: mask-position, opacity;
  -webkit-mask-image: linear-gradient(112deg,
    transparent calc(var(--wipe) - 8%),
    rgba(0, 0, 0, 0.35) calc(var(--wipe) + 9%),
    rgba(0, 0, 0, 0.85) calc(var(--wipe) + 20%),
    #000 calc(var(--wipe) + 34%));
  mask-image: linear-gradient(112deg,
    transparent calc(var(--wipe) - 8%),
    rgba(0, 0, 0, 0.35) calc(var(--wipe) + 9%),
    rgba(0, 0, 0, 0.85) calc(var(--wipe) + 20%),
    #000 calc(var(--wipe) + 34%));
}
/* Märkä kiilto kulkee sulamisreunan mukana */
.glass_liquid-sheen {
  position: absolute; inset: -10%;
  pointer-events: none;
  background: linear-gradient(112deg,
    transparent calc(var(--wipe) - 4%),
    rgba(255, 255, 255, 0.16) calc(var(--wipe) + 8%),
    rgba(200, 163, 95, 0.1) calc(var(--wipe) + 16%),
    transparent calc(var(--wipe) + 30%));
  mix-blend-mode: screen;
}

/* ---------- Sivutransitioverho ---------- */
.page-veil {
  position: fixed; inset: -2% 0; z-index: 600;
  background: var(--color-night);
  transform: translateY(103%);
  pointer-events: none;
  border-radius: 32px 32px 0 0;
}

/* ---------- Reveal helpers (JS lisää .is-inview) ---------- */
/* Maski saa hengitystilaa ylä- ja alapuolelle, jotta j/y/g-alapidennykset
   ja Ä/Å-pisteet eivät leikkaudu. Negatiivinen margin kumoaa vaikutuksen layoutiin. */
/* Flex-pino estää sisarusmarginaalien kollapsoinnin: block-layoutissa
   vierekkäiset -0.2em ja -0.08em sulautuisivat yhdeksi -0.2em:ksi, jolloin
   maskin padding jäisi osittain kumoamatta ja otsikko kasvaisi. */
html.js [data-reveal].is-split { display: flex; flex-direction: column; }
html.js [data-reveal] .line-mask {
  display: block; overflow: hidden;
  padding-bottom: 0.2em; margin-bottom: -0.2em;
  padding-top: 0.08em; margin-top: -0.08em;
}
html.js [data-reveal] .line-mask > .line-inner { display: block; transform: translateY(140%); }
/* Rivimaskit syntyvat vasta kun SplitType on ajettu, joten ennen sita
   otsikko olisi nakyvissa lopullisella paikallaan ja valahtaisi.
   JS palauttaa nakyvyyden inline-tyylilla heti pilkkomisen jalkeen. */
html.js [data-reveal] { opacity: 0; }
html.js [data-reveal-img] { clip-path: inset(100% 0 0 0); }
html.js [data-reveal-img] img { transform: scale(1.25); }
html.js [data-fade] { opacity: 0; transform: translateY(28px); }

@media (prefers-reduced-motion: reduce) {
  html.js [data-reveal] .line-mask > .line-inner,
  html.js [data-reveal-img], html.js [data-reveal-img] img,
  html.js [data-fade] {
    transform: none !important; clip-path: none !important; opacity: 1 !important;
  }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.15s !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- Responsive ---------- */
/* ---------- Hero: auton koko ja sijainti per breakpoint ----------
   Auto on object-fit: contain -laatikossa, joten pienempi mitta ratkaisee.
   Kapeammilla ruuduilla otsikon ja taglinen väliin jäävä kaista kapenee
   nopeasti, joten auton korkeutta on rajattava tai se menee tekstin päälle. */
@media (max-width: 1280px) {
  .is-spotlight .hero_background img {
    left: 27%; top: calc(32% - 1rem);
    width: 46%; height: 46%;
  }
  .hero_ground { bottom: calc(19% + 1rem); width: 38%; }
}

@media (max-width: 1100px) {
  .is-spotlight .hero_background img {
    left: 24%; top: 34%;
    width: 52%; height: 32%;
  }
  .hero_ground { bottom: 24%; width: 42%; }
  /* Osoitinmerkinnälle ei ole enää tyhjää tilaa otsikon oikealla puolella */
  .hero_tag { display: none; }
}

@media (max-width: 1100px) {
  .nav_overlay { place-items: start center; }
  .nav_overlay-grid { grid-template-rows: none; min-height: 0; }
  .nav_overlay-grid .is-menu-hero { grid-column: 1 / 13; grid-row: auto; min-height: 260px; }
  .nav_overlay-grid .is-menu-sub1, .nav_overlay-grid .is-menu-sub2 { grid-column: span 6; grid-row: auto; min-height: 170px; }
  .nav_overlay-grid .is-menu-social { grid-column: span 2; grid-row: auto; min-height: 56px; }
  .nav_overlay-grid .is-menu-info { grid-column: 5 / 13; grid-row: auto; flex-direction: row; align-items: center; gap: 1rem; min-height: 56px; }
  .nav_overlay-grid .is-menu-featured { grid-column: 1 / 13; grid-row: auto; min-height: 220px; }
  .nav_overlay-row { grid-column: 1 / 13; grid-row: auto; }
  .nav_pillbar-links, .nav_pillbar-links + .nav_divider { display: none; }
  .services_bento { grid-template-columns: 1fr 1fr; grid-template-rows: none; }
  .services_bento .is-cell-a { grid-row: auto; grid-column: 1 / 3; min-height: 320px; }
  .services_bento .is-cell-b { grid-column: 1 / 3; }
  .intro_media-grid { grid-template-columns: 1fr; }
  .intro_media, .intro_side { grid-column: 1 / -1; }
  .quote_component { grid-template-columns: 1fr; }
  .quote_media, .quote_body { grid-column: 1 / -1; }
  .quote_media { aspect-ratio: 16 / 10; }
  .stats_component { grid-template-columns: 1fr 1fr; }
  .stats_item:nth-child(3) { border-left: none; padding-left: 0; }
  .stats_item { padding-bottom: 1.5rem; }
  .footer_top { grid-template-columns: 1fr 1fr; }
  .inventory_grid { grid-template-columns: repeat(2, 1fr); }
  .card_car.is-featured { grid-column: span 2; }
  .car_layout { grid-template-columns: 1fr; }
  .car_summary-card { position: static; }
  .process_grid { grid-template-columns: repeat(2, 1fr); }
  .calculator_component { grid-template-columns: 1fr; }
  .split_component { grid-template-columns: 1fr; }
  /* grid-row: auto on pakollinen: yhden sarakkeen gridissa molemmat
     jaisivat muuten ensimmaiselle riville paallekkain, koska rivi on
     lukittu leveilla naytoilla. */
  .split_image-wrapper, .split_content,
  .split_component.is-flipped .split_image-wrapper,
  .split_component.is-flipped .split_content { grid-column: 1 / -1; grid-row: auto; order: initial; }
  .split_image-wrapper { aspect-ratio: 4 / 3; }
  .split_image-small { right: 1rem; }
  .contact_grid { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
  :root { --gutter: 1.25rem; }
  .hide-mobile { display: none !important; }
  .nav_boxbtn.is-accent { display: none; }
  .nav_pillbar { padding: 6px 6px 6px 16px; }
  .nav_overlay { padding-left: 8px; padding-right: 8px; }
  .nav_overlay-grid .is-menu-sub1, .nav_overlay-grid .is-menu-sub2 { grid-column: 1 / 13; min-height: 150px; }
  .nav_overlay-row { grid-template-columns: 1fr; }
  .hero_heading-line.is-indent { margin-left: clamp(1.5rem, 8vw, 4rem); }
  .hero_footer { flex-direction: column; align-items: flex-start; gap: 1.8rem; }
  /* Mobiilissa auto asettuu otsikon ja taglinen väliin koko leveydeltä.
     Kaista on kapea (n. 200 px), joten auto on korkeusrajattu. */
  .is-spotlight .hero_background img {
    left: 10%; top: 45%;
    width: 80%; height: 21%;
  }
  .hero_ground { left: 50%; bottom: 29%; width: 56%; height: 5%; }
  .showcase_card { width: 84vw; }
  .showcase_nav { display: none; }
  .stats_component { grid-template-columns: 1fr 1fr; }
  .stats_value { font-size: clamp(2.6rem, 11vw, 3.4rem); }
  .services_item { grid-template-columns: 2.5rem 1fr auto; }
  .services_desc { display: none; }
  .services_arrow { width: 44px; height: 44px; }
  .cta-split_component { flex-direction: column; min-height: 0; }
  .cta-split_panel { min-height: 42vh; border-right: none; border-bottom: 1px solid var(--line-dark); }
  .cta-split_panel:hover { flex: 1; }
  .footer_top { grid-template-columns: 1fr; gap: 2.2rem; }
  .inventory_grid { grid-template-columns: 1fr; }

  /* Myyjakortit vierekkain jaivat niin kapeiksi etta sahkopostiosoite
     leikkautui. Allekkain ne mahtuvat kokonaan. */
  .team_cards { grid-template-columns: 1fr; }

  /* Ajanvarauksen napit eivat mahdu vierekkain kapealla ruudulla. */
  .booking_actions { flex-direction: column; align-items: stretch; }
  .booking_actions .button { width: 100%; justify-content: space-between; }
  .card_car.is-featured { grid-column: span 1; }
  .card_car.is-featured .card_car-image { aspect-ratio: 4 / 2.9; }
  .filter_select, .filter_reset { font-size: 0.68rem; letter-spacing: 0.1em; padding-left: 0.85rem; }
  .filter_select { padding-right: 1.85rem; }
  .car_summary-specs { grid-template-columns: 1fr 1fr; }
  .car_equipment-list { columns: 1; }
  .form_row { grid-template-columns: 1fr; }
  .team_grid { grid-template-columns: 1fr; }
  .process_grid { grid-template-columns: 1fr; }
  .timeline_item { grid-template-columns: 1fr; gap: 0.5rem; }
  .order_image-panel { display: none; }
  .footer_wordmark { font-size: 13.5vw; }
}

@media (max-width: 600px) {
  /* Kapealla ruudulla otsikko vie enemmän korkeutta ja auto on suhteessa
     korkeampi, joten se on nostettava ylemmäs ettei se peitä taglinea */
  .is-spotlight .hero_background img { top: 36%; }
  .hero_ground { bottom: 39%; width: 58%; }
  .showcase_card { width: 88vw; }
  .car-hero_thumb { width: 104px; }
  .heading-style-h1 { letter-spacing: -0.03em; }
}

/* ============================================================
   KORJAUKSET 5.8.2026 — Alexin palautelista
   ============================================================ */

/* --- Navin välit tasan: Webflow-luokka .nav_lang toi 4 px marginaalin,
       jolloin pillerien välit olivat 7/9/4 px. --- */
.nav_pillbar > * { margin: 0; }
.nav_pillbar-link {
  display: inline-flex; align-items: center;
  min-height: 40px;
  padding-top: 0; padding-bottom: 0;
}

/* --- Aktiivinen kieli valkoisena, toinen himmeänä --- */
.nav_lang a { color: var(--color-smoke); }
.nav_lang a.is-active { color: var(--color-paper); }

/* --- Webflow antaa blockquotelle border-left: 3px solid #000.
       Se näkyi sitaattiosiossa mustana viivana. --- */
blockquote { border: 0; }

/* --- Tuotekortin kuvat. Webflow-rakenteessa .card_car-image on <img>,
       paikallisessa versiossa saman niminen kääre-div (aspect-ratio +
       position: relative). Nimitörmäys pudotti kuvan pois absoluuttisesta
       asemoinnista, jolloin kortin ylle jäi korkea musta alue. --- */
img.card_car-image, img.card_car-image-hover {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  aspect-ratio: auto;
  object-fit: cover;
}

/* Webflow-luokat tuovat kuviin oman 8 px pyoristyksensa. Kortissa kaare
   rajaa kuvan jo itse, ja CTA-paneelissa pyoristys nakyy lovina
   suorakulmaisen paneelin kulmissa — molemmissa se on tarpeeton. */
img.card_car-image, img.card_car-image-hover,
.card_car-image, .card_car-image img,
.cta-split_panel img { border-radius: 0; }

/* --- Esittelykarusellin tekniset tiedot erottuvat toisistaan --- */
.showcase_card-specs {
  display: flex; flex-wrap: wrap; align-items: baseline;
  column-gap: 0.5rem; row-gap: 0.15rem;
}
.showcase_card-specs > * + * { position: relative; padding-left: 0.62rem; }
.showcase_card-specs > * + *::before {
  content: '·'; position: absolute; left: 0; opacity: 0.55;
}
/* Vetotapa pois esittelykortilta: rivi mahtuu neljalle tiedolle, ja
   viides pudotti sen kahdelle riville niin etta korttien korkeudet
   heittivat. Sama nelja tietoa nakyy vaihtoautolistan korteissa.
   Tuli nakyviin vasta Nettix-synkkauksen jalkeen: aiemmin vetotapa oli
   monella autolla tyhja, ja tyhjat piilotettiin ajonaikaisesti. */
.showcase_card-specs > .showcase_spec:nth-child(n+5) { display: none; }

/* --- Hero: is-spotlight lisätään vasta bodyn lopussa ajettavassa
       hydraatioskriptissä, joten ensimmäisellä maalauksella auto ehti
       välähtää täysikokoisena. Piilotetaan kerrokset heti. --- */
html.js .section_hero .hero_backdrop { opacity: 0; }
html.js .section_hero .hero_background img:not(.hero_spot-lights) { opacity: 0; }

/* --- Autosivun sijainti: pieni paikkamerkki tekstin eteen --- */
/* line-height: 1 poistaa tekstin ylimaaraisen rivivalin, jolloin
   align-items: center osuu kirjainten optiseen keskikohtaan eika
   rivilaatikon keskelle — muuten merkki nayttaa hieman ylhaalla. */
.auto_head .micro-label { gap: 0.34rem; align-items: center; line-height: 1; }
.auto_head .micro-label::before {
  content: '';
  display: inline-block;
  align-self: center;
  width: 1.28em; height: 1.28em;
  /* .micro-label on inline-flex, joten sen gap tulee taman marginaalin
     PAALLE. Molemmat yhdessa tekivat ikonin ja tekstin valista liian
     leveän — marginaali pois ja gap kapeammaksi alla. */
  margin-right: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-5.5-7-11a7 7 0 0 1 14 0c0 5.5-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.6'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-5.5-7-11a7 7 0 0 1 14 0c0 5.5-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.6'/%3E%3C/svg%3E") center / contain no-repeat;
}


/* --- Hero taydelle leveydelle: sisallot kiinni reunoissa (gutter),
       raja vasta hyvin isoilla naytoilla. --- */
.section_hero .container-large { max-width: 200rem; }

/* --- Esittelyssä-osion "kaikki vaihtoautot" -linkki --- */
.showcase_header .button.is-text { flex: 0 0 auto; }

/* --- Sliderin raahaus: estetaan selaimen oma kuvanraahaus, joka sai
       kursorin "tarttumaan" kesken vedon. --- */
.showcase_track img,
.showcase_track a { -webkit-user-drag: none; user-drag: none; }
.showcase_track.is-dragging { scroll-snap-type: none; }

/* --- Esittelyssa-otsikon "kaikki vaihtoautot" siirretty vasempaan
       palstaan, jotta se ei ahtaudu nuolinappien viereen. --- */
.showcase_header .showcase_head-link { margin-top: 1rem; display: inline-flex; }


/* ---------- Mobiili ---------- */
@media (max-width: 991px) {
  /* Palvelukortit allekkain jo tabletissa — kolme saraketta on liian kapea */
  .care_grid { grid-template-columns: 1fr; }
  .process_rail { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 767px) {
  /* Navin pilleripalkin vasen padding oli 16 px piilotettuja linkkejä
     varten; mobiilissa linkit ovat piilossa, joten padding tasataan. */
  .nav_pillbar { padding: 6px; }

  /* Napit eivät veny koko leveyteen */
  .button { width: auto; align-self: flex-start; justify-self: start; }
  .hero_actions { flex-wrap: wrap; }
  .booking_actions, .page-hero_row, .split_content, .order_content { align-items: flex-start; }

  /* Etusivun tilausaskeleet 2 x 2 */
  .order_steps { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 1.2rem; }
  .order_step { max-width: none; }

  /* Neljä askelta uuteen autoosi: 2 x 2 */
  .process_rail { grid-template-columns: 1fr 1fr; gap: 1.6rem 1.1rem; }

  /* Kuvan ja tekstin väliin ilmaa kun palstat pinoutuvat */
  .split_component { gap: 2.8rem; }

  /* Suodatinpalkki: valinnat kahteen sarakkeeseen, järjestys ja tyhjennys
     omalle riville koko leveydelle — ei jää tyhjää kaistaa. */
  .inventory_filterbar-inner { flex-wrap: wrap; gap: 0.4rem; }
  .filterbar_group {
    flex: 1 1 100%;
    display: grid; grid-template-columns: 1fr 1fr; gap: 0.35rem;
  }
  .filterbar_group .filter_select-wrapper { min-width: 0; }
  .filterbar_group .filter_select { width: 100%; }
  .filterbar_tools {
    flex: 1 1 100%;
    display: grid; grid-template-columns: 1fr auto; gap: 0.35rem;
  }
  .filterbar_tools .filter_select-wrapper { min-width: 0; }
  .filterbar_tools .filter_select { width: 100%; }

  /* ---- Valikko-overlay: kaikki mahtuu ruudulle ilman vieritysta ----
     Tiilet madalletaan, kuvaukset piiloon, alatiilet vierekkain ja
     pikalinkit yhdelle riville. */
  .nav_overlay { place-items: center; overflow-y: auto; padding-top: 5rem; padding-bottom: 1.25rem; }
  .nav_overlay-grid { gap: 6px; min-height: 0; }
  .nav_overlay-grid .bento_tile { padding: 0.85rem 1rem; }
  /* Alatekstit jatetaan nakyviin; luettavuus hoidetaan tummemmalla
     verholla kuvan paalla, ei tekstia piilottamalla. */
  .nav_overlay-grid .bento_tile-desc { font-size: 0.82rem; line-height: 1.35; }
  .nav_overlay .bento_tile-media::after {
    background: linear-gradient(to top,
      rgba(6, 5, 5, 0.99) 0%,
      rgba(6, 5, 5, 0.93) 34%,
      rgba(6, 5, 5, 0.72) 66%,
      rgba(6, 5, 5, 0.5) 100%);
  }
  .nav_overlay .bento_tile-desc { color: rgba(251, 250, 247, 0.86); }

  .nav_overlay-grid .is-menu-hero { grid-column: 1 / 13; min-height: 112px; }
  .nav_overlay-grid .is-menu-social { grid-column: span 2; min-height: 48px; }
  .nav_overlay-grid .is-menu-info { grid-column: 5 / 13; min-height: 48px; flex-direction: row; align-items: center; gap: 0.9rem; }
  .nav_overlay-grid .is-menu-featured { grid-column: 1 / 13; min-height: 96px; }
  .nav_overlay-grid .is-menu-sub1 { grid-column: 1 / 7; min-height: 84px; }
  .nav_overlay-grid .is-menu-sub2 { grid-column: 7 / 13; min-height: 84px; }

  .nav_overlay-grid .is-menu-featured .bento_tile-icon,
  .nav_overlay-grid .is-menu-sub1 .bento_tile-icon,
  .nav_overlay-grid .is-menu-sub2 .bento_tile-icon { display: none; }

  .nav_overlay-row { grid-column: 1 / 13; grid-template-columns: repeat(3, 1fr); gap: 6px; }
  /* Kolme viimeista laatikkoa: teksti keskelle molempiin suuntiin. */
  .nav_overlay-row .bento_tile {
    min-height: 56px;
    padding: 0.7rem 0.6rem;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  .nav_overlay-row .bento_tile-footer { width: 100%; justify-content: center; }
  .nav_overlay-row .bento_tile-icon { display: none; }
  .nav_overlay-row .bento_tile-title { font-size: 0.82rem; line-height: 1.25; }
  .nav_overlay-row .tile_arrow { display: none; }

  /* Vaihtoautot-pilleri pois mobiilinavista - se on valikossa */
  .nav_pillbar-link { display: none; }
}

@media (max-width: 480px) {
  .nav_overlay { padding-top: 4.6rem; padding-bottom: 1rem; }
  .nav_overlay-grid .is-menu-hero { min-height: 96px; }
  .nav_overlay-grid .is-menu-featured { min-height: 86px; }
  .nav_overlay-grid .is-menu-sub1,
  .nav_overlay-grid .is-menu-sub2 { min-height: 74px; }
  .nav_overlay-row .bento_tile { min-height: 50px; padding: 0.6rem 0.6rem; }
  .nav_overlay-row .bento_tile-title { font-size: 0.74rem; letter-spacing: 0; }
  .nav_overlay-grid .is-menu-info .nav_overlay-hours { font-size: 0.66rem; }
  .nav_overlay-grid .is-menu-info .bento_tile-eyebrow { font-size: 0.54rem; }
  .bento_tile-title { font-size: 0.98rem; }
  .nav_overlay-close { bottom: 0.75rem; }
}

/* Matala ruutu (esim. pieni puhelin vaakatasossa tai iPhone SE):
   tiivistetaan viela hieman, jotta valikko mahtuu ilman vieritysta. */
@media (max-width: 767px) and (max-height: 700px) {
  .nav_overlay { padding-top: 4.25rem; padding-bottom: 0.75rem; }
  .nav_overlay-grid .is-menu-hero { min-height: 84px; }
  .nav_overlay-grid .is-menu-featured { min-height: 78px; }
  .nav_overlay-grid .is-menu-sub1,
  .nav_overlay-grid .is-menu-sub2 { min-height: 66px; }
  .nav_overlay-grid .is-menu-social,
  .nav_overlay-grid .is-menu-info { min-height: 42px; }
  .nav_overlay-row .bento_tile { min-height: 46px; }
}

@media (max-width: 400px) {
  .process_rail { grid-template-columns: 1fr; }
  .order_steps { grid-template-columns: 1fr 1fr; }
}


/* =============================================================
   WEBFLOW-YHTEENSOPIVUUS
   Nama saannot EIVAT kuulu paikalliseen designiin vaan palauttavat
   sen Webflowissa. Paikallisessa index.html:ssa samat arvot ovat
   style=""-attribuutteina, joita Webflow'n API ei valita, ja Webflow'n
   oma normalisointi kumoaa osan paikallisesta resetista.
   Pidettava mukana joka kerta kun style.css viedaan Webflowiin.
   ============================================================= */
.section_hero > .padding-global { width: 100%; }              /* <div class="padding-global" style="width:100%"> */
.section_order .padding-global { width: 100%; }               /* sama tilaussektiossa */
.section_order .container-large { position: relative; }       /* style="position:relative" */
.section_order .hero_lead { max-width: 32rem; }               /* style="max-width:32rem" */
.section_services .showcase_header { padding: 0 0 2.5rem; }   /* style="padding:0 0 2.5rem" */
.quote_author .micro-label { margin-top: 0.3rem; }            /* style="margin-top:0.3rem" */

/* Webflow-CMS-adapteri: Collection List kaaree jokaisen kortin .w-dyn-item
   -divilla, jolloin flex-itemiksi tulisi kaare eika kortti. display:contents
   nostaa kortin suoraan radan lapseksi, jolloin asettelu vastaa paikallista. */
.showcase_track > .w-dyn-item { display: contents; }

/* Webflow asettaa h1-h6:lle oman jarjestelmafonttinsa, mika katkaisee
   periytymisen bodysta. .heading-style-display luottaa periytymiseen. */
h1, h2, h3, h4, h5, h6 { font-family: inherit; line-height: inherit; }

/* Paikallinen reset on `*, *::before, *::after { margin:0; padding:0 }`,
   jonka spesifisyys on 0. Webflow'n normalisointi kayttaa ELEMENTTI-
   valitsimia, jotka voittavat sen vaikka tama tiedosto ladataan
   myohemmin. Toistetaan siksi sama reset elementtitasolla. */
h1, h2, h3, h4, h5, h6,
p, blockquote, figure, fieldset, legend, dl, dd,
ul, ol, li { margin: 0; padding: 0; }

/* ---------- Mobiilihero: enemman ilmaa auton ymparille ----------
   Otsikko nostetaan ylemmas (pienempi padding-top ja ylamarginaali),
   jolloin otsikon ja taglinen valiin jaa korkeampi kaista autolle.
   Auto keskitetaan siihen kaistaan hieman isompana. Koko sisalto
   mahtuu edelleen yhteen nakymaan. */
@media (max-width: 767px) {
  .hero_component {
    padding-top: 6.4rem;
    padding-bottom: clamp(1.2rem, 3vh, 2.2rem);
  }
  .is-spotlight .hero_heading { margin-top: 0.35rem; }
  .hero_footer { margin-top: clamp(1.2rem, 3vh, 2.2rem); }
  /* Auto kapeampana ja ylempana, jottei se leikkaudu reunoista ja
     otsikon ja taglinen valiin jaa tasaiset ilmat. */
  .is-spotlight .hero_background img {
    left: 12%; top: 32.8%;
    width: 76%; height: 23%;
  }
  .hero_ground { left: 50%; bottom: 39%; width: 54%; height: 4.5%; }
}

@media (max-width: 600px) {
  .is-spotlight .hero_background img { top: 31.3%; }
  .hero_ground { bottom: 41%; width: 56%; }
}

@media (max-width: 767px) and (max-height: 700px) {
  .hero_component { padding-top: 4.6rem; }
  .is-spotlight .hero_background img { top: 40%; height: 20%; }
  .hero_ground { bottom: 33%; }
}

/* Mobiilissa .showcase_nav oli kokonaan piilossa, jolloin myos
   "Kaikki vaihtoautot" -linkki katosi. Nuolet on merkitty hide-mobile
   -luokalla, joten riittaa etta ryhma itse nakyy. */
@media (max-width: 767px) {
  .showcase_header .showcase_nav { display: flex; }
  .showcase_header { flex-wrap: wrap; gap: 1rem; }
}

/* --- Kortin pyoristetyt kulmat Safarissa ---
   iOS Safarissa lapsi jolla on backdrop-filter karkaa vanhemman
   border-radiuksen ulkopuolelle, jolloin korttiin jai nakyviin
   ylimaarainen suora kulma. Maski pakottaa leikkauksen. */
.showcase_card {
  -webkit-mask-image: -webkit-radial-gradient(#fff, #000);
  mask-image: radial-gradient(#fff, #000);
}
.showcase_card-body {
  border-bottom-left-radius: inherit;
  border-bottom-right-radius: inherit;
}

@media (max-width: 767px) {
  /* Tekniset tiedot vasempaan laitaan, hinta omalle rivilleen.
     Erottavat pisteet pois, koska rivittyessa rivi alkoi pisteella. */
  .showcase_card-row { flex-wrap: wrap; justify-content: flex-start; row-gap: 0.7rem; }
  .showcase_card-specs { flex: 1 1 100%; column-gap: 0.8rem; }
  .showcase_card-specs > * + * { padding-left: 0; }
  .showcase_card-specs > * + *::before { content: none; }
  .showcase_card-price { flex: 0 0 auto; }

  /* Nuolet nakyviin myos mobiilissa, pienempina */
  .showcase_header .showcase_nav { display: flex; gap: 0.4rem; align-self: flex-start; }
  .showcase_header .showcase_nav .tile_arrow { padding: 0.3rem; }
  .showcase_header .showcase_nav .tile_arrow svg { width: 26px; height: 26px; }
}


/* Autosivun paluulinkki oli harmaa ja hukkui tummaan taustaan. */
.auto_back { color: var(--color-paper); }

/* --- Laattakuvien rajaukset: oletusrajaus keskelta leikkasi juuri sen
       kohdan jonka pitaisi nakya (autot, logo). --- */
.nav_overlay .is-menu-hero .bento_tile-media img { object-position: 50% 78%; }
.nav_overlay .is-menu-sub2 .bento_tile-media img { object-position: 50% 28%; }
.cta-split_panel img[src*="pcc-kyltti"] { object-position: 50% 76%; }

/* --- Navin logo vaaleiden sektioiden paalla ---
   Webflow renderoi logon <img class="nav_logo">-elementtina, ei
   maskattuna kaareena, joten currentColor ei vaikuta siihen.
   brightness(0) tekee kuvasta mustan alfakanavan sailyttaen. */
.nav_bar img.nav_logo {
  filter: drop-shadow(0 2px 9px rgba(0, 0, 0, 0.55));
  transition: filter 0.4s var(--ease-luxe);
}
body.nav-on-light .nav_bar img.nav_logo {
  filter: brightness(0) drop-shadow(0 1px 7px rgba(255, 255, 255, 0.7));
}

/* --- Gallerian nuolinapit ---
   Merkit < ja > eivat istu optisesti ympyran keskelle, koska niiden
   sivulaakerit ja perusviiva ovat epasymmetriset. Piirretaan nuoli
   reunoista ja siirretaan sen todellinen mustekeskio ympyran keskelle. */
.gallery_arrow { font-size: 0; line-height: 0; }
.gallery_arrow::before {
  content: '';
  display: block;
  width: 10px;
  height: 10px;
  border-left: 1.6px solid currentColor;
  border-bottom: 1.6px solid currentColor;
}
.gallery_arrow-prev::before { transform: translateX(3.5px) rotate(45deg); }
.gallery_arrow-next::before {
  border-left: 0;
  border-bottom: 0;
  border-right: 1.6px solid currentColor;
  border-top: 1.6px solid currentColor;
  transform: translateX(-3.5px) rotate(45deg);
}

/* ============================================================
   STUDIOTYHJIO — heron tausta ilman valokuvaa
   Hero on rakennettu valokeila-ideaan: irtileikattu auto, kursoria
   seuraava keila ja valolammikko lattialla. Valokuva maisemasta toi
   kuvaan toisen valologiikan, joka riiteli keilan kanssa. Tassa
   tausta on pelkkaa valoa: keila ylhaalta, vaimea kultahehku
   oikeassa ylakulmassa, vinjetti reunoilla ja tuskin erottuva
   horisontti siina missa seina kohtaa lattian.
   ============================================================ */
/* Raskaasti abstraktoitu halli: mustavalkoinen, sumennettu ja tummennettu,
   jolloin jaljelle jaa vain kattovalorivit ja pakopiste. Paikkaa ei
   tunnista, joten se ei kilpaile auton kanssa. */
.section_hero.is-spotlight .hero_backdrop img {
  display: block;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  opacity: 0.9;
  -webkit-mask-image: linear-gradient(to bottom,
    #000 0%, #000 34%, rgba(0, 0, 0, 0.55) 48%, transparent 62%);
  mask-image: linear-gradient(to bottom,
    #000 0%, #000 34%, rgba(0, 0, 0, 0.55) 48%, transparent 62%);
}
.section_hero.is-spotlight .hero_backdrop {
  -webkit-mask-image: none;
  mask-image: none;
  background:
    radial-gradient(58% 42% at 88% 4%,
      rgba(200, 163, 95, 0.09), rgba(200, 163, 95, 0) 72%),
    /* Hallin ovi: kapea pystysuora valoaukko auton takana */
    radial-gradient(13% 54% at 59% 44%,
      rgba(255, 250, 240, 0.34) 0%,
      rgba(255, 250, 240, 0.14) 46%,
      rgba(255, 250, 240, 0.08) 74%,
      rgba(255, 250, 240, 0) 100%),
    /* Yleiskeila ylhaalta, vaimeana jotta ovi jaa paavalonlahteeksi */
    radial-gradient(46% 40% at 51% 16%,
      rgba(255, 250, 240, 0.075),
      rgba(255, 250, 240, 0.025) 46%,
      rgba(255, 250, 240, 0) 78%),
    radial-gradient(115% 88% at 50% 46%,
      rgba(0, 0, 0, 0) 42%, rgba(0, 0, 0, 0.5) 100%),
    linear-gradient(to bottom,
      #171615 0%, #151413 42%, #121110 66%,
      #0c0b0b 74%, #0f0e0d 80%, #0a0909 100%);
}


@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background:
      radial-gradient(70% 30% at 86% 5%,
        rgba(200, 163, 95, 0.08), rgba(200, 163, 95, 0) 72%),
      radial-gradient(24% 36% at 56% 40%,
        rgba(255, 250, 240, 0.3) 0%,
        rgba(255, 250, 240, 0.12) 46%,
        rgba(255, 250, 240, 0.07) 74%,
        rgba(255, 250, 240, 0) 100%),
      radial-gradient(64% 30% at 51% 18%,
        rgba(255, 250, 240, 0.07),
        rgba(255, 250, 240, 0.022) 48%,
        rgba(255, 250, 240, 0) 80%),
      radial-gradient(120% 80% at 50% 44%,
        rgba(0, 0, 0, 0) 44%, rgba(0, 0, 0, 0.45) 100%),
      linear-gradient(to bottom,
        #171615 0%, #151413 40%, #121110 58%,
        #0c0b0b 66%, #0f0e0d 72%, #0a0909 100%);
  }
}

/* Auto valospotin ylapuolelle: sama taso, myohempi DOM-jarjestys. */
.section_hero.is-spotlight .hero_background { z-index: 3; }

/* --- Lattian valospotti ---
   Heron alaosassa on verho (.section_hero.is-spotlight::after, taso 2),
   joka on pohjalla 94 % mustaa. Kaikki sen alle jaava huuhtoutuu pois,
   joten spotti piirretaan .hero_ground-elementille tasolla 3.
   Mitat on muunnettu .hero_background-laatikosta (inset: -7%) taman
   section-kokoiseen koordinaatistoon kaavalla 1,14 x - 0,07. */
.section_hero.is-spotlight .hero_ground {
  display: block;
  /* Sijoitus vasemmasta ylakulmasta, EI translate-keskityksella:
     main.js ajaa tahan gsap.quickTo(x/scaleX), joka ylikirjoittaa
     transformin ja pudottaisi prosenttikeskityksen pois. */
  left: 31.2%;
  top: 82%;
  right: auto;
  bottom: auto;
  width: 38%;
  height: 3.4%;
  z-index: 3;
  /* Kallistus seuraa auton perspektiivia: kosketusviiva nousee
     vasemmalta oikealle, koska auto on kuvattu vinosti. */
  transform: rotate(-2.2deg);
  border-radius: 50%;
  background: radial-gradient(closest-side,
    rgba(255, 251, 242, 0.34) 0%,
    rgba(255, 249, 236, 0.15) 48%,
    rgba(255, 249, 236, 0) 100%);
  filter: blur(11px);
  pointer-events: none;
}

/* Tumma kosketusvarjo renkaiden alle, valospotin paalle. */
.section_hero.is-spotlight .hero_ground::after {
  content: '';
  position: absolute;
  left: 19%;
  top: -142%;
  width: 62%;
  height: 92%;
  border-radius: 50%;
  background: radial-gradient(closest-side,
    rgba(0, 0, 0, 0.88) 0%,
    rgba(0, 0, 0, 0.45) 52%,
    rgba(0, 0, 0, 0) 100%);
  pointer-events: none;
}

@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_ground::after {
    left: 22%;
    top: -188%;
    width: 56%;
    height: 96%;
  }
  .section_hero.is-spotlight .hero_ground {
    left: 20%;
    top: 55.8%;
    width: 60%;
    height: 2.2%;
    transform: rotate(-1.6deg);
    filter: blur(8px);
  }
}

/* ============================================================
   VALOKUVAHERO
   Irtileikattu auto + CSS-studio vaihdettiin oikeaan kuvaan.
   Kaikki valokeilan kerrokset piiloon ja neljan paallekkaisen
   tummennusverhon tilalle kaksi hallittua liukua: toinen otsikon
   taakse vasemmalle, toinen alareunaan taglinen ja nappien alle.
   ============================================================ */
.section_hero.is-spotlight .hero_background,
.section_hero.is-spotlight .hero_ground,
.section_hero.is-spotlight .hero_tag { display: none; }

.section_hero.is-spotlight .hero_backdrop {
  -webkit-mask-image: none;
  mask-image: none;
  background: var(--color-night);
}
.section_hero.is-spotlight .hero_backdrop img {
  display: block;
  position: absolute;
  /* TASMALLEEN sama laatikko kuin .hero_groundilla: molemmat naytetaan
     coverilla, joten pieninkin ero laatikon koossa siirtaa auton eri
     kohtaan kerroksissa ja terava kopio irtoaa sumeasta pohjasta.
     Laatikkoa EI saa suurentaa lisaa: cover tayttaa isomman laatikon
     zoomaamalla, jolloin koko rajaus muuttuu. 3 % ylimitoitusta sivuilla
     riittaa hiiriparallaksin liikkumavaraksi, ja pystysuuntaan ei liikuta. */
  left: -3%;
  /* Auto n. 5 pp ylemmas (6.8.2026). object-position EI kelpaa tahan:
     kuva on 3000x1687 (1,778) ja laatikko tavallisella lapparilla
     kapeampi kuin se, joten cover skaalaa KORKEUDEN mukaan eika
     pystysuuntaista ylijaamaa ole lainkaan — Y-arvon muuttaminen ei tee
     mitaan. Ainoa toimiva tapa on siirtaa koko laatikkoa ylos ja kasvattaa
     sita saman verran, jottei alareunaan jaa rakoa.
     13,4 % antaa tasan 5 pp siirtyman: kasvatus zoomaa kuvaa, mikä syo
     osan siirrosta (auto y = 0,628 - 0,372 x t). Sama pari on pakko olla
     .hero_groundilla, muuten terava kopio irtoaa sumeasta pohjasta. */
  top: -13.4%;
  width: 106%;
  height: 113.4%;
  max-width: none;
  object-fit: cover;
  object-position: center 56%;
  opacity: 1;
  -webkit-mask-image: none;
  mask-image: none;
}

/* Vanha vasen valopesu pois; se oli mitoitettu mustaa studiota varten. */
.section_hero.is-spotlight::before { background: none; }

/* Kuvan oma suodin oli viritetty keltamustalle parkkihallille
   (saturate 0.2 vei sen lahes harmaaksi). Tassa vain kevyt tummennus,
   varit saavat elaa. Sumennus tulee ::before-kerroksesta. */
.section_hero.is-spotlight .hero_backdrop img {
  filter: brightness(0.94) contrast(1.04) saturate(0.82);
}

/* Syvateravyys: tausta sumenee ylhaalta alaspain, mutta auton kohdalle
   leikataan pehmea reika maskista, jolloin auto pysyy teravana.
   mask-composite: subtract vahentaa toisen maskikerroksen ensimmaisesta.
   Jos selain ei tue sita, jaljelle jaa pelkka pystyliuku eli nykytila. */
.section_hero.is-spotlight .hero_backdrop::before { background: none; }

/* Terava kopio auton kohdalle.
   mask-composite: subtract ei leikannut reikaa sumennukseen luotettavasti,
   joten sumennus jatetaan koskematta ja auton paalle asetetaan erillinen
   teravа kerros samasta kuvasta samalla rajauksella. .hero_ground on
   tassa variantissa muuten kaytosta poissa, joten se toimii kantajana.
   HUOM: main.js liikuttaa taustakuvaa ja tata kerrosta TASAN SAMAN
   verran hiiren mukana (ks. pcc-v7.js), muuten kerrokset irtoaisivat
   toisistaan ja auton reunaan jaisi haamukuva. */
.section_hero.is-spotlight .hero_ground {
  display: block;
  left: -3%;
  right: auto;
  bottom: auto;
  width: 106%;
  /* TASMALLEEN sama laatikko kuin .hero_backdrop imgilla — ks. selitys
     siella. Naita kahta ei saa muuttaa erikseen. */
  top: -13.4%;
  height: 113.4%;
  z-index: 1;
  border-radius: 0;
  /* Valospotti oli kallistettu auton perspektiivin mukaan (-2,2 astetta).
     Kuvakerroksena sama kallistus kiertaisi koko valokuvan vinoon
     suhteessa sumeaan taustaan. GSAP kirjoittaa tahan omat siirtymansa
     inline-tyylina, joten pelkka none riittaa lahtoarvoksi. */
  transform: none;
  background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a73663f07b67baccab33949_pcc-hero-panamera2.webp");
  background-size: cover;
  background-position: center 56%;
  background-repeat: no-repeat;
  filter: brightness(0.94) contrast(1.04) saturate(0.82);
  /* Maskin keskipiste ja sateet tulevat main.js:lta: se laskee auton
     paikan kuvassa samalla cover-matematiikalla kuin selain. Kiintea
     prosenttimaski osui auton viereen, koska rajaus muuttuu ruutusuhteen
     mukana. Ulkosade on 2,6-kertainen autoon nahden ja liuku alkaa vasta
     48 %:sta, joten reunaa ei erota — terava ja sumea sulautuvat
     syvyysterävyyden tapaan. */
  /* Liuku noudattaa smoothstep-kayraa, ei suoraa. Suorassa liuvussa
     kaltevuus muuttuu jyrkasti heti taysin teravan alueen reunalla, ja
     juuri sen silma nakee soikiona. Useampi vaihe pyoristaa molemmat
     paat, jolloin siirtymaa ei erota. Taysin terava ydin on nyt 30 %
     sateesta (ennen 48 %), eli kirkas alue on selvasti pienempi. */
  -webkit-mask-image: radial-gradient(
    var(--car-rx, 42%) var(--car-ry, 36%) at var(--car-x, 61.4%) var(--car-y, 62.8%),
    #000 0%, #000 30%,
    rgba(0, 0, 0, 0.945) 40%,
    rgba(0, 0, 0, 0.81) 50%,
    rgba(0, 0, 0, 0.633) 60%,
    rgba(0, 0, 0, 0.394) 70%,
    rgba(0, 0, 0, 0.198) 80%,
    rgba(0, 0, 0, 0.056) 90%,
    transparent 100%);
  mask-image: radial-gradient(
    var(--car-rx, 42%) var(--car-ry, 36%) at var(--car-x, 61.4%) var(--car-y, 62.8%),
    #000 0%, #000 30%,
    rgba(0, 0, 0, 0.945) 40%,
    rgba(0, 0, 0, 0.81) 50%,
    rgba(0, 0, 0, 0.633) 60%,
    rgba(0, 0, 0, 0.394) 70%,
    rgba(0, 0, 0, 0.198) 80%,
    rgba(0, 0, 0, 0.056) 90%,
    transparent 100%);
  pointer-events: none;
}

.section_hero.is-spotlight .hero_backdrop::after {
  background:
    /* Otsikon taakse vasempaan laitaan */
    linear-gradient(102deg,
      rgba(6, 5, 5, 0.86) 0%,
      rgba(6, 5, 5, 0.6) 24%,
      rgba(6, 5, 5, 0.2) 48%,
      rgba(6, 5, 5, 0) 72%),
    /* Vinjetti auton ymparille: kaikki muu tummenee, auto nousee esiin */
    radial-gradient(54% 46% at 48% 66%,
      rgba(6, 5, 5, 0) 0%,
      rgba(6, 5, 5, 0) 38%,
      rgba(6, 5, 5, 0.24) 70%,
      rgba(6, 5, 5, 0.46) 100%),
    /* Ylareuna navia varten ja alareuna taglinea varten */
    linear-gradient(to bottom,
      rgba(6, 5, 5, 0.55) 0%,
      rgba(6, 5, 5, 0.12) 22%,
      rgba(6, 5, 5, 0.1) 52%,
      rgba(6, 5, 5, 0.55) 82%,
      rgba(6, 5, 5, 0.82) 100%);
}
.section_hero.is-spotlight::after {
  background: linear-gradient(to top,
    rgba(6, 5, 5, 0.75) 0%, rgba(6, 5, 5, 0.28) 14%, transparent 30%);
}

/* --- Mobiilihero ---
   Pystyruudussa cover rajasi leveasta kuvasta vain auton keulan, ja koska
   se tuli sumeasta taustakerroksesta, auto nakyi epaterävana ja yli
   reunojen. Mobiilissa kaytetaan siksi omaa tiukempaa rajausta, jossa koko
   auto mahtuu kuvaan, ja se asetetaan teravana nauhana otsikon ja
   "Vaivatonta autokauppaa" -tekstin valiin. Taustakuva jaa taakse sumeaksi
   tunnelmaksi, mutta sen rajaus siirretaan pois autosta (oikea laita: tie
   ja puurivi), jottei sumea auto kilpaile teravan kanssa. */
@media (max-width: 767px) {
  /* --- Mobiilihero: yksi kokoruudun pystykuva ---
     Leveasta valokuvasta ei saa pystyruutuun kelvollista rajausta: cover
     nayttaa siita vain auton keulan. Mobiilille on siksi oma tiedosto,
     joka on rakennettu 1050 x 2500 -kanvaalle niin etta auto istuu 45 %:n
     korkeudelle eli otsikon ja taglinen valiin, ja ymparisto on valmiiksi
     sumennettu auton ympari pehmealla ellipsilla. Kaikki on siis yhdessa
     kuvassa — sivulla ei tarvita erillista teravaa kerrosta eika maskia,
     joten mitaan rajaa ei voi syntya. Kanvas on kapeampi (0,42) kuin
     kapeinkin puhelin, joten cover rajaa pystysuunnasta eika sivuilta,
     eika auto voi jaada reunojen ulkopuolelle. */
  .section_hero.is-spotlight .hero_backdrop img { display: none; }
  .section_hero.is-spotlight .hero_backdrop {
    background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a737849ea0825c5029ec211_pcc-hero-mobile5.webp");
    /* coverilla kuva skaalautuu korkeuden mukaan eika pystysuuntaan jaa
       liikkumavaraa, jolloin background-position ei tee mitaan. 132 %
       korkeutta suurentaa autoa noin kolmanneksen alkuperaisesta ja jattaa
       reilusti varaa, jonka avulla rajaus pidetaan hieman alempana (25 %). */
    background-size: auto 132%;
    /* Isompi prosentti piilottaa enemman kuvan ylareunaa, jolloin rajaus
       nousee ja auto istuu korkeammalla otsikon ja taglinen valissa. */
    background-position: center 34%;
    background-repeat: no-repeat;
  }

  /* Otsikko hieman alemmas, jotta se ei ole kiinni navipalkissa ja jotta
     auton ylle jaa ilmaa. */
  .section_hero.is-spotlight .hero_heading { margin-top: 1.7rem; }
  .section_hero.is-spotlight .hero_backdrop::before { content: none; }
  .section_hero.is-spotlight .hero_ground { display: none; }

  /* Kapealla ruudulla cover rajaa sivuja rajusti eika auton paikkaa voi
     lukita prosenteilla — sumennus pidetaan tasaisena ilman reikaa. */
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.72) 0%,
      rgba(6, 5, 5, 0.34) 26%,
      rgba(6, 5, 5, 0.3) 50%,
      rgba(6, 5, 5, 0.72) 78%,
      rgba(6, 5, 5, 0.9) 100%);
  }

}

/* --- Tuotekortin hinnoittelurivi ---
   Hinta paaosassa, kuukausiera hiusviivan takana hieman pienempana.
   Webflow-rakenteessa kaare on .card_car-pricing (paikallisessa
   .card_car-footer), joten molemmat tyylitellaan. */
.card_car-pricing {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.15rem 0.75rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line-dark);
}
.card_car-price { font-size: 1.45rem; letter-spacing: -0.01em; }
.card_car-monthly {
  position: relative;
  padding-left: 0.8rem;
  font-size: 0.95rem;
  font-weight: 400;
  color: var(--color-smoke);
}
.card_car-monthly::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.16em;
  bottom: 0.16em;
  width: 1px;
  background: var(--line-dark);
}

/* Heron sisalto omaan leveyteensa: otsikko ja alapalkki (tagline +
   napit) rajautuvat 1800 px:iin ja keskitetaan. Taustakuva jaa
   full-bleediksi, koska raja koskee vain container-largea. */
.section_hero.is-spotlight .container-large {
  max-width: 1800px;
  margin-left: auto;
  margin-right: auto;
}

/* Vanha varjoellipsi kuului irtileikattuun autoon; tassa variantissa
   .hero_ground on kuvakerros, joten pseudo pois kaytosta. */
.section_hero.is-spotlight .hero_ground::after { display: none; }

/* --- Ajovalot valokuvaherossa ---
   Irtileikatussa AMG-herossa valot olivat oma kuvatiedostonsa
   (.hero_spot-lights). Valokuvassa niita ei voi erottaa, joten umpiot
   maalataan CSS:lla. Kerros on .hero_groundin LAPSI, jolloin se perii
   saman transformin ja pysyy umpioiden paalla myos hiiriparallaksissa.
   Paikkaa EI voi lukita prosentteihin: cover rajaa kuvaa eri tavalla eri
   ruutusuhteilla, ja 16:10:n ja ultraleveän valilla umpiot liikkuvat yli
   nelja prosenttiyksikkoa. Siksi main.js laskee paikan samalla
   cover-matematiikalla kuin selain ja kirjoittaa sen naihin muuttujiin
   (--hl-*), myos ikkunan koon muuttuessa. Alla olevat oletusarvot
   vastaavat 16:9:aa siina tapauksessa ettei skripti aja.
   screen-sekoitus saa hehkun kayttaytymaan valona eika maalina.
   Sytytyksen hoitaa main.js:n kolmivaiheinen aikajana. */
.section_hero.is-spotlight .hero_headlights {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  mix-blend-mode: screen;
  background:
    /* kaukainen umpio: kirkas ydin */
    radial-gradient(var(--hl-far-rx, 3.2%) var(--hl-far-ry, 3%)
      at var(--hl-far-x, 56.6%) var(--hl-far-y, 62.1%),
      rgba(224, 240, 255, 0.95) 0%,
      rgba(188, 218, 255, 0.5) 46%,
      rgba(160, 200, 255, 0) 100%),
    /* sen ympärille levittyvä hehku */
    radial-gradient(calc(var(--hl-far-rx, 3.2%) * 3) calc(var(--hl-far-ry, 3%) * 3)
      at var(--hl-far-x, 56.6%) var(--hl-far-y, 62.1%),
      rgba(150, 195, 255, 0.3) 0%,
      rgba(150, 195, 255, 0) 74%),
    /* lähin umpio on loivemmassa kulmassa, siksi kapeampi */
    radial-gradient(var(--hl-near-rx, 0.8%) var(--hl-near-ry, 1.4%)
      at var(--hl-near-x, 45.9%) var(--hl-near-y, 63%),
      rgba(224, 240, 255, 0.9) 0%,
      rgba(188, 218, 255, 0.42) 48%,
      rgba(160, 200, 255, 0) 100%),
    radial-gradient(calc(var(--hl-near-rx, 0.8%) * 3.4) calc(var(--hl-near-ry, 1.4%) * 3.4)
      at var(--hl-near-x, 45.9%) var(--hl-near-y, 63%),
      rgba(150, 195, 255, 0.22) 0%,
      rgba(150, 195, 255, 0) 76%);
}
@media (max-width: 767px) {
  /* Kapealla ruudulla cover rajaa sivuja rajusti eika umpioita voi
     lukita prosenteilla — valot pois, muuten ne osuvat tyhjaan. */
  .section_hero.is-spotlight .hero_headlights { display: none; }
}

/* --- Autosivu mobiilissa: hinta- ja toimintokortti heti gallerian jalkeen ---
   .car_summary-card on DOM:issa .car_main-colin jalkeen, joten kapealla
   ruudulla se valui koko esittelytekstin alle. display: contents purkaa
   valikaareen, jolloin galleria, kortti ja tekstilohkot ovat samassa
   ruudukossa ja niiden jarjestyksen voi vaihtaa. */
/* Webflow'n autosivu kayttaa omaa rakennettaan (.auto_layout > .auto_media,
   .autoinfo_grid, .auto_card). Kapealla ruudulla kortti jai koko
   esittelytekstin alle, noin 1500 px:n paahan gallerian alta, vaikka juuri
   hinta ja napit ovat sivun tarkein palikka. Kaikki kolme ovat saman
   ruudukon suoria lapsia, joten pelkka order riittaa. */
@media (max-width: 991px) {
  .auto_layout .auto_media { order: 1; }
  .auto_layout .auto_card { order: 2; }
  .auto_layout .autoinfo_grid { order: 3; }
}

/* --- Varustelistat painalluksen taakse ---
   Vanhalta sivustolta tuodut varustelistat ovat keskimaarin 86 ja pisimmillaan
   yli 130 riviaa, joten avoimena ne tyontaisivat tekniset tiedot ja
   suositusautot satojen pikselien paahan. JS kaaree Varusteet-otsikon jalkeen
   tulevat lohkot (varusteet + lisavarusteet) .autoinfo_collapseen ja lisaa
   napin; tassa vain rajaus, haipyva alareuna ja napin ulkoasu. */
.autoinfo_collapse {
  position: relative;
  max-height: 21rem;
  overflow: hidden;
  transition: max-height 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
.autoinfo_collapse::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 7rem;
  background: linear-gradient(to bottom,
    rgba(17, 16, 16, 0) 0%,
    rgba(17, 16, 16, 0.72) 55%,
    var(--color-night) 100%);
  pointer-events: none;
  transition: opacity 0.35s ease;
}
/* Toinen ja sita seuraavat otsikot (Lisavarusteet, Tekniset tiedot) ovat
   kaikki collapse-kaareen sisalla ja kiinnittyivat edellisen listan
   viimeiseen riviin. Vali erottaa lohkot toisistaan. */
.autoinfo_collapse .autoinfo_subtitle { margin-top: 2.4rem; }

.is-autoinfo-open .autoinfo_collapse { max-height: 500rem; }
.is-autoinfo-open .autoinfo_collapse::after { opacity: 0; }

.autoinfo_toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  margin-top: 1.1rem;
  padding: 0.7rem 1.35rem;
  border: 1px solid var(--line-dark);
  border-radius: 999px;
  background: transparent;
  color: var(--color-paper);
  font-family: inherit;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}
.autoinfo_toggle:hover {
  background: var(--color-paper);
  border-color: var(--color-paper);
  color: var(--color-night);
}
.autoinfo_toggle::after {
  content: "";
  width: 0.42rem;
  height: 0.42rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-0.12em) rotate(45deg);
  transition: transform 0.3s ease;
}
.is-autoinfo-open .autoinfo_toggle::after {
  transform: translateY(0.08em) rotate(-135deg);
}

@media (max-width: 991px) {
  .car_layout { gap: 1.8rem; }
  .car_main-col { display: contents; }
  .car-hero_gallery { order: 1; }
  .car_summary-card { order: 2; }
  .car_block { order: 3; }
}

/* --- Mobiilinavi matalammaksi ---
   Palkin korkeus tuli kolmesta paallekkaisesta paddingista: nav_barin
   pystypadding, pilleripalkin oma padding ja nappien min-height. Kaikkia
   kevennetaan hieman, jolloin palkki laskee 81 px:sta 66 px:iin ilman etta
   napit menevat liian pieniksi osua. */
@media (max-width: 767px) {
  .nav_bar { padding-top: 10px; padding-bottom: 10px; }
  .nav_pillbar { padding: 5px; }
  .nav_boxbtn,
  .nav_burger { min-height: 36px; padding-top: 9px; padding-bottom: 9px; }
  /* Kielivalitsin ei ole .nav_boxbtn, joten se jai 40 px:iin ja tyonsi
     pilleripalkkia korkeammaksi kuin Valikko-nappi. */
  .nav_lang { min-height: 36px; }
}

/* --- Esittelyssa-osion otsikkorivi ---
   "Kaikki vaihtoautot" on nuolien alla oikeassa laidassa. Vetopalkki
   kuuluu korttiraidan ALLE, ei otsikon alle: se on raidan ohjain, joten
   se luetaan yhteen sen kanssa ja on hiirella lyhyen matkan paassa.
   Otsikkoembedin palkki poistetaan DOM:ista site-koodin hydraatiossa,
   jotta pcc.js kiinnittyy alempaan (se hakee ensimmaisen osuman); tama
   saanto piilottaa sen niissa selaimissa joissa skripti ei ehdi ajaa. */
.showcase_head-main .showcase_progress { display: none; }
.container-large > .showcase_progress { margin-top: 2.4rem; }

.showcase_nav-col {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1.15rem;
  flex-shrink: 0;
}
.showcase_nav-col .showcase_head-link { margin-top: 0; }

@media (max-width: 767px) {
  /* Kosketusruudulla raitaa selataan sormella, joten erillinen vetopalkki
     on turha: se vie tilaa eika tuo mitaan mita sipaisu ei jo tee.
     "Kaikki vaihtoautot" siirtyy site-koodissa raidan alle. */
  .showcase_header { flex-direction: column; align-items: stretch; gap: 1.1rem; }
  .container-large > .showcase_progress { display: none; }
  .showcase_nav-col { align-items: flex-start; }

  /* "Kaikki vaihtoautot" on raidan alla oma rivinsa, joten se kuuluu
     keskelle. Linkki on inline-flex, joten se nostetaan lohkotasolle ja
     kavennetaan sisallon levyiseksi, jotta auto-marginaalit purevat. */
  .container-large > .showcase_head-link {
    display: flex;
    width: -moz-fit-content;
    width: fit-content;
    margin: 1.15rem auto 0;
  }

  /* Nuolet ovat kosketuskohteita: 36 px jai alle suositellun 44 px:n. */
  .showcase_nav { gap: 0.6rem; }
  .showcase_nav .tile_arrow {
    width: 48px;
    height: 48px;
    padding: 0.5rem;
  }
  /* Lisaspesifisyys: .showcase_header .showcase_nav .tile_arrow svg pitaa
     ikonin muuten 26 px:ssa. */
  .showcase_header .showcase_nav .tile_arrow svg { width: 30px; height: 30px; }
}

/* --- Mobiilivalikko: nuolet pois, yhteystietorivi ylimmaiseksi --- */
@media (max-width: 767px) {
  /* Kapealla ruudulla laatat ovat kokonaan painettavia, joten erillinen
     nuoli-ikoni on turhaa koristetta. */
  .nav_overlay-grid .tile_arrow,
  .nav_overlay-grid .bento_tile-icon { display: none; }

  /* Jarjestys ylhaalta: yhteystiedot, Vaihtoautot, kaksi laattaa,
     Esittelyssa ja lopuksi pikalinkkirivi. Nama ovat ruudukon lapsia,
     joten pelkka order riittaa — sarakepaikat sailyvat. */
  .nav_overlay-grid .is-menu-social,
  .nav_overlay-grid .is-menu-info { order: -2; }
  .nav_overlay-grid .is-menu-hero { order: -1; }
  .nav_overlay-grid .is-menu-sub1,
  .nav_overlay-grid .is-menu-sub2 { order: 0; }
  .nav_overlay-grid .is-menu-featured { order: 1; }
  .nav_overlay-grid .nav_overlay-row { order: 2; }

  /* Kuvalliset laatat: enemman ilmaa reunoihin. Some- ja osoitelaatat
     jatetaan ulos, ne ovat matalia pikapainikkeita. */
  .nav_overlay-grid > .bento_tile:not(.is-menu-social):not(.is-menu-info) {
    padding: 1.15rem 1.2rem;
  }

  /* Vaihtoautot-otsikko hieman pienemmaksi (oli 30 px). */
  .nav_overlay-grid .is-menu-hero .bento_tile-title { font-size: 1.6rem; }

  /* Auto tilauksesta- ja Mika on Prestige -laattojen alatekstit samaan
     kokoon kuin Vaihtoautot-laatan alateksti (0,82rem = 13 px). */
  /* Alateksti ei ole <p> vaan .nav_overlay-meta (oli 14,4 px). */
  .nav_overlay-grid .is-menu-sub1 .nav_overlay-meta,
  .nav_overlay-grid .is-menu-sub2 .nav_overlay-meta {
    font-size: 0.82rem;
    line-height: 1.45;
  }

  /* Osoitelaatta muutetaan linkiksi site-koodissa. */
  a.bento_tile.is-menu-info { text-decoration: none; }

  /* Sulje-nappi pienemmaksi. */
  .nav_overlay-close { padding: 0.65rem 1.25rem; font-size: 0.7rem; }

  /* Kolme viimeista nappia: hieman pienempi teksti ja tarkka keskitys.
     Aiempi saanto havisi Webflow-luokalle, siksi lisaspesifisyys. */
  .nav_overlay .nav_overlay-row .bento_tile {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    align-items: center;
    justify-content: center;
  }
  .nav_overlay .nav_overlay-row .bento_tile-footer {
    width: 100%;
    justify-content: center;
    margin: 0;
    /* Nuoli on piilotettu, joten sen vali jaisi roikkumaan otsikon perään. */
    gap: 0;
  }
  .nav_overlay .nav_overlay-row .bento_tile-footer > div { width: 100%; }
  .nav_overlay .nav_overlay-row .bento_tile-title {
    width: 100%;
    font-size: 0.82rem;
    line-height: 1.25;
    text-align: center;
    /* Otsikon 8 px alamarginaali kasvatti riviruudun alaspain, jolloin
       teksti istui 4 px yli laatan keskikohdan. */
    margin-bottom: 0;
  }
}

/* --- Intro-osio mobiilissa ---
   Otsikon ylapuolella oli 66 px (ruudukon 24 px + sarakkeen 48 px) ja
   alapuolella 57 px, eli valit olivat lahes yhta suuret ja molemmat liian
   isot kapealla ruudulla. Nyt otsikko on selvasti lahempana leipatekstia
   kuin kuvaa, jolloin ne lukeutuvat yhteen kuuluvaksi. */
@media (max-width: 767px) {
  .intro_media-grid { row-gap: 1.5rem; }
  .intro_side { padding-top: 1.5rem; }
  /* Lisaspesifisyys: pelkka .intro_statement havisi Webflow-luokalle,
     joka piti valin 57 px:ssa. */
  .intro_side .intro_statement,
  .intro_media-grid .intro_statement { margin-bottom: 1.15rem; }
}

/* --- Suomen Vahvimmat -sertifikaatti footerissa ---
   Merkki on valkoinen PNG lapinakyvalla taustalla, joten se istuu
   tummaan footeriin sellaisenaan. Pidetaan maltillisen kokoisena: se on
   luottamussignaali, ei nostokuva. */
.footer_badge {
  display: block;
  width: auto;
  height: 86px;
  margin-top: 1.6rem;
  opacity: 0.9;
}
@media (max-width: 767px) {
  .footer_badge { height: 72px; margin-top: 1.2rem; }
}

/* --- Autosivun kulurivi hinnan alla ---
   Toimituskulut, avausmaksu ja kasittelymaksu ovat pikkupraattia hinnan
   vieressa: ne kuuluvat nakya, mutta eivat kilpaile hinnan kanssa. */
#autokulut {
  margin: 0.55rem 0 0;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--color-smoke);
}

/* Tietosuojaselosteen linkki alapalkissa samaan tyyliin kuin muut. */
.footer_bottom a { color: inherit; transition: color 0.3s; }
.footer_bottom a:hover { color: var(--color-paper); }

/* --- Mobiilivalikon laattojen yhtenaistys ---
   Laatat olivat 110–147 px korkeita ja otsikot 16,8–25,6 px, mikä sai
   ruudukon nayttamaan sattumanvaraiselta. Nyt neljalla kuvalaatalla on
   sama vahimmaiskorkeus ja kaksi kokoa: paalaatta ja muut. Overlayn
   pystypadding on symmetrinen, jolloin sisalto asettuu keskelle eika
   paina alareunaa. */
@media (max-width: 767px) {
  .nav_overlay {
    padding-top: 3.9rem;
    padding-bottom: 3.9rem;
  }

  /* Sub-laattojen alateksti kietoutuu kahdelle riville, joten ne asettuvat
     141 px:iin. Sama luku annetaan kaikille, jolloin neljä kuvalaattaa ovat
     tasan yhtä korkeat. Overlayn paddingista otetaan vastaavasti pois. */
  .nav_overlay-grid .is-menu-hero,
  .nav_overlay-grid .is-menu-sub1,
  .nav_overlay-grid .is-menu-sub2,
  .nav_overlay-grid .is-menu-featured { min-height: 141px; }

  .nav_overlay-grid .is-menu-hero .bento_tile-title { font-size: 1.5rem; }
  .nav_overlay-grid .is-menu-sub1 .bento_tile-title,
  .nav_overlay-grid .is-menu-sub2 .bento_tile-title,
  .nav_overlay-grid .is-menu-featured .bento_tile-title { font-size: 1.15rem; }

  .nav_overlay-grid .is-menu-hero .bento_tile-desc,
  .nav_overlay-grid .is-menu-sub1 .nav_overlay-meta,
  .nav_overlay-grid .is-menu-sub2 .nav_overlay-meta,
  .nav_overlay-grid .is-menu-featured .nav_overlay-meta {
    font-size: 0.82rem;
    line-height: 1.45;
  }

  /* Kapealla ruudulla kuvalaatoissa on tilaa vain otsikolle: alatekstit
     puristuivat kolmelle riville ja veivat kuvalta tilan. */
  .nav_overlay .bento_tile-desc,
  .nav_overlay .nav_overlay-meta { display: none; }

  /* Kolmen napin rivi: teksti tasan laatan keskelle molempiin suuntiin. */
  .nav_overlay .nav_overlay-row .bento_tile { min-height: 52px; }
  .nav_overlay .nav_overlay-row .bento_tile-footer { margin: 0; align-items: center; }
  /* line-height 1.25 jatti kirjainten musteen 4 px ylakenoon laatan
     keskikohdasta; ykkosella laatikko vastaa kirjainten korkeutta. */
  .nav_overlay .nav_overlay-row .bento_tile-title { line-height: 1; }
}


/* ============================================================
   HERON AUTO ESIIN — 6.8.2026
   Valokuvaherossa auto ja ymparisto ovat samassa kuvassa, joten
   autoa ei voi valaista omana kerroksenaan kuten irtileikatussa
   versiossa. Erottelu tehdaan neljalla asialla:
     1) .hero_ground on jo terava kopio samasta kuvasta, maskattuna
        auton kohdalle. Se saa nyt OMAN, vahvemman saatonsa —
        sama asia kuin valokuvaajan dodge-maski.
     2) pohjakerros vaimennetaan, jolloin ero on se joka nakyy.
     3) vinjetti keskitetaan autoon (oli 48 % / 66 %, auto on
        61,4 % / 62,8 %) ja syvennetaan.
     4) auton ympari maalataan lampiman valon rengas, jonka
        keskusta on lapinakyva — auto ei sameene, mutta siluetti
        irtoaa tummasta ymparistosta.
   Ero autokerroksen ja pohjan valilla EI saa olla suuri: maski
   liukuu 30 %:sta 100 %:iin, ja liian iso hyppy nakyisi
   valorenkaana eika valaistuksena.
   ============================================================ */

/* 1. Autokerros: kirkkaampi, kontrastikkaampi ja hitusen lampimampi. */
.section_hero.is-spotlight .hero_ground {
  filter: brightness(1.06) contrast(1.15) saturate(0.98) sepia(0.07) hue-rotate(-8deg);
}

/* 2. Ymparisto vetaytyy (oli 0.94 / 1.04 / 0.82). */
.section_hero.is-spotlight .hero_backdrop img {
  filter: brightness(0.87) contrast(1.02) saturate(0.74);
}

/* 3. Vinjetti auton ympari: keskitetty autoon ja syvennetty. */
.section_hero.is-spotlight .hero_backdrop::after {
  background:
    /* Otsikon taakse vasempaan laitaan. Kevennetty 0,86 -> 0,58: laita oli
       niin tumma etta taustakuva katosi siita kokonaan. Otsikko on iso ja
       valkoinen, joten se kestaa taman hyvin. */
    linear-gradient(102deg,
      rgba(6, 5, 5, 0.58) 0%,
      rgba(6, 5, 5, 0.4) 24%,
      rgba(6, 5, 5, 0.14) 48%,
      rgba(6, 5, 5, 0) 72%),
    /* Auton ymparys tummenee reunoja kohti */
    radial-gradient(52% 44% at 61.4% 57.8%,
      rgba(6, 5, 5, 0) 0%,
      rgba(6, 5, 5, 0) 34%,
      rgba(6, 5, 5, 0.3) 68%,
      rgba(6, 5, 5, 0.6) 100%),
    /* Ylareuna navia varten ja alareuna taglinea varten */
    linear-gradient(to bottom,
      rgba(6, 5, 5, 0.55) 0%,
      rgba(6, 5, 5, 0.12) 22%,
      rgba(6, 5, 5, 0.1) 52%,
      rgba(6, 5, 5, 0.55) 82%,
      rgba(6, 5, 5, 0.82) 100%);
}

/* 4. Lampiman valon rengas. Tama on section-tason ::after (taso 2),
   eli KAIKEN paalla — myos teravan autokerroksen (taso 1). Siksi
   keskusta on taysin lapinakyva: muuten se sumentaisi auton. */
.section_hero.is-spotlight::after {
  background:
    radial-gradient(46% 40% at 61.4% 56%,
      rgba(255, 243, 224, 0) 0%,
      rgba(255, 243, 224, 0) 30%,
      rgba(255, 240, 216, 0.085) 52%,
      rgba(255, 238, 212, 0.048) 70%,
      rgba(255, 238, 212, 0) 88%),
    linear-gradient(to top,
      rgba(6, 5, 5, 0.75) 0%,
      rgba(6, 5, 5, 0.28) 14%,
      transparent 30%);
}

/* Mobiilissa hero on yksi valmiiksi sumennettu pystykuva eika erillista
   teravaa autokerrosta ole, joten dodge-maskia ei voi tehda. Auto istuu
   kuvassa n. 46 %:n korkeudella.
   ::before on mobiilissa muuten pois kaytosta (content: none), joten se
   otetaan tahan valokerrokseksi: screen-sekoitus kayttaytyy valona eika
   maalina, eli mustan auton kiillot nousevat mutta lakka ei harmaannu.
   HUOM: ::before perii ylempaa backdrop-filterin ja maskin, jotka on
   nollattava — muuten kaista sumenisi ja maski leikkaisi valon pois. */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    -webkit-mask-image: none;
    mask-image: none;
    mix-blend-mode: screen;
    /* Leveys 120 % = vaakareunat jaavat ruudun ULKOPUOLELLE, joten
       soikion reunaa ei voi nahda renkaana. Vain pysty falloff jaa
       nakyviin, ja se lukee valokaistana. Useampi vaihe pyoristaa
       liu'un molemmat paat — kolmella vaiheella reuna erottui. */
    background: radial-gradient(120% 32% at 50% 47%,
      rgba(255, 246, 232, 0.16) 0%,
      rgba(255, 246, 232, 0.118) 38%,
      rgba(255, 246, 232, 0.066) 60%,
      rgba(255, 246, 232, 0.026) 80%,
      rgba(255, 246, 232, 0.007) 92%,
      rgba(255, 246, 232, 0) 100%);
  }

  /* Desktopin valorengas POIS mobiilista: se on keskitetty desktop-
     rajauksen autoon (61,4 % / 61 %), ja kapealla ruudulla auto on
     50 % / 46 %:ssa — rengas osui viereen ja sen reuna nakyi. */
  .section_hero.is-spotlight::after {
    background: linear-gradient(to top,
      rgba(6, 5, 5, 0.75) 0%,
      rgba(6, 5, 5, 0.28) 14%,
      transparent 30%);
  }

  /* Tummennukset kevennetty auton kaistalta: pystyliuku oli 0,34 / 0,30
     ja lisaamani vinjetti 0,34, mikä yhdessa painoi mustan auton
     lukukelvottomaksi. Ylä- ja alareuna pysyvat tummina tekstia varten. */
  .section_hero.is-spotlight .hero_backdrop::after {
    background:
      radial-gradient(132% 56% at 50% 46%,
        rgba(6, 5, 5, 0) 0%,
        rgba(6, 5, 5, 0) 46%,
        rgba(6, 5, 5, 0.06) 62%,
        rgba(6, 5, 5, 0.14) 78%,
        rgba(6, 5, 5, 0.22) 92%,
        rgba(6, 5, 5, 0.26) 100%),
      /* Otsikko on 18-31 %:n kohdalla. Aiempi liuku oli siella jo 0,19,
         eli tummennus loppui liian aikaisin ja otsikon kontrasti katosi
         kun mobiilikuvaa kirkastettiin. Lasku venytetaan 40 %:iin asti,
         jolloin otsikon takana on 0,54-0,32 mutta auton kaista
         (46-58 %) jaa yha vaaleaksi. */
      linear-gradient(to bottom,
        rgba(6, 5, 5, 0.7) 0%,
        rgba(6, 5, 5, 0.54) 18%,
        rgba(6, 5, 5, 0.34) 30%,
        rgba(6, 5, 5, 0.19) 40%,
        rgba(6, 5, 5, 0.15) 52%,
        rgba(6, 5, 5, 0.64) 78%,
        rgba(6, 5, 5, 0.9) 100%);
  }
}

/* ============================================================
   YHTEYSTIETOSIVUN SPLIT-ASETTELU — 6.8.2026
   Otsikko + liikekuva vierekkain, vali, sitten kartta vasemmalla ja
   kayntiosoite/yhteys/aukioloajat oikealla. Saannot ovat taalla eivatka
   sivuembedissa, koska sama asettelu on seka /yhteystiedot- etta
   /kontakt-sivulla — kahdessa embedissa ne ehtisivat eriytya.
   ============================================================ */
.contact_split {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: clamp(2rem, 4.5vw, 5rem);
  align-items: center;
}
.contact_split-media { border-radius: var(--radius-card); overflow: hidden; }
.contact_split-media img {
  display: block;
  width: 100%;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  /* Liikkeen valokyltti on kuvassa n. 53 %:n korkeudella; 58 % tuo sen
     vaakarajauksen keskelle. */
  object-position: center 58%;
}
.contact_gap { height: clamp(3.5rem, 7vw, 7rem); }
.contact_visit {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(2rem, 4.5vw, 5rem);
  align-items: start;
}
/* Kartta on muualla 16:10; tassa se on tekstipalstan parina, joten
   4:3 pitaa palstat suunnilleen samankorkuisina. */
.contact_visit .contact_map { aspect-ratio: 4 / 3; }
.contact_visit .contact_info-list { margin-top: 0; }

@media (max-width: 991px) {
  .contact_split,
  .contact_visit { grid-template-columns: 1fr; gap: 2.4rem; }
  /* Kapealla ruudulla osoite ja aukioloajat ovat tarkeampia kuin kartta,
     joten kartta siirtyy niiden alle vaikka se on DOM:issa ensin. */
  .contact_visit-map { order: 2; }
  .contact_split-media img { aspect-ratio: 16 / 10; }
}

/* ============================================================
   AUTOSIVUN MYYJAKORTIT — 6.8.2026
   Sijainti on sticky-kortin pohjalla nappien jalkeen: siina kohtaa
   kavija on juuri nahnyt hinnan ja toimintonapit, eli paatos ottaa
   yhteytta syntyy siina. Lohko on tarkoituksella tiivis (kaksi rivia
   + sahkoposti) — kortti on sticky, ja jos se kasvaa ruutua
   korkeammaksi, kiinnitys lakkaa toimimasta.
   .auto_card-luokat tulevat Webflow'sta eivatka nay tassa tiedostossa,
   joten tama lohko on tyylitelty omavaraisesti muuttujilla.
   ============================================================ */
.auto_sellers {
  margin-top: 1.5rem;
  padding-top: 1.35rem;
  border-top: 1px solid var(--line-dark);
}
.auto_sellers-label {
  margin-bottom: 0.9rem;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--color-smoke);
}
.auto_seller {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0;
  color: var(--color-paper);
  text-decoration: none;
}
.auto_seller-avatar {
  flex: none;
  width: 40px; height: 40px;
  border-radius: 50%;
  object-fit: cover;
  /* Sam on lapinakyva PNG-irtileikkaus: ilman taustavaria ympyra jaisi
     vajaaksi ja kuva kelluisi. */
  background: var(--color-carbon, #1a1918);
}
.auto_seller-body { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.auto_seller-name { font-size: 0.92rem; line-height: 1.3; }
.auto_seller-phone {
  font-size: 0.85rem;
  color: var(--color-smoke);
  transition: color 0.3s var(--ease-luxe);
}
.auto_seller:hover .auto_seller-phone { color: var(--color-champagne); }
.auto_sellers-mail {
  display: inline-block;
  margin-top: 0.7rem;
  font-size: 0.82rem;
  color: var(--color-smoke);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 0.3s var(--ease-luxe);
}
.auto_sellers-mail:hover { color: var(--color-champagne); }

/* ============================================================
   ESITTELYKARUSELLIN NYKIMINEN — 6.8.2026
   Kortissa oli KAKSI paallekkaista sumennusta samasta kuvasta:
   .showcase_card-wash on 136 %:n kokoinen taysikokoinen CMS-kuva
   filter: blur(46px):lla, ja .showcase_card-body sumensi saman
   kuvan uudelleen backdrop-filter: blur(26px):lla. Molemmat
   rasteroidaan uudelleen aina kun kortti liikkuu — eli sivua
   vieritettaessa ja raitaa raahatessa. Viisi korttia x kaksi
   sumennusta oversized-pinnalla riittaa nykimaan.
   Ulkoasu sailyy: wash on jo 0,3:n opacityllä pelkka varivihje,
   ja sen sumentaminen TOISEEN kertaan ei lisannyt siihen mitaan.
   ============================================================ */
.showcase_card-wash {
  /* 46 -> 26 px. Sumennuksen hinta kasvaa sateen mukana, ja tassa
     kokoluokassa eroa ei erota 0,3:n opacityn takaa. */
  filter: blur(26px) saturate(0.75) brightness(0.62);
}
.showcase_card-body {
  /* backdrop-filter pois: se luki jo valmiiksi sumeaa pintaa.
     Liuku hieman tummemmaksi, jotta tekstin kontrasti sailyy
     tasmalleen entisellaan ilman sumennusta. */
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  background: linear-gradient(to bottom, rgba(12, 11, 11, 0.58), rgba(12, 11, 11, 0.78));
}
/* Rajaa uudelleenpiirto kortin sisalle: kortilla on jo
   overflow: hidden ja isolation: isolate, joten paint-containment
   ei muuta mitaan visuaalisesti. */
.showcase_card { contain: paint; }

/* ============================================================
   PALJASTUKSEN TAYDELLINEN OHITUS — 6.8.2026
   Paljastus ei ole kiinni LUOKASSA vaan data-reveal-img
   -ATTRIBUUTISSA: sita kayttavat seka CSS (piilotus ennen JS:aa)
   etta main.js (querySelectorAll('[data-reveal-img]')). Luokan
   nimen vaihtaminen ei siis poista mitaan.
   Arvo "fade" tarkoittaa main.js:ssa "ei animaatiota lainkaan",
   mutta CSS piilotti elementin silti ennen kuin JS ehti purkaa
   sen — ja juuri se nakyi pyyhkaisyna. Nyt "fade" ohittaa myos
   CSS-piilotuksen, jolloin kuva on paikallaan ensimmaisesta
   kehyksesta lahtien vaikka GSAP ei koskaan ajaisi.
   ============================================================ */
html.js [data-reveal-img="fade"] {
  clip-path: none !important;
  opacity: 1 !important;
}
html.js [data-reveal-img="fade"] img {
  transform: none !important;
}

/* Paluulinkki autosivulla: kulta hoverissa, sama ele kuin muualla. */
.auto_back { transition: color 0.3s var(--ease-luxe); }
.auto_back:hover { color: var(--color-champagne); }

/* ============================================================
   VALIKON LAATAT MOBIILISSA — 6.8.2026
   ============================================================ */
@media (max-width: 767px) {
  /* Verho oli 0,99 / 0,93 / 0,72 / 0,50 eli kuva katosi lahes kokonaan.
     Alatekstit ovat tassa koossa piilossa, joten luettavaksi tarvitsee
     pitaa vain otsikko — ja sille riittaa tiivis kaista alareunassa.
     Otsikoilla on lisaksi text-shadow, joka kantaa loput. */
  .nav_overlay .bento_tile-media::after {
    background: linear-gradient(to top,
      rgba(6, 5, 5, 0.88) 0%,
      rgba(6, 5, 5, 0.6) 34%,
      rgba(6, 5, 5, 0.28) 66%,
      rgba(6, 5, 5, 0.1) 100%);
  }
}

/* --- Laattojen rajaukset ---
   Kaikki kolme ovat pysty- tai laajakuvia hyvin matalassa laatikossa,
   joten object-position ratkaisee mita niista nakyy. */
/* Vaihtoautot: autot olivat kiinni ylareunassa. Pienempi luku nostaa
   rajauskaistaa kuvassa ylospain, jolloin autot laskeutuvat laatalla. */
.nav_overlay .is-menu-hero .bento_tile-media img { object-position: 50% 58%; }
/* Mika on Prestige: valokyltti on kuvassa n. 55 %:n korkeudella, mutta
   rajaus oli 28 %:ssa eli logon ylapuolella — laatalla nakyi pelkka
   seinaa. 56 % tuo kyltin kaistan keskelle. */
.nav_overlay .is-menu-sub2 .bento_tile-media img { object-position: 50% 56%; }
/* Esittelyssa: auto on kuvassa keskella ja jai kokonaan otsikkotekstin
   taakse. Isompi luku siirtaa kaistaa alaspain kuvassa, jolloin auto
   nousee laatalla ylemmas tekstin ylapuolelle. */
.nav_overlay .is-menu-featured .bento_tile-media img { object-position: 50% 72%; }


/* ============================================================
   AUTOSIVUN TIEDOT KAHTEEN SARAKKEESEEN KAPEALLA — 6.8.2026
   auto-fit + minmax hoitaa responsiivisuuden ilman erillisia
   breakpointteja: kaksi saraketta syntyy vasta kun 2 x 8,5 rem +
   vali mahtuu, ja kaikkein kapeimmilla ruuduilla rivit pinoutuvat
   itsestaan yhteen sarakkeeseen.
   ============================================================ */
/* Ei rajattu breakpointtiin: sticky-kortti rajautui 14 tuuman laptopilla
   "Varaa auto" -napin kohdalta, ja kahdeksan yksisarakkeista rivia oli
   suurin yksittainen syy. Kahdessa sarakkeessa kortti lyhenee n. 180 px.
   auto-fit hoitaa kapeat ruudut: yksi sarake kun 2 x 8,5 rem ei mahdu. */
.auto_specs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
  gap: 1.25rem 1.5rem;
}

/* Valikon laattojen verho DESKTOPILLA erikseen: siella laatoissa on myos
   alatekstit, jotka eivat erottuneet kuvasta. Mobiilissa alatekstit ovat
   piilossa, joten siella riittaa selvasti kevyempi verho (ks. edella
   max-width: 767px). Nama kaksi saatoa ovat siis tarkoituksella eri. */
@media (min-width: 768px) {
  .nav_overlay .bento_tile-media::after {
    background: linear-gradient(to top,
      rgba(8, 7, 7, 0.96) 0%,
      rgba(8, 7, 7, 0.86) 26%,
      rgba(8, 7, 7, 0.52) 52%,
      rgba(8, 7, 7, 0.16) 78%,
      transparent 100%);
  }
}

/* ============================================================
   VALIKKO MATALALLA LÄPPÄRINÄYTÖLLÄ — 6.8.2026
   Alarivin laatat ja niiden ↗-nuolet leikkautuivat n. 768 px
   korkealla ruudulla. Kaksi eri syytä:
   1) .nav_overlay-grid rivit ovat 64px / minmax(200px,1fr) /
      minmax(140px,20vh) ja ruudukon min-height on 100svh - 12rem.
      Matalalla ruudulla 1fr-raita kutistuu vaikka alarivi ei, ja
      koko ruudukko jää silti korkeammaksi kuin sille jäävä tila.
   2) .bento_tile { min-height: 150px } on SUUREMPI kuin alarivin
      140px raita, joten laatat vuotivat ruudukon ulkopuolelle —
      juuri sen verran että nuolet menivät Sulje-napin alle.
   Tila otetaan ylärivin Vaihtoautot- ja Esittelyssä-laatoista
   (1fr-raita), koska ne ovat kuvalaattoja eivätkä lyhene teksti-
   sisällöstä. Alarivi saa kiinteän korkeuden, jotta se ei enää
   riipu 20vh:sta.
   ============================================================ */
/* Rajattu 992 pikselista ylospain: alle sen (>= 768 px) valikko on jo
   pinottu ja vieritettava (max-width: 991px -lohko), ja siella
   grid-template-rows on `none` — jos tama sailisi 768:sta alkaen, se
   palauttaisi kolmen raidan ruudukon ja rikkoisi pinotun asettelun. */
@media (min-width: 992px) and (max-height: 820px) {
  .nav_overlay {
    /* 5,75 rem = 92 px: navipalkin alalaita on 81 px:ssä, ja koska
       ruudukko täyttää jäljelle jäävän tilan tarkalleen, keskityksestä
       ei jää yhtään pelivaraa kuten oletustilassa — 3,25 rem jätti
       ylärivin (some, osoite ja isojen laattojen ylälaita) navin alle. */
    padding-top: 5.75rem;
    /* Alareunaan jätetään Sulje-napin verran + väli, muuten alarivin
       nuoli menee napin alle. */
    padding-bottom: 5rem;
  }
  .nav_overlay-grid {
    grid-template-rows: 54px minmax(130px, 1fr) 148px;
    min-height: calc(100svh - 10.75rem);
    gap: 6px;
  }
  /* Tämä on korjauksen ydin: ilman tätä alarivin laatta on 150 px
     vaikka raita on 126 px, jolloin nuoli jää ruudukon alapuolelle. */
  .nav_overlay .bento_tile { min-height: 0; }
  .nav_overlay-row { gap: 6px; }

  /* Isot kuvalaatat: hieman tiiviimpi sisennys ja pienempi otsikko,
     jotta teksti + nuoli mahtuvat lyhentyneeseen laattaan. */
  .nav_overlay-grid .is-menu-hero,
  .nav_overlay-grid .is-menu-featured,
  .nav_overlay-grid .is-menu-sub1,
  .nav_overlay-grid .is-menu-sub2 { padding: 1.15rem; }
  .nav_overlay .is-menu-hero .bento_tile-title { font-size: clamp(1.6rem, 2.3vw, 2.3rem); }
  .nav_overlay .is-menu-sub1 .bento_tile-title,
  .nav_overlay .is-menu-sub2 .bento_tile-title { font-size: clamp(1.15rem, 1.55vw, 1.45rem); }
  .nav_overlay .bento_tile-desc { margin-top: 0.35rem; }
  .nav_overlay .bento_tile-footer { gap: 0.5rem; }

  /* Alarivin pikkulaatat vielä hieman tiiviimmiksi kuin perusversiossa,
     jotta ne mahtuvat 140 px raitaan. */
  .nav_overlay-row .bento_tile.is-plain { padding: 0.85rem; }
  .nav_overlay-row .bento_tile.is-plain > .bento_tile-icon {
    width: 30px; height: 30px; margin-bottom: 0.6rem;
  }
  .nav_overlay-row .bento_tile.is-plain > .bento_tile-icon svg { width: 15px; height: 15px; }
  .nav_overlay-row .bento_tile-footer { gap: 0.4rem; }

  /* Sulje-nappi pienemmäksi ja lähemmäs alareunaa. */
  .nav_overlay-close {
    bottom: 0.9rem;
    padding: 0.6rem 1.3rem;
    font-size: 0.7rem;
    gap: 0.7rem;
  }
  .nav_overlay-close .close-x { font-size: 0.8rem; }
}


/* ============================================================
   ETUSIVUN KARUSELLIKORTIT PIENILLÄ RUUDUILLA — 6.8.2026
   Kortti on mobiilissa 84–88 vw leveä, jolloin 16/10-kuva vie
   yksin yli puolet ruudun korkeudesta ja kortti jatkuu taitteen
   alle. 16/12 (= 4/3) madaltaa kuvaa n. 17 %, jolloin otsikko,
   tekniset tiedot ja hinta mahtuvat samaan näkymään.
   ============================================================ */
/* Mobiilissa ei enaa omaa suhdetta: perusarvo 16/9 on jo matalampi kuin
   entinen 16/10, eli molemmat paatyvat samaan lopputulokseen. */


/* ============================================================
   AUTOSIVUN STICKY-KORTTI MATALALLA LÄPPÄRINÄYTÖLLÄ — 6.8.2026
   14 tuuman läppärillä (esim. 1280 × 660) kortti oli 692 px korkea
   ja sticky-offset 120 px, eli alalaita jäi 152 px ruudun
   ulkopuolelle — "Varaa auto" ei ollut koskaan näkyvissä eikä
   klikattavissa, koska kiinnitetty elementti ei vierry mukana.
   Isoin yksittäinen säästö on teknisten tietojen kolmas sarake:
   minmax 8,5 rem → 7,25 rem mahtuu 423 px leveään korttiin, jolloin
   kahdeksan riviä menee neljästä rivistä kolmeen (−76 px).
   Sama korkeusraja (820 px) kuin valikossa, jotta sivusto vaihtaa
   "matalan näytön" tilaan kerralla eikä osissa.
   ============================================================ */
@media (min-width: 992px) and (max-height: 820px) {
  .auto_card {
    top: 6rem;
    padding: 1.25rem;
    gap: 1rem;
    /* Varmistus kaikkein matalimmille ruuduille: jos kortti ei
       tiivistettynäkään mahdu, se saa oman vierityksensä sen sijaan
       että alalaita katoaisi kokonaan. */
    max-height: calc(100svh - 7.5rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .auto_price-row { padding-bottom: 0.9rem; }
  .auto_specs {
    grid-template-columns: repeat(auto-fit, minmax(7.25rem, 1fr));
    gap: 0.85rem 1rem;
  }
  .auto_actions { padding-top: 0.9rem; gap: 0.55rem; }
}


/* ============================================================
   RAHOITUSLASKURI JA -HAKEMUS — 6.8.2026
   Laskurin merkkaus ja perustyylit ovat autosivun HtmlEmbedissä
   (.rlask / .rhak). Embedin <style> on DOM:issa TÄMÄN tiedoston
   jälkeen, joten samalla spesifisyydellä kirjoitettu sääntö häviäisi
   — siksi valitsimet on ankkuroitu #rahoituslaskuri- ja
   .rhak_tausta-esivanhempaan.
   ============================================================ */

/* Kaksirivinen otsikko ("Käsiraha tai vaihtoauto (€)") jätti oman
   kenttänsä laatikon muita alemmas: kentät ovat ruudukon soluja, jotka
   venyvät rivin korkeuteen, mutta sisältö alkoi ylhäältä. margin-top:
   auto sitoo syötelaatikon solun alareunaan, jolloin kaikki rivin
   laatikot ovat samalla viivalla riippumatta otsikon rivimäärästä. */
#rahoituslaskuri .rlask_kentta input,
#rahoituslaskuri .rlask_kentta select { margin-top: auto; }

/* Koko lohko tiiviimmäksi — se vei aiemmin lähes ruudun korkeuden. */
#rahoituslaskuri.rlask { margin-top: 2.5rem; padding: 1.5rem; }
#rahoituslaskuri .rlask_title { font-size: 1.3rem; }
#rahoituslaskuri .rlask_lead { margin-bottom: 1.2rem; font-size: 0.85rem; }
#rahoituslaskuri .rlask_grid { gap: 0.8rem 1rem; }
#rahoituslaskuri .rlask_kentta { gap: 0.3rem; }
#rahoituslaskuri .rlask_kentta > span { font-size: 0.64rem; letter-spacing: 0.11em; }
/* min-height, koska selectin korkeus ei tule paddingista ja rivikorkeudesta
   samalla tavalla kuin inputin: pudotusvalikko jäi 2,6 px matalammaksi kuin
   viereiset laatikot. line-height ei tähän auta (selaimen oma appearance
   ohittaa sen), joten laatikoille annetaan sama vähimmäiskorkeus. */
#rahoituslaskuri .rlask_kentta input,
#rahoituslaskuri .rlask_kentta select { padding: 0.55rem 0.7rem; font-size: 0.95rem; min-height: 2.7rem; }
#rahoituslaskuri .rlask_tulos { margin-top: 1.2rem; padding-top: 1.1rem; }
#rahoituslaskuri .rlask_tulos-arvo { font-size: 1.75rem; }
#rahoituslaskuri .rlask_cta { margin-top: 1.1rem; padding: 0.7rem 1.35rem; }

/* Hakemusmodaali matalalla ruudulla: lomake on n. 980 px korkea eikä
   mahdu 620 px näkymään. Vieritys korjataan main.js:ssä
   (data-lenis-prevent); tässä lomake vain tiivistetään niin että sitä
   tarvitsee vierittää selvästi vähemmän. */
@media (max-height: 820px) {
  .rhak_tausta { padding-top: 1.25rem; padding-bottom: 2.5rem; }
  .rhak_tausta .rhak_ikkuna { padding: 1.6rem; }
  .rhak_tausta .rhak_otsikko { margin-bottom: 1.1rem; font-size: 1.2rem; }
  .rhak_tausta .rhak_rivi { gap: 0.7rem; margin-bottom: 0.7rem; }
  .rhak_tausta .rhak_kentta { gap: 0.25rem; }
  .rhak_tausta .rhak_kentta input,
  .rhak_tausta .rhak_kentta select { padding: 0.5rem 0.7rem; }
  .rhak_tausta .rhak_ryhma { margin-bottom: 0.8rem; }
  .rhak_tausta .rhak_laheta { margin-top: 1.1rem; padding: 0.7rem 1.8rem; }
  /* Sulje-nappi pienemmäksi, jotta otsikkorivi ei kasva sen takia. */
  .rhak_tausta .rhak_sulje { width: 34px; height: 34px; right: 0.85rem; top: 0.85rem; }
}


/* ============================================================
   TIETOSUOJASELOSTE — LUETTAVUUS — 6.8.2026
   Sivun leipäteksti on .autoinfo_rich, joka on alun perin tyylitelty
   autosivun TUMMAA taustaa varten: väri #9a968e. Vaalealla
   paperitaustalla sen kontrasti on n. 2,5:1, eli teksti näytti
   haalealta eikä täytä AA-vaatimusta. Väri sidotaan siksi taustaan:
   tumma tausta pitää entisen, vaalealla mennään sivuston omaan
   paperitekstipariin (leipä smoke-dark 4,6:1, otsikot ink 16:1).
   Lisäksi otsikoilla ei ollut lainkaan ylämarginaalia, joten kohdat
   valuivat yhteen — 2,75 rem erottaa osiot toisistaan.
   ============================================================ */
.background-color-paper .autoinfo_rich,
.background-color-bone .autoinfo_rich { color: var(--color-smoke-dark); }
.background-color-paper .autoinfo_rich h2,
.background-color-paper .autoinfo_rich h3,
.background-color-paper .autoinfo_rich strong,
.background-color-bone .autoinfo_rich h2,
.background-color-bone .autoinfo_rich h3,
.background-color-bone .autoinfo_rich strong { color: var(--color-ink); }
.background-color-paper .autoinfo_rich a,
.background-color-bone .autoinfo_rich a {
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Välit kohtien väliin (koskee myös autosivun esittelytekstiä). */
.autoinfo_rich h2,
.autoinfo_rich h3 { margin-top: 2.75rem; }
.autoinfo_rich > :first-child { margin-top: 0; }
.autoinfo_rich h2 + p,
.autoinfo_rich h3 + p { margin-top: 0.9rem; }
.autoinfo_rich ul { margin-bottom: 1.35rem; }
.autoinfo_rich li { margin-bottom: 0.5rem; }


/* ============================================================
   ETUSIVUN INTRO- JA TILAUSOSIO — 6.8.2026
   ============================================================ */
@media (min-width: 992px) {
  /* Yläpadding 120 → 80 px: osio alkoi liian kaukaa edellisestä. */
  .section_intro .padding-section-large { padding-top: 5rem; }

  /* Kuva matalammaksi KAPEUTTAMALLA (7/12 → 6/12) eikä kuvasuhdetta
     muuttamalla: suhde pysyy samana 4/4,35, joten rajaus säilyy
     pikselilleen — auto kokonaan näkyvissä, tilaa sen alla ja taivas
     mukana. 754 × 820 → 641 × 697, eli 123 px matalampi. */
  .intro_media-grid .intro_media { grid-column: 1 / 7; }
  .intro_media-grid .intro_side { grid-column: 7 / 13; }
}

/* Tilausosion otsikko ja leipäteksti hitusen pienemmiksi. */
.section_order .heading-style-display { font-size: clamp(2.6rem, 4.4vw, 4.1rem); }
.section_order .hero_lead { font-size: clamp(0.95rem, 1.15vw, 1.15rem); }

/* Sliderin liu'uttimen ja korttien väli pienemmäksi: 86 px koostui
   radan 48 px alapaddingista ja palkin 2,4 rem ylämarginaalista.
   Lapsivalitsin tarvitaan, koska Webflow-luokka voittaa pelkän
   .showcase_progress -säännön. Palkki on desktopilla, ei mobiilissa
   (skripti poistaa sen alle 768 px). */
.container-large > .showcase_progress { margin-top: 1.25rem; }
.section_showcase .showcase_track { padding-bottom: 1.75rem; }

/* Yhteystiedot: kartan viereinen tietopylväs kartan keskikohtaan.
   Ruudukossa on align-items: start, joten 397 px sisältö oli 505 px
   kartan ylälaidassa. Vain desktopilla — kapealla kartta menee tietojen
   alle omalla order-säännöllään eikä keskitys tarkoita mitään. */
@media (min-width: 992px) {
  .contact_visit { align-items: center; }
}

/* Nuolet ja "Kaikki vaihtoautot" samalle riville, nappi vasemmalle.
   Rakenne on Webflow-puolen .showcase_nav-col (nuolet + linkki).
   Kaksi eri väliä: nuolet muodostavat oman parinsa ja kuuluvat yhteen,
   joten ne ovat lähellä toisiaan (0,9 rem), kun taas nappi on eri
   toiminto ja erotetaan niistä selvästi (2,5 rem). */
.showcase_nav-col {
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 2.5rem;
}
.showcase_nav-col .showcase_head-link { order: -1; }
.showcase_nav-col .showcase_nav { gap: 0.9rem; }


/* ============================================================
   VALIKON KAHDEN LEVEÄN LAATAN VERHO — 6.8.2026
   "Auto tilauksesta" ja "Mikä on Prestige?" ovat matalia ja leveitä,
   ja niissä on otsikon LISÄKSI alateksti. Yhteinen desktop-verho
   alkoi vaimeta jo 52 %:ssa, joten alateksti jäi kuvan vaaleaan
   kohtaan. Tummennus viedään n. 10 pp ylemmäs ja hieman vahvemmaksi
   vain näissä kahdessa — isoissa laatoissa on enemmän tilaa eikä
   niitä ole tarpeen tummentaa lisää.
   Tämä on tarkoituksella tiedoston LOPUSSA: aiempi yhteinen
   min-width: 768px -lohko määrittelee saman ominaisuuden.
   ============================================================ */
@media (min-width: 768px) {
  .nav_overlay .is-menu-sub1 .bento_tile-media::after,
  .nav_overlay .is-menu-sub2 .bento_tile-media::after {
    background: linear-gradient(to top,
      rgba(8, 7, 7, 0.97) 0%,
      rgba(8, 7, 7, 0.92) 34%,
      rgba(8, 7, 7, 0.68) 62%,
      rgba(8, 7, 7, 0.3) 86%,
      rgba(8, 7, 7, 0.08) 100%);
  }
}


/* ============================================================
   SHOWCASEN NUOLET MOBIILISSA — 6.8.2026
   .showcase_nav-col on desktopilla oikeaan reunaan tasattu rivi
   (nappi + nuolet). Mobiilissa nappi on siirretty korttien alle,
   jolloin kaareen jaa pelkat nuolet — ja ne jaivat kellumaan
   oikeaan reunaan keskelle tyhjaa. Vasempaan reunaan otsikon
   kanssa samaan linjaan, ja alapuolen ilmaa 3,6 → 1,75 rem.
   ============================================================ */
@media (max-width: 767px) {
  .showcase_nav-col { justify-content: flex-start; }
  .showcase_header { padding-bottom: 1.75rem; }
}


/* ============================================================
   KUVAPANEELIEN PUDOTUSVARJOT POIS — 6.8.2026
   .quote_media (0 40px 80px) ja .order_image-panel (0 40px 90px)
   piirsivät leveän pehmeän varjon kuvan taakse. Varjot eivät aiemmin
   näkyneet, koska paljastuksen clip-path leikkasi ne pois — clip-path
   rajaa myös elementin varjon. Kun rajaus purettiin animaation
   jälkeen, varjot tulivat esiin. Ne eivät kuulu ilmeeseen, joten
   poistetaan kokonaan (eikä palauteta rajausta, joka toisi takaisin
   suorat kulmat animaation ajaksi).
   ============================================================ */
.quote_media,
.order_image-panel { box-shadow: none; }


/* ============================================================
   TILAUSOSION KUVAPANEELI — 6.8.2026
   Kuva nousi ylemmäs kun parallaksi poistettiin (parallaksi oli
   siirtänyt sitä alaspäin). Palautetaan sijainti ilman transformia:
   top 50 % → 57 %, jolloin kuva laskee n. 48 px. Transformia EI saa
   käyttää siirtoon — juuri animoitu transform rikkoi kulmien
   pyöristyksen (ks. pcc-v29 kommentti main.js:ssä).
   Samalla kuva matalammaksi: 3/4,1 → 3/3,6 eli 590 → 518 px.
   ============================================================ */
.order_image-panel {
  top: 57%;
  aspect-ratio: 3 / 3.6;
}


/* ============================================================
   HERON TUMMENNUS KEVYEMMÄKSI — 6.8.2026
   Kolme kerrosta tummensi kuvaa päällekkäin. Kevennetään niitä
   kaikkia maltillisesti mutta jätetään ylä- ja alareuna lähes
   ennalleen: yläreuna kantaa navin ja alareuna taglinen + napit,
   ja niiden luettavuus menee ulkonäön edelle.
   Vinjetin ja pohjakerroksen ero autokerrokseen ei myöskään saa
   kasvaa liikaa — ks. kommentti ylempänä: liian iso hyppy näkyisi
   valorenkaana eikä valaistuksena.
   ============================================================ */
.section_hero.is-spotlight .hero_backdrop img {
  /* 0,87 → 0,95: ympäristö oli selvästi alivalottunut. */
  filter: brightness(0.95) contrast(1.02) saturate(0.8);
}
.section_hero.is-spotlight .hero_backdrop::after {
  background:
    /* Otsikkopuolen kaista kevyemmäksi (0,58 → 0,44). */
    linear-gradient(102deg,
      rgba(6, 5, 5, 0.44) 0%,
      rgba(6, 5, 5, 0.3) 24%,
      rgba(6, 5, 5, 0.1) 48%,
      rgba(6, 5, 5, 0) 72%),
    /* Vinjetti loivemmaksi (0,3/0,6 → 0,2/0,42). */
    radial-gradient(52% 44% at 61.4% 57.8%,
      rgba(6, 5, 5, 0) 0%,
      rgba(6, 5, 5, 0) 34%,
      rgba(6, 5, 5, 0.2) 68%,
      rgba(6, 5, 5, 0.42) 100%),
    /* Keskiosa kirkkaammaksi, reunat lähes ennallaan luettavuuden takia. */
    linear-gradient(to bottom,
      rgba(6, 5, 5, 0.5) 0%,
      rgba(6, 5, 5, 0.06) 22%,
      rgba(6, 5, 5, 0.04) 52%,
      rgba(6, 5, 5, 0.48) 82%,
      rgba(6, 5, 5, 0.78) 100%);
}


/* ============================================================
   PALJASTUS EI SAA EDES ALKAA NÄISSÄ KUVISSA — 6.8.2026
   Tämä oli se syy miksi "reveal" näkyi vaikka JS asettaa niille
   data-reveal-img="fade". Ketju meni näin:
     1. CSS piilottaa KAIKKI [data-reveal-img] -elementit ennen
        JS:ää: clip-path: inset(100% 0 0 0) — siis täysin rajattu.
     2. Arvon "fade" purkava sääntö osuu vasta kun JS on ehtinyt
        KIRJOITTAA sen attribuutin, ja se tapahtuu site-footerissa
        eli vasta kun sivu on jo piirretty.
     3. Väliin jää hetki jossa kuva on näkymätön ja ilmestyy sitten
        kerralla. Juuri se luetaan paljastukseksi.
   Korjaus: puretaan piilotus LUOKAN perusteella jo tyylitiedostossa,
   jolloin nämä kolme kuvaa ovat paikallaan ensimmäisestä kehyksestä
   eikä JS:n ajoituksella ole väliä.
   ============================================================ */
html.js .intro_media,
html.js .order_image-panel,
html.js .quote_media {
  clip-path: none !important;
  opacity: 1 !important;
}
html.js .intro_media img,
html.js .order_image-panel img,
html.js .quote_media img {
  transform: none !important;
}


/* ============================================================
   MOBIILISÄÄDÖT — 6.8.2026
   ============================================================ */
@media (max-width: 767px) {
  /* 1. Karusellikortit korkeammiksi. Perusarvo 2/1 rajaa cover-tilassa
     kuvan ylälaidan pois, ja juuri siellä on Prestige-vesileima. 16/10
     palauttaa sen näkyviin. Vain mobiilissa: työpöydällä kortteja
     nimenomaan madallettiin. */
  .showcase_card-image { aspect-ratio: 16 / 10; }

  /* 2. Heron vasemman laidan tummennus pois. Se on 102 asteen
     lineaarigradientti, joka on mitoitettu TYÖPÖYDÄN asettelulle:
     siellä iso otsikko on kuvan vasemmalla puoliskolla ja tarvitsee
     taustan. Mobiilissa otsikko on ylhäällä taivasta vasten, joten
     kaista osuu pelkästään auton kylkeen ja tummentaa sen turhaan.
     Pystysuuntainen verho jää: se kantaa navin ja alaosan tekstit. */
  .section_hero.is-spotlight .hero_backdrop::after {
    background:
      radial-gradient(70% 40% at 50% 46%,
        rgba(6, 5, 5, 0) 0%,
        rgba(6, 5, 5, 0) 46%,
        rgba(6, 5, 5, 0.16) 74%,
        rgba(6, 5, 5, 0.34) 100%),
      linear-gradient(to bottom,
        rgba(6, 5, 5, 0.5) 0%,
        rgba(6, 5, 5, 0.06) 24%,
        rgba(6, 5, 5, 0.04) 50%,
        rgba(6, 5, 5, 0.5) 82%,
        rgba(6, 5, 5, 0.8) 100%);
  }
}


/* ============================================================
   MOBIILIHERON VERHO UUDELLEEN — 6.8.2026
   Otsikon taakse tummuutta, auton päälle ei yhtään. Mobiilissa
   pystyjärjestys on: H1 ylhäällä taivasta vasten (n. 0–40 %),
   auto keskellä (n. 44–66 %) ja tagline + napit alhaalla.
   Siksi verho on kaksiosainen: tumma kaista ylhäällä, täysin
   läpinäkyvä kaista auton kohdalla ja oma kaista alareunaan.
   Aiempi mobiiliradiaali poistettu kokonaan — se tummensi auton
   sivuja, ja juuri sitä ei haluta.
   ============================================================ */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.64) 0%,
      rgba(6, 5, 5, 0.54) 22%,
      rgba(6, 5, 5, 0.28) 34%,
      rgba(6, 5, 5, 0) 44%,
      rgba(6, 5, 5, 0) 66%,
      rgba(6, 5, 5, 0.42) 80%,
      rgba(6, 5, 5, 0.78) 100%);
  }
}


/* ============================================================
   PORRASTETTUJEN LISTOJEN ALKUTILA CSS:AAN — 7.8.2026
   Oire: puhelimella heron H1 animoitui ensin, muu sisalto oli
   koko ajan nakyvissa ja teki revealin vasta H1:n jalkeen.
   Syy: [data-reveal] ja [data-fade] piilotetaan jo ennen
   ensimmaista maalausta (rivit 2677-2680), mutta porrastettujen
   listojen lapsille alkutilan asetti vasta main.js:n
   gsap.fromTo. Mobiilissa GSAP + Lenis + SplitType + main.js
   ehtivat jarjestaa vasta sekunnin paasta, joten kortit oli jo
   maalattu nakyviin — ne valahtivat, tyhjenivat ja haivyttyivat
   uudestaan sisaan.
   Luokat luetellaan erikseen, koska data-stagger lisataan
   .showcase_trackille ja .inventory_listille vasta site-footerin
   hydraatioskriptissa — attribuuttivalitsin ei siis osuisi niihin
   ensimmaisessa maalauksessa.
   Turvaverkko on main.js:ssa: jos GSAP puuttuu, html-elementilta
   poistetaan js-luokka ja kaikki nama saannot raukeavat.
   ============================================================ */
html.js [data-stagger] > *,
html.js .showcase_track > *,
html.js .inventory_list > *,
html.js .bento_grid > * { opacity: 0; }

@media (prefers-reduced-motion: reduce) {
  html.js [data-stagger] > *,
  html.js .showcase_track > *,
  html.js .inventory_list > *,
  html.js .bento_grid > * { opacity: 1 !important; }
}

/* ============================================================
   KOSKETUSNAYTON HOVER-LUKKO — 7.8.2026
   Puhelimella autokortin ensimmainen napautus vain vaihtoi
   kuvan toiseen, kuten hover desktopilla, ja vasta toinen avasi
   auton. Kyse on iOS:n "sticky hover" -kaytoksesta: kun
   elementilla on :hover-saantoja, selain kayttaa ensimmaisen
   napautuksen niiden nayttamiseen.
   Poistetaan kortin koko hover-kasittely laitteilta joilla
   hoveria ei ole, jolloin ensimmainen napautus avaa auton.
   Mukana myos Webflow-puolen .card_car-image-hover, jonka
   saannot tulevat siteen footer-koodista.
   ============================================================ */
@media (hover: none) {
  .card_car:hover {
    border-color: rgba(251, 250, 247, 0.09);
    background: rgba(251, 250, 247, 0.05);
  }
  .card_car:hover .card_car-image-hover { opacity: 0; }
  .card_car:hover .card_car-image { transform: none; }
  .card_car:hover .card_car-title { color: inherit; }
  .card_car:hover .card_car-image img.is-primary { opacity: 1; }
  .card_car:hover .card_car-image img.is-hover { opacity: 0; }
  .card_car:hover .card_car-image img.is-primary:only-child { transform: none; }
}

/* ============================================================
   MYYJIEN KUVAT ISOMMIKSI — 7.8.2026
   40 px kasvokuva jai autosivun kortissa merkiksi eika
   henkiloksi. 58 px riittaa siihen etta kasvot tunnistaa,
   eika kortti silti kasva kuin ~36 px kahdella myyjalla.
   Nimi ja numero nousevat samassa suhteessa, muuten teksti
   nayttaisi jaavan kuvan varjoon.
   ============================================================ */
.auto_seller { gap: 0.85rem; padding: 0.6rem 0; }
.auto_seller-avatar { width: 58px; height: 58px; }
.auto_seller-name { font-size: 1rem; }
.auto_seller-phone { font-size: 0.9rem; }


/* ============================================================
   HERON ALARIVI PIILOON JO ENNEN MAALAUSTA — 7.8.2026
   Oire: puhelimella H1 animoitui oikein, mutta tagline ja napit
   olivat nakyvissa koko ajan ja tekivat revealin vasta kun H1
   oli valmis.
   Syy: alarivi piilotettiin valitsimella [data-hero-footer],
   MUTTA suomenkielisen etusivun hero on rakennettu Webflow'n
   omista elementeista eika upotuksesta — attribuuttia ei siis ole
   lahdekoodissa, vaan site-footerin hydraatioskripti leimaa sen
   vasta ajon aikana. Ensimmaisessa maalauksessa saanto ei siis
   osunut mihinkaan. Otsikko taas piiloutui oikein, koska
   .hero_heading on aito luokka.
   Piilotetaan siis luokilla, jotka ovat lahdekoodissa valmiina.
   ============================================================ */
html.js .section_hero .hero_tagline,
html.js .section_hero .hero_actions { opacity: 0; }

/* ============================================================
   ESITTELYSLIDERIN LIUUTIN KAUEMMAS KORTEISTA — 7.8.2026
   ============================================================ */
.container-large > .showcase_progress { margin-top: 2.5rem; }

/* ============================================================
   MYYJAT ENNEN RAHOITUSLASKURIA — 7.8.2026
   .autoinfo_grid on jo flex-pino, joten pelkka order riittaa.
   Rahoituslaskuri on ainoa .w-embed.w-script tassa pinossa ja
   myyjat ainoa upotus ilman skriptia.
   ============================================================ */
.autoinfo_grid > .w-embed:not(.w-script) { order: 1; }
.autoinfo_grid > .w-embed.w-script { order: 2; }

/* ============================================================
   KOSKETUSNAYTON HOVER-LUKKO, LAAJENNUS — 7.8.2026
   Edellinen lohko kattoi vain .card_carin ja ehdon (hover: none).
   Etusivun karusellin kortit ovat .showcase_card, ja osa
   selaimista kertoo osoitinlaitteesta vain (pointer: coarse).
   ============================================================ */
@media (hover: none), (pointer: coarse) {
  .card_car:hover {
    border-color: rgba(251, 250, 247, 0.09);
    background: rgba(251, 250, 247, 0.05);
  }
  .card_car:hover .card_car-image-hover { opacity: 0; }
  .card_car:hover .card_car-image { transform: none; }
  .card_car:hover .card_car-title { color: inherit; }
  .card_car:hover .card_car-image img.is-primary { opacity: 1; }
  .card_car:hover .card_car-image img.is-hover { opacity: 0; }
  .card_car:hover .card_car-image img.is-primary:only-child { transform: none; }

  .showcase_card:hover .showcase_card-wash { opacity: 0; transform: none; }
  .showcase_card:hover::after { opacity: 0; }
  .showcase_card:hover .showcase_card-image img { transform: none; filter: none; }
  .showcase_card:hover .showcase_card-circle { opacity: 0; }

  a:hover > .tile_arrow, a:hover .bento_tile-footer .tile_arrow { color: inherit; }
  a:hover > .tile_arrow svg, a:hover .bento_tile-footer .tile_arrow svg { transform: none; }
}


/* ============================================================
   ASIAKKAAN MUUTOKSET — 7.8.2026
   ============================================================ */

/* Heron napit tekstin alle myos leveilla ruuduilla. Aiemmin tagline
   oli vasemmalla ja napit oikealla samalla rivilla; asiakas halusi
   napit tekstin alapuolelle. Mobiilissa nain oli jo. */
.hero_footer { flex-direction: column; align-items: flex-start; gap: 1.8rem; }

/* Esittelykarusellin korttikuva alkuperaiseen suhteeseen.
   Lahdekuvat ovat 1920x1280 eli 3:2. Aiempi 2:1 (ja mobiilin 16:10)
   rajasi ylhaalta ja alhaalta niin etta auton alaosa ja konepellin
   PCC-logo leikkautuivat pois. 3:2 nayttaa koko kuvan sellaisenaan. */
.showcase_card-image { aspect-ratio: 3 / 2; }
@media (max-width: 767px) {
  .showcase_card-image { aspect-ratio: 3 / 2; }
}


/* ============================================================
   NAVI KESKELLE JA VALIKKO YLHAALTA LIUKUVAKSI — 7.8.2026
   Asiakas: palkki keskelle sivua, logo samaan palkkiin, ja
   valikosta pois koko ruudun peittava kuvaruudukko — tilalle
   ylhaalta liukuva paneeli ja pelkka linkkilista isommalla
   tekstilla.
   ============================================================ */

/* Navipalkki nousee valikkopaneelin YLAPUOLELLE (210), jotta
   burger pysyy nakyvissa ja klikattavana avattunakin — se on nyt
   ainoa tapa sulkea paneeli hiirella. */
.nav_component { z-index: 220; }

@media (min-width: 992px) {
  /* Logo siirretaan main.js:ssa .nav_pillbarin sisaan, jolloin se
     saa saman kapselin kuin napit. Tassa vain keskitetaan rivi. */
  .nav_bar { justify-content: center; }
  .nav_pillbar > .nav_logo-link { display: flex; align-items: center; padding: 0 0.85rem 0 0.6rem; }
  .nav_pillbar > .nav_logo-link .nav_logo-img { width: 108px; height: 28px; }
}

/* ---- Valikkopaneeli ---- */
.nav_overlay {
  inset: 0 0 auto 0;
  padding: 0;
  display: block;
  overflow: visible;
  background: rgba(10, 9, 9, 0.97);
  border-bottom: 1px solid rgba(251, 250, 247, 0.1);
  box-shadow: 0 30px 60px -30px rgba(0, 0, 0, 0.8);
  transform: translateY(-101%);
  opacity: 1;
  visibility: visible;
  transition: transform 0.5s var(--ease-luxe);
}
body.menu-open .nav_overlay {
  transform: translateY(0);
  transition: transform 0.5s var(--ease-luxe);
}

/* Ylaosan tila navipalkille: paneeli alkaa palkin alta. */
.navmenu { padding-top: clamp(4.6rem, 7vh, 5.6rem); padding-bottom: clamp(1.6rem, 4vh, 2.6rem); }

.navmenu_list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: clamp(1.5rem, 5vw, 4rem);
}
.navmenu_link {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 0.62rem 0;
  border-bottom: 1px solid rgba(251, 250, 247, 0.08);
  font-family: var(--font-display);
  font-size: clamp(1.15rem, 1.9vw, 1.7rem);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--color-paper);
  text-decoration: none;
  transition: color 0.3s var(--ease-luxe), padding-left 0.3s var(--ease-luxe);
}
.navmenu_link span { color: rgba(251, 250, 247, 0.35); transition: transform 0.3s var(--ease-luxe), color 0.3s var(--ease-luxe); }
.navmenu_link:hover { color: var(--color-champagne); padding-left: 0.4rem; }
.navmenu_link:hover span { color: var(--color-champagne); transform: translate(3px, -3px); }

.navmenu_meta {
  display: flex; flex-wrap: wrap; gap: 0.6rem 1.6rem;
  margin-top: clamp(1.1rem, 3vh, 1.8rem);
  font-size: var(--text-small);
}
.navmenu_meta a { color: var(--color-smoke); text-decoration: none; transition: color 0.3s var(--ease-luxe); }
.navmenu_meta a:hover { color: var(--color-champagne); }

@media (max-width: 767px) {
  .navmenu_list { grid-template-columns: 1fr; }
  .navmenu_link { font-size: 1.2rem; padding: 0.55rem 0; }
  .navmenu { padding-top: 5rem; }
}


/* ============================================================
   NAVI JA VALIKKO, HIENOSAATO — 7.8.2026
   ============================================================ */

@media (min-width: 992px) {
  /* Logo pienemmaksi ja ilmaa sen oikealle puolelle, jotta se ei
     ole kiinni Vaihtoautot-linkissa. */
  .nav_pillbar > .nav_logo-link { padding: 0 1.35rem 0 0.7rem; }
  .nav_pillbar > .nav_logo-link .nav_logo-img { width: 92px; height: 24px; }
}

/* Paneeli hieman korkeammaksi: enemman ilmaa linkkien ylle ja alle
   seka valjempi rivivali. */
.navmenu { padding-top: clamp(5.4rem, 9vh, 7rem); padding-bottom: clamp(2.4rem, 6vh, 3.6rem); }
.navmenu_link { padding: 0.85rem 0; }

/* Klikkaus paneelin ULKOPUOLELLA sulkee valikon: .nav_overlay on itse
   vain ylapaneeli, joten sen alle jaa erillinen lapinakyva kerros joka
   nappaa klikkaukset. main.js kuuntelee sita. */
.navmenu_backdrop {
  position: fixed; inset: 0; z-index: 209;
  background: rgba(6, 5, 5, 0.45);
  opacity: 0; visibility: hidden;
  transition: opacity 0.4s var(--ease-luxe), visibility 0s linear 0.4s;
}
body.menu-open .navmenu_backdrop {
  opacity: 1; visibility: visible;
  transition: opacity 0.4s var(--ease-luxe);
}

/* ============================================================
   ESITTELYSSA: SAMA MAKSIMILEVEYS KUIN MUILLA OSIOILLA — 7.8.2026
   Karuselli levisi reunasta reunaan, muut osiot ovat container-largen
   sisalla. Asiakas halusi yhtenaisen leveyden.
   ============================================================ */
/* 1440px + gutter = tasan sama sisaltoleveys kuin .container-largella
   .padding-globalin sisalla. Muuttujaa --container-large ei ole, joten
   luku on kirjoitettu auki; .container-large { max-width: 1440px }
   rivilla 123. */
.section_showcase .showcase_track {
  max-width: calc(1440px + 2 * var(--gutter));
  margin-inline: auto;
  padding-inline: var(--gutter);
}
@media (max-width: 767px) {
  /* Puhelimella raita saa jatkua reunaan asti, muuten kortit jaavat
     turhan kapeiksi ja pyyhkaisy tuntuu ahtaalta. */
  .section_showcase .showcase_track { max-width: none; padding-inline: var(--gutter); }
}


/* ============================================================
   MYYJIEN YHTEYDENOTTO — 7.8.2026
   Asiakas halusi helpomman yhteydenoton ja WhatsApp-vaihtoehdon,
   nettiauton mallin mukaan: nimi ja titteli vasemmalle, soitto- ja
   WhatsApp-nappi oikealle. Rivi ei ole enaa itse linkki vaan
   sisaltaa kaksi erillista nappia, joten .auto_seller on nyt
   kolmen sarakkeen ruudukko.
   ============================================================ */
.auto_seller {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.85rem;
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--line-dark);
}
.auto_seller:last-of-type { border-bottom: 0; }
.auto_seller-role {
  font-size: 0.8rem;
  color: var(--color-smoke);
  line-height: 1.3;
}
.auto_seller-actions { display: flex; gap: 0.5rem; }
.auto_seller-btn {
  display: flex; align-items: center; justify-content: center;
  width: 42px; height: 42px;
  flex: none;
  border-radius: 50%;
  border: 1px solid rgba(251, 250, 247, 0.16);
  background: rgba(251, 250, 247, 0.06);
  color: var(--color-paper);
  transition: background-color 0.3s var(--ease-luxe), border-color 0.3s var(--ease-luxe), color 0.3s var(--ease-luxe);
}
.auto_seller-btn svg { width: 20px; height: 20px; }
.auto_seller-btn:hover { background: var(--color-champagne); border-color: var(--color-champagne); color: var(--color-night); }
/* WhatsApp tunnistetaan varista, joten se saa brandivarinsa. */
.auto_seller-btn.is-wa { background: #25d366; border-color: #25d366; color: #0b3d1f; }
.auto_seller-btn.is-wa:hover { background: #1fbb57; border-color: #1fbb57; }

@media (max-width: 380px) {
  .auto_seller-btn { width: 38px; height: 38px; }
  .auto_seller-avatar { width: 48px; height: 48px; }
}


/* ============================================================
   ESITTELYSSA: KOLME KORTTIA RINNAKKAIN — 7.8.2026
   CMS-lista on nyt rajattu kolmeen ja lajiteltu luontipaivan
   mukaan, joten desktopilla ei tarvita vierittamista lainkaan:
   kolme korttia mahtuu kerralla ruudulle. Nuolet ja liu'utin
   piiloon, koska niilla ei ole enaa mitaan tehtavaa.
   Puhelimessa raita jaa pyyhkaistavaksi, silla kolme korttia
   allekkain veisi kohtuuttomasti pystytilaa.
   ============================================================ */
@media (min-width: 768px) {
  .section_showcase .showcase_track {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.75rem);
    overflow: visible;
    padding-bottom: 0;
  }
  .section_showcase .showcase_track > * {
    width: auto;
    min-width: 0;
    flex: initial;
    scroll-snap-align: none;
  }
  .section_showcase .showcase_nav,
  .container-large > .showcase_progress { display: none; }
}


/* ============================================================
   HERO RIISUTAAN: PELKKA KUVA JA LUETTAVUUSVERHO — 7.8.2026
   Aiempi hero oli rakennettu Panamera-kuvan ympärille: terava
   kopio samasta kuvasta (.hero_ground) maskattuna auton kohdalle,
   sumennettu pohjakerros ::before-pseudossa ja kaksi auton
   kohtaan ankkuroitua radiaalia. Koko koneisto oli olemassa vain
   siksi, etta auto irtoaisi sumeasta taustastaan.
   Uudessa Taycan-kuvassa auto on jo valmiiksi terava mustaa
   seinaa vasten, joten kerrokset ovat tarpeettomia — ja pahempaa,
   ne ovat kiinni VANHAN auton koordinaateissa (x 44-79 %), joten
   uudella kuvalla ne osuisivat tyhjaan asfalttiin.
   Jaljelle jaa kuva ja yksi verho, joka tummentaa alareunan ja
   vasemman laidan eli juuri sen alueen jossa otsikko, leipa ja
   napit ovat.
   ============================================================ */
.section_hero.is-spotlight .hero_ground { display: none; }
.section_hero.is-spotlight .hero_backdrop::before { content: none; }

.section_hero.is-spotlight .hero_backdrop img {
  position: absolute;
  left: 0; top: 0; right: auto; bottom: auto;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 58%;
  filter: none;
  transform: none;
}

.section_hero.is-spotlight .hero_backdrop::after {
  content: '';
  position: absolute; inset: 0;
  background:
    linear-gradient(to top,
      rgba(6, 5, 5, 0.86) 0%,
      rgba(6, 5, 5, 0.62) 18%,
      rgba(6, 5, 5, 0.22) 40%,
      rgba(6, 5, 5, 0) 62%),
    linear-gradient(to right,
      rgba(6, 5, 5, 0.62) 0%,
      rgba(6, 5, 5, 0.22) 32%,
      rgba(6, 5, 5, 0) 60%);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  mask-image: none;
  -webkit-mask-image: none;
}

@media (max-width: 767px) {
  /* Pystykuva omana rajauksenaan. Verho painottuu alareunaan,
     jossa teksti on; auton paalle ei tule tummennusta. */
  .section_hero.is-spotlight .hero_backdrop {
    background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a75d9f6bbe2c80591ed432d_pcc-hero-taycan-mobile.jpg");
    background-size: cover;
    background-position: center 42%;
  }
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.55) 0%,
      rgba(6, 5, 5, 0.22) 18%,
      rgba(6, 5, 5, 0) 38%,
      rgba(6, 5, 5, 0) 55%,
      rgba(6, 5, 5, 0.55) 76%,
      rgba(6, 5, 5, 0.88) 100%);
  }
}

/* ============================================================
   NAVIN LOGO VIELA PIENEMMAKSI — 7.8.2026
   ============================================================ */
@media (min-width: 992px) {
  .nav_pillbar > .nav_logo-link .nav_logo-img { width: 76px; height: 20px; }
  .nav_pillbar > .nav_logo-link { padding: 0 1.2rem 0 0.65rem; }
}


/* Navin logo viela pienemmaksi — 7.8.2026 */
@media (min-width: 992px) {
  .nav_pillbar > .nav_logo-link .nav_logo-img { width: 62px; height: 16px; }
  .nav_pillbar > .nav_logo-link { padding: 0 1rem 0 0.55rem; }
}

/* Pesu & fiksaus -laatan kuva ylemmas: pystykuva rajautuu leveaan
   laattaan niin, etta kiillottava kasi jai nakymattomiin. Rajaus
   ylaosaan tuo itse tyon esiin. */
.services_bento .is-cell-b .bento_tile-media img { object-position: center 24%; }


/* ============================================================
   HERO: KAIKKI KORISTEKERROKSET POIS — 7.8.2026
   Tummennuksia ja valokerroksia oli kertynyt useaan paikkaan eri
   media queryihin: sektion oma ::before (vaalea soikio, screen-
   blend), sektion ::after, taustan ::before-sumennus, mobiilin
   omat radiaalit ja lattiaheijastus. Jokainen niista oli viritetty
   johonkin aiempaan kuvaan.
   Nollataan kaikki kerralla ja jatetaan vain alareunan liuku, joka
   pitaa otsikon, leipatekstin ja napit luettavina. Tama lohko on
   tiedoston lopussa, joten se voittaa myos media queryjen sisalla
   olevat aiemmat saannot kaikilla ruutuleveyksilla.
   ============================================================ */
.section_hero.is-spotlight::before,
.section_hero.is-spotlight::after,
.section_hero.is-spotlight .hero_backdrop::before { content: none; }

.section_hero.is-spotlight .hero_ground,
.section_hero.is-spotlight .hero_dust,
.section_hero.is-spotlight .hero_background { display: none; }

.section_hero.is-spotlight .hero_backdrop::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(to top,
    rgba(6, 5, 5, 0.92) 0%,
    rgba(6, 5, 5, 0.72) 14%,
    rgba(6, 5, 5, 0.34) 32%,
    rgba(6, 5, 5, 0) 54%);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  -webkit-mask-image: none;
  mask-image: none;
  mix-blend-mode: normal;
  filter: none;
  transform: none;
}

/* Navin logo viela pienemmaksi — 7.8.2026 */
@media (min-width: 992px) {
  .nav_pillbar > .nav_logo-link .nav_logo-img { width: 50px; height: 13px; }
  .nav_pillbar > .nav_logo-link { padding: 0 0.9rem 0 0.5rem; }
}


/* ============================================================
   MOBIILIHERO: KOKO AUTO NAKYVIIN — 7.8.2026
   Pystykuva on 750x936 (0,80) ja puhelimen hero noin 390x740
   (0,53). coverilla nakyviin jai vain 0,53/0,80 = 66 % leveydesta,
   eli auton takaosa rajautui pois.
   Sovitetaan kuva LEVEYDEN mukaan, jolloin auto nakyy kokonaan.
   Pystysuuntaan jaa tilaa, joka taytetaan kuvan oman ylareunan
   varilla — kuvan ylalaita on musta seina, joten sauma ei nay.
   Alareunan sauma peitetaan verholla, joka nousee tayteen
   peittoon juuri kuvan loppumiskohdassa (~70 %), jolloin teksti
   istuu tasaisella tummalla.
   ============================================================ */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background-size: 100% auto;
    background-position: center 12%;
    background-repeat: no-repeat;
    background-color: #060505;
  }
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.5) 0%,
      rgba(6, 5, 5, 0.1) 12%,
      rgba(6, 5, 5, 0) 30%,
      rgba(6, 5, 5, 0) 50%,
      rgba(6, 5, 5, 0.7) 62%,
      rgba(6, 5, 5, 0.97) 71%,
      rgba(6, 5, 5, 1) 78%,
      rgba(6, 5, 5, 1) 100%);
  }
}

/* ============================================================
   NAVIN LOGO AINA VALKOISENA — 7.8.2026
   Logo on nyt tumman kapselin sisalla, joten vaalean sektion
   kohdalla tehty tummennus teki siita lukukelvottoman.
   ============================================================ */
body.nav-on-light .nav_bar img.nav_logo,
body.nav-on-light .nav_pillbar img.nav_logo { filter: none; }
body.nav-on-light .nav_bar > .nav_logo,
body.nav-on-light .nav_logo,
body.nav-on-light .nav_logo-img { color: var(--color-paper); }

/* Mustan palkin korjaus: taytevari mitattiin kuvan omasta ylareunasta
   (rgb 62,72,82), joten sauma kuvan ylapuolella katoaa. Aiempi #060505
   oli selvasti tummempi kuin seina, ja se nakyi palkkina.
   Kuva nostettu 62 %:iin, jolloin sen ALAreuna (asfaltti, rgb 153) osuu
   kohtaan jossa verho on jo tayysin peittava — alasaumaa ei nay. */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background-position: center 62%;
    background-color: #3e4852;
  }
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.5) 0%,
      rgba(6, 5, 5, 0.12) 14%,
      rgba(6, 5, 5, 0) 32%,
      rgba(6, 5, 5, 0) 48%,
      rgba(6, 5, 5, 0.6) 60%,
      rgba(6, 5, 5, 0.95) 68%,
      rgba(6, 5, 5, 1) 72%,
      rgba(6, 5, 5, 1) 100%);
  }
}

/* ============================================================
   MOBIILIHERO LOPULLISESTI — 7.8.2026
   Leveyden mukaan sovittaminen jatti pystysuuntaan tyhjaa, ja se
   nakyi palkkina riippumatta siita mika taytevari valittiin:
   yksivarinen taso ei vastaa valokuvan omaa vaihtelua.
   Ratkaisu tehtiin kuvaan, ei CSS:aan. Pystykuva 750x936 on
   jatkettu 750x1800:aan (suhde 0,417): ylos venytettiin kuvan
   omat ylimmat rivit, joten seina jatkuu saumattomasti, ja alas
   tehtiin tasainen liuku asfaltin varista tummaan.
   Nyt suhde on kapeampi kuin yhdenkaan puhelimen hero, joten
   cover skaalaa LEVEYDEN mukaan: koko leveys nakyy, auto ei
   rajaudu sivuilta, ja ylijaama leikkautuu alhaalta tummasta.
   ============================================================ */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a760c6d5c9b7a139858bfff_pcc-hero-taycan-mobile2.jpg");
    background-size: cover;
    background-position: center 38%;
    background-repeat: no-repeat;
    background-color: #0a0909;
  }
  .section_hero.is-spotlight .hero_backdrop::after {
    background: linear-gradient(to bottom,
      rgba(6, 5, 5, 0.42) 0%,
      rgba(6, 5, 5, 0.1) 14%,
      rgba(6, 5, 5, 0) 32%,
      rgba(6, 5, 5, 0) 52%,
      rgba(6, 5, 5, 0.45) 64%,
      rgba(6, 5, 5, 0.86) 74%,
      rgba(6, 5, 5, 0.96) 84%,
      rgba(6, 5, 5, 0.98) 100%);
  }
}

/* Auto ylemmas mobiilissa: kuvan ylatayte 430 -> 250 px, jolloin auto on
   kuvassa kohdassa 0,36-0,56 (ennen 0,46-0,65). Pelkka background-position
   ei olisi riittanyt: kuva on vain ~136 px korkeampi kuin hero, joten
   siirtovaraa oli alle sata pikselia. */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a760ee8a80a460d11c35b75_pcc-hero-taycan-mobile3.jpg");
    background-position: center 45%;
  }
}


/* ============================================================
   NAVIN LOGO — OIKEA VALITSIN VIHDOIN — 7.8.2026
   Kolme aiempaa yritysta eivat vaikuttaneet mitaan, koska ne
   kohdistuivat luokkaan .nav_logo-img. Se on PAIKALLISEN version
   span, jossa logo on maskina. Webflow'n navissa logo on
   oikea kuva: <img class="nav_logo">. Eli saannot osuivat
   elementtiin jota navissa ei ole lainkaan.
   ============================================================ */
@media (min-width: 992px) {
  .nav_pillbar > .nav_logo-link { padding: 0 0.95rem 0 0.55rem; }
  /* 92 px meni liian pieneksi: teksti "PRESTIGE CAR CENTER" muuttui
     harmaaksi viivaksi kapselin sisalla. 122 px on n. 77 % alkuperaisesta
     (158 px) — selvasti pienempi kuin lahtotilanne mutta yha luettava. */
  .nav_pillbar img.nav_logo,
  .nav_pillbar .nav_logo-img {
    width: 122px !important;
    height: auto !important;
    max-height: 32px;
  }
}
@media (max-width: 991px) {
  .nav_bar > .nav_logo-link img.nav_logo { width: 126px !important; height: auto !important; }
}

/* ============================================================
   VALIKKO MINIMALISTISEMMAKSI — 7.8.2026
   Display-fontti ja 500-paksuus tekivat listasta raskaan.
   Vaihdetaan leipafonttiin, kevyempaan paksuuteen ja pienempaan
   kokoon; viivat ja nuolet himmeammiksi.
   ============================================================ */
.navmenu_link {
  font-family: inherit;
  font-size: clamp(0.98rem, 1.05vw, 1.12rem);
  font-weight: 400;
  letter-spacing: 0;
  padding: 0.72rem 0;
  border-bottom-color: rgba(251, 250, 247, 0.06);
}
.navmenu_link span svg { width: 15px; height: 15px; }
.navmenu_link span { color: rgba(251, 250, 247, 0.25); }
.navmenu_meta { font-size: 0.8rem; gap: 0.5rem 1.4rem; }
.navmenu_meta a, .navmenu_meta span { color: rgba(251, 250, 247, 0.45); font-weight: 400; }

@media (max-width: 767px) {
  .navmenu_link { font-size: 1rem; padding: 0.62rem 0; }
  .navmenu_meta { font-size: 0.76rem; }
}

/* Valikon alarivi selkeammaksi: yhteystiedot vasemmalle pisteilla
   eroteltuna, osoite ja aukioloajat omaksi ryhmakseen oikealle, ja
   ohut viiva erottamaan linkkilistasta. Aiemmin kaikki viisi kohtaa
   olivat samassa jonossa ilman hierarkiaa, ja osoite oli lihavoitu. */
.navmenu_meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0 0.9rem;
  margin-top: clamp(1.2rem, 3vh, 1.9rem);
  padding-top: clamp(0.9rem, 2vh, 1.2rem);
  border-top: 1px solid rgba(251, 250, 247, 0.07);
}
.navmenu_meta a { position: relative; }
.navmenu_meta a + a::before {
  content: '·';
  position: absolute;
  left: -0.53rem;
  color: rgba(251, 250, 247, 0.22);
}
.navmenu_meta > span:last-child {
  margin-left: auto;
  font-weight: 400;
  color: rgba(251, 250, 247, 0.34);
}
@media (max-width: 767px) {
  .navmenu_meta > span:last-child {
    margin-left: 0;
    width: 100%;
    margin-top: 0.55rem;
  }
}

/* Navipalkki hieman leveammaksi ja logolle enemman omaa tilaa.
   21.8.2026: itemien valit 8 px -> 5 px ja logon oikea pehmuste
   1.7rem -> 1.1rem. Huomaa etta pelkka valien kaventaminen KASVATTAA
   logon viereista tyhjaa, koska palkin leveys on kiinnitetty ja
   ylijaama valuu logon auto-marginaaliin; siksi myos --nav-leveys
   pienenee alempana. */
@media (min-width: 992px) {
  /* Oikea pehmuste 12 px -> 8 px, jolloin Ota yhteytta -napin ja palkin
     reunan vali on sama kuin ylla ja alla. Vasen jaa 12 px:iin, koska
     siella on logo eika nappi. */
  .nav_pillbar { gap: 7px; padding: 8px 8px 8px 12px; }
  .nav_pillbar > .nav_logo-link { padding: 0 1.1rem 0 0.7rem; }
  .nav_pillbar-link, .nav_boxbtn { padding-left: 1.15rem; padding-right: 1.15rem; }
}


/* ============================================================
   VALIKON ALARIVI: YHTEYSTIEDOT JA SOMET VASTAKKAISIIN REUNOIHIN
   7.8.2026 — osoite ja aukioloajat poistettu (ne ovat footerissa ja
   yhteystiedoissa). Kaksi ryhmaa, space-between vie ne reunoihin.
   ============================================================ */
.navmenu_meta { justify-content: space-between; }
.navmenu_meta-group {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0 0.9rem;
}
@media (max-width: 767px) {
  /* Kapealla naytolla ryhmat allekkain, ei ahdettuna samalle riville. */
  .navmenu_meta { flex-direction: column; align-items: flex-start; gap: 0.5rem 0; }
}


/* ============================================================
   NAVIPALKKI TASAN VALIKON SISALLON LEVYINEN — 7.8.2026
   Palkki oli 675 px ja valikon sisalto 690 px, joten reunat eivat
   osuneet kohdakkain. Molemmat sidotaan nyt samaan lukuun.
   Lisatila menee KOKONAAN logon ja muiden itemien valiin
   (margin-right: auto), ei itemien keskinaisiin valeihin.
   Valikon .padding-global on sisalto + 2 x 2.8rem sivupehmuste.
   ============================================================ */
@media (min-width: 992px) {
  /* 21.8.2026: 690 -> 645. Valikon sisalto vaatii vain 484 px, joten
     kavennus ei purista sita; palkin kapeneminen syo suoraan logon
     oikealla puolella olleen tyhjan. */
  :root { --nav-leveys: 645px; }

  .nav_pillbar {
    width: min(var(--nav-leveys), calc(100vw - 3rem));
    justify-content: flex-end;
  }
  /* Tama yksin kasvattaa logon ja Vaihtoautot-linkin valia; muut
     itemit pysyvat kiinni toisissaan oikeassa reunassa. */
  .nav_pillbar > .nav_logo-link { margin-right: auto; }

  /* Leveys on annettava .navmenu:lle itselleen ja PIKSELEINA, ei
     prosentteina. Paneeli mitoittuu sisaltonsa mukaan, joten lapsen
     width:100% olisi kehainen: selain paatyi min-content-leveyteen ja
     valikko kutistui 690 px:sta 394 px:iin. */
  .navmenu {
    width: min(calc(var(--nav-leveys) + 5.6rem), 100vw);
    margin-left: auto;
    margin-right: auto;
  }
  /* .padding-global-sivupehmuste on clamp(...vw), joten se kasvaa
     ikkunan mukana ja soi listalta leveytta: 1600 px:ssa lista jai 667
     px:iin vaikka palkki oli 690. Kiinnitetaan pehmuste, jolloin
     690 + 2 x 2.8rem pitaa paikkansa joka leveydella. */
  .navmenu > .padding-global { padding-left: 2.8rem; padding-right: 2.8rem; }
}


/* ============================================================
   PALVELULAATAT SAMANKOKOISIKSI PUHELIMESSA — 7.8.2026
   "Auto tilauksesta" oli min-height 320 ja iso otsikko, "Pesu &
   fiksaus" ilman min-heightia ja pienempi otsikko, joten kortit
   olivat selvasti eri kokoiset. Sama min-height ja sama otsikko-
   koko molemmille; 280 px riittaa kummankin sisallolle, joten ne
   asettuvat tasan samaan korkeuteen.
   ============================================================ */
@media (max-width: 767px) {
  .services_bento .is-cell-a,
  .services_bento .is-cell-b { min-height: 280px; }
  /* Otsikot samaan kokoon: is-large oli 20,8 px ja tavallinen 15,7 px.
     18,4 px on naiden valissa — iso pienenee, pieni kasvaa.
     Molemmat valitsimet tarvitaan: .is-large on tarkempi ja voittaisi
     muuten pelkan .bento_tile-title-saannon. .is-plain-laatat (Rahoitus
     ja Prestige Car Care) jaavat omaan pienempaan kokoonsa. */
  .services_bento .bento_tile-title,
  .services_bento .bento_tile-title.is-large { font-size: 1.15rem; }

  /* Tummennus vahvemmaksi kuvalaatoissa. Laatan madaltuminen 280 px:iin
     siirsi tekstin kuvan VAALEIMPAAN kohtaan: vanha liuku oli tumma vain
     alimmassa kolmanneksessa (0,12 alfaa 45 %:n kohdalla), ja teksti alkaa
     45 %:n korkeudelta. Bentleyn maantie ja auringonlasku jaivat tekstin
     alle lahes valkoisina. Uusi liuku peittaa alemman kaksi kolmannesta ja
     jattaa ylaosan kuvalle. */
  .services_bento .bento_tile-media::after {
    background: linear-gradient(to top,
      rgba(10, 9, 9, 0.93) 0%,
      rgba(10, 9, 9, 0.82) 32%,
      rgba(10, 9, 9, 0.48) 62%,
      rgba(10, 9, 9, 0.22) 100%);
  }

  /* Esittelyslideri samaan vasempaan linjaan kuin otsikko. Radalla oli
     oma var(--gutter) sivupehmuste padding-globalin 20 px:n paalla, joten
     kortit alkoivat 40 px:sta ja nayttivat sisennetyilta muuhun
     sisaltoon nahden.
     Valitsimen on oltava .section_showcase .showcase_track: rivin 5010
     saanto on kahden luokan tarkkuudella, joten pelkka .showcase_track
     havisi cascadessa eika padding-inline nollautunut. */
  .section_showcase .showcase_track { padding-inline: 0; }

  /* ---- Auto tilauksesta: auto ylemmas rajauksessa ----
     Laatta pysyy ennallaan: kuva tayttaa koko laatan ja teksti on sen
     paalla. object-position ei yksin riita, koska kuva (1740x1435,
     suhde 1,213) ja laatta (335x280, 1,196) ovat kaytannossa samaa
     muotoa — cover-rajauksessa pystyvaraa ei jaa lainkaan.
     Varaa tehdaan kasvattamalla kuvaelementti laattaa korkeammaksi ja
     ankkuroimalla se alareunaan: 165 % korkeus ja top -65 % vievat
     ylareunan 182 px laatan ylapuolelle, alareuna jaa tasan laatan
     alareunaan. Auto (lahteessa 52-80 % korkeudesta) nousee
     146-224 px:sta kohtaan 58-188 px, eli sen ylapuolisko on kokonaan
     tekstin ylapuolella. Leveyssuunnassa rajaudu n. 38 %, mutta auto on
     kuvassa keskella eika leikkaudu. */
  .services_bento .is-cell-a .bento_tile-media { overflow: hidden; }
  .services_bento .is-cell-a .bento_tile-media img {
    position: absolute;
    left: 0;
    width: 100%;
    height: 165%;
    top: -65%;
    object-position: 50% 50% !important;
  }
}


/* ============================================================
   ASIAKKAAN MUUTOSLISTA 17.8.2026
   ============================================================ */

/* --- Hero samaan leveyteen kuin muut sektiot ---
   Heron container-large oli levennetty erikseen (200rem rivilla 2896
   ja 1800px rivilla 3554) siihen aikaan kun hero oli full-bleed.
   Leveilla naytoilla se erotti heron muusta sivusta: 1801 px:n
   ikkunassa heron sisalto alkoi 56 px:sta ja muut sektiot 181 px:sta.
   Palautetaan .container-largen oma 1440 px, jolloin kaikki osuvat
   samaan pystylinjaan. */
.section_hero .container-large,
.section_hero.is-spotlight .container-large { max-width: 1440px; }

/* Heron otsikko samaan kokoon kuin sektio-otsikot (var(--text-h2)).
   Oli clamp(1.4rem, 1.5vw, 2.9rem) eli 1265 px:ssa 22 px, kun h2:t
   olivat 37 px. Tagline-laatikkoa levennetaan vastaavasti, jotta
   isompi otsikko ei katkea kahdelle riville liian aikaisin. */
.hero_tagline-main { font-size: var(--text-h2); line-height: 1.04; }
.hero_tagline { max-width: 40rem; }

/* Heron mobiilikuva vaihtuu uuden 911-kuvan pystyrajaukseen.
   Rajausta siirrettiin vasemmalle (keskipiste 0,82 -> 0,75 lahdekuvan
   leveydesta, ikkuna 59-91 %), jolloin auton vasen reuna tulee nakyviin
   ja auto asettuu hieman keskiviivan oikealle puolelle. Aiemmin rajaus
   alkoi auton reunan oikealta puolelta, joten kuva luki lahikuvana
   takavalosta eika autosta. */
@media (max-width: 767px) {
  .section_hero.is-spotlight .hero_backdrop {
    background-image: url("https://cdn.prod.website-files.com/6a708c6360d9ae2a00270d92/6a838ad724609c694fffb522_pcc-hero-web-mobile2.jpg");
    background-position: center 50%;
  }
}

/* --- Luottoluokitusbadget ---
   Kolme logoa rivissa. Korkeus ohjaa kokoa, koska logoilla on eri
   kuvasuhteet (D&B 0,87 / AAA 1,53 / Platina 1,13). Platina on
   valkoista tekstia, joten se toimii vain tummalla pohjalla. */
.badge_row {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: clamp(1.8rem, 4.5vw, 4rem);
}
.badge_row img {
  height: clamp(76px, 7.8vw, 108px);
  width: auto;
  opacity: 0.95;
}
.badge_row img.is-platina { height: clamp(96px, 9.9vw, 136px); }
/* Otsikko poistettiin 18.8.2026: AAA-logossa lukee jo "Korkein
   luottoluokitus", joten erillinen otsikko toisti saman sanan.
   Merkit puhuvat itse puolestaan. */
@media (max-width: 479px) {
  .badge_row { gap: 1.6rem 2rem; }
  .badge_row img { height: 68px; }
  .badge_row img.is-platina { height: 86px; }
}

/* Myyntikortin alarivi: sahkoposti ja vaihteen numero rinnakkain
   pisteella eroteltuna. Aiemmin rivilla oli pelkka sahkopostilinkki. */
.auto_sellers-yhteys {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0 0.85rem;
}
.auto_sellers-yhteys .auto_sellers-mail { position: relative; }
.auto_sellers-yhteys .auto_sellers-mail + .auto_sellers-mail::before {
  content: '·';
  position: absolute;
  left: -0.5rem;
  color: rgba(251, 250, 247, 0.28);
}
