
:root{
  --midnight:#07172a;
  --blue:#0e2c4d;
  --cyan:#55d7df;
  --cyan2:#c6f2f2;
  --orange:#ff7356;
  --paper:#f3f5f2;
  --white:#fbfcfb;
  --ink:#16202a;
  --muted:#66727b;
  --line:rgba(22,32,42,.16);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Inter",sans-serif;overflow-x:hidden}
img{display:block;width:100%;height:100%;object-fit:cover}
a{text-decoration:none;color:inherit}
button{font:inherit}

.header{
  height:76px;background:var(--midnight);color:white;padding:0 3vw;
  display:grid;grid-template-columns:1fr .7fr 1fr;align-items:center;position:relative;z-index:50
}
.logo img{width:205px;height:auto}
.course-tag{justify-self:center;text-align:center}.course-tag span{display:block;font:500 .43rem "IBM Plex Mono",monospace;color:#6f879c;letter-spacing:.12em}.course-tag b{font:500 .5rem "IBM Plex Mono",monospace;letter-spacing:.12em}
.nav{justify-self:end;display:flex;gap:1.4rem;font:500 .49rem "IBM Plex Mono",monospace;text-transform:uppercase}
.menu-btn{display:none;border:0;background:none}.menu-btn span{display:block;width:28px;height:1px;background:white;margin:7px 0}

.hero{height:calc(100vh - 76px);min-height:820px;position:relative;background:var(--midnight);color:white;overflow:hidden}
.hero-photo{position:absolute;inset:0;margin:0}
.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,12,23,.83) 0%,rgba(3,12,23,.42) 55%,rgba(3,12,23,.2))}
.glass-board{position:absolute;left:5vw;top:50%;transform:translateY(-50%);width:min(720px,55vw);padding:3.5rem;background:rgba(4,20,35,.63);border:1px solid rgba(132,214,223,.35);backdrop-filter:blur(12px);z-index:2}
.board-top{display:flex;justify-content:space-between;font:500 .45rem "IBM Plex Mono",monospace;color:#97b6c7;letter-spacing:.12em}
.hero h1,.overview h2,.core h2,.lab-photo h2,.modules h2,.assignments h2,.zeus-note h2,.pipeline h2,.research h2,.slot-note h2,.archive h2{
  font:700 clamp(4rem,7vw,7.6rem)/.86 "Manrope",sans-serif;letter-spacing:-.065em;margin:1rem 0
}
.equation{font:400 1rem "IBM Plex Mono",monospace;color:var(--cyan);padding:1rem 0;border-top:1px solid rgba(85,215,223,.3);border-bottom:1px solid rgba(85,215,223,.3)}
.glass-board p{max-width:570px;line-height:1.8;color:#c0ced8}
.hero-rail{position:absolute;right:0;top:0;bottom:0;width:45px;background:var(--cyan);color:var(--midnight);z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:space-around;padding:1rem 0}
.hero-rail span{writing-mode:vertical-rl;font:600 .43rem "IBM Plex Mono",monospace;letter-spacing:.12em}
.hero-index{position:absolute;right:7vw;bottom:4vw;z-index:2;text-align:right;font:700 5rem/1 "Manrope",sans-serif}.hero-index small{font:500 .43rem "IBM Plex Mono",monospace;letter-spacing:.12em;color:#b7c7d0}

.overview{padding:10vw 7vw;background:var(--white);display:grid;grid-template-columns:.18fr 1fr .55fr;gap:5vw}
.overview-no{font:500 2.8rem "IBM Plex Mono",monospace;color:#9ba4aa}
.label,.core-title>span,.lab-caption>span,.module-side>span,.assign-head>span,.zeus-copy>span,.pipeline-head>span,.research-copy>span,.slot-copy>span,.archive-card>span{
  font:500 .5rem "IBM Plex Mono",monospace;letter-spacing:.15em;text-transform:uppercase
}
.overview h2{font-size:clamp(3.8rem,5.3vw,6rem);margin-top:.9rem}.overview-copy{align-self:end}.overview-copy p{line-height:1.9;color:var(--muted)}

.core{padding:9vw 6vw;background:var(--midnight);color:white}
.core-title{display:grid;grid-template-columns:.3fr 1fr;align-items:end;margin-bottom:4vw}.core-title>span{color:#70879b}.core h2{font-size:clamp(4rem,5.8vw,6.5rem);margin:0}
.core-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #3a4c5d;border-left:1px solid #3a4c5d}
.core-grid article{padding:2rem;min-height:340px;border-right:1px solid #3a4c5d;border-bottom:1px solid #3a4c5d;display:flex;flex-direction:column}
.core-grid span,.core-grid b{font:.47rem "IBM Plex Mono",monospace}.core-grid span{color:#678097}.core-grid b{color:var(--cyan);margin-top:.5rem}
.core-grid h3{font:600 1.4rem "Manrope",sans-serif;margin:auto 0 .6rem}.core-grid p{font-size:.72rem;line-height:1.65;color:#aebdc8}

.lab-photo{min-height:760px;display:grid;grid-template-columns:.7fr 1.3fr;background:var(--cyan2)}
.lab-caption{padding:7vw 5vw;display:flex;flex-direction:column;justify-content:center}.lab-photo h2{font-size:clamp(3.8rem,5vw,5.8rem)}.lab-caption p{line-height:1.85;color:#53666c}
.lab-photo figure{margin:0;min-height:760px}

.modules{display:grid;grid-template-columns:.45fr 1.55fr;background:var(--paper)}
.module-side{padding:7vw 4vw;background:var(--orange);position:relative}.module-side>span{color:#7b2f22}.module-side h2{font-size:clamp(3.6rem,4.7vw,5.2rem);position:sticky;top:120px}.module-side p{line-height:1.8;position:sticky;top:360px}
.module-timeline{padding:5vw 6vw}
.module-timeline article{display:grid;grid-template-columns:120px 1fr 70px;gap:2rem;align-items:center;padding:2rem 0;border-bottom:1px solid var(--line)}
.week,.module-timeline article>span{font:500 .48rem "IBM Plex Mono",monospace;color:#72808a}.module-timeline h3{font:600 1.4rem "Manrope",sans-serif;margin:0 0 .4rem}.module-timeline p{font-size:.72rem;line-height:1.6;color:var(--muted);margin:0}.module-timeline article>span{text-align:right}

.assignments{padding:9vw 6vw;background:var(--white)}
.assign-head{display:grid;grid-template-columns:.3fr 1fr;align-items:end;margin-bottom:4vw}.assignments h2{font-size:clamp(4rem,5.8vw,6.5rem);margin:0}
.assign-cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1vw}
.assign-cards article{min-height:500px;padding:2.5rem;display:flex;flex-direction:column}.assign-cards article>span,.assign-cards small{font:.48rem "IBM Plex Mono",monospace}.assign-cards h3{font:700 2rem "Manrope",sans-serif;margin:auto 0 .8rem}.assign-cards p{font-size:.78rem;line-height:1.7}
.assign-cards .dark{background:var(--midnight);color:white}.assign-cards .dark p{color:#afbec9}.assign-cards .cyan{background:var(--cyan)}.assign-cards .orange{background:var(--orange)}

.zeus-note{padding:9vw 8vw;background:var(--blue);color:white;display:grid;grid-template-columns:.4fr 1.1fr;gap:6vw;align-items:center}
.zeus-code{width:220px;height:220px;border:1px solid #4b6a86;display:grid;place-items:center;position:relative}.zeus-code span{position:absolute;left:1rem;top:1rem;font:500 .5rem "IBM Plex Mono",monospace;color:#738ea4}.zeus-code b{font:500 4rem "IBM Plex Mono",monospace;color:var(--cyan)}
.zeus-note h2{font-size:clamp(3.7rem,5vw,5.7rem)}.zeus-copy p{max-width:820px;line-height:1.85;color:#bccbd6}

.pipeline{padding:9vw 5vw;background:var(--paper)}
.pipeline-head{display:grid;grid-template-columns:.3fr 1fr;align-items:end;margin-bottom:4vw}.pipeline h2{font-size:clamp(4rem,5.8vw,6.5rem);margin:0}
.pipeline-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr auto 1fr;align-items:center}
.pipeline-flow article{border:1px solid var(--ink);min-height:260px;padding:1.5rem;display:flex;flex-direction:column}.pipeline-flow b{font:.48rem "IBM Plex Mono",monospace;color:#71808a}.pipeline-flow h3{font:700 1rem "IBM Plex Mono",monospace;margin:auto 0 .5rem}.pipeline-flow p{font-size:.68rem;line-height:1.5;color:var(--muted)}
.arrow{font:500 2rem "IBM Plex Mono",monospace;padding:.6rem}

.research{padding:9vw 6vw;background:var(--midnight);color:white;display:grid;grid-template-columns:.65fr 1.35fr;gap:5vw;align-items:center}
.research h2{font-size:clamp(3.8rem,5vw,5.8rem)}.research-copy p{line-height:1.85;color:#adbdc8}
.research-images{display:grid;grid-template-columns:1fr 1fr;gap:1vw;align-items:end}.research-images figure{margin:0}.r1{height:520px}.r2{height:650px}

.slot-note{padding:10vw 8vw;background:var(--cyan);display:grid;grid-template-columns:.3fr 1.2fr;gap:6vw}
.slot-index{font:500 .5rem "IBM Plex Mono",monospace;color:#285d61}.slot-note h2{font-size:clamp(3.7rem,5vw,5.7rem)}.slot-copy p{max-width:850px;line-height:1.85;color:#355b5e}

.archive{min-height:760px;position:relative;background:var(--midnight)}
.archive>figure{margin:0;position:absolute;inset:0}.archive>figure:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,14,25,.75),rgba(4,14,25,.18))}
.archive-card{position:absolute;left:5vw;top:50%;transform:translateY(-50%);width:min(520px,42vw);background:var(--white);padding:3rem;z-index:2}.archive h2{font-size:clamp(3.6rem,4.8vw,5.4rem)}
.archive-data{border-top:1px solid var(--ink)}.archive-data>div{padding:.85rem 0;border-bottom:1px solid var(--line)}.archive-data small{display:block;font:.43rem "IBM Plex Mono",monospace;color:#77848d;margin-bottom:.25rem}.archive-data strong{font:.55rem "IBM Plex Mono",monospace}
.archive-card>a{display:inline-block;margin-top:1.5rem;font:.47rem "IBM Plex Mono",monospace;border-bottom:1px solid;padding-bottom:.3rem}

footer{padding:5vw 6vw 2.5vw;background:#030d17;color:white;display:grid;grid-template-columns:1fr .5fr .4fr;gap:5vw}
.footer-logo img{width:205px;height:auto}.footer-logo p{font-size:.65rem;color:#718392;max-width:420px}
.footer-nav{display:flex;flex-direction:column;gap:.55rem;font:.5rem "IBM Plex Mono",monospace;text-transform:uppercase}
.footer-code{text-align:right}.footer-code span{font:500 .5rem "IBM Plex Mono",monospace;color:#536a7c}.footer-code b{display:block;font:700 2.8rem "Manrope",sans-serif;color:#526c80}
.footer-bottom{grid-column:1/-1;border-top:1px solid #1e3040;margin-top:3rem;padding-top:1.4rem;font:.46rem "IBM Plex Mono",monospace;color:#596d7d}
.mobile-menu{display:none}

@media(max-width:980px){
  .header{grid-template-columns:1fr auto}.course-tag,.nav{display:none}.menu-btn{display:block}
  .glass-board{width:70vw}
  .overview{grid-template-columns:.2fr 1fr}.overview-copy{grid-column:2}
  .core-grid{grid-template-columns:1fr 1fr}
  .modules{grid-template-columns:.5fr 1.5fr}
  .assign-cards{grid-template-columns:1fr 1fr}.assign-cards article:last-child{grid-column:1/-1}
  .pipeline-flow{grid-template-columns:1fr}.arrow{transform:rotate(90deg);text-align:center}
  .mobile-menu{display:flex;position:fixed;inset:76px 0 0;background:var(--midnight);color:white;z-index:40;flex-direction:column;padding:8vw;transform:translateX(100%);transition:.35s}
  .mobile-menu.open{transform:none}.mobile-menu a{font:600 2.4rem/1.5 "Manrope",sans-serif;border-bottom:1px solid #2a3d4e}
}

@media(max-width:680px){
  .header{height:70px;padding:0 5vw}.logo img{width:180px}.mobile-menu{inset:70px 0 0}
  .hero{height:940px}.glass-board{left:6vw;right:6vw;top:44%;width:auto;padding:2rem}.hero h1{font-size:4.8rem}.hero-rail{width:32px}.hero-index{right:12vw;bottom:5vw;font-size:3.5rem}
  .overview{grid-template-columns:1fr;padding:18vw 7vw}.overview-copy{grid-column:auto}
  .core{padding:18vw 6vw}.core-title{grid-template-columns:1fr}.core-grid{grid-template-columns:1fr}
  .lab-photo{grid-template-columns:1fr}.lab-caption{padding:18vw 7vw}.lab-photo figure{min-height:520px}
  .modules{grid-template-columns:1fr}.module-side{padding:18vw 7vw}.module-side h2,.module-side p{position:static}.module-timeline{padding:10vw 7vw}.module-timeline article{grid-template-columns:1fr}.module-timeline article>span{text-align:left}
  .assignments{padding:18vw 6vw}.assign-head{grid-template-columns:1fr}.assign-cards{grid-template-columns:1fr}.assign-cards article:last-child{grid-column:auto}.assign-cards article{min-height:380px}
  .zeus-note{grid-template-columns:1fr;padding:18vw 7vw}.zeus-code{width:180px;height:180px}
  .pipeline{padding:18vw 6vw}.pipeline-head{grid-template-columns:1fr}
  .research{grid-template-columns:1fr;padding:18vw 6vw}.research-images{grid-template-columns:1fr}.r1,.r2{height:500px}
  .slot-note{grid-template-columns:1fr;padding:18vw 7vw}
  .archive{min-height:850px}.archive-card{left:7vw;right:7vw;top:auto;bottom:5vw;transform:none;width:auto;padding:2rem}
  footer{grid-template-columns:1fr;padding:14vw 6vw 6vw}.footer-code{text-align:left}.footer-bottom{grid-column:1}
}
