:root{--bg:#f9fafb;--ink:#1f2937;--ink2:#374151;--mute:#64748b;--line:#e5e7eb;--card:#fff;--blue:#2563eb;--blue-d:#1d4ed8;--blue-t:#dbeafe;--green:#16a34a;--green-t:#dcfce7;--red:#dc2626;--red-t:#fee2e2;--amber:#f59e0b;--felt1:#14532d;--felt2:#166534;--shadow:0 6px 20px #0f172a12}@media (prefers-color-scheme:dark){:root{--bg:#0f172a;--ink:#f1f5f9;--ink2:#cbd5e1;--mute:#94a3b8;--line:#263449;--card:#1e293b;--blue:#60a5fa;--blue-d:#93c5fd;--blue-t:#1e3a5f;--green:#4ade80;--green-t:#14391f;--red:#f87171;--red-t:#4a1d1d;--shadow:none}}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;font-family:Heebo,system-ui,-apple-system,Segoe UI,Arial,sans-serif;font-size:17px;line-height:1.5}button,input{font:inherit;color:inherit}h1{margin:.2em 0 .3em;font-size:1.6rem;line-height:1.25}h2{margin:.1em 0 .4em;font-size:1.2rem}h3{color:var(--ink2);margin:.9em 0 .4em;font-size:1rem}p{margin:.4em 0}.app{max-width:560px;margin:0 auto;padding:16px 16px 96px}.sub{color:var(--mute);margin-top:0}.hint{color:var(--mute);font-size:.88rem}.warn{color:var(--red);font-size:.9rem}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;margin:12px 0;padding:16px}.btn{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;min-height:48px;padding:10px 18px;font-weight:600;display:inline-flex}.tool .btn.primary,.summary .btn.primary,.verdict .btn,.lesson .btn.primary,.card>.btn.primary{width:100%}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover{background:var(--blue-d)}.btn.ghost{background:0 0}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible,.link:focus-visible,.opt:focus-visible,.nav button:focus-visible,.seg button:focus-visible,.slot:focus-visible,.rk:focus-visible,.su:focus-visible,input:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.link{color:var(--blue);cursor:pointer;background:0 0;border:0;min-height:44px;padding:8px 0}.link.danger{color:var(--red);margin-top:12px}input{border:1px solid var(--line);background:var(--card);border-radius:12px;width:100%;min-height:48px;margin:6px 0 10px;padding:10px 12px}label{margin-top:10px;font-weight:600;display:block}label.check{align-items:flex-start;gap:10px;margin:14px 0;font-weight:400;display:flex}label.check input{width:24px;min-height:24px;margin:3px 0 0}.row{justify-content:space-between;align-items:center;gap:12px;display:flex}.row2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.seg{gap:6px;margin:6px 0 10px;display:flex}.seg.wrap{flex-wrap:wrap}.seg button{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;flex:1;min-width:48px;min-height:44px;padding:8px 6px;font-size:15px}.seg button.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:700}.logo{background:radial-gradient(circle at 30% 30%,var(--felt2),var(--felt1));color:#fff;border:3px solid #d4a73a;border-radius:50%;place-items:center;width:64px;height:64px;margin:0 auto 8px;font-size:2rem;display:grid}.onb{margin-top:20px}.onb h1,.onb .lead{text-align:center}.lead{color:var(--mute)}.hello{justify-content:space-between;align-items:flex-start;display:flex}.streak{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:6px 12px;font-size:1.1rem;display:flex}.stars{letter-spacing:2px;font-size:1.6rem}.stars span{color:var(--line)}.stars span.on{color:var(--amber)}.xp{color:var(--blue);font-weight:700}.hero-card{background:linear-gradient(135deg,var(--blue-t),var(--green-t))}.cost{border-inline-start:5px solid var(--amber)}.nav{background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5;display:flex;position:fixed;bottom:0;left:0;right:0}.nav button{min-height:60px;color:var(--mute);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:0;padding:8px 4px;font-size:.8rem;display:flex}.nav button span{font-size:1.4rem}.nav button.on{color:var(--blue);font-weight:700}.unit{text-align:start;cursor:pointer;align-items:center;gap:12px;width:100%;display:flex}.unit .num{background:var(--blue-t);width:40px;height:40px;color:var(--blue);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.unit.done .num{background:var(--green-t);color:var(--green)}.unit .body{flex-direction:column;display:flex}.unit small{color:var(--mute);font-size:.85rem}.unit .best{color:var(--green)}.lesson .points{padding-inline-start:20px}.lesson .points li{margin:10px 0}.tip{background:var(--green-t);border-radius:12px;margin:12px 0;padding:12px}.session{padding-top:4px}.sess-head{justify-content:space-between;align-items:center;display:flex}.sess-title{font-weight:700}.progress{background:var(--line);border-radius:99px;height:8px;margin:6px 0 14px;overflow:hidden}.progress span{background:var(--blue);height:100%;transition:width .25s;display:block}.qmeta{color:var(--mute);justify-content:space-between;align-items:center;display:flex}.chip{background:var(--blue-t);color:var(--blue);border-radius:99px;padding:2px 10px;font-size:.85rem;font-weight:600}.qprompt{margin:.6em 0 .2em;font-size:1.3rem}.qsit{color:var(--mute);margin:.2em 0 .6em}.table-felt{background:radial-gradient(ellipse at center,var(--felt2),var(--felt1));color:#fff;border-radius:18px;flex-direction:column;gap:10px;margin:10px 0;padding:14px;display:flex;box-shadow:inset 0 0 0 3px #ffffff1f}.cardrow-wrap{flex-direction:column;align-items:center;gap:4px;display:flex}.cardrow-label{opacity:.85;font-size:.8rem}.felt-note{text-align:center;opacity:.8;margin:0;font-size:.85rem}.cardrow{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.pcard{background:#fff;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:44px;height:62px;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 2px 5px #00000059}.pcard.sm{width:36px;height:50px;font-size:.85rem}.pcard .r{font-size:1.15rem}.pcard .s{font-size:1.2rem}.pcard.red{color:#c81e1e}.pcard.blk{color:#111827}.pcard.back{background:repeating-linear-gradient(45deg,#1d4ed8,#1d4ed8 4px,#2563eb 4px 8px)}.options{gap:10px;margin:12px 0;display:grid}.opt{border:2px solid var(--line);background:var(--card);text-align:start;cursor:pointer;border-radius:14px;min-height:54px;padding:12px 14px;font-weight:500}.opt:hover:not(:disabled){border-color:var(--blue)}.opt.correct{border-color:var(--green);background:var(--green-t)}.opt.wrong{border-color:var(--red);background:var(--red-t)}.opt.dim{opacity:.55}.verdict{border-radius:14px;margin-top:8px;padding:14px}.verdict.ok{background:var(--green-t)}.verdict.bad{background:var(--red-t)}.verdict .btn{width:100%;margin-top:8px}.summary{text-align:center}.bigscore{color:var(--blue);font-size:3rem;font-weight:800}.bigscore small{color:var(--mute);font-size:1.2rem}.leaks{text-align:start}.wrong-item{border-top:1px solid var(--line);padding:8px 0}.skillrow{grid-template-columns:150px 1fr 40px;align-items:center;gap:8px;margin:8px 0;display:grid}.skillrow small{text-align:end;color:var(--mute)}.bar{background:var(--line);border-radius:99px;height:10px;overflow:hidden}.bar span{height:100%;display:block}.bar .g{background:var(--green)}.bar .y{background:var(--amber)}.bar .r{background:var(--red)}.log{color:var(--ink2);padding-inline-start:18px}.slots{flex-wrap:wrap;gap:8px;margin:6px 0 10px;display:flex}.slot{border:2px dashed var(--line);background:var(--card);cursor:pointer;border-radius:10px;place-items:center;min-width:54px;height:74px;padding:0 4px;display:grid}.slot.active{border-color:var(--blue);border-style:solid}.slot-empty{color:var(--mute);text-align:center;font-size:.72rem}.picker{background:var(--bg);border-radius:12px;margin:8px 0;padding:10px}.ranks{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.rk,.su{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;min-height:48px;font-size:1.1rem;font-weight:700}.rk.on{background:var(--blue);color:#fff;border-color:var(--blue)}.rk:disabled,.su:disabled{opacity:.3;cursor:not-allowed}.suits{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;display:grid}.su{min-height:56px;font-size:1.7rem}.su.red{color:#c81e1e}.result.good{border-color:var(--green);background:var(--green-t)}.result.bad{border-color:var(--red);background:var(--red-t)}.meter{background:var(--line);border-radius:99px;height:16px;margin:12px 0;position:relative;overflow:visible}.meter .eq{background:var(--blue);border-radius:99px;height:100%;display:block}.meter i{background:var(--ink);border-radius:2px;width:3px;height:26px;position:absolute;top:-5px}.facts{padding-inline-start:18px}.facts li{margin:6px 0}.grid13{direction:ltr;grid-template-columns:repeat(13,1fr);gap:2px;font-size:.62rem;display:grid}.grid13 .g{aspect-ratio:1;background:var(--line);color:var(--mute);border-radius:3px;place-items:center;font-weight:600;display:grid}.grid13 .g.on{background:var(--green);color:#fff}.grid13.big{gap:3px;font-size:.8rem}.gridbtn{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block;position:relative}.tap{color:var(--blue);margin-top:6px;font-size:.8rem;display:block}.modal{z-index:20;background:#0009;place-items:center;padding:10px;display:grid;position:fixed;inset:0}.modal-in{background:var(--card);border-radius:16px;width:100%;max-width:560px;padding:12px}.spec{word-break:break-word;font-size:.85rem}@media (width>=768px){.app{padding-top:28px}}@media (width<=360px){.skillrow{grid-template-columns:110px 1fr 36px}.pcard{width:40px;height:56px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.seg.wrap button{flex:22%;min-width:0}.rankbox{margin:8px 0}.rankbox .row{justify-content:space-between;margin-bottom:6px;display:flex}.rankbox small{color:var(--muted,#6b7280)}.weekgoal{font-weight:600}.badges{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.badge{text-align:center;border:1px solid var(--line);opacity:.45;filter:grayscale();border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.badge.got{opacity:1;filter:none;background:var(--green-t,#dcfce7)}.badge span{font-size:1.6rem}.badge b{font-size:.85rem}.badge small{font-size:.7rem}.prep{border-inline-start:4px solid var(--blue)}.spark{align-items:flex-end;gap:4px;height:52px;margin:8px 0;display:flex}.spark span{border-radius:3px;flex:1}.spark .w{background:var(--green)}.spark .l{background:var(--red)}.warn{color:var(--red)}.instant{background:var(--blue-t,#dbeafe);border-radius:10px;margin:8px 0;padding:8px 12px}
