:root{font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:#e9edf4;background:#0a111c;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #35465b;border-radius:7px;background:#202e40;color:#f0f5fb;font-size:13px;padding:10px 11px;text-align:left}button:hover{background:#314358}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #70b8ff;outline-offset:2px}button:disabled{opacity:.48;cursor:not-allowed}.app-header{display:flex;align-items:center;justify-content:space-between;padding:15px 21px;border-bottom:1px solid #2a394c;background:#101a29;gap:15px}.brand{display:flex;align-items:center;gap:13px}.brand strong{letter-spacing:1.2px;font-size:15px}.brand strong span{color:#76aefe}.brand small{display:block;color:#8fa4bc;font-size:11px;margin-top:3px}.logo{font-size:32px;color:#6eaafc}.top-actions{display:flex;align-items:center;gap:10px}.status{font-size:12px;color:#f7cf77}.status.ok{color:#8cdaa8}.primary{background:#367bd6;border-color:#5c9df1;font-weight:600;text-align:center}.primary:hover{background:#468ce7}.quiet{background:transparent}.workspace{display:grid;grid-template-columns:260px minmax(350px,1fr) 275px;flex:1;min-height:0}.left-panel,.right-panel{background:#142030;padding:18px;overflow:auto;min-width:0}.left-panel{border-right:1px solid #2b3b4f}.right-panel{border-left:1px solid #2b3b4f}.panel-group{padding-bottom:20px;margin-bottom:21px;border-bottom:1px solid #2d4055}.panel-group:last-child{border-bottom:0}h2{font-size:11px;letter-spacing:1.25px;color:#9bb1cc;margin:0 0 14px;font-weight:650}label{display:block;font-size:12px;color:#b9c8d9;margin:11px 0 7px}input,select{width:100%;padding:9px 10px;background:#0c1725;color:#f5f7fa;border:1px solid #34475e;border-radius:6px;font-size:13px}input[type=file]{display:none}.file-action{display:block;text-align:center;border:1px solid #3e5571;padding:10px;color:#edf4fd;border-radius:7px;cursor:pointer}.stack{display:grid;gap:8px}.stack>button{width:100%}.modes{display:grid;grid-template-columns:1fr 1fr;gap:7px}.mode.active{background:#28538c;border-color:#699ff1}.element-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.element-grid button{text-align:center;font-weight:700;font-size:15px;padding:12px 4px}.danger{color:#f3bac3;border-color:#805061;background:#342330}.tiny{color:#9db0c3;font-size:11px;line-height:1.5}.center{display:flex;flex-direction:column;background:#0b1422;min-width:0}.scene-toolbar{padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid #29384a}.eyebrow{font-size:10px;letter-spacing:1.3px;color:#7c98bc}.scene-toolbar h1{font-size:18px;font-weight:650;margin:5px 0 0}.scene-hint{color:#8da4bc;font-size:11px}.canvas-wrap{flex:1;min-height:360px;position:relative;background:radial-gradient(circle at 48% 48%,#14283e,#0a1420 70%)}canvas{width:100%;height:100%;display:block;touch-action:none}.legend{position:absolute;left:16px;bottom:15px;display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:#b3c4d6;pointer-events:none}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.canvas-hint{position:absolute;top:18px;right:18px;color:#9daec2;font-size:11px;pointer-events:none}.lower{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid #2a3c52;background:#101c2c}.metric{padding:14px 20px;border-right:1px solid #25384b}.metric span{display:block;font-size:10px;color:#86a0bc;letter-spacing:.6px}.metric b{display:block;margin-top:5px;font-size:15px}.selected-info{padding:12px;background:#22344a;border:1px solid #3a5677;border-radius:7px;font-size:13px}.position-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.position-grid input{padding:9px 5px}.output{background:#0d1c2d;padding:12px;border-radius:7px;border:1px solid #2e4965;font-size:12px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;min-height:75px;max-height:240px;overflow:auto}footer{font-size:11px;color:#8499b2;background:#0f1928;padding:10px 22px;border-top:1px solid #25374b;text-align:center}@media(max-width:1050px){.workspace{grid-template-columns:210px minmax(300px,1fr)}.right-panel{grid-column:1/-1;border-top:1px solid #304255;border-left:0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}.right-panel .panel-group{margin:0}}@media(max-width:670px){.app-header{align-items:flex-start}.top-actions{flex-wrap:wrap;justify-content:flex-end}.workspace{display:flex;flex-direction:column}.left-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px}.left-panel .panel-group{margin:0}.canvas-wrap{height:420px;flex:none}.right-panel{display:block}.right-panel .panel-group{margin-bottom:16px}.scene-hint{display:none}.metric{padding:12px 8px}}
/* V0.9: project library and protein preview */
.library-list{display:grid;gap:7px;margin-top:12px;max-height:255px;overflow:auto}.library-entry{padding:9px;border:1px solid #324761;border-radius:8px;background:#0d1a2a}.library-name{font-size:12px;color:#e6f0fb;overflow-wrap:anywhere;font-weight:600}.library-date{font-size:10px;color:#9aafc6;margin:4px 0 8px}.library-actions{display:flex;gap:5px}.library-actions button{font-size:11px;padding:5px 8px;flex:1;text-align:center}.library-empty{font-size:11px;color:#95a8c0;font-style:italic}.view-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px}.view-buttons button.active{background:#28538c;border-color:#699ff1}#protein-summary{overflow-wrap:anywhere}

/* v1.0 beta: bond inspector */
.bond-editor{margin:14px 0;padding:12px;border:1px solid #34516b;border-radius:9px;background:#132237}
.bond-editor h3{font-size:11px;letter-spacing:.08em;color:#c8d9ea;margin:0 0 11px}
.bond-editor label{display:block;margin:8px 0 4px}.bond-editor select,.bond-editor input{width:100%;box-sizing:border-box}
.bond-editor button{width:100%;margin-top:9px}

/* V1.4: inline 3D workspace, searchable library and datasheet. */
[hidden]{display:none!important}
.viewer-dock{position:absolute;inset:0;display:flex;flex-direction:column;background:#0a1422;z-index:2;min-height:360px}
.dock-toolbar{display:flex;align-items:center;gap:12px;padding:8px 13px;background:#15263a;border-bottom:1px solid #344861;font-size:12px;flex-wrap:wrap}
.dock-toolbar span{color:#a9bacd;flex:1;font-size:11px}
.dock-toolbar button{padding:6px 10px}
#viewer-frame{width:100%;flex:1;min-height:360px;border:0;background:#0b1420}
.chemistry-summary{font-size:12px;line-height:1.8;color:#d9e7f7;background:#0e1b2a;border:1px solid #2b4762;padding:10px;border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere}
#datasheet-export{margin-top:9px;width:100%}
#library-search{margin-bottom:8px}
#undo,#redo{font-size:18px;padding:5px 12px}
@media(max-width:800px){.viewer-dock{min-height:380px}.dock-toolbar{padding:7px}.canvas-wrap{min-height:400px}}

.cad-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 12px}.cad-fields label{font-size:11px;margin:0}.cad-fields input{margin-top:5px;font-size:12px;padding:8px 5px}.cad-panel select{margin-bottom:9px}

/* V1.5 separate-body CAD assembly workspace */
.assembly-list{display:grid;gap:6px;margin:10px 0;max-height:220px;overflow:auto}.assembly-part{font-size:12px;padding:8px;text-align:left;overflow-wrap:anywhere}.assembly-part.selected{border-color:#82b4f3;background:#254b75}.assembly-xyz{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.assembly-xyz label{font-size:10px;margin:4px 0}.assembly-xyz input{font-size:11px;padding:7px 4px;margin-top:3px}.assembly-panel h3{font-size:11px;color:#aabed6;margin:14px 0 6px}.assembly-panel .stack{margin:8px 0}
/* Keep main viewport fixed when the tools sidebar gains new sections.
   Left and right panels scroll independently instead of stretching the scene. */
@media(min-width:1051px){.workspace{height:calc(100dvh - 112px);min-height:560px;flex:0 0 auto}.center{min-height:0;overflow:hidden}.canvas-wrap{min-height:300px}}
@media(max-width:1050px){.workspace{height:auto;max-height:none;flex:1 0 auto}.left-panel,.right-panel{overflow:visible}.center{min-height:540px}}

/* V1.6 precision CAD features and Boolean solids */
.precision-hole-list{display:grid;gap:7px;margin:8px 0 15px;max-height:220px;overflow:auto}
.precision-hole-row{display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid #35506c;border-radius:8px;background:#112239;padding:6px;font-size:11px}
.precision-hole-row span{overflow-wrap:anywhere;flex:1}
.precision-hole-row button{padding:6px;font-size:10px;flex:none}
.precision-panel h3{font-size:12px;margin:18px 0 5px;color:#d4e2f3}

/* V1.7 drill-pattern composer */
.precision-pattern{padding:12px;margin:14px 0;border:1px solid #3b5b7c;background:#112438;border-radius:10px}
.precision-pattern h3{margin:0 0 8px!important}
.precision-pattern .pattern-checkbox{display:flex;gap:8px;align-items:center;line-height:1.4;margin:10px 0;font-size:11px}
.precision-pattern .pattern-checkbox input{width:auto;flex:0 0 auto}

/* V1.9 sketch drafting canvas and point controls */
#sketch-canvas{display:block;width:100%;height:auto;max-height:280px;border:1px solid #345675;border-radius:8px;cursor:crosshair;touch-action:manipulation;margin:8px 0;background:#0d1e2e}
.sketch-panel .sketch-vertices{display:grid;gap:4px;max-height:160px;overflow-y:auto;margin:8px 0}
.sketch-vertex{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#10273c;padding:5px 8px;border:1px solid #305471;border-radius:6px;font-size:11px}
.sketch-vertex span{min-width:0;overflow-wrap:anywhere}.sketch-vertex button{padding:4px 8px}
.sketch-panel h3{font-size:12px;margin:14px 0 8px;color:#d5e3f7}

/* V2.1: numeric vertex editing accessible in the right tool panel. */
.sketch-vertex:has(.sketch-coordinate){display:grid;grid-template-columns:1fr 1fr auto auto;gap:5px}
.sketch-vertex:has(.sketch-coordinate) span{grid-column:1/-1}
.sketch-coordinate{min-width:0;font-size:11px;padding:5px 4px}
