:root{--kv-paperi:#0f0f14;--kv-sivu:rgba(12,12,18,.82);--kv-sivu2:rgba(255,138,76,.08);--kv-muste:#f0e7dc;--kv-harmaa:hsla(0,0%,100%,.5);--kv-jarvi:#ff8a4c;--kv-kupari:#ffd6a5;--kv-nousu:#22c55e;--kv-lasku:#ef4444;--kv-viiva:hsla(0,0%,100%,.09);--kv-hento:hsla(0,0%,100%,.05);--kv-otsikko:"Sora",system-ui,sans-serif;--kv-teksti:"Sora",system-ui,sans-serif;--kv-luvut:"Red Hat Mono",ui-monospace,monospace}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--kv-paperi);color:var(--kv-muste);font-family:var(--kv-teksti);font-size:15.5px;line-height:1.6;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(60rem 34rem at 50% -12%,rgba(255,138,76,.08),transparent 60%),radial-gradient(50rem 30rem at 85% 110%,rgba(255,138,76,.08),transparent 55%)}a{color:inherit;text-decoration:none}a.kv-side{color:var(--kv-kupari);border-bottom:1px dotted rgba(255,214,165,.5)}a.kv-side:hover{border-bottom-style:solid;color:#fff}h1,h2,h3{font-family:var(--kv-otsikko);font-weight:700;color:#fff;letter-spacing:-.01em}.kv-kirja{max-width:1200px;margin:0 auto;padding:0 20px 56px;position:relative;z-index:1}.kv-nimio{border-bottom:1px solid var(--kv-viiva);background:rgba(10,10,15,.85);position:relative;z-index:2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.kv-nimio-sisus{max-width:1200px;margin:0 auto;display:flex;align-items:baseline;gap:16px;padding:14px 20px 10px}.kv-tunnusrivi{font-family:var(--kv-otsikko);font-size:22px;font-weight:800;color:#fff}.kv-tunnusrivi i{font-style:normal;color:var(--kv-jarvi)}.kv-alaotsikko{font-size:12px;letter-spacing:.12em;color:var(--kv-harmaa)}.kv-alaotsikko,.kv-kello{font-family:var(--kv-luvut)}.kv-kello{margin-left:auto;font-size:12.5px;color:var(--kv-jarvi)}.kv-reunus{max-width:1200px;margin:0 auto;padding:0 20px;position:relative;z-index:2}.kv-runorivi{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}.kv-runorivi::-webkit-scrollbar{display:none}.kv-runolinkki{display:inline-flex;align-items:baseline;gap:8px;white-space:nowrap;padding:8px 16px 7px;font-family:var(--kv-otsikko);font-size:14px;color:var(--kv-harmaa);border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0}.kv-runolinkki i{font-style:normal;font-family:var(--kv-luvut);font-size:12px;color:var(--kv-jarvi)}.kv-runolinkki.kv-valittu{background:var(--kv-sivu);border-color:var(--kv-viiva);color:#fff;position:relative;top:1px}.kv-runolinkki:hover{color:var(--kv-kupari)}.kv-kanavarivi{display:flex;gap:2px 18px;overflow-x:auto;background:rgba(12,12,18,.6);border-top:1px solid var(--kv-viiva);margin:0 -20px;padding:9px 22px 10px;scrollbar-width:none}.kv-kanavarivi::-webkit-scrollbar{display:none}.kv-kanavarivi a{white-space:nowrap;font-size:13.5px;color:var(--kv-harmaa);padding:2px 0;border-bottom:2px solid transparent}.kv-kanavarivi a:hover{color:var(--kv-kupari)}.kv-kanavarivi a.kv-tassa{color:var(--kv-jarvi);border-bottom-color:var(--kv-jarvi);font-weight:700}.kv-saenro{font-family:var(--kv-luvut);font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--kv-jarvi);margin:28px 0 6px}.kv-kirja h1{font-size:clamp(24px,3.4vw,36px);line-height:1.15}.kv-johdanto{color:var(--kv-harmaa);max-width:68ch;margin-top:8px;font-size:14.5px}.kv-sae{background:var(--kv-sivu);border:1px solid var(--kv-viiva);border-radius:12px;margin-top:26px;padding:18px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.kv-sae-paa{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;border-bottom:1px solid var(--kv-hento);padding-bottom:9px}.kv-sae-paa h2{font-size:16px;color:var(--kv-jarvi)}.kv-sae-paa .kv-lisaa{margin-left:auto;font-size:13px;color:var(--kv-kupari);white-space:nowrap}.kv-sae-paa .kv-lisaa:hover{color:#fff}.kv-vieritys{overflow-x:auto}.kv-taulu{width:100%;border-collapse:collapse;font-size:13.5px;white-space:nowrap}.kv-taulu th{font-family:var(--kv-teksti);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--kv-harmaa);text-align:right;padding:4px 10px 8px;border-bottom:1px solid var(--kv-viiva)}.kv-taulu td.kv-nimi,.kv-taulu th.kv-nimi{text-align:left;padding-left:2px}.kv-taulu td{text-align:right;padding:8px 10px;border-bottom:1px solid var(--kv-hento);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:var(--kv-luvut);font-size:13px}.kv-taulu td.kv-nimi{font-family:var(--kv-teksti)}.kv-taulu tr:hover td{background:var(--kv-sivu2)}.kv-nousu{color:var(--kv-nousu)}.kv-lasku{color:var(--kv-lasku)}.kv-jarvitxt{color:var(--kv-jarvi)}ul.kv-mitat{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:12px;gap:12px}ul.kv-mitat li{padding:14px 16px;background:var(--kv-sivu);border:1px solid var(--kv-viiva);border-radius:12px;min-width:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:.25s}ul.kv-mitat li:hover{transform:translateY(-4px);border-color:var(--kv-jarvi)}ul.kv-mitat li span{display:block;font-size:12.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--kv-harmaa)}ul.kv-mitat li strong{display:block;font-family:var(--kv-luvut);font-size:18px;font-weight:700;margin-top:3px;overflow:hidden;text-overflow:ellipsis;color:#fff}ul.kv-mitat li small{display:block;font-size:12px;color:var(--kv-harmaa);margin-top:1px}.kv-tunnus{display:inline-flex;align-items:center;gap:8px}.kv-tunnus img{display:block}.kv-tunnus .kv-kirjain,.kv-tunnus img{width:20px;height:20px;border-radius:6px}.kv-tunnus .kv-kirjain{display:inline-flex;align-items:center;justify-content:center;background:var(--kv-sivu2);border:1px solid var(--kv-jarvi);color:var(--kv-kupari);font-size:12px;font-weight:700;letter-spacing:-.05em}a.kv-tunnus:hover{color:var(--kv-kupari)}.kv-ristikko{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.kv-ristikko a{font-family:var(--kv-luvut);font-size:12.5px;color:var(--kv-harmaa);border:1px solid var(--kv-viiva);background:var(--kv-sivu);padding:5px 12px;border-radius:8px}.kv-ristikko a:hover{color:var(--kv-kupari);border-color:var(--kv-jarvi)}.kv-ristikko a.kv-tassa{color:#0f0f14;background:var(--kv-jarvi);border-color:var(--kv-jarvi);font-weight:700}.kv-piirrospohja{border:1px solid var(--kv-viiva);background:var(--kv-sivu);border-radius:12px;padding:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.kv-sivutus{display:flex;align-items:center;gap:10px;margin-top:16px;font-family:var(--kv-luvut);font-size:13px}.kv-sivutus a{border:1px solid var(--kv-viiva);padding:5px 13px;background:var(--kv-sivu);border-radius:8px}.kv-sivutus a:hover{border-color:var(--kv-jarvi);color:var(--kv-kupari)}.kv-sivutus .kv-himmea{color:var(--kv-viiva);border:1px solid var(--kv-hento);padding:5px 13px;border-radius:8px}.kv-sivutus .kv-kohta,.kv-tyhja{color:var(--kv-harmaa)}.kv-tyhja{border:1px dashed var(--kv-viiva);background:var(--kv-sivu);border-radius:12px;padding:26px 20px;text-align:center;font-size:14px;margin-top:14px}.kv-tyhja b{display:block;font-family:var(--kv-luvut);font-size:22px;color:var(--kv-jarvi);margin-bottom:6px}.kv-loppu{margin-top:48px;padding-top:16px;border-top:1px solid var(--kv-viiva)}.kv-loppu .kv-motto{font-size:13px;color:var(--kv-harmaa);margin-bottom:16px;font-style:italic}.kv-loppu .kv-hyllyt{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));grid-gap:14px 26px;gap:14px 26px}.kv-loppu .kv-hyllyt b{display:block;font-family:var(--kv-otsikko);font-size:14px;margin-bottom:7px;color:#fff}.kv-loppu .kv-hyllyt b i{font-style:normal;font-family:var(--kv-luvut);font-size:12px;color:var(--kv-jarvi);margin-right:7px}.kv-loppu .kv-hyllyt a{display:block;font-size:13px;color:var(--kv-harmaa);padding:2.5px 0}.kv-loppu .kv-hyllyt a:hover{color:var(--kv-kupari)}.kv-loppu .kv-alarivi{margin-top:18px;padding-top:12px;border-top:1px solid var(--kv-hento);display:flex;flex-wrap:wrap;gap:8px 22px;font-size:12.5px;color:var(--kv-harmaa)}.kv-loppu .kv-alarivi a:hover{color:var(--kv-kupari)}.kv-hero{text-align:center;padding:44px 0 8px}.kv-hero h1{font-size:clamp(30px,6vw,54px);font-weight:800;letter-spacing:-1px;line-height:1.1;color:#fff}.kv-hero h1 span{color:var(--kv-jarvi)}.kv-hero .kv-paivays{font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;margin-top:12px}.kv-hero .kv-kurssirivi,.kv-hero .kv-paivays{font-family:var(--kv-luvut);color:var(--kv-harmaa)}.kv-hero .kv-kurssirivi{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:12px 22px;margin-top:14px;font-size:14.5px}.kv-hero .kv-kurssirivi b{color:#fff;font-size:16px}.kv-statit{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin:26px 0 0}.kv-statit li{background:var(--kv-sivu);border:1px solid var(--kv-viiva);border-radius:12px;padding:18px;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:.25s;min-width:0}.kv-statit li:hover{transform:translateY(-4px);border-color:var(--kv-jarvi)}.kv-statit .kv-v{display:block;font-family:var(--kv-luvut);font-size:clamp(19px,2.2vw,26px);font-weight:800;margin:4px 0;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kv-statit .kv-v.kv-g{color:var(--kv-nousu)}.kv-statit .kv-v.kv-r{color:var(--kv-lasku)}.kv-statit .kv-v.kv-y{color:var(--kv-jarvi)}.kv-statit .kv-l{font-size:12.5px;text-transform:uppercase;color:var(--kv-harmaa);letter-spacing:.5px}.kv-cta-rivi{text-align:center}.kv-cta{display:inline-block;padding:15px 42px;background:var(--kv-jarvi);color:#0f0f14;border-radius:30px;font-weight:700;margin:26px 0 4px;transition:.25s}.kv-cta:hover{transform:scale(1.05);filter:brightness(1.1)}.kv-alaviite{font-size:12.5px;color:var(--kv-harmaa)}.kv-alaviite a:hover{color:var(--kv-kupari)}@media (max-width:860px){.kv-sae{padding:14px 12px}.kv-nimio-sisus{flex-wrap:wrap;gap:8px 14px}.kv-hero{padding:30px 0 4px}}