/* LeumaStudio portfolio — shared base. Reset + utilities only. NO theming here:
   every demo owns its full design system. */

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: auto; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }

:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Full-bleed scene canvas inside any position:relative section */
.scene-canvas {
  position: absolute; inset: 0; width: 100%; height: 100%;
  display: block; pointer-events: none;
}
.scene-canvas--interactive { pointer-events: auto; }

/* WebGL fallback layers: hidden when WebGL runs, shown otherwise */
.gl-fallback { display: none; }
html.no-webgl .gl-fallback { display: block; }
html.no-webgl .scene-canvas { display: none; }

/* Optional AI-image slots — invisible until probeImage confirms the file exists */
[data-img] {
  opacity: 0;
  background-size: cover;
  background-position: center;
  transition: opacity 1.2s ease;
}
[data-img].img-loaded { opacity: 1; }

/* Reduced motion: kill page-level animation affordances */
html.reduced-motion *, html.reduced-motion *::before, html.reduced-motion *::after {
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
}

/* Fictional-brand disclaimer footer, themeable via custom props */
.demo-disclaimer {
  --disc-bg: rgba(0, 0, 0, 0.85);
  --disc-fg: rgba(255, 255, 255, 0.55);
  --disc-accent: rgba(255, 255, 255, 0.9);
  display: flex; align-items: center; justify-content: center; gap: 1rem;
  flex-wrap: wrap; text-align: center;
  padding: 1.1rem 1.5rem;
  background: var(--disc-bg); color: var(--disc-fg);
  font-size: 0.72rem; letter-spacing: 0.06em; line-height: 1.5;
}
.demo-disclaimer a {
  color: var(--disc-accent);
  border-bottom: 1px solid currentColor;
  padding-bottom: 1px;
  white-space: nowrap;
}
.demo-disclaimer a:hover { opacity: 0.75; }
