:root {
  --bg: var(--tg-theme-bg-color, #0f0a1e);
  --bg2: var(--tg-theme-secondary-bg-color, #181030);
  --card: #1c1436;
  --text: var(--tg-theme-text-color, #f5f3ff);
  --muted: var(--tg-theme-hint-color, #a79ec4);
  --line: rgba(255, 255, 255, 0.08);
  --p1: #7c3aed;
  --p2: #ec4899;
  --p3: #f97316;
  --grad: linear-gradient(135deg, #7c3aed 0%, #ec4899 60%, #f97316 100%);
  --grad-soft: linear-gradient(135deg, rgba(124, 58, 237, 0.25), rgba(236, 72, 153, 0.25));
  --green: #22c55e;
  --red: #ef4444;
  --gold: #fbbf24;
  --radius: 22px;
  --shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
  --nav-h: 66px;
  --safe-b: env(safe-area-inset-bottom, 0px);
}
html[data-light] {
  --bg: var(--tg-theme-bg-color, #faf7ff);
  --bg2: var(--tg-theme-secondary-bg-color, #f1ecff);
  --card: #ffffff;
  --text: var(--tg-theme-text-color, #1a1033);
  --muted: var(--tg-theme-hint-color, #7b7195);
  --line: rgba(20, 10, 50, 0.08);
  --shadow: 0 12px 40px rgba(80, 40, 160, 0.14);
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; padding: 0; height: 100%; }
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
  overflow: hidden;
  overscroll-behavior: none;
  -webkit-font-smoothing: antialiased;
}
button { font-family: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
input, select, textarea { font-family: inherit; font-size: 16px; color: var(--text); }
.hidden { display: none !important; }

#app { height: 100vh; height: 100dvh; display: flex; flex-direction: column; }
.screen { flex: 1; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; padding: 16px 16px calc(var(--nav-h) + var(--safe-b) + 16px); }
.screen.full { padding: 0; }
.screen.no-nav { padding-bottom: calc(24px + var(--safe-b)); }

/* ---- nav ---- */
.nav {
  position: fixed; left: 0; right: 0; bottom: 0; height: calc(var(--nav-h) + var(--safe-b));
  padding-bottom: var(--safe-b);
  display: flex; justify-content: space-around; align-items: center;
  background: color-mix(in srgb, var(--bg2) 85%, transparent);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  border-top: 1px solid var(--line); z-index: 20;
}
.nav button { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 11px; color: var(--muted); font-weight: 600; padding: 6px 10px; border-radius: 14px; transition: 0.2s; }
.nav button .ic { font-size: 22px; filter: grayscale(1); opacity: 0.7; transition: 0.2s; }
.nav button.active { color: var(--text); }
.nav button.active .ic { filter: none; opacity: 1; transform: translateY(-2px) scale(1.1); }
.badge { position: absolute; top: 2px; right: 6px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--p2); color: #fff; font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; }

/* ---- generic ---- */
h1 { font-size: 26px; font-weight: 800; margin: 8px 0 4px; letter-spacing: -0.5px; }
h2 { font-size: 20px; font-weight: 700; margin: 8px 0; }
h3 { font-size: 16px; font-weight: 700; margin: 6px 0; }
p { margin: 6px 0; line-height: 1.45; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.center { text-align: center; }
.row { display: flex; gap: 10px; align-items: center; }
.row.between { justify-content: space-between; }
.wrap { flex-wrap: wrap; }
.grow { flex: 1; }
.mt { margin-top: 16px; }
.mb { margin-bottom: 16px; }
.gradient-text { background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; box-shadow: 0 4px 18px rgba(0,0,0,0.12); }
.card + .card { margin-top: 12px; }

.btn { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 15px 18px; border-radius: 16px; font-weight: 700; font-size: 16px; transition: transform 0.12s, opacity 0.2s; }
.btn:active { transform: scale(0.97); }
.btn:disabled { opacity: 0.5; pointer-events: none; }
.btn.primary { background: var(--grad); color: #fff; box-shadow: 0 8px 24px rgba(236, 72, 153, 0.35); }
.btn.secondary { background: var(--bg2); color: var(--text); border: 1px solid var(--line); }
.btn.ghost { background: transparent; color: var(--muted); }
.btn.danger { background: rgba(239, 68, 68, 0.12); color: var(--red); }
.btn.gold { background: linear-gradient(135deg, #f59e0b, #fbbf24, #f97316); color: #1a1033; box-shadow: 0 8px 24px rgba(251, 191, 36, 0.35); }
.btn.sm { padding: 10px 14px; font-size: 14px; border-radius: 12px; width: auto; }
.btn.xs { padding: 7px 12px; font-size: 13px; border-radius: 10px; width: auto; }

.field { margin-bottom: 14px; }
.field label { display: block; font-size: 13px; font-weight: 600; color: var(--muted); margin-bottom: 6px; }
.input, .select, .textarea { width: 100%; padding: 14px 16px; border-radius: 14px; border: 1.5px solid var(--line); background: var(--bg2); outline: none; transition: border 0.2s; -webkit-appearance: none; appearance: none; }
.input:focus, .select:focus, .textarea:focus { border-color: var(--p1); }
.textarea { min-height: 96px; resize: none; }
.select-wrap { position: relative; }
.select-wrap::after { content: '⌄'; position: absolute; right: 16px; top: 50%; transform: translateY(-60%); color: var(--muted); font-size: 20px; pointer-events: none; }
.counter { text-align: right; font-size: 12px; color: var(--muted); margin-top: 4px; }

.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { padding: 8px 14px; border-radius: 999px; background: var(--bg2); border: 1.5px solid var(--line); font-size: 14px; font-weight: 600; transition: 0.15s; }
.chip.on { background: var(--grad-soft); border-color: var(--p1); color: var(--text); }
.chip.tiny { padding: 5px 10px; font-size: 12px; background: rgba(255,255,255,0.14); border-color: transparent; color: #fff; backdrop-filter: blur(6px); }

.seg { display: flex; gap: 8px; }
.seg button { flex: 1; padding: 14px 8px; border-radius: 14px; background: var(--bg2); border: 1.5px solid var(--line); font-weight: 700; font-size: 15px; transition: 0.15s; }
.seg button.on { background: var(--grad-soft); border-color: var(--p1); }
.seg.big button { padding: 22px 8px; font-size: 17px; display: flex; flex-direction: column; gap: 6px; }
.seg.big button .ic { font-size: 34px; }

.toggle { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid var(--line); }
.toggle:last-child { border-bottom: 0; }
.toggle .t { font-weight: 600; }
.toggle .d { font-size: 12px; color: var(--muted); margin-top: 2px; }
.switch { width: 50px; height: 30px; border-radius: 15px; background: var(--line); position: relative; transition: 0.2s; flex-shrink: 0; }
.switch::after { content: ''; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: #fff; transition: 0.2s; box-shadow: 0 2px 6px rgba(0,0,0,0.3); }
.switch.on { background: var(--p1); }
.switch.on::after { left: 23px; }
.lock { font-size: 12px; color: var(--gold); font-weight: 700; margin-left: 6px; }

.range-wrap { padding: 8px 4px; }
.range-vals { display: flex; justify-content: space-between; font-weight: 700; margin-bottom: 4px; }
input[type=range] { width: 100%; accent-color: var(--p2); }

.progress { height: 6px; border-radius: 3px; background: var(--line); overflow: hidden; margin: 8px 0 20px; }
.progress i { display: block; height: 100%; background: var(--grad); border-radius: 3px; transition: width 0.3s; }

/* ---- onboarding ---- */
.onb { min-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 40px 28px calc(28px + var(--safe-b)); background: radial-gradient(120% 60% at 50% 0%, rgba(124,58,237,0.35), transparent 60%), radial-gradient(80% 50% at 100% 100%, rgba(236,72,153,0.3), transparent 60%); }
.logo { width: 110px; height: 110px; border-radius: 34px; background: var(--grad); display: flex; align-items: center; justify-content: center; font-size: 58px; box-shadow: 0 18px 50px rgba(236,72,153,0.45); margin-bottom: 26px; animation: float 3s ease-in-out infinite; }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
.onb h1 { font-size: 34px; margin-bottom: 8px; }
.onb .feat { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; width: 100%; margin: 28px 0; }
.onb .feat div { background: var(--card); border: 1px solid var(--line); border-radius: 18px; padding: 14px 8px; font-size: 12px; font-weight: 600; color: var(--muted); }
.onb .feat div span { display: block; font-size: 28px; margin-bottom: 6px; }
.onb .btn { max-width: 360px; }

.reg-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.reg-head .step { font-size: 12px; font-weight: 700; color: var(--muted); }

/* ---- photos grid ---- */
.photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.photo { position: relative; aspect-ratio: 3/4; border-radius: 16px; overflow: hidden; background: var(--bg2); border: 1.5px dashed var(--line); display: flex; align-items: center; justify-content: center; color: var(--muted); font-size: 28px; }
.photo img { width: 100%; height: 100%; object-fit: cover; }
.photo.has { border-style: solid; }
.photo .x { position: absolute; top: 6px; right: 6px; width: 26px; height: 26px; border-radius: 50%; background: rgba(0,0,0,0.6); color: #fff; font-size: 14px; display: flex; align-items: center; justify-content: center; }
.photo .main { position: absolute; left: 6px; bottom: 6px; padding: 3px 8px; border-radius: 8px; background: var(--grad); color: #fff; font-size: 10px; font-weight: 800; }
.photo .mk { position: absolute; left: 6px; bottom: 6px; padding: 3px 8px; border-radius: 8px; background: rgba(0,0,0,0.55); color: #fff; font-size: 10px; font-weight: 700; }
.photo.uploading::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,0.4); }
.photo.uploading::before { content: ''; position: absolute; z-index: 1; width: 26px; height: 26px; border-radius: 50%; border: 3px solid #fff; border-top-color: transparent; animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---- discover ---- */
.disc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.disc-head .brand { font-size: 22px; font-weight: 800; letter-spacing: -0.5px; }
.pill { padding: 6px 12px; border-radius: 999px; background: var(--bg2); border: 1px solid var(--line); font-size: 12px; font-weight: 700; display: inline-flex; gap: 6px; align-items: center; }
.pill.gold { background: linear-gradient(135deg, rgba(251,191,36,0.25), rgba(249,115,22,0.25)); border-color: rgba(251,191,36,0.5); color: var(--gold); }
.stack { position: relative; height: calc(100dvh - var(--nav-h) - var(--safe-b) - 150px); min-height: 420px; }
.dcard { position: absolute; inset: 0; border-radius: 26px; overflow: hidden; background: var(--card); box-shadow: var(--shadow); touch-action: pan-y; user-select: none; transform-origin: 50% 100%; will-change: transform; }
.dcard.behind { transform: scale(0.95) translateY(14px); opacity: 0.7; }
.dcard.animating { transition: transform 0.35s ease, opacity 0.35s ease; }
.dcard .img { position: absolute; inset: 0; background-size: cover; background-position: center; transition: opacity 0.15s; }
.dcard .noimg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 80px; background: var(--grad-soft); }
.dcard .shade { position: absolute; left: 0; right: 0; bottom: 0; height: 60%; background: linear-gradient(to top, rgba(0,0,0,0.85), rgba(0,0,0,0.35) 50%, transparent); }
.dcard .dots { position: absolute; top: 10px; left: 12px; right: 12px; display: flex; gap: 4px; z-index: 2; }
.dcard .dots i { flex: 1; height: 3px; border-radius: 2px; background: rgba(255,255,255,0.35); }
.dcard .dots i.on { background: #fff; }
.dcard .tap { position: absolute; top: 0; bottom: 30%; width: 50%; z-index: 3; }
.dcard .tap.l { left: 0; } .dcard .tap.r { right: 0; }
.dcard .info { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px; color: #fff; z-index: 2; }
.dcard .name { font-size: 26px; font-weight: 800; display: flex; align-items: center; gap: 8px; text-shadow: 0 2px 8px rgba(0,0,0,0.5); }
.dcard .name .age { font-weight: 500; opacity: 0.9; }
.dcard .meta { font-size: 13px; opacity: 0.9; margin: 4px 0 8px; display: flex; gap: 10px; flex-wrap: wrap; }
.dcard .bio { font-size: 14px; line-height: 1.4; opacity: 0.95; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.dcard .more { position: absolute; top: 22px; right: 12px; z-index: 4; width: 36px; height: 36px; border-radius: 50%; background: rgba(0,0,0,0.45); color: #fff; font-size: 18px; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(6px); }
.stamp { position: absolute; top: 40px; padding: 8px 16px; border: 4px solid; border-radius: 10px; font-size: 32px; font-weight: 900; letter-spacing: 2px; opacity: 0; z-index: 5; transform: rotate(-18deg); text-transform: uppercase; }
.stamp.like { left: 22px; color: var(--green); border-color: var(--green); }
.stamp.nope { right: 22px; color: var(--red); border-color: var(--red); transform: rotate(18deg); }
.stamp.super { left: 50%; top: auto; bottom: 40%; transform: translateX(-50%) rotate(0); color: #38bdf8; border-color: #38bdf8; }
.btag { position: absolute; top: 22px; left: 12px; z-index: 3; }
.actions { display: flex; justify-content: center; align-items: center; gap: 18px; margin-top: 16px; }
.act { width: 60px; height: 60px; border-radius: 50%; background: var(--card); border: 1px solid var(--line); box-shadow: 0 6px 18px rgba(0,0,0,0.2); font-size: 26px; display: flex; align-items: center; justify-content: center; transition: transform 0.12s; }
.act:active { transform: scale(0.9); }
.act.nope { color: var(--red); }
.act.like { width: 70px; height: 70px; font-size: 32px; background: var(--grad); color: #fff; box-shadow: 0 10px 28px rgba(236,72,153,0.45); }
.act.super { color: #38bdf8; font-size: 24px; }
.act.super b { position: absolute; bottom: -4px; right: -4px; background: #38bdf8; color: #fff; font-size: 10px; min-width: 18px; height: 18px; border-radius: 9px; display: flex; align-items: center; justify-content: center; padding: 0 4px; }
.act { position: relative; }
.empty { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 30px; border-radius: 26px; background: var(--card); border: 1px solid var(--line); }
.empty .big { font-size: 64px; margin-bottom: 12px; }

/* ---- lists ---- */
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.tile { position: relative; aspect-ratio: 3/4; border-radius: 20px; overflow: hidden; background: var(--card); border: 1px solid var(--line); }
.tile .img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.tile .img.blur { filter: blur(16px); transform: scale(1.15); }
.tile .noimg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 48px; background: var(--grad-soft); }
.tile .shade { position: absolute; left: 0; right: 0; bottom: 0; height: 55%; background: linear-gradient(to top, rgba(0,0,0,0.8), transparent); }
.tile .nm { position: absolute; left: 12px; right: 12px; bottom: 12px; color: #fff; font-weight: 700; font-size: 15px; text-shadow: 0 1px 6px rgba(0,0,0,0.5); }
.tile .nm small { display: block; font-weight: 500; font-size: 12px; opacity: 0.85; }
.tile .st { position: absolute; top: 10px; left: 10px; font-size: 18px; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); }
.tile .lockc { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 34px; }
.mrow { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 18px; background: var(--card); border: 1px solid var(--line); margin-bottom: 10px; }
.avatar { width: 58px; height: 58px; border-radius: 50%; background: var(--grad-soft); background-size: cover; background-position: center; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 24px; border: 2px solid transparent; }
.avatar.ring { border-color: var(--p2); }
.mrow .nm { font-weight: 700; font-size: 16px; }
.mrow .sub { font-size: 12px; color: var(--muted); }

/* ---- premium ---- */
.hero { border-radius: 26px; padding: 26px 20px; background: var(--grad); color: #fff; text-align: center; box-shadow: 0 16px 40px rgba(236,72,153,0.35); position: relative; overflow: hidden; }
.hero::before { content: '💎'; position: absolute; right: -10px; top: -14px; font-size: 110px; opacity: 0.15; }
.hero h1 { color: #fff; margin: 0 0 4px; font-size: 28px; }
.hero p { opacity: 0.95; margin: 0; }
.perk { display: flex; gap: 12px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--line); }
.perk:last-child { border-bottom: 0; }
.perk .ic { font-size: 22px; width: 32px; text-align: center; }
.perk .t { font-weight: 700; }
.perk .d { font-size: 13px; color: var(--muted); }
.plans { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
.plan { position: relative; padding: 18px 8px 14px; border-radius: 18px; background: var(--bg2); border: 2px solid var(--line); text-align: center; transition: 0.15s; }
.plan.on { border-color: var(--p2); background: var(--grad-soft); box-shadow: 0 8px 22px rgba(236,72,153,0.2); }
.plan .t { font-weight: 800; font-size: 15px; }
.plan .s { font-size: 22px; font-weight: 900; margin: 6px 0 2px; }
.plan .pd { font-size: 11px; color: var(--muted); }
.plan .tag { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); padding: 3px 9px; border-radius: 999px; background: var(--grad); color: #fff; font-size: 10px; font-weight: 800; white-space: nowrap; }
.prod { display: flex; align-items: center; gap: 12px; }
.prod .ic { font-size: 30px; width: 44px; text-align: center; }
.prod .t { font-weight: 700; }
.prod .d { font-size: 12px; color: var(--muted); }

/* ---- profile ---- */
.phead { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.phead .avatar { width: 78px; height: 78px; font-size: 32px; }
.phead .nm { font-size: 22px; font-weight: 800; }
.stat3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-bottom: 14px; }
.stat3 div { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 12px 6px; text-align: center; }
.stat3 b { display: block; font-size: 20px; }
.stat3 span { font-size: 11px; color: var(--muted); font-weight: 600; }
.menu-item { display: flex; align-items: center; gap: 12px; padding: 14px 4px; border-bottom: 1px solid var(--line); font-weight: 600; }
.menu-item:last-child { border-bottom: 0; }
.menu-item .ic { font-size: 20px; width: 28px; text-align: center; }
.menu-item .ar { margin-left: auto; color: var(--muted); }

/* ---- toast / modal ---- */
.toast { position: fixed; left: 50%; bottom: calc(var(--nav-h) + var(--safe-b) + 18px); transform: translateX(-50%); background: #1a1033; color: #fff; padding: 12px 18px; border-radius: 14px; font-size: 14px; font-weight: 600; box-shadow: var(--shadow); z-index: 100; max-width: 90%; text-align: center; animation: up 0.25s ease; }
.toast.err { background: var(--red); }
.toast.ok { background: var(--green); color: #052e16; }
@keyframes up { from { opacity: 0; transform: translate(-50%, 12px); } to { opacity: 1; transform: translate(-50%, 0); } }
.modal { position: fixed; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(6px); z-index: 90; display: flex; align-items: flex-end; justify-content: center; animation: fade 0.2s; }
@keyframes fade { from { opacity: 0; } to { opacity: 1; } }
.modal-card { width: 100%; max-width: 520px; background: var(--bg); border-radius: 28px 28px 0 0; padding: 22px 20px calc(24px + var(--safe-b)); animation: sheet 0.28s cubic-bezier(.2,.8,.2,1); max-height: 88dvh; overflow-y: auto; }
@keyframes sheet { from { transform: translateY(60px); opacity: 0; } to { transform: none; opacity: 1; } }
.modal-card .grab { width: 44px; height: 5px; border-radius: 3px; background: var(--line); margin: -8px auto 16px; }
.match-modal { text-align: center; background: radial-gradient(80% 60% at 50% 0%, rgba(236,72,153,0.4), transparent); }
.match-modal .pair { display: flex; justify-content: center; gap: -10px; margin: 20px 0; }
.match-modal .avatar { width: 96px; height: 96px; font-size: 40px; border: 3px solid #fff; box-shadow: 0 8px 24px rgba(0,0,0,0.3); }
.match-modal .avatar + .avatar { margin-left: -18px; }
.match-modal h1 { font-size: 34px; }

.loader { display: flex; align-items: center; justify-content: center; height: 60vh; flex-direction: column; gap: 14px; color: var(--muted); }
.spinner { width: 40px; height: 40px; border-radius: 50%; border: 4px solid var(--line); border-top-color: var(--p2); animation: spin 0.8s linear infinite; }
.center-page { min-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 30px; }

/* profile view modal */
.pv .gal { position: relative; aspect-ratio: 3/4; border-radius: 22px; overflow: hidden; background: var(--bg2); margin-bottom: 14px; }
.pv .gal .img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.pv .gal .noimg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 70px; background: var(--grad-soft); }
.pv .gal .dots { position: absolute; top: 10px; left: 12px; right: 12px; display: flex; gap: 4px; }
.pv .gal .dots i { flex: 1; height: 3px; border-radius: 2px; background: rgba(255,255,255,0.35); }
.pv .gal .dots i.on { background: #fff; }
.pv .gal .tap { position: absolute; top: 0; bottom: 0; width: 50%; }
.pv .gal .tap.l { left: 0; } .pv .gal .tap.r { right: 0; }

/* referral */
.linkbox{background:var(--card2,rgba(255,255,255,.06));border:1px dashed var(--border,rgba(255,255,255,.15));border-radius:14px;padding:12px 14px;font-size:13px;word-break:break-all;line-height:1.4;cursor:pointer;user-select:all}
.refcard{cursor:pointer;background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(236,72,153,.14))}
.ar.small{font-size:11px;font-weight:500}

/* chat list */
.mrow{position:relative}
.mrow .last{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.mrow .last.unread{color:var(--text);font-weight:600}
.mrow .time{font-size:11px;color:var(--muted);margin-left:auto;align-self:flex-start;padding-top:2px}
.mrow .ub{min-width:20px;height:20px;border-radius:10px;background:linear-gradient(135deg,#7c3aed,#ec4899);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 6px;margin-left:8px}
/* chat screen */
.screen.chat{display:flex;flex-direction:column;padding:0;overflow:hidden}
.chat-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border,rgba(255,255,255,.08));background:var(--bg);position:sticky;top:0;z-index:2}
.chat-head .avatar{width:40px;height:40px;border-radius:50%;background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;font-size:20px;background-color:var(--card)}
.chat-head .nm{font-weight:700;font-size:15px}
.chat-head .st{font-size:11px;color:var(--muted)}
.chat-head .st.on{color:#22c55e}
.msgs{flex:1;overflow-y:auto;padding:12px 12px 6px;display:flex;flex-direction:column;gap:6px;-webkit-overflow-scrolling:touch}
.msg{max-width:78%;padding:9px 12px;border-radius:16px;font-size:15px;line-height:1.35;word-wrap:break-word;white-space:pre-wrap;position:relative;animation:pop .15s ease}
.msg.them{align-self:flex-start;background:var(--card);border-bottom-left-radius:6px}
.msg.me{align-self:flex-end;background:linear-gradient(135deg,#7c3aed,#c026d3);color:#fff;border-bottom-right-radius:6px}
.msg .tm{display:inline-flex;align-items:center;gap:4px;float:right;font-size:10.5px;opacity:.7;margin:6px -2px -2px 10px;line-height:1;white-space:nowrap}
.msg .tm em{font-style:normal;opacity:.85}
.msg .tk{display:inline-flex;align-items:center;color:currentColor;opacity:.75}
.msg .tk svg{display:block}
.msg .tk.seen{color:#7dd3fc;opacity:1}
.msg.them .tm{margin-left:10px}
.msg.contact{border:1px dashed rgba(255,255,255,.35)}
.msg.contact a{color:inherit;font-weight:700;text-decoration:underline}
.msgs .sys{align-self:center;font-size:12px;color:var(--muted);text-align:center;padding:6px 10px;max-width:90%}
.chat-input{display:flex;gap:8px;align-items:flex-end;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--border,rgba(255,255,255,.08));background:var(--bg)}
.chat-input textarea{flex:1;resize:none;max-height:110px;min-height:42px;border-radius:21px;padding:10px 14px;font:inherit;font-size:15px;background:var(--card);color:var(--text);border:1px solid transparent;outline:none}
.chat-input textarea:focus{border-color:#7c3aed}
.chat-input .send,.chat-input .att{width:42px;height:42px;border-radius:50%;border:0;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.chat-input .send{background:linear-gradient(135deg,#7c3aed,#ec4899);color:#fff}
.chat-input .att{background:var(--card);color:var(--text)}
@keyframes pop{from{transform:scale(.96);opacity:.5}to{transform:none;opacity:1}}

/* first message (intro) */
.act.msg{background:linear-gradient(135deg,#0ea5e9,#6366f1);color:#fff;font-size:20px}
.stamp.intro{left:50%;top:auto;bottom:40%;transform:translateX(-50%) rotate(0);color:#38bdf8;border-color:#38bdf8;font-size:26px}
.intro-card{display:flex;gap:12px;padding:12px;border-radius:18px;background:var(--card);margin-bottom:10px;align-items:flex-start}
.intro-card .avatar{width:56px;height:56px;border-radius:16px;flex:none;background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;font-size:26px;background-color:var(--bg2)}
.intro-card .nm{font-weight:700}
.intro-card .txt{margin:4px 0 8px;font-size:14px;line-height:1.35;background:var(--bg2);padding:8px 10px;border-radius:12px;border-bottom-left-radius:4px;white-space:pre-wrap;word-break:break-word}
.intro-card .row{gap:8px}
.intro-card .btn.xs{padding:8px 12px}
.sec-h{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px}
.sec-h h2{margin:0;font-size:17px}
.sec-h .cnt{font-size:12px;color:var(--muted)}
.intro-modal textarea{min-height:96px}
.intro-modal .hint{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;margin-top:6px}

/* chat media */
.msg.media{padding:4px;max-width:70%;background:var(--card)}
.msg.media.me{background:var(--card)}
.msg.media img,.msg.media video{display:block;width:100%;max-height:320px;object-fit:cover;border-radius:13px;background:#000}
.msg.media .tm{position:absolute;right:9px;bottom:9px;float:none;background:rgba(0,0,0,.42);color:#fff;padding:3px 7px;border-radius:10px;opacity:1;margin:0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.msg.media .tk{color:#fff}
.msg.media .tk.seen{color:#7dd3fc}
.msg.media.up{width:140px;height:140px;display:flex;align-items:center;justify-content:center}
.modal-card.viewer-card{padding:0;background:transparent;box-shadow:none;max-width:100vw}
.modal-card.viewer-card .grab{display:none}
.viewer img{display:block;max-width:100vw;max-height:90vh;margin:0 auto;border-radius:12px}
/* premium card */
.dcard.prem{box-shadow:0 0 0 2px #fbbf24,0 12px 40px rgba(251,191,36,.25)}
.pill.ptag{position:absolute;top:14px;left:14px;z-index:4}
.dcard .btag{top:14px;right:56px;left:auto}

/* edit bar, message menu, media preview, captions */
.edit-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-top:1px solid var(--line);background:var(--bg2);font-size:13px}
.edit-bar .t{font-weight:700;color:var(--p2)}
.edit-bar .d{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70vw}
.edit-bar .x{font-size:18px;color:var(--muted);padding:4px 8px}
.msg{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.msg-menu .quote{background:var(--bg2);border-left:3px solid var(--p1);padding:8px 10px;border-radius:8px;font-size:14px;max-height:120px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.media-prev .prev{border-radius:14px;overflow:hidden;background:#000;margin:8px 0 12px;max-height:55vh;display:flex;align-items:center;justify-content:center}
.media-prev .prev img,.media-prev .prev video{max-width:100%;max-height:55vh;display:block}
.media-prev textarea{min-height:60px}
.msg.media.cap{padding-bottom:6px}
.msg.media .caption{padding:8px 10px 14px;font-size:15px;white-space:pre-wrap;word-break:break-word}
.msg.media.cap .tm{position:static;float:right;background:transparent;color:inherit;opacity:.7;padding:0;margin:-8px 8px 6px 10px;backdrop-filter:none;-webkit-backdrop-filter:none}
.msg.media.cap .tk{color:currentColor}
.msg.media.cap .tk.seen{color:#7dd3fc}

/* privacy: no save/copy, blur when app goes to background, watermark */
.screen.chat, .screen.chat *, .modal-card.viewer-card *, .tile, .dcard, .mrow .avatar, .intro-card .avatar, .gal { -webkit-touch-callout: none; -webkit-user-drag: none; user-select: none; -webkit-user-select: none; }
.msgs img, .msgs video, .viewer img, .dcard .img, .tile .img, .gal .img { pointer-events: auto; -webkit-user-drag: none; }
#app.privacy-blur, .modal:not(.hidden).privacy-blur { filter: blur(22px); transition: filter .15s; }
.wm { position: absolute; inset: 0; pointer-events: none; z-index: 1; overflow: hidden; opacity: .07; font-weight: 800; font-size: 13px; line-height: 64px; letter-spacing: 2px; white-space: nowrap; transform: rotate(-24deg) scale(1.6); transform-origin: center; color: var(--text); }
.msgs { position: relative; }
.msgs .msg { position: relative; z-index: 2; }
.viewer { position: relative; }
.viewer .wm { opacity: .12; color: #fff; }

/* close / back controls everywhere */
.modal-card{position:relative}
.mclose{position:absolute;top:12px;right:14px;width:34px;height:34px;border-radius:50%;background:var(--bg2);color:var(--muted);font-size:15px;display:flex;align-items:center;justify-content:center;z-index:5;border:1px solid var(--line)}
.mclose:active{transform:scale(.92)}
.modal-card.viewer-card .mclose{background:rgba(0,0,0,.5);color:#fff;border-color:transparent;top:14px;right:14px}
.chat-head .back{width:36px;height:36px;border-radius:50%;font-size:30px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--text);background:var(--bg2);margin-right:2px;padding-bottom:3px}
.back-inline{font-size:14px;font-weight:700;color:var(--p2);padding:6px 10px 6px 4px;margin-right:auto}
.reg-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* protected media card (media itself is delivered via the bot) */
.msg.mcard{max-width:82%;padding:10px 12px 8px}
.msg.mcard .mc-top{display:flex;gap:10px;align-items:center}
.msg.mcard .mc-ic{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.msg.mcard.them .mc-ic{background:var(--bg2)}
.msg.mcard .mc-t{font-weight:700}
.msg.mcard .mc-s{font-size:11.5px;opacity:.8;margin-top:2px;line-height:1.3}
.msg.mcard .caption{margin-top:8px;font-size:15px;white-space:pre-wrap;word-break:break-word}
.msg.mcard .row{margin-top:10px;gap:8px}
.msg.mcard .btn.xs{padding:8px 10px;font-size:12.5px}

/* chat: keep short conversations pinned to the bottom (Telegram-like) */
.msgs .msp { flex: 1 1 auto; min-height: 0; }
/* media send mode chooser */
.mp-modes { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.mp-mode { text-align: left; width: 100%; padding: 12px 14px; border-radius: 16px; background: var(--bg2); border: 1.5px solid var(--line); transition: .15s; }
.mp-mode.on { border-color: var(--p1); background: var(--grad-soft); }
.mp-mode .mm-h { display: flex; align-items: center; gap: 8px; }
.mp-mode .mm-ic { font-size: 18px; }
.mp-mode .mm-t { font-weight: 700; font-size: 15px; }
.mp-mode .mm-tag { margin-left: auto; font-size: 10.5px; font-weight: 800; letter-spacing: .5px; padding: 3px 8px; border-radius: 999px; background: rgba(34,197,94,.16); color: var(--green); }
.mp-mode .mm-tag.alt { background: rgba(124,58,237,.18); color: var(--p2); }
.mp-mode .mm-d { font-size: 12.5px; line-height: 1.4; color: var(--muted); margin-top: 6px; }
.mp-mode.on .mm-d { color: var(--text); opacity: .85; }
