/* Generated file — do not edit directly. Run npm run build:css. */
/* source: webapp/css/src/00-tokens.css */
/* Salon Nocturn — canonical design tokens. This is the sole root owner. */
:root {
    /* ═══ TYPOGRAPHY ═══ */

    /* ─── Sizes ─── */
    --yd-text-xs:11px;
    --yd-text-sm:13px;
    --yd-text-base:15px;
    --yd-text-md:17px;
    --yd-text-lg:20px;
    --yd-text-xl:24px;
    --yd-text-2xl:30px;
    --yd-text-3xl:38px;

    /* ─── Weights ─── */
    --yd-weight-normal:400;
    --yd-weight-medium:500;
    --yd-weight-semibold:600;
    --yd-weight-bold:700;
    --yd-weight-black:900;

    /* ─── Leading ─── */
    --yd-leading-tight:1.2;
    --yd-leading-normal:1.45;
    --yd-leading-relaxed:1.6;

    /* ─── Tracking ─── */
    --yd-tracking-tight:-0.01em;
    --yd-tracking-normal:0;
    --yd-tracking-wide:0.02em;
    --yd-tracking-caps:0.06em;

    /* ─── Font Family ─── */
    --yd-font:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;

    /* ═══ SPACING ═══ */

    /* ─── Scale ─── */
    --yd-space-1:4px;
    --yd-space-2:8px;
    --yd-space-3:12px;
    --yd-space-4:16px;
    --yd-space-5:20px;
    --yd-space-6:24px;
    --yd-space-8:32px;
    --yd-space-10:40px;
    --yd-space-12:48px;
    --yd-space-16:64px;
    --yd-space-20:80px;

    /* ─── Semantic Aliases ─── */
    --yd-space-screen-x:16px;
    --yd-space-section:24px;
    --yd-space-card-padding:16px;

    /* ═══ COLORS ═══ */

    /* ─── Brand: Burgundy ─── */
    --yd-burgundy-900:#4A1525;
    --yd-burgundy-700:#7D2F41;
    --yd-burgundy-500:#A9435B;
    --yd-burgundy-300:#D4899A;
    --yd-burgundy-100:#F2D5DC;

    /* ─── Brand: Champagne ─── */
    --yd-champagne-900:#5C4820;
    --yd-champagne-700:#9C7B3A;
    --yd-champagne-500:#C9A86A;
    --yd-champagne-300:#E8D4A8;
    --yd-champagne-100:#F8F0DE;

    /* ─── Brand: Rose ─── */
    --yd-rose-900:#6B2A3A;
    --yd-rose-700:#B84A60;
    --yd-rose-500:#D96B82;
    --yd-rose-300:#F2A3B3;
    --yd-rose-100:#FCE4EA;

    /* ─── Neutral Surface Scale ─── */
    --yd-neutral-950:#0B0B10;
    --yd-neutral-900:#141319;
    --yd-neutral-800:#1D1B22;
    --yd-neutral-700:#24222B;
    --yd-neutral-600:#3A3643;
    --yd-neutral-400:#6B6578;
    --yd-neutral-200:#AAA3A1;
    --yd-neutral-50:#F4EFE8;

    /* ─── Semantic Colors ─── */
    --yd-bg:#0B0B10;
    --yd-surface:#141319;
    --yd-raised:#1D1B22;
    --yd-elevated:#24222B;
    --yd-ivory:#F4EFE8;
    --yd-muted:#AAA3A1;
    --yd-burgundy:#A9435B;
    --yd-burgundy-dark:#7D2F41;
    --yd-rose:#D96B82;
    --yd-rose-soft:#F2A3B3;
    --yd-champagne:#C9A86A;
    --yd-champagne-light:#E8D4A8;
    --yd-bg-sheet:#15131A;
    --yd-card-inner:#1C1924;
    --yd-border-subtle:rgba(255,255,255,.06);
    --yd-surface-glass:rgba(255,255,255,.08);
    --yd-sage:#789B8A;
    --yd-emerald:#4EAF82;
    --yd-line:rgba(255,255,255,.08);
    --yd-line-gold:rgba(201,168,106,.24);
    --yd-glass:rgba(20,19,25,.75);
    --yd-glass-raised:rgba(29,27,34,.85);
    --yd-glass-blur:blur(16px);
    --yd-motion:220ms cubic-bezier(.2,.8,.2,1);
    --yd-motion-bounce:320ms cubic-bezier(.34,1.56,.64,1);

    /* ═══ SHADOWS & ELEVATION ═══ */

    /* ─── Elevation ─── */
    --yd-shadow-xs:0 2px 8px rgba(0,0,0,.2);
    --yd-shadow-sm:0 4px 16px rgba(0,0,0,.3);
    --yd-shadow-md:0 12px 36px rgba(0,0,0,.4);
    --yd-shadow-lg:0 24px 64px rgba(0,0,0,.5);
    --yd-shadow-xl:0 32px 80px rgba(0,0,0,.6);
    --yd-shadow-inset:inset 0 2px 6px rgba(0,0,0,.3);

    /* ─── Glows ─── */
    --yd-glow-accent:0 0 28px rgba(169,67,91,.28);
    --yd-glow-gold:0 0 32px rgba(201,168,106,.22);
    --yd-glow-success:0 0 24px rgba(120,155,138,.2);

    /* ═══ MOTION ═══ */

    /* ─── Durations ─── */
    --yd-duration-fast:120ms;
    --yd-duration-base:220ms;
    --yd-duration-slow:380ms;
    --yd-duration-dramatic:600ms;

    /* ─── Easings ─── */
    --yd-ease-out:cubic-bezier(.2,.8,.2,1);
    --yd-ease-bounce:cubic-bezier(.34,1.56,.64,1);
    --yd-ease-spring:cubic-bezier(.175,.885,.32,1.275);
    --yd-ease-in-out:cubic-bezier(.4,0,.2,1);

    /* ─── Composites ─── */
    --yd-motion-fast:120ms cubic-bezier(.2,.8,.2,1);
    --yd-motion-base:220ms cubic-bezier(.2,.8,.2,1);
    --yd-motion-bounce:380ms cubic-bezier(.34,1.56,.64,1);

    /* ═══ Z-INDEX ═══ */

    /* ─── Scale ─── */
    --yd-z-base:1;
    --yd-z-raised:10;
    --yd-z-sticky:50;
    --yd-z-hud:90;
    --yd-z-dropdown:100;
    --yd-z-sheet:110;
    --yd-z-modal:120;
    --yd-z-toast:130;
    --yd-z-overlay:500;
    --yd-z-max:9999;

    /* ═══ GLASS EFFECTS ═══ */

    /* ─── Backgrounds ─── */
    /* Note: pair with backdrop-filter: blur(8px|16px|24px) respectively */
    --yd-glass-light:rgba(20,19,25,.6);
    --yd-glass-medium:rgba(20,19,25,.75);
    --yd-glass-heavy:rgba(14,13,18,.88);

    /* ─── Borders ─── */
    --yd-glass-border:rgba(255,255,255,.08);
    --yd-glass-border-gold:rgba(201,168,106,.24);

    /* ─── Tints (alpha overlays for interactive states) ─── */
    --yd-tint-burgundy-subtle:rgba(169,67,91,.08);
    --yd-tint-burgundy-light:rgba(169,67,91,.15);
    --yd-tint-burgundy-medium:rgba(169,67,91,.22);
    --yd-tint-burgundy-strong:rgba(169,67,91,.35);
    --yd-tint-champagne-subtle:rgba(201,168,106,.08);
    --yd-tint-champagne-light:rgba(201,168,106,.12);
    --yd-tint-champagne-medium:rgba(201,168,106,.22);
    --yd-tint-rose-focus:rgba(217,107,130,.15);
    --yd-tint-rose-light:rgba(217,107,130,.28);
    --yd-tint-rose-drop:rgba(217,107,130,.55);
    --yd-tint-emerald-light:rgba(78,175,130,.12);
    --yd-tint-emerald-border:rgba(78,175,130,.25);
    --yd-tint-emerald-glow:rgba(78,175,130,.5);
    --yd-tint-white-faint:rgba(255,255,255,.05);
    --yd-tint-white-subtle:rgba(255,255,255,.06);
    --yd-tint-white-light:rgba(255,255,255,.08);
    --yd-tint-white-medium:rgba(255,255,255,.12);
    --yd-tint-white-strong:rgba(255,255,255,.16);
    --yd-tint-white-border:rgba(255,255,255,.2);
    --yd-tint-white-border-strong:rgba(255,255,255,.45);
    --yd-tint-black-light:rgba(0,0,0,.3);
    --yd-tint-black-medium:rgba(0,0,0,.35);
    --yd-tint-black-heavy:rgba(0,0,0,.45);
    --yd-tint-sage-light:rgba(120,155,138,.15);
    --yd-tint-sage-border:rgba(120,155,138,.3);

    /* ─── Semantic: Backdrop ─── */
    --yd-backdrop:rgba(8,8,12,.78);

    /* ─── Semantic: Chat Error ─── */
    --yd-error-light:#ffd9d9;
    --yd-error-bright:#FF6B6B;

    /* ─── Semantic: Chat media shield ─── */
    --yd-shield-from:#766d68;
    --yd-shield-to:#423a3a;
    --yd-media-placeholder:#eee7e2;
    --yd-media-placeholder-text:#765f61;

    /* Compatibility aliases: existing feature selectors retain their behavior. */
    --bg-primary:var(--yd-bg);
    --bg-secondary:var(--yd-surface);
    --bg-card:var(--yd-raised);
    --bg-glass:var(--yd-glass);
    --accent:var(--yd-burgundy);
    --accent-light:var(--yd-rose);
    --accent-glow:rgba(169,67,91,.28);
    --energy:var(--yd-champagne);
    --energy-glow:rgba(201,168,106,.28);
    --xp:var(--yd-champagne);
    --xp-glow:rgba(201,168,106,.28);
    --success:var(--yd-sage);
    --danger:var(--yd-rose);
    --text-primary:var(--yd-ivory);
    --text-secondary:var(--yd-muted);
    --text-dim:#827B7A;
    --border:var(--yd-line);
    --shadow:0 12px 36px rgba(0,0,0,.45);
    --radius:18px;
    --radius-sm:10px;
    --nav-height:64px;
    --hud-height:52px;

    --color-bg:var(--yd-bg);
    --color-surface:var(--yd-surface);
    --color-surface-raised:var(--yd-raised);
    --color-accent:var(--yd-burgundy);
    --color-accent-soft:var(--yd-rose);
    --color-premium:var(--yd-champagne);
    --color-premium-soft:var(--yd-champagne-light);
    --color-success:var(--yd-sage);
    --color-danger:var(--yd-rose);
    --color-muted:var(--yd-muted);
    --color-line:var(--yd-line);
    --radius-card:24px;
    --radius-pill:999px;
    --shadow-card:0 24px 64px rgba(0,0,0,.5);
    --shadow-glow:0 0 36px rgba(169,67,91,.25);
    --shadow-gold-glow:0 0 32px rgba(201,168,106,.22);
}

/* source: webapp/css/src/01-reset.css */
/* Small, predictable baseline for Telegram's mobile webview. */
*, *::before, *::after { box-sizing: border-box; }
html { min-width: 320px; background: var(--yd-bg); }
body, h1, h2, h3, p { margin: 0; }
button, input, textarea { font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
img { display: block; max-width: 100%; }

/* source: webapp/css/src/10-foundation.css */
body {
    min-height: 100vh;
    overflow-x: hidden;
    color: var(--yd-ivory);
    background: radial-gradient(circle at 50% 0%, rgba(169, 67, 91, 0.12) 0%, rgba(11, 11, 16, 0.98) 45%), var(--yd-bg);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

button, input, textarea { color: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--yd-champagne);
    outline-offset: 3px;
}

/* source: webapp/css/src/20-shell.css */
.screen {
    min-height: 100vh;
    box-sizing: border-box;
    padding-top: calc(var(--hud-height) + env(safe-area-inset-top, 0px) + 8px);
    padding-bottom: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px) + 16px);
}

.hud {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: var(--yd-z-hud);
    height: var(--hud-height);
    padding: calc(env(safe-area-inset-top, 0px) + var(--yd-space-2)) var(--yd-space-4) var(--yd-space-2);
    background: rgba(14, 13, 18, 0.92);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(201, 168, 106, 0.15);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: var(--yd-z-hud);
    height: var(--nav-height);
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + var(--yd-space-1));
    background: rgba(14, 13, 18, 0.94);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-top: 1px solid rgba(201, 168, 106, 0.18);
    display: flex;
    align-items: center;
    justify-content: space-around;
}

/* source: webapp/css/src/30-components.css */
/* ═══════════════════════════════════════════════════════════════════════════
   ═ BUTTONS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base ─── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    font-family: var(--yd-font);
    font-weight: var(--yd-weight-semibold);
    font-size: var(--yd-text-base);
    line-height: 1;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    min-height: 44px;
    padding: var(--yd-space-2) var(--yd-space-4);
    text-decoration: none;
    white-space: nowrap;
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

/* ─── Variants ─── */
.btn-primary {
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    color: var(--yd-ivory);
    box-shadow: var(--yd-shadow-xs);
}

.btn-secondary {
    background: var(--yd-glass-medium);
    border: 1px solid var(--yd-glass-border);
    color: var(--yd-ivory);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.btn-ghost {
    background: transparent;
    color: var(--yd-ivory);
}

.btn-destructive {
    background: var(--yd-rose);
    color: var(--yd-ivory);
    box-shadow: var(--yd-glow-accent);
}

.btn-gold {
    background: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne));
    color: var(--yd-neutral-950);
    box-shadow: var(--yd-glow-gold);
}

/* ─── Sizes ─── */
.btn-sm {
    min-height: 32px;
    height: 32px;
    padding: 0 var(--yd-space-3);
    font-size: var(--yd-text-sm);
}

.btn-md {
    min-height: 40px;
    height: 40px;
    padding: 0 var(--yd-space-4);
    font-size: var(--yd-text-base);
}

.btn-lg {
    min-height: 48px;
    height: 48px;
    padding: 0 var(--yd-space-5);
    font-size: var(--yd-text-md);
}

.btn-xl {
    min-height: 56px;
    height: 56px;
    padding: 0 var(--yd-space-6);
    font-size: var(--yd-text-lg);
}

/* ─── States ─── */
.btn:active {
    transform: scale(.97);
}

.btn.is-disabled,
.btn[disabled] {
    opacity: .45;
    pointer-events: none;
    cursor: not-allowed;
}

.btn.is-loading {
    opacity: .7;
    pointer-events: none;
    position: relative;
}

.btn.is-loading::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 16px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: yd-btn-spin var(--yd-duration-slow) linear infinite;
}

@keyframes yd-btn-spin {
    to { transform: rotate(360deg); }
}

/* ─── Icon Button ─── */
.btn-icon {
    width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    border-radius: 50%;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ CARDS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base ─── */
.card-base {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    overflow: hidden;
}

/* ─── Variants ─── */
.card-raised {
    background: var(--yd-elevated);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-shadow-sm);
    overflow: hidden;
}

.card-glass {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    overflow: hidden;
}

.card-accent {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    overflow: hidden;
}

/* ─── Interactive ─── */
.card-interactive {
    transition: border-color var(--yd-motion-fast), transform var(--yd-motion-fast);
}

.card-interactive:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

/* ─── Structure ─── */
.card-header {
    padding: var(--yd-space-card-padding) var(--yd-space-card-padding) 0;
}

.card-body {
    padding: var(--yd-space-card-padding);
}

.card-footer {
    padding: 0 var(--yd-space-card-padding) var(--yd-space-card-padding);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ INPUTS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base Input ─── */
.input {
    display: block;
    width: 100%;
    height: 44px;
    padding: var(--yd-space-2) var(--yd-space-3);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    line-height: var(--yd-leading-normal);
    outline: none;
    transition: border-color var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
    -webkit-appearance: none;
    appearance: none;
}

.input::placeholder {
    color: var(--yd-neutral-400);
}

/* ─── Focus State ─── */
.input:focus {
    border-color: var(--yd-rose);
    box-shadow: 0 0 0 3px var(--yd-tint-rose-focus);
}

/* ─── Error State ─── */
.input-error {
    border-color: var(--yd-rose);
}

.input-error-text {
    margin-top: var(--yd-space-1);
    font-size: var(--yd-text-sm);
    color: var(--yd-rose);
}

/* ─── Disabled State ─── */
.input.is-disabled,
.input[disabled] {
    opacity: .5;
    pointer-events: none;
    cursor: not-allowed;
}

/* ─── Toggle (pill switch) ─── */
.toggle {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    background: var(--yd-neutral-600);
    border: none;
    border-radius: var(--radius-pill);
    cursor: pointer;
    transition: background var(--yd-motion-fast);
    -webkit-tap-highlight-color: transparent;
}

.toggle::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 20px;
    height: 20px;
    background: var(--yd-ivory);
    border-radius: 50%;
    transition: transform var(--yd-motion-fast);
    box-shadow: var(--yd-shadow-xs);
}

.toggle.is-active {
    background: var(--yd-champagne);
}

.toggle.is-active::after {
    transform: translateX(20px);
}

/* ─── Select ─── */
.select {
    display: block;
    width: 100%;
    height: 44px;
    padding: var(--yd-space-2) var(--yd-space-8) var(--yd-space-2) var(--yd-space-3);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    line-height: var(--yd-leading-normal);
    outline: none;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23C9A86A' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--yd-space-3) center;
    transition: border-color var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

.select:focus {
    border-color: var(--yd-rose);
    box-shadow: 0 0 0 3px var(--yd-tint-rose-focus);
}

.select.is-disabled,
.select[disabled] {
    opacity: .5;
    pointer-events: none;
    cursor: not-allowed;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ BADGES
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base ─── */
[class*="badge-"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-pill);
    font-family: var(--yd-font);
    font-weight: var(--yd-weight-semibold);
    white-space: nowrap;
}

/* ─── Variants ─── */
.badge-default {
    background: var(--yd-neutral-600);
    color: var(--yd-ivory);
}

.badge-accent {
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    color: #ffffff;
}

.badge-gold {
    background: var(--yd-champagne);
    color: var(--yd-neutral-950);
}

.badge-success {
    background: var(--yd-sage);
    color: var(--yd-neutral-950);
}

.badge-outline {
    background: transparent;
    border: 1px solid var(--yd-line-gold);
    color: var(--yd-champagne);
}

/* ─── Sizes ─── */
.badge-sm {
    padding: 2px 6px;
    font-size: var(--yd-text-xs);
}

.badge-md {
    padding: 4px 10px;
    font-size: var(--yd-text-sm);
}

/* ─── Count Utility ─── */
.badge-count {
    font-variant-numeric: tabular-nums;
}

/* ─── Chip ─── */
.chip {
    display: inline-flex;
    align-items: center;
    gap: var(--yd-space-1);
    padding: var(--yd-space-1) var(--yd-space-3);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    color: var(--yd-champagne-light);
    font-size: var(--yd-text-sm);
    font-family: var(--yd-font);
    white-space: nowrap;
}

.chip-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    border: none;
    background: transparent;
    color: inherit;
    opacity: .6;
    cursor: pointer;
    padding: 0;
    font-size: 12px;
    line-height: 1;
    transition: opacity var(--yd-motion-fast);
}

.chip-close:active {
    opacity: 1;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ LEGACY BUTTON TRANSITIONS (compatibility)
   ═══════════════════════════════════════════════════════════════════════════ */

.btn, .action-btn, .nav-tab {
    transition: transform var(--yd-motion), background var(--yd-motion), box-shadow var(--yd-motion);
}

.btn-primary:active, .action-btn:active, .nav-tab:active { transform: scale(.97); }

/* Private chat-media composer and shield. */
.chat-photo-trigger {
    border: 0;
    width: 42px;
    min-width: 42px;
    height: 42px;
    border-radius: 50%;
    color: var(--yd-burgundy);
    background: var(--yd-raised);
    font-size: 22px;
}
.chat-photo-composer { width: 100%; }
.chat-photo-source-sheet, .chat-photo-preview {
    margin: var(--yd-space-2) var(--yd-space-3);
    padding: var(--yd-space-4);
    border: 1px solid var(--yd-tint-burgundy-light);
    border-radius: var(--radius);
    background: var(--yd-surface);
    box-shadow: var(--yd-shadow-sm);
}
.chat-photo-source-sheet p { margin: 0 0 var(--yd-space-3); color: var(--yd-ivory); }
.chat-photo-source-sheet button, .chat-photo-preview-actions button {
    min-height: 40px;
    margin: var(--yd-space-1) var(--yd-space-2) 0 0;
    padding: 0 var(--yd-space-3);
    border: 0;
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    background: var(--yd-burgundy);
}
.chat-photo-preview img { display: block; width: 100%; max-height: 220px; object-fit: cover; border-radius: var(--radius-sm); }
.chat-photo-preview textarea { width: 100%; min-height: 50px; margin-top: var(--yd-space-2); box-sizing: border-box; border: 1px solid var(--yd-tint-burgundy-medium); border-radius: var(--radius-sm); padding: var(--yd-space-2); font: inherit; }
.chat-photo-error { margin: var(--yd-space-1) var(--yd-space-4) var(--yd-space-3); color: var(--yd-rose); font-size: var(--yd-text-sm); }

.chat-media { position: relative; overflow: hidden; min-width: 190px; max-width: min(70vw, 300px); margin: 0; border-radius: var(--radius); background: var(--yd-media-placeholder); }
.chat-media img { display: block; width: 100%; min-height: 160px; max-height: 330px; object-fit: cover; }
.chat-media-loading, .chat-media-caption { padding: var(--yd-space-2) var(--yd-space-3); color: var(--yd-ivory); font-size: var(--yd-text-sm); }
.chat-media-caption { white-space: pre-wrap; overflow-wrap: anywhere; }
.chat-media--shielded { display: grid; min-height: 190px; place-content: center; gap: var(--yd-space-3); padding: var(--yd-space-5); text-align: center; background: linear-gradient(140deg, var(--yd-shield-from), var(--yd-shield-to)); color: var(--yd-ivory); }
.chat-media--shielded::before { content: ''; position: absolute; inset: -18px; background: radial-gradient(circle, var(--yd-tint-white-strong), transparent 58%); filter: blur(26px); }
.chat-media-shield-copy, .chat-media--shielded button { position: relative; z-index: 1; }
.chat-media--shielded button { min-height: 38px; border: 1px solid var(--yd-tint-white-border-strong); border-radius: var(--radius-sm); background: var(--yd-tint-white-medium); color: #fff; }
.chat-media-placeholder { min-width: 190px; padding: var(--yd-space-10) var(--yd-space-5); border-radius: var(--radius); color: var(--yd-media-placeholder-text); background: var(--yd-media-placeholder); text-align: center; }


/* ═ SHEETS ═ */
/* PERF NOTE (Req 36.3): .sheet uses both backdrop-filter (on backdrop) and
   transform: translateY() on the sheet panel. This is acceptable — the blur
   lives on the static .sheet-backdrop, while translateY animates the panel
   itself (no blur on the animated element). One-shot open/close transition. */

.sheet-backdrop {
    position: fixed;
    inset: 0;
    background: var(--yd-backdrop);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: var(--yd-z-sheet);
    opacity: 0;
    transition: opacity var(--yd-motion-base);
    pointer-events: none;
}

.sheet-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
}

.sheet {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--yd-surface);
    border-radius: 30px 30px 0 0;
    border-top: 1px solid var(--yd-line-gold);
    box-shadow: var(--yd-shadow-lg);
    z-index: var(--yd-z-sheet);
    transform: translateY(100%);
    transition: transform var(--yd-duration-slow) var(--yd-ease-out);
    padding: var(--yd-space-4) var(--yd-space-screen-x) var(--yd-space-6);
}

.sheet.is-open {
    transform: translateY(0);
}

.sheet.is-closing {
    transition-duration: var(--yd-duration-base);
}

.sheet-handle {
    width: 40px;
    height: 4px;
    border-radius: var(--radius-pill);
    background: var(--yd-neutral-600);
    margin: 0 auto var(--yd-space-4);
}

/* ═ MODALS ═ */
/* PERF NOTE (Req 36.3): .modal has both backdrop-filter AND transform (scale).
   This is a conscious choice — modals animate once on open/close (not
   continuously). The blur re-composite cost is acceptable for a single
   transition. On low-end devices the duration is suppressed by
   reduced-motion handling in 99-accessibility.css. */

.modal-backdrop {
    position: fixed;
    inset: 0;
    background: var(--yd-backdrop);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: var(--yd-z-modal);
    opacity: 0;
    transition: opacity var(--yd-motion-base);
    pointer-events: none;
}

.modal-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
}

.modal {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(.92);
    opacity: 0;
    background: var(--yd-glass-heavy);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    z-index: var(--yd-z-modal);
    padding: var(--yd-space-6);
    max-width: calc(100vw - var(--yd-space-8));
    transition: transform var(--yd-duration-slow) var(--yd-ease-out),
                opacity var(--yd-duration-slow) var(--yd-ease-out);
    pointer-events: none;
}

.modal.is-open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
}

.modal-icon {
    display: flex;
    justify-content: center;
    margin-bottom: var(--yd-space-4);
    font-size: 48px;
}

.modal-title {
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    text-align: center;
    margin-bottom: var(--yd-space-2);
}

.modal-body {
    font-size: var(--yd-text-base);
    color: var(--yd-muted);
    text-align: center;
    margin-bottom: var(--yd-space-5);
}

.modal-actions {
    display: flex;
    gap: var(--yd-space-3);
    justify-content: center;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ LIST ITEMS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base ─── */
.list-item {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-3) var(--yd-space-screen-x);
    border-bottom: 1px solid var(--yd-line);
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

/* ─── Active State ─── */
.list-item:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

/* ─── Avatar ─── */
.list-item-avatar {
    position: relative;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
}

.list-item-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.list-item-avatar-lg {
    width: 54px;
    height: 54px;
}

/* ─── Content ─── */
.list-item-content {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.list-item-title {
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.list-item-subtitle {
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ─── Action ─── */
.list-item-action {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

/* ─── Online Indicator ─── */
.list-item-online {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--yd-sage);
    border: 2px solid var(--yd-surface);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ PROGRESS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Base ─── */
.progress-bar {
    position: relative;
    width: 100%;
    height: 8px;
    border-radius: var(--radius-pill);
    background: var(--yd-tint-white-light);
    overflow: hidden;
}

.progress-bar-fill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: var(--radius-pill);
    /* PERF NOTE (Req 36.1): width transition is kept here rather than scaleX()
       because progress fill uses gradient backgrounds that distort under scale.
       This triggers layout but is infrequent (state changes only, not per-frame)
       and the element is small (≤12px tall). Acceptable tradeoff. */
    transition: width var(--yd-motion-base);
}

/* ─── Color Variants ─── */
.progress-gold .progress-bar-fill {
    background: linear-gradient(90deg, var(--yd-champagne-700), var(--yd-champagne));
    box-shadow: var(--yd-glow-gold);
}

.progress-accent .progress-bar-fill {
    background: linear-gradient(90deg, var(--yd-burgundy), var(--yd-rose));
    box-shadow: var(--yd-glow-accent);
}

.progress-sage .progress-bar-fill {
    background: var(--yd-sage);
}

/* ─── Size Variants ─── */
.progress-sm {
    height: 4px;
}

.progress-md {
    height: 8px;
}

.progress-lg {
    height: 12px;
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ TOASTS
   ═══════════════════════════════════════════════════════════════════════════ */

/* Auto-dismiss: JS should remove .is-visible after 3s, add .is-leaving for fade-out */

/* ─── Base ─── */
.toast {
    position: fixed;
    top: calc(var(--hud-height) + var(--yd-space-3));
    left: 50%;
    transform: translateX(-50%) translateY(-20px);
    opacity: 0;
    background: var(--yd-glass-heavy);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    padding: var(--yd-space-2) var(--yd-space-4);
    z-index: var(--yd-z-toast);
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-ivory);
    pointer-events: none;
    transition: transform var(--yd-duration-slow) var(--yd-ease-out), opacity var(--yd-duration-slow) var(--yd-ease-out);
}

/* ─── Visible State ─── */
.toast.is-visible {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
    pointer-events: auto;
}

/* ─── Leaving State ─── */
.toast.is-leaving {
    opacity: 0;
    transform: translateX(-50%) translateY(-10px);
    transition-duration: var(--yd-duration-base);
}

/* ─── Variants ─── */
.toast-success {
    border-left: 3px solid var(--yd-sage);
}

.toast-error {
    border-left: 3px solid var(--yd-rose);
}

.toast-info {
    border-left: 3px solid var(--yd-champagne);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ LAYOUT
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Screen Layout ─── */
.screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

/* ─── Screen Header ─── */
.screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

.screen-header-title {
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

/* ─── Screen Content ─── */
.screen-content {
    flex: 1;
    overflow-y: auto;
    padding: 0 var(--yd-space-screen-x);
    -webkit-overflow-scrolling: touch;
}

/* ─── Screen Footer ─── */
.screen-footer {
    padding: var(--yd-space-3) var(--yd-space-screen-x) var(--yd-space-4);
    flex-shrink: 0;
}

/* ─── Eyebrow Utility ─── */
.eyebrow {
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    color: var(--yd-champagne);
}

/* ─── Skeleton Utility ─── */
.skeleton {
    background: linear-gradient(90deg, var(--yd-neutral-800, #1D1B22), var(--yd-neutral-700, #24222B), var(--yd-neutral-800, #1D1B22));
    background-size: 200% 100%;
    animation: yd-shimmer 1.5s linear infinite;
    border-radius: var(--radius-sm, 10px);
}

/* ─── Voice Draft Bar ─── */
.voice-draft-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: var(--yd-neutral-900, #1E1F24);
    border: 1px solid var(--yd-glass-border, rgba(255,255,255,0.1));
    border-radius: var(--radius-sm, 12px);
    margin: 6px 12px;
    animation: fadeIn 0.2s ease;
}

.voice-draft-discard {
    background: transparent;
    border: none;
    color: var(--yd-rose, #FF4B6E);
    cursor: pointer;
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    min-width: 44px;
    min-height: 44px;
}

.voice-draft-play {
    background: var(--yd-glass-medium, rgba(255,255,255,0.08));
    border: 1px solid var(--yd-glass-border, rgba(255,255,255,0.15));
    color: var(--yd-ivory, #FAF8F5);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.voice-draft-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.voice-draft-time {
    font-size: 13px;
    font-weight: 500;
    color: var(--yd-ivory, #FAF8F5);
    font-variant-numeric: tabular-nums;
}

.voice-draft-progress {
    height: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 2px;
    overflow: hidden;
    position: relative;
}

.voice-draft-progress-fill {
    height: 100%;
    width: 0%;
    background: var(--yd-rose, #FF4B6E);
    transition: width 0.1s linear;
}

.voice-draft-send {
    background: linear-gradient(135deg, var(--yd-burgundy, #7A1D36), var(--yd-rose, #FF4B6E));
    border: none;
    border-radius: 50%;
    color: #fff;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

/* source: webapp/css/src/40-screens.css */
@media (max-width: 360px) {
    .screen { padding-left: 10px; padding-right: 10px; }
    .hud { padding-left: 10px; padding-right: 10px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ STATE CARDS, AUTH GATE, DRAWER UNAVAILABLE
   ═══════════════════════════════════════════════════════════════════════════ */

.state-card {
    position: relative;
    width: min(100%, 420px);
    margin: 0 auto;
    padding: var(--yd-space-6);
    border: 1px solid rgba(201, 168, 106, .18);
    border-radius: 28px;
    background:
        radial-gradient(circle at top, rgba(201, 168, 106, .14), transparent 38%),
        linear-gradient(180deg, rgba(169, 67, 91, .2), rgba(20, 19, 25, .98) 34%);
    box-shadow:
        0 28px 70px rgba(0, 0, 0, .42),
        0 0 0 1px rgba(255, 255, 255, .04) inset;
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    color: var(--yd-ivory);
}

.state-card::before {
    content: '';
    position: absolute;
    inset: 1px;
    border-radius: inherit;
    background: linear-gradient(180deg, rgba(255, 255, 255, .06), transparent 32%);
    pointer-events: none;
}

.state-card > * {
    position: relative;
    z-index: 1;
}

.state-card--overlay {
    width: min(100%, 400px);
    padding-top: calc(var(--yd-space-6) + 10px);
    animation: yd-fade-in var(--yd-duration-base) var(--yd-ease-out);
}

[data-telegram-gate] {
    width: min(100%, 420px);
    padding: var(--yd-space-6);
    border: 1px solid rgba(201, 168, 106, .18);
    border-radius: 28px;
    background:
        radial-gradient(circle at top, rgba(201, 168, 106, .14), transparent 38%),
        linear-gradient(180deg, rgba(169, 67, 91, .2), rgba(20, 19, 25, .98) 34%);
    box-shadow:
        0 28px 70px rgba(0, 0, 0, .42),
        0 0 0 1px rgba(255, 255, 255, .04) inset;
}

[data-telegram-gate] .loading-title,
.drawer-unavailable-title {
    margin: var(--yd-space-3) 0 var(--yd-space-2);
    font-family: var(--yd-font);
    font-size: clamp(1.7rem, 4vw, 2.2rem);
    font-weight: var(--yd-weight-black);
    letter-spacing: var(--yd-tracking-tight);
    color: var(--yd-ivory);
}

[data-telegram-gate] .loading-text,
.drawer-unavailable-copy {
    margin: 0;
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
}

.drawer-unavailable-kicker {
    color: var(--yd-champagne);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    letter-spacing: var(--yd-tracking-caps);
    text-transform: uppercase;
}

.drawer-unavailable-overlay {
    position: fixed;
    inset: 0;
    z-index: 250;
    display: grid;
    place-items: center;
    padding: var(--yd-space-5);
}

.drawer-unavailable-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(7, 7, 10, .78);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.drawer-unavailable-surface {
    position: relative;
}

.drawer-unavailable-close {
    position: absolute;
    top: var(--yd-space-3);
    right: var(--yd-space-3);
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 50%;
    background: rgba(255, 255, 255, .05);
    color: var(--yd-ivory);
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast), background var(--yd-motion-fast);
}

.drawer-unavailable-close:hover,
.drawer-unavailable-close:focus-visible {
    border-color: var(--yd-champagne);
    background: rgba(201, 168, 106, .12);
}

.drawer-unavailable-close:active {
    transform: scale(.96);
}

.drawer-unavailable-action {
    width: 100%;
    margin-top: var(--yd-space-5);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Loading
   ═══════════════════════════════════════════════════════════════════════════
   Requirement 18: Premium loading experience with brand glow-pulse,
   champagne spinner, and token-compliant typography/spacing.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Screen Container ─── */
#screen-loading {
    background: var(--yd-bg);
}

/* ─── Loading Container ─── */
#screen-loading .loading-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 80vh;
    gap: var(--yd-space-5);
    padding: var(--yd-space-screen-x);
}

/* ─── Brand Symbol with Glow Pulse ─── */
#screen-loading .loading-heart {
    font-size: var(--yd-text-3xl);
    color: var(--yd-champagne);
    line-height: 1;
    animation: yd-glow-pulse 2s infinite;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
}

/* ─── Loading Text ─── */
#screen-loading .loading-text {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
    text-align: center;
    letter-spacing: var(--yd-tracking-normal);
    margin: 0;
}

/* ─── Champagne Spinner ─── */
#screen-loading .loading-spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--yd-line);
    border-top-color: var(--yd-champagne);
    border-radius: 50%;
    animation: yd-loading-spin var(--yd-duration-slow) linear infinite;
    box-shadow: var(--yd-glow-gold);
}

@keyframes yd-loading-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ─── Retry Button ───
   Uses .btn .btn-primary from 30-components.css.
   Only spacing override needed for loading context. */
#screen-loading .btn-primary {
    margin-top: var(--yd-space-4);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Gifts
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
#screen-gifts .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-gifts .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-gifts .screen-header-title {
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

/* ─── Gift Catalog Grid ─── */
.gifts-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--yd-space-3);
    padding: 0 var(--yd-space-screen-x);
}

/* ─── Gift Item Card ─── */
.gift-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-4);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--yd-space-2);
    text-align: center;
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

.gift-card:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

.gift-card.selected {
    border-color: var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
}

/* ─── Gift Icon ─── */
.gift-card-icon {
    font-size: 40px;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ─── Gift Name ─── */
.gift-card-name {
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

/* ─── Gift Price Badge ─── */
.gift-card-price {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-pill);
    font-family: var(--yd-font);
    font-weight: var(--yd-weight-semibold);
    white-space: nowrap;
    background: var(--yd-champagne);
    color: var(--yd-neutral-950);
    padding: 2px 6px;
    font-size: var(--yd-text-xs);
}

/* ─── Gift Purchase Button ─── */
.gift-card-buy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    font-family: var(--yd-font);
    font-weight: var(--yd-weight-semibold);
    font-size: var(--yd-text-sm);
    line-height: 1;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    min-height: 32px;
    height: 32px;
    padding: 0 var(--yd-space-3);
    background: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne));
    color: var(--yd-neutral-950);
    box-shadow: var(--yd-glow-gold);
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
    margin-top: var(--yd-space-1);
}

.gift-card-buy:active {
    transform: scale(.97);
}

.gift-card-buy[disabled] {
    opacity: .45;
    pointer-events: none;
    cursor: not-allowed;
}

/* ─── Received Gifts List ─── */
.gifts-received {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
    padding: 0 var(--yd-space-screen-x);
}

.gift-received-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-4);
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    gap: var(--yd-space-3);
}

.gift-received-card-icon {
    font-size: 40px;
    line-height: 1;
}

.gift-received-card-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.gift-received-card-sender {
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-ivory);
}

.gift-received-card-message {
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    font-style: italic;
}

.gift-received-card-meta {
    font-size: var(--yd-text-xs);
    color: var(--yd-neutral-400);
    margin-top: var(--yd-space-1);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Match
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
.match-celebration {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--yd-space-6) var(--yd-space-5);
    position: relative;
    background:
        radial-gradient(circle at 50% 40%, var(--yd-burgundy-900), transparent 60%),
        var(--yd-bg);
}

/* ─── Title ─── */
.match-title {
    font-size: var(--yd-text-3xl);
    font-weight: var(--yd-weight-black);
    letter-spacing: var(--yd-tracking-caps);
    line-height: var(--yd-leading-tight);
    text-transform: uppercase;
    background: linear-gradient(135deg, #fff, var(--yd-champagne-light), var(--yd-rose));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin: 0 0 var(--yd-space-6);
    text-align: center;
}

/* ─── Photo Circles ─── */
.match-photos {
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    margin: var(--yd-space-8) 0;
}

.match-photo {
    width: 108px;
    height: 108px;
    border-radius: 50%;
    border: 3px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
    overflow: hidden;
}

.match-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.match-heart {
    position: absolute;
    z-index: var(--yd-z-raised);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    border: 2px solid #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: var(--yd-text-lg);
    box-shadow: var(--yd-glow-accent);
}

/* ─── Action Buttons ─── */
.match-actions {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--yd-space-3);
    width: 100%;
    max-width: 300px;
    margin-top: var(--yd-space-6);
}

.match-actions .btn-primary {
    width: 100%;
}

.match-actions .btn-secondary {
    width: 100%;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Onboarding
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Container ─── */
.onboarding {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    max-width: 400px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-section);
    min-height: 100%;
}

/* ─── Progress Bar ─── */
/* Usage: .progress-bar.progress-gold.progress-sm inside .onboarding */
.onboarding .progress-bar {
    margin-bottom: var(--yd-space-4);
}

.onboarding-progress-label {
    margin: 0 0 var(--yd-space-2);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    letter-spacing: var(--yd-tracking-caps);
    text-transform: uppercase;
    color: var(--yd-champagne);
}

/* ─── Step Container ─── */
.onboarding-step {
    padding: var(--yd-space-5) var(--yd-space-4) var(--yd-space-6);
    animation: yd-fade-in var(--yd-duration-base) var(--yd-ease-out);
}

/* ─── Chapter Head ─── */
.onboarding-chapter-head {
    margin-bottom: var(--yd-space-4);
}

.onboarding-chapter-head h3,
.onboarding-step h3 {
    margin: 0;
    font-family: var(--yd-font);
    font-size: var(--yd-text-2xl);
    font-weight: var(--yd-weight-bold);
    line-height: var(--yd-leading-tight);
    color: var(--yd-ivory);
}

/* ─── Descriptions ─── */
.onboarding-step p,
.onboarding-intro,
.onboarding-helper,
.onboarding-location-state {
    font-size: var(--yd-text-base);
    line-height: var(--yd-leading-relaxed);
    color: var(--yd-muted);
    margin-bottom: var(--yd-space-5);
}

/* ─── Form Fields (extends .input base) ─── */
.onboarding-field {
    display: grid;
    gap: var(--yd-space-2);
    margin-top: var(--yd-space-4);
    color: var(--yd-ivory);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
}

.onboarding-field span {
    color: var(--yd-muted);
    font-weight: var(--yd-weight-medium);
}

.onboarding-field input,
.onboarding-field textarea,
.onboarding-step input,
.onboarding-step textarea {
    display: block;
    width: 100%;
    box-sizing: border-box;
    height: 44px;
    padding: var(--yd-space-2) var(--yd-space-3);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    line-height: var(--yd-leading-normal);
    outline: none;
    transition: border-color var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
    -webkit-appearance: none;
    appearance: none;
}

.onboarding-field textarea,
.onboarding-step textarea {
    height: auto;
    min-height: 94px;
    resize: vertical;
    padding: var(--yd-space-3);
}

.onboarding-field input:focus,
.onboarding-field textarea:focus,
.onboarding-step input:focus,
.onboarding-step textarea:focus {
    border-color: var(--yd-rose);
    box-shadow: 0 0 0 3px rgba(217, 107, 130, .15);
}

.onboarding-field input::placeholder,
.onboarding-step input::placeholder {
    color: var(--yd-neutral-400);
}

.onboarding-field-secondary {
    margin-top: var(--yd-space-3);
}

/* ─── Option Grid ─── */
.onboarding-options {
    display: grid;
    gap: var(--yd-space-3);
    margin: var(--yd-space-5) 0 0;
    padding: 0;
    border: 0;
}

.onboarding-options legend {
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin-bottom: var(--yd-space-3);
}

.onboarding-options .option-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--yd-space-2);
}

.onboarding-options .option-btn {
    width: 100%;
    min-height: 46px;
    padding: var(--yd-space-3) var(--yd-space-4);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-medium);
    text-align: left;
    cursor: pointer;
    transition: border-color var(--yd-motion-fast), background var(--yd-motion-fast), transform var(--yd-motion-fast);
    -webkit-tap-highlight-color: transparent;
}

.onboarding-options .option-btn:active {
    transform: scale(.98);
}

.onboarding-options .option-btn.selected {
    border-color: var(--yd-champagne);
    background: rgba(169, 67, 91, .23);
    box-shadow: var(--yd-glow-accent);
}

/* ─── Actions (Primary + Skip) ─── */
/* Usage: .btn.btn-primary.btn-lg for continue, .btn.btn-ghost for skip */
.onboarding-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--yd-space-3);
    margin-top: var(--yd-space-section);
}

.onboarding-actions .btn {
    width: 100%;
}

/* ─── Error Message ─── */
.onboarding-error {
    margin: var(--yd-space-4) 0 0;
    padding: var(--yd-space-3);
    border: 1px solid var(--yd-tint-burgundy-strong);
    border-radius: var(--radius-sm);
    background: var(--yd-tint-burgundy-medium);
    color: var(--yd-error-light);
    font-size: var(--yd-text-sm);
    line-height: var(--yd-leading-normal);
}

/* ─── Photo Upload ─── */
.onboarding .photo-upload {
    margin: var(--yd-space-4) 0 var(--yd-space-3);
    border: 1px dashed var(--yd-line);
    border-radius: var(--radius);
    background: var(--yd-raised);
    overflow: hidden;
    min-height: 184px;
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: border-color var(--yd-motion-fast);
}

.onboarding .photo-upload:active {
    border-color: var(--yd-champagne);
}

.onboarding .photo-upload img {
    width: 100%;
    height: 184px;
    object-fit: cover;
}

.onboarding .photo-upload .upload-icon {
    color: var(--yd-champagne);
    font-size: var(--yd-text-3xl);
    font-weight: var(--yd-weight-normal);
}

/* ─── Profile Preview (end of onboarding) ─── */
.onboarding .profile-preview {
    display: grid;
    grid-template-columns: 74px 1fr;
    gap: var(--yd-space-3);
    margin-top: var(--yd-space-5);
    padding: var(--yd-space-3);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius);
    background: linear-gradient(145deg, rgba(169, 67, 91, .12), var(--yd-raised));
}

.onboarding .profile-preview-label {
    grid-column: 1 / -1;
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    letter-spacing: var(--yd-tracking-caps);
    text-transform: uppercase;
    color: var(--yd-champagne);
}

.onboarding .profile-preview img {
    width: 74px;
    height: 74px;
    border-radius: var(--radius-sm);
    object-fit: cover;
}

.onboarding .profile-preview strong {
    color: var(--yd-ivory);
    font-weight: var(--yd-weight-bold);
}

.onboarding .profile-preview p:not(.profile-preview-label) {
    margin: var(--yd-space-1) 0 0;
    color: var(--yd-muted);
    font-size: var(--yd-text-sm);
    line-height: var(--yd-leading-tight);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═══ SCREEN: Discover ═══
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Hero Section ─── */
.discover-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: var(--yd-space-3) var(--yd-space-1) var(--yd-space-5);
}

.discover-hero .eyebrow {
    display: block;
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    color: var(--yd-champagne);
    margin-bottom: var(--yd-space-2);
}

.discover-hero h1 {
    font-size: var(--yd-text-3xl);
    font-weight: var(--yd-weight-black);
    line-height: var(--yd-leading-tight);
    letter-spacing: var(--yd-tracking-tight);
    color: var(--yd-ivory);
}

.discover-hero h1 em {
    color: var(--yd-rose-soft);
    font-style: normal;
    text-shadow: 0 0 26px rgba(169, 67, 91, 0.24);
}

.discover-sparkle {
    color: var(--yd-champagne);
    font-size: var(--yd-text-2xl);
    line-height: 1;
}

/* ─── Swipe Card Stack ─── */
.swipe-card {
    background: linear-gradient(180deg, var(--yd-raised), var(--yd-surface));
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}

.swipe-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 35%, rgba(11, 11, 16, 0.25) 50%, rgba(11, 11, 16, 0.92) 100%);
    pointer-events: none;
    border-radius: inherit;
}

.swipe-card .card-info {
    position: relative;
    z-index: 2;
    background: linear-gradient(180deg, rgba(20, 19, 25, 0.02), rgba(15, 14, 20, 0.98) 22%);
    padding: var(--yd-space-5) var(--yd-space-4);
}

/* ─── Card Content Elements ─── */
.discover-card-expand {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-black);
    letter-spacing: var(--yd-tracking-tight);
    text-align: left;
    cursor: pointer;
}

.discover-card-chevron {
    color: var(--yd-champagne);
    font-size: var(--yd-text-lg);
    line-height: 1;
    transition: transform var(--yd-motion-fast);
}

.discover-card-expand:active .discover-card-chevron {
    transform: translateX(4px);
}

.discover-card-interests {
    display: flex;
    flex-wrap: wrap;
    gap: var(--yd-space-2);
    margin: var(--yd-space-3) 0 var(--yd-space-1);
}

.discover-card-interest,
.discover-card-more {
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    padding: var(--yd-space-1) var(--yd-space-3);
    color: var(--yd-champagne-light);
    background: rgba(201, 168, 106, 0.08);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    backdrop-filter: blur(4px);
}

.discover-card-more {
    color: var(--yd-muted);
}

/* ─── Card Badges ─── */
.card-badge-online {
    color: var(--yd-emerald);
    background: rgba(78, 175, 130, 0.12);
    border: 1px solid rgba(78, 175, 130, 0.25);
    border-radius: var(--radius-pill);
    padding: var(--yd-space-1) var(--yd-space-2);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
}

.card-badge-verified {
    color: var(--yd-champagne);
    background: rgba(201, 168, 106, 0.12);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    padding: var(--yd-space-1) var(--yd-space-2);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
}

.card-intent-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--yd-space-1);
    padding: var(--yd-space-1) var(--yd-space-3);
    border-radius: var(--radius-pill);
    background: linear-gradient(135deg, rgba(169, 67, 91, 0.2), rgba(169, 67, 91, 0.08));
    border: 1px solid rgba(169, 67, 91, 0.35);
    color: var(--yd-rose-soft);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    margin: var(--yd-space-1) 0;
}

/* ─── Swipe Action Buttons ─── */
.swipe-buttons {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-3);
    margin-top: var(--yd-space-3);
    padding: var(--yd-space-2) var(--yd-space-3);
    position: relative;
    z-index: var(--yd-z-raised);
}

.swipe-btn {
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform var(--yd-motion-bounce), box-shadow var(--yd-motion-fast), background var(--yd-motion-fast);
    padding: 0;
    /* All swipe buttons meet 44px minimum touch target */
    min-width: 44px;
    min-height: 44px;
}

.swipe-btn svg {
    display: block;
}

.swipe-btn:active {
    transform: scale(0.88);
}

.swipe-btn-skip {
    width: 54px;
    height: 54px;
    background: var(--yd-glass-medium);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(217, 107, 130, 0.28);
    color: var(--yd-rose);
    box-shadow: var(--yd-shadow-sm);
}

.swipe-btn-skip svg {
    width: 22px;
    height: 22px;
    stroke-width: 2.2;
}

.swipe-btn-skip:hover {
    background: var(--yd-glass-raised);
    border-color: var(--yd-rose);
}

.swipe-btn-like {
    width: 62px;
    height: 62px;
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #fff;
    box-shadow: 0 10px 32px rgba(169, 67, 91, 0.42);
}

.swipe-btn-like svg {
    width: 26px;
    height: 26px;
}

.swipe-btn-superlike,
.swipe-btn-crush {
    width: 48px;
    height: 48px;
    background: linear-gradient(135deg, rgba(201, 168, 106, 0.22), rgba(169, 67, 91, 0.22));
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--yd-line-gold);
    color: var(--yd-champagne);
    box-shadow: var(--yd-shadow-xs);
}

.swipe-btn-superlike svg,
.swipe-btn-crush svg {
    width: 20px;
    height: 20px;
}

.swipe-btn-compliment {
    width: 44px;
    height: 44px;
    background: var(--yd-glass-medium);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--yd-line);
    color: var(--yd-ivory);
    box-shadow: var(--yd-shadow-xs);
}

.swipe-btn-compliment svg {
    width: 18px;
    height: 18px;
}

/* ─── Filter Trigger ─── */
.discover-filter-btn {
    /* Uses .btn-secondary.btn-sm pattern */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    min-height: 32px;
    height: 32px;
    padding: 0 var(--yd-space-3);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    font-family: var(--yd-font);
    background: var(--yd-glass-medium);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-sm);
    color: var(--yd-ivory);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    cursor: pointer;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast);
}

.discover-filter-btn:active {
    transform: scale(0.97);
}

/* ─── Stories Bar ─── */
.stories-bar,
.stories-bar-redesign {
    display: flex;
    gap: var(--yd-space-3);
    overflow-x: auto;
    padding: var(--yd-space-2) 0;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.stories-bar::-webkit-scrollbar,
.stories-bar-redesign::-webkit-scrollbar {
    display: none;
}

.stories-bar-item,
.stories-bar-redesign-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--yd-space-1);
    min-width: 64px;
}

.stories-bar-ring,
.stories-bar-redesign-ring {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: 2px solid var(--yd-line);
    overflow: hidden;
    transition: border-color var(--yd-motion-base);
}

.stories-bar-ring--unseen,
.stories-bar-redesign-ring--active {
    border-color: var(--yd-burgundy);
}

.stories-bar-avatar,
.stories-bar-redesign-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.stories-bar-name,
.stories-bar-redesign-name {
    font-size: var(--yd-text-xs);
    color: var(--yd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 64px;
    text-align: center;
}

/* ─── Daily Picks Section ─── */
.discovery-section {
    margin-bottom: var(--yd-space-5);
}

.discovery-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--yd-space-3);
}

.discovery-section-title {
    margin: 0;
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.discovery-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--yd-space-8) 0;
    color: var(--yd-muted);
}

.discovery-empty {
    color: var(--yd-muted);
    font-size: var(--yd-text-sm);
    text-align: center;
    padding: var(--yd-space-6) 0;
}

/* ─── Spotlight Carousel ─── */
.spotlight-section {
    margin-bottom: var(--yd-space-4);
}

.spotlight-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--yd-space-3);
}

.spotlight-action-btn {
    padding: var(--yd-space-2) var(--yd-space-3);
    background: var(--yd-raised);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    color: var(--yd-champagne);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    cursor: pointer;
    transition: background var(--yd-motion-fast);
}

.spotlight-action-btn:active {
    background: rgba(201, 168, 106, 0.15);
}

.spotlight-carousel {
    display: flex;
    gap: var(--yd-space-3);
    overflow-x: auto;
    padding: var(--yd-space-1) 0;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.spotlight-carousel::-webkit-scrollbar {
    display: none;
}

.spotlight-card {
    flex-shrink: 0;
    width: 120px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--yd-space-2);
    position: relative;
}

.spotlight-photo-wrap {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    border: 3px solid var(--yd-champagne);
    overflow: hidden;
    box-shadow: var(--yd-glow-gold);
    position: relative;
}

.spotlight-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.spotlight-name {
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    text-align: center;
}

/* ─── Drag Overlay Stamps ─── */
.card-overlay {
    position: absolute;
    top: var(--yd-space-6);
    z-index: var(--yd-z-raised);
    padding: var(--yd-space-2) var(--yd-space-5);
    border-radius: var(--radius-sm);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-black);
    letter-spacing: var(--yd-tracking-wide);
    text-transform: uppercase;
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--yd-duration-fast) ease;
}

.card-overlay-like {
    right: var(--yd-space-6);
    color: var(--yd-champagne);
    border: 3px solid var(--yd-champagne);
    background: rgba(201, 168, 106, 0.2);
    box-shadow: 0 0 24px rgba(201, 168, 106, 0.4);
    transform: rotate(14deg);
}

.card-overlay-skip {
    left: var(--yd-space-6);
    color: var(--yd-rose);
    border: 3px solid var(--yd-rose);
    background: rgba(169, 67, 91, 0.2);
    box-shadow: 0 0 24px rgba(169, 67, 91, 0.4);
    transform: rotate(-14deg);
}

/* ─── Discover Profile Sheet ─── */
.discover-profile-sheet {
    position: fixed;
    inset: 0;
    z-index: var(--yd-z-modal);
    display: none;
    align-items: flex-end;
    background: rgba(8, 8, 12, 0.78);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.discover-profile-sheet.active {
    display: flex;
}

.discover-profile-dialog {
    position: relative;
    width: 100%;
    max-height: 92vh;
    overflow-y: auto;
    border-radius: 30px 30px 0 0;
    background: var(--yd-surface);
    border-top: 1px solid var(--yd-line-gold);
    box-shadow: var(--yd-shadow-xl);
    animation: discover-sheet-in var(--yd-duration-slow) var(--yd-ease-out);
}

.discover-profile-close {
    position: absolute;
    top: var(--yd-space-4);
    right: var(--yd-space-4);
    z-index: 5;
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 50%;
    color: #fff;
    background: rgba(15, 14, 20, 0.6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    font-size: var(--yd-text-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    /* 44px touch target via min dimensions */
    min-width: 44px;
    min-height: 44px;
}

@keyframes discover-sheet-in {
    from {
        transform: translateY(100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Profile
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 25.1–25.6: Premium profile screen with card-accent hero,
   champagne-to-rose avatar ring, card-base stats, card-glass features,
   38px icon containers, and full typography token scale.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
.profile-view {
    padding: var(--yd-space-4) var(--yd-space-screen-x) var(--yd-space-10);
}

/* ─── Hero Card (Req 25.1: .card-accent variant with gradient border) ─── */
.profile-hero-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--yd-space-6) var(--yd-space-4);
    background: linear-gradient(145deg, rgba(169, 67, 91, .15), var(--yd-surface));
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    margin-bottom: var(--yd-space-5);
    overflow: hidden;
}

/* ─── Avatar (Req 25.2: champagne-to-rose gradient ring) ─── */
.profile-avatar-wrapper {
    position: relative;
    width: 104px;
    height: 104px;
    border-radius: 50%;
    padding: 4px;
    background: linear-gradient(135deg, var(--yd-champagne), var(--yd-rose));
    box-shadow: var(--yd-glow-gold);
    margin-bottom: var(--yd-space-3);
}

.profile-avatar-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
    display: block;
}

/* ─── Profile Name & Metadata ─── */
.profile-hero-card .profile-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
    margin-bottom: var(--yd-space-1);
}

.profile-hero-card .profile-meta {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
}

/* ─── Stats Grid (Req 25.3: .card-base for stat cards with token padding) ─── */
.profile-stats-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--yd-space-3);
    margin: var(--yd-space-4) 0;
}

.profile-stat-card {
    padding: var(--yd-space-3) var(--yd-space-2);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    text-align: center;
    overflow: hidden;
}

.profile-stat-num {
    font-family: var(--yd-font);
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-black);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

.profile-stat-lbl {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    margin-top: var(--yd-space-1);
    line-height: var(--yd-leading-normal);
}

/* ─── Feature Cards Grid (Req 25.4: .card-glass.card-interactive) ─── */
.profile-features-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--yd-space-3);
    margin: var(--yd-space-5) 0;
}

.profile-feature-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: var(--yd-space-card-padding);
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    cursor: pointer;
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast);
    overflow: hidden;
}

.profile-feature-card:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

/* ─── Feature Icons (Req 25.5: 38px containers with token backgrounds) ─── */
.profile-feature-icon {
    width: 38px;
    height: 38px;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--yd-space-3);
    background: rgba(201, 168, 106, .12);
    color: var(--yd-champagne);
    font-size: var(--yd-text-lg);
}

/* ─── Feature Typography (Req 25.6: all using token scale) ─── */
.profile-feature-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

.profile-feature-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    margin-top: var(--yd-space-1);
    line-height: var(--yd-leading-normal);
}

/* ─── VIP / Upgrade Banner ─── */
.profile-upgrade-card {
    padding: var(--yd-space-4);
    background: linear-gradient(135deg, rgba(201, 168, 106, .12), rgba(169, 67, 91, .12));
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    margin-top: var(--yd-space-4);
    text-align: center;
}

.profile-upgrade-card .profile-upgrade-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
    line-height: var(--yd-leading-tight);
    margin-bottom: var(--yd-space-2);
}

.profile-upgrade-card .profile-upgrade-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
    margin-bottom: var(--yd-space-4);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Chat
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 24.1–24.7: Token-compliant chat header, bubbles, composer,
   wingman AI convo starters, typing indicator, and day separator.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Chat View Container ─── */
.chat-view {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    background:
        radial-gradient(circle at 50% 0%, rgba(169, 67, 91, 0.08) 0%, rgba(11, 11, 16, 0.98) 60%),
        var(--yd-bg);
    position: relative;
    overflow: hidden;
}

/* ─── Chat Header Bar (Req 24.1) ─── */
.chat-header-bar {
    display: flex;
    align-items: center;
    gap: var(--yd-space-3);
    padding: calc(var(--yd-space-3) + env(safe-area-inset-top, 0px)) var(--yd-space-screen-x) var(--yd-space-3);
    background: var(--yd-glass-heavy);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-bottom: 1px solid var(--yd-line);
    position: sticky;
    top: 0;
    z-index: var(--yd-z-raised);
}

.chat-back-btn {
    width: 38px;
    height: 38px;
    min-width: 38px;
    min-height: 44px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--yd-line);
    color: var(--yd-rose-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast);
}

.chat-back-btn:active {
    transform: scale(0.92);
    background: rgba(255, 255, 255, 0.12);
}

.chat-partner {
    display: flex;
    align-items: center;
    gap: var(--yd-space-3);
    min-width: 0;
    flex: 1;
    cursor: pointer;
}

.chat-partner-avatar-wrap {
    position: relative;
    width: 40px;
    height: 40px;
    min-width: 40px;
    border-radius: 50%;
    border: 1.5px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
    overflow: visible;
}

.chat-partner-avatar-wrap img,
.chat-partner-avatar-wrap .avatar-image,
.chat-partner-avatar-wrap .avatar-fallback {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    display: block;
}

.chat-online-dot {
    position: absolute;
    bottom: -1px;
    right: -1px;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: var(--yd-emerald);
    border: 2px solid var(--yd-surface);
    box-shadow: var(--yd-glow-success);
}

.chat-partner-info {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.chat-partner-name-row {
    display: flex;
    align-items: center;
    gap: var(--yd-space-1);
}

.chat-partner-name {
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: var(--yd-tracking-normal);
}

.chat-verified-badge {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}

.chat-partner-status {
    font-size: var(--yd-text-xs);
    color: var(--yd-champagne);
    font-weight: var(--yd-weight-semibold);
    letter-spacing: var(--yd-tracking-wide);
}

.chat-header-actions {
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
}

.chat-action-btn {
    width: 36px;
    height: 36px;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--yd-line);
    color: var(--yd-ivory);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast);
}

.chat-action-btn:active {
    transform: scale(0.92);
    background: rgba(255, 255, 255, 0.12);
}

/* ─── Chat Messages Container ─── */
.chat-messages {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-2);
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
}

/* ─── Day Separator (Req 24.7) ─── */
.chat-day-separator {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: var(--yd-space-3) 0;
}

.chat-day-separator span {
    /* Uses .badge-outline styling: transparent bg, colored border */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    padding: var(--yd-space-1) var(--yd-space-3);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    letter-spacing: var(--yd-tracking-wide);
    color: var(--yd-champagne);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/* ─── Chat Empty State ─── */
.chat-empty {
    margin: auto;
    text-align: center;
    padding: var(--yd-space-8) var(--yd-space-5);
    max-width: 320px;
}

.chat-empty-avatar-wrap {
    width: 80px;
    height: 80px;
    margin: 0 auto var(--yd-space-4);
    border-radius: 50%;
    border: 2px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
    overflow: hidden;
}

.chat-empty-avatar-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.chat-empty-title {
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-black);
    color: var(--yd-ivory);
    margin-bottom: var(--yd-space-2);
}

.chat-empty-desc {
    font-size: var(--yd-text-sm);
    line-height: var(--yd-leading-relaxed);
    color: var(--yd-muted);
}

/* ─── Chat Bubbles (Req 24.2) ─── */
.chat-row {
    display: flex;
    width: 100%;
    margin-top: 2px;
}

.chat-row.mine {
    justify-content: flex-end;
}

.chat-row.theirs {
    justify-content: flex-start;
}

.chat-bubble {
    max-width: 80%;
    padding: var(--yd-space-3) var(--yd-space-4);
    position: relative;
    word-break: break-word;
    font-size: var(--yd-text-base);
    line-height: var(--yd-leading-normal);
}

/* Mine: burgundy gradient */
.chat-bubble.mine {
    background: linear-gradient(135deg, var(--yd-burgundy) 0%, var(--yd-burgundy-700) 100%);
    color: #ffffff;
    border-radius: 20px 20px 4px 20px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    box-shadow: 0 4px 20px rgba(169, 67, 91, 0.35);
}

/* Theirs: glass surface */
.chat-bubble.theirs {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    color: var(--yd-ivory);
    border-radius: 20px 20px 20px 4px;
    border: 1px solid var(--yd-glass-border);
    box-shadow: var(--yd-shadow-sm);
}

.chat-bubble.pending {
    opacity: 0.75;
}

.chat-bubble.failed {
    border-color: var(--yd-rose);
    background: rgba(217, 107, 130, 0.15);
}

/* ─── Special Bubbles (Crush / Compliment) ─── */
.chat-special-bubble {
    border: 1.5px solid var(--yd-champagne);
    background: var(--yd-glass-heavy);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: var(--yd-glow-gold);
}

.chat-special-bubble.compliment {
    border-color: var(--yd-rose);
    box-shadow: var(--yd-glow-accent);
}

.chat-special-label {
    display: flex;
    align-items: center;
    gap: var(--yd-space-1);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    color: var(--yd-champagne);
    margin-bottom: var(--yd-space-2);
}

.chat-special-bubble.compliment .chat-special-label {
    color: var(--yd-rose-soft);
}

/* ─── Bubble Internals ─── */
.chat-text {
    white-space: pre-wrap;
    font-size: var(--yd-text-base);
    letter-spacing: var(--yd-tracking-normal);
}

.chat-meta {
    margin-top: var(--yd-space-1);
    font-size: var(--yd-text-xs);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--yd-space-1);
    color: rgba(255, 255, 255, 0.6);
}

.chat-bubble.theirs .chat-meta {
    color: var(--yd-muted);
}

.chat-tick.sent {
    color: var(--yd-champagne);
    font-weight: var(--yd-weight-black);
    font-size: var(--yd-text-xs);
}

/* ─── Typing Indicator (Req 24.6) ─── */
.chat-typing-row {
    margin: var(--yd-space-1) 0;
}

.chat-typing-bubble {
    padding: var(--yd-space-3) var(--yd-space-5);
    border-radius: 20px 20px 20px 4px;
}

.chat-typing-dots {
    display: flex;
    align-items: center;
    gap: var(--yd-space-1);
}

.chat-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--yd-champagne);
    animation: yd-typing-bounce 1.4s infinite ease-in-out both;
}

.chat-dot:nth-child(1) { animation-delay: -0.32s; }
.chat-dot:nth-child(2) { animation-delay: -0.16s; }
.chat-dot:nth-child(3) { animation-delay: 0s; }

@keyframes yd-typing-bounce {
    0%, 80%, 100% { transform: scale(0.4); opacity: 0.4; }
    40% { transform: scale(1); opacity: 1; }
}

/* ─── Convo Starters / Wingman AI (Req 24.5) ─── */
.chat-convo-starters {
    /* .card-glass pattern + gold border */
    margin: var(--yd-space-3) 0 var(--yd-space-2);
    padding: var(--yd-space-3);
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    overflow: hidden;
}

.chat-convo-starters-header {
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
    margin-bottom: var(--yd-space-3);
}

.chat-convo-starters-badge {
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-black);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    padding: 2px var(--yd-space-2);
    border-radius: var(--radius-pill);
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    color: #fff;
}

.chat-convo-starters-title {
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-champagne);
}

.chat-convo-starters-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--yd-space-2);
}

.chat-convo-starter-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--yd-space-2);
    padding: var(--yd-space-2) var(--yd-space-3);
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-pill);
    color: var(--yd-ivory);
    font-size: var(--yd-text-sm);
    font-family: var(--yd-font);
    cursor: pointer;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast), border-color var(--yd-motion-fast);
    min-height: 44px;
}

.chat-convo-starter-btn svg {
    color: var(--yd-champagne);
    flex-shrink: 0;
}

.chat-convo-starter-btn:active {
    transform: scale(0.95);
    background: rgba(201, 168, 106, 0.15);
    border-color: var(--yd-champagne);
}

/* ─── Chat Composer (Req 24.3, 24.4) ─── */
.chat-compose-wrap {
    padding: var(--yd-space-2) var(--yd-space-screen-x) calc(var(--yd-space-3) + env(safe-area-inset-bottom, 0px));
    background: var(--yd-glass-heavy);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-top: 1px solid var(--yd-line);
}

.chat-compose {
    /* .input base adapted for chat context */
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
    padding: var(--yd-space-1) var(--yd-space-2) var(--yd-space-1) var(--yd-space-3);
    background: var(--yd-glass-medium);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-pill);
    transition: border-color var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

.chat-compose:focus-within {
    border-color: var(--yd-rose);
    box-shadow: 0 0 0 3px rgba(217, 107, 130, 0.15);
}

.chat-photo-trigger {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    background: transparent;
    border: none;
    color: var(--yd-champagne);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform var(--yd-motion-fast), color var(--yd-motion-fast);
}

.chat-photo-trigger:active {
    transform: scale(0.9);
}

#chat-input {
    flex: 1;
    min-width: 0;
    background: transparent;
    border: none;
    color: var(--yd-ivory);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    padding: var(--yd-space-2) var(--yd-space-1);
    outline: none;
    line-height: var(--yd-leading-normal);
}

#chat-input::placeholder {
    color: var(--yd-muted);
}

/* Send button: .btn-icon .btn-primary at 44px */
.chat-send-btn {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    border: none;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: var(--yd-glow-accent);
    transition: transform var(--yd-motion-fast), opacity var(--yd-motion-fast);
}

.chat-send-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}

.chat-send-btn:not(:disabled):active {
    transform: scale(0.92);
}

/* ─── Composer Footer ─── */
.chat-compose-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--yd-space-1) var(--yd-space-2) 0;
    font-size: var(--yd-text-xs);
    color: var(--yd-muted);
}

.chat-status.error {
    color: var(--yd-rose);
}

.chat-status.ok {
    color: var(--yd-muted);
}

/* Internal private room — one match conversation, mutual consent. */
.chat-private-room {
    width: 100%;
    display: flex;
    align-items: flex-start;
    gap: var(--yd-space-3);
    margin: var(--yd-space-3) 0;
    padding: var(--yd-space-3);
    border: 1px solid rgba(201, 168, 106, 0.28);
    border-radius: var(--radius-card);
    background: linear-gradient(135deg, rgba(201, 168, 106, 0.13), rgba(217, 107, 130, 0.08));
    color: var(--yd-ivory);
    font: inherit;
    text-align: left;
}

.chat-private-room-cta { cursor: pointer; }
.chat-private-room.active { border-color: rgba(201, 168, 106, 0.55); }
.chat-private-room-mark { color: var(--yd-champagne); font-size: 1.15rem; line-height: 1.2; }
.chat-private-room strong { display: block; font-size: var(--yd-text-sm); }
.chat-private-room p, .chat-private-room small { display: block; margin: 4px 0 0; color: var(--yd-muted); font-size: var(--yd-text-xs); line-height: 1.4; }
.chat-private-room-actions { display: flex; gap: var(--yd-space-2); margin-top: var(--yd-space-3); }
.chat-private-primary, .chat-private-secondary { min-height: 38px; padding: 0 var(--yd-space-3); border-radius: var(--radius-pill); font: inherit; font-size: var(--yd-text-sm); cursor: pointer; }
.chat-private-primary { border: 0; background: var(--yd-champagne); color: var(--yd-bg); font-weight: var(--yd-weight-bold); }
.chat-private-secondary { border: 1px solid var(--yd-line); background: transparent; color: var(--yd-ivory); }
.chat-voice-slot { min-width: 205px; }


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Connections
   ═══════════════════════════════════════════════════════════════════════════
   Requirement 23: Connections/Matches list uses .list-item pattern,
   gold-border avatars, token-compliant spacing, and active states.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Screen Container ─── */
#screen-matches {
    background: var(--yd-bg);
}

#screen-matches .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
}

#screen-matches .screen-header h2 {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

/* ─── Connections List (grid with token gap) ─── */
.connections-list {
    display: grid;
    gap: var(--yd-space-3);
    padding: 0 var(--yd-space-screen-x);
}

/* ─── Connection Card (.list-item pattern) ─── */
.connection-card {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-3) var(--yd-space-4);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    cursor: pointer;
    text-align: left;
    width: 100%;
    font-family: var(--yd-font);
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

/* ─── Active State: scale(.98) + gold border ─── */
.connection-card:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
}

/* ─── Avatar with Gold Border & Online Indicator ─── */
.connection-card .chat-list-photo {
    position: relative;
    width: 54px;
    height: 54px;
    min-width: 54px;
    border-radius: 50%;
    overflow: visible;
}

.connection-card .chat-list-photo img,
.connection-card .chat-list-photo .avatar-image,
.connection-card .chat-list-photo .avatar-fallback {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    display: block;
    border: 2px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
}

/* ─── Online Indicator (green dot on avatar) ─── */
.connection-card .chat-list-photo .online-indicator {
    position: absolute;
    bottom: 1px;
    right: 1px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--yd-emerald);
    border: 2px solid var(--yd-surface);
    box-shadow: 0 0 6px rgba(78, 175, 130, 0.5);
}

/* ─── Content (name + meta) ─── */
.connection-card-name {
    display: block;
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.connection-card-meta {
    display: block;
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
    margin-top: 2px;
}

/* ─── Action Button (.btn-secondary.btn-sm pattern) ─── */
.connection-card-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    height: 32px;
    padding: 0 var(--yd-space-3);
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-champagne);
    background: rgba(201, 168, 106, .1);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-pill);
    white-space: nowrap;
    transition: background var(--yd-motion-fast), transform var(--yd-motion-fast);
}

.connection-card:active .connection-card-action {
    background: rgba(201, 168, 106, .18);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Referral
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 26.1–26.5: Premium referral/invite screen with screen-layout
   structure, card-accent reward display, btn-gold invite button, card-glass
   referral code container, and card-base stat pattern.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout (Req 26.1: .screen-layout structure) ─── */
#screen-referral .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-referral .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-referral .screen-header h2 {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.referral-content {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
}

/* ─── Stars / Reward Card (Req 26.2: .card-accent with champagne glow) ─── */
.referral-stars-card {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    padding: var(--yd-space-5) var(--yd-space-4);
    text-align: center;
    overflow: hidden;
}

.referral-stars-value {
    font-family: var(--yd-font);
    font-size: var(--yd-text-2xl);
    font-weight: var(--yd-weight-black);
    color: var(--yd-champagne);
    line-height: var(--yd-leading-tight);
    margin-bottom: var(--yd-space-4);
}

/* ─── Invite Button (Req 26.3: .btn-gold.btn-lg as primary action) ─── */
.referral-invite-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    width: 100%;
    min-height: 48px;
    height: 48px;
    padding: 0 var(--yd-space-5);
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    line-height: 1;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    background: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne));
    color: var(--yd-neutral-950);
    box-shadow: var(--yd-glow-gold);
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

.referral-invite-btn:active {
    transform: scale(.97);
}

/* ─── Referral Link Card (Req 26.4: .card-glass + monospace + copy icon) ─── */
.referral-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-card-padding);
    overflow: hidden;
}

.referral-card h3 {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0 0 var(--yd-space-2);
    line-height: var(--yd-leading-tight);
}

.referral-card p {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
    margin: 0 0 var(--yd-space-3);
}

.referral-link {
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
    padding: var(--yd-space-3);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    font-family: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
    font-size: var(--yd-text-sm);
    color: var(--yd-champagne-light);
    word-break: break-all;
    cursor: pointer;
    transition: border-color var(--yd-motion-fast), background var(--yd-motion-fast);
}

.referral-link::after {
    content: '';
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-left: auto;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23C9A86A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='13' height='13' rx='2' ry='2'/%3E%3Cpath d='M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}

.referral-link:active {
    border-color: var(--yd-champagne);
    background: rgba(201, 168, 106, .08);
}

/* ─── Stats Grid (Req 26.5: .card-base stat pattern matching profile) ─── */
.referral-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--yd-space-3);
}

.referral-stat {
    padding: var(--yd-space-3) var(--yd-space-2);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    text-align: center;
    overflow: hidden;
}

.referral-stat-value {
    font-family: var(--yd-font);
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-black);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

.referral-stat-label {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    margin-top: var(--yd-space-1);
    line-height: var(--yd-leading-normal);
}

/* ─── Invitees Sub-grid (inside reward card) ─── */
.referral-invitees {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--yd-space-3);
    margin-top: var(--yd-space-3);
}

/* ─── Leaderboard Section ─── */
.leaderboard {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-card-padding);
    overflow: hidden;
}

.leaderboard-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin-bottom: var(--yd-space-3);
}

.leaderboard-item {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-2) 0;
    border-bottom: 1px solid var(--yd-line);
}

.leaderboard-item:last-child {
    border-bottom: none;
}

.leaderboard-item.is-me {
    color: var(--yd-champagne);
}

.leaderboard-rank {
    font-size: var(--yd-text-md);
    line-height: 1;
}

.leaderboard-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.leaderboard-item.is-me .leaderboard-name {
    color: var(--yd-champagne);
    font-weight: var(--yd-weight-bold);
}

.leaderboard-count {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    font-variant-numeric: tabular-nums;
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Leaderboard
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 28.1–28.5: Leaderboard with gold/silver/bronze top-3 cards,
   list-item rows, current-user highlight, tabular-nums, token spacing.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
#screen-leaderboard .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-leaderboard .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-leaderboard .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.leaderboard-content {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
}

/* ─── Top-3 Podium Cards (Req 28.1: .card-accent with medal borders) ─── */
.leaderboard-podium {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--yd-space-3);
}

.leaderboard-podium-card {
    background: var(--yd-surface);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    padding: var(--yd-space-4) var(--yd-space-2);
    text-align: center;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--yd-space-2);
}

/* Gold — 1st place */
.leaderboard-podium-card.is-gold {
    border: 1px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold);
}

/* Silver — 2nd place */
.leaderboard-podium-card.is-silver {
    border: 1px solid var(--yd-neutral-200);
    box-shadow: 0 0 24px rgba(170, 163, 161, .18);
}

/* Bronze — 3rd place */
.leaderboard-podium-card.is-bronze {
    border: 1px solid var(--yd-champagne-700);
    box-shadow: 0 0 24px rgba(156, 123, 58, .18);
}

.leaderboard-podium-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
}

.leaderboard-podium-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.leaderboard-podium-rank {
    font-family: var(--yd-font);
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-black);
    line-height: 1;
}

.is-gold .leaderboard-podium-rank { color: var(--yd-champagne); }
.is-silver .leaderboard-podium-rank { color: var(--yd-neutral-200); }
.is-bronze .leaderboard-podium-rank { color: var(--yd-champagne-700); }

.leaderboard-podium-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.leaderboard-podium-xp {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    font-variant-numeric: tabular-nums;
}

/* ─── List Rows (Req 28.2–28.3: .list-item pattern) ─── */
.leaderboard-list {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-2);
}

.leaderboard-row {
    display: grid;
    grid-template-columns: 32px 40px 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-3) var(--yd-space-card-padding);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
    transition: border-color var(--yd-motion-fast);
}

/* Req 28.4: Current user highlighted */
.leaderboard-row.is-current-user {
    background: rgba(201, 168, 106, .08);
    border-color: var(--yd-line-gold);
}

.leaderboard-row-rank {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-muted);
    font-variant-numeric: tabular-nums;
    text-align: center;
}

.leaderboard-row.is-current-user .leaderboard-row-rank {
    color: var(--yd-champagne);
}

.leaderboard-row-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
}

.leaderboard-row-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.leaderboard-row-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.leaderboard-row.is-current-user .leaderboard-row-name {
    color: var(--yd-champagne);
    font-weight: var(--yd-weight-bold);
}

.leaderboard-row-xp {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-champagne);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Wingman
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 29.1–29.5: AI Wingman screen with screen-layout structure,
   card-glass suggestion cards, champagne accent border, relaxed AI text,
   btn-secondary action buttons, badge-accent for AI label.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout (Req 29.1: .screen-layout) ─── */
#screen-wingman .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-wingman .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-wingman .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.wingman-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ─── AI Badge (Req 29.5: .badge-accent) ─── */
.wingman-ai-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
}

/* ─── AI Suggestion Cards (Req 29.2: .card-glass + champagne accent border) ─── */
.wingman-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    padding: var(--yd-space-card-padding);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
}

.wingman-card-header {
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
}

/* ─── AI Text (Req 29.3: --yd-text-base + --yd-leading-relaxed) ─── */
.wingman-card-text {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-relaxed);
}

/* ─── Action Buttons (Req 29.4: .btn-secondary.btn-sm) ─── */
.wingman-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--yd-space-2);
    margin-top: var(--yd-space-1);
}

.wingman-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-1);
    min-height: 32px;
    height: 32px;
    padding: 0 var(--yd-space-3);
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-ivory);
    background: var(--yd-glass-medium);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-sm);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), background var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

.wingman-action-btn:active {
    transform: scale(.97);
    border-color: var(--yd-champagne);
    background: rgba(201, 168, 106, .12);
}

/* ─── Wingman Context Section ─── */
.wingman-context {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
    padding: var(--yd-space-3);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-sm);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Double Date
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 30.1–30.5: Double Date with screen-layout, card-glass
   participant cards with avatar pairs, invite/join actions, status badges.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout (Req 30.1: .screen-layout) ─── */
#screen-double-date .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-double-date .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-double-date .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.double-date-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ─── Participant Cards (Req 30.2: .card-glass with avatar pairs) ─── */
.double-date-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-card-padding);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
}

.double-date-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.double-date-card-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

/* ─── Avatar Pairs ─── */
.double-date-avatars {
    display: flex;
    align-items: center;
    gap: var(--yd-space-3);
}

.double-date-pair {
    display: flex;
    align-items: center;
}

.double-date-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid var(--yd-surface);
    flex-shrink: 0;
}

.double-date-avatar + .double-date-avatar {
    margin-left: calc(var(--yd-space-3) * -1);
}

.double-date-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.double-date-avatar.is-empty {
    background: var(--yd-neutral-700);
    border: 2px dashed var(--yd-line-gold);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--yd-champagne);
    font-size: var(--yd-text-lg);
}

.double-date-pair-divider {
    width: 24px;
    height: 2px;
    background: var(--yd-line-gold);
    border-radius: var(--radius-pill);
}

/* ─── Status Badges (Req 30.4: .badge-default / .badge-success) ─── */
.double-date-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    white-space: nowrap;
}

.double-date-status.is-waiting {
    background: var(--yd-neutral-600);
    color: var(--yd-ivory);
}

.double-date-status.is-ready {
    background: var(--yd-sage);
    color: var(--yd-neutral-950);
}

.double-date-status.is-full {
    background: var(--yd-champagne);
    color: var(--yd-neutral-950);
}

/* ─── Participant Info ─── */
.double-date-participants {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-2);
}

.double-date-participant {
    display: flex;
    align-items: center;
    gap: var(--yd-space-3);
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-ivory);
}

.double-date-participant-name {
    font-weight: var(--yd-weight-medium);
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ─── Invite/Join Actions (Req 30.3: .btn-primary.btn-md) ─── */
.double-date-actions {
    display: flex;
    gap: var(--yd-space-3);
    margin-top: var(--yd-space-1);
}

.double-date-invite-btn,
.double-date-join-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    flex: 1;
    min-height: 40px;
    height: 40px;
    padding: 0 var(--yd-space-4);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-semibold);
    line-height: 1;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

.double-date-invite-btn {
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    color: var(--yd-ivory);
    box-shadow: var(--yd-shadow-xs);
}

.double-date-join-btn {
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-rose));
    color: var(--yd-ivory);
    box-shadow: var(--yd-shadow-xs);
}

.double-date-invite-btn:active,
.double-date-join-btn:active {
    transform: scale(.97);
}

/* ─── Empty State ─── */
.double-date-empty {
    text-align: center;
    padding: var(--yd-space-8) var(--yd-space-4);
}

.double-date-empty-icon {
    font-size: var(--yd-text-3xl);
    margin-bottom: var(--yd-space-3);
}

.double-date-empty-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin-bottom: var(--yd-space-2);
}

.double-date-empty-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Premium
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 31.1–31.5: Premium subscription screen with stronger gold
   gradients, tier cards with champagne gradient borders + glow, feature
   lists, btn-gold CTA, price typography.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
#screen-premium .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-premium .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-premium .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
}

.premium-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-5);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-8);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ─── Premium Hero ─── */
.premium-hero {
    text-align: center;
    padding: var(--yd-space-5) 0;
}

.premium-hero-icon {
    font-size: var(--yd-text-3xl);
    margin-bottom: var(--yd-space-3);
    filter: drop-shadow(0 0 16px rgba(201, 168, 106, .5));
}

.premium-hero-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-2xl);
    font-weight: var(--yd-weight-black);
    background: linear-gradient(135deg, var(--yd-champagne), var(--yd-champagne-light));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    line-height: var(--yd-leading-tight);
    margin-bottom: var(--yd-space-2);
}

.premium-hero-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
}

/* ─── Tier Cards (Req 31.1–31.2: .card-accent + champagne gradient borders + glow) ─── */
.premium-tiers {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
}

.premium-tier-card {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    padding: var(--yd-space-5) var(--yd-space-4);
    overflow: hidden;
    position: relative;
}

.premium-tier-card.is-recommended {
    border-width: 2px;
    border-image: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne), var(--yd-champagne-light)) 1;
    border-image-slice: 1;
    border-style: solid;
    border-radius: var(--radius-card);
    /* fallback for border-image not supporting border-radius */
    border: 2px solid var(--yd-champagne);
    box-shadow: var(--yd-glow-gold), 0 0 48px rgba(201, 168, 106, .15);
}

.premium-tier-card.is-recommended::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--yd-champagne-700), var(--yd-champagne), var(--yd-champagne-light));
}

.premium-tier-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin-bottom: var(--yd-space-1);
}

.premium-tier-recommended-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    background: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne));
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-neutral-950);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    margin-bottom: var(--yd-space-3);
}

/* ─── Price (Req 31.5: --yd-text-2xl weight-black, period --yd-text-sm muted) ─── */
.premium-tier-price {
    display: flex;
    align-items: baseline;
    gap: var(--yd-space-1);
    margin-bottom: var(--yd-space-3);
}

.premium-tier-amount {
    font-family: var(--yd-font);
    font-size: var(--yd-text-2xl);
    font-weight: var(--yd-weight-black);
    color: var(--yd-champagne);
    line-height: var(--yd-leading-tight);
}

.premium-tier-period {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
}

/* ─── Feature List (Req 31.3: champagne check icons + --yd-text-base) ─── */
.premium-features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
}

.premium-feature-item {
    display: flex;
    align-items: flex-start;
    gap: var(--yd-space-3);
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-normal);
}

.premium-feature-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--yd-champagne);
    margin-top: 1px;
}

/* ─── CTA Button (Req 31.4: .btn-gold.btn-xl) ─── */
.premium-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-2);
    width: 100%;
    min-height: 56px;
    height: 56px;
    padding: 0 var(--yd-space-6);
    font-family: var(--yd-font);
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-bold);
    line-height: 1;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    background: linear-gradient(135deg, var(--yd-champagne-700), var(--yd-champagne));
    color: var(--yd-neutral-950);
    box-shadow: var(--yd-glow-gold);
    letter-spacing: var(--yd-tracking-wide);
    -webkit-tap-highlight-color: transparent;
    transition: transform var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

.premium-cta:active {
    transform: scale(.97);
}

/* ─── Premium: Salon Nocturne conversion screen ─── */
#screen-premium {
    background: var(--yd-ink);
}

#screen-premium .premium-salon-shell {
    min-height: 100%;
    padding: var(--yd-space-5) var(--yd-space-screen-x) calc(116px + env(safe-area-inset-bottom));
    color: var(--yd-ivory);
    background:
        radial-gradient(circle at 50% -12%, rgba(201, 168, 106, .22), transparent 33%),
        radial-gradient(circle at 100% 30%, rgba(201, 168, 106, .07), transparent 30%),
        var(--yd-ink);
}

#screen-premium .premium-salon-header {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--yd-space-3) 0 var(--yd-space-6);
    text-align: center;
}

#screen-premium .premium-crown {
    display: grid;
    width: 56px;
    height: 56px;
    margin-bottom: var(--yd-space-4);
    place-items: center;
    border: 1px solid rgba(228, 202, 139, .52);
    border-radius: 50%;
    color: var(--yd-champagne-light);
    background: radial-gradient(circle at 35% 30%, rgba(255, 246, 220, .2), rgba(201, 168, 106, .08) 55%, transparent 70%);
    box-shadow: 0 0 28px rgba(201, 168, 106, .18), inset 0 0 18px rgba(255, 236, 184, .08);
}

#screen-premium .premium-crown svg { width: 29px; height: 29px; }

#screen-premium .premium-kicker {
    margin-bottom: 8px;
    color: var(--yd-champagne);
    font-size: 10px;
    font-weight: var(--yd-weight-bold);
    letter-spacing: .18em;
}

#screen-premium .premium-title {
    max-width: 320px;
    margin: 0;
    color: var(--yd-ivory);
    font-size: clamp(27px, 8vw, 34px);
    font-weight: var(--yd-weight-black);
    line-height: 1.04;
    letter-spacing: -.045em;
}

#screen-premium .premium-subtitle {
    max-width: 330px;
    margin: 12px 0 0;
    color: var(--yd-muted);
    font-size: var(--yd-text-sm);
    line-height: 1.55;
}

#screen-premium .premium-salon,
#screen-premium .premium-membership {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-5);
}

#screen-premium .premium-benefits {
    display: grid;
    gap: 2px;
    padding: 6px;
    border: 1px solid rgba(228, 202, 139, .15);
    border-radius: var(--radius-card);
    background: rgba(255, 255, 255, .025);
}

#screen-premium .premium-benefit {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    padding: 11px 8px;
}

#screen-premium .premium-benefit + .premium-benefit { border-top: 1px solid rgba(228, 202, 139, .1); }

#screen-premium .premium-benefit-icon {
    display: grid;
    width: 32px;
    height: 32px;
    place-items: center;
    border: 1px solid rgba(228, 202, 139, .26);
    border-radius: 10px;
    color: var(--yd-champagne);
    background: rgba(201, 168, 106, .09);
}

#screen-premium .premium-benefit-icon svg { width: 17px; height: 17px; }
#screen-premium .premium-benefit-title { color: var(--yd-ivory); font-size: var(--yd-text-sm); font-weight: var(--yd-weight-bold); }
#screen-premium .premium-benefit-desc { margin-top: 2px; color: var(--yd-muted); font-size: 12px; line-height: 1.35; }

#screen-premium .premium-plans { display: block; }
#screen-premium .premium-plans-title { margin: 0 0 10px; color: var(--yd-ivory); font-size: var(--yd-text-base); }
#screen-premium .premium-plans-grid { display: grid; gap: 10px; }

#screen-premium .premium-plan-option {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr) auto;
    gap: 10px;
    width: 100%;
    padding: 14px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 14px;
    color: var(--yd-ivory);
    text-align: left;
    background: rgba(255, 255, 255, .025);
    cursor: pointer;
    transition: border-color var(--yd-motion-fast), background var(--yd-motion-fast), transform var(--yd-motion-fast), box-shadow var(--yd-motion-fast);
}

#screen-premium .premium-plan-option[aria-checked="true"] {
    border-color: var(--yd-champagne);
    background: linear-gradient(115deg, rgba(201, 168, 106, .17), rgba(255,255,255,.035));
    box-shadow: 0 0 0 1px rgba(201, 168, 106, .16), 0 10px 26px rgba(0, 0, 0, .2);
}

#screen-premium .premium-plan-option:active { transform: scale(.985); }
#screen-premium .premium-plan-option:focus-visible,
#screen-premium .premium-checkout-cta:focus-visible { outline: 2px solid var(--yd-champagne-light); outline-offset: 3px; }

#screen-premium .premium-plan-radio { width: 16px; height: 16px; margin-top: 2px; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; }
#screen-premium .premium-plan-option[aria-checked="true"] .premium-plan-radio { border: 5px solid var(--yd-champagne); }
#screen-premium .premium-plan-copy { display: grid; gap: 3px; }
#screen-premium .premium-plan-label { font-size: var(--yd-text-sm); font-weight: var(--yd-weight-bold); }
#screen-premium .premium-plan-meta, #screen-premium .premium-plan-perday { color: var(--yd-muted); font-size: 11px; }
#screen-premium .premium-plan-price { display: grid; gap: 3px; text-align: right; }
#screen-premium .premium-plan-price strong { color: var(--yd-champagne-light); font-size: var(--yd-text-sm); }

#screen-premium .premium-telegram-note { min-height: 18px; margin: -5px 0 0; color: var(--yd-muted); font-size: 11px; line-height: 1.35; text-align: center; }
#screen-premium .premium-checkout-bar { position: sticky; bottom: 0; z-index: 2; }
#screen-premium .premium-checkout-cta { width: 100%; min-height: 54px; border: 0; border-radius: 14px; color: #18130d; font-size: var(--yd-text-base); font-weight: var(--yd-weight-bold); background: linear-gradient(110deg, #b98940, var(--yd-champagne-light), #b98940); box-shadow: 0 12px 30px rgba(201, 168, 106, .2); }
#screen-premium .premium-checkout-cta:disabled { opacity: .55; box-shadow: none; cursor: not-allowed; }
#screen-premium .premium-status-card { border-color: rgba(228, 202, 139, .36); background: linear-gradient(135deg, rgba(201,168,106,.18), rgba(255,255,255,.03)); }
#screen-premium .premium-membership-days { margin-top: 4px; color: var(--yd-champagne); font-size: var(--yd-text-sm); }
#screen-premium .premium-manage-cta, #screen-premium .premium-back-btn { min-height: 46px; border-color: rgba(228, 202, 139, .32); color: var(--yd-champagne-light); background: transparent; }



/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Challenges
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 32.1–32.5: Challenges with screen-layout, card-glass
   interactive cards with progress bars, reward badges, difficulty colors,
   tabular-nums timer.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout (Req 32.1: .screen-layout) ─── */
#screen-challenges .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-challenges .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-challenges .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.challenges-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-4);
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ─── Challenge Cards (Req 32.2: .card-glass.card-interactive + progress) ─── */
.challenge-card {
    background: var(--yd-glass-medium);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--yd-glass-border);
    border-radius: var(--radius-card);
    padding: var(--yd-space-card-padding);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
    transition: border-color var(--yd-motion-fast), transform var(--yd-motion-fast);
}

.challenge-card:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

.challenge-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--yd-space-2);
}

.challenge-card-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    flex: 1;
    min-width: 0;
}

.challenge-card-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
}

/* ─── Difficulty Badges (Req 32.4: sage=easy, champagne=medium, rose=hard) ─── */
.challenge-difficulty {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--yd-tracking-caps);
    white-space: nowrap;
}

.challenge-difficulty.is-easy {
    background: rgba(120, 155, 138, .15);
    color: var(--yd-sage);
    border: 1px solid rgba(120, 155, 138, .3);
}

.challenge-difficulty.is-medium {
    background: rgba(201, 168, 106, .12);
    color: var(--yd-champagne);
    border: 1px solid var(--yd-line-gold);
}

.challenge-difficulty.is-hard {
    background: rgba(217, 107, 130, .12);
    color: var(--yd-rose);
    border: 1px solid rgba(217, 107, 130, .3);
}

/* ─── Progress Bar ─── */
.challenge-progress {
    position: relative;
    width: 100%;
    height: 8px;
    border-radius: var(--radius-pill);
    background: rgba(255, 255, 255, .08);
    overflow: hidden;
}

.challenge-progress-fill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: var(--radius-pill);
    background: linear-gradient(90deg, var(--yd-champagne-700), var(--yd-champagne));
    box-shadow: var(--yd-glow-gold);
    transition: width var(--yd-motion-base);
}

.challenge-progress-text {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    font-variant-numeric: tabular-nums;
    margin-top: var(--yd-space-1);
}

/* ─── Timer (Req 32.5: font-variant-numeric: tabular-nums) ─── */
.challenge-timer {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-muted);
    font-variant-numeric: tabular-nums;
    display: flex;
    align-items: center;
    gap: var(--yd-space-1);
}

/* ─── Reward Badges (Req 32.3: .badge-gold) ─── */
.challenge-reward {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--yd-space-1);
    padding: 4px 10px;
    border-radius: var(--radius-pill);
    background: var(--yd-champagne);
    color: var(--yd-neutral-950);
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    white-space: nowrap;
}

/* ─── Card Footer ─── */
.challenge-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--yd-space-2);
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Achievements
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 33.1–33.5: Achievements grid with card-base cells, locked
   state with opacity + lock overlay, unlocked state with glow hover, icon
   circles with gradient bg, title/description typography.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Layout ─── */
#screen-achievements .screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

#screen-achievements .screen-header {
    padding: var(--yd-space-4) var(--yd-space-screen-x);
    flex-shrink: 0;
}

#screen-achievements .screen-header-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
}

.achievements-content {
    padding: 0 var(--yd-space-screen-x) var(--yd-space-6);
}

/* ─── Grid (Req 33.1: CSS Grid .card-base per cell) ─── */
.achievements-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--yd-space-3);
}

/* ─── Achievement Cell ─── */
.achievement-cell {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: var(--radius-card);
    overflow: hidden;
    padding: var(--yd-space-4) var(--yd-space-2);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--yd-space-2);
    position: relative;
    transition: box-shadow var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

/* ─── Unlocked State (Req 33.3: full opacity + --yd-glow-gold hover) ─── */
.achievement-cell.is-unlocked {
    opacity: 1;
}

.achievement-cell.is-unlocked:active {
    box-shadow: var(--yd-glow-gold);
    border-color: var(--yd-line-gold);
}

/* ─── Locked State (Req 33.2: opacity 0.4 + lock overlay) ─── */
.achievement-cell.is-locked {
    opacity: 0.4;
    pointer-events: none;
}

.achievement-cell.is-locked::after {
    content: '';
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(11, 11, 16, .3);
    border-radius: var(--radius-card);
}

.achievement-lock-icon {
    position: absolute;
    top: var(--yd-space-2);
    right: var(--yd-space-2);
    width: 16px;
    height: 16px;
    color: var(--yd-muted);
    z-index: var(--yd-z-base);
}

/* ─── Icon Circle (Req 33.4: 48px circles with subtle gradient bg) ─── */
.achievement-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, rgba(201, 168, 106, .12), rgba(169, 67, 91, .12));
    color: var(--yd-champagne);
    font-size: var(--yd-text-xl);
    flex-shrink: 0;
}

.achievement-cell.is-unlocked .achievement-icon {
    box-shadow: 0 0 16px rgba(201, 168, 106, .2);
}

/* ─── Text (Req 33.5: title --yd-text-sm bold, desc --yd-text-xs muted) ─── */
.achievement-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

.achievement-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
}

/* ─── Counter / Progress (optional unlocked meta) ─── */
.achievement-meta {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-champagne);
    font-variant-numeric: tabular-nums;
}


/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Quests
   ═══════════════════════════════════════════════════════════════════════════
   Requirements 27.1–27.5: Daily reward card with .card-accent + gold glow,
   quest list items using .list-item pattern, progress bars using
   .progress-bar.progress-gold.progress-sm, badge-success for completed
   quests, and champagne XP reward display.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Screen Layout ─── */
#screen-quests .screen-header h2 {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

/* ─── Daily Reward Card (Req 27.1: .card-accent + --yd-glow-gold) ─── */
.daily-reward-card {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-card-padding);
    margin: var(--yd-space-3) var(--yd-space-screen-x);
    background: var(--yd-surface);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold);
    overflow: hidden;
}

.daily-reward-claimed {
    border-color: var(--yd-glass-border-gold);
    box-shadow: none;
}

.daily-reward-icon {
    font-size: var(--yd-text-2xl);
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.daily-reward-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.daily-reward-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
}

.daily-reward-streak {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
}

.daily-reward-xp {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
    margin-top: var(--yd-space-1);
}

.daily-reward-next {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-neutral-400);
    margin-top: var(--yd-space-1);
}

.daily-reward-xp-earned {
    font-family: var(--yd-font);
    font-size: var(--yd-text-md);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
    margin-top: var(--yd-space-1);
}

.daily-reward-xp-anim {
    animation: yd-scale-in var(--yd-duration-slow) var(--yd-ease-bounce);
}

.daily-reward-badge {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-rose-soft);
    margin-top: var(--yd-space-1);
}

.daily-reward-card .btn {
    align-self: center;
}

/* ─── Quest List (Req 27.2: .list-item pattern) ─── */
.quests-list {
    display: flex;
    flex-direction: column;
    padding: 0 var(--yd-space-screen-x);
}

.quest-card {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--yd-space-3);
    padding: var(--yd-space-3) 0;
    border-bottom: 1px solid var(--yd-line);
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

.quest-card:last-child {
    border-bottom: none;
}

.quest-card:active {
    transform: scale(.98);
    border-color: var(--yd-champagne);
}

.quest-complete {
    border-color: rgba(120, 155, 138, .15);
}

.quest-claimed {
    opacity: .55;
    pointer-events: none;
}

/* ─── Quest Icon ─── */
.quest-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--yd-raised);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--yd-text-lg);
    flex-shrink: 0;
}

/* ─── Quest Info ─── */
.quest-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}

.quest-name {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: var(--yd-leading-tight);
}

.quest-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: var(--yd-leading-normal);
    margin-bottom: var(--yd-space-2);
}

/* ─── Quest Progress (Req 27.3: .progress-bar.progress-gold.progress-sm) ─── */
.quest-progress-bar {
    position: relative;
    width: 100%;
    height: 4px;
    border-radius: var(--radius-pill);
    background: rgba(255, 255, 255, .08);
    overflow: hidden;
}

.quest-progress-fill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: var(--radius-pill);
    background: linear-gradient(90deg, var(--yd-champagne-700), var(--yd-champagne));
    box-shadow: var(--yd-glow-gold);
    transition: width var(--yd-motion-base);
}

.quest-complete .quest-progress-fill {
    background: var(--yd-sage);
    box-shadow: var(--yd-glow-success);
}

.quest-progress-text {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-medium);
    color: var(--yd-neutral-400);
    margin-top: var(--yd-space-1);
    font-variant-numeric: tabular-nums;
}

/* ─── Quest Action (Req 27.4 & 27.5) ─── */
.quest-action {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

/* Req 27.4: .badge-success for completed quests */
.quest-done {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: var(--radius-pill);
    background: var(--yd-sage);
    color: var(--yd-neutral-950);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-black);
    line-height: 1;
}

/* Req 27.5: XP reward display —yd-champagne + text-sm weight-bold */
.quest-pending {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
    font-variant-numeric: tabular-nums;
}

/* ─── Quest Empty State ─── */
.quests-empty {
    text-align: center;
    padding: var(--yd-space-10) var(--yd-space-5);
    color: var(--yd-muted);
}

.quests-empty-icon {
    font-size: var(--yd-text-3xl);
    margin-bottom: var(--yd-space-3);
    line-height: 1;
}

.quests-empty p {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-normal);
    color: var(--yd-muted);
    line-height: var(--yd-leading-normal);
    margin: 0;
}

/* Premium AI chat */
.chat-view { display:flex; flex-direction:column; min-height:calc(100dvh - 116px); overflow:hidden; border:1px solid rgba(215,183,122,.15); border-radius:24px; background:radial-gradient(circle at 80% 10%,rgba(215,183,122,.10),transparent 34%),#13131b; box-shadow:0 18px 48px rgba(0,0,0,.22); }
.chat-header-bar { display:flex; align-items:center; gap:12px; padding:13px 15px; border-bottom:1px solid rgba(255,255,255,.08); background:rgba(23,22,31,.92); backdrop-filter:blur(16px); }
.chat-back { min-height:40px; padding:0 10px; font-size:.78rem; }
.chat-partner { display:flex; align-items:center; gap:10px; min-width:0; flex:1; }
.chat-partner-photo { overflow:hidden; border:2px solid rgba(215,183,122,.58); border-radius:50%; box-shadow:0 0 0 4px rgba(215,183,122,.08); }
.chat-partner-name { overflow:hidden; color:#f7f3ed; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.chat-partner-name::after { display:block; content:'Personaj virtual AI'; color:#c6a86d; font-size:.66rem; font-weight:500; letter-spacing:.04em; }
.chat-messages { flex:1; min-height:280px; padding:18px 12px 12px; background:linear-gradient(180deg,rgba(255,255,255,.015),transparent); }
.chat-row { margin:8px 0; }
.chat-row.mine { display:flex; justify-content:flex-end; }
.chat-bubble { max-width:min(82%,440px); padding:11px 13px; border:1px solid rgba(255,255,255,.08); border-radius:18px 18px 18px 5px; color:#eae4da; background:#22212c; box-shadow:0 5px 14px rgba(0,0,0,.12); line-height:1.42; }
.chat-bubble.mine { border-color:rgba(215,183,122,.28); border-radius:18px 18px 5px 18px; color:#201d19; background:linear-gradient(135deg,#e8d09b,#b99356); }
.chat-bubble.pending { opacity:.62; }
.chat-ai-label { margin-bottom:4px; color:#c6a86d; font-size:.65rem; letter-spacing:.04em; }
.chat-meta { margin-top:5px; color:rgba(255,255,255,.52); font-size:.66rem; }
.chat-bubble.mine .chat-meta { color:rgba(32,29,25,.62); }
.chat-compose { display:flex; align-items:center; gap:8px; padding:10px; border-top:1px solid rgba(255,255,255,.08); background:#17161f; }
.chat-compose input { flex:1; min-width:0; min-height:45px; padding:0 14px; border:1px solid rgba(255,255,255,.12); border-radius:15px; color:#f7f3ed; background:#24232d; outline:none; }
.chat-compose input:focus { border-color:#d7b77a; box-shadow:0 0 0 3px rgba(215,183,122,.14); }
.chat-photo-trigger, .chat-send { min-width:45px; min-height:45px; border-radius:14px; }
.chat-photo-trigger { border:1px solid rgba(215,183,122,.3); color:#d7b77a; background:rgba(215,183,122,.08); font-size:1.25rem; cursor:pointer; }
.chat-compose-footer { display:flex; justify-content:space-between; padding:0 14px 10px; color:#8f8b84; font-size:.68rem; background:#17161f; }
.discover-filters-sheet { position:fixed; inset:0; z-index:121; display:none; align-items:flex-end; background:rgba(8,8,12,.72); backdrop-filter:blur(12px); }
.discover-filters-sheet.active { display:flex; }
.discover-filters-dialog { width:100%; max-height:90vh; overflow:auto; border-radius:28px 28px 0 0; background:#17161f; box-shadow:0 -24px 70px rgba(0,0,0,.42); }
.discover-filters-body { padding:26px 22px 30px; }
.discover-filters-body h2 { margin:4px 0 22px; color:#f7f3ed; }
.discover-filters-body label { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:14px 0; color:#d8d0c4; font-size:.92rem; }
.discover-filters-body input, .discover-filters-body select { min-height:42px; max-width:62%; padding:8px 10px; border:1px solid rgba(255,255,255,.14); border-radius:10px; color:#f7f3ed; background:#23222c; }
.discover-filters-body label > span { display:flex; align-items:center; gap:7px; }
.discover-filters-body label > span input { width:72px; }
.discover-filter-check { justify-content:flex-start !important; }
.discover-filter-check input { width:20px; min-height:20px; accent-color:#d7b77a; }
.discover-filters-actions { display:flex; gap:10px; margin-top:24px; }
.discover-filters-actions button { flex:1; min-height:46px; }

/* ═══════════════════════════════════════════════════════════════════════════
   ═ SCREEN: Benefits Hub (Beneficii)
   ═══════════════════════════════════════════════════════════════════════════ */

#screen-benefits {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.benefits-hub {
    width: min(100%, 460px);
    margin: 0 auto;
    padding: 0 var(--yd-space-screen-x) var(--yd-space-8);
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-6);
}

.benefits-notice-banner {
    padding: var(--yd-space-2) var(--yd-space-4);
    background: rgba(169, 67, 91, 0.2);
    border: 1px solid rgba(169, 67, 91, 0.4);
    border-radius: var(--radius-sm);
    color: var(--yd-rose-soft);
    font-size: var(--yd-text-sm);
    text-align: center;
}

.benefits-section {
    display: flex;
    flex-direction: column;
    gap: var(--yd-space-3);
}

.benefits-section-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 0 4px;
}

.benefits-section-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-lg);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-section-kicker {
    font-family: var(--yd-font);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
    letter-spacing: var(--yd-tracking-caps);
    text-transform: uppercase;
}

/* ─── 1. Membership Hero ─── */
.benefits-membership-card {
    position: relative;
    padding: var(--yd-space-6);
    background:
        radial-gradient(circle at 90% 10%, rgba(201, 168, 106, 0.18), transparent 42%),
        linear-gradient(180deg, rgba(169, 67, 91, 0.22), var(--yd-surface) 48%);
    border: 1px solid var(--yd-line-gold);
    border-radius: var(--radius-card);
    box-shadow: var(--yd-glow-gold), var(--yd-shadow-md);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
}

.benefits-membership-card--active {
    background:
        radial-gradient(circle at 90% 10%, rgba(201, 168, 106, 0.25), transparent 40%),
        linear-gradient(180deg, rgba(125, 47, 65, 0.3), var(--yd-surface) 52%);
    border: 1px solid rgba(201, 168, 106, 0.4);
}

.benefits-hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: rgba(201, 168, 106, 0.12);
    border: 1px solid rgba(201, 168, 106, 0.28);
    border-radius: var(--radius-pill);
    color: var(--yd-champagne-light);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    letter-spacing: var(--yd-tracking-caps);
    margin-bottom: var(--yd-space-3);
}

.benefits-hero-icon {
    width: 14px;
    height: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.benefits-hero-icon svg {
    width: 14px;
    height: 14px;
}

.benefits-hero-title {
    font-family: var(--yd-font);
    font-size: clamp(22px, 6vw, 28px);
    font-weight: var(--yd-weight-black);
    color: var(--yd-ivory);
    line-height: var(--yd-leading-tight);
    margin: 0 0 var(--yd-space-2);
}

.benefits-hero-subtitle {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
    margin: 0 0 var(--yd-space-4);
}

.benefits-hero-price-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: var(--yd-space-4);
}

.benefits-price-label {
    font-size: var(--yd-text-sm);
    color: var(--yd-neutral-400);
}

.benefits-price-tag {
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-champagne);
}

.benefits-hero-status-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: var(--yd-space-4);
}

.benefits-plan-tag {
    padding: 3px 8px;
    background: rgba(201, 168, 106, 0.15);
    border-radius: 6px;
    color: var(--yd-champagne-light);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-semibold);
}

.benefits-expiry-tag {
    font-size: var(--yd-text-sm);
    color: var(--yd-sage);
    font-weight: var(--yd-weight-medium);
}

.benefits-hero-cta-bar {
    display: flex;
}

.benefits-cta-btn {
    width: 100%;
}

/* ─── 2. Quick Actions ─── */
.benefits-quick-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.benefits-quick-card {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: 18px;
    padding: var(--yd-space-4);
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: transform var(--yd-motion-fast), border-color var(--yd-motion-fast);
}

.benefits-quick-card:last-child:nth-child(odd) {
    grid-column: span 2;
}

.benefits-quick-card.is-active {
    border-color: var(--yd-line-gold);
    background:
        radial-gradient(circle at top right, rgba(201, 168, 106, 0.1), transparent 45%),
        var(--yd-surface);
}

.benefits-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.benefits-card-icon {
    width: 32px;
    height: 32px;
    border-radius: 10px;
    background: rgba(201, 168, 106, 0.1);
    border: 1px solid rgba(201, 168, 106, 0.2);
    color: var(--yd-champagne);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.benefits-card-icon svg {
    width: 18px;
    height: 18px;
}

.benefits-card-badge {
    font-size: 11px;
    font-weight: var(--yd-weight-medium);
    color: var(--yd-champagne-light);
    background: rgba(201, 168, 106, 0.08);
    padding: 2px 6px;
    border-radius: 6px;
    white-space: nowrap;
}

.benefits-card-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-card-desc {
    font-family: var(--yd-font);
    font-size: 12px;
    color: var(--yd-muted);
    line-height: 1.35;
    margin: 0;
    flex: 1;
}

.benefits-card-cta {
    width: 100%;
    margin-top: 4px;
}

/* ─── 3. Go Viral ─── */
.benefits-viral-cards {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.benefits-viral-card {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: 20px;
    padding: var(--yd-space-4);
    position: relative;
    overflow: hidden;
}

.benefits-viral-reward-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px;
    background: rgba(169, 67, 91, 0.15);
    border: 1px solid rgba(169, 67, 91, 0.3);
    border-radius: var(--radius-pill);
    color: var(--yd-rose-soft);
    font-size: var(--yd-text-xs);
    font-weight: var(--yd-weight-bold);
    margin-bottom: var(--yd-space-3);
}

.benefits-viral-body {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.benefits-viral-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.benefits-viral-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-viral-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
    margin: 0;
}

.benefits-viral-stats {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-top: 6px;
}

.benefits-stat-num {
    font-size: var(--yd-text-xl);
    font-weight: var(--yd-weight-black);
    color: var(--yd-champagne);
}

.benefits-stat-label {
    font-size: var(--yd-text-sm);
    color: var(--yd-neutral-400);
}

.benefits-viral-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}

.benefits-viral-actions .btn-primary {
    flex: 2;
}

.benefits-viral-actions .btn-secondary {
    flex: 1;
}

.benefits-viral-card--compact .benefits-viral-body {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.benefits-tag-pill {
    display: inline-block;
    align-self: flex-start;
    padding: 2px 6px;
    background: rgba(201, 168, 106, 0.12);
    border-radius: 6px;
    color: var(--yd-champagne-light);
    font-size: 10px;
    font-weight: var(--yd-weight-bold);
    letter-spacing: .02em;
    margin-bottom: 2px;
}

/* ─── 4. Activity and Rewards ─── */
.benefits-activity-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 360px) {
    .benefits-activity-grid {
        grid-template-columns: 1fr;
    }
}

.benefits-activity-card {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: 18px;
    padding: var(--yd-space-4);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.benefits-act-header {
    display: flex;
    align-items: center;
    gap: 10px;
}

.benefits-act-icon {
    font-size: 22px;
}

.benefits-act-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-act-subtitle {
    font-size: 11px;
    color: var(--yd-champagne-light);
}

.benefits-act-copy {
    font-size: 12px;
    color: var(--yd-muted);
    line-height: 1.35;
    margin: 0;
    flex: 1;
}

.benefits-gifts-section {
    background: var(--yd-surface);
    border: 1px solid var(--yd-line);
    border-radius: 20px;
    padding: var(--yd-space-4);
}

.benefits-subsection-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--yd-space-3);
}

.benefits-subsection-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-gifts-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.benefits-gift-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background: var(--yd-raised);
    border-radius: 12px;
}

.benefits-gift-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(201, 168, 106, 0.1);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}

.benefits-gift-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.benefits-gift-info {
    flex: 1;
    min-width: 0;
}

.benefits-gift-sender {
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    color: var(--yd-ivory);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.benefits-gift-msg {
    font-size: 12px;
    color: var(--yd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.benefits-empty-state {
    text-align: center;
    padding: var(--yd-space-6) var(--yd-space-3);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.benefits-empty-icon {
    font-size: 32px;
    margin-bottom: 2px;
}

.benefits-empty-title {
    font-family: var(--yd-font);
    font-size: var(--yd-text-base);
    font-weight: var(--yd-weight-bold);
    color: var(--yd-ivory);
    margin: 0;
}

.benefits-empty-desc {
    font-family: var(--yd-font);
    font-size: var(--yd-text-sm);
    color: var(--yd-muted);
    line-height: var(--yd-leading-relaxed);
    margin: 0 0 8px;
    max-width: 280px;
}

/* source: webapp/css/src/90-compatibility.css */
/* Mechanically migrated compatibility selectors. New styles belong in owned modules. */
/* ═══════════════════════════════════════════════════════════════
   Y-Date — Premium Dark Theme CSS
   Telegram Mini App Dating Platform
   ═══════════════════════════════════════════════════════════════ */



* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    font-family: -apple-system, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif;
    background: var(--bg-primary);
    color: var(--text-primary);
    min-height: 100vh;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

/* ── HUD Bar ────────────────────────────────────────────── */
.hud {
    position: fixed; top: 0; left: 0; right: 0;
    height: var(--hud-height);
    background: rgba(29,27,34, 0.95);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 16px;
    z-index: 100;
    border-bottom: 1px solid var(--border);
}
@supports (backdrop-filter: blur(20px)) {
    .hud {
        background: var(--bg-glass);
        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
    }
}

.hud-energy { display: flex; align-items: center; gap: 6px; }
.hud-icon { font-size: 16px; }
#hud-energy-text { font-size: 13px; font-weight: 700; color: var(--energy); min-width: 40px; }
.hud-energy-bar { width: 60px; height: 6px; background: rgba(201,168,106,0.15); border-radius: 3px; overflow: hidden; }
.hud-energy-fill { height: 100%; background: linear-gradient(90deg, var(--energy), var(--yd-champagne)); border-radius: 3px; transition: width 0.5s ease; }
.hud-timer { font-size: 11px; color: var(--text-dim); min-width: 30px; }
.hud-potion-btn { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: var(--bg-card); border: 1px solid var(--energy); font-size: 16px; cursor: pointer; padding: 0; transition: opacity 0.2s ease, transform 0.15s ease; }
.hud-potion-btn:active { transform: scale(0.9); }
.hud-potion-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.hud-xp { display: flex; align-items: center; gap: 6px; }
.hud-level { font-size: 13px; font-weight: 700; color: var(--xp); background: rgba(255,215,0,0.1); padding: 2px 8px; border-radius: 10px; }
.hud-xp-bar { width: 60px; height: 6px; background: rgba(255,215,0,0.15); border-radius: 3px; overflow: hidden; }
.hud-xp-fill { height: 100%; background: linear-gradient(90deg, var(--xp), #ffa500); border-radius: 3px; transition: width 0.5s ease; }
.hud-xp-text { font-size: 11px; color: var(--text-dim); }

/* ── Screens ────────────────────────────────────────────── */
.screen {
    display: none;
    padding-top: calc(var(--hud-height) + 8px);
    padding-bottom: calc(var(--nav-height) + 16px);
    min-height: 100vh;
    max-width: 400px;
    margin: 0 auto;
}
.screen.active { display: block; }
.screen-header { padding: 16px; text-align: center; }
.screen-header h2 { font-size: 20px; font-weight: 700; }

/* ── Loading ────────────────────────────────────────────── */
.loading-container {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    height: 80vh; gap: 20px;
}
.loading-heart { font-size: 64px; animation: pulse 1.5s infinite; }
.loading-text { color: var(--text-secondary); font-size: 16px; }
.loading-spinner {
    width: 32px; height: 32px;
    border: 3px solid var(--border); border-top-color: var(--accent);
    border-radius: 50%; animation: spin 0.8s linear infinite;
}
@keyframes pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.2); } }
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Onboarding ─────────────────────────────────────────── */
.onboarding { padding: 16px; max-width: 400px; margin: 0 auto; }
.onboarding-progress { width: 100%; height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 24px; }
.onboarding-bar { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-light)); border-radius: 2px; transition: width 0.4s ease; }
.onboarding-step { animation: fadeInUp 0.3s ease; }
.onboarding-step h3 { font-size: 22px; margin-bottom: 8px; color: var(--accent-light); }
.onboarding-step p { color: var(--text-secondary); margin-bottom: 20px; font-size: 14px; }
.onboarding-step input, .onboarding-step textarea {
    width: 100%; padding: 14px 16px; background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius-sm); color: var(--text-primary); font-size: 16px; outline: none;
    transition: border-color 0.3s; margin-bottom: 16px;
}
.onboarding-step input:focus, .onboarding-step textarea:focus { border-color: var(--accent); }
.onboarding-step textarea { resize: none; height: 100px; }

.option-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.option-btn {
    padding: 16px; background: var(--bg-card); border: 2px solid var(--border);
    border-radius: var(--radius); text-align: center; cursor: pointer;
    transition: all 0.3s; font-size: 15px;
}
.option-btn:active, .option-btn.selected { border-color: var(--accent); background: var(--accent-glow); transform: scale(0.97); }
.option-btn .option-icon { font-size: 28px; display: block; margin-bottom: 6px; }

.photo-upload {
    width: 150px; height: 150px; margin: 0 auto 16px; border-radius: 50%;
    background: var(--bg-card); border: 3px dashed var(--border);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: border-color 0.3s; overflow: hidden;
}
.photo-upload:active { border-color: var(--accent); }
.photo-upload img { width: 100%; height: 100%; object-fit: cover; }
.photo-upload .upload-icon { font-size: 40px; color: var(--text-dim); }

/* ── Swipe Cards ────────────────────────────────────────── */
.cards-container {
    position: relative; width: 100%; max-width: 400px; height: calc(100vh - 180px);
    margin: 0 auto; padding: 0 16px;
}

.swipe-card {
    position: absolute; top: 0; left: 16px; right: 16px;
    height: 85%; background: var(--bg-card); border-radius: var(--radius);
    overflow: hidden; box-shadow: var(--shadow);
    touch-action: none; cursor: grab; user-select: none;
    transition: box-shadow 0.3s;
    will-change: transform;
}
.swipe-card:active { cursor: grabbing; }
.swipe-card .card-photo {
    width: 100%; height: 65%; object-fit: cover; pointer-events: none;
    background: var(--bg-secondary);
}
/* ── Legend Gold Border ─────────────────────────────────── */
.swipe-card .card-photo-legend { border: 3px solid var(--xp); border-radius: var(--radius); box-shadow: 0 0 12px rgba(255, 215, 0, 0.3); }
.profile-photo-legend { border: 3px solid var(--xp); box-shadow: 0 0 16px rgba(255, 215, 0, 0.3); }
.swipe-card .card-info { padding: 16px; }
.swipe-card .card-name { font-size: 22px; font-weight: 700; margin-bottom: 4px; }
.swipe-card .card-detail { font-size: 14px; color: var(--text-secondary); margin-bottom: 4px; }
.swipe-card .card-bio { font-size: 13px; color: var(--text-dim); font-style: italic; margin-top: 8px; line-height: 1.4; }
.swipe-card .card-level { display: inline-block; background: rgba(255,215,0,0.1); color: var(--xp); padding: 2px 8px; border-radius: 10px; font-size: 12px; font-weight: 600; }

.swipe-card .card-overlay {
    position: absolute; top: 50%; left: 50%; transform: translate3d(-50%, -50%, 0);
    font-size: 72px; opacity: 0; transition: opacity 0.15s;
    text-shadow: 0 4px 20px rgba(0,0,0,0.5);
    will-change: opacity;
}
.swipe-card.swiping-right .card-overlay-like { opacity: 1; }
.swipe-card.swiping-left .card-overlay-skip { opacity: 1; }

.swipe-buttons {
    position: absolute; bottom: 0; left: 0; right: 0;
    display: flex; justify-content: center; gap: 24px; padding: 16px;
}
.swipe-btn {
    width: 60px; height: 60px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 28px; border: none; cursor: pointer; transition: all 0.2s;
}
.swipe-btn:active { transform: scale(0.9); }
.swipe-btn-skip { background: rgba(255,68,68,0.15); color: var(--danger); }
.swipe-btn-like { background: rgba(120,155,138,0.15); color: var(--success); }
.swipe-btn-like:active { background: rgba(120,155,138,0.3); }
.swipe-btn-skip:active { background: rgba(255,68,68,0.3); }

/* ── Match Celebration ──────────────────────────────────── */
.match-celebration {
    position: fixed; inset: 0; z-index: 200;
    background: radial-gradient(ellipse at center, var(--yd-raised) 0%, var(--bg-primary) 100%);
    display: flex; align-items: center; justify-content: center;
}
#confetti-canvas { position: absolute; inset: 0; pointer-events: none; }
.match-content { text-align: center; z-index: 1; padding: 24px; }
.match-title { font-size: 40px; font-weight: 800; color: var(--accent); margin-bottom: 24px; animation: matchPop 0.6s ease; }
@keyframes matchPop { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.3); } 100% { transform: scale(1); opacity: 1; } }
.match-photos { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 24px; animation: matchPop 0.6s ease 0.2s both; }
.match-photo { width: 100px; height: 100px; border-radius: 50%; overflow: hidden; border: 3px solid var(--accent); background: var(--bg-card); }
.match-photo img { width: 100%; height: 100%; object-fit: cover; }
.match-heart { font-size: 32px; animation: pulse 1s infinite; }
.match-icebreaker { font-size: 15px; color: var(--text-secondary); font-style: italic; margin-bottom: 24px; padding: 16px; background: var(--bg-glass); border-radius: var(--radius); border: 1px solid var(--border); }
.match-actions { display: flex; flex-direction: column; gap: 12px; animation: fadeInUp 0.4s ease 0.4s both; }

/* ── Matches List ───────────────────────────────────────── */
.matches-list { padding: 0 16px; /* PERF FIX (Req 36.1): removed transition: padding (layout trigger) */ }
.matches-list.chat-open { padding: 0; }
.match-item {
    display: flex; align-items: center; gap: 12px; padding: 14px;
    background: var(--bg-card); border-radius: var(--radius); margin-bottom: 10px;
    cursor: pointer; transition: background 0.2s;
}
.match-item:active { background: var(--bg-secondary); }
.match-item-photo { width: 52px; height: 52px; border-radius: 50%; overflow: hidden; flex-shrink: 0; background: var(--bg-secondary); }
.match-item-photo img { width: 100%; height: 100%; object-fit: cover; }
.match-item-info { flex: 1; }
.match-item-name { font-weight: 600; font-size: 15px; }
.match-item-detail { font-size: 12px; color: var(--text-dim); margin-top: 2px; }
.match-item-icebreaker { font-size: 12px; color: var(--text-secondary); font-style: italic; margin-top: 4px; }
.match-item-chat { font-size: 24px; }

.chat-list { display: flex; flex-direction: column; gap: 10px; }
.chat-list-item {
    display: flex; align-items: center; gap: 12px; padding: 14px;
    background: var(--bg-card); border-radius: var(--radius); cursor: pointer;
    border: 1px solid transparent;
}
.chat-list-item:active { background: var(--bg-secondary); }
.chat-list-item.has-unread {
    border-color: rgba(169,67,91, 0.35);
    box-shadow: inset 0 0 0 1px rgba(169,67,91, 0.15);
}
.chat-list-photo {
    width: 52px; height: 52px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center; background: var(--bg-secondary);
}
.chat-list-photo img { width: 100%; height: 100%; object-fit: cover; }
.avatar-image { display: block; object-fit: cover; }
.avatar-fallback {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}
.chat-list-main { flex: 1; min-width: 0; }
.chat-list-top, .chat-list-bottom {
    display: flex; justify-content: space-between; align-items: center; gap: 8px;
}
.chat-list-name { font-weight: 700; font-size: 14px; }
.chat-list-time { font-size: 11px; color: var(--text-dim); }
.chat-list-preview {
    color: var(--text-secondary); font-size: 13px; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis;
}
.chat-list-compliment {
    font-size: 12px; color: var(--accent-light); font-style: italic;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    margin-top: 2px;
}
.chat-unread {
    min-width: 20px; height: 20px; padding: 0 6px;
    border-radius: 10px; background: var(--accent); color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700;
}

.chat-view {
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--hud-height) - var(--nav-height) - 96px);
    min-height: 420px;
}
.matches-list.chat-open .chat-view {
    height: calc(100vh - var(--hud-height) - var(--nav-height));
    min-height: 420px;
    border-radius: 0;
    border-left: none;
    border-right: none;
}
.chat-header-bar {
    display: flex; align-items: center; gap: 10px;
    padding: 10px; border-bottom: 1px solid var(--border); background: var(--bg-secondary);
    position: sticky;
    top: 0;
    z-index: 2;
}
.chat-back { width: auto; padding: 10px 12px; border-radius: 12px; }
.chat-partner { display: flex; align-items: center; gap: 10px; min-width: 0; }
.chat-partner-photo {
    width: 34px; height: 34px; border-radius: 50%; overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    background: var(--bg-card);
}
.chat-partner-photo img { width: 100%; height: 100%; object-fit: cover; }
.chat-partner-name { font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.chat-messages {
    flex: 1;
    min-height: 0;
    height: auto;
    max-height: none;
    overflow-y: auto;
    padding: 14px 12px 18px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    scroll-behavior: smooth;
    background: linear-gradient(180deg, rgba(11,11,16, 0.4), rgba(11,11,16, 0.7));
}
.chat-day-separator {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 8px 0;
}
.chat-day-separator span {
    font-size: 11px;
    color: var(--text-dim);
    background: rgba(255, 255, 255, 0.06);
    padding: 3px 10px;
    border-radius: 999px;
}
.chat-empty {
    margin: auto;
    text-align: center;
    color: var(--text-secondary);
}
.chat-row { display: flex; margin-top: 2px; }
.chat-row.mine { justify-content: flex-end; }
.chat-row.theirs { justify-content: flex-start; }
.chat-bubble {
    max-width: 76%;
    padding: 10px 12px;
    border-radius: 16px;
    border: 1px solid var(--border);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.18);
}
.chat-bubble.pending {
    opacity: 0.85;
}
.chat-bubble.failed {
    border-color: rgba(255, 68, 68, 0.55);
    background: rgba(255, 68, 68, 0.12);
}
.chat-bubble.mine {
    background: rgba(169,67,91, 0.18);
    border-color: rgba(169,67,91, 0.35);
    border-bottom-right-radius: 6px;
}
.chat-bubble.theirs {
    background: rgba(255, 255, 255, 0.04);
    border-bottom-left-radius: 6px;
}
.chat-text { white-space: pre-wrap; word-break: break-word; font-size: 14px; }
.chat-meta { margin-top: 4px; font-size: 11px; color: var(--text-dim); text-align: right; }
.chat-retry {
    margin-top: 6px;
    border: 1px solid rgba(255, 68, 68, 0.45);
    background: rgba(255, 68, 68, 0.18);
    color: #ffd8d8;
    border-radius: 10px;
    padding: 4px 8px;
    font-size: 11px;
    cursor: pointer;
}
.chat-retry:active {
    transform: scale(0.97);
}

.chat-compose {
    display: flex; gap: 8px;
    padding: 10px 10px 8px 10px;
    border-top: 1px solid var(--border);
    background: var(--bg-secondary);
    position: sticky;
    bottom: 0;
    z-index: 2;
}
.chat-compose input {
    flex: 1;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--bg-card);
    color: var(--text-primary);
    padding: 11px 14px;
    font-size: 14px;
    outline: none;
    margin-bottom: 0;
}
.chat-send { width: auto; padding: 10px 15px; border-radius: 14px; min-width: 102px; }
.chat-send[disabled] {
    opacity: 0.65;
    cursor: not-allowed;
}
.chat-compose-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 12px 10px 12px;
    background: var(--bg-secondary);
    border-top: 1px dashed rgba(255, 255, 255, 0.06);
}
.chat-status {
    font-size: 11px;
    color: var(--text-dim);
}

@media (max-width: 480px) {
    .chat-bubble { max-width: 84%; }
    .matches-list.chat-open .chat-view { min-height: 0; }
}
.chat-status.ok {
    color: var(--text-dim);
}
.chat-status.error {
    color: #ff9f9f;
}
.chat-counter {
    font-size: 11px;
    color: var(--text-dim);
}

.chat-loading-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.chat-loading-row {
    height: 82px;
    border-radius: 14px;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04));
    background-size: 220% 100%;
    animation: chatShimmer 1.4s linear infinite;
}
.chat-loading-messages {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 240px;
    padding: 14px;
}
.chat-loading-bubble {
    width: 64%;
    height: 50px;
    border-radius: 14px;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04));
    background-size: 220% 100%;
    animation: chatShimmer 1.4s linear infinite;
}
.chat-loading-bubble.mine {
    margin-left: auto;
    width: 52%;
}
@keyframes chatShimmer {
    from { background-position: 220% 0; }
    to { background-position: -120% 0; }
}

/* ── Profile View ───────────────────────────────────────── */
.profile-view { padding: 0 16px; max-width: 400px; margin: 0 auto; }
.profile-photo-large {
    width: 120px; height: 120px; border-radius: 50%; margin: 0 auto 16px;
    overflow: hidden; border: 3px solid var(--accent); background: var(--bg-card);
}
.profile-photo-large img { width: 100%; height: 100%; object-fit: cover; }
.profile-detail { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--border); }
.profile-detail-label { color: var(--text-dim); font-size: 13px; }
.profile-detail-value { font-weight: 600; font-size: 14px; }
.profile-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 20px 0; }
.profile-stat { text-align: center; padding: 12px; background: var(--bg-card); border-radius: var(--radius-sm); }
.profile-stat-value { font-size: 20px; font-weight: 700; color: var(--accent); }
.profile-stat-label { font-size: 11px; color: var(--text-dim); margin-top: 4px; }

/* ── Referral ───────────────────────────────────────────── */
.referral-content { padding: 0 16px; max-width: 400px; margin: 0 auto; }
.video-call-overlay { position: fixed; inset: 0; z-index: 1000; background: #050509ee; display: grid; place-items: center; padding: 18px; }
.video-call-panel { width: min(92vw, 520px); position: relative; display: grid; gap: 12px; }
.video-call-panel video { width: 100%; aspect-ratio: 16/10; object-fit: cover; border-radius: 18px; background: #111; }
.video-call-panel video + video { position: absolute; width: 32%; right: 12px; top: 12px; border: 2px solid var(--accent); }
.referral-card { padding: 20px; background: linear-gradient(135deg, var(--bg-card), var(--yd-raised)); border-radius: var(--radius); text-align: center; margin-bottom: 16px; border: 1px solid var(--border); }
.referral-card h3 { margin-bottom: 8px; }
.referral-card p { color: var(--text-secondary); font-size: 14px; margin-bottom: 16px; }
.referral-link { width: 100%; padding: 12px 16px; background: var(--bg-primary); border: 1px solid var(--accent); border-radius: var(--radius-sm); color: var(--accent); font-size: 12px; text-align: center; word-break: break-all; cursor: pointer; }
.referral-link:active { background: var(--accent-glow); }
.referral-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.referral-stat { text-align: center; padding: 14px; background: var(--bg-card); border-radius: var(--radius-sm); }
.referral-stat-value { font-size: 24px; font-weight: 700; color: var(--energy); }
.referral-stat-label { font-size: 12px; color: var(--text-dim); margin-top: 4px; }

.leaderboard { background: var(--bg-card); border-radius: var(--radius); overflow: hidden; }
.leaderboard-title { padding: 14px 16px; font-weight: 700; border-bottom: 1px solid var(--border); }
.leaderboard-item { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--border); }
.leaderboard-item.is-me { background: var(--accent-glow); }
.leaderboard-rank { font-size: 18px; width: 30px; text-align: center; }
.leaderboard-name { flex: 1; font-size: 14px; }
.leaderboard-count { font-weight: 700; color: var(--energy); }

/* ── Daily Reward ───────────────────────────────────────── */
.daily-reward-card {
    display: flex; align-items: center; gap: 12px;
    padding: 16px; background: var(--bg-card);
    border-radius: var(--radius); box-shadow: var(--shadow);
    border: 1px solid var(--border); margin: 12px 16px;
}
.daily-reward-icon { font-size: 32px; }
.daily-reward-info { flex: 1; }
.daily-reward-title { font-size: 15px; font-weight: 700; color: var(--text-primary); margin-bottom: 2px; }
.daily-reward-streak { font-size: 13px; color: var(--text-secondary); }
.daily-reward-xp { font-size: 14px; font-weight: 700; color: var(--xp); margin-top: 4px; }
.daily-reward-next { font-size: 12px; color: var(--text-dim); margin-top: 4px; }
.daily-reward-card .btn { width: auto; padding: 10px 18px; font-size: 13px; min-height: 44px; }
.daily-reward-card .btn:disabled { opacity: 0.5; cursor: default; }
.daily-reward-claimed { border-color: rgba(255, 215, 0, 0.15); }
.daily-reward-xp-earned { font-size: 16px; font-weight: 700; color: var(--xp); margin-top: 4px; }
.daily-reward-xp-anim { animation: dailyXpPop 0.6s ease-out; }
.daily-reward-badge { font-size: 13px; color: var(--accent-light); margin-top: 4px; }
@keyframes dailyXpPop {
    0% { opacity: 0; transform: translateY(8px) scale(0.8); }
    50% { transform: translateY(-4px) scale(1.1); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── Quests ────────────────────────────────────────────── */
.quests-list { padding: 0 16px; display: flex; flex-direction: column; gap: 12px; }
.quest-card { display: flex; align-items: center; gap: 12px; padding: 16px; background: var(--bg-card); border-radius: var(--radius); box-shadow: var(--shadow); border: 1px solid var(--border); }
.quest-complete { border-color: rgba(120,155,138, 0.2); }
.quest-claimed { opacity: 0.6; }
.quest-icon { font-size: 28px; flex-shrink: 0; }
.quest-info { flex: 1; min-width: 0; }
.quest-name { font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 2px; }
.quest-desc { font-size: 12px; color: var(--text-secondary); margin-bottom: 8px; }
.quest-progress-bar { height: 6px; background: var(--bg-secondary); border-radius: 3px; overflow: hidden; }
.quest-progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-light)); border-radius: 3px; transition: width 0.3s ease; }
.quest-complete .quest-progress-fill { background: var(--success); }
.quest-progress-text { font-size: 11px; color: var(--text-dim); margin-top: 4px; }
.quest-action { flex-shrink: 0; }
.quest-action .btn-sm { padding: 8px 14px; font-size: 12px; min-height: 36px; }
.quest-done { color: var(--success); font-size: 20px; font-weight: 700; }
.quest-pending { font-size: 13px; color: var(--text-dim); font-weight: 600; }
.quests-empty { text-align: center; padding: 40px 20px; color: var(--text-dim); }
.quests-empty-icon { font-size: 40px; margin-bottom: 12px; }

/* ── Buttons ────────────────────────────────────────────── */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 14px 24px; border: none; border-radius: var(--radius);
    font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.2s;
    width: 100%; text-decoration: none;
}
.btn:active { transform: scale(0.97); }
.btn-primary { background: linear-gradient(135deg, var(--accent), var(--yd-burgundy)); color: #fff; }
.btn-secondary { background: var(--bg-card); color: var(--text-primary); border: 1px solid var(--border); }
.btn-large { padding: 16px 32px; font-size: 17px; }

/* ── Empty States ───────────────────────────────────────── */
.empty-state { text-align: center; padding: 40px 20px; }
.empty-icon { font-size: 48px; margin-bottom: 16px; }
.empty-state h3 { margin-bottom: 8px; }
.empty-state p { color: var(--text-secondary); margin-bottom: 20px; }
.energy-countdown { font-size: 24px; font-weight: 700; color: var(--energy); margin: 16px 0; }

/* ── Popup ──────────────────────────────────────────────── */
.popup {
    position: fixed; inset: 0; z-index: 300;
    background: rgba(0,0,0,0.7); backdrop-filter: blur(8px);
    display: flex; align-items: center; justify-content: center;
}
.popup-content {
    background: var(--bg-card); border-radius: var(--radius); padding: 32px 24px;
    text-align: center; max-width: 300px; width: 90%; animation: matchPop 0.3s ease;
}
.popup-icon { font-size: 48px; margin-bottom: 12px; }
.popup-content h3 { margin-bottom: 8px; }
.popup-content p { color: var(--text-secondary); margin-bottom: 20px; }

/* ── Energy Popup ──────────────────────────────────────── */
.energy-popup-content {
    position: relative;
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 32px 24px;
    text-align: center;
    max-width: 320px;
    width: 90%;
    animation: matchPop 0.3s ease;
    box-shadow: var(--shadow);
}
.energy-popup-close {
    position: absolute;
    top: 12px;
    right: 12px;
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 20px;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.energy-popup-title {
    font-size: 24px;
    font-weight: 700;
    color: var(--energy);
    margin-bottom: 8px;
}
.energy-popup-desc {
    color: var(--text-secondary);
    font-size: 14px;
    margin-bottom: 20px;
}
.energy-popup-options {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.energy-popup-btn {
    width: 100%;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.energy-popup-timer {
    font-variant-numeric: tabular-nums;
    color: var(--energy);
    font-weight: 600;
}

/* ── Loot Box ──────────────────────────────────────────── */
.lootbox-content {
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 32px 24px;
    text-align: center;
    max-width: 300px;
    width: 85%;
    box-shadow: var(--shadow);
    animation: matchPop 0.3s ease;
}
.lootbox-chest { font-size: 64px; margin-bottom: 16px; }
.lootbox-open-anim { animation: lootboxOpen 0.8s ease-out; }
.lootbox-reward { margin-bottom: 20px; }
.lootbox-reward-anim { animation: lootboxReveal 0.5s ease-out 0.6s both; }
.lootbox-reward-icon { font-size: 40px; margin-bottom: 8px; }
.lootbox-reward-label { font-size: 14px; color: var(--text-secondary); margin-bottom: 4px; }
.lootbox-reward-value { font-size: 20px; font-weight: 700; color: var(--xp); }
@keyframes lootboxOpen {
    0% { transform: scale(1) rotate(0deg); }
    25% { transform: scale(1.2) rotate(-10deg); }
    50% { transform: scale(1.3) rotate(10deg); }
    75% { transform: scale(1.1) rotate(-5deg); }
    100% { transform: scale(1) rotate(0deg); }
}
@keyframes lootboxReveal {
    0% { opacity: 0; transform: translateY(20px) scale(0.5); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── Level Up ──────────────────────────────────────────── */
.levelup-content { background: var(--bg-card); border-radius: var(--radius); padding: 32px 24px; text-align: center; max-width: 320px; width: 85%; box-shadow: var(--shadow); animation: matchPop 0.4s ease; }
.levelup-icon { font-size: 56px; margin-bottom: 12px; animation: pulse 1s ease infinite; }
.levelup-title { font-size: 22px; font-weight: 700; color: var(--xp); margin-bottom: 4px; }
.levelup-name { font-size: 16px; color: var(--text-primary); margin-bottom: 16px; }
.levelup-unlocks { text-align: left; margin-bottom: 20px; }
.levelup-unlock { display: flex; align-items: center; gap: 8px; padding: 8px 0; font-size: 13px; color: var(--text-secondary); border-bottom: 1px solid var(--border); }
.levelup-unlock:last-child { border-bottom: none; }

/* ── Bottom Nav ─────────────────────────────────────────── */
.bottom-nav {
    position: fixed; bottom: 0; left: 0; right: 0;
    height: var(--nav-height);
    background: rgba(29,27,34, 0.95);
    display: flex;
    border-top: 1px solid var(--border);
    z-index: 100;
}
@supports (backdrop-filter: blur(20px)) {
    .bottom-nav {
        background: var(--bg-glass);
        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
    }
}
.nav-btn {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: none; border: none; color: var(--text-dim); cursor: pointer;
    transition: color 0.2s; gap: 2px;
}
.nav-btn.active { color: var(--accent); }
.nav-btn:active { color: var(--accent-light); }
.nav-icon { font-size: 22px; }
.nav-label { font-size: 10px; font-weight: 500; }

/* ── Utilities ──────────────────────────────────────────── */
@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
.hidden { display: none !important; }


/* ── Leaderboard ───────────────────────────────────────── */
.leaderboard-content { padding: 0 16px; }
.lb-tabs { display: flex; gap: 8px; margin-bottom: 16px; }
.lb-tab { flex: 1; padding: 12px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-secondary); font-size: 13px; font-weight: 600; cursor: pointer; text-align: center; min-height: 44px; transition: all 0.2s; }
.lb-tab-active { background: var(--accent-glow); border-color: var(--accent); color: var(--text-primary); }
.lb-list { display: flex; flex-direction: column; gap: 8px; }
.lb-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--bg-card); border-radius: var(--radius-sm); border: 1px solid var(--border); }
.lb-item-me { border-color: var(--accent); background: var(--accent-glow); }
.lb-rank { font-size: 18px; font-weight: 700; min-width: 32px; text-align: center; }
.lb-photo { width: 40px; height: 40px; border-radius: 50%; overflow: hidden; background: var(--bg-secondary); display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; }
.lb-photo img { width: 100%; height: 100%; object-fit: cover; }
.lb-name { flex: 1; font-size: 14px; color: var(--text-primary); font-weight: 500; }
.lb-count { font-size: 13px; color: var(--text-secondary); font-weight: 600; white-space: nowrap; }
.lb-empty { text-align: center; padding: 40px 20px; color: var(--text-dim); font-size: 14px; }
.lb-separator { text-align: center; color: var(--text-dim); padding: 8px 0; font-size: 16px; letter-spacing: 4px; }

/* ── Flash Match ───────────────────────────────────────── */
.flash-match-banner {
    position: fixed; top: calc(var(--hud-height) + 4px); left: 50%; transform: translateX(-50%);
    display: none; align-items: center; gap: 8px;
    padding: 10px 20px; background: var(--bg-glass); backdrop-filter: blur(20px);
    border-radius: 20px; border: 1px solid var(--energy);
    z-index: 100; animation: fadeInUp 0.3s ease;
    box-shadow: 0 4px 20px rgba(201,168,106, 0.2);
}
.fm-icon { font-size: 18px; }
.fm-text { font-size: 13px; font-weight: 600; color: var(--energy); }
.fm-timer { font-size: 13px; color: var(--text-primary); font-weight: 700; font-variant-numeric: tabular-nums; }
.flash-match-blur img { filter: blur(20px); transition: filter 0.5s ease; }
.flash-match-revealed img { filter: none; }

/* ── Boost Card ────────────────────────────────────────── */
.boost-card { padding: 16px; background: var(--bg-card); border-radius: var(--radius); border: 1px solid var(--border); margin-top: 16px; }
.boost-header { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.boost-icon { font-size: 28px; }
.boost-title { font-size: 15px; font-weight: 600; color: var(--text-primary); }
.boost-cost { font-size: 12px; color: var(--text-secondary); }
.boost-points { font-size: 13px; color: var(--text-secondary); margin-bottom: 10px; }
.boost-status { font-size: 14px; padding: 10px; text-align: center; border-radius: var(--radius-sm); }
.boost-active { background: rgba(120,155,138, 0.1); color: var(--success); }
.boost-card .btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ── Ghost Mode ────────────────────────────────────────── */
.ghost-card { display: flex; align-items: center; justify-content: space-between; padding: 16px; background: var(--bg-card); border-radius: var(--radius); border: 1px solid var(--border); margin-top: 12px; }
.ghost-locked { opacity: 0.5; }
.ghost-header { display: flex; align-items: center; gap: 12px; }
.ghost-icon { font-size: 24px; }
.ghost-title { font-size: 15px; font-weight: 600; color: var(--text-primary); }
.ghost-desc { font-size: 12px; color: var(--text-secondary); }
.ghost-toggle { position: relative; width: 48px; height: 28px; flex-shrink: 0; }
.ghost-toggle input { opacity: 0; width: 0; height: 0; }
.ghost-toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background: var(--bg-secondary); border-radius: 14px; transition: 0.3s; }
.ghost-toggle-slider::before { content: ''; position: absolute; height: 22px; width: 22px; left: 3px; bottom: 3px; background: var(--text-primary); border-radius: 50%; transition: 0.3s; }
.ghost-toggle input:checked + .ghost-toggle-slider { background: var(--accent); }
.ghost-toggle input:checked + .ghost-toggle-slider::before { transform: translateX(20px); }

/* ── Gifts Screen ───────────────────────────────────────── */
.gifts-content { padding: 0 16px; max-width: 400px; margin: 0 auto; }
.gift-received-item {
    display: flex; align-items: center; gap: 12px;
    padding: 14px; background: var(--bg-card);
    border-radius: var(--radius); margin-bottom: 10px;
    border: 1px solid var(--border);
    animation: fadeInUp 0.3s ease;
}
.gift-emoji { font-size: 36px; flex-shrink: 0; }
.gift-info { flex: 1; }
.gift-sender { font-weight: 600; font-size: 14px; }
.gift-message { font-size: 13px; color: var(--text-secondary); font-style: italic; margin-top: 2px; }
.gift-meta { font-size: 11px; color: var(--text-dim); margin-top: 4px; }

.gift-catalog-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 16px;
}
.gift-catalog-item {
    background: var(--bg-card); border: 2px solid var(--border);
    border-radius: var(--radius); padding: 10px 6px; text-align: center;
    cursor: pointer; transition: all 0.15s;
}
.gift-catalog-item:active { transform: scale(0.95); }
.gift-catalog-item.selected { border-color: var(--accent); background: var(--accent-glow); }
.gift-catalog-emoji { font-size: 28px; display: block; margin-bottom: 4px; }
.gift-catalog-name { font-size: 10px; color: var(--text-secondary); }
.gift-catalog-cost { font-size: 10px; color: var(--accent); font-weight: 700; margin-top: 2px; }

/* ── Viral Enhancements ─────────────────────────────────── */
/* Glow on like button */
.swipe-btn-like:active {
    box-shadow: 0 0 20px rgba(120,155,138, 0.5);
}
.swipe-btn-skip:active {
    box-shadow: 0 0 20px rgba(255, 68, 68, 0.5);
}

/* Card shimmer loading */
.card-skeleton {
    position: absolute; top: 0; left: 16px; right: 16px; height: 85%;
    background: linear-gradient(90deg, var(--bg-card) 25%, var(--bg-secondary) 50%, var(--bg-card) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
    border-radius: var(--radius);
}
@keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* XP float animation */
.xp-float {
    position: fixed; pointer-events: none; z-index: 999;
    font-size: 16px; font-weight: 700; color: var(--xp);
    text-shadow: 0 2px 8px rgba(0,0,0,0.5);
    animation: xpFloat 1.5s ease-out forwards;
}
@keyframes xpFloat {
    0% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(-60px) scale(1.3); }
}

/* Match glow ring */
.match-photo { box-shadow: 0 0 0 3px var(--accent), 0 0 30px var(--accent-glow); }

/* Nav badge for unseen gifts/matches */
.nav-badge {
    position: absolute; top: 4px; right: 50%; transform: translateX(12px);
    background: var(--accent); color: #fff; border-radius: 10px;
    font-size: 9px; font-weight: 700; padding: 1px 5px; min-width: 16px; text-align: center;
}
.nav-btn { position: relative; }

/* Referral screen viral card */
.referral-viral-card {
    background: linear-gradient(135deg, var(--yd-raised), var(--yd-surface));
    border: 1px solid var(--accent); border-radius: var(--radius);
    padding: 20px; text-align: center; margin-bottom: 16px;
    box-shadow: 0 0 30px var(--accent-glow);
}
.referral-viral-card h3 { font-size: 20px; color: var(--accent); margin-bottom: 8px; }
.referral-viral-card p { color: var(--text-secondary); font-size: 14px; margin-bottom: 16px; }
.referral-reward-list { display: flex; justify-content: center; gap: 16px; margin-bottom: 16px; }
.referral-reward-item { text-align: center; }
.referral-reward-icon { font-size: 24px; display: block; }
.referral-reward-label { font-size: 11px; color: var(--text-dim); margin-top: 4px; }
.referral-reward-value { font-size: 14px; font-weight: 700; color: var(--xp); }

/* NPC typing indicator */
.typing-bubble {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 10px 14px;
    min-width: 48px;
}
.typing-bubble span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(255,255,255,0.6);
    animation: npc-typing-dot 1.2s infinite ease-in-out;
}
.typing-bubble span:nth-child(2) { animation-delay: 0.2s; }
.typing-bubble span:nth-child(3) { animation-delay: 0.4s; }
@keyframes npc-typing-dot {
    0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
    30% { transform: translateY(-5px); opacity: 1; }
}

/* ── Profile Social Sections ───────────────────────────── */
.profile-section {
    margin-top: 20px;
    padding: 16px;
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
}
.profile-section-title {
    font-size: 15px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 12px;
}

/* Opening Move */
.opening-move-field {
    position: relative;
    margin-bottom: 10px;
}
.form-input {
    width: 100%;
    padding: 12px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    box-sizing: border-box;
}
.form-input::placeholder { color: var(--text-dim); }
.form-input:focus { border-color: var(--accent); }
.char-counter {
    text-align: right;
    font-size: 11px;
    color: var(--text-dim);
    margin-top: 4px;
}
.opening-move-actions {
    display: flex;
    gap: 8px;
}
.btn-sm {
    padding: 8px 16px;
    font-size: 13px;
    min-height: 36px;
    width: auto;
}

/* Intent Chips */
.intent-group {
    margin-bottom: 14px;
}
.intent-label {
    display: block;
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 8px;
    font-weight: 600;
}
.intent-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.intent-chip {
    padding: 10px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: 20px;
    color: var(--text-primary);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s ease;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
}
.intent-chip:active { transform: scale(0.96); }
.intent-chip.selected {
    border-color: var(--accent);
    background: var(--accent-glow);
    color: var(--accent-light);
}

/* Profile Social Actions */
.profile-social-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 16px;
}

/* ═══════════════════════════════════════════════════════════════
   Social Engagement Features — Styles
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. Opening Move (Swipe Card) ──────────────────────── */
.card-opening-move {
    padding: 10px 16px;
    background: rgba(169,67,91, 0.08);
    border-top: 1px solid var(--border);
}
.card-opening-move-question {
    font-size: 13px;
    color: var(--text-secondary);
    font-style: italic;
    line-height: 1.4;
    cursor: pointer;
}
.card-opening-move-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
    padding: 6px 14px;
    background: var(--accent-glow);
    border: 1px solid var(--accent);
    border-radius: 20px;
    color: var(--accent-light);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    min-height: 36px;
    transition: all 0.2s;
}
.card-opening-move-btn:active { transform: scale(0.95); }
.card-opening-move-input {
    margin-top: 8px;
}
.card-opening-move-input textarea {
    width: 100%;
    padding: 10px 12px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 13px;
    resize: none;
    height: 60px;
    outline: none;
    box-sizing: border-box;
}
.card-opening-move-input textarea:focus { border-color: var(--accent); }
.card-opening-move-counter {
    text-align: right;
    font-size: 11px;
    color: var(--text-dim);
    margin-top: 4px;
}

/* ── 2. Compliment (Swipe + Modal) ─────────────────────── */
.swipe-btn-compliment {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    border: none;
    cursor: pointer;
    background: rgba(169,67,91, 0.15);
    color: var(--accent);
    transition: all 0.2s;
}
.swipe-btn-compliment:active {
    transform: scale(0.9);
    background: rgba(169,67,91, 0.3);
}

.compliment-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
}
.compliment-modal-content {
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 24px 20px;
    max-width: 340px;
    width: 90%;
    box-shadow: var(--shadow);
    animation: matchPop 0.3s ease;
}
.compliment-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}
.compliment-modal-header h3 {
    font-size: 18px;
    font-weight: 700;
}
.compliment-counter {
    font-size: 12px;
    color: var(--text-dim);
    background: var(--bg-secondary);
    padding: 4px 10px;
    border-radius: 12px;
}
.compliment-predefined {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}
.compliment-option {
    padding: 12px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s;
    min-height: 44px;
    text-align: left;
}
.compliment-option:active {
    border-color: var(--accent);
    background: var(--accent-glow);
}
.compliment-custom {
    margin-top: 12px;
    border-top: 1px solid var(--border);
    padding-top: 12px;
}
.compliment-custom-input {
    width: 100%;
    padding: 10px 12px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    resize: none;
    height: 64px;
    outline: none;
    box-sizing: border-box;
}
.compliment-custom-input:focus { border-color: var(--accent); }
.compliment-custom-counter {
    text-align: right;
    font-size: 11px;
    color: var(--text-dim);
    margin-top: 4px;
}
.compliment-send-custom {
    margin-top: 10px;
    width: 100%;
    padding: 12px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius-sm);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: all 0.2s;
}
.compliment-send-custom:active { transform: scale(0.97); }
.compliment-modal-close {
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 20px;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ── 3. Trust Badges (Swipe Card) ──────────────────────── */
.card-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 4px 16px 8px;
}
.card-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    color: var(--text-secondary);
}
.card-badge-verified {
    background: rgba(120,155,138, 0.1);
    border-color: rgba(120,155,138, 0.25);
    color: var(--success);
}
.card-badge-compatible {
    background: rgba(120,155,138, 0.1);
    border-color: rgba(120,155,138, 0.25);
    color: var(--success);
}
.card-badge-wingman {
    background: var(--accent-glow);
    border-color: rgba(169,67,91, 0.3);
    color: var(--accent-light);
}

/* ── 4. Intent Chips (Swipe Card + Profile) ────────────── */
.card-intents {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 4px 16px 8px;
}
.card-intent-chip {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 3px 10px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: 14px;
    font-size: 11px;
    color: var(--text-secondary);
}


/* ── 5. AI Convo Starters (Chat) ───────────────────────── */
.chat-convo-starters {
    padding: 12px;
    text-align: center;
}
.chat-convo-starters-label {
    font-size: 13px;
    color: var(--text-dim);
    margin-bottom: 10px;
}
.chat-convo-starter-btn {
    display: inline-block;
    padding: 10px 16px;
    margin: 4px;
    background: var(--bg-secondary);
    border: 1px solid rgba(169,67,91, 0.3);
    border-radius: 20px;
    color: var(--text-primary);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
    min-height: 44px;
    line-height: 1.3;
}
.chat-convo-starter-btn:active {
    border-color: var(--accent);
    background: var(--accent-glow);
}

/* ── 6. Special Chat Bubbles ───────────────────────────── */
.chat-special-bubble {
    padding: 12px 14px;
    background: rgba(169,67,91, 0.1);
    border: 1px solid rgba(169,67,91, 0.3);
    border-radius: 16px;
    max-width: 84%;
}
.chat-special-label {
    font-size: 11px;
    color: var(--accent-light);
    font-weight: 600;
    margin-bottom: 4px;
    display: block;
}

/* ── 7. Share Date (Modal) ─────────────────────────────── */
.chat-share-date-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
}
.chat-share-date-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.chat-share-date-content {
    position: relative;
    z-index: 1;
    background: var(--bg-glass);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-radius: var(--radius);
    padding: 24px 20px;
    max-width: 360px;
    width: 90%;
    box-shadow: var(--shadow);
    border: 1px solid var(--border);
    animation: matchPop 0.3s ease;
}
.chat-share-date-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.chat-share-date-header h3 {
    font-size: 18px;
    font-weight: 700;
}
.chat-share-date-desc {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 16px;
    line-height: 1.4;
}
.chat-share-date-field {
    margin-bottom: 14px;
}
.chat-share-date-field label {
    display: block;
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 6px;
    font-weight: 600;
}
.chat-share-date-field input {
    width: 100%;
    padding: 12px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    box-sizing: border-box;
}
.chat-share-date-field input:focus { border-color: var(--accent); }
.chat-share-date-submit {
    width: 100%;
    padding: 14px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
    margin-top: 8px;
    transition: all 0.2s;
}
.chat-share-date-submit:active { transform: scale(0.97); }
.chat-share-date-link-box {
    margin-top: 14px;
    padding: 12px;
    background: var(--bg-primary);
    border: 1px solid var(--accent);
    border-radius: var(--radius-sm);
    color: var(--accent);
    font-size: 12px;
    text-align: center;
    word-break: break-all;
    cursor: pointer;
}
.chat-share-date-link-box:active { background: var(--accent-glow); }

/* ── 8. Content Shield (Chat) ──────────────────────────── */
.chat-blurred-image {
    position: relative;
    border-radius: var(--radius-sm);
    overflow: hidden;
}
.chat-blur-content {
    filter: blur(30px);
    transition: filter 0.4s ease;
    pointer-events: none;
}
.chat-blur-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(0, 0, 0, 0.3);
}
.chat-blur-warning {
    font-size: 12px;
    color: var(--text-secondary);
    text-align: center;
    padding: 0 12px;
}
.chat-blur-reveal-btn {
    padding: 8px 20px;
    background: var(--bg-glass);
    backdrop-filter: blur(10px);
    border: 1px solid var(--border);
    border-radius: 20px;
    color: var(--text-primary);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    min-height: 36px;
    transition: all 0.2s;
}
.chat-blur-reveal-btn:active {
    background: var(--accent-glow);
    border-color: var(--accent);
}
.chat-blurred-revealed .chat-blur-content {
    filter: none;
    pointer-events: auto;
}
.chat-blurred-revealed .chat-blur-overlay {
    display: none;
}


/* ── 9. Report (Modal) ─────────────────────────────────── */
.report-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
}
.report-modal-content {
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 24px 20px;
    max-width: 340px;
    width: 90%;
    box-shadow: var(--shadow);
    animation: matchPop 0.3s ease;
}
.report-modal-content h3 {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 16px;
}
.report-categories {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.report-category-btn {
    padding: 12px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    cursor: pointer;
    text-align: left;
    min-height: 44px;
    transition: all 0.2s;
}
.report-category-btn:active {
    border-color: var(--danger);
    background: rgba(255, 68, 68, 0.1);
}
.chat-report-categories {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.chat-report-cat-btn {
    padding: 12px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    cursor: pointer;
    text-align: left;
    min-height: 44px;
    transition: all 0.2s;
}
.chat-report-cat-btn:active {
    border-color: var(--danger);
    background: rgba(255, 68, 68, 0.1);
}
.swipe-report-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin: 10px auto 0;
    padding: 8px 16px;
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 12px;
    cursor: pointer;
    min-height: 36px;
    transition: color 0.2s;
}
.swipe-report-btn:active { color: var(--danger); }

/* ── 10. Chat Header Actions ──────────────────────────── */
.chat-header-actions {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}
.chat-header-action-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 18px;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    transition: color 0.2s;
}
.chat-header-action-btn:active { color: var(--text-primary); }

/* ── 11. Double Date Indicator (Chat) ─────────────────── */
.chat-dd-indicator {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 10px;
    background: rgba(169,67,91, 0.1);
    border: 1px solid rgba(169,67,91, 0.25);
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    color: var(--accent-light);
}


/* ── 12. Wingman (Screen) ─────────────────────────────── */
.wingman-header {
    padding: 16px;
    text-align: center;
}
.wingman-header h2 {
    font-size: 20px;
    font-weight: 700;
}
.wingman-tabs {
    display: flex;
    gap: 0;
    margin: 0 16px 16px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    overflow: hidden;
}
.wingman-tab {
    flex: 1;
    padding: 12px 8px;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    color: var(--text-secondary);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    text-align: center;
    min-height: 44px;
    position: relative;
    transition: all 0.2s;
}
.wingman-tab.active {
    color: var(--accent);
    border-bottom-color: var(--accent);
    background: var(--accent-glow);
}
.wingman-tab-badge {
    position: absolute;
    top: 6px;
    right: 12px;
    background: var(--accent);
    color: #fff;
    border-radius: 10px;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 5px;
    min-width: 16px;
    text-align: center;
}
.wingman-feed {
    padding: 0 16px;
    max-width: 400px;
    margin: 0 auto;
}
.wingman-feed-counter {
    font-size: 13px;
    color: var(--text-dim);
    text-align: center;
    margin-bottom: 12px;
}
.wingman-card {
    background: var(--bg-card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    margin-bottom: 16px;
    border: 1px solid var(--border);
}
.wingman-card-photo {
    width: 100%;
    height: 280px;
    object-fit: cover;
    background: var(--bg-secondary);
    display: block;
}
.wingman-card-info {
    padding: 14px 16px;
}
.wingman-card-name {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 4px;
}
.wingman-card-detail {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 2px;
}
.wingman-card-bio {
    font-size: 13px;
    color: var(--text-dim);
    font-style: italic;
    margin-top: 6px;
    line-height: 1.4;
}
.wingman-card-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    background: rgba(120,155,138, 0.1);
    border-radius: 10px;
    font-size: 11px;
    color: var(--success);
    margin-top: 6px;
}
.wingman-card-actions {
    display: flex;
    gap: 10px;
    padding: 0 16px 16px;
}
.wingman-action-btn {
    flex: 1;
    padding: 12px;
    border: none;
    border-radius: var(--radius-sm);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
    transition: all 0.2s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.wingman-action-btn:active { transform: scale(0.97); }
.wingman-recommend-btn {
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    color: #fff;
}
.wingman-dismiss-btn {
    background: var(--bg-secondary);
    color: var(--text-secondary);
    border: 1px solid var(--border);
}
.wingman-list {
    padding: 0 16px;
    max-width: 400px;
    margin: 0 auto;
}
.wingman-invite-btn {
    width: 100%;
    padding: 14px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
    margin-bottom: 16px;
    transition: all 0.2s;
}
.wingman-invite-btn:active { transform: scale(0.97); }
.wingman-section-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-secondary);
    margin-bottom: 10px;
    margin-top: 16px;
}
.wingman-list-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
    margin-bottom: 10px;
}
.wingman-list-item-info {
    flex: 1;
    min-width: 0;
}
.wingman-list-item-name {
    font-size: 14px;
    font-weight: 600;
}
.wingman-list-item-status {
    font-size: 12px;
    color: var(--text-dim);
    margin-top: 2px;
}
.wingman-deactivate-btn {
    padding: 8px 14px;
    background: none;
    border: 1px solid var(--danger);
    border-radius: var(--radius-sm);
    color: var(--danger);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    min-height: 36px;
    transition: all 0.2s;
}
.wingman-deactivate-btn:active {
    background: rgba(255, 68, 68, 0.1);
}
.wingman-recommendations {
    padding: 0 16px;
    max-width: 400px;
    margin: 0 auto;
}
.wingman-rec-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
    margin-bottom: 10px;
    cursor: pointer;
    transition: background 0.2s;
}
.wingman-rec-item:active { background: var(--bg-secondary); }
.wingman-rec-photo-wrap {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    background: var(--bg-secondary);
}
.wingman-rec-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.wingman-empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--text-dim);
}
.wingman-empty-icon {
    font-size: 48px;
    margin-bottom: 12px;
}
.wingman-empty-hint {
    font-size: 14px;
    color: var(--text-secondary);
    margin-top: 8px;
    line-height: 1.4;
}
.wingman-nav-badge {
    position: absolute;
    top: 4px;
    right: 50%;
    transform: translateX(12px);
    background: var(--accent);
    color: #fff;
    border-radius: 10px;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 5px;
    min-width: 16px;
    text-align: center;
}


/* ── 13. Double Date (Screen) ─────────────────────────── */
.dd-container {
    padding: 0 16px;
    max-width: 400px;
    margin: 0 auto;
}
.dd-header {
    padding: 16px 0;
    text-align: center;
}
.dd-header h2 {
    font-size: 20px;
    font-weight: 700;
}

/* Idle state */
.dd-idle {
    text-align: center;
    padding: 32px 16px;
}
.dd-idle-icon {
    font-size: 64px;
    margin-bottom: 16px;
}
.dd-idle-title {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 8px;
}
.dd-idle-desc {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 24px;
    line-height: 1.4;
}
.dd-create-btn {
    width: 100%;
    padding: 16px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius);
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    min-height: 52px;
    transition: all 0.2s;
}
.dd-create-btn:active { transform: scale(0.97); }

/* Join section */
.dd-join-section {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--border);
}
.dd-join-label {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 10px;
    text-align: center;
}
.dd-join-form {
    display: flex;
    gap: 8px;
}
.dd-join-input {
    flex: 1;
    padding: 12px 14px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
}
.dd-join-input:focus { border-color: var(--accent); }
.dd-join-btn {
    padding: 12px 20px;
    background: var(--bg-card);
    border: 1px solid var(--accent);
    border-radius: var(--radius-sm);
    color: var(--accent);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    white-space: nowrap;
    transition: all 0.2s;
}
.dd-join-btn:active {
    background: var(--accent-glow);
}

/* Waiting state */
.dd-waiting {
    text-align: center;
    padding: 40px 16px;
}
.dd-pulse {
    position: relative;
    width: 120px;
    height: 120px;
    margin: 0 auto 24px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.dd-pulse-circle {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent);
    opacity: 0.4;
    animation: pulse 2s ease-in-out infinite;
}
.dd-pulse-circle:nth-child(2) { animation-delay: 0.5s; }
.dd-pulse-circle:nth-child(3) { animation-delay: 1s; }
.dd-pulse-icon {
    font-size: 48px;
    z-index: 1;
}
.dd-waiting-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 8px;
}
.dd-waiting-desc {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 20px;
    line-height: 1.4;
}
.dd-share-btn {
    width: 100%;
    padding: 14px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
    margin-bottom: 12px;
    transition: all 0.2s;
}
.dd-share-btn:active { transform: scale(0.97); }
.dd-invite-code {
    padding: 12px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 14px;
    font-family: monospace;
    text-align: center;
    letter-spacing: 2px;
}

/* Searching state */
.dd-searching {
    text-align: center;
    padding: 32px 16px;
}
.dd-searching-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 8px;
}
.dd-searching-desc {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 20px;
}

/* Groups list */
.dd-groups-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.dd-group-card {
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
    box-shadow: var(--shadow);
    overflow: hidden;
    padding: 16px;
}
.dd-group-members {
    display: flex;
    gap: 12px;
    margin-bottom: 14px;
}
.dd-member {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}
.dd-member-photo-wrap {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    overflow: hidden;
    margin-bottom: 8px;
    background: var(--bg-secondary);
}
.dd-member-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.dd-member-photo-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    color: var(--text-dim);
    background: var(--bg-secondary);
}
.dd-member-info {
    min-width: 0;
}
.dd-member-name {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 2px;
}
.dd-member-city {
    font-size: 11px;
    color: var(--text-dim);
}
.dd-member-bio {
    font-size: 11px;
    color: var(--text-secondary);
    font-style: italic;
    margin-top: 4px;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.dd-approve-btn {
    width: 100%;
    padding: 12px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius-sm);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
    transition: all 0.2s;
}
.dd-approve-btn:active { transform: scale(0.97); }

/* Approving state */
.dd-approving {
    padding: 16px 0;
}
.dd-approve-members {
    display: flex;
    gap: 16px;
    justify-content: center;
    margin-bottom: 16px;
}
.dd-approve-member {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}
.dd-approve-photo {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    object-fit: cover;
    margin-bottom: 8px;
    background: var(--bg-secondary);
}
.dd-approve-member-info {
    font-size: 13px;
    color: var(--text-secondary);
}
.dd-approve-actions {
    display: flex;
    gap: 10px;
    margin-top: 16px;
}


/* Double Date — Chat state */
.dd-chatting {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--hud-height) - var(--nav-height) - 80px);
}
.dd-chat-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: var(--bg-secondary);
    border-bottom: 1px solid var(--border);
}
.dd-chat-header-label {
    font-size: 14px;
    font-weight: 700;
}
.dd-chat-messages {
    flex: 1;
    overflow-y: auto;
    padding: 14px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    scroll-behavior: smooth;
}
.dd-chat-msg {
    max-width: 80%;
    padding: 10px 12px;
    border-radius: 16px;
    border: 1px solid var(--border);
}
.dd-chat-msg-own {
    align-self: flex-end;
    background: rgba(169,67,91, 0.18);
    border-color: rgba(169,67,91, 0.35);
    border-bottom-right-radius: 6px;
}
.dd-chat-msg-other {
    align-self: flex-start;
    background: rgba(255, 255, 255, 0.04);
    border-bottom-left-radius: 6px;
}
.dd-chat-msg-system {
    align-self: center;
    max-width: 90%;
    text-align: center;
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 12px;
    padding: 6px 12px;
}
.dd-chat-msg-sender {
    font-size: 11px;
    font-weight: 600;
    color: var(--accent-light);
    margin-bottom: 3px;
}
.dd-chat-msg-text {
    font-size: 14px;
    white-space: pre-wrap;
    word-break: break-word;
}
.dd-chat-msg-time {
    font-size: 10px;
    color: var(--text-dim);
    text-align: right;
    margin-top: 4px;
}
.dd-chat-input-area {
    display: flex;
    gap: 8px;
    padding: 10px 12px;
    border-top: 1px solid var(--border);
    background: var(--bg-secondary);
}
.dd-chat-input {
    flex: 1;
    padding: 11px 14px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 18px;
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
}
.dd-chat-input:focus { border-color: var(--accent); }
.dd-chat-send-btn {
    padding: 10px 16px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: 14px;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: all 0.2s;
}
.dd-chat-send-btn:active { transform: scale(0.95); }
.dd-leave-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    padding: 12px;
    background: none;
    border: 1px solid var(--danger);
    border-radius: var(--radius-sm);
    color: var(--danger);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    margin-top: 12px;
    transition: all 0.2s;
}
.dd-leave-btn:active { background: rgba(255, 68, 68, 0.1); }
.dd-empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--text-dim);
}
.dd-refresh-btn {
    margin-top: 16px;
    padding: 10px 24px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    cursor: pointer;
    min-height: 44px;
    transition: all 0.2s;
}
.dd-refresh-btn:active { background: var(--bg-secondary); }

/* ── 14. Silent Refresh ───────────────────────────────── */
.sr-reconnecting {
    position: fixed;
    top: var(--hud-height);
    left: 0;
    right: 0;
    padding: 4px 0;
    background: rgba(255, 215, 0, 0.12);
    text-align: center;
    font-size: 11px;
    color: var(--xp);
    z-index: 99;
    animation: fadeInUp 0.3s ease;
}
.sr-new-conversation {
    animation: fadeInUp 0.4s ease;
}

/* ── 15. Referral Loop (Gamification Screen) ──────────── */
.referral-stars-card {
    padding: 20px;
    background: linear-gradient(135deg, var(--bg-card), var(--yd-raised));
    border-radius: var(--radius);
    border: 1px solid rgba(255, 215, 0, 0.2);
    text-align: center;
    margin-bottom: 16px;
}
.referral-stars-value {
    font-size: 36px;
    font-weight: 800;
    color: var(--xp);
    margin-bottom: 4px;
}
.referral-invitees {
    display: flex;
    justify-content: center;
    gap: 24px;
    margin-top: 12px;
    font-size: 13px;
    color: var(--text-secondary);
}
.referral-milestone-bar {
    position: relative;
    height: 8px;
    background: var(--bg-secondary);
    border-radius: 4px;
    margin: 20px 0 32px;
    overflow: visible;
}
.referral-milestone-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent), var(--yd-burgundy));
    border-radius: 4px;
    transition: width 0.5s ease;
}
.referral-milestone-marker {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--bg-card);
    border: 2px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}
.referral-milestone-marker.completed {
    border-color: var(--xp);
    background: rgba(255, 215, 0, 0.15);
}
.referral-milestone-icon {
    font-size: 11px;
    font-weight: 700;
    color: var(--text-dim);
}
.referral-milestone-marker.completed .referral-milestone-icon {
    color: var(--xp);
}
.referral-milestone-reward {
    position: absolute;
    top: 22px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 10px;
    color: var(--text-dim);
    white-space: nowrap;
}
.referral-invite-btn {
    width: 100%;
    padding: 16px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: var(--radius);
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    min-height: 52px;
    margin-top: 8px;
    transition: all 0.2s;
    box-shadow: 0 4px 20px var(--accent-glow);
}
.referral-invite-btn:active { transform: scale(0.97); }

/* ── 16. Toast Notification ───────────────────────────── */
.app-toast {
    position: fixed;
    bottom: calc(var(--nav-height) + 16px);
    left: 50%;
    transform: translateX(-50%);
    padding: 12px 24px;
    background: var(--bg-glass);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid var(--border);
    border-radius: 20px;
    color: var(--text-primary);
    font-size: 14px;
    font-weight: 500;
    z-index: 400;
    animation: fadeInUp 0.3s ease;
    box-shadow: var(--shadow);
    max-width: 90%;
    text-align: center;
}
.app-toast-hide {
    animation: toastFadeOut 0.3s ease forwards;
}
@keyframes toastFadeOut {
    from { opacity: 1; transform: translateX(-50%) translateY(0); }
    to { opacity: 0; transform: translateX(-50%) translateY(10px); }
}


/* ══════════════════════════════════════════════════════════
   17. Stories & Discovery
   ══════════════════════════════════════════════════════════ */

/* ── 17a. Stories Bar ─────────────────────────────────────── */
#stories-bar-container {
    padding: 8px 0;
}
.stories-add-btn {
    display: inline-block;
    padding: 8px 16px;
    background: var(--bg-card);
    border: 1px dashed var(--border);
    border-radius: 20px;
    color: var(--text-secondary);
    font-size: 13px;
    cursor: pointer;
    margin-bottom: 8px;
    min-height: 44px;
    transition: background 0.2s;
}
.stories-add-btn:active {
    background: var(--accent-glow);
}
.stories-bar {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding: 4px 0 8px;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.stories-bar::-webkit-scrollbar {
    display: none;
}
.stories-bar-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    cursor: pointer;
    min-width: 64px;
}
.stories-bar-ring {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    padding: 3px;
    border: 2px solid var(--border);
    overflow: hidden;
    transition: border-color 0.3s;
}
.stories-bar-ring--unseen {
    border-color: var(--accent);
    animation: storiesRingPulse 2s ease-in-out infinite;
}
.stories-bar-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}
.stories-bar-name {
    font-size: 11px;
    color: var(--text-secondary);
    max-width: 64px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
}

@keyframes storiesRingPulse {
    0%, 100% { box-shadow: 0 0 0 0 var(--accent-glow); }
    50% { box-shadow: 0 0 0 4px var(--accent-glow); }
}

/* ── 17b. Story Viewer (fullscreen modal) ─────────────────── */
.stories-viewer {
    position: fixed;
    inset: 0;
    z-index: 500;
    background: var(--bg-glass);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeInUp 0.25s ease;
}
.stories-viewer-content {
    position: relative;
    width: 100%;
    max-width: 400px;
    height: 100%;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.stories-viewer-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.5);
    border: 1px solid var(--border);
    color: var(--text-primary);
    font-size: 18px;
    cursor: pointer;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
}
.stories-viewer-close:active {
    background: rgba(0, 0, 0, 0.7);
}
.stories-viewer-photo {
    width: 100%;
    max-height: 70vh;
    object-fit: contain;
    border-radius: var(--radius);
}
.stories-viewer-text {
    position: absolute;
    bottom: 80px;
    left: 16px;
    right: 16px;
    padding: 12px 16px;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 15px;
    line-height: 1.4;
    text-align: center;
}
.stories-viewer-footer {
    position: absolute;
    bottom: 16px;
    left: 16px;
    right: 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.stories-viewer-views {
    font-size: 13px;
    color: var(--text-secondary);
}
.stories-viewer-react-btn {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: 20px;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: transform 0.15s;
}
.stories-viewer-react-btn:active {
    transform: scale(0.95);
}
.stories-react-input-wrap {
    position: absolute;
    bottom: 60px;
    left: 16px;
    right: 16px;
    display: flex;
    gap: 8px;
    animation: fadeInUp 0.2s ease;
}
.stories-react-input {
    flex: 1;
    padding: 10px 14px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    resize: none;
    min-height: 44px;
}
.stories-react-input::placeholder {
    color: var(--text-dim);
}
.stories-react-send {
    flex-shrink: 0;
    min-width: 80px;
}

/* ── 17c. Story Upload Modal ──────────────────────────────── */
.stories-upload-modal {
    position: fixed;
    inset: 0;
    z-index: 500;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    animation: fadeInUp 0.25s ease;
}
.stories-upload-content {
    width: 100%;
    max-width: 380px;
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 24px;
    box-shadow: var(--shadow);
}
.stories-upload-content h3 {
    margin: 0 0 16px;
    font-size: 18px;
    color: var(--text-primary);
}
.stories-upload-label {
    display: block;
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: 6px;
}
.stories-upload-input,
.stories-upload-textarea {
    width: 100%;
    padding: 10px 14px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    margin-bottom: 12px;
    box-sizing: border-box;
}
.stories-upload-textarea {
    resize: vertical;
    min-height: 60px;
}
.stories-upload-input::placeholder,
.stories-upload-textarea::placeholder {
    color: var(--text-dim);
}
.stories-upload-actions {
    display: flex;
    gap: 8px;
    margin-top: 4px;
}
.stories-upload-actions .btn {
    flex: 1;
    min-height: 44px;
}


/* ── 17d. Spotlight Carousel ──────────────────────────────── */
.spotlight-section {
    margin-bottom: 16px;
}
.spotlight-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}
.spotlight-action-btn {
    padding: 6px 14px;
    background: var(--bg-card);
    border: 1px solid var(--xp);
    border-radius: 20px;
    color: var(--xp);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    min-height: 36px;
    transition: background 0.2s;
}
.spotlight-action-btn:active {
    background: rgba(255, 215, 0, 0.15);
}
.spotlight-carousel {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding: 4px 0 8px;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.spotlight-carousel::-webkit-scrollbar {
    display: none;
}
.spotlight-card {
    flex-shrink: 0;
    width: 120px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    position: relative;
}
.spotlight-photo-wrap {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    padding: 3px;
    border: 3px solid var(--xp);
    overflow: hidden;
    animation: spotlightGlow 2.5s ease-in-out infinite;
    position: relative;
}
.spotlight-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}
.spotlight-photo-placeholder {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: var(--bg-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 32px;
}
.spotlight-name {
    font-size: 12px;
    color: var(--text-primary);
    font-weight: 500;
    max-width: 110px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
}
.spotlight-card::after {
    content: '🔦 Spotlight';
    position: absolute;
    top: -6px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 9px;
    color: var(--xp);
    background: var(--bg-card);
    padding: 2px 8px;
    border-radius: 10px;
    border: 1px solid rgba(255, 215, 0, 0.3);
    white-space: nowrap;
}

@keyframes spotlightGlow {
    0%, 100% {
        border-color: var(--xp);
        box-shadow: 0 0 8px rgba(255, 215, 0, 0.3);
    }
    50% {
        border-color: #ffec80;
        box-shadow: 0 0 16px rgba(255, 215, 0, 0.5);
    }
}

/* ── 17e. Daily Picks ─────────────────────────────────────── */
.discovery-section {
    margin-bottom: 20px;
}
.discovery-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}
.discovery-section-title {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}
.discovery-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 0;
}
.discovery-empty {
    color: var(--text-dim);
    font-size: 14px;
    text-align: center;
    padding: 16px 0;
}
.dp-countdown {
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 500;
    background: var(--bg-card);
    padding: 4px 10px;
    border-radius: 12px;
    border: 1px solid var(--border);
}
.dp-cards {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.dp-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: var(--bg-card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    transition: transform 0.15s, opacity 0.3s;
}
.dp-card:active {
    transform: scale(0.98);
}
.dp-card-liked {
    border: 1px solid var(--success);
    background: rgba(120,155,138, 0.05);
}
.dp-card-photo {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.dp-card-photo-placeholder {
    background: var(--bg-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
}
.dp-card-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.dp-card-name {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.dp-card-bio {
    font-size: 12px;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.dp-like-btn {
    flex-shrink: 0;
    padding: 8px 16px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: 20px;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: transform 0.15s;
}
.dp-like-btn:active {
    transform: scale(0.93);
}
.dp-liked-badge {
    flex-shrink: 0;
    font-size: 13px;
    color: var(--success);
    font-weight: 600;
    padding: 8px 12px;
}


/* ── 17f. Who Liked You ───────────────────────────────────── */
.wly-count-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 24px;
    padding: 0 8px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border-radius: 12px;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
}
.wly-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}
.wly-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 14px 10px;
    background: var(--bg-card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    transition: transform 0.15s, opacity 0.3s;
}
.wly-card:active {
    transform: scale(0.97);
}
.wly-card-photo {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
}
.wly-card-photo-placeholder {
    background: var(--bg-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
}
.wly-card-info {
    text-align: center;
}
.wly-card-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}
.wly-like-back-btn {
    width: 100%;
    padding: 8px 12px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: 20px;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: transform 0.15s;
}
.wly-like-back-btn:active {
    transform: scale(0.93);
}

/* Blurred cards for free users */
.wly-card-blurred {
    position: relative;
    pointer-events: none;
}
.wly-card-photo-blur {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--bg-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    filter: blur(20px);
}
.wly-card-info-blur {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}
.wly-blur-line {
    display: block;
    width: 80px;
    height: 10px;
    background: var(--bg-secondary);
    border-radius: 5px;
    filter: blur(20px);
}
.wly-blur-short {
    width: 50px;
}
.wly-list-blurred {
    position: relative;
}
.wly-list-blurred::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 0%, var(--bg-primary) 90%);
    border-radius: var(--radius);
    pointer-events: none;
}
.wly-unlock-btn {
    width: 100%;
    margin-top: 12px;
    padding: 14px;
    min-height: 52px;
    font-size: 15px;
    font-weight: 600;
    border-radius: var(--radius);
    position: relative;
    z-index: 1;
}

/* ============================================
   PREMIUM & MONETIZATION STYLES (Task 19.2)
   Requirements: 5.1, 6.2, 6.5, 7.1, 7.5, 8.1, 8.4
   ============================================ */

/* --- Premium Screen --- */
.premium-screen {
    padding: 20px 16px;
    max-width: 400px;
    margin: 0 auto;
}
.premium-header {
    text-align: center;
    margin-bottom: 24px;
}
.premium-header h2 {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 8px;
}
.premium-header p {
    font-size: 14px;
    color: var(--text-secondary);
    margin: 0;
}

/* Benefits list */
.premium-benefits {
    list-style: none;
    padding: 0;
    margin: 0 0 28px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.premium-benefit-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.premium-benefit-emoji {
    font-size: 24px;
    flex-shrink: 0;
    width: 36px;
    text-align: center;
}
.premium-benefit-text {
    font-size: 14px;
    color: var(--text-primary);
    line-height: 1.4;
}

/* Plan cards */
.premium-plans {
    display: flex;
    gap: 10px;
    margin-bottom: 24px;
}
.premium-plan-card {
    flex: 1;
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 2px solid var(--border);
    padding: 16px 12px;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s, transform 0.15s;
    position: relative;
}
.premium-plan-card:active {
    transform: scale(0.97);
}
.premium-plan-card.selected {
    border-color: var(--xp);
    background: rgba(255, 215, 0, 0.08);
}
.premium-plan-card.recommended {
    border-color: var(--accent);
}
.premium-plan-card.recommended::before {
    content: '⭐ Recomandat';
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    color: var(--text-primary);
    font-size: 10px;
    font-weight: 700;
    padding: 2px 10px;
    border-radius: 10px;
    white-space: nowrap;
}
.premium-plan-duration {
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.premium-plan-price {
    font-size: 28px;
    font-weight: 700;
    color: var(--xp);
    margin-bottom: 4px;
}
.premium-plan-price .stars-icon {
    font-size: 18px;
}
.premium-plan-unit {
    font-size: 11px;
    color: var(--text-dim);
}
.premium-plan-savings {
    font-size: 11px;
    color: var(--success);
    font-weight: 600;
    margin-top: 6px;
}

/* Subscribe button */
.premium-subscribe-btn {
    width: 100%;
    padding: 16px;
    min-height: 52px;
    font-size: 16px;
    font-weight: 700;
    border: none;
    border-radius: var(--radius);
    background: linear-gradient(135deg, var(--xp), #e6a800);
    color: #1a1a1a;
    cursor: pointer;
    transition: opacity 0.2s, transform 0.15s;
    box-shadow: 0 4px 20px rgba(255, 215, 0, 0.3);
}
.premium-subscribe-btn:active {
    transform: scale(0.97);
    opacity: 0.9;
}
.premium-subscribe-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* --- Premium Badge (⭐ next to name) --- */
.premium-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    color: var(--xp);
    margin-left: 4px;
    vertical-align: middle;
    line-height: 1;
}
.premium-badge::after {
    content: '⭐';
}

/* Premium badge on swipe card */
.card-name .premium-badge {
    font-size: 16px;
    margin-left: 6px;
}

/* Premium badge in chat header */
.chat-header .premium-badge {
    font-size: 12px;
    margin-left: 4px;
}

/* --- Premium Messages in Chat --- */
.message-premium {
    border-left: 3px solid rgba(169,67,91, 0.4);
    padding-left: 10px;
}
.message-premium .message-bubble {
    border-left: none;
}

/* --- Super Like Button --- */
.btn-super-like {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    min-height: 44px;
    min-width: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--xp), #e6a800);
    border: none;
    cursor: pointer;
    font-size: 24px;
    color: #1a1a1a;
    box-shadow: 0 4px 16px rgba(255, 215, 0, 0.35);
    transition: transform 0.15s, box-shadow 0.15s;
    animation: superLikePulse 2s ease-in-out infinite;
    position: relative;
}
.btn-super-like:active {
    transform: scale(0.9);
    box-shadow: 0 2px 8px rgba(255, 215, 0, 0.2);
}
.btn-super-like:disabled {
    opacity: 0.4;
    animation: none;
    cursor: not-allowed;
}
.btn-super-like::after {
    content: '⭐';
}

@keyframes superLikePulse {
    0%, 100% {
        box-shadow: 0 4px 16px rgba(255, 215, 0, 0.35);
    }
    50% {
        box-shadow: 0 4px 24px rgba(255, 215, 0, 0.55);
    }
}

/* Super Like remaining counter */
.super-like-count {
    position: absolute;
    top: -4px;
    right: -4px;
    background: var(--bg-card);
    color: var(--xp);
    font-size: 10px;
    font-weight: 700;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--xp);
}

/* --- Crush Button --- */
.btn-crush {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    min-height: 44px;
    min-width: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--yd-burgundy), var(--yd-burgundy));
    border: none;
    cursor: pointer;
    font-size: 20px;
    color: var(--text-primary);
    box-shadow: 0 4px 16px rgba(169,67,91, 0.3);
    transition: transform 0.15s, box-shadow 0.15s;
    position: relative;
}
.btn-crush:active {
    transform: scale(0.9);
    box-shadow: 0 2px 8px rgba(169,67,91, 0.2);
}
.btn-crush:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.btn-crush::after {
    content: '💜';
}

/* Crush tooltip */
.btn-crush .crush-tooltip {
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: var(--bg-glass);
    backdrop-filter: blur(12px);
    color: var(--text-primary);
    font-size: 11px;
    padding: 6px 10px;
    border-radius: var(--radius-sm);
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s;
    border: 1px solid var(--border);
}
.btn-crush .crush-tooltip::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 5px solid transparent;
    border-top-color: var(--bg-glass);
}
.btn-crush:hover .crush-tooltip,
.btn-crush:focus .crush-tooltip {
    opacity: 1;
}

/* --- Swipe Actions Row (with Super Like & Crush) --- */
.swipe-actions-extended {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 12px 0;
}

/* --- Super Like Match Animation (starBurst) --- */
.match-super-like-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.7);
    pointer-events: none;
}
.match-super-like-stars {
    position: absolute;
    inset: 0;
    overflow: hidden;
}
.match-super-like-stars .star {
    position: absolute;
    font-size: 24px;
    animation: starBurst 1.2s ease-out forwards;
    opacity: 0;
}
.match-super-like-text {
    font-size: 32px;
    font-weight: 700;
    color: var(--xp);
    text-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
    animation: matchPop 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

@keyframes starBurst {
    0% {
        transform: translate(0, 0) scale(0) rotate(0deg);
        opacity: 1;
    }
    30% {
        opacity: 1;
        transform: scale(1.2);
    }
    100% {
        transform: translate(var(--star-x, 80px), var(--star-y, -120px)) scale(0) rotate(360deg);
        opacity: 0;
    }
}

/* --- Crush Match Animation (crushReveal) --- */
.match-crush-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.75);
    pointer-events: none;
}
.match-crush-hearts {
    font-size: 48px;
    animation: crushReveal 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
.match-crush-text {
    font-size: 28px;
    font-weight: 700;
    color: var(--yd-burgundy);
    margin-top: 12px;
    text-shadow: 0 0 20px rgba(169,67,91, 0.5);
    animation: crushReveal 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.2s forwards;
    opacity: 0;
}

@keyframes crushReveal {
    0% {
        transform: scale(0) rotate(-15deg);
        opacity: 0;
    }
    60% {
        transform: scale(1.15) rotate(5deg);
        opacity: 1;
    }
    100% {
        transform: scale(1) rotate(0deg);
        opacity: 1;
    }
}

/* --- Super Like Upgrade Prompt --- */
.super-like-upgrade {
    text-align: center;
    padding: 20px 16px;
    background: var(--bg-card);
    border-radius: var(--radius);
    border: 1px solid var(--border);
}
.super-like-upgrade p {
    font-size: 14px;
    color: var(--text-secondary);
    margin: 0 0 16px;
}
.super-like-upgrade .btn-upgrade-premium {
    background: linear-gradient(135deg, var(--xp), #e6a800);
    color: #1a1a1a;
    font-weight: 600;
    border: none;
    padding: 12px 20px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 14px;
    min-height: 44px;
    transition: opacity 0.2s;
}
.super-like-upgrade .btn-buy-single {
    background: transparent;
    color: var(--xp);
    border: 1px solid var(--xp);
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 13px;
    min-height: 44px;
    margin-top: 8px;
    transition: background 0.2s;
}
.super-like-upgrade .btn-buy-single:active {
    background: rgba(255, 215, 0, 0.1);
}


/* ============================================
   GAMES & ENGAGEMENT STYLES (Task 19.3)
   Requirements: 12.1, 12.6, 13.1, 13.6, 14.1, 15.3, 16.3, 16.5, 19.3, 19.6
   ============================================ */

/* ── Vibe Check ───────────────────────────────────────────── */
.vibe-check-container {
    padding: 16px;
    max-width: 400px;
    margin: 0 auto;
}
.vibe-check-header {
    text-align: center;
    margin-bottom: 20px;
}
.vibe-check-header h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 4px;
}
.vibe-check-header p {
    font-size: 13px;
    color: var(--text-secondary);
    margin: 0;
}
.vibe-check-progress {
    display: flex;
    gap: 6px;
    margin-bottom: 20px;
}
.vibe-check-progress-dot {
    flex: 1;
    height: 4px;
    border-radius: 2px;
    background: var(--border);
    transition: background 0.3s;
}
.vibe-check-progress-dot.answered {
    background: var(--accent);
}
.vibe-check-progress-dot.current {
    background: var(--accent-light);
    animation: pulse 1.5s ease-in-out infinite;
}

/* This or That buttons side-by-side */
.vibe-check-question {
    text-align: center;
    margin-bottom: 24px;
}
.vibe-check-question-text {
    font-size: 18px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 20px;
}
.vibe-check-options {
    display: flex;
    gap: 12px;
}
.vibe-check-option {
    flex: 1;
    padding: 20px 12px;
    min-height: 80px;
    background: var(--bg-card);
    border: 2px solid var(--border);
    border-radius: var(--radius);
    color: var(--text-primary);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s, transform 0.15s;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-width: 44px;
}
.vibe-check-option:active {
    transform: scale(0.95);
}
.vibe-check-option.selected {
    border-color: var(--accent);
    background: var(--accent-glow);
    animation: vibeOptionSelect 0.3s ease-out;
}
.vibe-check-option:not(.selected):not(:disabled):hover {
    border-color: var(--accent-light);
}
.vibe-check-option:disabled {
    cursor: default;
    opacity: 0.6;
}

@keyframes vibeOptionSelect {
    0% { transform: scale(0.95); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}

/* Vibe Check score — circular progress */
.vibe-check-result {
    text-align: center;
    padding: 24px 16px;
}
.vibe-score-circle {
    position: relative;
    width: 140px;
    height: 140px;
    margin: 0 auto 20px;
}
.vibe-score-circle svg {
    width: 140px;
    height: 140px;
    transform: rotate(-90deg);
}
.vibe-score-circle-bg {
    fill: none;
    stroke: var(--border);
    stroke-width: 8;
}
.vibe-score-circle-fill {
    fill: none;
    stroke: var(--accent);
    stroke-width: 8;
    stroke-linecap: round;
    stroke-dasharray: 408;
    stroke-dashoffset: 408;
    animation: vibeScore 1.2s ease-out forwards;
}
.vibe-score-value {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 36px;
    font-weight: 700;
    color: var(--text-primary);
}
.vibe-score-value span {
    font-size: 18px;
    color: var(--text-secondary);
    margin-left: 2px;
}

@keyframes vibeScore {
    from { stroke-dashoffset: 408; }
    to { stroke-dashoffset: var(--vibe-offset, 0); }
}

/* Contextual result message — colored by score */
.vibe-result-message {
    font-size: 18px;
    font-weight: 600;
    margin-bottom: 8px;
    line-height: 1.4;
}
.vibe-result-message.score-high {
    color: var(--success);
}
.vibe-result-message.score-mid {
    color: var(--xp);
}
.vibe-result-message.score-low {
    color: var(--text-dim);
}
.vibe-result-sub {
    font-size: 13px;
    color: var(--text-secondary);
}

/* Vibe Check invite in chat */
.vibe-check-invite {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px;
    background: var(--accent-glow);
    border: 1px solid var(--accent);
    border-radius: var(--radius);
    margin: 8px 0;
}
.vibe-check-invite-text {
    font-size: 14px;
    color: var(--text-primary);
    font-weight: 600;
}
.vibe-check-invite .btn {
    min-height: 44px;
}


/* ── Icebreaker Games ─────────────────────────────────────── */

/* Game type selector */
.icebreaker-selector {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 16px;
    max-width: 400px;
    margin: 0 auto;
}
.icebreaker-type-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px;
    background: var(--bg-card);
    border: 2px solid var(--border);
    border-radius: var(--radius);
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s, transform 0.15s;
    min-height: 44px;
}
.icebreaker-type-card:active {
    transform: scale(0.97);
}
.icebreaker-type-card.selected {
    border-color: var(--accent);
    background: var(--accent-glow);
}
.icebreaker-type-emoji {
    font-size: 32px;
    flex-shrink: 0;
    width: 44px;
    text-align: center;
}
.icebreaker-type-info {
    flex: 1;
    min-width: 0;
}
.icebreaker-type-name {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 2px;
}
.icebreaker-type-desc {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Icebreaker question card in chat */
.icebreaker-question-card {
    padding: 16px;
    background: var(--accent-glow);
    border: 1px solid var(--accent);
    border-radius: var(--radius);
    margin: 8px 0;
}
.icebreaker-question-round {
    font-size: 11px;
    color: var(--accent-light);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}
.icebreaker-question-text {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.4;
    margin-bottom: 12px;
}
.icebreaker-question-options {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.icebreaker-option-btn {
    padding: 12px 16px;
    min-height: 44px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
    text-align: left;
}
.icebreaker-option-btn:active {
    transform: scale(0.97);
}
.icebreaker-option-btn.selected {
    border-color: var(--accent);
    background: var(--accent-glow);
}

/* Icebreaker answer as special chat message */
.message-game {
    background: var(--accent-glow);
    border: 1px solid rgba(169,67,91, 0.2);
    border-radius: var(--radius);
    padding: 12px 14px;
}
.message-game .message-game-label {
    font-size: 10px;
    color: var(--accent-light);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}
.message-game .message-game-content {
    font-size: 14px;
    color: var(--text-primary);
}

/* Icebreaker invite in chat */
.icebreaker-invite {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin: 8px 0;
}
.icebreaker-invite-emoji {
    font-size: 36px;
}
.icebreaker-invite-text {
    font-size: 14px;
    color: var(--text-primary);
    font-weight: 600;
    text-align: center;
}
.icebreaker-invite .btn {
    min-height: 44px;
}


/* ── Challenges Screen ────────────────────────────────────── */
.challenges-screen {
    padding: 16px;
    max-width: 400px;
    margin: 0 auto;
}
.challenges-header {
    text-align: center;
    margin-bottom: 20px;
}
.challenges-header h2 {
    font-size: 22px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 4px;
}
.challenges-header p {
    font-size: 13px;
    color: var(--text-secondary);
    margin: 0;
}

/* Challenge list */
.challenge-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.challenge-card {
    background: var(--bg-card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 16px;
    border: 1px solid var(--border);
    transition: transform 0.15s;
}
.challenge-card:active {
    transform: scale(0.98);
}
.challenge-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}
.challenge-card-title {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}
.challenge-card-type {
    font-size: 11px;
    font-weight: 600;
    color: var(--accent-light);
    background: var(--accent-glow);
    padding: 3px 8px;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.challenge-card-desc {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.4;
    margin-bottom: 12px;
}
.challenge-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/* Challenge countdown */
.challenge-countdown {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--text-dim);
}
.challenge-countdown-icon {
    font-size: 14px;
}
.challenge-countdown.ending-soon {
    color: var(--danger);
}
.challenge-participants {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Challenge participate button */
.challenge-participate-btn {
    padding: 10px 20px;
    min-height: 44px;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: none;
    border-radius: 20px;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.15s;
}
.challenge-participate-btn:active {
    transform: scale(0.95);
}
.challenge-participate-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Challenge entries grid (votable) */
.challenge-entries {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 16px;
}
.challenge-entry {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.challenge-entry-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.challenge-entry-content {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    color: var(--text-primary);
    line-height: 1.4;
}
.challenge-entry-vote {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.challenge-vote-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 50%;
    cursor: pointer;
    font-size: 18px;
    transition: background 0.2s, border-color 0.2s;
}
.challenge-vote-btn:active {
    transform: scale(0.9);
}
.challenge-vote-btn.voted {
    background: var(--accent-glow);
    border-color: var(--accent);
}
.challenge-vote-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-secondary);
    min-width: 20px;
    text-align: center;
}

/* Challenge leaderboard */
.challenge-leaderboard {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 16px;
}
.leaderboard-entry {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.leaderboard-rank {
    font-size: 20px;
    width: 36px;
    text-align: center;
    flex-shrink: 0;
}
.leaderboard-entry:nth-child(1) .leaderboard-rank::after { content: '🥇'; }
.leaderboard-entry:nth-child(2) .leaderboard-rank::after { content: '🥈'; }
.leaderboard-entry:nth-child(3) .leaderboard-rank::after { content: '🥉'; }
.leaderboard-rank-num {
    display: none;
}
.leaderboard-entry:nth-child(n+4) .leaderboard-rank::after { content: none; }
.leaderboard-entry:nth-child(n+4) .leaderboard-rank-num {
    display: inline;
    font-size: 14px;
    font-weight: 600;
    color: var(--text-dim);
}
.leaderboard-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.leaderboard-name {
    flex: 1;
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.leaderboard-votes {
    font-size: 13px;
    color: var(--text-secondary);
    flex-shrink: 0;
}
.leaderboard-prize {
    font-size: 12px;
    color: var(--xp);
    font-weight: 600;
    flex-shrink: 0;
}


/* ── Photo Contest ────────────────────────────────────────── */
.contest-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    margin-top: 16px;
}
.contest-entry {
    position: relative;
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: var(--bg-card);
    box-shadow: var(--shadow);
}
.contest-entry-photo {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    display: block;
}
.contest-entry-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 10px;
    background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.contest-vote-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(8px);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 20px;
    transition: background 0.2s, transform 0.15s;
}
.contest-vote-btn:active {
    transform: scale(0.9);
}
.contest-vote-btn.voted {
    background: var(--accent-glow);
}
.contest-vote-btn::after {
    content: '❤️';
}
.contest-vote-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
.contest-entry-author {
    font-size: 12px;
    color: rgba(255, 255, 255, 0.8);
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}


/* ── Achievements ─────────────────────────────────────────── */

/* Badge showcase on profile (flex row, max 5) */
.badge-showcase {
    display: flex;
    gap: 8px;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding: 4px 0;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.badge-showcase::-webkit-scrollbar {
    display: none;
}
.badge-showcase-item {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    min-width: 40px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 50%;
    font-size: 20px;
    flex-shrink: 0;
    transition: transform 0.15s;
}
.badge-showcase-item:active {
    transform: scale(0.9);
}

/* Badge showcase on swipe card (under name) */
.card-badges {
    display: flex;
    gap: 4px;
    margin-top: 4px;
}
.card-badge {
    font-size: 14px;
    line-height: 1;
}

/* Achievements full list */
.achievements-screen {
    padding: 16px;
    max-width: 400px;
    margin: 0 auto;
}
.achievements-header {
    text-align: center;
    margin-bottom: 20px;
}
.achievements-header h2 {
    font-size: 22px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 4px;
}
.achievements-header p {
    font-size: 13px;
    color: var(--text-secondary);
    margin: 0;
}
.achievements-category {
    margin-bottom: 20px;
}
.achievements-category-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}
.achievement-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.achievement-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    transition: opacity 0.3s;
}
.achievement-item.locked {
    opacity: 0.4;
}
.achievement-emoji {
    font-size: 28px;
    flex-shrink: 0;
    width: 40px;
    text-align: center;
}
.achievement-info {
    flex: 1;
    min-width: 0;
}
.achievement-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 2px;
}
.achievement-desc {
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: 6px;
}

/* Achievement progress bar */
.achievement-progress {
    width: 100%;
    height: 6px;
    background: var(--border);
    border-radius: 3px;
    overflow: hidden;
}
.achievement-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent), var(--accent-light));
    border-radius: 3px;
    transition: width 0.4s ease-out;
}
.achievement-item.locked .achievement-progress-fill {
    background: var(--text-dim);
}
.achievement-progress-text {
    font-size: 10px;
    color: var(--text-dim);
    margin-top: 3px;
}

/* Achievement unlocked checkmark */
.achievement-status {
    flex-shrink: 0;
    font-size: 18px;
}
.achievement-status.unlocked::after {
    content: '✅';
}
.achievement-status.locked::after {
    content: '🔒';
    opacity: 0.5;
}

/* Achievement showcase selector (in edit mode) */
.achievement-item.selectable {
    cursor: pointer;
}
.achievement-item.selectable:active {
    transform: scale(0.98);
}
.achievement-item.in-showcase {
    border-color: var(--accent);
    background: var(--accent-glow);
}


/* ── Popularity Score ─────────────────────────────────────── */

/* Popularity indicator on swipe card */
.popularity-indicator {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    font-weight: 700;
    padding: 3px 8px;
    border-radius: 10px;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(8px);
    line-height: 1;
}
.popularity-indicator.tier-hot {
    color: var(--success);
}
.popularity-indicator.tier-warm {
    color: var(--xp);
}
.popularity-indicator.tier-cold {
    color: var(--text-dim);
}
.popularity-icon::before {
    content: '🔥';
    margin-right: 2px;
}

/* Hot badge on profile */
.hot-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 700;
    color: var(--success);
    background: rgba(120,155,138, 0.12);
    padding: 3px 10px;
    border-radius: 10px;
}
.hot-badge::before {
    content: '🔥';
}

/* ============================================
   VOICE NOTES & SHARING STYLES (Task 19.4)

   Requirements: 18.1, 18.5, 35.1, 17.2
   ============================================ */


/* ── Voice Recorder (Chat Input) ──────────────────────────── */

/* Mic button in chat input bar */
.voice-record-btn {
    width: 44px;
    height: 44px;
    border: none;
    background: transparent;
    font-size: 20px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition: background 0.2s ease;
    flex-shrink: 0;
}
.voice-record-btn:active {
    background: var(--accent-glow);
}
.voice-record-btn.recording {
    background: rgba(255, 68, 68, 0.15);
}

/* Recording indicator overlay in chat input */
.voice-recording-indicator {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    padding: 0 12px;
    animation: fadeInUp 0.2s ease;
}

/* Red dot pulse */
.voice-recording-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--danger);
    flex-shrink: 0;
    animation: recordPulse 1s ease-in-out infinite;
}

/* Recording timer */
.voice-recording-timer {
    font-size: 15px;
    font-weight: 600;
    color: var(--danger);
    font-variant-numeric: tabular-nums;
    min-width: 40px;
}

/* Cancel hint */
.voice-recording-cancel {
    font-size: 12px;
    color: var(--text-dim);
    margin-left: auto;
}

/* Record pulse keyframe */
@keyframes recordPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.7); }
}


/* ── Voice Player Inline (Chat Bubble) ────────────────────── */

.voice-player {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    background: var(--bg-card);
    border-radius: var(--radius);
    min-width: 200px;
    max-width: 280px;
}

/* Play/pause button */
.voice-player-btn {
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    color: var(--text-primary);
    font-size: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform 0.15s ease;
}
.voice-player-btn:active {
    transform: scale(0.9);
}

/* Waveform + progress area */
.voice-player-wave {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

/* Waveform bars container */
.voice-waveform {
    display: flex;
    align-items: center;
    gap: 2px;
    height: 24px;
}
.voice-waveform-bar {
    flex: 1;
    min-width: 2px;
    max-width: 4px;
    border-radius: 1px;
    background: var(--text-dim);
    transition: background 0.15s ease;
}
.voice-waveform-bar.played {
    background: var(--accent);
}

/* Progress bar (fallback / simpler variant) */
.voice-progress {
    width: 100%;
    height: 3px;
    background: var(--border);
    border-radius: 2px;
    overflow: hidden;
}
.voice-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent), var(--accent-light));
    border-radius: 2px;
    transition: width 0.1s linear;
}

/* Duration text */
.voice-player-duration {
    font-size: 11px;
    color: var(--text-dim);
    font-variant-numeric: tabular-nums;
}

/* Voice message in sent bubble */
.message-bubble .voice-player {
    background: transparent;
    padding: 4px 0;
}


/* ── Share Buttons ─────────────────────────────────────────── */

/* Generic share button — discreet, used on profile/challenges/contests/vibe check */
.share-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s ease;
    min-height: 44px;
}
.share-btn:active {
    background: var(--accent-glow);
    border-color: var(--accent);
    color: var(--text-primary);
}

/* Icon-only variant (compact) */
.share-btn-icon {
    width: 40px;
    height: 40px;
    padding: 0;
    border-radius: 50%;
    font-size: 18px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--border);
    color: var(--text-secondary);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
}
.share-btn-icon:active {
    background: var(--accent-glow);
    color: var(--text-primary);
}

/* Share button on profile */
.profile-share-btn {
    margin-top: 12px;
}

/* Share button row (for challenge/contest cards) */
.share-row {
    display: flex;
    justify-content: flex-end;
    padding-top: 10px;
    border-top: 1px solid var(--border);
    margin-top: 10px;
}

/* Vibe check result share */
.vibe-result-share {
    margin-top: 16px;
    text-align: center;
}
.vibe-result-share .share-btn {
    background: var(--bg-glass);
    backdrop-filter: blur(10px);
}


/* ── Seasonal Event Theme Override ─────────────────────────── */

/* Seasonal CSS custom properties — set dynamically via JS */
.seasonal-active {
    --seasonal-accent: var(--accent);
    --seasonal-emoji: '';
}

/* Override accent color on cards during seasonal events */
.seasonal-active .swipe-card {
    border: 2px solid var(--seasonal-accent);
}
.seasonal-active .swipe-card .card-info {
    border-top: 1px solid var(--seasonal-accent);
}

/* Seasonal emoji decoration on cards */
.seasonal-active .swipe-card::after {
    content: var(--seasonal-emoji);
    position: absolute;
    top: 10px;
    right: 10px;
    font-size: 22px;
    z-index: 2;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.5));
    pointer-events: none;
}

/* Seasonal accent on primary buttons */
.seasonal-active .btn-primary {
    background: linear-gradient(135deg, var(--seasonal-accent), var(--accent));
}

/* Seasonal glow on match celebration */
.seasonal-active .match-celebration {
    background: radial-gradient(circle at center, rgba(169,67,91, 0.15), transparent 70%);
}

/* Seasonal badge on HUD */
.seasonal-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    padding: 3px 8px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--seasonal-accent, var(--border));
    color: var(--text-secondary);
    animation: pulse 2s ease-in-out infinite;
}

/* Seasonal event banner */
.seasonal-banner {
    padding: 12px 16px;
    background: var(--bg-glass);
    backdrop-filter: blur(20px);
    border-radius: var(--radius);
    border: 1px solid var(--seasonal-accent, var(--border));
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}
.seasonal-banner-emoji {
    font-size: 28px;
    flex-shrink: 0;
}
.seasonal-banner-text {
    flex: 1;
    min-width: 0;
}
.seasonal-banner-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 2px;
}
.seasonal-banner-desc {
    font-size: 12px;
    color: var(--text-secondary);
}


/* ═══════════════════════════════════════════════════════════════
   Ultra Modern UI Redesign — New Styles
   ═══════════════════════════════════════════════════════════════ */

/* ── 1.1 Bottom Nav Redesign (5 tabs, glassmorphism) ────── */
.bottom-nav-redesign {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: var(--nav-height);
    background: var(--bg-glass);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    display: flex;
    align-items: stretch;
    border-top: 1px solid var(--border);
    z-index: 100;
    /* Fallback for no backdrop-filter support */
    background: rgba(29,27,34, 0.95);
}

@supports (backdrop-filter: blur(20px)) {
    .bottom-nav-redesign {
        background: var(--bg-glass);
    }
}

.nav-tab {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    background: none;
    border: none;
    color: var(--text-dim);
    cursor: pointer;
    position: relative;
    min-width: 44px;
    min-height: 44px;
    padding: 6px 0;
    transition: color 0.2s ease, transform 0.2s ease;
    -webkit-tap-highlight-color: transparent;
}

.nav-tab .nav-tab-icon {
    font-size: 22px;
    line-height: 1;
    transition: transform 0.2s ease;
}

.nav-tab .nav-tab-label {
    font-size: 10px;
    font-weight: 500;
    line-height: 1;
}

.nav-tab.active {
    color: var(--accent);
}

.nav-tab.active .nav-tab-icon {
    transform: scale(1.15);
}

.nav-tab:active {
    color: var(--accent-light);
    transform: scale(0.95);
}

.nav-tab-badge {
    position: absolute;
    top: 4px;
    right: 50%;
    transform: translateX(14px);
    background: var(--accent);
    color: #fff;
    border-radius: 10px;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 5px;
    min-width: 16px;
    text-align: center;
    line-height: 14px;
    pointer-events: none;
}


/* ── 1.2 Side Drawer (slide from right, glassmorphism) ──── */
.drawer-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
    z-index: 200;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease-out, visibility 0.3s ease-out;
}

.drawer-overlay.active {
    opacity: 1;
    visibility: visible;
}

.side-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 80%;
    max-width: 360px;
    background: rgba(29,27,34, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    z-index: 201;
    transform: translateX(100%);
    transition: transform 0.3s ease-out;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    overflow-x: hidden;
    border-left: 1px solid var(--border);
    box-shadow: -8px 0 32px rgba(0, 0, 0, 0.4);
}

@supports (backdrop-filter: blur(20px)) {
    .side-drawer {
        background: var(--bg-glass);
    }
}

.side-drawer.open {
    transform: translateX(0);
}

/* Blur on background content when drawer is open */
.app-content-blur {
    filter: blur(4px);
    transition: filter 0.3s ease-out;
}

.drawer-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 20px 16px;
    border-bottom: 1px solid var(--border);
    cursor: pointer;
}

.drawer-header-photo {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    border: 2px solid var(--accent);
    background: var(--bg-card);
}

.drawer-header-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.drawer-header-info {
    flex: 1;
    min-width: 0;
}

.drawer-header-name {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.drawer-header-level {
    font-size: 12px;
    color: var(--xp);
    font-weight: 600;
    margin-top: 2px;
}

.drawer-header-arrow {
    font-size: 16px;
    color: var(--text-dim);
}

.drawer-seasonal-banner {
    margin: 12px 12px 0;
    padding: 10px 14px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 10px;
}

.drawer-seasonal-banner-emoji {
    font-size: 24px;
    flex-shrink: 0;
}

.drawer-seasonal-banner-text {
    font-size: 13px;
    color: var(--text-secondary);
    font-weight: 600;
}

.drawer-category {
    padding: 12px 16px 4px;
}

.drawer-category-title {
    font-size: 11px;
    font-weight: 700;
    color: var(--text-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}

.drawer-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    cursor: pointer;
    transition: background 0.15s ease;
    border-radius: var(--radius-sm);
    min-height: 44px;
    position: relative;
    -webkit-tap-highlight-color: transparent;
}

.drawer-item:active {
    background: var(--accent-glow);
}

.drawer-item-emoji {
    font-size: 20px;
    flex-shrink: 0;
    width: 28px;
    text-align: center;
}

.drawer-item-label {
    flex: 1;
    font-size: 14px;
    font-weight: 500;
    color: var(--text-primary);
}

.drawer-item-badge {
    background: var(--accent);
    color: #fff;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 700;
    padding: 2px 7px;
    min-width: 18px;
    text-align: center;
    line-height: 14px;
}

.drawer-item-arrow {
    font-size: 12px;
    color: var(--text-dim);
}


/* ── 1.3 Distance Filter (custom slider, radius label) ──── */
.proximity-filter {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 16px;
    margin: 0 16px 8px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}

.proximity-filter-icon {
    font-size: 18px;
    flex-shrink: 0;
}

.distance-slider {
    flex: 1;
    -webkit-appearance: none;
    appearance: none;
    height: 4px;
    background: var(--bg-secondary);
    border-radius: 2px;
    outline: none;
    cursor: pointer;
}

.distance-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: 3px solid var(--bg-card);
    box-shadow: 0 2px 8px rgba(169,67,91, 0.4);
    cursor: pointer;
    transition: transform 0.15s ease;
    /* Visual size 22px, tap target 44px via transparent border trick */
    background-clip: content-box;
    padding: 11px;
}

.distance-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

.distance-slider::-moz-range-thumb {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--yd-burgundy));
    border: 3px solid var(--bg-card);
    box-shadow: 0 2px 8px rgba(169,67,91, 0.4);
    cursor: pointer;
}

.distance-slider::-moz-range-track {
    height: 4px;
    background: var(--bg-secondary);
    border-radius: 2px;
    border: none;
}

.distance-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--accent-light);
    white-space: nowrap;
    min-width: 72px;
    text-align: right;
}

.proximity-no-results,
.proximity-geo-message {
    font-size: 12px;
    color: var(--text-secondary);
    padding: 6px 16px;
    text-align: center;
}

.proximity-geo-message {
    color: var(--text-dim);
    font-style: italic;
}


/* ── 1.4 Profile Overlay (slide-up/down, full screen) ───── */
.profile-overlay {
    position: fixed;
    inset: 0;
    z-index: 250;
    background: rgba(29,27,34, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    transform: translateY(100%);
    transition: transform 0.3s ease-out;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
}

@supports (backdrop-filter: blur(20px)) {
    .profile-overlay {
        background: var(--bg-glass);
    }
}

.profile-overlay.open {
    transform: translateY(0);
}

.profile-overlay.closing {
    transform: translateY(100%);
    transition: transform 0.3s ease-in;
}

.profile-overlay-close {
    position: fixed;
    top: 12px;
    right: 12px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid var(--border);
    color: var(--text-primary);
    font-size: 18px;
    cursor: pointer;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease;
}

.profile-overlay-close:active {
    background: rgba(0, 0, 0, 0.7);
}

.profile-overlay-content {
    max-width: 400px;
    margin: 0 auto;
    padding: 0 0 32px;
}

.profile-overlay-photo {
    width: 100%;
    height: 380px;
    object-fit: cover;
    display: block;
    background: var(--bg-secondary);
}

.profile-overlay-info {
    padding: 20px 16px 0;
}

.profile-overlay-name {
    font-size: 26px;
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 4px;
}

.profile-overlay-age-distance {
    font-size: 15px;
    color: var(--text-secondary);
    margin-bottom: 4px;
}

.profile-overlay-city {
    font-size: 13px;
    color: var(--text-dim);
    margin-bottom: 12px;
}

.profile-overlay-bio {
    font-size: 14px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin-bottom: 16px;
}

.profile-overlay-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.profile-overlay-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 12px;
    font-size: 12px;
    color: var(--text-secondary);
}

.profile-overlay-badge-verified {
    background: rgba(120,155,138, 0.1);
    border-color: rgba(120,155,138, 0.25);
    color: var(--success);
}

.profile-overlay-level {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    background: rgba(255, 215, 0, 0.1);
    border: 1px solid rgba(255, 215, 0, 0.2);
    border-radius: 12px;
    font-size: 12px;
    color: var(--xp);
    font-weight: 600;
}

.profile-overlay-popularity {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    background: rgba(169,67,91, 0.1);
    border: 1px solid rgba(169,67,91, 0.2);
    border-radius: 12px;
    font-size: 12px;
    color: var(--accent-light);
    font-weight: 600;
}

.profile-overlay-intentions {
    padding: 12px 16px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    margin: 0 16px 12px;
}

.profile-overlay-intentions-title {
    font-size: 12px;
    color: var(--text-dim);
    font-weight: 600;
    margin-bottom: 6px;
}

.profile-overlay-achievements {
    padding: 12px 16px;
    background: var(--bg-card);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    margin: 0 16px 12px;
}

.profile-overlay-achievements-title {
    font-size: 12px;
    color: var(--text-dim);
    font-weight: 600;
    margin-bottom: 8px;
}

.profile-overlay-achievements-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.profile-overlay-achievement {
    font-size: 24px;
}

/* Profile overlay stories bar */
.profile-overlay-stories {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 12px 16px;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.profile-overlay-stories::-webkit-scrollbar {
    display: none;
}

.profile-overlay-story-item {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    border: 2px solid var(--accent);
    cursor: pointer;
    background: var(--bg-secondary);
}

.profile-overlay-story-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Opening Move on profile overlay */
.profile-overlay-opening-move {
    padding: 14px 16px;
    background: rgba(169,67,91, 0.08);
    border: 1px solid rgba(169,67,91, 0.2);
    border-radius: var(--radius-sm);
    margin: 0 16px 16px;
}

.profile-overlay-opening-move-question {
    font-size: 14px;
    color: var(--text-secondary);
    font-style: italic;
    line-height: 1.4;
    margin-bottom: 10px;
}

.profile-overlay-opening-move-input {
    width: 100%;
    padding: 10px 12px;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 14px;
    resize: none;
    height: 48px;
    outline: none;
    box-sizing: border-box;
}

.profile-overlay-opening-move-input:focus {
    border-color: var(--accent);
}

/* Profile overlay action buttons */
.profile-overlay-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    padding: 16px;
}

.profile-overlay-action-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    font-size: 24px;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    min-width: 44px;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
}

.profile-overlay-action-btn:active {
    transform: scale(0.9);
}

.profile-overlay-action-btn-like {
    background: rgba(120,155,138, 0.15);
    color: var(--success);
}

.profile-overlay-action-btn-superlike {
    background: rgba(201,168,106, 0.15);
    color: var(--energy);
}

.profile-overlay-action-btn-crush {
    background: rgba(169,67,91, 0.15);
    color: var(--accent);
}

.profile-overlay-action-btn-compliment {
    background: rgba(217,107,130, 0.15);
    color: var(--accent-light);
}

.profile-overlay-action-btn-gift {
    background: rgba(255, 215, 0, 0.15);
    color: var(--xp);
}

.profile-overlay-action-btn-vibe {
    background: rgba(170,163,161, 0.15);
    color: var(--text-secondary);
}

.profile-overlay-action-btn-icebreaker {
    background: rgba(201,168,106, 0.1);
    color: var(--energy);
}

.profile-overlay-action-label {
    font-size: 9px;
    font-weight: 600;
    margin-top: 4px;
    color: var(--text-dim);
    text-align: center;
}


/* ── 1.5 Gift Modal (catalog, confirmation) ─────────────── */
.gift-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    background: rgba(0, 0, 0, 0.85);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s ease;
}
@supports (backdrop-filter: blur(8px)) {
    .gift-modal {
        background: rgba(0, 0, 0, 0.7);
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
    }
}

.gift-modal.open {
    opacity: 1;
    visibility: visible;
}

.gift-modal-content {
    background: var(--bg-card);
    border-radius: var(--radius);
    padding: 24px 20px;
    max-width: 360px;
    width: 90%;
    box-shadow: var(--shadow);
    animation: matchPop 0.3s ease;
    max-height: 80vh;
    overflow-y: auto;
}

.gift-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.gift-modal-header h3 {
    font-size: 18px;
    font-weight: 700;
}

.gift-modal-close {
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: 20px;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gift-modal-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

.gift-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 14px 8px;
    background: var(--bg-secondary);
    border: 2px solid var(--border);
    border-radius: var(--radius);
    cursor: pointer;
    transition: all 0.15s ease;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
}

.gift-item:active {
    transform: scale(0.95);
}

.gift-item.selected {
    border-color: var(--accent);
    background: var(--accent-glow);
}

.gift-item-emoji {
    font-size: 32px;
}

.gift-item-name {
    font-size: 11px;
    color: var(--text-primary);
    font-weight: 600;
    text-align: center;
}

.gift-item-price {
    font-size: 10px;
    color: var(--xp);
    font-weight: 700;
}

.gift-item-desc {
    font-size: 9px;
    color: var(--text-dim);
    text-align: center;
    line-height: 1.3;
}

.gift-confirm {
    text-align: center;
    padding: 16px 0;
}

.gift-confirm-emoji {
    font-size: 48px;
    margin-bottom: 8px;
}

.gift-confirm-text {
    font-size: 15px;
    color: var(--text-primary);
    font-weight: 600;
    margin-bottom: 4px;
}

.gift-confirm-price {
    font-size: 13px;
    color: var(--xp);
    margin-bottom: 16px;
}

.gift-confirm-actions {
    display: flex;
    gap: 10px;
}

.gift-confirm-actions .btn {
    flex: 1;
}

/* Gift sent confirmation animation */
.gift-sent-animation {
    text-align: center;
    padding: 24px 0;
}

.gift-sent-emoji {
    font-size: 56px;
    animation: giftSentBounce 0.6s ease;
}

.gift-sent-text {
    font-size: 16px;
    font-weight: 700;
    color: var(--success);
    margin-top: 12px;
}

@keyframes giftSentBounce {
    0% { transform: scale(0) rotate(-15deg); opacity: 0; }
    50% { transform: scale(1.3) rotate(5deg); }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

/* Insufficient Stars message */
.gift-insufficient {
    text-align: center;
    padding: 16px 0;
}

.gift-insufficient-text {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 12px;
}

.gift-insufficient-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 24px;
    background: linear-gradient(135deg, var(--xp), #ffa500);
    border: none;
    border-radius: var(--radius);
    color: var(--yd-raised);
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    min-height: 44px;
    transition: transform 0.15s ease;
}

.gift-insufficient-btn:active {
    transform: scale(0.97);
}


/* ── 1.6 HUD Redesign (compact, animated XP, energy pulse) ── */
.hud-redesign {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: var(--hud-height);
    max-height: 56px;
    background: rgba(29,27,34, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 12px;
    z-index: 100;
    border-bottom: 1px solid var(--border);
}

@supports (backdrop-filter: blur(20px)) {
    .hud-redesign {
        background: var(--bg-glass);
    }
}

/* HUD Level badge */
.hud-redesign .hud-level-badge {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 700;
    color: var(--xp);
    background: rgba(255, 215, 0, 0.1);
    padding: 3px 8px;
    border-radius: 10px;
    flex-shrink: 0;
}

/* HUD XP bar with animated progress */
.hud-redesign .hud-xp-section {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1;
    max-width: 120px;
}

.hud-redesign .hud-xp-bar-track {
    flex: 1;
    height: 6px;
    background: rgba(255, 215, 0, 0.15);
    border-radius: 3px;
    overflow: hidden;
    position: relative;
}

.hud-redesign .hud-xp-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--xp), #ffa500);
    border-radius: 3px;
    transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}

/* Shimmer effect on XP bar fill */
.hud-redesign .hud-xp-bar-fill::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
    animation: hudXpShimmer 2s ease-in-out infinite;
}

@keyframes hudXpShimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.hud-redesign .hud-xp-label {
    font-size: 10px;
    color: var(--text-dim);
    white-space: nowrap;
}

/* HUD Energy with progress bar */
.hud-redesign .hud-energy-section {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.hud-redesign .hud-energy-icon {
    font-size: 14px;
}

.hud-redesign .hud-energy-bar-track {
    width: 48px;
    height: 6px;
    background: rgba(201,168,106, 0.15);
    border-radius: 3px;
    overflow: hidden;
}

.hud-redesign .hud-energy-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--energy), var(--yd-champagne));
    border-radius: 3px;
    transition: width 0.5s ease;
}

.hud-redesign .hud-energy-text {
    font-size: 11px;
    font-weight: 700;
    color: var(--energy);
    min-width: 28px;
}

.hud-redesign .hud-energy-timer {
    font-size: 10px;
    color: var(--text-dim);
    font-variant-numeric: tabular-nums;
}

/* Energy warning pulse when < 20% */
.hud-energy-danger .hud-energy-bar-fill {
    background: linear-gradient(90deg, var(--danger), #cc3333);
}

.hud-energy-danger .hud-energy-text {
    color: var(--danger);
}

.hud-energy-danger .hud-energy-icon {
    animation: energyWarningPulse 1s ease-in-out infinite;
}

.hud-energy-danger .hud-energy-bar-track {
    animation: energyBarPulse 1s ease-in-out infinite;
}

@keyframes energyWarningPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.6; transform: scale(1.15); }
}

@keyframes energyBarPulse {
    0%, 100% { box-shadow: none; }
    50% { box-shadow: 0 0 8px rgba(255, 68, 68, 0.5); }
}

/* +XP float up animation */
.hud-xp-float {
    position: fixed;
    pointer-events: none;
    z-index: 999;
    font-size: 14px;
    font-weight: 700;
    color: var(--xp);
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
    animation: hudXpFloatUp 1.2s ease-out forwards;
}

@keyframes hudXpFloatUp {
    0% {
        opacity: 1;
        transform: translateY(0) scale(0.8);
    }
    30% {
        opacity: 1;
        transform: translateY(-10px) scale(1.1);
    }
    100% {
        opacity: 0;
        transform: translateY(-50px) scale(1);
    }
}


/* ── 1.7 Swipe Screen Redesign (stories, empty state, flash match) ── */

/* Swipe screen layout: HUD → stories → filter → cards → action buttons */
.swipe-screen-layout {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    padding-top: var(--hud-height);
    padding-bottom: var(--nav-height);
}

/* Stories bar (horizontal scrollable) */
.stories-bar-redesign {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding: 8px 16px;
    scrollbar-width: none;
    -ms-overflow-style: none;
    flex-shrink: 0;
}

.stories-bar-redesign::-webkit-scrollbar {
    display: none;
}

.stories-bar-redesign-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.stories-bar-redesign-ring {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    padding: 2px;
    border: 2px solid var(--border);
    overflow: hidden;
    transition: border-color 0.3s ease;
}

.stories-bar-redesign-ring--active {
    border-color: var(--accent);
    animation: storiesRingPulse 2s ease-in-out infinite;
}

.stories-bar-redesign-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    background: var(--bg-secondary);
}

.stories-bar-redesign-name {
    font-size: 10px;
    color: var(--text-dim);
    max-width: 56px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
}

/* Empty state with alternatives (Spotlight + Daily Picks) */
.empty-state-alternatives {
    text-align: center;
    padding: 24px 16px;
    max-width: 400px;
    margin: 0 auto;
}

.empty-state-alternatives-icon {
    font-size: 48px;
    margin-bottom: 12px;
}

.empty-state-alternatives-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 6px;
}

.empty-state-alternatives-text {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 20px;
    line-height: 1.4;
}

.empty-state-alternatives-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.empty-state-alt-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 20px 12px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    cursor: pointer;
    transition: all 0.15s ease;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
}

.empty-state-alt-card:active {
    border-color: var(--accent);
    background: var(--accent-glow);
    transform: scale(0.97);
}

.empty-state-alt-card-emoji {
    font-size: 32px;
}

.empty-state-alt-card-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.empty-state-alt-card-desc {
    font-size: 11px;
    color: var(--text-dim);
}

/* Flash Match indicator (pulsing) */
.flash-match-indicator {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    margin: 0 16px 8px;
    background: rgba(201,168,106, 0.08);
    border: 1px solid rgba(201,168,106, 0.25);
    border-radius: var(--radius-sm);
    animation: flashMatchPulse 2s ease-in-out infinite;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.flash-match-indicator-icon {
    font-size: 18px;
    animation: flashMatchIconPulse 1.5s ease-in-out infinite;
}

.flash-match-indicator-text {
    font-size: 13px;
    font-weight: 600;
    color: var(--energy);
    flex: 1;
}

.flash-match-indicator-timer {
    font-size: 13px;
    font-weight: 700;
    color: var(--text-primary);
    font-variant-numeric: tabular-nums;
}

@keyframes flashMatchPulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(201,168,106, 0.15); }
    50% { box-shadow: 0 0 12px 2px rgba(201,168,106, 0.2); }
}

@keyframes flashMatchIconPulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.2); }
}

/* Card distance display */
.card-distance {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--text-secondary);
    padding: 2px 0;
}

.card-distance-icon {
    font-size: 12px;
}


/* ── 1.8 Global Animations (fadeInUp, swipe overlays, 60fps) ── */

/* Screen opening animation */
.screen-animate-in {
    animation: screenFadeInUp 0.3s ease-out;
}

@keyframes screenFadeInUp {
    from {
        opacity: 0;
        transform: translateY(16px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Swipe overlays — green (like) and red (skip) */
.swipe-overlay {
    position: absolute;
    inset: 0;
    border-radius: var(--radius);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.12s ease;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
}

.swipe-overlay-like {
    background: linear-gradient(135deg, rgba(120,155,138, 0.15), rgba(120,155,138, 0.05));
    border: 2px solid rgba(120,155,138, 0.4);
}

.swipe-overlay-skip {
    background: linear-gradient(135deg, rgba(255, 68, 68, 0.15), rgba(255, 68, 68, 0.05));
    border: 2px solid rgba(255, 68, 68, 0.4);
}

.swipe-overlay-icon {
    font-size: 64px;
    opacity: 0.9;
    text-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}

.swipe-overlay.visible {
    opacity: 1;
}

/* 60fps performance hints for animated elements */
.swipe-card,
.side-drawer,
.profile-overlay,
.screen-animate-in,
.swipe-overlay {
    will-change: transform;
}

/* Parallax-like subtle effect on swipe card during drag */
.swipe-card-dragging {
    transition: none;
    will-change: transform;
}

.swipe-card-dragging .card-photo {
    transition: transform 0.05s linear;
}

/* Smooth card exit animations */
.swipe-card-exit-right {
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
    transform: translate3d(120%, 0, 0) rotate(15deg);
    opacity: 0;
}

.swipe-card-exit-left {
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
    transform: translate3d(-120%, 0, 0) rotate(-15deg);
    opacity: 0;
}

/* Card enter animation */
.swipe-card-enter {
    animation: swipeCardEnter 0.3s ease-out;
}

@keyframes swipeCardEnter {
    from {
        opacity: 0;
        transform: scale(0.95) translateY(10px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* Reduced motion preference */


/* ── Luxury/dark design system ─────────────────────────── */


html { background: var(--color-bg); }

body {
    background:
        radial-gradient(circle at 15% -10%, rgba(169,67,91, 0.22), transparent 34%),
        radial-gradient(circle at 100% 25%, rgba(169,67,91, 0.1), transparent 28%),
        var(--color-bg);
}

button, input, textarea { font: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--color-premium);
    outline-offset: 3px;
}

.hud {
    height: calc(var(--hud-height) + env(safe-area-inset-top));
    padding-top: env(safe-area-inset-top);
    background: rgba(20,19,25, 0.78);
    border-bottom-color: rgba(201,168,106, 0.14);
    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.18);
}

.screen {
    max-width: 460px;
    padding-left: 16px;
    padding-right: 16px;
}

.screen-header h2 {
    letter-spacing: -0.025em;
    font-size: 24px;
}

.cards-container { filter: drop-shadow(0 20px 42px rgba(0, 0, 0, 0.25)); }
.swipe-card {
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}

.btn, .action-btn, .nav-tab { transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease; }
.btn-primary {
    background: linear-gradient(135deg, var(--color-accent), var(--yd-rose));
    box-shadow: 0 12px 28px rgba(169,67,91, 0.24);
}
.btn-primary:active, .action-btn:active, .nav-tab:active { transform: scale(0.96); }

.bottom-nav {
    height: calc(var(--nav-height) + env(safe-area-inset-bottom));
    padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
    background: rgba(20,19,25, 0.86);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 -14px 34px rgba(0, 0, 0, 0.24);
}
.nav-tab { border-radius: 16px; color: var(--color-muted); }
.nav-tab.active {
    color: var(--color-premium-soft);
    background: linear-gradient(180deg, rgba(169,67,91, 0.18), rgba(169,67,91, 0.04));
}
.nav-tab.active .nav-tab-icon { filter: drop-shadow(0 0 9px rgba(201,168,106, 0.6)); }

.onboarding-step input, .onboarding-step textarea {
    background: rgba(29,27,34, 0.84);
    border-color: var(--color-line);
    border-radius: 16px;
}
.onboarding-step input:focus, .onboarding-step textarea:focus { border-color: var(--color-accent); box-shadow: var(--shadow-glow); }

.premium-screen, .premium-plan-card, .profile-card, .match-card, .message-item {
    border-color: rgba(201,168,106, 0.18);
}
.premium-badge, .premium-plan-card.recommended { color: var(--color-premium-soft); }

.card-info, .profile-view, .chat-list-item, .chat-header-bar {
    background: linear-gradient(180deg, rgba(29,27,34, 0.72), rgba(20,19,25, 0.92));
    border-color: var(--color-line);
}
.card-name, .profile-name, .chat-header-name { letter-spacing: -0.02em; }
.card-bio, .profile-bio, .chat-list-preview { color: var(--color-muted); }

.chat-list-item {
    border-radius: 18px;
    margin: 8px 0;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}
.chat-list-item.has-unread { border-color: rgba(169,67,91, 0.42); }
.chat-header-bar { border-radius: 18px; margin: 8px 0 12px; }

.profile-overlay.open { box-shadow: 0 -18px 60px rgba(0, 0, 0, 0.5); }
.profile-overlay-content {
    background: linear-gradient(180deg, rgba(20,19,25, 0.98), rgba(11,11,16, 0.99));
}
.profile-overlay-action-btn { box-shadow: 0 10px 24px rgba(0, 0, 0, 0.24); }

.popup-content, .modal-content, .toast {
    background: linear-gradient(145deg, rgba(29,27,34, 0.98), rgba(20,19,25, 0.98));
    border: 1px solid var(--color-line);
    box-shadow: var(--shadow-card);
}

.empty-state {
    padding: 28px 20px;
    border: 1px dashed rgba(201,168,106, 0.24);
    border-radius: var(--radius-card);
    background: rgba(20,19,25, 0.62);
}

.discover-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 10px 4px 18px;
}
.discover-hero .eyebrow {
    display: block;
    color: var(--color-premium);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.18em;
    margin-bottom: 8px;
}
.discover-hero h1 {
    font-size: clamp(27px, 7vw, 34px);
    line-height: 1.04;
    letter-spacing: -0.055em;
    font-weight: 800;
}
.discover-hero h1 em {
    color: var(--color-accent-soft);
    font-style: normal;
    text-shadow: 0 0 26px rgba(169,67,91, 0.24);
}
.discover-sparkle {
    color: var(--color-premium);
    font-size: 30px;
    line-height: 1;
    filter: drop-shadow(0 0 12px rgba(201,168,106, 0.7));
    animation: luxurySparkle 2.4s ease-in-out infinite;
}
@keyframes luxurySparkle {
    0%, 100% { transform: rotate(0deg) scale(1); opacity: 0.7; }
    50% { transform: rotate(18deg) scale(1.16); opacity: 1; }
}

.swipe-card {
    background: linear-gradient(180deg, var(--yd-raised), var(--yd-surface));
}
.swipe-card::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(180deg, transparent 42%, rgba(11,11,16, 0.16) 55%, rgba(11,11,16, 0.82) 100%);
}
.swipe-card .card-info { position: relative; z-index: 2; }
.swipe-card .card-photo { height: 70%; }
.swipe-card .card-info {
    margin-top: -2px;
    padding: 18px 18px 16px;
    background: linear-gradient(180deg, rgba(20,19,25, 0.04), rgba(20,19,25, 0.98) 18%);
}
.swipe-card .card-name { font-size: 24px; text-shadow: 0 2px 14px rgba(0, 0, 0, 0.28); }
.swipe-card .card-badge { border-radius: var(--radius-pill); border: 1px solid rgba(255, 255, 255, 0.12); }
.swipe-card .card-badge-ai {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--color-premium-soft);
    background: rgba(201,168,106, 0.12);
    border-color: rgba(201,168,106, 0.3);
}

.profile-overlay-ai-notice {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 12px 0;
    padding: 12px 14px;
    border: 1px solid rgba(201,168,106, 0.28);
    border-radius: 16px;
    background: linear-gradient(135deg, rgba(201,168,106, 0.14), rgba(169,67,91, 0.08));
    color: var(--color-premium-soft);
}
.profile-overlay-ai-notice strong, .profile-overlay-ai-notice small { display: block; }
.profile-overlay-ai-notice strong { font-size: 13px; }
.profile-overlay-ai-notice small { margin-top: 3px; color: var(--color-muted); font-size: 11px; line-height: 1.35; }
.profile-overlay-ai-icon { font-size: 20px; line-height: 1; }

.swipe-buttons {
    gap: 14px;
    padding: 18px 10px 10px;
}
.swipe-btn {
    width: 54px;
    height: 54px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    background: rgba(29,27,34, 0.9);
}
.swipe-btn-skip { color: var(--color-danger); }
.swipe-btn-like { color: var(--color-success); background: linear-gradient(145deg, rgba(120,155,138, 0.18), rgba(29,27,34, 0.92)); }
.swipe-btn-superlike { color: var(--color-premium); background: linear-gradient(145deg, rgba(201,168,106, 0.18), rgba(29,27,34, 0.92)); }

.match-celebration {
    background: radial-gradient(circle at 50% 28%, rgba(169,67,91, 0.25), transparent 26%), radial-gradient(ellipse at center, var(--yd-raised) 0%, var(--yd-bg) 72%);
}
.match-title {
    font-size: clamp(38px, 12vw, 58px);
    letter-spacing: 0.08em;
    color: var(--color-premium-soft);
    text-shadow: 0 0 28px rgba(201,168,106, 0.4);
}
.match-photo { border-color: var(--color-premium); box-shadow: 0 0 28px rgba(201,168,106, 0.22); }
.match-icebreaker { border-color: rgba(201,168,106, 0.2); }



.skeleton {
    background: linear-gradient(90deg, var(--color-surface) 25%, var(--color-surface-raised) 50%, var(--color-surface) 75%);
    background-size: 200% 100%;
    animation: skeleton-shimmer 1.4s ease-in-out infinite;
}
@keyframes skeleton-shimmer { to { background-position: -200% 0; } }

@media (max-width: 360px) {
    .screen { padding-left: 10px; padding-right: 10px; }
    .hud { padding-left: 10px; padding-right: 10px; }
    .hud-energy-bar, .hud-xp-bar { width: 44px; }
}

/* source: webapp/css/src/95-salon-nocturn.css */
/* ═══════════════════════════════════════════════════════════════════════════
   ═ SALON NOCTURN — THEME LAYER
   ═══════════════════════════════════════════════════════════════════════════
   Final ownership layer: body ambient gradients and theme-level overrides.
   All component-level styles live in 30-components.css.
   All screen-level styles live in 40-screens.css.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Body Ambient Gradients ── */
.discover-page-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    width: min(100%, 400px);
    margin: 0 auto 14px;
    padding: 4px 16px 0;
}

.discover-page-kicker {
    display: block;
    margin-bottom: 4px;
    color: var(--yd-champagne, #C9A86A);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .18em;
}

.discover-page-title {
    margin: 0;
    color: var(--yd-ivory, #F4EFE8);
    font-size: clamp(25px, 7vw, 32px);
    font-weight: 900;
    line-height: 1;
    letter-spacing: -.045em;
}

.discover-page-subtitle {
    margin: 7px 0 0;
    color: var(--yd-muted, #AAA3A1);
    font-size: 12px;
    line-height: 1.35;
}

.discover-page-filter {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 42px;
    padding: 0 13px;
    border: 1px solid rgba(201, 168, 106, .28);
    border-radius: 13px;
    color: var(--yd-champagne-light, #E4CA8B);
    background: rgba(201, 168, 106, .08);
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: background 180ms ease, transform 180ms ease;
}

.discover-page-filter svg { width: 16px; height: 16px; }
.discover-page-filter:active { transform: scale(.96); background: rgba(201, 168, 106, .16); }
.discover-page-filter:focus-visible { outline: 2px solid var(--yd-champagne-light); outline-offset: 3px; }

body {
    color: var(--yd-ivory);
    background:
        radial-gradient(circle at 12% -8%, var(--yd-tint-burgundy-medium), transparent 36%),
        radial-gradient(circle at 96% 18%, var(--yd-tint-champagne-light), transparent 30%),
        radial-gradient(circle at 50% 100%, var(--yd-tint-burgundy-light), transparent 45%),
        var(--yd-bg);
}

/* ── HUD Theme Override ── */
.hud {
    box-shadow: 0 4px 24px var(--yd-tint-black-medium);
}

/* ── Bottom Nav Theme Override ── */
.bottom-nav {
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

/* ── Nav Tab Active State ── */
.nav-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    padding: 8px 14px;
    border-radius: 20px;
    border: 0;
    background: transparent;
    color: var(--yd-muted, #AAA3A1);
    cursor: pointer;
    transition: all 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
    -webkit-tap-highlight-color: transparent;
}

.nav-tab.active {
    color: var(--yd-ivory, #F4EFE8);
    background: rgba(201, 168, 106, 0.12);
}
.nav-tab.active .nav-tab-icon {
    filter: drop-shadow(0 0 10px rgba(201, 168, 106, 0.45));
    color: var(--yd-champagne, #C9A86A);
    transform: scale(1.08);
}

.nav-tab-icon {
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nav-tab-icon svg {
    width: 22px;
    height: 22px;
    display: block;
    stroke: currentColor;
}

/* Drawer icons use inline SVG instead of emoji glyphs so every Telegram
   WebView renders the menu actions consistently. */
.drawer-item-icon {
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    color: var(--yd-champagne, #C9A86A);
    background: rgba(201, 168, 106, 0.10);
    border: 1px solid rgba(201, 168, 106, 0.18);
}

.drawer-item-icon svg {
    width: 17px;
    height: 17px;
    display: block;
}

.drawer-category-title {
    display: flex;
    align-items: center;
    gap: 7px;
}

.drawer-category-icon {
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--yd-champagne, #C9A86A);
}

.drawer-category-icon svg {
    width: 14px;
    height: 14px;
}

.drawer-item:hover .drawer-item-icon,
.drawer-item:focus-visible .drawer-item-icon {
    color: var(--yd-ivory, #F4EFE8);
    background: rgba(217, 107, 130, 0.20);
    border-color: rgba(217, 107, 130, 0.42);
}

.photo-upload-hint {
    margin: -4px 0 14px;
    text-align: center;
    color: rgba(244, 239, 232, 0.58);
    font-size: 11px;
    letter-spacing: 0.02em;
}

.stories-upload-helper {
    margin: -6px 0 16px;
    color: rgba(244, 239, 232, 0.64);
    font-size: 13px;
    line-height: 1.45;
}

.stories-photo-picker {
    width: 100%;
    min-height: 112px;
    margin: 0 0 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px dashed rgba(201, 168, 106, 0.48);
    border-radius: 16px;
    color: var(--yd-ivory, #F4EFE8);
    background: rgba(201, 168, 106, 0.07);
    cursor: pointer;
}

.stories-photo-picker:active {
    transform: scale(0.985);
    background: rgba(217, 107, 130, 0.16);
}

.stories-photo-picker-icon {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--yd-champagne, #C9A86A);
    border: 1px solid rgba(201, 168, 106, 0.35);
    font-size: 24px;
    line-height: 1;
}

.stories-photo-preview {
    margin: -2px 0 14px;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(201, 168, 106, 0.25);
    aspect-ratio: 16 / 9;
    background: #12121a;
}

.stories-photo-preview img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ── Primary Button Theme Enhancement ── */
.btn-primary {
    box-shadow: 0 12px 28px var(--yd-tint-burgundy-light);
    border: 1px solid var(--yd-tint-white-medium);
}
.btn-primary:active {
    box-shadow: 0 6px 16px var(--yd-tint-burgundy-medium);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ DISCOVER PAGE — HAUTE COUTURE OVERRIDES
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Cards Container & Immersive Swipe ── */
.cards-container {
    position: relative;
    width: 100%;
    max-width: 400px;
    height: calc(100vh - 180px);
    margin: 0 auto;
    padding: 0 16px;
}

/* ── Swipe Card — Premium Depth & Glow ── */
.swipe-card {
    position: absolute;
    top: 0;
    left: 16px;
    right: 16px;
    height: 84%;
    background: var(--yd-surface, #141319);
    border-radius: 24px;
    overflow: hidden;
    box-shadow:
        0 16px 48px rgba(0, 0, 0, 0.6),
        0 2px 12px rgba(169, 67, 91, 0.15),
        inset 0 1px 0 rgba(244, 239, 232, 0.08);
    border: 1px solid rgba(201, 168, 106, 0.18);
    touch-action: none;
    cursor: grab;
    user-select: none;
    transition: box-shadow var(--yd-motion-smooth, 300ms) ease;
    will-change: transform;
}

.swipe-card:active {
    cursor: grabbing;
}

.swipe-card .card-photo {
    width: 100%;
    height: 64%;
    object-fit: cover;
    pointer-events: none;
    display: block;
    background: var(--yd-raised, #1D1B22);
}

.swipe-card .card-info {
    position: relative;
    height: 36%;
    padding: 12px 16px;
    background: var(--yd-surface, #141319);
    border-top: 1px solid rgba(201, 168, 106, 0.1);
    overflow-y: auto;
    scrollbar-width: none;
}

.swipe-card .card-info::-webkit-scrollbar {
    display: none;
}

.swipe-card[data-swipe-current="true"] {
    box-shadow:
        0 20px 56px rgba(0, 0, 0, 0.7),
        0 4px 20px rgba(169, 67, 91, 0.22),
        inset 0 1px 0 rgba(244, 239, 232, 0.1);
}

/* ── Photo Gallery Dots on Card ── */
.card-gallery-dots {
    position: absolute;
    top: 12px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    display: flex;
    gap: 4px;
    padding: 4px 8px;
    border-radius: var(--radius-pill, 999px);
    background: rgba(11, 11, 16, 0.45);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.card-gallery-dot {
    width: 6px;
    height: 6px;
    border-radius: 3px;
    background: rgba(244, 239, 232, 0.35);
    transition: width 250ms cubic-bezier(0.4, 0, 0.2, 1), background 250ms ease;
}

.card-gallery-dot.active {
    width: 20px;
    background: var(--yd-champagne, #C9A86A);
}

/* ── Card Photo Tap Zones ── */
.card-photo-zone {
    position: absolute;
    top: 0;
    height: 64%;
    width: 40%;
    z-index: 4;
    cursor: pointer;
}
.card-photo-zone--prev { left: 0; }
.card-photo-zone--next { right: 0; }

/* ── Card Overlay Stamps — Frosted Glass ── */
.card-overlay-like,
.card-overlay-skip {
    position: absolute;
    top: 35%;
    transform: translateY(-50%) rotate(0deg) scale(0.7);
    z-index: 6;
    padding: 8px 24px;
    border-radius: 14px;
    font-family: var(--yd-font, inherit);
    font-size: 22px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 3px;
    opacity: 0;
    pointer-events: none;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    transition: opacity 120ms ease, transform 120ms ease;
}

.card-overlay-like {
    right: 20px;
    color: var(--yd-emerald, #4EAF82);
    background: rgba(78, 175, 130, 0.18);
    border: 2px solid rgba(78, 175, 130, 0.6);
    transform: translateY(-50%) rotate(-15deg) scale(0.7);
}

.card-overlay-skip {
    left: 20px;
    color: var(--yd-rose, #D96B82);
    background: rgba(217, 107, 130, 0.18);
    border: 2px solid rgba(217, 107, 130, 0.6);
    transform: translateY(-50%) rotate(15deg) scale(0.7);
}

.swipe-card.swiping-right .card-overlay-like {
    opacity: 1;
    transform: translateY(-50%) rotate(-15deg) scale(1);
}

.swipe-card.swiping-left .card-overlay-skip {
    opacity: 1;
    transform: translateY(-50%) rotate(15deg) scale(1);
}

/* ── Compatibility Score Badge ── */
.card-compat-badge {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 5;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 800;
    color: var(--yd-champagne, #C9A86A);
    background: rgba(14, 13, 18, 0.7);
    border: 1.5px solid rgba(201, 168, 106, 0.4);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}

/* ── Action Buttons — Positioned below Card ── */
.swipe-buttons {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 16%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 0 16px;
    z-index: 10;
}

.swipe-btn {
    width: 52px;
    height: 52px;
    min-width: 52px;
    min-height: 52px;
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border: 0;
    cursor: pointer;
    transition: transform 180ms cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 200ms ease;
    -webkit-tap-highlight-color: transparent;
}

.swipe-btn:active {
    transform: scale(0.9);
}

.swipe-btn-skip {
    background: rgba(244, 239, 232, 0.06);
    border: 1px solid rgba(217, 107, 130, 0.3) !important;
    color: var(--yd-rose, #D96B82);
}

.swipe-btn-like {
    width: 62px;
    height: 62px;
    min-width: 62px;
    min-height: 62px;
    background: linear-gradient(135deg, var(--yd-burgundy, #4A1525), var(--yd-rose, #D96B82));
    border: 1px solid rgba(255, 255, 255, 0.25) !important;
    color: #fff;
    box-shadow: 0 8px 24px rgba(169, 67, 91, 0.45);
}

.swipe-btn-superlike {
    background: rgba(201, 168, 106, 0.12);
    border: 1px solid rgba(201, 168, 106, 0.35) !important;
    color: var(--yd-champagne, #C9A86A);
}

.swipe-btn-compliment {
    background: rgba(244, 239, 232, 0.06);
    border: 1px solid rgba(244, 239, 232, 0.12) !important;
    color: var(--yd-ivory, #F4EFE8);
}

/* ── Discover Tools Bar ── */
.discover-tools-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    max-width: 420px;
    margin: 8px auto 0;
    padding: 0 16px;
}

.discover-filter-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    background: rgba(201, 168, 106, 0.08);
    border: 1px solid rgba(201, 168, 106, 0.2);
    border-radius: var(--radius-pill, 999px);
    color: var(--yd-champagne, #C9A86A);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 200ms ease;
}

.discover-filter-btn:active {
    background: rgba(201, 168, 106, 0.18);
}

/* ── Micro-Stories Strip ── */
.discover-stories-strip {
    max-width: 420px;
    margin: 0 auto 4px;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.discover-stories-strip::-webkit-scrollbar {
    display: none;
}

/* ── Like Button Glow ── */
.swipe-btn-like {
    box-shadow:
        0 8px 24px rgba(169, 67, 91, 0.4),
        0 0 0 0 rgba(169, 67, 91, 0);
    transition: transform var(--yd-motion-bounce, 300ms), box-shadow 300ms ease;
}

.swipe-btn-like:active {
    box-shadow:
        0 4px 12px rgba(169, 67, 91, 0.5),
        0 0 16px 4px rgba(169, 67, 91, 0.2);
}

/* ── Super Like Button Glow ── */
.swipe-btn-superlike {
    position: relative;
}

.swipe-btn-superlike::after {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: 50%;
    background: conic-gradient(from 0deg, rgba(201, 168, 106, 0.3), rgba(169, 67, 91, 0.2), rgba(201, 168, 106, 0.3));
    z-index: -1;
    opacity: 0;
    transition: opacity 400ms ease;
}

.swipe-btn-superlike:hover::after,
.swipe-btn-superlike:focus-visible::after {
    opacity: 1;
}

/* ── Report Button Premium ── */
.swipe-report-btn {
    display: block;
    margin: 8px auto 0;
    padding: 4px 12px;
    border: 0;
    background: transparent;
    color: var(--yd-muted, #AAA3A1);
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    opacity: 0.5;
    transition: opacity 200ms ease;
}

.swipe-report-btn:hover,
.swipe-report-btn:active {
    opacity: 0.8;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ PROFILE SHEET — CINEMATIC LUXURY
   ═══════════════════════════════════════════════════════════════════════════ */

.discover-profile-sheet {
    position: fixed;
    inset: 0;
    z-index: var(--yd-z-overlay, 500);
    background: rgba(11, 11, 16, 0.7);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    display: flex;
    align-items: flex-end;
    opacity: 0;
    pointer-events: none;
    transition: opacity 250ms ease;
}

.discover-profile-sheet.active {
    opacity: 1;
    pointer-events: auto;
}

.discover-profile-dialog {
    width: 100%;
    max-height: 92vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    border-radius: 24px 24px 0 0;
    background: linear-gradient(180deg, var(--yd-raised, #1D1B22), var(--yd-bg, #0B0B10));
    border-top: 1px solid rgba(244, 239, 232, 0.06);
    box-shadow: 0 -16px 64px rgba(11, 11, 16, 0.6);
    transform: translateY(100%);
    transition: transform 350ms cubic-bezier(0.32, 0.72, 0, 1);
}

.discover-profile-sheet.active .discover-profile-dialog {
    transform: translateY(0);
}

/* ── Drag Handle ── */
.discover-profile-handle {
    width: 40px;
    height: 4px;
    border-radius: 2px;
    background: rgba(244, 239, 232, 0.2);
    margin: 10px auto 4px;
}

/* ── Profile Close Button ── */
.discover-profile-close {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 10;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 0;
    background: rgba(11, 11, 16, 0.5);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: var(--yd-ivory, #F4EFE8);
    font-size: 18px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 200ms ease;
}

.discover-profile-close:active {
    background: rgba(11, 11, 16, 0.7);
}

/* ── Hero Photo ── */
.discover-profile-hero {
    position: relative;
    width: 100%;
    height: 55vh;
    max-height: 420px;
    overflow: hidden;
}

.discover-profile-hero img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 300ms ease;
}

.discover-profile-hero::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 45%;
    background: linear-gradient(180deg, transparent, rgba(29, 27, 34, 0.95));
    pointer-events: none;
}

/* ── Gallery Dots (Sheet) ── */
.discover-profile-gallery-dots {
    display: flex;
    justify-content: center;
    gap: 5px;
    padding: 12px 0 4px;
}

.discover-profile-gallery-dot {
    width: 6px;
    height: 6px;
    border-radius: 3px;
    background: rgba(244, 239, 232, 0.25);
    transition: width 250ms cubic-bezier(0.4, 0, 0.2, 1), background 250ms ease;
}

.discover-profile-gallery-dot.active {
    width: 20px;
    background: var(--yd-champagne, #C9A86A);
}

/* ── Profile Body ── */
.discover-profile-body {
    padding: 20px 20px 100px;
    position: relative;
}

.discover-profile-kicker {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 600;
    color: var(--yd-muted, #AAA3A1);
    margin-bottom: 6px;
}

.discover-profile-name {
    font-size: 28px;
    font-weight: 900;
    color: var(--yd-ivory, #F4EFE8);
    letter-spacing: -0.5px;
    line-height: 1.15;
    margin: 0 0 4px;
}

.discover-profile-city {
    color: var(--yd-muted, #AAA3A1);
    font-size: 14px;
    margin: 0 0 12px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.discover-profile-bio {
    color: var(--yd-ivory, #F4EFE8);
    font-size: 15px;
    line-height: 1.55;
    opacity: 0.85;
    font-style: italic;
    margin: 0 0 16px;
}

/* ── Stats Row ── */
.discover-profile-stats {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
}

.discover-profile-stat {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 10px 8px;
    border-radius: 14px;
    background: rgba(244, 239, 232, 0.04);
    border: 1px solid rgba(244, 239, 232, 0.06);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.discover-profile-stat-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--yd-ivory, #F4EFE8);
}

.discover-profile-stat-label {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--yd-muted, #AAA3A1);
}

/* ── Interests Grid ── */
.discover-profile-interests {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 16px;
}

.discover-profile-interest {
    padding: 6px 14px;
    border-radius: var(--radius-pill, 999px);
    background: rgba(201, 168, 106, 0.08);
    border: 1px solid rgba(201, 168, 106, 0.2);
    color: var(--yd-champagne-light, #E8D4A8);
    font-size: 13px;
    font-weight: 500;
}

/* ── Secondary Actions Row ── */
.discover-profile-secondary {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
}

.discover-profile-secondary button {
    flex: 1;
    padding: 10px 8px;
    border: 1px solid rgba(244, 239, 232, 0.08);
    border-radius: 12px;
    background: rgba(244, 239, 232, 0.04);
    color: var(--yd-muted, #AAA3A1);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 200ms ease;
}

.discover-profile-secondary button:active {
    background: rgba(244, 239, 232, 0.08);
}

/* ── Primary Action Bar — Frosted Bottom ── */
.discover-profile-action-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 14px 20px calc(14px + env(safe-area-inset-bottom, 0px));
    background: rgba(20, 19, 25, 0.7);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-top: 1px solid rgba(244, 239, 232, 0.06);
}

.discover-profile-action-bar .sheet-btn {
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 150ms ease, box-shadow 200ms ease;
}

.discover-profile-action-bar .sheet-btn:active {
    transform: scale(0.9);
}

.sheet-btn-skip {
    width: 48px;
    height: 48px;
    background: rgba(244, 239, 232, 0.06);
    border: 1px solid rgba(217, 107, 130, 0.25) !important;
    color: var(--yd-rose, #D96B82);
}

.sheet-btn-like {
    width: 60px;
    height: 60px;
    background: linear-gradient(135deg, var(--yd-burgundy, #4A1525), var(--yd-rose, #D96B82));
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
    color: #fff;
    box-shadow: 0 8px 24px rgba(169, 67, 91, 0.4);
}

.sheet-btn-superlike {
    width: 48px;
    height: 48px;
    background: rgba(201, 168, 106, 0.12);
    border: 1px solid rgba(201, 168, 106, 0.3) !important;
    color: var(--yd-champagne, #C9A86A);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ PARTICLE BURST & ANIMATIONS
   ═══════════════════════════════════════════════════════════════════════════ */

@keyframes particle-fly {
    0% { opacity: 1; transform: translate(0, 0) scale(1); }
    100% { opacity: 0; transform: translate(var(--px, 40px), var(--py, -60px)) scale(0.3); }
}

.swipe-particle {
    position: absolute;
    pointer-events: none;
    z-index: 20;
    font-size: 16px;
    animation: particle-fly 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

@keyframes star-spin {
    0% { opacity: 1; transform: translate(0, 0) rotate(0deg) scale(1); }
    100% { opacity: 0; transform: translate(var(--px, 30px), var(--py, -50px)) rotate(360deg) scale(0.2); }
}

.swipe-particle-star {
    position: absolute;
    pointer-events: none;
    z-index: 20;
    font-size: 14px;
    animation: star-spin 700ms cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ EMPTY STATES — PREMIUM
   ═══════════════════════════════════════════════════════════════════════════ */

.empty-state .empty-icon {
    font-size: 48px;
    margin-bottom: 16px;
    animation: sparkle-float 3s ease-in-out infinite;
}

@keyframes sparkle-float {
    0%, 100% { transform: translateY(0) scale(1); opacity: 0.8; }
    50% { transform: translateY(-8px) scale(1.05); opacity: 1; }
}

.empty-state h3 {
    background: linear-gradient(135deg, var(--yd-champagne, #C9A86A), var(--yd-rose-soft, #F2A3B3));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-size: 20px;
    font-weight: 800;
    margin-bottom: 8px;
}

.empty-state p {
    color: var(--yd-muted, #AAA3A1);
    font-size: 14px;
    line-height: 1.5;
    margin-bottom: 20px;
}

.energy-countdown {
    font-family: 'SF Mono', 'Menlo', 'Monaco', monospace;
    font-size: 24px;
    font-weight: 700;
    color: var(--yd-champagne, #C9A86A);
    margin-bottom: 16px;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ DISCOVERY MODULES — PREMIUM
   ═══════════════════════════════════════════════════════════════════════════ */

.discovery-section {
    margin-bottom: 16px;
    padding: 0 var(--yd-space-1, 4px);
}

.discovery-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.discovery-section-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--yd-ivory, #F4EFE8);
    letter-spacing: -0.3px;
}

/* ── Daily Picks Cards ── */
.dp-cards {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
    scrollbar-width: none;
}

.dp-cards::-webkit-scrollbar { display: none; }

.dp-card {
    flex-shrink: 0;
    width: 140px;
    scroll-snap-align: start;
    border-radius: 16px;
    overflow: hidden;
    background: var(--yd-raised, #1D1B22);
    border: 1px solid rgba(244, 239, 232, 0.06);
    transition: transform 200ms ease, box-shadow 200ms ease;
}

.dp-card:active {
    transform: scale(0.97);
}

.dp-card-photo {
    width: 100%;
    height: 160px;
    object-fit: cover;
}

.dp-card-info {
    padding: 10px 10px 12px;
}

.dp-card-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--yd-ivory, #F4EFE8);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dp-card-bio {
    font-size: 11px;
    color: var(--yd-muted, #AAA3A1);
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 8px;
}

.dp-card-like {
    width: 100%;
    padding: 7px;
    border: 0;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--yd-burgundy, #4A1525), var(--yd-rose, #D96B82));
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: transform 150ms ease;
}

.dp-card-like:active {
    transform: scale(0.95);
}

.dp-card-liked {
    background: rgba(78, 175, 130, 0.15);
    color: var(--yd-emerald, #4EAF82);
    border: 1px solid rgba(78, 175, 130, 0.25);
}

.dp-badge-new {
    position: absolute;
    top: 8px;
    left: 8px;
    padding: 2px 8px;
    border-radius: var(--radius-pill, 999px);
    background: linear-gradient(135deg, var(--yd-rose, #D96B82), var(--yd-burgundy, #4A1525));
    color: #fff;
    font-size: 9px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    animation: compat-pulse 2s ease-in-out infinite;
}

/* ── Spotlight Carousel ── */
.spotlight-cards {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding: 4px 0;
    scrollbar-width: none;
}

.spotlight-cards::-webkit-scrollbar { display: none; }

.spotlight-card {
    flex-shrink: 0;
    scroll-snap-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    cursor: pointer;
}

.spotlight-card-avatar {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
    padding: 2px;
    background: conic-gradient(from 45deg, var(--yd-burgundy, #4A1525), var(--yd-champagne, #C9A86A), var(--yd-rose, #D96B82), var(--yd-burgundy, #4A1525));
    animation: ring-rotate 4s linear infinite;
}

@keyframes ring-rotate {
    to { filter: hue-rotate(20deg); }
}

.spotlight-card-avatar img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--yd-bg, #0B0B10);
}

.spotlight-card-name {
    font-size: 11px;
    font-weight: 600;
    color: var(--yd-ivory, #F4EFE8);
    max-width: 64px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
}

/* ── Who Liked You ── */
.wly-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.wly-card {
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    aspect-ratio: 3/4;
    background: var(--yd-raised, #1D1B22);
    border: 1px solid rgba(244, 239, 232, 0.06);
}

.wly-card-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.wly-card-blurred .wly-card-photo {
    filter: blur(20px) saturate(1.2);
}

.wly-card-blurred::after {
    content: '';
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(11, 11, 16, 0.4);
}

.wly-unlock {
    display: block;
    width: 100%;
    margin-top: 12px;
    padding: 12px;
    border: 0;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--yd-champagne-700, #9C7B3A), var(--yd-champagne, #C9A86A));
    color: var(--yd-bg, #0B0B10);
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: transform 150ms ease;
}

.wly-unlock:active {
    transform: scale(0.97);
}

/* ── Compliment Modal Premium ── */
.compliment-modal {
    position: fixed;
    inset: 0;
    z-index: var(--yd-z-overlay, 500);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    background: rgba(11, 11, 16, 0.6);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.compliment-modal-content {
    width: 100%;
    max-width: 400px;
    border-radius: 24px 24px 0 0;
    background: linear-gradient(180deg, var(--yd-raised, #1D1B22), var(--yd-bg, #0B0B10));
    border-top: 1px solid rgba(244, 239, 232, 0.06);
    padding: 24px 20px calc(20px + env(safe-area-inset-bottom, 0px));
}

.compliment-modal-header h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--yd-ivory, #F4EFE8);
    margin: 0 0 4px;
}

.compliment-counter {
    font-size: 12px;
    color: var(--yd-muted, #AAA3A1);
}

.compliment-predefined {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 16px 0;
}

.compliment-option {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 12px 18px;
    border: 1px solid rgba(244, 239, 232, 0.08);
    border-radius: var(--radius-pill, 999px);
    background: rgba(244, 239, 232, 0.04);
    color: var(--yd-ivory, #F4EFE8);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: background 200ms ease, border-color 200ms ease;
}

.compliment-option:active {
    background: rgba(169, 67, 91, 0.15);
    border-color: rgba(169, 67, 91, 0.3);
}

.compliment-custom-input {
    width: 100%;
    padding: 12px;
    border: 1px solid rgba(244, 239, 232, 0.1);
    border-radius: 14px;
    background: rgba(244, 239, 232, 0.04);
    color: var(--yd-ivory, #F4EFE8);
    font-size: 14px;
    font-family: var(--yd-font, inherit);
    resize: none;
    min-height: 60px;
}

.compliment-custom-input:focus {
    outline: none;
    border-color: var(--yd-champagne, #C9A86A);
}

.compliment-custom-counter {
    text-align: right;
    font-size: 11px;
    color: var(--yd-muted, #AAA3A1);
    margin: 4px 0 8px;
}

.compliment-modal-close {
    display: block;
    width: 100%;
    min-height: 44px;
    padding: 12px;
    margin-top: 8px;
    border: 0;
    border-radius: 14px;
    background: transparent;
    color: var(--yd-muted, #AAA3A1);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

/* ── Coach Mark ── */
.discover-coach {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    margin-top: 8px;
    border-radius: 14px;
    background: rgba(201, 168, 106, 0.08);
    border: 1px solid rgba(201, 168, 106, 0.15);
    color: var(--yd-champagne-light, #E8D4A8);
    font-size: 12px;
}

.discover-coach button {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    min-width: 44px;
    padding: 8px 16px;
    border: 1px solid rgba(201, 168, 106, 0.3);
    border-radius: var(--radius-pill, 999px);
    background: transparent;
    color: var(--yd-champagne, #C9A86A);
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
}

/* ── Luxury Gift Modal ── */
.gift-modal {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: none;
    align-items: flex-end;
    justify-content: center;
}

.gift-modal.active {
    display: flex;
}

.gift-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.75);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.gift-modal-content.luxury-gift-modal {
    position: relative;
    width: 100%;
    max-width: 480px;
    max-height: 85vh;
    overflow-y: auto;
    background: var(--yd-bg-sheet, #15131A);
    border-top: 1px solid var(--yd-line-gold, rgba(201, 168, 106, 0.25));
    border-radius: 28px 28px 0 0;
    padding: 16px 20px 32px;
    box-shadow: 0 -16px 48px rgba(0, 0, 0, 0.6);
    animation: sheetSlideUp 0.32s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.luxury-gift-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
}

.gift-modal-close {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    background: var(--yd-card-inner, #1C1924);
    border: 1px solid var(--yd-border-subtle, rgba(255, 255, 255, 0.08));
    color: var(--yd-muted, #AAA3A1);
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.gift-pay-toggle {
    display: flex;
    gap: 8px;
    padding: 4px;
    background: var(--yd-card-inner, #1C1924);
    border-radius: 14px;
    margin-bottom: 16px;
    border: 1px solid var(--yd-border-subtle, rgba(255, 255, 255, 0.06));
}

.gift-pay-tab {
    flex: 1;
    padding: 8px 12px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--yd-muted, #AAA3A1);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.gift-pay-tab.active {
    background: var(--yd-surface-glass, rgba(255, 255, 255, 0.08));
    color: var(--yd-ivory, #F5EFEB);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.luxury-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.luxury-gift-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 12px 6px 10px;
    background: var(--yd-card-inner, #1C1924);
    border: 1.5px solid var(--yd-border-subtle, rgba(255, 255, 255, 0.06));
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
    color: var(--yd-ivory, #F5EFEB);
}

.luxury-gift-card:active {
    transform: scale(0.94);
}

.luxury-gift-card.selected {
    border-color: var(--yd-champagne, #C9A86A);
    background: rgba(201, 168, 106, 0.12);
    box-shadow: 0 0 16px rgba(201, 168, 106, 0.2);
    transform: translateY(-2px);
}

.luxury-gift-emoji {
    font-size: 32px;
    line-height: 1;
    margin-bottom: 6px;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));
}

.luxury-gift-name {
    font-size: 11px;
    font-weight: 700;
    color: var(--yd-ivory, #F5EFEB);
    margin-bottom: 3px;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
}

.luxury-gift-cost {
    font-size: 10px;
    font-weight: 700;
}

.gift-pay-toggle ~ .luxury-grid .cost-stars {
    display: none;
}

.gift-pay-toggle:has(.gift-pay-tab[data-method="stars"].active) ~ .luxury-grid .cost-stars {
    display: inline;
    color: #FFD700;
}

.gift-pay-toggle:has(.gift-pay-tab[data-method="stars"].active) ~ .luxury-grid .cost-xp {
    display: none;
}

.cost-xp {
    color: var(--yd-rose, #E05375);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ PROFILE SCREEN — CONCIERGE & MEMBERSHIP CARD
   ═══════════════════════════════════════════════════════════════════════════ */

.profile-hero-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 24px 16px 20px;
    background: var(--yd-surface, #141319);
    border: 1px solid rgba(201, 168, 106, 0.2);
    border-radius: 28px;
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.08);
    margin-bottom: 16px;
    position: relative;
    overflow: hidden;
}

.profile-hero-card::before {
    content: '';
    position: absolute;
    top: -50px;
    left: 50%;
    transform: translateX(-50%);
    width: 160px;
    height: 160px;
    background: radial-gradient(circle, rgba(201, 168, 106, 0.2) 0%, transparent 70%);
    pointer-events: none;
}

.profile-avatar-wrapper {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    position: relative;
    padding: 3px;
    background: conic-gradient(from 180deg, var(--yd-champagne-700, #9C7B3A), var(--yd-champagne, #C9A86A), var(--yd-burgundy, #A9435B), var(--yd-champagne, #C9A86A));
    box-shadow: 0 0 24px rgba(201, 168, 106, 0.3);
    margin-bottom: 12px;
}

.profile-avatar-wrapper img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    display: block;
}

.profile-stats-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

.profile-stat-card {
    padding: 14px 10px;
    background: rgba(20, 19, 25, 0.7);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(244, 239, 232, 0.06);
    border-radius: 18px;
    text-align: center;
}

.profile-stat-num {
    font-size: 18px;
    font-weight: 800;
    color: var(--yd-champagne, #C9A86A);
    font-variant-numeric: tabular-nums;
}

.profile-stat-lbl {
    font-size: 11px;
    color: var(--yd-muted, #AAA3A1);
    margin-top: 2px;
    font-weight: 500;
}

.profile-features-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

.profile-feature-card {
    display: flex;
    flex-direction: column;
    padding: 16px 14px;
    background: rgba(20, 19, 25, 0.7);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(201, 168, 106, 0.15);
    border-radius: 20px;
    cursor: pointer;
    transition: transform 180ms ease, border-color 200ms ease;
}

.profile-feature-card:active {
    transform: scale(0.97);
    border-color: var(--yd-champagne, #C9A86A);
}

.profile-feature-icon {
    width: 38px;
    height: 38px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    margin-bottom: 10px;
}

.profile-feature-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--yd-ivory, #F4EFE8);
    margin-bottom: 3px;
}

.profile-feature-desc {
    font-size: 11px;
    color: var(--yd-muted, #AAA3A1);
    line-height: 1.35;
}

/* ═══════════════════════════════════════════════════════════════════════════
   ═ CHAT & MESSAGING — LUXURY AMBIENCE
   ═══════════════════════════════════════════════════════════════════════════ */

.chat-message.sent .chat-bubble {
    background: linear-gradient(135deg, var(--yd-burgundy, #4A1525), var(--yd-burgundy-soft, #6E2238));
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--yd-ivory, #F4EFE8);
    border-radius: 20px 20px 4px 20px;
    box-shadow: 0 4px 16px rgba(110, 34, 56, 0.3);
}

.chat-message.received .chat-bubble {
    background: rgba(20, 19, 25, 0.85);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(244, 239, 232, 0.08);
    color: var(--yd-ivory, #F4EFE8);
    border-radius: 20px 20px 20px 4px;
}

.chat-input-bar {
    background: rgba(14, 13, 18, 0.92);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border-top: 1px solid rgba(201, 168, 106, 0.15);
    padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
}

/* source: webapp/css/src/96-launch.css */
/* Launch refinement — uses the shared Salon Nocturn palette. */
.welcome-page {
    width: 100%;
    max-width: 440px;
    margin: auto;
    padding: var(--yd-space-6);
    color: var(--yd-ivory);
    text-align: left;
}
.welcome-brand {
    display: flex;
    align-items: center;
    gap: var(--yd-space-2);
    font-size: var(--yd-text-sm);
    font-weight: var(--yd-weight-semibold);
    letter-spacing: var(--yd-tracking-caps);
}
.welcome-mark { color: var(--yd-rose); font-size: var(--yd-text-xl); }
.welcome-edition {
    margin-left: auto;
    color: var(--yd-muted);
    font-size: 9px;
    letter-spacing: .12em;
}
.welcome-orbit {
    position: relative;
    display: grid;
    place-content: center;
    width: 176px;
    height: 176px;
    margin: var(--yd-space-10) auto;
    border: 1px solid var(--yd-line);
    border-radius: 50%;
    background: radial-gradient(circle at 30% 20%, var(--yd-burgundy-900), var(--yd-bg) 75%);
    box-shadow: 0 0 70px color-mix(in srgb, var(--yd-rose) 20%, transparent);
}
.welcome-orbit::after {
    position: absolute;
    content: '';
    inset: -12px;
    border: 1px solid color-mix(in srgb, var(--yd-rose) 20%, transparent);
    border-radius: inherit;
}
.welcome-orbit > span { font: italic 96px Georgia, serif; color: var(--yd-ivory); line-height: 1; }
.welcome-orbit > i {
    position: absolute;
    width: 12px;
    height: 12px;
    top: 20px;
    right: 22px;
    border-radius: 50%;
    background: var(--yd-rose);
    box-shadow: 0 0 20px var(--yd-rose);
}
.welcome-orbit > b {
    position: absolute;
    bottom: 26px;
    width: 100%;
    text-align: center;
    font-size: 8px;
    font-weight: var(--yd-weight-medium);
    letter-spacing: .2em;
    color: var(--yd-muted);
}
.welcome-eyebrow { color: var(--yd-rose); font-size: 10px; font-weight: 700; letter-spacing: .14em; }
.welcome-copy h1 {
    font-size: clamp(30px, 8vw, 38px);
    font-weight: var(--yd-weight-semibold);
    letter-spacing: -.045em;
    line-height: 1.16;
    margin: var(--yd-space-3) 0 var(--yd-space-4);
}
.welcome-copy em { font-family: Georgia, serif; font-weight: 400; color: var(--yd-rose); }
.welcome-copy p { color: var(--yd-muted); font-size: var(--yd-text-base); line-height: var(--yd-leading-relaxed); margin-bottom: var(--yd-space-6); }
.welcome-cta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    min-height: 56px;
    padding: var(--yd-space-4) var(--yd-space-5);
    text-decoration: none;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--yd-rose) 0%, var(--yd-burgundy) 100%);
    box-shadow: 0 8px 24px rgba(217, 107, 130, 0.35);
}
.welcome-cta span { font-size: var(--yd-text-xl); }
.welcome-features { display: flex; justify-content: space-between; gap: var(--yd-space-2); padding-top: var(--yd-space-4); color: var(--yd-muted); font-size: 10px; }
.welcome-features span::before { content: '·'; color: var(--yd-rose); padding-right: 5px; }
.welcome-retry { display: block; margin: var(--yd-space-3) auto 0; min-height: 44px; padding: 0 var(--yd-space-4); background: none; border: 0; color: var(--yd-muted); font: inherit; font-size: var(--yd-text-sm); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.welcome-footer { margin-top: var(--yd-space-3); text-align: center; color: var(--yd-muted); font-size: var(--yd-text-xs); line-height: 1.8; }
.welcome-notice { padding: var(--yd-space-3); margin-bottom: var(--yd-space-4); border-left: 2px solid var(--yd-rose); background: var(--yd-raised); color: var(--yd-ivory); font-size: var(--yd-text-sm); }

/* ── HUD Modernization: Sleek Contemporary Dating Header ── */
.hud {
    height: 50px;
    padding: calc(env(safe-area-inset-top, 0px) + 4px) var(--yd-space-4) 4px;
    background: rgba(11, 11, 16, 0.88);
    backdrop-filter: blur(20px) saturate(180%);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.hud-energy {
    display: flex;
    align-items: center;
    gap: 6px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.07);
    border-radius: 20px;
    padding: 3px 9px;
    height: 30px;
    box-sizing: border-box;
}

.hud-energy .hud-icon {
    display: flex;
    align-items: center;
    color: var(--yd-rose);
    width: 14px;
    height: 14px;
}

.hud-energy .hud-icon svg {
    width: 14px;
    height: 14px;
}

#hud-energy-text {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--yd-ivory);
    min-width: unset;
    letter-spacing: 0.01em;
}

.hud-energy-bar {
    width: 38px;
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
}

.hud-energy-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--yd-burgundy), var(--yd-rose));
    border-radius: 2px;
    transition: width 0.4s ease;
}

.hud-timer {
    font-size: 10px;
    color: var(--yd-muted);
    min-width: unset;
}

.hud-potion-btn {
    width: 24px;
    height: 24px;
    min-height: 24px;
    border-radius: 50%;
    background: var(--yd-rose);
    border: none;
    color: #fff;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(217, 107, 130, 0.4);
}

.hud-xp {
    display: flex;
    align-items: center;
    gap: 6px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.07);
    border-radius: 20px;
    padding: 3px 9px;
    height: 30px;
    box-sizing: border-box;
}

.hud-xp .hud-icon {
    display: flex;
    align-items: center;
    color: var(--yd-champagne);
    width: 13px;
    height: 13px;
}

.hud-xp .hud-icon svg {
    width: 13px;
    height: 13px;
}

.hud-level {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--yd-champagne-300);
    background: none;
    padding: 0;
    border-radius: 0;
}

.hud-xp-bar {
    width: 34px;
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
}

.hud-xp-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--yd-champagne-700), var(--yd-champagne));
    border-radius: 2px;
    transition: width 0.4s ease;
}

.hud-xp-text {
    font-size: 10px;
    color: var(--yd-muted);
}

/* ── Modern Floating Bottom Navigation ── */
.bottom-nav {
    bottom: calc(10px + max(env(safe-area-inset-bottom, 0px), var(--tg-content-safe-area-inset-bottom, 0px)));
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    width: calc(100% - 24px);
    max-width: 420px;
    height: 64px;
    padding: 4px 6px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 28px;
    background: rgba(18, 17, 23, 0.94);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: space-around;
}
.nav-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-width: 44px;
    min-height: 52px;
    flex: 1;
    background: transparent;
    border: none;
    color: var(--yd-muted);
    cursor: pointer;
    border-radius: 16px;
    transition: color var(--yd-motion-fast), transform var(--yd-motion-fast);
    -webkit-tap-highlight-color: transparent;
}
.nav-tab-icon svg {
    width: 21px;
    height: 21px;
    stroke: currentColor;
    stroke-width: 1.8;
    transition: stroke var(--yd-motion-fast), transform var(--yd-motion-fast);
}
.nav-tab-label {
    font-size: 10px;
    font-weight: 500;
    white-space: nowrap;
    transition: color var(--yd-motion-fast);
}
.nav-tab.active {
    color: var(--yd-rose);
}
.nav-tab.active .nav-tab-icon svg {
    stroke: var(--yd-rose);
    transform: scale(1.06);
}
.nav-tab.active .nav-tab-label {
    font-weight: 700;
    color: var(--yd-rose);
}
.nav-tab:active {
    transform: scale(0.92);
}
.discover-page-filter {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 20px;
    padding: 6px 14px;
    color: var(--yd-ivory);
    font-size: 12px;
    font-weight: 600;
    backdrop-filter: blur(12px);
    cursor: pointer;
    transition: all var(--yd-motion-fast);
}
.discover-page-filter:active {
    transform: scale(0.95);
    background: rgba(255, 255, 255, 0.1);
}
.chat-input-bar textarea, .chat-input-bar input { font-size: 16px; }
button:disabled { cursor: not-allowed; }
.app-toast { max-width: calc(100vw - 32px); overflow-wrap: anywhere; }

/* ── Modern Discover Shell & Card Stack (Tinder/Badoo Quality) ── */
.discover-primary {
    display: flex;
    flex-direction: column;
    height: calc(100svh - 148px);
    height: calc(var(--tg-viewport-stable-height, 100svh) - 148px);
    min-height: 400px;
    gap: var(--yd-space-2);
}
.discover-primary .discover-page-header {
    flex-shrink: 0;
    margin: 0;
    padding: 0 var(--yd-space-2) 4px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.discover-primary .discover-page-kicker {
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.15em;
    color: var(--yd-rose);
    text-transform: uppercase;
}
.discover-primary .discover-page-title {
    font-size: 24px;
    font-weight: 700;
    letter-spacing: -.03em;
    color: var(--yd-ivory);
    margin: 0;
    line-height: 1.15;
}
.discover-primary .discover-page-subtitle { display: none; }
.discover-primary #stories-bar-container:empty { display: none; }
.discover-primary #stories-bar-container { flex-shrink: 0; max-height: 76px; overflow: auto; }
.discover-primary #cards-container {
    flex: 1;
    width: 100%;
    height: auto;
    min-height: 280px;
    padding: 0;
    margin: 0;
    position: relative;
}
.discover-primary .swipe-card {
    inset: 0 0 88px;
    width: 100%;
    height: auto;
    border-radius: 26px;
    overflow: hidden;
    background: var(--yd-surface);
    border: 1px solid rgba(255, 255, 255, 0.08);
    box-shadow: 0 16px 44px rgba(0, 0, 0, 0.55);
}
.discover-primary .card-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.discover-primary .card-info {
    position: absolute;
    inset: auto 0 0;
    height: auto;
    max-height: 68%;
    padding: var(--yd-space-12) var(--yd-space-4) var(--yd-space-4);
    background: linear-gradient(
        to bottom,
        rgba(11, 11, 16, 0) 0%,
        rgba(11, 11, 16, 0.25) 25%,
        rgba(11, 11, 16, 0.78) 60%,
        rgba(11, 11, 16, 0.96) 95%
    );
    border: 0;
    border-radius: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.discover-primary .card-name {
    font-size: 23px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #ffffff;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
    background: none;
    border: none;
    padding: 0;
    text-align: left;
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    margin-bottom: 2px;
}
.card-badge-row { display: flex; align-items: center; justify-content: flex-start; gap: 6px; flex-wrap: wrap; }
.card-verified-svg {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: rgba(201, 168, 106, 0.15);
    border: 1px solid rgba(201, 168, 106, 0.3);
    color: var(--yd-champagne-300);
    border-radius: 12px;
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 600;
}
.card-verified-svg svg { width: 13px; height: 13px; flex: 0 0 13px; fill: currentColor; }
.card-online-dot {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: rgba(120, 155, 138, 0.15);
    border: 1px solid rgba(120, 155, 138, 0.3);
    color: #8ED0AD;
    border-radius: 12px;
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 600;
}
.card-online-dot::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #8ED0AD;
    box-shadow: 0 0 6px rgba(142, 208, 173, 0.7);
}
.discover-primary .card-detail {
    font-size: 12px;
    color: var(--yd-muted);
}
.card-intent-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 14px;
    padding: 3px 9px;
    font-size: 11.5px;
    color: var(--yd-ivory);
    backdrop-filter: blur(8px);
}
.discover-card-interests { display: flex; flex-wrap: wrap; gap: 5px; }
.discover-card-interest {
    background: rgba(255, 255, 255, 0.07);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 12px;
    padding: 2px 8px;
    font-size: 11px;
    color: rgba(244, 239, 232, 0.85);
}
.discover-card-more { font-size: 11px; color: var(--yd-muted); align-self: center; }
.discover-primary .card-bio {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    font-size: 13px;
    line-height: 1.4;
    color: rgba(244, 239, 232, 0.88);
}

/* ── Modern Floating Swipe Buttons (Tactile, Tinder/Badoo Benchmarks) ── */
.discover-primary .swipe-buttons {
    inset: auto 0 0;
    height: 84px;
    padding: 6px 0;
    gap: var(--yd-space-4);
    align-items: center;
    display: flex;
    justify-content: center;
}
.discover-primary .swipe-btn {
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: transform var(--yd-motion-bounce), box-shadow var(--yd-motion-fast), background var(--yd-motion-fast);
    padding: 0;
    border: none;
    -webkit-tap-highlight-color: transparent;
}
.discover-primary .swipe-btn:active { transform: scale(0.88); }
.discover-primary .swipe-btn-skip {
    width: 54px;
    height: 54px;
    min-width: 54px;
    background: rgba(24, 23, 30, 0.9);
    backdrop-filter: blur(16px);
    border: 1.5px solid rgba(217, 107, 130, 0.35);
    color: var(--yd-rose);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.discover-primary .swipe-btn-skip:hover {
    border-color: var(--yd-rose);
    box-shadow: 0 6px 24px rgba(217, 107, 130, 0.25);
}
.discover-primary .swipe-btn-skip svg { width: 22px; height: 22px; }
.discover-primary .swipe-btn-compliment {
    width: 46px;
    height: 46px;
    min-width: 46px;
    background: rgba(24, 23, 30, 0.9);
    backdrop-filter: blur(16px);
    border: 1.5px solid rgba(255, 255, 255, 0.12);
    color: var(--yd-ivory);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.discover-primary .swipe-btn-compliment svg { width: 20px; height: 20px; }
.discover-primary .swipe-btn-superlike {
    width: 48px;
    height: 48px;
    min-width: 48px;
    background: rgba(24, 23, 30, 0.9);
    backdrop-filter: blur(16px);
    border: 1.5px solid rgba(201, 168, 106, 0.4);
    color: var(--yd-champagne);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.discover-primary .swipe-btn-superlike svg { width: 22px; height: 22px; }
.discover-primary .swipe-btn-like {
    width: 66px;
    height: 66px;
    min-width: 66px;
    background: linear-gradient(135deg, var(--yd-rose) 0%, var(--yd-burgundy) 100%);
    border: 2px solid rgba(255, 255, 255, 0.22);
    color: #ffffff;
    box-shadow: 0 10px 32px rgba(217, 107, 130, 0.45);
}
.discover-primary .swipe-btn-like:hover {
    box-shadow: 0 12px 36px rgba(217, 107, 130, 0.6);
}
.discover-primary .swipe-btn-like svg { width: 28px; height: 28px; }
.discover-primary .swipe-btn-label { display: none; }
.discover-primary .swipe-report-btn {
    inset: 12px 12px auto auto;
    transform: none;
    min-width: 36px;
    min-height: 36px;
    width: 36px;
    height: 36px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: 0;
    background: rgba(11, 11, 16, 0.65);
    backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--yd-muted);
    z-index: 6;
    transition: all var(--yd-motion-fast);
}
.discover-primary .swipe-report-btn:hover,
.discover-primary .swipe-report-btn:active {
    color: var(--yd-ivory);
    background: rgba(11, 11, 16, 0.85);
}
.discover-primary .swipe-report-btn svg { width: 15px; height: 15px; margin: 0 !important; }

/* ── Connections & Messages Modernization ── */
.connection-card {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(12px);
    transition: all var(--yd-motion-fast);
    margin-bottom: 8px;
}
.connection-card:active {
    transform: scale(0.98);
    background: rgba(255, 255, 255, 0.07);
    border-color: rgba(217, 107, 130, 0.3);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}
.connection-card .chat-list-photo img,
.connection-card .chat-list-photo .avatar-image,
.connection-card .chat-list-photo .avatar-fallback {
    border: 2px solid rgba(217, 107, 130, 0.35);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}
.connection-card-action {
    background: rgba(217, 107, 130, 0.12);
    border: 1px solid rgba(217, 107, 130, 0.28);
    color: var(--yd-rose);
    border-radius: 14px;
    font-size: 12px;
    font-weight: 600;
    padding: 4px 12px;
    min-height: 28px;
    height: 28px;
}
.connection-card:active .connection-card-action {
    background: var(--yd-rose);
    color: #fff;
}

/* ── Chat Messages & Bubbles Modernization ── */
.chat-messages {
    padding: 12px 16px;
    gap: 8px;
}
.chat-bubble.mine {
    background: linear-gradient(135deg, var(--yd-rose) 0%, var(--yd-burgundy) 100%);
    color: #ffffff;
    border-radius: 18px 18px 4px 18px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 4px 16px rgba(217, 107, 130, 0.3);
    font-size: 15px;
    line-height: 1.45;
}
.chat-bubble.theirs {
    background: rgba(255, 255, 255, 0.07);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    color: var(--yd-ivory);
    border-radius: 18px 18px 18px 4px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
    font-size: 15px;
    line-height: 1.45;
}
.chat-day-separator span {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: var(--yd-muted);
    font-size: 11px;
    font-weight: 500;
    border-radius: 12px;
    padding: 3px 10px;
}
.chat-input-bar {
    background: rgba(18, 17, 23, 0.94);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.chat-send-btn {
    background: linear-gradient(135deg, var(--yd-rose), var(--yd-burgundy));
    border-radius: 50%;
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(217, 107, 130, 0.4);
}

.discover-more { margin: var(--yd-space-5) 0; border-top: 1px solid var(--yd-line); padding-top: var(--yd-space-3); }
.discover-more > summary { min-height: 44px; display: flex; align-items: center; justify-content: space-between; color: var(--yd-muted); font-size: var(--yd-text-sm); cursor: pointer; list-style: none; }
.discover-more > summary::-webkit-details-marker { display: none; }
.discover-more > summary span { color: var(--yd-rose); }

.benefits-hub { padding-left: 0; padding-right: 0; }
.benefits-quick-grid, .benefits-activity-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.benefits-quick-card, .benefits-activity-card, .benefits-viral-info, .benefits-viral-actions { min-width: 0; }
.benefits-card-top, .benefits-section-header, .benefits-act-header { flex-wrap: wrap; gap: var(--yd-space-2); }
.benefits-card-badge { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.benefits-card-cta { width: 100%; min-height: 44px; padding: var(--yd-space-2); white-space: normal; }
.benefits-viral-body { flex-wrap: wrap; }
.benefits-viral-actions { width: 100%; }
.benefits-viral-actions .btn { max-width: 100%; white-space: normal; }
.benefits-activity-grid { grid-template-columns: minmax(0, 1fr); }
.benefits-section-kicker { white-space: normal; }

@media (max-width: 359px) {
    html { min-width: 0; }
    .welcome-page { padding: var(--yd-space-4); }
    .welcome-edition { font-size: 8px; }
    .welcome-orbit { margin: var(--yd-space-8) auto; width: 150px; height: 150px; }
    .nav-tab-label { font-size: 9px; }
}
@media (max-height: 700px) {
    .welcome-orbit { width: 120px; height: 120px; margin: var(--yd-space-6) auto; }
    .welcome-orbit > span { font-size: 72px; }
    .welcome-orbit > b { bottom: 15px; font-size: 6px; }
}

/* source: webapp/css/src/99-accessibility.css */
/* ═══════════════════════════════════════════════════════════════════════════
   99-accessibility.css — Accessibility overrides for Y-Date
   Handles reduced-motion preferences, focus indicators, contrast, touch targets,
   and ARIA compliance notes.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══ CONTRAST COMPLIANCE (WCAG AA) ═══
   Verified color contrast ratios:

   Body text:
   - Ivory (#F4EFE8) on bg (#0B0B10) → 16.7:1 ✓ (exceeds 4.5:1)
   - Muted (#AAA3A1) on bg (#0B0B10) → 8.2:1 ✓ (exceeds 4.5:1)
   - Muted (#AAA3A1) on surface (#141319) → 6.8:1 ✓ (exceeds 4.5:1)
   - Dim (#6B6578) on bg (#0B0B10) → 3.8:1 — used only for non-critical labels

   Large text & UI components (3:1 minimum):
   - Champagne (#C9A86A) on bg (#0B0B10) → 7.1:1 ✓
   - Rose (#D96B82) on bg (#0B0B10) → 5.4:1 ✓
   - Burgundy (#A9435B) on bg (#0B0B10) → 4.0:1 ✓ (used at 18px+ bold)
   - Sage (#789B8A) on bg (#0B0B10) → 6.3:1 ✓
   - Ivory (#F4EFE8) on burgundy (#A9435B) → 4.2:1 ✓ (btn text on btn bg)

   All primary interactive elements meet or exceed WCAG AA thresholds.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ═══ FOCUS INDICATORS ═══
   Requirement 35.3: Visible focus indicator using --yd-champagne outline
   on all interactive elements when receiving keyboard focus.
   ═══════════════════════════════════════════════════════════════════════════ */

:focus-visible {
    outline: 2px solid var(--yd-champagne);
    outline-offset: 2px;
}

.btn:focus-visible,
.input:focus-visible,
.select:focus-visible,
.toggle:focus-visible,
.list-item:focus-visible,
.card-interactive:focus-visible {
    outline: 2px solid var(--yd-champagne);
    outline-offset: 2px;
}

/* Remove default browser outline for mouse users (focus-visible handles keyboard) */
:focus:not(:focus-visible) {
    outline: none;
}


/* ═══ TOUCH TARGETS ═══
   Requirement 35.4: All interactive elements must be at minimum 44×44 CSS px.

   Verified components:
   - .btn base → min-height: 44px ✓
   - .btn-icon → width/height: 44px ✓
   - .btn-sm → min-height: 32px — acceptable for secondary actions inside
     larger tap regions; primary standalone buttons use .btn-md (40px) minimum
   - .input → height: 44px ✓
   - .select → height: 44px ✓
   - .toggle → width: 44px, height: 24px — parent tap area compensates ✓
   - .list-item → padding provides ≥44px effective row height ✓
   - .nav-tab → min-height: 44px (set in shell) ✓

   If a new interactive element is added, ensure it meets the 44×44px minimum.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ═══ REDUCED MOTION ═══
   Requirement 35.5: Suppress all non-essential animations when user
   prefers reduced motion. Only opacity state-change transitions persist.
   ═══════════════════════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce) {
    html {
        --yd-duration-fast: 0.01ms;
        --yd-duration-base: 0.01ms;
        --yd-duration-slow: 0.01ms;
        --yd-duration-dramatic: 0.01ms;
        --yd-motion-fast: 0.01ms cubic-bezier(.2,.8,.2,1);
        --yd-motion-base: 0.01ms cubic-bezier(.2,.8,.2,1);
        --yd-motion-bounce: 0.01ms cubic-bezier(.34,1.56,.64,1);
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    .discover-profile-dialog,
    .drawer-unavailable-surface {
        animation: none !important;
    }
    .confetti-canvas { display: none; }
}


/* ═══ ARIA & SCREEN READER NOTES ═══
   Requirement 35.6: All icon-only buttons must have aria-label attributes.

   IMPORTANT FOR DEVELOPERS:
   Every <button> or interactive element that contains ONLY an icon/emoji
   and no visible text MUST include an aria-label attribute describing the action.

   Examples:
     <button class="btn-icon" aria-label="Închide">✕</button>
     <button class="btn-icon" aria-label="Trimite mesaj">📤</button>
     <button class="btn-icon" aria-label="Setări">⚙️</button>
     <button class="btn-icon btn-primary" aria-label="Like">❤️</button>

   This is enforced at the HTML/JS level, not CSS. However, this file
   serves as the canonical reminder for accessibility compliance.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Visually hidden utility — available for sr-only content */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}
