#scan-overlay{position:fixed;inset:0;z-index:100;background:var(--ink);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}#scan-overlay.visible{opacity:1;visibility:visible}#scan-video,#scan-canvas{position:absolute;inset:0;width:100%;height:100%}#scan-video{object-fit:cover;transform:scaleX(-1);background:var(--ink)}#scan-canvas{z-index:2;opacity:0;transition:opacity .5s ease;pointer-events:none}#scan-overlay.mesh-on #scan-canvas{opacity:1}#scan-guide{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(74vw,320px);aspect-ratio:300/380;z-index:3;pointer-events:none}@media(min-width:768px){#scan-guide{width:auto;height:clamp(300px,52vh,600px)}}#scan-guide svg{width:100%;height:100%;overflow:visible}#scan-oval{fill:none;stroke:var(--on-night);stroke-opacity:.55;stroke-width:3;filter:drop-shadow(0 0 10px rgba(0,0,0,.35));transition:stroke .45s ease,stroke-opacity .45s ease}#scan-progress{fill:none;stroke:var(--night-accent);stroke-width:5;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0;transition:stroke-dashoffset .18s linear,opacity .3s ease}#scan-overlay.centered #scan-oval,#scan-overlay.measuring #scan-oval{stroke:var(--success);stroke-opacity:1}#scan-overlay.measuring #scan-progress{opacity:1}#scan-overlay.measuring.stalled #scan-oval{stroke:var(--accent-2);stroke-opacity:1;animation:scanStall 1.1s ease-in-out infinite}#scan-overlay.measuring.stalled #scan-progress{stroke:var(--accent-2)}@keyframes scanStall{0%,to{opacity:1}50%{opacity:.55}}@media(prefers-reduced-motion:reduce){#scan-overlay.measuring.stalled #scan-oval{animation:none}}#scan-overlay.done #scan-oval{stroke:var(--success);stroke-opacity:1;stroke-width:4;filter:drop-shadow(0 0 16px rgba(95,115,85,.6))}#scan-overlay.done #scan-progress{opacity:1;stroke-dashoffset:0}#scan-arrows{position:absolute;left:50%;bottom:-34px;transform:translate(-50%);font-size:26px;color:var(--on-night-2);opacity:0;transition:opacity .4s ease;animation:scanSway 1.8s ease-in-out infinite}#scan-overlay.centered #scan-arrows{opacity:.85}@keyframes scanSway{0%,to{transform:translate(-50%) translate(-6px)}50%{transform:translate(-50%) translate(6px)}}#scan-hud{position:absolute;left:0;right:0;z-index:4;top:calc(env(safe-area-inset-top) + 28px);display:flex;justify-content:center;padding:0 24px;pointer-events:none}#scan-text{font-family:var(--sans);font-size:17px;font-weight:500;letter-spacing:-.01em;text-align:center;line-height:1.35;color:var(--on-night);text-shadow:0 1px 12px rgba(0,0,0,.6);font-variant-numeric:tabular-nums}#scan-overlay.done #scan-text{color:var(--success);font-weight:500}#scan-fail{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 40px);transform:translate(-50%);z-index:6;width:calc(100% - 48px);max-width:400px;text-align:center;background:var(--night);border:1px solid var(--hairline-dark);border-radius:var(--r-card-sm);padding:20px 22px;box-shadow:var(--shadow-overlay)}#scan-fail[hidden]{display:none}#scan-fail p{font-size:15px;color:var(--on-night);line-height:1.5;margin-bottom:16px}#scan-fail .cta{width:100%;background:var(--accent);color:var(--paper);font-family:var(--sans);font-size:var(--fs-label-md);font-weight:500;letter-spacing:var(--ls-label-md);padding:14px;border:none;border-radius:var(--r-pill);cursor:pointer}#scan-fail .cta:hover{background:var(--accent-hover)}#scan-cancel{position:absolute;z-index:7;top:calc(env(safe-area-inset-top) + 12px);right:14px;width:40px;height:40px;border-radius:var(--r-pill);border:1px solid var(--hairline-dark);background:#00000059;color:var(--on-night);font-size:22px;line-height:1;cursor:pointer}#scan-cancel:hover{color:var(--night-accent)}@media(prefers-reduced-motion:reduce){#scan-arrows{animation:none}}#cta-overlay{position:fixed;inset:0;z-index:110;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--paper);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}#cta-overlay.visible{opacity:1;visibility:visible}.cta-panel{position:relative;width:100%;max-width:440px;transform:translateY(14px) scale(.985);transition:transform .35s cubic-bezier(.22,.61,.36,1)}#cta-overlay.visible .cta-panel{transform:none}.cta-step{position:relative}.cta-step[hidden]{display:none}.cta-eyebrow{font-family:var(--sans);font-weight:500;font-size:var(--fs-label-sm);letter-spacing:var(--ls-label-sm);text-transform:uppercase;color:var(--accent);text-align:center;margin-bottom:12px}.cta-title{font-family:var(--serif);font-weight:400;font-size:var(--fs-headline-lg);letter-spacing:-.01em;color:var(--ink);text-align:center;margin-bottom:26px;line-height:1.1}.cta-boxes{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:360px){.cta-boxes{grid-template-columns:1fr}}.cta-box{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:30px 16px;min-height:150px;border-radius:var(--r-card);color:var(--ink);cursor:pointer;background:var(--surface);border:1px solid var(--surface);transition:background .2s ease,border-color .2s ease,transform .2s ease}.cta-box .cta-svg{width:44px;height:44px;color:var(--accent)}.cta-box .cta-img{width:72px;height:auto}.cta-box-label{font-family:var(--sans);font-weight:500;font-size:var(--fs-label-md);letter-spacing:var(--ls-label-md);padding:8px 20px;border-radius:var(--r-pill);background:var(--paper);color:var(--ink)}.cta-box:hover,.cta-box:focus-visible{background:var(--surface-hover);border-color:var(--accent);transform:translateY(-2px);outline:none}.cta-box:active{transform:translateY(0) scale(.99)}.cta-close{position:absolute;z-index:7;top:calc(env(safe-area-inset-top) + 12px);right:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-pill);color:var(--ink)}.cta-close:hover{color:var(--accent)}.cta-back{position:absolute;top:-6px;left:0;z-index:5;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--paper);color:var(--ink);transition:background .2s ease,transform .2s ease,border-color .2s ease}.cta-back:hover{background:var(--surface);border-color:var(--accent);color:var(--accent);transform:translate(-2px)}@media(prefers-reduced-motion:no-preference){.cta-step.in.from-right{animation:ctaInR .32s cubic-bezier(.22,.61,.36,1) both}.cta-step.in.from-left{animation:ctaInL .32s cubic-bezier(.22,.61,.36,1) both}}@keyframes ctaInR{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes ctaInL{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){#cta-overlay,.cta-panel{transition:none}.cta-panel{transform:none}}
