:root{font-family:Inter,"Segoe UI",system-ui,sans-serif;color:#202b30;background:#f5f6f7;--line:#dce2e5;--teal:#126b63;--muted:#647078;letter-spacing:0;color-scheme:light}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #cdd6da;background:white;border-radius:5px;padding:10px 12px;color:inherit;min-height:40px}button:hover{background:#edf5f3;border-color:#5e9990}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #bd6d21;outline-offset:3px}input:focus,select:focus{outline:2px solid #32877e;outline-offset:1px}h1,h2,h3,p{margin:0}h1{font-size:23px}h2{font-size:17px}h3{font-size:14px;margin-bottom:12px}a{color:var(--teal)}
.topbar{background:white;border-bottom:1px solid var(--line);padding:18px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{display:flex;gap:12px;align-items:center}.brand-mark{background:var(--teal);color:white;width:43px;height:43px;display:grid;place-items:center;border-radius:6px;font-weight:700}.brand div>span{color:var(--muted);font-size:13px}.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.condition{font-size:12px;color:var(--muted);margin-right:10px}.layout{display:grid;grid-template-columns:230px minmax(300px,1fr) 290px;max-width:1800px;margin:auto;min-height:calc(100vh - 80px)}.inventory{padding:22px 16px;border-right:1px solid var(--line);background:#fff}.equipment-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.equipment-option{padding:8px 4px;display:flex;align-items:center;flex-direction:column;gap:2px;height:135px;font-size:12px;position:relative}.equipment-option svg{width:68px;height:80px;flex-shrink:0}.equipment-option small{color:var(--muted);font-size:11px}.equipment-option .add{position:absolute;right:6px;top:3px;font-size:20px;color:var(--teal)}.shelf-title{margin-top:30px}.reagent-shelf{margin-top:12px;display:grid;gap:6px}.reagent-item{display:flex;align-items:center;text-align:left;gap:10px;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 2px}.reagent-item svg{width:33px;height:48px;flex-shrink:0}.reagent-item strong,.reagent-item small{display:block;font-size:12px}.reagent-item small{color:var(--muted);margin-top:4px}.model-details{font-size:12px;color:var(--muted);margin-top:26px;line-height:1.65}.model-details summary{cursor:pointer;color:#394a52}.model-details p{margin:10px 0}.workspace{min-width:0;padding:24px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.section-heading>span,.count{font-size:12px;color:var(--muted)}.eyebrow{color:var(--teal);font-size:11px;font-weight:700;display:block;margin-bottom:6px}.count{padding:6px 8px;background:#e8eeef;border-radius:4px}.bench{margin-top:18px;min-height:300px;padding:22px 12px 26px;display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;align-content:flex-end;background:linear-gradient(0deg,#d9e0e3 0 15px,transparent 15px),repeating-linear-gradient(0deg,transparent 0 39px,#e5eaec 39px 40px),repeating-linear-gradient(90deg,#f9fbfc 0 39px,#e5eaec 39px 40px);border-bottom:3px solid #85959e}.bench-empty{width:100%;text-align:center;color:var(--muted);font-size:14px;padding:60px 0}.bench-item{width:126px;flex:0 0 126px;height:223px;padding:8px;background:#ffffffa8;border:1px solid transparent;display:flex;align-items:center;flex-direction:column;justify-content:flex-end;position:relative}.bench-item[aria-pressed="true"]{border:2px solid var(--teal);background:#eef9f5}.bench-item svg{width:88px;height:137px;flex-shrink:0}.bench-item strong{font-size:12px;margin-top:6px}.bench-item small{font-size:11px;color:#53636c;min-height:16px}.bench-item .device-tag{font-size:10px;color:var(--teal);position:absolute;top:7px}.notice{min-height:52px;padding:13px 0;font-size:13px;color:var(--teal);line-height:1.5}.notice.error{color:#a13e32}.results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-block:1px solid var(--line);padding:18px 0;gap:12px}.results span{font-size:11px;color:var(--muted);display:block}.results strong{font-size:23px;display:block;margin-top:7px;font-variant-numeric:tabular-nums}.analysis,.chart-section,.notebook{padding:22px 0;border-bottom:1px solid var(--line)}#equation{font-size:20px;margin-top:18px;color:var(--teal)}dl{display:grid;grid-template-columns:1fr auto;gap:8px;font-size:13px;margin:18px 0 0}dt{color:var(--muted)}dd{margin:0;font-variant-numeric:tabular-nums}canvas{width:100%;height:220px;display:block;margin-top:12px}#chart-empty{font-size:12px;color:var(--muted);text-align:center}.notebook ol{padding-left:24px;max-height:320px;overflow:auto;margin-bottom:0;font-size:12px;line-height:1.6}.notebook li{padding:8px 0;border-bottom:1px solid var(--line)}.notebook button{font-size:12px}.controls{background:white;padding:24px 18px;border-left:1px solid var(--line)}label{display:grid;gap:6px;font-size:12px;color:#53636c;margin:14px 0}input,select{width:100%;min-width:0;border:1px solid #cdd6da;border-radius:4px;padding:10px;background:white;color:#202b30;min-height:40px}form{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.primary{background:var(--teal);color:white;width:100%;border-color:var(--teal)}.primary:hover{background:#0b544e}.selection-info{font-size:12px;color:var(--muted);line-height:1.6}.measure-actions{padding-top:20px;margin-top:20px;border-top:1px solid var(--line);display:grid;gap:8px}.measure-actions h3{margin-bottom:0}.vessel-actions{display:grid;gap:8px;margin-top:24px}.danger{color:#a13e32}.glass{fill:#f4fbff55;stroke:#547b8c;stroke-width:2.5;stroke-linejoin:round}.liquid-shape{fill:#77c6dd;opacity:.55}.marks{stroke:#547b8c;stroke-width:1;fill:none}
#report-dialog{border:1px solid var(--line);border-radius:6px;width:min(620px,calc(100% - 24px));max-height:90vh;padding:24px;color:inherit}#report-dialog::backdrop{background:#202b3070}#report-form{border:0;margin:0;padding:0}.report-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}textarea{font:inherit;width:100%;min-width:0;border:1px solid #cdd6da;border-radius:4px;padding:10px;resize:vertical}.report-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.report-actions .primary{width:auto}#report-error{font-size:13px;color:#a13e32} @media(max-width:450px){.report-fields{grid-template-columns:1fr}.report-actions{flex-direction:column}}
@media(min-width:1550px){.layout{grid-template-columns:250px minmax(300px,1fr) 320px}.bench-item{width:145px;flex-basis:145px}}
@media(max-width:1100px){.layout{grid-template-columns:190px minmax(0,1fr)}.controls{grid-column:1/-1;border-top:1px solid var(--line);border-left:0;display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.controls>h2,.controls>.selection-info,.controls>label{grid-column:1/-1}.workspace{padding:20px}.equipment-option{font-size:11px}}
@media(max-width:650px){.topbar{padding:14px;align-items:flex-start;flex-direction:column}.header-actions{width:100%}.header-actions button{font-size:12px;flex:1}.condition{width:100%;margin:0}.layout{display:block}.inventory{padding:16px;border-right:0;border-bottom:1px solid var(--line)}.equipment-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.equipment-option{height:125px}.shelf-title{margin-top:18px}.reagent-shelf{grid-template-columns:1fr}.reagent-item{padding:7px}.model-details{margin-top:14px}.workspace{padding:16px}.bench{gap:6px;padding:12px 6px 25px}.bench-item{width:calc(50% - 3px);flex-basis:calc(50% - 3px)}.results strong{font-size:19px}.results span{font-size:10px}.controls{display:block;padding:20px 16px}.section-heading h2{font-size:16px}}

.reagent-safety{margin-top:18px;padding:14px;border:1px solid #d9b575;border-radius:6px;background:#fffaf0;font-size:12px;line-height:1.5}.reagent-safety[hidden]{display:none}.reagent-safety h3{margin-top:0}.safety-icons{display:flex;gap:12px;flex-wrap:wrap}.safety-icons figure{margin:0;flex:1;min-width:85px;text-align:center}.safety-icons svg{width:76px;height:76px}.safety-icons figcaption{font-size:11px}.reagent-safety a{overflow-wrap:anywhere}

.iodine-lab{padding:22px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.6}.iodine-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.iodine-observation{display:flex;gap:20px;align-items:center;margin-top:20px}.iodine-observation svg{width:100px;height:135px;flex-shrink:0}.iodine-lab button{margin:6px 0}.iodine-lab details{margin:12px 0}.iodine-lab[hidden],#iodine-run[hidden]{display:none}#iodine-equation{overflow-wrap:anywhere;color:var(--teal)}

/* Independent, bounded inventory panes. */
.inventory{position:sticky;top:12px;align-self:start;height:calc(100dvh - 120px);display:flex;flex-direction:column;min-height:0}
.inventory>h2{flex:none}
.inventory .equipment-grid,.inventory .reagent-shelf{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-gutter:stable;padding:4px 6px 6px 4px;border:1px solid var(--line);border-radius:6px;scrollbar-width:thin;scrollbar-color:#8ba9a4 #f0f4f3}
.inventory .equipment-grid{flex:1 1 0;grid-auto-rows:155px;align-content:start;margin-top:10px}
.inventory .equipment-option{height:155px;justify-content:flex-start;padding:8px 4px;min-width:0}
.inventory .equipment-option svg{height:88px;width:68px}
.inventory .equipment-option>span:not(.add){line-height:1.25;overflow-wrap:anywhere}
.inventory .equipment-option small{margin-top:auto}
.inventory .shelf-title{margin-top:16px}
.inventory .reagent-shelf{flex:1 1 0;display:flex;flex-direction:column;gap:10px;margin-top:10px}
.inventory .reagent-item{flex:0 0 auto;width:100%;height:auto;min-height:88px;min-width:0;padding:12px 6px;align-items:flex-start;line-height:1.5}
.inventory .reagent-item>span{display:block;flex:1;min-width:0;overflow-wrap:anywhere;white-space:normal}
.inventory .reagent-item strong{line-height:1.5}
.inventory .reagent-item small{margin-top:6px;line-height:1.5}
.inventory .model-details{flex:0 0 auto;max-height:100px;overflow:auto;margin-top:12px}
.inventory [role="region"]:focus-visible{outline:3px solid #bd6d21;outline-offset:2px}
@media(max-width:650px){
 .inventory{position:static;height:auto;display:block}
 .inventory .equipment-grid{height:280px;max-height:40dvh;grid-auto-rows:155px}
 .inventory .reagent-shelf{height:240px;max-height:35dvh}
 .inventory .model-details{max-height:100px}
}
@media(min-width:651px) and (max-height:540px){
 .inventory{height:calc(100dvh - 24px);padding-top:12px;padding-bottom:12px}
 .inventory .model-details{max-height:48px}
}

.bench-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}.bench-toolbar .primary{width:auto;min-width:110px}.bench-toolbar span{font-size:12px;color:#53636c}.titration-station{position:relative;flex:0 0 145px;width:145px;height:420px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.titration-station .bench-item{width:140px;flex:none}.titration-station .mounted-burette{position:absolute;top:0;height:230px;justify-content:flex-start;background:transparent;z-index:1}.mounted-burette svg{order:3;height:175px;width:130px}.mounted-burette strong{order:1}.mounted-burette small{order:2}.titration-station .titration-receiver{height:200px}.titration-receiver svg{height:137px}.mounted-burette[aria-pressed="true"]{background:#eef9f566}

/* Stand and clamp remain one assembly with the burette. */
.supported-station{width:180px;flex-basis:180px;height:460px;padding-bottom:44px;isolation:isolate}
.supported-station .mounted-stand{position:absolute;bottom:0;left:0;width:180px;height:44px;min-height:44px;padding:0;background:#edf2f4;z-index:3;justify-content:center}
.supported-station .mounted-stand svg{position:absolute;left:0;bottom:44px;width:180px;height:400px;pointer-events:none;z-index:-1}
.supported-station .mounted-stand strong{font-size:10px;margin:0}.supported-station .mounted-stand small{font-size:10px}
.supported-station .titration-receiver{z-index:1}.supported-station .mounted-burette{z-index:2}
.chemistry-page .controls{overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;min-height:0;scrollbar-width:thin;scrollbar-color:#8ba9a4 #f0f4f3}
@media(min-width:900px){
 .chemistry-page{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
 .chemistry-page>.topbar{flex:0 0 auto}
 .chemistry-page>.layout{width:100%;flex:1 1 0;min-height:0;overflow:hidden;margin:0 auto;grid-template-columns:190px minmax(0,1fr) 290px}
 .chemistry-page .workspace{min-height:0;overflow-y:auto;overscroll-behavior-y:contain}
 .chemistry-page .inventory{position:static;height:100%;align-self:stretch}
 .chemistry-page .controls{height:100%;display:block;grid-column:auto;border-left:1px solid var(--line);border-top:0}
}
@media(min-width:1550px){.chemistry-page>.layout{grid-template-columns:250px minmax(0,1fr) 320px}}
@media(max-width:899px){.chemistry-page .controls{max-height:75dvh}}
.titration-drop{pointer-events:none}.falling-drop{animation:titrant-fall .2s ease-in both}.indicator-plume{animation:indicator-diffusion 1.5s ease-out both}.drop-ripple{transform-box:fill-box;transform-origin:center;animation:titrant-ripple .65s .15s ease-out both}@keyframes titrant-fall{0%{transform:translateY(-10px);opacity:0}20%{opacity:1}90%{opacity:1}100%{transform:translateY(18px);opacity:0}}@keyframes indicator-diffusion{0%,10%{opacity:0;transform:scale(.2)}22%{opacity:.95;transform:scale(.8)}55%{opacity:.7;transform:scale(1.6,1.9)}100%{opacity:0;transform:scale(2.8,3)}}@keyframes titrant-ripple{from{opacity:.8;transform:scale(.3)}to{opacity:0;transform:scale(2)}}@media(prefers-reduced-motion:reduce){.falling-drop,.drop-ripple{animation:none;opacity:0}.indicator-plume{animation:none;opacity:.7}}
#chart{height:350px;background:#fff;border:1px solid #dce7ed;border-radius:10px}#chart-slope{height:180px;border:1px solid #dce7ed;border-radius:8px}#chart-slope[hidden]{display:none}.chart-tools{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.chart-tools label{flex:1;min-width:150px}.chart-tools .curve-toggle{display:flex;align-items:center;gap:7px;font-size:11px}.curve-toggle input{width:16px;min-height:16px;height:16px}.curve-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:10px;color:#526b7b}.curve-line{color:#116c8c}.curve-measured{color:#d87923}.curve-equivalence{color:#a74975}.curve-summary{background:#edf6fa;border-left:3px solid #116c8c;padding:12px;font-size:12px;line-height:1.6;font-variant-numeric:tabular-nums}.curve-table{overflow:auto;max-height:300px;margin-top:12px}.curve-table table{border-collapse:collapse;width:100%;font-size:11px}.curve-table th,.curve-table td{padding:7px;text-align:right;border-bottom:1px solid #dae5eb}.curve-table th{position:sticky;top:0;background:#eef5f9}.chart-section details summary{cursor:pointer;font-size:12px;color:#294c60}
