:root{--ink:#202b3c;--muted:#657185;--accent:#3558cc;--accent-soft:#edf1ff;--line:#d9dfe8;--paper:#fff;--canvas:#f4f6f9;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}body.selection{--accent:#814e78;--accent-soft:#f5eef5}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid #c6cfdd;background:linear-gradient(#fff,#f5f7fa);color:var(--ink);border-radius:5px;padding:10px 15px;box-shadow:0 1px 1px #1e30400a;transition:background .15s,border-color .15s}button:hover{border-color:var(--accent);background:var(--accent-soft)}button:active{transform:translateY(1px)}button:disabled{opacity:.42;cursor:default;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:4px}a{color:var(--accent);text-underline-offset:4px}button.primary,.dark{background:var(--accent);border-color:var(--accent);color:#fff}.small{padding:7px 11px;font-size:12px}.hide,[hidden]{display:none!important}header{height:72px;background:#fff;border-bottom:1px solid var(--line);padding:0 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}header a{text-decoration:none;color:inherit}.brand{font-size:17px;font-weight:700;display:flex;align-items:center;gap:12px;letter-spacing:.01em}.course-number{display:grid;place-items:center;border:1px solid var(--line);width:33px;height:33px;font:13px var(--mono);color:var(--accent);background:#fafbfe}.topright{display:flex;align-items:center;gap:24px;font-size:12px;color:var(--muted)}.shell{display:grid;grid-template-columns:208px minmax(0,1fr);max-width:1600px;margin:0 auto;min-height:calc(100vh - 72px)}aside{border-right:1px solid var(--line);padding:34px 20px;background:#eef1f6}aside .eyebrow{padding:0 13px;margin:0 0 22px}.eyebrow,.section-label{font-size:11px;font-weight:650;letter-spacing:.08em;color:var(--muted)}nav{display:grid;gap:7px}nav button{border:0;background:transparent;box-shadow:none;text-align:left;padding:15px 12px;display:flex;gap:12px;border-radius:4px;font-size:13px}nav button b{font:11px var(--mono);color:#7d8a9e}nav button.active{background:#fff;color:var(--accent);box-shadow:0 2px 7px #243a6110;border-left:3px solid var(--accent);padding-left:9px;font-weight:650}.side-note{border-top:1px solid #d4dce8;padding:22px 12px;margin-top:35px;font-size:12px;line-height:1.9;color:var(--muted)}.side-note strong{display:block;color:var(--ink);margin-bottom:7px}.kbd-hint{font:11px var(--mono);margin-top:16px;color:#7d8a9e}main{padding:34px 36px 28px;min-width:0;width:100%;max-width:1360px;margin:0 auto}.page-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:0 0 26px;border-bottom:1px solid #cfd7e3;margin-bottom:26px}.page-heading h1{font-size:clamp(28px,3vw,40px);line-height:1.25;font-weight:730;letter-spacing:-.04em;margin:12px 0}.page-heading p{margin:0;font-size:14px}.page-heading .pill{font-size:12px;padding:7px 0;border-top:2px solid var(--accent);color:var(--accent);white-space:nowrap}h2{font-size:25px;letter-spacing:-.035em;line-height:1.5;margin:12px 0 15px}h3{font-size:16px;line-height:1.6;margin:0 0 10px}p{font-size:14px;color:var(--muted);line-height:1.95;margin:10px 0}code{font-family:var(--mono)}.subtle{font-size:12px;color:#748195}.panel{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.pad{padding:26px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:17px 20px;background:#fbfcfe}.panel-head strong{font-size:13px}.panel-head>span,.code-follow{font-size:11px;color:#7b889d}.grid{display:grid;grid-template-columns:minmax(0,1fr) 335px;gap:20px;align-items:start}.grid>*{min-width:0}.stage{background-color:#f4f7fc;background-image:linear-gradient(#dce3ef66 1px,transparent 1px),linear-gradient(90deg,#dce3ef66 1px,transparent 1px);background-size:24px 24px;padding:20px 20px 14px;min-height:284px}.stage-top{display:flex;justify-content:space-between;gap:10px;align-items:center;color:#5a6c88;font:11px var(--mono)}.array{height:200px;position:relative;max-width:650px;margin:24px auto 0}.array:after{content:"";position:absolute;left:0;right:0;bottom:27px;border-bottom:1px solid #b9c7db}.number{--n:5;position:absolute;left:calc(var(--pos) * 100% / var(--n) + 6px);width:calc(100% / var(--n) - 12px);bottom:42px;height:102px;background:linear-gradient(#fff,#f2f5fa);border:1px solid #b9c8dc;border-radius:7px;box-shadow:0 4px 0 #c4cfdf,0 8px 12px #2f466a0d;color:#27394f;display:flex;align-items:center;justify-content:center;font:650 clamp(21px,3vw,35px) var(--mono);transition:left .42s cubic-bezier(.2,.7,.25,1),background .2s;z-index:1}.number .identity{position:absolute;top:10px;left:0;right:0;font:10px var(--mono);text-align:center;color:#607089}.number em{position:absolute;top:calc(100% + 16px);left:0;right:0;font:11px var(--mono);color:#6b7f9b;text-align:center;font-style:normal}.number.comparing{color:var(--accent);background:var(--accent-soft);border-color:var(--accent);box-shadow:0 4px 0 color-mix(in srgb,var(--accent) 45%,white),0 8px 12px #2f466a0d}.number.swapping{border-width:2px}.number.fixed{background:#e7edf8;color:#61728e;border-color:#bac7dc;box-shadow:0 4px 0 #b4c1d5}.number.fixed:after{content:'✓';position:absolute;right:7px;top:7px;color:#627c9d;font:10px var(--mono)}.number.minimum{outline:2px solid var(--accent);outline-offset:3px;background:var(--accent-soft);color:var(--accent)}.markers{position:absolute;top:-30px;left:-5px;right:-5px;text-align:center;white-space:nowrap;font:600 10px var(--mono);color:var(--accent)}.pointer-readout{text-align:center;font:11px var(--mono);color:#5d7392;margin:1px 0 10px}.legend{display:flex;gap:18px;justify-content:center;font-size:10px;color:#72829b;margin-top:8px}.legend span{display:flex;align-items:center;gap:6px}.dot{width:7px;height:7px;border-radius:2px;background:#c7d3e4}.dot.orange{background:var(--accent)}.dot.green{background:#879ebf}.narration{border-top:1px solid #d5dfed;background:#fff;padding:19px 22px;min-height:100px;font-size:14px;line-height:1.85;color:var(--ink)}.narration strong{display:block;color:var(--ink);font-size:14px}.narration p{font-size:12px;margin:5px 0 0}.controls{padding:14px 17px;border-top:1px solid var(--line);background:#f8faff;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.controls button{font-size:12px;padding:9px 12px}.controls label{display:flex;align-items:center;gap:7px;margin-left:auto;font-size:11px;color:#667b99}.controls select{font-size:11px;padding:6px;border:1px solid #c5d1e3;border-radius:4px;color:#4e6587;background:#fff}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:#fff;margin-top:14px;border-radius:6px}.stat{display:flex;align-items:baseline;justify-content:center;gap:10px;padding:16px 8px;font-size:11px;color:#70809b;border-right:1px solid var(--line)}.stat:last-child{border-right:0}.stat b{font:500 25px var(--mono);color:var(--ink)}.code-panel{box-shadow:0 4px 14px #20335006}.code-panel .panel-head{background:#233047;border-color:#304059;color:#f3f6ff}.code-panel .panel-head span{color:#a1b2cc}.code-note{padding:16px 18px;border-top:1px solid var(--line);font-size:11px;line-height:1.9;color:#60748f;background:#f6f8fc}.code.code-editor{padding:14px 0;background:#fff;font-size:11px;line-height:2.1}.code-editor{overflow-x:auto;max-width:100%;font-family:var(--mono);tab-size:4;color:#344a68}.full-code.code-editor{background:#fff;padding:18px 0;font-size:13px;border:1px solid var(--line);border-radius:6px;margin:18px 0 0;line-height:1.9}.code-editor>code{display:block;font:inherit}.code-editor .cpp-line{display:flex;min-width:max-content;min-height:2.05em;line-height:2.05;border-left:3px solid transparent;white-space:pre;padding:0}.code-editor .cpp-gutter{display:block;position:sticky;left:0;z-index:1;align-self:stretch;flex:0 0 3em;padding:0 .7em 0 .35em;border-right:1px solid #e3e8f1;background:#f6f8fc;color:#9aa7ba;text-align:right;user-select:none;-webkit-user-select:none;font:inherit;font-variant-numeric:tabular-nums}.code-editor .cpp-text{display:block;padding:0 1em;flex:1;white-space:pre;font:inherit}.code-editor .cpp-line.lit{background:var(--accent-soft);border-left-color:var(--accent)}.code-editor .cpp-line.lit .cpp-gutter{background:var(--accent-soft);color:var(--accent)}.code-editor .cpp-keyword,.code-editor .cpp-preprocessor{color:#854489}.code-editor .cpp-type{color:#315fba}.code-editor .cpp-number{color:#9c5d25}.code-editor .cpp-string{color:#a25039}.code-editor .cpp-comment{color:#8190a5;font-style:italic}.code-editor .cpp-function{color:#90682a}.code-editor .cpp-standard{color:#326f8e}.code-editor .cpp-operator{color:#6b7c94}.history{background:#fff;border:1px solid var(--line);border-radius:6px;margin-top:20px}.history summary{cursor:pointer;font-size:12px;font-weight:650;padding:17px 20px;color:#526b90}.history #rounds,.history .rounds{padding:0 20px 12px}.round-row{border-top:1px solid #e7ebf2;display:flex;justify-content:space-between;gap:16px;padding:13px 0;font-size:11px;align-items:center;color:#74849b}.round-row code{font-size:12px;color:#2c456b;white-space:pre}.round-row .subtle{font-size:10px}.setup{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.setup.panel{padding:21px 24px}.setup.panel>label{font-size:12px;font-weight:650}.setup input{padding:11px 13px;border:1px solid #bcc9dd;border-radius:4px;min-width:0;max-width:100%;flex:1 1 220px;font:14px var(--mono);color:#3b5273;background:#fff}.setup button{font-size:12px}.setup p,.setup #error{flex-basis:100%;margin:0}.input-error,#error{color:#ac4054;font-size:12px}.input-error:empty,#error:empty{display:none}.lesson-toolbar{display:flex;gap:10px;align-items:center}.lesson-toolbar small{font:10px var(--mono);color:#8292aa}.coach{border-top:1px solid #d5dfed;padding:15px 20px;background:#f7f9fd;color:var(--ink)}.coach-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.coach-bar>span,.coach-hint{font-size:11px;color:#7a8ba3}.coach-bar button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.coach-title{font-weight:650;color:var(--ink);font-size:13px;margin:15px 0 11px}.coach-options{display:flex;gap:8px;flex-wrap:wrap}.coach-options button{padding:8px 13px;font-size:12px}.coach-feedback{font-size:12px;color:var(--accent);min-height:0;margin:10px 0;line-height:1.7}.coach-feedback:empty{display:none}.coach>.small{margin-top:10px}.coach-hint{display:block;margin-top:12px}.bottom{display:flex;align-items:center;justify-content:space-between;padding-top:24px;margin-top:28px;border-top:1px solid var(--line);gap:15px;font:11px var(--mono);color:#8a99ae}.bottom button{font:12px -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}.bottom .next{background:var(--ink);color:#fff;border-color:var(--ink)}footer,main>p.subtle{font-size:10px;color:#8997ab;margin:20px 0 0}.lesson-opening{display:grid;grid-template-columns:1fr 1.02fr;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}.opening-copy{padding:29px 30px}.opening-copy h2{font-size:clamp(24px,2.2vw,32px);line-height:1.45;margin-top:16px}.opening-copy p{font-size:13px}.opening-note{border-top:1px solid var(--line);padding-top:16px;margin-top:20px;font-size:11px;color:#6a7c97;line-height:1.9}.opening-note b{display:block;color:var(--accent);margin-bottom:7px}.lesson-opening figure{margin:0;display:flex;justify-content:center;flex-direction:column;background:#f7f9fd;border-left:1px solid var(--line);padding:22px 20px}.algorithm-figure{display:block;width:100%;height:auto;overflow:visible}.art-label{font-size:12px;fill:#73829a}.lesson-opening figcaption{font-size:10px;text-align:center;color:#8090a7;line-height:1.8}.method-section,.workbook{margin-top:32px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:26px}.method-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:24px}.method-grid article{display:flex;gap:13px;align-items:start;border-right:1px solid #e3e8f0;padding-right:16px}.method-grid article:last-child{border:0;padding:0}.method-no{font:22px var(--mono);color:#a9b7cc}.method-grid small{font-size:10px;color:var(--accent)}.method-grid h3{font-size:14px;margin:7px 0}.method-grid p{font-size:12px;margin:0}.section-label{display:flex;justify-content:space-between;gap:12px;line-height:1.6}.workbook h2{font-size:23px}.workbook>p{font-size:12px}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:12px;line-height:1.8;color:#5c6e87;margin:20px 0 0;text-align:left}.table th{font-size:10px;font-weight:500;color:#8290a6;padding:12px;border-bottom:1px solid #cdd7e5;background:#f7f9fc}.table td{padding:15px 12px;border-bottom:1px solid #e5eaf1}.table tbody tr:last-child td{border:0}.table td code{font-size:14px;color:var(--ink);white-space:pre;letter-spacing:.08em}.figure-caption{font-size:10px!important;color:#8999af!important}.margin-notes{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:28px 0 0}.margin-notes article{border-top:2px solid #cbd5e5;padding-top:19px}.margin-notes h3{font-size:15px;margin:14px 0 8px}.margin-notes p{font-size:12px}.observation{margin-top:26px;border-top:1px solid #ccd7e6;display:grid;grid-template-columns:150px 1fr;gap:16px;padding:22px 0 0}.observation h3{font-size:14px;margin-top:9px}.observation ol{margin:0;padding-left:22px;font-size:12px;line-height:2;color:#5f7392}.observation>p{grid-column:2;font-size:11px;margin:0}.questions{display:grid;gap:20px}.question{padding:24px;border:1px solid var(--line);background:#fff;border-radius:7px}.question h3{margin:12px 0 16px;font-size:15px}.question button{margin:0 8px 8px 0;font-size:12px}.question button.correct{background:#edf3ff;border-color:#507cc0;color:#315687}.question button.wrong{background:#fff1f2;border-color:#d1909e;color:#ac465d}.feedback{font-size:12px;line-height:1.85;color:#5e7392;margin-top:12px}.swap-boxes{display:flex;gap:14px;margin:25px 0}.swap-box{flex:1;background:#f6f8fc;border:1px solid #cbd6e6;padding:15px;text-align:center;border-radius:5px;min-width:0}.swap-box b{display:block;font:32px var(--mono);margin-top:12px}.swap-box .subtle{font-size:10px}.swap-box.focus{border-color:var(--accent);background:var(--accent-soft)}.source-controls{margin-top:18px}.source-controls span{color:var(--accent);font-size:12px}.panel.pad>label{font-size:13px}select#base{padding:9px;border:1px solid #c9d2e0;border-radius:4px;max-width:100%;font-size:12px;color:#445b7c;background:#fff}.chapter-note{border-left:3px solid var(--accent);padding:8px 20px;margin-bottom:24px;background:var(--accent-soft)}.chapter-note p{font-size:12px}.chapter-note b{color:var(--ink)}
@media(min-width:1500px){.grid{grid-template-columns:minmax(0,1fr) 380px}.code.code-editor{font-size:12px}}
@media(max-width:1160px){.shell{grid-template-columns:180px minmax(0,1fr)}main{padding:28px}.grid{grid-template-columns:minmax(0,1fr)}.code-panel .code.code-editor{font-size:12px}.lesson-opening{grid-template-columns:1fr 1fr}.opening-copy{padding:23px}.method-grid{gap:15px}}
@media(max-width:760px){header{height:60px;padding:0 16px}.brand{font-size:14px}.course-number{width:28px;height:28px}.topright{gap:12px;font-size:10px}.topright a:nth-child(2){display:none}.shell{display:block}aside{border:0;border-bottom:1px solid var(--line);padding:0;background:#eef1f6;position:static}aside>.eyebrow,.side-note{display:none}nav{display:flex;overflow-x:auto;gap:3px;padding:0 8px}nav button{padding:15px 10px;white-space:nowrap;font-size:11px;gap:6px;border-radius:0}nav button.active{border-left:0;border-bottom:2px solid var(--accent);padding-left:10px;box-shadow:none;background:transparent}nav button b{font-size:9px}main{padding:24px 16px}.page-heading{padding-bottom:20px;margin-bottom:20px}.page-heading h1{font-size:29px}.page-heading p{font-size:12px}.page-heading .pill{display:none}.eyebrow,.section-label{font-size:10px}.lesson-opening{grid-template-columns:1fr}.opening-copy{padding:25px}.opening-copy h2{font-size:28px}.lesson-opening figure{border-left:0;border-top:1px solid var(--line);padding:20px 14px}.method-section,.workbook{padding:20px;margin-top:22px}.method-grid{grid-template-columns:1fr;gap:20px;margin-top:20px}.method-grid article{border:0;border-bottom:1px solid #e3e8f0;padding:0 0 18px}.method-grid h3{font-size:14px}.method-grid p{font-size:12px}.margin-notes{grid-template-columns:1fr;gap:25px}.workbook h2{font-size:21px}.table th,.table td{padding:12px 8px;font-size:11px}.table td code{font-size:12px;letter-spacing:0}.table td:last-child{min-width:140px}.grid{gap:16px}.pad{padding:20px}.stage{padding:20px 10px 15px}.stage-top{font-size:9px}.array{height:176px;margin-top:27px}.number{width:calc(100% / var(--n) - 8px);left:calc(var(--pos) * 100% / var(--n) + 4px);height:86px;font-size:clamp(17px,5.4vw,25px)}.number .identity{font-size:8px;top:8px}.number em{font-size:9px}.markers{font-size:9px}.pointer-readout{font-size:10px}.legend{font-size:9px;gap:12px}.narration{padding:16px;min-height:100px;font-size:13px}.narration strong{font-size:13px}.controls{padding:12px;gap:7px}.controls button{font-size:11px;padding:9px 10px}.controls label{margin-left:0}.panel-head{padding:14px}.panel-head strong{font-size:12px}.lesson-toolbar{gap:7px}.lesson-toolbar small{font-size:9px}.lesson-toolbar button{font-size:10px;padding:6px 8px}.stat{gap:7px;font-size:10px;padding:13px 7px}.stat b{font-size:23px}.coach{padding:14px}.coach-title{font-size:12px}.coach-bar>span{font-size:10px}.round-row{gap:8px;flex-wrap:wrap}.round-row .subtle{font-size:9px}.round-row code{font-size:11px}.observation{grid-template-columns:1fr;gap:10px}.observation>p{grid-column:1}.observation ol{font-size:11px}.full-code.code-editor{font-size:11px}.code.code-editor{font-size:10px}.question{padding:20px}.bottom{padding-top:20px;margin-top:25px}.bottom button{padding:9px 12px;font-size:11px}.swap-boxes{gap:8px}.swap-box{padding:12px 5px}.swap-box b{font-size:26px}.swap-box .subtle{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.inline-rule{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.tiny-demo{display:flex;align-items:center;gap:10px;padding-top:10px}.tiny-demo span{font:20px var(--mono);min-width:32px;text-align:center}.chapter-note{margin-top:26px}.panel.pad>h3{margin-top:0}

.opening-note ul{margin:0;padding-left:16px}.opening-note li{padding:2px 0;color:#60718b}.complexity-strip{margin-top:24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);background:#fff;border-radius:7px;padding:22px 25px;gap:24px}.complexity-strip>div{padding-right:18px;border-right:1px solid #e1e7f0}.complexity-strip>div:last-child{border:0;padding:0}.complexity-strip span{font-size:10px;color:#65758e}.complexity-strip strong{display:block;font:600 22px var(--mono);margin:9px 0;color:var(--accent)}.complexity-strip p{font-size:11px;margin:0}.art-label{fill:#64738a}@media(max-width:760px){.complexity-strip{grid-template-columns:1fr;padding:20px;gap:18px}.complexity-strip>div{border:0;border-bottom:1px solid #e1e7f0;padding:0 0 16px}.algorithm-figure .art-label{font-size:17px}.algorithm-figure text[font-size="13"]{font-size:18px}.algorithm-figure text[font-size="11"]{font-size:16px}.algorithm-figure text[font-size="25"]{font-size:30px}}
