/* Site transitions — clap (actor) & binary rain (engineer) */

:root {
  --tx-cream: #F7F3EC;
  --tx-burgundy: #8B3A3A;
  --tx-ink: #1A1814;
  --tx-pearl: #FAFBFD;
  --tx-teal: #4A9B7F;
  --tx-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --tx-font-display: 'Playfair Display SC', Georgia, serif;
  --tx-font-mono: 'JetBrains Mono', monospace;
}

body.is-transitioning .header,
body.is-transitioning #main,
body.is-transitioning .progress-rail,
body.is-transitioning .preloader,
body.is-transitioning .cursor-probe,
body.is-transitioning .cursor,
body.is-transitioning .casting-bar,
body.is-transitioning .marquee {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s var(--tx-ease);
}

/* Clap cinéma */
.clap-overlay {
  position: fixed;
  inset: 0;
  z-index: 10001;
  display: grid;
  place-items: center;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  background: var(--tx-ink);
  transition: opacity 0.35s var(--tx-ease), visibility 0.35s, background 0.45s var(--tx-ease);
}

.clap-overlay.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: all;
}

.clap-overlay.is-exiting {
  background: var(--tx-cream);
}

.clap-flash {
  position: absolute;
  inset: 0;
  background: #fff;
  opacity: 0;
  pointer-events: none;
  z-index: 2;
}

.clap-overlay.is-clapped .clap-flash {
  animation: txClapFlash 0.14s ease-out;
}

@keyframes txClapFlash {
  0% { opacity: 0; }
  20% { opacity: 0.9; }
  100% { opacity: 0; }
}

.clap-slate {
  position: relative;
  width: min(340px, 88vw);
  filter: drop-shadow(0 24px 48px rgba(0, 0, 0, 0.45));
  transform: scale(0.42) translateY(28px);
  opacity: 0;
  transition: transform 0.5s var(--tx-ease), opacity 0.4s var(--tx-ease);
}

.clap-overlay.is-entered .clap-slate {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.clap-overlay.is-clapped .clap-slate {
  transform: scale(0.98) translateY(2px);
  transition-duration: 0.08s;
}

.clap-overlay.is-exiting .clap-slate {
  opacity: 0;
  transform: scale(1.02);
  transition: opacity 0.35s var(--tx-ease), transform 0.35s var(--tx-ease);
}

.clap-slate-arm {
  position: relative;
  z-index: 2;
  height: clamp(52px, 14vw, 64px);
  margin: 0 6px -2px;
  background: repeating-linear-gradient(
    -38deg,
    var(--tx-burgundy) 0 10px,
    var(--tx-cream) 10px 20px
  );
  border: 2px solid var(--tx-ink);
  border-radius: 4px 4px 0 0;
  transform-origin: 18px 100%;
  transform: rotate(-26deg);
  transition: transform 0.12s cubic-bezier(0.55, 0.06, 0.68, 0.19);
  display: grid;
  place-items: center;
  overflow: hidden;
}

.clap-overlay.is-clapped .clap-slate-arm {
  transform: rotate(3deg);
}

.clap-slate-arm-text {
  font-family: var(--tx-font-mono);
  font-size: clamp(0.65rem, 2.2vw, 0.8rem);
  font-weight: 500;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: var(--tx-cream);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
  padding-left: 0.35em;
}

.clap-slate-base {
  position: relative;
  z-index: 1;
  background: var(--tx-cream);
  border: 2px solid var(--tx-ink);
  border-radius: 0 0 6px 6px;
  padding: clamp(1rem, 3vw, 1.35rem);
}

.clap-slate-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.85rem;
  margin-bottom: 0.85rem;
  border-bottom: 1px solid rgba(26, 24, 20, 0.15);
}

.clap-slate-mark {
  font-family: var(--tx-font-display);
  font-size: clamp(1.1rem, 3.5vw, 1.4rem);
  letter-spacing: 0.12em;
  color: var(--tx-burgundy);
}

.clap-slate-prod {
  font-family: var(--tx-font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(26, 24, 20, 0.55);
  text-align: right;
}

.clap-slate-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem 1rem;
}

.clap-slate-field {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.35s var(--tx-ease), transform 0.35s var(--tx-ease);
}

.clap-slate-field--wide {
  grid-column: 1 / -1;
}

.clap-overlay.is-revealed .clap-slate-field {
  opacity: 1;
  transform: none;
}

.clap-overlay.is-revealed .clap-slate-field:nth-child(1) { transition-delay: 0.02s; }
.clap-overlay.is-revealed .clap-slate-field:nth-child(2) { transition-delay: 0.06s; }
.clap-overlay.is-revealed .clap-slate-field:nth-child(3) { transition-delay: 0.1s; }
.clap-overlay.is-revealed .clap-slate-field:nth-child(4) { transition-delay: 0.14s; }

.clap-slate-label {
  font-family: var(--tx-font-mono);
  font-size: 0.58rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(26, 24, 20, 0.45);
}

.clap-slate-value {
  font-family: var(--tx-font-mono);
  font-size: clamp(0.8rem, 2.5vw, 0.95rem);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--tx-ink);
}

/* Binary rain */
.binary-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  pointer-events: none;
  opacity: 0;
  background: rgba(250, 251, 253, 0.85);
  transition: opacity 0.3s;
}

.binary-overlay.is-active {
  opacity: 1;
  pointer-events: all;
  background: rgba(250, 251, 253, 0.92);
}

.binary-canvas {
  width: 100%;
  height: 100%;
  display: block;
}
