:root{--bg: #f4f5f7;--card: #ffffff;--surface: #f8f9fb;--text: #1d2330;--text-2: #3c4454;--muted: #6b7282;--faint: #9aa1ae;--border: #e3e6eb;--border-strong: #cfd4dc;--accent: #2f5fd0;--accent-hover: #264fb3;--accent-soft: #edf2fd;--warn: #b4235a;--missing: #fff4e8;--missing-border: #f2c48d;--ref: #f3f6fd;--ok: #18794e;--mol-filter: none;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .04);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0e1015;--card: #161920;--surface: #1b1f27;--text: #e7eaf0;--text-2: #c4cad5;--muted: #8f97a5;--faint: #68707d;--border: #272c36;--border-strong: #363c48;--accent: #6d9bff;--accent-hover: #8aafff;--accent-soft: #1a2540;--warn: #f27aa8;--missing: #3a2a14;--missing-border: #7a5524;--ref: #18213a;--ok: #4cc38a;--mol-filter: invert(.92) hue-rotate(180deg);--shadow: none;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}h2,h3,h4{margin:0}.muted{color:var(--muted)}.small{font-size:12px}.center{text-align:center;padding:24px 0}.mono{font-family:var(--mono)}.break{word-break:break-all}.warn{color:var(--warn);margin:6px 0}.ok{color:var(--ok);margin:6px 0}.hint{color:var(--muted);font-size:12px;margin:4px 0 0}.strong{font-weight:600}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.spread{justify-content:space-between}.grow{flex:1 1 240px;min-width:0}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{background:var(--card);border:1px solid var(--border-strong);border-radius:6px;padding:6px 9px;min-height:32px;transition:border-color .12s,box-shadow .12s,background .12s}textarea{min-height:0;line-height:1.45}input::placeholder,textarea::placeholder{color:var(--faint)}input:hover,select:hover,textarea:hover{border-color:var(--faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}select{appearance:none;padding-right:24px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238a919e' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}input[type=radio]{min-height:0;accent-color:var(--accent);margin:0;width:14px;height:14px;cursor:pointer}button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:32px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:6px;padding:5px 12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button:disabled{opacity:.45;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.ghost{background:var(--card);color:var(--text-2);border-color:var(--border-strong)}button.ghost:hover:not(:disabled){background:var(--surface);border-color:var(--faint);color:var(--text)}button.small{min-height:26px;padding:2px 9px;font-size:12px}button.link{min-height:0;background:none;border:0;padding:0;color:var(--accent);font-weight:500;text-align:left;white-space:normal}button.link:hover:not(:disabled){background:none;text-decoration:underline}button.icon{min-height:0;background:none;border:0;color:var(--faint);font-size:17px;line-height:1;padding:4px 6px;border-radius:4px}button.icon:hover:not(:disabled){background:var(--surface);color:var(--warn)}.seg{display:inline-flex;align-items:stretch;border:1px solid var(--border-strong);border-radius:6px;overflow:hidden;background:var(--card)}.seg>button{min-height:28px;padding:2px 10px;font-size:12px;background:transparent;color:var(--text-2);border:0;border-radius:0;border-left:1px solid var(--border);font-weight:500}.seg>button:first-child,.seg-label+button{border-left:0}.seg>button:hover:not(:disabled){background:var(--surface);color:var(--text)}.seg-label{display:flex;align-items:center;padding:0 8px 0 10px;font-size:12px;color:var(--muted);border-right:1px solid var(--border);background:var(--surface)}.lang{display:inline-flex;border:1px solid var(--border-strong);border-radius:6px;overflow:hidden}.lang button{min-height:28px;background:transparent;color:var(--text-2);border:0;border-radius:0;padding:2px 10px;font-size:13px}.lang button:hover:not(:disabled){background:var(--surface);border:0}.lang button.on,.lang button.on:hover{background:var(--accent-soft);color:var(--accent)}.appbar{position:sticky;top:0;z-index:25;background:color-mix(in srgb,var(--card) 92%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(8px);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--border)}.appbar-inner{max-width:1280px;margin:0 auto;padding:8px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand svg{flex:none}.brand-name{font-weight:650;font-size:15px;letter-spacing:.01em;white-space:nowrap}.brand-sub{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-actions{display:flex;gap:8px;align-items:center}.top-actions>button,.top-actions .saved>button{min-height:30px;padding:2px 12px;font-size:13px}.app{max-width:1280px;margin:0 auto;padding:20px 24px 8px}.doc-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 16px}.title-input{flex:1 1 320px;min-width:0;font-size:22px;font-weight:650;letter-spacing:-.01em;padding:4px 8px;margin-left:-8px;border-color:transparent;background:transparent}.title-input:hover{border-color:var(--border);background:var(--card)}.title-input:focus{background:var(--card)}.doc-actions{display:flex;align-items:center;gap:8px}.save-state{font-size:12px;color:var(--muted)}.save-state.dirty{color:var(--warn)}.save-state.dirty:before{content:"●";font-size:8px;vertical-align:2px;margin-right:5px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px 20px;margin-bottom:16px;box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.card-head h2{font-size:13px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.toolbar{display:flex;gap:8px;flex-wrap:wrap}.input-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.input-block h3{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:8px}footer{text-align:center;padding:8px 0 28px}.import{border-radius:var(--radius);transition:background .15s,box-shadow .15s}.import.dragging{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}.import textarea{width:100%;resize:vertical;font-size:12.5px}.import .row{margin-top:8px}.import .smiles-edit{font-size:12px;margin-left:2px}.payload{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--border);border-radius:6px}.chip{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 10px;font-size:12px}.search>.row:first-child select{flex:0 0 auto}.search .manual{margin-top:8px}.search .manual input{flex:1 1 110px;min-width:0}.results{margin-top:8px;border:1px solid var(--border);border-radius:var(--radius);padding:4px;max-height:340px;overflow:auto;background:var(--card)}.results h4{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:8px 8px 2px}.result{display:flex;flex-direction:column;align-items:flex-start;gap:0;width:100%;min-height:0;background:none;color:var(--text);border:0;border-radius:6px;padding:6px 8px;white-space:normal;text-align:left;font-weight:400}.result:hover:not(:disabled){background:var(--surface);border:0}.result-title{font-weight:600}.result-sub{color:var(--muted);font-size:12px}.rx-wrap{padding:4px 0 0;min-height:120px;display:flex;flex-direction:column;justify-content:center}.rx-scheme{display:flex;align-items:center;justify-content:center;gap:14px}.rx-side{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 6px;flex:0 1 auto;min-width:0}.rx-mol{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:0;background:none;border:0;color:var(--text);padding:4px;white-space:normal;font-weight:400;border-radius:6px}.rx-mol:hover:not(:disabled){background:none;border:0}.rx-mol-img{width:clamp(110px,11vw,170px);aspect-ratio:18 / 13;height:auto;filter:var(--mol-filter)}.rx-mol-text{width:clamp(100px,9vw,140px);aspect-ratio:18 / 13;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;color:var(--text-2);border:1px dashed var(--border-strong);border-radius:6px;padding:4px;text-align:center}.rx-mol-name{max-width:170px;font-size:12px;line-height:1.35;text-align:center;color:var(--muted)}.rx-mol:hover .rx-mol-name,.rx-mol:focus-visible .rx-mol-name{color:var(--accent)}.rx-plus{font-size:18px;color:var(--faint);padding:0 2px}.rx-placeholder{display:flex;align-items:center;justify-content:center;width:110px;aspect-ratio:18 / 13;border:1px dashed var(--border-strong);border-radius:6px;color:var(--faint);font-size:12px}.rx-arrow{flex:0 0 clamp(120px,14vw,200px);display:flex;flex-direction:column;align-items:stretch;gap:5px}.rx-arrow-line{position:relative;height:1.5px;background:var(--text-2);margin-right:2px}.rx-arrow-line:after{content:"";position:absolute;right:-2px;top:50%;transform:translateY(-50%);border-left:10px solid var(--text-2);border-top:4.5px solid transparent;border-bottom:4.5px solid transparent}.rx-arrow-text{display:flex;flex-wrap:wrap;gap:0 8px;justify-content:center;font-size:12px;line-height:1.4;min-height:17px;text-align:center}.rx-above{align-items:flex-end}.rx-below{align-items:flex-start}.rx-agent{min-height:0;background:none;border:0;padding:0;color:var(--text-2);font:inherit;white-space:normal}.rx-agent:hover:not(:disabled){background:none;border:0;color:var(--accent);text-decoration:underline}.rx-conditions{flex-basis:100%;color:var(--muted);font-style:italic}.smiles-details{margin-top:10px}.smiles-details summary{cursor:pointer;color:var(--faint);font-size:12px;width:fit-content}.smiles-details summary:hover{color:var(--muted)}.smiles-details p{margin:4px 0 0}.table-wrap{overflow-x:auto;margin:0 -20px;padding:0 20px}table.stoich{border-collapse:separate;border-spacing:0;width:100%;min-width:1020px;margin-bottom:16px;font-variant-numeric:tabular-nums}table.products{min-width:800px;margin-bottom:8px}.stoich th,.stoich td{border-bottom:1px solid var(--border);padding:5px 4px;text-align:left;vertical-align:middle}.stoich th{font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap;padding-top:4px;padding-bottom:7px;border-bottom-color:var(--border-strong)}.stoich th.key{color:var(--text-2)}.stoich tbody tr:last-child td{border-bottom:0}.stoich tbody tr:hover td{background:var(--surface)}.stoich tr.ref td{background:var(--ref)}.stoich td.ro{color:var(--text-2)}.stoich th.r,.stoich td.r{text-align:right}.stoich th.r,.stoich td.ro.r{padding-right:11px}.stoich td.ro.key{font-weight:600;color:var(--text)}.stoich input,.stoich select{min-height:28px;border-color:transparent;background-color:transparent}.stoich tr:hover input,.stoich tr:hover select{border-color:var(--border-strong);background-color:var(--card)}.stoich input:focus,.stoich select:focus{border-color:var(--accent);background-color:var(--card)}.stoich select{padding:2px 22px 2px 6px;background-position:right 6px center}.stoich select.unit{min-height:22px;padding:0 18px 0 5px;font-size:11.5px;color:var(--muted);border-color:var(--border);background-position:right 5px center;font-weight:500}input.num{width:84px;text-align:right;padding:3px 7px}.stoich td.key input.num{font-weight:600;color:var(--text)}input.num.missing,.stoich tr input.num.missing{background-color:var(--missing);border-color:var(--missing-border)}input.num.dispense,.stoich tr input.num.dispense{font-weight:700;color:var(--accent);background-color:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.name-cell{min-width:170px;max-width:260px}.name-wrap{display:flex;align-items:flex-start;gap:8px}.ref-slot{flex:none;width:14px;display:flex;padding-top:3px}.name-text{display:flex;flex-direction:column;min-width:0}.name-cell .name{font-weight:600;color:var(--text);display:block}.name-cell .name:hover{color:var(--accent)}.name-meta{display:flex;align-items:center;gap:6px}.formula{font-size:11.5px;color:var(--muted)}.badge{font-size:10px;font-weight:600;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:0 5px;line-height:16px}.lookup{display:block;font-size:11px;color:var(--accent)}.with-suffix{display:inline-flex;align-items:center;gap:3px}.with-suffix input.num{width:68px}.with-suffix small{color:var(--muted);font-size:11px}.form-cell{display:inline-flex;gap:4px;align-items:center}.fixed{display:inline-block;width:84px;text-align:right;padding-right:8px;font-weight:600;color:var(--text-2)}.density-cell{display:inline-flex;flex-direction:column;align-items:flex-end}.density-cell .src{font-size:10px;color:var(--faint);margin-top:1px;padding-right:8px}@media(max-width:1100px){.stoich .name-th,.stoich .name-cell{position:sticky;left:0;z-index:1;background:var(--card);box-shadow:1px 0 0 var(--border)}.stoich tr.ref .name-cell{background:var(--ref)}.stoich tbody tr:hover .name-cell{background:var(--surface)}}.plan{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;padding:10px 12px;background:var(--surface);border-radius:6px;font-size:13px;color:var(--text-2)}.plan-label{font-weight:600;color:var(--muted);font-size:12px}.plan label{display:inline-flex;align-items:center;gap:6px}.notes-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:16px}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:12px;font-weight:500;color:var(--muted)}.field textarea{width:100%;resize:vertical}.saved{position:relative}.saved-list{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:10px;width:min(340px,calc(100vw - 32px));max-height:380px;overflow:auto;box-shadow:0 12px 32px #10182824}.saved-where{margin:0 0 8px}.saved-item{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:6px;border-radius:6px}.saved-item:hover{background:var(--surface)}.saved-item.current{background:var(--accent-soft)}.saved-item .link{display:flex;flex-direction:column;color:var(--text)}.saved-item small{color:var(--muted);font-weight:400}.saved-footer{display:flex;align-items:center;gap:8px;padding-top:8px;margin-top:6px;border-top:1px solid var(--border)}.panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--card);border-left:1px solid var(--border);box-shadow:-12px 0 32px #1018281a;padding:18px 20px;overflow-y:auto;z-index:40}.panel header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel h3{font-size:13px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.panel h4{margin:14px 0 6px;font-size:12px;font-weight:600;color:var(--muted)}.panel-mol{display:block;width:100%;max-width:280px;margin:12px auto;filter:var(--mol-filter)}.panel dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 14px;margin:14px 0;align-items:baseline}.panel dt{color:var(--muted);font-size:12px}.panel dd{margin:0}.panel dd button{margin-left:6px}.panel dd input{width:100%;min-height:28px;padding:3px 7px}.panel ul{margin:0;padding-left:16px}.panel textarea{width:100%;resize:vertical;font-size:12.5px}.panel .row{margin:8px 0 4px}.ghs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}.ghs figure{margin:0;text-align:center;font-size:11px;width:64px}.ghs img{background:#fff;border-radius:4px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 18px;border-radius:var(--radius);z-index:60;max-width:calc(100vw - 32px);box-shadow:0 8px 24px #0003;font-size:13px}.modal-backdrop{position:fixed;inset:0;background:#0f121980;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--card);border-radius:10px;box-shadow:0 20px 48px #0000004d;display:flex;flex-direction:column;max-width:100%;max-height:100%;overflow:hidden}.editor-modal{width:min(1200px,100%);height:min(780px,100%)}.modal header,.modal footer{display:flex;align-items:center;gap:12px;padding:12px 16px}.modal header h3{font-size:15px;font-weight:650;white-space:nowrap}.editor-host{position:relative;flex:1;min-height:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:#fff;color:#333}.editor-host>div{height:100%}.editor-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1}@media(max-width:900px){.input-grid{grid-template-columns:1fr;gap:18px}.notes-grid{grid-template-columns:1fr}.brand-sub{display:none}}@media(max-width:720px){.rx-scheme{flex-direction:column;gap:4px}.rx-arrow{flex:none;flex-direction:row;align-items:center;width:100%;gap:10px}.rx-arrow-text{flex:1;min-height:0}.rx-above{justify-content:flex-end;text-align:right}.rx-below{justify-content:flex-start;text-align:left}.rx-conditions{flex-basis:auto}.rx-arrow-line{width:1.5px;height:36px;margin:0 0 2px}.rx-arrow-line:after{inset:auto auto -2px 50%;transform:translate(-50%);border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:10px solid var(--text-2);border-bottom:0}}@media(max-width:640px){.appbar-inner{padding:8px 16px;flex-wrap:wrap}.app{padding:14px 16px 8px}.card{padding:14px 16px 16px}.table-wrap{margin:0 -16px;padding:0 16px}.title-input{font-size:19px}.doc-actions{width:100%}.top-actions{gap:6px}}@media print{body{background:#fff;color:#000}.no-print,.panel,.toast,button.icon,.stoich select.unit,.ref-slot{display:none!important}.app{padding:0}.card{border:0;padding:0;box-shadow:none}.table-wrap{margin:0;padding:0}table.stoich{min-width:0}.stoich tr:hover td{background:none}input,select,textarea{border:0!important;background:none!important;padding:0;appearance:none;box-shadow:none}.rx-mol-img,.panel-mol{filter:none}}
