*{box-sizing:border-box}html,body{overflow:hidden;height:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}body{background:#fafaf7}#cv{display:block;touch-action:none;width:100vw;height:100vh}#toolbar{position:fixed;display:flex;z-index:10;overflow:hidden;background:#fff;border:1px solid #e6e6e1;border-radius:10px;flex-wrap:nowrap;justify-content:flex-start;align-items: center;gap:3px 8px;max-width:97vw;padding:4px 8px;top:8px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000012}#toolbar.tight #utilGroup .mlbl,#toolbar.compact .mlbl{display:none}#toolbar.compact .kb{left:2px}#toolbar.compact .mode,#toolbar.compact #ligBtn{padding-left:9px}#homeworkPop{position:fixed;z-index:16;display:none;overflow-y:auto;background:#fff;border:1px solid #e2e2dd;border-radius:10px;flex-direction:column;gap:2px;width:270px;max-height:62vh;padding:6px;box-shadow:0 8px 24px #00000024}#homeworkPop.open{display:flex}#homeworkList button{overflow-wrap:break-word}#homeworkList button{text-align:left;background:0 0;border:1px solid #0000;border-radius:7px;width:100%;padding:5px 7px;font-size:12px;line-height:1.35}#homeworkList button:hover{background:#f4f4ff}#homeworkList .sb{display:block;color:#9a9a92;font-size:10.5px}#homeworkList .sh{color:#999;text-transform:uppercase;letter-spacing:.03em;padding:8px 7px 2px;font-size:10.5px}#homeworkList{display:flex;flex-direction:column;gap:2px}.hw-levels{display:flex;gap:4px}.hw-levels .lvl{text-align:center;flex:1;padding:4px 2px;font-size:11.5px}.hw-levels .lvl.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}#stepsDots{color:#6965db;margin:2px 0 6px;font-size:11px;font-weight:600}#stepsGoal{color:#777;margin-bottom:8px;font-size:11.5px;line-height:1.4}#stepsSubmit{border-top:1px solid #eee;margin-top:10px;padding-top:9px}#stepsSubmit[hidden]{display:none}#submitBtn{color:#fff;background:#4a47b1;border-color:#4a47b1;width:100%;padding:6px}#submitBtn:hover{background:#3f3d99}#toolbar button[disabled]{opacity:.38;cursor:default}#toolbar button[disabled]:hover{background:#fff}#moreBtn{padding:2px 7px;font-size:15px;line-height:12px}#morePop{position:fixed;z-index:16;display:none;background:#fff;border:1px solid #e2e2dd;border-radius:10px;flex-direction:column;gap:3px;min-width:150px;padding:6px;box-shadow:0 8px 24px #00000024}#morePop.open{display:flex}#morePop button{text-align:left;display:flex;align-items: center;gap:6px;width:100%}#morePop .mlbl{display:inline!important}#morePop .kb{position:static;opacity:.6;margin-left:auto}#toolbar .group{flex:none}#toolbar button,#toolbar input{white-space:nowrap}.group{display:flex;align-items: center;gap:3px}.group[hidden]{display:none}.group+.group{border-left:1px solid #eee;padding-left:8px}.group:empty{display:none}button,select,input{cursor:pointer;color:#333;background:#fff;border:1px solid #d6d6d0;border-radius:6px;padding:3px 7px;font:12px inherit}#toolbar .lbl{display:none}#toolbar .mode,#toolbar #ligBtn,#toolbar button{padding-top:3px;padding-bottom:3px}input[type=text]{cursor:text}#seqIn{text-transform:uppercase;font-family:ui-monospace,Menlo,monospace}input[type=number]{cursor:text;width:54px}button:hover,select:hover{background:#f5f5ff}button.mode.active{color:#4a47b1;background:#e0dfff;border-color:#6965db}#modeBtn{display:inline-flex;align-items: center;gap:5px}#modeBtn .caret{color:#b0b0a8;font-size:9px}#modePop{position:fixed;z-index:16;display:none;background:#fff;border:1px solid #e2e2dd;border-radius:10px;flex-direction:column;gap:2px;width:250px;padding:6px;box-shadow:0 8px 24px #00000024}#modePop.open{display:flex}#modePop button{display:flex;text-align:left;background:0 0;border:1px solid #0000;border-radius:7px;align-items: flex-start;gap:8px;width:100%;padding:6px 7px}#modePop button:hover{background:#f4f4ff}#modePop button.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}#modePop .sb{display:block;color:#9a9a92;font-size:10.5px;line-height:1.35}#modePop .ghosttoggle{color:#777;border-top:1px solid #f0f0ea;border-radius:0;justify-content:flex-start;margin-top:4px;padding-top:7px;font-size:11.5px}.swatch{outline:1px solid #ccc;border:2px solid #fff;border-radius:6px;width:20px;height:20px;padding:0}.swatch:hover{outline:2px solid #6965db}.lbl{color:#888;font-size:12px}#colorBtn{padding:3px 5px}#colorChip{display:inline-block;outline:1px solid #bbb;vertical-align:middle;background:#f59e0b;border-radius:4px;width:16px;height:16px}#colorPop{position:fixed;z-index:16;display:none;background:#fff;border:1px solid #e2e2dd;border-radius:10px;flex-direction:column;gap:8px;padding:10px;box-shadow:0 8px 24px #00000024}#colorPop.open{display:flex}#colorSwatches{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}#colorPop .cp-row{display:flex;color:#666;align-items: center;gap:6px;font-size:12px}.mode,#ligBtn{position:relative;padding-left:12px}.kb{position:absolute;color:#bcbcb4;font-size:8.5px;font-weight:400;top:1px;left:3px}#enzPanel,#transformPanel,#dogmaPanel,#pcrPanel,#randomPanel,#partPanel,#reactionPanel{position:fixed;z-index:12;display:none;background:#fff;border:1px solid #e9e9e4;border-radius:12px;width:210px;padding:12px;top:60px;left:14px;box-shadow:0 8px 24px #0000001a}#props{position:fixed;z-index:12;display:none;background:#fff;border:1px solid #e9e9e4;border-radius:12px;width:200px;padding:12px;top:60px;right:14px;box-shadow:0 8px 24px #0000001a}#props.open,#enzPanel.open,#cutPanel.open,#randomPanel.open,#transformPanel.open,#dogmaPanel.open,#pcrPanel.open,#partPanel.open,#reactionPanel.open{display:block}#partList,#reactionList{overflow-y:auto;max-height:calc(100vh - 230px);margin-top:6px}.pgl{display:flex;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items: center;gap:8px;width:100%;padding:2px 5px;font-size:12px}.pgl:hover{background:#f4f4ff}.pgl.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}.pgl canvas{flex:none}.rgrouphead{color:#a0a099;text-transform:lowercase;margin:6px 0 2px 2px;font-size:10px}#partDesc,#reactionDesc{color:#888;min-height:26px;margin-top:8px;font-size:11px}.glyphcell{width:96px}#groupBar,#groupProps{display:none}#groupBar.on,#groupProps.on{display:block}#groupBtn{display:flex;justify-content:center;align-items: center;gap:6px;width:100%}#groupName{width:100%}#groupSwatches{flex-wrap:wrap;gap:4px}.gsz{text-align:center;flex:1}.gsz.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}#ungroupBtn{width:100%;margin-top:8px}.tf,.dg,.pol{text-align:left;width:100%;font-size:12px}.dg{display:flex;align-items: center;gap:10px;padding:8px 9px}.dg i{display:flex;color:#6965db;flex:none}.dgl{display:flex;flex-direction:column;line-height:1.3}.dg .dgl{font-size:12.5px}.dgs{color:#9a9a92;font-size:11px}.dg.sel .dgs{color:#6965db}#flipH,#flipV,#flipA{display:inline-flex;align-items: center;gap:5px}.tsz{text-align:center;flex:1}.tsz.sel,#textBold.active,#textItalic.active,.tf.sel,.dg.sel,.pol.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}#pcrTube{display:flex;flex-direction:column;gap:3px;margin-top:2px}.tube-row{display:flex;color:#555;align-items:baseline;gap:6px;font-size:11.5px}.tube-row .dot{border-radius:2px;flex:none;align-self: center;width:8px;height:8px}.tube-row .nm{color:#444;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-weight:600}.tube-row .at{color:#999;text-align:right;overflow-wrap:break-word;min-width:0;margin-left:auto}.tube-row.bad .at{color:#dc2626}#pcrRun[disabled]{opacity:.45;cursor:not-allowed}#pcrYield{color:#0d9488;margin-top:6px;font-size:12px;font-weight:600}.cut-note{color:#999;margin-top:8px;font-size:11px}.chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.eg{text-align:center;flex:0 auto;padding:3px 6px;font-size:10.5px}.eg.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}#homeworkPop,#cheatBody{overflow-x:hidden}#enzCount{color:#555;margin-top:8px;font-size:11.5px}#enzNames{display:flex;overflow-y:auto;overflow-x:hidden;flex-wrap:wrap;gap:3px;max-height:calc(100vh - 260px);margin-top:6px}#enzNames .en{color:#7a7a72;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:1px 5px;font-size:11px}#enzNames .en:hover{color:#4a47b1;background:#f2f1ff}#enzNames .en.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}.ei{display:block;text-align:left;cursor:pointer;white-space:normal;overflow-wrap:break-word;background:0 0;border:1px solid #0000;border-radius:6px;width:100%;padding:3px 6px;font-size:12px}.ei:hover{background:#f4f4ff}.ei.sel{color:#4a47b1;background:#e0dfff;border-color:#6965db}.ei.none{color:#888;margin-bottom:4px;font-style:italic}.ei code{color:#6965db;font-family:ui-monospace,Menlo,monospace;font-size:11px}#enzDesc{color:#888;min-height:14px;margin-top:8px;font-size:11px}.props-title{color:#444;font-size:13px;font-weight:600}#props input,#props select{width:100%}.prow{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.prow button{white-space:nowrap;flex:auto;min-width:0;padding:5px 4px;font-size:12px}#props button.active{color:#4a47b1;background:#e0dfff;border-color:#6965db}#props .del{color:#dc2626;border-color:#f0caca;width:100%;margin-top:10px}#props .del:hover{background:#fdf1f1}#swatches{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}#hint{display:none}#hint.on{display:block}#hint{position:fixed;color:#666;z-index:10;pointer-events:none;text-align:center;background:#ffffffeb;border:1px solid #e5e5e0;border-radius:8px;max-width:94vw;padding:5px 14px;font-size:12.5px;bottom:10px;left:50%;transform:translate(-50%)}#toast{position:fixed;color:#fff;opacity:0;pointer-events:none;z-index:20;background:#1e293b;border-radius:8px;padding:8px 16px;transition:opacity .25s;font-size:13px;bottom:52px;left:50%;transform:translate(-50%)}#drawColor{width:30px;height:26px;padding:1px 2px}#panel{position:fixed;z-index:15;display:none;background:#fff;border:1px solid #e2e2dd;border-radius:12px;width:300px;padding:14px;top:72px;right:14px;box-shadow:0 8px 24px #0000001f}#panel.open{display:block}#panelTitle{color:#333;margin-bottom:8px;font-size:14px;font-weight:600}.panel-msg{color:#888;margin:0 0 8px;font-size:12.5px}.panel-lbl{display:block;color:#888;margin:6px 0 3px;font-size:12px}#panelBody input,#panelBody textarea{cursor:text;resize:vertical;width:100%}#panelBody .mono{text-transform:uppercase;font-family:ui-monospace,Menlo,monospace}#panelBtns{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}#panelOk{color:#fff;background:#2563eb;border-color:#2563eb}#panelOk:hover{background:#1d4ed8}#panelOk.danger{background:#dc2626;border-color:#dc2626}#panelOk.danger:hover{background:#b91c1c}#cheat{position:fixed;z-index:14;display:none;background:#fff;border:1px solid #e2e2dd;border-radius:12px;flex-direction:column;width:min(560px,100vw - 28px);max-height:calc(100vh - 96px);top:72px;right:14px;box-shadow:0 8px 24px #0000001f}#cheat.open{display:flex}#cheatHead{display:flex;border-bottom:1px solid #eee;justify-content:space-between;align-items: center;padding:8px 10px}#cheatTabs{display:flex;gap:4px}.ctab{padding:4px 8px;font-size:12px}.ctab.active{color:#4a47b1;background:#e0dfff;border-color:#6965db}#cheatClose{color:#999;background:0 0;border:none;padding:2px 6px;font-size:14px}#cheatBody{overflow-y:auto;color:#333;padding:12px 14px;font-size:12.5px;line-height:1.5}#cheatTabs{flex-wrap:wrap}.wheel{display:block;width:100%;max-width:480px;margin:0 auto}.wheel path{stroke:#fff;stroke-width:.8}.wheel .w1{fill:#f6f6fb}.wheel .w2{fill:#fbfbfd}.wheel .w3{fill:#fff}.wheel .wl4.start{fill:#15803d}.wheel .wl4.stop{fill:#b91c1c}.wheel [data-k]{transition:fill 80ms}.wheel path.hot{fill:#6965db;stroke:#fff}.wheel path.w4.hot{fill:#4a47b1}.wheel text.hot{fill:#fff;font-weight:700}.wheel .whubt,.wheel .whubs{pointer-events:none}.wheel text{text-anchor:middle;dominant-baseline:central;font-family:ui-monospace,Menlo,monospace}.wheel .wl1{fill:#4a47b1;font-size:19px;font-weight:700}.wheel .wl2{fill:#666;font-size:13px}.wheel .wl3{fill:#999;font-size:9px}.wheel .wl4{fill:#333;font-size:11px;font-weight:600}.wheel .wl4.start{fill:#16a34a}.wheel .whub{fill:#fff;stroke:#ececf5}.wheel .whubt{fill:#6965db;font-size:12px;font-weight:600}.wheel .whubs{fill:#aaa;font-family:inherit;font-size:9px}.wlegend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 10px;margin:8px 0 2px}.wkey{display:flex;color:#777;align-items: center;gap:4px;font-size:11px}.wkey i{border:1px solid #e4e4ea;border-radius:3px;width:11px;height:11px}table.reftable{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}table.reftable td,table.reftable th{vertical-align:top;text-align:left;border-bottom:1px solid #f2f2ee;padding:3px 7px}table.reftable thead th{position:sticky;z-index:3;color:#999;text-transform:uppercase;letter-spacing:.03em;background:#fff;border-bottom:1px solid #e4e4ea;font-size:10.5px;font-weight:600;top:0}table.reftable tbody th{color:#333;text-transform:none;letter-spacing:0;font-size:12px;font-weight:400}table.reftable tbody th.stick,table.reftable thead th.stick{position:sticky;background:#fff;left:0}table.reftable tbody th.stick{z-index:2;box-shadow:1px 0 #f0f0ea}table.reftable thead th.stick{z-index:4;box-shadow:1px 0 #e4e4ea}table.reftable .c1{color:#4a47b1;width:24px;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:700}table.reftable .d{color:#9a9a92}table.reftable code{color:#555;font-family:ui-monospace,Menlo,monospace;font-size:11px}.scrollx{overflow:auto;overscroll-behavior:contain;max-height:calc(100vh - 330px);margin:0 -14px;padding:0 14px}table.usage{border-collapse:separate;border-spacing:0;font-size:12px}table.usage th,table.usage td{border-bottom:1px solid #f4f4f0;padding:2px 7px}table.usage thead th{position:sticky;z-index:3;color:#666;text-align:left;white-space:nowrap;background:#fff;border-bottom:1px solid #e4e4ea;font-size:11px;font-weight:600;top:0}table.usage th.stick{position:sticky;z-index:2;text-align:left;background:#fff;font-weight:400;left:0;box-shadow:1px 0 #f0f0ea}table.usage thead th.stick{z-index:4}table.usage thead th.k-bacterium{box-shadow:inset 0 -2px #cfe3d6}table.usage thead th.k-fungus{box-shadow:inset 0 -2px #e6dcc4}table.usage thead th.k-plant{box-shadow:inset 0 -2px #d6e5c9}table.usage thead th.k-animal{box-shadow:inset 0 -2px #d3dbf0}table.usage .uhead th,table.usage .uhead td{color:#4a47b1;border-bottom:1px solid #ececf5;padding-top:9px;font-size:11.5px;font-weight:600}table.usage code{font-family:ui-monospace,Menlo,monospace}.ucell{position:relative;min-width:62px}.ubar{position:absolute;z-index:0;background:#dcdbf7;border-radius:2px;top:3px;bottom:3px;left:6px}.ucell.rare .ubar{background:#fbdcdc}.upct{position:relative;z-index:1;color:#555}.ucell.rare .upct{color:#b91c1c}table.reftable .rgroup td{color:#4a47b1;background:#fbfbfd;border-bottom:1px solid #ececf5;padding-top:7px;font-size:11px;font-weight:600}table.reftable b{color:#3f3f46;font-weight:600}table.reftable code.copy{color:#4a47b1;white-space:nowrap}table.reftable code.none{color:#ccc;border:none}.copy{cursor:pointer;border-bottom:1px dotted #c7c7d8}.copy:hover{background:#f2f1ff}.copy.copied{background:#dcfce7;border-bottom-color:#16a34a}.exgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.excard{display:block;text-align:left;cursor:pointer;background:0 0;border:1px solid #ececf5;border-radius:10px;width:100%;padding:6px 6px 8px}.excard:hover{background:#fafaff;border-color:#6965db}.excard canvas{display:block;background:#fbfbf8;border:1px solid #f0f0ea;border-radius:6px;width:100%;height:210px;margin-bottom:6px}.hwrow{display:flex;text-align:left;align-items: center;gap:8px;width:100%}.hwrow canvas{background:#fbfbf8;border:1px solid #f0f0ea;border-radius:5px;flex:none;width:64px;height:64px}.hwrow .hwtext{display:flex;flex-direction:column;min-width:0}.excard .ex-title{display:block;color:#3f3f46;font-size:12px;font-weight:600}.excard .d{display:block;color:#9a9a92;margin-top:1px;font-size:11px;line-height:1.35}#cheatBody h4{color:#555;margin:10px 0 4px;font-size:12px}#cheatBody h4:first-child{margin-top:0}.codegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px 6px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.codegrid .stop{color:#dc2626}.codegrid .start{color:#16a34a;font-weight:700}.enzrow{display:flex;justify-content:space-between;gap:8px;padding:1px 0}.enzrow code{color:#6965db;font-family:ui-monospace,Menlo,monospace}.enzrow .d{color:#999;font-size:11px}.iupac{border-collapse:collapse;width:100%}.iupac td{border-bottom:1px solid #f0f0ec;padding:2px 4px;font-family:ui-monospace,Menlo,monospace}.iupac td:first-child{color:#6965db;width:28px;font-weight:700}.cheat-note{color:#999;margin:2px 0 0;font-size:11px}#toolbar select{max-width:190px}#scenePick{font-size:12px}#props .del{margin-top:10px}.ends-note{color:#888;border-top:1px solid #f0f0ec;margin-top:6px;padding-top:6px;font-size:11px;line-height:1.4}.ei.blocked{opacity:.55}.ei .tag{color:#b45309;background:#fef3c7;border-radius:4px;margin-left:4px;padding:0 4px;font-size:9.5px}#steps{position:fixed;z-index:11;color:#444;display:none;background:#fff;border:1px solid #e9e9e4;border-radius:12px;width:260px;padding:10px 12px;font-size:12px;bottom:44px;left:14px;box-shadow:0 8px 24px #0000001a}#steps.open{display:block}#steps h5{color:#333;margin:0 0 6px;font-size:12px}#steps ol{margin:0;padding-left:18px}#steps li{margin-bottom:3px;line-height:1.35}#stepsClose{position:absolute;color:#999;background:0 0;border:none;padding:2px 5px;font-size:13px;top:6px;right:6px}#toast.error{background:#7f1d1d}#toolbar button,.tf,.dg,.cs,#sangerBtn{display:inline-flex;align-items: center;gap:5px}.icon{display:block;flex:none}#toolbar button .icon{opacity:.78}#toolbar button:hover .icon,#toolbar button.active .icon{opacity:1}.tf .icon,.dg .icon,#sangerBtn .icon{opacity:.7}#featureList{display:flex;flex-direction:column;gap:3px;margin-top:2px}.feature-row{display:flex;align-items: center;gap:4px}.feature-row input{flex:auto;min-width:0;font-size:12px}.feature-row button:not(.swatch){padding:2px 5px;font-size:11px;line-height:1}.feature-row .swatch{flex:none;width:14px;height:14px}#textSwatches{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}#textSwatches .swatch.active{outline:2px solid #6965db}#textProps,#molProps,#partProps,#metaProps,#reactionProps{display:none}#textProps.on,#molProps.on,#partProps.on,#metaProps.on,#reactionProps.on{display:block}#metaSmiles{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px}
