:root{--lab-accent:#1660cf;--lab-soft:#eef5ff;--lab-ink:#0d2340;--lab-line:#cbd9e7}
.framework-masthead{background:linear-gradient(135deg,var(--lab-soft),#fff 66%);border-bottom:1px solid var(--lab-line)}
.framework-masthead .eyebrow,.framework-masthead h1{color:var(--lab-ink)}
.framework-masthead .eyebrow{color:var(--lab-accent)}
.framework-masthead .subtitle{max-width:820px}
.framework-journey .point-button[aria-current="step"]{border-color:var(--lab-accent);background:var(--lab-soft)}
.framework-journey .progress-bar{background:var(--lab-accent)}
.lab-evidence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}
.lab-evidence-card{min-height:116px;padding:16px;text-align:left;border:1px solid var(--lab-line);border-radius:16px;background:#fff;color:var(--lab-ink);cursor:pointer;transition:border-color .18s ease,transform .18s ease,background .18s ease}
.lab-evidence-card:hover,.lab-evidence-card:focus-visible{border-color:var(--lab-accent);transform:translateY(-2px);outline:none}
.lab-evidence-card[aria-pressed="true"]{border-color:var(--lab-accent);background:var(--lab-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--lab-accent) 12%,transparent)}
.lab-evidence-card strong{display:block;margin-bottom:8px;font:700 .78rem/1.2 Inter,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--lab-accent)}
.lab-evidence-card span{display:block;font:500 .9rem/1.45 Inter,system-ui,sans-serif;color:#4f6278}
.lab-inspection{min-height:112px;padding:18px;border-left:4px solid var(--lab-accent);border-radius:0 14px 14px 0;background:var(--lab-soft)}
.lab-inspection .small-label{color:var(--lab-accent)}
.lab-inspection p{margin:.55rem 0 0;color:#31475e;line-height:1.55}
.lab-interactive-figure{margin:0 0 22px;padding:20px;border:1px solid var(--lab-line);border-radius:20px;background:linear-gradient(145deg,#fff,var(--lab-soft));color:var(--lab-ink)}
.lab-interactive-figure>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.lab-interactive-figure>header .small-label{color:var(--lab-accent)}
.lab-interactive-figure h4{margin:.35rem 0 0;font:750 1.08rem/1.3 Inter,system-ui,sans-serif}
.lab-live-stage-link{padding:7px 10px;border-radius:999px;background:#fff;color:var(--lab-accent);font:700 .68rem/1.25 Inter,system-ui,sans-serif;text-decoration:none;white-space:nowrap}
.lab-interactive-figure__plot{margin-top:14px;overflow:hidden}
.lab-interactive-figure__plot svg{display:block;width:100%;height:auto;min-height:230px}
.lab-plot-grid path{fill:none;stroke:#cbd9e7;stroke-width:1}
.lab-plot-grid path:first-child{stroke:#7f94a9;stroke-width:1.3}
.lab-plot-primary,.lab-plot-reference{fill:none;vector-effect:non-scaling-stroke}
.lab-plot-reference{stroke:#8094a7;stroke-width:2;stroke-dasharray:7 6}
.lab-plot-primary{stroke:var(--lab-accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;transition:d .16s ease}
.lab-plot-marker{fill:#fff;stroke:var(--lab-accent);stroke-width:4;vector-effect:non-scaling-stroke;transition:cx .16s ease,cy .16s ease}
.lab-plot-axis,.lab-plot-key{fill:#536a80;font:700 12px/1 Inter,system-ui,sans-serif;letter-spacing:.04em}
.lab-plot-key{font-size:10px}.lab-plot-key--active{fill:var(--lab-accent)}
.lab-plot-control{display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:center;color:#40566d;font:700 .76rem/1.35 Inter,system-ui,sans-serif}
.lab-plot-control output{color:var(--lab-accent);font-variant-numeric:tabular-nums}
.lab-plot-control input{grid-column:1/-1;width:100%;accent-color:var(--lab-accent)}
.lab-plot-insight{margin:10px 0 0;color:#536a80;font:550 .74rem/1.5 Inter,system-ui,sans-serif}
.lab-interactive-apps{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;padding-top:14px;border-top:1px solid var(--lab-line)}
.lab-interactive-apps>span{color:#536a80;font:750 .66rem/1.25 Inter,system-ui,sans-serif;letter-spacing:.08em}
.lab-interactive-apps>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.lab-interactive-apps a{display:grid;gap:2px;min-width:150px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--lab-accent) 24%,var(--lab-line));border-radius:12px;background:#fff;color:var(--lab-ink);text-decoration:none;transition:border-color .18s ease,transform .18s ease}
.lab-interactive-apps a:hover,.lab-interactive-apps a:focus-visible{border-color:var(--lab-accent);transform:translateY(-2px);outline:none}
.lab-interactive-apps a span{font:700 .72rem/1.3 Inter,system-ui,sans-serif}.lab-interactive-apps a small{color:#61778d;font:600 .62rem/1.3 Inter,system-ui,sans-serif}
.lab-crystal-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(210px,.45fr);gap:18px;align-items:center;margin-top:12px}
.lab-crystal-grid svg,.lab-interface-map svg{display:block;width:100%;height:auto}
.lab-crystal-zone{stroke:none}.lab-crystal-zone--precipitation{fill:#f7e1df}.lab-crystal-zone--nucleation{fill:#f7eccf}.lab-crystal-zone--metastable{fill:url(#crystal-meta)}
.lab-crystal-solubility,.lab-crystal-nucleation{fill:none;stroke-width:3;vector-effect:non-scaling-stroke}.lab-crystal-solubility{stroke:#0d2340}.lab-crystal-nucleation{stroke:var(--lab-accent);stroke-dasharray:7 5}
.lab-crystal-axes path{fill:none;stroke:#667b90;stroke-width:1.4;vector-effect:non-scaling-stroke}.lab-crystal-axes text,.lab-crystal-label,.lab-crystal-point-label{fill:#536a80;font:700 12px/1 Inter,system-ui,sans-serif}.lab-crystal-label{font-size:10px;letter-spacing:.04em}.lab-crystal-point{fill:#fff;stroke:var(--lab-accent);stroke-width:4;vector-effect:non-scaling-stroke}.lab-crystal-point-label{fill:var(--lab-accent);font-size:10px}
.lab-crystal-controls{display:grid;gap:18px}.lab-crystal-controls label{display:grid;grid-template-columns:1fr auto;gap:7px 12px;color:#40566d;font:700 .75rem/1.35 Inter,system-ui,sans-serif}.lab-crystal-controls output{color:var(--lab-accent);font-variant-numeric:tabular-nums}.lab-crystal-controls input{grid-column:1/-1;width:100%;accent-color:var(--lab-accent)}
.lab-crystal-result,.lab-interface-result{margin:0;padding:12px;border-left:3px solid var(--lab-accent);background:#fff;color:#40566d;font:650 .73rem/1.5 Inter,system-ui,sans-serif}
.lab-material-track{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.lab-material-track article{display:grid;grid-template-rows:auto 1fr auto;gap:7px;min-height:190px;padding:12px;border:1px solid var(--lab-line);border-radius:15px;background:#fff;color:#536a80;transition:border-color .18s ease,background .18s ease,transform .18s ease}.lab-material-track article.is-active{border-color:var(--lab-accent);background:var(--lab-soft);transform:translateY(-3px)}.lab-material-track strong{color:var(--lab-ink);font:750 .7rem/1.3 Inter,system-ui,sans-serif;letter-spacing:.08em}.lab-material-track span{font:650 .67rem/1.35 Inter,system-ui,sans-serif}.lab-material-track svg{display:block;width:100%;height:auto}.lab-material-track circle{fill:var(--lab-accent)}.lab-material-envelope{fill:color-mix(in srgb,var(--lab-accent) 17%,#fff);stroke:var(--lab-accent);stroke-width:2}.lab-material-network{fill:none;stroke:#7656a6;stroke-width:3}.lab-material-crystal{fill:#f8edcf;stroke:#d79b3d;stroke-width:2}.lab-material-result{margin:10px 0 0;padding:12px;border-left:3px solid var(--lab-accent);background:#fff;color:#40566d;font:650 .73rem/1.5 Inter,system-ui,sans-serif}
.lab-connected-apps{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 22px;padding:16px 18px;border:1px solid var(--lab-line);border-radius:16px;background:var(--lab-soft)}.lab-connected-apps>span{color:var(--lab-accent);font:750 .66rem/1.3 Inter,system-ui,sans-serif;letter-spacing:.08em}.lab-connected-apps>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.lab-connected-apps a{display:grid;gap:2px;min-width:150px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--lab-accent) 24%,var(--lab-line));border-radius:12px;background:#fff;color:var(--lab-ink);text-decoration:none}.lab-connected-apps a:hover,.lab-connected-apps a:focus-visible{border-color:var(--lab-accent);outline:none}.lab-connected-apps strong{font:700 .72rem/1.3 Inter,system-ui,sans-serif}.lab-connected-apps small{color:#61778d;font:600 .62rem/1.3 Inter,system-ui,sans-serif}
.lab-model-disclaimer{margin:10px 0 0;color:#61778d;font:600 .7rem/1.5 Inter,system-ui,sans-serif}.lab-interface-dual{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:12px;margin-top:14px}.lab-interface-panel{padding:12px;border:1px solid var(--lab-line);border-radius:15px;background:#fff}.lab-interface-panel>strong{color:#536a80;font:750 .66rem/1.3 Inter,system-ui,sans-serif;letter-spacing:.07em}.lab-interface-panel svg{display:block;width:100%;height:auto;margin-top:8px}.lab-interface-substrate{fill:none;stroke:#536a80;stroke-width:7;stroke-linecap:round}.lab-interface-droplet{fill:color-mix(in srgb,var(--lab-accent) 24%,#fff);stroke:var(--lab-accent);stroke-width:3}.lab-interface-angle{fill:none;stroke:#bc5c79;stroke-width:2}.lab-interface-angle-label,.lab-interface-surface-label,.lab-interface-body-label{fill:#536a80;font:700 12px/1 Inter,system-ui,sans-serif}.lab-interface-angle-label{fill:#bc5c79}.lab-interface-body-label{fill:var(--lab-accent)}.lab-interface-map{margin-top:0}.lab-interface-zone{stroke:none}.lab-interface-zone--adhesion{fill:#f7e1df}.lab-interface-zone--process{fill:#ece6f6}.lab-interface-zone--creep{fill:#e9f2d6}.lab-interface-boundary,.lab-interface-axes{fill:none;stroke-width:2.5;vector-effect:non-scaling-stroke}.lab-interface-boundary--crystal{stroke:#bc5c79}.lab-interface-boundary--coalescence{stroke:#3d78a8}.lab-interface-axes{stroke:#667b90;stroke-width:1.4}.lab-interface-label,.lab-interface-curve-label,.lab-interface-axis-label,.lab-interface-point-label{fill:#536a80;font:700 11px/1 Inter,system-ui,sans-serif}.lab-interface-curve-label{fill:#bc5c79}.lab-interface-curve-label--blue{fill:#3d78a8}.lab-interface-axis-label{font-size:12px}.lab-interface-point{fill:#fff;stroke:var(--lab-accent);stroke-width:4;vector-effect:non-scaling-stroke}.lab-interface-point-label{fill:var(--lab-accent);font-size:10px}.lab-interface-panel .lab-plot-control{margin-top:8px}.lab-interface-result{margin-top:12px}
.python-workbench{margin:18px 0 0;border:1px solid var(--lab-line);border-radius:16px;overflow:hidden;background:#0e2036;color:#eaf3ff}
.python-workbench header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:#142b46;border-bottom:1px solid rgba(255,255,255,.12)}
.python-workbench header span{font:700 .72rem/1 Inter,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase}
.python-workbench button{border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:7px 12px;background:transparent;color:#fff;font:700 .72rem/1 Inter,system-ui,sans-serif;cursor:pointer}
.python-workbench pre{margin:0;padding:18px;overflow:auto;font:500 .79rem/1.65 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre}
.framework-note{margin:8px 0 0;color:#65788d;font:500 .76rem/1.45 Inter,system-ui,sans-serif}
.framework-sources{margin:28px 0 0;padding:22px;border:1px solid var(--lab-line);border-radius:18px;background:#f8fbfe}
.framework-sources__heading{display:grid;grid-template-columns:minmax(180px,.42fr) minmax(260px,.8fr) minmax(300px,1.15fr);gap:18px;align-items:start}
.framework-sources__heading .small-label{color:var(--lab-accent)}
.framework-sources__heading strong{color:var(--lab-ink);font:700 1rem/1.35 Inter,system-ui,sans-serif}
.framework-sources__heading p{margin:0;color:#5d7085;font:500 .8rem/1.55 Inter,system-ui,sans-serif}
.framework-sources__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}
.framework-sources__grid a{display:flex;min-height:126px;flex-direction:column;padding:15px;border:1px solid var(--lab-line);border-radius:14px;background:#fff;color:var(--lab-ink);text-decoration:none;transition:border-color .18s ease,transform .18s ease}
.framework-sources__grid a:hover,.framework-sources__grid a:focus-visible{border-color:var(--lab-accent);transform:translateY(-2px);outline:none}
.framework-sources__grid a>span{color:var(--lab-accent);font:750 .66rem/1.3 Inter,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.framework-sources__grid a>strong{margin:.55rem 0 .9rem;font:650 .86rem/1.42 Inter,system-ui,sans-serif}
.framework-sources__grid a>small{margin-top:auto;color:#5d7085;font:700 .7rem/1.2 Inter,system-ui,sans-serif}
.method-dossier{margin-top:22px;padding:22px;border:1px solid var(--lab-line);border-radius:20px;background:linear-gradient(145deg,#fff,#f8fbfe);color:var(--lab-ink)}
.method-dossier__header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--lab-line)}
.method-dossier__header .small-label{color:var(--lab-accent)}
.method-dossier__header h4{margin:.35rem 0 0;font:750 1.06rem/1.3 Inter,system-ui,sans-serif}
.experience-pill{display:inline-flex;align-items:center;min-height:30px;padding:6px 11px;border:1px solid color-mix(in srgb,var(--lab-accent) 28%,var(--lab-line));border-radius:999px;background:var(--lab-soft);color:var(--lab-accent);font:750 .67rem/1.25 Inter,system-ui,sans-serif;letter-spacing:.05em;text-transform:uppercase}
.method-dossier__figure{margin:18px 0 0;padding:10px;border:1px solid #dbe5ed;border-radius:16px;background:#f3f7f9}
.method-dossier__figure a{display:block;overflow:hidden;border-radius:11px;background:#fff}
.method-dossier__figure img{display:block;width:100%;height:auto}
.method-dossier__figure--wide a{aspect-ratio:2.7/1}
.method-dossier__figure--wide img{height:100%;object-fit:cover;object-position:center 63%}
.method-dossier__figure figcaption{padding:10px 4px 2px;color:#536a80;font:600 .75rem/1.5 Inter,system-ui,sans-serif}
.method-dossier__media{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.method-media-card{margin:0;overflow:hidden;border:1px solid #dbe5ed;border-radius:14px;background:#fff}
.method-media-card video{display:block;width:100%;aspect-ratio:16/9;background:#0d2340;object-fit:cover}
.method-media-card figcaption{display:grid;gap:5px;padding:12px}
.method-media-card figcaption strong{font:720 .82rem/1.35 Inter,system-ui,sans-serif}
.method-media-card figcaption span{color:#66798d;font:550 .72rem/1.45 Inter,system-ui,sans-serif}
.method-dossier__section{margin-top:18px}
.method-dossier h5{margin:0 0 10px;color:#536a80;font:750 .67rem/1.25 Inter,system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}
.method-tags{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none}
.method-tags li{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:11px 12px;border:1px solid #dbe5ed;border-radius:12px;background:#fff}
.method-tags strong{font:680 .8rem/1.4 Inter,system-ui,sans-serif}
.method-tags span{align-self:start;color:var(--lab-accent);font:750 .62rem/1.35 Inter,system-ui,sans-serif;text-transform:uppercase}
.method-tags small{grid-column:1/-1;color:#66798d;font:600 .66rem/1.35 Inter,system-ui,sans-serif}
.method-dossier__columns{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;margin-top:18px}
.method-dossier__columns section{padding:15px;border:1px solid #dbe5ed;border-radius:14px;background:#fff}
.method-dossier__columns ol,.method-dossier__columns ul{margin:0;padding-left:1.15rem;color:#3f556b;font:500 .78rem/1.55 Inter,system-ui,sans-serif}
.method-dossier__columns li+li{margin-top:.35rem}
.method-dossier__sources{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.method-dossier__sources a{display:flex;min-height:98px;flex-direction:column;padding:12px;border:1px solid #dbe5ed;border-radius:12px;background:#fff;color:var(--lab-ink);text-decoration:none;transition:border-color .18s ease,transform .18s ease}
.method-dossier__sources a:hover,.method-dossier__sources a:focus-visible{border-color:var(--lab-accent);transform:translateY(-2px);outline:none}
.method-dossier__sources a>span{color:var(--lab-accent);font:750 .61rem/1.3 Inter,system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.method-dossier__sources a>strong{margin:.35rem 0 .7rem;font:650 .77rem/1.4 Inter,system-ui,sans-serif}
.method-dossier__sources a>small{margin-top:auto;color:#66798d;font:650 .65rem/1.2 Inter,system-ui,sans-serif}
.method-dossier__related{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:18px;padding-top:16px;border-top:1px solid var(--lab-line)}
.method-dossier__related>span{color:#536a80;font:700 .7rem/1.35 Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em}
.method-dossier__related>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}
.method-dossier__related a{padding:7px 10px;border-radius:999px;background:var(--lab-soft);color:var(--lab-accent);font:700 .7rem/1.25 Inter,system-ui,sans-serif;text-decoration:none}
@media(max-width:850px){.lab-evidence-grid{grid-template-columns:1fr}.lab-evidence-card{min-height:0}}
@media(max-width:850px){.framework-sources__heading,.framework-sources__grid,.method-tags,.method-dossier__columns,.method-dossier__sources,.method-dossier__media,.lab-interface-dual{grid-template-columns:1fr}.framework-sources__grid a,.method-dossier__sources a{min-height:0}.method-dossier__header,.method-dossier__related,.lab-interactive-figure>header,.lab-interactive-apps,.lab-connected-apps{align-items:flex-start;flex-direction:column}.method-dossier__related>div,.lab-interactive-apps>div,.lab-connected-apps>div{justify-content:flex-start}.lab-interactive-apps a,.lab-connected-apps a{min-width:0}.method-dossier__figure--wide a{aspect-ratio:auto}.method-dossier__figure--wide img{height:auto;object-fit:contain}}
@media(max-width:560px){.lab-interactive-figure{padding:15px}.lab-interactive-figure__plot svg{min-height:190px}.lab-live-stage-link{white-space:normal}.lab-interactive-apps>div{display:grid;width:100%}.lab-interactive-apps a{width:auto}}
@media(max-width:720px){.lab-crystal-grid{grid-template-columns:1fr}.lab-crystal-controls{grid-template-columns:1fr 1fr}.lab-crystal-result{grid-column:1/-1}}
@media(max-width:720px){.lab-material-track{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.lab-crystal-controls{grid-template-columns:1fr}}
@media(max-width:480px){.lab-material-track{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.lab-evidence-card,.framework-sources__grid a,.lab-interactive-apps a,.lab-plot-primary,.lab-plot-marker{transition:none}.lab-evidence-card:hover,.framework-sources__grid a:hover,.lab-interactive-apps a:hover{transform:none}}
