@charset "UTF-8";@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-cyrillic-ext-opsz-normal-IKAL3GBK.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-cyrillic-opsz-normal-T4ZXK7A3.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-greek-ext-opsz-normal-GHD4UQIF.woff2") format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-greek-opsz-normal-LB46KTSC.woff2") format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-vietnamese-opsz-normal-DS4QP7ER.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-latin-ext-opsz-normal-WO5MD6MH.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url("./media/literata-latin-opsz-normal-YOPUI4X6.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-cyrillic-ext-wght-normal-JQUONSEA.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-vietnamese-wght-normal-TOS5SH3L.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-latin-ext-wght-normal-UBEBQO7H.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-latin-wght-normal-XZSBT77D.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-cyrillic-ext-wght-normal-BUWC6ZS3.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-cyrillic-wght-normal-ENSFVLK4.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-greek-wght-normal-Y3BRZMJV.woff2") format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-vietnamese-wght-normal-SP6EBKAH.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-latin-ext-wght-normal-TSLVDSQR.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-latin-wght-normal-VBS632QH.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{color-scheme:light;--paper: #FAF7F2;--paper-subtle: #F5F1EB;--paper-elevated: #FFFFFF;--paper-warm: #F0EAE1;--paper-active: #EFE6DB;--ink: #1E1C1A;--ink-muted: #68635E;--ink-faint: #9E9992;--border-warm: #E8E1D7;--border-subtle: #EFEAE2;--terracotta: #B85433;--terracotta-dark: #9A4124;--terracotta-soft: #F6EDE8;--terracotta-border: #E5CFCA;--media: #211E1B;--link: #9A4124;--danger: #C0392B;--font-heading: "Literata Variable", Georgia, serif;--font-ui: "Plus Jakarta Sans Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, Menlo, monospace;--r: 4px;--r-lg: 8px;--control-border: var(--ink-muted);--bg: var(--paper);--panel: var(--paper-elevated);--line: var(--border-warm);--fg: var(--ink);--muted: var(--ink-muted);--accent: var(--terracotta);--accent-bg: var(--terracotta-soft);--code: var(--paper-warm)}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font:400 14px/1.5 var(--font-ui)}h1,h2{font-family:var(--font-heading);font-weight:400}h3{font-weight:600}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}code,pre,textarea{font-family:var(--font-mono);font-size:13px;line-height:20px}:focus-visible{outline:2px solid var(--terracotta-dark);outline-offset:2px}.muted{color:var(--muted)}.btn{display:inline-block;padding:5px 11px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--fg);cursor:pointer;font:inherit;font-size:13px;text-decoration:none!important;white-space:nowrap}.btn:hover:not(:disabled){background:var(--paper-warm);border-color:var(--terracotta-border)}.btn:disabled{opacity:.5;cursor:default}.btn.on{border-color:var(--terracotta-border);background:var(--accent-bg);font-weight:600}.btn.primary{background:var(--terracotta);border-color:var(--terracotta);color:#fff}.btn.primary:hover:not(:disabled){background:var(--terracotta-dark);border-color:var(--terracotta-dark)}.btn.danger{color:var(--danger)}.btn.sm{padding:2px 7px}input,textarea{font:inherit;color:var(--fg);background:var(--panel);border:1px solid var(--control-border);border-radius:var(--r);padding:6px 10px}input:focus,textarea:focus{border-color:var(--terracotta)}.layout{display:flex;min-height:calc(100vh - 48px)}.side{width:320px;flex-shrink:0;border-right:1px solid var(--line);background:var(--paper-subtle);overflow-y:auto;position:sticky;top:48px;height:calc(100vh - 48px);padding:8px 0}.mod-title{width:100%;text-align:left;background:none;border:0;color:var(--fg);font:inherit;font-size:13px;line-height:20px;font-weight:600;padding:6px 14px;cursor:pointer;display:flex;gap:6px}.mod-title:hover{background:var(--paper-warm)}.chev{display:inline-block;transition:transform .15s;color:var(--muted)}.chev.down{transform:rotate(90deg)}.side ol{list-style:none;margin:0 0 6px;padding:0}.side li a{display:flex;gap:8px;padding:5px 14px 5px 26px;color:var(--fg);font-size:13px;line-height:20px}.side li a:hover{background:var(--paper-warm);text-decoration:none}.side li a.active{background:var(--paper-active);font-weight:600;box-shadow:inset 3px 0 var(--terracotta)}.side li a.locked{color:var(--muted)}.side li a.done{opacity:.65}.mark{width:14px;flex-shrink:0;text-align:center;color:var(--muted);font-size:11px;padding-top:2px}.content{flex:1;min-width:0;padding:24px 32px 60px}.doc{max-width:860px;margin:0 auto;font-size:16px}.doc h1{font-size:26px;line-height:34px;margin:0 0 14px}.doc h2{font-size:21px;line-height:28px;margin:28px 0 10px;padding-bottom:4px;border-bottom:1px solid var(--line)}.doc h3{font-size:16px;line-height:24px;margin:20px 0 8px}.doc p,.doc li{line-height:28px}.doc pre{background:var(--media);color:var(--paper);border-radius:var(--r-lg);padding:12px 14px;overflow-x:auto}.doc code{background:var(--code);padding:1px 5px;border-radius:var(--r)}.doc pre code{background:none;padding:0}.doc blockquote{margin:12px 0;padding:8px 14px;border-left:3px solid var(--accent);background:var(--accent-bg);border-radius:0 var(--r) var(--r) 0}.doc table{border-collapse:collapse;margin:12px 0;display:block;overflow-x:auto}.doc th,.doc td{border:1px solid var(--line);padding:6px 10px;text-align:left}.doc img{max-width:100%}.t{color:var(--muted);font-family:var(--font-mono);font-size:11px;line-height:16px;flex-shrink:0;padding-top:3px}main.content:has(>*>.lesson){padding:0}.lesson{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.lesson.has-tr{grid-template-columns:minmax(0,1fr) 360px;min-height:calc(100vh - 48px)}.lesson .main{min-width:0;padding:24px 32px 80px}.lesson .main>*{max-width:720px;margin-left:auto;margin-right:auto}.lesson .main>video{max-width:960px}.lesson .main>.tr-col{position:fixed;top:48px;right:0;bottom:0;width:360px;max-width:none;margin:0}.lesson .doc{overflow-wrap:break-word}.lesson-head{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:center;margin-bottom:24px}.lesson-head h1{grid-column:1/-1;margin:8px 0 0;font-size:26px;line-height:34px;overflow-wrap:break-word}.lesson-head .actions{grid-row:1;grid-column:2}.lesson-module{min-width:0;color:var(--ink-muted);font-size:12px;line-height:16px;font-weight:500}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.actions .btn{padding:3px 10px;font-size:12px;line-height:18px}.actions .btn.on{color:var(--terracotta-dark)}.lesson .main>.locked{max-width:448px;padding:80px 0 32px;text-align:center}.locked h2{margin:16px 0 0;font-size:21px;line-height:28px}.locked p{margin:12px 0 0;font-size:16px;line-height:28px}.locked p.muted{margin-top:8px;font-size:12px;line-height:16px;font-weight:500}.locked-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border:1px solid var(--terracotta-border);border-radius:50%;background:var(--terracotta-soft);font-size:24px}video{display:block;width:100%;max-height:70vh;background:var(--media);border-radius:var(--r-lg);margin-bottom:32px}.pager{display:flex;justify-content:space-between;gap:24px;margin-top:48px;padding-top:24px;border-top:1px solid var(--border-warm)}.pager a{display:flex;flex-direction:column;gap:4px;min-width:0;max-width:48%;color:var(--ink);font-weight:500;line-height:24px;overflow-wrap:break-word}.pager a:hover{color:var(--terracotta-dark);text-decoration:none}.pager a.next{margin-left:auto;text-align:right}.pager-label{color:var(--ink-muted);font-size:12px;line-height:16px;font-weight:500}.transcript{height:100%;display:flex;flex-direction:column;border-left:1px solid var(--border-warm);background:var(--paper)}.tr-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border-warm);font-size:13px;line-height:20px}.tr-head h2{margin:0;font:600 13px/20px var(--font-ui)}.tr-count{color:var(--ink-muted);font-family:var(--font-mono);font-size:11px;line-height:16px}.langs{margin-left:auto;display:flex;align-items:center;gap:4px;color:var(--ink-muted);font-size:12px}.langs button{padding:2px 4px;border:0;border-radius:var(--r);background:none;color:var(--ink-muted);font:inherit;cursor:pointer}.langs button:hover{color:var(--ink)}.langs button[aria-pressed=true]{color:var(--terracotta-dark);font-weight:600}.transcript ol{position:relative;list-style:none;margin:0;padding:4px 0 72px;overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0}.transcript li{border-bottom:1px solid var(--border-subtle)}.transcript li button{display:block;width:100%;padding:8px 16px;border:0;background:none;color:var(--ink-muted);font:400 14px/22px var(--font-ui);text-align:left;cursor:pointer}.transcript li button:hover{background:var(--paper-warm);color:var(--ink)}.transcript li button:focus-visible{outline-offset:-2px}.transcript li button.active{background:var(--terracotta-soft);color:var(--ink);font-weight:500;box-shadow:inset 2px 0 var(--terracotta)}.transcript .t{display:block;padding:0 0 2px}.transcript .active .t{color:var(--terracotta-dark);font-weight:600}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}.row input{flex:1;min-width:200px}@media(max-width:1099.98px){.lesson.has-tr{grid-template-columns:minmax(0,1fr);min-height:0}.lesson .main>video{margin-bottom:24px}.lesson .main>.tr-col{position:static;width:auto;max-width:960px;margin:0 auto 32px}.transcript{position:static;height:auto;border:0;border-top:1px solid var(--border-warm);border-bottom:1px solid var(--border-warm)}.tr-head{padding:4px 0;border-bottom:0}.tr-toggle{display:flex;align-items:center;gap:8px;min-height:36px;padding:0 4px 0 0;border:0;background:none;color:var(--ink);font:inherit;cursor:pointer}.tr-toggle .chev{width:12px;text-align:center}.tr-toggle .tr-count{font-weight:400}.transcript ol{flex:none;max-height:45vh;padding-bottom:4px;border-top:1px solid var(--border-subtle)}}@media(max-width:799.98px){.side{position:fixed;left:0;top:48px;z-index:8;width:min(320px,85vw);overscroll-behavior:contain;transform:translate(-100%);visibility:hidden;transition:transform .15s,visibility 0s .15s}.side.open{transform:none;visibility:visible;transition:transform .15s;box-shadow:0 0 20px #1e1c1a2e}.mod-title{padding:12px 16px}.side li a{min-height:44px;align-items:center;padding:8px 16px 8px 26px}.content{padding:16px}.lesson .main{padding:16px 16px 80px}.lesson-head{display:flex;flex-direction:column;align-items:stretch}.lesson-head .actions{margin-top:16px}.actions .btn{padding:0 14px;font-size:13px}.lesson .main>video{width:calc(100% + 32px);max-width:none;margin:0 -16px 24px;border-radius:0}.lesson.has-tr .main>video{margin-bottom:0}.lesson .main>.tr-col{margin:0 -16px 32px}.transcript{border-top:0}.tr-head{padding:0 16px;background:var(--paper-subtle);border-bottom:1px solid var(--border-warm)}.tr-toggle{min-height:44px}.transcript ol{border-top:0}.langs button{min-width:44px;justify-content:center}.pager{flex-direction:column;gap:16px}.pager>span:empty{display:none}.pager a{max-width:none;justify-content:center;min-height:44px}.pager a.next{margin-left:0;padding:12px 16px;border:1px solid var(--terracotta-border);border-radius:var(--r-lg);background:var(--terracotta-soft);text-align:left}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px}.icon{min-width:44px;min-height:44px}input:not([type=checkbox],[type=radio],[type=file]),select{min-height:44px}.tab,.seg button,.langs button,.back,.ed-back,.view{display:inline-flex;align-items:center;min-height:44px}a.title,h2>a{position:relative}a.title:after,h2>a:after{content:"";position:absolute;inset:-12px -4px}}@media(prefers-reduced-motion:reduce){.side{transition:none!important}}@media print{.lesson.has-tr{grid-template-columns:minmax(0,1fr);min-height:0}.lesson .main>.tr-col{position:static;width:auto;max-width:none;margin:0 0 32px}.transcript{height:auto;border-left:0}.transcript ol{overflow:visible;padding-bottom:0}}
