:root{--bg:#f4f6fa;--panel:#ffffff;--panel2:#eef2f8;--line:#d3dbea;--row:#e4e9f2;--text:#14203a;--soft:#33415e;--mute:#56667f;--accent:#1d6ad0;--on-accent:#ffffff;--green:#0d8455;--on-green:#ffffff;--amber:#a86300;--red:#cc2f42;--ok-bg:#e2f5ec;--ok-line:#9fd8bd;--ok-text:#0b5e3d;--warn-bg:#fdf3e1;--warn-line:#ecc98a;--warn-text:#6b4300;--header:rgba(244,246,250,.92);--shadow:0 1px 2px rgba(20,32,58,.06);color-scheme:light}
:root[data-theme=dark]{--bg:#0a0f1c;--panel:#111a2e;--panel2:#16213a;--line:#26355a;--row:#1d2944;--text:#e6ecf7;--soft:#c7d2e6;--mute:#8a9bbb;--accent:#5aa9ff;--on-accent:#06101f;--green:#3ddc97;--on-green:#06101f;--amber:#ffb547;--red:#ff5d6c;--ok-bg:#16291f;--ok-line:#2f5a3f;--ok-text:#cfeedd;--warn-bg:#2e2414;--warn-line:#6b5320;--warn-text:#f3dfb4;--header:rgba(10,15,28,.92);--shadow:none;color-scheme:dark}
*{box-sizing:border-box;min-width:0}
html,body{margin:0;background:var(--bg);color:var(--text);font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
body{min-height:100dvh;display:flex;flex-direction:column}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button,input,select{font:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.top{display:flex;align-items:center;gap:16px;padding:12px max(4vw,16px);padding-top:max(12px,env(safe-area-inset-top));border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--header);backdrop-filter:blur(8px);z-index:10;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-size:17px}
.brand:hover{text-decoration:none}
.brand b{color:var(--green);font-weight:700}
.logo{width:32px;height:32px;border-radius:8px;background:var(--green);display:grid;place-items:center;color:var(--on-green);font-weight:800;font-size:13px}
#nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
#nav a,#nav button{color:var(--mute);background:none;border:0;padding:10px 12px;border-radius:8px;cursor:pointer;min-height:44px;display:inline-flex;align-items:center}
#nav a:hover,#nav button:hover,#nav a.on{color:var(--text);background:var(--panel2);text-decoration:none}
#nav a.cta{background:var(--accent);color:var(--on-accent);font-weight:600}
.prefs{display:flex;gap:6px}
.prefs select{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px;min-height:44px;font-size:16px}
main{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:28px max(4vw,16px) 40px}
main.wide{max-width:none;padding:0}
footer{color:var(--mute);font-size:13px;text-align:center;padding:24px;padding-bottom:max(24px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}
h1{font-size:clamp(30px,4.4vw,46px);line-height:1.1;margin:0 0 16px;text-wrap:balance}
h2{font-size:24px;margin:0 0 14px}
h3{margin:0 0 6px;font-size:18px}
.muted{color:var(--mute)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:10px 18px;border-radius:10px;cursor:pointer;min-height:44px}
.btn:hover{border-color:var(--accent);text-decoration:none}
.btn:disabled{opacity:.6;cursor:default}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
.btn.green{background:var(--green);border-color:var(--green);color:var(--on-green);font-weight:600}
.btn.sm{padding:6px 12px;min-height:36px;font-size:14px}
.intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px;align-items:center;padding:16px 0 40px}
.intro p{font-size:18px;color:var(--soft);max-width:560px}
.intro .acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.demo{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:10px;aspect-ratio:16/10;box-shadow:var(--shadow)}
.demo svg{width:100%;height:100%;display:block}
.demo .node{fill:var(--panel2)}
.demo .lbl{fill:var(--text);font-size:12px}
.demo .wire{stroke:var(--line)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.course{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:8px;color:var(--text);box-shadow:var(--shadow)}
.course:hover{border-color:var(--accent);text-decoration:none}
.course p{margin:0;color:var(--mute);font-size:15px;flex:1}
.tag{display:inline-block;font-size:12.5px;padding:2px 9px;border-radius:20px;border:1px solid var(--line);color:var(--mute);white-space:nowrap}
.tag.free{border-color:var(--green);color:var(--green)}
.tag.lock{border-color:var(--amber);color:var(--amber)}
.tag.done{background:var(--green);color:var(--on-green);border-color:var(--green)}
.bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--green)}
.units{display:grid;gap:8px;margin-top:18px}
.unit{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--text);min-height:56px}
a.unit:hover{border-color:var(--accent);text-decoration:none}
.unit.soon{opacity:.65}
.unit .no{width:34px;height:34px;border-radius:9px;background:var(--panel2);display:grid;place-items:center;font-weight:700;color:var(--mute);flex:none}
.unit .t{flex:1}
.unit .tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:18px}
.plan{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)}
.plan.hl{border-color:var(--green)}
.plan .price{font-size:24px;font-weight:700}
.notice{background:var(--ok-bg);border:1px solid var(--ok-line);color:var(--ok-text);border-radius:10px;padding:12px 14px;margin-top:18px}
.notice.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-text)}
.form{max-width:420px;margin:30px auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px;box-shadow:var(--shadow)}
.form label{display:block;font-size:14px;color:var(--mute);margin:12px 0 4px}
.form input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:11px 12px;font-size:16px;min-height:44px}
.form input:focus{outline:2px solid var(--accent);border-color:transparent}
.form .btn{width:100%;margin-top:18px}
.form .err{color:var(--red);font-size:14px;margin-top:10px;min-height:20px}
.form .alt{text-align:center;margin-top:14px;font-size:14px}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0 20px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
.stat b{display:block;font-size:26px}
.stat span{color:var(--mute);font-size:13px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;margin-top:12px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;color:var(--mute);font-weight:500;border-bottom:1px solid var(--line);padding:8px}
td{border-bottom:1px solid var(--row);padding:8px;vertical-align:middle}
td.n,th.n{text-align:right;white-space:nowrap}
.search{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:10px 12px;font-size:16px;min-height:44px}
.lessonbar{display:flex;align-items:center;gap:12px;padding:10px max(3vw,14px);border-bottom:1px solid var(--line);flex-wrap:wrap}
.lessonbar .t{font-weight:600;flex:1}
.lessonframe{width:100%;height:calc(100dvh - 130px);min-height:640px;border:0;display:block;background:var(--bg)}
.lock-card{max-width:520px;margin:60px auto;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px}
.lock-card svg{width:40px;height:40px;color:var(--amber)}
.empty{color:var(--mute);text-align:center;padding:24px}
.loading{color:var(--mute);text-align:center;padding:60px 0}
@media(max-width:820px){.intro{grid-template-columns:1fr}.plans{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.top{position:static;flex-wrap:nowrap;gap:8px;backdrop-filter:none;background:var(--bg)}.brand>span:last-child{display:none}.prefs{margin-left:auto}.prefs select{padding:8px 4px;max-width:118px}
  #nav{position:fixed;left:0;right:0;bottom:0;z-index:20;margin:0;gap:0;justify-content:space-around;flex-wrap:nowrap;background:var(--header);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:4px 4px max(4px,env(safe-area-inset-bottom))}
  #nav a,#nav button{flex:1;justify-content:center;font-size:14px;padding:10px 4px;text-align:center}
  body{padding-bottom:64px}.unit{flex-wrap:wrap}.lessonframe{height:calc(100dvh - 190px)}
  .stack thead{display:none}.stack tr{display:grid;gap:4px;padding:10px 0;border-bottom:1px solid var(--row)}.stack td{border:0;padding:2px 0;text-align:left}.stack td.n{text-align:left}}
@media(prefers-reduced-motion:reduce){.demo animateMotion{display:none}}
