:root{--accent-l:#0b9a86;--accent-d:#2fd4b6;--ground:#eef4f2;--surface:#fff;--surface-2:#f4f8f7;--line:#dce7e4;--line-2:#c6d8d4;--ink:#0d1f1c;--ink-2:#46615c;--ink-3:#7a9490;--accent:var(--accent-l);--accent-in:#fff;--lock:#b07a11;--lock-wash:#fbf0d9;--danger:#b8362b;--shadow:0 1px 2px #0d1f1c0f, 0 8px 24px -12px #0d1f1c2e;--shadow-lg:0 -8px 40px -8px #0d1f1c47;--accent-2:color-mix(in srgb, var(--accent) 74%, #fff);--accent-wash:color-mix(in srgb, var(--accent) 11%, var(--surface));--r-sm:10px;--r-md:14px;--r-lg:20px;--serif:ui-serif, "New York", Georgia, "Times New Roman", serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--font-title:var(--serif);--font-body:var(--sans);--title-w:600;--title-ls:-.01em}@media (prefers-color-scheme:dark){:root{--ground:#070f0e;--surface:#101e1c;--surface-2:#162724;--line:#223733;--line-2:#2e4742;--ink:#e7f1ee;--ink-2:#9db5b0;--ink-3:#6c8681;--accent:var(--accent-d);--accent-in:#05130f;--lock:#d9a93f;--lock-wash:#2b2312;--danger:#ff8a7a;--shadow:0 1px 2px #0006, 0 8px 24px -12px #000000b3;--shadow-lg:0 -8px 40px -8px #000000b3;--accent-2:color-mix(in srgb, var(--accent) 76%, #fff);--accent-wash:color-mix(in srgb, var(--accent) 15%, var(--surface))}}[data-theme=dark]{--ground:#070f0e;--surface:#101e1c;--surface-2:#162724;--line:#223733;--line-2:#2e4742;--ink:#e7f1ee;--ink-2:#9db5b0;--ink-3:#6c8681;--accent:var(--accent-d);--accent-in:#05130f;--lock:#d9a93f;--lock-wash:#2b2312;--danger:#ff8a7a;--shadow:0 1px 2px #0006, 0 8px 24px -12px #000000b3;--shadow-lg:0 -8px 40px -8px #000000b3;--accent-2:color-mix(in srgb, var(--accent) 76%, #fff);--accent-wash:color-mix(in srgb, var(--accent) 15%, var(--surface))}[data-theme=light]{--ground:#eef4f2;--surface:#fff;--surface-2:#f4f8f7;--line:#dce7e4;--line-2:#c6d8d4;--ink:#0d1f1c;--ink-2:#46615c;--ink-3:#7a9490;--accent:var(--accent-l);--accent-in:#fff;--lock:#b07a11;--lock-wash:#fbf0d9;--danger:#b8362b;--shadow:0 1px 2px #0d1f1c0f, 0 8px 24px -12px #0d1f1c2e;--shadow-lg:0 -8px 40px -8px #0d1f1c47;--accent-2:color-mix(in srgb, var(--accent) 74%, #fff);--accent-wash:color-mix(in srgb, var(--accent) 11%, var(--surface))}*{box-sizing:border-box}html,body{background:var(--surface);margin:0;padding:0}body{color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit;font-family:var(--font-body)}button{cursor:pointer;background:0 0;border:none}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.app{background:var(--surface);flex-direction:column;min-height:100dvh;display:flex}.page{flex:1}.page.has-bar{padding-bottom:86px}.eyebrow{font:600 10px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}h1.title{font-family:var(--font-title);font-weight:var(--title-w);letter-spacing:var(--title-ls);text-wrap:balance;margin:8px 0 0;font-size:27px;line-height:1.15}h2.sec{font-family:var(--font-title);font-weight:var(--title-w);letter-spacing:var(--title-ls);margin:0;font-size:19px}.lede{color:var(--ink-2);max-width:34em;margin:8px 0 0;font-size:14.5px}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.head{background:radial-gradient(120% 90% at 100% 0%, var(--accent-wash) 0%, transparent 62%), var(--surface);border-bottom:1px solid var(--line);padding:22px 20px 18px}.brandrow{align-items:center;gap:10px;display:flex}.flask{width:26px;height:26px;color:var(--accent);flex:none}.overall{align-items:center;gap:10px;margin-top:16px;display:flex}.overall .meter{flex:1;margin:0}.overall .pc{font:600 12px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--accent)}.block{flex-direction:column;gap:12px;padding:18px 20px;display:flex}.block+.block{border-top:1px solid var(--line)}.rowhead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.resume{text-align:left;border-radius:var(--r-md);background:var(--accent);width:100%;color:var(--accent-in);box-shadow:var(--shadow);align-items:center;gap:13px;padding:14px;text-decoration:none;transition:transform .12s;display:flex}.resume:active{transform:scale(.985)}.resume .ic{flex:none;width:34px;height:34px}.resume small{font:600 10px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;opacity:.84;display:block}.resume strong{margin-top:3px;font-size:15.5px;font-weight:600;display:block}.mod{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;width:100%;padding:15px 16px;text-decoration:none;transition:border-color .14s,transform .12s;display:flex}.mod:active{transform:scale(.99)}.mod:hover{border-color:var(--line-2)}.mod.locked{background:var(--surface-2)}.mod .top{align-items:flex-start;gap:12px;display:flex}.mod .idx{font:600 12px/28px var(--mono);text-align:center;background:var(--accent-wash);width:28px;height:28px;color:var(--accent);border-radius:8px;flex:none}.mod.locked .idx{background:var(--lock-wash);color:var(--lock)}.mod h3{font-family:var(--font-title);font-weight:var(--title-w);letter-spacing:var(--title-ls);margin:0;font-size:16.5px;line-height:1.25}.mod p{color:var(--ink-2);margin:5px 0 0;font-size:13px;line-height:1.45}.modfoot{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:12px;display:flex}.mod .count{color:var(--ink-3);font-size:11.5px;font-family:var(--mono);font-variant-numeric:tabular-nums}.meter{background:var(--surface-2);border:1px solid var(--line);border-radius:99px;height:7px;margin-top:9px;position:relative;overflow:hidden}.meter i{background:linear-gradient(90deg, var(--accent-2), var(--accent));height:100%;transition:width .35s cubic-bezier(.2,.7,.3,1);display:block}.meter:after{content:"";pointer-events:none;background:repeating-linear-gradient(90deg, transparent 0 19px, var(--line) 19px 20px);opacity:.7;position:absolute;inset:0}.pill{font:600 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:6px 9px;display:inline-flex}.pill.free{background:var(--accent-wash);color:var(--accent)}.pill.lock{background:var(--lock-wash);color:var(--lock)}.pill.neutral{background:var(--surface-2);color:var(--ink-3)}.pill svg{width:12px;height:12px}.paybox{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);flex-direction:column;gap:12px;padding:16px;display:flex}.keyrow{background:var(--surface);border:1px dashed var(--line-2);border-radius:var(--r-sm);align-items:center;gap:10px;padding:11px 12px;display:flex}.keyrow .k{flex:1;min-width:0}.keyrow small{font:600 9.5px/1 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);display:block}.keyrow .val{font-family:var(--mono);word-break:break-all;margin-top:5px;font-size:15px}.btn{border-radius:var(--r-sm);background:var(--accent);min-height:48px;color:var(--accent-in);justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .12s;display:inline-flex}.btn:active{transform:scale(.985)}.btn.ghost{color:var(--ink);border:1px solid var(--line-2);background:0 0}.btn.wide{width:100%}.btn.sm{border-radius:8px;min-height:38px;padding:0 13px;font-size:13.5px}.btn svg{width:18px;height:18px}.btn.copy{background:var(--surface-2);color:var(--ink);border:1px solid var(--line-2);min-height:40px;padding:0 13px;font-size:13.5px}.hint{color:var(--ink-2);font-size:12.5px;line-height:1.55}.topbar{z-index:20;background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 12px;display:flex;position:sticky;top:0}.iconbtn{width:40px;height:40px;color:var(--ink-2);border-radius:10px;flex:none;place-items:center;text-decoration:none;display:grid}.iconbtn:hover{background:var(--surface-2)}.iconbtn svg{width:20px;height:20px}.topbar .ttl{flex:1;min-width:0}.topbar .ttl small{font:600 9.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);display:block}.topbar .ttl span{text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:14px;font-weight:600;display:block;overflow:hidden}.player{aspect-ratio:16/9;background:#06100f;position:relative;overflow:hidden}.player iframe{pointer-events:none;border:0;width:100%;height:100%;position:absolute;inset:0}.posterimg{object-fit:cover}.player:has(.posterimg):before{content:"";z-index:1;background:linear-gradient(#06100f26,#06100f80);position:absolute;inset:0}.playbig{z-index:2}.playbig[disabled]{opacity:.6}.spinner{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:2.5px solid #ffffff47;border-top-color:#fff;border-radius:50%;width:44px;height:44px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.pausecover{z-index:3;background:#06100f;place-items:center;width:100%;display:grid;position:absolute;inset:0;overflow:hidden}.pausecover .posterimg{opacity:.42;filter:blur(1px)}.pausecover span{z-index:1;color:#fff;background:#ffffff29;border:1.5px solid #ffffff80;border-radius:50%;place-items:center;width:66px;height:66px;display:grid;position:relative}.pausecover svg{width:26px;height:26px}.endcover{cursor:default}.endbox{z-index:1;color:#fff;flex-direction:column;align-items:center;gap:12px;display:flex;position:relative}.endbox strong{font-family:var(--font-title);font-weight:var(--title-w);font-size:19px}.tapzone{background:0 0;width:100%;position:absolute;inset:0 0 46px}.poster{background:radial-gradient(60% 50% at 30% 35%, color-mix(in srgb, var(--accent) 42%, transparent), transparent 70%), radial-gradient(70% 60% at 78% 72%, color-mix(in srgb, var(--accent) 55%, transparent), transparent 72%), linear-gradient(160deg, #0c2a26, #061512 70%);position:absolute;inset:0}.poster:after{content:"";background:repeating-linear-gradient(115deg,#ffffff0b 0 2px,#0000 2px 9px);position:absolute;inset:0}.playbig{place-items:center;width:100%;display:grid;position:absolute;inset:0}.playbig span{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;background:#ffffff24;border:1.5px solid #ffffff80;border-radius:50%;place-items:center;width:66px;height:66px;transition:transform .15s;display:grid}.playbig:active span{transform:scale(.93)}.playbig svg{width:26px;height:26px}.ctrl{color:#fff;background:linear-gradient(#0000,#000000b8);align-items:center;gap:10px;padding:26px 12px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.ctrl button{color:#fff;place-items:center;display:grid}.ctrl button svg{width:17px;height:17px}.ctrl .t{font:500 11px/1 var(--mono);font-variant-numeric:tabular-nums;opacity:.9}.ctrl .sp{font:600 11px/1 var(--mono);background:#ffffff29;border-radius:6px;padding:5px 7px}.scrub{appearance:none;background:#ffffff47;border-radius:99px;flex:1;min-width:0;height:3px;margin:0}.scrub::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:12px;height:12px}.scrub::-moz-range-thumb{cursor:pointer;background:#fff;border:0;border-radius:50%;width:12px;height:12px}.lockcap{color:#fff;text-align:center;background:linear-gradient(#0000,#000000b8);padding:30px 14px 13px;font-size:13px;font-weight:550;position:absolute;bottom:0;left:0;right:0}.audio{border-radius:var(--r-md);background:linear-gradient(150deg, var(--accent-wash), var(--surface-2));border:1px solid var(--line);padding:20px}.audio audio{width:100%}.reading{color:var(--ink-2);white-space:pre-wrap;font-size:15px;line-height:1.65}.warn{border:1px solid var(--lock);background:var(--lock-wash);border-radius:var(--r-sm);color:var(--ink);align-items:flex-start;gap:10px;padding:12px 13px;font-size:13px;line-height:1.5;display:flex}.warn svg{width:17px;height:17px;color:var(--lock);flex:none;margin-top:1px}.files{flex-direction:column;gap:8px;display:flex}.file{text-align:left;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);align-items:center;gap:11px;width:100%;padding:12px 13px;text-decoration:none;display:flex}.file:hover{border-color:var(--line-2);background:var(--surface-2)}.file .ic{background:var(--accent-wash);width:34px;height:34px;color:var(--accent);border-radius:8px;flex:none;place-items:center;display:grid}.file .ic svg{width:17px;height:17px}.file .nm{flex:1;min-width:0;font-size:14px;font-weight:550}.file .mt{font:500 11px/1 var(--mono);color:var(--ink-3)}.lessons{flex-direction:column;gap:7px;display:flex}.lesson{text-align:left;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid #0000;align-items:center;gap:12px;width:100%;padding:12px 13px;text-decoration:none;transition:background .14s,border-color .14s;display:flex}.lesson:hover{border-color:var(--line-2)}.lesson[aria-current=true]{background:var(--accent-wash);border-color:var(--accent)}.lesson .n{width:27px;height:27px;font:600 11.5px/1 var(--mono);color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:7px;flex:none;place-items:center;display:grid}.lesson[aria-current=true] .n,.lesson.is-done .n{background:var(--accent);color:var(--accent-in);border-color:#0000}.lesson .n svg{width:14px;height:14px}.lesson .tx{flex:1;min-width:0}.lesson .tx small{font:600 9.5px/1 var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);display:block}.lesson .tx span{margin-top:4px;font-size:14.5px;font-weight:550;line-height:1.3;display:block}.lesson .rt{color:var(--ink-3);flex:none;place-items:center;display:grid}.lesson .rt svg{width:17px;height:17px}.lesson.is-locked .tx span{color:var(--ink-2)}.lesson.is-locked .rt{color:var(--lock)}.actionbar{z-index:30;padding:10px 12px;padding-bottom:max(10px, env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface);gap:9px;display:flex;position:fixed;bottom:0;left:0;right:0}.actionbar-inline{display:none}.nav{border-radius:var(--r-sm);border:1px solid var(--line-2);width:48px;min-height:48px;color:var(--ink-2);flex:none;place-items:center;text-decoration:none;display:grid}.nav:hover{background:var(--surface-2)}.nav[aria-disabled=true]{opacity:.35;pointer-events:none}.nav svg{width:19px;height:19px}.finish{border:1px solid var(--accent);background:var(--accent-wash);border-radius:var(--r-md);flex-direction:column;gap:12px;padding:18px;display:flex}.nextprod{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);align-items:center;gap:12px;padding:13px;display:flex}.nextprod .sw{background:linear-gradient(140deg, var(--accent-2), var(--accent));border-radius:10px;flex:none;width:40px;height:40px}.scrim{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#06100f8c;animation:.18s fade;position:fixed;inset:0}.sheet{z-index:41;background:var(--surface);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-lg);padding:10px 20px max(20px, env(safe-area-inset-bottom));flex-direction:column;gap:14px;max-height:88%;animation:.26s cubic-bezier(.2,.8,.25,1) up;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.grip{background:var(--line-2);border-radius:99px;width:38px;height:4px;margin:2px auto 6px}@keyframes up{0%{transform:translateY(100%)}}@keyframes fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.sheet,.scrim{animation:none}.meter i{transition:none}}.divider{font:600 10px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.field{flex-direction:column;gap:7px;display:flex}.field label{font:600 10px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.field input,.field select,.field textarea{border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);width:100%;min-height:46px;padding:11px 13px;font-size:15.5px}.field textarea{resize:vertical;min-height:78px;line-height:1.5}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{border-color:var(--accent);outline-offset:0}.pwrow{gap:8px;display:flex}.pwrow input{font-family:var(--mono);letter-spacing:.22em;flex:1}.err{color:var(--danger);font-size:13px}.admhead{border-bottom:1px solid var(--line);background:var(--surface-2);justify-content:space-between;align-items:center;gap:12px;padding:18px 20px;display:flex}.prod{text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);align-items:center;gap:12px;width:100%;padding:14px;text-decoration:none;display:flex}.prod:hover{border-color:var(--line-2)}.prod .sw{border-radius:9px;flex:none;width:34px;height:34px}.prod .tx{flex:1;min-width:0}.prod .tx strong{font-size:15px;font-weight:600;display:block}.prod .tx small{font-family:var(--mono);color:var(--ink-3);margin-top:3px;font-size:11.5px;display:block}.admrow{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);align-items:center;gap:11px;padding:11px 12px;display:flex}.admrow .tx{flex:1;min-width:0}.admrow .tx strong{font-size:14px;font-weight:550;display:block}.admrow .tx small{font:500 11px/1 var(--mono);color:var(--ink-3);margin-top:4px;display:block}.swatches{flex-wrap:wrap;gap:9px;display:flex}.swatches button{color:#fff;border:2px solid #0000;border-radius:12px;place-items:center;width:42px;height:42px;display:grid}.swatches button[aria-pressed=true]{border-color:var(--ink)}.swatches button svg{opacity:0;width:17px;height:17px}.swatches button[aria-pressed=true] svg{opacity:1}.modes,.fonts{flex-direction:column;gap:8px;display:flex}.modes button,.fonts button{text-align:left;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.modes button[aria-pressed=true],.fonts button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash)}.modes button{justify-content:flex-start}.modes .tx strong{font-size:14.5px;font-weight:600;display:block}.modes .tx small{color:var(--ink-2);margin-top:3px;font-size:12.5px;line-height:1.45;display:block}.chip{border:1px solid var(--line-2);border-radius:10px;flex:none;width:40px;height:40px;display:flex;overflow:hidden}.chip i{flex:1;display:block}.chip.light i{background:#fff}.chip.light i+i{background:#eef4f2}.chip.dark i{background:#101e1c}.chip.dark i+i{background:#070f0e}.chip.auto i{background:#fff}.chip.auto i+i{background:#0b1917}.fonts .prev{min-width:0}.fonts .prev b{font-size:17px;line-height:1.2;display:block}.fonts .prev span{color:var(--ink-2);margin-top:4px;font-size:12.5px;display:block}.fonts .nm{font:600 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);flex:none}.note{color:var(--ink-2);border-left:2px solid var(--accent);padding-left:11px;font-size:12.5px;line-height:1.55}.foot{text-align:center;color:var(--ink-3);border-top:1px solid var(--line);padding:20px;font-size:11.5px}.cols{flex-direction:column;display:flex}.main,.side{flex-direction:column;min-width:0;display:flex}.hubcols .side{order:-1}.modgrid{flex-direction:column;gap:10px;display:flex}@media (min-width:880px){.app{background:var(--ground);--pad:max(32px, calc((100% - 1120px) / 2))}.app.isadm{--pad:max(32px, calc((100% - 760px) / 2))}.page.has-bar{padding-bottom:0}.head{padding:42px var(--pad) 30px;background:radial-gradient(70% 130% at 88% 0%, var(--accent-wash) 0%, transparent 60%), var(--surface)}h1.title{font-size:36px}.head .lede{font-size:16px}.overall{max-width:460px}.cols{padding:26px var(--pad) 70px;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:34px;display:grid}.side,.hubcols .side{order:0}.side{position:sticky;top:82px}.resumewrap{padding:24px var(--pad) 0}.resumewrap .resume{max-width:560px}.main>.block:first-child,.side>.block:first-child{padding-top:0}.cols .block{padding-inline:0}.side>.block{padding:0}.side>.block+.block{border-top:0;padding-top:16px}.modgrid{grid-template-columns:repeat(auto-fill,minmax(272px,1fr));align-items:stretch;gap:14px;display:grid}.topbar{padding:12px var(--pad);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.player{border-radius:var(--r-md)}.actionbar{display:none}.actionbar-inline{gap:9px;padding:4px 0 0;display:flex}.actionbar-inline .btn{max-width:440px}.foot{padding:26px var(--pad) 40px;text-align:left}.isadm .admhead{padding:22px var(--pad)}.isadm .block{padding-inline:var(--pad)}.swatches button{width:46px;height:46px}.sheet{border-radius:var(--r-lg);width:min(460px,100vw - 48px);max-height:84vh;padding:26px 26px 24px;animation:.2s cubic-bezier(.2,.8,.25,1) pop;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 70px -20px #00000080}.grip{display:none}}@keyframes pop{0%{opacity:0;transform:translate(-50%,-46%)}}
