:root{--bg:#0c0d10;--bg-elev:#14151a;--bg-elev-2:#1a1c23;--line:#ffffff17;--line-strong:#ffffff29;--ink:#f4f2ee;--ink-2:#b9b4ab;--ink-3:#7d7a72;--accent:#e0587a;--ok:#58c99a;--warn:#e8b45f;--err:#ef7d84;--lock-hex:#e0587a;--radius-s:10px;--radius-m:16px;--radius-l:22px;--shadow:0 12px 40px #00000073;--font:-apple-system, "SF Pro Text", BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-display:"New York", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--tap:44px;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font:16px/1.55 var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none}#root,.app{min-height:100dvh}.app{position:relative}.stage{flex-direction:column;width:100%;max-width:520px;min-height:100dvh;margin:0 auto;display:flex;position:relative}.stage-looks{grid-template-rows:1fr auto auto;height:100dvh;display:grid}.stage-looks .look-strip{grid-row:1;min-height:0}.stage-looks .look-meta{grid-row:2}.stage-looks .bottom-bar{grid-row:3}.display{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:500;line-height:1.06}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:600}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.btn{font:inherit;min-height:var(--tap);cursor:pointer;color:var(--ink);background:var(--bg-elev-2);border:1px solid #0000;border-radius:999px;padding:12px 22px;font-weight:600;transition:transform .12s,opacity .12s,border-color .12s,filter .12s}.btn:active{transform:translateY(1px)scale(.995)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg, color-mix(in srgb, var(--lock-hex) 88%, white 12%), var(--lock-hex));color:#101014;border-color:color-mix(in srgb, var(--lock-hex) 60%, transparent);box-shadow:0 8px 28px color-mix(in srgb, var(--lock-hex) 28%, transparent)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-big{min-height:54px;padding:15px 34px;font-size:17px}.btn-build{flex:1}.btn-ghost{border-color:var(--line-strong);background:0 0}.btn-ghost:hover{border-color:var(--ink-3)}:focus-visible{outline:2px solid color-mix(in srgb, var(--lock-hex) 70%, white);outline-offset:2px;border-radius:6px}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{font:inherit;border:1px solid var(--line-strong);background:var(--bg-elev);color:var(--ink-2);min-height:var(--tap);cursor:pointer;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:550;transition:border-color .12s,color .12s,background .12s}.chip:hover{color:var(--ink);border-color:var(--ink-3)}.chip:active{transform:translateY(1px)}.chip[aria-pressed=true]{background:color-mix(in srgb, var(--lock-hex) 16%, var(--bg-elev));border-color:color-mix(in srgb, var(--lock-hex) 55%, transparent);color:var(--ink)}.chip-s{min-height:36px;padding:6px 14px;font-size:13px}.mini-btn{font:inherit;color:var(--ink);background:var(--bg-elev-2);border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;min-height:38px;padding:8px 16px;font-size:13px;font-weight:600;transition:border-color .12s,color .12s,transform .12s}.mini-btn:hover{border-color:var(--ink-3)}.mini-btn:active{transform:translateY(1px)}.mini-btn[aria-pressed=true]{border-color:color-mix(in srgb, var(--lock-hex) 60%, transparent);color:color-mix(in srgb, var(--lock-hex) 82%, white)}.camera-media{background:#000;flex:1;height:100dvh;position:relative;overflow:hidden}.camera-media video{position:absolute;inset:0}.camera-media video,.camera-media canvas,.camera-media img,.face-fill video,.face-fill canvas,.face-fill img,.build-fill img{object-fit:cover;width:100%;height:100%;display:block}.guide-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cam-hint,.cam-note{left:24px;right:24px;bottom:calc(148px + var(--sab));text-align:center;color:#fff;text-shadow:0 1px 10px #000000d9;pointer-events:none;margin:0;font-size:14px;position:absolute}.cam-note{bottom:auto;top:calc(56px + var(--sat))}.cam-actions{left:0;right:0;bottom:calc(26px + var(--sab));justify-content:center;align-items:center;gap:26px;display:flex;position:absolute}.shutter{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;background:#ffffff24;border:4px solid #ffffffe6;border-radius:50%;place-items:center;width:76px;height:76px;padding:0;transition:transform .12s,background .12s;display:grid}.shutter:hover{background:#ffffff38}.shutter:active{transform:scale(.94)}.shutter:disabled{opacity:.4;cursor:not-allowed}.shutter-core{background:linear-gradient(180deg, color-mix(in srgb, var(--lock-hex) 88%, white 12%), var(--lock-hex));width:58px;height:58px;box-shadow:0 2px 18px color-mix(in srgb, var(--lock-hex) 40%, transparent);border-radius:50%}.mini-chip{color:var(--ink-2);border:1px solid var(--line-strong);cursor:pointer;background:#14151ab8;border-radius:999px;align-items:center;gap:6px;min-height:40px;padding:9px 16px;font-size:13px;font-weight:600;transition:color .12s,border-color .12s;display:inline-flex}.mini-chip:hover{color:var(--ink);border-color:var(--ink-3)}.mini-chip.ghost{cursor:default;opacity:.8}.denied{text-align:center;background:radial-gradient(90% 60% at 50% 30%, color-mix(in srgb, var(--lock-hex) 16%, transparent), transparent 70%), linear-gradient(180deg, #101116, #0c0d10 60%);flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:32px;display:flex;position:absolute;inset:0}.denied-glow{background:radial-gradient(closest-side, color-mix(in srgb, var(--lock-hex) 22%, transparent), transparent 75%);filter:blur(6px);pointer-events:none;border-radius:50%;width:240px;height:300px;position:absolute;top:calc(50% - 220px)}.denied-title{color:var(--ink);z-index:1;font-size:clamp(34px,9vw,44px)}.sample-link{color:var(--ink-2);font:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:4px;cursor:pointer;background:0 0;border:none;padding:8px;font-size:14px}.sample-link:hover{color:var(--ink)}.privacy-once{left:24px;right:24px;bottom:calc(6px + var(--sab));text-align:center;color:var(--ink-3);pointer-events:none;margin:0;font-size:11.5px;position:absolute}.stage-looks .topbar{grid-row:auto;position:absolute}.topbar{z-index:30;padding:calc(10px + var(--sat)) 16px 10px;background:linear-gradient(#08090bb8,#0000);justify-content:space-between;align-items:center;gap:10px;display:flex;position:absolute;top:0;left:0;right:0}.top-link{font:inherit;color:var(--ink-2);border:1px solid var(--line);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14151a99;border-radius:999px;min-height:36px;padding:7px 14px;font-size:13.5px;transition:color .12s,border-color .12s}.top-link:hover{color:var(--ink);border-color:var(--ink-3)}.pips{align-items:center;gap:6px;display:flex}.pip{background:var(--line-strong);border-radius:999px;width:6px;height:6px;transition:background .2s,width .2s}.pip.on{background:color-mix(in srgb, var(--lock-hex) 80%, white 10%);width:16px}.lock-chip{color:var(--ink);background:color-mix(in srgb, var(--lock-hex) 14%, var(--bg-elev));border:1px solid color-mix(in srgb, var(--lock-hex) 45%, transparent);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:6px 13px 6px 7px;font-family:inherit;font-size:12.5px;font-weight:600;transition:border-color .12s;display:inline-flex}.lock-chip:hover{border-color:color-mix(in srgb, var(--lock-hex) 75%, transparent)}.lock-chip .dot{background:var(--lock-hex);border:1.5px solid #ffffff59;border-radius:50%;width:17px;height:17px}.stage-photo{background:#000}.face-fill{background:#000;flex:1;min-height:calc(100dvh - 210px);max-height:100dvh;position:relative;overflow:hidden}.face-fill canvas{object-fit:cover;width:100%;height:100%}.over-hint{text-align:center;color:#fff;text-shadow:0 1px 10px #000000d9;pointer-events:none;margin:0;font-size:14px;position:absolute;bottom:24px;left:24px;right:24px}.scan{pointer-events:none;position:absolute;inset:0;overflow:hidden}.scan-beam{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--lock-hex) 30%, transparent) 45%, transparent);height:120px;box-shadow:0 0 44px color-mix(in srgb, var(--lock-hex) 35%, transparent);border-radius:999px;animation:1.1s cubic-bezier(.4,0,.2,1) infinite scanSweep;position:absolute;top:-140px;left:8%;right:8%}@keyframes scanSweep{0%{top:-140px}to{top:100%}}.scan-note{left:0;right:0;top:calc(18px + var(--sat));text-align:center;color:#fff;text-shadow:0 1px 8px #000c;font-size:13.5px;font-weight:600;position:absolute}.zone-tray{flex-wrap:wrap;justify-content:center;gap:8px;padding:6px 0;display:flex}.lock-dock{z-index:20;padding:18px 18px calc(16px + var(--sab));background:linear-gradient(#0000,#08090be0 34%);flex-direction:column;gap:10px;margin-top:-84px;display:flex;position:relative}.dock-row{align-items:center;gap:10px;display:flex}.pan-shift{color:var(--ink-2);text-align:center;margin:0;font-size:13.5px;line-height:1.5}.phase-inline{text-align:center;color:var(--ink-3);margin:0;font-size:12.5px}.tone-ramp{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-m);flex-direction:column;gap:10px;padding:14px;display:flex}.tone-label{color:var(--ink-2);margin:0;font-size:13px;font-weight:600}.ramp-row{gap:8px;display:flex}.ramp-swatch{cursor:pointer;border:2px solid #0000;border-radius:12px;flex:1;height:44px;padding:0;transition:transform .12s,border-color .12s}.ramp-swatch:hover{transform:translateY(-2px)}.ramp-swatch.on{border-color:#fff;box-shadow:0 0 0 3px #ffffff2e}.gate-line{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:4;background:#0c0d10db;border:1px solid #ffffff2e;border-radius:14px;align-items:center;gap:10px;padding:10px 14px;animation:.3s cubic-bezier(.22,.8,.32,1) both fadeUp;display:flex;position:absolute;bottom:44px;left:14px;right:14px}.gate-line p{color:var(--ink-2);flex:1;margin:0;font-size:13px}.lock-ring{border:1px solid var(--line-strong);cursor:pointer;z-index:4;background:#0c0d10d9;border-radius:999px;align-items:center;gap:8px;padding:4px 12px 4px 5px;animation:.5s ease-out both lockPulse;display:flex;position:absolute;transform:translate(-50%,-50%)}.lock-ring-dot{border:3px solid var(--lock-hex,#fff);background:radial-gradient(closest-side,#0000 55%,#ffffff24 56%);border-radius:50%;flex-shrink:0;width:22px;height:22px}.lock-ring-label{color:var(--ink);white-space:nowrap;font-size:12.5px;font-weight:600}@keyframes lockPulse{0%{opacity:0;transform:translate(-50%,-50%)scale(1.5)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.look-strip{scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;background:#000;flex:1;min-height:0;display:flex;overflow:auto hidden}.look-strip::-webkit-scrollbar{display:none}.look-slide{scroll-snap-align:center;scroll-snap-stop:always;flex:0 0 100%;height:100%;position:relative}.look-frame{background:#000;width:100%;height:100%;position:relative;overflow:hidden}.look-slide{align-self:stretch}.look-frame img{object-fit:cover;width:100%;height:100%;animation:.12s ease-out both lookIn;display:block;position:absolute;inset:0}.look-frame img.bare{opacity:0;transition:opacity .16s;animation:none}.look-frame .bare-img{opacity:0;z-index:2;pointer-events:none;transition:opacity .16s;animation:none;position:absolute;inset:0}.look-frame .bare-img[data-on="1"]{opacity:1}@keyframes lookIn{0%{opacity:0}to{opacity:1}}.role-pill{top:calc(56px + var(--sat));letter-spacing:.12em;text-transform:uppercase;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;background:#0c0d10a8;border:1px solid #ffffff29;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:700;position:absolute;left:16px}.ghost-pill{opacity:.85}.look-meta{z-index:20;pointer-events:none;justify-content:center;align-items:center;gap:14px;margin-top:-46px;padding:10px 16px 2px;display:flex;position:relative}.role-tagline{color:var(--ink-2);text-shadow:0 1px 8px #000000b3;margin:0;font-size:13px}.page-dots{pointer-events:auto;gap:6px;display:flex}.pd{cursor:pointer;background:#ffffff4d;border:none;border-radius:999px;width:7px;height:7px;padding:0;transition:background .16s,width .16s}.pd.on{background:#fff;width:18px}.budget-note{color:var(--ink-3);text-shadow:0 1px 8px #000000b3;margin:0;font-size:12px}.bottom-bar{z-index:20;padding:12px 16px calc(16px + var(--sab));background:linear-gradient(#0000,#08090be6 40%);align-items:center;gap:12px;margin-top:-6px;display:flex;position:relative}.thumbs{gap:8px;display:flex}.thumb{background:var(--bg-elev-2);cursor:pointer;border:2px solid #0000;border-radius:12px;width:48px;height:60px;padding:0;transition:border-color .14s,transform .14s;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb:hover{transform:translateY(-2px)}.thumb.on{border-color:color-mix(in srgb, var(--lock-hex) 85%, white)}.bar-actions{gap:8px;margin-left:auto;display:flex}.icon-btn{border:1px solid var(--line-strong);width:46px;height:46px;color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14151ac7;border-radius:999px;place-items:center;padding:0;transition:border-color .12s,transform .12s,background .12s;display:grid}.icon-btn:hover{border-color:var(--ink-3);background:#1a1c23e6}.icon-btn:active{transform:scale(.93)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.shuffle-btn svg{transition:transform .26s cubic-bezier(.3,1.4,.5,1)}.shuffle-btn:active svg{transform:rotate(180deg)}.vibe-pill{font:inherit;color:var(--ink);border:1px solid var(--line-strong);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#14151ac7;border-radius:999px;align-items:center;gap:7px;min-height:42px;padding:9px 14px;font-size:13px;font-weight:600;transition:border-color .12s;display:inline-flex}.vibe-pill:hover{border-color:var(--ink-3)}.vibe-pill.dirty{border-color:color-mix(in srgb, var(--lock-hex) 65%, transparent)}.vibe-dot{background:var(--lock-hex);width:8px;height:8px;box-shadow:0 0 10px color-mix(in srgb, var(--lock-hex) 70%, transparent);border-radius:50%}.build-fill{min-height:100dvh;position:relative}.dimmed-img{filter:brightness(.55)}.build-veil{background:linear-gradient(90deg,#0000,#ffffff0b,#0000),radial-gradient(80% 50%,#0000,#08090b80);animation:1.4s infinite shimmer;position:absolute;inset:0}.build-line{color:var(--ink);text-shadow:0 1px 12px #000c;justify-content:center;align-items:center;gap:10px;margin:0;font-size:15px;font-weight:600;display:flex;position:absolute;top:50%;left:24px;right:24px;transform:translateY(-50%)}.dot-pulse{border-radius:50%;width:14px;height:14px;animation:1.1s ease-in-out infinite dotPulse}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.35)}}@keyframes shimmer{0%{background-position:-200% 0,0 0}to{background-position:200% 0,0 0}}.skel{background:var(--bg-elev-2);position:relative;overflow:hidden}.skel:after{content:"";background:linear-gradient(90deg,#0000,#ffffff0d,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.phase-line{left:24px;right:24px;bottom:calc(10px + var(--sab));text-align:center;color:var(--ink-2);z-index:60;pointer-events:none;text-shadow:0 1px 8px #000c;margin:0;font-size:13.5px;position:fixed}.error-float{left:16px;right:16px;bottom:calc(20px + var(--sab));z-index:80;max-width:488px;margin:0 auto;position:fixed}.calm-card{border:1px solid color-mix(in srgb, var(--err) 35%, transparent);background:color-mix(in srgb, var(--err) 10%, var(--bg-elev));border-radius:var(--radius-m);box-shadow:var(--shadow);padding:18px}.row{align-items:center;gap:10px;display:flex}.grow{flex:1}.toast{left:50%;bottom:calc(120px + var(--sab));border:1px solid var(--line-strong);color:var(--ink);z-index:90;box-shadow:var(--shadow);background:#14151af2;border-radius:999px;padding:10px 18px;font-size:13.5px;font-weight:600;animation:.24s both fadeUp;position:fixed;transform:translate(-50%)}.sheet-scrim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:70;background:#04050799;animation:.2s both fadeIn;position:fixed;inset:0}.sheet{background:var(--bg-elev);border-top:1px solid var(--line-strong);max-width:520px;padding:12px 20px calc(20px + var(--sab));z-index:71;border-radius:24px 24px 0 0;margin:0 auto;animation:.28s cubic-bezier(.22,.8,.32,1) both sheetUp;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -18px 60px #00000080}.sheet-handle{background:var(--line-strong);border-radius:999px;width:40px;height:4px;margin:4px auto 14px}.sheet-title{font-family:var(--font-display);margin:0 0 14px;font-size:22px;font-weight:500}.sheet-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.share-sheet{max-height:92dvh;overflow-y:auto}.share-preview{border-radius:var(--radius-m);border:1px solid var(--line);width:100%;display:block}.share-note{color:var(--ink-3);text-align:center;margin:8px 0 0;font-size:12.5px}.share-actions{justify-content:stretch}.share-actions .btn{flex:1}.vibe-chips .chip-vibe{min-height:var(--tap);padding:11px 18px;font-size:15px}.coach-pill{margin-left:auto}.coach-sheet{max-height:94dvh;overflow-y:auto}.coach-map{border-radius:var(--radius-m);border:1px solid var(--line);aspect-ratio:4/5;overflow:hidden}.coach-map svg{width:100%;height:100%;display:block}.coach-overlay-empty{min-height:200px;color:var(--ink-3);text-align:center;place-items:center;padding:0 16px;font-size:14px;display:grid}.coach-steps{flex-wrap:wrap;gap:8px;margin:12px 0 0;display:flex}.coach-steps .chip-vibe{min-height:var(--tap);align-items:center;gap:7px;padding:10px 14px;font-size:14px;display:inline-flex}.coach-swatch{border:1px solid var(--line);border-radius:50%;flex:none;width:14px;height:14px}.coach-note{color:var(--ink-2);margin:10px 2px 0;font-size:13.5px;line-height:1.45}.dirty-note{border-radius:var(--radius-s);background:color-mix(in srgb, var(--lock-hex) 12%, var(--bg-elev-2));border:1px solid color-mix(in srgb, var(--lock-hex) 40%, transparent);color:var(--ink-2);align-items:center;gap:8px;margin:0 0 12px;padding:10px 14px;font-size:13px;display:flex}.fade-in{animation:.36s cubic-bezier(.22,.8,.32,1) both fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{transform:translateY(60%)}to{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.stage-coach{flex-direction:column;min-height:100dvh;display:flex}.coach-live{flex:1;place-items:center;display:grid;position:relative;overflow:hidden}.coach-live video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.coach-canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.coach-live-bar{padding:14px 18px calc(18px + env(safe-area-inset-bottom));gap:10px;display:grid}.coach-live-shape{margin:0;font-size:17px}.coach-live-shape b{color:var(--accent,#e0587a)}.coach-live-hint{color:var(--ink-3,#b9b4ab);margin:0;font-size:13.5px}.coach-live-actions{gap:8px;display:flex}.coach-live-actions .mini-chip.on{border-color:var(--accent,#e0587a);color:var(--accent,#e0587a)}.coach-teach{width:100%}.lesson-card{border:1px solid var(--line);border-radius:var(--radius-m);background:var(--card,#14151a);gap:8px;padding:14px 16px;display:grid}.lesson-count{letter-spacing:.02em;color:var(--ink-3,#b9b4ab);text-transform:uppercase;margin:0;font-size:12.5px}.lesson-instruction{margin:0;font-size:16.5px;line-height:1.45}.lesson-tool{color:var(--ink-3,#b9b4ab);margin:0;font-size:13px}.lesson-actions{gap:8px;margin-top:2px;display:flex}.lesson-actions .btn{flex:1}.coach-cta-row{gap:8px;display:flex}.coach-cta-row .coach-teach{flex:1}.sweep-card .lesson-count{text-transform:none;font-size:13.5px}.sweep-card .sweep-marks{flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;display:flex}.sweep-card .sweep-marks li{color:var(--ink-2);border-bottom:2px solid #0000;margin:0;padding-bottom:1px;font-size:13.5px;line-height:1.3}.sweep-card .sweep-marks li.on{color:var(--ink);border-bottom-color:var(--accent,#e0587a);font-weight:600}.sweep-card .sweep-note{color:var(--ink-2);margin:0;font-size:13.5px;line-height:1.4}.lesson-grade{gap:6px;display:grid}.grade-bar{background:#ffffff24;border-radius:3px;height:5px;overflow:hidden}.grade-fill{background:var(--accent,#e0587a);border-radius:3px;height:100%;transition:width .6s}.grade-word{color:var(--ink-2,#d8d4cc);font-size:13.5px}.grade-word.good{color:#7dd8a0}
