:root{color-scheme:light;--ink:#213d37;--muted:#60716a;--green:#176653;--line:#dbe3da;--paper:#f6f7f2;--soft:#eaf2e8;--orange:#ac5525;--blue:#2b71a8}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font:17px/1.8 system-ui,-apple-system,Segoe UI,Microsoft YaHei,sans-serif}button,input,textarea{font:inherit}button,.button{border:1px solid var(--line);min-height:46px;color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:16px;padding:10px 17px;font-weight:600;line-height:1.5;text-decoration:none;display:inline-flex}button:hover,.button:hover{border-color:var(--green)}button:disabled{opacity:.5;cursor:not-allowed}button.primary,.button.primary{background:var(--green);border-color:var(--green);color:#fff}.small{min-height:42px;padding:8px 12px;font-size:14px}a{color:var(--green);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline-offset:4px;outline:3px solid #bf8c36}[hidden]{display:none!important}h1,h2,h3{letter-spacing:-.015em;line-height:1.4}h1{margin:10px 0 15px;font-size:clamp(29px,3.3vw,42px)}h2{margin:25px 0 12px;font-size:25px}h3{margin:24px 0 10px;font-size:20px}p{margin:12px 0}li{margin:8px 0}.muted{color:var(--muted);font-size:14px}.eyebrow{letter-spacing:.05em;color:var(--green);margin:0;font-size:13px;font-weight:650}.lesson{max-width:880px;padding:35px 0 65px}.lesson-heading{margin-bottom:24px}.goal{color:var(--muted);max-width:750px;font-size:18px}.browse-note{color:var(--muted);font-size:13px}.prerequisite{border:1px solid var(--line);border-radius:7px;margin:15px 0 24px;padding:10px 14px;font-size:14px}.prerequisite summary{cursor:pointer;font-weight:550}.prerequisite small{color:var(--muted);margin-left:10px}.prerequisite p{color:var(--muted)}.version-note{background:#f8f0df;border-left:3px solid #9c7230;padding:12px 16px;font-size:15px}.content-layer{border-bottom:1px solid var(--line);margin:12px 0}.content-layer>summary{cursor:pointer;padding:16px 5px;font-size:17px;font-weight:600}.layer-body{padding:0 6px 20px;font-size:16px}.layer-body p{max-width:78ch}.layer-body li{margin:12px 0}.visual-frame{border:1px solid var(--line);background:#fff;border-radius:12px;margin:20px 0 16px;overflow:hidden}.visual-heading{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:11px 15px;font-size:14px;display:flex}.visual-heading button{flex-shrink:0}.visual-frame svg{width:100%;height:auto;max-height:390px;font-family:inherit;display:block}.visual-frame svg text{fill:var(--ink);font-size:20px}figcaption{color:var(--muted);padding:6px 16px 14px;font-size:13px}.visual-controls{flex-wrap:wrap;gap:10px;margin:14px 0;display:flex}.visual-controls [aria-pressed=true]{background:var(--soft);border-color:var(--green)}.observation{color:var(--green);min-height:32px;font-size:16px}.quiz{border:1px solid var(--line);background:#fff;border-radius:10px;margin:23px 0;padding:20px}.quiz fieldset{border:0;min-width:0;margin:0;padding:0}.quiz legend{margin-bottom:10px;font-size:18px;font-weight:600}.quiz label{border:1px solid var(--line);cursor:pointer;border-radius:7px;align-items:flex-start;gap:10px;margin:8px 0;padding:12px;display:flex}.quiz label:has(input:checked){background:var(--soft);border-color:var(--green)}.quiz input{width:19px;height:19px;accent-color:var(--green);flex-shrink:0;margin-top:5px}.quiz button{margin-top:12px}.feedback{border-left:3px solid var(--green);background:#edf4e9;margin-top:15px;padding:12px 16px;font-size:16px}.feedback.wrong{background:#faf1e3;border-color:#a27430}.hint{margin:12px 0;font-size:15px}.hint summary{cursor:pointer;color:var(--green)}.storage-warning{color:#735321;background:#f8eed9;padding:12px 24px;font-size:14px}.skip-link{z-index:50;background:#fff;padding:10px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:10px}.screenshot-slot{background:#f0f3eb;border:1px dashed #b4c4b3;border-radius:7px;margin:14px 0;padding:18px}.screenshot-slot strong{font-size:16px}.screenshot-slot p{color:#8a6024;margin:7px 0;font-size:14px}.screenshot-slot small{color:var(--muted);font-size:13px}.lesson table{border-collapse:collapse;width:100%;margin:16px 0;font-size:15px}.lesson th,.lesson td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:10px}.lesson th{background:#edf2e8}.table-scroll{overflow:auto}.task-list{padding-left:23px}.task-list li{margin:15px 0}.slider-control{grid-template-columns:1fr;gap:7px;margin:18px 0;display:grid}.slider-control input{accent-color:var(--green);width:100%;min-height:35px}.readout{background:#eaf2e6;border-radius:7px;flex-wrap:wrap;justify-content:space-between;gap:16px;padding:14px 18px;font-size:16px;display:flex}.readout.breakout{color:#8c451b;background:#faeade}.formula{background:#edf1e7;padding:12px 17px;font-size:17px}.sources{color:var(--muted);margin-top:20px;font-size:14px}.sources a{overflow-wrap:anywhere}.sources summary{cursor:pointer}dialog{border:1px solid var(--line);max-width:96vw;color:var(--ink);border-radius:12px;padding:20px}dialog::backdrop{background:#153e35a8}.dialog-heading{justify-content:space-between;align-items:center;gap:15px;display:flex}.dialog-heading h2{margin:0;font-size:20px}.dialog-heading button{flex-shrink:0}#visual-dialog{width:1000px}#visual-content{max-height:65vh;margin-top:12px;overflow:auto}#visual-content svg{width:100%;min-width:650px;height:auto;font-family:inherit}#visual-content svg text{fill:var(--ink);font-size:20px}.zoom-control{gap:12px;margin-top:12px;font-size:14px;display:flex}.zoom-control input{accent-color:var(--green)}.blue-flow{stroke-dasharray:8 14;animation:1.8s linear infinite current}@keyframes current{to{stroke-dashoffset:-44px}}@media (width<=900px){.lesson{max-width:820px;margin:auto}}@media (width<=600px){body{font-size:16px}.lesson{padding:27px 0 40px}h1{font-size:28px}.goal{font-size:16px}h2{font-size:23px}.visual-frame svg text{font-size:25px}.quiz{padding:16px 14px}.quiz legend{font-size:17px}.content-layer>summary{font-size:16px}.layer-body{font-size:15px}.visual-controls button{flex:1}.version-note{font-size:14px}.lesson table{min-width:520px}.return-lesson table{min-width:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}.blue-flow{animation:none}}.term-help{vertical-align:middle;background:var(--soft);border-radius:50%;min-width:44px;min-height:44px;margin-left:5px;padding:4px;font-size:14px}.task-check{border:1px solid var(--line);border-radius:6px;gap:12px;margin:12px 0;padding:10px;display:flex}.task-check input{width:20px;min-width:20px;accent-color:var(--green)}#glossary-dialog{max-width:min(94vw,440px)}.lesson [data-step]>h2{margin-top:20px}.skip-link{opacity:0;pointer-events:none}.skip-link:focus{opacity:1;pointer-events:auto}:root{--paper:#f7f8f6;--ink:#233831;--muted:#64716a;--line:#e0e6df}body{font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:16px;line-height:1.8}h1,h2,h3{letter-spacing:0;font-weight:650}.site-header{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:16px;height:72px;padding:0 max(28px,50vw - 612px);display:flex}.brand{color:var(--ink);white-space:nowrap;letter-spacing:.01em;font-size:17px;font-weight:700;text-decoration:none}.brand span{color:var(--muted);border-left:1px solid #ccd6cd;margin-left:10px;padding-left:12px;font-size:14px;font-weight:500}.home-shell{max-width:936px;margin:auto;padding:0 32px 64px}.home-hero{padding:48px 0 28px}.home-hero h1{margin:12px 0;font-size:clamp(29px,3.5vw,40px);line-height:1.35}.home-goal{color:var(--muted);margin:0;font-size:16px}.resume-panel{border:1px solid var(--line);border-left:3px solid var(--green);background:#fff;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;margin-top:28px;padding:24px 28px;display:grid}.resume p{margin:0}.resume-stage{color:var(--green);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.resume-dot{background:var(--green);border-radius:50%;flex:none;width:6px;height:6px}.resume .resume-label{color:var(--muted);margin-top:14px;font-size:12px}.resume strong{margin-top:3px;font-size:21px;font-weight:600;line-height:1.5;display:block}.resume-panel .button{min-width:154px;min-height:48px;font-size:15px}.storage-note{color:var(--muted);margin:10px 0 0;font-size:12px}.home-route{scroll-margin-top:24px}.home-route h2{margin:16px 0 8px;font-size:22px}.route-intro{color:var(--muted);max-width:650px;margin:0 0 20px;font-size:14px}.route-list{--number:36px;--badge:90px;--toggle:28px;--row-gap:16px;--row-pad:20px;border:1px solid var(--line);background:#fff;border-radius:10px;overflow:hidden}.route-list>details+details{border-top:1px solid var(--line)}.stage-row{grid-template-columns:var(--number) minmax(0,1fr) var(--badge) var(--toggle);align-items:center;gap:var(--row-gap);min-height:68px;padding:12px var(--row-pad);cursor:pointer;color:var(--ink);list-style:none;display:grid}.stage-row::-webkit-details-marker{display:none}.stage-row:hover{background:#f4f7f3}.stage-row:focus-visible{outline-offset:-4px}.stage-number{font-variant-numeric:tabular-nums;text-align:center;color:#68776c;background:#f1f4ef;border:1px solid #e6ebe3;border-radius:6px;font-size:13px;font-weight:600;line-height:32px}.stage-name{min-width:0;font-size:16px;font-weight:550;line-height:1.5}.status-badge{white-space:nowrap;color:#66736b;background:#f0f3ef;border-radius:5px;justify-content:center;align-items:center;min-height:26px;padding:3px 8px;font-size:12px;font-weight:500;line-height:1.5;display:inline-flex}.stage-toggle{color:#68776f;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.stage-toggle svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px;transition:transform .15s}.route-list>details[open]>.stage-row .stage-toggle svg{transform:rotate(180deg)}.route-list>details[data-state=current]>.stage-row{box-shadow:inset 3px 0 var(--green);background:#eff6f0}[data-state=current]>.stage-row .stage-number{color:#185b43;background:#dcecdf;border-color:#c9dfcf}[data-state=current]>.stage-row .stage-name{color:#185b43;font-weight:650}[data-state=current]>.stage-row .status-badge{color:#185b43;background:#dbeee0}[data-state=complete]>.stage-row .status-badge{color:#416c4f;background:#edf3ed}[data-state=pending]>.stage-row .stage-name{color:#747d76;font-weight:450}[data-state=pending]>.stage-row .status-badge{color:#626e65;background:#f5f6f4}.stage-lessons{padding:0 var(--row-pad) 14px calc(var(--row-pad) + var(--number) + var(--row-gap));margin:0;list-style:none}.stage-lessons li{margin:0}.course-entry{border:1px solid var(--line);color:var(--ink);background:#fafbf9;border-radius:7px;grid-template-columns:48px minmax(0,1fr) auto;grid-template-areas:"number name action"".progress action";gap:5px 12px;padding:15px 16px;text-decoration:none;display:grid}.course-entry:hover{background:#f2f7f1;border-color:#aac4b0}.course-number{font-variant-numeric:tabular-nums;color:var(--muted);grid-area:number;font-size:12px;line-height:24px}.course-name{overflow-wrap:anywhere;grid-area:name;font-size:15px;font-weight:550;line-height:24px}.course-progress{color:var(--muted);flex-wrap:wrap;grid-area:progress;align-items:center;gap:6px;font-size:12px;line-height:20px;display:flex}.course-action{white-space:nowrap;color:var(--green);grid-area:action;align-self:center;font-size:13px;font-weight:600}.course-entry[data-state=current]{background:#f1f7f1;border-color:#bfd6c3}.course-entry[data-state=current] .course-progress{color:#236545}.course-entry[aria-current=page]{box-shadow:inset 3px 0 #31644f}.viewing-label{color:#355e4a;border-left:1px solid #cbd7ca;padding-left:7px}.pending{color:var(--muted);padding:0 20px 18px calc(var(--row-pad) + var(--number) + var(--row-gap));margin:0;font-size:13px}.course-shell{grid-template-columns:280px minmax(0,1fr);gap:42px;max-width:1280px;margin:auto;padding:0 28px;display:grid}.desktop-route{scrollbar-width:thin;height:calc(100dvh - 24px);padding:30px 0;position:sticky;top:0;overflow:auto}.nav-title{margin:0 0 16px;font-size:13px;font-weight:600;text-decoration:none;display:block}.nav-note{color:var(--muted);margin:14px 4px 0;font-size:12px;line-height:1.65}.route-list--compact{--number:26px;--badge:66px;--toggle:20px;--row-gap:8px;--row-pad:10px;border-radius:8px}.route-list--compact .stage-row{min-height:56px;padding-top:10px;padding-bottom:10px}.route-list--compact .stage-number{border-radius:4px;font-size:11px;line-height:26px}.route-list--compact .stage-name{font-size:13px}.route-list--compact .status-badge{min-height:23px;padding:3px 4px;font-size:11px}.route-list--compact .stage-toggle{width:20px;height:24px}.route-list--compact .stage-lessons{padding:0 10px 10px}.route-list--compact .course-entry{grid-template-columns:37px minmax(0,1fr);grid-template-areas:"number name"".progress"".action";gap:4px 8px;padding:10px}.route-list--compact .course-name{font-size:13px;line-height:21px}.route-list--compact .course-number{font-size:11px;line-height:21px}.route-list--compact .course-action,.route-list--compact .course-progress{font-size:11px;line-height:20px}.route-list--compact .pending{padding:0 12px 12px;font-size:12px}#open-nav{display:none}#nav-dialog{border-radius:0;width:360px;max-width:100vw;height:100dvh;max-height:100dvh;margin:0 0 0 auto;padding:20px 16px}.drawer-home{margin:20px 0 14px;font-size:13px;text-decoration:none;display:block}.lesson{padding-top:30px}.lesson-heading h1{margin-top:14px;font-size:clamp(27px,2.5vw,36px);line-height:1.45}.title-translation{white-space:nowrap}.lesson-context{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.lesson-context a{font-size:13px;text-decoration:none}.lesson-context .status-badge{min-width:76px}.lesson-context [data-state=current]{color:#185b43;background:#dbeee0}.lesson-context [data-state=complete]{color:#416c4f;background:#edf3ed}.browse-note a{white-space:nowrap;margin-left:5px}.lesson-footer{border-top:1px solid var(--line);margin-top:36px;padding-top:24px}.lesson-nav{justify-content:space-between;align-items:center;gap:12px;display:flex}.lesson-nav a{border:1px solid var(--line);background:#fff;border-radius:6px;align-items:center;min-height:44px;padding:8px 14px;font-size:14px;text-decoration:none;display:inline-flex}.lesson-nav .muted{font-size:12px}.next-preview{border:1px solid var(--line);background:#eef3ed;border-radius:8px;margin:20px 0 12px;padding:18px 20px}.next-preview p{color:var(--muted);margin:0 0 4px;font-size:12px}.next-preview strong{font-size:16px;font-weight:600;line-height:1.65;display:block}.lesson-footer .primary{width:100%;min-height:50px;margin-top:6px;font-size:15px}.lesson-footer .muted{margin:12px 0;font-size:12px}@media (width<=1000px) and (width>=901px){.course-shell{grid-template-columns:260px minmax(0,1fr);gap:24px;padding:0 20px}}@media (width<=900px){.course-shell{grid-template-columns:minmax(0,1fr);padding:0 28px}.desktop-route{display:none}#open-nav{display:inline-flex}.site-header{padding:0 24px}.lesson{margin:auto}}@media (width<=600px){.site-header{height:64px;padding:0 18px}.brand{font-size:15px}.brand span{margin-left:6px;padding-left:8px;font-size:12px}.home-shell{padding:0 18px 40px}.home-hero{padding:32px 0 24px}.home-hero h1{font-size:29px}.home-hero .eyebrow{letter-spacing:0;font-size:11px}.home-goal{font-size:14px}.resume-panel{grid-template-columns:minmax(0,1fr);gap:20px;margin-top:24px;padding:20px}.resume strong{font-size:19px}.resume-panel .button{width:100%}.storage-note{font-size:11px}.home-route h2{font-size:21px}.route-intro{margin-bottom:16px;font-size:13px}.route-list{--number:28px;--badge:68px;--toggle:20px;--row-gap:9px;--row-pad:12px}.stage-row{min-height:62px;padding-top:12px;padding-bottom:12px}.stage-number{font-size:11px;line-height:28px}.stage-name{font-size:14px}.status-badge{padding:3px 5px;font-size:11px}.stage-toggle{width:20px;height:26px}.stage-lessons{padding:0 12px 12px}.course-entry{grid-template-columns:40px minmax(0,1fr);grid-template-areas:"number name"".progress"".action";gap:4px 10px;padding:12px}.course-name{font-size:14px;line-height:23px}.course-action{margin-top:4px}.pending{padding-left:16px;font-size:12px}.route-list--compact{--number:26px;--badge:66px;--toggle:20px;--row-gap:8px;--row-pad:10px}.course-shell{padding:0 18px}.lesson-context{margin-bottom:18px}.next-preview{padding:16px}.next-preview strong{font-size:15px}.lesson-footer .primary{padding:12px 10px;font-size:14px}.lesson-nav a{padding:8px 12px;font-size:13px}}@media (prefers-reduced-motion:reduce){.stage-toggle svg{transition:none}}.pending-structure[data-astro-cid-udpyu3mm] .course-entry[data-astro-cid-udpyu3mm]{color:var(--muted);cursor:default;background:0 0}.pending-structure[data-astro-cid-udpyu3mm] .course-name[data-astro-cid-udpyu3mm]{font-weight:400}[data-astro-cid-udpyu3mm][data-stage=foundation] .course-number[data-astro-cid-udpyu3mm]{white-space:nowrap;font-size:12px}[data-astro-cid-udpyu3mm][data-stage=foundation] .stage-number[data-astro-cid-udpyu3mm]{white-space:nowrap;font-size:11px}
