:root{--ink:#262A43;--muted:#7A84A6;--line:#ECEAF4;--pink:#F0609E;--pink2:#FF8DBE;--pinkSoft:#FFEFF6;--lav:#EEEAFF;--blue:#E8F0FF;--radius:20px}
*{-webkit-tap-highlight-color:transparent;box-sizing:border-box}
html,body{margin:0;font-family:'Plus Jakarta Sans',system-ui,sans-serif;color:var(--ink);background:#F7F5FB;-webkit-font-smoothing:antialiased;letter-spacing:-.005em}
.bg-app{background:radial-gradient(120% 60% at 100% 0%,#FFEAF4 0%,transparent 55%),radial-gradient(90% 50% at 0% 10%,#EEF3FF 0%,transparent 60%),#FBF9FD;min-height:100vh}
.phone{max-width:430px;margin:0 auto;min-height:100vh;position:relative;overflow-x:hidden}
/* type system */
.font-black{font-weight:700!important;letter-spacing:-.015em}
.font-extrabold{font-weight:600!important}
.font-bold{font-weight:500!important}
.font-semibold{font-weight:500!important}
.text-slate-500,.text-slate-400{color:var(--muted)!important}
.text-slate-600{color:#5D6585!important}
.card{background:#fff;border-radius:var(--radius);border:1px solid var(--line);box-shadow:0 1px 2px rgba(38,42,67,.04),0 4px 14px rgba(38,42,67,.04)}
.btn-pink{background:var(--pink);color:#fff;font-weight:600;border-radius:14px;transition:transform .12s,background .15s;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn-pink:hover{background:#E04F8D}
.btn-pink:disabled{opacity:.4}
.btn-soft{background:#fff;border:1px solid #F6CFE1;color:#D9467F;font-weight:600;border-radius:14px;transition:transform .12s;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn-ghost{background:#F3F2F8;color:#4D5475;font-weight:600;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
button:active{transform:scale(.97)}
.inp{width:100%;background:#FAFAFD;border:1px solid #E4E6F0;border-radius:12px;padding:12px 14px;font-weight:500;outline:none;color:var(--ink);font-family:inherit}
.inp:focus{border-color:var(--pink2);box-shadow:0 0 0 3px #FFE4EF}
.logo{color:var(--pink);font-weight:800;letter-spacing:-.03em}
.fade{animation:fade .3s ease both}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.bob{animation:bob 3s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-5px)}}
.pulse{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(1.05)}}
.blob{position:absolute;border-radius:50%;filter:blur(40px);opacity:.45;pointer-events:none}
.chip{padding:6px 14px;border-radius:999px;font-weight:600;font-size:13px;white-space:nowrap;background:#fff;color:#5D6585;border:1px solid var(--line);display:inline-flex;align-items:center;gap:6px}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.badge{font-size:11px;font-weight:600;padding:4px 10px;border-radius:999px;white-space:nowrap}
.ico{display:inline-block;flex-shrink:0}
.noscroll::-webkit-scrollbar{display:none}
.dots span{animation:dot 1s infinite;display:inline-block}
.dots span:nth-child(2){animation-delay:.15s}.dots span:nth-child(3){animation-delay:.3s}
@keyframes dot{50%{transform:translateY(-4px)}}