:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#182337;background:#f5f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.app{min-height:100vh;display:flex;flex-direction:column}.top{height:76px;background:#fff;border-bottom:1px solid #e5eaf0;display:flex;justify-content:space-between;align-items:center;padding:0 30px}.brand{display:flex;align-items:center;gap:12px}.brand-icon{display:flex;width:42px;height:42px;border-radius:13px;background:#173c86;color:#fff;font-size:35px;align-items:center;justify-content:center;line-height:1}.brand strong{font-size:20px;font-weight:760;letter-spacing:-.7px;display:block}.brand small{font-size:9px;letter-spacing:2px;color:#8a98ab;font-weight:750}.top-right{display:flex;align-items:center;gap:19px}.tag{color:#53677d;background:#f1f7f6;padding:8px 11px;border-radius:7px;font-size:10px;font-weight:750;letter-spacing:.5px}.dot,.indicator{display:inline-block;background:#21b88f;border-radius:50%;width:7px;height:7px;margin-right:5px}.workspace{display:grid;grid-template-columns:325px minmax(0,1fr);flex:1}.sidebar{background:#fff;border-right:1px solid #e5eaf0;padding:25px 20px;max-height:calc(100vh - 76px);overflow:auto}.sidebar-title{font-size:11px;letter-spacing:1.6px;color:#8190a3;font-weight:800;display:flex;justify-content:space-between;margin:2px 0 14px}.sidebar-title span{color:#abb7c4}.panel{border:1px solid #e7ebf0;border-radius:12px;padding:16px;margin-bottom:12px;background:#fff}.panel h2{font-size:13px;margin:0 0 12px;display:flex;align-items:center;gap:9px}.n{font-size:10px;color:#2764c5;background:#eaf2ff;padding:6px 8px;border-radius:6px}.helper{color:#8290a0;font-size:11px;line-height:1.55;margin:9px 0 0}.button{border:1px solid #dce3eb;border-radius:7px;background:#fff;color:#304159;font-size:11px;font-weight:700;padding:10px 12px;cursor:pointer;transition:.15s}.button:hover{border-color:#9cb5d6;background:#f8faff}.button.fill{width:100%;margin-top:10px}.button.primary,.file-label{background:#1e5abd;color:#fff;border-color:#1e5abd}.button.primary:hover,.file-label:hover{background:#174a9e}.file-label{display:block;text-align:center;border-radius:7px;padding:11px;cursor:pointer;font-size:11px;font-weight:700}.file-label input{display:none}.field{margin:12px 0}.field label{display:flex;justify-content:space-between;font-size:11px;font-weight:650;color:#536278}.field output{color:#1f5bb9}input[type=range]{width:100%;accent-color:#235dc0;margin:8px 0 0}input[type=number]{min-width:0;width:100%;border:1px solid #e1e7ee;border-radius:6px;font-size:12px;padding:8px;color:#27364c}.ref-grid{display:grid;grid-template-columns:1fr 83px;gap:7px}.ref{padding:9px 4px;font-weight:600;text-align:left}.ref.selected{border-color:#1e5abd;background:#e9f0ff;color:#2053a2}.checkline{display:flex;justify-content:space-between;color:#627389;font-size:11px}.checkline input{accent-color:#1d5dc1}.two-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px}.metric-row{display:grid;grid-template-columns:1fr 1fr;border-radius:8px;background:#f5f8fc;margin:10px 0 12px;padding:13px}.metric-row div{display:flex;flex-direction:column;gap:4px}.metric-row strong{font-size:24px}.metric-row span{font-size:9px;letter-spacing:1.5px;font-weight:800;color:#7e8da0}.main{padding:27px 32px 35px;min-width:0;max-width:1700px;width:100%;margin:0 auto}.main-header{display:flex;justify-content:space-between;align-items:end;gap:10px;margin-bottom:21px}.overline{font-size:10px;color:#2b64bc;letter-spacing:1.6px;font-weight:800;margin-bottom:8px}h1{font-size:26px;letter-spacing:-.8px;margin:0}.right-actions{display:flex;gap:5px;padding:5px;border:1px solid #e1e7f0;background:#fff;border-radius:9px}.tab{background:none;border:0;color:#74839a;border-radius:6px;padding:9px 12px;font-weight:650;font-size:11px;cursor:pointer}.tab.active{color:#1857b6;background:#eaf1fc}.hint-bar{display:flex;justify-content:space-between;align-items:center;padding:11px 16px;border:1px solid #dfe8f5;border-bottom:0;background:#f0f5fc;border-radius:10px 10px 0 0;color:#76889e;font-size:11px}.hint-bar strong{color:#3261a4;margin-right:9px;font-size:10px;letter-spacing:1px}.mini{font-size:11px;border:0;background:none;color:#2861b7;cursor:pointer;font-weight:700}.canvas-holder{height:min(58vh,680px);min-height:390px;background:#eef2f6;border:1px solid #dee5ed;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background-image:radial-gradient(#d9e1eb 1px,transparent 1px);background-size:18px 18px}.canvas-holder canvas{display:none;max-width:100%;max-height:100%;object-fit:contain;cursor:crosshair;image-rendering:auto;box-shadow:0 4px 25px #13294218}.empty{text-align:center}.empty-icon{font-size:72px;color:#9ab3d4;line-height:1}.empty h3{font-size:18px;margin:16px 0 8px}.empty p{font-size:12px;color:#8796a8;margin:0 0 20px}.upload{display:inline-block;padding:12px 25px}.bottom{display:flex;justify-content:space-between;align-items:center;color:#8291a3;font-size:11px;padding:15px 4px 25px;gap:10px;flex-wrap:wrap}.legend{display:flex;gap:18px;flex-wrap:wrap}.legend span{display:flex;align-items:center;gap:6px}.lg{display:inline-block;width:9px;height:9px;border-radius:3px}.blue{background:#27a7ef}.pink{background:#ef69aa}.green{background:#13b78b}.yellow{background:#f5b82e}.table-card{background:#fff;border:1px solid #e5eaf0;border-radius:11px;overflow:hidden}.table-top{display:flex;justify-content:space-between;align-items:center;padding:18px 20px}.table-top h3{font-size:15px;margin:0 0 3px}.table-top p{font-size:11px;color:#8b99a8;margin:0}#rowsBadge{font-size:10px;background:#eff4fb;color:#5c7ca9;border-radius:6px;padding:7px 10px;font-weight:800}.table-scroll{overflow:auto;max-height:300px}table{border-collapse:collapse;width:100%;font-size:11px}thead{background:#f8fafc;position:sticky;top:0}th{text-align:left;color:#8899ae;font-size:9px;letter-spacing:1px;padding:11px 20px}td{border-top:1px solid #eff1f5;padding:11px 20px;color:#526379}.none{text-align:center;color:#a0adbc;padding:26px}footer{text-align:center;font-size:10px;color:#94a2b5;padding:15px}@media(max-width:950px){.workspace{grid-template-columns:1fr}.sidebar{max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sidebar-title{grid-column:1/-1}.panel{margin:0}.main{padding:25px 17px}.top{padding:0 16px}}@media(max-width:580px){.sidebar{grid-template-columns:1fr}.top-right .tag{display:none}.main-header{align-items:stretch;flex-direction:column}.right-actions{overflow:auto}.canvas-holder{min-height:330px;height:48vh}h1{font-size:22px}}.panel{padding:0;overflow:hidden}.panel summary{display:flex;align-items:center;gap:9px;padding:16px;cursor:pointer;font-size:13px;font-weight:750;list-style:none;-webkit-user-select:none;user-select:none}.panel summary::-webkit-details-marker{display:none}.panel summary:focus-visible{outline:2px solid #2564c4;outline-offset:-3px}.panel summary:hover{background:#f7faff}.panel summary .chevron{margin-left:auto;color:#8797ad;transition:transform .18s;font-size:18px;line-height:1}.panel[open] summary .chevron{transform:rotate(180deg)}.panel>:not(summary){margin-left:16px;margin-right:16px}.panel>:last-child{margin-bottom:16px}.panel>.file-label{margin-top:0}.panel[open] summary{border-bottom:1px solid #f0f3f8;margin-bottom:14px}.canvas-holder{height:min(82vh,980px);min-height:600px}.canvas-holder canvas#canvas{max-height:100%}.loupe{position:absolute;z-index:8;width:184px;height:207px;border-radius:100px 100px 14px 14px;background:#fff;border:2px solid #2861b7;box-shadow:0 10px 35px #14273f44;pointer-events:none;display:none;overflow:hidden;align-items:center;flex-direction:column}.loupe canvas{display:block!important;width:180px;height:180px;max-width:none!important;max-height:none!important;box-shadow:none!important;image-rendering:pixelated!important}.loupe span{font:700 11px ui-monospace,monospace;color:#2352a0;white-space:nowrap;padding:4px}.trace-axis.selected,#joinMode.selected{color:#1553a9;background:#e7f0ff;border-color:#347de0}@media(max-width:580px){.canvas-holder{height:75vh;min-height:510px}.loupe{transform:scale(.8);transform-origin:top left}}.sidebar,.panel,.panel>*,.two-buttons,.field{min-width:0}.panel>.two-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.panel .button{max-width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.35;text-align:center}.panel .two-buttons>.button{width:100%;padding:10px 5px}.panel input:not([type=checkbox]):not([type=range]),.panel select{min-width:0;max-width:100%;width:100%;box-sizing:border-box}.panel .ref-grid{grid-template-columns:minmax(0,1fr) minmax(65px,83px)}.panel .ref-grid .button{min-width:0}.canvas-tools{display:flex;align-items:center;gap:7px;flex-wrap:wrap;border:1px solid #dfe8f5;border-bottom:0;padding:9px 13px;background:#fff}.canvas-tools-label{font-size:10px;letter-spacing:1px;font-weight:800;color:#788ba3;margin-right:5px}.canvas-tool{border:1px solid #dce3eb;background:#fff;color:#304159;font-size:11px;font-weight:700;border-radius:7px;cursor:pointer;min-height:34px;padding:7px 12px}.canvas-tool:hover{background:#f1f6ff;border-color:#92add4}.canvas-tool.selected{background:#e8f0ff;border-color:#266bd1;color:#1553a9}#toolErase.selected{background:#fff0ed;color:#b43f30;border-color:#dc695d}.canvas-tools-hint{font-size:11px;color:#8190a3;margin-left:auto}@media(max-width:650px){.canvas-tools-hint{flex-basis:100%;margin:0}.canvas-tool{flex:1;padding:8px 5px}}.zoom-bar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid #dfe7f2;border-radius:9px;margin-bottom:10px;padding:9px 12px;font-size:11px;color:#61748e}.zoom-bar strong{font-size:10px;letter-spacing:1px}.zoom-bar input{width:160px;max-width:22vw;margin:0}.zoom-bar output{min-width:43px;text-align:right;font-weight:750;color:#195bbb}.zoom-bar .button{padding:5px 10px}.zoom-bar span{margin-left:auto;color:#8a96a7}.canvas-holder canvas#canvas{transform-origin:center center;flex-shrink:0;will-change:transform}.depth-tools{display:grid;grid-template-columns:1fr 1fr;gap:7px}.depth-tools .button{white-space:normal;min-width:0;padding:8px 4px}.depth-qc{margin-top:8px;font-size:11px;line-height:1.45;color:#536782}.qc-scroll{max-height:180px;overflow:auto}.depth-qc table{font-size:10px}.depth-qc th,.depth-qc td{padding:5px 6px}.qc-good{color:#147e69}.qc-warn{color:#b26b09;font-weight:700}.qc-bad{color:#bf3d46;font-weight:700}.main-header{align-items:center;flex-wrap:wrap}.right-actions{align-items:center;flex-wrap:wrap;justify-content:flex-end;min-width:0}.navigation-controls{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.navigation-controls .button{padding:7px 9px}.navigation-controls input[type=range]{width:95px;margin:0;min-width:60px}.navigation-controls output{font-size:11px;min-width:36px;text-align:center;font-weight:750;color:#1857b6}.top-divider{height:27px;border-left:1px solid #dfe6ee;margin:0 5px}.nav-toggle{font-size:11px;font-weight:700;background:transparent;border:1px solid transparent;border-radius:6px;padding:8px;cursor:pointer;color:#52677e}.nav-toggle.selected{background:#eaf1fc;color:#1857b6;border-color:#cbdcf6}@media(max-width:700px){.right-actions{justify-content:flex-start}.top-divider{display:none}.navigation-controls{width:100%}}[hidden]{display:none!important}.auth-gate{min-height:100vh;display:grid;place-items:center;background:#f2f6fb;padding:22px}.auth-card{width:min(100%,410px);background:#fff;padding:32px;border:1px solid #dce5f2;border-radius:16px;box-shadow:0 16px 50px #1a395e14}.auth-mark{background:#164789;color:#fff;font-size:32px;width:55px;height:55px;display:grid;place-items:center;border-radius:13px}.auth-card h1{margin:20px 0 8px;color:#142842;font-size:25px}.auth-card p{font-size:13px;line-height:1.6;color:#61718a}.auth-card form{display:grid;gap:10px;margin:20px 0 12px}.auth-card label{font-size:12px;font-weight:700;color:#33465e}.auth-card input{border:1px solid #ced8e6;padding:12px;border-radius:7px;font:inherit;width:100%;box-sizing:border-box}.auth-card button{border:0;border-radius:7px;padding:12px;background:#205bc3;color:#fff;font-weight:700;cursor:pointer}.auth-card button:disabled{opacity:.55;cursor:wait}#authFeedback{min-height:18px;color:#b14734}.auth-foot{border-top:1px solid #e2e7ee;padding-top:14px}.signed-in-user{font-size:11px;color:#63758b;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
