/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.fixed{position:fixed}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.inline{display:inline}.table{display:table}}:root{--paper:#fbfaf7;--paper-deep:#f4f1e9;--ink:#223034;--ink-soft:#5e696b;--teal:#0f4c5c;--teal-dark:#0a3945;--teal-soft:#deeee9;--line:#d9ddd8;--line-strong:#c6cec9;--amber:#9a6415;--amber-soft:#f7ead0;--red:#a9362a;--red-soft:#fae6e1;--green:#24613e;--green-soft:#e3f0e6;--blue-soft:#e6eef4;--sidebar-width:320px;--sans:"PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--serif:"Iowan Old Style", "Noto Serif TC", "Songti TC", "PMingLiU", serif}html{scroll-behavior:smooth;background:var(--paper)}body{background:var(--paper);color:var(--ink);font-family:var(--sans);text-rendering:optimizelegibility;margin:0;font-size:17px;line-height:1.75}button,input{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}::selection{color:var(--teal-dark);background:#cce2db}:focus-visible{outline-offset:3px;outline:3px solid #e0aa45}.course-app{min-height:100vh}.course-sidebar{border-right:1px solid var(--line);width:var(--sidebar-width);z-index:40;background:#f7f5ef;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-brand{border-bottom:1px solid var(--line);align-items:center;min-height:76px;padding:14px 18px;display:flex}.brand-link{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{background:var(--teal);color:#fff;font-family:var(--serif);letter-spacing:.03em;border-radius:50%;flex:0 0 42px;justify-content:center;align-items:center;height:42px;font-size:15px;font-weight:700;display:flex}.brand-link strong,.brand-link small{display:block}.brand-link strong{color:var(--teal-dark);font-family:var(--serif);font-size:16px;line-height:1.35}.brand-link small{color:var(--ink-soft);letter-spacing:.08em;margin-top:2px;font-size:11px;line-height:1.6}.sidebar-close{background:0 0;border:0;margin-left:auto;padding:8px;font-size:28px;line-height:1;display:none}.lesson-nav{scrollbar-color:#bdc5c0 transparent;scrollbar-width:thin;flex:1;padding:20px 12px 32px;overflow-y:auto}.nav-section+.nav-section{margin-top:26px}.nav-section-title{color:#6d7472;letter-spacing:.12em;text-transform:uppercase;margin:0 10px 7px;font-size:11px;font-weight:700}.lesson-link{color:#4b5657;border-radius:7px;align-items:flex-start;gap:9px;margin:2px 0;padding:8px 9px;font-size:13px;line-height:1.45;transition:background-color .15s,color .15s;display:flex}.lesson-link:hover{color:var(--ink);background:#eceae3}.lesson-link.is-active{background:var(--teal-soft);color:var(--teal-dark);font-weight:650}.lesson-state{color:#7d8582;border:1px solid #c7ccc8;border-radius:50%;flex:0 0 20px;justify-content:center;align-items:center;height:20px;margin-top:1px;font-size:9px;font-weight:700;display:flex}.lesson-state.is-complete{background:var(--green);border-color:var(--green);color:#fff}.sidebar-note{border-top:1px solid var(--line);color:#757d79;padding:14px 20px;font-size:11px;line-height:1.5}.sidebar-scrim{opacity:0;visibility:hidden;z-index:35;background:#17252780;border:0;transition:opacity .18s;display:none;position:fixed;inset:0}.course-stage{margin-left:var(--sidebar-width);min-height:100vh}.course-topbar{border-bottom:1px solid var(--line);z-index:25;background:#fbfaf7f5;justify-content:space-between;align-items:center;height:64px;padding:0 28px;display:flex;position:sticky;top:0}.mobile-menu{background:0 0;border:0;width:44px;height:44px;padding:11px;display:none}.mobile-menu span{background:var(--ink);width:22px;height:2px;margin:5px 0;display:block}.topbar-search{color:#717977;cursor:pointer;background:#f2f0ea;border:1px solid #0000;border-radius:7px;align-items:center;gap:9px;min-width:300px;height:38px;padding:0 10px 0 13px;font-size:13px;display:flex}.topbar-search:hover{border-color:var(--line-strong)}.topbar-search kbd{border:1px solid var(--line);font-family:var(--sans);background:#fff;border-radius:4px;margin-left:auto;padding:1px 6px;font-size:10px}.topbar-progress{align-items:center;gap:10px;font-size:12px;font-weight:700;display:flex}.topbar-progress>div{background:#e2e3df;width:96px;height:4px;overflow:hidden}.topbar-progress i{background:var(--teal);height:100%;transition:width .22s;display:block}.course-main{grid-template-columns:minmax(0,760px) 180px;gap:64px;max-width:1080px;margin:0 auto;padding:70px 36px 100px;display:grid}.lesson-article{min-width:0}.lesson-breadcrumb{color:#707976;letter-spacing:.03em;align-items:center;gap:9px;margin-bottom:19px;font-size:12px;font-weight:650;display:flex}.lesson-meta{color:#777f7d;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;font-size:12px;display:flex}.mode-badge{letter-spacing:.04em;border:1px solid;border-radius:999px;padding:2px 10px;font-weight:700}.mode-required{background:var(--teal-soft);color:var(--teal)}.mode-setup{background:var(--amber-soft);color:#7d5012}.mode-live{background:var(--blue-soft);color:#345e77}.mode-safety{background:var(--red-soft);color:var(--red)}.mode-reference{color:#626865;background:#eeece6}.lesson-article h1{color:#18353b;font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(38px,4.3vw,56px);font-weight:680;line-height:1.16}.lesson-summary{color:#596667;max-width:680px;margin:24px 0 0;font-size:19px;line-height:1.85}.outcomes-panel{background:#f1f5f0;border-top:1px solid #cbd6cd;border-bottom:1px solid #cbd6cd;grid-template-columns:52px 1fr;align-items:start;gap:24px;margin:48px 0 58px;padding:26px 28px;display:grid}.outcomes-index{color:#90a099;font-family:var(--serif);font-size:34px;line-height:1}.outcomes-panel h2{color:var(--teal-dark);margin:0 0 8px;font-size:16px}.outcomes-panel ul{margin:0;padding-left:20px}.outcomes-panel li{color:#445153;margin:3px 0;padding-left:4px;font-size:15px}.lesson-orientation{border-bottom:1px solid var(--line-strong);margin:-18px 0 58px;padding-bottom:18px}.lesson-orientation>h2{color:#6c7673;letter-spacing:.12em;text-transform:uppercase;margin:0 0 12px;font-size:11px;font-weight:800}.orientation-grid{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.orientation-grid>div{border-left:1px solid var(--line);padding:4px 18px 8px}.orientation-grid>div:first-child{border-left:0;padding-left:0}.orientation-grid>div:last-child{padding-right:0}.orientation-grid span{color:#7a8380;letter-spacing:.08em;margin-bottom:5px;font-size:10px;font-weight:800;display:block}.orientation-grid strong{color:var(--teal-dark);font-family:var(--serif);font-size:15px;line-height:1.4;display:block}.orientation-grid p{color:#687270;margin:7px 0 0;font-size:11px;line-height:1.55}.lesson-keywords{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;margin-top:16px;padding-top:13px;display:flex}.lesson-keywords>span{color:#777f7d;letter-spacing:.08em;margin-right:4px;font-size:10px;font-weight:800}.lesson-keywords b{color:#56615f;background:#efede7;border:1px solid #dedbd4;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:650;line-height:1.5}.lesson-section{margin:54px 0;scroll-margin-top:92px}.lesson-section h2,.checkpoint h2,.quiz-card h2{color:#183e46;font-family:var(--serif);letter-spacing:-.02em;margin:0 0 18px;font-size:30px;line-height:1.35}.lesson-section p{color:#334244;margin:0 0 18px}.inline-url{color:var(--teal);overflow-wrap:anywhere;text-underline-offset:3px;font-weight:650;-webkit-text-decoration:underline #79a9a0;text-decoration:underline #79a9a0;text-decoration-thickness:1px}.inline-url:hover{color:var(--teal-dark);text-decoration-color:currentColor}.content-list,.lesson-section>ul{margin:16px 0;padding-left:25px}.content-list li,.lesson-section>ul li{margin:9px 0;padding-left:5px}.step-list{counter-reset:course-step;margin:26px 0;padding:0;list-style:none}.step-list li{border-top:1px solid var(--line);grid-template-columns:34px 1fr;align-items:flex-start;gap:16px;padding:18px 2px;display:grid}.step-list li:last-child{border-bottom:1px solid var(--line)}.step-number{background:var(--teal-soft);color:var(--teal-dark);border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;margin-top:1px;font-size:13px;font-weight:750;line-height:1;display:flex}.callout{border:1px solid var(--line-strong);margin:48px 0;padding:21px 24px;scroll-margin-top:92px}.callout-label{letter-spacing:.05em;margin-bottom:7px;font-size:13px;font-weight:800}.callout p{margin:0}.callout ul{margin:10px 0 0;padding-left:21px}.callout-info{background:#eef4f4;border-color:#bfd0d0}.callout-tip{background:var(--green-soft);border-color:#bed2c3}.callout-warning{background:var(--amber-soft);border-color:#e2c38b}.callout-danger{background:var(--red-soft);color:#6e2922;border-color:#e4aaa0}.lesson-figure{margin:54px 0;scroll-margin-top:92px}.lesson-figure h2{color:#183e46;font-family:var(--serif);letter-spacing:-.02em;margin:0 0 18px;font-size:30px;line-height:1.35}.figure-frame{border:1px solid var(--line-strong);background:#15191a;line-height:0;display:block;overflow:hidden}.figure-frame picture,.figure-frame img{width:100%;height:auto;display:block}.figure-frame:focus-visible{outline-offset:3px;outline:3px solid #dfb767}.figure-caption{border-bottom:1px solid var(--line);color:#475354;padding:14px 2px 15px;font-size:13px;line-height:1.65}.figure-caption p{margin:0}.figure-callouts{margin:12px 0 0;padding-left:24px}.figure-callouts li{margin:5px 0;padding-left:3px}.figure-source{color:#7a8381;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:12px;font-size:11px;display:flex}.figure-source a{color:var(--teal);text-underline-offset:3px;-webkit-text-decoration:underline #8bb4ad;text-decoration:underline #8bb4ad}.supplemental-code{border-bottom:1px solid var(--line-strong);border-top:1px solid var(--line-strong);margin:44px 0;scroll-margin-top:92px}.supplemental-code summary{color:var(--teal-dark);cursor:pointer;font-family:var(--serif);padding:18px 2px;font-size:20px;font-weight:700}.supplemental-code>div{padding:0 0 8px}.supplemental-code>div>p{color:#475354;margin:0}.copy-block{color:#f2f7f5;background:#173238;margin:24px 0;overflow:hidden}.copy-block-bar{color:#b9cbc8;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid #ffffff21;justify-content:space-between;align-items:center;padding:9px 12px 9px 18px;font-size:11px;font-weight:700;display:flex}.copy-block-bar button{color:#eaf1ef;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:4px;min-height:30px;padding:3px 10px;font-size:11px}.copy-block pre{white-space:pre-wrap;word-break:break-word;margin:0;padding:20px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.75;overflow-x:auto}.table-wrap{border-bottom:1px solid var(--line-strong);border-top:1px solid var(--line-strong);margin:24px 0;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:600px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:13px 15px;line-height:1.55}th{color:#435052;letter-spacing:.04em;background:#f1efe9;font-size:12px}.checkpoint{background:var(--green-soft);border-top:1px solid #b9d1bf;border-bottom:1px solid #b9d1bf;grid-template-columns:42px 1fr;align-items:start;gap:18px;margin:56px 0;padding:25px 26px;scroll-margin-top:92px;display:grid}.checkpoint-mark{background:var(--green);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;display:flex}.checkpoint h2{color:#1b5132;margin-bottom:7px;font-size:22px}.checkpoint p,.checkpoint ul{margin-top:4px;margin-bottom:0}.checkpoint ul{padding-left:21px}.resource-section{border-top:1px solid var(--line);padding-top:36px}.resource-section li{margin:8px 0}.resource-section a{color:var(--teal);text-underline-offset:4px;-webkit-text-decoration:underline #8bb4ad;text-decoration:underline #8bb4ad}.quiz-card{background:#f2efe6;border:1px solid #d8d1c1;margin:64px 0 34px;padding:28px;scroll-margin-top:92px}.quiz-kicker{color:#806a42;letter-spacing:.11em;text-transform:uppercase;margin-bottom:7px;font-size:11px;font-weight:800}.quiz-card h2{color:#3d392f;font-size:23px}.quiz-options{gap:8px;margin:22px 0;display:grid}.quiz-option{cursor:pointer;background:#ffffff94;border:1px solid #d8d2c6;align-items:flex-start;gap:10px;padding:11px 13px;font-size:15px;line-height:1.55;display:flex}.quiz-option input{accent-color:var(--teal);margin-top:5px}.quiz-option.is-correct{background:var(--green-soft);border-color:#8db39a}.quiz-option.is-wrong{background:var(--red-soft);border-color:#d79c92}.quiz-feedback{gap:4px;margin-top:18px;font-size:14px;display:grid}.primary-button,.secondary-button{cursor:pointer;border-radius:6px;min-height:42px;padding:9px 17px;font-size:14px;font-weight:750}.primary-button{background:var(--teal);border:1px solid var(--teal);color:#fff}.primary-button:hover{background:var(--teal-dark)}.secondary-button{color:#3e4a4a;background:0 0;border:1px solid #aeb6b1}.secondary-button:disabled{cursor:not-allowed;opacity:.45}.completion-panel{border-bottom:1px solid var(--line);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;padding:24px 0;display:flex}.completion-panel strong,.completion-panel span{display:block}.completion-panel strong{color:var(--teal-dark);font-family:var(--serif);font-size:19px}.completion-panel span{color:#6c7572;margin-top:3px;font-size:12px}.lesson-pagination{grid-template-columns:1fr 1fr;gap:22px;margin-top:42px;display:grid}.page-link{border-bottom:2px solid var(--line-strong);flex-direction:column;min-height:82px;padding:10px 2px 15px;transition:border-color .15s;display:flex}.page-link:hover{border-color:var(--teal)}.page-link span{color:#78817e;letter-spacing:.06em;font-size:11px;font-weight:700}.page-link strong{color:var(--teal-dark);font-family:var(--serif);margin-top:5px;font-size:16px;line-height:1.4}.page-next{text-align:right}.page-toc{flex-direction:column;align-self:start;gap:8px;display:flex;position:sticky;top:96px}.toc-label{color:#8a918e;letter-spacing:.13em;text-transform:uppercase;margin-bottom:4px;font-size:10px;font-weight:800}.page-toc a{border-left:1px solid var(--line);color:#78817e;padding:4px 0 4px 12px;font-size:11px;line-height:1.5}.page-toc a:hover{border-color:var(--teal);color:var(--teal)}.site-footer{border-top:1px solid var(--line);color:#7e8582;justify-content:space-between;gap:20px;margin:0 28px;padding:24px 0;font-size:11px;display:flex}.search-layer{z-index:100;justify-content:center;align-items:flex-start;padding:9vh 20px 20px;display:flex;position:fixed;inset:0}.search-scrim{background:#141f21a1;border:0;position:absolute;inset:0}.search-dialog{background:var(--paper);border:1px solid #bfc6c2;width:100%;max-width:680px;max-height:80vh;position:relative;overflow:hidden;box-shadow:0 26px 70px #18292c38}.search-input-wrap{border-bottom:1px solid var(--line);align-items:center;gap:11px;min-height:62px;padding:9px 14px 9px 20px;display:flex}.search-input-wrap input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:17px}.search-input-wrap button{border:1px solid var(--line);color:#767d7a;background:#efede7;border-radius:4px;padding:4px 7px;font-size:10px}.search-results{max-height:calc(80vh - 62px);padding:14px;overflow-y:auto}.search-results-label{color:#868d8a;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px 8px;font-size:10px;font-weight:800}.search-result{border-bottom:1px solid var(--line);padding:13px 10px;display:block}.search-result:hover{background:#f1efe9}.search-result span,.search-result strong,.search-result small{display:block}.search-result span{color:#7b8380;font-size:10px}.search-result strong{color:var(--teal-dark);font-family:var(--serif);margin-top:2px;font-size:16px;line-height:1.4}.search-result small{color:#687270;margin-top:3px;font-size:12px;line-height:1.5}.empty-search{color:#747c79;text-align:center;flex-direction:column;align-items:center;padding:55px 20px;display:flex}.empty-search strong{color:var(--ink);font-family:var(--serif)}.empty-search span{margin-top:5px;font-size:12px}body{font-size:18px;line-height:1.8}.brand-link strong{font-size:18px}.brand-link small{font-size:13px}.nav-section-title{font-size:12px}.lesson-link{font-size:15px}.lesson-state{flex-basis:22px;height:22px;font-size:10px}.sidebar-note{font-size:13px}.topbar-search{font-size:14px}.topbar-search kbd{font-size:11px}.topbar-progress{font-size:13px}.lesson-breadcrumb,.lesson-meta{font-size:14px}.lesson-summary{max-width:730px;font-size:21px}.outcomes-panel h2{font-size:18px}.outcomes-panel li{font-size:17px}.lesson-orientation>h2{font-size:13px}.orientation-grid span{font-size:12px}.orientation-grid strong{font-size:17px}.orientation-grid p{font-size:14px}.lesson-keywords>span,.lesson-keywords b{font-size:12px}.lesson-section h2,.lesson-figure h2{font-size:32px}.step-number{font-size:14px}.callout-label,.figure-caption{font-size:15px}.figure-source{font-size:12px}.supplemental-code summary{font-size:22px}.copy-block-bar,.copy-block-bar button{font-size:13px}.copy-block pre{font-size:15px}th{font-size:14px}td{font-size:16px}.checkpoint h2{font-size:24px}.quiz-kicker{font-size:13px}.quiz-card h2{font-size:25px}.quiz-option{font-size:17px}.quiz-feedback,.primary-button,.secondary-button{font-size:16px}.completion-panel strong{font-size:21px}.completion-panel span{font-size:14px}.page-link span{font-size:13px}.page-link strong{font-size:18px}.toc-label{font-size:12px}.page-toc a,.site-footer{font-size:13px}.search-input-wrap input{font-size:18px}.search-input-wrap button,.search-results-label,.search-result span{font-size:12px}.search-result strong{font-size:18px}.search-result small,.empty-search span{font-size:14px}@media (width<=1360px){.course-main{grid-template-columns:minmax(0,780px);justify-content:center}.page-toc{display:none}}@media (width<=900px){.course-sidebar{width:min(88vw,330px);transition:transform .18s;transform:translate(-105%);box-shadow:16px 0 42px #1323262e}.course-sidebar.is-open{transform:translate(0)}.sidebar-close,.mobile-menu,.sidebar-scrim{display:block}.sidebar-scrim.is-visible{opacity:1;visibility:visible}.course-stage{margin-left:0}.course-topbar{padding:0 16px}.topbar-search{width:min(48vw,300px);min-width:0}.course-main{padding-top:52px}}@media (width<=640px){body{font-size:17px}.course-topbar{height:58px}.topbar-search{background:0 0;border:0;justify-content:center;width:44px;min-width:44px;padding:0}.topbar-search>span:nth-child(2),.topbar-search kbd{display:none}.topbar-search>span:first-child{font-size:22px}.topbar-progress>div{width:64px}.course-main{padding:36px 20px 74px}.lesson-meta{gap:8px 11px}.lesson-meta span:last-child{flex-basis:100%}.lesson-article h1{font-size:39px}.lesson-summary{font-size:19px;line-height:1.75}.outcomes-panel{grid-template-columns:1fr;gap:14px;margin:38px 0 46px;padding:22px 20px}.orientation-grid{grid-template-columns:1fr}.orientation-grid>div,.orientation-grid>div:first-child,.orientation-grid>div:last-child{border-left:0;border-top:1px solid var(--line);padding:13px 0}.orientation-grid>div:first-child{border-top:0}.outcomes-index{font-size:27px}.lesson-section{margin:45px 0}.lesson-orientation{margin:-14px 0 46px}.lesson-section h2,.lesson-figure h2,.quiz-card h2{font-size:27px}.lesson-figure{margin:45px -6px}.lesson-figure h2,.figure-caption{margin-left:6px;margin-right:6px}.figure-frame{overflow-x:auto}.figure-source{flex-direction:column;align-items:flex-start}.callout,.quiz-card{margin-left:-6px;margin-right:-6px;padding:20px}.checkpoint{grid-template-columns:1fr;margin-left:-6px;margin-right:-6px;padding:22px 20px}.copy-block{margin-left:-6px;margin-right:-6px}.completion-panel{flex-direction:column;align-items:stretch}.completion-panel button{width:100%}.lesson-pagination{grid-template-columns:1fr}.page-next{text-align:left}.site-footer{flex-direction:column;margin:0 20px;line-height:1.5}.search-layer{padding:0}.search-dialog{border:0;height:100%;max-height:none}.search-results{max-height:calc(100vh - 62px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{--vibe-paper:#fbf8ee;--vibe-paper-strong:#fffdf7;--vibe-paper-muted:#f1ede0;--vibe-ink:#272923;--vibe-ink-soft:#5c6056;--vibe-rule:#d4d0c2;--vibe-rule-strong:#a9a697;--vibe-yellow:#eab83e;--vibe-yellow-soft:#f5df9a;--vibe-teal:#4f9085;--vibe-green:#527b55;--vibe-green-soft:#e6efdd;--vibe-blue:#4e83af;--vibe-blue-soft:#dce9f2;--vibe-purple:#806b9a;--vibe-danger:#a55245}*{box-sizing:border-box}html,body{background:var(--vibe-paper-muted);min-height:100%;margin:0}body{color:var(--vibe-ink);font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif}button,textarea{font:inherit}button{color:inherit}button:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #4e83af8c}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.vibe-course{--type-scale:1;background:var(--vibe-paper);width:100%;height:100dvh;color:var(--vibe-ink);font-size:calc(17px * var(--type-scale));grid-template-rows:92px minmax(0,1fr) 92px;display:grid;overflow:hidden}.vibe-font-small{--type-scale:.94}.vibe-font-large{--type-scale:1.11}.vibe-header{z-index:10;border-bottom:1px solid var(--vibe-rule-strong);background:#fffdf7fa;grid-template-columns:280px minmax(440px,1fr) 300px;align-items:center;gap:24px;min-width:0;padding:12px 24px;display:grid;position:relative;box-shadow:0 4px 16px #44403012}.vibe-brand{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:0;display:flex}.vibe-brand img{object-fit:cover;object-position:center;border-radius:2px;flex:none;width:48px;height:48px}.vibe-brand span{gap:2px;display:grid}.vibe-brand strong{letter-spacing:.06em;font-size:1.25em;line-height:1}.vibe-brand small{color:var(--vibe-ink-soft);letter-spacing:.04em;font-size:.81em}.vibe-header-progress{min-width:0}.vibe-header-progress p{white-space:nowrap;text-overflow:ellipsis;margin:0 0 8px;font-size:.9em;font-weight:650;overflow:hidden}.vibe-progress-track{grid-template-columns:repeat(10,minmax(24px,1fr));align-items:center;max-width:620px;display:grid}.vibe-progress-track button{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);width:26px;height:26px;color:var(--vibe-ink-soft);cursor:pointer;border-radius:50%;justify-self:center;place-items:center;padding:0;font-size:.7em;font-weight:800;display:grid;position:relative}.vibe-progress-track button:before{content:"";z-index:-1;background:var(--vibe-rule);width:calc(100% + 36px);height:3px;position:absolute;right:50%}.vibe-progress-track button:first-child:before{display:none}.vibe-progress-track button.is-complete{border-color:var(--vibe-green);background:var(--vibe-green);color:#fff}.vibe-progress-track button.is-complete:before,.vibe-progress-track button.is-active:before{background:var(--vibe-green)}.vibe-progress-track button.is-active{background:var(--vibe-yellow);width:30px;height:30px;color:var(--vibe-ink);border-color:#9b6d00;box-shadow:0 3px 8px #6c4c0a40}.vibe-progress-track button:disabled{cursor:not-allowed;opacity:.68}.vibe-header-tools{white-space:nowrap;justify-content:flex-end;align-items:center;gap:14px;display:flex}.vibe-font-control{align-items:center;gap:0;display:flex}.vibe-font-control>span{margin-right:9px;font-size:.86em;font-weight:650}.vibe-font-control button{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);cursor:pointer;border-right-width:0;min-width:34px;height:34px;padding:0 7px}.vibe-font-control button:last-child{border-right-width:1px}.vibe-font-control button[aria-pressed=true]{background:var(--vibe-ink);color:#fff}.vibe-icon-button{cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:7px;min-height:38px;padding:0 10px;font-weight:650;display:inline-flex}.vibe-icon-button:hover{border-color:var(--vibe-rule);background:var(--vibe-paper-muted)}.vibe-workspace{grid-template-columns:184px minmax(560px,1fr) minmax(350px,31vw);min-height:0;display:grid;overflow:hidden}.vibe-stage-nav{border-right:1px solid var(--vibe-rule);scrollbar-width:thin;background:#f7f3e7e0;min-height:0;padding:15px 8px 20px 0;overflow:auto}.vibe-stage-nav button{text-align:left;width:100%;min-height:68px;color:var(--vibe-ink);cursor:pointer;background:0 0;border:0;border-left:4px solid #0000;grid-template-columns:28px 1fr;align-items:center;gap:9px;padding:8px 12px 8px 9px;display:grid;position:relative}.vibe-stage-nav button:before{content:"";background:var(--vibe-rule);width:1px;height:34px;position:absolute;top:-17px;left:22px}.vibe-stage-nav button:first-child:before{display:none}.vibe-stage-nav button:hover:not(:disabled){background:#ebe0be73}.vibe-stage-nav button.is-active{background:#f0cd71;border-left-color:#9f7100;box-shadow:inset 0 0 0 1px #9f710026}.vibe-stage-nav button:disabled{color:#8a8b84;cursor:not-allowed}.vibe-stage-marker{z-index:1;border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);width:26px;height:26px;color:var(--vibe-ink-soft);border-radius:50%;place-items:center;display:grid;position:relative}.vibe-stage-nav button.is-complete .vibe-stage-marker{border-color:var(--vibe-green);background:var(--vibe-green);color:#fff}.vibe-stage-nav button.is-active .vibe-stage-marker{border-color:var(--vibe-ink);background:var(--vibe-ink);color:#fff}.vibe-stage-nav button>span:last-child{gap:2px;font-size:.86em;font-weight:650;line-height:1.35;display:grid}.vibe-stage-nav button small{color:var(--vibe-ink-soft);letter-spacing:.08em;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.68em;font-weight:750}.vibe-lesson{scrollbar-color:var(--vibe-rule-strong) transparent;background:#fffdf7d1;min-width:0;min-height:0;overflow:auto}.vibe-lesson-inner{width:100%;max-width:860px;margin:0 auto;padding:18px 34px 30px}.vibe-kicker{color:var(--vibe-ink-soft);letter-spacing:.12em;text-transform:uppercase;margin:0 0 7px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.76em;font-weight:750}.vibe-lesson h1{letter-spacing:-.045em;margin:0;font-size:clamp(2.25em,4vw,3.2em);font-weight:790;line-height:1.08}.vibe-why{border-bottom:1px solid var(--vibe-rule-strong);color:var(--vibe-ink);margin:7px 0 13px;padding-bottom:12px;font-size:1.08em;line-height:1.6}.vibe-why strong{color:#a96d00;margin-right:6px}.vibe-model,.vibe-prediction,.vibe-practice{min-width:0}.vibe-section-heading{grid-template-columns:34px 1fr;align-items:start;gap:10px;margin-bottom:9px;display:grid}.vibe-section-heading>span{background:var(--vibe-ink);color:#fff;border-radius:50%;place-items:center;width:28px;height:28px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.68em;font-weight:800;display:grid}.vibe-section-heading h2{margin:0;font-size:1.03em;line-height:1.3}.vibe-section-heading p{color:var(--vibe-ink-soft);margin:3px 0 0;font-size:.86em;line-height:1.5}.vibe-section-heading.compact{margin-bottom:14px}.vibe-model-illustrated{padding:2px 0 10px}.vibe-model-labels{text-align:center;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 2% -4px;font-size:.9em;display:grid}.vibe-model-art{aspect-ratio:2;border-bottom:1px dashed var(--vibe-rule-strong);background:#fbf7ef;position:relative;overflow:hidden}.vibe-model-art img{object-position:center;width:100%;height:100%;display:block;object-fit:contain!important}.vibe-action-chip{color:#fff;cursor:pointer;border:1px solid #33312859;border-radius:5px;justify-content:center;align-items:center;gap:5px;min-width:82px;height:38px;padding:0 11px;font-weight:760;display:inline-flex;position:absolute;top:44%;box-shadow:0 4px 10px #3d392a2e}.vibe-action-chip.first{background:#d9a321;left:27.5%}.vibe-action-chip.second{background:var(--vibe-blue);left:61.5%}.vibe-action-chip:hover{filter:brightness(.94)}.vibe-model-paths{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px;display:grid}.vibe-model-paths p{border:1px solid var(--vibe-rule);white-space:nowrap;background:#f7f3e78c;justify-content:center;align-items:center;gap:7px;min-width:0;margin:0;padding:6px 8px;font-size:.74em;display:flex}.vibe-model-paths p span{color:var(--vibe-blue);font-weight:800}.vibe-learning-grid{border-top:1px solid var(--vibe-rule);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding-top:13px;display:grid}.vibe-prediction,.vibe-practice{padding:0}.vibe-answer-list{gap:9px;display:grid}.vibe-answer-list button{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);text-align:left;cursor:pointer;border-radius:4px;grid-template-columns:34px 1fr;align-items:center;gap:10px;width:100%;min-height:58px;padding:9px 12px;font-size:.86em;line-height:1.45;display:grid}.vibe-answer-list button>span{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-muted);border-radius:50%;place-items:center;width:31px;height:31px;font-weight:800;display:grid}.vibe-answer-list button:hover,.vibe-answer-list button.is-selected{border-color:var(--vibe-blue);background:#f3f8fb}.vibe-answer-list button.is-correct{border-color:var(--vibe-green);background:var(--vibe-green-soft)}.vibe-answer-list button.is-correct>span{border-color:var(--vibe-green);background:var(--vibe-green);color:#fff}.vibe-answer-feedback{background:var(--vibe-paper-muted);border-left:3px solid;margin:10px 0 0;padding:9px 11px;font-size:.78em;line-height:1.55}.vibe-answer-feedback.is-correct{color:#355f3b}.vibe-answer-feedback.is-wrong{color:var(--vibe-danger)}.vibe-practice ol{gap:3px;margin:0;padding:0;list-style:none;display:grid}.vibe-practice li button{border:0;border-bottom:1px solid var(--vibe-rule);text-align:left;cursor:pointer;background:0 0;grid-template-columns:30px 1fr;align-items:center;gap:9px;width:100%;min-height:37px;padding:6px 4px;font-size:.86em;display:grid}.vibe-practice li button>span{border:1px solid var(--vibe-green);width:25px;height:25px;color:var(--vibe-green);border-radius:50%;place-items:center;font-size:.76em;font-weight:800;display:grid}.vibe-practice li.is-complete button{color:var(--vibe-green)}.vibe-practice li.is-complete button>span{background:var(--vibe-green);color:#fff}.vibe-evidence{background:var(--vibe-green-soft);color:#35583b;border:1px solid #adbea0;border-radius:4px;grid-template-columns:24px 1fr;gap:9px;margin-top:8px;padding:8px 10px;display:grid}.vibe-evidence strong{margin-bottom:2px;font-size:.8em;display:block}.vibe-evidence p{margin:0;font-size:.74em;line-height:1.5}.vibe-simulation{border-left:1px solid var(--vibe-rule-strong);background:#eef0df;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.vibe-simulation-heading{z-index:3;background:#f0f2e1f2;border-bottom:1px solid #76795b61;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:18px 18px 14px;display:grid;position:relative}.vibe-simulation-heading p{color:var(--vibe-ink-soft);letter-spacing:.1em;margin:0 0 2px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.68em;font-weight:750}.vibe-simulation-heading h2{margin:0 0 5px;font-size:1.14em;line-height:1.3}.vibe-simulation-heading span{color:var(--vibe-ink-soft);font-size:.77em;line-height:1.5;display:block}.vibe-simulation-heading button{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);cursor:pointer;border-radius:4px;align-self:start;align-items:center;gap:5px;min-height:36px;padding:0 9px;font-size:.72em;font-weight:700;display:inline-flex}.vibe-city-scene{background:#edf1df;min-height:0;position:relative;overflow:hidden}.vibe-city-scene>img{object-position:center;width:100%;height:100%;display:block;object-fit:contain!important}.vibe-city-stop{z-index:2;background:#fffdf7eb;border:1px solid #56534661;border-radius:4px;gap:2px;width:min(45%,190px);padding:9px 11px;transition:border-color .22s,box-shadow .22s,transform .22s;display:grid;position:absolute;right:4%;transform:translateY(-50%);box-shadow:0 5px 14px #363c2a21}.vibe-city-stop strong{font-size:.84em;line-height:1.3}.vibe-city-stop span{color:var(--vibe-ink-soft);font-size:.69em}.vibe-city-stop.is-active{border-color:var(--vibe-yellow);transform:translateY(-50%)translate(-4px);box-shadow:0 0 0 3px #eab83e3d,0 5px 14px #363c2a26}.vibe-route-payload{z-index:3;top:var(--payload-top);left:var(--payload-left);background:var(--vibe-yellow);width:38px;height:38px;color:var(--vibe-ink);opacity:0;border:2px solid #fff;border-radius:50%;place-items:center;transition:top 1.05s ease-in-out,left 1.05s ease-in-out,opacity .18s,transform .18s;display:grid;position:absolute;transform:translate(-50%,-50%)scale(.7);box-shadow:0 5px 14px #3f371e47}.vibe-route-payload.is-visible{opacity:1;transform:translate(-50%,-50%)scale(1)}.vibe-simulation-status{z-index:4;background:#fffdf7f0;border:1px solid #44433959;border-radius:4px;align-items:center;gap:8px;min-height:38px;padding:0 12px;font-size:.74em;font-weight:750;display:inline-flex;position:absolute;bottom:16px;right:4%;box-shadow:0 4px 14px #363c2a29}.vibe-simulation-status>span{background:var(--vibe-rule-strong);border-radius:50%;width:9px;height:9px}.vibe-simulation-status>span.is-running{background:var(--vibe-green);animation:.9s ease-in-out infinite vibe-pulse}@keyframes vibe-pulse{50%{opacity:.35}}.vibe-action-dock{z-index:12;border-top:1px solid var(--vibe-rule-strong);background:#fffdf7fa;grid-template-columns:minmax(220px,.85fr) minmax(360px,1.7fr) minmax(220px,.85fr);align-items:stretch;gap:10px;padding:10px max(14px,50vw - 590px);display:grid;position:relative;box-shadow:0 -6px 18px #44403014}.vibe-preview-action,.vibe-primary-action{cursor:pointer;border-radius:5px;justify-content:center;align-items:center;min-width:0;min-height:66px;display:flex}.vibe-preview-action{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);text-align:left;gap:11px;padding:8px 15px}.vibe-preview-action>span{background:var(--vibe-blue);color:#fff;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;display:grid}.vibe-preview-action div{gap:2px;display:grid}.vibe-preview-action strong{font-size:.9em}.vibe-preview-action small{color:var(--vibe-ink-soft);font-size:.68em}.vibe-primary-action{background:var(--vibe-yellow);color:var(--vibe-ink);border:1px solid #a37300;gap:10px;padding:8px 22px;box-shadow:0 4px 12px #6f4f0c2b}.vibe-primary-action:hover{background:#dfaa27}.vibe-primary-action.is-ready{background:var(--vibe-green);color:#fff;border-color:#315c39}.vibe-primary-action strong{font-size:1.15em}.vibe-primary-action span{opacity:.76;font-size:.72em}.vibe-dock-hint{border:1px solid var(--vibe-rule);color:var(--vibe-ink-soft);border-radius:5px;justify-content:center;align-items:center;gap:10px;padding:8px 14px;display:flex}.vibe-dock-hint p{gap:1px;margin:0;display:grid}.vibe-dock-hint strong{color:var(--vibe-ink);font-size:.78em}.vibe-dock-hint span{font-size:.66em}.vibe-modal-backdrop{z-index:50;background:#27292394;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.vibe-help-dialog{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);border-radius:5px;width:min(560px,100%);padding:32px;position:relative;box-shadow:0 24px 70px #1e1f1a4d}.vibe-help-dialog h2{margin:0 42px 22px 0;font-size:1.8em;line-height:1.2}.vibe-help-dialog ol{border-top:1px solid var(--vibe-rule);gap:0;margin:0 0 24px;padding:0;list-style:none;display:grid}.vibe-help-dialog li{border-bottom:1px solid var(--vibe-rule);grid-template-columns:110px 1fr;gap:14px;padding:14px 0;display:grid}.vibe-help-dialog li span{color:var(--vibe-ink-soft);font-size:.86em;line-height:1.5}.vibe-dialog-close{border:1px solid var(--vibe-rule-strong);background:var(--vibe-paper-strong);cursor:pointer;border-radius:3px;place-items:center;width:38px;height:38px;display:grid;position:absolute;top:16px;right:16px}.vibe-dialog-primary{background:var(--vibe-yellow);cursor:pointer;border:1px solid #9b6d00;border-radius:4px;align-items:center;gap:8px;min-height:46px;padding:0 18px;font-weight:760;display:inline-flex}@media (width<=1220px){.vibe-header{grid-template-columns:220px minmax(390px,1fr) 250px;gap:14px;padding-inline:16px}.vibe-brand small,.vibe-font-control>span{display:none}.vibe-workspace{grid-template-columns:172px minmax(520px,1fr) 350px}.vibe-lesson-inner{padding-inline:24px}.vibe-model-paths{grid-template-columns:1fr}}@media (width<=1000px){.vibe-course{grid-template-rows:auto auto auto;height:auto;min-height:100dvh;overflow:visible}.vibe-header{grid-template-columns:190px minmax(0,1fr) auto;min-height:78px;position:sticky;top:0}.vibe-header-tools .vibe-icon-button span,.vibe-font-control{display:none}.vibe-workspace{grid-template-columns:160px minmax(0,1fr);min-height:auto;overflow:visible}.vibe-stage-nav{max-height:calc(100dvh - 78px);position:sticky;top:78px}.vibe-lesson{overflow:visible}.vibe-simulation{border-top:1px solid var(--vibe-rule-strong);grid-column:2;min-height:760px}.vibe-action-dock{grid-template-columns:180px minmax(320px,1fr);padding:8px 12px;position:sticky;bottom:0}.vibe-dock-hint{display:none}}@media (width<=720px){html,body{overflow-x:hidden}.vibe-course,.vibe-workspace,.vibe-lesson,.vibe-simulation,.vibe-action-dock{width:100%;max-width:100vw}.vibe-header{grid-template-columns:1fr auto;gap:8px;padding:10px 12px}.vibe-brand img{width:42px;height:42px}.vibe-brand strong{font-size:1em}.vibe-header-progress{grid-column:1/-1}.vibe-header-progress p{display:none}.vibe-progress-track{max-width:none}.vibe-progress-track button:before{width:calc(100% + 20px)}.vibe-workspace{display:block}.vibe-stage-nav{border-right:0;border-bottom:1px solid var(--vibe-rule);gap:6px;max-height:none;padding:8px 10px;display:flex;position:static;overflow-x:auto}.vibe-stage-nav button{border-bottom:3px solid #0000;border-left:0;grid-template-columns:24px 1fr;width:128px;min-width:128px;min-height:58px;padding:7px}.vibe-stage-nav button:before{display:none}.vibe-stage-nav button.is-active{border-bottom-color:#9f7100}.vibe-stage-nav button>span:last-child{font-size:.74em}.vibe-lesson-inner{padding:24px 18px 34px}.vibe-lesson h1{font-size:2.35em}.vibe-action-chip{min-width:65px;height:34px;font-size:.72em}.vibe-learning-grid,.vibe-model-paths{grid-template-columns:1fr}.vibe-model-labels{margin-inline:0;font-size:.76em}.vibe-model-paths p{white-space:normal;text-align:center;flex-wrap:wrap}.vibe-simulation{grid-column:auto;grid-template-rows:auto auto;min-height:0}.vibe-city-scene{aspect-ratio:843/1400;min-height:0}.vibe-action-dock{grid-template-columns:1fr;position:static}.vibe-preview-action{min-height:54px}.vibe-primary-action{flex-wrap:wrap;min-height:62px}.vibe-primary-action span{text-align:center;width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
