:root{--scan-marker:#0a6cff;--scan-card:#ffb020;--scan-landmark:#16a34a;--scan-handle:#d81b60;--scan-transition:160ms ease;--scan-fg:#f5f5f7;--scan-muted:#b5b5bd;--scan-border:#3a3a3d;--scan-accent-soft:#1f3554;--scan-status-bg:#1f2733;--scan-ok-bg:#103522;--scan-ok-fg:#6fe39c;--scan-warning-bg:#3a2e07;--scan-warning-fg:#f0c34d;--scan-error-bg:#3a1512;--scan-error-fg:#ff9d90}@media (prefers-contrast:more){:root{--scan-border:currentColor}.feedback,.pickerButton,.statusBanner,.uploadButton{border-width:2px}}.scanMain{max-width:40rem;margin:0 auto;padding:1.5rem 1.5rem 4rem;color:var(--scan-fg);background:var(--bg)}.demoLabel{margin:0 0 .75rem;font-size:.8125rem;font-weight:600;color:var(--scan-muted)}.wayfinding{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.wayOut{color:var(--accent-text);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.wayOut:focus-visible,.wayOut:hover{text-decoration:underline}.stepLabel{margin:0;font-size:.875rem;color:var(--scan-muted)}h1{font-size:clamp(1.5rem,5vw,2rem);letter-spacing:-.02em;line-height:1.05;margin:.25rem 0 .75rem}.hint{color:var(--scan-muted);line-height:1.5;margin:0 0 1.5rem}.picker{border:none;padding:0;margin:0 0 1.25rem}.picker legend{font-size:.875rem;color:var(--scan-muted);padding:0 0 .5rem}.pickerButtons{display:flex;flex-wrap:wrap;gap:.5rem}.pickerButton{min-height:44px;min-width:44px;padding:.5rem 1rem;border:1px solid var(--scan-border);border-radius:.5rem;background:transparent;color:var(--scan-fg);font:inherit;cursor:pointer;transition:background var(--scan-transition),transform var(--scan-transition)}.pickerButton:active{transform:scale(.97)}.pickerButton.selected{background:var(--button-primary-bg);border-color:var(--button-primary-bg);color:var(--on-button-primary)}.pickerButton.selected:active{background:var(--button-primary-pressed);border-color:var(--button-primary-pressed)}.uploadSlot{margin:1.5rem 0}.uploadButton{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.75rem 1.5rem;border:1px solid var(--button-primary-bg);border-radius:999px;background:var(--button-primary-bg);color:var(--on-button-primary);font:inherit;font-weight:600;cursor:pointer;transition:transform var(--scan-transition),opacity var(--scan-transition)}.uploadButton:active{transform:scale(.97);background:var(--button-primary-pressed)}.visuallyHidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.deviceNotice{margin:.5rem 0 0;font-size:.8125rem;color:var(--scan-muted)}.statusBanner{margin:1rem 0;padding:.75rem 1rem;border-radius:.5rem;background:var(--scan-status-bg);color:var(--scan-fg);font-size:.9375rem;min-height:1.5rem}.statusBanner:empty{padding:0;min-height:0}.photoStage{position:relative;width:100%;margin:1rem 0;border-radius:.75rem;overflow:hidden;background:#000}.photoImg{display:block;width:100%;height:auto}.photoOverlaySvg{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.overlayMarker{stroke:var(--scan-marker);stroke-width:4}.overlayCard,.overlayMarker{fill:none;vector-effect:non-scaling-stroke}.overlayCard{stroke:var(--scan-card);stroke-width:4;stroke-dasharray:12 8}.overlayLandmark{fill:var(--scan-landmark);stroke:white;stroke-width:1}.overlayHandle,.overlayLandmark{vector-effect:non-scaling-stroke}.overlayHandle{fill:var(--scan-handle);stroke:white;stroke-width:2;cursor:-webkit-grab;cursor:grab}.overlayHandle:focus-visible{outline:3px solid var(--accent-text);outline-offset:2px}.overlaySkeletonHalo{stroke:#1c1c1e;stroke-opacity:.55;stroke-width:4;stroke-linecap:round;vector-effect:non-scaling-stroke}.overlaySkeletonLine{stroke:#ffffff;stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}.overlayJointHalo{stroke:#1c1c1e;stroke-opacity:.55}.overlayJoint,.overlayKnuckleRing{stroke:#ffffff}.overlayKnuckleDot{stroke:var(--scan-landmark)}.overlayDimensionExtension{stroke:#1c1c1e;stroke-opacity:.45;stroke-width:1;vector-effect:non-scaling-stroke}.overlayDimensionHalo{stroke:#fff;stroke-opacity:.9;stroke-width:4.5;stroke-linecap:round;vector-effect:non-scaling-stroke}.overlayDimensionLine,.overlayDimensionTick{stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}.overlayMeasureLabelBg{fill:#1c1c1e;opacity:.85}.overlayMeasureLabelText{fill:#ffffff;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.primaryButton{min-height:44px;min-width:44px;padding:.75rem 1.5rem;border:none;border-radius:999px;background:var(--button-primary-bg);color:var(--on-button-primary);font:inherit;font-weight:600;cursor:pointer;transition:transform var(--scan-transition)}.primaryButton:active{transform:scale(.97);background:var(--button-primary-pressed)}.primaryButton:focus-visible,.uploadButton:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}.primaryButton:disabled{opacity:var(--button-primary-disabled-opacity);cursor:not-allowed}.submitPanel{margin:1.25rem 0 0;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.submitStatus{min-height:1.25rem;color:var(--scan-muted);font-size:.9375rem}.feedback{margin:1rem 0;padding:1rem;border-radius:.75rem;border:1px solid transparent;line-height:1.5}.feedback p{margin:0 0 .5rem}.feedback ul{margin:0;padding-left:1.25rem}.feedbackTitle{display:flex;align-items:center;gap:.375rem;font-weight:700;margin-bottom:.5rem}.feedback .feedbackCaption{margin:.75rem 0 0;color:var(--scan-muted);font-size:.875rem}.feedback .measureNote{margin:.5rem 0 0;color:var(--scan-muted);font-size:.875rem}.checkIcon{flex-shrink:0;color:var(--scan-ok-fg)}.feedback-ok{background:var(--scan-ok-bg);color:var(--scan-ok-fg);border-color:var(--scan-ok-fg)}.feedback-warning{background:var(--scan-warning-bg);color:var(--scan-warning-fg);border-color:var(--scan-warning-fg);padding:.75rem 1rem;margin:.75rem 0}.feedback-error{background:var(--scan-error-bg);color:var(--scan-error-fg);border-color:var(--scan-error-fg)}.measurements{margin:.75rem 0 0;display:grid;grid-template-columns:1fr auto;grid-gap:.375rem 1rem;gap:.375rem 1rem}.measurementRow{display:contents}.measurements dt{color:var(--scan-fg)}.measurements dd{margin:0;font-weight:600}.tabularNum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){.pickerButton,.primaryButton,.uploadButton{transition:opacity var(--scan-transition)}.pickerButton:active{transform:none;opacity:.8}.pickerButton.selected:active,.primaryButton:active,.uploadButton:active{transform:none;opacity:1}.scanMain .uploadSlot-measured .uploadButton:active{transform:none;opacity:.8}}@media (prefers-reduced-transparency:reduce){.feedback,.statusBanner{background:Canvas;color:CanvasText;border:1px solid CanvasText}}.scanMain{max-width:44rem;padding:1.5rem 1.5rem 5rem;display:flex;flex-direction:column}.scanMain>h1{font-size:clamp(2rem,8vw,3rem);margin:1rem 0}.scanMain .hint{margin-bottom:1.5rem}.scanMain .picker{margin-bottom:1rem}.scanMain .pickerButton{border-radius:999px;min-height:3.25rem}.scanMain .primaryButton,.scanMain .uploadButton{min-height:3.25rem}.scanMain .uploadButton{width:100%}.scanMain .uploadSlot:focus-within .uploadButton,.scanMain .visuallyHidden:focus-visible+.uploadButton{outline:3px solid var(--accent-text);outline-offset:3px}.scanMain .uploadSlot{margin:1rem 0}.scanMain .status-ok{display:none}.scanMain .feedback-ok{border:0;border-radius:1rem;padding:1.5rem;margin:1rem 0 0;background:#1c1c1e;color:#f5f5f7}.scanMain .feedback-ok .feedbackTitle{font-size:1.25rem;margin:0 0 1rem}.scanMain .measurements{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.scanMain .measurementRow{display:block}.scanMain .measurementRow:nth-child(n+4){display:none}.scanMain .measurements dd{font-size:1.125rem}.scanMain .submitPanel{align-items:stretch;margin-top:1.25rem}.scanMain .submitPanel .primaryButton{width:100%}.scanMain .uploadSlot-measured{margin:.75rem 0 0}.scanMain .scanSheetLink{align-self:center;display:inline-flex;align-items:center;min-height:2.75rem;text-decoration:none;margin-top:1.5rem;color:var(--accent-text)}.scanMain .uploadSlot-measured .uploadButton:active{opacity:.9}.scanMain .scanSheetLink:active{opacity:.65}.scanMain .scanSheetLink:focus-visible{outline:2px solid currentColor;outline-offset:2px}.scanMain .deviceNotice{text-align:center;margin-top:1rem}.scanMain .measurements dt{color:#b5b5bd}.scanMain .uploadSlot-measured .uploadButton{background:none;border-color:transparent;color:var(--accent-text);text-decoration:none}@media (prefers-contrast:more){.scanMain .feedback-ok,.scanMain .pickerButton,.scanMain .uploadButton{border:2px solid}.scanMain .uploadSlot-measured .uploadButton{border-color:currentColor}}@media print{.pickerButton.selected,.primaryButton,.uploadButton{background:none;color:var(--text-primary);border:1px solid}}