/* ─── Etusivun sommitelmat ────────────────────────────────────────────────
   Vain tämän sivun oma kokonaisuus: pyöristetty hero-kortti, jonka taustassa
   pisteverkko ja pinkki liukuväri. Kaikki muu tulee järjestelmästä. */

.e-hero { display: flex; flex-direction: column; background: var(--s-paper); }

.e-hero__card {
  flex: none;
  /* Kortti on ruudun korkuinen. svh eikä dvh: dvh seuraa selaimen palkkien
     liikettä, jolloin kortti kasvaisi kesken vierityksen. */
  height: 100vh;
  height: 100svh;
  margin: 0 16px;
  border-radius: 28px;
  display: flex;
  overflow-y: auto;
  background-color: var(--s-paper);
  /* Kolme kerrosta, ylin ensin: valkoinen verho vaalentaa pisteitä ylhäältä,
     pisteverkko, ja pohjan pinkki liukuväri. Pisteet ovat liukuvärin päällä,
     joten ne jatkuvat värinvaihdoksen yli. */
  background-image:
    linear-gradient(180deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.46) 30%, rgba(255, 255, 255, 0) 64%),
    radial-gradient(circle, rgba(255, 166, 196, 0.55) 1.1px, transparent 1.3px),
    linear-gradient(180deg, #fff 0%, #fff 58%, rgba(255, 166, 196, 0.26) 84%, rgba(255, 166, 196, 0.62) 100%);
  background-size: 100% 100%, 15px 15px, 100% 100%;
}

/* Sisältö alkaa samalta pystylinjalta kuin ylätunnisteen logo: kortin oma
   16px:n marginaali vähennetään sivun gutterista. */
.e-hero__content {
  width: 100%;
  max-width: 980px;
  padding: var(--s-section-y) calc(var(--s-gutter) - 16px);
}

/* Rivinvaihto vain leveällä näytöllä, jossa otsikko on tarkoitettu kahdeksi
   tasapainoiseksi riviksi. Puhelimessa se piilotetaan, jolloin teksti rivittyy
   yhtenä kappaleena ja jokainen rivi täyttyy loppuun asti. */
.e-hero__break { display: none; }

@media (min-width: 901px) {
  .e-hero__break { display: inline; }
}

@media (max-width: 640px) {
  /* Korkeus .e-herolle eikä kortille: ylätunniste ja kortti jakavat näkyvän
     korkeuden, jolloin kortin alareuna osuu ruudun alalaitaan. */
  .e-hero {
    height: calc(100vh - var(--s-header-h));
    height: calc(100svh - var(--s-header-h));
    overflow: hidden;
  }

  .e-hero__card {
    height: auto;
    flex: 1;
    min-height: 0;
    margin-inline: 8px;
    border-radius: 16px;
    background-image:
      linear-gradient(180deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.46) 30%, rgba(255, 255, 255, 0) 64%),
      radial-gradient(circle, rgba(255, 166, 196, 0.55) 1.1px, transparent 1.3px),
      linear-gradient(180deg, #fff 0%, #fff 50%, rgba(255, 166, 196, 0.22) 70%, rgba(255, 166, 196, 0.44) 100%);
    background-size: 100% 100%, 12px 12px, 100% 100%;
  }

  .e-hero__content { padding-inline: calc(var(--s-gutter) - 8px); }
}

/* ─── Hero-kortin sisältö ─────────────────────────────────────────────────
   Kortin korkeus ja tausta yllä ovat ennallaan; tässä vain sisällön osat. */
.e-hero__chip { gap: 10px; margin-bottom: var(--s-2); transition: border-color var(--s-dur-fast) var(--s-ease); }
.e-hero__chip:hover { border-color: var(--s-rule-strong); color: var(--s-ink); }
.e-hero__chip span[aria-hidden] { color: var(--s-ink-3); }
.e-hero__content .s-actions { margin-top: var(--s-2); }

@media (max-width: 600px) {
  .e-hero__content .e-hero__actions {
    width: auto;
    flex-wrap: wrap;
    align-items: flex-start;
  }

  .e-hero__content .e-hero__actions > .s-btn {
    width: auto;
    flex: 0 0 auto;
    padding-inline: 18px;
    white-space: nowrap;
  }

  .e-hero__content .e-hero__actions > .s-btn--secondary { display: none; }
}

/* ─── Perusteet ───────────────────────────────────────────────────────────
   Kolme lyhyttä väitettä keskitetyn otsikon alla. Ylälaidan viiva sitoo ne
   yhdeksi riviksi ilman korttikehyksiä. */
.e-points,
.e-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 48px);
}

/* Otsikko vasemmalla, perusteet oikealla allekkain. Molemmat palstat alkavat
   samasta yläreunasta, joten osio luetaan yhtenä lohkona. */
.e-about {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  gap: clamp(40px, 7vw, 120px);
  align-items: start;
}

.e-about__head .s-lead { max-width: 40ch; }

.e-points { grid-template-columns: minmax(0, 1fr); gap: 0; }

.e-points li {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: var(--s-4);
  padding-block: var(--s-6);
  border-top: 1px solid var(--s-rule);
}

.e-points li:first-child { padding-top: 0; border-top: 0; }
.e-points li > div { display: grid; gap: var(--s-2); }
.e-points .s-meta { padding-top: 5px; }

@media (max-width: 900px) {
  .e-about { grid-template-columns: minmax(0, 1fr); }
  .e-points li:first-child { padding-top: var(--s-6); border-top: 1px solid var(--s-rule); }
  .e-points li { grid-template-columns: 32px minmax(0, 1fr); gap: var(--s-3); }
}

.e-steps li {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding-top: var(--s-5);
  border-top: 1px solid var(--s-rule);
}

.e-points__title { font-size: 1.1875rem; line-height: 1.3; letter-spacing: -0.015em; font-weight: var(--s-fw-semibold); }
.e-points .s-text,
.e-steps .s-text { font-size: var(--s-fs-ui); line-height: 1.55; }

/* Vaiheissa ylälaidan viiva täyttyy pinkillä vaihe vaiheelta, kuten
   toimialasivujen vaiheketjussa. */
.e-steps li { position: relative; border-top-color: transparent; }

.e-steps li::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -1px;
  height: 2px;
  background: linear-gradient(90deg, var(--s-accent) var(--e-p, 33%), var(--s-rule) var(--e-p, 33%));
}

.e-steps li:nth-child(2) { --e-p: 66%; }
.e-steps li:nth-child(3) { --e-p: 100%; }
.e-steps__num { margin-bottom: var(--s-2); }

@media (max-width: 800px) {
  .e-steps { grid-template-columns: minmax(0, 1fr); }
}

/* ─── Palvelut ────────────────────────────────────────────────────────────*/
.e-services { padding-top: 0; }

/* ─── Hallintanäkymä ──────────────────────────────────────────────────────
   Tumma osio, jonka keskellä näkymä hehkuu kevyesti pinkkiä taustaa vasten. */
.e-app { position: relative; overflow: hidden; }

.e-app::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 40%;
  width: 70%;
  height: 50%;
  transform: translateX(-50%);
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(249, 74, 144, 0.16), transparent);
  pointer-events: none;
}

.e-app .s-head { margin-inline: auto; }

.e-app__stage {
  position: relative;
  max-width: 1120px;
  margin-inline: auto;
}

.e-cta { padding-top: 0; }
