:root{--color-bg-app: #f4f8f6;--color-surface: #ffffff;--color-surface-soft: #eef5f1;--color-surface-soft-2: #dfe9e4;--color-border: #c8d7cf;--color-border-strong: #a8bdb3;--color-text: #193530;--color-text-muted: #4e6b61;--color-brand: #153b37;--color-brand-strong: #0f2f2b;--color-brand-soft: #e6f0ec;--color-accent: #f07b3a;--color-accent-soft: #fde9de;--color-focus-ring: #2f8f7f;--color-focus-ring-shadow: rgba(21, 59, 55, .26)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;box-shadow:0 0 0 3px var(--color-focus-ring-shadow)}.app{max-width:1400px;margin:auto;padding:20px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--color-bg-app);color:var(--color-text)}.asetukset-lv-paneeli{margin-bottom:12px;padding:12px 14px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface-soft);font-size:14px}.asetukset-lv-paneeli--esikatselu{background:#fff8e6;border-color:#f0c14b}.asetukset-lv-paneeli__otsikko{margin:0 0 10px;font-size:15px;font-weight:700;color:var(--color-text)}.asetukset-lv-rivi{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:10px}.asetukset-lv-rivi:first-of-type{margin-top:0}.asetukset-lv-rivi__label{font-weight:600;font-size:13px;color:var(--color-text-muted)}.asetukset-lv-rivi input,.asetukset-lv-rivi select{width:100%;max-width:22rem;padding:6px 8px;font-size:14px;border-radius:6px;border:1px solid var(--color-border)}.asetukset-lv-rivi button{margin-top:2px}.asetukset-lv-tila{margin:10px 0 0;padding:0;font-size:13px;line-height:1.45;color:var(--color-text-muted)}.asetukset-lv-viesti{margin:8px 0 0;font-size:13px;color:var(--color-text)}.asetukset-kayttajat-paneeli{margin-top:12px}.asetukset-kayttaja-tuonti{margin:12px 0 16px;padding:10px 14px;border:1px dashed var(--color-border);border-radius:8px;background:var(--color-surface-soft);max-width:720px}.asetukset-kayttaja-tuonti__summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--color-text)}.asetukset-kayttaja-tuonti[open]{padding-bottom:14px}.asetukset-kayttajat-kutsu-rivi{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}.asetukset-kayttaja-tuonti__rivi{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0}.asetukset-kayttaja-tuonti__tiedosto{font-size:13px;color:var(--color-text-muted)}.asetukset-kayttaja-tuonti__checkbox{display:block;margin:6px 0;font-size:14px;cursor:pointer}.asetukset-kayttaja-tuonti__yhteenveto{margin-top:12px}.asetukset-kayttaja-tuonti__virheet ul{margin:8px 0 0;padding-left:1.2rem;font-size:13px}.asetukset-kk-intro{max-width:720px;line-height:1.5;color:var(--color-text-muted);font-size:14px;margin:0 0 12px}.asetukset-kayttajat-wrap{width:100%;max-width:100%;margin-top:10px;overflow-x:auto;border-radius:8px;border:1px solid var(--color-border);background:var(--color-surface)}.asetukset-kayttajat-taulu{width:100%;min-width:560px;border-collapse:collapse;table-layout:fixed;font-size:14px;border:none}.asetukset-kayttajat-taulu--roolit{min-width:880px;table-layout:auto}.asetukset-kayttajat-taulu--roolit thead th:nth-child(1),.asetukset-kayttajat-taulu--roolit tbody td:nth-child(1){min-width:7.5rem;width:11%}.asetukset-kayttajat-taulu--roolit thead th:nth-child(2),.asetukset-kayttajat-taulu--roolit tbody td:nth-child(2){min-width:14rem;width:28%}.asetukset-kayttajat-taulu--roolit thead th:nth-child(3),.asetukset-kayttajat-taulu--roolit tbody td:nth-child(3){min-width:5.5rem;white-space:nowrap}.asetukset-kayttajat-taulu--roolit thead th:nth-child(4),.asetukset-kayttajat-taulu--roolit tbody td:nth-child(4){min-width:9.5rem}.asetukset-kayttajat-taulu--roolit thead th:nth-child(5),.asetukset-kayttajat-taulu--roolit tbody td:nth-child(5){min-width:10.5rem;width:12rem}.asetukset-kayttajat-opetunnus-rivi{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.asetukset-kayttajat-opetunnus-input{flex:1 1 72px;min-width:72px;max-width:140px;padding:6px 8px;font-size:13px;font-family:inherit;border:1px solid var(--color-border);border-radius:4px}.asetukset-kayttajat-opetunnus-tallenna{padding:5px 10px;font-size:12px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface-soft);cursor:pointer}.asetukset-kayttajat-opetunnus-tallenna:hover:not(:disabled){background:var(--color-border)}.asetukset-kayttajat-opetunnus-tallenna:disabled{opacity:.45;cursor:not-allowed}.oma-opetunnus--compact{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-right:8px}.oma-opetunnus__label{font-size:12px;color:var(--color-text-muted)}.oma-opetunnus__input{width:88px;padding:4px 6px;font-size:13px;border:1px solid var(--color-border);border-radius:4px}.oma-opetunnus__btn{padding:4px 8px;font-size:12px;border-radius:4px;border:1px solid var(--color-border);cursor:pointer}.oma-opetunnus__virhe{font-size:11px;color:#c62828;width:100%}.asetukset-kayttajat-taulu thead th{text-align:left;padding:10px 12px;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);background:var(--color-surface-soft);border-bottom:1px solid var(--color-border);vertical-align:bottom}.asetukset-kayttajat-taulu thead th:nth-child(1){width:22%}.asetukset-kayttajat-taulu thead th:nth-child(2){width:36%}.asetukset-kayttajat-taulu thead th:nth-child(3){width:18%}.asetukset-kayttajat-taulu thead th:nth-child(4){width:24%}.asetukset-kayttajat-taulu--5cols{min-width:680px}.asetukset-kayttajat-taulu--5cols thead th:nth-child(1){width:18%}.asetukset-kayttajat-taulu--5cols thead th:nth-child(2){width:28%}.asetukset-kayttajat-taulu--5cols thead th:nth-child(3){width:16%}.asetukset-kayttajat-taulu--5cols thead th:nth-child(4){width:14%}.asetukset-kayttajat-taulu--5cols thead th:nth-child(5){width:24%}.asetukset-kayttajat-taulu--6cols{min-width:760px}.asetukset-kayttajat-taulu--6cols thead th:nth-child(1){width:16%}.asetukset-kayttajat-taulu--6cols thead th:nth-child(2){width:26%}.asetukset-kayttajat-taulu--6cols thead th:nth-child(3){width:10%}.asetukset-kayttajat-taulu--6cols thead th:nth-child(4){width:14%}.asetukset-kayttajat-taulu--6cols thead th:nth-child(5){width:12%}.asetukset-kayttajat-taulu--6cols thead th:nth-child(6){width:22%}.asetukset-kayttajat-taulu .asetukset-kayttajat-meta{font-size:13px;color:var(--color-text-muted)}.asetukset-kayttajat-taulu tbody td{padding:10px 12px;vertical-align:middle;border-bottom:1px solid var(--color-border);word-wrap:break-word;overflow-wrap:anywhere;color:var(--color-text);line-height:1.4}.asetukset-kayttajat-taulu tbody tr:last-child td{border-bottom:none}.asetukset-kayttajat-taulu tbody tr:nth-child(2n) td{background:#eef5f173}.asetukset-kayttajat-taulu tbody tr:hover td{background:var(--color-brand-soft)}.asetukset-kayttajat-taulu .asetukset-kayttajat-nimi{font-weight:600}.asetukset-kayttajat-taulu .asetukset-kayttajat-sina{font-weight:500;color:var(--color-text-muted);white-space:nowrap}.asetukset-kayttajat-taulu .asetukset-kayttajat-email{font-size:13px;color:var(--color-text-muted);word-break:break-all;overflow-wrap:anywhere;line-height:1.35}.asetukset-kayttajat-taulu .asetukset-kayttajat-rooli{font-size:13px}.asetukset-kayttajat-taulu .asetukset-kayttajat-toiminnot{vertical-align:top}.asetukset-kayttajat-toiminnot-pino{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:9.5rem}.asetukset-kayttajat-toiminnot-pino button{width:100%;box-sizing:border-box;padding:6px 10px;font-size:12px;line-height:1.25;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-weight:500;white-space:normal;text-align:center}.asetukset-kayttajat-toiminnot-pino button:hover:not(:disabled){background:var(--color-brand-soft);border-color:var(--color-border-strong)}.asetukset-kayttajat-toiminnot-pino button:disabled{opacity:.55;cursor:not-allowed}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.tabs-ylarivi{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}.tabs-ylarivi .tabs{margin-bottom:0}.split-toggle-button{display:inline-flex;align-items:center;gap:8px}.split-toggle-button:before{content:"";width:20px;height:20px;flex:0 0 20px;background:center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231e293b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cline x1='12' y1='4' x2='12' y2='20'/%3E%3C/svg%3E")}.split-toggle-button.active:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cline x1='12' y1='4' x2='12' y2='20'/%3E%3C/svg%3E")}.split-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 18px}.split-pane{min-width:0;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);box-shadow:0 1px 3px #0f172a0f;overflow:hidden}.split-pane-tyokalut{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--color-border);background:var(--color-surface-soft)}.split-pane-tyokalut label{font-size:.88rem;color:var(--color-text-muted);font-weight:600}.split-pane-tyokalut select{min-width:180px;max-width:100%}.split-pane-vaihda{margin-left:auto;padding:4px 10px;min-height:32px;font-size:1rem;line-height:1}.split-pane-sisalto{padding:12px}.split-pane .split-compact-view .panel{max-width:none;padding:12px;gap:12px}.split-pane .split-compact-view .tyomaara-ylapaneeli{flex-direction:column;align-items:stretch;gap:10px}.split-pane .split-compact-view .tyomaara-ylapaneeli>*{width:100%;max-width:none}.split-pane .split-compact-view .kurssi-lisasuodatin-rivi{gap:10px 12px}.split-pane .split-compact-view .kurssi-valittu-aine-select{min-width:0;width:100%}.split-pane .split-compact-view .kurssi-tyhjenna-rajaukset{margin-left:0}.split-pane .split-compact-view h2{margin-top:14px}.tab{padding:8px 14px;border:1px solid var(--color-border);background:var(--color-surface-soft);cursor:pointer;border-radius:6px;font-size:14px;color:var(--color-text);font-weight:500;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.tab:hover{background:var(--color-brand-soft);border-color:#9ec5ff}.tab.active{background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.tab.tab-admin{background:#f6ede6;border-color:#dfc7b2;color:#7a4a28}.tab.tab-admin:hover{background:#f3e1d2;border-color:#d3ae90}.tab.active.tab-admin{background:#c66b33;border-color:#c66b33;color:#fff}.panel{border:1px solid var(--color-border);max-width:800px;padding:20px;border-radius:8px;display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap;background:var(--color-surface);box-shadow:0 2px 8px #0f172a0a}.kurssi-haku-panel{max-width:960px}.kurssi-haku-osio{margin-bottom:0}.kurssi-haku-otsikko-rivi{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.kurssi-haku-otsikko{margin-bottom:0}.kurssi-taulukot-otsikko-rivi{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:10px}.kurssi-lukitus-huomio{margin:0 0 12px;padding:10px 12px;border-radius:8px;border:1px solid #d1a731;background:#fff7df;color:#6b4f00}.kurssi-suodattimet-toggle{font-size:14px;font-weight:600;color:var(--color-brand-strong);border-color:#9ec5ff;background:var(--color-brand-soft)}.kurssi-suodattimet-toggle:hover{border-color:var(--color-brand);background:#c4ddfd}@media (min-width: 769px){.kurssi-suodattimet-toggle{display:none}.kurssi-haku-panel-wrap .kurssi-haku-panel{display:flex!important}}@media (max-width: 768px){.kurssi-haku-otsikko-rivi{margin-bottom:10px}.kurssi-haku-otsikko{margin-top:0;font-size:1.2rem;line-height:1.3}.kurssi-haku-panel-wrap:not(.kurssi-haku-panel-wrap--open) .kurssi-haku-panel{display:none!important}h2.kurssi-taulukot-otsikko{margin-top:14px;margin-bottom:8px}}.kurssi-lisasuodattimet{flex-basis:100%;display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid var(--color-border);margin-top:4px}.kurssi-lisasuodatin-rivi{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}.kurssi-lisasuodatin-rivi--aine{gap:12px}.kurssi-lisasuodatin-otsikko{font-weight:600;color:var(--color-text)}.kurssi-lisasuodatin-vihje{font-weight:400;color:var(--color-text-muted);font-size:.92em}.kurssi-lisasuodatin-label{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.kurssi-lisasuodatin-aine-label{font-weight:600;color:var(--color-text)}.kurssi-valittu-aine-select{min-width:220px;max-width:100%;padding:6px 10px;border-radius:6px;border:1px solid var(--color-border-strong);font-size:14px;background:var(--color-surface)}.kurssi-tyhjenna-rajaukset{margin-left:auto}.kurssi-lisasuodatin-rivi--aine-toinen{padding-left:4px}.card{border:1px solid var(--color-border);padding:20px;border-radius:8px;background:var(--color-surface)}button{padding:6px 12px;border-radius:6px;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease}button:hover{background:var(--color-surface-soft);border-color:var(--color-border-strong)}button.primary{background:var(--color-brand);color:#fff;border-color:var(--color-brand)}h1{margin-bottom:10px}h2{margin-top:30px}h3{color:var(--color-text)}.schedule-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;margin-bottom:1.25rem;border-radius:8px;border:1px solid var(--color-border);box-shadow:0 1px 3px #0f172a0f}.schedule-table-scroll .schedule-table{min-width:640px}.schedule-table{width:100%;border-collapse:collapse;table-layout:fixed}.schedule-table th{background:var(--color-brand);color:#fff;padding:8px;font-weight:600;text-align:center}.schedule-table td{border:1px solid var(--color-border);padding:6px 8px}.schedule-col-palkki{width:55px}.schedule-col-ryhma{width:160px}.schedule-col-opettaja{width:210px}.schedule-col-period{width:64px;min-width:64px;text-align:center}.schedule-col-actions{width:90px;min-width:90px}.schedule-table tr:nth-child(2n){background:var(--color-surface-soft)}.schedule-table tr:hover{background:var(--color-brand-soft)}.schedule-table tbody tr:first-child td{border-top:2px solid var(--color-brand)}.schedule-table thead th{position:sticky;top:0;background:var(--color-brand);color:#fff;z-index:2;border-bottom:3px solid var(--color-brand-strong)}.palkki-cell{background:#e5eee9;font-weight:700;font-size:18px;text-align:center;vertical-align:middle;border-right:3px solid var(--color-brand)}.palkki-even td{background:#fff}.palkki-odd td{background:#f1f6f3}.palkki-even .palkki-cell{background:#e5eee9}.palkki-odd .palkki-cell{background:#d8e5de}.palkki-faded{color:#999;font-size:14px;font-weight:500}.period{text-align:center;font-weight:600}.period.active{color:var(--color-text);font-weight:600;border-radius:4px;border:1px solid transparent;box-shadow:inset 0 0 0 1px #ffffff73}.period.active.period-tunnit-1{background:#fff6f0;border-color:#f6dac8}.period.active.period-tunnit-2{background:#feeedf;border-color:#f1ccb2}.period.active.period-tunnit-3{background:#fde5cf;border-color:#ebbd9e}.period.active.period-tunnit-4{background:#fcddbf;border-color:#e5ae89}.period.active.period-tunnit-5{background:#fbd4af;border-color:#df9f74}.period.active.period-tunnit-6{background:#f9cc9f;border-color:#d89061}.period.active.period-tunnit-7{background:#f7c490;border-color:#d2814f}.period.active.period-tunnit-8{background:#f5bc81;border-color:#cc733e}.period.active.period-tunnit-other{background:var(--color-accent-soft);border-color:var(--color-accent)}.teacher-cell{overflow:hidden}.teacher-names{margin-bottom:4px}.teacher-controls{display:flex;flex-direction:column;gap:4px}.teacher-buttons{display:flex;gap:6px}.teacher-buttons button{padding:3px 8px;font-size:13px}.teacher-input{width:120px;padding:4px;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);color:var(--color-text)}.teacher-label{display:inline-flex;align-items:center;gap:6px;background:#eef2f6;border:1px solid #d0d7de;border-radius:14px;padding:2px 8px;font-size:13px;font-weight:600}.teacher-cell button{margin-left:3px}.teacher-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.teacher-list--ryppaat{align-items:flex-start}.teacher-bundle{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 4px;padding:4px 8px;border-radius:8px;border:1px solid #c8d4e0;background:#f4f7fb;font-size:13px;font-weight:600;cursor:pointer;margin:0 4px 4px 0;vertical-align:middle}.teacher-bundle:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.teacher-bundle--valittu{border-color:var(--color-brand);background:var(--color-brand-soft);box-shadow:inset 0 0 0 1px #153b3726}.teacher-bundle--vain-nakyma{cursor:default}.teacher-bundle__jasen{display:inline-flex;align-items:center;gap:2px}.teacher-bundle__koodi{letter-spacing:.02em}.teacher-bundle__poista{border:none;background:transparent;cursor:pointer;font-size:14px;line-height:1;color:#7a8794;padding:0 1px;margin-left:1px}.teacher-bundle__poista:hover{color:#c62828}.opettaja-ryppaat-kentta{min-width:0}.opettaja-ryppaat-readonly{font-size:13px;font-weight:600;color:var(--color-text);line-height:1.35;word-break:break-word}.remove-teacher{border:none;background:none;cursor:pointer;font-size:14px;line-height:1;color:#777;padding:0}.remove-teacher:hover{color:#d11a2a}.app-topbar{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 16px;padding:12px 18px;margin:-20px -20px 18px;background:linear-gradient(180deg,#1f8f6c,#153b37 58%);border-bottom:1px solid rgba(0,0,0,.12);box-shadow:0 3px 14px #0f2f2b2e;position:sticky;top:0;z-index:40}.app-topbar__brand{flex:0 0 auto;display:flex;align-items:center;padding-top:4px}.app-topbar__logo{height:38px;width:auto;display:block}.app-topbar__middle{flex:1 1 280px;min-width:0}.app-topbar__tabs-row.tabs-ylarivi{margin-bottom:0;align-items:center}.app-topbar .tabs{margin-bottom:0}.app-topbar__right{flex:0 1 auto;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:flex-end;gap:10px 14px;margin-left:auto;max-width:100%}.app-topbar__superadmin-koulu{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#e6f0ecf2}.app-topbar__superadmin-label{font-weight:600;white-space:nowrap}.app-topbar__superadmin-koulu select{min-width:140px;max-width:min(240px,100%);padding:5px 8px;font-size:13px;border-radius:6px;border:1px solid rgba(255,255,255,.38);background:#ffffff1f;color:#f4fffb}.app-topbar__superadmin-koulu select option{color:#153b37;background:#fff}.app-topbar__meta{display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px 22px;font-size:13px;line-height:1.35}.app-topbar__meta-stack{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}.app-topbar__meta-stack--user{max-width:min(260px,44vw)}.app-topbar__meta-stack--koulu{max-width:min(280px,46vw)}.app-topbar__meta-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-left:auto}.app-topbar__meta-strong{font-weight:700;color:#fff}.app-topbar__meta-dim{color:#e6f0eceb;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-topbar__meta-dim--strong{font-weight:600;color:#fffffff5}.app-topbar__rooli{padding:2px 10px;border-radius:999px;background:#00000038;color:#e8fff8;font-weight:600;font-size:12px;white-space:nowrap}.app-topbar__logout{padding:6px 12px;font-size:13px;font-weight:600;border-radius:6px;cursor:pointer;border:1px solid rgba(255,255,255,.45);background:#ffffff24;color:#fff}.app-topbar__logout:hover{background:#ffffff3d}.app-topbar__aktivointi{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 8px;background:#ffffff1f;border:1px solid rgba(255,255,255,.28);border-radius:6px;font-size:12px}.app-topbar__aktivointi .header-aktivointi__label{color:#e6f0ec}.app-topbar__aktivointi .header-aktivointi__code{color:#fff}.app-topbar .tab{border-color:#ffffff52;background:#ffffff1a;color:#f0fdf9}.app-topbar .tab:hover{background:#ffffff2e;border-color:#ffffff73}.app-topbar .tab.active{background:#fff;color:var(--color-brand);border-color:#fff}.app-topbar .tab.tab-admin{background:#f6ede62e;border-color:#ffc8a073;color:#ffe8d9}.app-topbar .tab.tab-admin:hover{background:#f6ede647}.app-topbar .tab.active.tab-admin{background:#c66b33;border-color:#c66b33;color:#fff}.app-topbar .split-toggle-button:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e6f0ec' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cline x1='12' y1='4' x2='12' y2='20'/%3E%3C/svg%3E")}.app-topbar .split-toggle-button.active:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cline x1='12' y1='4' x2='12' y2='20'/%3E%3C/svg%3E")}@media (max-width: 900px){.app-topbar__right{margin-left:0;width:100%;justify-content:flex-start}.app-topbar__meta-actions{margin-left:0;flex-direction:row;flex-wrap:wrap;align-items:center}.app-topbar__meta-stack--user,.app-topbar__meta-stack--koulu{max-width:100%}}.header--minimal{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}.header{display:flex;align-items:center;gap:14px;margin-bottom:10px;flex-wrap:wrap}.header-otsikko{margin:0;flex:1;min-width:min(100%,12rem);font-size:clamp(1.05rem,2.4vw,1.65rem);line-height:1.25;word-break:break-word}.header-otsikko-wrap{flex:1;min-width:min(100%,12rem)}.header-koulu-nimi{margin-top:4px;color:var(--color-text-muted);font-size:.95rem;font-weight:600}.luo-lukuvuosi-paneeli>summary{-webkit-user-select:none;user-select:none}.luo-lukuvuosi-paneeli[open]>summary{border-bottom:1px solid #e8e8e8}.header-aktivointi{margin-left:auto;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 10px;background:var(--color-brand-soft);border:1px solid #b7d4c8;border-radius:6px;font-size:13px}.header-aktivointi__label{color:var(--color-brand-strong);font-weight:600}.header-aktivointi__code{font-size:1.05rem;font-weight:700;letter-spacing:.06em;color:var(--color-brand-strong)}.logo{height:40px}.koulu-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.koulu-modal{background:#fff;border-radius:10px;padding:20px 24px;max-width:420px;width:100%;box-shadow:0 8px 32px #00000026}.koulu-modal input{display:block;width:100%;margin-top:6px;padding:8px 10px;font-size:1rem}@media (max-width: 768px){.schedule-table-scroll .teacher-controls{width:100%;min-width:0}.schedule-table-scroll .teacher-input{width:100%;max-width:100%;box-sizing:border-box;font-size:15px}}.tyomaara-ylapaneeli{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;margin-bottom:16px}.tyomaara-ylapaneeli>*{flex:1 1 280px;min-width:0;max-width:100%}@media (max-width: 768px){.tyomaara-ylapaneeli{flex-direction:column;gap:14px}.tyomaara-ylapaneeli>*{flex:0 0 auto;width:100%;max-width:100%}}.tehtava-form-kortti,.tyomaara-filter-kortti{border:1px solid var(--color-border);padding:16px 18px;border-radius:8px;background:var(--color-surface);box-shadow:0 2px 8px #0f172a0a;width:100%;max-width:400px;box-sizing:border-box}.tehtava-form-kortti--taitettu{border:none;box-shadow:none;padding:0;max-width:none}.tyomaara-tehtava-lomake-details{margin:0;border:1px solid var(--color-border);border-radius:8px;padding:0 12px 12px;background:var(--color-surface-soft);width:100%;max-width:400px;box-sizing:border-box}.tyomaara-tehtava-lomake-summary{cursor:pointer;font-weight:600;font-size:1rem;padding:12px 4px;color:var(--color-brand-strong)}.tyomaara-tehtava-lomake-sisalto{padding:0 4px 4px}@media (min-width: 769px){.tehtava-form-kortti,.tyomaara-filter-kortti{width:auto}}.tehtava-form-otsikko,.tyomaara-filter-otsikko{margin:0 0 12px;font-size:1.1rem;color:var(--color-text)}.tehtava-form{display:flex;flex-direction:column;gap:8px}.tehtava-form-rivi{display:flex;flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap}.tehtava-form-label{flex:0 0 120px;min-width:80px;font-weight:600;font-size:14px;color:var(--color-text)}.tehtava-form-input{flex:1 1 120px;min-width:0;padding:6px 10px;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);color:var(--color-text);font-size:15px;box-sizing:border-box}@media (max-width: 768px){.tehtava-form-rivi{flex-direction:column;align-items:stretch}.tehtava-form-label{flex:none;width:100%}.tehtava-form-input{flex:none;width:100%;min-height:0}}.tehtava-form-submit-wrap{text-align:center;margin-top:6px}.tyomaara-filter-vihje{margin:0 0 10px;font-size:14px;color:var(--color-text-muted)}.tyomaara-filter-input{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--color-border-strong);border-radius:6px;font-size:15px;background:var(--color-surface);color:var(--color-text)}.tyomaara-ohje-panel{margin:12px 0 20px;border:1px solid var(--color-border);border-radius:8px;padding:12px 12px 14px;background:var(--color-surface-soft)}.tyomaara-ohje-panel--ensin{margin-top:0;margin-bottom:16px}.tyomaara-ohje-otsikko{margin:0 0 10px;font-size:1rem;font-weight:600;color:var(--color-brand-strong);line-height:1.3}.tyomaara-ohje-sisalto{padding:0 4px 4px;font-size:15px;line-height:1.45;color:var(--color-text)}.tyomaara-ohje-sisalto p{margin:0 0 10px}.tyomaara-ohje-sisalto p:last-child{margin-bottom:0}.tyomaara-opettajat-otsikko{margin-top:12px}.tyomaara-taulukko-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;margin-bottom:1.25rem;border-radius:8px;border:1px solid var(--color-border);box-shadow:0 1px 3px #0f172a0f}.tyomaara-taulukko-wrap .tyomaara-taulukko{min-width:520px}.tyomaara-taulukko{width:100%;table-layout:fixed;border-collapse:collapse;background:var(--color-surface)}.tyomaara-taulukko th,.tyomaara-taulukko td{border:1px solid var(--color-border);padding:8px 10px;text-align:left;vertical-align:top}.tyomaara-th--opettaja,.tyomaara-solu--opettaja{width:11%;min-width:5.5rem;max-width:12rem}.tyomaara-th--tehtava,.tyomaara-solu--tehtava{min-width:0;overflow-wrap:anywhere;word-break:break-word}.tyomaara-th--maara,.tyomaara-solu--maara{width:8.5rem;white-space:nowrap;text-align:right}.tyomaara-solu--maara-yhteensa{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.tyomaara-th--toiminnot,.tyomaara-solu--toiminnot{width:12.5rem;min-width:10rem}.tyomaara-taulukko>thead>tr>th{position:sticky;top:0;z-index:1;background:var(--color-brand);color:#fff;font-weight:600;text-align:center;border-bottom:3px solid var(--color-brand-strong)}.tyomaara-taulukko tbody tr:nth-child(2n){background:var(--color-surface-soft)}.tyomaara-taulukko tbody tr:hover{background:var(--color-brand-soft)}.tyomaara-toiminnot{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}@media (max-width: 768px){.tyomaara-toiminnot{flex-direction:column;align-items:stretch;gap:6px}}.tyomaara-toiminnot button{font-size:13px}.tyomaara-purku-toggle{display:inline;margin:0;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.tyomaara-purku-toggle:hover{color:var(--color-brand-strong, #1d4ed8)}.tyomaara-purku-toggle:focus-visible{outline:2px solid var(--color-brand, #2563eb);outline-offset:2px}.tyomaara-purku-solu{padding:6px 10px 12px;background:var(--color-surface-soft);vertical-align:top}.tyomaara-purku-tyhja{margin:0;font-size:.9rem;font-style:italic;color:var(--color-muted, #64748b)}.tyomaara-purku-taulu{width:100%;border-collapse:collapse;font-size:.875rem;table-layout:fixed}.tyomaara-purku-taulu th,.tyomaara-purku-taulu td{border:1px solid var(--color-border);padding:6px 8px;text-align:left}.tyomaara-purku-taulu thead th{background:var(--color-surface-soft);color:var(--color-text);font-weight:600}.tyomaara-purku-col-ryhma{width:52%;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tyomaara-purku-col-opettajat{width:8%;max-width:5rem;min-width:0;overflow-wrap:anywhere}.tyomaara-purku-col-vvt{width:20%;min-width:5.5rem;padding-left:6px!important;padding-right:6px!important;font-size:.8125rem;font-variant-numeric:tabular-nums}.tyomaara-purku-taulu thead th.tyomaara-purku-col-vvt{text-align:right;white-space:normal;line-height:1.25;-webkit-hyphens:manual;hyphens:manual}.tyomaara-purku-taulu tbody .tyomaara-purku-num{text-align:right;white-space:nowrap}.tyomaara-purku-taulu tbody.tyomaara-purku-slot tr:first-child td{border-top-width:2px;border-top-color:var(--color-border-strong)}.tyomaara-purku-taulu tbody.tyomaara-purku-slot tr:last-child td{border-bottom-width:2px;border-bottom-color:var(--color-border-strong)}.tyomaara-purku-taulu tbody.tyomaara-purku-slot tr td:first-child{border-left-width:2px;border-left-color:var(--color-border-strong)}.tyomaara-purku-taulu tbody.tyomaara-purku-slot tr td:last-child{border-right-width:2px;border-right-color:var(--color-border-strong)}.tyomaara-purku-vvt-input{box-sizing:border-box;width:100%;max-width:100%;min-width:0;margin:0;padding:2px 4px;border:1px solid var(--color-border-strong);border-radius:4px;font:inherit;font-size:.8125rem;font-variant-numeric:tabular-nums;text-align:right;background:var(--color-surface);color:var(--color-text)}.tyomaara-purku-vvt-input:focus{outline:2px solid var(--color-focus-ring);outline-offset:1px;border-color:var(--color-brand)}.tyomaara-kommentit-solu{background:var(--color-surface-soft)}.tyomaara-kommentit{display:flex;flex-direction:column;gap:8px}.tyomaara-kommentit-otsikko{font-weight:700}.tyomaara-kommentit-tyhja{margin:0;font-style:italic;color:var(--color-text-muted)}.tyomaara-kommentit-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.tyomaara-kommentti-item{border:1px solid var(--color-border);border-radius:6px;padding:8px 10px;background:var(--color-surface);display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.tyomaara-kommentti-meta{font-size:.8rem;color:var(--color-text-muted)}.tyomaara-kommentti-teksti{white-space:pre-wrap;flex:1 1 20rem;min-width:12rem}.tyomaara-kommentti-poista{margin-top:2px;font-size:.85rem}.tyomaara-kommentti-form,.tyomaara-kommentti-muokkaus{display:flex;flex-wrap:wrap;gap:8px}.tyomaara-kommentti-toiminnot{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}.tyomaara-kommentti-date{min-width:10rem}.tyomaara-kommentti-input{flex:1 1 18rem;min-width:12rem;padding:6px 8px;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);color:var(--color-text)}.tyomaara-nappi-teksti--lyhyt{display:none}@media (max-width: 768px){.tyomaara-nappi-teksti--pitka{display:none!important}.tyomaara-nappi-teksti--lyhyt{display:inline!important}}.suunnittelu-aste-rivi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:12px}.suunnittelu-filtteri-label{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;background:var(--color-surface-soft);cursor:pointer;min-height:40px;box-sizing:border-box;border:1px solid transparent;transition:background-color .15s ease,border-color .15s ease}.suunnittelu-filtteri-label:hover{border-color:var(--color-border)}.suunnittelu-filtteri-label--valittu{background:var(--color-brand-soft);border-color:#9ec5ff}@media (max-width: 768px){.suunnittelu-aste-rivi{grid-template-columns:minmax(0,1fr);gap:10px}.suunnittelu-filtteri-label{min-height:44px;padding:10px 12px;gap:10px;touch-action:manipulation}}.opettaja-yhteenveto-tyokalut,.luokka-yhteenveto-tyokalut,.aine-yhteenveto-tyokalut{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:8px}.opettaja-yhteenveto-haku-ryhma,.luokka-yhteenveto-haku-ryhma,.aine-yhteenveto-haku-ryhma{flex:1 1 220px;display:flex;flex-direction:column;gap:6px}.opettaja-yhteenveto-haku-ryhma label,.luokka-yhteenveto-haku-ryhma label,.aine-yhteenveto-haku-ryhma label{font-size:.88rem;font-weight:600;color:var(--color-text)}.opettaja-yhteenveto-haku-kentta,.luokka-yhteenveto-haku-kentta,.aine-yhteenveto-haku-kentta{width:100%;max-width:400px;padding:8px 10px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:1rem;box-sizing:border-box}.opettaja-yhteenveto-haku-kentta::placeholder,.luokka-yhteenveto-haku-kentta::placeholder,.aine-yhteenveto-haku-kentta::placeholder{color:var(--color-text-muted)}.opettaja-yhteenveto-napit,.luokka-yhteenveto-napit,.aine-yhteenveto-napit{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.opettaja-yhteenveto-tilanne,.luokka-yhteenveto-tilanne,.aine-yhteenveto-tilanne{font-size:.9rem;color:var(--color-text-muted);margin:0 0 10px;line-height:1.45}.opettaja-yhteenveto-valitut,.luokka-yhteenveto-valitut,.aine-yhteenveto-valitut{margin:0 0 12px;padding:10px 12px;border-radius:8px;border:1px solid var(--color-border);background:var(--color-surface-soft)}.opettaja-yhteenveto-valitut-otsikko,.luokka-yhteenveto-valitut-otsikko,.aine-yhteenveto-valitut-otsikko{font-size:.78rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:8px}.opettaja-yhteenveto-valitut-sirut,.luokka-yhteenveto-valitut-sirut,.aine-yhteenveto-valitut-sirut{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.opettaja-yhteenveto-siru,.luokka-yhteenveto-siru,.aine-yhteenveto-siru{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:4px 6px 4px 10px;border-radius:999px;background:var(--color-brand-soft);border:1px solid #9ec5ff;font-size:.88rem;color:var(--color-text);box-sizing:border-box}.opettaja-yhteenveto-siru__nimi,.luokka-yhteenveto-siru__nimi,.aine-yhteenveto-siru__nimi{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(280px,70vw)}.opettaja-yhteenveto-siru__poista,.luokka-yhteenveto-siru__poista,.aine-yhteenveto-siru__poista{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin:0;padding:0;border:none;border-radius:50%;background:transparent;color:var(--color-text-muted);font-size:1.15rem;line-height:1;cursor:pointer;flex-shrink:0;transition:background-color .15s ease,color .15s ease}.opettaja-yhteenveto-siru__poista:hover,.luokka-yhteenveto-siru__poista:hover,.aine-yhteenveto-siru__poista:hover{background:#2563eb1f;color:var(--color-text)}@media (max-width: 768px){.opettaja-yhteenveto-siru__poista,.luokka-yhteenveto-siru__poista,.aine-yhteenveto-siru__poista{width:36px;height:36px;min-width:36px;min-height:36px;touch-action:manipulation}}.opettaja-yhteenveto-filtterit-scroll,.luokka-yhteenveto-filtterit-scroll,.aine-yhteenveto-filtterit-scroll{border-radius:8px;border:1px solid var(--color-border);box-shadow:0 1px 3px #0f172a0f;overflow-y:auto;max-height:min(50vh,440px);margin-bottom:1rem;-webkit-overflow-scrolling:touch;background:var(--color-surface)}.opettaja-yhteenveto-filtterit-scroll .opettaja-yhteenveto-filtterit,.luokka-yhteenveto-filtterit-scroll .luokka-yhteenveto-filtterit,.aine-yhteenveto-filtterit-scroll .aine-yhteenveto-filtterit{margin-bottom:0;padding:10px}.opettaja-yhteenveto-filtterit,.luokka-yhteenveto-filtterit,.aine-yhteenveto-filtterit{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.aine-yhteenveto-filtterit{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.suunnittelu-filtteri-label{align-items:flex-start;line-height:1.3}.suunnittelu-filtteri-label input[type=checkbox]{margin-top:2px;flex-shrink:0}@media (max-width: 768px){.opettaja-yhteenveto-haku-kentta,.luokka-yhteenveto-haku-kentta,.aine-yhteenveto-haku-kentta{max-width:none;min-height:44px;font-size:16px}.opettaja-yhteenveto-filtterit,.luokka-yhteenveto-filtterit,.aine-yhteenveto-filtterit{grid-template-columns:minmax(0,1fr);gap:10px}.opettaja-yhteenveto-napit button,.luokka-yhteenveto-napit button,.aine-yhteenveto-napit button{min-height:44px;padding:10px 14px;touch-action:manipulation}}.opettaja-yhteenveto-tyhja,.luokka-yhteenveto-tyhja,.aine-yhteenveto-tyhja{padding:1rem 1.1rem;margin:0 0 1.25rem;border-radius:8px;border:1px dashed var(--color-border-strong);background:var(--color-surface-soft);color:var(--color-text-muted);font-size:.95rem;line-height:1.5}.opettaja-yhteenveto-ei-tuloksia,.luokka-yhteenveto-ei-tuloksia,.aine-yhteenveto-ei-tuloksia{margin:0 0 1rem;font-size:.92rem;color:var(--color-text-muted)}.opettaja-yhteenveto-ei-dataa,.luokka-yhteenveto-ei-dataa,.aine-yhteenveto-ei-dataa{margin:0 0 1rem;padding:.85rem 1rem;border-radius:8px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:.92rem}.opettaja-kortti-osio,.luokka-kortti-osio{margin-bottom:40px}.opettaja-kortti-osio h2,.luokka-kortti-osio h2{margin-top:0;margin-bottom:.65rem;font-size:1.35rem}.opettaja-kortti-vvt{margin-top:10px;font-weight:700;color:var(--color-text)}.opettaja-verkko-laatikko{margin-top:1rem;border-radius:8px;border:1px solid var(--color-border);box-shadow:0 1px 3px #0f172a0f;padding:12px 14px 14px;background:var(--color-surface)}.opettaja-verkko-otsikko{margin:0 0 10px;font-size:1rem;font-weight:600;color:var(--color-text);display:flex;align-items:center;gap:6px}.opettaja-verkko-otsikko:before{content:"";display:inline-block;width:1.1rem;height:1.1rem;background:center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E");flex-shrink:0}.opettaja-verkko-kortit{display:flex;flex-wrap:wrap;gap:10px}.opettaja-verkko-siru{background:#eef2ff;padding:8px 14px;border-radius:8px;font-weight:500;overflow-wrap:anywhere;word-break:break-word}.opettaja-verkko-vvt{margin-top:10px;font-weight:700;color:var(--color-text)}.yhteenveto-periodi-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;margin-bottom:1rem;border-radius:8px;border:1px solid var(--color-border);box-shadow:0 1px 3px #0f172a0f;padding-bottom:2px}.yhteenveto-periodi-taulu{width:100%;min-width:820px;table-layout:fixed;border-collapse:collapse}.yhteenveto-periodi-taulu col.yhteenveto-periodi-col{width:calc(100% / var(--period-columns, 5))}.yhteenveto-periodi-th,.yhteenveto-periodi-yhteensa td{width:calc(100% / var(--period-columns, 5));min-width:164px;box-sizing:border-box}.yhteenveto-periodi-th{padding:8px;border-bottom:2px solid var(--color-text);text-align:left;vertical-align:bottom}.yhteenveto-periodi-solu{width:calc(100% / var(--period-columns, 5));min-width:164px;box-sizing:border-box;vertical-align:top;padding:8px}.yhteenveto-kortti{border-radius:8px;padding:8px;margin-bottom:8px;overflow-wrap:anywhere;word-break:break-word}.yhteenveto-kortti--lukio{box-shadow:0 1px 3px #0000001a}.yhteenveto-kortti--opettaja{background:var(--color-surface-soft-2)}.yhteenveto-kortti--luokka-ryhma{background:var(--color-surface-soft-2);padding:8px 8px 8px 14px;margin-bottom:8px;position:relative}.luokka-kortti-rivi{margin-bottom:6px;padding-bottom:6px;padding-left:10px;border-bottom:2px solid #e5e7eb}.luokka-kortti-rivi:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.yhteenveto-kortti__palkki-nimi{font-size:.95rem;color:#222}.yhteenveto-kortti__opettaja{font-weight:700;font-size:1.05rem;margin-top:4px}.yhteenveto-kortti__tunnit{font-size:.8rem;color:#666;margin-top:2px}.yhteenveto-kortti__luokat{font-size:.75rem;color:#666;margin-bottom:4px}.yhteenveto-kortti__kurssi-nimi{font-size:.95rem;color:#222}.yhteenveto-kortti__opettaja-ylak{font-weight:700;font-size:1.15rem;margin-top:4px}.yhteenveto-kortti__tunnit-ylak{font-size:.75rem;color:#888;margin-top:2px}.yhteenveto-periodi-yhteensa td{font-weight:600;border-top:2px solid #e5e7eb;padding:10px 8px;text-align:center;color:#374151;font-size:.95rem;background:#f9fafb}@media (max-width: 768px){.yhteenveto-periodi-th,.yhteenveto-periodi-solu{padding:5px 6px}.yhteenveto-kortti{padding:6px;margin-bottom:6px}.yhteenveto-kortti__palkki-nimi,.yhteenveto-kortti__kurssi-nimi{font-size:.86rem}.yhteenveto-kortti__opettaja{font-size:.92rem}.yhteenveto-kortti__opettaja-ylak{font-size:.98rem}.yhteenveto-kortti__tunnit{font-size:.72rem}.yhteenveto-kortti__tunnit-ylak{font-size:.7rem}.yhteenveto-kortti__luokat{font-size:.68rem;margin-bottom:3px}.yhteenveto-periodi-yhteensa td{font-size:.85rem;padding:8px 6px}}.login-form-outer{max-width:520px;background:var(--color-surface, #fff);border:1px solid var(--color-border, #d8dee9);border-radius:12px;padding:20px;box-shadow:0 2px 8px #0f172a0a}.login-form-outer .intro{margin-bottom:16px;line-height:1.45;color:var(--color-text-muted, #64748b)}.login-sso-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:48px;margin-bottom:20px}.login-sso-btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 12px;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;color:#fff;min-height:48px;line-height:1.2;text-align:center}.login-sso-btn__main{display:block}.login-sso-btn__hint{display:block;font-size:11px;font-weight:500;opacity:.92}.login-sso-btn--microsoft{background:#334155}.login-sso-btn--microsoft:hover{background:#1e293b}.login-sso-btn--placeholder{background:#64748b;opacity:.65;cursor:not-allowed}.login-sso-btn--placeholder:hover{opacity:.65}.login-field{margin-bottom:14px}.login-field label{display:block;font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--color-text-muted, #64748b);margin-bottom:4px;text-transform:uppercase}.login-field input[type=text],.login-field input[type=email],.login-field input[type=password]{width:100%;max-width:400px;padding:10px 12px;border:1px solid var(--color-border-strong, #b7c3d4);border-radius:6px;font-size:15px;box-sizing:border-box;background:var(--color-surface, #fff);color:var(--color-text, #1e293b)}.login-field-hint{font-size:12px;color:var(--color-text-muted, #64748b);margin-top:4px}.login-checkboxes{margin:16px 0;font-size:14px;line-height:1.5}.login-checkboxes label{display:flex;align-items:flex-start;gap:8px;cursor:pointer;text-transform:none;font-weight:400;font-size:14px;color:var(--color-text, #1e293b)}.login-checkboxes input[type=checkbox]{margin-top:3px}.login-submit{padding:10px 20px;font-size:15px;border-radius:6px;border:none;background:var(--color-brand, #2563eb);color:#fff;cursor:pointer;font-weight:600}.login-submit:hover{background:var(--color-brand-strong, #1d4ed8)}.login-submit:disabled{opacity:.6;cursor:not-allowed}.login-section-title{margin:24px 0 12px;font-size:1.1rem}.login-section-title--first{margin-top:8px}.login-register-block{margin-top:28px;padding-top:20px;border-top:1px solid var(--color-border, #d8dee9)}.login-path-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.login-path-btn{padding:10px 16px;border:2px solid #93c5fd;border-radius:8px;background:var(--color-surface, #fff);font-size:14px;font-weight:600;cursor:pointer;color:var(--color-brand-strong, #1d4ed8)}.login-path-btn:hover{background:var(--color-brand-soft, #dbeafe)}.login-path-btn--active{background:var(--color-brand, #2563eb);border-color:var(--color-brand, #2563eb);color:#fff}.login-path-hint{font-size:13px;color:var(--color-text-muted, #64748b);line-height:1.45;margin:0 0 14px}.login-inline-error{color:#c62828;font-size:14px;margin:0 0 12px;padding:8px 10px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px}.login-inline-hint{color:#166534;font-size:14px;margin:0 0 12px;padding:8px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px}.login-link-btn{background:none;border:none;padding:0;font:inherit;color:var(--color-brand-strong, #1d4ed8);text-decoration:underline;cursor:pointer}.login-link-btn:hover{color:var(--color-brand, #2563eb)}.login-forgot-block{margin-bottom:20px;padding:12px 0 4px;max-width:400px}.landing-c{max-width:1080px;margin:18px auto 24px;padding:22px;border-radius:24px;background:radial-gradient(circle at 88% 8%,rgba(240,126,64,.24),transparent 28%),radial-gradient(circle at 8% 0%,#18584ae6,#0f4a42 62%);color:#f4f6f1;border:1px solid #2a6b5f}.landing-c__hero{display:grid;grid-template-columns:.85fr 1.15fr;gap:20px;align-items:start}.landing-c__logo-wrap{border-radius:18px;background:linear-gradient(160deg,#093832d1,#0f4a42eb);border:1px solid rgba(151,200,181,.35);padding:18px 14px;display:grid;place-items:center;align-items:center;isolation:isolate}.landing-c__lockup{width:min(100%,420px);border-radius:14px;box-shadow:0 10px 26px #04151359}.landing-c h2{margin:0 0 10px;font-size:clamp(34px,4vw,54px);line-height:1.04;color:#f3fff8}.landing-c__headline-part{display:inline}.landing-c__lead{margin:0 0 10px;color:#d7ece2;max-width:62ch}.landing-c__pallukat{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px}.landing-c__pallukat span{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:#dff6eb;letter-spacing:.01em}.landing-c__pallukat span:before{content:"";width:7px;height:7px;border-radius:999px;background:#f07e40}.landing-c__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.landing-c__primary,.landing-c__secondary{border-radius:999px;padding:11px 16px;font-weight:700;cursor:pointer}.landing-c__primary{border:0;background:#f07e40;color:#fff}.landing-c__secondary{border:1px solid #92c7b0;color:#f4f6f1;background:#ffffff0f}.landing-c__footer{margin-top:20px;padding-top:16px;border-top:1px solid rgba(156,203,186,.22);text-align:center}.landing-c__returning{margin:0;font-size:14px;line-height:1.5;color:#a8d4c4}.landing-c__returning-hint{color:#c5e8da}.landing-c__text-link{margin:0;padding:0;border:0;background:none;font:inherit;font-weight:600;color:#e8faf3;text-decoration:underline;text-decoration-color:#f07e40a6;text-underline-offset:3px;cursor:pointer}.landing-c__text-link:hover{color:#fff;text-decoration-color:#f07e40}.landing-c__thanks{margin-top:10px;color:#cef2e1}.landing-c__bios{margin-top:12px;padding:12px;border-radius:12px;border:1px solid rgba(156,203,186,.45);background:#092a2573;color:#e9faf3}.landing-c__bios p{margin:0 0 10px;line-height:1.45}.landing-c__bios p:last-child{margin-bottom:0}.landing-c__form{margin-top:14px;margin-inline:auto;max-width:min(100%,28rem);border:1px solid #3b7d70;background:#092a259e;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}.landing-c__form>.landing-c__primary{align-self:flex-start}.landing-c__grid{display:flex;flex-direction:column;gap:12px}.landing-c input,.landing-c textarea{box-sizing:border-box;width:100%;border:1px solid #8bc0aa;border-radius:9px;padding:10px;background:#f2f8f4;color:#0f4a42;font-family:inherit}.landing-c__form textarea{margin:0;min-height:5.5rem;resize:vertical}@media (max-width: 920px){.landing-c__hero{grid-template-columns:1fr}.landing-c__headline-part{display:block}.landing-c__pallukat span{font-size:14px}}table{table-layout:fixed;width:auto;max-width:800px;border-collapse:collapse}th,td{border:3px solid rgb(12,30,25);padding:8px;text-align:left}th:first-child,td:first-child{width:50px}th:nth-child(2),td:nth-child(2){width:100px}.message{color:green;background:#d3d3d3;font-size:20px;border-style:solid;border-radius:5px;padding:10px;margin-bottom:10px}.errorMessage{color:red;background:#d3d3d3;font-size:20px;border-style:solid;border-radius:5px;padding:10px;margin-bottom:10px}
