:root{--bg:#2c2e31;--text:#646669;--text-typed:#d1d0c5;--accent:#e2b714;--error:#ca4754;--caret:#e2b714;--font:"JetBrains Mono", ui-monospace, monospace;--ui-font:var(--font-inter,system-ui, sans-serif), var(--font-noto-thai,"Noto Sans Thai");--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--radius-sm:6px;--radius:10px;--radius-lg:16px;--dur-fast:.12s;--dur:.2s;--ease:cubic-bezier(.16, 1, .3, 1);--surface:color-mix(in oklab, var(--text) 8%, var(--bg));--surface-2:color-mix(in oklab, var(--text) 14%, var(--bg));--hairline:color-mix(in oklab, var(--text) 26%, transparent);--text-muted:color-mix(in oklab, var(--text-typed) 62%, var(--bg));--shadow:0 1px 2px #0003, 0 4px 16px #00000038;--shadow-lg:0 8px 40px #0006;--glow:0 0 24px color-mix(in oklab, var(--accent) 45%, transparent);--page-narrow:720px;--page-normal:960px;--page-wide:1200px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--text);font-family:var(--ui-font);-webkit-font-smoothing:antialiased;background-color:var(--bg);background-image:radial-gradient(120% 60% at 50% -10%, color-mix(in oklab, var(--accent) 10%, transparent), transparent 60%), radial-gradient(100% 80% at 50% 120%, color-mix(in oklab, var(--text) 8%, transparent), transparent 70%);min-height:100dvh;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);background-attachment:fixed}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.tt-btn{color:var(--text);border:1px solid var(--text);cursor:pointer;font:inherit;background:0 0;border-radius:4px;padding:8px 16px;transition:transform .12s,opacity .12s}.tt-btn:hover{opacity:.75}.tt-btn:active{transform:translateY(1px)}.tt-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tt-input{background:var(--bg);color:var(--text-typed);border:1px solid color-mix(in oklab, var(--text) 30%, transparent);font:inherit;border-radius:4px;padding:4px 8px}.tt-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tt-icon-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;transition:transform .12s}.tt-icon-btn:hover{transform:scale(1.2)}.tt-icon-btn:focus-visible{outline:2px solid var(--accent)}.theme-card{cursor:pointer;border:1px solid color-mix(in oklab, var(--text) 30%, transparent);border-radius:10px;transition:transform .12s,box-shadow .12s;overflow:hidden}.theme-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000040}.theme-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-card[data-active=true]{border:2px solid var(--accent)}.nav-link{border-radius:var(--radius-sm);color:var(--text);transition:color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);align-items:center;gap:6px;padding:6px 10px;font-size:14px;text-decoration:none;display:inline-flex}.nav-link:hover{color:var(--text-typed);background:var(--surface)}.nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-link[data-active=true]{color:var(--accent);font-weight:600}.nav-icon{padding:6px}.tt-seg:focus-visible,.tt-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tt-slider{accent-color:var(--accent);cursor:pointer;width:160px;max-width:100%}.tt-slider:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.chapter-toggle{transition:background .12s,transform .12s}.chapter-toggle:hover{background:color-mix(in oklab, var(--text) 8%, transparent)}.chapter-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.chapter-toggle:active{transform:translateY(1px)}.sublesson-cell{transition:border-color .12s,transform .12s}.sublesson-cell:hover{border-color:var(--accent);transform:translateY(-1px)}.sublesson-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tt-card{background:linear-gradient(180deg, var(--surface), color-mix(in oklab, var(--surface) 50%, var(--bg)));border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--space-6)}.tt-section-title{align-items:center;gap:var(--space-3);text-transform:uppercase;letter-spacing:2px;color:var(--text-muted);margin:0 0 var(--space-4);font-size:13px;display:flex}.tt-section-title:before{content:"";background:var(--accent);width:3px;height:1em;box-shadow:var(--glow);border-radius:999px}.tt-btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:600}.tt-btn-primary:hover{opacity:.9;box-shadow:var(--glow)}.tt-stage{background:linear-gradient(180deg, color-mix(in oklab, var(--text) 5%, var(--bg)), var(--bg));border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8) var(--space-6)}
@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.0bjc5tiuqdqro.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.11u06r12fd6v_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.0wxq9webf.ew4.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.16ipb6fqu393i.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_c15e96cb-module__0bjUvq__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_c15e96cb-module__0bjUvq__variable{--font-inter:"Inter", "Inter Fallback"}
@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/bfd813093b8ca1bb-s.p.12n410yjpb..9.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/acc5f86302586f33-s.0kxbxiu5l4e4k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Noto Sans Thai;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/f304c3cf3765fb5f-s.059ctrjp3m~x9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Fallback;src:local(Arial);ascent-override:99.79%;descent-override:42.32%;line-gap-override:0.0%;size-adjust:106.33%}.noto_sans_thai_5818dcc9-module__hzb6YW__className{font-family:Noto Sans Thai,Noto Sans Thai Fallback;font-style:normal}.noto_sans_thai_5818dcc9-module__hzb6YW__variable{--font-noto-thai:"Noto Sans Thai", "Noto Sans Thai Fallback"}
