:root{--accent:#ff7eb6;--bg0:#1a0f2e;--bg1:#2a1245;--panel:hsla(0,0%,100%,.06);--panel-br:hsla(0,0%,100%,.12);--text:#fff0f7;--muted:#d9b8e6}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text);background:radial-gradient(1200px 600px at 80% -10%,rgba(255,79,216,.25),transparent),radial-gradient(900px 500px at -10% 110%,rgba(110,193,255,.18),transparent),linear-gradient(160deg,var(--bg0),var(--bg1));overflow:hidden}.login-shell{position:relative;min-height:100dvh;display:grid;place-items:center;padding:24px;overflow:hidden}.login-shell:before{content:"";position:absolute;inset:0;background:radial-gradient(700px 420px at 50% 15%,rgba(255,126,182,.24),transparent 70%),radial-gradient(650px 460px at 80% 90%,rgba(94,214,255,.16),transparent 70%);pointer-events:none}.login-stars,.login-stars:before{position:absolute;inset:-20%;content:"";background-image:radial-gradient(circle,hsla(0,0%,100%,.68) 0 1px,transparent 1.6px),radial-gradient(circle,rgba(255,126,182,.5) 0 1px,transparent 1.8px);background-size:82px 82px,136px 136px;animation:starDrift 18s linear infinite;opacity:.36}.login-stars:before{animation-duration:28s;opacity:.4;transform:rotate(12deg)}.login-card{position:relative;z-index:1;width:min(100%,390px);display:grid;grid-gap:14px;gap:14px;padding:28px;border:1px solid var(--panel-br);border-radius:8px;background:rgba(23,12,38,.76);box-shadow:0 24px 70px rgba(0,0,0,.42);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.login-kicker{margin:0;color:var(--accent);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.login-card h1{margin:0;font-size:clamp(2rem,8vw,3.2rem);line-height:.95;letter-spacing:0}.login-copy{margin:0 0 4px;color:var(--muted);line-height:1.45}.login-card input{width:100%;min-height:48px;border:1px solid hsla(0,0%,100%,.18);border-radius:8px;padding:0 14px;color:var(--text);background:hsla(0,0%,100%,.08);font:inherit;outline:none}.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,126,182,.18)}.login-card button{min-height:48px;border:0;border-radius:8px;color:#1d0f24;background:linear-gradient(135deg,#ff9ed0,#9fe6ff);font:inherit;font-weight:900;cursor:pointer}.login-card button:disabled{cursor:not-allowed;filter:grayscale(.5);opacity:.58}.login-error{margin:0;color:#ffd1de;font-size:.92rem}.app{display:grid;grid-template-columns:1.1fr 1fr;height:100dvh;max-width:1100px;margin:0 auto}@media (max-width:820px){.app{grid-template-columns:1fr;grid-template-rows:minmax(330px,43dvh) minmax(0,1fr)}}.stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:16px;overflow:hidden}.stage:before{content:"";position:absolute;inset:0;background:radial-gradient(60% 60% at 50% 40%,color-mix(in srgb,var(--accent) 35%,transparent),transparent 70%);filter:blur(8px);z-index:0}.waifu-wrap{position:relative;z-index:1;width:min(86%,420px);aspect-ratio:1/1;display:grid;place-items:center}.waifu-img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 30px rgba(0,0,0,.5));animation:float 5s ease-in-out infinite;transition:opacity .18s ease}.reward-portrait picture,.swipe-portrait picture,.waifu-picture{display:block;width:100%;height:100%}.waifu-img.placeholder{display:grid;place-items:center;font-size:5rem;background:var(--panel);border:2px dashed var(--panel-br);border-radius:24px}@keyframes float{0%,to{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-12px) rotate(.5deg)}}.namecard{position:relative;z-index:2;text-align:center;margin-top:8px}.namecard h1{margin:0;font-size:1.5rem}.namecard p{margin:2px 0 0;color:var(--muted);font-size:.85rem}.emotion-chip{display:inline-block;margin-top:6px;padding:2px 10px;font-size:.72rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 30%,transparent);text-transform:lowercase}.emotion-chip,.meter{border:1px solid var(--panel-br)}.meter{position:absolute;top:54px;left:14px;right:14px;z-index:3;padding:10px 12px;border-radius:16px;background:rgba(0,0,0,.28);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.25);transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease}.meter .label{font-size:.74rem;color:var(--muted);display:flex;justify-content:space-between;gap:10px;margin-bottom:7px;text-transform:uppercase;letter-spacing:0;font-weight:800}.meter .bar{height:12px;border-radius:999px;background:rgba(0,0,0,.35);overflow:hidden;border:1px solid var(--panel-br)}.meter .fill{height:100%;width:0;background:linear-gradient(90deg,#ff7eb6,#ff4fd8,#b388ff);transition:width .55s cubic-bezier(.2,.8,.2,1),filter .25s ease}.meter-copy{margin-top:7px;color:var(--text);opacity:.78;font-size:.76rem;line-height:1.25}.meter.vault-mid{border-color:color-mix(in srgb,var(--accent) 55%,#fff 10%)}.meter.vault-mid .fill{filter:drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 80%,transparent))}.meter.vault-high{border-color:color-mix(in srgb,#ff4fd8 70%,#fff 10%);box-shadow:0 12px 34px rgba(255,79,216,.22),inset 0 0 0 1px hsla(0,0%,100%,.08);animation:vaultPulse 1.8s ease-in-out infinite}.meter.vault-open{border-color:#fff;box-shadow:0 14px 40px rgba(255,126,182,.35),0 0 26px color-mix(in srgb,var(--accent) 60%,transparent)}.meter.vault-open .fill{background:linear-gradient(90deg,#fff4a8,#ff7eb6,#6ec1ff)}@keyframes vaultPulse{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.vault-keepsake{top:142px;padding:7px 12px;border:1px solid color-mix(in srgb,var(--accent) 60%,#fff 15%);border-radius:999px;background:rgba(0,0,0,.42);color:var(--text);font-size:.75rem;font-weight:800;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 28px rgba(0,0,0,.28)}.rizz-guide,.vault-keepsake{position:absolute;right:14px;z-index:4}.rizz-guide{top:126px;left:14px;width:auto;max-height:106px;padding:9px;border:1px solid color-mix(in srgb,var(--accent) 34%,#fff 10%);border-radius:12px;background:rgba(7,3,18,.58);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 14px 34px rgba(0,0,0,.28);overflow:hidden}.rizz-kicker{margin:0 0 3px;color:color-mix(in srgb,var(--accent) 62%,#fff 24%);font-size:.68rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.rizz-guide h2{margin:0;font-size:.9rem;line-height:1.1}.rizz-guide p{margin:6px 0 0;color:var(--muted);font-size:.68rem;line-height:1.18;max-width:44rem}.rizz-examples{display:flex;gap:6px;margin-top:8px;max-height:38px;overflow-x:auto;overflow-y:hidden;overscroll-behavior:contain;padding:0 0 2px;scrollbar-width:thin}.rizz-examples button{flex:0 0 min(235px,78vw);min-width:0;min-height:34px;padding:5px 8px;border:1px solid var(--panel-br);border-radius:8px;background:hsla(0,0%,100%,.08);color:var(--text);font:inherit;font-size:.66rem;line-height:1.15;text-align:left;cursor:pointer;overflow-wrap:anywhere;transition:border-color .15s ease,background .15s ease,transform .15s ease}.rizz-examples button:hover{border-color:color-mix(in srgb,var(--accent) 60%,#fff 15%);background:color-mix(in srgb,var(--accent) 16%,hsla(0,0%,100%,.08));transform:translateY(-1px)}.chat{display:flex;flex-direction:column;border-left:1px solid var(--panel-br);background:rgba(0,0,0,.18);min-height:0}.picker{display:flex;gap:6px;padding:10px;overflow-x:auto;border-bottom:1px solid var(--panel-br);scrollbar-width:thin}.picker button{flex:0 0 auto;padding:6px 12px;border-radius:999px;border:1px solid var(--panel-br);background:var(--panel);color:var(--text);font-size:.78rem;cursor:pointer;white-space:nowrap;transition:all .15s}.picker button.active{background:var(--accent);border-color:var(--accent);color:#1a0f2e;font-weight:700}.log{flex:1 1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:0}.msg{max-width:82%;padding:9px 13px;border-radius:16px;line-height:1.35;font-size:.92rem;word-wrap:break-word;animation:pop .18s ease}@keyframes pop{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.msg.her{align-self:flex-start;background:color-mix(in srgb,var(--accent) 24%,#2a1245);border:1px solid var(--panel-br);border-bottom-left-radius:4px}.msg.me{align-self:flex-end;background:hsla(0,0%,100%,.12);border-bottom-right-radius:4px}.msg.typing{color:var(--muted);font-style:italic}.composer{display:flex;gap:8px;padding:10px;border-top:1px solid var(--panel-br)}.composer input{flex:1 1;padding:11px 14px;border-radius:999px;border:1px solid var(--panel-br);background:rgba(0,0,0,.3);color:var(--text);font-size:.95rem;outline:none}.composer input:focus{border-color:var(--accent)}.composer button{padding:0 18px;border-radius:999px;border:none;background:var(--accent);color:#1a0f2e;font-weight:800;cursor:pointer}.composer button:disabled{opacity:.5;cursor:default}.dots span{animation:blink 1.2s infinite both;font-weight:900}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}.catalogue{position:relative;isolation:isolate;width:min(100vw,620px);min-width:0;height:100dvh;margin:0 auto;display:flex;flex-direction:column;align-items:center;padding:24px 18px 28px;overflow:hidden}.catalogue:after,.catalogue:before{content:"";position:fixed;inset:-20%;z-index:-1;pointer-events:none;background-image:radial-gradient(circle,hsla(0,0%,100%,.58) 0 1px,transparent 1.4px),radial-gradient(circle,color-mix(in srgb,var(--accent) 65%,#fff 10%) 0 1px,transparent 1.6px);background-size:74px 74px,118px 118px;background-position:0 0,32px 48px;opacity:.32;animation:starDrift 26s linear infinite}.catalogue:after{background-size:96px 96px,146px 146px;background-position:18px 22px,80px 10px;opacity:.2;animation:starDriftSlow 38s linear infinite}@keyframes starDrift{0%{transform:translateZ(0)}to{transform:translate3d(74px,-74px,0)}}@keyframes starDriftSlow{0%{transform:translateZ(0)}to{transform:translate3d(-96px,-96px,0)}}.cat-head{width:min(100%,380px);min-width:0;text-align:center;margin:8px 0 18px}.cat-head h1{margin:0;font-size:clamp(1.45rem,6vw,2.2rem);line-height:1.05;overflow-wrap:anywhere;background:linear-gradient(90deg,#ff7eb6,#ff4fd8,#6ec1ff);-webkit-background-clip:text;background-clip:text;color:transparent}.cat-head p{margin:6px 0 0;color:var(--muted);font-size:.9rem}.swipe-shell{position:relative;width:min(84vw,360px);flex:1 1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}.swipe-stack{position:relative;width:100%;aspect-ratio:.74;max-height:min(66dvh,540px)}.swipe-card{position:absolute;inset:0;width:100%;height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;border:1px solid color-mix(in srgb,var(--card-accent,var(--accent)) 44%,#fff 10%);border-radius:28px;overflow:hidden;color:var(--text);background:linear-gradient(180deg,color-mix(in srgb,var(--card-accent,var(--accent)) 18%,transparent),transparent 45%),hsla(0,0%,100%,.07);box-shadow:0 30px 90px rgba(0,0,0,.42),inset 0 0 0 1px hsla(0,0%,100%,.06);touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:transform .17s ease,border-color .17s ease,box-shadow .17s ease}.swipe-card-front{z-index:2;cursor:-webkit-grab;cursor:grab}.swipe-card-front:active{cursor:-webkit-grabbing;cursor:grabbing}.swipe-card-back{z-index:1;pointer-events:none;transform:translateY(14px) scale(.94);opacity:.76;filter:saturate(.9) brightness(.88)}.swipe-card-ready{z-index:1;pointer-events:none;transform:translateY(0) scale(1)}.swipe-card-exiting{z-index:3}.swipe-card-front.is-left,.swipe-card-front.is-right{transition:transform .17s ease-in,opacity .17s ease-in;opacity:.78;pointer-events:none}.swipe-portrait{min-height:0;overflow:hidden;background:radial-gradient(120% 90% at 50% 0,color-mix(in srgb,var(--card-accent,var(--accent)) 35%,transparent),transparent),rgba(0,0,0,.25);display:grid;place-items:center}.swipe-portrait img{width:100%;height:100%;object-fit:contain;object-position:center bottom;padding:8px 8px 0;pointer-events:none}.swipe-emoji{font-size:5rem}.swipe-meta{position:relative;z-index:2;min-height:0;padding:18px 18px 20px;border-top:1px solid hsla(0,0%,100%,.1);background:linear-gradient(180deg,rgba(12,6,25,.9),rgba(12,6,25,.98))}.swipe-meta h2{margin:0;font-size:1.7rem}.swipe-meta p{margin:4px 0 0;color:var(--muted);line-height:1.25;font-size:.88rem}.swipe-meta .swipe-quote{margin-top:10px;color:color-mix(in srgb,var(--card-accent,var(--accent)) 60%,#fff 30%);font-size:.82rem;font-weight:800}.swipe-stamp{position:absolute;top:22px;z-index:2;padding:7px 13px;border:3px solid;border-radius:10px;font-size:1.1rem;font-weight:950;letter-spacing:0;text-transform:uppercase;opacity:0;transform:rotate(-14deg);transition:opacity .12s ease}.swipe-stamp.pick{left:20px;color:#8dffcb}.swipe-stamp.pass{right:20px;color:#ff8fab;transform:rotate(14deg)}.swipe-card.show-pass .swipe-stamp.pass,.swipe-card.show-pick .swipe-stamp.pick{opacity:.92}.swipe-actions{display:flex;align-items:center;gap:18px}.swipe-action{width:58px;height:58px;border-radius:50%;border:1px solid var(--panel-br);display:grid;place-items:center;color:var(--text);background:rgba(0,0,0,.34);box-shadow:0 14px 34px rgba(0,0,0,.28);font-size:2rem;line-height:1;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.swipe-action:hover{transform:translateY(-2px)}.swipe-action:disabled{opacity:.48;cursor:default;transform:none}.swipe-action.pass{color:#ff8fab}.swipe-action.pick{color:#8dffcb;border-color:color-mix(in srgb,var(--accent) 55%,#fff 15%);background:color-mix(in srgb,var(--accent) 18%,rgba(0,0,0,.34))}@media (max-width:520px){.catalogue{padding:18px 14px 22px}.cat-head{margin-bottom:14px}.cat-head h1{font-size:1.35rem}.cat-head p{font-size:.82rem}.swipe-shell{width:min(82vw,320px);gap:14px}.swipe-stack{max-height:62dvh}.swipe-card{border-radius:24px}.swipe-meta{padding:12px 12px 14px}.swipe-meta h2{font-size:1.3rem}.swipe-meta p{font-size:.76rem}.swipe-meta .swipe-quote{margin-top:6px;font-size:.72rem}.swipe-action{width:54px;height:54px}}@media (max-height:620px){.catalogue{padding-top:10px}.cat-head{margin:0 0 8px}.cat-head h1{font-size:1.25rem}.cat-head p,.swipe-meta .swipe-quote{display:none}.swipe-shell{gap:10px}.swipe-meta{padding:10px 12px 12px}.swipe-meta h2{font-size:1.2rem}}.back-btn{position:absolute;top:12px;left:12px;z-index:3;padding:6px 12px;border-radius:999px;border:1px solid var(--panel-br);background:rgba(0,0,0,.35);color:var(--text);font-size:.78rem;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:all .15s}.back-btn:hover{border-color:var(--accent);color:var(--accent)}.reward{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:22px;background:rgba(12,6,25,.62);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:rewardIn .22s ease-out}.reward-panel{position:relative;width:min(92vw,420px);padding:22px;border:1px solid color-mix(in srgb,var(--accent) 56%,#fff 14%);border-radius:20px;background:radial-gradient(140% 100% at 50% 0,color-mix(in srgb,var(--accent) 28%,transparent),transparent 58%),rgba(24,12,42,.95);box-shadow:0 24px 80px rgba(0,0,0,.5),0 0 36px color-mix(in srgb,var(--accent) 35%,transparent);text-align:center}.reward-kicker{margin:0 0 6px;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:0;font-weight:900}.reward-panel h2{margin:0;font-size:1.55rem}.reward-portrait{width:min(260px,70vw);aspect-ratio:1;margin:14px auto 10px;border-radius:18px;overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 58%,#fff 18%);background:hsla(0,0%,100%,.06);box-shadow:inset 0 0 28px hsla(0,0%,100%,.06)}.reward-portrait img{width:100%;height:100%;display:block;object-fit:cover}.reward-panel p:not(.reward-kicker){margin:10px 0 18px;color:var(--muted);line-height:1.45;font-size:.92rem}.reward-panel button{min-height:42px;padding:0 18px;border:0;border-radius:999px;background:var(--accent);color:#1a0f2e;font-weight:900;cursor:pointer}.reward-burst{position:absolute;inset:0;pointer-events:none;overflow:hidden}.reward-burst span{position:absolute;left:50%;top:48%;font-size:1.25rem;color:#fff;animation:burst .9s ease-out forwards}.reward-burst span:first-child{transform:rotate(10deg);animation-delay:0ms}.reward-burst span:nth-child(2){transform:rotate(70deg);animation-delay:55ms}.reward-burst span:nth-child(3){transform:rotate(145deg);animation-delay:90ms}.reward-burst span:nth-child(4){transform:rotate(218deg);animation-delay:.12s}.reward-burst span:nth-child(5){transform:rotate(300deg);animation-delay:.16s}@keyframes rewardIn{0%{opacity:0}to{opacity:1}}@keyframes burst{0%{opacity:0;translate:-50% -50%;scale:.5}30%{opacity:1}to{opacity:0;translate:calc(-50% + 120px) -150px;scale:1.4}}@media (max-width:820px){.stage{justify-content:flex-start;padding:10px 12px 8px;gap:7px}.stage:before{background:radial-gradient(72% 52% at 50% 42%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 72%)}.back-btn{top:10px;left:12px;padding:6px 11px;font-size:.74rem}.meter{position:relative;top:auto;left:auto;right:auto;width:100%;margin-top:42px;padding:8px 10px;border-radius:12px;background:rgba(8,3,18,.62)}.meter .label{margin-bottom:5px}.meter .bar{height:9px}.meter-copy{font-size:.7rem}.vault-keepsake{top:112px;right:10px}.waifu-wrap{width:min(62vw,245px);height:min(62vw,245px);max-height:none;aspect-ratio:1/1}.waifu-img{animation:none;filter:drop-shadow(0 12px 20px rgba(0,0,0,.42))}.namecard{margin-top:0}.namecard h1{font-size:1.38rem;line-height:1.05}.namecard p{font-size:.82rem}.emotion-chip{margin-top:5px;padding:2px 9px;font-size:.68rem}.rizz-guide{position:relative;top:auto;left:auto;z-index:3;width:100%;max-width:100%;max-height:92px;margin:0;padding:8px;border-radius:10px;background:rgba(8,3,18,.66)}.rizz-guide h2,.rizz-kicker{display:none}.rizz-guide p{margin:0 0 6px;font-size:.68rem;line-height:1.2}.rizz-examples{display:flex;gap:6px;max-height:42px;margin-top:0;overflow-x:auto;overflow-y:hidden;padding:0 0 2px}.rizz-examples button{flex:0 0 min(78vw,245px);min-height:34px;padding:6px 8px;font-size:.68rem;line-height:1.15}.chat{min-height:0;border-left:0;border-top:1px solid var(--panel-br)}.log{padding:12px 12px 8px;gap:8px}.msg{max-width:86%;padding:9px 12px;font-size:.9rem}.composer{padding:9px 12px max(10px,env(safe-area-inset-bottom))}.composer input{min-width:0;padding:10px 12px;font-size:.9rem}.composer button{flex:0 0 auto;min-width:76px;padding:0 14px}.reward-panel{padding:18px}}@media (max-width:430px){.app{grid-template-rows:minmax(315px,41dvh) minmax(0,1fr)}.meter-copy{display:none}.waifu-wrap{width:min(50vw,192px);height:min(50vw,192px)}}@media (max-height:700px) and (max-width:820px){.app{grid-template-rows:300px minmax(0,1fr)}.meter{margin-top:38px}.waifu-wrap{width:min(52vw,185px);height:min(52vw,185px)}.namecard p{display:none}}