*{box-sizing:border-box}html,body{margin:0;padding:0}body{--bg: var(--td-color-ink);--panel: var(--td-color-panel);--surface: var(--td-color-surface);--tx: var(--td-color-paper);--mut: color-mix(in srgb, var(--td-color-paper) 72%, transparent);--fnt: color-mix(in srgb, var(--td-color-paper) 48%, transparent);--line: color-mix(in srgb, var(--td-color-paper) 16%, transparent);--acc: var(--td-color-accent);--code-bg: color-mix(in srgb, var(--td-color-ink) 92%, var(--td-color-panel));--code-tx: color-mix(in srgb, var(--td-color-paper) 88%, transparent);--td-bg: var(--bg);--td-bg-panel: var(--panel);--td-bg-surface: var(--surface);--td-bg-surface-2: var(--surface);--td-text: var(--tx);--td-text-muted: var(--mut);--td-text-faint: var(--fnt);--td-border: var(--line);--td-border-soft: color-mix(in srgb, var(--tx) 9%, transparent);--td-accent-text: var(--acc);--td-code-bg: var(--code-bg);--td-code-text: var(--code-tx);background:var(--bg);color:var(--tx);min-height:100vh;font-family:var(--td-font-mono);letter-spacing:var(--td-mono-tracking);font-size:calc(var(--td-space-md) * .9);line-height:1.55}body[data-theme=light]{--bg: var(--td-color-paper);--panel: var(--td-color-paper-panel);--surface: var(--td-color-paper-surface);--tx: var(--td-color-ink);--mut: color-mix(in srgb, var(--td-color-ink) 68%, transparent);--fnt: color-mix(in srgb, var(--td-color-ink) 45%, transparent);--line: color-mix(in srgb, var(--td-color-ink) 16%, transparent);--acc: var(--td-color-accent-strong);--code-bg: var(--td-color-ink);--code-tx: var(--td-color-paper);--td-border-soft: color-mix(in srgb, var(--td-color-ink) 9%, transparent)}a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}::selection{background:var(--acc);color:var(--bg)}.mono{font-family:var(--td-font-mono);letter-spacing:var(--td-mono-tracking)}.muted{color:var(--mut)}.k{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .875);letter-spacing:calc(var(--td-mono-tracking) * 7);text-transform:uppercase;color:var(--td-text-faint);display:inline-flex;align-items:center;gap:var(--td-space-xs)}.k:before{content:"";width:var(--td-space-xs);height:calc(var(--td-space-xxs) * .75);background:var(--td-accent);flex:none}.ic{width:1em;height:1em;display:inline-block;vertical-align:-.13em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.ruled{border-bottom:1px dotted var(--td-border)}.shell{display:flex;flex-direction:column;min-height:100vh;background:var(--bg)}.screen{display:block;min-width:0;max-width:calc(var(--td-space-section) * 11);width:100%;margin:0 auto;padding:var(--td-space-xl) var(--td-space-lg) calc(var(--td-space-section) * 1.6)}.status{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:var(--td-space-md);flex-wrap:wrap;padding:var(--td-space-xs) var(--td-space-lg);background:var(--panel);border-bottom:1px solid var(--line);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1)}.status .host{color:var(--acc);font-weight:600;display:inline-flex;align-items:center;gap:var(--td-space-xxs)}.status .host:hover{text-decoration:none}.status .host:before{content:"▮"}.status .host .logo{width:var(--td-space-md);height:var(--td-space-md);border-radius:var(--td-radius-sm);object-fit:cover}.status nav{display:flex;gap:var(--td-space-md);flex-wrap:wrap}.status nav a{color:var(--fnt)}.status nav a:hover{color:var(--tx);text-decoration:none}.status nav a.active{color:var(--tx)}.status nav a.active:before{content:"[";color:var(--acc)}.status nav a.active:after{content:"]";color:var(--acc)}.status .right{margin-left:auto;display:flex;align-items:center;gap:var(--td-space-md);color:var(--fnt);flex-wrap:wrap}.status .right b{color:var(--tx);font-weight:600}.status .right .flash{animation:st-flash .6s ease}@keyframes st-flash{0%{color:var(--acc)}to{color:inherit}}.status .right a:hover{color:var(--tx);text-decoration:none}.tbtn{border:1px solid var(--line);background:none;cursor:pointer;padding:calc(var(--td-space-xxs) * .75) var(--td-space-xs);color:var(--fnt);font:inherit;letter-spacing:inherit;font-size:calc(var(--td-space-sm) * .92);display:inline-flex;align-items:center;gap:var(--td-space-xxs)}.tbtn:hover{color:var(--tx);border-color:var(--fnt)}.tbtn kbd{font:inherit;color:inherit}.logo.lg{width:calc(var(--td-space-xl) * 1.5);height:calc(var(--td-space-xl) * 1.5);border-radius:var(--td-radius-lg);object-fit:cover}.spacer{flex:1}.nav-mini{display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);color:var(--mut);font-family:var(--td-font-mono);font-size:var(--td-space-sm)}.nav-mini:hover{color:var(--tx);text-decoration:none}.prompt{color:var(--fnt);margin:0 0 var(--td-space-xs);font-family:var(--td-font-mono)}.prompt:before{content:"$ ";color:var(--acc);font-weight:600}.prompt .caret{display:inline-block;width:calc(var(--td-space-xs) * 1);height:calc(var(--td-space-md) * .9);background:var(--acc);vertical-align:text-bottom;animation:t-blink 1.1s steps(1) infinite}@keyframes t-blink{50%{opacity:0}}h1.term,.term-h1{font-family:var(--td-font-display);letter-spacing:var(--td-display-tracking);font-weight:var(--td-display-weight);font-size:calc(var(--td-space-xl) * 1.05);margin:0 0 var(--td-space-xs);line-height:1.1}.sub{color:var(--mut);font-family:var(--td-font-body);letter-spacing:normal;max-width:62ch;margin:0 0 var(--td-space-xl)}.readout{display:flex;gap:var(--td-space-xl);flex-wrap:wrap;padding:var(--td-space-md) 0;border-block:1px solid var(--line);margin-bottom:var(--td-space-xl)}.readout .r{display:flex;flex-direction:column;gap:calc(var(--td-space-xxs) * .5)}.readout .n{font-size:calc(var(--td-space-md) * 1.5);font-variant-numeric:tabular-nums;color:var(--tx);font-family:var(--td-font-mono)}.readout .n em{font-style:normal;color:var(--acc)}.readout .l{font-size:calc(var(--td-space-sm) * .83);text-transform:uppercase;letter-spacing:calc(var(--td-mono-tracking) * 5);color:var(--fnt)}.sect{text-transform:uppercase;letter-spacing:calc(var(--td-mono-tracking) * 6);font-size:calc(var(--td-space-sm) * .83);color:var(--fnt);margin:var(--td-space-xl) 0 var(--td-space-sm);font-family:var(--td-font-mono)}.sect:before{content:"## ";color:var(--acc)}.row{display:flex;align-items:baseline;gap:var(--td-space-sm);width:100%;text-align:left;padding:calc(var(--td-space-xs) * 1.25) var(--td-space-xs);color:var(--mut);background:none;border:0;font:inherit;letter-spacing:inherit;cursor:pointer}.row+.row{border-top:1px dotted var(--line)}.row:hover{background:var(--surface);color:var(--tx);text-decoration:none}.row:hover .rt:before{content:"> ";color:var(--acc)}.row .idx{color:var(--fnt);min-width:calc(var(--td-space-lg) * 1.2);font-variant-numeric:tabular-nums;flex:none}.row .rt{color:var(--tx);font-family:var(--td-font-display);letter-spacing:var(--td-display-tracking);font-weight:500}.row .lead{flex:1;border-bottom:1px dotted var(--line);transform:translateY(calc(var(--td-space-xxs) * -1));min-width:var(--td-space-lg)}.row .meta{color:var(--fnt);font-size:calc(var(--td-space-sm) * .92);white-space:nowrap;font-variant-numeric:tabular-nums}.badge{font-size:calc(var(--td-space-sm) * .83);text-transform:uppercase;font-family:var(--td-font-mono)}.badge.free{color:var(--td-success-text)}.badge.pro{color:var(--acc)}.badge.lvl{color:var(--td-info-text)}.feat{border:1px solid var(--line);border-left:calc(var(--td-space-xxs) * .75) solid var(--acc);padding:var(--td-space-lg);margin-bottom:var(--td-space-xl);background:var(--panel)}.feat .k{color:var(--acc);font-size:calc(var(--td-space-sm) * .83);text-transform:uppercase;letter-spacing:calc(var(--td-mono-tracking) * 5)}.feat h2{font-family:var(--td-font-display);letter-spacing:var(--td-display-tracking);font-weight:var(--td-display-weight);font-size:calc(var(--td-space-lg) * 1.15);margin:var(--td-space-xs) 0}.feat p{color:var(--mut);font-family:var(--td-font-body);letter-spacing:normal;margin:0 0 var(--td-space-md);max-width:60ch}.bar{display:inline-flex;align-items:center;gap:var(--td-space-xs);color:var(--fnt);font-size:calc(var(--td-space-sm) * .92);font-family:var(--td-font-mono)}.bar .track{width:calc(var(--td-space-section) * 1.6);height:var(--td-space-xs);background:repeating-linear-gradient(90deg,var(--line) 0,var(--line) calc(var(--td-space-xxs) * 1.5),transparent calc(var(--td-space-xxs) * 1.5),transparent calc(var(--td-space-xxs) * 2.5));position:relative}.bar .track i{position:absolute;inset:0 auto 0 0;background:repeating-linear-gradient(90deg,var(--acc) 0,var(--acc) calc(var(--td-space-xxs) * 1.5),transparent calc(var(--td-space-xxs) * 1.5),transparent calc(var(--td-space-xxs) * 2.5));transition:width .3s ease}.tree{list-style:none;margin:0;padding:0;font-family:var(--td-font-mono)}.tree li{padding:calc(var(--td-space-xxs) * 1.5) 0;color:var(--mut);display:flex;gap:var(--td-space-sm);align-items:baseline}.tree li .twig{color:var(--fnt);white-space:pre}.tree li button.lnk,.tree li a.lnk{color:var(--tx);text-align:left;background:none;border:0;font:inherit;letter-spacing:inherit;cursor:pointer}.tree li button.lnk:hover,.tree li a.lnk:hover{color:var(--acc);text-decoration:none}.tree li .dur{margin-left:auto;color:var(--fnt);font-size:calc(var(--td-space-sm) * .92)}.tree li .st{min-width:calc(var(--td-space-lg) * 1.1)}.tree li.done .st{color:var(--td-success-text)}.tree li.now .st{color:var(--acc)}.tree li.todo .st{color:var(--fnt)}.tree li.mod{color:var(--tx);font-weight:600;padding-top:var(--td-space-md)}.cols{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--td-space-xl)}@media(max-width:760px){.cols{grid-template-columns:1fr}}.aside{border:1px solid var(--line);padding:var(--td-space-lg);align-self:start;background:var(--panel);position:sticky;top:calc(var(--td-space-xxl) * 1)}.aside .k{color:var(--acc);text-transform:uppercase;font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5)}.aside .price{font-size:calc(var(--td-space-lg) * 1.1);margin:var(--td-space-xs) 0 var(--td-space-md);font-family:var(--td-font-mono)}.aside ul{list-style:none;margin:var(--td-space-md) 0 0;padding:0;color:var(--mut);font-family:var(--td-font-body);letter-spacing:normal}.aside li{padding:calc(var(--td-space-xxs) * 1.5) 0}.aside li:before{content:"✓ ";color:var(--td-success-text);font-family:var(--td-font-mono)}.crumb{color:var(--fnt);font-size:calc(var(--td-space-sm) * .92);margin-bottom:var(--td-space-sm);font-family:var(--td-font-mono)}.crumb b{color:var(--acc);font-weight:400}.crumb a,.crumb button{color:var(--fnt);background:none;border:0;font:inherit;letter-spacing:inherit;cursor:pointer}.crumb a:hover,.crumb button:hover{color:var(--tx);text-decoration:none}.footbar{display:flex;align-items:center;gap:var(--td-space-md);border-top:1px solid var(--line);margin-top:var(--td-space-xl);padding-top:var(--td-space-md);flex-wrap:wrap}.footbar .nx{margin-left:auto}.filters{display:flex;gap:var(--td-space-xs);flex-wrap:wrap;margin-bottom:var(--td-space-md)}.tfilter{border:1px solid var(--line);background:none;color:var(--fnt);padding:calc(var(--td-space-xxs) * 1.25) var(--td-space-sm);font:inherit;letter-spacing:inherit;font-size:calc(var(--td-space-sm) * .92);cursor:pointer}.tfilter:hover{color:var(--tx)}.tfilter.on{background:var(--acc);border-color:var(--acc);color:var(--bg);font-weight:600}.btn{display:inline-flex;align-items:center;gap:var(--td-space-xs);border:1px solid var(--td-accent);border-radius:var(--td-radius-sm);background:var(--td-accent);color:var(--td-on-accent);font-family:var(--td-font-body);font-weight:600;font-size:inherit;padding:var(--td-space-xs) var(--td-space-md);cursor:pointer}.btn:hover{text-decoration:none;background:var(--td-color-accent-strong);border-color:var(--td-color-accent-strong)}.btn.sm{padding:calc(var(--td-space-xxs) * 1.5) var(--td-space-sm);font-weight:500}.btn.ghost{background:transparent;border-color:var(--td-border);color:var(--td-text)}.btn.ghost:hover{background:var(--td-bg-surface);border-color:var(--td-text-faint)}.btn.danger{background:var(--td-danger);border-color:var(--td-danger);color:var(--td-on-danger)}.btn:disabled{opacity:.55;cursor:default}.gh-btn{display:inline-flex;align-items:center;gap:var(--td-space-xs);background:var(--td-text);color:var(--td-bg);border:none;border-radius:var(--td-radius-sm);font-family:var(--td-font-body);font-weight:600;padding:var(--td-space-sm) var(--td-space-lg);cursor:pointer}.gh-btn:hover{text-decoration:none;opacity:.9}.icon-btn{display:inline-grid;place-items:center;background:none;border:1px solid var(--td-border);border-radius:var(--td-radius-sm);padding:calc(var(--td-space-xxs) * 1.5) var(--td-space-xs);font-size:inherit;cursor:pointer;color:var(--td-text)}.icon-btn:hover{background:var(--td-bg-surface)}.linklike{background:none;border:0;padding:0;cursor:pointer;color:inherit;display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);font-size:inherit;font-family:inherit}.linklike.on{color:var(--td-accent-text)}.avatar{display:inline-grid;place-items:center;width:calc(var(--td-space-lg) + var(--td-space-xxs));height:calc(var(--td-space-lg) + var(--td-space-xxs));border-radius:var(--td-radius-sm);background:linear-gradient(135deg,var(--td-color-accent),var(--td-color-accent-strong));color:var(--td-color-ink);font-family:var(--td-font-mono);font-weight:600;object-fit:cover;flex:none}.avatar.lg{width:var(--td-space-xl);height:var(--td-space-xl)}.tag{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 3);text-transform:uppercase;padding:calc(var(--td-space-xxs) * .75) var(--td-space-xs);border-radius:var(--td-radius-sm);border:1px solid var(--td-border);color:var(--td-text-muted);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.25)}.tag.lvl-beg,.tag.free{border-color:color-mix(in srgb,var(--td-success-text) 40%,transparent);color:var(--td-success-text);background:var(--td-success-surface)}.tag.lvl-int{border-color:color-mix(in srgb,var(--td-info-text) 40%,transparent);color:var(--td-info-text);background:var(--td-info-surface)}.tag.lvl-adv,.tag.pro{border-color:color-mix(in srgb,var(--td-accent) 40%,transparent);color:var(--td-accent-text);background:var(--td-accent-surface)}.tag.mentor{border-color:color-mix(in srgb,var(--td-mentor-text) 40%,transparent);color:var(--td-mentor-text);background:var(--td-mentor-surface)}.idpill{display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-accent-text);background:var(--td-accent-surface);border:1px solid color-mix(in srgb,var(--td-accent) 35%,transparent);border-radius:var(--td-radius-sm);padding:var(--td-space-xxs) calc(var(--td-space-xs) * 1.375)}.prog{height:calc(var(--td-space-xxs) * 1.25);background:var(--td-bg-surface-2);overflow:hidden}.prog>i{display:block;height:100%;background:var(--td-accent)}.prog.green>i{background:var(--td-success-text)}.tdot{width:calc(var(--td-space-sm) * .92);height:calc(var(--td-space-sm) * .92);border-radius:var(--td-radius-full);border:calc(var(--td-space-xxs) * .45) solid var(--td-text-faint);background:transparent;display:inline-block;flex:none}.tdot.done{background:var(--td-accent);border-color:var(--td-accent)}.tdot.now{border-color:var(--td-accent);background:var(--td-accent-surface)}.tdot.locked{opacity:.35}.signin{padding:calc(var(--td-space-section) * 1.2) var(--td-space-xl);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:calc(var(--td-space-xxs) * 1.5);max-width:calc(var(--td-space-section) * 6);margin:0 auto}.signin h3{font-size:calc(var(--td-space-lg) * 1.4);margin:var(--td-space-xs) 0;font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);line-height:1.15}.signin p{color:var(--td-text-muted);margin:0 0 var(--td-space-lg);max-width:46ch}.signin .fine{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-top:var(--td-space-md);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);border-top:1px dotted var(--td-border);padding-top:var(--td-space-md)}.signin .fine .ic{color:var(--td-success-text)}.catalog-toolbar{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-md) var(--td-space-xl);border-bottom:1px dotted var(--td-border);flex-wrap:wrap}.filter{font-family:var(--td-font-mono);font-size:var(--td-space-sm);letter-spacing:var(--td-mono-tracking);text-transform:lowercase;color:var(--td-text-faint);background:transparent;border:1px solid var(--td-border-soft);border-radius:var(--td-radius-sm);padding:calc(var(--td-space-xxs) * 1.5) var(--td-space-sm);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.75);cursor:pointer}.filter:hover{color:var(--td-text-muted);border-color:var(--td-border)}.filter.on{color:var(--td-on-accent);border-color:var(--td-accent);background:var(--td-accent)}select.filter{appearance:none;color:var(--td-text-muted)}.card-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--td-space-md);padding:var(--td-space-lg) var(--td-space-xl)}@media(max-width:620px){.card-grid{grid-template-columns:1fr}}.course-card{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-md) calc(var(--td-space-md) * 1.125);display:flex;flex-direction:column;gap:var(--td-space-xs);color:inherit}.course-card:hover{text-decoration:none;border-style:solid;border-color:var(--td-text-faint);box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.cc-top{display:flex;align-items:center;gap:var(--td-space-sm)}.cc-icon{width:var(--td-space-xl);height:var(--td-space-xl);border-radius:var(--td-radius-sm);flex:none;display:grid;place-items:center;background:var(--td-bg-panel);border:1px solid var(--td-border);color:var(--td-accent-text);font-size:calc(var(--td-space-md) * 1.25)}.course-card h4{margin:0;font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.course-card p{margin:0;color:var(--td-text-muted)}.cc-tags{display:flex;gap:calc(var(--td-space-xxs) * 1.5);flex-wrap:wrap}.cc-foot{display:flex;align-items:center;gap:var(--td-space-md);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-top:auto;padding-top:var(--td-space-xs);border-top:1px dotted var(--td-border-soft)}.cc-foot span{display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.25)}.cat-feat{display:grid;grid-template-columns:auto 1fr auto;gap:var(--td-space-lg);align-items:center;padding:var(--td-space-xl);border-bottom:1px dotted var(--td-border);color:inherit}.cat-feat:hover{text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.cat-feat .cc-icon{width:var(--td-space-xxl);height:var(--td-space-xxl);font-size:calc(var(--td-space-md) * 1.75)}.cat-feat h3{margin:var(--td-space-xxs) 0;font-size:calc(var(--td-space-md) * 1.6);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.cat-feat p{margin:0 0 var(--td-space-xs);color:var(--td-text-muted);max-width:62ch}.cat-feat .cf-meta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--td-space-xs)}.cat-feat .cf-meta .mono{font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}@media(max-width:720px){.cat-feat{grid-template-columns:auto 1fr}.cat-feat .cf-meta{grid-column:1 / -1;flex-direction:row;align-items:center}}.cat-row{display:grid;grid-template-columns:auto 1fr auto;gap:var(--td-space-md);align-items:center;padding:var(--td-space-md) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft);color:inherit}.cat-row:hover{text-decoration:none;background:var(--td-bg-surface);box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.cat-row h4{margin:0 0 calc(var(--td-space-xxs) * .5);font-weight:var(--td-display-weight)}.cat-row p{margin:0 0 calc(var(--td-space-xxs) * 1.25);color:var(--td-text-muted)}.cat-row .cr-meta{display:flex;flex-direction:column;align-items:flex-end;gap:calc(var(--td-space-xxs) * 1.25);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);white-space:nowrap}@media(max-width:620px){.cat-row{grid-template-columns:auto 1fr}.cat-row .cr-meta{display:none}}.dash-hero{padding:var(--td-space-xl) var(--td-space-xl) var(--td-space-lg);border-bottom:1px dotted var(--td-border)}.dash-hero h3{margin:var(--td-space-xs) 0 var(--td-space-xxs);font-size:calc(var(--td-space-lg) * 1.1);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.dash-hero p{margin:0;color:var(--td-text-muted)}.continue{display:grid;grid-template-columns:calc(var(--td-space-xl) + var(--td-space-md)) 1fr auto;gap:var(--td-space-md);align-items:center;padding:var(--td-space-md) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft);color:inherit}.continue:hover{background:var(--td-bg-surface);text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.continue .thumb{width:calc(var(--td-space-xl) + var(--td-space-md));height:var(--td-space-xl);border-radius:var(--td-radius-sm);background:var(--td-bg-panel);border:1px solid var(--td-border);display:grid;place-items:center;color:var(--td-accent-text)}.continue h4{margin:0 0 var(--td-space-xxs);font-weight:var(--td-display-weight)}.continue .sub{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:calc(var(--td-space-xxs) * 1.75)}.continue .pct{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text);text-align:right;white-space:nowrap}.instruments{display:flex;flex-wrap:wrap;gap:var(--td-space-xl);padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border)}.instruments .inst{display:inline-flex;align-items:baseline;gap:var(--td-space-xs)}.instruments .num{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;font-size:calc(var(--td-space-md) * 1.1);color:var(--td-text)}.instruments .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.experiment{display:block;padding:var(--td-space-xl);border-bottom:1px dotted var(--td-border);color:inherit}.experiment:hover{text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent);background:var(--td-bg-surface)}.experiment .exp-k{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 6);text-transform:uppercase;color:var(--td-accent-text);display:inline-flex;align-items:center;gap:var(--td-space-xs)}.experiment h2{margin:var(--td-space-xs) 0 var(--td-space-xxs);font-size:calc(var(--td-space-lg) * 1.2);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.experiment .exp-sub{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .96);color:var(--td-text-faint)}.experiment .exp-row{display:grid;grid-template-columns:1fr auto auto;gap:var(--td-space-md);align-items:center;margin-top:var(--td-space-md)}.experiment .exp-row .pct{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text)}@media(max-width:620px){.experiment .exp-row{grid-template-columns:1fr auto}.experiment .exp-row .btn{grid-column:1 / -1;justify-content:center}}.struct{display:grid;grid-template-columns:1.4fr 1fr}@media(max-width:720px){.struct{grid-template-columns:1fr}.struct .left{border-right:0;border-bottom:1px dotted var(--td-border)}}.struct .left{border-right:1px dotted var(--td-border)}.module{border-bottom:1px dotted var(--td-border-soft)}.mod-head{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-xl);font-weight:var(--td-display-weight)}.mod-head .ic{color:var(--td-accent-text)}.mod-head .n{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);font-weight:400}.lesson{display:flex;align-items:center;gap:calc(var(--td-space-xs) * 1.375);padding:calc(var(--td-space-xs) * 1.25) var(--td-space-xl) calc(var(--td-space-xs) * 1.25) calc(var(--td-space-xl) + var(--td-space-xxs));color:var(--td-text-muted);border-top:1px dotted var(--td-border-soft)}.lesson:hover{background:var(--td-bg-surface);color:var(--td-text);text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.lesson.done .ic{color:var(--td-success-text)}.lesson.current{box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent);background:var(--td-accent-surface);color:var(--td-text)}.lesson.current .ic{color:var(--td-accent-text)}.lesson .dur{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.lesson.quiz-link .ic,.lesson.exercise .ic{color:var(--td-info-text)}.lesson.lockedrow{color:var(--td-text-faint);cursor:not-allowed}.mod-head .drip{color:var(--td-info-text);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.25)}.enroll-panel{padding:var(--td-space-lg) var(--td-space-xl);display:flex;flex-direction:column;gap:var(--td-space-md);align-items:flex-start}.enroll-panel .price{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;font-size:calc(var(--td-space-md) * 1.4);color:var(--td-text)}.enroll-panel ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--td-space-xs);color:var(--td-text-muted)}.enroll-panel li{display:flex;align-items:center;gap:var(--td-space-xs)}.enroll-panel li .ic{color:var(--td-success-text);flex:none}.course-head{position:sticky;top:0;z-index:5;padding:var(--td-space-lg) var(--td-space-xl);background:color-mix(in srgb,var(--td-bg) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px dotted var(--td-border)}.course-head h3{margin:0 0 var(--td-space-xxs);font-size:calc(var(--td-space-md) * 1.4);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.course-head p{margin:0;color:var(--td-text-muted)}.course-head .prog{margin-top:var(--td-space-sm)}.syl-row,.syl-modhead{display:grid;grid-template-columns:var(--td-space-xl) 1fr auto;gap:var(--td-space-sm);align-items:center;padding-right:var(--td-space-xl);color:var(--td-text-muted)}.syl-modhead{font-weight:var(--td-display-weight);color:var(--td-text);padding-top:var(--td-space-md);padding-bottom:var(--td-space-xs)}.syl-modhead .n{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);font-weight:400}.syl-rail{position:relative;align-self:stretch;min-height:calc(var(--td-space-lg) + var(--td-space-xs))}.syl-rail:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:0;transform:translate(-50%);border-left:1px dotted var(--td-text-faint)}.syl-rail .tdot,.syl-rail .mnode{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:var(--td-bg)}.syl-rail .tdot.done{background-color:var(--td-accent)}.syl-rail .tdot.now{background-color:var(--td-bg)}.syl-rail .mnode{width:var(--td-space-xs);height:var(--td-space-xs);border-radius:0;background:var(--td-bg-surface-2);border:1px solid var(--td-border);transform:translate(-50%,-50%) rotate(45deg)}a.syl-row{padding-top:calc(var(--td-space-xs) * 1.25);padding-bottom:calc(var(--td-space-xs) * 1.25)}a.syl-row:hover{background:var(--td-bg-surface);color:var(--td-text);text-decoration:none}.syl-row.current{background:var(--td-accent-surface);color:var(--td-text);box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.syl-row.done .syl-title{color:var(--td-text-muted)}.syl-row .syl-title{display:inline-flex;align-items:center;gap:var(--td-space-xs)}.syl-row .syl-title .ic{color:var(--td-info-text)}.syl-row.lockedrow{color:var(--td-text-faint);cursor:not-allowed;padding-top:calc(var(--td-space-xs) * 1.25);padding-bottom:calc(var(--td-space-xs) * 1.25)}.syl-row .dur{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.viewer{display:grid;grid-template-columns:calc(var(--td-space-section) * 2.1) minmax(0,1fr)}@media(max-width:760px){.viewer{grid-template-columns:1fr}.viewer .rail{display:none}}.viewer .rail{border-right:1px dotted var(--td-border);padding:calc(var(--td-space-xxs) * 1.5) 0}.rail .rmod{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 6);text-transform:uppercase;color:var(--td-text-faint);padding:var(--td-space-sm) var(--td-space-md) calc(var(--td-space-xxs) * 1.5);border-bottom:1px dotted var(--td-border-soft);margin-bottom:calc(var(--td-space-xxs) * 1.5)}.rail a{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-xs) var(--td-space-md);border-left:2px solid transparent;color:var(--td-text-muted)}.rail a:hover{background:var(--td-bg-surface);color:var(--td-text);text-decoration:none}.rail a.active{background:var(--td-accent-surface);color:var(--td-text);border-left-color:var(--td-accent)}.rail a.active .ic{color:var(--td-accent-text)}.rail a.done .ic{color:var(--td-success-text)}.video{aspect-ratio:16 / 9;background:var(--td-code-bg);border-bottom:1px dotted var(--td-border)}.video iframe{width:100%;height:100%;border:0;display:block}.lesson-body{padding:var(--td-space-xl);max-width:calc(var(--td-space-section) * 8)}.lesson-body .crumb{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:var(--td-space-sm)}.lesson-body .crumb a{color:inherit}.lesson-body h2{font-size:calc(var(--td-space-lg) * 1.05);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);margin:0 0 calc(var(--td-space-xxs) * 1.5)}.lesson-body .meta{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);display:flex;gap:var(--td-space-sm);flex-wrap:wrap;margin-bottom:calc(var(--td-space-md) * 1.125);border-bottom:1px dotted var(--td-border-soft);padding-bottom:var(--td-space-sm)}.lesson-body .meta span{display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5)}.lesson-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--td-space-sm);margin-top:var(--td-space-lg);padding-top:calc(var(--td-space-md) * 1.125);border-top:1px dotted var(--td-border-soft);flex-wrap:wrap}.lesson-foot .ln{font-size:var(--td-space-sm);color:var(--td-text-muted);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.75)}.apparatus{position:sticky;bottom:0;z-index:6;display:flex;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-sm) var(--td-space-xl);background:color-mix(in srgb,var(--td-bg-panel) 94%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--td-border);flex-wrap:wrap}.apparatus .mod-dots{display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.75)}.apparatus .mod-dots a{display:inline-grid;place-items:center;padding:calc(var(--td-space-xxs) * .75)}.apparatus .ap-note{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 4);text-transform:uppercase;color:var(--td-text-faint)}@media(max-width:760px){.apparatus .mod-dots,.apparatus .ap-note{display:none}}.prose{color:var(--td-text-muted)}.prose p{margin:var(--td-space-xs) 0}.prose strong{color:var(--td-text)}.prose ul,.prose ol{margin:var(--td-space-xs) 0;padding-left:var(--td-space-lg)}.prose blockquote{margin:var(--td-space-sm) 0;padding:var(--td-space-xxs) var(--td-space-md);border-left:2px solid var(--td-accent);color:var(--td-text-muted)}.prose code.inline{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1.04);background:var(--td-bg-surface-2);padding:calc(var(--td-space-xxs) * .25) calc(var(--td-space-xxs) * 1.5);border-radius:var(--td-radius-sm);color:var(--td-accent-text)}.prose pre.code{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1.04);line-height:1.6;background:var(--td-code-bg);color:var(--td-code-text);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-md);overflow-x:auto;margin:var(--td-space-sm) 0}.prose .md-img img{max-width:100%;border-radius:var(--td-radius-sm)}.loading{padding:var(--td-space-xl);color:var(--td-text-faint)}.loading:before{content:"> ";color:var(--td-accent-text)}.empty{padding:var(--td-space-xl);color:var(--td-text-muted)}.error-screen{padding:var(--td-space-section) var(--td-space-xl);display:flex;flex-direction:column;align-items:flex-start;gap:var(--td-space-md);max-width:calc(var(--td-space-section) * 6);margin:0 auto}.error-screen .code-num{font-size:calc(var(--td-space-xxl) * 1.4);line-height:1;color:var(--td-accent-text)}.form-error{color:var(--td-danger-text);font-family:var(--td-font-mono);font-size:var(--td-space-sm);margin:0}.pad-lg{padding:var(--td-space-lg) var(--td-space-xl)}.next-for-you{border-top:1px dotted var(--td-border)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.quiz{padding:var(--td-space-lg) var(--td-space-xl);max-width:calc(var(--td-space-section) * 7)}.quiz .qhead{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--td-bg) 94%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-sm) 0;margin-bottom:var(--td-space-md);border-bottom:1px dotted var(--td-border-soft)}.quiz .qhead .qn{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text-faint)}.quiz .qprog{width:calc(var(--td-space-section) * 1.5)}.quiz .crumb{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:var(--td-space-md);display:flex;gap:var(--td-space-sm);align-items:center}.quiz h3{font-size:calc(var(--td-space-md) * 1.2);font-weight:var(--td-display-weight);margin:0 0 var(--td-space-md)}.opt{display:flex;align-items:center;gap:var(--td-space-sm);width:100%;text-align:left;padding:var(--td-space-sm) var(--td-space-md);border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);margin-bottom:var(--td-space-xs);background:transparent;color:var(--td-text-muted);font-family:inherit;font-size:inherit;cursor:pointer}.opt:hover:not(:disabled){border-style:solid;border-color:var(--td-accent)}.opt .box{width:calc(var(--td-space-md) * 1.25);height:calc(var(--td-space-md) * 1.25);border-radius:var(--td-radius-full);border:2px solid var(--td-text-faint);display:grid;place-items:center;flex:none}.opt .box .ic{font-size:calc(var(--td-space-sm) * 1);color:var(--td-on-accent);opacity:0}.opt.chosen{border-style:solid;border-color:var(--td-accent);color:var(--td-text)}.opt.chosen .box{border-color:var(--td-accent);background:var(--td-accent)}.opt.chosen .box .ic{opacity:1}.opt.correct{border-style:solid;border-color:color-mix(in srgb,var(--td-success-text) 50%,transparent);background:var(--td-success-surface);color:var(--td-text)}.opt.correct .box{border-color:var(--td-success-text);background:var(--td-success-text)}.opt.correct .box .ic{opacity:1}.opt.wrong{border-style:solid;border-color:color-mix(in srgb,var(--td-danger-text) 50%,transparent);background:var(--td-danger-surface)}.opt.wrong .box{border-color:var(--td-danger-text)}.quiz .fb{display:flex;align-items:flex-start;gap:var(--td-space-xs);margin-top:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-md);border-radius:var(--td-radius-sm);background:var(--td-success-surface);border-left:2px solid var(--td-success-text);color:var(--td-text-muted)}.quiz .fb .ic{color:var(--td-success-text);flex:none;margin-top:calc(var(--td-space-xxs) * .25)}.quiz .fb.bad{background:var(--td-danger-surface);border-left-color:var(--td-danger-text)}.quiz .fb.bad .ic{color:var(--td-danger-text)}.quiz .fb b{color:var(--td-text)}.qnav{display:flex;gap:calc(var(--td-space-xxs) * 1.5);margin-top:var(--td-space-md)}.qdot{width:var(--td-space-lg);height:var(--td-space-lg);border-radius:var(--td-radius-sm);border:1px solid var(--td-border);background:transparent;color:var(--td-text-muted);font-family:var(--td-font-mono);cursor:pointer}.qdot.ok{color:var(--td-success-text);border-color:color-mix(in srgb,var(--td-success-text) 40%,transparent)}.qdot.bad{color:var(--td-danger-text);border-color:color-mix(in srgb,var(--td-danger-text) 40%,transparent)}.qdot.on{background:var(--td-bg-surface-2)}.ex-head{display:flex;align-items:flex-start;gap:var(--td-space-md);padding:var(--td-space-lg) var(--td-space-xl);border-bottom:1px dotted var(--td-border);flex-wrap:wrap}.ex-head h3{margin:var(--td-space-xxs) 0;font-weight:var(--td-display-weight)}.ex-head .crumb{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.ide{display:grid;grid-template-columns:1fr 1fr;min-height:calc(var(--td-space-section) * 3.3)}@media(max-width:720px){.ide{grid-template-columns:1fr}}.ide .pane{border-right:1px dotted var(--td-border);display:flex;flex-direction:column}.ide .pane.last{border-right:0}.ide .ptab{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-xs) var(--td-space-sm);border-bottom:1px dotted var(--td-border);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-muted)}.ide .ptab .ic{color:var(--td-accent-text)}.editor{flex:1;min-height:calc(var(--td-space-section) * 2.5);resize:vertical;background:var(--td-code-bg);color:var(--td-code-text);border:0;padding:var(--td-space-md);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1.04);line-height:1.6}.editor:focus-visible{outline-offset:-2px}.term{background:var(--td-code-bg);color:var(--td-code-text);font-family:var(--td-font-mono);font-size:var(--td-space-sm);line-height:1.65;padding:var(--td-space-md);flex:1;overflow:auto}.term .ok{color:var(--td-success-text)}.term .er{color:var(--td-danger-text)}.term .dim{color:color-mix(in srgb,var(--td-code-text) 55%,transparent)}.ide .testrow{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-xs) var(--td-space-sm);border-top:1px dotted var(--td-border);font-size:calc(var(--td-space-sm) * .96);color:var(--td-text-muted)}.ide .testrow .ic{color:var(--td-success-text)}.cert-stage{padding:var(--td-space-xl);display:grid;place-items:center}.cert{width:100%;max-width:calc(var(--td-space-section) * 7);min-height:calc(var(--td-space-section) * 4.5);display:flex;flex-direction:column;justify-content:center;border:1px solid var(--td-border);border-radius:var(--td-radius-lg);padding:calc(var(--td-space-xl) * 1.5) var(--td-space-xl) var(--td-space-xl);background:var(--td-bg-surface);position:relative;text-align:center;box-shadow:var(--td-shadow-md)}.cert:before{content:"";position:absolute;inset:var(--td-space-xs);border:1px dotted var(--td-border);border-radius:var(--td-radius-md);pointer-events:none}.cert .seal{width:var(--td-space-xxl);height:var(--td-space-xxl);border-radius:var(--td-radius-full);margin:0 auto var(--td-space-sm);display:grid;place-items:center;background:var(--td-accent-surface);color:var(--td-accent-text);border:1px solid color-mix(in srgb,var(--td-accent) 40%,transparent);font-size:var(--td-space-lg)}.cert .ck{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);letter-spacing:calc(var(--td-mono-tracking) * 8);text-transform:uppercase;color:var(--td-text-faint)}.cert h3{font-size:calc(var(--td-space-md) * 1.5);margin:var(--td-space-xs) 0 var(--td-space-xxs);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.cert .name{font-size:calc(var(--td-space-md) * 1.15);color:var(--td-accent-text);font-weight:var(--td-display-weight);margin:var(--td-space-sm) 0 var(--td-space-xxs)}.cert .course{color:var(--td-text-muted)}.cert .sig{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--td-space-md);margin-top:auto;padding-top:calc(var(--td-space-xl) * 1.5);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);text-align:left}.cert .sig b{color:var(--td-text);font-weight:500;display:block;font-family:var(--td-font-body)}.cert .seal-logo{width:100%;height:100%;border-radius:var(--td-radius-full);object-fit:cover}.cert .signer{text-align:center}.cert .verify{text-align:right}.cert .qr{display:inline-block;margin-top:var(--td-space-xxs);background:var(--td-color-paper);color:var(--td-color-ink);padding:var(--td-space-xxs);border-radius:var(--td-radius-sm);border:1px solid var(--td-border-soft)}.cert .qr svg{display:block;width:calc(var(--td-space-xxl) * 1.1);height:calc(var(--td-space-xxl) * 1.1)}.cert .autograph{display:block;white-space:nowrap;font-family:var(--td-font-body);font-style:italic;font-weight:var(--td-display-weight);font-size:calc(var(--td-space-md) * 1.1);letter-spacing:var(--td-display-tracking);color:var(--td-text);border-bottom:1px solid var(--td-border);padding:0 var(--td-space-md) var(--td-space-xxs);margin-bottom:var(--td-space-xxs)}.cert-actions{display:flex;gap:var(--td-space-xs);justify-content:center;padding:var(--td-space-md);border-top:1px dotted var(--td-border);flex-wrap:wrap}.search-bar{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border)}.search-bar .field{flex:1;display:flex;align-items:center;gap:var(--td-space-xs);background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-xs) var(--td-space-sm)}.search-bar .field .ic{color:var(--td-text-faint)}.search-bar input{flex:1;background:transparent;border:0;color:var(--td-text);font-family:var(--td-font-mono);font-size:var(--td-space-sm);outline:none}.split2{display:grid;grid-template-columns:1fr 1fr}@media(max-width:720px){.split2{grid-template-columns:1fr}}.split2>div:first-child{border-right:1px dotted var(--td-border)}.panel-head{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border);font-weight:var(--td-display-weight)}.panel-head .ic{color:var(--td-accent-text)}.panel-head .n{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);font-weight:400}.note-item{padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft)}.note-item .src{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-accent-text);margin-bottom:var(--td-space-xxs);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5)}.note-item p{margin:0;color:var(--td-text-muted)}.note-item .ts{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .875);color:var(--td-text-faint);margin-top:calc(var(--td-space-xxs) * 1.5)}.bm-item{display:flex;align-items:center;gap:calc(var(--td-space-xs) * 1.375);padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft);color:var(--td-text)}.bm-item:hover{background:var(--td-bg-surface);text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.bm-item .ic{color:var(--td-accent-text);flex:none}.bm-item .dur{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.bm-item.borderless{border:0;padding:calc(var(--td-space-xxs) * 1.5) 0}.bm-item.borderless:hover{box-shadow:none;background:transparent;text-decoration:underline}.sr{display:block;padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft);color:inherit}.sr:hover{background:var(--td-bg-surface);text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.sr .kind{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.sr h4{margin:var(--td-space-xxs) 0;font-weight:var(--td-display-weight)}.sr h4 mark,.sr p mark{background:var(--td-accent-surface);color:var(--td-accent-text);padding:0 calc(var(--td-space-xxs) * .5)}.sr p{margin:0;color:var(--td-text-muted)}.sr .path{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-top:var(--td-space-xxs)}.notebox{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);margin-top:var(--td-space-lg);overflow:hidden}.notebox textarea{width:100%;min-height:calc(var(--td-space-section) * 1);resize:vertical;border:0;background:transparent;color:var(--td-text);font-family:var(--td-font-body);font-size:inherit;padding:var(--td-space-sm) var(--td-space-md);outline:none}.notebox-foot{display:flex;justify-content:space-between;align-items:center;padding:var(--td-space-xs) var(--td-space-sm);border-top:1px dotted var(--td-border-soft);background:var(--td-bg-panel)}.path{padding:var(--td-space-lg) var(--td-space-xl);max-width:calc(var(--td-space-section) * 7)}.path-node{display:grid;grid-template-columns:var(--td-space-xl) 1fr;gap:var(--td-space-sm)}.path-node .rail-col{display:flex;flex-direction:column;align-items:center}.path-node .knob{width:calc(var(--td-space-lg) + var(--td-space-xxs));height:calc(var(--td-space-lg) + var(--td-space-xxs));border-radius:var(--td-radius-full);display:grid;place-items:center;flex:none;border:2px solid var(--td-border);background:var(--td-bg-surface);color:var(--td-text-muted)}.path-node.done .knob{border-color:var(--td-success-text);background:var(--td-success-surface);color:var(--td-success-text)}.path-node.current .knob{border-color:var(--td-accent);background:var(--td-accent-surface);color:var(--td-accent-text)}.path-node .line{flex:1;width:0;border-left:1px dotted var(--td-text-faint);margin:var(--td-space-xxs) 0;min-height:var(--td-space-md)}.path-node .body{padding-bottom:var(--td-space-lg)}.path-node .body h4{margin:var(--td-space-xxs) 0;font-weight:var(--td-display-weight)}.path-node .body h4 a{color:var(--td-text)}.path-node.locked .body h4 a{color:var(--td-text-faint)}.path-node .body p{margin:0;color:var(--td-text-muted)}.path-node .prereq{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-top:calc(var(--td-space-xxs) * 1.75);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5)}.path-node .prereq.ok .ic{color:var(--td-success-text)}.cohort-head{padding:var(--td-space-xl);border-bottom:1px dotted var(--td-border)}.cohort-head h3{margin:var(--td-space-xs) 0 calc(var(--td-space-xxs) * 1.5);font-size:calc(var(--td-space-md) * 1.4);font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking)}.cohort-head .when{font-family:var(--td-font-mono);font-size:var(--td-space-sm);color:var(--td-accent-text);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.75)}.cohort-body{padding:var(--td-space-lg) var(--td-space-xl);display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--td-space-md) * 1.125)}@media(max-width:620px){.cohort-body{grid-template-columns:1fr}}.cohort-card{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-md)}.cohort-card.wide{grid-column:1 / -1}.cohort-card .ct{display:flex;align-items:center;gap:var(--td-space-xs);font-weight:var(--td-display-weight);margin-bottom:var(--td-space-xs)}.cohort-card .ct .ic{color:var(--td-accent-text)}.cohort-card p{margin:0 0 var(--td-space-sm);color:var(--td-text-muted)}.avatars{display:flex}.avatars .avatar{margin-left:calc(var(--td-space-xxs) * -1.5);border:2px solid var(--td-bg)}.avatars .avatar:first-child{margin-left:0}.avatars .more{width:calc(var(--td-space-lg) + var(--td-space-xxs));height:calc(var(--td-space-lg) + var(--td-space-xxs));margin-left:calc(var(--td-space-xxs) * -1.5);border-radius:var(--td-radius-sm);border:2px solid var(--td-bg);background:var(--td-bg-surface-2);display:grid;place-items:center;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);color:var(--td-text-muted)}.lab-record{display:flex;flex-wrap:wrap;align-items:center;gap:var(--td-space-xl);padding:var(--td-space-xl);border-bottom:1px dotted var(--td-border)}.streak-days{display:flex;gap:calc(var(--td-space-xxs) * 1.75)}.streak-days .d{width:var(--td-space-xl);height:var(--td-space-xl);border-radius:var(--td-radius-sm);background:transparent;border:1px dotted var(--td-border);display:grid;place-items:center;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);color:var(--td-text-faint)}.streak-days .d.on{background:var(--td-accent-surface);border-style:solid;border-color:color-mix(in srgb,var(--td-accent) 40%,transparent);color:var(--td-accent-text)}.streak-days .d.hit{background:var(--td-accent);border-style:solid;border-color:var(--td-accent);color:var(--td-on-accent)}.lab-record .rec-nums{display:flex;flex-wrap:wrap;gap:var(--td-space-xl);margin-left:auto}.lab-record .rn{display:flex;flex-direction:column;gap:calc(var(--td-space-xxs) * .5)}.lab-record .rn .num{font-family:var(--td-font-mono);font-size:calc(var(--td-space-md) * 1.6);font-variant-numeric:tabular-nums}.lab-record .rn .num .ic{color:var(--td-accent-text);font-size:calc(var(--td-space-md) * 1.1)}.lab-record .rn .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}@media(max-width:620px){.lab-record{gap:var(--td-space-lg)}.lab-record .rec-nums{margin-left:0}}.lb-head{padding:var(--td-space-sm) var(--td-space-xl);border-bottom:1px dotted var(--td-border);font-weight:var(--td-display-weight);display:flex;align-items:center;gap:var(--td-space-xs)}.lb-head .ic{color:var(--td-accent-text)}.lb-row{display:grid;grid-template-columns:var(--td-space-xl) 1fr auto;gap:var(--td-space-sm);align-items:center;padding:calc(var(--td-space-xs) * 1.375) var(--td-space-xl);border-bottom:1px dotted var(--td-border-soft)}.lb-row .rank{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text-faint);text-align:center}.lb-row .rank.medal{color:var(--td-accent-text)}.lb-row.me{background:var(--td-accent-surface);box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.lb-row.me .rank{color:var(--td-accent-text)}.lb-row .who{display:flex;align-items:center;gap:var(--td-space-xs)}.lb-row .who .you{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-accent-text)}.lb-row .xp{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text)}.disc{margin-top:var(--td-space-lg)}.disc .anchor{display:flex;align-items:center;gap:var(--td-space-xs);flex-wrap:wrap;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:var(--td-space-md);padding:var(--td-space-xs) var(--td-space-sm);border:1px dashed var(--td-border);border-radius:var(--td-radius-sm)}.disc .anchor .ic,.disc .anchor b{color:var(--td-accent-text)}.reply-box{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);margin-top:var(--td-space-md);overflow:hidden}.reply-box input{width:100%;border:0;border-bottom:1px dotted var(--td-border-soft);background:transparent;color:var(--td-text);font-family:var(--td-font-body);font-size:inherit;padding:var(--td-space-sm) var(--td-space-md);outline:none}.reply-box .ta{width:100%;min-height:calc(var(--td-space-section) * .8);resize:vertical;border:0;background:transparent;color:var(--td-text);font-family:var(--td-font-body);font-size:inherit;padding:var(--td-space-sm) var(--td-space-md);outline:none}.reply-box .foot{display:flex;justify-content:space-between;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-xs) var(--td-space-sm);border-top:1px dotted var(--td-border-soft);background:var(--td-bg-panel);flex-wrap:wrap}.md-hint{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.assign{padding:var(--td-space-lg) var(--td-space-xl);max-width:calc(var(--td-space-section) * 7)}.assign.bordered{border-bottom:1px dotted var(--td-border-soft);max-width:none}.assign h3{margin:0 0 var(--td-space-xxs);font-size:calc(var(--td-space-md) * 1.15);font-weight:var(--td-display-weight)}.assign .crumb{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:var(--td-space-sm)}.assign .due{font-family:var(--td-font-mono);font-size:var(--td-space-sm);color:var(--td-accent-text);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);margin-bottom:var(--td-space-md)}.dropzone{border:1px dashed var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-lg);color:var(--td-text-muted);margin:var(--td-space-md) 0;display:flex;gap:var(--td-space-md);align-items:flex-start}.dropzone>.ic{font-size:var(--td-space-lg);color:var(--td-accent-text);flex:none;margin-top:var(--td-space-xxs)}.dz-fields{flex:1;display:flex;flex-direction:column;gap:var(--td-space-xs);align-items:flex-start}.dz-fields input,.dz-fields textarea{width:100%;background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);padding:var(--td-space-xs) var(--td-space-sm);font-size:inherit;font-family:var(--td-font-body)}.dz-fields textarea{min-height:calc(var(--td-space-section) * .9);resize:vertical}.submission{display:flex;align-items:center;gap:calc(var(--td-space-xs) * 1.375);padding:var(--td-space-sm) var(--td-space-md);border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);margin-bottom:var(--td-space-xs)}.submission .ic{color:var(--td-accent-text);flex:none}.submission .status{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92)}.submission .status.graded{color:var(--td-success-text)}.submission .status.review{color:var(--td-info-text)}.feedback{background:var(--td-mentor-surface);border-left:2px solid var(--td-mentor-text);border-radius:var(--td-radius-sm);padding:var(--td-space-md);margin-top:calc(var(--td-space-xxs) * 1.5)}.feedback .fh{display:flex;align-items:center;gap:var(--td-space-xs);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-mentor-text);text-transform:uppercase;letter-spacing:calc(var(--td-mono-tracking) * 4);margin-bottom:var(--td-space-xs)}.feedback p{margin:0 0 var(--td-space-xs);color:var(--td-text-muted)}.feedback .grade{color:var(--td-text)}.feedback .grade b{color:var(--td-success-text)}.feedback textarea{width:100%;min-height:calc(var(--td-space-section) * .8);resize:vertical;background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);padding:var(--td-space-xs) var(--td-space-sm);font-family:var(--td-font-body);font-size:inherit;margin-bottom:var(--td-space-xs)}.grade-row{display:flex;gap:var(--td-space-xs);align-items:center;flex-wrap:wrap}.grade-row input{background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);padding:calc(var(--td-space-xxs) * 1.5) var(--td-space-sm);font-size:var(--td-space-sm)}.extras{display:flex;flex-direction:column;align-self:stretch}.plans{display:grid;grid-template-columns:1fr 1fr;gap:var(--td-space-md);padding:var(--td-space-lg) var(--td-space-xl)}@media(max-width:620px){.plans{grid-template-columns:1fr}}.plan{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-lg);display:flex;flex-direction:column;gap:var(--td-space-sm);align-items:flex-start}.plan.featured{border-style:solid;border-color:color-mix(in srgb,var(--td-accent) 50%,transparent);box-shadow:inset 0 calc(var(--td-space-xxs) * .75) 0 0 var(--td-accent)}.plan .pn{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint);display:inline-flex;align-items:center;gap:calc(var(--td-space-xxs) * 1.5)}.plan.featured .pn{color:var(--td-accent-text)}.plan .price{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;font-size:calc(var(--td-space-md) * 2);font-weight:500}.plan .price small{font-size:calc(var(--td-space-sm) * 1.08);color:var(--td-text-faint)}.plan ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--td-space-xs);color:var(--td-text-muted)}.plan li{display:flex;align-items:center;gap:var(--td-space-xs)}.plan li .ic{color:var(--td-success-text);flex:none}.checkout-note{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-xl);border-top:1px dotted var(--td-border);font-size:calc(var(--td-space-sm) * .96);color:var(--td-text-muted)}.checkout-note .ic{color:var(--td-accent-text)}.cms{display:grid;grid-template-columns:calc(var(--td-space-section) * 2) 1fr;min-height:calc(var(--td-space-section) * 4)}@media(max-width:720px){.cms{grid-template-columns:1fr}.cms .cms-rail{display:flex;border-right:0;border-bottom:1px dotted var(--td-border)}}.cms-rail{border-right:1px dotted var(--td-border);padding:var(--td-space-xs) 0}.cms-rail button{display:flex;align-items:center;gap:var(--td-space-xs);width:100%;text-align:left;padding:var(--td-space-xs) var(--td-space-md);color:var(--td-text-muted);background:none;border:0;border-left:2px solid transparent;font-family:inherit;font-size:inherit;cursor:pointer}.cms-rail button:hover{color:var(--td-text)}.cms-rail button.active{background:var(--td-accent-surface);color:var(--td-text);border-left-color:var(--td-accent)}.cms-main{padding:var(--td-space-lg) var(--td-space-xl)}.cms-main .crumb{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint);margin-bottom:var(--td-space-md)}.cms-module{margin-bottom:var(--td-space-lg)}.cms-module .mod-head{padding:0 0 var(--td-space-sm)}.cms-module .mod-head input[type=date]{background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);padding:calc(var(--td-space-xxs) * .5) var(--td-space-xxs)}.cms-row{display:grid;grid-template-columns:var(--td-space-lg) 1fr auto auto;gap:var(--td-space-sm);align-items:center;padding:var(--td-space-sm);border:1px dotted var(--td-border-soft);border-radius:var(--td-radius-sm);margin-bottom:var(--td-space-xs)}.cms-row .ic{color:var(--td-text-faint);cursor:grab}.cms-row input{background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);font-family:inherit;font-size:inherit;padding:calc(var(--td-space-xxs) * .75) var(--td-space-xs)}.cms-row .add-fields{display:flex;gap:var(--td-space-xs);flex-wrap:wrap}.st{font-size:calc(var(--td-space-sm) * .92);font-family:var(--td-font-mono)}.st.pub{color:var(--td-success-text)}.st.draft{color:var(--td-text-faint)}.st.drip{color:var(--td-info-text)}.act{background:none;border:0;padding:0;cursor:pointer;color:var(--td-accent-text);font-size:calc(var(--td-space-sm) * .92)}.acts{display:inline-flex;gap:var(--td-space-sm)}.cms-details{display:flex;flex-direction:column;gap:var(--td-space-md);max-width:calc(var(--td-space-section) * 5)}.cms-details label{display:flex;flex-direction:column;gap:var(--td-space-xxs)}.cms-details input,.cms-details textarea{background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-sm);color:var(--td-text);font-family:inherit;font-size:inherit;padding:var(--td-space-xs) var(--td-space-sm)}.cms-details textarea{min-height:calc(var(--td-space-section) * .8);resize:vertical}.an-kpi{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px dotted var(--td-border)}@media(max-width:620px){.an-kpi{grid-template-columns:1fr 1fr}}.an-kpi>div{padding:var(--td-space-md);border-right:1px dotted var(--td-border-soft)}.an-kpi>div:last-child{border-right:0}.an-kpi .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.an-kpi .num{font-family:var(--td-font-mono);font-size:calc(var(--td-space-md) * 1.5);margin-top:calc(var(--td-space-xxs) * 1.5);font-variant-numeric:tabular-nums}.an-body{padding:var(--td-space-lg) 0}.an-body .ct{font-weight:var(--td-display-weight);margin:0 0 var(--td-space-sm);display:flex;align-items:center;gap:var(--td-space-xs)}.an-body .ct .ic{color:var(--td-accent-text)}.funnel{display:flex;flex-direction:column;gap:var(--td-space-xs)}.funnel .fstep{display:grid;grid-template-columns:calc(var(--td-space-section) * 1.8) 1fr calc(var(--td-space-xl) + var(--td-space-md));gap:var(--td-space-sm);align-items:center}.funnel .fstep .lbl{color:var(--td-text-muted)}.funnel .fstep .bar{height:var(--td-space-lg);background:var(--td-bg-surface-2);overflow:hidden}.funnel .fstep .bar>i{display:block;height:100%;background:var(--td-accent)}.funnel .fstep .v{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--td-text)}.bars{display:flex;align-items:flex-end;gap:var(--td-space-xs);height:calc(var(--td-space-section) * 1.4);padding-top:var(--td-space-xs);border-bottom:1px dotted var(--td-border)}.bars .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:calc(var(--td-space-xxs) * 1.5);justify-content:flex-end;height:100%}.bars .col .b{width:100%;max-width:var(--td-space-xl);background:var(--td-info-text)}.bars .col .b.hard{background:var(--td-danger-text)}.bars .col .b.med{background:var(--td-accent)}.bars .col .cl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);color:var(--td-text-faint)}.palette-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--td-color-ink) 55%,transparent);display:flex;justify-content:center;align-items:flex-start;padding:calc(var(--td-space-section) * 1.2) var(--td-space-lg) var(--td-space-lg);z-index:100}.palette{width:100%;max-width:calc(var(--td-space-section) * 5.5);background:var(--td-bg-panel);border:1px solid var(--td-border);border-radius:var(--td-radius-md);box-shadow:var(--td-shadow-md);overflow:hidden}.palette-head{display:flex;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-sm) var(--td-space-md);border-bottom:1px dotted var(--td-border-soft);color:var(--td-text-faint)}.palette-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--td-text);font-family:var(--td-font-body);font-size:var(--td-space-md);padding:var(--td-space-xxs) 0}.palette-kbd{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .875);color:var(--td-text-faint);border:1px solid var(--td-border-soft);border-radius:var(--td-radius-sm);padding:0 var(--td-space-xxs)}.palette-list{max-height:calc(var(--td-space-section) * 5);overflow-y:auto;padding:var(--td-space-xxs)}.palette-label{font-size:calc(var(--td-space-sm) * .875);text-transform:uppercase;letter-spacing:calc(var(--td-mono-tracking) * 5);color:var(--td-text-faint);padding:var(--td-space-xs) var(--td-space-sm) var(--td-space-xxs)}.palette-item{display:flex;flex-direction:column;align-items:flex-start;gap:calc(var(--td-space-xxs) * .5);width:100%;text-align:left;background:none;border:none;border-left:2px solid transparent;border-radius:0 var(--td-radius-sm) var(--td-radius-sm) 0;padding:var(--td-space-xs) var(--td-space-sm);font-size:inherit;font-family:var(--td-font-body);color:var(--td-text);cursor:pointer}.palette-item.sel{background:var(--td-bg-surface);border-left-color:var(--td-accent)}.palette-title{font-weight:500}.palette-meta{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1);color:var(--td-text-faint)}.palette-empty{color:var(--td-text-muted);margin:0;padding:var(--td-space-sm) var(--td-space-sm)}.drawer-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--td-color-ink) 40%,transparent);z-index:90}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:95;width:min(calc(var(--td-space-section) * 4.6),100vw);background:var(--td-bg-panel);border-left:1px solid var(--td-border);box-shadow:var(--td-shadow-md);display:flex;flex-direction:column}.drawer .drawer-head{display:flex;align-items:center;gap:var(--td-space-xs);padding:var(--td-space-sm) var(--td-space-md);border-bottom:1px dotted var(--td-border);font-weight:var(--td-display-weight)}.drawer .drawer-head .ic{color:var(--td-accent-text)}.drawer .drawer-body{flex:1;overflow-y:auto;padding:var(--td-space-md)}.drawer .drawer-body .notebox,.drawer .drawer-body .disc{margin-top:0}.map-screen{display:flex;flex-direction:column}.map-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--td-space-md);padding:var(--td-space-xl);border-bottom:1px dotted var(--td-border);flex-wrap:wrap}.map-head h2{margin:var(--td-space-xs) 0 0;font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);font-size:calc(var(--td-space-lg) * 1.15);max-width:24ch}.map-side-links{display:flex;align-items:center;gap:var(--td-space-md)}.map-side-links .inst{display:inline-flex;align-items:baseline;gap:var(--td-space-xs)}.map-side-links .num{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;color:var(--td-text)}.map-side-links .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.map-scroll{overflow-x:auto;background:linear-gradient(var(--td-border-soft) 1px,transparent 1px),linear-gradient(90deg,var(--td-border-soft) 1px,transparent 1px),var(--td-bg);background-size:var(--td-space-xl) var(--td-space-xl)}.map-stage{position:relative;margin:0 auto}.map-edges{position:absolute;inset:0}.map-edge{fill:none;stroke:var(--td-border);stroke-width:calc(var(--td-space-xxs) * .45);stroke-dasharray:2 4}.map-edge.lit{stroke:color-mix(in srgb,var(--td-accent) 60%,transparent);stroke-dasharray:none}.map-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:calc(var(--td-space-xxs) * 1.25);background:none;border:0;cursor:pointer;color:var(--td-text);font:inherit;padding:var(--td-space-xs);max-width:calc(var(--td-space-section) * 1.5)}.map-node .node-dot{width:calc(var(--td-space-md) * 1.375);height:calc(var(--td-space-md) * 1.375);border-radius:var(--td-radius-full);border:calc(var(--td-space-xxs) * .5) solid var(--td-text-faint);background:var(--td-bg-surface);display:grid;place-items:center;transition:transform .15s ease,border-color .15s ease,background .15s ease}.map-node .node-dot .ic{width:var(--td-space-sm);height:var(--td-space-sm);color:var(--td-on-accent)}.map-node .node-label{font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);font-size:calc(var(--td-space-sm) * 1.08);line-height:1.15;text-align:center}.map-node .node-sub{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 3);text-transform:uppercase;color:var(--td-text-faint)}.map-node.done .node-dot{background:var(--td-accent);border-color:var(--td-accent)}.map-node.done .node-sub{color:var(--td-accent-text)}.map-node.available .node-dot{border-color:var(--td-accent);box-shadow:0 0 color-mix(in srgb,var(--td-accent) 45%,transparent);animation:map-pulse 2.4s ease-out infinite}.map-node.locked{opacity:.45}.map-node:hover .node-dot,.map-node.selected .node-dot{transform:scale(1.18)}.map-node.selected .node-label{color:var(--td-accent-text)}@keyframes map-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--td-accent) 45%,transparent)}70%{box-shadow:0 0 0 calc(var(--td-space-xs) * 1.25) color-mix(in srgb,var(--td-accent) 0%,transparent)}to{box-shadow:0 0 color-mix(in srgb,var(--td-accent) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.map-node.available .node-dot{animation:none}}.map-req{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.map-course{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-md);margin-top:var(--td-space-md);display:flex;flex-direction:column;gap:var(--td-space-sm);background:var(--td-bg-surface)}.map-course .mc-top,.map-course .mc-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--td-space-sm)}.map-course.soon{border-style:dashed}.map-course.soon p{margin:0}.daily{max-width:calc(var(--td-space-section) * 7.5);padding:var(--td-space-lg) var(--td-space-xl);margin:0 auto}.daily-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--td-space-md);flex-wrap:wrap;margin-bottom:var(--td-space-lg);border-bottom:1px dotted var(--td-border);padding-bottom:var(--td-space-md)}.daily-head h2{margin:var(--td-space-xs) 0 0;font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);font-size:calc(var(--td-space-lg) * 1.15)}.daily-streak{display:flex;align-items:center;gap:var(--td-space-md)}.daily-streak .inst{display:inline-flex;align-items:baseline;gap:var(--td-space-xs)}.daily-streak .num{font-family:var(--td-font-mono);font-variant-numeric:tabular-nums;font-size:calc(var(--td-space-md) * 1.2);color:var(--td-text)}.daily-streak .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.daily-sheet{border:1px dotted var(--td-border);border-radius:var(--td-radius-sm);padding:var(--td-space-lg);display:flex;flex-direction:column;gap:var(--td-space-md);align-items:flex-start}.daily-opts{display:flex;flex-direction:column;gap:var(--td-space-xs);width:100%}.daily-opt-text{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * 1)}.opt.right{border-style:solid;border-color:var(--td-success-text)}.opt.right .box{border-color:var(--td-success-text);background:var(--td-success-text)}.opt.right .box .ic{opacity:1}.opt.wrong{border-style:solid;border-color:var(--td-danger-text);opacity:.75}.daily-result{display:flex;flex-direction:column;gap:var(--td-space-xs)}.daily-result .dr-verdict{display:flex;align-items:center;gap:var(--td-space-xs);margin:0;font-weight:var(--td-display-weight)}.daily-result.ok .dr-verdict{color:var(--td-success-text)}.daily-result.miss .dr-verdict{color:var(--td-danger-text)}.daily-result p{margin:0}.daily-result .dr-next{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);color:var(--td-text-faint)}.folio{max-width:calc(var(--td-space-section) * 8.5);margin:0 auto;padding:var(--td-space-xl)}.folio-head{display:flex;align-items:center;gap:var(--td-space-md);flex-wrap:wrap;padding-bottom:var(--td-space-lg);border-bottom:1px dotted var(--td-border);margin-bottom:var(--td-space-md)}.folio-head h2{margin:0;font-weight:var(--td-display-weight);letter-spacing:var(--td-display-tracking);font-size:calc(var(--td-space-md) * 1.5)}.folio-head p{margin:var(--td-space-xxs) 0 0}.folio-head .rec-nums{display:flex;gap:var(--td-space-xl);margin-left:auto}.folio-head .rn{display:flex;flex-direction:column;gap:calc(var(--td-space-xxs) * .5)}.folio-head .rn .num{font-family:var(--td-font-mono);font-size:calc(var(--td-space-md) * 1.3);font-variant-numeric:tabular-nums}.folio-head .rn .lbl{font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83);letter-spacing:calc(var(--td-mono-tracking) * 5);text-transform:uppercase;color:var(--td-text-faint)}.folio-row{display:flex;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-sm) var(--td-space-xs);border-bottom:1px dotted var(--td-border-soft);color:inherit}.folio-row:hover{background:var(--td-bg-surface);text-decoration:none;box-shadow:inset calc(var(--td-space-xxs) * .75) 0 0 0 var(--td-accent)}.folio-row .dur{margin-left:auto;font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .92);color:var(--td-text-faint)}.folio-foot{margin-top:var(--td-space-xl);color:var(--td-text-faint);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .83)}.qbox{border:1px solid var(--line);padding:var(--td-space-lg);background:var(--panel);max-width:calc(var(--td-space-section) * 7)}.qbox .qq{margin:0 0 var(--td-space-sm);font-family:var(--td-font-body);letter-spacing:normal;color:var(--tx)}.qbox code{color:var(--acc);font-family:var(--td-font-mono)}.qbox .qopt{display:block;width:100%;text-align:left;border:0;border-top:1px dotted var(--line);background:none;color:var(--mut);padding:var(--td-space-sm) var(--td-space-xs);font:inherit;letter-spacing:inherit;cursor:pointer}.qbox .qopt:hover:not(:disabled){color:var(--tx);background:var(--surface)}.qbox .qopt:before{content:"( ) ";color:var(--fnt)}.qbox .qopt.sel{color:var(--tx)}.qbox .qopt.sel:before{content:"(●) ";color:var(--acc)}.qbox .qopt.hit{color:var(--td-success-text)}.qbox .qopt.hit:before{content:"(✓) ";color:var(--td-success-text)}.qbox .qopt.miss{color:var(--td-danger-text)}.qbox .qopt.miss:before{content:"(✗) ";color:var(--td-danger-text)}.verdict{margin-top:var(--td-space-md);padding-top:var(--td-space-md);border-top:1px solid var(--line);font-family:var(--td-font-body);letter-spacing:normal;color:var(--mut)}.verdict b.ok{color:var(--td-success-text);font-family:var(--td-font-mono)}.verdict b.bad{color:var(--td-danger-text);font-family:var(--td-font-mono)}.week{display:flex;gap:var(--td-space-xs);margin:var(--td-space-md) 0 0;color:var(--fnt);font-family:var(--td-font-mono)}.week span{width:var(--td-space-xl);text-align:center;padding:calc(var(--td-space-xxs) * 1.5) 0;border:1px dotted var(--line)}.week span.hit{border-style:solid;border-color:var(--acc);color:var(--acc)}.lesson-grid{display:grid;grid-template-columns:calc(var(--td-space-section) * 2.4) 1fr;gap:var(--td-space-xl)}@media(max-width:860px){.lesson-grid{grid-template-columns:1fr}}.term-video{aspect-ratio:16/9;background:var(--code-bg);border:1px solid var(--line);display:grid;place-items:center;color:var(--fnt);margin-bottom:var(--td-space-lg);overflow:hidden}.term-video iframe{width:100%;height:100%;border:0;display:block}.toast{position:fixed;bottom:var(--td-space-lg);left:50%;transform:translate(-50%) translateY(calc(100% + var(--td-space-xl)));background:var(--tx);color:var(--bg);padding:var(--td-space-xs) var(--td-space-lg);font-family:var(--td-font-mono);font-size:calc(var(--td-space-sm) * .96);transition:transform .25s ease;z-index:200;max-width:90vw}.toast.show{transform:translate(-50%) translateY(0)}.daemon{position:fixed;left:0;right:0;bottom:0;z-index:80;background:color-mix(in srgb,var(--panel) 99%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--line);font-family:var(--td-font-mono)}.daemon .inner{max-width:calc(var(--td-space-section) * 11);margin:0 auto;padding:0 var(--td-space-lg)}.d-log{max-height:0;overflow-y:auto;transition:max-height .25s ease}.daemon.open .d-log{max-height:calc(var(--td-space-section) * 3.2)}.d-log .turns{padding:var(--td-space-md) 0 var(--td-space-xs);display:flex;flex-direction:column;gap:var(--td-space-xs)}.d-line{display:flex;gap:var(--td-space-sm);align-items:baseline}.d-line .who{color:var(--fnt);min-width:calc(var(--td-space-xl) * 1.4);text-align:right;flex:none;font-size:calc(var(--td-space-sm) * .92)}.d-line.you .who{color:var(--acc)}.d-line.bot .who{color:var(--td-info-text)}.d-line .body{color:var(--mut);font-size:calc(var(--td-space-sm) * 1)}.d-line.bot .body{color:var(--tx)}.d-line .body b{color:var(--acc);font-weight:600}.d-line .body .ok{color:var(--td-success-text)}.d-line .body .er{color:var(--td-danger-text)}.d-chips{display:flex;gap:var(--td-space-xs);flex-wrap:wrap;padding:var(--td-space-xs) 0 0}.d-chips button{border:1px dotted var(--line);background:none;color:var(--fnt);padding:calc(var(--td-space-xxs) * .75) var(--td-space-sm);font:inherit;letter-spacing:inherit;font-size:calc(var(--td-space-sm) * .875);cursor:pointer}.d-chips button:hover{color:var(--acc);border-color:var(--acc)}.d-prompt{display:flex;align-items:center;gap:var(--td-space-sm);padding:var(--td-space-sm) 0 calc(var(--td-space-sm) * 1.2)}.d-face{color:var(--acc);font-weight:600;white-space:pre;flex:none}.d-face.think{color:var(--td-info-text);animation:d-pulse 1s ease infinite}@keyframes d-pulse{50%{opacity:.5}}.d-prompt .ps1{color:var(--fnt);flex:none}.d-prompt .ps1 b{color:var(--acc);font-weight:600}.d-prompt input{flex:1;background:transparent;border:0;outline:none;color:var(--tx);font:inherit;letter-spacing:inherit;min-width:0}.d-prompt input::placeholder{color:var(--fnt)}.d-prompt .hint{color:var(--fnt);font-size:calc(var(--td-space-sm) * .83);flex:none}@media(max-width:700px){.d-prompt .hint{display:none}}@media(prefers-reduced-motion:reduce){.d-face.think{animation:none}}.gitmap{font-size:calc(var(--td-space-sm) * 1.04)}.gitmap li{padding:calc(var(--td-space-xxs) * 1.25) var(--td-space-xs);border-radius:var(--td-radius-sm)}.gitmap li:not(.gitmap-gap):hover{background:var(--surface)}.gitmap li .twig{color:var(--fnt)}.gitmap li .st{min-width:calc(var(--td-space-md) * 1);font-size:calc(var(--td-space-md) * 1);line-height:1}.gitmap li.done .st{color:var(--td-success-text)}.gitmap li.now .st{color:var(--acc)}.gitmap li.todo .st{color:var(--tx)}.gitmap li.locked{opacity:.5}.gitmap li .lnk{font-family:var(--td-font-display);letter-spacing:var(--td-display-tracking);font-weight:500;color:var(--tx)}.gitmap li.done .lnk,.gitmap li.locked .lnk{color:var(--mut)}.gitmap li .dur{font-family:var(--td-font-mono)}.gitmap-gap{padding-top:0!important;padding-bottom:0!important;min-height:calc(var(--td-space-xs) * 1)}.gitmap-gap .twig{color:var(--fnt)}@media(max-width:880px){.screen{padding-left:var(--td-space-md);padding-right:var(--td-space-md)}.status{padding:var(--td-space-xs) var(--td-space-md);overflow-x:auto}}@media print{.status,.daemon,.toast,.no-print{display:none!important}.shell{display:block}.screen,.folio{max-width:none;padding:0}.folio-row:hover{background:none;box-shadow:none}}
