:root,[data-theme=dark]{color-scheme:dark;--p-bg-deep:#070d18;--p-bg:#0a1220;--p-surface:#0f1b2d;--p-surface-2:#13223a;--p-surface-3:#182b47;--p-glass:#0f1b2db8;--p-line:#94a3b824;--p-line-strong:#94a3b842;--p-line-accent:#22d3ee61;--p-text:#e8f0fa;--p-text-2:#9fb1c7;--p-text-3:#8195ad;--p-text-inverse:#081020;--p-primary:#3b82f6;--p-primary-hover:#60a5fa;--p-primary-press:#2563eb;--p-accent:#22d3ee;--p-accent-soft:#22d3ee1f;--p-brand-gradient:linear-gradient(135deg,#22d3ee,#3b82f6);--p-ok:#34d399;--p-warn:#fbbf24;--p-alert:#f87171;--p-info:#60a5fa;--p-ok-soft:#34d39924;--p-warn-soft:#fbbf2424;--p-alert-soft:#f8717124;--p-info-soft:#60a5fa24;--p-state-normal:#34d399;--p-state-borderline:#fbbf24;--p-state-abnormal:#f87171;--p-state-uncertain:#a78bfa;--p-state-uncomputable:#8195ad;--p-state-rejected:#64748b;--p-shadow-card:0 1px 0 #ffffff08 inset,0 8px 28px #0206108c;--p-shadow-float:0 16px 48px #020610a6;--p-glow-accent:0 0 0 1px #22d3ee61,0 0 22px #22d3ee2e;--p-glow-primary:0 0 0 1px #3b82f659,0 0 22px #3b82f62e}[data-theme=light]{color-scheme:light;--p-bg-deep:#f1f5f9;--p-bg:#f8fafc;--p-surface:#fff;--p-surface-2:#f1f5f9;--p-surface-3:#e2e8f0;--p-glass:#ffffffd9;--p-line:#94a3b838;--p-line-strong:#94a3b85c;--p-line-accent:#0ea5e961;--p-text:#0f172a;--p-text-2:#475569;--p-text-3:#526278;--p-text-inverse:#fff;--p-primary:#2563eb;--p-primary-hover:#3b82f6;--p-primary-press:#1d4ed8;--p-accent:#0369a1;--p-accent-soft:#0ea5e91a;--p-brand-gradient:linear-gradient(135deg,#0ea5e9,#2563eb);--p-ok:#046c4e;--p-warn:#92400e;--p-alert:#b91c1c;--p-info:#1d4ed8;--p-ok-soft:#0596691a;--p-warn-soft:#d977061a;--p-alert-soft:#dc26261a;--p-info-soft:#3b82f61a;--p-state-normal:#059669;--p-state-borderline:#b45309;--p-state-abnormal:#dc2626;--p-state-uncertain:#7c3aed;--p-state-uncomputable:#64748b;--p-state-rejected:#94a3b8;--p-shadow-card:0 1px 3px #0000000f,0 4px 12px #00000014;--p-shadow-float:0 8px 32px #0000001f;--p-glow-accent:0 0 0 1px #0ea5e94d,0 0 16px #0ea5e924;--p-glow-primary:0 0 0 1px #2563eb4d,0 0 16px #2563eb24}*{margin:0;padding:0}#app{font-family:Inter,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:left;color:var(--p-text);background:var(--p-bg)}.app-error-boundary{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--p-bg-deep);color:var(--p-text);text-align:center;padding:24px}.app-error-detail{max-width:640px;color:var(--p-text-2);font-size:14px;word-break:break-word}.app-error-reload{padding:8px 20px;background:var(--p-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px}.app-error-reload:hover{background:var(--p-accent);color:var(--p-bg-deep)}img[data-v-53b386c6]{display:block}.ai-overlay-svg[data-v-362a57e6]{overflow:visible}.layer-angles>g.hover[data-v-362a57e6],.layer-angles>g.selected[data-v-362a57e6],.layer-findings>g.selected[data-v-362a57e6]>*,.layer-guides>g.hover path[data-v-362a57e6],.layer-guides>g.selected path[data-v-362a57e6],.layer-points>g.selected circle[data-v-362a57e6],.layer-tracings>polyline.hover[data-v-362a57e6],.layer-tracings>polyline.selected[data-v-362a57e6]{filter:drop-shadow(0 0 2px currentColor)}.tooth-chart[data-v-d0f942ba]{display:flex;flex-direction:column;gap:4px;background:var(--p-surface-2,#13223a);border:1px solid var(--p-line,#94a3b824);border-radius:6px;padding:10px 12px}.tc-row[data-v-d0f942ba]{display:flex;justify-content:center;gap:4px}.tc-divider[data-v-d0f942ba]{height:1px;background:var(--p-line,#94a3b824);margin:2px 16px}.tc-tooth[data-v-d0f942ba]{width:26px;height:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px 0;border:none;background:#0000;border-radius:6px;color:var(--p-text-2,#9fb1c7);font-weight:600;cursor:pointer;transition:background .12s ease,filter .12s ease;position:relative}.tc-tooth.q1[data-v-d0f942ba]{color:#ff6b6b}.tc-tooth.q2[data-v-d0f942ba]{color:#4ecdc4}.tc-tooth.q3[data-v-d0f942ba]{color:#45b7d1}.tc-tooth.q4[data-v-d0f942ba]{color:#96ceb4}.tc-tooth.hovered[data-v-d0f942ba],.tc-tooth[data-v-d0f942ba]:hover{background:var(--p-surface,#0f1b2d);filter:brightness(1.25)}.tc-tooth.selected[data-v-d0f942ba]{background:var(--p-accent-soft,#22d3ee1f);box-shadow:var(--p-glow-accent,0 0 0 1px #22d3ee61,0 0 22px #22d3ee2e)}.tc-tooth.finding[data-v-d0f942ba]{color:var(--p-state-abnormal,#f87171)}.tc-tooth.existing[data-v-d0f942ba]{color:var(--p-state-normal,#34d399)}.tc-tooth.missing[data-v-d0f942ba]{opacity:.45}.tc-tooth[data-v-d0f942ba]:focus-visible{outline:2px solid var(--p-accent,#22d3ee);outline-offset:1px}.tc-num[data-v-d0f942ba]{position:relative;z-index:1;font-size:9px;line-height:1}.tc-glyph[data-v-d0f942ba]{width:20px;height:23px;display:block;overflow:visible}.tc-crown[data-v-d0f942ba]{fill:currentColor;fill-opacity:.9}.tc-root[data-v-d0f942ba]{fill:currentColor;fill-opacity:.4}.tc-upper .tc-glyph[data-v-d0f942ba]{transform:scaleY(-1)}.tc-upper .tc-tooth[data-v-d0f942ba]{flex-direction:column-reverse}.tc-tooth.missing .tc-crown[data-v-d0f942ba],.tc-tooth.missing .tc-root[data-v-d0f942ba]{fill-opacity:.12}.tc-note[data-v-d0f942ba]{margin:6px 2px 0;font-size:10px;line-height:1.35;color:var(--p-text-3,#64748b)}.tc-dash[data-v-d0f942ba]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.tc-dash[data-v-d0f942ba]:after{content:"";width:60%;height:1px;background:currentColor;transform:rotate(-45deg)}.compact[data-v-d0f942ba]{padding:6px 8px;gap:2px}.compact .tc-tooth[data-v-d0f942ba]{width:21px;height:30px}.compact .tc-glyph[data-v-d0f942ba]{width:16px;height:19px}.compact .tc-num[data-v-d0f942ba]{font-size:8px}.compact .tc-divider[data-v-d0f942ba]{margin:1px 10px}.compact .tc-note[data-v-d0f942ba]{font-size:9px;max-width:330px}.verdict-control[data-v-1a7cd124]{display:flex;gap:4px}.verdict-btn[data-v-1a7cd124]{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;border:1px solid var(--p-line,#94a3b824);background:var(--p-surface-2,#13223a);color:var(--p-text-3,#64748b);font-size:12px;font-family:inherit;cursor:pointer;transition:color .12s ease,border-color .12s ease,background .12s ease}.verdict-btn[data-v-1a7cd124]:hover{color:var(--p-text,#e8f0fa);border-color:var(--p-line-accent,#22d3ee61)}.verdict-btn[data-v-1a7cd124]:focus-visible{outline:2px solid var(--p-accent,#22d3ee);outline-offset:1px}.verdict-glyph[data-v-1a7cd124]{font-weight:700;line-height:1}.verdict-btn.active[data-v-1a7cd124]{background:var(--p-surface-3,#182b47)}.verdict-btn.active.accepted[data-v-1a7cd124]{color:var(--p-state-normal,#34d399);border-color:var(--p-state-normal,#34d399)}.verdict-btn.active.corrected[data-v-1a7cd124]{color:var(--p-state-borderline,#fbbf24);border-color:var(--p-state-borderline,#fbbf24)}.verdict-btn.active.rejected[data-v-1a7cd124]{color:var(--p-state-abnormal,#f87171);border-color:var(--p-state-abnormal,#f87171)}.tooth-card[data-v-ba1ccec8]{border:1px solid var(--p-line-accent,#22d3ee61);border-radius:6px;background:var(--p-surface-2,#13223a);padding:10px;margin-bottom:10px}.tooth-card-head[data-v-ba1ccec8]{display:flex;align-items:center;gap:8px;margin-bottom:8px}.tooth-card-id[data-v-ba1ccec8]{font-size:14px;font-weight:700;color:var(--p-accent,#22d3ee)}.tooth-card-count[data-v-ba1ccec8]{font-size:12px;color:var(--p-text-3,#64748b);flex:1}.tooth-card-close[data-v-ba1ccec8]{border:none;background:none;color:var(--p-text-3,#64748b);cursor:pointer;font-size:12px;padding:2px 4px;border-radius:6px}.tooth-card-close[data-v-ba1ccec8]:hover{color:var(--p-text,#e8f0fa)}.tooth-card-close[data-v-ba1ccec8]:focus-visible{outline:2px solid var(--p-accent,#22d3ee)}.tooth-crop[data-v-ba1ccec8]{position:relative;border-radius:6px;border:1px solid var(--p-line,#94a3b824);background-color:#000;margin:0 auto 10px}.tooth-crop-zoom[data-v-ba1ccec8]{position:absolute;right:4px;bottom:3px;font-size:10px;color:var(--p-text-2,#9fb1c7);background:#081020b8;padding:1px 5px;border-radius:4px}.tooth-crop-missing[data-v-ba1ccec8]{font-size:12px;color:var(--p-text-3,#64748b);margin:0 0 8px}.tooth-findings[data-v-ba1ccec8]{list-style:none;margin:0;padding:0}.tooth-finding[data-v-ba1ccec8]{padding:7px 0;border-top:1px solid var(--p-line,#94a3b824)}.tooth-finding[data-v-ba1ccec8]:first-child{border-top:none}.tooth-finding-line[data-v-ba1ccec8]{display:flex;align-items:center;gap:6px}.tooth-finding-dot[data-v-ba1ccec8]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tooth-finding-text[data-v-ba1ccec8]{flex:1;font-size:12px;color:var(--p-text,#e8f0fa)}.tooth-finding-conf[data-v-ba1ccec8]{font-size:12px;color:var(--p-text-3,#64748b)}.conf-bar[data-v-ba1ccec8]{height:3px;border-radius:2px;background:var(--p-bg-deep,#070d18);margin:5px 0 6px;overflow:hidden}.conf-bar-fill[data-v-ba1ccec8]{height:100%;border-radius:2px;opacity:.85}.tooth-finding.rejected .tooth-finding-text[data-v-ba1ccec8]{text-decoration:line-through;color:var(--p-text-3,#64748b)}.tooth-finding.rejected .conf-bar[data-v-ba1ccec8],.tooth-finding.rejected .tooth-finding-dot[data-v-ba1ccec8]{opacity:.35}.tooth-finding.rejected .tooth-finding-conf[data-v-ba1ccec8]{text-decoration:line-through}.tooth-finding-withheld[data-v-ba1ccec8]{margin:5px 0 0;font-size:12px;color:var(--p-state-abnormal,#f87171)}.norm-bar-row[data-v-16413b50]{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--p-surface-2,#13223a);border:1px solid var(--p-line,#94a3b824);border-radius:8px;margin-bottom:6px}.norm-bar-info[data-v-16413b50]{display:flex;flex-direction:column;align-items:stretch;gap:4px;font-size:12px}.norm-bar-header[data-v-16413b50]{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}.norm-bar-label[data-v-16413b50]{font-weight:600;color:var(--p-text,#e8f0fa);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.norm-bar-source[data-v-16413b50]{font-size:10px;padding:1px 4px;background:var(--p-surface-3,#182b47);color:var(--p-text-3,#8195ad);border-radius:4px;flex-shrink:0}.norm-bar-metrics[data-v-16413b50]{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}.norm-bar-val[data-v-16413b50]{font-weight:600;color:var(--p-text,#e8f0fa)}.norm-bar-norm[data-v-16413b50]{color:var(--p-text-3,#8195ad);font-size:11px}.norm-bar-dev[data-v-16413b50]{font-size:11px;font-weight:500}.status-normal[data-v-16413b50]{color:var(--p-state-normal,#34d399)}.status-mild[data-v-16413b50]{color:var(--p-state-borderline,#fbbf24)}.status-marked[data-v-16413b50]{color:var(--p-state-abnormal,#f87171)}.status-unavailable[data-v-16413b50]{color:var(--p-state-uncomputable,#8195ad)}.norm-bar-track-container[data-v-16413b50]{padding:4px 0 2px}.norm-bar-track[data-v-16413b50]{position:relative;height:10px;background:var(--p-bg-deep,#070d18);border-radius:5px;overflow:visible;border:1px solid var(--p-line,#94a3b824)}.band-2sd-left[data-v-16413b50]{position:absolute;left:16.6667%;width:16.6667%;top:0;bottom:0;background:#fbbf2426}.band-1sd[data-v-16413b50]{position:absolute;left:33.3333%;width:33.3333%;top:0;bottom:0;background:#34d39938}.band-2sd-right[data-v-16413b50]{position:absolute;left:66.6667%;width:16.6667%;top:0;bottom:0;background:#fbbf2426}.norm-mean-line[data-v-16413b50]{position:absolute;left:50%;top:-1px;bottom:-1px;width:2px;background:var(--p-text-2,#9fb1c7);transform:translateX(-50%);z-index:1}.norm-patient-marker[data-v-16413b50]{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);z-index:2;box-shadow:0 0 4px #0009}.norm-patient-marker.status-normal[data-v-16413b50]{background:var(--p-state-normal,#34d399);border:2px solid #070d18}.norm-patient-marker.status-mild[data-v-16413b50]{background:var(--p-state-borderline,#fbbf24);border:2px solid #070d18}.norm-patient-marker.status-marked[data-v-16413b50]{background:var(--p-state-abnormal,#f87171);border:2px solid #070d18}.bum-overlay[data-v-0512f1ce]{position:fixed;inset:0;z-index:9999;background:#000000a6;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center}.bum-card[data-v-0512f1ce]{background:var(--p-surface,#0f1b2d);border:1px solid var(--p-line-strong,#94a3b842);border-radius:16px;width:440px;max-width:92vw;padding:28px 28px 20px;display:flex;flex-direction:column;gap:18px;box-shadow:0 20px 60px #00000080}.bum-header[data-v-0512f1ce]{text-align:center}.bum-icon[data-v-0512f1ce]{width:40px;height:40px;color:var(--p-accent,#22d3ee);margin:0 auto 8px;display:block}.bum-header h2[data-v-0512f1ce]{font-size:20px;font-weight:700;color:var(--p-text,#e8f0fa);margin:0 0 6px}.bum-desc[data-v-0512f1ce]{font-size:12px;color:var(--p-text-2,#9fb1c7);margin:0;line-height:1.5}.bum-drop[data-v-0512f1ce]{border:2px dashed var(--p-line-strong,#94a3b842);border-radius:12px;padding:32px 20px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;position:relative}.bum-drop.dragover[data-v-0512f1ce],.bum-drop[data-v-0512f1ce]:hover{border-color:var(--p-accent,#22d3ee);background:#3b82f60f}.bum-input[data-v-0512f1ce]{position:absolute;inset:0;opacity:0;cursor:pointer}.bum-drop-icon[data-v-0512f1ce]{width:32px;height:32px;color:var(--p-text-3,#64748b);margin:0 auto 10px;display:block}.bum-drop-text[data-v-0512f1ce]{display:block;font-size:12px;color:var(--p-text,#e8f0fa);font-weight:600;margin-bottom:4px}.bum-drop-sub[data-v-0512f1ce]{font-size:12px;color:var(--p-text-3,#64748b)}.bum-progress[data-v-0512f1ce]{text-align:center}.bum-progress-text[data-v-0512f1ce]{font-size:12px;color:var(--p-text-2,#9fb1c7);margin:8px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bum-error[data-v-0512f1ce]{display:flex;align-items:center;gap:8px;background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;padding:10px 14px;font-size:12px;color:#fca5a5}.bum-error-icon[data-v-0512f1ce]{font-size:18px}.bum-footer[data-v-0512f1ce]{display:flex;align-items:center;justify-content:space-between}.bum-size-hint[data-v-0512f1ce]{font-size:12px;color:var(--p-text-3,#64748b)}.setup-wrap[data-v-7c56511b]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--pc-bg,#0b0e13)}.setup-card[data-v-7c56511b]{width:min(520px,100%);background:var(--pc-surface,#12161f);border:1px solid var(--pc-border,#ffffff14);border-radius:14px;padding:36px 40px;color:var(--pc-text,#e6ebf2)}.setup-card h1[data-v-7c56511b]{margin:0 0 8px;font-size:22px;font-weight:600}.brand[data-v-7c56511b]{display:flex;align-items:center;gap:10px;margin-bottom:26px}.brand .brand-name[data-v-7c56511b]{font-size:15px;font-weight:600;letter-spacing:.02em}.sub[data-v-7c56511b]{margin:0 0 22px;font-size:13.5px;line-height:1.6;color:var(--pc-text-muted,#94a3b8)}.dropzone[data-v-7c56511b]{display:flex;flex-direction:column;align-items:center;gap:10px;padding:38px 20px;border:1.5px dashed var(--pc-border,#ffffff2e);border-radius:10px;color:var(--pc-text-muted,#94a3b8);font-size:13px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.dropzone.over[data-v-7c56511b],.dropzone[data-v-7c56511b]:hover{border-color:#22d3ee;color:var(--pc-text,#e6ebf2);background:#22d3ee0d}.error[data-v-7c56511b]{margin-top:16px}.privacy[data-v-7c56511b]{margin:18px 0 0;font-size:12px;color:var(--pc-text-muted,#94a3b8);opacity:.85}.progress-line[data-v-7c56511b]{margin:14px 0 4px;font-size:13px;color:var(--pc-text-muted,#94a3b8);font-variant-numeric:tabular-nums}.progress-file[data-v-7c56511b]{margin:0;font-size:12px;color:var(--pc-text-muted,#94a3b8);opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.storage-line[data-v-7c56511b]{margin:0 0 18px;font-size:12.5px;color:var(--pc-text-muted,#94a3b8)}.actions[data-v-7c56511b]{display:flex;gap:12px;margin-top:8px}.svg-icon[data-v-5767c525]{vertical-align:middle;fill:currentColor;overflow:hidden}*{margin:0;padding:0;outline:none}*,:after,:before{box-sizing:inherit}*{-webkit-tap-highlight-color:rgba(0,0,0,0)}:focus-visible{outline:2px solid var(--p-primary,#3b82f6);outline-offset:2px}html{box-sizing:border-box}body,html{height:100%}body{width:100%;overflow:hidden;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Inter,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,sans-serif;font-style:normal;font-size:14px;font-weight:400;color:var(--p-text,#e8f0fa);background:var(--p-bg,#0a1220)}#app{height:100%}label{font-weight:600}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}div:focus-visible{outline:2px solid var(--p-primary,#3b82f6);outline-offset:2px}.n-card.is-hoverable:hover{transform:none;box-shadow:var(--p-shadow-card,0 1px 0 #ffffff08 inset,0 8px 28px #0206108c)}.fr{float:right}.fl{float:left}.pr-5{padding-right:5px}.pl-5{padding-left:5px}.block{display:block}.pointer{cursor:pointer}.text-center{text-align:center}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.no-padding{padding:0!important}.padding-content{padding:4px 0}.app-container{padding:20px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background-color:#0000}::-webkit-scrollbar-thumb{background-color:#94a3b847;border-radius:19px}::-webkit-scrollbar-thumb:hover{background-color:#94a3b873}[data-theme=light] ::-webkit-scrollbar-thumb{background-color:#94a3b859}[data-theme=light] ::-webkit-scrollbar-thumb:hover{background-color:#94a3b88c}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-corner{background-color:#0000}.svg-24{font-size:24px}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}