/* ==========================================================================
   GLOBAL.CSS — Superfícies Editoriais Nfinite-Style (White, Ice-Cyan & Pitch Black)
   ========================================================================== */

body {
  background-color: var(--bg-white);
  color: var(--text-black);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--fw-regular);
  line-height: 1.5;
  overflow-x: hidden;
}

::selection {
  background-color: rgba(110, 98, 255, 0.24);
  color: #6E62FF;
}

::-webkit-scrollbar {
  width: 6px;
}

::-webkit-scrollbar-track {
  background: #0A0B0E;
}

::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #6E62FF 0%, #9B72FF 100%);
  border-radius: 9999px;
}

::-webkit-scrollbar-thumb:hover {
  background: #8B80FF;
}

.skip-link {
  position: fixed;
  top: -100px;
  left: var(--space-4);
  z-index: 1000;
  padding: 10px 18px;
  background: var(--text-black);
  color: var(--text-white);
  font-size: var(--text-xs);
  font-weight: 500;
  border-radius: var(--radius-sharp);
  transition: top var(--transition-fast);
}

.skip-link:focus {
  top: var(--space-4);
}

/* Barra de progresso minimalista no topo na cor Electric Violet */
.scroll-progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: linear-gradient(90deg, #6E62FF 0%, #9B72FF 55%, #C67AFF 100%);
  box-shadow: 0 0 12px rgba(110, 98, 255, 0.75);
  transform-origin: 0% 50%;
  transform: scaleX(0);
  z-index: calc(var(--z-header) + 5);
  pointer-events: none;
}

/* ==========================================================================
   BLUR PROGRESSIVO NA PARTE INFERIOR DO MONITOR
   Desfoca suavemente a borda inferior da tela; conforme o usuário rola,
   os componentes atravessam o blur e entram em foco nítido.
   ========================================================================== */
.viewport-bottom-blur {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 120px;
  pointer-events: none;
  z-index: 88;
  transition: opacity 0.35s ease;
}

.viewport-bottom-blur.is-at-bottom {
  opacity: 0;
}

.viewport-bottom-blur .blur-layer-1,
.viewport-bottom-blur .blur-layer-2,
.viewport-bottom-blur .blur-layer-3 {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.viewport-bottom-blur .blur-layer-1 {
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  mask-image: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.6) 40%, black 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.6) 40%, black 100%);
}

.viewport-bottom-blur .blur-layer-2 {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  mask-image: linear-gradient(to bottom, transparent 30%, rgba(0, 0, 0, 0.75) 68%, black 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 30%, rgba(0, 0, 0, 0.75) 68%, black 100%);
}

.viewport-bottom-blur .blur-layer-3 {
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  mask-image: linear-gradient(to bottom, transparent 60%, black 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 60%, black 100%);
}

/* Superfícies Principais */
.surface-white {
  background-color: var(--bg-white);
  color: var(--text-black);
  position: relative;
}

.surface-ice {
  background-color: var(--bg-ice-panel);
  color: var(--text-black);
  position: relative;
}

.surface-black {
  background-color: var(--bg-pitch-black);
  color: var(--text-white);
  position: relative;
}

.surface-plaster {
  background-color: var(--bg-studio-plaster);
  color: var(--text-black);
  position: relative;
}

/* Divisores horizontais de 1px */
.hairline-divider {
  width: 100%;
  height: 1px;
  background-color: var(--hairline-light);
}

.surface-black .hairline-divider {
  background-color: var(--hairline-dark);
}
