body {
  overflow-x: hidden;
}

.skip-link {
  position: absolute;
  top: -100%;
  left: var(--space-md);
  z-index: 10000;
  padding: var(--space-xs) var(--space-sm);
  background: var(--color-accent);
  color: var(--color-bg);
  font-size: var(--text-sm);
}

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

.scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, var(--color-accent-1), var(--color-accent-2));
  z-index: 9999;
  pointer-events: none;
}

.loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 10001;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-lg);
  background: var(--color-bg);
  transition: opacity 0.6s var(--ease-editorial), visibility 0.6s;
}

.loading-overlay.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loading-text {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-text-dim);
}

.loading-bar {
  width: 200px;
  height: 1px;
  background: var(--color-border);
  overflow: hidden;
}

.loading-bar-fill {
  height: 100%;
  width: 0%;
  background: var(--color-accent);
  transition: width 0.2s ease;
}

.section {
  position: relative;
  padding: var(--section-padding) var(--space-lg);
  content-visibility: auto;
  contain-intrinsic-size: auto 800px;
}

.section-inner {
  max-width: var(--content-max);
  margin: 0 auto;
}

.section-header {
  margin-bottom: var(--space-3xl);
}

.section-rule {
  width: 100%;
  max-width: 400px;
  height: 1px;
  background: var(--color-border);
  margin-top: var(--space-xl);
  transform-origin: left;
  transform: scaleX(0);
}

.section-bridge {
  position: absolute;
  top: -15vh;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-display);
  font-size: clamp(var(--text-5xl), 12vw, var(--text-8xl));
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: transparent;
  -webkit-text-stroke: 1px var(--color-border);
  opacity: 0;
  pointer-events: none;
  white-space: nowrap;
}

.portfolio-empty {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-text-dim);
  text-align: center;
  padding: var(--space-3xl);
  border: 1px dashed var(--color-border);
}

.portfolio-empty code {
  color: var(--color-accent-2);
}

.site-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-xl) var(--space-lg);
  max-width: var(--content-max);
  margin: 0 auto;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-dim);
  letter-spacing: 0.05em;
}

.back-to-top {
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-dim);
  border: 1px solid var(--color-border);
  border-radius: 50%;
  transition: color var(--duration-fast), border-color var(--duration-fast), transform var(--duration-fast);
}

.back-to-top:hover {
  color: var(--color-accent);
  border-color: var(--color-accent-1);
  transform: translateY(-3px);
}
