:root{
  --bg:#FFF8EC;
  --card:#FFFFFF;
  --ink:#22243A;
  --ink2:#6B7192;
  --ink3:#A6ACC6;
  --hair:rgba(34,36,58,.08);
  --blue:#3D7BFF;
  --pink:#FF4D6D;
  --green:#22C55E;
  --mango:#FF9F1C;
  --grape:#A855F7;
  --sky:#06B6D4;
  --gum:#FF6FB5;
  --sun:#FFD43B;
  --shadow:0 2px 4px rgba(34,36,58,.05), 0 14px 34px rgba(34,36,58,.07);
  --r:24px;
  --font:'Nunito',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --disp:'Baloo 2',var(--font);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  background-image:
    radial-gradient(circle at 8% 2%, rgba(255,212,59,.30) 0 18%, transparent 18%),
    radial-gradient(circle at 96% 6%, rgba(61,123,255,.16) 0 14%, transparent 14%),
    radial-gradient(circle at 82% 34%, rgba(255,111,181,.13) 0 9%, transparent 9%);
  background-repeat:no-repeat;background-attachment:fixed;
  color:var(--ink);font-family:var(--font);font-size:16px;font-weight:600;line-height:1.55;
  -webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;padding-bottom:64px;
}
.en{font-family:'Andika','Andika New Basic',var(--font)}
.wrap{max-width:820px;margin:0 auto;padding:0 16px}
h1,h2,h3,.disp{font-family:var(--disp);font-weight:700;line-height:1.16;margin:0}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:50;background:rgba(255,248,236,.9);backdrop-filter:saturate(180%) blur(18px)}
.hdr-in{max-width:820px;margin:0 auto;padding:10px 16px 0}
.hdr-row{display:flex;align-items:center;gap:9px}
.logo{display:flex;align-items:center;gap:9px;font-family:var(--disp);font-size:25px;font-weight:800;letter-spacing:-.02em}
.logo .mark{width:34px;height:34px;flex:0 0 34px}
.logo b{color:var(--pink)}
.grow{flex:1}
.icn{width:38px;height:38px;border-radius:50%;border:none;background:#fff;box-shadow:var(--shadow);
  color:var(--ink2);font-size:17px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.icn:active{transform:scale(.92)}
.icn.on{background:var(--blue);color:#fff}
.segs{display:flex;gap:8px;overflow-x:auto;padding:12px 0 13px;scrollbar-width:none}
.segs::-webkit-scrollbar{display:none}
.seg{flex:0 0 auto;border:none;background:#fff;box-shadow:0 2px 8px rgba(34,36,58,.07);color:var(--ink2);
  font-family:var(--disp);font-size:15px;font-weight:700;padding:8px 15px;border-radius:999px;
  cursor:pointer;white-space:nowrap;transition:.16s}
.seg:active{transform:scale(.95)}
.seg.on{background:var(--c,var(--blue));color:#fff;box-shadow:0 5px 16px rgba(34,36,58,.18)}

/* ---------- cards ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:20px;margin:15px 0}
.hero{position:relative;overflow:hidden;background:linear-gradient(165deg,var(--t,#E7F0FF),#fff 68%)}
.hero .art{position:absolute;right:-6px;top:-6px;width:118px;opacity:.95;pointer-events:none}
.hero .inner{position:relative;max-width:calc(100% - 108px)}
.kick{font-family:var(--disp);font-size:13px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--c,var(--blue))}
h1.big{font-size:29px;letter-spacing:-.02em;margin:4px 0 0}
h2.sec{font-size:21px;margin:0 0 4px;display:flex;align-items:center;gap:9px}
p.sub{color:var(--ink2);margin:8px 0 0;font-size:15.5px;font-weight:600}
.hint{color:var(--ink3);font-size:13.5px;margin:9px 0 0;font-weight:600}
.art svg{width:100%;height:auto;display:block}
.art.sm{width:46px;flex:0 0 46px}

/* ---------- sounds ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}
.chip{background:#fff;border:none;border-radius:16px;padding:8px 13px;text-align:center;min-width:56px;
  box-shadow:0 2px 8px rgba(34,36,58,.09)}
.chip b{display:block;font-family:'Andika',var(--font);font-size:23px;font-weight:700;line-height:1.1;color:var(--c,var(--blue))}
.chip i{display:block;font-style:normal;font-size:11px;font-weight:700;color:var(--ink3)}
.artic{margin-top:13px;font-size:14px;color:var(--ink2);line-height:1.7}
.artic b{color:var(--ink);font-family:'Andika',var(--font)}

/* ---------- list rows ---------- */
.list{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;margin:15px 0}
.row{border-bottom:1.5px solid var(--hair)}
.row:last-child{border-bottom:none}
.row>summary{list-style:none;cursor:pointer;padding:15px 19px;display:flex;align-items:center;gap:11px;
  font-family:var(--disp);font-size:17px;font-weight:700}
.row>summary::-webkit-details-marker{display:none}
.row>summary::after{content:"›";margin-left:auto;color:var(--ink3);font-size:24px;line-height:1;transition:.2s}
.row[open]>summary::after{transform:rotate(90deg)}
.row .body{padding:0 19px 17px;color:var(--ink2);font-size:15px}
.row .body ol,.row .body ul{margin:4px 0;padding-left:20px}
.row .body li{margin:7px 0}
.row .body b{color:var(--ink)}
.emo{font-size:21px}

/* ---------- columns ---------- */
.cols{display:flex;gap:10px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none}
.cols::-webkit-scrollbar{display:none}
.col{flex:0 0 auto;min-width:104px;background:var(--bg);border-radius:19px;padding:7px}
.chead{font-family:'Andika',var(--font);font-size:24px;font-weight:700;color:var(--pink);padding:3px 0 2px;text-align:center}
.chead i{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--ink3);font-family:var(--font)}
.word{display:block;width:100%;border:none;background:none;font-family:'Andika',var(--font);
  font-size:21px;font-weight:700;color:var(--ink);padding:5px 4px;border-radius:11px;cursor:pointer;transition:.12s}
.word:active{transform:scale(.92)}
.word.lit{background:var(--sun)}
.word.done{color:var(--green)}
.walk{margin-top:5px;width:100%;border:none;background:#fff;color:var(--blue);
  font-family:var(--disp);font-size:12.5px;font-weight:800;border-radius:999px;padding:6px 10px;cursor:pointer}

/* ---------- spinner ---------- */
.spin{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:20px 16px;margin:15px 0;text-align:center}
.sw{font-family:'Andika',var(--font);font-weight:700;font-size:clamp(52px,15vw,82px);line-height:1.08;
  letter-spacing:1px;margin:4px 0 0;min-height:1.1em}
.sw .o,.sw .e{color:var(--blue)}
.sw .v{color:var(--pink)}
.sw.bump{animation:bump .36s cubic-bezier(.34,1.56,.64,1)}
@keyframes bump{0%{transform:scale(.88);opacity:.35}100%{transform:none;opacity:1}}
.pips{display:flex;justify-content:center;gap:14px;margin:9px 0 15px;height:10px}
.pips i{width:10px;height:10px;border-radius:50%;background:rgba(34,36,58,.13);transition:.18s}
.pips i.a{transform:scale(1.65)}
.pips i:nth-child(1).a,.pips i:nth-child(3).a{background:var(--blue)}
.pips i:nth-child(2).a{background:var(--pink)}
.tiles{display:flex;justify-content:center;gap:10px}
.tw{display:flex;flex-direction:column;align-items:center;gap:8px;flex:0 0 auto}
.tlab{font-family:var(--disp);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.tile{width:clamp(74px,20vw,94px);height:clamp(80px,22vw,100px);border-radius:22px;position:relative;overflow:hidden;
  background:#EAF0FF;color:var(--blue);font-family:'Andika',var(--font);font-weight:700;font-size:clamp(35px,10vw,45px);
  box-shadow:inset 0 -4px 0 rgba(34,36,58,.06)}
.tile.v{background:#FFE9ED;color:var(--pink)}
.strip{position:absolute;inset:0;display:flex;flex-direction:column;will-change:transform}
.cell{flex:0 0 var(--h,100%);height:var(--h,100%);display:flex;align-items:center;justify-content:center;line-height:1}
.cell.rest{flex:1 1 auto;height:100%}
.tile.rolling .strip{filter:blur(1.05px)}
.tile.land{animation:land .26s cubic-bezier(.34,1.5,.64,1)}
@keyframes land{42%{transform:scale(1.07)}}
.re{border:none;background:var(--bg);color:var(--ink2);font-family:var(--disp);
  font-size:12px;font-weight:800;border-radius:999px;padding:5px 12px;cursor:pointer}
.re:active{transform:scale(.93)}
.re.gh{visibility:hidden}

.bar{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:19px}
.btn{border:none;border-radius:999px;font-family:var(--disp);font-size:17px;font-weight:800;
  padding:13px 26px;cursor:pointer;background:var(--blue);color:#fff;transition:.14s;
  box-shadow:0 5px 14px rgba(61,123,255,.32)}
.btn:active{transform:scale(.95) translateY(2px);box-shadow:none}
.btn[disabled]{opacity:.42;pointer-events:none}
.btn.soft{background:var(--bg);color:var(--ink);box-shadow:none}
.btn.sm{font-size:15px;padding:10px 18px}
.btn.pur{background:var(--grape);box-shadow:0 5px 14px rgba(168,85,247,.32)}

.bank{margin-top:19px;padding-top:15px;border-top:1.5px solid var(--hair);text-align:left}
.bhead{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.bhead .t{font-family:var(--disp);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.cnt{font-family:var(--disp);font-size:14px;font-weight:800;color:var(--green);margin-left:auto}
.bws{display:flex;flex-wrap:wrap;gap:5px}
.bw{font-family:'Andika',var(--font);font-size:14.5px;font-weight:700;color:var(--ink3);
  background:var(--bg);border-radius:999px;padding:3px 11px;transition:.15s}
.bw.seen{color:#12803A;background:#DCFCE7}
.bw.now{color:#fff;background:var(--blue);transform:scale(1.08)}

/* ---------- pairs ---------- */
.pair{display:flex;align-items:center;justify-content:center;gap:clamp(6px,3vw,18px);flex-wrap:wrap;margin:8px 0 4px}
.pw{font-family:'Andika',var(--font);font-weight:700;font-size:clamp(33px,9.5vw,54px);
  background:var(--bg);border-radius:20px;padding:10px 19px}
.pw .v{color:var(--pink)}
.pw .se{color:var(--grape);opacity:.32}
.pw.off{opacity:.15}
.pw.in{animation:bump .44s cubic-bezier(.34,1.56,.64,1)}
.arw{font-family:var(--disp);font-size:23px;font-weight:800;color:var(--grape)}

/* ---------- ph wall ---------- */
.wall{display:flex;flex-wrap:wrap;gap:9px;justify-content:center}
.pill{border:none;background:var(--bg);border-radius:16px;padding:10px 16px;cursor:pointer;
  font-family:'Andika',var(--font);font-size:21px;font-weight:700;color:var(--ink)}
.pill:active{transform:scale(.93)}
.pill u{color:var(--pink);text-decoration:none}

/* ---------- story ---------- */
.story .ln{display:block;width:100%;text-align:left;border:none;background:none;
  font-family:'Andika',var(--font);font-weight:700;font-size:clamp(19px,4.5vw,24px);line-height:1.62;
  padding:3px 10px;border-radius:12px;cursor:pointer;color:var(--ink)}
.story .ln.lit{background:var(--sun)}
.story .gap{height:12px}
.trk{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:14px}
.trk .l{font-family:var(--disp);font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.tw2{font-family:'Andika',var(--font);font-size:14.5px;font-weight:700;color:var(--grape);
  background:#F6EDFE;border-radius:999px;padding:2px 11px}
.qs{margin:13px 0 0;padding-left:20px;color:var(--ink2);font-size:15px}

/* ---------- start ---------- */
.rules{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));margin-top:15px}
.rl{background:var(--bg);border-radius:18px;padding:14px 15px}
.rl b{display:block;font-family:var(--disp);font-size:16px;font-weight:700;margin-bottom:2px}
.rl span{font-size:14px;color:var(--ink2)}
.steps{counter-reset:s;list-style:none;padding:0;margin:14px 0 0}
.steps li{counter-increment:s;position:relative;padding-left:38px;margin:12px 0;font-size:15px;color:var(--ink2)}
.steps li b{color:var(--ink)}
.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;
  background:var(--blue);color:#fff;font-family:var(--disp);font-size:14px;font-weight:800;
  display:flex;align-items:center;justify-content:center}
.weeks{display:flex;gap:9px;overflow-x:auto;padding:4px 0;scrollbar-width:none}
.weeks::-webkit-scrollbar{display:none}
.wk{flex:0 0 auto;min-width:124px;background:var(--bg);border-radius:18px;padding:12px;text-align:center}
.wk .n{font-family:var(--disp);font-size:11.5px;font-weight:800;color:var(--blue);letter-spacing:.05em;text-transform:uppercase}
.wk .t{font-family:var(--disp);font-size:15.5px;font-weight:700;margin-top:2px}
.wk .x{font-size:12.5px;color:var(--ink3)}

/* ---------- sheet ---------- */
.scrim{position:fixed;inset:0;background:rgba(34,36,58,.36);backdrop-filter:blur(3px);z-index:90;display:none}
.scrim.on{display:block}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:91;background:var(--bg);
  border-radius:28px 28px 0 0;padding:8px 19px calc(26px + env(safe-area-inset-bottom));
  max-height:88vh;overflow-y:auto;transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);
  max-width:820px;margin:0 auto}
.sheet.on{transform:none}
.grab{width:40px;height:5px;border-radius:3px;background:rgba(34,36,58,.18);margin:6px auto 15px}
.fld{width:100%;border:none;background:#fff;border-radius:16px;padding:14px 16px;
  font-family:var(--font);font-weight:600;font-size:16px;color:var(--ink);box-shadow:var(--shadow);margin-top:8px}
.fld:focus{outline:2.5px solid var(--blue)}
select.fld{appearance:none;cursor:pointer}
.stat{font-size:14px;margin-top:11px;padding:11px 14px;border-radius:14px;background:#fff;color:var(--ink2)}
.stat.ok{background:#DCFCE7;color:#12803A}
.stat.err{background:#FFE4E9;color:#B4123B}
.rowlbl{font-family:var(--disp);font-size:12.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3);margin-top:19px}
.slider{width:100%;margin-top:11px;accent-color:var(--blue)}

/* ---------- flashcards ---------- */
.pick{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}
.pk{border:none;background:var(--bg);color:var(--ink2);font-family:var(--disp);
  font-size:14px;font-weight:700;border-radius:999px;padding:8px 14px;cursor:pointer}
.pk.on{background:var(--blue);color:#fff}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:10px}
.fc{background:var(--bg);border-radius:19px;padding:14px 6px;text-align:center}
.fc .e{font-size:32px;line-height:1.15}
.fc .l{font-family:'Andika',var(--font);font-size:40px;font-weight:700;color:var(--blue);line-height:1.05}
.fc .l.v{color:var(--pink)}
.fc .w{font-family:'Andika',var(--font);font-size:14.5px;font-weight:700;color:var(--ink3)}

#printsheet{display:none}
@media print{
  @page{size:A4;margin:9mm}
  body{background:#fff;background-image:none}
  .hdr,.wrap,.scrim,.sheet,.foot{display:none!important}
  #printsheet{display:block!important}
  .pg{display:grid;grid-template-columns:repeat(3,1fr)}
  .pc{border:1.4px dashed #b0b0b0;height:57mm;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:2mm;break-inside:avoid}
  .pc .e{font-size:29pt;line-height:1}
  .pc .l{font-family:'Andika',sans-serif;font-weight:700;font-size:42pt;line-height:1}
  .pc .w{font-family:'Andika',sans-serif;font-weight:700;font-size:12pt;color:#555}
}
.pane{display:none}
.pane.on{display:block;animation:fade .28s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.foot{text-align:center;color:var(--ink3);font-size:13.5px;padding:28px 16px 8px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ==================== ЗВУК НА ФИШКЕ НАБОРА ==================== */
/* Тянущиеся звуки можно послушать, взрывные — нет: без гласной они не
   произносятся, и синтез даёт «пэ», «кэ». Их говорит взрослый, и фишка
   помечена «вы», чтобы это было видно сразу, а не выяснялось нажатием. */
.chip.say{ cursor:pointer; font:inherit; text-align:center; border:0; }
.chip u{ display:block; text-decoration:none; font-size:11px; line-height:1.2; margin-top:2px; opacity:.75; }
.chip u.mute{ font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; opacity:.45; }
.chip.say:hover{ transform:translateY(-2px); }
.chip.say:active{ transform:translateY(0); }

/* ==================== ОТМЕТКА БЕГЛОСТИ ==================== */
.fluent{
  margin-top:7px; width:100%; border:1.5px dashed var(--hair); background:transparent;
  color:var(--ink2); border-radius:11px; padding:7px 0; font:inherit; font-size:13px;
  font-weight:700; cursor:pointer;
}
.fluent:hover{ border-color:var(--c,#22C55E); color:var(--ink); }
.fluent.on{ border-style:solid; border-color:#22C55E; background:#E6F9ED; color:#12A150; }
.col.done .chead{ opacity:.62; }

/* ==================== МАРШРУТ: ЖИВЫЕ КЛЕТКИ ==================== */
.wk .wbar{ height:4px; border-radius:99px; background:var(--hair); margin-top:8px; overflow:hidden; }
.wk .wbar i{ display:block; height:100%; width:0; border-radius:99px; background:#22C55E; transition:width .35s; }
.wk .wnum{ font-size:10.5px; color:var(--ink2); margin-top:4px; font-variant-numeric:tabular-nums; }
.wk.done{ border-color:#22C55E; background:#F2FCF6; }
.wk.done .n{ color:#12A150; }

/* ==================== ВОПРОСЫ К ТЕКСТУ ==================== */
.qs .qq{
  background:none; border:0; padding:0; font:inherit; font-size:inherit; color:var(--ink);
  cursor:pointer; text-align:left; border-bottom:1.5px dotted var(--hair);
}
.qs .qq:hover{ color:var(--blue); border-bottom-color:var(--blue); }
.qs .qru{ display:block; font-size:13px; color:var(--ink2); margin-top:2px; }
.qs li{ margin-bottom:9px; }

/* ==================== ТРЕНИРОВКА ==================== */
.dbig{
  font-size:clamp(38px,9vw,62px); font-weight:700; text-align:center; letter-spacing:.02em;
  margin:16px 0 14px; color:var(--ink); min-height:1.2em;
}
.dbig.hide{ color:transparent; text-shadow:0 0 18px rgba(0,0,0,.22); user-select:none; }
.pickrow{ display:flex; flex-wrap:wrap; gap:7px; margin:12px 0 4px; }
.dpair{ display:flex; flex-wrap:wrap; gap:11px; justify-content:center; margin:16px 0 6px; }
.pwbtn{
  flex:1 1 150px; max-width:230px; font:inherit; font-size:clamp(24px,5.4vw,34px); font-weight:700;
  padding:16px 10px; border-radius:16px; border:2px solid var(--hair); background:var(--card);
  color:var(--ink); cursor:pointer;
}
.pwbtn:hover:not(:disabled){ border-color:var(--blue); transform:translateY(-2px); }
.pwbtn:disabled{ cursor:default; }
.pwbtn.ok{ border-color:#22C55E; background:#E6F9ED; color:#12A150; }
.pwbtn.no{ border-color:#FF4D6D; background:#FFE8ED; color:#E0245E; }
