:root {
  --font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
  --background: 42 29% 95%;
  --foreground: 28 18% 12%;
  --card: 42 32% 98%;
  --card-foreground: 28 18% 12%;
  --popover: 42 32% 98%;
  --popover-foreground: 28 18% 12%;
  --primary: 27 38% 24%;
  --primary-foreground: 42 35% 96%;
  --secondary: 36 18% 86%;
  --secondary-foreground: 28 18% 15%;
  --muted: 38 18% 88%;
  --muted-foreground: 30 10% 39%;
  --accent: 86 15% 34%;
  --accent-foreground: 42 35% 96%;
  --destructive: 0 72% 42%;
  --destructive-foreground: 42 35% 96%;
  --success: 137 39% 30%;
  --success-foreground: 42 35% 96%;
  --warning: 38 82% 37%;
  --warning-foreground: 42 35% 96%;
  --info: 207 40% 34%;
  --info-foreground: 42 35% 96%;
  --border: 34 18% 78%;
  --input: 34 18% 78%;
  --ring: 27 38% 24%;
  --radius: 0.625rem;
  --shadow-sm: 0 1px 2px hsl(var(--foreground) / 0.05);
  --shadow-md: 0 4px 12px hsl(var(--foreground) / 0.08);
  --shadow-lg: 0 12px 32px hsl(var(--foreground) / 0.12);
  --shadow-elegant: 0 20px 60px hsl(var(--foreground) / 0.16);
  --transition-fast: 150ms cubic-bezier(0.4,0,0.2,1);
  --transition: 200ms cubic-bezier(0.4,0,0.2,1);
  --transition-smooth: 300ms cubic-bezier(0.4,0,0.2,1);
}
.dark {
  --background: 28 16% 8%;
  --foreground: 42 32% 91%;
  --card: 28 14% 12%;
  --card-foreground: 42 32% 91%;
  --popover: 28 14% 12%;
  --popover-foreground: 42 32% 91%;
  --primary: 42 29% 82%;
  --primary-foreground: 28 18% 12%;
  --secondary: 28 11% 18%;
  --secondary-foreground: 42 32% 91%;
  --muted: 28 11% 18%;
  --muted-foreground: 40 12% 68%;
  --accent: 86 18% 58%;
  --accent-foreground: 28 18% 12%;
  --destructive: 0 62% 52%;
  --destructive-foreground: 42 35% 96%;
  --success: 137 42% 48%;
  --success-foreground: 28 18% 12%;
  --warning: 38 82% 58%;
  --warning-foreground: 28 18% 12%;
  --info: 207 48% 62%;
  --info-foreground: 28 18% 12%;
  --border: 30 10% 24%;
  --input: 30 10% 24%;
  --ring: 42 29% 82%;
}
* { box-sizing: border-box; }
html { background: hsl(var(--background)); color: hsl(var(--foreground)); font-family: var(--font-sans); }
body { margin: 0; min-height: 100vh; background: hsl(var(--background)); color: hsl(var(--foreground)); }
button, input, textarea, select { font: inherit; }
input, textarea, select { font-size: max(16px, 1rem); }
.font-serif { font-family: var(--font-serif); }
.safe-bottom { padding-bottom: env(safe-area-inset-bottom); }
.nn-hero-frame { background: radial-gradient(circle at 20% 20%, hsl(var(--accent) / 0.16), transparent 34%), linear-gradient(135deg, hsl(var(--secondary)), hsl(var(--card))); }
.nn-image { filter: saturate(0.82) contrast(0.98); }
.nn-plan { background-image: linear-gradient(hsl(var(--border)) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--border)) 1px, transparent 1px); background-size: 32px 32px; }
.nn-plan-line { height: 1px; background: hsl(var(--foreground) / 0.72); transform-origin: left center; }
.lightbox-backdrop { background: hsl(var(--background) / 0.94); backdrop-filter: blur(18px); }
@media (prefers-reduced-motion: no-preference) {
  .nn-enter { animation: nnEnter var(--transition-smooth) both; }
  @keyframes nnEnter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
}