:root{
  --navy:#10283d;
  --blue:#1260cf;
  --ink:#183047;
  --muted:#657a8d;
  --line:#ccd7de;
  --paper:#fbfaf6;
  --panel:#ffffff;
  --soft:#eef6fb;
  --mint:#e8f6f2;
  --gold:#f4cc5b;
  --orange:#f18b55;
  --teal:#5bc6c8;
  --journey-accent:#d99b00;
  --shadow:0 16px 42px rgba(16,40,61,.08);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  color:var(--ink);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:
    radial-gradient(circle at 88% 8%,rgba(91,198,200,.09),transparent 27rem),
    linear-gradient(180deg,#fbfaf6 0%,#fff 32%,#f7fbfd 100%);
}
button,a{font:inherit}
button{cursor:pointer}
a{color:inherit}
.skip-link{
  position:absolute;
  left:18px;
  top:-60px;
  z-index:200;
  padding:10px 14px;
  border-radius:8px;
  background:var(--navy);
  color:#fff;
}
.skip-link:focus{top:18px}

.eyebrow,.small-label{
  color:var(--blue);
  font-size:10px;
  font-weight:850;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.small-label{font-size:9px}

.lab-hero{
  padding:52px clamp(24px,4vw,56px) 42px;
  border-bottom:1px solid rgba(170,191,205,.46);
  background:
    linear-gradient(115deg,rgba(255,255,255,.88),rgba(239,248,252,.9)),
    radial-gradient(circle at 80% 30%,rgba(244,204,91,.18),transparent 18rem);
}
.lab-hero__inner{
  max-width:1240px;
  margin:0 auto;
}
.lab-hero h1{
  margin:12px 0 0;
  max-width:840px;
  color:var(--navy);
  font:500 clamp(52px,6.4vw,88px)/.9 Georgia,"Times New Roman",serif;
  letter-spacing:-.05em;
}
.lab-hero__lead{
  max-width:760px;
  margin:18px 0 0;
  color:#526b7f;
  font-size:15px;
  line-height:1.5;
}
.lab-hero__credit{
  margin:18px 0 0;
  color:#7a8c9b;
  font-size:10px;
  font-weight:700;
}
.project-band{
  padding:24px clamp(24px,4vw,56px);
  background:#fff;
  border-bottom:1px solid var(--line);
}
.project-band__inner{
  max-width:1240px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px;
}
.project-card{
  min-height:174px;
  display:flex;
  flex-direction:column;
  padding:18px 20px;
  border:0;
  border-top:2px solid #d5e0e6;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.project-card--flagship{
  border-color:rgba(18,96,207,.38);
  background:transparent;
}
.project-card--foundation{border-color:rgba(225,163,0,.44)}
.project-card--future{border-color:rgba(29,154,151,.44)}
.project-card__meta{
  display:flex;
  justify-content:space-between;
  gap:12px;
  color:#778a99;
  font-size:9px;
  font-weight:850;
  letter-spacing:.12em;
}
.project-card h2{
  margin:24px 0 7px;
  color:var(--navy);
  font:500 25px/1 Georgia,"Times New Roman",serif;
  letter-spacing:-.03em;
}
.project-card p{
  margin:0;
  color:#617588;
  font-size:12px;
  line-height:1.6;
}
.project-card a{
  margin-top:auto;
  padding-top:22px;
  color:var(--blue);
  text-decoration:none;
  font-size:11px;
  font-weight:850;
}


.app-shell{
  max-width:1440px;
  margin:0 auto;
  padding:54px clamp(18px,3vw,42px) 62px;
  display:grid;
  grid-template-columns:250px minmax(0,1fr);
  gap:28px;
}
.journey{
  position:sticky;
  top:92px;
  align-self:start;
  max-height:calc(100vh - 112px);
  display:flex;
  flex-direction:column;
  padding:22px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.94);
  box-shadow:var(--shadow);
}
.journey-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:16px;
  border-bottom:1px solid #dfe7ec;
}
.journey-heading strong{color:var(--navy);font-size:12px}
.chapter-navigation{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  padding:10px 0;
  border-bottom:1px solid #dfe7ec;
}
.chapter-navigation button{
  min-width:0;
  display:grid;
  gap:3px;
  padding:7px 4px;
  border:0;
  border-bottom:2px solid transparent;
  background:transparent;
  color:#8394a2;
  text-align:center;
}
.chapter-navigation button strong{
  overflow:hidden;
  color:inherit;
  font-size:9px;
  letter-spacing:.02em;
  text-overflow:ellipsis;
}
.chapter-navigation button span{font-size:8px;letter-spacing:.08em}
.chapter-navigation button:hover{color:var(--navy)}
.chapter-navigation button.active{
  border-bottom-color:var(--chapter-color);
  color:var(--navy);
}
.point-navigation{
  overflow:auto;
  padding:12px 0;
  display:grid;
  gap:4px;
}
.point-button{
  width:100%;
  display:grid;
  grid-template-columns:26px minmax(0,1fr);
  align-items:center;
  gap:8px;
  padding:9px 8px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:#667b8d;
  text-align:left;
  font-size:11px;
}
.point-button span:first-child{
  display:grid;
  place-items:center;
  width:24px;
  height:24px;
  border:1px solid #cfd9df;
  border-radius:50%;
  color:#8394a2;
  font-size:9px;
  font-weight:800;
}
.point-button:hover{background:#f3f8fb;color:var(--navy)}
.point-button.active{background:#f3f7f9;color:var(--navy);font-weight:800;box-shadow:inset 3px 0 var(--journey-accent)}
.point-button.active span:first-child{border-color:var(--journey-accent);background:var(--journey-accent);color:#fff}
.progress-area{padding-top:14px;border-top:1px solid #dfe7ec}
.progress-meta{display:flex;justify-content:space-between;color:#748899;font-size:9px}
.progress-track{height:5px;margin-top:9px;border-radius:999px;background:#e6edf1;overflow:hidden}
.progress-bar{height:100%;width:6.66%;border-radius:inherit;background:var(--journey-accent);transition:width .28s ease,background-color .28s ease}

.presentation{
  min-width:0;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:22px;
  background:rgba(255,255,255,.96);
  box-shadow:var(--shadow);
}
.presentation-header{
  min-height:126px;
  padding:25px 28px;
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:24px;
  border-bottom:1px solid var(--line);
}
.presentation-header h2{
  margin:8px 0 0;
  color:var(--navy);
  font:500 clamp(30px,3.6vw,48px)/.96 Georgia,"Times New Roman",serif;
  letter-spacing:-.035em;
}
.presentation-header .eyebrow{color:var(--journey-accent)}
.navigation-buttons{display:flex;gap:8px;flex-shrink:0}
.navigation-buttons button,.review-bar button,.python-companion button,.experiment-toolbar button{
  border:1px solid #c8d5dd;
  border-radius:999px;
  padding:9px 13px;
  background:#fff;
  color:var(--navy);
  font-size:10px;
  font-weight:800;
}
.navigation-buttons button:disabled{opacity:.35;cursor:not-allowed}
.navigation-buttons .primary-button{border-color:var(--navy);background:var(--navy);color:#fff}

.content-layout{
  display:grid;
  grid-template-columns:minmax(0,1.7fr) minmax(280px,.75fr);
  min-height:630px;
}
.experiment-pane{padding:28px;border-right:1px solid var(--line)}
.question-block h3{
  margin:9px 0 0;
  max-width:780px;
  color:var(--navy);
  font:500 24px/1.16 Georgia,"Times New Roman",serif;
}
.experiment-toolbar{
  min-height:44px;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin:20px 0 12px;
}
.experiment-toolbar button.active{background:var(--blue);border-color:var(--blue);color:#fff}
.visual-stage{
  min-height:430px;
  display:grid;
  place-items:center;
  border:1px solid #d9e3e8;
  border-radius:18px;
  overflow:hidden;
  background:
    linear-gradient(180deg,rgba(248,251,253,.9),rgba(255,255,255,.98)),
    radial-gradient(circle at 25% 20%,rgba(244,204,91,.10),transparent 20rem);
}
#lab-canvas{width:100%;height:auto;display:block}
.experiment-caption{
  display:grid;
  grid-template-columns:120px minmax(0,1fr);
  gap:18px;
  margin-top:14px;
  padding:14px 16px;
  border-left:3px solid var(--teal);
  background:#f6fbfc;
}
.experiment-caption p{margin:0;color:#5c7183;font-size:11px;line-height:1.55}

.interpretation-pane{padding:16px 24px 24px;background:#fbfcfd}
.reasoning-block{padding:20px 0;border-bottom:1px solid #dde6eb}
.reasoning-block:last-child{border-bottom:0}
.reasoning-block p{margin:8px 0 0;color:#617689;font-size:11.5px;line-height:1.65}
.decision-block{margin-top:4px;padding:18px;border:1px solid rgba(18,96,207,.22);border-radius:14px;background:#eff6ff}
.compiler-strip{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:8px 11px;
  padding:16px 20px;
  border-top:1px solid var(--line);
  background:#f5f8fa;
  color:#526b7d;
  font-size:9px;
  font-weight:800;
}
.compiler-strip b{color:var(--blue)}
.review-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  padding:20px 28px;
  border-top:1px solid var(--line);
  background:#fff;
}
.review-bar p{margin:6px 0 0;color:var(--navy);font-size:12px;font-weight:750}
.review-answer{padding:18px 28px;border-top:1px solid var(--line);background:#fff9e8;color:#5f5660;font-size:12px;line-height:1.65}

.python-companion{
  max-width:1380px;
  margin:0 auto 60px;
  border:1px solid #24425c;
  border-radius:20px;
  overflow:hidden;
  background:#10283d;
  color:#e8f0f5;
  box-shadow:0 20px 50px rgba(16,40,61,.14);
}
.python-companion__header{
  padding:21px 26px;
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:24px;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.python-companion__header .eyebrow{color:#8bc8ff}
.python-companion__header h2{margin:7px 0 0;color:#fff;font:500 26px/1.05 Georgia,"Times New Roman",serif}
.python-companion__actions{display:flex;gap:8px}
.python-companion button{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#fff}
.python-companion__body{display:grid;grid-template-columns:300px minmax(0,1fr)}
.code-context{padding:24px;border-right:1px solid rgba(255,255,255,.12)}
.code-context .small-label{color:#8bc8ff}
.code-context strong{display:block;margin-top:12px;color:#fff;font-size:15px}
.code-context p{margin:10px 0 0;color:#b9c9d5;font-size:11px;line-height:1.6}
.python-companion pre{margin:0;min-height:250px;overflow:auto;padding:24px 28px;background:#0c2032;color:#dcecf7;font:500 12px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;tab-size:2}
.python-companion.is-collapsed .python-companion__body{display:none}

.roadmap{padding:56px clamp(24px,4vw,56px) 66px;border-top:1px solid var(--line);background:#fff}
.roadmap__inner{max-width:1240px;margin:0 auto}
.roadmap__heading{display:grid;grid-template-columns:1fr 1.3fr;gap:20px 46px;align-items:end;margin-bottom:28px}
.roadmap__heading .eyebrow{grid-column:1/-1}
.roadmap__heading h2{margin:0;color:var(--navy);font:500 44px/.95 Georgia,"Times New Roman",serif}
.roadmap__heading p{margin:0;color:#65798b;font-size:13px;line-height:1.65}
.roadmap__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.roadmap__grid article{padding:20px;border-top:2px solid var(--navy);background:#f8fafb}
.roadmap__grid span{color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.12em}
.roadmap__grid h3{margin:14px 0 8px;color:var(--navy);font:500 22px/1 Georgia,"Times New Roman",serif}
.roadmap__grid p{margin:0;color:#667b8d;font-size:11px;line-height:1.55}

.data-ai-footer{margin-top:0}

/* SVG vocabulary */
.svg-axis{stroke:#c9d7df;stroke-width:1}
.svg-grid{stroke:#e8eef2;stroke-width:1}
.svg-mark{fill:#1260cf;transition:all .42s cubic-bezier(.2,.8,.2,1)}
.svg-mark-alt{fill:#5bc6c8;transition:all .42s cubic-bezier(.2,.8,.2,1)}
.svg-mark-warn{fill:#f18b55}
.svg-line{fill:none;stroke:#1260cf;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:all .42s ease}
.svg-line-soft{fill:none;stroke:#5bc6c8;stroke-width:2;opacity:.65}
.svg-label{fill:#617588;font:600 11px Inter,system-ui,sans-serif}
.svg-small{fill:#7b8d9b;font:700 9px Inter,system-ui,sans-serif;letter-spacing:.08em}
.svg-title{fill:#10283d;font:500 22px Georgia,serif}
.svg-interval{stroke:#10283d;stroke-width:2}
.svg-node{stroke:#fff;stroke-width:3;transition:all .5s cubic-bezier(.2,.8,.2,1)}
.svg-edge{stroke:#91a7b8;stroke-width:2;opacity:.65;transition:all .5s ease}
.svg-cell{transition:all .45s ease}
.svg-highlight{filter:drop-shadow(0 0 8px rgba(18,96,207,.24))}

@media(max-width:1120px){
  .project-band__inner{grid-template-columns:1fr 1fr}
  .app-shell{grid-template-columns:1fr}
  .journey{position:relative;top:auto;max-height:none}
  .point-navigation{grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}
  .content-layout{grid-template-columns:1fr}
  .experiment-pane{border-right:0;border-bottom:1px solid var(--line)}
  .interpretation-pane{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}
  .decision-block{margin:10px 0}
}

@media(max-width:760px){
  .lab-hero{padding:54px 20px 42px}
  .lab-hero h1{font-size:clamp(48px,15vw,72px)}
  .project-band{padding:26px 20px}
  .project-band__inner{grid-template-columns:1fr}
  .app-shell{padding:34px 14px 44px}
  .journey{padding:16px}
  .point-navigation{grid-template-columns:1fr 1fr}
  .presentation-header{align-items:flex-start;flex-direction:column;padding:22px}
  .navigation-buttons{width:100%}
  .navigation-buttons button{flex:1}
  .experiment-pane{padding:20px}
  .visual-stage{min-height:330px}
  .interpretation-pane{display:block;padding:14px 20px 20px}
  .experiment-caption{grid-template-columns:1fr}
  .compiler-strip{justify-content:flex-start}
  .review-bar{align-items:flex-start;flex-direction:column;padding:18px 20px}
  .python-companion{margin:0 14px 42px;border-radius:16px}
  .python-companion__header{align-items:flex-start;flex-direction:column;padding:20px}
  .python-companion__body{grid-template-columns:1fr}
  .code-context{border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}
  .python-companion pre{font-size:11px;padding:20px}
  .roadmap{padding:44px 20px 50px}
  .roadmap__heading{grid-template-columns:1fr}
  .roadmap__heading .eyebrow{grid-column:auto}
  .roadmap__grid{grid-template-columns:1fr 1fr}
}

@media(max-width:480px){
  .point-navigation{grid-template-columns:1fr}
  .roadmap__grid{grid-template-columns:1fr}
  .project-card{min-height:154px}
}
