:root{--paper:#f7f6f0;--white:#fffefa;--ink:#183b32;--muted:#60706a;--green:#235e4b;--line:#d7ded3;--soft:#edf1e7;--orange:#a3472c}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:16px;line-height:1.7}a{color:var(--green)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b17432}button{cursor:pointer;border:1px solid var(--line);background:var(--white);color:var(--ink);border-radius:7px;padding:10px 16px;min-height:44px}button:hover{background:var(--soft)}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover{background:#194c3b}.topbar{max-width:1280px;margin:auto;padding:20px 40px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);font-size:14px}.topbar a{text-decoration:none}main{max-width:1200px;margin:auto;padding:30px 40px 55px}.intro{display:grid;grid-template-columns:1.25fr 1fr;column-gap:50px;align-items:end;padding:24px 0 32px}.intro .eyebrow{grid-column:1/-1}.intro h1{font-size:52px;line-height:1.15;letter-spacing:-1px;margin:5px 0}.intro>p:last-child{font-size:18px;max-width:420px;color:var(--muted);margin-bottom:4px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:2px;color:var(--muted)}#lesson-nav{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}#lesson-nav a{padding:18px 12px;text-decoration:none;font-weight:600;display:flex;gap:12px;align-items:center;border-bottom:3px solid transparent}#lesson-nav a span{font-size:22px;font-weight:400;color:var(--muted)}#lesson-nav a.active{border-color:var(--green);background:var(--soft)}.lesson-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:32px 0 20px}.lesson-heading h2{font-size:30px;margin:0}.lesson-heading p{margin:6px 0}.text-link{white-space:nowrap;font-size:14px}.workspace{display:grid;grid-template-columns:0.9fr 1.1fr;gap:24px;align-items:stretch}form,.observation{padding:26px;border:1px solid var(--line);border-radius:14px;background:var(--white);min-width:0}.section-number{font-size:26px;font-weight:300;display:flex;align-items:center;gap:12px;margin-bottom:22px}.section-number span{font-size:17px;font-weight:600}.fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field label,label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}.field.wide{grid-column:1/-1}input,select,textarea{width:100%;min-width:0;border:1px solid #bac9be;border-radius:6px;background:white;color:var(--ink);padding:11px 12px;min-height:46px}input[type=number]{font-variant-numeric:tabular-nums}.presets{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0}.presets button{font-size:13px;padding:7px 11px;min-height:38px;background:var(--soft)}.prediction-label{margin-top:22px}.hint{color:var(--muted);font-size:13px}.actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:17px}.error{color:#a23120;font-size:14px}.observation{background:#173d32;color:#f4f5eb;border-color:#173d32}.observation .section-number{color:#b8d2bb}.empty{font-size:24px;line-height:1.7;max-width:330px;padding:30px 0 45px;color:#d1ded0}.result-title{font-size:20px;font-weight:600}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.metric{border-top:1px solid #607669;padding-top:12px;min-width:0}.metric span{display:block;font-size:12px;color:#bed0bc}.metric strong{display:block;font-size:23px;line-height:1.4;overflow-wrap:anywhere;margin-top:6px;font-weight:500}.evidence-table{width:100%;border-collapse:collapse;font-size:13px;margin:22px 0}.evidence-table th{text-align:left;color:#c6d8bf;font-weight:500}.evidence-table td,.evidence-table th{padding:9px 6px;border-bottom:1px solid #446152;vertical-align:top;overflow-wrap:anywhere}.evidence-table td:first-child{max-width:155px}.feedback{font-size:14px;color:#e4ebdf;line-height:1.85}.code-details{margin-top:24px;border-top:1px solid #446152;padding-top:15px}.code-details summary{cursor:pointer;font-size:14px}.code-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.7 Menlo,Consolas,monospace;padding:12px 0}.model-note{font-size:12px;color:#b6c9b2;margin:22px 0 0}.bus-row{display:flex;gap:7px;flex-wrap:wrap;padding:12px 0}.bus{background:#315c47;border:1px solid #86a57d;border-radius:5px;padding:8px 11px;font-size:12px}.bus.empty-bus{border-style:dashed;background:transparent;color:#ffcf98}.reflection{display:grid;grid-template-columns:.9fr 1.1fr;gap:50px;padding:36px 0;border-bottom:1px solid var(--line)}.reflection h2{font-size:25px;margin:6px 0}.reflection p{color:var(--muted);font-size:15px}.reflection textarea{resize:vertical;margin-bottom:10px}.history-section{padding-top:28px}.history-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.history-heading h2{font-size:22px}.record{padding:17px 0;border-top:1px solid var(--line)}.record h3{font-size:15px;margin:0 0 5px}.record p{font-size:14px;margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere}.record small{color:var(--muted)}footer{text-align:center;font-size:12px;padding:24px;background:var(--soft);color:var(--muted)}.skip{position:absolute;top:-80px;left:15px;padding:10px;background:white;z-index:10}.skip:focus{top:10px}
@media(max-width:850px){main{padding:20px}.topbar{padding:16px 20px}.intro h1{font-size:40px}.intro{gap:22px}.workspace{grid-template-columns:1fr}.reflection{gap:24px}.topbar span{max-width:50%;text-align:right}#lesson-nav a{font-size:13px;gap:7px;padding:12px 7px}#lesson-nav a span{font-size:18px}.lesson-heading{align-items:start}.lesson-heading h2{font-size:25px}}
@media(max-width:540px){.intro{display:block;padding-top:5px}.intro h1{font-size:37px}.intro>p:last-child{font-size:16px;margin-top:18px}#lesson-nav{grid-template-columns:1fr 1fr}#lesson-nav a{font-size:14px}.lesson-heading{display:block}.text-link{display:inline-block;margin-top:10px}.reflection{grid-template-columns:1fr;gap:14px}form,.observation{padding:20px}.fields-grid{gap:12px}.metrics{gap:8px}.metric strong{font-size:20px}.history-heading{align-items:start}.history-heading button{font-size:12px}.topbar{font-size:12px}.topbar span{max-width:55%}.evidence-table{font-size:12px}}
@media print{.topbar,.intro,#lesson-nav,#experiment,.code-details,.model-note,button,footer,.text-link{display:none!important}main{padding:0}.workspace,.reflection{display:block}.observation{background:white;color:black;border:1px solid #aaa}.observation *{color:black!important}.history-section{break-before:page}.record{break-inside:avoid}textarea{border:none}.evidence-table td,.evidence-table th{border-color:#aaa}}
.model-chart{margin:20px 0}.model-chart svg{display:block;width:100%;height:auto;overflow:visible}.model-chart text{fill:#c6d8bf;font:11px sans-serif}.model-chart figcaption{font-size:12px;line-height:1.8;color:#c6d8bf}.hanoi-game{border-top:1px solid var(--line);margin-top:30px;padding:24px 0}.hanoi-game[hidden]{display:none!important}.hanoi-game h2{font-size:26px}.game-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0}.game-controls select{width:100px}.game-controls label{margin:0}.game-pegs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.peg{display:flex;flex-direction:column;align-items:center;padding:12px 6px;border:2px solid var(--line);min-width:0}.peg.selected{border-color:var(--green);background:#e4eedf}.peg-title{font-size:15px}.peg-stack{display:flex;flex-direction:column;justify-content:end;align-items:center;min-height:170px;width:100%;border-bottom:5px solid #657563;background:linear-gradient(90deg,transparent 49%,#b7c4af 49%,#b7c4af 51%,transparent 51%)}.disk{border-radius:6px;background:#34735a;color:white;text-align:center;font-size:14px;border:1px solid #e6eddc;line-height:32px;max-width:96%}.disk-2{background:#648544}.disk-3{background:#92602f}.disk-4{background:#536b8d}#game-feedback{color:#873920}#game-moves{columns:3;font-size:14px;max-height:360px;overflow:auto}button:disabled{opacity:.5;cursor:default}@media(max-width:540px){.game-pegs{gap:5px}.peg-title{font-size:12px}.disk{font-size:11px}.hanoi-game h2{font-size:22px}.game-controls button{font-size:13px}#game-moves{columns:2}.model-chart text{font-size:11px}}

.integer-metrics{grid-template-columns:1fr}.integer-metrics .metric:last-child{grid-column:1/-1}.integer-metrics strong{font-variant-numeric:tabular-nums}@media(max-width:540px){.integer-metrics{grid-template-columns:1fr}.integer-metrics strong{font-size:21px}.integer-metrics .metric:last-child{grid-column:auto}}

.table-scroll{max-width:100%;overflow-x:auto;margin:22px 0}.table-scroll .evidence-table{margin:0}.numeric-table{min-width:420px}.numeric-table td:nth-child(2){white-space:nowrap}.numeric-table td:nth-child(3){min-width:130px}.table-hint{font-size:12px;color:#bed0bc;margin:16px 0 0}@media(max-width:540px){.metrics{grid-template-columns:1fr}.metric strong{font-size:23px}.integer-metrics strong{font-size:21px}.numeric-table td:nth-child(3){white-space:nowrap}}
