*{box-sizing:border-box}:root{--bg-primary:#0f172a;--color-secondary:#5cead4;--color-foreground:#94a3b8;--color-white:#fff;--color-input-bg:#1e293b;--color-input-border:#334155;--color-button:#2c7d99}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0f172a;background-color:var(--bg-primary);color:#94a3b8;color:var(--color-foreground);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,body,html{height:100%;overflow:hidden;width:100%}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden;width:100vw}.header{align-items:center;border-bottom:1px solid var(--color-input-border);display:flex;gap:20px;padding:32px 24px}.header-logo{height:32px;width:32px}.header h1{font-size:1.5rem;font-weight:700;margin:0}.header h1,.header-calc-btn{color:var(--color-secondary)}.header-calc-btn{background:#0000;border:1px solid var(--color-input-border);border-radius:6px;font-size:12px;font-weight:600;letter-spacing:.04em;margin-left:auto;padding:7px 16px;text-decoration:none;transition:border-color .2s,color .2s;white-space:nowrap}.header-calc-btn:hover{border-color:var(--color-secondary);color:var(--color-secondary)}.main-content{display:flex;flex:1 1;overflow:hidden}.sidebar{border-right:none;box-sizing:border-box;flex-shrink:0;max-width:500px;overflow:hidden;width:500px}.sidebar,.sidebar-content{display:flex;flex-direction:column;min-width:0}.sidebar-content{-ms-overflow-style:none;gap:8px;overflow-x:hidden;overflow-y:auto;padding:1.5rem;scrollbar-width:none}.sidebar-content::-webkit-scrollbar{height:0;width:0}.sidebar-resizer{background-color:var(--color-input-border);cursor:ew-resize;flex-shrink:0;transition:background-color .2s;width:6px}.sidebar-resizer:hover{background-color:var(--color-secondary)}.viewer-container{background-color:#0a0f1a;flex:1 1;height:100%;min-height:0;position:relative}.viewer-legend{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1e293be6;border:1px solid var(--color-input-border);border-radius:4px;display:flex;flex-direction:column;gap:.4rem;padding:.75rem 1rem;position:absolute;right:1rem;top:52px;z-index:10}.legend-item{align-items:center;display:flex;gap:.5rem}.legend-color{border-radius:2px;flex-shrink:0;height:12px;width:12px}.legend-label{color:var(--color-foreground);font-size:12px;white-space:nowrap}.legend-toggle-btn{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1e293be6;border:1px solid var(--color-input-border);border-radius:4px 0 0 4px;color:var(--color-foreground);cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;transition:all .2s;width:24px}.legend-toggle-btn.active,.legend-toggle-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.reset-camera-btn{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1e293be6;border:1px solid var(--color-input-border);border-radius:0 4px 4px 0;color:var(--color-foreground);cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;transition:all .2s;width:24px}.reset-camera-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.reset-params-container{border-top:1px solid var(--color-input-border);display:flex;justify-content:flex-start;margin-top:12px;padding-top:12px}.reset-params-btn{align-items:center;background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:6px;color:var(--color-foreground);cursor:pointer;display:flex;font-size:.75rem;font-weight:500;gap:4px;padding:.5rem .75rem;transition:all .2s}.reset-params-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.form-section{display:flex;flex-direction:column;gap:0;max-width:420px;min-width:0;width:100%}.form-section-title{color:var(--color-secondary);font-size:1rem;font-weight:700;letter-spacing:.05em;margin-bottom:16px;text-transform:uppercase}.accordion{border:1px solid var(--color-input-border);border-radius:6px;margin-bottom:8px;min-width:350px;overflow:hidden}.accordion-header{align-items:center;background-color:var(--color-input-bg);border:none;color:var(--color-foreground);cursor:pointer;display:flex;font-size:.875rem;font-weight:600;justify-content:space-between;padding:12px 16px;transition:background-color .2s;width:100%}.accordion-header:hover{background-color:var(--color-input-border)}.accordion-header.open{border-bottom:1px solid var(--color-input-border)}.accordion-icon{color:var(--color-foreground);font-size:1rem;transition:transform .2s}.accordion-content{background-color:var(--bg-primary);max-height:0;overflow:hidden}.accordion-content.open{max-height:1000px;padding:16px;transition:max-height .3s ease-in}.form-group{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;min-width:0}.form-group label{color:var(--color-foreground);font-size:.8rem}.form-group input,.form-group select{background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:6px;box-sizing:border-box;color:var(--color-white);font-size:.875rem;min-width:0;padding:.5rem .75rem;transition:border-color .2s,box-shadow .2s;width:100%}.form-group input:focus,.form-group select:focus{border-color:var(--color-secondary);box-shadow:0 0 0 2px #5cead433;outline:none}.form-group input:invalid{border-color:#f87171}.form-row{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr 1fr;min-width:0}.btn{border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:.75rem 1rem;transition:all .2s}.btn-primary{background-color:var(--color-secondary);color:var(--bg-primary)}.btn-primary:hover{background-color:#4dd4c4}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.geometry-selector select{font-size:.875rem;padding:.625rem .75rem;width:100%}.animation-controls{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}.btn-animation{background-color:var(--color-button);border:none;border-radius:6px;color:var(--color-white);cursor:pointer;font-size:.875rem;font-weight:500;padding:.75rem 1rem;transition:all .2s}.btn-animation.playing,.btn-animation:hover:not(:disabled){background-color:var(--color-secondary);color:var(--bg-primary)}.btn-animation:disabled{cursor:not-allowed;opacity:.5}.playback-controls{gap:8px}.playback-btn,.playback-controls{align-items:center;display:flex;justify-content:center}.playback-btn{background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:6px;color:var(--color-white);cursor:pointer;font-size:.875rem;height:36px;transition:all .2s;width:36px}.playback-btn-large{font-size:1rem;height:44px;width:44px}.playback-btn-large,.playback-btn:hover{background-color:var(--color-button);border-color:var(--color-button)}.playback-btn-large:hover{background-color:var(--color-secondary);border-color:var(--color-secondary);color:var(--bg-primary)}.animation-speed-controls{align-items:flex-end;display:flex;gap:12px}.display-controls{align-items:center;display:flex;gap:20px;margin-bottom:12px}.checkbox-label{align-items:center;color:var(--color-foreground);cursor:pointer;display:flex;font-size:.85rem;gap:.5rem}.checkbox-label input[type=checkbox]{accent-color:var(--color-button);cursor:pointer;height:1rem;width:1rem}.checkbox-with-help{justify-content:space-between;width:100%}.checkbox-with-help,.help-btn{align-items:center;display:flex}.help-btn{background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:4px;color:var(--color-foreground);cursor:pointer;font-size:.875rem;font-weight:600;height:1.5rem;justify-content:center;transition:all .2s;width:1.5rem}.help-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.help-modal-backdrop{align-items:center;background-color:#0000;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;transition:background-color .3s ease-in-out;z-index:1000}.help-modal-backdrop.open{background-color:#000000b3}.help-modal{background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:8px;max-height:90vh;max-width:500px;opacity:0;overflow-y:auto;padding:1.5rem;position:relative;transform:scale(.9);transition:transform .3s ease-in-out,opacity .3s ease-in-out;width:90%}.help-modal.open{opacity:1;transform:scale(1)}.help-modal-close{align-items:center;background:#0000;border:none;border-radius:4px;color:var(--color-foreground);cursor:pointer;display:flex;font-size:1.5rem;height:2rem;justify-content:center;position:absolute;right:.75rem;top:.75rem;transition:all .2s;width:2rem}.help-modal-close:hover{background-color:var(--color-input-border);color:var(--color-white)}.help-modal-title{color:var(--color-secondary);font-size:1.1rem;font-weight:600;margin:0 0 1rem}.help-modal-content{display:flex;flex-direction:column;gap:1rem}.help-modal-diagram{background-color:var(--bg-primary);border-radius:6px;display:flex;justify-content:center;padding:1rem}.geometry-svg{height:auto;max-width:300px;width:100%}.simplified-group,.triangle-group{transition:opacity .5s ease-in-out}.simplified-group.visible,.triangle-group.visible{opacity:1}.simplified-group.hidden,.triangle-group.hidden{opacity:0}.help-modal-equations{background-color:var(--bg-primary);border-radius:6px;min-height:120px;padding:1rem;position:relative}.equation-group{left:1rem;position:absolute;right:1rem;top:1rem;transition:opacity .5s ease-in-out}.equation-group.visible{opacity:1}.equation-group.hidden{opacity:0;pointer-events:none}.equation-label{color:var(--color-foreground);font-size:.85rem;font-weight:500;margin:0 0 .5rem}.equation{color:var(--color-white);font-family:Times New Roman,serif;font-size:1rem;margin:.25rem 0}.equation.indent{padding-left:1.5rem}.vector-symbol{color:var(--color-secondary)}.vector-orange,.vector-symbol{font-style:italic;margin:0 .25rem}.vector-orange{color:#f97316}.vector-blue{color:#3b82f6;font-style:italic;margin:0 .25rem}.equation-note{color:var(--color-foreground);font-size:.8rem;font-style:italic;margin:.75rem 0 0;transition:opacity .3s ease-in-out}.help-modal-description{color:var(--color-foreground);font-size:14px;line-height:1.8;margin:0;text-align:justify}.axis-controls{align-items:center;display:flex;gap:.75rem}.axis-label{color:var(--color-foreground);font-size:.85rem}.axis-buttons{display:flex;gap:6px}.axis-btn{background-color:var(--color-input-bg);border:1px solid var(--color-input-border);border-radius:4px;color:var(--color-foreground);cursor:pointer;font-size:.75rem;font-weight:600;height:2rem;transition:all .2s;width:2rem}.axis-btn.active,.axis-btn:hover{border-color:var(--color-button)}.axis-btn.active{background-color:var(--color-button);color:var(--bg-primary)}.dummy-controls{border-top:1px solid var(--color-input-border);padding-top:12px}.dummy-options{background-color:#131925;border:1px solid var(--color-input-border);border-radius:6px;margin-top:12px;padding:12px}.arrow-controls{display:flex;gap:0;position:relative}.arrow-settings-btn,.arrow-toggle-btn{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1e293be6;border:1px solid var(--color-input-border);color:var(--color-foreground);cursor:pointer;display:flex;font-size:1.2rem;font-weight:600;height:24px;justify-content:center;padding:0;transition:all .2s;width:24px}.arrow-toggle-btn{border-radius:4px 0 0 4px}.arrow-settings-btn{border-radius:0 4px 4px 0}.arrow-settings-btn:hover,.arrow-toggle-btn.active,.arrow-toggle-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.arrow-settings-panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#1e293bf2;border:1px solid var(--color-input-border);border-radius:6px;box-shadow:0 4px 12px #0000004d;display:flex;flex-direction:column;gap:0;min-width:200px;padding:12px;position:absolute;right:0;top:36px}.arrow-settings-header{color:var(--color-secondary);font-size:12px;font-weight:600;letter-spacing:.05em;margin-bottom:.25rem;padding-bottom:.5rem;text-transform:uppercase}.axes-settings-header{font-size:12px;padding:4px;-webkit-user-select:none;user-select:none}.arrow-checkbox-label{align-items:center;border-radius:4px;color:var(--color-foreground);cursor:pointer;display:flex;font-size:12px;gap:6px;padding:4px;transition:background-color .2s}.arrow-checkbox-label:hover{background-color:#ffffff0d}.arrow-checkbox-label input[type=checkbox]{accent-color:var(--color-button);cursor:pointer;height:1rem;width:1rem}.arrow-checkbox-label span{font-size:12px;-webkit-user-select:none;user-select:none}.arrow-settings-divider{background-color:var(--color-input-border);height:1px;margin:8px 0}.floor-toggle-btn{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1e293be6;border:1px solid var(--color-input-border);border-radius:0;color:var(--color-foreground);cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;transition:all .2s;width:24px}.floor-toggle-btn.active,.floor-toggle-btn:hover{background-color:var(--color-button);border-color:var(--color-button);color:var(--color-white)}.floor-axis-buttons,.viewport-axis-buttons{display:flex;gap:4px;padding:4px}.viewport-axis-btn{background:#0000;border:1px solid var(--color-input-border);border-radius:4px;color:var(--color-foreground);cursor:pointer;flex:1 1;font-size:12px;font-weight:600;padding:6px 12px;transition:all .2s}.viewport-axis-btn:hover{background:#ffffff0d}.viewport-axis-btn.active{background:#ffffff1a;border-color:var(--color-button)}@media (max-width:768px){.main-content{flex-direction:column}.sidebar{border-bottom:1px solid var(--color-input-border);border-right:none;max-height:40vh;max-width:none!important;min-width:0!important;min-width:auto!important;width:100%!important}.sidebar-resizer{display:none}.viewer-container{min-height:60vh}.arrow-controls{right:.5rem;top:.5rem}.arrow-settings-panel{right:0}}.cbct-page{--color-midnight-core:#040404;--color-canvas-white:#fff;--color-olive-accent:#98e58e;--font-main:"Montserrat",ui-sans-serif,system-ui,sans-serif;--radius-cards:16px;--radius-badges:24px;--radius-inputs:6px;-webkit-font-smoothing:antialiased;background:var(--color-midnight-core);color:var(--color-canvas-white);display:grid;font-family:var(--font-main);font-size:13px;grid-template-columns:340px 1fr;grid-template-rows:56px 1fr;height:100vh;overflow:hidden}.cbct-page header{align-items:center;background:#0a0a0a;border-bottom:1px solid #ffffff14;display:flex;gap:12px;grid-column:1/-1;padding:0 24px}.cbct-page header .logo-dot{background:var(--color-olive-accent);border-radius:50%;box-shadow:0 0 8px #98e58e99;height:10px;width:10px}.cbct-page header h1{color:var(--color-canvas-white);font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.cbct-page header .header-home-link{align-items:center;display:flex;gap:12px;text-decoration:none}.cbct-page header .sep{flex:1 1}.cbct-page .badge-status{border-radius:var(--radius-badges);font-size:11px;font-weight:700;letter-spacing:.06em;padding:4px 14px;text-transform:uppercase;transition:all .25s}.cbct-page .badge-status.ok{background:#98e58e26;border:1px solid #98e58e4d;color:var(--color-olive-accent)}.cbct-page .badge-status.err{background:#dc3c3c26;border:1px solid #dc3c3c4d;color:#ff7070}.cbct-page .panel-left{background:#080808;border-right:1px solid #ffffff12;display:flex;flex-direction:column;gap:20px;overflow-y:auto;padding:20px 16px}.cbct-page .panel-left::-webkit-scrollbar{width:4px}.cbct-page .panel-left::-webkit-scrollbar-track{background:#0000}.cbct-page .panel-left::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.cbct-page .section-label{border-bottom:1px solid #ffffff12;color:#ffffff4d;font-size:10px;font-weight:800;letter-spacing:.12em;margin-bottom:4px;padding-bottom:10px;text-transform:uppercase}.cbct-page .field{display:flex;flex-direction:column;gap:6px}.cbct-page .field-label{align-items:center;color:#ffffff80;display:flex;font-size:11px;font-weight:700;gap:6px;justify-content:space-between;letter-spacing:.04em}.cbct-page .field-label .unit{color:#ffffff40;font-size:10px;font-weight:400;margin-left:auto}.cbct-page .drag-input-wrap{background:#111;border:1px solid #ffffff1a;border-radius:var(--radius-inputs);cursor:ew-resize;height:36px;overflow:hidden;position:relative;transition:border-color .2s}.cbct-page .drag-input-wrap:hover{border-color:#98e58e66}.cbct-page .drag-input-wrap.active{border-color:var(--color-olive-accent)}.cbct-page .drag-fill{background:#98e58e14;bottom:0;left:0;pointer-events:none;position:absolute;top:0;transition:width .1s}.cbct-page .drag-input-wrap input[type=number]{-moz-appearance:textfield;background:#0000;border:none;color:var(--color-canvas-white);cursor:ew-resize;font-family:var(--font-main);font-size:13px;font-weight:700;height:100%;inset:0;outline:none;padding:0 10px;position:absolute;text-align:right;width:100%}.cbct-page .drag-input-wrap input[type=number]::-webkit-inner-spin-button,.cbct-page .drag-input-wrap input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.cbct-page .drag-input-wrap input[type=number]:focus{cursor:text}.cbct-page .drag-label-inner{color:#ffffff40;font-size:11px;font-weight:400;left:10px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.cbct-page .field-row{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.cbct-page .field-row-lock{grid-gap:4px;align-items:center;display:grid;gap:4px;grid-template-columns:1fr 28px 1fr}.cbct-page .lock-btn{align-items:center;background:#0000;border:1px solid #ffffff1a;border-radius:var(--radius-inputs);color:#fff3;cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:36px;justify-content:center;line-height:1;padding:0;transition:border-color .2s,background .2s,color .2s;width:28px}.cbct-page .lock-btn:hover{border-color:#ffffff40;color:#ffffff73}.cbct-page .lock-btn.locked{background:#98e58e14;border-color:#98e58e66;color:var(--color-olive-accent)}.cbct-page .lock-btn.locked:hover{background:#98e58e24;border-color:#98e58eb3}.cbct-page .results-card{background:#0e0e0e;border:1px solid #ffffff12;border-radius:var(--radius-cards);padding:14px}.cbct-page .results-card .section-label{margin-bottom:10px}.cbct-page .result-row{align-items:center;border-bottom:1px solid #ffffff0d;display:flex;justify-content:space-between;padding:5px 0}.cbct-page .result-row:last-child{border-bottom:none}.cbct-page .result-row .key{color:#fff6;font-size:11px}.cbct-page .result-row .val{font-feature-settings:"tnum";color:var(--color-canvas-white);font-size:12px;font-variant-numeric:tabular-nums;font-weight:700}.cbct-page .result-row .val.accent{color:var(--color-olive-accent)}.cbct-page .result-row .val.warn{color:#ff7070}.cbct-page .hero-results{grid-gap:12px;background:#0a0a0a;border:1px solid #98e58e26;border-radius:var(--radius-cards);display:grid;gap:12px;grid-template-columns:1fr 1fr 1fr;padding:16px}.cbct-page .hero-metric{display:flex;flex-direction:column;gap:4px}.cbct-page .hero-metric .hm-label{color:#ffffff4d;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.cbct-page .hero-metric .hm-val{font-feature-settings:"tnum";color:var(--color-olive-accent);font-size:20px;font-variant-numeric:tabular-nums;font-weight:800;line-height:1.1}.cbct-page .hero-metric .hm-val.err{color:#ff7070}.cbct-page .hero-metric .hm-sub{color:#ffffff40;font-size:10px}.cbct-page .panel-right{grid-gap:1px;background:#ffffff0f;display:grid;gap:1px;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;overflow:hidden}.cbct-page .canvas-pane{background:var(--color-midnight-core);overflow:hidden;position:relative}.cbct-page .canvas-pane canvas{display:block;height:100%;width:100%}.cbct-page .canvas-pane .pane-label{color:#ffffff40;font-size:10px;font-weight:700;left:16px;letter-spacing:.1em;pointer-events:none;position:absolute;text-transform:uppercase;top:12px;z-index:1}.cbct-page .canvas-pane .pane-sublabel{color:#fff3;font-size:10px;pointer-events:none;position:absolute;right:16px;top:12px;z-index:1}.cbct-page #cv-3d{inset:0;position:absolute}.cbct-page #cv-3d canvas{display:block;height:100%!important;width:100%!important}.cbct-page #cv-fov{inset:0;position:absolute}.cbct-page #cv-fov canvas{display:block;height:100%!important;width:100%!important}.cbct-page .fov-axis-guide{bottom:16px;height:74px;pointer-events:none;position:absolute;right:16px;width:86px;z-index:2}.cbct-page .fov-axis-line{background:#ffffff38;height:1px;left:50%;pointer-events:none;position:absolute;top:50%;transform-origin:left center;width:24px}.cbct-page .fov-axis-btn{align-items:center;background:#040404b3;border:1px solid;border-radius:50%;color:#ffffff73;cursor:pointer;display:flex;font-size:10px;font-weight:800;height:24px;justify-content:center;line-height:1;padding:0;pointer-events:all;position:absolute;transition:background .15s,color .15s,box-shadow .15s,transform .15s;-webkit-user-select:none;user-select:none;width:24px}.cbct-page .fov-axis-btn.active,.cbct-page .fov-axis-btn:hover{background:currentColor;box-shadow:0 0 10px #ffffff47;color:#050505;transform:scale(1.08)}.cbct-page .fov-axis-btn.x{color:#ff5a66;left:38px;top:34px}.cbct-page .fov-axis-btn.y{color:#86c63a;left:58px;top:17px}.cbct-page .fov-axis-btn.z{color:#4398ff;left:30px;top:2px}.cbct-page .fov-axis-btn.iso{color:#9be52f;font-size:13px;left:6px;top:34px}.cbct-page .fov-axis-btn.x.active,.cbct-page .fov-axis-btn.x:hover{background:#ff5a66}.cbct-page .fov-axis-btn.y.active,.cbct-page .fov-axis-btn.y:hover{background:#86c63a}.cbct-page .fov-axis-btn.z.active,.cbct-page .fov-axis-btn.z:hover{background:#4398ff}.cbct-page .fov-axis-btn.iso.active,.cbct-page .fov-axis-btn.iso:hover{background:#9be52f}body.cbct-dragging{cursor:ew-resize!important;-webkit-user-select:none;user-select:none}
/*# sourceMappingURL=main.d1aed632.css.map*/