:root{--bg:#0e0d0c;--panel:#181513;--panel2:#221e1b;--line:#2f2a26;--text:#f1ebe2;--mut:#a79d90;--acc:#e8a64a;--acc2:#f6c477;--bad:#e5645a;--ok:#6cc08b;--r:14px}
*{box-sizing:border-box}
html{font-size:clamp(16px,1.12vw,26px);background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}
body{margin:0;font-family:"Inter","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;line-height:1.4;min-height:100vh;overflow-x:hidden}
@media (max-width:700px){html{font-size:16px}}
h1,h2,h3{font-weight:650;margin:0;letter-spacing:-.01em}
h1{font-size:2.1rem}h2{font-size:1.35rem;margin:1.6rem 0 .7rem}h3{font-size:1.05rem}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
.f{outline:none;cursor:pointer}
.f:focus-visible,.f.focus{outline:3px solid var(--acc2);outline-offset:3px;border-radius:var(--r)}
.top{position:sticky;top:0;z-index:20;display:flex;gap:.6rem;align-items:center;padding:.7rem 1.4rem;background:linear-gradient(var(--bg) 70%,transparent);backdrop-filter:blur(8px)}
.top .logo{white-space:nowrap;font-weight:800;font-size:1.3rem;color:var(--acc);margin-right:.8rem;display:flex;align-items:center;gap:.4rem}
.top .sp{flex:1}
.nav{padding:.5rem .95rem;border-radius:999px;color:var(--mut);background:transparent;border:0;white-space:nowrap}
.nav.on{background:var(--panel2);color:var(--text)}
.nav:hover{color:var(--text)}
.avatar{width:2.1rem;height:2.1rem;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#fff;flex:none}
main{padding:0 1.4rem 4rem;max-width:2200px;margin:0 auto}
.row{margin:0 0 .4rem}
.scroller{display:flex;gap:1rem;overflow-x:auto;padding:.5rem .3rem 1rem;scroll-snap-type:x proximity;scrollbar-width:none}
.scroller::-webkit-scrollbar{display:none}
.tile{flex:none;width:12.5rem;scroll-snap-align:start;background:var(--panel);border-radius:var(--r);overflow:hidden;border:1px solid var(--line);position:relative;transition:transform .12s}
.tile.wide{width:19rem}
.tile:focus-visible,.tile.focus{transform:scale(1.045)}
.tile .art{aspect-ratio:2/3;background:linear-gradient(135deg,#2a241f,#171412);display:grid;place-items:center;font-size:2.4rem;color:#5a4f44;position:relative;background-size:cover;background-position:center}
.tile.wide .art{aspect-ratio:16/9}
.tile .art img{width:100%;height:100%;object-fit:cover;display:block}
.tile .cap{padding:.55rem .7rem .7rem;font-size:.92rem}
.tile .cap b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .cap span{color:var(--mut);font-size:.8rem}
.bar{height:.28rem;background:#0006;border-radius:9px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--acc)}
.tile .bar{position:absolute;left:0;right:0;bottom:0;border-radius:0}
.tile .badge{position:absolute;top:.5rem;right:.5rem;background:#000a;border-radius:999px;padding:.1rem .55rem;font-size:.75rem}
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.2rem;border-radius:999px;border:1px solid var(--line);background:var(--panel2);font-weight:600}
.btn.pri{background:var(--acc);color:#1a1208;border-color:var(--acc)}
.btn.bad{color:var(--bad)}
.btn.sm{padding:.4rem .8rem;font-size:.85rem}
.btn[disabled]{opacity:.5;pointer-events:none}
.hero{position:relative;border-radius:calc(var(--r)*1.4);overflow:hidden;margin:.6rem 0 1rem;background:var(--panel);min-height:16rem;display:flex;align-items:flex-end}
.hero .bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:brightness(.45)}
.hero .in{position:relative;padding:1.6rem;max-width:46rem}
.hero p{color:#d9d0c4;margin:.5rem 0 1rem}
.meta{color:var(--mut);font-size:.9rem;display:flex;gap:.8rem;flex-wrap:wrap}
.chips{display:flex;gap:.4rem;flex-wrap:wrap}
.chip{padding:.15rem .7rem;border:1px solid var(--line);border-radius:999px;font-size:.8rem;color:var(--mut)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:1rem;padding:.4rem .2rem}
.grid .tile{width:auto}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem}
.login{max-width:26rem;margin:12vh auto 0;padding:0 1rem}
.login h1{color:var(--acc);margin-bottom:1.2rem}
input[type=text],input[type=password],input[type=search],textarea,select{width:100%;padding:.8rem 1rem;border-radius:12px;border:1px solid var(--line);background:var(--panel);margin:.35rem 0 .9rem}
input:focus,textarea:focus,select:focus{outline:2px solid var(--acc);}
label{font-size:.85rem;color:var(--mut)}
.err{color:var(--bad);min-height:1.4rem;margin:.2rem 0}
.profiles{display:flex;flex-wrap:wrap;gap:2rem;justify-content:center;margin:6vh 0 2rem}
.prof{display:flex;flex-direction:column;align-items:center;gap:.7rem;background:none;border:0;padding:.6rem;width:9rem}
.prof .avatar{width:6.5rem;height:6.5rem;font-size:2.6rem;border-radius:20px}
.prof span{color:var(--mut)}
.lessons{display:flex;flex-direction:column;gap:.4rem}
.lesson{display:flex;gap:1rem;align-items:center;padding:.7rem 1rem;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.lesson .n{width:2.6rem;text-align:center;font-weight:700;color:var(--acc)}
.lesson .t{flex:1;min-width:0}.lesson .t b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lesson .t span{color:var(--mut);font-size:.8rem}
.lesson.done .n{color:var(--ok)}
.lesson.next{border-color:var(--acc)}
.grp{margin:1rem 0 .3rem;color:var(--mut);font-size:.85rem;text-transform:uppercase;letter-spacing:.08em}
table{width:100%;border-collapse:collapse}
td,th{padding:.55rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{color:var(--mut);font-weight:500;font-size:.85rem}
.tag{display:inline-block;padding:.05rem .55rem;border-radius:999px;font-size:.75rem;border:1px solid var(--line);color:var(--mut)}
.tag.ok{color:var(--ok);border-color:#2f5a40}.tag.bad{color:var(--bad);border-color:#6a2f2b}.tag.acc{color:var(--acc);border-color:#6b4a1c}
.checks label{display:flex;gap:.6rem;align-items:center;color:var(--text);font-size:.95rem;padding:.25rem 0}
.checks input{width:1.15rem;height:1.15rem;accent-color:var(--acc)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1rem}
.empty{color:var(--mut);padding:2rem;text-align:center}
#toast{position:fixed;left:50%;bottom:1.5rem;transform:translateX(-50%);background:#000d;padding:.7rem 1.2rem;border-radius:999px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:99}
#toast.show{opacity:1}
/* player */
#player{position:fixed;inset:0;background:#000;z-index:50;display:none}
#player.on{display:block}
#player video{width:100%;height:100%;background:#000;object-fit:contain}
#player .ui{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(#000a,transparent 25%,transparent 70%,#000c);opacity:0;transition:opacity .25s}
#player.show .ui{opacity:1}
#player.hidecur{cursor:none}
#player .ptop{padding:1rem 1.4rem;display:flex;gap:1rem;align-items:center}
#player .ptitle{font-size:1.2rem;font-weight:600}
#player .pbot{padding:1rem 1.6rem 1.4rem}
#player .seek{height:.45rem;background:#fff3;border-radius:9px;margin:.6rem 0;position:relative;cursor:pointer}
#player .seek i{position:absolute;left:0;top:0;bottom:0;background:var(--acc);border-radius:9px}
#player .times{display:flex;justify-content:space-between;color:#ddd;font-size:.85rem}
#player .ctrls{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.4rem}
#player .msg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#000a;padding:.8rem 1.4rem;border-radius:14px;display:none}
#player.buf .msg{display:block}
.sq{font-variant-numeric:tabular-nums}
@media (max-width:700px){.top{padding:.5rem .8rem;overflow-x:auto}.tile{width:9.4rem}.tile.wide{width:15rem}main{padding:0 .8rem 4rem}.hero .in{padding:1rem}h1{font-size:1.6rem}}

.tag{white-space:normal;max-width:100%}
.chips .tag{padding:.15rem .7rem}
.nav{flex:none}

.cols .tile{width:100%;max-width:24rem}
