:root{--bg:#f4f7f6;--card:#fff;--ink:#14231f;--mute:#5b6f69;--line:#dfe7e4;--brand:#0f766e;--brand2:#14b8a6;--brandsoft:#e0f4f1;--warn:#b45309;--warnsoft:#fef3c7;--bad:#b91c1c;--badsoft:#fee2e2;--ok:#15803d;--oksoft:#dcfce7;--c1:#0f766e;--c2:#d97706;--c3:#4f46e5;--c4:#be185d;--r:16px;--sh:0 1px 2px rgba(16,40,34,.06),0 4px 16px rgba(16,40,34,.05);--side:264px;--tab:62px}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d1514;--card:#142120;--ink:#e6f0ed;--mute:#98b0aa;--line:#24383a;--brand:#2dd4bf;--brand2:#0f766e;--brandsoft:#10302e;--warn:#fbbf24;--warnsoft:#33270b;--bad:#f87171;--badsoft:#3a1616;--ok:#4ade80;--oksoft:#10301a;--c1:#2dd4bf;--c2:#fbbf24;--c3:#a5b4fc;--c4:#f472b6;--sh:none}}
:root[data-theme=dark]{--bg:#0d1514;--card:#142120;--ink:#e6f0ed;--mute:#98b0aa;--line:#24383a;--brand:#2dd4bf;--brand2:#0f766e;--brandsoft:#10302e;--warn:#fbbf24;--warnsoft:#33270b;--bad:#f87171;--badsoft:#3a1616;--ok:#4ade80;--oksoft:#10301a;--c1:#2dd4bf;--c2:#fbbf24;--c3:#a5b4fc;--c4:#f472b6;--sh:none}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;min-height:100vh;min-height:100dvh}
h1,h2,h3{line-height:1.25;margin:0 0 .5em;letter-spacing:-.01em}h1{font-size:1.65rem}h2{font-size:1.2rem}h3{font-size:1.02rem}
a{color:var(--brand);text-decoration:none}p{margin:.4em 0 .8em}
#app{display:flex;min-height:100vh;min-height:100dvh}
#side{display:none;width:var(--side);flex:none;position:sticky;top:0;height:100vh;height:100dvh;overflow:auto;padding:20px 14px;border-right:1px solid var(--line);background:var(--card)}
#main{flex:1;min-width:0;padding:max(18px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) calc(var(--tab) + 28px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));max-width:1100px;margin:0 auto;width:100%;outline:none}
.brand{display:flex;gap:10px;align-items:center;font-weight:700;margin:0 6px 18px}.brand .logo{width:36px;height:36px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:20px}.brand small{display:block;font-weight:500;color:var(--mute);font-size:.72rem}
#side a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:12px;color:var(--ink);font-size:.95rem}#side a:hover{background:var(--brandsoft)}#side a.on{background:var(--brand);color:#fff}
#side .sec{margin:16px 12px 6px;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute)}
#tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:20}
#tabbar a{flex:1;text-align:center;color:var(--mute);font-size:.68rem;padding:4px 0;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:1px}#tabbar a b{font-size:1.25rem;font-weight:400;line-height:1.2}#tabbar a.on{color:var(--brand);font-weight:600}
@media (min-width:900px){#side{display:block}#tabbar{display:none}#main{padding:28px 32px 60px}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh);margin-bottom:14px}
.card.flat{box-shadow:none}.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.hero{background:linear-gradient(135deg,var(--brand),#0b4f4a);color:#fff;border-radius:22px;padding:22px;margin-bottom:16px}.hero h1{margin-bottom:.2em}.hero p{opacity:.9;margin:0}
.hero .btn{background:#fff;color:#0b4f4a;border:0}.hero .btn.ghost{background:rgba(255,255,255,.16);color:#fff}
.stat{padding:14px 16px}.stat .n{font-size:1.7rem;font-weight:700;letter-spacing:-.02em}.stat .l{color:var(--mute);font-size:.82rem}
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:12px;background:var(--brand);color:#fff;border:1px solid var(--brand);font:inherit;font-size:.92rem;font-weight:600;cursor:pointer;min-height:44px}.btn.ghost{background:transparent;color:var(--brand)}.btn.sm{padding:6px 12px;min-height:36px;font-size:.84rem}.btn.bad{background:var(--bad);border-color:var(--bad)}.btn:disabled{opacity:.5}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.sp{flex:1}
input,select,textarea{font:inherit;font-size:16px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-height:44px;max-width:100%}textarea{width:100%;min-height:110px;resize:vertical}input[type=search],input[type=text]{width:100%}
input[type=checkbox]{min-height:0;width:20px;height:20px;accent-color:var(--brand)}label{font-size:.85rem;color:var(--mute);display:block;margin-bottom:3px}
.chip{display:inline-block;padding:2px 10px;border-radius:99px;background:var(--brandsoft);color:var(--brand);font-size:.75rem;font-weight:600;margin:0 4px 4px 0}.chip.warn{background:var(--warnsoft);color:var(--warn)}.chip.ok{background:var(--oksoft);color:var(--ok)}.chip.mute{background:var(--line);color:var(--mute)}
.bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand2));border-radius:99px}
.lesson-item{display:block;color:inherit;padding:14px 16px}.lesson-item h3{margin:0 0 4px}.lesson-item p{color:var(--mute);font-size:.88rem;margin:0}.lesson-item .meta{margin-bottom:6px}
.mod{display:block;color:inherit}.mod .ic{font-size:1.7rem}.mod h3{margin:.3em 0 .1em}.mod p{color:var(--mute);font-size:.85rem;margin:0 0 10px}
.filters{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:10px 0}
.tog{display:flex;gap:6px;flex-wrap:wrap}.tog button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:99px;padding:6px 12px;font:inherit;font-size:.84rem;min-height:36px;cursor:pointer}.tog button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.sect{margin:0 0 14px}.sect>h2{display:flex;align-items:center;gap:8px;font-size:1.05rem;color:var(--brand);margin-bottom:.4em}
.formula{background:var(--brandsoft);border-left:4px solid var(--brand);padding:12px 14px;border-radius:10px;white-space:pre-wrap}
.callout{background:var(--warnsoft);border-left:4px solid var(--warn);padding:10px 14px;border-radius:10px}
ol.steps{padding-left:1.3em;margin:.3em 0}ol.steps li{margin:.35em 0}ul.chk{list-style:none;padding:0;margin:0}ul.chk li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line)}ul.chk li:last-child{border:0}
details.term{display:inline-block;margin:0 6px 6px 0;vertical-align:top}details.term summary{cursor:pointer;list-style:none;display:inline-block;padding:3px 11px;border-radius:99px;background:var(--brandsoft);color:var(--brand);font-size:.82rem;font-weight:600}details.term[open]{display:block;width:100%}details.term .def{padding:8px 4px;color:var(--mute);font-size:.9rem}
.qopt{display:block;width:100%;text-align:left;padding:12px 14px;margin:8px 0;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;min-height:48px}.qopt.right{border-color:var(--ok);background:var(--oksoft)}.qopt.wrong{border-color:var(--bad);background:var(--badsoft)}
.fc{perspective:1000px;margin:10px 0}.fc .face{min-height:260px;display:flex;flex-direction:column;justify-content:center;padding:22px;border-radius:20px;background:var(--card);border:1px solid var(--line);box-shadow:var(--sh);white-space:pre-wrap}.fc .front{font-size:1.25rem;font-weight:600;text-align:center}
.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grades button{flex-direction:column;gap:0;padding:8px 4px}.grades small{font-weight:400;opacity:.85;font-size:.7rem}
.chart{width:100%;height:auto}.chart .grid{stroke:var(--line);stroke-width:1}.chart .ax{fill:var(--mute);font-size:11px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;color:var(--mute);margin:6px 0}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.form2{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.res{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:10px 0}.res div{background:var(--brandsoft);padding:10px 12px;border-radius:12px}.res b{display:block;font-size:1.15rem}.res span{font-size:.78rem;color:var(--mute)}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}
.crumbs{font-size:.85rem;color:var(--mute);margin-bottom:8px}.empty{text-align:center;color:var(--mute);padding:28px}
.star{background:none;border:0;font-size:1.5rem;cursor:pointer;color:var(--mute);min-width:44px;min-height:44px}.star.on{color:#f59e0b}
#toast{position:fixed;left:50%;bottom:calc(var(--tab) + 16px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#14231f;color:#fff;padding:10px 16px;border-radius:12px;opacity:0;pointer-events:none;transition:.25s;z-index:50;max-width:90vw;font-size:.9rem}#toast.show{opacity:1;transform:translate(-50%,0)}
@media (min-width:900px){#toast{bottom:24px}}
.boot{padding:40px;text-align:center;color:var(--mute)}.sticky-actions{position:sticky;top:0;background:var(--bg);padding:6px 0;z-index:5}
.banner{background:var(--warnsoft);color:var(--warn);padding:8px 14px;border-radius:12px;font-size:.88rem;margin-bottom:12px}
@media print{#side,#tabbar,.btn{display:none}}
