:root{--bg:#0b0b0c;--bg-elevated:#141416;--ink:#f4f1ec;--ink-muted:#a8a29a;--laser:#ff2a3d;--laser-soft:#ff8a95;--sand:#c4a574;--sand-deep:#8a6b3f;--ok:#3dcf8a;--danger-soft:#3a2a2c;--font-display:"Outfit", system-ui, sans-serif;--font-body:"Nunito", system-ui, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;appearance:none;border:none}img{max-width:100%;display:block}.app-shell{background:var(--bg);min-height:100dvh;position:relative;overflow:hidden}.camera-feed{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed;top:0;left:-9999px}.btn{letter-spacing:.01em;border-radius:999px;justify-content:center;align-items:center;min-height:3.25rem;padding:.85rem 1.5rem;font-weight:700;transition:transform .16s,opacity .16s,background .16s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--laser);color:#fff;box-shadow:0 10px 40px #ff2a3d59}.btn-litter{color:var(--sand);border:1.5px solid color-mix(in srgb, var(--sand) 55%, transparent);background:0 0}.btn-ghost{color:var(--ink-muted);background:0 0}.home{min-height:100dvh;padding:calc(1rem + var(--safe-top)) calc(1rem + var(--safe-right)) calc(.85rem + var(--safe-bottom)) calc(1rem + var(--safe-left));display:flex;position:relative;overflow:hidden}.home-hero{object-fit:cover;object-position:center 28%;transform-origin:50%;width:100%;height:100%;animation:16s ease-in-out infinite alternate hero-drift;position:absolute;inset:0;transform:scale(1.03)}@keyframes hero-drift{0%{transform:scale(1.03)translate(0,0)}to{transform:scale(1.07)translateY(-1%)}}.home-scrim{pointer-events:none;background:linear-gradient(#0806058c 0%,#0806051f 18%,#0806050d 42%,#08060533 62%,#080605c7 82%,#080605eb 100%);position:absolute;inset:0}.home-content{z-index:1;text-align:center;flex-direction:column;flex:1;width:min(100%,28rem);margin:0 auto;display:flex;position:relative}.home-top{flex-direction:column;align-items:center;gap:.4rem;animation:.65s ease-out both home-rise;display:flex}.home-spacer{flex:1;min-height:8rem}.home-dock{flex-direction:column;align-items:stretch;gap:.75rem;padding:.85rem .15rem .15rem;animation:.7s ease-out 80ms both home-rise;display:flex}@keyframes home-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.home-brand{font-family:var(--font-display);letter-spacing:-.04em;color:#fff;text-shadow:0 2px 24px #0000008c;margin:0;font-size:clamp(3rem,13vw,4.25rem);font-weight:800;line-height:.95}.home-tagline{color:#fff8f2eb;text-shadow:0 1px 14px #00000080;max-width:18rem;margin:0;font-size:1.05rem;font-weight:600;line-height:1.35}.pointer-picker{width:100%}.pointer-picker-label{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:#fff8f2b3;text-shadow:0 1px 10px #00000073;margin:0 0 .55rem;font-size:.72rem;font-weight:700}.pointer-grid{grid-template-columns:repeat(4,1fr);gap:.45rem;display:grid}.pointer-card{-webkit-backdrop-filter:blur(10px);color:#fff;background:#0c0a096b;border:1.5px solid #ffffff24;border-radius:.95rem;flex-direction:column;align-items:center;gap:.25rem;padding:.55rem .25rem .5rem;transition:border-color .16s,background .16s,transform .16s;display:flex}.pointer-card:active{transform:scale(.97)}.pointer-card.is-selected{border-color:var(--laser);background:#ff2a3d4d;box-shadow:0 0 0 1px #ff2a3d59}.pointer-card-art{place-items:center;width:2.35rem;height:2.35rem;display:grid}.pointer-card-art img{object-fit:contain;width:100%;height:100%}.pointer-card.is-selected .pointer-card-art img{animation:1.1s ease-in-out infinite picker-wiggle}@keyframes picker-wiggle{0%,to{transform:rotate(-6deg)scale(1)}50%{transform:rotate(8deg)scale(1.06)}}.pointer-card-name{font-family:var(--font-display);font-size:.82rem;font-weight:700;line-height:1.15}.home-dock .btn-primary{width:100%;min-height:3.35rem}.home-error{color:var(--laser-soft);align-self:center;max-width:22rem;margin:0;font-size:.9rem}.home-install-wrap{justify-items:center;gap:.55rem;width:100%;display:grid}.home-install-btn{appearance:none;color:#fff8f2d1;font-family:var(--font-display);letter-spacing:.02em;text-underline-offset:.22em;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:.92rem;font-weight:700;text-decoration:underline}.home-install-btn:disabled{opacity:.6}.home-install-steps{color:#fff8f2e0;text-align:left;background:#0c0a098c;border:1px solid #ffffff1f;border-radius:.85rem;width:min(100%,18rem);margin:0;padding:.7rem .9rem .7rem 1.6rem;font-size:.86rem;line-height:1.4}.home-install-steps li+li{margin-top:.3rem}.gate{text-align:center;place-content:center;gap:1rem;min-height:100dvh;padding:2rem 1.5rem;display:grid}.gate-title{font-family:var(--font-display);margin:0;font-size:1.75rem;font-weight:700}.gate-copy{max-width:22rem;color:var(--ink-muted);margin:0 auto;line-height:1.5}.gate-actions{flex-direction:column;align-items:center;gap:.75rem;margin-top:.5rem;display:flex}.laser-stage{touch-action:none;overscroll-behavior:none;cursor:crosshair;background:#050506;width:100%;height:100%;min-height:100dvh;position:relative}.laser-stage.is-disabled{pointer-events:none}.laser-dot{will-change:transform;pointer-events:none;transform-origin:50%;width:56px;height:56px;position:absolute;top:0;left:0}.laser-dot img{object-fit:contain;width:100%;height:100%}.laser-dot--fly{filter:drop-shadow(0 4px 8px #3d6bc773)}.laser-dot--fly img{animation:.22s ease-in-out infinite alternate wing-hint}@keyframes wing-hint{0%{transform:scaleY(1)}to{transform:scaleY(.92)translateY(1px)}}.laser-dot--spin{filter:drop-shadow(0 6px 10px #f0716773)}.laser-dot--wobble{filter:drop-shadow(0 4px 8px #2ec4b659)}.laser-dot--tumble{filter:drop-shadow(0 5px 8px #00000073)}.laser-controls{top:calc(.85rem + var(--safe-top));right:calc(.85rem + var(--safe-right));z-index:2;-webkit-backdrop-filter:blur(12px);pointer-events:none;background:#0c0a0a8c;border:1.5px solid #ffffff38;border-radius:999px;align-items:center;gap:.55rem;padding:.35rem;display:flex;position:absolute;box-shadow:0 8px 28px #00000073}.laser-icon-btn{pointer-events:auto;color:#fff;background:#ffffff24;border-radius:50%;place-items:center;width:3.15rem;min-width:3.15rem;height:3.15rem;min-height:3.15rem;padding:0;transition:background .16s,transform .16s,color .16s;display:grid}.laser-icon-btn svg{width:1.45rem;height:1.45rem;display:block}.laser-icon-btn:active{transform:scale(.94)}.laser-mute.is-muted{color:var(--sand);background:#c4a57459}.laser-exit{color:#fff;background:#ff2a3de6;box-shadow:0 4px 16px #ff2a3d73}.laser-hint{left:50%;bottom:calc(1.25rem + var(--safe-bottom));text-align:center;color:#f4f1ec59;pointer-events:none;width:max-content;max-width:calc(100% - 2rem);margin:0;font-size:.85rem;font-weight:600;animation:4s forwards hint-fade;position:absolute;transform:translate(-50%)}@keyframes hint-fade{0%,55%{opacity:1}to{opacity:0}}.review{background:#000;min-height:100dvh;animation:.28s ease-out review-in;position:relative}.review.is-littering{animation:.38s ease-in forwards litter-out}@keyframes review-in{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes litter-out{to{opacity:0;filter:blur(6px);transform:translateY(12%)scale(.92)}}.review-photo{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.review-scrim{pointer-events:none;background:linear-gradient(#0000,#000000c7);height:42%;position:absolute;inset:auto 0 0}.review-actions{padding:1rem calc(1.25rem + var(--safe-right)) calc(1.5rem + var(--safe-bottom)) calc(1.25rem + var(--safe-left));z-index:1;flex-direction:column;align-items:stretch;gap:.75rem;display:flex;position:absolute;bottom:0;left:0;right:0}.review-verdict{text-align:center;color:#fff8f2e0;font-family:var(--font-display);text-shadow:0 1px 10px #00000073;margin:0 0 .15rem;font-size:.95rem;font-weight:700}.review-message{text-align:center;color:var(--ok);margin:.15rem 0 0;font-size:.9rem;font-weight:700}.capture-flash{opacity:0;pointer-events:none;z-index:50;background:#fff;transition:opacity 90ms;position:fixed;inset:0}.capture-flash.is-on{opacity:.85}
