@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;650;700&family=Noto+Sans+KR:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,Noto Sans KR,sans-serif;font-synthesis:none;font-weight:400;color:#252e2b;background:#f3f6f4;--canvas: #f3f6f4;--surface: #fff;--surface-soft: #f8faf8;--surface-muted: #eef3f0;--ink: #252e2b;--ink-soft: #515c57;--muted: #89938e;--line: #e3eae6;--green: #176c59;--green-soft: #e9f3ee;--orange: #d96f4c;--orange-soft: #fbefe9;--yellow: #bb8733;--blue: #5c789f;--sidebar: 246px;color-scheme:light}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}svg{flex:none}button:focus-visible,a:focus-visible{outline:3px solid #82b5a4;outline-offset:3px}.app-shell{min-height:100vh;background:var(--canvas);color:var(--ink);transition:background .2s,color .2s}.app-shell.dark{--canvas: #171e1b;--surface: #202925;--surface-soft: #252f2b;--surface-muted: #2b3732;--ink: #e7eee9;--ink-soft: #bac5bf;--muted: #8d9a93;--line: #34423c;--green: #83c2aa;--green-soft: #263b33;--orange: #ed9a78;--orange-soft: #422f28;--yellow: #e3ba70;--blue: #9eb7dc;color-scheme:dark}.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;display:flex;flex-direction:column;width:var(--sidebar);padding:26px 16px 16px;border-right:1px solid var(--line);background:var(--surface)}.brand{display:flex;align-items:center;gap:10px;padding:0 8px;color:var(--ink);font-size:16px;font-weight:700}.brand>span:last-child{line-height:1.05}.brand small{display:block;margin-top:6px;color:var(--muted);font-size:8px;font-weight:600;letter-spacing:1.25px}.brand-mark{display:grid;place-items:center;width:35px;height:35px;border-radius:9px;color:#fff;background:#176c59}.dark .brand-mark{color:#18251f;background:#83c2aa}.sidebar-label{margin:43px 10px 11px;color:var(--muted);font-size:9px;font-weight:700;letter-spacing:1.25px;text-transform:uppercase}.nav-item,.subnav-item{display:flex;align-items:center;width:100%;text-align:left;border:0}.nav-item{gap:11px;padding:11px 12px;border-radius:7px;color:var(--green);background:var(--green-soft);font-size:12px;font-weight:600}.nav-indicator{width:6px;height:6px;margin-left:auto;border-radius:50%;background:var(--green)}.course-label{margin-top:31px}.subnav-item{gap:10px;padding:9px 10px;border-radius:7px;color:var(--ink-soft);background:transparent;font-size:11px}.subnav-item+.subnav-item{margin-top:3px}.subnav-item:hover,.subnav-item.selected{background:var(--surface-muted);color:var(--ink)}.subnav-icon{display:grid;place-items:center;width:27px;height:27px;border-radius:6px}.subnav-icon.basic{color:var(--blue);background:#eef1f6}.subnav-icon.architecture{color:var(--orange);background:var(--orange-soft)}.dark .subnav-icon.basic{background:#303a47}.sidebar-bottom{margin-top:auto}.sidebar-note{display:flex;align-items:center;gap:9px;padding:12px 10px;border:1px solid var(--line);border-radius:7px;background:var(--surface-soft)}.sidebar-note>svg{margin-left:auto;color:var(--muted)}.note-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;color:var(--yellow);background:#f8f2e5}.dark .note-mark{background:#403a2b}.sidebar-note strong{display:block;font-size:10px;font-weight:600}.sidebar-note p{margin-top:4px;color:var(--muted);font-size:8px}.sidebar-foot{display:flex;align-items:center;gap:7px;margin:18px 5px 0;color:var(--muted);font-size:9px}.status-dot{width:6px;height:6px;border-radius:50%;background:#68a786}.workspace{min-height:100vh;margin-left:var(--sidebar)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;height:62px;padding:0 35px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.crumbs,.topbar-actions{display:flex;align-items:center}.crumbs{gap:9px;color:var(--muted);font-size:10px}.crumbs strong{color:var(--ink-soft);font-weight:500}.topbar-actions{gap:17px}.edition-label{display:flex;align-items:center;gap:7px;color:var(--ink-soft);font-size:10px}.edition-label span{width:6px;height:6px;border-radius:50%;background:#6fa98b}.icon-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:7px;color:var(--ink-soft);background:var(--surface)}.icon-button:hover{background:var(--surface-muted)}.mobile-menu{display:none}.page-content{width:min(1190px,100%);margin:0 auto;padding:34px 35px 22px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:6px 0 28px}.eyebrow,.section-kicker{display:flex;align-items:center;gap:8px;color:var(--green);font-size:9px;font-weight:700;letter-spacing:1.4px}.eyebrow-rule{width:18px;height:2px;background:var(--orange)}.page-heading h1{margin-top:12px;font-size:28px;line-height:1.25;font-weight:650;letter-spacing:0}.page-heading p{margin-top:8px;color:var(--muted);font-size:11px;line-height:1.7}.heading-index{min-width:104px;padding:0 0 4px 17px;border-left:1px solid var(--line)}.heading-index span{display:block;color:var(--muted);font-size:8px;font-weight:600;letter-spacing:1px}.heading-index strong{display:block;margin-top:7px;color:var(--ink-soft);font-size:13px;font-weight:600}.heading-index i{padding:0 3px;color:var(--orange);font-size:10px;font-style:normal}.course-section{padding:18px 0 28px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:14px}.section-kicker{color:var(--muted);font-size:8px}.section-heading h2{margin-top:5px;font-size:15px;font-weight:650}.section-note{color:var(--muted);font-size:9px}.course-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.course-card{position:relative;display:flex;flex-direction:column;min-width:0;min-height:178px;padding:16px 17px 13px;overflow:hidden;text-align:left;border:1px solid var(--line);border-radius:7px;background:var(--surface);transition:border-color .18s,transform .18s,box-shadow .18s;animation:arrive .35s both}.course-card:nth-child(2){animation-delay:.06s}.course-card:hover{transform:translateY(-2px);box-shadow:0 7px 22px #1f47300b}.course-card.chosen{border-color:color-mix(in srgb,var(--green) 56%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--green) 32%,transparent)}.course-card-top{display:flex;align-items:center;gap:8px}.course-symbol{display:grid;place-items:center;width:33px;height:33px;border-radius:7px}.course-symbol.scope{color:var(--blue);background:#eef1f6}.course-symbol.architecture{color:var(--orange);background:var(--orange-soft)}.dark .course-symbol.scope{background:#303a47}.course-label{padding:4px 7px;border-radius:4px;color:var(--green);background:var(--green-soft);font-size:9px;font-weight:600}.course-card.architecture .course-label{color:var(--orange);background:var(--orange-soft)}.course-number{margin-left:auto;color:var(--muted);font-size:9px;font-weight:600;letter-spacing:1px}.course-card-copy{padding:11px 0 12px}.course-card-copy h3{font-size:14px;font-weight:650}.course-card-copy p{max-width:550px;margin-top:5px;color:var(--muted);font-size:10px;line-height:1.7}.course-card-bottom{display:flex;align-items:center;gap:13px;min-height:28px;margin-top:auto;padding-top:10px;border-top:1px solid var(--line)}.course-meta{display:inline-flex;align-items:center;gap:5px;color:var(--ink-soft);white-space:nowrap;font-size:9px}.course-meta svg{color:var(--muted)}.course-outcome{margin-left:auto;color:var(--green);font-size:9px;font-weight:600}.course-card.architecture .course-outcome{color:var(--orange)}.card-arrow{display:grid;place-items:center;width:24px;height:24px;margin-left:1px;border-radius:50%;color:var(--ink-soft);background:var(--surface-muted)}.selected-corner{position:absolute;top:0;right:0;display:grid;place-items:center;width:24px;height:23px;border-radius:0 6px 0 8px;color:#fff;background:var(--green)}.course-card.architecture .selected-corner{background:var(--orange)}.lesson-section{padding-top:17px;border-top:1px solid var(--line)}.lesson-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:13px}.active-course-line{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:9px}.active-course-mark{width:6px;height:6px;border-radius:50%;background:var(--green)}.active-course-mark.architecture{background:var(--orange)}.lesson-section-heading h2{margin-top:5px;font-size:16px;font-weight:650}.lesson-summary{display:flex;align-items:flex-end;gap:9px;padding-bottom:2px}.lesson-summary span{color:var(--muted);font-size:8px;font-weight:600;letter-spacing:1px}.lesson-summary strong{color:var(--ink-soft);font-size:10px;font-weight:600}.lesson-layout{display:grid;grid-template-columns:minmax(215px,.74fr) minmax(0,1.6fr);align-items:stretch;gap:12px}.chapter-list,.lesson-detail{border:1px solid var(--line);border-radius:7px;background:var(--surface)}.chapter-list{padding:12px 9px 8px}.chapter-list-heading{display:flex;justify-content:space-between;padding:3px 7px 10px;color:var(--muted);font-size:8px;font-weight:700;letter-spacing:1px}.chapter-item{display:flex;align-items:center;gap:9px;width:100%;min-height:49px;padding:7px;text-align:left;border:0;border-radius:5px;color:var(--ink-soft);background:transparent}.chapter-item+.chapter-item{margin-top:2px}.chapter-item:hover{background:var(--surface-soft)}.chapter-item.active{color:var(--ink);background:var(--surface-muted)}.chapter-index{display:grid;place-items:center;width:27px;height:27px;flex:none;border:1px solid var(--line);border-radius:5px;color:var(--muted);background:var(--surface);font-size:9px;font-weight:600}.chapter-item.active .chapter-index{border-color:transparent;color:#fff;background:var(--green)}.architecture~* .chapter-item.active .chapter-index{background:var(--orange)}.chapter-title-wrap{min-width:0;flex:1}.chapter-title-wrap strong{display:block;overflow:hidden;font-size:10px;font-weight:550;text-overflow:ellipsis;white-space:nowrap}.chapter-title-wrap small{display:block;margin-top:4px;color:var(--muted);font-size:8px}.chapter-chevron{color:var(--muted)}.chapter-item.active .chapter-chevron{color:var(--green)}.lesson-layout.architecture .chapter-item.active .chapter-index,.lesson-layout.architecture .chapter-item.active .chapter-chevron{color:var(--orange)}.lesson-layout.architecture .chapter-item.active .chapter-index{color:#fff;background:var(--orange)}.chapter-list-footer{display:flex;align-items:center;gap:7px;margin:9px 5px 0;padding:11px 4px 2px;border-top:1px solid var(--line);color:var(--muted);font-size:9px}.chapter-list-footer svg{color:var(--blue)}.footer-dot{width:5px;height:5px;margin-left:auto;border-radius:50%;background:#6fa98b}.lesson-detail{min-width:0;padding:17px 18px 14px;animation:arrive .24s both}.detail-topline{display:flex;justify-content:space-between;color:var(--muted);font-size:8px;font-weight:650;letter-spacing:1px}.lesson-detail h3{margin-top:8px;font-size:19px;font-weight:650;line-height:1.4}.lesson-goal{max-width:700px;margin-top:5px;color:var(--ink-soft);font-size:10px;line-height:1.75}.detail-columns{display:grid;grid-template-columns:1.25fr 1fr;gap:10px;margin-top:15px}.detail-block{min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:6px;background:var(--surface-soft)}.detail-block-heading{display:flex;align-items:center;gap:8px}.detail-icon{display:grid;place-items:center;width:27px;height:27px;border-radius:5px}.detail-icon.practice{color:var(--green);background:var(--green-soft)}.detail-icon.output{color:var(--yellow);background:#f8f2e5}.dark .detail-icon.output{background:#403a2b}.detail-block-heading span:not(.detail-icon){color:var(--muted);font-size:7px;font-weight:650;letter-spacing:.8px}.detail-block-heading h4{margin-top:2px;font-size:10px;font-weight:600}.activity-list{display:grid;gap:7px;margin:11px 0 0;padding:0;list-style:none}.activity-list li{display:flex;align-items:flex-start;gap:7px;color:var(--ink-soft);font-size:9px;line-height:1.6}.activity-list li>span{display:grid;place-items:center;width:15px;height:15px;flex:none;margin-top:1px;border-radius:50%;color:var(--green);background:var(--green-soft)}.result-block p{margin-top:12px;color:var(--ink-soft);font-size:10px;line-height:1.65}.architecture-area{margin-top:11px;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:#1e2824}.architecture-area iframe{display:block;width:100%;aspect-ratio:16 / 5.8;border:0}.architecture-pending{display:flex;align-items:center;gap:11px;min-height:69px;padding:11px 13px;color:#f0f4f1;background:linear-gradient(105deg,#23332d,#26302d 64%,#30302b)}.architecture-play{display:grid;place-items:center;width:38px;height:38px;flex:none;border:1px solid #7e9488;border-radius:50%;color:#b8d4c5}.architecture-pending strong{display:block;font-size:10px;font-weight:600}.architecture-pending div>span{display:block;margin-top:4px;color:#b2c0b8;font-size:8px;line-height:1.5}.architecture-duration{margin-left:auto;color:#b2c0b8;font-size:8px;white-space:nowrap}.safety-note{display:flex;align-items:center;gap:6px;margin-top:8px;color:var(--muted);font-size:8px}.safety-note svg{color:var(--green)}.note-bullet{width:5px;height:5px;border-radius:50%;background:var(--yellow)}.page-footer{display:flex;justify-content:space-between;gap:12px;margin-top:17px;padding:13px 0 0;border-top:1px solid var(--line);color:var(--muted);font-size:8px}.page-footer>span:first-child{font-weight:650;letter-spacing:1px}.page-footer i{padding:0 4px;color:var(--orange);font-style:normal}.mobile-scrim{display:none}@keyframes arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.page-content{padding-top:43px}.course-card{min-height:185px}.lesson-detail{padding:19px 22px 16px}}@media(max-width:1050px){:root{--sidebar: 218px}.sidebar{padding-inline:13px}.topbar,.page-content{padding-inline:25px}.lesson-layout{grid-template-columns:minmax(190px,.78fr) minmax(0,1.5fr)}.course-card-bottom{gap:9px}}@media(max-width:760px){:root{--sidebar: 0px}.sidebar{width:265px;transform:translate(-100%);transition:transform .2s ease;box-shadow:12px 0 30px #101d1817}.sidebar.open{transform:translate(0)}.mobile-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19;display:block;width:100%;border:0;background:#101a1680}.workspace{margin-left:0}.topbar{height:56px;padding:0 17px}.mobile-menu{display:grid;width:31px;height:31px;margin-right:3px}.crumbs{gap:6px;font-size:9px}.crumbs svg{width:12px}.topbar-actions{gap:9px}.edition-label{font-size:9px}.icon-button.theme-button{width:31px;height:31px}.page-content{padding:25px 17px 20px}.page-heading{padding-bottom:22px}.page-heading h1{font-size:24px}.page-heading p{max-width:440px;font-size:10px}.heading-index{min-width:83px;padding-left:11px}.heading-index span{font-size:7px}.course-section{padding-top:15px}.course-grid{gap:9px}.course-card{min-height:188px;padding:13px 12px 11px}.course-card-copy h3{font-size:12px}.course-card-copy p{font-size:9px}.course-card-bottom{flex-wrap:wrap;gap:7px 10px}.course-outcome{order:3;width:calc(100% - 30px);margin-left:0}.card-arrow{margin-left:auto}.lesson-layout{grid-template-columns:1fr}.chapter-list{padding:10px}.chapter-list-heading{padding-bottom:7px}.chapter-item{min-height:44px}.chapter-list-footer{margin-top:7px;padding-top:8px}.lesson-detail{padding:15px}.architecture-area iframe{aspect-ratio:16 / 9}}@media(max-width:480px){.topbar{padding-inline:10px}.crumbs{gap:4px;font-size:8px}.crumbs strong:first-of-type,.crumbs strong:first-of-type+svg{display:none}.edition-label{display:none}.page-content{padding:20px 12px 17px}.page-heading{align-items:flex-start}.page-heading p{max-width:290px}.heading-index{display:none}.section-heading{align-items:flex-start;flex-direction:column;gap:5px}.section-note{font-size:8px}.course-grid{grid-template-columns:1fr}.course-card{min-height:auto}.course-card-copy{padding-bottom:10px}.course-card-bottom{flex-wrap:nowrap}.course-outcome{order:initial;width:auto;margin-left:auto;text-align:right}.card-arrow{margin-left:0}.lesson-section-heading{align-items:flex-start}.lesson-summary{align-items:flex-end;flex-direction:column;gap:4px}.lesson-section-heading h2{max-width:235px;font-size:14px}.detail-columns{grid-template-columns:1fr}.result-block p{margin-top:8px}.architecture-pending{min-height:75px;padding-inline:10px}.architecture-play{width:34px;height:34px}.architecture-pending div>span{max-width:205px}.architecture-duration{align-self:flex-end;margin-bottom:2px}.page-footer{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.project-status{margin:12px 0 8px;color:var(--orange);font-size:10px;font-weight:600}.project-domain{margin-top:10px;color:var(--green);font-size:11px;font-weight:600}.project-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:17px}.project-actions a{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font-size:10px;color:var(--ink-soft)}.project-actions .primary-link{background:var(--green);color:var(--surface);border-color:var(--green)}.project-note{display:flex;align-items:flex-start;gap:9px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;color:var(--ink-soft);background:var(--surface-soft);font-size:10px;line-height:1.8;margin-bottom:22px}.project-note svg{margin-top:2px;color:var(--green)}.problem-section{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:24px;margin:0 0 24px}.problem-section h2,.learning-section>h2{font-size:15px;font-weight:650;margin-top:6px}.problem-section p{font-size:11px;line-height:1.9;color:var(--ink-soft);margin-top:8px}.problem-section blockquote{margin:0;border-left:2px solid var(--green);padding:13px 17px;background:var(--green-soft);font-size:12px;line-height:1.9;color:var(--green)}.scope-notice{font-size:10px;color:var(--muted);line-height:1.8;margin:-3px 0 14px}.planned-output{display:flex;align-items:center;gap:12px;margin-top:12px;padding:15px;border-radius:6px;background:#23332d;color:#f0f4f1}.planned-output>span{width:37px;height:37px;display:grid;place-items:center;flex:none;border:1px solid #7e9488;border-radius:50%;color:#b8d4c5}.planned-output strong{font-size:11px;font-weight:600}.planned-output p{font-size:10px;line-height:1.8;color:#b2c0b8;margin-top:5px}.stack-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}.stack-list span{font-size:9px;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:5px 8px;background:var(--surface)}.learning-section{margin-top:27px;padding-top:20px;border-top:1px solid var(--line);scroll-margin-top:85px}.learning-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:19px}.learning-grid svg{color:var(--green)}.learning-grid h3{font-size:12px;font-weight:600;margin-top:9px}.learning-grid p{font-size:11px;line-height:1.8;margin-top:7px;color:var(--ink-soft)}.data-callout{display:flex;align-items:flex-start;gap:13px;padding:18px;margin-top:25px;background:var(--surface);border:1px solid var(--line);border-radius:7px}.data-callout>.note-mark{flex:none}.data-callout h2{font-size:13px;font-weight:600;line-height:1.7}.data-callout p{font-size:11px;line-height:1.9;color:var(--ink-soft);margin-top:7px}.sidebar{overflow-y:auto}.sidebar-bottom{padding-top:30px}.sidebar-label.course-label{margin-top:31px}.course-card-top>.course-label{margin-top:0}.skip-link{position:fixed;top:-70px;left:12px;z-index:50;background:var(--surface);padding:12px}.skip-link:focus{top:10px}@media(max-width:760px){.problem-section{grid-template-columns:1fr;gap:14px}.learning-grid{gap:15px}.page-heading h1{line-height:1.35}.course-label{font-size:8px}}@media(max-width:480px){.learning-grid{grid-template-columns:1fr;gap:20px}.project-note{font-size:10px}.planned-output{align-items:flex-start;padding:12px}.data-callout{padding:15px}.course-outcome{font-size:8px}.page-footer{flex-wrap:wrap;line-height:1.8}.scope-notice{font-size:10px}.page-heading p{max-width:none}.lesson-goal{font-size:11px}.activity-list li{font-size:10px}.result-block p{font-size:11px}}
