:root {
  --background: 252 47% 98%;
  --foreground: 246 32% 10%;
  --primary: 262 88% 56%;
  --primary-foreground: 0 0% 100%;
  --secondary: 188 82% 42%;
  --secondary-foreground: 0 0% 100%;
  --muted: 246 24% 92%;
  --muted-foreground: 246 14% 39%;
  --destructive: 350 84% 54%;
  --destructive-foreground: 0 0% 100%;
  --border: 246 22% 84%;
  --card: 0 0% 100%;
  --shadow-sm: 0 8px 20px rgba(39, 24, 88, 0.08);
  --shadow-md: 0 18px 48px rgba(39, 24, 88, 0.14);
  --shadow-lg: 0 32px 90px rgba(39, 24, 88, 0.2);
  --transition-fast: 140ms ease;
  --transition-smooth: 260ms cubic-bezier(.2,.8,.2,1);
  --radius-sm: 12px;
  --radius-md: 18px;
  --radius-lg: 28px;
}
.dark {
  --background: 246 38% 8%;
  --foreground: 250 45% 96%;
  --primary: 266 94% 70%;
  --primary-foreground: 246 35% 8%;
  --secondary: 185 90% 55%;
  --secondary-foreground: 246 35% 8%;
  --muted: 246 26% 16%;
  --muted-foreground: 246 14% 72%;
  --destructive: 350 88% 66%;
  --destructive-foreground: 246 35% 8%;
  --border: 246 22% 25%;
  --card: 246 32% 12%;
}
* { box-sizing: border-box; }
html { min-height: 100%; background: hsl(var(--background)); }
body { min-height: 100%; margin: 0; background: radial-gradient(circle at top left, hsl(var(--primary) / 0.14), transparent 36rem), radial-gradient(circle at bottom right, hsl(var(--secondary) / 0.13), transparent 30rem), hsl(var(--background)); color: hsl(var(--foreground)); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
input, textarea, select { font-size: max(16px, 1rem); }
button { min-height: 44px; }
.focus-ring:focus-visible { outline: 3px solid hsl(var(--primary) / 0.34); outline-offset: 2px; }
.glass { background: hsl(var(--card) / 0.82); backdrop-filter: blur(18px); border: 1px solid hsl(var(--border)); box-shadow: var(--shadow-md); }
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { scrollbar-width: none; }
@keyframes floaty { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
.floaty { animation: floaty 5s ease-in-out infinite; }
@keyframes pulseSoft { 0%,100% { opacity: .68; } 50% { opacity: 1; } }
.pulse-soft { animation: pulseSoft 2.8s ease-in-out infinite; }
.safe-bottom { padding-bottom: calc(0.75rem + env(safe-area-inset-bottom)); }
.safe-top { padding-top: calc(0.75rem + env(safe-area-inset-top)); }