.app[data-v-a257a4e1]{min-height:100vh}:root{--color-bg: #0f0f12;--color-bg-soft: #141419;--color-surface: #1a1a20;--color-surface-hover: #22222a;--color-border: #2d2d36;--color-text: #e8e8ec;--color-text-muted: #9a9aa6;--color-primary: #7c5cff;--color-primary-hover: #9278ff;--color-primary-glow: rgba(124, 92, 255, .35);--color-success: #22c55e;--color-error: #ef4444;--font-sans: "DM Sans", system-ui, sans-serif;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .4);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .2s;--duration-normal: .3s;--duration-slow: .45s}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5;background-image:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(124,92,255,.12),transparent),radial-gradient(ellipse 60% 40% at 100% 50%,rgba(124,92,255,.06),transparent),radial-gradient(ellipse 60% 40% at 0% 80%,rgba(124,92,255,.05),transparent)}a{color:var(--color-primary);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--color-primary-hover);text-decoration:underline}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit;font-size:1rem}#app{min-height:100vh}.page-enter-active,.page-leave-active{transition:opacity var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.page-enter-from{opacity:0;transform:translateY(8px)}.page-leave-to{opacity:0;transform:translateY(-6px)}@keyframes fade-in-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.animate-fade-in-up{animation:fade-in-up var(--duration-slow) var(--ease-out) both}.animate-fade-in{animation:fade-in var(--duration-normal) var(--ease-out) both}.animate-scale-in{animation:scale-in var(--duration-normal) var(--ease-out) both}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px var(--color-primary)}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.6}}.loading-pulse{animation:pulse-soft 1.2s ease-in-out infinite}
