/*
Theme Name: Kilpailutavälittäjät
Description: Kevyt teema kilpailutavalittajat.fi:lle. Ei sivunrakentajaa, ei kehystä, ei jQueryä — sivujen sisältö tulee lisäosalta lyhytkoodeina, joten teeman tehtävä on kantaa typografia ja väri eikä rakentaa mitään.
Version: 1.0.0
Requires PHP: 8.0
Author: Atkpiste Helsinki Oy
Text Domain: kilpailutavalittaja
*/

/* ═══════════════════════════════════════════════════════════════════
   Runko on sama kuin asunnonhinta-arvio.fi:n teemassa — sama plugin
   tuottaa samat luokat (aha-karki, aha-luvut, aha-runko, aha-ukk,
   aha-oppaat), joten todistetusti toimivat selektorit kopioituvat ja
   vain sävykartta vaihtuu. Kopio on tilannekuva, ei riippuvuus.

   SÄVYKARTTA vaihdettu 22.8.2026 pronssista keltaiseen. Petrin
   tavoitekuva: "kuin keltainen kilpa-auto — kilpailullinen, tyylikäs
   ja nopea." Pronssi oli tumma ja matalasti kylläinen, ja koko kartta
   lämmin: sävy, pohja ja tekstin musta kaikki kermaan päin. Nyt
   keltainen kantaa yksin ja kaikki muu on neutraalia hiiltä.

   MIKSI EI ORANSSI: mitattu 21.8. — myyasuntosi.fi on #f26124 ja ajaa
   samaa asiaa samalle myyjälle. Neljän asteen päässä oleva oranssi ei
   olisi erottautumista vaan sekaannus. Effortian sivustot ja kotona.fi
   ovat laivastonsinisiä, joten sininenkin on varattu.

   KELTAISEN PAKKO: keltainen ei kanna valkoista tekstiä. Kontrasti on
   1,6 — se kelpaa vasta 54 %:n vaaleudessa, jolloin se ei ole enää
   keltainen vaan okra eli sama ongelma kuin pronssissa. Siksi
   --accent-ink on MUSTA ja --accent-2 (linkit, tekstiaksentti) on oma
   tummempi sävynsä. Älä laita valkoista tekstiä keltaiselle.

   VÄRIT TULEVAT LISÄOSALTA. Teema ei määrittele brändiväriä vaan
   lukee sen muuttujista, jotka lisäosa tulostaa (AHA_Brand) —
   asetuksista vaihdettu väri ei saa jäädä vaihtumatta puolelta
   sivustoa. Alla olevat arvot ovat oletukset samasta kartasta.
   ═══════════════════════════════════════════════════════════════════ */

/* ── kirjasin ─────────────────────────────────────────────────────
   Archivo, muuttujakirjasin yhtenä tiedostona: kaikki painot 100–900
   ja leveydet 75–100 % samassa 90 kilotavussa. Kaksi staattista
   leikkausta maksaisi saman ilman leveysakselia, jolla otsikot saavat
   sen kireyden mitä nopeus vaatii.

   Itse isännöity eikä Google Fontsista: ulkoinen kirjasinpyyntö on
   kolmannen osapuolen yhteys ilman suostumusta, ja se on myös yksi
   DNS-kysely lisää ennen kuin sivu piirtyy. Lisenssi OFL,
   fontit/OFL.txt. */

@font-face{
  font-family:'Archivo';
  src:url('fontit/archivo-latin-ext.woff2') format('woff2');
  font-weight:100 900; font-stretch:75% 125%; font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,
    U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,
    U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,
    U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';
  src:url('fontit/archivo-latin.woff2') format('woff2');
  font-weight:100 900; font-stretch:75% 125%; font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,
    U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,
    U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  --ground:#f7f7f6; --surface:#ffffff; --surface-2:#f0f0ee;
  --ink:#16161a; --muted:#5a5a63; --faint:#71717a;
  --hair:#e4e4e2; --hair-strong:#c9c9c6;
  --accent:#f7c600; --accent-ink:#16161a; --accent-soft:#fff6cf;
  --accent-2:#8a6d00;
  --foot-bg:#111114; --foot-ink:#f2f2f0; --foot-muted:#9a9aa2; --foot-hair:#2a2a30;
  --warn:#9a4a1e;
  --r:12px; --r-s:8px;
  --label:.75rem;
  --step--1:.875rem; --step-0:1.0625rem; --step-1:1.25rem;
  --step-2:1.5rem; --step-3:2.125rem; --step-4:3rem;
  --sans:'Archivo',ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  --mitta:1080px;
}

/* Tumma teema kolmessa tilassa, kuten asunnonhinta-arviolla: selaimen
   oma asetus, ja sen yli käyttäjän valinta kumpaankin suuntaan.
   Keltainen EI vaihdu tummassa — se on ainoa asia joka ei muutu, ja
   siksi se on tunniste. Sen sijaan --accent-2 vaihtuu vaaleaksi:
   tummalla pohjalla keltainen toimii vihdoin myös tekstinä. */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#0e0e11; --surface:#17171b; --surface-2:#202026;
    --ink:#f2f2f0; --muted:#a3a3ac; --faint:#74747e;
    --hair:#2a2a31; --hair-strong:#40404a;
    --accent:#f7c600; --accent-ink:#16161a; --accent-soft:#2b2410;
    --accent-2:#ffd94d;
    --foot-bg:#08080a; --foot-ink:#f2f2f0; --foot-muted:#8b8b94; --foot-hair:#26262c;
    --warn:#d3a24a;
  }
}
:root[data-theme="dark"]{
  --ground:#0e0e11; --surface:#17171b; --surface-2:#202026;
  --ink:#f2f2f0; --muted:#a3a3ac; --faint:#74747e;
  --hair:#2a2a31; --hair-strong:#40404a;
  --accent:#f7c600; --accent-ink:#16161a; --accent-soft:#2b2410;
  --accent-2:#ffd94d;
  --foot-bg:#08080a; --foot-ink:#f2f2f0; --foot-muted:#8b8b94; --foot-hair:#26262c;
  --warn:#d3a24a;
}

/* ── perusta ──────────────────────────────────────────────────────── */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ground);color:var(--ink);
  font-family:var(--sans);font-size:var(--step-0);line-height:1.6;
  -webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;min-height:100vh;
}
img,svg{max-width:100%;height:auto}
a{color:var(--accent-2)}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

h1,h2,h3{line-height:1.15;letter-spacing:-.02em;margin:0;font-weight:750}
h1{font-size:var(--step-4)}
h2{font-size:var(--step-2)}
h3{font-size:var(--step-1)}
p{margin:0 0 14px}

.aha-wrap{max-width:var(--mitta);margin:0 auto;padding:0 24px;width:100%}
main{flex:1 0 auto;padding:44px 0 64px}
/* Etusivu päättyy täysleveään lohkoon, jolla on oma alapaddinginsa.
   Mainin alapadding ja alatunnisteen yläreunus tulivat sen päälle,
   ja niistä syntyi kolmen välin pino: harmaa kaistale, jossa ei ole
   mitään. Muilla sivuilla sisältö loppuu ilman lohkoa, joten siellä
   välit tarvitaan. */
body.home main{padding-bottom:0}
body.home .aha-footer{margin-top:0}

/* Lomakekentät: YKSI sääntö, ja se osuu myös tyypittömään inputiin. */
input[type=text],input[type=tel],input[type=email],input[type=number],
input:not([type]),select,textarea{
  width:100%;padding:12px 13px;font:inherit;color:var(--ink);
  background:var(--surface);border:1px solid var(--hair-strong);
  border-radius:var(--r-s)}


/* ── ILME-EROTTELU (Petri 21.8.2026: sivustot eivät saa näyttää
   "samalta yritykseltä eri nimellä"). Kolme sisarusta erotetaan
   rakenteella, ei vain sävyllä — tämän sivuston tunnisteet:

   1. HIILENMUSTA TOPBAR keltaisella merkillä, sama molemmissa
      teemoissa (AHA: vaalea topbar, valitsevälittäjä: valkoinen)
   2. KONDENSOIDUT VERSAALIOTSIKOT — leveysakseli 86 %, kirjainväli
      tiukka. Serif vaihtui 22.8. moderniin grotesqueen.
   3. KULMIKKAAT NAPIT 6px (AHA: 10px, valitsevälittäjä: pilleri)
   4. KELTAINEN VAIN PINTANA, ei koskaan tekstinä vaalealla

   ─────────────────────────────────────────────────────────────────
   KIRJASIN vaihdettu 22.8.2026 Georgia-serifistä Archivoon. Petri:
   "muuta Kilpailuta fontti johonkin nykyaikaiseen." Archivo on
   amerikkalainen grotesque, jonka leveysakseli antaa otsikoihin
   kireyden ilman että kirjainmuoto vaihtuu — sama kirjasin kantaa
   sekä 3 rem otsikon että 14 px selitteen. */

/* Otsikot: kondensoituna ja tiukalla kirjainvälillä. Leveysakseli on
   se, mitä pelkällä lihavoinnilla ei saa — kirjaimet kapenevat mutta
   viivan paksuus säilyy, jolloin otsikko on tiivis muttei ahdas. */
h1,h2,h3{font-family:var(--sans);font-weight:800;
  font-stretch:86%;letter-spacing:-.025em}
h1{letter-spacing:-.035em}
.aha-runko h3,.askel h3{font-stretch:92%;font-weight:750;letter-spacing:-.015em}

/* ── yläpalkki ────────────────────────────────────────────────────── */

/* Topbar on hiiltä molemmissa teemoissa: se on sivuston tunniste eikä
   saa vaihtua käyttäjän asetuksen mukana. Keltainen kaista alareunassa
   on ainoa väri — kuin ajolinja. */
.aha-topbar{background:#111114;border-bottom:0;position:relative}
.aha-topbar::after{content:'';position:absolute;left:0;right:0;bottom:0;
  height:3px;background:var(--accent)}
.aha-topbar .aha-wrap{display:flex;align-items:center;gap:20px;
  min-height:64px;flex-wrap:wrap}
.aha-logo{font-family:var(--sans);font-weight:800;font-stretch:82%;
  letter-spacing:.02em;text-transform:uppercase;font-size:17px;
  text-decoration:none;color:#ffffff;white-space:nowrap;
  display:inline-flex;align-items:baseline;gap:1px}
.aha-logo b{color:var(--accent);font-weight:800}
/* Logo ei peri a:hover-sääntöä: se on tummalla palkilla, jolloin
   tekstiväriksi vaihtuva --ink on musta mustalla. Nimen ensimmäinen
   osa katosi hoverilla kokonaan ja keltainen jäi leijumaan yksin. */
.aha-logo:hover,.aha-logo:focus-visible{color:#ffffff}
.aha-logo:hover b{color:var(--accent)}
.aha-logo span{color:#8b8b94;font-weight:500;text-transform:none;
  letter-spacing:0;font-stretch:100%;font-size:14px}
.aha-nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto;align-items:center}
.aha-nav a{font-size:var(--step--1);font-weight:650;text-decoration:none;
  color:#d6d6db;padding:7px 11px;border-radius:6px}
.aha-nav a:hover{color:#fff;background:rgba(255,255,255,.1)}
.aha-nav .current-menu-item a{color:#16161a;background:var(--accent)}

/* Teemanappi: sama kolmen tilan malli kuin asunnonhinta-arviolla.
   Kuvake kertoo mihin tilaan napista siirrytään, ei sitä missä
   ollaan — siksi kuu näkyy vaaleassa ja aurinko tummassa. */
.teemanappi{background:none;border:1px solid rgba(255,255,255,.22);
  color:#d6d6db;border-radius:6px;width:34px;height:34px;cursor:pointer;
  display:grid;place-items:center;padding:0;margin-left:4px;flex:none}
.teemanappi:hover{background:rgba(255,255,255,.1);color:#fff}
.teemanappi svg{width:17px;height:17px;display:block}
.ik-aurinko{display:none}
:root[data-theme="dark"] .ik-kuu{display:none}
:root[data-theme="dark"] .ik-aurinko{display:block}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .ik-kuu{display:none}
  :root:not([data-theme="light"]) .ik-aurinko{display:block}
}

/* ── sisältö ──────────────────────────────────────────────────────── */

.aha-sisalto{max-width:70ch}
.aha-sisalto.aha-levea{max-width:none}
.aha-karki{font-size:var(--step-1);line-height:1.55;font-weight:500;
  margin:0 0 26px;max-width:70ch}

.aha-runko h2{margin:38px 0 12px}
.aha-runko h3{margin:26px 0 8px}
.aha-runko p,.aha-runko li{color:var(--muted)}
.aha-runko p{max-width:70ch}
.aha-runko ul,.aha-runko ol{margin:0 0 16px;padding-left:22px;
  display:flex;flex-direction:column;gap:7px;max-width:70ch}
.aha-runko strong{color:var(--ink)}

/* Taulukot ovat dataa: leveämpiä kuin leipäteksti ja vieritettäviä
   kapealla näytöllä. Sivun runko ei saa koskaan vierittyä vaakaan. */
.aha-runko table{
  width:100%;border-collapse:collapse;margin:0 0 8px;
  font-size:var(--step--1);font-variant-numeric:tabular-nums}
.aha-runko th,.aha-runko td{
  padding:10px 12px;text-align:right;border-bottom:1px solid var(--hair)}
.aha-runko th:first-child,.aha-runko td:first-child{text-align:left}
.aha-runko thead th{
  font-size:var(--label);color:var(--muted);font-weight:650;
  text-transform:uppercase;letter-spacing:.06em;
  border-bottom:1px solid var(--hair-strong)}

/* Lähdemerkintä tulee reunasta eikä väristä. */
.lahde{font-size:var(--step--1);color:var(--muted);max-width:70ch;
  border-left:2px solid var(--accent-2);padding-left:12px;margin:-4px 0 20px}
.aha-varoitus{font-size:var(--step--1);color:var(--warn);max-width:70ch;
  border:1px solid var(--hair);border-radius:var(--r-s);padding:12px 14px;margin:0 0 18px}
.aha-paivitetty{font-size:var(--label);color:var(--faint);margin-top:34px}

/* ── omat luvut ───────────────────────────────────────────────────── */

.aha-luvut{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:10px;margin:0 0 30px}
.aha-luku{background:var(--surface);border:1px solid var(--hair);
  border-radius:var(--r);padding:18px 20px}
.aha-luku b{display:block;font-size:var(--step-2);font-weight:800;
  letter-spacing:-.03em;color:var(--accent-2);margin-bottom:6px}
.aha-luku span{display:block;font-size:var(--step--1);color:var(--muted);line-height:1.5}
.aha-luku em{display:block;font-style:normal;font-size:var(--label);
  color:var(--faint);margin-top:8px;text-transform:uppercase;letter-spacing:.06em}

/* ── UKK-haitari ──────────────────────────────────────────────────── */

/* <details> eikä JavaScript: kysymys aukeaa myös silloin kun skripti ei
   lataudu, ja vastaus on sivulla hakukoneelle myös suljettuna —
   etusivun onepage-kerros nojaa juuri tähän. */
.aha-ukk{border-top:1px solid var(--hair);margin-top:40px;max-width:70ch}
.aha-ukk:empty{display:none}
.aha-ukk h2{margin:0 0 4px;padding-top:22px;border-top:0}
.aha-ukk-kohta{border-bottom:1px solid var(--hair)}
.aha-ukk-kohta summary{cursor:pointer;list-style:none;position:relative;
  padding:17px 34px 17px 0;font-size:var(--step-0);font-weight:650;color:var(--ink)}
.aha-ukk-kohta summary::-webkit-details-marker{display:none}
.aha-ukk-kohta summary::after{content:"+";position:absolute;right:4px;top:50%;
  transform:translateY(-50%);font-size:var(--step-1);font-weight:400;
  color:var(--accent-2);line-height:1}
.aha-ukk-kohta[open] summary::after{content:"–"}
.aha-ukk-kohta summary:hover{color:var(--accent-2)}
.aha-ukk-vastaus{padding:0 34px 20px 0;color:var(--muted)}
.aha-ukk-vastaus p{margin:0}

/* ── oppaiden lista ───────────────────────────────────────────────── */

.aha-oppaat{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.aha-opas-kortti{background:var(--surface);border:1px solid var(--hair);
  border-radius:var(--r);padding:22px 24px;transition:border-color .18s ease}
.aha-opas-kortti:hover{border-color:var(--hair-strong)}
.aha-opas-kortti h2{font-size:var(--step-1);margin-bottom:8px}
.aha-opas-kortti h2 a{color:var(--ink);text-decoration:none}
.aha-opas-kortti h2 a:hover{color:var(--ink)}
.aha-opas-kortti p{color:var(--muted);font-size:var(--step--1);margin:0}
.aha-opas-meta{font-family:var(--mono);font-size:var(--label);
  color:var(--faint);margin-top:12px !important}

.aha-jatko{margin-top:40px;border-top:1px solid var(--hair);padding-top:22px;max-width:70ch}
.aha-jatko h2{font-size:var(--step-1);margin-bottom:12px}
.aha-jatko ul{list-style:none;padding:0;margin:0;display:flex;
  flex-direction:column;gap:8px}

/* ── vaakavieritys vain sille mikä sitä tarvitsee ─────────────────── */

.aha-runko{overflow-x:auto}

/* ── alatunniste ──────────────────────────────────────────────────── */

.aha-footer{background:var(--foot-bg);color:var(--foot-ink);
  padding:44px 0 28px;margin-top:64px;flex:none}
.aha-footer a{color:var(--foot-ink)}
.aha-footer .aha-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:28px}
.aha-footer h2{font-size:var(--label);text-transform:uppercase;
  letter-spacing:.1em;color:var(--foot-muted);margin-bottom:12px;font-weight:650}
.aha-footer ul{list-style:none;padding:0;margin:0;display:flex;
  flex-direction:column;gap:8px;font-size:var(--step--1)}
.aha-footer-alin{border-top:1px solid var(--foot-hair);margin-top:28px;
  padding-top:18px;font-size:var(--label);color:var(--foot-muted)}

@media (max-width:880px){
  :root{--step-4:2.4rem;--step-3:1.75rem}
  .aha-oppaat{grid-template-columns:1fr}
  .aha-nav{margin-left:0;width:100%}
}

/* Liike pois niiltä, jotka ovat sen pyytäneet pois. */
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}

/* ═══════════════════════════════════════════════════════════════════
   ETUSIVUN LOHKOT — mockupista (docs/mockup.html = ilmeen totuus).

   Nämä luokat eivät tule lisäosalta vaan sivun sisällöstä: etusivu on
   valmiiksi ladottua markkausta, jonka päälle lomake tulee
   lyhytkoodina. Tokenit ovat teeman omat; mockupin --brand vastaa
   tässä --accentia, koska väri tulee lisäosan asetuksesta eikä
   teemasta.
   ═══════════════════════════════════════════════════════════════════ */

.wrap{max-width:var(--mitta);margin:0 auto;padding:0 24px;width:100%}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r)}
/* Eyebrow on tekstiä, joten se ei voi olla keltainen vaalealla
   pohjalla — kontrasti 1,4. --accent-2 on saman sävyn luettava
   versio, ja tummassa teemassa se vaihtuu vaaleaksi keltaiseksi. */
.eyebrow{font-size:13px;text-transform:uppercase;letter-spacing:.13em;
  font-weight:700;color:var(--accent-2)}
.selite{font-size:var(--step--1);color:var(--muted)}

/* Hero: teksti vasemmalle, lomake oikealle. Lomake on sivun
   päätoiminto, joten se on heti näkyvissä ilman vieritystä. */
.hero{display:grid;grid-template-columns:1fr 1fr;gap:36px;
  align-items:start;padding:48px 0 56px}
@media(max-width:860px){.hero{grid-template-columns:1fr;gap:28px;padding:32px 0 40px}}
.hero h1{font-size:var(--step-3);line-height:1.12;letter-spacing:-.02em}

/* Aikajana: kolme lupausta pisteillä. Ei kehyksiä — kolme peräkkäistä
   korttia veisi enemmän tilaa kuin ne kertovat. */
.aikajana{list-style:none;display:flex;flex-direction:column;gap:14px;
  margin:18px 0;padding:0;max-width:58ch}
.aikajana li{padding-left:26px;position:relative;font-size:var(--step--1);
  color:var(--muted)}
.aikajana li::before{content:'';position:absolute;left:6px;top:8px;
  width:9px;height:9px;border-radius:50%;background:var(--accent)}
.aikajana b{display:block;font-size:var(--step-0);color:var(--ink)}

section.lohko{padding:52px 0}
section.lohko.tint{background:var(--surface)}
.lohko h2{font-size:var(--step-2);font-weight:750;letter-spacing:-.01em}

.askeleet{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px}
/* ── GRAAFISUUS (Petri 21.8.2026: "lisää graafisuutta sivuille") ──
   Kolme keinoa, ei uusia värejä: askelikonit, vertailukuvitus ja
   tint-lohkojen aksenttikaista. Kaikki inline-SVG:tä tokeneilla —
   ei kuvatiedostoja, ei dataväitteitä (kuvituksen palkit eivät
   esitä mitattua, ja se lukee kuvatekstissä). */
.askel{position:relative}
.askel .ikoni{position:absolute;right:16px;top:16px;width:38px;height:38px;
  color:var(--accent);opacity:.85}
.askel .ikoni svg{width:100%;height:100%}
section.lohko.tint{position:relative}
section.lohko.tint::before{content:'';position:absolute;left:0;right:0;top:0;
  height:3px;background:linear-gradient(90deg,transparent,var(--accent) 30%,var(--accent) 70%,transparent)}
.vertailukuva{display:grid;grid-template-columns:1fr auto;gap:28px;
  align-items:center;margin-top:8px}
@media(max-width:700px){.vertailukuva{grid-template-columns:1fr}
  .vertailukuva svg{margin:0 auto}}
.vertailukuva svg{width:280px;max-width:100%;height:auto;color:var(--accent)}
.vertailukuva .kuvateksti{font-size:12.5px;color:var(--faint);margin-top:6px}

@media(max-width:760px){.askeleet{grid-template-columns:1fr}}
.askel{padding:18px}
.askel .nro{width:34px;height:34px;border-radius:50%;background:var(--accent);
  color:var(--accent-ink);display:grid;place-items:center;font-weight:800;
  margin-bottom:10px}
.askel h3{margin:0 0 6px;font-size:var(--step-0)}

.lupaukset{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));
  gap:14px;margin-top:22px}
.lupaus{padding:16px 18px}
.lupaus b{display:block;margin-bottom:4px}
.lupaus p{font-size:var(--step--1);color:var(--muted);margin:0}

/* Haitari: neljätoista kysymystä avoimena veisi koko sivun, ja
   hakukone lukee vastaukset joka tapauksessa — teksti on sivulla,
   vaikkei se ole näkyvissä. */
.ukk details{border-bottom:1px solid var(--hair)}
.ukk details:first-child{border-top:1px solid var(--hair)}
.ukk summary{cursor:pointer;list-style:none;padding:15px 30px 15px 0;
  font-weight:650;position:relative}
.ukk summary::-webkit-details-marker{display:none}
.ukk summary::after{content:"+";position:absolute;right:2px;
  color:var(--accent-2);font-size:20px}
.ukk details[open] summary::after{content:"–"}
.ukk .vastaus{padding:0 0 16px;color:var(--muted);
  font-size:var(--step--1);max-width:70ch}


/* ── korjaukset ────────────────────────────────────────────────────
   Ohituslinkki on näppäimistökäyttäjän oikopolku valikon ohi. Se on
   WordPressin oma luokka, jonka teeman on tyylitettävä: ilman tätä se
   näkyy jokaisen sivun ylälaidassa irrallisena linkkinä. Piilotus on
   siirto pois näkyvistä eikä display:none, koska ruudunlukijan on
   silti löydettävä se — ja tarkennettaessa se palaa näkyviin. */
.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;
  margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.screen-reader-text:focus{position:fixed;top:8px;left:8px;z-index:100;
  width:auto;height:auto;clip:auto;margin:0;padding:10px 16px;
  background:var(--surface);color:var(--ink);border:2px solid var(--accent);
  border-radius:var(--r-s);white-space:normal}

/* Valikko tulostetaan li-alkioina ilman ul-kehystä, joten listan
   oletusluoti jää näkyviin yhtenä irrallisena pisteenä. */
.aha-nav ul,.aha-nav li{list-style:none;margin:0;padding:0;display:contents}

/* Etusivun lohkot ovat main-elementin suoria lapsia, joten niiden
   sävypalkit yltävät reunasta reunaan ja sisältö rajautuu omalla
   .wrapillaan. */
main > .wrap.hero{padding-top:40px}

/* ═══════════════════════════════════════════════════════════════════
   KILPA-ILME (Petri 22.8.2026: "kuin keltainen kilpa-auto —
   kilpailullinen, tyylikäs ja nopea"). Kaksi ohjetta kerralla:
   lisää grafiikkaa JA yksinkertaista. Ne eivät ole ristiriidassa, jos
   grafiikka korvaa tekstiä eikä tule sen lisäksi — sivulla on nyt
   vähemmän näkyvää tekstiä ja enemmän luettavaa muotoa.

   Kaikki alla on CSS:ää ja inline-SVG:tä. Ei kuvatiedostoja: jokainen
   olisi latauspyyntö, ja nopeus on tämän sivuston lupaus.
   ═══════════════════════════════════════════════════════════════════ */

/* ── ajolinja: hero-osion diagonaali ──────────────────────────────
   Yksi vino keltainen kaista otsikon takana. Se on ainoa iso keltainen
   pinta sivulla — muualla väri on viivoina ja pieninä merkkeinä, jotta
   tämä pysyy huomion kohteena. */
.hero{position:relative;isolation:isolate}
/* Kaksi kapeaa vinoa viivaa, ei täytettyä pintaa. Ensimmäinen versio
   oli 52 % leveä keltainen laatikko: se luki isona beigenä alueena
   eikä liikkeenä, ja se jatkui lomakkeen ohi. Ajolinja on viiva. */
.hero::before{
  content:'';position:absolute;z-index:-1;pointer-events:none;
  right:calc(100% + 14px);left:auto;top:6px;bottom:30px;width:116px;
  background:
    linear-gradient(90deg,var(--accent) 0 9px,transparent 9px 100%),
    linear-gradient(90deg,transparent 0 26px,var(--accent) 26px 31px,transparent 31px 100%),
    linear-gradient(90deg,transparent 0 52px,var(--accent) 52px 54px,transparent 54px 100%);
  opacity:.7;transform:skewX(-14deg);
}
/* Viivat ovat palstan ULKOPUOLELLA, eivät tekstin takana: ensimmäinen
   versio kulki otsikon ja leipätekstin läpi. Kun tilaa ei ole, ne
   jäävät kokonaan pois — koriste ei saa syödä luettavuutta. */
@media(max-width:1240px){.hero::before{display:none}}

/* Korostuskynä otsikossa. Keltaista ei voi käyttää tekstin värinä
   vaalealla pohjalla (kontrasti 1,6), joten se menee tekstin taakse —
   siinä se toimii kummassakin teemassa. */
/* Korostuksen sisennys kompensoidaan negatiivisella marginaalilla:
   pelkkä padding työnsi korostetun sanan neljä pikseliä oikealle,
   jolloin se ei ollut enää samalla pystylinjalla kuin sen yläpuolinen
   rivi. Nyt tausta ulottuu tekstin yli mutta teksti pysyy paikallaan. */
.veto{background:linear-gradient(transparent 12%,var(--accent) 12%,var(--accent) 92%,transparent 92%);
  padding:0 4px;margin:0 -4px;box-decoration-break:clone;
  -webkit-box-decoration-break:clone;color:#16161a}

/* ── kilpanumerot ────────────────────────────────────────────────
   Askelten numerot ovat isoja ja tabulaarisia kuin auton kylkinumero.
   Pyöreä keltainen pallo vaihtui tähän: pallo oli yleisin mahdollinen
   ratkaisu eikä kertonut mitään. */
.askel{padding:20px 20px 22px;position:relative;overflow:hidden}
/* Kylkinumero: keltainen numero tummalla lapulla. Pelkkä keltainen
   numero vaalealla pohjalla oli lukukelvoton (kontrasti 1,4) — tumma
   pohja korjaa sen ja on samalla lähempänä sitä mistä kuva on
   lainattu. Numero on tabulaarinen, jotta 01 ja 02 ovat samanlevyisiä. */
.askel .nro{
  display:inline-block;width:auto;height:auto;margin:0 0 12px;
  /* Puhdas musta kiinteänä. Kaksi syytä: tekstiväri (--ink) kääntyy
     tummassa teemassa vaaleaksi, jolloin lappu oli valkoinen, ja
     hiilenharmaa (#16161a) taas katosi tumman kortin taustaan, joka
     on käytännössä samaa sävyä. Musta erottuu sekä valkoisesta
     kortista että tummanharmaasta. Kylkinumero on tunniste, joka ei
     saa vaihtua käyttäjän teeman mukana - samoin kuin yläpalkki. */
  background:#000;color:var(--accent);border-radius:6px;
  padding:5px 11px 6px;
  font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-size:1.7rem;line-height:1;font-weight:700;letter-spacing:-.03em;
}
.askel .nro::before{content:'0'}
/* Ohut keltainen kaista kortin ylälaidassa: kolme rinnakkaista
   ajolinjaa, kun kortit ovat vierekkäin. */
.askel::before{content:'';position:absolute;left:20px;right:20px;top:0;
  height:3px;background:var(--accent)}
/* Kaista pitenee askeleittain: 01 lyhyin, 03 täysi. Ensimmäinen versio
   oli päinvastoin, ja se luki hiipumisena. */
.askel::before{right:auto;width:26%}
.askel:nth-child(2)::before{width:58%}
.askel:nth-child(3)::before{width:calc(100% - 40px)}
.askel .ikoni{opacity:.7;top:18px}

/* ── mittanauha: kolme lupausta ilman kehyksiä ──────────────────── */
.aikajana li::before{border-radius:2px;width:10px;height:10px;top:9px}

/* ── Lisää-haitari ───────────────────────────────────────────────
   Petri: "laita kaikki mahdolliset ..Lisää taakse". Pitkä
   hakukoneteksti on sivulla mutta suljettuna: <details> pitää sen
   merkkauksessa, joten se luetaan silti, eikä se vie myyjältä tilaa.
   Sama tekniikka kuin UKK:ssa — yksi kuvio koko sivustolle. */
details.lisaa{
  border:1px solid var(--hair);border-radius:var(--r);
  background:var(--surface);margin:18px 0 0;
}
details.lisaa > summary{
  cursor:pointer;list-style:none;padding:16px 20px;position:relative;
  font-weight:700;font-size:var(--step-0);color:var(--ink);
  display:flex;align-items:center;gap:12px;
}
details.lisaa > summary::-webkit-details-marker{display:none}
details.lisaa > summary::before{
  content:'+';display:grid;place-items:center;flex:none;
  width:24px;height:24px;border-radius:5px;
  background:var(--accent);color:var(--accent-ink);
  font-size:16px;font-weight:800;line-height:1;
}
details.lisaa[open] > summary::before{content:'–'}
details.lisaa > summary:hover{background:var(--surface-2)}
details.lisaa .sisus{padding:0 20px 22px;color:var(--muted)}
details.lisaa .sisus > *:first-child{margin-top:0}
details.lisaa .sisus h3{color:var(--ink);margin:20px 0 6px}

/* KAKSI PALSTAA JA KOKO LEVEYS. Haitari oli 72 merkin levyinen ja
   jätti oikean puolen tyhjäksi, jolloin avattuna se näytti kapealta
   pylväältä ylä- ja alapuolensa täysleveiden korttien välissä.
   Palstoitus pitää rivin luettavan mittaisena vaikka laatikko on
   leveä — sama teksti yhdellä palstalla olisi liian pitkä rivi.

   Palstat vain työpöydällä: kapealla näytöllä yksi palsta on ainoa
   luettava vaihtoehto. */
@media(min-width:900px){
  details.lisaa .sisus{columns:2;column-gap:44px}
  /* Otsikko ei saa jäädä palstan pohjalle ilman tekstiään, eikä
     kappale katketa kesken. */
  details.lisaa .sisus > *{break-inside:avoid}
  details.lisaa .sisus h3{break-after:avoid;break-inside:avoid}
  details.lisaa .sisus > *:first-child{margin-top:0}
}

/* ── shakkiruutu: vain alatunnisteen rajana ──────────────────────
   Maaliviiva on ainoa paikka, jossa kuvio saa esiintyä. Sivun sisällä
   se olisi koriste; tässä se merkitsee loppua. */
.aha-footer{position:relative}
.aha-footer::before{
  content:'';position:absolute;left:0;right:0;top:0;height:10px;
  background-image:
    linear-gradient(45deg,var(--accent) 25%,transparent 25%,transparent 75%,var(--accent) 75%),
    linear-gradient(45deg,var(--accent) 25%,transparent 25%,transparent 75%,var(--accent) 75%);
  background-size:10px 10px;background-position:0 0,5px 5px;
  opacity:.9;
}

/* ── vertailukuvitus ─────────────────────────────────────────────── */
.vertailukuva svg{color:var(--accent)}
/* Kuvateksti kertoo, etteivät palkit esitä mitattua — se on väite
   jonka on oltava luettava, ei harmaa pikkuprintti. */
.vertailukuva .kuvateksti{font-family:var(--mono);font-size:12.5px;
  letter-spacing:.02em;color:var(--muted)}

/* ── napit sivun sisällössä ─────────────────────────────────────── */
.nappi{
  display:inline-flex;align-items:center;gap:9px;
  background:var(--accent);color:var(--accent-ink);
  font-weight:750;font-size:var(--step-0);
  padding:13px 22px;border-radius:6px;text-decoration:none;
  border:0;cursor:pointer;
}
.nappi:hover{filter:brightness(1.06);color:var(--accent-ink)}
.nappi.reuna{background:none;color:var(--ink);border:1.5px solid var(--hair-strong)}
.nappi.reuna:hover{border-color:var(--accent);filter:none}

/* ── lisäosan lomake tummassa teemassa ────────────────────────────
   Lomake tulee lyhytkoodina ja kantaa omat sävynsä muuttujina, joiden
   oletukset ovat vaaleat. Tumma teema on tämän sivuston asia, joten
   ylikirjoitus kuuluu tänne eikä lisäosaan — lisäosa ei tiedä, onko
   sitä käyttävällä sivustolla tummaa teemaa lainkaan. */
:root[data-theme="dark"] .aha-kilpa,
:root[data-theme="dark"] .aha-kilpa *{--kv-ink:#f2f2f0;--kv-muted:#a3a3ac;
  --kv-faint:#8b8b94;--kv-kentta:#17171b;--kv-reuna:#40404a;--kv-viiva:#2a2a31}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .aha-kilpa,
  :root:not([data-theme="light"]) .aha-kilpa *{--kv-ink:#f2f2f0;--kv-muted:#a3a3ac;
    --kv-faint:#8b8b94;--kv-kentta:#17171b;--kv-reuna:#40404a;--kv-viiva:#2a2a31}
}

/* Haitarin otsikko on h2, jotta sivun otsikkorakenne säilyy — mutta se
   ei saa näyttää lohkon otsikolta vaan riviltä, jonka voi avata. */
details.lisaa > summary h2{font-size:var(--step-1);margin:0;
  font-stretch:92%;letter-spacing:-.015em}

/* ── UKK kahdessa sarakkeessa ─────────────────────────────────────
   Neljätoista kysymystä allekkain oli sivun pisin yksittäinen lohko,
   vaikka jokainen niistä on suljettu. Kaksi saraketta puolittaa
   korkeuden ilman että mitään piilotetaan.

   Sarakkeet ovat kaksi erillistä listaa eivätkä CSS-sarakkeita:
   columns-ominaisuus jakaisi kysymykset uudelleen joka kerta kun
   joku avataan, jolloin toisen sarakkeen rivit hyppäisivät kesken
   lukemisen. */
.ukk-palstat{display:grid;gap:0 40px;margin-top:10px}
@media(min-width:900px){.ukk-palstat{grid-template-columns:1fr 1fr}}
.ukk-palstat .ukk{max-width:none}
/* Kapealla näytöllä listat ovat peräkkäin, joten jälkimmäisen
   yläreuna ei saa piirtää toista viivaa edellisen viimeisen päälle. */
@media(max-width:899px){.ukk-palstat .ukk+.ukk details:first-child{border-top:0}}
