:root{color-scheme:light dark;--bg: #ffffff;--fg: #1a1a1a;--muted: #5b6270;--border: #d9dce1;--surface: #f6f7f9;--accent: #2563eb;--accent-fg: #ffffff;--danger: #b91c1c;--danger-bg: #fef2f2;--danger-border: #fca5a5;--radius: 6px;--tone-blue: #2563eb;--tone-violet: #7c3aed;--tone-green: #047857;--tone-amber: #b45309;--tone-gray: #5b6270;--tone-rose: #be185d;--tone-red: #b91c1c;--tone-teal: #0f766e}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #14161a;--fg: #e6e8eb;--muted: #9aa1ab;--border: #333844;--surface: #1c1f26;--accent: #5b8def;--accent-fg: #0b0f14;--danger: #f87171;--danger-bg: #2a1414;--danger-border: #7f1d1d;--tone-blue: #60a5fa;--tone-violet: #a78bfa;--tone-green: #34d399;--tone-amber: #fbbf24;--tone-gray: #9aa1ab;--tone-rose: #f472b6;--tone-red: #f87171;--tone-teal: #2dd4bf}}:root[data-theme=dark]{color-scheme:dark;--bg: #14161a;--fg: #e6e8eb;--muted: #9aa1ab;--border: #333844;--surface: #1c1f26;--accent: #5b8def;--accent-fg: #0b0f14;--danger: #f87171;--danger-bg: #2a1414;--danger-border: #7f1d1d;--tone-blue: #60a5fa;--tone-violet: #a78bfa;--tone-green: #34d399;--tone-amber: #fbbf24;--tone-gray: #9aa1ab;--tone-rose: #f472b6;--tone-red: #f87171;--tone-teal: #2dd4bf}:root[data-theme=light]{color-scheme:light}*{box-sizing:border-box}html{font-size:112.5%}body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent)}main{max-width:1400px;margin:0 auto;padding:0 max(1rem,env(safe-area-inset-right)) 2rem max(1rem,env(safe-area-inset-left))}.topbar{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.25rem;margin:0 -1rem 1.5rem;padding:calc(.75rem + env(safe-area-inset-top)) 1rem .75rem;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.brand-row{display:flex;align-items:center;gap:.35rem}.brand__help{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--border);color:var(--fg);font-weight:700;font-size:1.1rem;text-decoration:none}.brand__help:hover,.brand__help[aria-current=page]{border-color:var(--accent);color:var(--accent)}.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--fg)}.brand__name{margin:0;font-size:1.6rem;font-weight:800;letter-spacing:-.03em;background:linear-gradient(120deg,var(--accent),var(--tone-violet));-webkit-background-clip:text;background-clip:text;color:transparent}.logo{flex:none;transform-origin:50% 90%}.brand:hover .logo{animation:logo-wiggle .6s ease-in-out}@keyframes logo-wiggle{25%{transform:rotate(-8deg) scale(1.05)}75%{transform:rotate(8deg) scale(1.05)}}@media (prefers-reduced-motion: reduce){*,:before,:after,::backdrop{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.mascot{flex:none}.mascot-note{display:flex;align-items:center;gap:.75rem}.topbar__sections,.topbar__tabs{display:flex;flex-basis:100%;max-width:100%;gap:.25rem;overflow-x:auto;scrollbar-width:none}.topbar__sections{order:3;padding:.2rem;border:1px solid var(--border);border-radius:999px;background:var(--surface)}.topbar__tabs{order:4}.topbar__sections a,.topbar__tabs a{flex-shrink:0;color:var(--muted);font-size:1rem;font-weight:600;text-decoration:none;white-space:nowrap}.topbar__sections a{flex-grow:1;padding:.3rem .85rem;border-radius:999px;text-align:center}.topbar__sections a:hover{color:var(--fg)}.topbar__sections a[aria-current]{background:var(--accent);color:var(--accent-fg)}.topbar__tabs a{padding:.3rem .75rem}.topbar__tabs a:hover{color:var(--fg)}.topbar__tabs a[aria-current=page]{color:var(--fg);box-shadow:inset 0 -2px var(--accent)}.page-intro{max-width:75ch;margin:0;color:var(--muted);line-height:1.65}.roadmap__dialog-header button{flex-shrink:0;white-space:nowrap}.lesson__metric{margin:.75rem 0 0;padding:.5rem .75rem;border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,var(--bg));font-size:.95rem}.lesson__chapter{margin:.5rem 0 0;font-size:.9rem;color:var(--muted)}.topbar__tagline{flex:1;margin:0;color:var(--muted);font-size:.95rem}.topbar__links a{display:inline-block;padding:.3rem .75rem;border:1px solid var(--border);border-radius:999px;color:var(--fg);font-size:.85rem;text-decoration:none}.topbar__links{display:flex;align-items:center;gap:.5rem;margin-left:auto;white-space:nowrap}.topbar__search{padding:.3rem .75rem;border-radius:999px;font-size:.85rem}.topbar__search kbd{margin-left:.25rem;font-family:inherit;font-size:.75rem;color:var(--muted)}.topbar__links a.topbar__account,.topbar__links a:hover{border-color:var(--accent)}@media (max-width: 900px){.topbar__tagline{display:none}}.site-footer{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--border);color:var(--muted);font-size:.85rem}.layout__content{display:flex;flex-direction:column;gap:1.25rem}h2,h3,h4{margin-top:1.75rem;margin-bottom:.5rem}label{display:flex;flex-direction:column;gap:.25rem;font-size:.875rem;color:var(--muted);margin-bottom:.75rem}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .6rem}textarea{resize:vertical;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem}button{min-width:44px;min-height:44px;cursor:pointer;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.5rem .9rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{cursor:not-allowed;opacity:.55}.button--primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:600;padding:.6rem 1.2rem}.solve-form{padding:1.25rem;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.solve-form .code-editor,.solve-form .statement-preview{background:var(--bg)}.solve-form__actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem}.solve-form__actions .status-hint{margin:0}[role=alert]{margin:.75rem 0;padding:.6rem .75rem;border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--border)}tbody tr:nth-child(odd){background:var(--surface)}pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;overflow-x:auto;font-size:.85rem}.code-editor{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:.75rem}.roadmap h2{margin:0 0 .35rem;font-size:1.4rem;letter-spacing:-.01em}.roadmap__scroll{overflow-x:auto}.roadmap__canvas{position:relative;margin:0 auto}.roadmap__legend{margin:0 0 .5rem;font-size:.85rem;color:var(--muted)}.roadmap__edges{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible}.roadmap__edge{fill:none;stroke-width:1.5;transition:opacity .15s}.roadmap__edge--base{stroke:var(--border)}.roadmap__edge--learned{stroke:var(--tone-green)}.roadmap__edge--active{stroke:var(--accent);stroke-width:2.5}.roadmap__edge--dim{opacity:.25}.roadmap__arrow--base path{fill:var(--border)}.roadmap__arrow--learned path{fill:var(--tone-green)}.roadmap__arrow--active path{fill:var(--accent)}.roadmap__node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.3rem .7rem;line-height:1.2;background:var(--surface);border:1px solid var(--accent);transition:opacity .15s,box-shadow .15s,transform .15s ease-out}.roadmap__node:hover,.roadmap__node:focus-visible{background:var(--accent);color:var(--accent-fg)}.roadmap__node--next{border-style:dashed;border-width:2px}.roadmap__node--path{box-shadow:0 0 0 2px var(--accent)}.roadmap__node--unlock{box-shadow:0 0 0 2px var(--tone-amber)}.roadmap__node--dim{opacity:.35}.roadmap__badge{position:absolute;top:-.6rem;right:-.5rem;font-size:.9rem}.roadmap__fav{position:absolute;top:-.6rem;left:-.5rem;font-size:.9rem}.roadmap__title{font-weight:600;font-size:.85rem}.roadmap__count{font-size:.75rem;opacity:.75}.roadmap__dialog{width:min(880px,calc(100vw - 32px));max-height:90vh;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--fg);padding:0;box-shadow:0 20px 50px #00000059}.roadmap__dialog--max{width:calc(100vw - 16px);max-width:none;height:calc(100vh - 16px);height:calc(100dvh - 16px);max-height:none}.roadmap__dialog::backdrop{background:#0000008c}.roadmap__dialog-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:.75rem;padding:.9rem 1.5rem;background:var(--bg);border-bottom:1px solid var(--border)}.roadmap__dialog-header h2{margin:0;font-size:1.35rem}.roadmap__dialog-header .lesson__learned{margin-left:auto}.roadmap__dialog-body{padding:.5rem 1.5rem 1.5rem}.lesson__complexity{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;padding:.15rem .6rem;border-radius:999px;color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg))}.lesson__lead{font-size:1.05rem;line-height:1.65;color:var(--muted);margin:.75rem 0 0}.lesson{--tone: var(--tone-gray);margin-top:1rem;padding:.9rem 1.1rem;border:1px solid color-mix(in srgb,var(--tone) 25%,var(--border));border-left:4px solid var(--tone);border-radius:8px;background:color-mix(in srgb,var(--tone) 6%,var(--bg));line-height:1.6}.lesson--blue{--tone: var(--tone-blue)}.lesson--violet{--tone: var(--tone-violet)}.lesson--green{--tone: var(--tone-green)}.lesson--amber{--tone: var(--tone-amber)}.lesson--rose{--tone: var(--tone-rose)}.lesson--red{--tone: var(--tone-red)}.lesson--teal{--tone: var(--tone-teal)}.lesson p{margin:0 0 .5rem}.lesson p:last-child{margin-bottom:0}.lesson__hook{font-size:1.25rem;font-weight:600}.lesson__analogy{color:var(--muted)}.lesson__guess{width:100%;box-sizing:border-box}.lesson__guess-shown{color:var(--muted);font-style:italic}summary{box-sizing:border-box;min-height:44px;padding-block:.5rem;cursor:pointer}.lesson__answer summary{font-weight:600;color:var(--tone)}.lesson__answer[open] summary{margin-bottom:.4rem}.lesson__learned[aria-pressed=true]{border-color:var(--tone-green);color:var(--tone-green)}.roadmap__progress{margin-left:.5rem;font-size:.9rem;font-weight:500;color:var(--muted)}.roadmap__node--learned{border-color:var(--tone-green);background:color-mix(in srgb,var(--tone-green) 12%,var(--surface))}.lesson h3{margin:0 0 .6rem;font-size:.9rem;letter-spacing:.06em;text-transform:uppercase;color:var(--tone)}.today__focus summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;min-height:44px;cursor:pointer}.today__focus summary h3:before{content:"▸ "}.today__focus[open] summary h3:before{content:"▾ "}.today__focus summary h3{display:inline;margin:0}.lesson h3.lesson__q{font-size:1.05rem;letter-spacing:normal;text-transform:none;color:var(--fg)}.lesson ul{margin:0;padding-left:1.2rem}.lesson li+li{margin-top:.35rem}.lesson pre{background:var(--bg);line-height:1.5;margin:0}.chart-table summary{cursor:pointer;font-weight:600}.chart-table__scroll{max-height:280px;overflow:auto;margin-top:6px;border:1px solid var(--border);border-radius:8px}.chart-table table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}.chart-table th,.chart-table td{padding:4px 10px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}.chart-table th:first-child{text-align:left}.chart-table thead th{position:sticky;top:0;background:var(--surface)}.lesson__figure{margin:12px 0 0}.lesson__figure iframe{display:block;width:100%;aspect-ratio:4 / 3.2;border:1px solid var(--border);border-radius:12px;background:var(--bg)}@media (max-width: 600px){.lesson__figure iframe{aspect-ratio:1}}.lesson__figure figcaption{color:var(--muted);margin-top:6px}.lesson__steps{list-style:none;counter-reset:step;margin:0;padding:0}.lesson__steps li{counter-increment:step;position:relative;padding-left:2.1rem;min-height:1.6rem}.lesson__steps li:before{content:counter(step);position:absolute;left:0;top:.05rem;width:1.5rem;height:1.5rem;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:600;color:var(--bg);background:var(--tone)}.lesson__explain{max-width:70ch;margin-top:.9rem}.lesson__explain p{margin:0 0 .7rem;line-height:1.7}.lesson__explain p:last-child{margin-bottom:0}.lesson__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:0 1rem}.lesson__doclink{margin-top:.6rem;font-size:.85rem;color:var(--muted)}.lesson__chips{display:flex;flex-wrap:wrap;gap:.4rem}.lesson__chip{padding:.2rem .7rem;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:.85rem}.lesson .puzzle-tree{border:0;padding:0;background:none}@media (max-width: 600px){.roadmap__dialog-header{flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem}.roadmap__dialog-header h2{flex:1 1 9rem;font-size:1.15rem}.roadmap__dialog-header button{padding:.3rem .6rem;font-size:.85rem}.topbar__search kbd{display:none}.lesson__complexity{order:3}.roadmap__dialog-body{padding:.25rem 1rem 1rem}.lesson{padding:.75rem .85rem}}.puzzle-tree{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1rem 1rem;background:var(--surface)}.puzzle-tree__tags{list-style:none;margin:0;padding:0}.puzzle-tree__tag{width:100%;display:flex;justify-content:space-between;text-align:left;background:var(--bg);margin-bottom:.35rem}.puzzle-tree__panel{padding:.5rem 0 .75rem .5rem}.puzzle-tree__filters{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin:.5rem 0}.puzzle-tree__filters label{margin-bottom:0}.puzzle-tree__results{list-style:none;margin:.5rem 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.puzzle-tree__result{width:100%;text-align:left;background:var(--surface);font-size:.85rem}.puzzle-tree__pager{display:flex;align-items:center;gap:.75rem}.puzzle-tree__pager-status{color:var(--muted);font-size:.85rem}.puzzle-tree__hint{color:var(--muted);font-size:.9rem}.statement-panel__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.statement-panel__header h3{margin:0}.compare-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem}.compare-grid__col{min-width:0}.compare-grid__col h3,.compare-grid__col h4{margin-top:0}.status-hint{display:inline-block;margin:.5rem 0 0;color:var(--muted);font-size:1rem}.candidate-row--chosen{background:color-mix(in srgb,var(--accent) 12%,transparent)}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.78rem;font-weight:600}.badge--ok{background:color-mix(in srgb,#16a34a 20%,transparent);color:#16a34a}.badge--low{background:color-mix(in srgb,var(--muted) 25%,transparent);color:var(--muted)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.code-editor__header{display:flex;align-items:center;justify-content:space-between;padding:.3rem .6rem;background:var(--surface);border-bottom:1px solid var(--border);font-size:.75rem}.code-editor__language{color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.code-editor__copy{font-size:.75rem;padding:.1rem .5rem}.statement-preview{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.75rem 1rem;margin-bottom:.75rem;white-space:pre-wrap;line-height:1.5}.link-button{border:none;background:none;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:2px}.roadmap__review{padding:.2rem .6rem;font-size:.85rem}.roadmap__actions{display:flex;flex-wrap:wrap;gap:.4rem;min-height:44px;margin:0 0 .75rem}.review__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1rem}.review__choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.5rem;margin-top:.75rem}.review__choices button{text-align:left}.lesson__challenges{margin:0;padding-left:1.4rem}.lesson__challenges>li+li{margin-top:1rem;padding-top:1rem;border-top:1px dashed var(--border)}.runnable__bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}.runnable__bar button{padding:.25rem .7rem;font-size:.85rem}.runnable__output{margin-top:.5rem;max-height:20rem;overflow:auto;white-space:pre-wrap}.runnable__error{display:block;color:var(--tone-red)}.dialog__maximize:first-of-type{margin-left:auto}.search{margin-top:10vh;width:min(640px,calc(100vw - 32px))}.search__input{width:100%;box-sizing:border-box;padding:.9rem 1.1rem;border:none;border-bottom:1px solid var(--border);background:transparent;color:var(--fg);font-size:1.05rem;outline:none}.search__results{list-style:none;margin:0;padding:.4rem;max-height:60vh;overflow-y:auto}.search__results .status-hint{padding:.6rem}.search__hit{display:grid;grid-template-columns:1fr auto;gap:.15rem .75rem;width:100%;text-align:left;border:none;border-radius:8px;background:transparent;padding:.55rem .7rem}[aria-selected=true]>.search__hit{background:color-mix(in srgb,var(--accent) 14%,transparent)}.search__title{font-weight:600}.search__where{font-size:.75rem;color:var(--muted);white-space:nowrap}.search__summary{grid-column:1 / -1;font-size:.85rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mock__overtime{color:var(--tone-red)}.ladder__rungs{margin:.25rem 0 0;padding-left:1.4rem}.ladder__rungs li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.3rem 0}.ladder__solved{padding:.15rem .55rem;font-size:.8rem}.progress-backup{white-space:normal}.predict__compare pre{margin:.5rem 0;padding:.6rem .75rem;border-radius:8px;background:var(--bg);font-size:.85rem;overflow-x:auto;white-space:pre}.predict__label{display:block;margin-top:.75rem;font-weight:600}.predict__guess{box-sizing:border-box;width:100%;margin:.35rem 0 .5rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--fg);font:.85rem ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}.predict__compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.75rem}.roadmap__review[aria-pressed=true]{border-color:var(--accent);color:var(--fg)}.today__section{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin:.5rem 0;padding:.4rem .75rem .6rem;border:1px solid var(--border);border-radius:8px}.today__section legend{padding:0 .3rem;font-weight:600}.today__choice{white-space:nowrap}.today__goal input{width:4.5rem}.progress__days{display:grid;grid-template-columns:repeat(14,1fr);gap:4px;max-width:28rem}.progress__day{aspect-ratio:1;border-radius:3px;background:var(--border, #3333)}.progress__day--on{background:#22c55e}.progress__table{width:100%;border-collapse:collapse}.progress__table th,.progress__table td{padding:.3rem .5rem;text-align:left}.progress__section{padding-top:.9rem;color:var(--muted)}.progress__table meter{width:6rem;vertical-align:middle}.progress__extras{display:block;color:var(--muted)}.progress__table .status-hint{display:inline;font-size:inherit}.progress__more{min-height:44px;margin-top:.75rem}.icon{display:inline-block;font-size:1.3em;line-height:1;vertical-align:-.12em}.lesson h3 .icon{font-size:1.45em;margin-right:.1em}.roadmap__title>span[aria-hidden=true]{display:inline-block;font-size:1.35em;line-height:1;vertical-align:-.12em}.roadmap__badge,.roadmap__fav{font-size:1.15rem}.roadmap__dialog-header h2>span[aria-hidden=true]{font-size:1.2em}.practice__form{display:grid;gap:.6rem}.practice__form label{display:grid;gap:.2rem}.practice__list{padding-left:1.2rem}.practice__list li+li{margin-top:.4rem}.welcome{margin-bottom:1rem}.welcome p{margin:0 0 .5rem}.practice__stale{font-weight:600}.practice__stale .mascot{vertical-align:middle;margin-right:.3rem}.roadmap__level{display:none}.roadmap__scroll--list{overflow:visible}.roadmap__scroll--list .roadmap__canvas{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;width:auto!important;height:auto!important}.roadmap__scroll--list .roadmap__edges{display:none}.roadmap__scroll--list .roadmap__level{display:block;grid-column:1 / -1;margin-top:.5rem;color:var(--muted);font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.roadmap__scroll--list .roadmap__node{position:relative;left:auto!important;top:auto!important;width:auto!important;min-height:64px!important}@media (max-width: 700px){.topbar__links{flex-basis:100%;order:2;margin-left:0;overflow-x:auto;scrollbar-width:none}.topbar__links>*{flex-shrink:0}.roadmap__actions{flex-wrap:nowrap;overflow-x:auto}.roadmap__actions>*{flex-shrink:0}.brand__name{font-size:1.3rem}.brand .logo{width:36px;height:36px}.progress__table th,.progress__table td{padding:.3rem}.progress__table meter{width:2.5rem}.roadmap__dialog{width:100vw;max-width:100vw;max-height:100dvh;margin:auto 0 0;border-radius:14px 14px 0 0}.roadmap__dialog--max{height:100dvh;border-radius:0}.dialog__maximize{display:none}.roadmap__dialog-header h2{margin-right:auto}}@media (max-width: 700px),(max-height: 500px){.topbar{position:static}}.help{max-width:75ch}.roadmap__next{margin:.75rem 0}.roadmap__next h3{margin:0 0 .4rem;font-size:1rem}.roadmap__next-links,.lesson .lesson__related{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}.roadmap__next-links a,.lesson__related a{display:inline-flex;align-items:center;gap:.35em;min-height:44px;padding:.2rem .9rem;border:1px solid var(--border);border-radius:999px;background:var(--surface);text-decoration:none}.lesson .lesson__related li{margin:0}.lesson__related a{display:block;padding:.55rem .9rem;border-radius:12px}.start-here{display:flex;flex-direction:column;gap:.6rem;padding:.6rem .9rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.start-here h2,.start-here h3{margin:0}.start-here h2{font-size:1.15rem}.start-here h3{font-size:.95rem}.start-here__head,.start-here__resume{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.start-here__resume{justify-content:flex-start}.start-here ul,.start-here ol{margin:0;padding:0;list-style:none}.start-here__resume ul,.start-here__paths ol,.start-here__paths ol li{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}.start-here__paths ol{flex-wrap:nowrap;gap:.35rem}.start-here a{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.35em;min-width:44px;min-height:44px;padding:.2rem .9rem;border:1px solid var(--border);border-radius:999px;background:var(--bg);text-decoration:none}.start-here__paths a{padding:0}.start-here__count{color:var(--muted);font-size:.9em}.start-here__done{position:absolute;top:-.3rem;right:-.3rem;font-size:.7rem;line-height:1}.start-here__paths{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.5rem 1rem}.start-here__paths>li{display:flex;flex-direction:column;gap:.3rem}@media (max-width: 700px){.start-here__paths{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:minmax(14rem,88%);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.start-here__paths>li{scroll-snap-align:start}.start-here__resume ul{flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.start-here__resume a{white-space:nowrap}}.start-here__names{margin:0;color:var(--muted);font-size:.9rem}.start-here__show{align-self:flex-start}.help-mascot{float:right;margin:0 0 .5rem 1rem}.link-list a{display:inline-flex;align-items:center;min-height:44px}.site-footer__help,.topbar__sections a,.topbar__tabs a,.topbar__links a,.topbar__search{display:inline-flex;align-items:center;justify-content:center;min-height:44px}.brand{min-height:44px}.topbar__links .topbar__search,.topbar__links .topbar__account{gap:.35em}@media (max-width: 700px){.topbar__links .icon-text,.topbar__links kbd{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.topbar__links .topbar__search,.topbar__links .topbar__account{min-width:44px}}.topbar__tool,.tabbar__icon{position:relative}.due-badge{position:absolute;top:-.65rem;left:calc(100% - .7rem);min-width:1.4rem;padding:0 .3rem;border-radius:999px;background:var(--accent);color:var(--accent-fg);font-size:.8rem;font-weight:700;line-height:1.25rem;text-align:center;pointer-events:none}.tabbar{display:none}@media (max-width: 700px){.tabbar{position:fixed;inset:auto 0 0;z-index:10;display:grid;grid-template-columns:repeat(4,1fr);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--bg);border-top:1px solid var(--border)}.tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;padding:.25rem 0;border:0;border-radius:0;background:none;color:var(--muted);font:inherit;font-size:.9rem;text-decoration:none}.tabbar [aria-current]{color:var(--accent);font-weight:700;box-shadow:inset 0 3px 0 var(--accent)}.tabbar__icon{order:-1;font-size:1.35rem;line-height:1}.tabbar .due-badge{top:-.2rem;left:calc(100% + 2px)}.topbar__links .topbar__tool{display:none}.topbar__links{flex-basis:auto;order:0;margin-left:auto}main{padding-bottom:calc(2rem + 56px + env(safe-area-inset-bottom))}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.drill+.drill{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.drill__prompt{font-weight:600}.drill__given{margin:.5rem 0;padding:.5rem .9rem;border-left:4px solid var(--tone-amber);background:var(--surface);white-space:pre-wrap}.drill__clock{margin:.5rem 0 .25rem;font-size:3rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.drill__bar{width:100%}.drill__cue{font-size:1.15rem;font-weight:600}.drill__answer{width:100%;box-sizing:border-box;font-family:inherit;font-size:1rem}.drill__mine{white-space:pre-wrap;color:var(--muted)}button{transition:transform .1s ease-out}button:active:not(:disabled){transform:scale(.95)}.roadmap__node:hover{transform:translateY(-3px)}.roadmap__node:active{transform:translateY(0) scale(.95)}.roadmap__node--pop{animation:node-pop .4s cubic-bezier(.3,1.6,.5,1)}@keyframes node-pop{40%{transform:scale(1.15)}}.roadmap__progress--bump{animation:progress-shimmer .4s ease-out 2}@keyframes progress-shimmer{0%{opacity:.3}}.start-here a,.roadmap__next-links a,.lesson__related a{transition:transform .15s ease-out}.start-here a:hover,.roadmap__next-links a:hover,.lesson__related a:hover{transform:translate(3px);border-color:var(--accent)}.roadmap__dialog[open]{animation:dialog-in .22s cubic-bezier(.2,.9,.3,1.15)}.roadmap__dialog[open]::backdrop{animation:fade-in .22s ease-out}.roadmap__dialog-body>*{animation:section-in .3s ease-out backwards}.roadmap__dialog-body>:nth-child(2){animation-delay:40ms}.roadmap__dialog-body>:nth-child(3){animation-delay:80ms}.roadmap__dialog-body>:nth-child(4){animation-delay:.12s}.roadmap__dialog-body>:nth-child(n+5){animation-delay:.16s}@keyframes dialog-in{0%{opacity:0;transform:scale(.94)}}@keyframes fade-in{0%{opacity:0}}@keyframes section-in{0%{opacity:0;transform:translateY(8px)}}.logo,.mascot{animation:mascot-bob 5s ease-in-out infinite}.mascot[data-mood=happy],.mascot[data-mood=cheer]{transform-origin:50% 100%;animation:mascot-hop .5s ease-out .1s 3,mascot-bob 5s ease-in-out 1.6s infinite}@keyframes mascot-bob{50%{transform:translateY(-2px)}}@keyframes mascot-hop{40%{transform:translateY(-8px) scale(.96,1.04)}80%{transform:translateY(0) scale(1.04,.96)}}.celebrate{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;margin:0;padding:0;border:0;background:none;overflow:visible;pointer-events:none;z-index:1000}@font-face{font-family:Mahjong Tiles;src:url(/fonts/mahjong-tiles.woff2) format("woff2");unicode-range:U+1F000-1F02B;font-display:swap}.mj-tile{font-family:Mahjong Tiles,Segoe UI Symbol,sans-serif;font-size:1.7em;font-weight:400;font-style:normal;line-height:1;vertical-align:-.15em}.mj-group{white-space:nowrap}pre .mj-tile{display:inline-block;width:1ch;font-family:Mahjong Tiles,monospace;font-size:2em;text-align:center;vertical-align:-.1em}@font-face{font-family:Chess Pieces;src:url(/fonts/chess-pieces.woff2) format("woff2");unicode-range:U+2654-265F;font-display:swap}pre .chess-piece{display:inline-flex;justify-content:center;width:1ch;font-family:Chess Pieces,monospace;transform:scale(1.15)}pre .go-stone{display:inline-block;width:1ch;height:1ch;vertical-align:-.05em;transform:scale(1.3);color:transparent;background:radial-gradient(circle closest-side,var(--stone) 0 70%,var(--rim) 74% 94%,transparent 98%)}pre .go-black{--stone: #000;--rim: var(--fg)}pre .go-white{--stone: #fff;--rim: #555}.topbar__all{position:sticky;left:0;z-index:1;flex-shrink:0;display:inline-flex;align-items:center;gap:.35em;padding:.3rem .75rem;border-radius:999px;font-weight:600;white-space:nowrap}.topbar__tabs{scroll-padding-inline:10rem 1.75rem}.topbar__sections{scroll-padding-inline-end:1.75rem}@media (max-width: 700px){.topbar__sections,.topbar__tabs{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 1.75rem),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 1.75rem),transparent)}.topbar__sections:after,.topbar__tabs:after{content:"";flex:0 0 1.25rem}}.browse .roadmap__dialog-header h2{margin-right:auto}.browse__section h3{margin:1rem 0 .5rem}.browse__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:.5rem;margin:0;padding:0;list-style:none}.browse__item{display:grid;grid-template-columns:1fr auto;align-items:baseline;align-content:start;gap:.2rem .5rem;min-height:44px;height:100%;box-sizing:border-box;padding:.6rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--fg);text-decoration:none}.browse__item:hover{border-color:var(--accent)}.browse__item[aria-current=page]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--bg));box-shadow:inset 3px 0 var(--accent)}.browse__name{font-weight:600}.browse__count{font-size:.9rem;color:var(--muted);white-space:nowrap}.browse__tagline{grid-column:1 / -1;font-size:.9rem;color:var(--muted);line-height:1.4}.lesson-video{margin:0;max-width:400px}.lesson-video--big{max-width:none}.lesson-video__size{display:block;margin-top:8px}@media (max-width: 600px){.lesson-video__size{display:none}}.lesson-video__player{display:block;width:100%;height:auto;aspect-ratio:16 / 9;border-radius:8px;background:#f8fafc}.lesson-video__caption{margin-top:8px;color:var(--muted)}.comic{margin:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.comic__panel h4{margin:0 0 6px;font-size:17px}.comic__scene{display:block;width:100%;height:auto;border:2px solid var(--fg);border-radius:4px}.comic__shady{filter:grayscale(1) brightness(.85) drop-shadow(0 0 1px #fff)}.comic__bubble{position:relative;margin:12px 0 0;padding:8px 10px;background:var(--bg);border:2px solid var(--fg);border-radius:14px}.comic__bubble:after{content:"";position:absolute;left:30%;top:-9px;width:14px;height:14px;background:var(--bg);border-left:2px solid var(--fg);border-top:2px solid var(--fg);transform:rotate(45deg)}.comic__caption{grid-column:1 / -1;color:var(--muted);font-style:italic}
