:root{--ink:#172033;--muted:#536077;--blue:#285de5;--blue-dark:#1846bd;--line:#dde3ed;--paper:#fff;--wash:#f7f9fc;--serif:Georgia,'Times New Roman',serif;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans KR','Malgun Gothic',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;font:16px/1.75 var(--sans);color:var(--ink);background:var(--wash);word-break:keep-all;overflow-wrap:break-word}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px}button:disabled{cursor:default}::selection{background:#d7e4ff}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.28;letter-spacing:-.045em}h1{font-size:clamp(2.4rem,5vw,4.6rem);font-weight:750}h2{font-size:clamp(1.8rem,3vw,2.6rem)}h3{font-size:1.3rem}p+p{margin-top:14px}.wrap{max-width:1180px;padding:0 40px;margin:auto}.section{padding:84px 0}.eyebrow{font-size:.875rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin-bottom:18px}.muted{color:var(--muted)}.text-link{color:var(--blue);font-weight:600;border-bottom:1px solid #b7cafa;padding-bottom:3px}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--blue);color:white;border:1px solid var(--blue);padding:12px 23px;border-radius:9px;min-height:48px;font-weight:600;font-size:.9375rem;transition:background .15s}.button:hover{background:var(--blue-dark)}.button.secondary{background:white;color:var(--ink);border-color:var(--line)}.button.secondary:hover{background:#eef3fb}.button:disabled{background:#e4e9f2;color:#566379;border-color:#e4e9f2}.skip-link{position:fixed;z-index:50;top:-100px;left:20px;padding:12px 20px;background:white}.skip-link:focus{top:12px}.site-header{background:rgba(247,249,252,.97);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.header-inner{max-width:1260px;padding:18px 40px;display:flex;align-items:center;gap:40px;margin:auto}.brand{font-size:1.35rem;font-weight:750;letter-spacing:-.055em;display:flex;align-items:center;gap:10px}.brand-mark{display:inline-flex;width:31px;height:31px;background:var(--blue);color:white;border-radius:9px;align-items:center;justify-content:center;font-size:22px;line-height:1;font-weight:700;letter-spacing:-.1em}.brand-mark span{font-size:19px}.header-inner nav{display:flex;gap:30px;margin-left:auto;font-size:.875rem;font-weight:550}.header-inner nav a:hover,.header-inner nav a[aria-current]{color:var(--blue)}.header-start{font-size:.875rem;border:1px solid var(--line);border-radius:7px;padding:8px 15px;background:white;font-weight:600;white-space:nowrap}.hero{padding:76px 0 65px}.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:60px;align-items:center}.release{display:inline-flex;align-items:center;gap:12px;font-size:.875rem;color:var(--muted);margin-bottom:28px}.release b{border:1px solid #c8d7fa;color:var(--blue);background:#edf3ff;padding:3px 10px;border-radius:5px;font-size:.75rem;letter-spacing:.03em}.hero h1 .serif{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--blue);letter-spacing:-.03em}.hero-description{font-size:1.0625rem;line-height:1.85;color:var(--muted);margin-top:24px;max-width:470px}.hero-actions{display:flex;align-items:center;gap:24px;margin-top:32px}.hero-note{font-size:.8125rem;color:var(--muted);margin-top:18px}.code-window{border:1px solid #d3dce9;background:#fff;border-radius:14px;box-shadow:0 22px 55px -32px #657b9e;transform:rotate(-1deg);overflow:hidden}.window-bar{display:flex;align-items:center;justify-content:space-between;padding:16px 23px;border-bottom:1px solid var(--line);font-size:.8125rem;color:var(--muted);background:#fbfcfe}.window-dots{display:flex;gap:6px}.window-dots i{width:7px;height:7px;border-radius:50%;background:#ccd5e4}.hero-code{padding:28px 25px 22px;font:15px/2.05 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;word-break:normal;margin:0}.ln{display:inline-block;color:#66758c;width:28px;user-select:none}.syntax{color:#285de5}.str{color:#386b59}.comment{color:#66758c}.window-output{border-top:1px solid var(--line);padding:18px 25px;background:#f4f7fd}.window-output small{font-size:.75rem;color:var(--muted);letter-spacing:.08em}.window-output p{font-family:ui-monospace,Consolas,monospace;font-size:.875rem;margin-top:7px}.code-caption{display:flex;gap:12px;margin-top:22px;font-size:.8125rem;color:var(--muted)}.code-caption span{color:var(--blue);font-family:var(--serif);font-size:22px;font-style:italic;line-height:1.2}.facts{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.facts-inner{display:grid;grid-template-columns:repeat(3,1fr);padding:26px 0;gap:24px}.fact{display:flex;align-items:baseline;gap:18px}.fact strong{font-size:1.6rem;letter-spacing:-.04em}.fact span{font-size:.875rem;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:32px}.section-heading p{color:var(--muted);margin-top:13px}.section-heading .text-link{white-space:nowrap;font-size:.875rem}.path-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.path-card{border:1px solid var(--line);border-radius:12px;background:white;overflow:hidden}.path-top{padding:30px 32px 26px;border-bottom:1px solid var(--line);min-height:186px;position:relative}.path-top .path-index{position:absolute;right:30px;top:23px;font:italic 3.8rem var(--serif);color:#d5dfef;letter-spacing:-.1em}.path-top .eyebrow{margin-bottom:12px}.path-top h3{font-size:1.65rem}.path-top p{color:var(--muted);font-size:.9375rem;margin-top:10px;max-width:330px}.lesson-row{display:flex;align-items:center;gap:18px;padding:18px 32px;border-bottom:1px solid #edf0f5;transition:background .15s;min-height:72px}.lesson-row:last-child{border:0}.lesson-row:hover{background:#f5f8ff}.lesson-row .num{font-size:.8125rem;color:#687993;font-variant-numeric:tabular-nums}.lesson-row .row-title{font-weight:550;font-size:.9375rem}.lesson-row .row-time{margin-left:auto;color:var(--muted);font-size:.8125rem;white-space:nowrap}.lesson-row .row-circle{border:1px solid #dae2ef;border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:13px;color:var(--blue)}.approach{background:#edf2fa;border-block:1px solid #e0e7f1}.approach-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:70px}.approach h2{max-width:330px}.approach-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.step-number{font-family:var(--serif);font-style:italic;font-size:1.6rem;color:var(--blue);margin-bottom:15px}.approach-steps h3{font-size:1.0625rem;letter-spacing:-.02em}.approach-steps p{font-size:.875rem;color:var(--muted);margin-top:10px}.roadmap-band{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:35px 40px;background:white;border:1px solid var(--line);border-radius:12px}.roadmap-band p{color:var(--muted);margin-top:12px;font-size:.9375rem}.pill{display:inline-block;font-size:.75rem;font-weight:600;background:#edf3ff;color:#2454bd;border-radius:4px;padding:3px 9px}.pill.planned{background:#edf0f4;color:#536077}.site-footer{border-top:1px solid var(--line);padding:30px 0;background:var(--wash)}.footer-inner{max-width:1180px;padding:0 40px;margin:auto;display:flex;align-items:center;gap:28px;font-size:.8125rem;color:var(--muted);flex-wrap:wrap}.footer-inner .brand{color:var(--ink);font-size:1.1rem}.footer-inner span{margin-left:auto}.page-head{padding:62px 0 40px}.page-head h1{font-size:clamp(2rem,4vw,3.2rem)}.page-head p{margin-top:18px;color:var(--muted);max-width:650px}.course-tabs{display:flex;gap:10px;margin-bottom:30px}.course-tabs button{border:1px solid var(--line);border-radius:7px;padding:9px 18px;color:var(--muted);background:white;font-size:.875rem;min-height:44px}.course-tabs button[aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.course-card{display:flex;flex-direction:column;padding:27px;border:1px solid var(--line);border-radius:10px;background:white;min-height:250px;transition:transform .15s,border-color .15s}.course-card:hover{transform:translateY(-3px);border-color:#8ba9ef}.course-card .card-meta{display:flex;justify-content:space-between;gap:15px;font-size:.8125rem;color:var(--muted);margin-bottom:32px}.course-card h2{font-size:1.3rem}.course-card p{font-size:.9375rem;color:var(--muted);margin-top:12px}.course-card .card-bottom{margin-top:auto;padding-top:26px;font-size:.8125rem;color:var(--blue);display:flex;justify-content:space-between;gap:20px}.course-info{margin-top:30px;color:var(--muted);font-size:.875rem}.article-layout{display:grid;grid-template-columns:230px minmax(0,720px);gap:62px;padding:44px 0 75px;justify-content:center}.lesson-sidebar{position:sticky;top:113px;align-self:start;font-size:.875rem}.lesson-sidebar .sidebar-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin-bottom:12px}.lesson-sidebar ul{list-style:none;padding:0;margin:0 0 27px}.lesson-sidebar li a{display:block;padding:9px 12px;border-radius:6px;color:var(--muted);line-height:1.5}.lesson-sidebar li a[aria-current]{background:#e8efff;color:var(--blue);font-weight:600}.lesson-sidebar li a:hover{background:#edf2fa}.lesson-sidebar .sidebar-back{display:inline-block;margin-bottom:28px;font-weight:600}.lesson-article{min-width:0}.breadcrumb{font-size:.8125rem;color:var(--muted);margin-bottom:26px}.breadcrumb a{color:var(--blue)}.lesson-article h1{font-size:clamp(2rem,4vw,3rem)}.lesson-intro{font-size:1.0625rem;color:var(--muted);margin-top:20px}.lesson-meta{display:flex;gap:16px;align-items:center;font-size:.8125rem;color:var(--muted);margin-bottom:18px}.objectives{padding:22px 26px;background:#edf3ff;border-radius:8px;margin:32px 0}.objectives h2{font-size:1rem;letter-spacing:-.01em}.objectives ul{margin:12px 0 0;padding-left:20px;color:#374b6f;font-size:.9375rem}.article-section{margin-top:44px}.article-section h2{font-size:1.55rem;margin-bottom:18px}.article-section p{line-height:1.9}.article-section ul,.article-section ol{padding-left:24px;line-height:1.9}.article-section li+li{margin-top:7px}.lesson-article code{font: .9em/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;background:#eaf0f8;padding:2px 5px;border-radius:3px;word-break:normal;overflow-wrap:anywhere}.code-block{background:#172338;color:#edf3ff;border-radius:9px;margin-top:22px;overflow:hidden}.code-label{display:flex;justify-content:space-between;border-bottom:1px solid #35425b;padding:10px 18px;align-items:center;font-size:.75rem;color:#cad6eb}.code-block pre{margin:0;padding:20px 22px;overflow-x:auto;word-break:normal;white-space:pre;font: .875rem/1.9 ui-monospace,SFMono-Regular,Consolas,monospace}.code-block pre code{background:none;padding:0;color:inherit;font-size:inherit;overflow-wrap:normal}.code-result{border-top:1px solid #35425b;padding:14px 22px;font:.875rem/1.8 ui-monospace,Consolas,monospace;white-space:pre-wrap;background:#1e2d45}.code-result span{display:block;font: .75rem var(--sans);color:#bac8e0;margin-bottom:8px}.callout{padding:20px 24px;border-left:3px solid var(--blue);background:#f0f4fc;margin:22px 0;font-size:.9375rem}.callout strong{display:block;margin-bottom:6px}.data-table{width:100%;border-collapse:collapse;margin:22px 0;font-size:.875rem}.data-table th,.data-table td{border-bottom:1px solid var(--line);padding:12px 14px;text-align:left}.data-table th{background:#edf2fa;font-weight:600}.table-wrap{overflow:auto}.flow{display:flex;gap:8px;margin:24px 0;flex-wrap:wrap}.flow span{background:#edf3ff;border:1px solid #cddbf8;padding:12px 16px;border-radius:6px;font-size:.875rem;flex:1;min-width:110px;text-align:center}.flow span b{display:block;font-size:.75rem;color:var(--blue);font-weight:600;margin-bottom:5px}.sources{border-top:1px solid var(--line);padding-top:25px;margin-top:38px}.sources h2{font-size:1.1rem}.sources p{font-size:.8125rem;color:var(--muted);margin:10px 0}.sources ul{padding-left:20px;font-size:.875rem;line-height:1.85}.sources a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}.quiz{margin-top:46px;padding:28px;background:white;border:1px solid var(--line);border-radius:10px}.quiz h2{font-size:1.6rem}.quiz .quiz-caption{color:var(--muted);font-size:.875rem;margin-top:10px}.quiz fieldset{padding:0;border:0;margin:28px 0 0;min-width:0}.quiz legend{font-weight:600;line-height:1.7;margin-bottom:14px;font-size:.9375rem}.quiz legend code{font-size:.875rem}.quiz-option{display:flex;align-items:start;gap:12px;border:1px solid var(--line);border-radius:7px;padding:12px 16px;margin:9px 0;cursor:pointer;font-size:.9375rem}.quiz-option:has(input:checked){background:#edf3ff;border-color:var(--blue)}.quiz-option input{margin:7px 0 0;accent-color:var(--blue);width:16px;height:16px;flex-shrink:0}.quiz-actions{display:flex;gap:12px;align-items:center;margin-top:26px;flex-wrap:wrap}.quiz-feedback{margin-top:22px;padding:20px;background:#eef5ff;border-radius:8px;font-size:.9375rem}.quiz-feedback h3{font-size:1.1rem;margin-bottom:14px}.answer-item+.answer-item{border-top:1px solid #cfdced;margin-top:16px;padding-top:16px}.answer-item p{font-size:.875rem;color:#3c506e;margin-top:6px}.quiz-error{color:#a22d30;font-size:.875rem;margin-top:16px}.lesson-pagination{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:38px}.lesson-pagination a{padding:20px;border:1px solid var(--line);border-radius:8px;background:white;font-size:.9375rem;font-weight:600}.lesson-pagination a:last-child{text-align:right}.lesson-pagination small{display:block;font-size:.75rem;color:var(--muted);font-weight:400;margin-bottom:5px}.content-page{max-width:820px;margin:auto;padding:0 40px 75px}.about-section{border-top:1px solid var(--line);padding:30px 0}.about-section h2{font-size:1.55rem;margin-bottom:18px}.about-section p{color:var(--muted)}.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.status-box{border:1px solid var(--line);padding:25px;border-radius:9px;background:white}.status-box h3{margin:14px 0;font-size:1.2rem}.status-box ul{padding-left:18px;margin:0;color:var(--muted);font-size:.9375rem}.roadmap-list{border-top:1px solid var(--line);margin-top:15px}.roadmap-item{display:grid;grid-template-columns:100px 1fr;gap:24px;border-bottom:1px solid var(--line);padding:30px 0}.roadmap-item .roadmap-no{font:italic 2.7rem var(--serif);color:#7c93b4}.roadmap-item h2{font-size:1.45rem;margin:12px 0}.roadmap-item p{color:var(--muted);font-size:.9375rem}.roadmap-item ul{padding-left:20px;color:var(--muted);font-size:.9375rem}.noscript{padding:25px;color:#a22d30}.not-found{min-height:60vh;display:flex;flex-direction:column;justify-content:center;align-items:start;gap:24px}
.hero-grid>*,.approach-grid>*{min-width:0}.code-window{transform:none}.course-tabs{flex-wrap:wrap}.facts-inner,.approach-steps{grid-template-columns:repeat(3,minmax(0,1fr))}.hero{padding-inline:40px}
@media(min-width:1500px){.hero{padding-top:100px;padding-bottom:85px}}
@media(max-width:1000px){.header-inner{gap:22px;padding-inline:28px}.header-inner nav{gap:20px}.wrap{padding-inline:28px}.hero-grid{gap:30px}.hero h1{font-size:3.4rem}.hero-code{font-size:.8125rem;padding-inline:18px}.course-grid{grid-template-columns:repeat(2,1fr)}.approach-grid{gap:35px;grid-template-columns:1fr 1.8fr}.article-layout{grid-template-columns:190px minmax(0,1fr);gap:35px}.path-top{padding-inline:25px}.lesson-row{padding-inline:25px}.facts-inner{gap:20px}.fact{gap:12px}.fact strong{font-size:1.4rem}}
@media(max-width:760px){.header-inner{padding:15px 22px;gap:15px;flex-wrap:wrap}.brand{font-size:1.2rem}.header-start{margin-left:auto;font-size:.8125rem;padding:6px 11px}.header-inner nav{width:100%;order:3;margin:0;justify-content:space-between;font-size:.8125rem;gap:12px}.wrap{padding-inline:22px}.hero{padding:43px 0}.hero-grid{grid-template-columns:1fr;gap:36px}.hero h1{font-size:clamp(2.5rem,8vw,3.4rem);line-height:1.2}.hero-description{font-size:1rem;margin-top:22px}.hero-actions{gap:20px;margin-top:25px;flex-wrap:wrap}.release{margin-bottom:21px;font-size:.8125rem}.code-window{transform:none;max-width:510px}.hero-code{font-size:.875rem;padding:20px}.window-output{padding:15px 20px}.code-caption{margin-top:15px}.facts-inner{padding:23px 0;grid-template-columns:repeat(3,1fr);gap:14px}.fact{display:block}.fact strong{font-size:1.35rem;display:block}.fact span{font-size:.75rem;line-height:1.5;display:block;margin-top:4px}.section{padding:52px 0}.section-heading{display:block;margin-bottom:26px}.section-heading .text-link{display:inline-block;margin-top:18px}.section-heading p{font-size:.9375rem}.path-grid{grid-template-columns:1fr;gap:20px}.path-top{min-height:170px;padding:26px}.lesson-row{padding:16px 25px;gap:15px}.approach-grid{grid-template-columns:1fr;gap:25px}.approach h2{max-width:none}.approach-steps{gap:18px}.approach-steps p{font-size:.8125rem}.roadmap-band{display:block;padding:27px}.roadmap-band .button{margin-top:22px}.footer-inner{padding-inline:22px;gap:16px}.footer-inner p{width:calc(100% - 110px);font-size:.75rem}.footer-inner span{margin-left:0}.page-head{padding:42px 0 28px}.course-grid{grid-template-columns:1fr}.course-card{min-height:220px;padding:24px}.course-card .card-meta{margin-bottom:22px}.course-tabs button{padding-inline:16px}.article-layout{display:block;padding-top:29px}.lesson-sidebar{position:static}.lesson-sidebar ul,.lesson-sidebar .sidebar-label{display:none}.lesson-sidebar .sidebar-back{margin-bottom:23px}.breadcrumb{margin-bottom:20px}.lesson-meta{gap:12px}.lesson-article h1{font-size:2rem}.lesson-intro{font-size:1rem}.objectives{padding:20px}.article-section{margin-top:34px}.article-section h2{font-size:1.4rem}.quiz{padding:22px 18px}.quiz-option{padding:12px}.lesson-pagination{gap:12px}.lesson-pagination a{padding:16px 13px;font-size:.875rem}.content-page{padding-inline:22px}.status-grid{grid-template-columns:1fr}.roadmap-item{grid-template-columns:50px 1fr;gap:15px}.roadmap-no{font-size:2rem!important}.data-table th,.data-table td{padding:10px}.code-block pre{padding:18px;font-size:.8125rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;transform:none!important}}
.section.wrap{padding-inline:40px}.release b{white-space:nowrap;flex-shrink:0}
@media(max-width:1000px){.hero,.section.wrap{padding-inline:28px}}
@media(max-width:760px){.hero,.section.wrap{padding-inline:22px}.facts-inner{grid-template-columns:repeat(3,minmax(0,1fr))}.header-inner nav,.header-start{font-size:.875rem}}
