@font-face{font-family:Inter;src:url(./InterVariable-fxjyg8gv.woff2)format(woff2-variations);font-weight:100 900;font-style:normal;font-display:swap}:root{--bg:#0c0a1e;--surface:#15122a;--fg:#f5f3ff;--muted:#a8a4b8;--muted-warm:#7a738c;--line:#26213d;--line-strong:#3a3260;--purple:#9b85ff;--purple-hover:#b5a3ff;--purple-soft:#836ef933;--shadow:0 18px 50px -22px #000000bf;--radius-card:22px;--radius-pill:999px;--sans:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Monaco,Consolas,monospace;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{overflow-x:hidden;overscroll-behavior:none;min-height:100%;margin:0;padding:0}body{background-color:var(--bg);color:var(--fg);font-family:var(--sans);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;background-image:linear-gradient(165deg,#6e54ff38 0%,#4c38db1a 35%,#0c0a1e00 70%);background-attachment:fixed;font-size:16px;line-height:1.5}body:before{content:"";position:fixed;pointer-events:none;z-index:-1;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='28' height='28'><rect x='13' y='13' width='2' height='2' fill='%23DDD7FE' fill-opacity='0.12'/></svg>");background-repeat:repeat;inset:0}#app{touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none;padding:max(env(safe-area-inset-top),32px)20px max(env(safe-area-inset-bottom),28px);display:flex;flex-direction:column;gap:22px;width:100%;max-width:420px;min-height:100dvh;margin:0 auto}@media (min-width:720px){#app{gap:26px;max-width:460px;padding-top:56px}}header{text-align:center}header h1{letter-spacing:-.025em;color:#fff;margin:0;font-size:clamp(28px,7vw,36px);font-weight:700;line-height:1.05}.tagline{color:var(--muted);max-width:32ch;margin:12px auto 0;font-size:14.5px;font-weight:500;line-height:1.5}.state{display:flex;justify-content:center;align-items: center;width:100%}.state.hidden{display:none!important}.drop,.stage,.error-card,.loader-card{aspect-ratio:1;border-radius:var(--radius-card);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);overflow:hidden;width:100%;max-width:360px}.drop{position:relative;display:flex;cursor:pointer;text-align:center;flex-direction:column;justify-content:center;align-items: center;gap:18px;padding:24px;transition:border-color .2s,background-color .2s,transform 80ms}.drop:hover{border-color:var(--purple);background-color:var(--purple-soft)}.drop:active{transform:scale(.997)}.drop input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.drop-photo{position:absolute;object-fit:cover;pointer-events:none;border-radius:inherit;width:100%;height:100%;inset:0}.drop-text{position:relative;z-index:1;letter-spacing:-.018em;color:var(--fg);font-size:26px;font-weight:700}.stage{display:flex;position:relative;justify-content:center;align-items: center}.stage-bg-wrap{position:absolute;overflow:hidden;z-index:0;pointer-events:none;inset:-28px}.stage-bg-wrap.hidden{display:none!important}#stage-bg{object-fit:cover;display:block;filter:blur(22px)brightness(.68)saturate(1.2);width:100%;height:100%;transform:scale(1.08)}#stage{touch-action:auto}#result-canvas,#result-img{position:relative;display:block;z-index:2;background:0 0;width:auto;max-width:100%;height:auto;max-height:100%}#result-img{display:none;position:absolute;z-index:4;-webkit-touch-callout:default;-webkit-user-drag:element;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-user-select:all!important;user-select:all!important}#result-img.show{display:block}.eye-handle{position:absolute;cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent;z-index:5;background:0 0;width:44px;height:44px;margin:-22px 0 0 -22px}.eye-handle.dragging,.eye-handle:active{cursor:grabbing}.loader-card{display:flex;flex-direction:column;justify-content:center;align-items: center;gap:28px;padding:32px}.scanner{position:relative;background:radial-gradient(80% 60%,#6e54ff1a,#0000 70%);border-radius:14px;width:200px;height:140px}.scanner-corner{position:absolute;pointer-events:none;width:22px;height:22px}.scanner-corner.tl{border-top:2px solid #ddd7fe;border-left:2px solid #ddd7fe;border-top-left-radius:6px;top:0;left:0}.scanner-corner.tr{border-top:2px solid #ddd7fe;border-right:2px solid #ddd7fe;border-top-right-radius:6px;top:0;right:0}.scanner-corner.bl{border-bottom:2px solid #ddd7fe;border-left:2px solid #ddd7fe;border-bottom-left-radius:6px;bottom:0;left:0}.scanner-corner.br{border-bottom:2px solid #ddd7fe;border-right:2px solid #ddd7fe;border-bottom-right-radius:6px;bottom:0;right:0}.scanner-eye{position:absolute;filter:drop-shadow(0 0 8px #9b85ffa6);animation:scannerPulse 1.6s ease-in-out infinite;will-change:transform,opacity;background:radial-gradient(circle,#fff 0%,#ddd7feeb 14%,#b496ff8c 42%,#6e54ff47 72%,#6e54ff00 100%);border-radius:50%;width:30px;height:30px;margin-top:-15px;top:50%}.scanner-eye-l{left:46px}.scanner-eye-r{animation-delay:.35s;right:46px}@keyframes scannerPulse{0%,to{transform:scale(.85);opacity:.55}50%{transform:scale(1.18);opacity:1}}.scanner-line{position:absolute;animation:scannerSweep 2s cubic-bezier(.55,0,.45,1)infinite;will-change:transform,opacity;background:linear-gradient(90deg,#ddd7fe00 0%,#ddd7fe 50%,#ddd7fe00 100%);border-radius:2px;height:2px;top:0;left:8px;right:8px;box-shadow:0 0 8px 1px #ddd7fed9,0 0 24px 4px #9b85ff8c}@keyframes scannerSweep{0%{transform:translateY(0);opacity:0}8%{opacity:1}50%{transform:translateY(138px);opacity:1}58%{opacity:0}to{transform:translateY(0);opacity:0}}.loader-text{color:var(--fg);letter-spacing:-.012em;text-align:center;font-size:20px;font-weight:700}.loader-sub{color:var(--purple);font-size:11px;font-weight:600;font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;text-align:center;opacity:.85}@media (prefers-reduced-motion:reduce){.scanner-eye,.scanner-line{animation:none}}.error-card{display:flex;text-align:center;background:#251522;border-color:#4a2a3a;flex-direction:column;justify-content:center;align-items: center;gap:14px;padding:32px}.error-icon{color:#ff9ab3;display:flex;background:#3a1f2c;border-radius:50%;justify-content:center;align-items: center;width:40px;height:40px;font-size:22px;font-weight:700}.error-text{color:var(--fg);max-width:28ch;font-size:14.5px;font-weight:500;line-height:1.5}.controls{display:flex;flex-flow:wrap;justify-content:center;align-self: center;gap:10px;width:100%;max-width:360px}.controls .btn{flex:1 1 0;min-width:0}.btn{appearance:none;position:relative;font:inherit;border-radius:var(--radius-pill);cursor:pointer;letter-spacing:-.005em;display:inline-flex;border:0;justify-content:center;align-items: center;gap:9px;padding:14px 22px;transition:background .22s cubic-bezier(.22,1,.36,1),border-color .22s cubic-bezier(.22,1,.36,1),color .22s,transform .22s cubic-bezier(.22,1,.36,1),box-shadow .26s cubic-bezier(.22,1,.36,1),opacity .2s;font-family:inherit;font-weight:600;transform:translateZ(0)}.btn.hidden{display:none}.btn:disabled{cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--purple);outline-offset:3px}.btn.primary{background:linear-gradient(180deg,#ffffff14 0%,#fff0 50%),var(--purple);color:#0c0a1e;padding:16px 22px;font-size:16px;box-shadow:inset 0 1px #ffffff2e,0 10px 26px -12px #9b85ffa6,0 2px 6px -2px #3c1eb440}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#ffffff24 0%,#fff0 55%),var(--purple-hover);transform:translateY(-1px);box-shadow:inset 0 1px #ffffff38,0 16px 38px -12px #b5a3ffbf,0 4px 12px -4px #5032dc4d}.btn.primary:active:not(:disabled){transition-duration:80ms;transform:translateY(0)scale(.985);box-shadow:inset 0 1px #ffffff1a,0 4px 12px -8px #9b85ff73}.btn.primary:disabled{color:#6b5fa3;box-shadow:none;background:#2a234d}.btn.ghost{background:var(--surface);color:var(--fg);border:1px solid var(--line-strong);box-shadow:inset 0 1px #ffffff08,0 2px 6px -3px #00000080}.btn.ghost:hover:not(:disabled){background:linear-gradient(180deg,#9b85ff1a 0%,#9b85ff0a 100%),var(--surface);border-color:var(--purple);color:#fff;transform:translateY(-1px);box-shadow:inset 0 1px #9b85ff2e,0 10px 26px -14px #9b85ff8c,0 2px 6px -3px #00000080}.btn.ghost:active:not(:disabled){transition-duration:80ms;transform:translateY(0)scale(.985)}.btn.ghost:disabled{opacity:.5;box-shadow:none}.status{color:var(--muted-warm);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;text-align:center;min-height:1.2em;margin:0;font-size:11px;font-weight:600}.credit{text-align:center;color:var(--muted);margin:0;font-size:13px;font-weight:500}.credit a{color:var(--purple);text-decoration:none;font-weight:600}.credit a:hover{text-decoration:underline}.notice{position:fixed;left:50%;top:calc(env(safe-area-inset-top) + 18px);display:flex;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line-strong);color:var(--fg);letter-spacing:-.005em;white-space:nowrap;opacity:0;pointer-events:none;z-index:50;background:#15122aeb;border-radius:999px;align-items: center;gap:8px;padding:10px 16px;transition:opacity .32s,transform .32s cubic-bezier(.22,1,.36,1);font-size:13.5px;font-weight:600;transform:translate(-50%,-16px);box-shadow:0 12px 32px -12px #0009}.notice:before{content:"";background:var(--purple);box-shadow:0 0 8px 1px var(--purple);border-radius:50%;width:8px;height:8px}.notice.show{opacity:1;transform:translate(-50%)}
