:root{--paper:#f6f4ec;--surface:#fffef8;--ink:#203b34;--muted:#52655d;--line:#cbd2c4;--accent:#a63c1a;--soft:#e6eddf;--nav:16rem;--space:clamp(1.2rem,3vw,3rem);font-size:16px;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;line-height:1.85;word-break:keep-all;overflow-wrap:anywhere}a{color:inherit;text-underline-offset:.23em}a:hover{color:var(--accent)}button,input,textarea,select{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;border:1px solid var(--ink);padding:.55rem 1rem;background:var(--ink);color:var(--surface);cursor:pointer;text-decoration:none;line-height:1.5;font-weight:650;border-radius:3px}button:hover,.button:hover{background:#35564a;color:var(--surface)}button.secondary,.button.secondary{background:transparent;color:var(--ink)}button.secondary:hover,.button.secondary:hover{background:var(--soft)}button:disabled{opacity:.6;cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button.small{font-size:.85rem;min-height:40px;padding:.35rem .7rem}.skip{position:fixed;top:-10rem;left:1rem;background:var(--ink);color:var(--paper);padding:1rem;z-index:50}.skip:focus{top:1rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem var(--space);border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:10}.brand{font-weight:800;text-decoration:none;letter-spacing:-.04em}.brand span{font-family:Georgia,serif;font-style:italic;margin-right:.65rem;font-weight:400;font-size:1.4rem}.top-actions{display:flex;align-items:center;gap:.7rem;font-size:.8rem}.edition{color:var(--muted)}.shell{display:grid;grid-template-columns:var(--nav) minmax(0,1fr);max-width:1540px;margin:auto}.sidebar{padding:2rem 1.5rem;border-right:1px solid var(--line);align-self:start;position:sticky;top:4.8rem;max-height:calc(100vh - 5rem);overflow:auto;font-size:.85rem}.nav-label,.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.75rem;font-weight:750;color:var(--accent)}.sidebar nav{display:flex;flex-direction:column;gap:.25rem;margin:.7rem 0 2rem}.sidebar a{padding:.4rem .6rem;text-decoration:none;border-radius:2px}.sidebar a[aria-current=page]{background:var(--ink);color:var(--surface)}.sidebar .toc a{border-bottom:1px solid var(--line);border-radius:0}.sidebar .toc{line-height:1.5}.content{min-width:0;padding:3.5rem var(--space) 5rem;max-width:1120px;width:100%}.hero{border-bottom:1px solid var(--ink);padding:0 0 2.4rem;margin-bottom:2.5rem}.hero h1{font-size:clamp(2.1rem,4.3vw,4rem);line-height:1.22;letter-spacing:-.065em;margin:.8rem 0 1.25rem;max-width:17ch;font-weight:800}.hero .lead{font-size:1.1rem;max-width:60ch;color:var(--muted)}.meta{display:flex;flex-wrap:wrap;gap:.5rem 1.3rem;margin-top:1.5rem;font-size:.82rem;font-weight:650}.meta span{border-top:1px solid var(--line);padding-top:.45rem}.section{margin:0 0 4rem;scroll-margin-top:6rem}h2{font-size:clamp(1.55rem,2.4vw,2.1rem);line-height:1.35;letter-spacing:-.04em;margin:2.5rem 0 1.2rem}h3{font-size:1.15rem;line-height:1.5;margin:1.8rem 0 .7rem;letter-spacing:-.02em}h4{font-size:1rem;margin:1.1rem 0 .5rem}p{margin:.6rem 0 1.1rem}ul,ol{padding-left:1.4rem}li{padding-left:.2rem;margin:.35rem 0}.lede{font-size:1.2rem;line-height:1.8}.note{background:var(--soft);padding:1.2rem 1.4rem;margin:1.5rem 0}.note strong{display:block;margin-bottom:.3rem}.note.warning{background:#f6e7d7}.note p:last-child{margin-bottom:0}.muted,.hint{color:var(--muted);font-size:.9rem}.pill{display:inline-block;padding:.15rem .5rem;font-size:.75rem;background:var(--soft);font-weight:700;margin-right:.5rem}.pill.optional{background:#f6e7d7;color:#793214}.actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin:1.3rem 0}.route{counter-reset:route}.route a{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;gap:1rem;padding:1.5rem 0;border-bottom:1px solid var(--line);text-decoration:none;align-items:start}.route a:before{counter-increment:route;content:"0" counter(route);font-size:.9rem;color:var(--accent);padding-top:.3rem}.route h3{margin:0 0 .3rem;font-size:1.3rem}.route p{margin:0;color:var(--muted);font-size:.95rem}.route .arrow{font-size:1.5rem}.table-wrap{overflow-x:auto;border-top:2px solid var(--ink);margin:1.2rem 0}table{width:100%;border-collapse:collapse;text-align:left;font-size:.9rem}th,td{padding:.8rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.85rem;background:var(--soft);font-weight:750}table caption{text-align:left;font-weight:700;padding:.4rem 0 .8rem}code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:.88em;background:#e7e9df;padding:.1em .25em;border-radius:2px;word-break:break-word}pre{padding:1.2rem;background:#e7e9df;overflow:auto;font-size:.88rem;line-height:1.65;white-space:pre-wrap;word-break:normal;tab-size:2}pre code{padding:0;background:none;font-size:inherit}kbd{font:inherit;font-size:.8em;border:1px solid var(--line);padding:.1rem .4rem;border-radius:3px;background:var(--surface)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.flow{display:flex;align-items:stretch;gap:.6rem;margin:1.5rem 0}.flow>div{flex:1;border-top:3px solid var(--ink);padding:1rem .5rem}.flow b{display:block;font-size:1.1rem}.flow small{display:block;color:var(--muted)}.flow .arrow{flex:0;align-self:center;border:0;font-size:1.2rem}.chapter-head{border-top:1px solid var(--ink);padding-top:1.2rem;margin-top:3rem}.chapter-head .number{font-family:Georgia,serif;font-size:3.5rem;line-height:1;color:var(--accent)}.chapter-head h2{margin:.6rem 0}.goals{font-size:.93rem;background:var(--surface);padding:1rem 1.3rem;border:1px solid var(--line)}.goals ul{margin:.3rem 0}.example{margin:1.7rem 0 2rem;border-top:1px solid var(--line);padding-top:1rem}.example h4{margin-top:0}.editor{display:block;width:100%;min-height:180px;padding:1rem;font-family:"SFMono-Regular",Consolas,monospace;font-size:.88rem;line-height:1.65;border:1px solid #879c8d;background:var(--surface);color:var(--ink);resize:vertical;tab-size:2;white-space:pre;overflow:auto;word-break:normal}.example .actions{margin:.6rem 0}.output{min-height:3rem;background:var(--ink);color:#f2f2de;padding:.8rem 1rem;white-space:pre-wrap;font-family:Consolas,monospace;font-size:.9rem;line-height:1.7;overflow-wrap:anywhere}.output.error{background:#782e1c}.expected{font-size:.85rem;color:var(--muted);white-space:pre-wrap}.example summary{cursor:pointer;font-size:.85rem}.question{border:0;border-top:1px solid var(--line);padding:1.2rem 0 1.8rem;margin:0;min-width:0}.question legend{float:left;width:100%;padding:1.2rem 0 .6rem;font-weight:750;line-height:1.6}.question>div,.question>pre,.question>p{clear:both}.qnum{color:var(--accent);font-size:.82rem;margin-right:.6rem;white-space:nowrap}.options{display:flex;flex-direction:column;gap:.4rem}.option{display:flex;align-items:flex-start;gap:.65rem;padding:.65rem .8rem;background:var(--surface);border:1px solid var(--line);cursor:pointer;line-height:1.6}.option:has(input:checked){background:var(--soft);border-color:var(--ink)}input[type=radio],input[type=checkbox]{width:1.1rem;height:1.1rem;flex-shrink:0;accent-color:var(--ink);margin-top:.2rem}input[type=text],input[type=number],select,textarea.answer{display:block;width:100%;padding:.65rem .8rem;background:var(--surface);border:1px solid #879c8d;color:var(--ink);border-radius:2px}textarea.answer{min-height:7rem;line-height:1.8;resize:vertical}label.block{display:block;font-weight:700;margin:1rem 0 .35rem}.scale{display:flex;flex-wrap:wrap;gap:.4rem}.scale .option{font-size:.85rem;flex:1;min-width:110px}.survey-progress{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;font-size:.85rem;border:1px solid var(--line);padding:.8rem 1rem;background:var(--surface)}progress{accent-color:var(--ink);max-width:100%;height:.7rem;flex:1}#form-error,.error-text{color:#852d16;font-weight:700}.status{font-size:.85rem;min-height:1.6rem;color:var(--muted)}.results{padding:1.4rem;background:var(--surface);border:1px solid var(--ink);margin:1.5rem 0}.metrics{display:flex;gap:1.5rem;flex-wrap:wrap;margin:1rem 0}.metrics span{font-size:1.8rem;font-weight:750;line-height:1.2}.metrics small{display:block;font-size:.8rem;line-height:1.7;font-weight:400}.grade-row{padding:1.2rem 0;border-top:1px solid var(--line)}.grade-controls{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}.grade-controls select{width:auto;min-width:10rem}.response-text{white-space:pre-wrap;background:var(--paper);padding:.8rem 1rem}.bar-row{display:grid;grid-template-columns:5rem minmax(0,1fr) 5rem;gap:.8rem;font-size:.85rem;align-items:center;margin:.5rem 0}.bar-track{background:#dde3d5;height:12px}.bar-fill{height:100%;background:var(--ink)}.worksheet{border-top:2px solid var(--ink);margin:1.8rem 0;padding:1rem 0 2rem}.worksheet h3{margin:.5rem 0}.worksheet textarea{min-height:170px}.write-line{display:block;border-bottom:1px dotted #839384;min-height:2.1rem}.print-answer{display:none;white-space:pre-wrap;min-height:8rem}.print-only{display:none}.page-footer{border-top:1px solid var(--line);padding-top:1.3rem;font-size:.78rem;color:var(--muted)}.student-nav a[href*="assessment"],.student-nav a[href*="instructor"]{display:none}.legend-inline{font-size:.85rem;color:var(--muted)}.inline-demo{border:1px solid var(--line);padding:1.5rem;background:var(--surface)}.inline-demo input{max-width:26rem}.inline-demo output{display:block;min-height:2rem;margin-top:1rem;font-weight:700}.toc-mobile{display:none}details{margin:1rem 0}summary{cursor:pointer;font-weight:700}details>div{padding-top:.6rem}.empty{padding:2rem;border:1px dashed #879c8d;color:var(--muted)}.chapter-link{display:inline-block;font-size:.85rem;margin-right:1rem}.checklist li{list-style:"□  ";padding-left:.3rem}.file-input{width:100%;padding:.7rem 0}.module-table td:first-child{white-space:nowrap}.home-callout{font-family:Georgia,"Apple SD Gothic Neo",serif;font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.6;letter-spacing:-.03em;padding:1.3rem 0}.home-callout em{font-style:normal;color:var(--accent)}[hidden]{display:none!important}
@media(min-width:1200px){.content{padding-left:4rem;padding-right:4rem}.hero h1{font-size:3.8rem}}
@media(max-width:900px){:root{--nav:12rem}.sidebar{padding:1.5rem .75rem}.content{padding-top:2rem}.topbar{padding:.7rem 1.2rem}.edition{display:none}.two-col{grid-template-columns:1fr;gap:.6rem}.hero h1{max-width:20ch}}
@media(max-width:640px){.shell{display:block}.sidebar{position:static;max-height:none;border-right:0;border-bottom:1px solid var(--line);padding:.7rem 1rem}.sidebar>.nav-label,.sidebar>.toc,.sidebar>.hint{display:none}.sidebar nav{flex-direction:row;flex-wrap:wrap;margin:0;gap:.15rem;font-size:.76rem}.sidebar a{padding:.3rem .5rem}.content{padding:2rem 1.1rem 3rem}.topbar{position:static}.top-actions .small{font-size:.75rem}.brand{font-size:.85rem}.brand span{font-size:1.2rem;margin-right:.35rem}.hero{padding-bottom:1.6rem;margin-bottom:1.8rem}.hero h1{font-size:2.35rem}.hero .lead{font-size:1rem}.section{margin-bottom:2.5rem}.flow{display:block}.flow .arrow{padding:.2rem;transform:rotate(90deg);text-align:center}.flow>div{padding:.7rem}.scale .option{min-width:calc(50% - .4rem)}th,td{padding:.65rem .45rem;font-size:.82rem}.route a{grid-template-columns:2rem minmax(0,1fr) 1rem;gap:.6rem}.route h3{font-size:1.1rem}.question legend{font-size:.95rem}.top-actions{gap:.4rem}.toc-mobile{display:block;font-size:.85rem}.metrics{gap:1rem}.bar-row{grid-template-columns:4rem minmax(0,1fr) 4rem}.actions{gap:.5rem}button,.button{font-size:.9rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
.output{display:block}.grade-row .print-answer{min-height:0}.worksheet table textarea.answer{min-height:6rem}.worksheet table .print-answer{min-height:4rem}
@page{size:A4;margin:17mm 15mm}
@media print{html{font-size:10pt;scroll-padding:0}body{background:#fff;color:#182b24;line-height:1.65;word-break:normal}.topbar,.sidebar,.no-print,.actions,.survey-progress,.toc-mobile{display:none!important}.shell{display:block;max-width:none}.content{padding:0;max-width:none;width:100%}.hero{margin-bottom:1.2rem;padding-bottom:1rem}.hero h1{font-size:28pt;max-width:none}.hero .lead{font-size:11pt}.section{margin-bottom:1.5rem}.chapter-head{break-before:page}.chapter-head h2{font-size:19pt}.chapter-head .number{font-size:25pt}h2,h3,h4,legend{break-after:avoid}p,li{orphans:3;widows:3}table{font-size:8.5pt}th,td{padding:.4rem}thead{display:table-header-group}tr{break-inside:avoid}.table-wrap{overflow:visible}.note,.goals{background:#f0f2eb!important;border:1px solid #a9b4a5;padding:.7rem 1rem}.example{break-inside:avoid}.editor{display:none}.example .print-code{display:block!important}.output{background:#edf0e7!important;color:#182b24;border:1px solid #b8c2b2}.expected{color:#32473c}.question{padding:.5rem 0 1rem;break-inside:avoid}.question legend{float:none;padding:.5rem 0;font-size:10pt}.option{background:none;border:0;padding:.2rem .1rem;font-size:9pt;min-height:0}.scale .option{min-width:0;padding:.2rem}.question textarea,.question input[type=text],textarea.answer{display:none}.print-answer{display:block;border:1px solid #b6c1b0;padding:.5rem;overflow-wrap:anywhere}.print-only{display:block}.note,.goals,.print-answer{-webkit-print-color-adjust:exact;print-color-adjust:exact}.worksheet{break-inside:auto}.worksheet h3{break-after:avoid}.worksheet textarea{display:none}.worksheet .print-answer{min-height:10rem}.flow>div{padding:.4rem}.meta{font-size:8pt}pre{font-size:8.3pt;padding:.6rem;white-space:pre-wrap;overflow:visible}a{text-decoration:none;color:inherit}.route a{padding:.8rem 0}.page-footer{font-size:7.5pt}.two-col{grid-template-columns:1fr 1fr;gap:1rem}.inline-demo{display:none}.results{break-inside:auto}.grade-row{break-inside:avoid}.grade-controls{display:none}.file-input{display:none}details{display:block}.details-content{display:block}.empty{padding:1rem}.status{display:none}.chapter-link{display:none}}
@media print{
 .skip,input[type=text],input[type=number],input[type=file],select{display:none!important}
 h3{margin:1rem 0 .45rem}p{margin:.4rem 0 .8rem}.note{margin:1rem 0}
 .chapter-head{margin-top:0;padding-top:.7rem;break-inside:avoid;break-after:avoid}
 body[data-page="03-instructor.html"] .chapter-head{break-before:auto;margin-top:1.5rem}
 .example{margin:1rem 0;padding-top:.6rem}.example .output{display:none}
 .worksheet{break-inside:avoid;margin:1rem 0;padding:.7rem 0 1rem}
 .worksheet .print-answer{min-height:8rem;break-inside:avoid}
 .print-answer{break-inside:avoid}.grade-row .print-answer{min-height:0}
 #work-8 .table-wrap .print-answer{min-height:4rem}
 .goals,.note,#handoff{break-inside:avoid}
}
