:root{--bg-app:#f4f6fb;--bg-surface:#fff;--bg-subtle:#f1f5f9;--glass-bg:#ffffffc7;--glass-bg-hover:#ffffffe6;--glass-border:#fff9;--glass-border-subtle:#e2e8f0cc;--glass-shadow:0 10px 30px -10px #0000000d, 0 4px 6px -2px #00000005;--glass-shadow-lg:0 20px 40px -15px #00000014, 0 8px 16px -4px #00000008;--text-primary:#0f172a;--text-secondary:#64748b;--text-tertiary:#94a3b8;--text-inverse:#fff;--accent-primary:#2563eb;--accent-primary-hover:#1d4ed8;--accent-secondary:#0284c7;--accent-glow:#2563eb33;--accent-like:#f43f5e;--accent-gradient:#2563eb;--accent-gradient-subtle:#2563eb14;--border-radius-sm:8px;--border-radius-md:16px;--border-radius-lg:24px;--border-radius-full:9999px;--nav-height:64px;--header-height:60px}body.dark-theme{--bg-app:#090d16;--bg-surface:#0f172a;--bg-subtle:#1e293b;--glass-bg:#0f172abf;--glass-bg-hover:#1e293bd9;--glass-border:#ffffff1a;--glass-border-subtle:#ffffff0f;--glass-shadow:0 10px 30px -10px #00000080;--glass-shadow-lg:0 20px 40px -15px #000000b3;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-tertiary:#64748b;--text-inverse:#0f172a;--accent-glow:#2563eb59;--accent-gradient-subtle:#2563eb26}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body{background-color:var(--bg-app);color:var(--text-primary);min-height:100vh;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;transition:background-color .3s,color .3s;overflow-x:hidden}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:var(--border-radius-md)}.glass-header{z-index:40;height:var(--header-height);background:var(--glass-bg);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--glass-border-subtle);position:sticky;top:0}.glass-nav{z-index:40;height:var(--nav-height);background:var(--glass-bg);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glass-border-subtle);position:fixed;bottom:0;left:0;right:0}.btn-primary{background:var(--accent-primary);color:#fff;border-radius:var(--border-radius-full);cursor:pointer;box-shadow:0 4px 14px var(--accent-glow);border:none;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:.925rem;font-weight:600;transition:transform .15s,background-color .15s,box-shadow .15s,opacity .15s;display:inline-flex}.btn-primary:hover{background:var(--accent-primary-hover)}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--glass-border-subtle);color:var(--text-primary);border-radius:var(--border-radius-full);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-weight:500;transition:all .2s;display:inline-flex}.btn-glass:hover{background:var(--glass-bg-hover);border-color:var(--accent-primary)}.btn-icon{width:40px;height:40px;color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,background-color .15s,color .15s;display:inline-flex}.btn-icon:hover{background-color:var(--bg-subtle)}.btn-icon:active{transform:scale(.92)}.aspect-container{background-color:var(--bg-subtle);width:100%;position:relative;overflow:hidden}.aspect-1-1{aspect-ratio:1}.aspect-4-5{aspect-ratio:4/5}.aspect-16-9{aspect-ratio:16/9}@keyframes heartBurst{0%{opacity:0;transform:scale(0)rotate(-15deg)}50%{opacity:1;transform:scale(1.35)rotate(0)}to{opacity:0;transform:scale(1)rotate(0)}}.animate-heart-burst{animation:.75s cubic-bezier(.175,.885,.32,1.275) forwards heartBurst}@keyframes pulseGlow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}}.pulse-online{animation:2s ease-in-out infinite pulseGlow}@keyframes typingWave{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-5px)}}.typing-dot{background-color:var(--text-secondary);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typingWave;display:inline-block}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-tertiary);opacity:.4;border-radius:999px}
