@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--paper:#f5f2e9;--ink:#171b24;--blue:#2146d0;--lime:#cfff46;--coral:#ff6a55;--line:#c9c4b7;--muted:#646875;--white:#fff;--shadow:0 18px 45px rgba(23,27,36,.09)}
*{box-sizing:border-box}html{max-width:100%;scroll-behavior:smooth;overflow-x:hidden}body{margin:0;max-width:100%;overflow-x:hidden;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif;line-height:1.55;-webkit-text-size-adjust:100%}button,select{max-width:100%;font:inherit}a{color:inherit;overflow-wrap:anywhere}h1,h2,h3,h4,p,li,strong{overflow-wrap:anywhere}:where(a,button,select,summary):focus-visible{outline:3px solid var(--lime);outline-offset:3px}.wrap{width:min(1180px,calc(100% - 40px));margin:auto}.mono,.eyebrow,.section-no,.code,.tag,.selected{font-family:"DM Mono",monospace}.code,.selected,.source-line{overflow-wrap:anywhere;word-break:break-word}
nav{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--line)}.brand{font-weight:800;letter-spacing:-.04em;text-decoration:none}.brand span{color:var(--blue)}.navlinks{display:flex;gap:24px;font-size:13px;font-weight:700}.navlinks a{text-decoration:none}.pill{border:1px solid var(--ink);padding:9px 14px;border-radius:99px;background:transparent;font-weight:700;cursor:pointer}
.hero{padding:74px 0 46px;display:grid;grid-template-columns:1.3fr .7fr;gap:52px;align-items:end}.eyebrow{display:inline-flex;gap:8px;align-items:center;color:var(--blue);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.eyebrow:before{content:"";width:28px;height:2px;background:currentColor}.hero h1{font-size:clamp(54px,8vw,112px);line-height:.88;letter-spacing:-.075em;margin:18px 0 30px;max-width:870px}.hero h1 em{font-style:normal;color:var(--blue)}.hero p{max-width:690px;font-size:18px;color:#4f5360}.hero-card{background:var(--ink);color:white;padding:30px;border-radius:6px;box-shadow:var(--shadow);min-width:0}.hero-card .big{font-size:clamp(48px,6vw,68px);line-height:1;font-weight:800;letter-spacing:-.07em}.lime{color:var(--lime)}.statrow{display:flex;gap:24px;margin-top:26px;padding-top:22px;border-top:1px solid #454954}.stat{flex:1;min-width:0}.stat+.stat{border-left:1px solid #454954;padding-left:24px}.stat b{display:block;font-size:22px;line-height:1;margin-bottom:9px}.stat span{display:block;font-size:10px;line-height:1.35;color:#b6bac7;text-transform:uppercase;letter-spacing:.07em}
.ticker{border-block:1px solid var(--ink);overflow:hidden;white-space:nowrap}.ticker div{display:inline-block;padding:13px 0;font:500 12px "DM Mono",monospace;animation:move 28s linear infinite}.ticker span{margin-right:36px}.ticker i{color:var(--blue);font-style:normal}@keyframes move{to{transform:translateX(-50%)}}
section{padding:90px 0}.head{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:38px}.head h2{font-size:clamp(38px,6vw,68px);line-height:.95;letter-spacing:-.055em;margin:0}.head p{max-width:450px;color:var(--muted);margin:0}.section-no{color:var(--blue);font-size:12px;font-weight:500;margin-bottom:12px}
.builder{background:var(--blue);color:white}.builder .head p{color:#dbe2ff}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.choice{min-width:0;background:white;color:var(--ink);padding:24px;border-radius:4px}.choice label{display:block;font:500 11px "DM Mono",monospace;color:var(--blue);text-transform:uppercase;margin-bottom:8px}.choice select{width:100%;border:0;border-bottom:2px solid var(--ink);background:transparent;padding:10px 0;font-size:18px;font-weight:700;outline:none}.selected{font-size:12px;margin-top:9px;color:#646875}.credit-bar{min-width:0;grid-column:1/-1;background:var(--lime);color:var(--ink);padding:22px 26px;display:flex;justify-content:space-between;align-items:center;gap:18px}.credit-bar b{font-size:42px;letter-spacing:-.05em;white-space:nowrap}.credit-bar span{min-width:0;font-size:13px;font-weight:700}.status-note{min-width:0;grid-column:1/-1;background:var(--coral);color:var(--ink);padding:18px 24px;font-size:13px}.status-note strong{display:block;font-size:16px;margin-bottom:4px}
.courses{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.course{border:1px solid var(--line);padding:26px;background:rgba(255,255,255,.42);min-height:300px;display:flex;flex-direction:column;transition:.2s;overflow:hidden}.course:hover{transform:translateY(-5px);background:white;box-shadow:var(--shadow)}.course.wide{grid-column:span 6}.course.third{grid-column:span 4}.course.full{grid-column:1/-1;min-height:220px}.tag{align-self:flex-start;background:var(--ink);color:white;padding:5px 8px;font-size:10px;font-weight:500;text-transform:uppercase}.course h3{font-size:25px;line-height:1.12;letter-spacing:-.035em;margin:22px 0 10px}.course p{color:var(--muted);font-size:14px;margin:0}.meta{display:flex;gap:16px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:14px;margin-top:auto;font:500 11px "DM Mono",monospace}.topics{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0 22px}.topics span{border:1px solid var(--line);padding:5px 9px;font-size:10px;border-radius:99px;background:rgba(255,255,255,.5)}
.roadmap{background:var(--ink);color:white}.roadmap .head p{color:#aeb2bf}.weeks{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #454954;border-left:1px solid #454954}.week{min-height:240px;padding:22px 58px 22px 22px;border-right:1px solid #454954;border-bottom:1px solid #454954;position:relative}.week .num{font:500 11px "DM Mono",monospace;color:var(--lime)}.week h3{font-size:20px;line-height:1.15;margin:32px 0 12px}.week p{font-size:13px;color:#aeb2bf}.check{position:absolute;right:10px;top:10px;width:40px;height:40px;margin:0;padding:8px;border:0;border-radius:3px;background:transparent;cursor:pointer;appearance:none}.check svg{display:block;width:24px;height:24px}.check .box{fill:var(--ink);stroke:#737989;stroke-width:2}.check .tick{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:0}.check.done .box{fill:var(--lime);stroke:var(--lime)}.check.done .tick{opacity:1}.check:focus-visible{outline:3px solid rgba(207,255,70,.45)}.progress{height:7px;background:#323744;margin-top:28px}.progress i{display:block;height:100%;width:0;background:var(--lime);transition:.3s}.progress-label{font:500 11px "DM Mono",monospace;margin-top:9px;color:#aeb2bf;text-align:right}
.syllabus-grid{display:grid;grid-template-columns:280px minmax(0,1fr);gap:36px}.syllabus-grid>*{min-width:0}.tabs{display:flex;max-width:100%;flex-direction:column;gap:7px;position:sticky;top:20px;height:max-content}.tab{border:1px solid var(--line);background:transparent;text-align:left;padding:13px 15px;font-weight:700;cursor:pointer}.tab.active{background:var(--blue);color:white;border-color:var(--blue)}.panel{display:none;min-width:0}.panel.active{display:block}.panel h3{font-size:38px;letter-spacing:-.045em;margin:0 0 8px}.panel .code{font-size:12px;color:var(--blue)}.unit{padding:20px 0;border-bottom:1px solid var(--line)}.unit b{display:block;margin-bottom:6px}.unit p{margin:0;color:var(--muted);font-size:14px}.callout{background:var(--coral);padding:24px;margin-top:28px}.callout b{font-size:20px}.callout p{color:var(--ink);margin-bottom:0}
.official{padding-top:0}.official-intro{max-width:840px;margin-bottom:30px;color:var(--muted)}.syllabus-book{border-top:1px solid var(--ink)}.syllabus-book details{border-bottom:1px solid var(--line);background:rgba(255,255,255,.25)}.syllabus-book summary{list-style:none;cursor:pointer;padding:24px;display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:20px;align-items:center}.syllabus-book summary::-webkit-details-marker{display:none}.syllabus-book summary:after{content:"＋";font-size:24px}.syllabus-book details[open] summary:after{content:"−"}.course-type{font:500 11px "DM Mono",monospace;color:var(--blue)}.syllabus-book summary strong{font-size:20px;letter-spacing:-.02em}.syllabus-body{padding:0 24px 34px 154px;max-width:1070px}.fact-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:22px}.fact{background:var(--paper);padding:12px}.fact span{display:block;font:500 9px "DM Mono",monospace;color:var(--muted);text-transform:uppercase}.fact b{font-size:13px}.objective{background:white;padding:18px;margin:18px 0;border-left:4px solid var(--lime)}.objective b{display:block;margin-bottom:6px}.objective p{font-size:13px;color:var(--muted);margin:0}.module{padding:18px 0;border-top:1px solid var(--line)}.module h4{font-size:17px;margin:0 0 7px}.module p,.module li{font-size:13px;color:#4f5360}.module ul,.module ol{padding-left:20px;margin:8px 0}.module li+li{margin-top:5px}.source-line{margin-top:24px;font:500 10px "DM Mono",monospace;color:var(--blue)}
.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.principle{border-top:4px solid var(--blue);padding:20px 0}.principle b{font-size:19px}.principle p{color:var(--muted);font-size:14px}.exit{background:var(--lime);padding:65px 0}.exit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.exit-item{border-top:2px solid var(--ink);padding-top:14px}.exit-item b{display:block;font-size:28px}.exit-item span{font-size:13px}.note{margin-top:28px;font-size:13px}footer{padding:40px 0;background:var(--ink);color:white}.foot{display:flex;justify-content:space-between;align-items:center;gap:24px}.foot p{color:#aeb2bf;font-size:12px;max-width:600px}.print{background:var(--lime);border:0;padding:12px 18px;font-weight:800;cursor:pointer}
@media(max-width:800px){.navlinks{display:none}.hero{grid-template-columns:1fr;gap:32px}.choice-grid{grid-template-columns:1fr}.credit-bar,.status-note{grid-column:auto}.courses{display:block}.course{min-height:0;margin-bottom:14px}.weeks{grid-template-columns:1fr 1fr}.syllabus-grid{grid-template-columns:1fr;gap:24px}.tabs{position:sticky;top:0;z-index:10;flex-direction:row;overflow-x:auto;overscroll-behavior-inline:contain;padding:10px 0;background:var(--paper);scrollbar-width:none}.tab{flex:0 0 auto;min-height:44px;white-space:nowrap}.head{display:block}.head p{margin-top:16px}.syllabus-body{padding-left:24px}.fact-grid{grid-template-columns:1fr 1fr}.principles,.exit-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.wrap{width:calc(100% - 28px)}nav{min-height:64px;padding:10px 0}.pill{min-height:44px;font-size:12px;white-space:nowrap}.hero{padding:38px 0 34px}.hero h1{font-size:clamp(42px,14vw,56px);line-height:.92;letter-spacing:-.06em;margin:16px 0 22px}.hero p{font-size:16px}.hero-card{padding:22px}.statrow{display:grid;grid-template-columns:1fr 1fr;gap:0}.stat+.stat{padding-left:14px}.stat span{font-size:9px;overflow-wrap:anywhere}section{padding:58px 0}.head{margin-bottom:28px}.head h2{font-size:clamp(38px,12vw,50px);line-height:.98}.choice{padding:18px}.choice select{min-height:44px;font-size:16px}.credit-bar{align-items:flex-start;flex-direction:column;gap:8px;padding:18px}.credit-bar b{font-size:34px}.course{padding:20px}.course h3{font-size:22px}.meta{align-items:flex-start;flex-wrap:wrap;font-size:10px}.weeks,.principles,.exit-grid{grid-template-columns:1fr}.week{min-height:0;padding:20px 58px 20px 18px}.week h3{margin:24px 0 8px}.check{width:44px;height:44px}.panel h3{font-size:clamp(30px,10vw,38px);overflow-wrap:anywhere}.syllabus-book summary{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:18px 14px}.course-type{grid-column:1/-1}.syllabus-book summary strong{font-size:17px;overflow-wrap:anywhere}.syllabus-body{padding:0 14px 28px}.fact-grid{grid-template-columns:1fr 1fr}.fact b{display:block;overflow-wrap:anywhere}.foot{flex-direction:column;align-items:flex-start}.print{width:100%;min-height:46px}}
@media(max-width:360px){.wrap{width:calc(100% - 22px)}nav{gap:10px}.brand{font-size:14px}.pill{padding-inline:11px;font-size:11px}.hero h1{font-size:40px}.hero-card .big{font-size:40px}.fact-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ticker div{animation:none}.course,.progress i{transition:none}}
@media print{nav,.ticker,.builder,.check,.print{display:none!important}body{background:white}.course{break-inside:avoid}.roadmap{color:#111;background:white}.week p,.roadmap .head p{color:#555}.progress{display:none}}
