@import url("https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700;9..40,800&family=JetBrains+Mono:wght@400;500&display=swap");:root{--blue:#1877f2;--amber:#e8a245;--green:#10b981;--red:#ef4444;--bg:#fff;--surface:#f9f9f9;--border:#f2f2f2;--text:#333;--text2:#6b6b6b;--text3:#757575;--serif:"DM Serif Display",Georgia,serif;--ui:"DM Sans",-apple-system,BlinkMacSystemFont,sans-serif;--mono:"JetBrains Mono","Courier New",monospace;--nav-height:60px;--safe-bottom:env(safe-area-inset-bottom,0px);--color-bg:var(--bg);--color-surface:var(--surface);--color-surface-elevated:var(--surface);--color-border:var(--border);--color-border-subtle:var(--border);--color-text-primary:var(--text);--color-text-secondary:var(--text2);--color-text-tertiary:var(--text3);--color-text-inverse:#fff;--color-accent:var(--blue);--color-accent-dim:color-mix(in srgb,var(--blue) 12%,transparent);--color-accent-border:color-mix(in srgb,var(--blue) 35%,transparent);--color-danger:var(--red);--color-success:var(--green);--font-display:var(--serif);--transition-fast:150ms ease}.dark{--bg:#0d0d0d;--surface:#1a1a1a;--border:#2a2a2a;--text:#f0ebe1;--text2:#a8a29a;--text3:#76716a}*,:after,:before{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;font-family:var(--ui);background:var(--bg);color:var(--text);min-height:100dvh}::-webkit-scrollbar{width:0;height:0}button{font-family:var(--ui)}input,select,textarea{font-family:var(--ui);color:var(--text);background:var(--surface)}a{color:var(--blue)}@keyframes heartPop{0%{transform:scale(0);opacity:0}25%{transform:scale(1.15);opacity:.95}60%{transform:scale(1);opacity:.9}to{transform:scale(1.1);opacity:0}}@keyframes xpFloat{0%{transform:translate(-50%);opacity:0}18%{opacity:1}to{transform:translate(-50%,-46px);opacity:0}}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(560px) rotate(540deg);opacity:.9}}@keyframes popIn{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@keyframes toastIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%,to{opacity:.5}50%{opacity:1}}@keyframes flamePulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes slideUp{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}.animate-in{animation:slideUp .3s ease both}.animate-fade{animation:fadeIn .2s ease both}