/* Colour tokens (dark default, light override) */
:root {
  color-scheme: dark;
  --bg:#08090d; --text:#f5f5f7; --muted:#afb1bd; --line:#ffffff20;
  --glass:linear-gradient(135deg,#ffffff16,#ffffff07 45%,#ffffff0c);
  --glass-base:#14151ed9; --edge:#ffffff26; --shine:#ffffff60;
  --shadow:0 16px 50px #00000026; --image-outline:#ffffff1a;
  --preview:#191b23; --blue:#9ab9ff; --green:#4ee49a;
  --font:'DM Sans',Arial,sans-serif;
}
:root[data-theme=light] {
  color-scheme: light;
  --bg:#f5f5f8; --text:#191b24; --muted:#585c6d; --line:#11172b20;
  --glass:linear-gradient(135deg,#ffffffdb,#ffffff73 45%,#ffffffa1);
  --glass-base:#ffffffae; --edge:#00000013; --shine:#ffffff;
  --shadow:0 16px 45px #30395513; --image-outline:#0000001a;
  --preview:#eff0f5; --blue:#2859b9; --green:#117044;
}

/* Motion tokens (spec §2.1) */
:root {
  --ease-out: cubic-bezier(.23, 1, .32, 1);      /* UI enters, hover, press */
  --ease-in: cubic-bezier(.4, 0, 1, 1);          /* exits ≤ 220ms only */
  --ease-standard: cubic-bezier(.2, 0, 0, 1);    /* colour / opacity state changes */
  --ease-glass: cubic-bezier(.32, .72, 0, 1);    /* glass surfaces arriving, theme circle */
  --ease-reveal: cubic-bezier(.16, 1, .3, 1);    /* page reveals, hero words */
  --ease-spring: cubic-bezier(.34, 1.36, .64, 1);/* fallback for the spring below */
  --dur-press: 120ms;  --dur-state: 180ms;   --dur-exit: 180ms;    --dur-hover-out: 240ms;
  --dur-icon: 300ms;   --dur-enter-s: 320ms; --dur-release: 320ms; --dur-label: 460ms;
  --dur-develop: 480ms;--dur-accent: 500ms;  --dur-enter: 560ms;   --dur-theme: 600ms;
  --dur-reveal: 640ms; --dur-hero: 900ms;    --stagger: 70ms;
}
@supports (transition-timing-function: linear(0, 1)) {
  /* spring response .36 s, ζ .72 (k 304.6, c 25.13): 3.1% overshoot, natural settle 496ms */
  :root { --ease-spring: linear(0, 0.068, 0.206, 0.37, 0.531, 0.673, 0.79, 0.879, 0.943, 0.986, 1.012, 1.026, 1.031, 1.031, 1.028, 1.024, 1.018, 1.013, 1.009, 1.006, 1.003, 1.001, 1, 0.999, 1); }
}
/* data-smooth is set by main.js after load, so the landing fragment jump and reload scroll-restore stay instant */
@media (prefers-reduced-motion: no-preference) { :root[data-motion=on][data-smooth] { scroll-behavior: smooth; } }
:root[data-motion=off] { scroll-behavior: auto; }
:root[data-motion=off] *, :root[data-motion=off] *::before, :root[data-motion=off] *::after { animation: none !important; transition: none !important; }
