:root{--bg:#0b1020;--bg-2:#0f172a;--panel:hsla(0,0%,100%,.05);--panel-strong:hsla(0,0%,100%,.08);--border:hsla(0,0%,100%,.1);--border-strong:hsla(0,0%,100%,.18);--ink:#e2e8f0;--ink-soft:#cbd5e1;--muted:#94a3b8;--muted-2:#64748b;--accent:#22d3ee;--accent-2:#a78bfa;--emerald:#34d399;--amber:#fbbf24;--pink:#f472b6;--rose:#fb7185;--shadow:0 8px 32px 0 rgba(0,0,0,.37);--glow:0 0 30px -5px rgba(34,211,238,.4);--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;color-scheme:dark}*,:after,:before{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;color:var(--ink);background-color:var(--bg);background-image:radial-gradient(at 10% 0,rgba(34,211,238,.12) 0,transparent 50%),radial-gradient(at 90% 10%,rgba(167,139,250,.18) 0,transparent 50%),radial-gradient(at 50% 100%,rgba(56,189,248,.1) 0,transparent 50%);background-attachment:fixed}button{cursor:pointer}button,input{font:inherit}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:hsla(0,0%,100%,.02)}::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:rgba(34,211,238,.35)}.app{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1 1;min-width:0;padding:24px 20px 40px}@media (min-width:1024px){.app{flex-direction:row}.app-main{padding:40px 40px 60px;margin-left:280px}}.app-header{flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:32px}.app-header,.app-title-row{display:flex;align-items:center}.app-title-row{gap:12px}.app-title-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(34,211,238,.2),rgba(167,139,250,.2));border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--glow)}.app-title-icon svg{width:24px;height:24px;stroke:var(--accent)}.app-title h1{margin:0;font-family:Space Grotesk,Inter,sans-serif;font-size:1.35rem;font-weight:600;letter-spacing:-.01em}@media (min-width:768px){.app-title h1{font-size:1.6rem}}.app-title p{margin:2px 0 0;color:var(--muted);font-size:.875rem}.app-header-actions{display:flex;align-items:center;gap:8px}.sidebar-mobile{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid hsla(0,0%,100%,.05);position:-webkit-sticky;position:sticky;top:0;z-index:30;background:rgba(11,16,32,.85);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sidebar-mobile-brand{display:flex;align-items:center;gap:8px;font-family:Space Grotesk,sans-serif;font-weight:600}.sidebar-mobile-drawer{padding:14px 16px;border-bottom:1px solid hsla(0,0%,100%,.05);background:rgba(11,16,32,.92);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sidebar-desktop{display:none}@media (min-width:1024px){.sidebar-mobile,.sidebar-mobile-drawer{display:none}.sidebar-desktop{position:fixed;top:0;bottom:0;left:0;width:280px;display:flex;flex-direction:column;padding:28px 20px;border-right:1px solid hsla(0,0%,100%,.05);background:linear-gradient(180deg,rgba(2,6,23,.6),rgba(2,6,23,.2));-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.sidebar-brand{display:flex;align-items:center;gap:12px;margin-bottom:36px}.sidebar-brand-icon{width:44px;height:44px;background:linear-gradient(135deg,var(--accent),var(--accent-2));border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;box-shadow:var(--glow)}.sidebar-brand-icon svg{width:22px;height:22px;stroke:#0f172a}.sidebar-brand-name{font-family:Space Grotesk,sans-serif;font-weight:600}.sidebar-brand-sub{font-size:11px;color:var(--muted-2)}.sidebar-nav{display:flex;flex-direction:column;gap:4px}.nav-item{position:relative;display:flex;align-items:flex-start;gap:12px;padding:10px 12px;background:transparent;border:0;color:var(--ink-soft);text-align:left;border-radius:var(--r-md);transition:background .15s ease,color .15s ease}.nav-item:hover{background:hsla(0,0%,100%,.05);color:#fff}.nav-item.active{background:linear-gradient(135deg,rgba(34,211,238,.1),rgba(167,139,250,.1));color:#fff;box-shadow:inset 0 0 0 1px rgba(34,211,238,.35)}.nav-item-icon{flex-shrink:0;width:36px;height:36px;background:hsla(0,0%,100%,.05);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center}.nav-item-icon svg{width:16px;height:16px;stroke:var(--muted)}.nav-item.active .nav-item-icon svg{stroke:var(--accent)}.nav-item-body{display:flex;flex-direction:column;min-width:0}.nav-item-title{font-size:14px;font-weight:500}.nav-item-num{color:var(--muted-2);font-family:JetBrains Mono,monospace;font-size:10px;margin-right:8px}.nav-item-hint{font-size:11px;color:var(--muted-2)}.sidebar-fact{margin-top:auto;padding-top:24px}.sidebar-fact-card{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--r-lg);padding:14px}.sidebar-fact-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.sidebar-fact-text{font-size:13px;color:var(--ink-soft);line-height:1.5}.sidebar-fact-text strong{color:var(--accent);font-weight:500}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r-md);font-weight:500;font-size:14px;border:1px solid var(--border);background:hsla(0,0%,100%,.05);color:var(--ink);transition:background .15s ease,transform .1s ease}.btn:hover{background:hsla(0,0%,100%,.1)}.btn:active{transform:scale(.98)}.btn-sm{padding:6px 10px;font-size:12px}.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#0f172a;border:0}.btn-primary:hover{box-shadow:var(--glow)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:500;background:hsla(0,0%,100%,.05);border:1px solid var(--border);color:var(--ink-soft)}.chip-accent{background:rgba(34,211,238,.05);border-color:rgba(34,211,238,.25);color:var(--accent)}.dot{width:6px;height:6px;border-radius:999px;background:var(--emerald);animation:pulse 1.6s ease-in-out infinite}.field{width:100%;background:rgba(2,6,23,.4);border:1px solid var(--border);border-radius:10px;padding:8px 12px;color:var(--ink);font-size:14px;transition:border-color .15s,box-shadow .15s}.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(34,211,238,.15)}.field-sm{padding:6px 10px;font-size:13px;width:auto;min-width:88px}.label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}.card{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:var(--shadow);border-radius:var(--r-xl);padding:22px}.card-strong{background:var(--panel-strong);border-color:var(--border-strong)}.card-tight{padding:16px}.section{gap:28px}.section,.section-header{display:flex;flex-direction:column}.section-header{gap:8px}.section-title{font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;margin:0}@media (min-width:768px){.section-title{font-size:1.85rem}}.section-subtitle{color:var(--muted);max-width:60ch;line-height:1.55;margin:0;font-size:.95rem}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-split{grid-template-columns:1fr}@media (min-width:640px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (min-width:768px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}}@media (min-width:1024px){.grid-4{grid-template-columns:repeat(4,1fr)}.grid-split{grid-template-columns:1.5fr 1fr}}.stat-card{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 18px}.stat-card:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(34,211,238,.18),transparent 60%);pointer-events:none;opacity:.7}.stat-card.violet:before{background:linear-gradient(135deg,rgba(167,139,250,.18),transparent 60%)}.stat-card.emerald:before{background:linear-gradient(135deg,rgba(52,211,153,.18),transparent 60%)}.stat-card.amber:before{background:linear-gradient(135deg,rgba(251,191,36,.18),transparent 60%)}.stat-card-body{position:relative;display:flex;justify-content:space-between;gap:12px}.stat-card-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.stat-card-value{font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:600;margin-top:4px}.stat-card-unit{font-size:.95rem;color:var(--muted);margin-left:6px;font-weight:400}.stat-card-hint{font-size:11px;color:var(--muted);margin-top:4px}.stat-card-icon{width:36px;height:36px;background:hsla(0,0%,100%,.05);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card-icon svg{width:16px;height:16px;stroke:var(--accent)}.stat-card.violet .stat-card-icon svg{stroke:var(--accent-2)}.stat-card.emerald .stat-card-icon svg{stroke:var(--emerald)}.stat-card.amber .stat-card-icon svg{stroke:var(--amber)}.equation{position:relative;overflow:hidden;background:var(--panel-strong);border:1px solid var(--border-strong);border-radius:var(--r-xl);padding:22px}.equation:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(34,211,238,.45),transparent)}.equation-label{margin-bottom:12px}.equation-formula{font-family:Cambria Math,Latin Modern Math,STIX Two Math,Times New Roman,serif;font-size:1.55rem;text-align:center;padding:12px 0;color:var(--ink);font-style:italic;overflow-x:auto}.equation-formula sub,.equation-formula sup{font-style:normal}.equation-caption{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.55}.theory-callout{display:flex;gap:14px;margin-bottom:18px}.theory-callout-icon{width:38px;height:38px;background:rgba(34,211,238,.1);border:1px solid rgba(34,211,238,.25);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.theory-callout-icon svg{width:16px;height:16px;stroke:var(--accent)}.theory-callout h3{margin:0;font-family:Space Grotesk,sans-serif;font-size:1.1rem;font-weight:600}.theory-callout p{margin:2px 0 0;font-size:.875rem;color:var(--muted)}.theory-text{line-height:1.65}.theory-list,.theory-text{color:var(--ink-soft);font-size:.92rem;margin:0}.theory-list{line-height:1.75;padding-left:22px}.theory-list li{margin-bottom:4px}.theory-interp{border:1px solid var(--border);background:hsla(0,0%,100%,.05);padding:14px;border-radius:var(--r-md)}.theory-interp p{margin:0}.theory-interp p:first-child{font-weight:500;margin-bottom:4px}.theory-interp.cyan p:first-child{color:var(--accent)}.theory-interp.amber p:first-child{color:var(--amber)}.theory-interp.violet p:first-child{color:var(--accent-2)}.theory-interp p:last-child{font-size:13px;color:var(--ink-soft)}.progress-row{display:flex;align-items:center;gap:16px}.progress-row>div:first-child{min-width:150px}.progress-bar{flex:1 1;height:8px;background:hsla(0,0%,100%,.05);border-radius:999px;overflow:hidden;max-width:480px}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:999px;transition:width .4s cubic-bezier(.5,1.2,.4,1)}.progress-percent{font-family:JetBrains Mono,monospace;color:var(--accent);font-size:14px}.steps-layout{display:grid;grid-gap:18px;gap:18px;grid-template-columns:1fr}@media (min-width:1024px){.steps-layout{grid-template-columns:1fr 1.2fr}}.step-list{display:flex;flex-direction:column;gap:10px}.step-card{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;text-align:left;cursor:pointer;transition:background .15s,box-shadow .15s;width:100%}.step-card:hover{background:hsla(0,0%,100%,.07)}.step-card.active{background:hsla(0,0%,100%,.1);box-shadow:inset 0 0 0 1px rgba(34,211,238,.4)}.step-toggle{border:0;background:transparent;padding:0;display:flex;align-items:center;justify-content:center;width:22px;height:22px;margin-top:1px;flex-shrink:0;color:var(--muted-2)}.step-toggle.done{color:var(--emerald)}.step-toggle svg{width:20px;height:20px}.step-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted-2);margin-bottom:2px}.step-meta-num{font-family:JetBrains Mono,monospace}.step-title{font-weight:500;margin:2px 0 0;line-height:1.35}.step-title.done{text-decoration:line-through;color:var(--muted-2)}.step-summary{font-size:12px;color:var(--muted);margin:2px 0 0}.step-icon{color:var(--muted);flex-shrink:0;margin-top:2px}.step-icon svg{width:18px;height:18px}.step-card.active .step-icon{color:var(--accent)}.step-detail{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-xl);padding:24px;align-self:flex-start;animation:slideIn .25s ease}.step-detail-header{display:flex;gap:14px;align-items:center;margin-bottom:18px}.step-detail-icon{width:42px;height:42px;background:linear-gradient(135deg,rgba(34,211,238,.2),rgba(167,139,250,.2));border:1px solid var(--border);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center}.step-detail-icon svg{width:20px;height:20px;stroke:var(--accent)}.step-detail h3{margin:0;font-family:Space Grotesk,sans-serif;font-size:1.25rem;font-weight:600}.step-detail-duration{font-size:12px;color:var(--muted)}.step-detail ol{padding:0;margin:0 0 18px;list-style:none;display:flex;flex-direction:column;gap:10px}.step-detail li{display:flex;gap:12px;font-size:14px;color:var(--ink-soft);line-height:1.6}.step-detail-num{flex-shrink:0;width:24px;height:24px;border-radius:6px;background:rgba(34,211,238,.1);border:1px solid rgba(34,211,238,.25);color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;display:flex;align-items:center;justify-content:center}.tip{display:flex;gap:12px;border:1px solid rgba(251,191,36,.25);background:rgba(251,191,36,.05);padding:12px;border-radius:var(--r-md)}.tip svg{color:var(--amber);flex-shrink:0;margin-top:2px;width:18px;height:18px}.tip p{margin:0;font-size:13px;color:#fde68a;line-height:1.55}.tip strong{color:var(--amber);font-weight:500}.scene-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}.scene-tab{padding:10px 14px;border-radius:var(--r-md);background:hsla(0,0%,100%,.05);border:1px solid var(--border);color:var(--ink-soft);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:8px}.scene-tab:hover{background:hsla(0,0%,100%,.1)}.scene-tab.active{background:rgba(34,211,238,.1);border-color:rgba(34,211,238,.4);color:#fff}.scene-tab-hint{font-weight:400;color:var(--muted);font-size:12px}@media (max-width:768px){.scene-tab-hint{display:none}}.scene-stage{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-xl);overflow:hidden;position:relative}.scene-toolbar{position:absolute;top:14px;right:14px;z-index:10;display:flex;gap:8px}.scene-caption{padding:14px 22px 18px;color:var(--muted);font-size:14px;line-height:1.6}.scene-caption strong{color:var(--accent);font-weight:500}.molecule{animation:drift 6s ease-in-out infinite;transform-origin:center}@keyframes drift{0%{transform:translate(0);opacity:0}20%{opacity:1}80%{opacity:1}to{transform:var(--final-translate,translate(180px,80px));opacity:.85}}.molecule.paused{animation-play-state:paused}.wander{animation:wander 5s ease-in-out infinite}@keyframes wander{0%,to{transform:translate(0)}50%{transform:translate(40px,20px)}}.shaker-platform{display:flex;gap:18px;padding:32px 24px 18px;border-radius:var(--r-xl);background:rgba(15,23,42,.5);border:1px solid var(--border);justify-content:space-around;align-items:flex-end;animation:shake-h .6s ease-in-out infinite}.shaker-platform.paused,.shaker-platform.paused .flask,.shaker-platform.paused .flask-liquid{animation-play-state:paused}@keyframes shake-h{0%,to{transform:translateX(-12px)}50%{transform:translateX(12px)}}.flask{display:flex;flex-direction:column;align-items:center;gap:6px;animation:shake-tilt .5s ease-in-out infinite;transform-origin:bottom center}@keyframes shake-tilt{0%,to{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(4deg) translateY(-6px)}}.flask:nth-child(2){animation-delay:.05s}.flask:nth-child(3){animation-delay:.1s}.flask:nth-child(4){animation-delay:.15s}.flask:nth-child(5){animation-delay:.2s}.flask svg{width:80px;height:110px}.flask-label{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-soft)}.flask-liquid{animation:slosh .5s ease-in-out infinite}@keyframes slosh{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.charcoal-grain{animation:grain 1.5s ease-in-out infinite}@keyframes grain{0%,to{transform:translate(0)}50%{transform:translate(4px,-4px)}}.shaker-base{height:12px;margin:4px 12px 0;border-radius:0 0 var(--r-xl) var(--r-xl);background:linear-gradient(180deg,#1e293b,#020617);border:1px solid var(--border);border-top:0}.shaker-feet{display:flex;justify-content:center;gap:14px;margin-top:4px}.shaker-foot{width:12px;height:24px;background:#1e293b;border:1px solid var(--border);border-radius:0 0 8px 8px}.shaker-controls{margin:24px auto 0;max-width:420px}.shaker-controls-row{display:flex;justify-content:space-between;margin-bottom:8px}.shaker-controls input[type=range]{width:100%;accent-color:var(--accent)}.shaker-help{font-size:12px;color:var(--muted);margin:14px 0 0;text-align:center;line-height:1.55}.titration-grid{display:grid;grid-gap:24px;gap:24px;grid-template-columns:1fr;padding:24px}@media (min-width:768px){.titration-grid{grid-template-columns:1fr 280px;align-items:center}}.titration-readout{display:flex;flex-direction:column;gap:16px}.readout-card{background:var(--panel-strong);border-radius:var(--r-lg);padding:16px}.readout-value{font-family:Space Grotesk,sans-serif;font-size:1.85rem;font-weight:600;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.readout-bar{height:6px;background:hsla(0,0%,100%,.05);margin-top:10px}.readout-bar-fill{background:linear-gradient(90deg,var(--accent),var(--pink));transition:width .1s linear}.status-card{padding:14px;border-radius:var(--r-lg);border:1px solid var(--border);background:hsla(0,0%,100%,.05);transition:border-color .2s}.status-card.endpoint{border-color:rgba(244,114,182,.5)}.status-card.overshoot{border-color:rgba(251,113,133,.5)}.status-card-msg{margin:4px 0 0;font-weight:500}.status-card-msg.endpoint{color:var(--pink)}.status-card-msg.overshoot{color:var(--rose)}.note{border:1px solid var(--border);padding:14px;border-radius:var(--r-lg);background:hsla(0,0%,100%,.05);font-size:12px;color:var(--muted);line-height:1.55}.note svg{color:var(--accent);width:14px;height:14px;vertical-align:-2px;margin-right:4px}.titration-droplet{animation:drop .35s ease-in infinite}@keyframes drop{0%{transform:translateY(0);opacity:.9}90%{transform:translateY(53px);opacity:.9}to{transform:translateY(53px);opacity:0}}.calc-table-wrap{overflow-x:auto;margin:0 -8px}.calc-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0;font-size:13.5px}.calc-table td,.calc-table th{padding:10px 14px;white-space:nowrap;border-bottom:1px solid hsla(0,0%,100%,.06);text-align:left}.calc-table th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}.calc-table tbody tr{transition:background .15s}.calc-table tbody tr:hover{background:hsla(0,0%,100%,.025)}.calc-mono{font-family:JetBrains Mono,monospace}.calc-value{color:var(--accent)}.calc-row-label{color:var(--ink);font-weight:500}.calc-card-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.calc-card-title{display:flex;align-items:center;gap:8px;font-weight:500}.calc-card-title svg{width:16px;height:16px;stroke:var(--accent)}.calc-formulas{display:grid;grid-gap:14px;gap:14px;grid-template-columns:1fr;font-size:14px}@media (min-width:768px){.calc-formulas{grid-template-columns:repeat(3,1fr)}}.calc-formulas .formula-snip{font-family:Cambria Math,Times New Roman,serif;font-style:italic;background:rgba(2,6,23,.4);padding:10px 14px;border-radius:var(--r-md);border:1px solid var(--border);color:var(--ink)}.fit-note{border-radius:var(--r-lg);padding:14px;border:1px solid var(--border);background:hsla(0,0%,100%,.05)}.fit-note.favorable{border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.06)}.fit-note.unfavorable{border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.06)}.fit-note.irreversible{border-color:rgba(167,139,250,.3);background:rgba(167,139,250,.06)}.fit-note-row{display:flex;gap:12px;align-items:flex-start}.fit-note-row svg{flex-shrink:0;margin-top:2px;width:20px;height:20px}.fit-note.favorable svg{color:var(--emerald)}.fit-note.unfavorable svg{color:var(--amber)}.fit-note.irreversible svg{color:var(--accent-2)}.fit-note-title{font-weight:500;margin:0}.fit-note-msg{margin:2px 0 0;color:var(--ink-soft);font-size:14px}.chart-wrap{width:100%;height:360px}.chart-axis{stroke:rgba(148,163,184,.18)}.chart-grid{stroke:rgba(148,163,184,.1);stroke-dasharray:3 3}.chart-axis-label{fill:var(--muted);font-size:11px;font-family:JetBrains Mono,monospace}.chart-axis-title{fill:var(--muted);font-size:12px}.chart-point{transition:r .15s}.chart-point:hover{r:7}.chart-fit{stroke:var(--accent-2);stroke-width:2;stroke-dasharray:6 4;fill:none}.app-footer{margin-top:64px;padding-top:22px;border-top:1px solid hsla(0,0%,100%,.05);font-size:12px;color:var(--muted-2);display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.2)}}@keyframes slideIn{0%{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .25s ease-out}.phase-nav{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-bottom:18px}@media (max-width:800px){.phase-nav{grid-template-columns:1fr}}.phase-card{position:relative;text-align:left;background:hsla(0,0%,100%,.04);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;color:var(--ink);cursor:pointer;transition:background .18s,border-color .18s,transform .18s}.phase-card:hover{background:hsla(0,0%,100%,.07);transform:translateY(-1px)}.phase-card.active{background:rgba(34,211,238,.08);border-color:rgba(34,211,238,.45);box-shadow:0 0 0 1px rgba(34,211,238,.25),0 12px 28px -16px rgba(34,211,238,.35)}.phase-card.done .phase-card-num{color:var(--emerald)}.phase-card-head{display:flex;align-items:center;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--muted-2);letter-spacing:.5px;margin-bottom:8px}.phase-card-head svg{color:var(--emerald)}.phase-card-title{display:flex;align-items:center;gap:8px;font-family:Space Grotesk,sans-serif;font-weight:600;font-size:1.05rem;margin-bottom:4px}.phase-card-icon{color:var(--accent);display:inline-flex}.phase-card-icon svg{width:18px;height:18px}.phase-card-desc{font-size:12.5px;color:var(--muted);line-height:1.5}.phase-card-num{color:var(--accent)}.phase-scene{background:linear-gradient(180deg,rgba(2,6,23,.5),rgba(15,23,42,.25));border-radius:var(--r-md);padding:20px;border:1px solid var(--border)}.phase-header{margin-bottom:16px}.phase-header h3{margin:0 0 4px;font-family:Space Grotesk,sans-serif;font-size:1.15rem;font-weight:600;color:var(--ink)}.phase-header p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.phase-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.sample-selector{display:flex;align-items:center;gap:6px;flex:1 1;flex-wrap:wrap;justify-content:center}.sample-selector-label{font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--muted-2);letter-spacing:.5px;margin-right:4px}.sample-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:hsla(0,0%,100%,.05);border:1px solid var(--border);color:var(--ink-soft);font-size:12px;cursor:pointer;transition:all .15s}.sample-pill strong{font-family:Space Grotesk,sans-serif;color:var(--accent);font-weight:600}.sample-pill:hover{background:hsla(0,0%,100%,.09)}.sample-pill.active{background:rgba(34,211,238,.15);border-color:rgba(34,211,238,.55);color:var(--ink)}.sample-pill.done strong{color:var(--emerald)}.bench-area{position:relative;padding:20px 12px 0;background:linear-gradient(180deg,transparent 60%,rgba(15,23,42,.4));border-radius:var(--r-md);margin-bottom:18px;overflow:hidden}.bench-glow{position:absolute;bottom:70px;left:5%;right:5%;height:6px;background:radial-gradient(ellipse,rgba(34,211,238,.18),transparent 70%);pointer-events:none}.flask-row{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:12px;gap:12px;position:relative;z-index:1}@media (max-width:720px){.flask-row{grid-template-columns:repeat(5,1fr);gap:4px}}.flask-cell{display:flex;flex-direction:column;align-items:center;gap:6px}.erlen-svg{width:100%;max-width:110px;display:block}.flask-cell-label{text-align:center;font-family:JetBrains Mono,monospace;font-size:10.5px;line-height:1.3}.flask-cell-label strong{display:block;color:var(--accent);font-weight:600;font-size:11px}.flask-cell-label span{color:var(--muted)}.stirrer-base{position:relative;margin:-6px 4% 0;background:linear-gradient(180deg,#475569,#1e293b 35%,#0f172a);border:1px solid hsla(0,0%,100%,.18);border-top-color:hsla(0,0%,100%,.4);border-radius:10px 10px 14px 14px;height:84px;padding:12px 18px 14px;box-shadow:0 14px 28px -10px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.12)}.stirrer-base:before{content:"";position:absolute;left:50%;top:-8px;transform:translateX(-50%);width:80%;height:6px;background:radial-gradient(ellipse,rgba(0,0,0,.5),transparent 70%)}.stirrer-controls{display:flex;align-items:center;gap:16px;height:100%}.stirrer-led{width:12px;height:12px;border-radius:50%;background:rgba(220,38,38,.4);border:1px solid hsla(0,0%,100%,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.4)}.stirrer-led.on{background:#10b981;box-shadow:0 0 8px #10b981,inset 0 1px 1px hsla(0,0%,100%,.4);animation:pulse 1.2s ease-in-out infinite}.stirrer-knob{display:flex;flex-direction:column;align-items:center;gap:2px}.stirrer-knob span{font-family:JetBrains Mono,monospace;font-size:9px;color:hsla(0,0%,100%,.55);letter-spacing:.5px}.stirrer-knob-dial{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#94a3b8,#1e293b);border:1px solid hsla(0,0%,100%,.25);position:relative;box-shadow:inset 0 -2px 4px rgba(0,0,0,.5)}.stirrer-knob-dial:before{content:"";position:absolute;left:50%;top:4px;width:3px;height:10px;transform:translateX(-50%);background:hsla(0,0%,100%,.85);border-radius:1px}.stirrer-knob-dial.spin{animation:knobSpin 2.2s linear infinite}@keyframes knobSpin{to{transform:rotate(1turn)}}.stirrer-screen{margin-left:auto;background:#020617;border:1px solid rgba(34,211,238,.25);border-radius:4px;padding:4px 10px;min-width:110px;font-family:JetBrains Mono,monospace;font-size:11px;box-shadow:inset 0 0 8px rgba(34,211,238,.15)}.stirrer-screen-row{display:flex;justify-content:space-between;gap:14px;color:rgba(34,211,238,.55)}.stirrer-screen-row strong{color:#22d3ee;font-weight:500}.stirrer-brand{position:absolute;right:16px;bottom:6px;font-family:JetBrains Mono,monospace;font-size:8.5px;color:hsla(0,0%,100%,.25);letter-spacing:1px}.stir-bar-spin{transform-origin:50px 134px;animation:stirSpin .55s linear infinite}@keyframes stirSpin{to{transform:rotate(1turn)}}.liquid-swirl{animation:liquidSwirl 3s ease-in-out infinite;transform-origin:50px 100px}@keyframes liquidSwirl{0%,to{transform:skewX(0deg)}50%{transform:skewX(2.5deg)}}.vortex-ring{animation:vortexRing 1.2s ease-in-out infinite;transform-origin:50px 100px}@keyframes vortexRing{0%,to{opacity:.4;transform:scaleX(1)}50%{opacity:.75;transform:scaleX(.85)}}.carbon-drift{animation:carbonOrbit 2s ease-in-out infinite}@keyframes carbonOrbit{0%,to{transform:translate(0)}25%{transform:translate(6px,-3px)}50%{transform:translate(-4px,4px)}75%{transform:translate(-7px,-2px)}}.done-badge{animation:pulse 1.8s ease-in-out infinite}.phase-controls{display:grid;grid-template-columns:1fr 1.4fr;grid-gap:16px;gap:16px;align-items:stretch}@media (max-width:720px){.phase-controls{grid-template-columns:1fr}}.timer-block{background:linear-gradient(180deg,rgba(2,6,23,.7),rgba(15,23,42,.5));border:1px solid rgba(34,211,238,.2);border-radius:var(--r-md);padding:14px 18px;box-shadow:inset 0 0 24px rgba(34,211,238,.05)}.timer-label{font-size:10.5px;color:var(--muted-2);letter-spacing:1px;margin-bottom:6px}.timer-digits,.timer-label{font-family:JetBrains Mono,monospace}.timer-digits{font-size:2.4rem;font-weight:500;color:#22d3ee;text-shadow:0 0 16px rgba(34,211,238,.45);line-height:1;margin-bottom:12px;letter-spacing:2px}.timer-digits.live{animation:timerPulse 1s ease-in-out infinite}@keyframes timerPulse{0%,to{text-shadow:0 0 16px rgba(34,211,238,.45)}50%{text-shadow:0 0 24px rgba(34,211,238,.8)}}.timer-bar{height:6px;background:hsla(0,0%,100%,.07);border-radius:999px;overflow:hidden}.timer-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:999px;transition:width .06s linear}.timer-target{margin-top:6px;font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--muted-2)}.phase-actions{display:flex;flex-direction:column;gap:10px;justify-content:center}.filtration-stage{display:grid;grid-template-columns:1.6fr 1fr;grid-gap:18px;gap:18px;align-items:start}@media (max-width:900px){.filtration-stage{grid-template-columns:1fr}}.filtration-svg{width:100%;height:auto;display:block;background:linear-gradient(180deg,rgba(2,6,23,.4),rgba(15,23,42,.15));border-radius:var(--r-md);border:1px solid var(--border)}.phase-side{display:flex;flex-direction:column;gap:12px}.readout-card{background:hsla(0,0%,100%,.04);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.readout-card .label{display:block;margin-bottom:6px}.readout-card .readout-value{font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:600}.readout-card .readout-value.mono-large{font-family:JetBrains Mono,monospace;font-size:2rem;color:var(--accent);text-shadow:0 0 12px rgba(34,211,238,.25)}.readout-bar{height:8px;border-radius:999px;background:hsla(0,0%,100%,.07);margin-top:8px;overflow:hidden}.readout-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .08s linear}.readout-bar-fill.dark{background:linear-gradient(90deg,#1a1f2e,#0a0f1e)}.readout-sub{margin-top:6px;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted-2)}.pour-stream{stroke-dasharray:4 3;animation:streamFlow .5s linear infinite;opacity:.95}@keyframes streamFlow{to{stroke-dashoffset:-14}}.filter-drop{transform-box:fill-box;animation:filterDrop 1.2s ease-in infinite}@keyframes filterDrop{0%{transform:translateY(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(120px);opacity:0}}.titration-droplet{animation:titrationDrop .9s ease-in infinite}@keyframes titrationDrop{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translateY(40px);opacity:0}}.endpoint-ripple{transform-origin:75px 170px;animation:endpointRipple 1.4s ease-out}@keyframes endpointRipple{0%{transform:scale(.6);opacity:0}40%{transform:scale(1);opacity:.6}to{transform:scale(1.05);opacity:.25}}.titration-stage{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:18px;gap:18px;align-items:start}@media (max-width:900px){.titration-stage{grid-template-columns:1fr}}.titration-svg{width:100%;height:auto;display:block;background:linear-gradient(180deg,rgba(2,6,23,.4),rgba(15,23,42,.15));border-radius:var(--r-md);border:1px solid var(--border)}.burette-zoom-card{background:hsla(0,0%,100%,.04);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.burette-zoom-wrap{display:grid;grid-template-columns:130px 1fr;grid-gap:14px;gap:14px;align-items:center}.burette-zoom-svg{width:130px;height:160px;display:block;background:rgba(2,6,23,.5);border-radius:8px;border:1px solid rgba(34,211,238,.2)}.burette-zoom-help{font-size:12px;color:var(--muted);line-height:1.55}.burette-zoom-help strong{color:var(--accent)}.status-card.endpoint{background:rgba(244,114,182,.08);border-color:rgba(244,114,182,.4)}.status-card-msg.endpoint{color:var(--rose)}