.app[data-v-12d35781]{height:100vh;display:flex;flex-direction:column}.topbar[data-v-12d35781]{height:56px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 1.1rem;border-bottom:1px solid var(--paper-2, #e7ecef);background:var(--paper, #fff)}.brand[data-v-12d35781]{display:inline-flex;align-items:baseline;gap:.5rem;text-decoration:none;color:var(--ink, #1b2733)}.mark[data-v-12d35781]{color:var(--accent, #e8541e);font-size:1.2rem}.name[data-v-12d35781]{font-weight:800;letter-spacing:-.01em}.tag[data-v-12d35781]{font-size:.75rem;color:var(--ink-soft, #6b7c8c);text-transform:uppercase;letter-spacing:.08em}.mode[data-v-12d35781]{font-size:.78rem;font-weight:600;padding:.25rem .6rem;border-radius:999px;background:var(--paper-2, #f1f4f6);color:var(--ink-soft, #6b7c8c)}.mode[data-mode=photo][data-v-12d35781]{background:#fff0e8;color:var(--accent, #e8541e)}.tyre[data-v-7ec5c276]{fill:none;stroke:var(--ink, #1b2733);stroke-width:3.5}.rim[data-v-7ec5c276]{fill:none;stroke:var(--ink-soft, #6b7c8c);stroke-width:1.5}.axle[data-v-7ec5c276]{fill:var(--accent, #e8541e)}.tube[data-v-5543b674]{fill:none;stroke:var(--ink, #1b2733);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.bar-mount[data-v-5543b674]{stroke:var(--ink-soft, #6b7c8c);stroke-width:2}.stanchion[data-v-847eb1ae]{fill:none;stroke:var(--ink, #1b2733);stroke-width:3;stroke-linecap:round}.offset-link[data-v-847eb1ae]{fill:none;stroke:var(--accent, #e8541e);stroke-width:2;stroke-dasharray:4 3}.arm[data-v-c147a2b0]{fill:none;stroke:var(--ink, #1b2733);stroke-width:3;stroke-linecap:round}.pivot[data-v-c147a2b0]{fill:var(--paper, #fff);stroke:var(--ink, #1b2733);stroke-width:2}.ground[data-v-62060516]{stroke:var(--ink-soft, #6b7c8c);stroke-width:1.5;stroke-dasharray:2 4}.ext[data-v-62060516]{stroke:var(--dim, #9aa7b4);stroke-width:1}.dimline[data-v-62060516],.trailline[data-v-62060516]{stroke:var(--dim, #9aa7b4);stroke-width:1.25}.trailline[data-v-62060516]{stroke:var(--accent, #e8541e)}.arc[data-v-62060516]{fill:none;stroke:var(--accent2, #2d7dd2);stroke-width:2}.dim-label[data-v-62060516],.ang-label[data-v-62060516],.trail-label[data-v-62060516]{font:600 12px/1.2 ui-sans-serif,system-ui,sans-serif;fill:var(--ink, #1b2733)}.ang-label[data-v-62060516]{fill:var(--accent2, #2d7dd2)}.trail-label[data-v-62060516]{fill:var(--accent, #e8541e)}.handle[data-v-9c8e405d]{cursor:grab;touch-action:none}.handle[data-v-9c8e405d]:active{cursor:grabbing}.hit[data-v-9c8e405d]{fill:transparent}.dot[data-v-9c8e405d]{fill:var(--paper, #fff);stroke-width:2.5}.handle:hover .dot[data-v-9c8e405d]{fill:var(--accent, #e8541e)}.wheel-measure[data-v-940f4df0]{touch-action:none}.span[data-v-940f4df0]{stroke:var(--accent, #e8541e);stroke-width:2;stroke-dasharray:6 4;opacity:.9}.marker[data-v-940f4df0]{cursor:grab;touch-action:none}.marker[data-v-940f4df0]:active{cursor:grabbing}.hit[data-v-940f4df0]{fill:transparent}.dot[data-v-940f4df0]{fill:var(--paper, #fff);stroke:var(--accent, #e8541e);stroke-width:3}.marker:hover .dot[data-v-940f4df0]{fill:var(--accent, #e8541e)}.canvas-wrap[data-v-b396b9ff]{width:100%;height:100%;min-height:360px}.bike-svg[data-v-b396b9ff]{width:100%;height:100%;display:block;background:var(--paper, #fff);touch-action:none}.controls[data-v-e8d2c948]{display:flex;flex-direction:column;gap:.85rem}.controls-head[data-v-e8d2c948]{display:flex;align-items:baseline;justify-content:space-between}h2[data-v-e8d2c948]{font-size:.95rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft, #6b7c8c);margin:0}.reset[data-v-e8d2c948]{font-size:.78rem;border:1px solid var(--dim, #cfd8df);background:transparent;border-radius:6px;padding:.2rem .55rem;cursor:pointer;color:var(--ink, #1b2733)}.reset[data-v-e8d2c948]:hover{background:var(--paper-2, #f1f4f6)}.control[data-v-e8d2c948]{display:flex;flex-direction:column;gap:.3rem}label[data-v-e8d2c948]{display:flex;justify-content:space-between;align-items:center;font-size:.86rem}.name[data-v-e8d2c948]{color:var(--ink, #1b2733);font-size:.86rem}.val[data-v-e8d2c948]{display:inline-flex;align-items:center;gap:.25rem}.num[data-v-e8d2c948]{width:4.2rem;text-align:right;font-variant-numeric:tabular-nums;border:1px solid var(--dim, #cfd8df);border-radius:5px;padding:.1rem .3rem;font-size:.82rem}.unit[data-v-e8d2c948]{color:var(--ink-soft, #6b7c8c);font-size:.78rem;width:1.8rem}input[type=range][data-v-e8d2c948]{width:100%;accent-color:var(--accent, #e8541e)}.vec .axis[data-v-e8d2c948]{display:flex;align-items:center;gap:.4rem}.axis-tag[data-v-e8d2c948]{width:1rem;color:var(--ink-soft, #6b7c8c);font-size:.78rem;text-transform:uppercase}.vec .axis input[type=range][data-v-e8d2c948]{flex:1}.metrics[data-v-ab29880f]{display:flex;flex-direction:column;gap:.6rem}h2[data-v-ab29880f]{font-size:.95rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft, #6b7c8c);margin:0}dl[data-v-ab29880f]{margin:0;display:flex;flex-direction:column;gap:.15rem}.row[data-v-ab29880f]{display:flex;justify-content:space-between;align-items:baseline;padding:.28rem 0;border-bottom:1px dashed var(--paper-2, #e7ecef)}dt[data-v-ab29880f]{color:var(--ink, #1b2733);font-size:.86rem}dd[data-v-ab29880f]{margin:0;font-variant-numeric:tabular-nums;display:inline-flex;align-items:baseline;gap:.3rem}.v[data-v-ab29880f]{font-weight:700}.sig[data-v-ab29880f]{color:var(--accent, #e8541e);font-size:.8rem}.u[data-v-ab29880f]{color:var(--ink-soft, #6b7c8c);font-size:.78rem}.indicative[data-v-ab29880f]{font-size:.78rem;line-height:1.4;color:var(--ink-soft, #6b7c8c);background:var(--paper-2, #f1f4f6);border-left:3px solid var(--accent, #e8541e);padding:.5rem .6rem;border-radius:4px}.confidence[data-v-ab29880f]{font-size:.8rem;font-weight:600}.confidence[data-level=high][data-v-ab29880f]{color:#1f8a45}.confidence[data-level=medium][data-v-ab29880f]{color:#b8860b}.confidence[data-level=low][data-v-ab29880f]{color:#c0392b}.warnings[data-v-ab29880f]{margin:0;padding-left:1rem;font-size:.8rem;color:#b8860b}.photo[data-v-e4defe63]{display:flex;flex-direction:column;gap:.6rem}h2[data-v-e4defe63]{font-size:.95rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft, #6b7c8c);margin:0}.hint[data-v-e4defe63]{font-size:.8rem;line-height:1.4;color:var(--ink-soft, #6b7c8c);margin:0}.calib[data-v-e4defe63]{display:flex;flex-direction:column;gap:.3rem}.calib label[data-v-e4defe63]{font-size:.82rem}select[data-v-e4defe63],.custom input[data-v-e4defe63]{border:1px solid var(--dim, #cfd8df);border-radius:5px;padding:.3rem;font-size:.84rem}.custom[data-v-e4defe63]{display:inline-flex;gap:.3rem;align-items:center;font-size:.8rem}.actions[data-v-e4defe63]{display:flex;gap:.5rem}.primary[data-v-e4defe63]{background:var(--accent, #e8541e);color:#fff;border:none;border-radius:7px;padding:.5rem .9rem;font-weight:600;cursor:pointer}.primary[data-v-e4defe63]:disabled{opacity:.6;cursor:default}.ghost[data-v-e4defe63]{background:transparent;border:1px solid var(--dim, #cfd8df);border-radius:7px;padding:.5rem .9rem;cursor:pointer;color:var(--ink, #1b2733)}.warn[data-v-e4defe63]{background:#fff4e0;border:1px solid #e0b050;color:#8a5a00;border-radius:7px;padding:.4rem .7rem;font-size:.82rem;cursor:pointer}.err[data-v-e4defe63]{font-size:.82rem;color:#c0392b;margin:0}.measure[data-v-e4defe63]{font-size:.84rem;font-weight:600;color:var(--ink, #1b2733);margin:0}.measure.unset[data-v-e4defe63]{color:var(--ink-soft, #6b7c8c);font-weight:500}.measure .sub[data-v-e4defe63]{font-weight:400;font-size:.8rem;color:var(--ink-soft, #6b7c8c)}.share[data-v-dd8787b7]{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.share-btn[data-v-dd8787b7]{background:var(--ink, #1b2733);color:#fff;border:none;border-radius:7px;padding:.45rem .85rem;font-size:.84rem;font-weight:600;cursor:pointer}.share-btn[data-v-dd8787b7]:disabled{opacity:.6;cursor:default}.link[data-v-dd8787b7]{font-size:.8rem;color:var(--accent2, #2d7dd2);font-variant-numeric:tabular-nums}.err[data-v-dd8787b7]{font-size:.8rem;color:#c0392b}.layout[data-v-096631aa]{display:grid;grid-template-columns:290px 1fr 290px;gap:0;height:calc(100vh - 56px);min-height:0}.panel[data-v-096631aa]{overflow-y:auto;padding:1.1rem;display:flex;flex-direction:column;gap:1rem}.left[data-v-096631aa]{border-right:1px solid var(--paper-2, #e7ecef)}.right[data-v-096631aa]{border-left:1px solid var(--paper-2, #e7ecef)}.stage[data-v-096631aa]{min-width:0;min-height:0;background:var(--paper, #fff)}hr[data-v-096631aa]{border:none;border-top:1px solid var(--paper-2, #e7ecef);margin:0}@media (max-width: 900px){.layout[data-v-096631aa]{grid-template-columns:1fr;height:auto}.stage[data-v-096631aa]{height:60vh}.left[data-v-096631aa],.right[data-v-096631aa]{border:none;border-top:1px solid var(--paper-2, #e7ecef)}}.shared[data-v-2969cf47]{height:calc(100vh - 56px);min-height:0}.state[data-v-2969cf47]{padding:3rem;text-align:center;color:var(--ink-soft, #6b7c8c)}.state.err[data-v-2969cf47]{color:#c0392b}.layout[data-v-2969cf47]{display:grid;grid-template-columns:1fr 320px;height:100%;min-height:0}.stage[data-v-2969cf47]{min-width:0;min-height:0}.panel[data-v-2969cf47]{overflow-y:auto;padding:1.1rem;border-left:1px solid var(--paper-2, #e7ecef);display:flex;flex-direction:column;gap:1rem}.shared-note[data-v-2969cf47]{font-size:.82rem;color:var(--ink-soft, #6b7c8c);margin:0}.hint[data-v-2969cf47]{font-size:.8rem;color:var(--ink-soft, #6b7c8c);margin:0}.primary[data-v-2969cf47]{background:var(--accent, #e8541e);color:#fff;border:none;border-radius:7px;padding:.5rem .9rem;font-weight:600;cursor:pointer;align-self:flex-start}hr[data-v-2969cf47]{border:none;border-top:1px solid var(--paper-2, #e7ecef);margin:0}@media (max-width: 900px){.layout[data-v-2969cf47]{grid-template-columns:1fr;height:auto}.stage[data-v-2969cf47]{height:55vh}.panel[data-v-2969cf47]{border:none;border-top:1px solid var(--paper-2, #e7ecef)}}:root{--paper: #ffffff;--paper-2: #eef2f4;--ink: #1b2733;--ink-soft: #6b7c8c;--dim: #cfd8df;--accent: #e8541e;--accent2: #2d7dd2}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}#app{height:100%}a{color:var(--accent2)}button{font-family:inherit}
