
/* fr-motion.css — mikrointerakcje kursu. Wszystkie reguły zakresowane klasami .fr-* nadawanymi
   przez fr-motion.js (dekoracja; nie zmienia logiki silnika). Jedyny wyjątek sankcjonowany briefem:
   przyklejony nagłówek działu .unit-head. Pełne poszanowanie prefers-reduced-motion. */

.unit-head {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--paper, #FBF9F4);
  box-shadow: 0 2px 0 0 var(--u, #2B4C8C);
}

/* poprawna odpowiedź w luce: spokojne domknięcie obrysu, 180 ms, bez podskoku */
.fr-gap-ok {
  outline: 2px solid var(--green, #2E7D5B);
  outline-offset: 1px;
  animation: fr-gap-ok .18s ease-out;
}
@keyframes fr-gap-ok {
  from { outline-offset: 7px; outline-color: transparent; }
  to   { outline-offset: 1px; }
}

/* błędna: jedno delikatne drgnięcie w poziomie, 2 px, 120 ms */
.fr-gap-bad {
  outline: 2px solid var(--wine, #A4243B);
  outline-offset: 1px;
  animation: fr-shake .12s linear;
}
@keyframes fr-shake {
  0% { transform: translateX(0); }
  25% { transform: translateX(-2px); }
  75% { transform: translateX(2px); }
  100% { transform: translateX(0); }
}

/* aktywna kwestia dialogu */
.fr-line-live {
  background: var(--u-soft, var(--brand-soft, #E4EAF5));
  border-radius: 6px;
  transition: background-color .3s ease;
}

/* trening wymowy: ocena słowo po słowie */
.fr-w-ok   { color: var(--green, #2E7D5B); transition: color .25s ease; }
.fr-w-warn { color: var(--gold, #C89B3C);  transition: color .25s ease; }
.fr-w-bad  { color: var(--wine, #A4243B);  transition: color .25s ease; }

/* przejście motywu bez mignięcia — klasa nakładana na <html> na 350 ms przy zmianie data-theme */
html.fr-theme-fade, html.fr-theme-fade body { transition: background-color .25s ease; }
html.fr-theme-fade * { transition: background-color .25s ease, color .2s ease, border-color .25s ease; }

@media (prefers-reduced-motion: reduce) {
  .fr-gap-ok, .fr-gap-bad { animation: none; }
  .fr-line-live, .fr-w-ok, .fr-w-warn, .fr-w-bad { transition: none; }
  html.fr-theme-fade, html.fr-theme-fade body, html.fr-theme-fade * { transition: none; }
}
:root{
  --paper:#FBF9F4; --surface:#FFFFFF; --row:#F5F2EA; --chip:#EFEADF;
  --ink:#1A1D2E; --muted:#6B6A78; --line:#E3DDD0;
  --brand:#2B4C8C; --brand-soft:#E4EAF5;
  --wine:#A4243B; --gold:#C89B3C; --green:#2E7D5B; --sky:#3E7CB1;
  --u:var(--brand); --u-soft:var(--brand-soft);
  --shadow:0 10px 30px rgba(26,29,46,.08);
  --btn-ink:#fff; --final-gold:#C89B3C;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#14161F; --surface:#1B1E29; --row:#1F2230; --chip:#262A38;
  --ink:#ECE9E2; --muted:#A5A3B0; --line:#333747;
  --brand:#7FA5E3; --brand-soft:#1E2739; --wine:#E2718A; --gold:#DDB768;
  --green:#63B893; --sky:#7FB2D9; --shadow:0 10px 30px rgba(0,0,0,.35);
  --btn-ink:#14161F; --final-gold:#7F5C12;
}}
:root[data-theme="dark"]{
  --paper:#14161F; --surface:#1B1E29; --row:#1F2230; --chip:#262A38;
  --ink:#ECE9E2; --muted:#A5A3B0; --line:#333747;
  --brand:#7FA5E3; --brand-soft:#1E2739; --wine:#E2718A; --gold:#DDB768;
  --green:#63B893; --sky:#7FB2D9; --shadow:0 10px 30px rgba(0,0,0,.35);
  --btn-ink:#14161F; --final-gold:#7F5C12;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:17px;line-height:1.65;-webkit-text-size-adjust:100%}
.wrap{max-width:820px;margin:0 auto;padding:0 22px}
a{color:var(--brand)}
/* --- gorny pasek --- */
.top{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--paper) 92%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:14px;height:56px}
.brand{font-family:var(--serif);font-weight:700;font-size:1.15rem;color:var(--wine);
  text-decoration:none;letter-spacing:-.01em;white-space:nowrap}
.top nav{margin-left:auto;display:flex;gap:6px;align-items:center}
.top button,.top a.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);
  border-radius:9px;padding:6px 12px;font:inherit;font-size:.86rem;cursor:pointer;text-decoration:none}
.top button:hover{background:var(--row)}
.prog{position:fixed;top:0;left:0;height:3px;background:var(--wine);width:0;z-index:50;transition:width .15s}
/* --- okladka --- */
.cover{padding:64px 0 40px;border-bottom:1px solid var(--line)}
.kicker{font-family:var(--mono);font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
h1{font-family:var(--serif);font-weight:700;font-size:clamp(2.6rem,8vw,4.4rem);line-height:1.02;
  margin:.18em 0 .12em;letter-spacing:-.02em}
h1 .fr{color:var(--wine)}
.lede{font-size:1.12rem;color:var(--muted);max-width:60ch}
.badges{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}
.badge{background:var(--chip);border:1px solid var(--line);border-radius:99px;padding:5px 13px;
  font-size:.82rem;font-family:var(--mono)}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.cta a{background:var(--wine);color:var(--btn-ink);text-decoration:none;font-weight:600;padding:12px 22px;
  border-radius:11px;box-shadow:var(--shadow)}
.cta a.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line);box-shadow:none}
/* --- spis tresci --- */
.toc{margin:34px 0}
.toc ol{list-style:none;padding:0;margin:0;display:grid;gap:9px}
.toc a{display:flex;gap:14px;align-items:baseline;text-decoration:none;color:var(--ink);
  border:1px solid var(--line);border-radius:12px;padding:12px 16px;background:var(--surface)}
.toc a:hover{border-color:var(--u);background:var(--row)}
.toc .no{font-family:var(--mono);color:var(--u);font-weight:700;min-width:2.2em}
.toc .ti{font-weight:600}.toc .tp{color:var(--muted);font-size:.9rem;margin-left:auto;text-align:right}
/* --- jednostka --- */
.unit{padding:56px 0 12px;border-top:1px solid var(--line);scroll-margin-top:64px}
.unit-head{margin-bottom:26px}
.unit-no{font-family:var(--mono);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--u)}
h2{font-family:var(--serif);font-size:clamp(1.8rem,4.4vw,2.5rem);line-height:1.12;margin:.16em 0 .1em;letter-spacing:-.015em}
h2 .pl{display:block;font-family:var(--sans);font-size:.5em;font-weight:500;color:var(--muted);margin-top:.35em;letter-spacing:0}
.lvl{display:inline-block;background:var(--u-soft);color:var(--u);border-radius:99px;
  padding:3px 11px;font-family:var(--mono);font-size:.74rem;font-weight:700}
.objectives{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--u);
  border-radius:0 12px 12px 0;padding:16px 20px;margin:20px 0}
.objectives h3{margin:0 0 8px;font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-family:var(--mono)}
.objectives ul{margin:0;padding-left:20px}.objectives li{margin:4px 0}
h3.sec{font-family:var(--mono);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--u);margin:38px 0 14px;padding-bottom:7px;border-bottom:2px solid var(--u-soft)}
/* --- dialog --- */
.dialog{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:6px 4px}
.line{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:11px 14px;border-top:1px solid var(--line)}
.line:first-child{border-top:0}
.line .who{font-weight:700;color:var(--u);font-size:.9rem;white-space:nowrap}
.line .fr{font-weight:500}
.line .pl{grid-column:2;color:var(--muted);font-size:.92rem}
/* --- tabele --- */
table{width:100%;border-collapse:collapse;margin:8px 0;font-size:.96rem}
th{background:var(--ink);color:var(--paper);text-align:left;padding:9px 12px;font-size:.8rem;
  text-transform:uppercase;letter-spacing:.06em;font-family:var(--mono);font-weight:600}
td{border-bottom:1px solid var(--line);padding:9px 12px;vertical-align:top}
tr:nth-child(even) td{background:var(--row)}
td.fr{font-weight:600;width:38%}
.note{display:block;color:var(--muted);font-size:.85rem;margin-top:2px}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* --- gramatyka --- */
.gram{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin:12px 0}
.gram h4{margin:0 0 4px;font-family:var(--serif);font-size:1.3rem}
.gram .sub{color:var(--muted);font-size:.9rem;margin:0 0 14px}
.gram p{margin:.7em 0}
.ex{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.ex div{display:grid;grid-template-columns:1fr;gap:1px;padding:7px 0;border-top:1px solid var(--line)}
.ex div:first-child{border-top:0}
.ex .f{font-weight:600}.ex .p{color:var(--muted);font-size:.9rem}
/* --- cwiczenia --- */
.task{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin:12px 0}
.task .lead{color:var(--muted);font-size:.92rem;margin:0 0 14px}
.q{display:flex;flex-wrap:wrap;gap:9px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.q:first-of-type{border-top:0}
.q .n{font-family:var(--mono);color:var(--muted);font-size:.85rem;min-width:1.8em}
.q .txt{flex:1 1 260px;min-width:200px}
.q .hint{display:block;color:var(--muted);font-size:.86rem}
input.gap,input.tr{font:inherit;font-size:.98rem;color:var(--ink);background:var(--paper);
  border:1.5px solid var(--line);border-radius:9px;padding:7px 11px;min-width:120px}
input.gap{width:150px}
input.tr{flex:1 1 240px}
input:focus{outline:2px solid var(--u);outline-offset:1px}
input.ok{border-color:var(--green);background:color-mix(in srgb,var(--green) 12%,var(--paper))}
input.bad{border-color:var(--wine)}
.mark{font-weight:800;min-width:1.3em}
.mark.ok{color:var(--green)}.mark.bad{color:var(--wine)}
.sol{display:none;color:var(--wine);font-weight:600;font-size:.94rem}
.sol.show{display:inline}
.acc{color:var(--gold);font-size:.85rem}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:16px}
.btn{border:0;border-radius:10px;padding:9px 18px;font:inherit;font-weight:600;cursor:pointer;
  background:var(--u);color:var(--btn-ink)}
.btn.ghost{background:transparent;color:var(--muted);border:1.5px solid var(--line)}
.score{font-weight:700}
/* --- quiz --- */
.mc{padding:12px 0;border-top:1px solid var(--line)}
.mc:first-child{border-top:0}
.mc .qq{font-weight:600;margin-bottom:8px}
.opt{display:block;width:100%;text-align:left;border:1.5px solid var(--line);background:var(--paper);
  color:var(--ink);border-radius:10px;padding:9px 14px;margin:5px 0;font:inherit;cursor:pointer}
.opt:hover{border-color:var(--u)}
.opt.ok{border-color:var(--green);background:color-mix(in srgb,var(--green) 14%,var(--paper))}
.opt.bad{border-color:var(--wine);background:color-mix(in srgb,var(--wine) 10%,var(--paper))}
.why{display:none;color:var(--muted);font-size:.9rem;margin:6px 0 0;padding-left:14px;border-left:3px solid var(--u-soft)}
.why.show{display:block}
/* --- kultura / zadanie --- */
.culture{background:linear-gradient(180deg,var(--u-soft),transparent);border:1px solid var(--line);
  border-radius:14px;padding:20px 22px;margin:12px 0}
.culture h4{margin:0 0 8px;font-family:var(--serif);font-size:1.25rem;color:var(--u)}
.final{background:var(--ink);color:var(--paper);border-radius:14px;padding:22px 24px;margin:16px 0}
.final h4{margin:0 0 8px;font-family:var(--serif);font-size:1.25rem;color:var(--final-gold)}
.final p{margin:0;opacity:.92}
/* --- lektor --- */
.fr{cursor:pointer}
.fr:hover{text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
.fr.said{background:var(--gold);border-radius:4px;box-shadow:0 0 0 3px var(--gold)}
button.say{border:0;background:transparent;cursor:pointer;font-size:.88em;padding:0 0 0 6px;opacity:.6}
button.say:hover{opacity:1}
.voicebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:20px 0;font-size:.9rem}
.voicebar select{font:inherit;font-size:.86rem;padding:5px 9px;border-radius:8px;
  border:1px solid var(--line);background:var(--paper);color:var(--ink);max-width:280px}
/* --- scena --- */
.scene{margin:14px 0}
.stage{position:relative;aspect-ratio:16/9;border-radius:14px;overflow:hidden;border:1px solid var(--line);
  background:linear-gradient(165deg,var(--u-soft),var(--paper) 62%,var(--row));
  display:flex;align-items:flex-end;justify-content:center;gap:6%}
.actor{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:7%;
  opacity:.42;transition:opacity .25s,transform .25s}
.actor.on{opacity:1;transform:translateY(-4px) scale(1.05)}
.ava{width:clamp(46px,10.5vw,96px);aspect-ratio:1;border-radius:27%;display:grid;place-items:center;
  color:#fff;font-weight:800;font-size:clamp(17px,4.2vw,36px);box-shadow:var(--shadow)}
.actor.on .ava{box-shadow:0 0 0 4px var(--u),var(--shadow)}
.aname{font-size:clamp(10px,1.9vw,13px);font-weight:700}
.bubble{position:absolute;left:50%;top:7%;transform:translateX(-50%);max-width:88%;background:var(--surface);
  border:2px solid var(--ink);border-radius:14px;padding:11px 17px;font-weight:600;text-align:center;
  font-size:clamp(14px,2.7vw,23px);line-height:1.35;opacity:0;transition:opacity .2s;box-shadow:var(--shadow)}
.bubble.on{opacity:1}
/* Scena ilustrowana z pakietu graficznego dostarcza WLASNE postacie. Stare kafelki z inicjalem
   rysowaly sie na niej i zaslanialy ilustracje — a podpisy nachodzily na siebie. Gdy scena jest
   zamontowana, kafelki znikaja, a mowiacego wskazuje sama ilustracja (FR.scene.setActor). */
/* --- menu boczne ze spisem tresci -------------------------------------------------
   Kurs ma 10 dzialow po 9 sekcji. Bez menu jedyna nawigacja to spis na gorze strony,
   czyli z dowolnego miejsca trzeba najpierw wrocic na sam poczatek. Panel daje skok
   wprost do sekcji i pokazuje, w ktorym dziale sie jest. */
#menuBtn{display:inline-flex;align-items:center;gap:7px}
#menuTlo{position:fixed;inset:0;background:rgba(20,22,31,.45);z-index:60;
  opacity:0;transition:opacity .22s;backdrop-filter:blur(2px)}
#menuTlo.on{opacity:1}
#menu{position:fixed;left:0;top:0;bottom:0;width:min(340px,86vw);z-index:61;
  background:var(--surface);border-right:1px solid var(--line);box-shadow:var(--shadow);
  display:flex;flex-direction:column;transform:translateX(-102%);transition:transform .26s ease}
#menu.on{transform:none}
/* Zamkniety panel MUSI zniknac z ukladu, nie tylko wyjechac poza ekran. Regula `#menu{display:flex}`
   nadpisywala atrybut `hidden` (styl autora bije styl przegladarki), wiec zwiniete menu zostawalo
   w kolejnosci tabulacji i czytal je czytnik ekranu — niewidoczne, ale wciaz obecne. */
#menu[hidden]{display:none}
/* Naglowek jest przyklejony i ma 56 px, wiec kotwica bez marginesu ladowala POD nim —
   tytul dzialu byl przeciety w polowie. `scroll-margin-top` to jedyne miejsce, w ktorym
   trzeba to zapisac; dziala tak samo dla klikniecia w menu i dla wejscia z adresu. */
section.unit,h3.sec,.unit-head{scroll-margin-top:72px}
#menu .mhead{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
#menu .mhead strong{font-family:var(--serif);font-size:1.15rem}
#menu .mhead button{margin-left:auto;border:1px solid var(--line);background:var(--paper);color:var(--ink);
  border-radius:9px;width:34px;height:34px;font:inherit;cursor:pointer;line-height:1}
#menu nav{overflow:auto;padding:10px 10px 26px;flex:1}
#menu .mtop{display:block;padding:8px 10px;border-radius:9px;color:var(--muted);
  text-decoration:none;font-size:.9rem}
#menu .mtop:hover{background:var(--row);color:var(--ink)}
#menu ol{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px}
#menu .mu{display:flex;gap:11px;align-items:baseline;padding:9px 10px;border-radius:9px;
  text-decoration:none;color:var(--ink)}
#menu .mu:hover{background:var(--row)}
#menu li.tu>.mu{background:var(--u-soft,var(--row));box-shadow:inset 3px 0 0 var(--u,var(--brand))}
#menu .mn{font-family:var(--mono);font-size:.82rem;color:var(--u,var(--brand));font-weight:700;min-width:2.1em}
#menu .mt{font-weight:600;line-height:1.3}
#menu .mt em{display:block;font-style:normal;font-weight:400;color:var(--muted);font-size:.85rem}
#menu .msub{display:none;padding:2px 0 8px 3.1em}
#menu li.tu .msub,#menu li.rozwiniete .msub{display:grid;gap:1px}
#menu li.zwiniete .msub{display:none}
#menu .mu::after{content:'';margin-left:auto;width:7px;height:7px;flex:0 0 auto;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translateY(-2px);opacity:.45;transition:transform .18s}
#menu li.tu>.mu::after,#menu li.rozwiniete>.mu::after{transform:rotate(-135deg) translateY(-2px);opacity:.8}
#menu li.zwiniete>.mu::after{transform:rotate(45deg) translateY(-2px)}
#menu .msub a{display:block;padding:5px 9px;border-radius:7px;text-decoration:none;
  color:var(--muted);font-size:.87rem}
#menu .msub a:hover{background:var(--row);color:var(--ink)}
#menu .msub a.tsec{color:var(--u,var(--brand));font-weight:600}
@media (prefers-reduced-motion:reduce){#menu,#menuTlo{transition:none}}
/* --- UKLAD JAK NA dziendobry.org --------------------------------------------------
   Od 1080 px spis przestaje byc szuflada i staje sie STALYM elementem ukladu: siedzi
   po lewej, tresc jest przesunieta obok niego. Ponizej tej szerokosci wraca szuflada
   z przyciskiem ☰, bo staly panel zjadlby polowe ekranu telefonu.
   Przesuwamy `body`, a nie `main` — dzieki temu przyklejony naglowek i stopka tez
   ustawiaja sie obok panelu, zamiast chowac sie pod nim. */
@media (min-width:1080px){
  body{padding-left:280px}
  #menuBtn{display:none}
  #menuTlo{display:none!important}
  #menu,#menu[hidden]{display:flex;transform:none;width:280px;box-shadow:none;
    background:var(--paper);border-right:1px solid var(--line)}
  #menu .mhead button{display:none}
  #menu .mhead{padding:18px 16px 12px}
  #menu .mlogo{display:block;padding:0 16px 2px}
  #menu .mlogo svg{width:150px;height:auto;display:block}
  #menu li:not(.tu):not(.rozwiniete) .msub{display:none}
  #menu li.zwiniete .msub{display:none}
}
@media (max-width:1079px){ #menu .mlogo{display:none} }
@media print{ #menu,#menuTlo,#menuBtn{display:none!important} body{padding-left:0} }
.stage.fr-ilustrowana>.actor{display:none}
/* Kompozycja scen rezerwuje na dymek gorna 1/3 kadru — trzymamy go w tej strefie,
   zamiast pozwolic mu rosnac przez pol obrazka przy dluzszej kwestii. */
.stage.fr-ilustrowana>.bubble{top:4%;max-width:76%;max-height:30%;overflow:auto;
  font-size:clamp(12px,1.9vw,17px);line-height:1.3;padding:8px 14px}
.subs{min-height:2.6em;text-align:center;color:var(--muted);font-size:.93rem;margin-top:10px}
.subs b{display:block;color:var(--ink);font-size:1.05rem}
.sbar{height:5px;border-radius:99px;background:var(--line);margin-top:9px;overflow:hidden}
.sbar>i{display:block;height:100%;width:0;background:var(--u);transition:width .25s}
/* --- trener wymowy --- */
.sp-row{padding:10px 0;border-top:1px solid var(--line)}
.sp-row:first-child{border-top:0}
.sp-txt{font-weight:600;margin-bottom:7px}
.sp-txt .w.ok{color:var(--green)}.sp-txt .w.bad{color:var(--wine);text-decoration:underline wavy}
.sp-act{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sp-fb{color:var(--muted);font-size:.88rem;margin-top:5px}
footer{border-top:1px solid var(--line);margin-top:60px;padding:34px 0 60px;color:var(--muted);font-size:.9rem}

/* --- czytanka CLIL --- */
.lecture{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px 26px;margin:12px 0}
.lecture h4{margin:0 0 4px;font-family:var(--serif);font-size:1.45rem;line-height:1.2}
.lecture .lead{color:var(--muted);font-size:.94rem;margin:0 0 16px;font-style:italic}
.lecture .body{font-size:1.03rem;line-height:1.75}
.lecture .body p{margin:0 0 1em}
.lecture .body p:first-letter{font-weight:600}
.gloss{margin-top:18px;border-top:1px dashed var(--line);padding-top:14px}
.gloss h5{margin:0 0 8px;font-family:var(--mono);font-size:.76rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted)}
.gloss ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:4px 20px}
.gloss li{font-size:.93rem;padding:2px 0}
.gloss b{color:var(--u)}
.disc{margin-top:16px;background:var(--row);border-radius:10px;padding:14px 18px}
.disc h5{margin:0 0 6px;font-family:var(--mono);font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.disc ol{margin:0;padding-left:20px}.disc li{margin:3px 0;font-size:.95rem}
@media print{
  .top,.prog,.voicebar,.scene,.actions,button,.cta{display:none!important}
  body{font-size:11pt;background:#fff;color:#000}
  .unit{page-break-before:always;border:0}
  .sol{display:inline!important;color:#666}
  input{border:0;border-bottom:1px solid #999;border-radius:0}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (max-width:560px){body{font-size:16px}.wrap{padding:0 16px}.line{grid-template-columns:1fr}.line .pl{grid-column:1}}
#u-1{--u:#3C5C95;--u-soft:#E8E9EB}#u-2{--u:#96602F;--u-soft:#F1EAE0}#u-3{--u:#1E7C68;--u-soft:#E5EDE6}#u-4{--u:#6F4F9C;--u-soft:#EDE8EB}#u-5{--u:#4A7F44;--u-soft:#E9EDE2}#u-6{--u:#2E6F92;--u-soft:#E7EBEA}#u-7{--u:#9C4070;--u-soft:#F2E7E7}#u-8{--u:#5558A5;--u-soft:#EAE9EC}#u-9{--u:#A34A38;--u-soft:#F2E8E1}#u-10{--u:#767432;--u-soft:#EEECE1}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) #u-1{--u:#8FA9DC;--u-soft:#282E3D}:root:not([data-theme="light"]) #u-2{--u:#D9A473;--u-soft:#342D2C}:root:not([data-theme="light"]) #u-3{--u:#6FBFA9;--u-soft:#233135}:root:not([data-theme="light"]) #u-4{--u:#B79ADF;--u-soft:#2E2B3E}:root:not([data-theme="light"]) #u-5{--u:#94C08B;--u-soft:#283130}:root:not([data-theme="light"]) #u-6{--u:#7FB3D2;--u-soft:#252F3C}:root:not([data-theme="light"]) #u-7{--u:#D98FB6;--u-soft:#342937}:root:not([data-theme="light"]) #u-8{--u:#9FA2DE;--u-soft:#2A2C3E}:root:not([data-theme="light"]) #u-9{--u:#DE9484;--u-soft:#342A2F}:root:not([data-theme="light"]) #u-10{--u:#BDBA75;--u-soft:#2F302D}}:root[data-theme="dark"] #u-1{--u:#8FA9DC;--u-soft:#282E3D}:root[data-theme="dark"] #u-2{--u:#D9A473;--u-soft:#342D2C}:root[data-theme="dark"] #u-3{--u:#6FBFA9;--u-soft:#233135}:root[data-theme="dark"] #u-4{--u:#B79ADF;--u-soft:#2E2B3E}:root[data-theme="dark"] #u-5{--u:#94C08B;--u-soft:#283130}:root[data-theme="dark"] #u-6{--u:#7FB3D2;--u-soft:#252F3C}:root[data-theme="dark"] #u-7{--u:#D98FB6;--u-soft:#342937}:root[data-theme="dark"] #u-8{--u:#9FA2DE;--u-soft:#2A2C3E}:root[data-theme="dark"] #u-9{--u:#DE9484;--u-soft:#342A2F}:root[data-theme="dark"] #u-10{--u:#BDBA75;--u-soft:#2F302D}
/* skip link (a11y): visually hidden until focused */
.skip{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.skip:focus{position:fixed;left:12px;top:12px;width:auto;height:auto;overflow:visible;z-index:100;padding:8px 14px;
  background:var(--surface);color:var(--ink);border:2px solid var(--u);border-radius:9px;font-weight:600;text-decoration:none}
