:root{--fontFamily: "Segoe UI", system-ui, -apple-system, sans-serif;--toolbarIconSize: 26px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;width:100%;overflow:hidden;font-family:var(--fontFamily);font-size:var(--fontSize, 16px);color:var(--labelText, #0f172a);-webkit-font-smoothing:antialiased}button{font-family:inherit}.app-root{position:relative;height:100vh;width:100vw;background:var(--sidebarBackground, #f8fbff)}.viewport{position:absolute;top:0;right:0;bottom:0;left:0}.surface{background:var(--toolbarBackground, #e3ebf4);border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:8px;box-shadow:0 4px 16px #0f172a29}.command-bar{position:absolute;top:16px;left:16px;display:flex;align-items:center;gap:3px;padding:7px;z-index:100}.command-bar .sep{width:1px;align-self:stretch;margin:3px 4px;background:var(--toolbarBorderColor, #93a2b4);opacity:.55}.subbar{position:absolute;left:16px;display:flex;align-items:center;gap:3px;padding:7px;z-index:99}.tool-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:calc(var(--toolbarIconSize) + 12px);height:calc(var(--toolbarIconSize) + 12px);border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;padding:0}.tool-btn:hover:not(:disabled){background:var(--sidebarBackground, #f8fbff)}.tool-btn.active{background:var(--meshSelectedHighlight, #bfdfff);border-color:var(--iconActive, #005bbb)}.tool-btn:disabled{cursor:default;opacity:.38}.tool-btn img{width:var(--toolbarIconSize);height:var(--toolbarIconSize);pointer-events:none}[data-theme=Dark] .surface img,[data-theme=Dark] .drawer img,[data-theme=Dark] .empty-card img{filter:invert(.92)}.tool-btn[data-tip]:hover:after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);white-space:nowrap;background:#2b3440;color:#fff;font-size:var(--smallFontSize, 14px);padding:3px 8px;border-radius:5px;z-index:200;pointer-events:none}.popover{position:absolute;z-index:150;padding:12px;min-width:200px;display:flex;flex-direction:column;gap:10px}.popover-title{font-weight:700;font-size:var(--fontSize, 16px)}.section-label{text-transform:uppercase;letter-spacing:.5px;font-weight:600;font-size:var(--smallFontSize, 14px);opacity:.6}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.spacer{flex:1}.chip{height:28px;padding:0 10px;border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:6px;background:var(--drawerBackground, #fff);cursor:pointer;font-size:var(--smallFontSize, 14px);color:var(--labelText, #0f172a);display:inline-flex;align-items:center;gap:5px}.chip:hover:not(:disabled){background:var(--sidebarBackground, #f8fbff)}.chip.active{background:var(--meshSelectedHighlight, #bfdfff);border-color:var(--iconActive, #005bbb)}.chip:disabled{opacity:.45;cursor:default}.icon-cell{width:34px;height:30px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.icon-cell:hover{background:var(--sidebarBackground, #f8fbff)}.icon-cell.active{background:var(--meshSelectedHighlight, #bfdfff);border-color:var(--iconActive, #005bbb)}.icon-cell img{width:20px;height:20px}.primary-btn{height:30px;padding:0 14px;border:none;border-radius:6px;background:var(--iconActive, #005bbb);color:#fff;cursor:pointer;font-size:var(--smallFontSize, 14px)}.primary-btn:disabled{opacity:.5;cursor:default}input[type=range]{width:100%;accent-color:var(--iconActive, #005bbb)}.stepper{display:inline-flex;align-items:center;border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:6px;overflow:hidden}.stepper button{width:30px;height:28px;border:none;background:var(--drawerBackground, #fff);cursor:pointer;font-size:16px}.stepper .val{min-width:34px;text-align:center}.text-input{height:28px;border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:6px;padding:0 8px;background:var(--drawerBackground, #fff);color:var(--labelText, #0f172a);font-size:var(--smallFontSize, 14px);width:100%}.checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--smallFontSize, 14px)}.side-panel{position:absolute;top:16px;right:16px;width:300px;padding:14px;z-index:90;display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 60px);overflow:auto}.panel-title{font-weight:700;font-size:var(--fontSize, 16px);display:flex;align-items:center;justify-content:space-between}.result-card{background:var(--infoPanelBackground, #fff);border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:3px}.result-card .title{font-weight:700;font-size:var(--smallFontSize, 14px)}.result-card .muted{opacity:.55;font-size:var(--smallFontSize, 14px)}.status-pending{opacity:.7;font-size:var(--smallFontSize, 14px)}.status-done{color:var(--iconActive, #005bbb);font-size:var(--smallFontSize, 14px)}.fid-table{width:100%;border-collapse:collapse;font-size:var(--smallFontSize, 14px)}.fid-table th{text-align:left;font-weight:700;padding:4px 2px;border-bottom:1px solid var(--toolbarBorderColor, #93a2b4)}.fid-table td{padding:6px 2px;vertical-align:middle}.fid-name{display:flex;align-items:center;gap:5px}.fid-check{color:var(--iconActive, #005bbb)}.method-toggle{display:inline-flex;border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:5px;overflow:hidden}.method-toggle button{width:22px;height:22px;border:none;border-right:1px solid var(--toolbarBorderColor, #93a2b4);background:var(--drawerBackground, #fff);cursor:pointer;font-size:12px}.method-toggle button:last-child{border-right:none}.method-toggle button.active{background:var(--meshSelectedHighlight, #bfdfff);color:var(--iconActive, #005bbb)}.drawer-handle{position:absolute;left:0;top:45%;width:6px;height:60px;border-radius:0 4px 4px 0;background:var(--toolbarBorderColor, #93a2b4);cursor:pointer;z-index:80}.drawer-handle:hover{background:var(--iconActive, #005bbb)}.drawer{position:absolute;left:0;top:72px;bottom:28px;width:270px;z-index:95;background:var(--drawerBackground, #fff);border-right:1px solid var(--toolbarBorderColor, #93a2b4);box-shadow:4px 0 16px #0f172a1a;display:flex;flex-direction:column}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-weight:700;background:var(--toolbarBackground, #e3ebf4);border-bottom:1px solid var(--toolbarBorderColor, #93a2b4)}.drawer-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;font-weight:600}.drawer-item.selected{background:var(--meshSelectedHighlight, #bfdfff)}.drawer-item>input[type=checkbox]{flex:none}.drawer-item-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-bar{position:absolute;left:0;right:0;bottom:0;height:28px;display:flex;align-items:center;gap:16px;padding:0 14px;font-size:var(--smallFontSize, 14px);background:var(--statusBarBackground, #e4eef8);border-top:1px solid var(--toolbarBorderColor, #93a2b4);color:var(--bodyText, #1e293b);z-index:97}.app-root.subbar-open .drawer{top:124px}.status-bar .status-msg{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-bar .version{margin-left:auto;flex:none;opacity:.7}.status-bar .err{color:#b00020}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.empty-card{background:var(--infoPanelBackground, #fff);border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:8px;padding:22px 26px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 4px 16px #0f172a1f}.hint{font-size:var(--smallFontSize, 14px);color:var(--instructionText, #8a4b00);line-height:1.35}.anno-popover .row.between>span:first-child{min-width:74px}.anno-swatch{width:26px;height:26px;border-radius:5px;border:1px solid #93a2b4;padding:0;cursor:pointer}.anno-divider{height:1px;background:var(--toolbarBorderColor, #93a2b4);opacity:.5;margin:4px 0}.colorbar{position:absolute;right:14px;top:50%;transform:translateY(-50%);z-index:85;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}.colorbar-title{font-size:var(--smallFontSize, 14px);font-weight:700;color:var(--labelText, #0f172a);text-shadow:0 0 3px var(--sidebarBackground, #f8fbff);writing-mode:vertical-rl;transform:rotate(180deg)}.colorbar-body{display:flex;align-items:stretch;gap:6px;height:45vh;max-height:420px}.colorbar-strip{width:20px;border:1px solid var(--toolbarBorderColor, #93a2b4);border-radius:3px}.colorbar-ticks{display:flex;flex-direction:column;justify-content:space-between;font-size:var(--smallFontSize, 14px);color:var(--labelText, #0f172a);text-shadow:0 0 3px var(--sidebarBackground, #f8fbff)}.icon-cell{position:relative}.tex-badge{position:absolute;right:-3px;bottom:-3px;width:13px;height:13px;border-radius:50%;background:#ff8f00;color:#fff;font-size:9px;font-weight:800;line-height:13px;text-align:center;pointer-events:none;box-shadow:0 0 0 1.5px var(--drawerBackground, #fff)}.curv-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.cmap-swatch{width:46px;height:14px;border-radius:3px;border:1px solid var(--toolbarBorderColor, #93a2b4);flex:none}.axis-label-3d{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font-family:Arial,sans-serif;font-weight:800;font-size:17px;color:#fff;pointer-events:none;text-shadow:-1.5px -1.5px 0 #000,1.5px -1.5px 0 #000,-1.5px 1.5px 0 #000,1.5px 1.5px 0 #000,0 0 3px #000}.fid-label-3d{position:absolute;top:0;left:0;font-family:Courier New,Courier,monospace;font-weight:700;font-size:14px;color:#ffb300;white-space:nowrap;pointer-events:none;text-shadow:0 0 2px rgba(0,0,0,.85),0 0 3px rgba(0,0,0,.7)}
