*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%;background:#0a0a0a;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{background:
  radial-gradient(ellipse at top left,rgba(255,45,110,0.18),transparent 50%),
  radial-gradient(ellipse at bottom right,rgba(60,20,100,0.25),transparent 55%),
  #0a0a0a;
  min-height:100dvh;
  padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px);
}

.wrap{max-width:480px;margin:0 auto;padding:28px 20px 40px;display:flex;flex-direction:column;gap:20px}

.hero{padding-top:12px}
.eyebrow{font-size:11px;letter-spacing:0.3em;text-transform:uppercase;opacity:0.55;margin-bottom:10px}
h1{font-size:clamp(36px,9vw,52px);font-weight:900;letter-spacing:-0.03em;line-height:0.98}
h1 .accent{background:linear-gradient(135deg,#ff2d6e 0%,#ff8a5c 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.tagline{margin-top:14px;opacity:0.75;font-size:16px;line-height:1.45;max-width:34ch}

.card{background:rgba(255,255,255,0.035);border:1px solid rgba(255,255,255,0.08);border-radius:22px;padding:22px;display:flex;flex-direction:column;gap:14px;backdrop-filter:blur(6px)}
.card.hidden{display:none}
.card.error{border-color:rgba(255,80,80,0.35)}

.capture-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 20px;border-radius:18px;border:1.5px dashed rgba(255,255,255,0.2);background:rgba(255,255,255,0.02);cursor:pointer;text-align:center;transition:border-color 0.2s,background 0.2s}
.capture-btn:active{border-color:rgba(255,45,110,0.7);background:rgba(255,45,110,0.06)}
.capture-btn.has-photo{border-style:solid;border-color:rgba(255,45,110,0.5);background-size:cover;background-position:center;min-height:260px}
.capture-btn.has-photo .capture-label,.capture-btn.has-photo .capture-hint,.capture-btn.has-photo .capture-icon{opacity:0.9;background:rgba(0,0,0,0.55);padding:4px 10px;border-radius:8px}
.capture-icon{font-size:34px;margin-bottom:8px}
.capture-label{font-size:17px;font-weight:700}
.capture-hint{font-size:13px;opacity:0.6;margin-top:4px}
.capture-btn input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}

.consent{display:flex;align-items:center;gap:10px;font-size:13px;opacity:0.85;cursor:pointer;user-select:none}
.consent input{width:18px;height:18px;accent-color:#ff2d6e;flex-shrink:0}

button{appearance:none;border:0;font:inherit;cursor:pointer}
.primary{background:linear-gradient(135deg,#ff2d6e,#c20040);color:#fff;font-weight:800;font-size:17px;letter-spacing:0.02em;padding:16px;border-radius:14px;box-shadow:0 8px 24px rgba(255,45,110,0.35);transition:transform 0.1s,opacity 0.2s}
.primary:disabled{opacity:0.4;box-shadow:none;cursor:not-allowed}
.primary:not(:disabled):active{transform:scale(0.98)}

.secondary{background:rgba(255,255,255,0.07);color:#fff;font-weight:600;font-size:15px;padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,0.1)}
.secondary:active{background:rgba(255,255,255,0.12)}

.webcam-btn{display:flex;align-items:center;justify-content:center;gap:2px}

.webcam-modal{position:fixed;inset:0;background:#000;z-index:50;display:flex;align-items:center;justify-content:center}
.webcam-modal[hidden]{display:none}
.webcam-stage{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px)}
.webcam-stage video,.webcam-stage canvas{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;transform:scaleX(-1)}
.webcam-stage video[data-facing="environment"],.webcam-stage canvas[data-facing="environment"]{transform:none}
.webcam-err{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:0.85;max-width:80%;text-align:center}
.webcam-controls{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 24px);left:0;right:0;display:flex;align-items:center;justify-content:center;gap:22px;padding:0 20px}
.webcam-controls .secondary{background:rgba(0,0,0,0.55);backdrop-filter:blur(10px);padding:12px 18px;font-size:14px;border-color:rgba(255,255,255,0.2)}
.webcam-controls .snap{appearance:none;border:4px solid #fff;background:#ff2d6e;width:72px;height:72px;border-radius:50%;cursor:pointer;box-shadow:0 0 0 3px rgba(0,0,0,0.5);transition:transform 0.1s}
.webcam-controls .snap:active{transform:scale(0.93)}

.fine-print{font-size:12px;opacity:0.55;line-height:1.4;text-align:center}

.spinner{width:52px;height:52px;margin:10px auto 4px;border-radius:50%;border:3px solid rgba(255,255,255,0.08);border-top-color:#ff2d6e;animation:spin 0.9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.status{font-size:18px;font-weight:700;text-align:center;margin-bottom:4px}

.result-frame{border-radius:14px;overflow:hidden;background:#000;aspect-ratio:3/4;display:flex;align-items:center;justify-content:center}
.result-frame img{width:100%;height:100%;object-fit:cover;display:block}
.result-caption{text-align:center;font-size:15px;opacity:0.85;font-weight:600;letter-spacing:0.02em}
.result-caption span{color:#ff6f91}

.share-url-box{display:flex;align-items:center;gap:10px;padding:12px 14px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:12px;cursor:pointer;font-size:13px;transition:background 0.15s,border-color 0.15s;user-select:all;-webkit-user-select:all}
.share-url-box:hover{background:rgba(255,255,255,0.1);border-color:rgba(255,45,110,0.4)}
.share-url-box:active{background:rgba(255,45,110,0.12)}
.share-url-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;opacity:0.9}
.share-url-copy{font-weight:800;font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:#ff6f91;flex-shrink:0}
.share-url-box.copied{border-color:#2ecc71;background:rgba(46,204,113,0.1)}
.share-url-box.copied .share-url-copy{color:#2ecc71}

.footer{font-size:12px;text-align:center;margin-top:8px;line-height:1.6;display:flex;flex-direction:column;gap:4px}
.footer>p:first-child{opacity:0.4}
.footer .sponsor{opacity:0.7}
.footer .sponsor a{color:#ff6f91;font-weight:700;text-decoration:none;border-bottom:1px solid rgba(255,111,145,0.35)}
.footer .sponsor a:hover{border-bottom-color:#ff6f91}

.toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:rgba(0,0,0,0.85);color:#fff;padding:12px 20px;border-radius:999px;font-size:14px;z-index:20;opacity:0;pointer-events:none;transition:opacity 0.25s;border:1px solid rgba(255,255,255,0.12)}
.toast.on{opacity:1}

@media (prefers-reduced-motion: reduce){
  .spinner{animation:none;border-top-color:transparent}
  .capture-btn,.primary{transition:none}
}
