:root{--paper:#f5f3ed;--surface:#fff;--ink:#252c29;--muted:#68716b;--line:#d9ded7;--green:#285b49;--green-soft:#e9f2e9;--focus:#a25729;--radius:12px;--mono:Consolas,ui-monospace,monospace}
*{box-sizing:border-box}html{scroll-padding-top:150px;background:var(--paper)}body{margin:0;font:18px/1.65 'Pretendard Variable',Pretendard,'Malgun Gothic',sans-serif;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}button,input,select{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;color:inherit}a{color:var(--green);text-underline-offset:4px}button{min-height:44px;border:1px solid var(--line);border-radius:8px;padding:8px 16px;background:var(--surface);font-size:16px;font-weight:600}input{width:100%;min-height:48px;border:1px solid var(--line);border-radius:8px;background:white;padding:10px 14px;font-size:16px}button:disabled{opacity:.42;cursor:default}:focus-visible{outline:3px solid var(--focus);outline-offset:4px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.35;letter-spacing:-.035em}h1{font-size:clamp(36px,4.3vw,58px);font-weight:750}h2{font-size:26px}h3{font-size:22px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip{position:fixed;left:16px;top:-100px;z-index:100;background:white;padding:12px}.skip:focus{top:12px}.site-header{height:76px;max-width:1440px;padding:0 48px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:19px;font-weight:750;text-decoration:none;white-space:nowrap}.brand-mark{font-family:Georgia,serif;letter-spacing:3px;color:var(--green);font-size:30px;transform:skewY(-9deg)}.header-actions{display:flex;align-items:center;gap:12px}.quiet{background:transparent;border-color:transparent}.primary{background:var(--green);color:white;border-color:var(--green)}.button-link{display:inline-flex;min-height:44px;padding:10px 22px;border-radius:8px;text-decoration:none;font-weight:650}.connection{font-size:13px;color:var(--muted)}.connection.ok{color:var(--green)}.library{max-width:1240px;margin:auto;padding:64px 48px 28px}.library-intro{display:flex;align-items:end;justify-content:space-between;gap:40px;padding-bottom:56px}.eyebrow{font-size:14px;letter-spacing:.09em;color:var(--green);font-weight:700;margin-bottom:16px}.library-description{color:var(--muted);padding-bottom:8px;line-height:1.85}.shelf-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:30px}.shelf-heading h2{font-size:20px}.shelf-heading h2 span{font-size:15px;color:var(--muted);font-weight:500;margin-left:6px}.search-label{width:260px}.search-label input{background:transparent;border-radius:0;border:0;border-bottom:1px solid #a9b1a9}.books{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px 48px;padding:0 20px 26px;border-bottom:12px solid #ddd8cc;box-shadow:0 9px 10px -10px #66563c;min-height:340px}.book-item{min-width:0;display:flex;flex-direction:column;align-items:flex-start}.book{width:100%;max-width:280px;aspect-ratio:3/4;position:relative;border:0;border-radius:3px 10px 10px 3px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;text-align:left;background:#244b3b;color:#f5f3df;padding:30px 26px 25px 34px;box-shadow:5px 5px 0 #e4e1d5,7px 7px 0 #c4c8bc,12px 16px 22px -16px #303c32;transition:transform .2s}.book::before{content:'';position:absolute;left:10px;top:0;height:100%;width:1px;background:#ffffff24}.book::after{content:'';position:absolute;left:17px;top:0;height:100%;width:1px;background:#00000020}.book.blue{background:#304c60}.book.clay{background:#7a4b3a}.book-number{font:13px var(--mono);letter-spacing:.1em;color:#ffffffb3}.book-title{font-size:clamp(25px,2.4vw,34px);font-weight:700;line-height:1.3;letter-spacing:-.04em;display:block;margin:24px 0 14px;max-width:200px}.book-subtitle{font-size:15px;color:#e0e5d6;font-weight:400}.book-bottom{display:flex;align-items:center;justify-content:space-between;width:100%;padding-top:22px;border-top:1px solid #ffffff40;font-size:13px;font-weight:500;gap:8px}.book-arrow{font-size:24px}.book-meta{padding:24px 0 0;max-width:290px}.access{display:inline-block;color:var(--green);font-size:13px;font-weight:700;margin-bottom:6px}.access.private{color:#7b4e2c}.book-meta p{font-size:15px;color:var(--muted);line-height:1.6}.shelf-space{border:1px dashed #c9cbbf;aspect-ratio:3/4;max-width:280px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#7c8276;gap:14px;padding:24px;text-align:center;margin-bottom:75px}.shelf-space .space-lines{font:48px Georgia,serif;letter-spacing:8px;color:#bbc0b5}.shelf-space p{font-size:15px;line-height:1.8}.shelf-caption{color:var(--muted);font-size:14px;padding:20px 0 56px}.library-footer{display:flex;justify-content:space-between;gap:24px;font-size:14px;color:var(--muted);border-top:1px solid var(--line);padding-top:20px}.empty-result{grid-column:1/-1;align-self:center;color:var(--muted);padding:30px}.reader-toolbar{position:sticky;top:0;z-index:15;background:var(--paper);border-bottom:1px solid var(--line);padding:12px 32px;display:flex;align-items:center;gap:16px;min-height:76px}.back-link{font-size:16px;font-weight:650;text-decoration:none;white-space:nowrap;padding:8px}.reader-heading{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.5}.reader-heading strong{font-size:18px}.reader-heading span{font-size:13px;color:var(--muted)}#outlineToggle{display:none}.reader-layout{max-width:1480px;margin:auto;display:grid;grid-template-columns:210px minmax(0,1fr);gap:32px;padding:32px 40px 110px}.outline{position:sticky;top:100px;align-self:start;max-height:calc(100dvh - 190px);overflow:auto;font-size:15px;padding-bottom:20px}.outline h2{font-size:13px;letter-spacing:.07em;color:var(--muted);margin:0 0 18px 12px}.outline a{display:block;text-decoration:none;padding:10px 12px;border-radius:6px;color:var(--muted);line-height:1.5;margin-bottom:4px}.outline a[aria-current=true]{background:#e3e8df;color:var(--green);font-weight:700}.reading-column{min-width:0;max-width:1000px}.course-intro{padding:8px 0 40px}.course-intro h1{font-size:36px;margin-bottom:12px}.course-intro p{color:var(--muted);max-width:680px}.course-intro .course-details{font-size:14px;margin-top:18px;display:flex;gap:20px;flex-wrap:wrap}.stream{display:flex;flex-direction:column;gap:36px}.reading-block{scroll-margin-top:100px}.page-heading{display:flex;align-items:baseline;gap:14px;margin-bottom:10px}.page-heading span{font:13px var(--mono);color:var(--muted);white-space:nowrap}.page-heading h2{font-size:17px;font-weight:550;line-height:1.5;color:var(--muted)}.slide-surface{position:relative;background:white;border:1px solid var(--line);border-radius:8px;overflow:hidden}.slide-surface img{display:block;width:100%;height:auto}.slide-hotspot{position:absolute;border:2px solid transparent;border-radius:3px;min-width:16px;min-height:16px}.slide-hotspot:focus-visible{outline-offset:0;background:#fff6}.slide-links{display:flex;flex-wrap:wrap;gap:8px 18px;padding:12px 2px 0}.slide-links a{font-size:15px;min-height:32px;display:inline-flex;align-items:center;overflow-wrap:anywhere}.practice-block{background:var(--green-soft);border:1px solid #b9ceba;border-radius:var(--radius);padding:32px;box-shadow:0 3px 0 #d7e4d6}.practice-heading{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid #c7d8c7;padding-bottom:20px;margin-bottom:24px;gap:16px}.practice-heading .eyebrow{margin-bottom:8px}.practice-heading h2{font-size:28px}.practice-heading .practice-note{font-size:14px;color:var(--green);max-width:160px}.activity-body h1,.activity-body h2{font-size:25px;margin:16px 0 12px}.activity-body h3{font-size:19px;margin:20px 0 10px}.activity-body p{margin:10px 0}.activity-body .lead{font-size:18px;color:var(--muted)}.activity-body .cards,.activity-body .split,.activity-body .cases,.activity-body .four,.activity-body .ladder{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0}.activity-body .card,.activity-body .ladder>div,.activity-body .four>div{padding:18px;background:#ffffff96;border:1px solid #cad6c7;border-radius:8px;min-width:0}.activity-body .card h3{margin:0 0 8px}.activity-body .dark{background:#294436;color:white}.activity-body .sub{color:#d0dfd0}.activity-body .big{font-size:26px;font-weight:700}.activity-body .tag,.activity-body .badge{font-size:13px;font-weight:700;color:var(--green)}.activity-body .dark .tag{color:#bed9b5}.activity-body .steps{padding-left:24px}.activity-body .steps li{padding:7px 0 7px 6px}.activity-body .callout{padding:14px 18px;background:#f8fbf4;border:1px solid #b9cbb4;border-radius:8px;margin:14px 0;font-size:16px}.activity-body .warn{background:#fff5db;border-color:#e0cf9f}.activity-body .danger{background:#fff0eb;border-color:#d7b3a8}.activity-body .case{padding:16px;background:white;border:1px solid #cad6c7;border-radius:8px;display:flex;flex-direction:column;gap:6px;text-decoration:none}.case-no,.case-a,.case-go{font-size:14px}.case-t{font-weight:650}.activity-body .ladder>div,.activity-body .four>div{display:flex;flex-direction:column;gap:6px}.activity-body .ladder span,.activity-body .four span{font-size:15px}.activity-body .flow{display:flex;flex-wrap:wrap;gap:8px}.activity-body .big-link{display:inline-block;padding:12px 0;font-weight:700}.resources{border-top:1px solid #c7d8c7;margin-top:28px;padding-top:22px}.resources h3{font-size:18px;margin:0 0 12px}.resource-links{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}.resource-links a{display:inline-flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border:1px solid #cad6c7;border-radius:6px;text-decoration:none;font-size:16px;min-height:44px}.clip{margin:14px 0;background:#fff;border:1px solid #cad6c7;border-radius:8px;overflow:hidden}.clip-header{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);font-size:15px;font-weight:650}.clip pre,pre.code{margin:0;padding:18px;font:15px/1.65 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;max-height:320px;overflow:auto}code,kbd{font-family:var(--mono);font-size:.88em;background:#f5f6f0;border:1px solid #d7ded1;padding:1px 5px;border-radius:4px}.course-end{text-align:center;margin:64px 0 8px;padding:40px 20px;border-top:1px solid var(--line)}.course-end p{font-size:22px;margin-bottom:20px}.reading-nav{position:fixed;bottom:0;left:0;right:0;background:#f9faf6;border-top:1px solid var(--line);z-index:20;min-height:66px;padding:10px 32px max(10px,env(safe-area-inset-bottom));display:flex;justify-content:center;align-items:center;gap:24px}.reading-nav #position{font-size:14px;min-width:155px;text-align:center;color:var(--muted)}.teacher-controls,.follow-bar{background:#e1eadf;padding:12px 40px;display:flex;align-items:center;gap:16px;border-bottom:1px solid #c7d5c4}.teacher-controls p,.follow-bar span{font-size:14px;color:#425644}.teacher-label{font-size:14px;font-weight:700}.follow-bar{background:#f1f5eb;justify-content:center}.preview-panel{position:fixed;right:24px;top:110px;bottom:90px;width:min(470px,calc(100vw - 32px));z-index:25;background:white;border:1px solid #bac6b5;border-radius:12px;box-shadow:0 14px 50px #182e2833;display:flex;flex-direction:column;overflow:hidden}.preview-header{padding:18px;display:flex;justify-content:space-between;gap:12px;background:#f3f6ee;border-bottom:1px solid var(--line)}.preview-header strong{font-size:18px}.preview-header p{font-size:13px;color:var(--muted);margin-top:6px}.preview-panel iframe{border:0;width:100%;flex:1;min-height:0}.toast{position:fixed;left:50%;bottom:85px;transform:translate(-50%,10px);background:var(--ink);color:white;z-index:80;padding:12px 20px;border-radius:8px;opacity:0;pointer-events:none;max-width:calc(100% - 32px);font-size:15px;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:16px;padding:32px;width:min(440px,calc(100% - 32px));color:var(--ink);box-shadow:0 20px 80px #182e2833}dialog::backdrop{background:#1d2a2380}dialog h2{margin-bottom:12px}dialog p{font-size:16px;color:var(--muted)}dialog label{display:block;margin:24px 0 8px;font-size:15px;font-weight:650}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}.error{color:#a13c27;font-size:15px;margin-top:12px;min-height:24px}.preview-mode .site-header,.preview-mode #previewToggle,.preview-mode #teacherControls,.preview-mode .back-link,.preview-mode .course-end,.preview-mode #toTop{display:none!important}.preview-mode .reader-toolbar{padding:10px 16px;min-height:64px}.preview-mode .reader-toolbar::before{content:'예상 화면';font-size:12px;color:var(--green)}.preview-mode .reader-layout{padding:20px 16px 85px;display:block}.preview-mode .outline{display:none}.preview-mode .course-intro{display:none}.preview-mode .reading-nav{padding:8px;gap:8px}.preview-mode .reader-heading strong{font-size:14px}.preview-mode .practice-block{padding:18px}.preview-mode .practice-heading h2{font-size:22px}.preview-mode #outlineToggle{display:none}.preview-mode .reader-heading span{font-size:12px}
@media(hover:hover){button:hover{border-color:#829b86}.book:hover{transform:translateY(-6px)}.quiet:hover{background:#e7ece3}.slide-hotspot:hover{border-color:var(--green);background:#e8f1d644}.outline a:hover{background:#e8ece4}}
@media(min-width:1600px){.reading-column{max-width:1100px}}
@media(max-width:1024px){.site-header{padding:0 24px}.library{padding:48px 32px 24px}.books{gap:32px}.library-intro{gap:24px}.library-description{font-size:16px}.reader-layout{grid-template-columns:160px minmax(0,1fr);gap:20px;padding:24px 24px 100px}.outline{font-size:14px}.reader-toolbar{padding:12px 20px;gap:8px}.reader-toolbar button{font-size:14px;padding:8px 12px}.practice-block{padding:24px}.activity-body .cards,.activity-body .split{grid-template-columns:1fr}.practice-heading .practice-note{display:none}}
@media(max-width:640px){body{font-size:17px}.site-header{height:64px;padding:0 16px}.brand{font-size:16px;gap:8px}.brand-mark{font-size:24px}.header-actions{gap:0}.header-actions button{font-size:13px;padding:8px}.connection{display:none}.library{padding:36px 20px 24px}.library-intro{display:block;padding-bottom:32px}.library-intro h1{font-size:38px}.library-description{margin-top:20px}.eyebrow{font-size:12px;margin-bottom:12px}.shelf-heading{align-items:start;gap:12px;flex-direction:column}.search-label{width:100%}.books{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 20px;padding:0 2px 24px;min-height:270px}.book{padding:20px 16px 18px 24px;min-height:222px;aspect-ratio:3/4}.book-title{font-size:23px;margin:14px 0 10px}.book-subtitle{font-size:12px}.book-number{font-size:10px}.book-bottom{font-size:10px;padding-top:12px;gap:6px}.book-arrow{font-size:20px}.book-meta{padding-top:20px}.book-meta p{font-size:13px}.access{font-size:12px}.shelf-space{padding:12px;min-height:222px;margin-bottom:75px}.shelf-space p{font-size:12px}.shelf-space .space-lines{font-size:32px}.shelf-caption{font-size:12px;padding-bottom:32px}.library-footer{display:block;font-size:13px}.library-footer a{display:block;margin-top:12px}.reader-toolbar{flex-wrap:wrap;padding:8px 12px;gap:4px}.reader-heading{flex-basis:calc(100% - 80px);padding-left:6px}.reader-heading strong{font-size:16px}.reader-toolbar #previewToggle{margin-left:auto}.reader-toolbar #outlineToggle{display:inline-block}.reader-layout{display:block;padding:22px 16px 95px}.outline{display:none;position:fixed;top:170px;left:16px;right:16px;z-index:22;background:white;border:1px solid var(--line);border-radius:10px;padding:16px;max-height:55dvh;box-shadow:0 8px 30px #203b2826}.outline.open{display:block}.course-intro h1{font-size:28px}.course-intro p{font-size:16px}.course-intro{padding-bottom:32px}.course-intro .course-details{font-size:12px;gap:12px}.stream{gap:28px}.page-heading{gap:10px}.page-heading h2{font-size:14px}.page-heading span{font-size:11px}.practice-block{padding:18px 16px}.practice-heading h2{font-size:24px}.activity-body h1,.activity-body h2{font-size:22px}.activity-body .cases,.activity-body .four,.activity-body .ladder{grid-template-columns:1fr}.clip-header{padding:10px;font-size:14px}.clip pre{font-size:13px;padding:12px}.resource-links a{font-size:14px;padding:8px 12px}.reading-nav{padding:8px;gap:4px}.reading-nav button{padding:8px 10px;font-size:14px}.reading-nav #position{min-width:0;flex:1;font-size:12px}.reading-nav #toTop{display:none}.teacher-controls{padding:12px 16px;flex-wrap:wrap}.teacher-controls p{flex-basis:100%}.follow-bar{padding:10px 16px;gap:10px}.preview-panel{right:12px;top:90px;bottom:76px;width:calc(100vw - 24px)}.slide-links{gap:4px 12px}.slide-links a{font-size:13px}.course-end p{font-size:20px}.preview-mode .reader-toolbar{flex-wrap:nowrap}.preview-mode .reader-heading{flex-basis:auto}}
.resource-dock{position:sticky;top:100px;align-self:start;max-height:calc(100dvh - 185px);overflow:auto;padding:20px;background:#edf0e8;border:1px solid var(--line);border-radius:10px}.resource-dock .eyebrow{font-size:11px;margin-bottom:6px}.resource-dock h2{font-size:19px;margin-bottom:18px}.resource-dock h3{font-size:14px;margin:22px 0 8px}.dock-links{display:flex;flex-direction:column;gap:6px}.dock-links a{font-size:14px;line-height:1.5;display:flex;align-items:center;justify-content:space-between;min-height:44px;gap:12px;padding:10px 0;border-bottom:1px solid #d8ded3;text-decoration:none}.dock-clip{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:8px 0;border-bottom:1px solid #d8ded3}.dock-clip span{font-size:13px;line-height:1.5}.dock-clip button{font-size:13px;padding:8px 10px;flex-shrink:0}.dock-empty{font-size:14px;color:var(--muted)}
@media(min-width:1200px){.reader-layout{grid-template-columns:150px minmax(0,1fr) 245px;gap:24px;padding-left:28px;padding-right:28px}}
@media(min-width:1025px) and (max-width:1199px){.reader-layout{grid-template-columns:minmax(0,1fr) 240px}.outline{display:none}#outlineToggle{display:block}.outline.open{display:block;position:fixed;top:160px;left:24px;z-index:24;background:white;padding:20px;box-shadow:0 10px 30px #203b2826}}
@media(max-width:1024px){.resource-dock{display:none}}
.preview-mode .resource-dock{display:none}
.library{padding-top:42px}.shelf-heading{padding-bottom:32px}.shelf-heading h1{font-size:22px;letter-spacing:-.02em}.shelf-heading h1 span{font-size:14px;font-weight:500;color:var(--muted);margin-left:10px}.books{padding-bottom:8px;grid-template-columns:repeat(4,minmax(0,1fr));min-height:310px;gap:42px}.book{max-width:240px;min-height:310px}.book-title{font-size:29px}.book-bottom{font-size:13px}.library .book-item{align-self:end}
@media(max-width:1024px){.books{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.library{padding-top:28px}.books{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;min-height:240px}.book{min-height:240px}.book-title{font-size:23px}.book-subtitle{font-size:12px}.book-bottom{font-size:11px}.shelf-heading{padding-bottom:28px}}
.preview-mode #outlineToggle{display:none}.clip-header button{flex-shrink:0;white-space:nowrap}.page-heading h2{flex:1}.zoom-page{font-size:13px;padding:4px 8px;min-width:44px;flex-shrink:0}.page-heading{align-items:center}.zoom-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 18px;border-bottom:1px solid var(--line)}.zoom-toolbar strong{font-size:16px}.zoom-toolbar button{flex-shrink:0}#zoomDialog{width:min(1500px,96vw);max-width:96vw;max-height:94dvh;padding:0}.zoom-content{overflow:auto;max-height:calc(94dvh - 70px)}.zoom-content img{display:block;width:100%;height:auto}@media(max-width:640px){.zoom-content img{width:1000px;max-width:none}.zoom-toolbar strong{font-size:13px}.page-heading h2{font-size:13px}.zoom-page{font-size:12px}}
.preview-panel{width:min(640px,calc(100vw - 32px));height:auto;top:110px;bottom:auto;max-height:calc(100dvh - 130px)}.preview-panel.expanded{width:min(1200px,calc(100vw - 32px),calc((100dvh - 220px)*16/9))}.preview-viewport{width:100%;aspect-ratio:16/9;position:relative;overflow:hidden;background:var(--paper);flex-shrink:0}.preview-panel iframe{position:absolute;inset:0;width:1280px;height:720px;min-height:0;transform-origin:top left;pointer-events:none}.preview-ratio{font-size:12px;font-weight:500;color:var(--muted);margin-left:8px}.preview-actions{display:flex;gap:4px;align-items:start}.preview-actions button{font-size:14px;padding:8px 10px}.preview-header{padding:14px 18px}.preview-header p{margin-top:4px;font-size:12px}
.preview-mode .site-header{display:flex!important}.preview-mode .back-link,.preview-mode #toTop{display:inline-flex!important}.preview-mode .course-end{display:block!important}.preview-mode .reader-toolbar{padding:12px 32px;min-height:76px}.preview-mode .reader-toolbar::before{display:none}.preview-mode .reader-layout{display:grid;grid-template-columns:150px minmax(0,1fr) 245px;gap:24px;padding:32px 28px 110px}.preview-mode .outline,.preview-mode .resource-dock{display:block}.preview-mode .reading-nav{padding:10px 32px;gap:24px}.preview-mode .reader-heading strong{font-size:18px}.preview-mode .reader-heading span{font-size:13px}.preview-mode .practice-block{padding:32px}.preview-mode .practice-heading h2{font-size:28px}
@media(max-width:640px){.preview-panel{top:110px;right:12px;width:calc(100vw - 24px)}.preview-header{padding:12px}.preview-header strong{font-size:16px}.preview-actions button{padding:8px;font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
