:root{color-scheme:dark;--bg:#10151e;--panel:#171e29;--panel2:#1c2532;--border:#2a3545;--text:#e2eaf4;--muted:#92a2b7;--accent:#79b7ff;--amber:#f2c774;--green:#7bd2ae}*{box-sizing:border-box}body{margin:0;font:13px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);height:100dvh;display:flex;flex-direction:column;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.36;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,select,input{border-radius:7px}button{transition:background .15s,color .15s,border .15s}.app-header{height:76px;min-height:76px;padding:0 25px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--border);background:#151d28}.brand{display:flex;align-items:center;gap:12px;min-width:250px}.brand-mark{width:37px;height:37px;display:grid;place-items:center;font-size:31px;color:#a4cbff;background:#24354e;border:1px solid #365276;border-radius:10px}.brand strong{font-size:17px;letter-spacing:-.3px;display:block}.brand div>span{font-size:9px;letter-spacing:1.8px;color:var(--muted)}.header-center{display:flex;align-items:center;gap:8px;flex:1;color:var(--muted);font-size:12px}.status-dot{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:var(--amber)}.status-dot.ready{background:var(--green)}.status-dot.error{background:#f08e8e}.header-actions{display:flex;gap:10px}.button{border:1px solid var(--border);padding:9px 14px;color:var(--text);background:var(--panel2);font-weight:550}.button:hover:not(:disabled){background:#2b3a4d}.button.primary{background:#83baff;color:#102440;border-color:#98c6ff}.button.primary:hover:not(:disabled){background:#abd1ff}.button.quiet{background:transparent}.button.secondary{background:#23354b;border-color:#3b5472;color:#bbd8ff}.full{width:100%}.notice{padding:10px 24px;background:#3a3020;border-bottom:1px solid #665332;color:#f6d595;font-size:12px}.notice.error{background:#3b272e;border-color:#70414f;color:#ffc1cc}.workspace{flex:1;display:grid;grid-template-columns:250px minmax(220px,1fr) 316px;min-height:0}.panel{background:var(--panel);min-height:0}.object-panel{border-right:1px solid var(--border);display:flex;flex-direction:column}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-title h2{font-size:12px;font-weight:650;margin:0}.object-panel>.panel-title{padding:21px 18px 15px}.count,.badge{color:var(--muted);background:#263141;border-radius:4px;min-width:22px;padding:2px 6px;text-align:center;font-size:10px;font-weight:600}.search-wrap{padding:0 14px}.search-wrap input{width:100%;font-size:11px;padding:10px;background:#121a25;border:1px solid var(--border);color:var(--text)}.selection-tools{display:flex;justify-content:space-between;padding:12px 17px 9px}.selection-tools button{background:none;border:0;color:var(--accent);font-size:11px;padding:0}.object-list{overflow:auto;flex:1;min-height:0;padding:2px 8px}.object-row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:1px solid transparent;background:transparent;padding:10px 8px;color:var(--text);margin:1px 0;min-height:44px}.object-row:hover{background:#202c3c}.object-row.selected{background:#253d59;border-color:#456b94}.object-row.hidden-mesh{opacity:.45}.object-glyph{width:22px;height:25px;color:#779abd;display:grid;place-items:center;flex:none}.object-text{overflow:hidden;flex:1}.object-text strong{font-size:11px;font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-text small{display:block;font-size:10px;color:#8396ad;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.object-row .selected-mark{font-size:13px;color:#acd4ff}.empty-list{padding:10px}.load-more{margin:8px;font-size:11px}.left-foot{padding:15px 17px;border-top:1px solid var(--border);font-size:11px}.left-foot small{color:var(--muted);font-size:10px;display:block;margin-top:7px}.viewport-wrap{position:relative;overflow:hidden;min-width:0;background:#101821}#viewport{display:block;width:100%;height:100%;touch-action:none}.viewport-top{position:absolute;top:17px;left:20px;right:20px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;pointer-events:none}.file-chip{max-width:50%;text-shadow:0 1px 3px #000;pointer-events:none}.file-chip>span{display:block;font-size:12px;color:#d7e6f8;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-chip small{font-size:9px;letter-spacing:1.4px;color:#7f94ab}.view-actions{display:flex;gap:4px;pointer-events:auto;background:#161f2cdd;border:1px solid #304054;border-radius:7px;padding:3px;flex-wrap:wrap}.view-actions button,.view-actions select{background:transparent;border:0;color:#b7cbe4;font-size:10px;padding:5px 7px}.view-actions select{background:#1c293a}.view-actions button:hover:not(:disabled){background:#33475e}.viewport-bottom{position:absolute;bottom:15px;left:20px;right:20px;display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#738aa3;pointer-events:none}.empty-state{position:absolute;inset:20px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;pointer-events:none}.empty-state .button{pointer-events:auto}.empty-cube{font-size:95px;font-weight:200;line-height:1;color:#5485b8;margin-bottom:20px;text-shadow:0 0 55px #74afff55}.eyebrow{color:#7194bd;letter-spacing:2px;font-size:9px;font-weight:600}.empty-state h1{font-size:clamp(20px,2.4vw,30px);letter-spacing:-1px;font-weight:550;margin:12px 0}.empty-state p{font-size:12px;line-height:1.8;color:#8a9eb6;max-width:360px;margin:0 0 25px}.empty-note{font-size:10px;margin-top:17px;color:#677e98}.loading{position:absolute;inset:0;background:#101823df;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;z-index:5}.loading span:last-child{color:var(--muted);font-size:11px}.spinner{width:29px;height:29px;border:2px solid #2c425e;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.inspector{border-left:1px solid var(--border);overflow:auto}.inspector-section{padding:20px 18px;border-bottom:1px solid var(--border)}.subtle-label{font-size:8px;letter-spacing:1px;color:#6f829c}.inspector h3{font-size:13px;line-height:1.5;font-weight:500;margin:14px 0;overflow-wrap:anywhere}.dimensions{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.dimensions>div{background:#111b28;border:1px solid #27384b;padding:9px;border-radius:5px}.dimensions span{display:block;color:#6582a4;font-size:9px;margin-bottom:4px}.dimensions strong{font-variant-numeric:tabular-nums;font-size:12px;font-weight:500}.micro{font-size:10px;line-height:1.65;color:#7f91a7;margin:10px 0 0}.muted{color:var(--muted);font-size:11px}.field-label{font-size:10px;color:#a2b3c8;display:block;margin:15px 0 6px}.export-section select{background:#111b28;border:1px solid #354254;color:#d5e4f5;padding:9px;width:100%;font-size:11px}.field-row{display:grid;grid-template-columns:1.1fr 1fr;gap:10px}.number-unit{display:flex;align-items:center;background:#111b28;border:1px solid #354254;border-radius:6px;overflow:hidden}.number-unit input{background:none;border:0;color:#d5e4f5;width:100%;padding:9px;font-size:12px;min-width:0}.number-unit span{color:#748aa3;padding-right:10px;font-size:11px}.print-dimensions{white-space:pre-line;font-size:10px;color:#9bb7d7;line-height:1.7;margin:12px 0}.mesh-report{font-size:10px;margin:12px 0;padding:10px 11px;border:1px solid #2d3a4b;border-radius:6px;background:#131c28;line-height:1.8}.mesh-report .good{color:#94d8bc}.mesh-report .caution{color:#e6bc75}.mesh-report dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:3px 9px}.mesh-report dt{color:#91a5be}.mesh-report dd{margin:0;font-variant-numeric:tabular-nums}.mesh-report strong{font-size:11px;display:block;margin-bottom:7px}.acknowledgment{display:flex;align-items:flex-start;gap:8px;font-size:10px;color:#efc88b;margin:12px 0;line-height:1.5}.acknowledgment input{margin:3px 0 0;accent-color:#91bfff}.properties{margin-top:13px}.property-row{padding:7px 0;border-bottom:1px solid #243042;font-size:10px;overflow-wrap:anywhere}.property-row span{display:block;color:#7f96b2;font-size:9px;margin-bottom:3px}.warning-list{font-size:10px;color:#d5b587;line-height:1.6;margin-top:12px}.warning-list p{margin:7px 0}.warning-list .warning-item{padding:9px 10px;background:#302b23;border:1px solid #514431;border-radius:5px;margin-top:7px;overflow-wrap:anywhere}.app-footer{height:32px;min-height:32px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 18px;color:#70869f;font-size:9px;background:#121b27}.app-footer>span:first-child{display:flex;align-items:center;gap:7px}.toast{position:fixed;left:50%;bottom:53px;transform:translateX(-50%);padding:12px 18px;background:#253b53;border:1px solid #4c6d92;color:#d4e8ff;border-radius:8px;font-size:12px;box-shadow:0 10px 30px #0005;z-index:20;max-width:80vw}.object-list::-webkit-scrollbar,.inspector::-webkit-scrollbar{width:7px}.object-list::-webkit-scrollbar-thumb,.inspector::-webkit-scrollbar-thumb{background:#354457;border-radius:5px}[hidden]{display:none!important}@media(max-width:1050px){.workspace{grid-template-columns:210px minmax(190px,1fr) 285px}.header-center{display:none}.app-header{justify-content:space-between;padding:0 16px}.view-actions select{display:none}.viewport-top{left:12px;right:12px}.file-chip{max-width:40%}.viewport-bottom{font-size:9px;left:12px;right:12px}.viewport-bottom>span:first-child{max-width:180px}}@media(max-width:760px){body{height:auto;min-height:100dvh;overflow:auto}.app-header{height:68px;min-height:68px;padding:0 12px}.brand{min-width:0}.brand strong{font-size:13px}.brand div>span{font-size:7px}.brand-mark{display:none}.header-actions .button{font-size:10px;padding:8px 10px}.workspace{display:grid;grid-template-columns:1fr;grid-template-rows:55vh auto auto}.viewport-wrap{grid-row:1;min-height:350px}.object-panel{grid-row:2;max-height:340px;border-top:1px solid var(--border);border-right:0}.object-list{max-height:200px;min-height:80px}.inspector{grid-row:3;display:grid;grid-template-columns:1fr 1fr;border-left:0;overflow:visible}.export-section{grid-column:2;grid-row:1 / span 3;border-left:1px solid var(--border)}.app-footer>span:nth-child(2){display:none}.notice{padding:10px 13px}.view-actions select{display:inline}.file-chip{max-width:42%}}@media(max-width:440px){.inspector{display:block}.export-section{border-left:0}.empty-state p{max-width:280px}.file-chip{max-width:33%}}

/* LocalNode account and persistent workspace. No external assets. */
.app-shell{min-height:0;flex:1;display:flex;flex-direction:column;height:100dvh}
.auth-screen{min-height:100dvh;width:100%;display:flex;align-items:center;justify-content:center;padding:36px;background:radial-gradient(ellipse at 22% 30%,#233c5b70,transparent 60%),#101720}
.auth-card{display:grid;grid-template-columns:330px 400px;max-width:100%;border:1px solid #34455b;border-radius:18px;background:#18222f;box-shadow:0 32px 120px #0005;overflow:hidden}
.auth-art{position:relative;padding:35px 32px;background:linear-gradient(145deg,#264361,#182a42);border-right:1px solid #3b536d;overflow:hidden}
.auth-wordmark{font-size:11px;font-weight:700;letter-spacing:2px;color:#c5defb}.auth-wordmark span{display:block;font-size:8px;letter-spacing:1.5px;color:#8caccc;margin-top:7px}
.auth-art svg{display:block;width:290px;max-width:100%;margin:25px 0 18px;opacity:.82}
.auth-art-copy{font-size:19px;line-height:1.5;color:#91aecf;letter-spacing:-.4px}.auth-art-copy strong{font-weight:500;color:#d7e9ff}
.auth-form-wrap{padding:49px 40px 37px;align-self:center}.auth-eyebrow{font-size:9px;letter-spacing:2px;color:#7da9d9;font-weight:700}.auth-form-wrap h1{font-weight:550;font-size:29px;letter-spacing:-.8px;line-height:1.25;margin:15px 0 18px}.auth-form-wrap>p{font-size:12px;line-height:1.8;color:#9cafc6;margin:0 0 25px}.auth-form-wrap .field-label{margin-top:28px;font-size:11px}.auth-form-wrap input{width:100%;padding:12px;background:#111a26;border:1px solid #41546c;color:#e1ecfa;font-size:12px;outline-offset:3px}.auth-form-wrap .button{padding:11px;margin-top:16px}.auth-form-wrap .auth-footnote{font-size:10px;color:#718ba8;line-height:1.6;margin:18px 0 0}.login-error{font-size:11px;line-height:1.6;color:#f8b3bf;background:#3a2930;border:1px solid #66414b;border-radius:6px;padding:9px 10px;margin:10px 0 0}
.header-actions{align-items:center;gap:8px}.header-actions #logout-btn{color:#8fa4bf;padding-left:9px;padding-right:9px;font-size:11px}.brand{min-width:218px}.brand strong{font-size:18px}.app-header{height:72px;min-height:72px}
.sidebar-tabs{display:flex;padding:12px 12px 0;gap:5px;border-bottom:1px solid var(--border);flex:none}.sidebar-tabs button{flex:1;padding:10px 6px 12px;color:#8ca3bf;background:none;border:0;border-bottom:2px solid transparent;border-radius:6px 6px 0 0;font-size:11px}.sidebar-tabs button.active{color:#bedcff;border-bottom-color:#86bbff;background:#23344a55}.sidebar-tabs button span{margin-left:5px;background:#2e4057;border-radius:4px;padding:1px 4px;font-size:9px}.catalog-panel,.objects-panel{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.objects-panel>.panel-title{padding:18px 17px 14px}.catalog-heading{display:flex;align-items:center;justify-content:space-between;padding:19px 16px 14px;gap:8px}.catalog-heading h2{font-size:12px;font-weight:600;margin:0}.catalog-heading p{font-size:9px;color:#829ab7;line-height:1.6;margin:6px 0 0}.icon-button{background:transparent;border:1px solid #35475f;color:#abc5e5;width:29px;height:29px;flex:none;font-size:18px;line-height:1}.icon-button:hover{background:#29405b}.catalog-search{padding-bottom:13px}.model-catalog{overflow:auto;min-height:0;flex:1;padding:0 10px 10px}.model-entry{background:#1b2737;border:1px solid #2d3b4e;border-radius:8px;margin-bottom:9px;overflow:hidden}.model-entry.current{border-color:#5e8ebf;background:#23374f}.model-open{display:block;width:100%;background:none;border:0;color:var(--text);text-align:left;padding:13px 12px 0;cursor:default}.model-open.can-open{cursor:pointer}.model-open.can-open:hover .model-name{color:#b6d7ff}.model-name{font-size:11px;font-weight:550;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.model-meta{display:block;font-size:9px;color:#7f97b4;line-height:1.6;margin-top:5px}.model-status-row{display:flex;align-items:center;gap:7px;padding:10px 12px 0}.model-badge{font-size:8px;letter-spacing:.4px;border-radius:4px;display:inline-block;padding:3px 6px;line-height:1.4;background:#29394d;color:#a6bad1}.model-badge.ready{background:#214136;color:#9cdbc2}.model-badge.partial{background:#483c26;color:#f1ca86}.model-badge.processing,.model-badge.queued{background:#253f60;color:#a6ceff}.model-badge.error{background:#492e38;color:#f2b2c2}.model-stat{font-size:9px;color:#85a0c1}.model-error{font-size:9px;line-height:1.6;color:#d6a0ac;margin:9px 12px 0;overflow-wrap:anywhere;max-height:70px;overflow:auto}.model-actions{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:10px 12px 11px}.model-actions button{font-size:10px;border:0;padding:3px 0;background:none;color:#9dbfe5}.model-actions button:hover:not(:disabled){color:#d7eaff}.model-actions .model-delete{color:#8d9eb4}.model-actions .model-delete:hover:not(:disabled){color:#efb2bf}.catalog-empty{padding:36px 12px;text-align:center}.catalog-empty>span{display:block;font-size:36px;color:#567ba6;margin-bottom:17px}.catalog-empty strong{font-size:12px;font-weight:500;color:#c7d9ed}.catalog-empty p{font-size:10px;line-height:1.8;color:#849bb8;margin:9px 0 18px}.catalog-empty .button{font-size:10px}.catalog-foot{padding:14px 17px;border-top:1px solid var(--border);font-size:9px;line-height:1.6;color:#6f88a6;display:flex;align-items:flex-start;gap:7px}.catalog-foot .status-dot{margin-top:4px;width:5px;height:5px}.model-catalog::-webkit-scrollbar{width:6px}.model-catalog::-webkit-scrollbar-thumb{background:#34465e;border-radius:6px}
.activity-strip{display:flex;align-items:center;gap:12px;padding:11px 24px;background:#1b3049;border-bottom:1px solid #35516f;color:#bed9fa;min-height:53px;flex:none}.activity-symbol{font-size:24px;color:#92bbed}.activity-copy{display:flex;flex-direction:column;min-width:0}.activity-copy strong{font-size:11px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-copy span{font-size:9px;color:#86a6cd;margin-top:2px}.activity-strip progress{width:160px;max-width:20vw;height:5px;appearance:none;border:0;border-radius:3px;overflow:hidden;margin-left:auto;background:#304967}.activity-strip progress::-webkit-progress-bar{background:#304967}.activity-strip progress::-webkit-progress-value{background:#86bdff}.activity-strip progress::-moz-progress-bar{background:#86bdff}.activity-strip progress:not([value]){background:linear-gradient(90deg,#304967,#83b7f5,#304967);background-size:200% 100%;animation:progress-pulse 1.7s linear infinite}.activity-strip button{background:none;border:0;color:#b3d1f5;font-size:10px;padding:7px;white-space:nowrap}@keyframes progress-pulse{to{background-position:-200% 0}}
.confirm-dialog{width:380px;max-width:calc(100vw - 36px);padding:28px;background:#1a2636;color:#c9dbef;border:1px solid #425874;border-radius:12px;box-shadow:0 24px 90px #0008}.confirm-dialog::backdrop{background:#060c16bb;backdrop-filter:blur(3px)}.dialog-icon{width:35px;height:35px;display:grid;place-items:center;border-radius:9px;background:#49323d;color:#f2b6c5;font-size:22px;margin-bottom:18px}.confirm-dialog h2{font-size:18px;font-weight:550;margin:0 0 15px}.confirm-dialog p{font-size:12px;line-height:1.8;color:#92aac7;overflow-wrap:anywhere}.confirm-dialog p strong{font-weight:550;color:#d6e5f6}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:23px}.button.danger{background:#a85268;border-color:#c8778c;color:#fff2f5}.button.danger:hover:not(:disabled){background:#bf667d}
@media(min-width:1200px){.workspace{grid-template-columns:266px minmax(300px,1fr) 316px}}
@media(max-width:1050px){.brand{min-width:0}.app-header{gap:12px}.header-actions .button{font-size:11px;padding:8px 10px}.header-actions #logout-btn{font-size:10px}.catalog-heading{padding-left:13px;padding-right:13px}.catalog-heading h2{font-size:11px}.model-meta{font-size:8px}.activity-strip{padding:10px 15px}}
@media(max-width:760px){.app-shell{height:auto;min-height:100dvh}.object-panel{max-height:420px}.catalog-panel{height:342px;min-height:260px}.model-catalog{min-height:130px}.model-entry{margin-left:3px;margin-right:3px}.catalog-foot{padding:10px 17px}.objects-panel{max-height:330px}.activity-strip{gap:8px}.activity-copy span{max-width:55vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-strip progress{width:80px}.activity-strip button{font-size:9px;padding:3px}.auth-screen{padding:20px}.auth-card{grid-template-columns:260px minmax(300px,370px)}.auth-art{padding:31px 25px}.auth-form-wrap{padding:35px 28px}.auth-form-wrap h1{font-size:25px}.header-actions{gap:5px}.header-actions #logout-btn{padding:6px}.header-actions .button{font-size:10px;padding:8px}.app-header .brand div>span{font-size:6px;letter-spacing:1px}}
@media(max-width:580px){.auth-card{display:block;width:390px}.auth-art{display:none}.auth-form-wrap{padding:36px 31px 31px}.auth-form-wrap h1{font-size:29px}.auth-form-wrap>p{font-size:12px}.auth-screen{background:radial-gradient(ellipse at top,#2e527c55,transparent 75%),#101720}.header-actions #sample-btn{font-size:9px;padding:8px 5px}.header-actions #logout-btn{font-size:9px}.brand strong{font-size:12px}.brand div>span{display:none}.activity-strip progress{display:none}.activity-copy{flex:1}.viewport-bottom{font-size:8px}}
@media(prefers-reduced-motion:reduce){.spinner,.activity-strip progress:not([value]){animation:none}}
.model-open:disabled{opacity:1;cursor:default}.catalog-error{font-size:10px;line-height:1.6;color:#e2bd89;padding:10px 12px;margin:0 12px 10px;background:#3b3021;border:1px solid #59492f;border-radius:6px}
