:root{--bg-0: #0b0f16;--bg-1: #101722;--bg-2: #151e2b;--bg-3: #1c2736;--bg-hover: #223045;--border: #253347;--border-soft: #1c2839;--text-1: #e6edf7;--text-2: #94a6bd;--text-3: #62748d;--accent: #4da3ff;--accent-soft: rgba(77, 163, 255, .14);--danger: #f0614a;--warn: #ffc247;--ok: #25b26b;--mono: ui-monospace, SFMono-Regular, "Cascadia Mono", Consolas, "Liberation Mono", monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,PingFang SC,sans-serif;font-size:13px;color:var(--text-1);background:var(--bg-0);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{overflow:hidden}button,input,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#2b3b50;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3a506c}.app{display:grid;grid-template-rows:52px 44px minmax(0,1fr) 26px;height:100vh;min-height:0;background:var(--bg-0)}.topbar{display:flex;align-items:center;gap:20px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--bg-1)}.brand{display:flex;align-items:center;gap:10px;min-width:230px}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:linear-gradient(135deg,#2f7fe0,#4da3ff);color:#fff;font-size:17px}.brand-text{display:flex;flex-direction:column;line-height:1.25}.brand-text strong{font-size:14px;letter-spacing:.2px}.brand-text small{color:var(--text-3);font-size:11px}.topbar-center{display:flex;align-items:center;gap:8px;color:var(--text-2);font-size:12px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px #25b26b99}.status-dot.busy{background:var(--warn);box-shadow:0 0 8px #ffc24799}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px}.top-stat{color:var(--text-2)}.top-warn{padding:3px 8px;border-radius:4px;background:#ffc2471f;color:var(--warn);border:1px solid rgba(255,194,71,.22)}.top-warn.danger{background:#f0614a1f;color:#f4a294;border-color:#f0614a47}.top-warn.harmless{background:#25b26b1a;color:#7fd6a5;border-color:#25b26b38}.toolbar{display:flex;align-items:center;gap:4px;padding:0 12px;border-bottom:1px solid var(--border);background:var(--bg-2);overflow-x:auto;white-space:nowrap}.tool-group{display:flex;align-items:center;gap:3px}.tool-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text-2);font-size:12px}.tool-btn:hover{background:var(--bg-hover);color:var(--text-1)}.tool-btn.active{background:var(--accent-soft);border-color:#4da3ff59;color:var(--accent)}.tool-btn.square{width:28px;padding:0;justify-content:center;font-size:15px}.tool-icon{font-size:13px}.divider{width:1px;height:20px;margin:0 8px;background:var(--border);flex:none}.scale-label{min-width:82px;text-align:center;font-family:var(--mono);font-size:11px;color:var(--text-3)}.field-label{color:var(--text-3);font-size:11px;margin:0 4px 0 6px}.compact-select{height:26px;padding:0 6px;border-radius:5px;border:1px solid var(--border);background:var(--bg-1);color:var(--text-2);font-size:12px;outline:none}.compact-select:focus{border-color:var(--accent)}.toggles{gap:10px}.check{display:inline-flex;align-items:center;gap:5px;color:var(--text-2);font-size:12px;cursor:pointer}.check input{accent-color:var(--accent);width:13px;height:13px;cursor:pointer}.toolbar-spacer{flex:1;min-width:8px}.btn{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 12px;border:1px solid var(--border);border-radius:5px;background:var(--bg-3);color:var(--text-1);font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:#3a5170}.btn.primary{background:#2b6fc9;border-color:#3a82e0;color:#fff}.btn.primary:hover:not(:disabled){background:#357ddd}.btn.block{width:100%}.btn-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.mini-btn{width:22px;height:22px;flex:none;display:grid;place-items:center;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--text-3);font-size:11px}.mini-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-1);border-color:var(--border)}.mini-btn.danger-hover:hover{color:var(--danger)}.main{display:grid;grid-template-columns:272px minmax(0,1fr) 292px;min-height:0}.panel{display:flex;flex-direction:column;min-height:0;overflow-y:auto;background:var(--bg-1)}.layer-panel{border-right:1px solid var(--border)}.inspector-panel{border-left:1px solid var(--border)}.panel-head{display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;flex:none;border-bottom:1px solid var(--border-soft)}.panel-head.sub{margin-top:6px;border-top:1px solid var(--border-soft)}.panel-head.sub .mini-btn{margin-left:auto}.panel-title{font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--text-1)}.badge{margin-left:auto;padding:1px 7px;border-radius:10px;background:var(--bg-3);color:var(--text-2);font-size:11px;font-family:var(--mono)}.panel-actions{padding:12px;border-bottom:1px solid var(--border-soft)}.panel-actions .btn-row{margin-top:8px}.file-tip{margin:9px 0 0;color:var(--text-3);font-size:11px;line-height:1.6}.layer-list{flex:1;overflow-y:auto;padding:8px}.layer-item{margin-bottom:5px;border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-2);overflow:hidden}.layer-item.is-hidden{opacity:.5}.layer-item.has-error{border-color:#f0614a66}.layer-row{display:flex;align-items:center;gap:6px;padding:7px 8px}.eye{width:20px;height:20px;flex:none;border:none;background:transparent;color:var(--accent);font-size:13px}.eye:hover{color:#8ec5ff}.color-chip{position:relative;width:14px;height:14px;flex:none;border-radius:3px;border:1px solid rgba(255,255,255,.25);cursor:pointer}.color-chip input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.layer-name{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;border:none;background:transparent;text-align:left;padding:0}.layer-display{font-size:12px;color:var(--text-1)}.layer-file{font-size:10px;color:var(--text-3);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.layer-row>.mini-btn{width:20px;height:20px}.layer-error{padding:6px 9px;color:var(--danger);font-size:11px;background:#f0614a14}.layer-detail{padding:8px 10px 10px;border-top:1px solid var(--border-soft);background:var(--bg-1)}.detail-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.detail-row label{width:54px;flex:none;color:var(--text-3);font-size:11px}.detail-row select{flex:1;height:25px;padding:0 5px;border-radius:4px;border:1px solid var(--border);background:var(--bg-2);font-size:11px}.detail-row input[type=range]{flex:1;accent-color:var(--accent);height:3px}.range-value{width:32px;text-align:right;font-family:var(--mono);font-size:10px;color:var(--text-3)}.detail-meta{color:var(--text-3);font-size:10px;font-family:var(--mono);line-height:1.6}.drill-box{margin-top:8px;padding:8px;border-radius:5px;background:#60a5fa12;border:1px solid rgba(96,165,250,.26)}.drill-box.is-repaired{background:#25b26b0f;border-color:#25b26b47}.drill-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}.drill-title{color:var(--text-1);font-size:11px;font-weight:600;flex:1}.warn-pill.ok{background:#25b26b29;color:#7fd6a5}.drill-alert{font-size:10px;line-height:1.75;color:#f4a294;background:#f0614a17;border-left:2px solid var(--danger);padding:6px 7px;border-radius:3px;margin-bottom:7px}.drill-alert strong{color:#ffb4a6;font-weight:600}.drill-hint{font-size:10px;line-height:1.7;color:var(--text-2);margin-bottom:7px}.drill-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}.drill-grid label{display:flex;flex-direction:column;gap:3px;min-width:0}.drill-grid label>span{font-size:10px;color:var(--text-3)}.drill-grid select,.drill-grid input{width:100%;min-width:0;height:25px;padding:0 5px;border-radius:4px;border:1px solid var(--border);background:var(--bg-2);color:var(--text-1);font-size:11px}.drill-tools{margin-top:8px;padding:7px;border-radius:4px;background:var(--bg-2);border:1px solid var(--border-soft)}.drill-tools-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:10px;color:var(--text-2);margin-bottom:5px}.drill-tool-btns{display:flex;align-items:center;gap:4px}.mini-btn.file-btn{cursor:pointer;white-space:nowrap}.drill-tools-note{font-size:9px;line-height:1.6;color:var(--text-3);margin-bottom:6px}.drill-import-note{margin:0 0 6px;padding:4px 6px;border-radius:3px;background:#25b26b14;color:var(--text-2);font-size:9px;line-height:1.6;word-break:break-all}.drill-report-badge{margin:0 0 6px;padding:4px 6px;border-radius:3px;background:#4a8cf01a;border:1px solid rgba(74,140,240,.22);color:var(--text-2);font-size:9px;line-height:1.6}.drill-report-badge strong{color:var(--accent);font-weight:600}.drill-tool-row{display:grid;grid-template-columns:26px 1fr 38px 62px 22px;align-items:center;gap:4px;padding:2px 0}.drill-tool-row+.drill-tool-row{border-top:1px solid var(--border-soft)}.tool-code{font-family:var(--mono);font-size:10px;color:var(--accent)}.tool-raw{font-family:var(--mono);font-size:9px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-holes{font-size:9px;color:var(--text-3);text-align:right}.drill-tool-row input{width:100%;min-width:0;height:21px;padding:0 3px;border-radius:3px;border:1px solid var(--border);background:var(--bg-1);color:var(--text-1);font-size:10px;font-family:var(--mono)}.tool-unit{font-size:9px;color:var(--text-3)}.drill-alert code{font-family:var(--mono);font-size:9px;padding:0 2px;background:#0000002e;border-radius:2px}.drill-actions{display:flex;gap:6px;margin-top:8px}.drill-foot{margin-top:6px;font-size:9px;line-height:1.6;color:var(--text-3)}.warning-box{margin-top:8px;padding:8px;border-radius:5px;background:#25b26b0f;border:1px solid rgba(37,178,107,.2)}.warning-box.has-attention{background:#f0614a0f;border-color:#f0614a47}.warning-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}.warning-title{color:var(--text-1);font-size:11px}.warn-pill{padding:1px 6px;border-radius:9px;font-size:10px}.warn-pill.danger{background:#f0614a26;color:#f4a294}.warn-pill.muted{background:var(--bg-3);color:var(--text-3)}.warning-verdict{font-size:10px;line-height:1.6;margin-bottom:6px}.warning-verdict.ok{color:#7fd6a5}.warning-verdict.bad{color:#f4a294}.warn-group{border-top:1px solid var(--border-soft)}.warn-group-head{display:flex;align-items:center;gap:6px;width:100%;padding:6px 0;border:none;background:transparent;text-align:left}.warn-group-head:hover .warn-group-title{color:var(--text-1)}.warn-dot{width:6px;height:6px;border-radius:50%;background:#5b6b80;flex:none}.warn-group.attention .warn-dot{background:var(--danger)}.warn-group-title{flex:1;font-size:11px;color:var(--text-2)}.warn-group.attention .warn-group-title{color:#f4a294}.warn-count{font-family:var(--mono);font-size:10px;color:var(--text-3)}.warn-chev{color:var(--text-3);font-size:10px}.warn-group-body{padding:0 4px 8px 12px}.warn-note{font-size:10px;line-height:1.7;color:var(--text-2)}.warn-raw{margin-top:5px;font-family:var(--mono);font-size:10px;color:var(--text-3);word-break:break-all;line-height:1.5}.warn-lines{margin-top:4px;font-size:10px;color:var(--text-3);font-family:var(--mono);word-break:break-all}.warn-actions{display:flex;gap:6px;margin-top:6px;padding-top:7px;border-top:1px solid var(--border-soft)}.mini-btn.wide{width:auto;height:22px;padding:0 9px;font-size:10px;border:1px solid var(--border);border-radius:4px}.warn-all{margin-top:7px;max-height:180px;overflow-y:auto}.warn-all-line{font-size:10px;line-height:1.7;font-family:var(--mono);color:var(--text-3);word-break:break-all}.warn-all-line .attention{color:var(--danger)}.warn-all-line .critical{color:#ff8a78}.warn-all-line .ignorable{color:#5b6b80}.warn-group.critical .warn-dot{background:#ff6b5a;box-shadow:0 0 0 2px #ff6b5a2e}.warn-group.critical .warn-group-title{color:#ff9c8d;font-weight:600}.panel-empty{padding:30px 12px;text-align:center;color:var(--text-3);font-size:12px;line-height:1.9}.panel-empty span{font-size:11px}.canvas-wrap{position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--bg-0)}.board-svg{display:block;width:100%;height:100%;touch-action:none}.canvas-wrap.tool-pan .board-svg{cursor:grab}.canvas-wrap.tool-pan .board-svg:active{cursor:grabbing}.canvas-wrap.tool-measure .board-svg,.canvas-wrap.tool-box .board-svg{cursor:crosshair}.board-outline{fill:none;stroke:var(--warn);stroke-width:1;stroke-dasharray:6 4;opacity:.5;pointer-events:none}.anno-layer,.board-size-anno{pointer-events:none}.board-size-anno line{stroke:var(--warn);stroke-width:1;opacity:.75}.board-size-anno text{fill:var(--warn);font-size:11px;font-family:var(--mono)}.measure-anno{pointer-events:auto;cursor:pointer}.measure-anno line{stroke:var(--accent);stroke-width:2}.measure-anno circle{fill:var(--accent);stroke:var(--bg-0);stroke-width:1.5}.measure-anno rect:not(.anno-label-bg){fill:#4da3ff17;stroke:var(--accent);stroke-width:1.5}.measure-anno.active line{stroke:var(--warn);stroke-width:3}.measure-anno.active circle{fill:var(--warn)}.measure-anno.active rect:not(.anno-label-bg){stroke:var(--warn);stroke-width:2.5;fill:#ffc2471a}.measure-preview{pointer-events:none}.measure-preview line{stroke:var(--warn);stroke-width:1.5;stroke-dasharray:5 4}.measure-preview circle{fill:var(--warn)}.measure-preview rect:not(.anno-label-bg){fill:#ffc24714;stroke:var(--warn);stroke-width:1.5;stroke-dasharray:5 4}.anno-label-bg{fill:#17222f;stroke:#35506e;stroke-width:1}.anno-layer text{fill:var(--text-1);font-size:11px;font-family:var(--mono);pointer-events:none}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;padding:20px}.empty-icon{width:62px;height:62px;margin-bottom:16px;display:grid;place-items:center;border-radius:14px;border:1px dashed #33465f;background:#4da3ff0d;color:var(--accent);font-size:30px}.empty-state h2{margin:0 0 8px;font-size:17px;font-weight:600}.empty-state p{margin:0;color:var(--text-3);font-size:12px;line-height:1.7}.empty-actions{display:flex;gap:10px;margin-top:20px;pointer-events:auto}.empty-note{margin-top:16px!important;font-size:11px!important;color:#4d5f78!important}.drop-mask{position:absolute;top:12px;right:12px;bottom:12px;left:12px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:10px;background:#4da3ff17;color:var(--accent);font-size:16px;pointer-events:none}.canvas-hint,.cursor-readout{position:absolute;bottom:10px;padding:5px 10px;border-radius:5px;background:#101722e0;border:1px solid var(--border);color:var(--text-3);font-size:11px;pointer-events:none}.canvas-hint{left:12px}.cursor-readout{right:12px;font-family:var(--mono);color:var(--text-2)}.info-card{padding:10px 12px;border-bottom:1px solid var(--border-soft)}.info-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;font-size:12px}.info-row span{color:var(--text-3)}.info-row strong{font-family:var(--mono);font-weight:500;font-size:11px;color:var(--text-1)}.text-warn{color:var(--warn)!important}.notice{margin:10px 12px 0;padding:8px 10px;border-radius:5px;font-size:11px;line-height:1.6;background:#4da3ff17;border:1px solid rgba(77,163,255,.22);color:#9ccbff}.notice.danger{background:#f0614a17;border-color:#f0614a40;color:#f4a294}.measure-list{padding:8px 10px}.measure-item{padding:9px 10px;margin-bottom:6px;border-radius:5px;border:1px solid var(--border-soft);background:var(--bg-2)}.measure-item.active{border-color:#ffc24780;background:#ffc2470f}.measure-item-head{display:flex;align-items:center;gap:7px}.measure-no{font-family:var(--mono);font-size:11px;color:var(--accent)}.measure-kind{padding:1px 6px;border-radius:3px;background:var(--bg-3);color:var(--text-3);font-size:10px}.measure-item-head .mini-btn{margin-left:auto}.measure-value{margin-top:6px;font-family:var(--mono);font-size:13px;color:var(--text-1)}.measure-detail{margin-top:3px;font-size:10px;color:var(--text-3);font-family:var(--mono);line-height:1.5}.shortcut-list{padding:6px 12px 16px;color:var(--text-3);font-size:11px;line-height:2}kbd{display:inline-block;padding:0 5px;margin:0 2px;border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;background:var(--bg-3);color:var(--text-2);font-family:var(--mono);font-size:10px}.statusbar{display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-top:1px solid var(--border);background:var(--bg-1);color:var(--text-3);font-size:11px}.status-text{color:var(--text-2)}.statusbar-right{font-family:var(--mono);font-size:10px}@media(max-width:1180px){.main{grid-template-columns:250px minmax(0,1fr)}.inspector-panel{display:none}}@media(max-width:820px){.main{grid-template-columns:210px minmax(0,1fr)}.topbar-center,.brand-text small,.toggles,.canvas-hint{display:none}}
