/* Маша учит ПДД — тёмная «ночная печать»: глубокий тёплый фон со светом сверху и зерном, эмалевые карточки с мягкими тенями,
   объёмные кнопки, графичные образы на обложках разделов. Заголовки — Unbounded, текст — Onest.
   Этот файл отдаётся и странице входа сервера (server.py: .kicker, .field, .go, переменные --display, --acid, --hot). */
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;
  src:url('../fonts/onest-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;
  src:url('../fonts/onest-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400 800;font-display:swap;
  src:url('../fonts/unbounded-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400 800;font-display:swap;
  src:url('../fonts/unbounded-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --bg:#0D0B0A; --ink:#121110; --ink-2:#1D1B19; --ink-3:#2A2724; --edge:#3A3631; --deep:#0A0908;
  --surface:rgba(255,255,255,.055); --surface-2:rgba(255,255,255,.09); --hair:rgba(255,255,255,.09); --hair-2:rgba(255,255,255,.16);
  --enamel:linear-gradient(180deg,#27221F,#1C1816); --enamel-depth:#090807;
  --cream:#F3EBDD; --dim:#B3A99A; --mute:#8C847A; --faint:#5A544C;
  --red:#E5372A; --red-hi:#FF6A55; --red-lo:#8E1A13;
  --gold:#F5C542; --gold-hi:#FFE6A0; --gold-lo:#9A6A04;
  --green:#26B565; --green-hi:#5BE39A; --green-lo:#126236;
  --flame:#FF8A3D;
  --accent:var(--red); --ok:var(--green); --ok-edge:var(--green-hi); --coin:var(--gold);
  --r-s:12px; --r:18px; --r-l:26px;
  --lift:0 14px 34px rgba(0,0,0,.5);
  --text:'Onest','Helvetica Neue',-apple-system,'Segoe UI',sans-serif;
  --head:'Unbounded','Onest','Helvetica Neue',sans-serif;
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  /* прежние имена: их читает страница входа сервера */
  --display:var(--head); --acid:var(--accent); --hot:var(--accent);
  color-scheme:dark;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;color:var(--cream);font-family:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{background:
  radial-gradient(120% 55% at 50% -12%,rgba(150,52,32,.42) 0%,rgba(150,52,32,0) 62%),
  radial-gradient(90% 50% at 110% 108%,rgba(76,125,255,.10) 0%,transparent 60%),
  var(--bg)}
body::after{content:'';position:fixed;inset:0;z-index:70;pointer-events:none;opacity:.07;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;touch-action:manipulation;text-align:inherit;-webkit-tap-highlight-color:transparent}
button:disabled{cursor:default}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
[hidden]{display:none!important}
svg.ico{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
svg.ico.fill{fill:currentColor;stroke:none}

/* ── заставка */
#splash{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--bg);transition:opacity .35s ease}
#splash.gone{opacity:0;pointer-events:none}
.splash-mark{width:64px;height:64px;border-radius:20px;background:linear-gradient(180deg,var(--red-hi),var(--red));
  box-shadow:0 0 60px rgba(229,55,42,.5);animation:breathe 1.4s ease-in-out infinite}

/* ── каркас */
#app{height:100%;width:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;padding-top:var(--safe-t)}
.screen{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;animation:screen-in .3s cubic-bezier(.2,.9,.3,1)}
.scroll{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none}
.scroll::-webkit-scrollbar{display:none}
.scroll>*{flex:none}
.kicker{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}

/* ── кнопки: объёмные, с бликом и «глубиной» снизу */
.btn,.go{display:flex;align-items:center;justify-content:center;min-height:58px;padding:0 24px;border-radius:var(--r);border:0;
  font-family:var(--head);font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-align:center;
  transition:transform .08s ease,box-shadow .08s ease,filter .2s}
.btn.primary,.go{background:linear-gradient(180deg,var(--red-hi),var(--red));color:#fff;
  box-shadow:0 5px 0 var(--red-lo),0 14px 28px rgba(229,55,42,.3),inset 0 1px 0 rgba(255,255,255,.35)}
.btn.primary:active,.go:active{transform:translateY(4px);box-shadow:0 1px 0 var(--red-lo),0 6px 14px rgba(229,55,42,.25),inset 0 1px 0 rgba(255,255,255,.35)}
.btn.ghost{background:var(--surface);color:var(--cream);box-shadow:0 0 0 1px var(--hair-2) inset,0 4px 0 rgba(0,0,0,.45)}
.btn.ghost:active{transform:translateY(3px);box-shadow:0 0 0 1px var(--hair-2) inset,0 1px 0 rgba(0,0,0,.45)}
.btn.wide,.go.wide{width:100%}

/* ── верх дорожки: серия, кольцо очков дня, монеты */
.status{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px 8px}
.stat,.goal{display:flex;align-items:center;height:42px;border-radius:999px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;
  font-family:var(--head);font-weight:700;font-variant-numeric:tabular-nums}
.stat{gap:6px;padding:0 14px 0 9px;font-size:15px}
.stat.streak i{display:grid;font-size:22px;color:var(--faint)}
.stat.streak.lit i{color:var(--flame);filter:drop-shadow(0 0 7px rgba(255,138,61,.65))}
.goal{gap:9px;padding:0 15px 0 6px;font-size:13px}
.status .meter{position:relative;width:30px;height:30px;border-radius:50%;background:conic-gradient(var(--gold) calc(var(--p,0)*1%),rgba(255,255,255,.12) 0);
  -webkit-mask:radial-gradient(circle,transparent 9px,#000 10px);mask:radial-gradient(circle,transparent 9px,#000 10px)}
.status .meter i{display:none}
.goal.full .meter{filter:drop-shadow(0 0 6px rgba(245,197,66,.7))}
.meter{height:10px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}
.meter i{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--gold-hi),var(--gold));transition:width .5s cubic-bezier(.2,.9,.3,1)}
.coin{display:block;width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFF3BF,var(--gold) 45%,#B07D07);box-shadow:0 2px 0 #6E4E04}

/* ── дерево навыков: блоки, ряды навыков-кругов с кольцом прогресса и короной уровня, контрольные точки */
.road-scroll{padding:6px 16px 34px;gap:34px}
.block{display:flex;flex-direction:column;align-items:center;gap:26px}
.block-head{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding-top:6px}
.block-head small{font-size:10.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--hue)}
.block-head h2{font-family:var(--head);font-size:clamp(18px,5.6vw,22px);font-weight:800;line-height:1.15}
.tree-row{width:100%;display:flex;justify-content:center;gap:clamp(10px,5vw,30px)}
.skill{position:relative;flex:0 1 104px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:9px;transition:transform .12s ease}
.skill:active{transform:translateY(3px)}
.skill-ring{position:relative;width:min(92px,24vw);aspect-ratio:1;border-radius:50%;padding:6px;
  background:conic-gradient(var(--ring) calc(var(--p,0)*1%),rgba(255,255,255,.1) 0);box-shadow:0 10px 24px rgba(0,0,0,.45)}
.skill-disk{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,#fff,#E9E0CE);
  box-shadow:inset 0 -5px 0 rgba(0,0,0,.12),0 0 0 3px var(--bg)}
.skill-disk img{width:62%;height:62%;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.2))}
.crown{position:absolute;right:-6px;bottom:-4px;display:flex;align-items:center;gap:3px;height:26px;padding:0 8px 0 6px;border-radius:999px;
  background:linear-gradient(180deg,#3A332E,#26211E);color:var(--dim);font-family:var(--head);font-size:12px;box-shadow:0 0 0 3px var(--bg)}
.crown i{display:grid;font-size:13px}
.crown.gold{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#3A2A00;box-shadow:0 0 0 3px var(--bg),0 0 12px rgba(245,197,66,.55)}
.crown.lock{width:26px;padding:0;justify-content:center;font-size:13px}
.skill-name{width:100%;font-size:12px;font-weight:700;line-height:1.2;text-align:center;overflow-wrap:break-word;hyphens:auto;-webkit-hyphens:auto;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.skill.complete .skill-ring{background:conic-gradient(var(--gold) 100%,transparent 0);box-shadow:0 0 22px rgba(245,197,66,.4),0 10px 24px rgba(0,0,0,.45)}
.skill.locked .skill-ring{background:rgba(255,255,255,.06);box-shadow:none}
.skill.locked .skill-disk{background:linear-gradient(180deg,#2B2623,#1D1A18);box-shadow:0 0 0 3px var(--bg)}
.skill.locked .skill-disk img{filter:brightness(0) invert(1);opacity:.14}
.skill.locked .skill-name{color:var(--faint)}
.skill.current .skill-ring::after{content:'';position:absolute;inset:-8px;border-radius:50%;border:3px solid var(--ring);opacity:.6;animation:ring 1.8s ease-out infinite}
.checkpoint{display:flex;align-items:center;gap:14px;width:min(100%,360px);padding:14px 18px;border-radius:20px;text-align:left;
  background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;transition:transform .1s}
.checkpoint:active:not(:disabled){transform:translateY(3px)}
.cp-ico{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;font-size:22px;background:rgba(255,255,255,.08);color:var(--dim)}
.cp-text{display:flex;flex-direction:column;gap:3px}
.cp-text b{font-family:var(--head);font-size:14px;font-weight:700}
.cp-text small{font-size:12.5px;color:var(--dim)}
.checkpoint.locked{background:none;box-shadow:0 0 0 2px var(--hair) inset;opacity:.7}
.checkpoint.ready{background:linear-gradient(180deg,rgba(245,197,66,.2),rgba(245,197,66,.08));box-shadow:0 0 0 2px rgba(245,197,66,.6) inset,0 0 24px rgba(245,197,66,.18);animation:breathe 2.2s ease-in-out infinite}
.checkpoint.ready .cp-ico{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#3A2A00}
.checkpoint.passed .cp-ico{background:linear-gradient(180deg,#3DD782,#22A35B);color:#fff}
.checkpoint.passed small{color:var(--green-hi)}
.skill-sheet{gap:16px;max-height:100%;overflow-y:auto;overscroll-behavior:contain}
.sk-head{position:relative;overflow:hidden;isolation:isolate;display:flex;align-items:flex-end;gap:14px;min-height:96px;margin:-6px -4px 0;padding:14px;border-radius:20px;
  background:radial-gradient(circle at 100% 0,rgba(229,55,42,.3) 0 70px,transparent 71px),var(--enamel)}
.sk-head.has-cover{min-height:180px}
.sk-head .cover{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 32%}
.sk-head.has-cover::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(13,11,10,0) 25%,rgba(13,11,10,.94) 100%)}
.sk-sign{flex:none;display:grid;place-items:center;width:62px;height:62px;border-radius:50%;background:radial-gradient(circle at 50% 30%,#fff,#E9E0CE);box-shadow:0 4px 0 rgba(0,0,0,.4)}
.sk-sign img{width:66%;height:66%;object-fit:contain}
.sk-title small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.sk-title h2{margin-top:4px;font-size:clamp(17px,5vw,20px)}
.levels{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 10px;padding:6px 0}
.levels .node{width:50px;height:50px}
.levels .node.current{width:54px;height:54px}
.levels .face{font-size:18px}
.levels .badge{display:none}
.levels .node.done .face{background:radial-gradient(circle at 40% 30%,var(--gold-hi),var(--gold) 60%,#C98F08);color:#3A2A00;box-shadow:0 4px 0 var(--gold-lo),0 10px 18px rgba(0,0,0,.4)}
.btn-ico{display:grid;font-size:18px;margin-right:8px;color:var(--gold)}
.done-mark.miss{background:radial-gradient(circle at 50% 28%,#8A817A,#4E4741 60%,#2E2925);box-shadow:0 8px 0 #1C1916,0 20px 40px rgba(0,0,0,.5)}
.done-mark.miss::before{display:none}
.node{position:relative;flex:none;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;
  transition:transform .12s ease}
.node:not(:disabled):active{transform:translateY(4px)}
.face{position:absolute;inset:0;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 32%,#FFFFFF,#ECE3D2);color:#1A1613;font-family:var(--head);font-size:22px;font-weight:800;
  box-shadow:0 0 0 4px rgba(255,255,255,.2),0 6px 0 4px rgba(0,0,0,.55),0 14px 26px rgba(0,0,0,.45)}
.face img{width:62%;height:62%;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.18))}
.face svg.ico{font-size:28px}
.node.done .face{box-shadow:0 0 0 4px var(--gold),0 6px 0 4px var(--gold-lo),0 14px 26px rgba(0,0,0,.45)}
.node.check .face{background:radial-gradient(circle at 40% 30%,var(--gold-hi),var(--gold) 55%,#C98F08);color:#4A3300}
.node.current{width:86px;height:86px}
.node.current .face{box-shadow:0 0 0 5px var(--red),0 7px 0 5px var(--red-lo),0 18px 34px rgba(0,0,0,.5)}
.node.current::after{content:'';position:absolute;inset:-10px;border-radius:50%;border:3px solid rgba(229,55,42,.55);animation:ring 1.8s ease-out infinite}
.node.locked .face{background:linear-gradient(180deg,#2B2623,#1D1A18);color:var(--faint);box-shadow:0 0 0 1px var(--hair) inset,0 6px 0 0 #070606}
.node.locked .face svg.ico{font-size:24px}
.badge{position:absolute;right:-4px;bottom:-2px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#3A2A00;font-size:14px;
  background:radial-gradient(circle at 35% 30%,var(--gold-hi),var(--gold));box-shadow:0 0 0 3px var(--bg),0 2px 0 3px var(--gold-lo)}
.badge svg.ico{stroke-width:3.4}
.now{position:absolute;left:50%;top:-50px;z-index:2;padding:9px 14px;border-radius:14px;background:#fff;color:var(--red);
  font-family:var(--head);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
  box-shadow:0 4px 0 #CFC6B6,0 10px 20px rgba(0,0,0,.35);transform:translateX(-50%);animation:bob 1.6s ease-in-out infinite}
.now::after{content:'';position:absolute;left:50%;bottom:-7px;width:14px;height:14px;background:#fff;transform:translateX(-50%) rotate(45deg);border-radius:3px}
.cap{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ── нижняя навигация: стекло, значок и подпись */
.tabs{flex:none;display:flex;height:calc(68px + var(--safe-b));padding-bottom:var(--safe-b);background:rgba(14,12,11,.88);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 -1px 0 var(--hair)}
.tab{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--mute);text-align:center;transition:color .2s}
.tab-ico{display:grid;font-size:23px}
.tab span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:370px){.tab{font-size:10px;letter-spacing:0}.tab-ico{font-size:21px}}
.tab.on{color:var(--cream)}
.tab.on .tab-ico{color:var(--red-hi);filter:drop-shadow(0 0 8px rgba(255,106,85,.5))}
.tab.on::before{content:'';position:absolute;top:0;left:32%;right:32%;height:3px;border-radius:0 0 3px 3px;background:var(--red)}
.tab-n{position:absolute;top:7px;left:calc(50% + 8px);display:grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:999px;
  background:var(--red);color:#fff;font-size:10.5px;letter-spacing:0;box-shadow:0 0 0 2px var(--bg)}

/* ── урок */
.lesson-bar{flex:none;display:flex;align-items:center;gap:12px;padding:14px 16px 6px}
.close{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;
  color:var(--dim);font-size:18px}
.track{flex:1;height:16px;border-radius:999px;background:rgba(255,255,255,.08);box-shadow:inset 0 2px 4px rgba(0,0,0,.45);overflow:hidden}
.track i{position:relative;display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#FF8A3D,var(--red));
  box-shadow:0 0 16px rgba(255,100,60,.55);transition:width .5s cubic-bezier(.2,.9,.3,1)}
.track i::after{content:'';position:absolute;left:8px;right:8px;top:3px;height:4px;border-radius:2px;background:rgba(255,255,255,.38)}
.combo{flex:none;padding:6px 11px;border-radius:999px;background:linear-gradient(180deg,#FFA04D,#E8602A);color:#fff;
  font-family:var(--head);font-size:13px;font-weight:800;box-shadow:0 3px 0 #9C3A12,0 0 14px rgba(255,138,61,.45);animation:pop .35s cubic-bezier(.2,1.4,.4,1)}
.lesson-body{padding:10px 18px 18px;gap:16px}
.prompt{font-family:var(--head);font-size:clamp(20px,6vw,25px);font-weight:700;line-height:1.22}
.prompt.question,.prompt.long{font-family:var(--text);font-size:clamp(18px,5.2vw,21px);font-weight:700;line-height:1.32}
.prompt mark{background:none;color:inherit;box-shadow:inset 0 -.32em 0 rgba(229,55,42,.45)}
.card{background:radial-gradient(circle at 50% 30%,#fff,#EFE7D7);color:var(--ink)}
.sign-card{position:relative;align-self:center;display:grid;place-items:center;width:min(220px,52vw,27vh);aspect-ratio:1;margin:8px 0 10px;border-radius:36px;
  box-shadow:0 0 0 1px rgba(255,255,255,.7) inset,0 22px 50px rgba(0,0,0,.6),0 0 90px rgba(229,55,42,.22);animation:rise-pop .5s cubic-bezier(.2,1.3,.4,1)}
.sign-card img{width:74%;height:74%;object-fit:contain;filter:drop-shadow(0 4px 6px rgba(0,0,0,.18))}
/* образ: вырезка на чёрном листе; ролик перестройки поверх образа с первого кадра (без подмены на касании), знак svg ложится
   на последний кадр (там он 80% по центру), оттиск. Размер ниже карточки знака: под ним вопрос и три облика словами */
.obraz-card{position:relative;align-self:center;flex:none;width:min(250px,60vw,30vh);aspect-ratio:1;margin:4px 0 8px;overflow:hidden;
  border:5px solid var(--cream);background:var(--cream);transform:rotate(-2deg);box-shadow:6px 9px 0 rgba(0,0,0,.45),0 18px 40px rgba(0,0,0,.5);
  animation:obraz-in .5s cubic-bezier(.2,1.3,.4,1)}
.obraz-card>*{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.obraz-card .clip{opacity:0}
.obraz-card.ready .clip{opacity:1}
.obraz-card .sign{inset:10%;width:80%;height:80%;object-fit:contain;opacity:0}
.obraz-card.done .sign{opacity:1}
.obraz-card.done:not(.ready) .art{opacity:0}
.obraz-card.stamp{animation:stamp .42s cubic-bezier(.3,1.6,.5,1)}
.opts.looks .opt{min-height:56px;font-size:15.5px}
.opt.spent{opacity:.38}
.opt.spent .label{text-decoration:line-through;text-decoration-thickness:2px}
.shot{align-self:center;max-width:100%;line-height:0;border-radius:18px;overflow:hidden;box-shadow:0 0 0 1px var(--hair-2),var(--lift)}
.shot img{display:block;max-width:100%;max-height:28vh;object-fit:contain}
.opts{display:flex;flex-direction:column;gap:12px}
.opt{display:flex;align-items:center;min-height:62px;border-radius:var(--r);background:var(--enamel);color:var(--cream);font-size:16.5px;font-weight:700;text-align:left;
  box-shadow:0 0 0 1px var(--hair) inset,0 4px 0 var(--enamel-depth),inset 0 1px 0 rgba(255,255,255,.05);transition:transform .1s ease,box-shadow .1s ease,opacity .2s}
.opt:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 0 1px var(--hair) inset,0 1px 0 var(--enamel-depth)}
.opt .n{flex:none;width:30px;height:30px;margin:0 12px 0 14px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.08);
  font-family:var(--head);font-size:12px;color:var(--dim)}
.opt .label{flex:1;min-width:0;padding:14px 16px 14px 0;overflow-wrap:anywhere;line-height:1.28}
.opt.right{background:linear-gradient(180deg,#36CC78,#1F9A55);color:#fff;box-shadow:0 4px 0 var(--green-lo),0 12px 28px rgba(38,181,101,.35);animation:pop .4s cubic-bezier(.2,1.4,.4,1)}
.opt.right .n{background:rgba(255,255,255,.25);color:#fff}
.opt.wrong{background:linear-gradient(180deg,#F25742,#C9271C);color:#fff;box-shadow:0 4px 0 #7A150E;animation:shake .42s ease}
.opt.wrong .n{background:rgba(255,255,255,.22);color:#fff}
.opt:disabled:not(.right):not(.wrong){opacity:.38}
.opts.pics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.opts.pics .opt{position:relative;aspect-ratio:1;justify-content:center;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2);color:var(--ink);
  box-shadow:0 4px 0 #8F8572,0 12px 22px rgba(0,0,0,.35)}
.opts.pics .opt .n{position:absolute;left:7px;top:7px;width:22px;height:22px;margin:0;background:rgba(18,17,16,.78);color:#fff;font-size:10.5px}
.opts.pics .pic{width:72%;height:72%;object-fit:contain}
.opts.pics .opt.right{box-shadow:0 0 0 4px var(--green),0 4px 0 4px var(--green-lo),0 12px 26px rgba(38,181,101,.35)}
.opts.pics .opt.wrong{box-shadow:0 0 0 4px var(--red),0 4px 0 4px var(--red-lo)}
.skip-row{margin-top:auto;display:flex;justify-content:center;padding-top:6px}
.skip{padding:12px 18px;border-radius:999px;font-size:13px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.skip:active{background:var(--surface)}
.pairs{display:grid;grid-template-columns:clamp(72px,22vw,88px) minmax(0,1fr);gap:12px;align-items:start}
.pair-col{display:flex;flex-direction:column;gap:10px}
.pair{position:relative;padding:12px 14px;border-radius:16px;background:var(--enamel);color:var(--cream);font-size:14.5px;font-weight:700;line-height:1.3;
  text-align:left;overflow-wrap:break-word;box-shadow:0 0 0 1px var(--hair) inset,0 4px 0 var(--enamel-depth);transition:transform .15s ease,box-shadow .15s ease,background .2s,opacity .25s}
.pair.meaning{min-height:54px;display:flex;align-items:center}
.pair.sign{aspect-ratio:1;display:grid;place-items:center;padding:0;border-radius:18px;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2);box-shadow:0 4px 0 #8F8572}
.pair.sign img{position:absolute;inset:13%;width:74%;height:74%;object-fit:contain}   /* картинка не распирает плитку: высокие знаки (2.3.2) — тоже квадрат */
.pairs[data-choosing=meaning] .pair.meaning:not(.matched),.pairs[data-choosing=sign] .pair.sign:not(.matched){animation:target 1.1s ease-in-out infinite}
.pair.picked{transform:translateY(-3px);background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#2A1F00;
  box-shadow:0 0 0 3px var(--gold-hi),0 7px 0 var(--gold-lo),0 0 26px rgba(245,197,66,.55);animation:none!important}
.pair.sign.picked{background:radial-gradient(circle at 50% 32%,#FFFBEA,#FFE7A0)}
/* Найденные пары — один спокойный зелёный (оператор 04.10: разные цвета не нужны, синий слишком яркий); что с чем
   соединилось, показывает номер на знаке и на смысле. */
.pair{--mc:#2E8C57}
.pair.matched{transform:none;animation:pop .35s cubic-bezier(.2,1.4,.4,1)}
.pair.meaning.matched{background:rgba(46,140,87,.16);color:rgba(243,235,221,.85);box-shadow:0 0 0 2px rgba(91,227,154,.45) inset}
.pair.sign.matched{background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2);box-shadow:0 0 0 3px var(--mc),0 3px 0 3px rgba(0,0,0,.45)}
.pair-n{position:absolute;top:-8px;left:-8px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--mc);color:#fff;
  font-family:var(--head);font-size:11px;font-style:normal;font-weight:800;box-shadow:0 0 0 3px var(--bg)}
.pair.wrong{background:linear-gradient(180deg,#F25742,#C9271C)!important;color:#fff;box-shadow:0 0 0 3px #FF8A7E,0 4px 0 #7A150E!important;animation:shake .42s ease!important}
.note{font-size:14px;line-height:1.4;color:var(--dim)}

/* панель после ответа: выезжает снизу, цвет — верно или нет, медаль со значком у заголовка */
.dock{flex:none;display:flex;flex-direction:column;gap:14px;padding:20px 18px calc(18px + var(--safe-b));border-radius:28px 28px 0 0;color:var(--cream);
  background:linear-gradient(180deg,#17331F,#0E2116);box-shadow:0 -1px 0 rgba(91,227,154,.4),0 -24px 50px rgba(0,0,0,.55);animation:dock-up .42s cubic-bezier(.2,1.15,.3,1)}
.dock.no{background:linear-gradient(180deg,#3B1714,#25100D);box-shadow:0 -1px 0 rgba(255,122,110,.45),0 -24px 50px rgba(0,0,0,.55)}
.panel-text{display:flex;flex-direction:column;gap:7px;max-height:36vh;overflow-y:auto}
.panel-text>*{flex:none}
.panel-text h2{display:flex;align-items:center;gap:12px;font-family:var(--head);font-size:22px;font-weight:800;line-height:1.1;color:var(--green-hi)}
.panel-text h2::before{content:'';flex:none;width:36px;height:36px;border-radius:50%;box-shadow:0 4px 0 var(--green-lo);animation:pop .45s cubic-bezier(.2,1.5,.4,1);
  background:var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/20px no-repeat}
.dock.no .panel-text h2{color:#FF8A7E}
.dock.no .panel-text h2::before{box-shadow:0 4px 0 var(--red-lo);
  background:var(--red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 7l10 10M17 7L7 17' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round'/%3E%3C/svg%3E") center/18px no-repeat}
.panel-text p{font-size:15px;line-height:1.45;font-weight:500;color:rgba(243,235,221,.92)}
.panel-text .strong{font-weight:800;font-size:16px;color:var(--cream)}
.panel-text .hint{font-weight:600}
.panel-text .note{color:rgba(243,235,221,.6)}
.dock .btn.primary{background:linear-gradient(180deg,#3DD782,#22A35B);box-shadow:0 5px 0 var(--green-lo),0 14px 28px rgba(38,181,101,.3),inset 0 1px 0 rgba(255,255,255,.35)}
.dock .btn.primary:active{box-shadow:0 1px 0 var(--green-lo),inset 0 1px 0 rgba(255,255,255,.35)}
.dock.no .btn.primary{background:linear-gradient(180deg,var(--red-hi),var(--red));box-shadow:0 5px 0 var(--red-lo),0 14px 28px rgba(229,55,42,.3),inset 0 1px 0 rgba(255,255,255,.35)}
.dock.meet{background:linear-gradient(180deg,#231E1B,#171412);box-shadow:0 -1px 0 var(--hair-2),0 -24px 50px rgba(0,0,0,.5)}
.dock.meet .btn.primary{background:linear-gradient(180deg,var(--red-hi),var(--red));box-shadow:0 5px 0 var(--red-lo),0 14px 28px rgba(229,55,42,.3),inset 0 1px 0 rgba(255,255,255,.35)}

/* нижний лист и пауза */
.scrim{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:rgba(5,4,4,.66);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .2s ease}
.sheet{width:100%;max-width:520px;display:flex;flex-direction:column;gap:12px;padding:24px 18px calc(20px + var(--safe-b));border-radius:28px 28px 0 0;
  background:linear-gradient(180deg,#25201C,#191613);color:var(--cream);box-shadow:0 -1px 0 var(--hair-2);animation:dock-up .35s cubic-bezier(.2,1.15,.3,1)}
.sheet h2{font-family:var(--head);font-size:21px;font-weight:700;line-height:1.15}
.sheet p{font-size:15px;line-height:1.45;font-weight:500;color:var(--dim)}
.sheet-actions{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.pause{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:rgba(13,11,10,.94);
  font-family:var(--head);font-size:26px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}

/* ── итог урока: золотая медаль в лучах, конфетти, плитки */
.done{align-items:center;padding:0 20px calc(20px + var(--safe-b));overflow:hidden}
.done-main{position:relative;z-index:1;flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:18px;padding-top:56px;
  overflow-x:hidden;overflow-y:auto}   /* лучи медали шире экрана — обрезаются здесь, страница вбок не едет */
.done-main>*{flex:none}
.done-mark{position:relative;isolation:isolate;display:grid;place-items:center;width:150px;height:150px;border-radius:50%;color:#fff;font-size:72px;
  background:radial-gradient(circle at 50% 28%,#FFE9A8,var(--gold) 58%,#C68A06);
  box-shadow:0 8px 0 var(--gold-lo),0 22px 60px rgba(245,197,66,.38),inset 0 2px 0 rgba(255,255,255,.6);animation:medal .75s cubic-bezier(.2,1.4,.4,1)}
/* Лучи крутит угол градиента (--ray), а не transform: повёрнутый квадрат шире экрана и дал бы прокрутку вбок. */
@property --ray{syntax:'<angle>';inherits:false;initial-value:0deg}
.done-mark::before{content:'';position:absolute;inset:-62px;z-index:-1;border-radius:50%;
  background:repeating-conic-gradient(from var(--ray),rgba(245,197,66,.3) 0deg 7deg,transparent 7deg 20deg);
  -webkit-mask:radial-gradient(circle,#000 38%,transparent 70%);mask:radial-gradient(circle,#000 38%,transparent 70%);animation:rays 24s linear infinite}
.done-mark svg.ico{stroke-width:3.2;filter:drop-shadow(0 2px 0 rgba(120,80,0,.5))}
.done h1{margin-top:22px;font-family:var(--head);font-size:clamp(23px,7vw,28px);font-weight:800;line-height:1.12;text-align:center}
.lead{margin-top:-8px;font-size:15px;font-weight:600;color:var(--dim);text-align:center}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%}
.tile{padding:14px 12px;border-radius:18px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;color:var(--cream);animation:rise .5s cubic-bezier(.2,.9,.3,1) both}
.tile:nth-child(2){animation-delay:.08s}.tile:nth-child(3){animation-delay:.16s}
.tile b{display:block;font-family:var(--head);font-size:clamp(19px,6vw,25px);font-weight:800;line-height:1;color:var(--gold)}
#tile-accuracy b{color:var(--green-hi)}
.tile.hot{background:linear-gradient(180deg,var(--red-hi),var(--red));box-shadow:0 5px 0 var(--red-lo)}
.tile.hot b{color:#fff}
.tile span{display:block;margin-top:9px;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.tile.hot span{color:rgba(255,255,255,.85)}
.goalnote{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:18px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;
  font-size:15px;font-weight:700;line-height:1.35}
.goalnote.done{flex-direction:row;align-items:center;gap:12px;background:linear-gradient(180deg,rgba(255,138,61,.16),rgba(255,138,61,.06));box-shadow:0 0 0 1px rgba(255,138,61,.35) inset}
.goalnote.done i{display:grid;font-size:28px;color:var(--flame);filter:drop-shadow(0 0 8px rgba(255,138,61,.7))}
.goalnote .meter{width:100%}
.confetti{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;top:-24px;left:var(--cx);width:8px;height:15px;border-radius:2px;opacity:0;background:var(--gold);
  animation:fall 2.8s var(--cd) cubic-bezier(.3,.6,.4,1) forwards}
.confetti i:nth-child(4n+1){background:var(--red-hi)}.confetti i:nth-child(4n+2){background:var(--green-hi)}.confetti i:nth-child(4n+3){background:#7FA2FF}

/* ── настройки, вкладки, формы */
.form{display:flex;flex-direction:column;gap:14px;padding:22px 18px 30px}
.form h1{font-family:var(--head);font-size:clamp(23px,7vw,27px);font-weight:800;line-height:1.12}
.switch{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:0 16px;border-radius:var(--r);
  background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;font-size:16.5px;font-weight:700}
.switch i{flex:none;position:relative;display:block;width:54px;height:32px;border-radius:999px;background:rgba(255,255,255,.14);transition:background .2s}
.switch i::after{content:'';position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.35);transition:transform .25s cubic-bezier(.2,1.3,.4,1)}
.switch[aria-checked=true] i{background:linear-gradient(180deg,#3DD782,#22A35B)}
.switch[aria-checked=true] i::after{transform:translateX(22px)}
.field{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.field label{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.field input{width:100%;height:54px;padding:0 14px;border-radius:14px;border:0;background:var(--surface);box-shadow:0 0 0 1px var(--hair-2) inset;color:var(--cream);
  font:inherit;font-size:20px;font-weight:600}
.field input:focus{outline:none;box-shadow:0 0 0 2px var(--gold) inset}
.field small{font-size:13px;line-height:1.45;color:var(--mute)}
.sub{margin-top:10px;font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}

/* ── конспект темы */
.notes-btn{align-self:flex-start;display:flex;align-items:center;gap:8px;margin-top:12px;padding:9px 14px;border-radius:999px;background:var(--surface);
  box-shadow:0 0 0 1px var(--hair-2) inset;color:var(--cream);font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.notes-btn i{display:grid;font-size:16px;color:var(--gold)}
.notes-body{padding:6px 18px 26px;gap:14px}
.notes h1{font-family:var(--head);font-size:clamp(20px,6vw,25px);font-weight:800;line-height:1.15}
.notes .about{font-size:16px;line-height:1.5;font-weight:500;color:rgba(243,235,221,.92)}
.notes-part h2{font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.notes-part ul{list-style:none;display:flex;flex-direction:column;gap:10px;margin-top:10px}
.notes-part li{padding:12px 14px;border-radius:14px;background:var(--surface);box-shadow:inset 3px 0 0 var(--red),0 0 0 1px var(--hair) inset;font-size:15px;line-height:1.5}

/* ── знакомство с новым знаком */
.meaning{font-size:17px;font-weight:600;line-height:1.4;color:rgba(243,235,221,.95)}
.memo{padding:12px 14px;border-radius:14px;background:rgba(245,197,66,.08);box-shadow:inset 3px 0 0 var(--gold);font-size:15px;line-height:1.45;color:var(--cream)}

/* ── экзамен */
.rules{list-style:none;display:flex;flex-direction:column;gap:10px}
.rules li{position:relative;padding-left:18px;font-size:14px;line-height:1.45;color:var(--dim)}
.rules li::before{content:'';position:absolute;left:0;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--red)}
.tickets{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.tk{display:grid;place-items:center;height:50px;border-radius:14px;background:var(--enamel);box-shadow:0 0 0 1px var(--hair) inset,0 3px 0 var(--enamel-depth);
  font-family:var(--head);font-size:14px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums;transition:transform .1s}
.tk:active{transform:translateY(2px)}
.tk.ok{background:linear-gradient(180deg,#36CC78,#1F9A55);color:#fff;box-shadow:0 3px 0 var(--green-lo)}
.tk.no{background:linear-gradient(180deg,#F25742,#C9271C);color:#fff;box-shadow:0 3px 0 #7A150E}
.history{list-style:none;display:flex;flex-direction:column;gap:8px}
.history li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:2px 12px;align-items:baseline;padding:12px 14px;border-radius:14px;
  background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;font-size:14px}
.history b{font-family:var(--head);font-variant-numeric:tabular-nums}
.history em{font-style:normal;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.history .ok em{color:var(--green-hi)}
.history .no em{color:#FF8A7E}
.history small{grid-column:1/-1;color:var(--mute)}
.timer{flex:none;min-width:60px;padding:7px 10px;border-radius:999px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;text-align:center;
  font-family:var(--head);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.timer.low{color:#fff;background:linear-gradient(180deg,var(--red-hi),var(--red));box-shadow:0 0 14px rgba(229,55,42,.5);animation:breathe 1s ease-in-out infinite}
.opt.picked{background:linear-gradient(180deg,#3A332E,#2B2522);box-shadow:0 0 0 2px var(--cream) inset,0 4px 0 var(--enamel-depth)}
.opt.picked .n{background:var(--cream);color:var(--ink)}
.result-body{padding:24px 18px 8px;gap:14px}
.result-body h1{font-family:var(--head);font-size:clamp(25px,8vw,31px);font-weight:800;line-height:1.08}
.result-body h1.pass{color:var(--green-hi);text-shadow:0 0 24px rgba(91,227,154,.35)}
.result-body h1.fail{color:#FF7A6E;text-shadow:0 0 24px rgba(255,122,110,.3)}
.result-body .reason{margin-top:-6px;font-size:15px;font-weight:600;color:var(--dim)}
.result-body .lead{margin:0;text-align:left}
.exam-result>.btn{flex:none;width:auto;margin:8px 18px calc(18px + var(--safe-b))}
.rev{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:20px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;color:var(--cream)}
.rev h3{font-size:16px;font-weight:700;line-height:1.35}
.rev .row{display:flex;flex-direction:column;gap:3px;font-size:14.5px;line-height:1.4;font-weight:600}
.rev .row b{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.rev .row.no b{color:#FF8A7E}
.rev .row.ok b{color:var(--green-hi)}
.rev .why{font-size:14px;line-height:1.5;color:var(--dim)}

/* ── работа над ошибками */
.intro{font-size:14.5px;line-height:1.45;color:var(--dim)}
.tiles.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 18px;border-radius:22px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;text-align:center}
.empty b{font-family:var(--head);font-size:20px;font-weight:800;color:var(--green-hi)}
.empty p{font-size:14px;line-height:1.45;color:var(--dim)}
.minis{display:flex;flex-wrap:wrap;gap:8px}
.mini{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2);box-shadow:0 3px 0 #8F8572}
.mini img{width:34px;height:34px;object-fit:contain}
.qlist{list-style:none;display:flex;flex-direction:column;gap:8px}
.qlist li{padding:10px 12px;border-radius:12px;background:var(--surface);font-size:14px;line-height:1.4;color:var(--dim);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ── альбом знаков: обложка-отпечаток, оглавление, страница-бумага с местами под наклейки, карточка знака */
.album-body{padding:16px 16px 28px;gap:14px}
.album-cover{position:relative;overflow:hidden;min-height:250px;margin:6px 10px 10px 4px;padding:22px 20px 20px 34px;border-radius:10px 22px 22px 10px;
  display:flex;flex-direction:column;justify-content:space-between;gap:16px;color:#16120F;transform:rotate(-1.2deg);
  background:radial-gradient(circle at 50% 30%,#F8F1E3,#E9DFCB);box-shadow:inset 14px 0 0 #221D1A,inset 16px 0 0 rgba(255,255,255,.25),12px 14px 0 #070606,var(--lift)}
.ac-circle{position:absolute;right:-34px;top:-30px;width:150px;height:150px;border-radius:50%;background:var(--red)}
.ac-tri{position:absolute;right:30px;top:70px;width:0;height:0;border-left:44px solid transparent;border-right:44px solid transparent;border-top:78px solid #16120F}
.ac-diamond{position:absolute;left:46%;top:118px;width:44px;height:44px;background:#2B55C8;transform:rotate(45deg);opacity:.9}
.ac-text{position:relative;max-width:62%}
.ac-text small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.ac-text h1{margin-top:8px;font-family:var(--head);font-size:clamp(22px,7vw,27px);font-weight:800;line-height:1.08}
.ac-count{position:relative;display:flex;align-items:baseline;gap:2px;font-family:var(--head);font-weight:800}
.ac-count b{font-size:32px;line-height:1}
.ac-count span{font-size:16px}
.ac-count em{margin-left:auto;font-family:var(--text);font-style:normal;font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.album-cover .meter{position:relative;background:rgba(22,18,15,.14)}
.album-cover .meter i{background:#16120F}
.album-rows{display:flex;flex-direction:column;gap:10px}
.album-row{position:relative;display:flex;align-items:center;gap:12px;min-height:66px;padding:10px 14px 10px 12px;border-radius:var(--r);background:var(--enamel);
  box-shadow:inset 5px 0 0 var(--hue),0 0 0 1px var(--hair) inset,0 4px 0 var(--enamel-depth);transition:transform .1s}
.album-row:active{transform:translateY(3px)}
.ar-ico{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2)}
.ar-ico img{width:40px;height:40px;object-fit:contain}
.ar-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ar-text b{font-size:15.5px;font-weight:800;line-height:1.2}
.ar-text small{font-size:12.5px;color:var(--dim)}
.ar-count{flex:none;font-family:var(--head);font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.ar-count span{color:var(--mute);font-size:12px}
.ar-dot{position:absolute;top:10px;right:10px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold)}

.ap-bar{flex:none;display:flex;align-items:center;gap:12px;padding:12px 16px 10px}
.ap-title{flex:1;min-width:0}
.ap-title small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.ap-title h1{font-family:var(--head);font-size:clamp(16px,4.8vw,19px);font-weight:700;line-height:1.2}
.ap-count{flex:none;padding:7px 11px;border-radius:999px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset;font-family:var(--head);font-size:13px;font-variant-numeric:tabular-nums}
.ap-scroll{padding:6px 12px 20px}
.paper{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 10px;padding:20px 12px 24px;border-radius:6px 14px 14px 6px;color:#16120F;
  background:radial-gradient(circle at 50% 0,#F8F1E3,#ECE2CE);box-shadow:inset 3px 0 0 var(--hue),inset 12px 0 18px -10px rgba(0,0,0,.25),8px 10px 0 #070606,var(--lift)}
.place{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;min-width:0}
.place small{margin-top:4px;font-size:10px;font-weight:800;letter-spacing:.06em;color:#6E6458}
.place .pname{font-size:12px;font-weight:700;line-height:1.18;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sticker{display:grid;place-items:center;width:min(88px,24vw);aspect-ratio:1;border-radius:12px;background:#fff;transform:rotate(var(--tilt,0deg));
  box-shadow:0 0 0 4px #fff,2px 4px 0 4px rgba(0,0,0,.18),0 10px 16px rgba(0,0,0,.18)}
.sticker img{width:80%;height:80%;object-fit:contain}
.slot{display:grid;place-items:center;width:min(88px,24vw);aspect-ratio:1;border-radius:10px;border:2px dashed #A79C8B}
.slot img{width:70%;height:70%;object-fit:contain}
.place.new .slot img{filter:brightness(0);opacity:.13}
.place.new .pname{color:#9A8F7F}
.place.met .slot img{opacity:.5;filter:grayscale(.5)}
.place .tag{position:absolute;top:-8px;right:2px;padding:3px 7px;border-radius:999px;background:var(--red);color:#fff;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.place.ready .sticker{box-shadow:0 0 0 4px #fff,0 0 0 7px var(--gold),0 0 24px rgba(245,197,66,.8);animation:glow 1.4s ease-in-out infinite}
.place .tag.stick{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#3A2A00;box-shadow:0 2px 0 var(--gold-lo)}
.place.just .sticker{animation:stick .55s cubic-bezier(.2,1.5,.4,1)}
.ap-foot{flex:none;display:flex;flex-direction:column;gap:8px;padding:10px 16px calc(14px + var(--safe-b))}
.ap-hint{font-size:13px;font-weight:600;text-align:center;color:var(--dim)}
.sign-sheet{max-height:88vh;overflow-y:auto}
.ss-head{display:flex;align-items:center;gap:16px}
.sticker.big{flex:none;width:96px;border-radius:14px}
.ss-head small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.ss-head h2{margin-top:4px}
.memo-box{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:16px;background:rgba(245,197,66,.08);box-shadow:inset 3px 0 0 var(--gold)}
.memo-box img{flex:none;width:84px;height:84px;border-radius:10px;object-fit:cover}
.memo-box small{font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.memo-box p{margin-top:4px;font-size:14.5px;line-height:1.45;color:var(--cream)}
.chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.chip{padding:9px 10px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--hair) inset}
.chip small{display:block;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.chip b{display:block;margin-top:4px;font-size:14px;font-weight:800}
.chip.ok{background:linear-gradient(180deg,#36CC78,#1F9A55);box-shadow:none}.chip.ok small{color:rgba(255,255,255,.85)}
.chip.gold{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#3A2A00;box-shadow:none}.chip.gold small{color:#6B4E00}
.chip.dash{background:none;box-shadow:0 0 0 1px var(--hair-2) inset;color:var(--dim)}

/* ── «Новая наклейка!»: наклейка в золотых лучах, «Вклеить в альбом» — она улетает вниз */
.sticker-new{align-items:center;padding:0 20px calc(20px + var(--safe-b));overflow:hidden}
.sn-main{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;overflow:hidden}
.sn-main h1{font-family:var(--head);font-size:clamp(23px,7vw,28px);font-weight:800;line-height:1.12}
.sn-rays{position:relative;isolation:isolate;display:grid;place-items:center;width:250px;max-width:100%;aspect-ratio:1;margin:6px 0}
.sn-rays::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:50%;
  background:repeating-conic-gradient(from var(--ray),rgba(245,197,66,.34) 0deg 7deg,transparent 7deg 20deg);
  -webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);mask:radial-gradient(circle,#000 30%,transparent 70%);animation:rays 20s linear infinite}
.sticker-new .sticker.big{width:150px;border-radius:18px;animation:medal .7s cubic-bezier(.2,1.4,.4,1)}
.sn-name{font-size:19px;font-weight:800}
.sn-more{display:flex;gap:12px;justify-content:center;margin:4px 0 6px}
.sn-more .sticker{width:56px}
.sticker-new.stuck .sticker{transition:transform .6s cubic-bezier(.5,0,.8,.4),opacity .6s;transform:translateY(60vh) scale(.3) rotate(20deg);opacity:0}

/* ── билеты: знаки из текста (кремовые «наклейки» с кодом), плашка пункта ПДД, главная мысль, опора, правило перед темой */
.refs{display:flex;flex-direction:column;gap:8px}
.refs-label{font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.refs-row{display:flex;flex-wrap:wrap;gap:10px 12px}
.ref{display:flex;flex-direction:column;align-items:center;gap:5px;width:58px;transition:transform .1s ease}
.ref:active{transform:translateY(3px)}
.ref-tile{display:grid;place-items:center;width:56px;height:56px;border-radius:14px;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2);box-shadow:0 3px 0 #8F8572}
.ref-tile img{width:42px;height:42px;object-fit:contain}
.ref small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:800;letter-spacing:.04em;color:var(--dim)}
.opt-refs{flex:none;display:flex;gap:6px;margin-right:12px}
.opt-refs img{width:auto;min-width:44px;max-width:92px;height:44px;padding:3px;object-fit:contain;border-radius:9px;background:radial-gradient(circle at 50% 32%,#fff,#ECE3D2)}
/* в панели ответа знаки разбора закреплены над кнопкой: текст разбора прокручивается, знаки остаются на виду */
.dock>.refs{flex:none;gap:6px;margin-bottom:-4px}
.dock .refs-label{color:rgba(243,235,221,.6)}
.dock .refs-row{gap:6px 10px}
.dock .ref{width:50px;gap:3px}
.dock .ref-tile{width:46px;height:46px;border-radius:12px}
.dock .ref-tile img{width:34px;height:34px}
.dock .ref small{color:rgba(243,235,221,.75)}
.rule-main{display:flex;flex-direction:column;gap:16px;margin:auto 0}
.point{align-self:flex-start;padding:5px 11px;border-radius:999px;background:rgba(255,255,255,.1);box-shadow:0 0 0 1px rgba(255,255,255,.2) inset;
  font-family:var(--head);font-size:10.5px;font-weight:700;letter-spacing:.08em;line-height:1.3;text-transform:uppercase}
.why b{font-weight:800;color:var(--cream)}
.anchor{padding:10px 12px;border-radius:14px;background:rgba(245,197,66,.1);box-shadow:inset 3px 0 0 var(--gold)}
.anchor small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.panel-text .anchor p,.rev .anchor p{margin-top:4px;font-size:14px;line-height:1.4;color:var(--cream)}
.rule-dots{flex:1;display:flex;align-items:center;justify-content:center;gap:8px}
.rule-dots i{display:block;width:10px;height:10px;border-radius:5px;background:rgba(255,255,255,.14);transition:width .3s cubic-bezier(.2,.9,.3,1),background .3s}
.rule-dots i.on{width:28px;background:linear-gradient(90deg,#FF8A3D,var(--red))}
.rule-topic{font-family:var(--head);font-size:clamp(17px,5vw,21px);font-weight:700;line-height:1.2;color:var(--dim)}
.rule-card{position:relative;padding:22px 20px 24px 26px;border-radius:22px;background:var(--enamel);color:var(--cream);
  box-shadow:inset 6px 0 0 var(--red),0 0 0 1px var(--hair) inset,0 5px 0 var(--enamel-depth),var(--lift);animation:rise-pop .45s cubic-bezier(.2,1.3,.4,1)}
.rule-card p{font-size:clamp(19px,5.6vw,23px);font-weight:700;line-height:1.38}

/* ── движение: только CSS (правило 8 — без requestAnimationFrame) */
@keyframes target{50%{box-shadow:0 0 0 2px rgba(245,197,66,.75) inset,0 4px 0 var(--enamel-depth),0 0 14px rgba(245,197,66,.25)}}
@keyframes glow{50%{box-shadow:0 0 0 4px #fff,0 0 0 7px var(--gold-hi),0 0 34px rgba(245,197,66,1)}}
@keyframes stick{0%{transform:scale(1.5) rotate(-14deg);opacity:0}60%{transform:scale(.94) rotate(var(--tilt,0deg));opacity:1}100%{transform:rotate(var(--tilt,0deg))}}
@keyframes screen-in{from{opacity:0;transform:translateY(10px)}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}
@keyframes rise-pop{0%{opacity:0;transform:scale(.86) translateY(10px)}100%{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.92)}55%{transform:scale(1.05)}100%{transform:scale(1)}}
@keyframes stamp{0%,100%{transform:rotate(-2deg) scale(1)}35%{transform:rotate(-2deg) scale(1.04)}}
@keyframes obraz-in{0%{opacity:0;transform:rotate(-7deg) scale(.86) translateY(12px)}100%{opacity:1;transform:rotate(-2deg)}}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@keyframes dock-up{from{transform:translateY(100%)}}
@keyframes fade{from{opacity:0}}
@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-5px)}}
@keyframes ring{0%{transform:scale(.92);opacity:.9}100%{transform:scale(1.25);opacity:0}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes medal{0%{transform:scale(.3) rotate(-30deg);opacity:0}70%{transform:scale(1.08) rotate(4deg);opacity:1}100%{transform:none}}
@keyframes rays{to{--ray:360deg}}
@keyframes fall{0%{opacity:1;transform:translateY(0) rotate(var(--cr,0deg))}100%{opacity:0;transform:translateY(110vh) rotate(calc(var(--cr,0deg) + 560deg))}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.daily-card { flex: none; display: flex; flex-direction: column; gap: 6px; margin: 10px 16px; padding: 16px 20px; text-align: left; color: var(--ink, #121110); background: #EFE7D6; border: 2px solid #F5C542; border-radius: 16px; box-shadow: 0 4px 0 #F5C542; }
.daily-card b { font-size: 22px; }
.daily-card span { font-size: 14px; }
.daily-card:active { transform: translateY(2px); box-shadow: 0 2px 0 #F5C542; }
.done > .btn.ghost { flex: none; margin-top: 0; }
.prompt-lead{margin-bottom:-8px;font-size:13px;font-weight:600;line-height:1.3;color:var(--dim)}
