:root{--bg:#faf8f4;--surface:#fff;--surface-2:#f3efe7;--text:#221a0e;--muted:#6a6052;--line:#e2dbcd;--accent:#efa534;--accent-strong:#9a5f06;--on-accent:#1d1402;--nav:#17110a;--nav-text:#d9d0c1;--done:#1f7a4d;--danger:#b3261e;--focus:#1b66c9;--shadow:0 1px 3px #281c081a}[data-theme=dark]{--bg:#14110c;--surface:#1f1b14;--surface-2:#2a251c;--text:#f3eee4;--muted:#b0a695;--line:#3a3428;--accent:#f6b44f;--accent-strong:#f6b44f;--on-accent:#1d1402;--nav:#0d0a06;--done:#58c48d;--danger:#f2877f;--focus:#7db3f5;--shadow:none}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);margin:0;font:17px/1.55 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}h1{margin:0 0 1rem;font-size:1.75rem;line-height:1.25}h2{margin:1.6rem 0 .75rem;font-size:1.3rem}h3{margin:0 0 .25rem;font-size:1.05rem;line-height:1.35}a{color:var(--accent-strong)}input,select,button{font:inherit;color:inherit}input:not([type=checkbox]):not([type=range]):not([type=file]),select{background:var(--surface);border:1px solid var(--line);border-radius:8px;max-width:100%;min-height:44px;padding:.55rem .75rem}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:.88rem}.mt{margin-top:1rem}.grow{flex:1;min-width:160px}.nowrap{white-space:nowrap}.sr{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.icon{flex:none}.shell{min-height:100vh;display:flex}.gnav{background:var(--nav);width:88px;height:100vh;color:var(--nav-text);z-index:20;flex-direction:column;flex:none;align-items:stretch;padding:.75rem 0;display:flex;position:sticky;top:0}.gnav-logo{text-align:center;margin-bottom:.75rem;display:block}.gnav-logo img{object-fit:contain;width:52px;height:52px}.gnav-item{color:inherit;cursor:pointer;background:0 0;border:0;border-left:3px solid #0000;flex-direction:column;align-items:center;gap:.2rem;padding:.7rem .25rem;font-size:.78rem;text-decoration:none;display:flex}.gnav-item:hover{background:#ffffff12}.gnav-item.active{color:#fff;border-left-color:var(--accent);background:#efa53429}.gnav-theme{margin-top:auto}.shell-main{flex-direction:column;flex:1;min-width:0;display:flex}.sample-banner{background:var(--surface-2);color:var(--muted);text-align:center;border-bottom:1px solid var(--line);padding:.3rem 1rem;font-size:.85rem}.page{width:100%;max-width:1280px;padding:1.25rem 2rem 3rem}.page-narrow{max-width:860px}.crumbs{color:var(--muted);flex-wrap:wrap;margin-bottom:.9rem;font-size:.92rem;display:flex}.crumb-sep{margin:0 .45rem}.btn{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.45rem 1rem;font-weight:550;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:#e09626}.btn-done{color:var(--done);border-color:var(--done)}.btn-danger{color:var(--danger)}.btn-ghost{color:var(--accent-strong);background:0 0;border-color:#0000}.btn-block{width:100%}.btn-sm{min-height:36px;padding:.2rem .65rem;font-size:.9rem}.link{color:var(--accent-strong);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.alert,.note{border-radius:8px;margin-bottom:1rem;padding:.65rem .9rem}.alert{background:color-mix(in srgb, var(--danger) 12%, var(--surface));border:1px solid var(--danger)}.note{background:var(--surface-2);border:1px solid var(--line)}.panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;margin-bottom:1rem;padding:1.1rem}.panel-flush{padding:0;overflow:hidden}.empty{background:var(--surface);border:1px dashed var(--line);text-align:center;border-radius:12px;padding:2rem}.empty h2{margin-top:0}.continue{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--accent);color:inherit;box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:.9rem;margin-bottom:1.25rem;padding:.9rem 1.1rem;text-decoration:none;display:flex}.continue:hover{background:var(--surface-2)}.continue-play{background:var(--accent);width:44px;height:44px;color:var(--on-accent);border-radius:50%;flex:none;place-items:center;display:grid}.continue-text{flex-direction:column;flex:1;min-width:0;display:flex}.filters{flex-wrap:wrap;align-items:center;gap:.7rem;margin-bottom:1rem;display:flex}.filters input[type=search]{flex:240px}.chips{flex-wrap:wrap;gap:.35rem;display:flex}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;min-height:40px;padding:.2rem .85rem}.chip-on{background:var(--text);color:var(--bg);border-color:var(--text)}.grid{grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:1.1rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);color:inherit;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;text-decoration:none;transition:transform .12s;display:flex;overflow:hidden}.card:hover{transform:translateY(-2px)}.card-body{flex-direction:column;flex:1;padding:.8rem .95rem 1rem;display:flex}.card-body .progress-wrap{margin-top:auto}.card-body p{margin:0 0 .6rem}.thumb{aspect-ratio:16/7.5;object-fit:cover;color:#fff;width:100%;display:block;position:relative;overflow:hidden}.thumb-g3{background:linear-gradient(135deg,#2b1d08,#8a5707)}.thumb-g3a{background:linear-gradient(135deg,#15263d,#2d6a8f)}.thumb-g2{background:linear-gradient(135deg,#1b3327,#357a58)}.thumb-g1{background:linear-gradient(135deg,#36203d,#7b4a8a)}.thumb-track{font-size:.82rem;font-weight:600;position:absolute;top:.6rem;left:.8rem}.thumb-level{opacity:.9;font-size:.82rem;position:absolute;top:.6rem;right:.8rem}.thumb-ch{letter-spacing:-.02em;font-size:2rem;font-weight:750;position:absolute;bottom:.35rem;left:.8rem}.progress-wrap{align-items:center;gap:.6rem;display:flex}.progress{background:var(--surface-2);border-radius:99px;flex:1;height:8px;overflow:hidden}.progress>div{background:var(--accent);border-radius:99px;height:100%}.progress-label{color:var(--muted);text-align:right;min-width:2.6em;font-size:.85rem}.rows{margin:0;padding:0;list-style:none}.row{background:var(--surface);border:1px solid var(--line);color:inherit;border-top-width:0;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;padding:.85rem 1rem;text-decoration:none;display:flex}.rows li:first-child .row{border-top-width:1px;border-radius:10px 10px 0 0}.rows li:last-child .row{border-radius:0 0 10px 10px}.row:hover{background:var(--surface-2)}.row-main{flex-direction:column;flex:340px;display:flex}.row-prog{flex:0 220px;min-width:150px}.course-layout{flex:1;align-items:stretch;min-height:0;display:flex}.course-side{background:var(--surface);border-right:1px solid var(--line);flex:none;width:300px}.course-side-body{max-height:100vh;position:sticky;top:0;overflow-y:auto}.course-side-head{border-bottom:1px solid var(--line);padding:1rem}.course-side-head a{color:inherit;margin-bottom:.5rem;line-height:1.35;text-decoration:none;display:block}.course-side-toggle{display:none}.lesson-list{margin:0;padding:0;list-style:none}.lesson-item{color:inherit;border-left:4px solid #0000;border-bottom:1px solid var(--line);align-items:center;gap:.65rem;padding:.7rem 1rem;text-decoration:none;display:flex}.lesson-item:hover{background:var(--surface-2)}.lesson-on{background:var(--surface-2);border-left-color:var(--accent);font-weight:650}.tick{border:2px solid var(--line);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.tick-on{background:var(--done);border-color:var(--done);color:#fff}[data-theme=dark] .tick-on{color:#0d0a06}.lesson-main{flex:1;min-width:0;max-width:1100px;padding:1.25rem 2rem 3rem}.lesson-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:1rem 0 .75rem;display:flex}.lesson-head h1{margin:0}.prevnext{border-bottom:1px solid var(--line);justify-content:space-between;gap:.6rem;padding-bottom:1rem;display:flex}.files ul{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.file{background:var(--surface);border:1px solid var(--line);min-height:44px;color:inherit;overflow-wrap:anywhere;border-radius:8px;align-items:center;gap:.6rem;padding:.7rem .9rem;text-decoration:none;display:flex}.file:hover{background:var(--surface-2)}.player{aspect-ratio:16/9;color:#fff;background:#000;border-radius:10px;position:relative;overflow:hidden}.player video{object-fit:contain;width:100%;height:100%;display:block}.player-full,.player-winfull{aspect-ratio:auto;border-radius:0}.player-winfull{z-index:100;position:fixed;inset:0}.player-idle{cursor:none}.player-error{text-align:center;z-index:4;background:#000;place-items:center;padding:1rem;display:grid;position:absolute;inset:0}.watermark{pointer-events:none;-webkit-user-select:none;user-select:none;color:#7d7d7d99;text-shadow:0 0 1px #ffffff40;white-space:nowrap;z-index:2;font-size:clamp(.72rem,1.5vw,1rem);transition:left 1.2s,top 1.2s;position:absolute}.player-bigplay{background:var(--accent);color:#1d1402;cursor:pointer;z-index:3;border:0;border-radius:50%;place-items:center;width:78px;height:78px;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%}.player-bar{z-index:3;background:linear-gradient(#0000,#000c);align-items:center;gap:.35rem;padding:.9rem .5rem .3rem;transition:opacity .25s;display:flex;position:absolute;bottom:0;left:0;right:0}.player-idle .player-bar{opacity:0}.player-bar button{color:#fff;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;width:42px;height:42px;display:grid}.player-bar select{color:#fff;background:#0000008c;border:1px solid #ffffff59;min-height:36px;padding:.1rem .3rem;font-size:.9rem}.player-bar select option{color:#000}.player-time{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.85rem}.player-seek{appearance:none;cursor:pointer;background:linear-gradient(to right, var(--accent) var(--fill,0), #ffffff59 var(--fill,0));border-radius:9px;flex:1;min-width:40px;height:6px}.player-seek::-webkit-slider-thumb{appearance:none;background:#fff;border-radius:50%;width:16px;height:16px}.player-seek::-moz-range-thumb{background:#fff;border:0;border-radius:50%;width:16px;height:16px}.auth{place-items:center;min-height:100vh;padding:1.25rem 1rem;display:grid}.auth-card{background:var(--surface);border:1px solid var(--line);width:100%;max-width:430px;box-shadow:var(--shadow);border-radius:14px;padding:1.75rem}.auth-logo{object-fit:contain;width:84px;height:84px;margin:0 auto .5rem;display:block}.auth-card h1{text-align:center;margin-bottom:.4rem}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin-top:.9rem;font-size:.93rem;display:flex}.auth-foot{text-align:center;margin:1rem 0 0;font-size:.9rem}.sample-logins{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1.1rem;padding-top:1rem;font-size:.9rem;display:grid}.sample-logins strong{grid-column:1/-1}.sample-logins .btn{font-weight:500}.form{flex-direction:column;align-items:stretch;gap:.8rem;display:flex}.form label,.inline-form label:not(.btn){flex-direction:column;gap:.25rem;font-size:.95rem;font-weight:550;display:flex}.form .btn{align-self:flex-start}.form .btn-block{align-self:stretch}.prose{max-width:720px;margin:0 auto;padding:1.5rem 1rem 3rem}.tabs{border-bottom:1px solid var(--line);gap:.25rem;margin-bottom:1rem;display:flex}.tab{cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;min-height:44px;padding:.6rem 1rem;font-weight:600}.tab-on{border-bottom-color:var(--accent)}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:.7rem;display:flex}.inline-form input{width:230px}.file-btn input{opacity:0;width:1px;height:1px;position:absolute}.file-btn:focus-within{outline:3px solid var(--focus);outline-offset:2px}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:1rem;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:.6rem .8rem;font-size:.95rem}th{background:var(--surface-2);font-size:.85rem}tbody tr:last-child td{border-bottom:0}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:99px;padding:.05rem .55rem;font-size:.8rem;display:inline-block}.badge-on{color:var(--done);background:color-mix(in srgb, var(--done) 14%, var(--surface))}.check{align-items:flex-start;gap:.55rem;padding:.25rem 0;display:flex}.check input{flex:none;width:18px;height:18px;margin-top:.35rem}.access{flex-direction:column;gap:.6rem;display:flex}.access-list{border:1px solid var(--line);border-radius:8px;max-height:300px;padding:.4rem .7rem;overflow-y:auto}.admin-lessons{margin:0 0 1rem;padding:0;list-style:none}.admin-lessons .panel{margin-bottom:.6rem;padding:.75rem .9rem}.admin-lesson-head{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.reorder{gap:.25rem;display:flex}.admin-files{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.55rem;display:flex}.file-tag{background:var(--surface-2);overflow-wrap:anywhere;border-radius:6px;align-items:center;gap:.35rem;padding:.2rem .6rem;font-size:.88rem;display:inline-flex}@media (width<=820px){body{font-size:16.5px}.shell{flex-direction:column;padding-bottom:66px}.gnav{flex-direction:row;justify-content:space-around;width:auto;height:66px;padding:0;position:fixed;inset:auto 0 0}.gnav-logo{display:none}.gnav-item{border-top:3px solid #0000;border-left:0;flex:1;justify-content:center;padding:.3rem 0}.gnav-item.active{border-top-color:var(--accent)}.gnav-theme{margin-top:0}.page,.lesson-main{padding:1rem 1rem 2rem}.course-layout{flex-direction:column}.course-side{border-right:0;border-bottom:1px solid var(--line);width:100%}.course-side-toggle{cursor:pointer;background:0 0;border:0;align-items:center;gap:.5rem;width:100%;min-height:48px;padding:.4rem 1rem;font-weight:600;display:flex}.course-side-toggle .muted{margin-left:auto;font-weight:400}.course-side-body{max-height:55vh;display:none;position:static}.course-side-open .course-side-body{display:block}.inline-form input{width:100%}.inline-form label{flex:100%}.player-time{display:none}.player-bar button{width:38px}}
