/* DOMAIN. — a short, typographic introduction using the existing brand. */
.site-loader { display: none; }
html.intro-active, .intro-active body { overflow: hidden; }
.intro-active .headline-line { animation-play-state: paused; }
.intro-active .site-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(24px, 3.6vw, 64px);
  background: #080808;
  color: #f4f2ed;
  overflow: hidden;
  transform: translateY(0);
  transition: transform .85s cubic-bezier(.76, 0, .24, 1);
}
.loader-progress-track {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: #282826;
}
.loader-progress-track > span { display: block; width: 0%; height: 100%; background: #db0119; }
.loader-controls { display: flex; align-items: center; gap: clamp(20px, 3vw, 44px); }
.loader-percentage { min-width: 4ch; color: #f4f2ed; text-align: right; font-size: clamp(24px, 3vw, 42px); font-weight: 500; font-variant-numeric: tabular-nums; letter-spacing: -.06em; line-height: 1; }
.loader-percent-sign { color: #db0119; font-size: .55em; margin-left: 3px; }
.site-loader.is-leaving { transform: translateY(-101%); }
.loader-background-copy { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.loader-type-field {
  position: absolute;
  inset: 10% 3% 11%;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-rows: minmax(22px, 1fr);
  grid-auto-flow: dense;
  gap: 2px;
  overflow: hidden;
  opacity: .65;
  mask-image: linear-gradient(to bottom, #000 0%, #000 17%, transparent 37%, transparent 70%, #000 89%, #000 100%);
}
.loader-type-field > span {
  grid-column: span var(--stretch, 1);
  overflow: hidden;
  padding: 2px 4px;
  font: 400 clamp(10px, 1.2vw, 20px)/1.1 'Arial Narrow', Arial, sans-serif;
  letter-spacing: -.05em;
  color: #f4f2ed;
  white-space: nowrap;
}
.loader-type-field > span[data-tone="red"] { background: #db0119; color: #080808; }
.loader-type-field > span[data-tone="paper"] { background: #f4f2ed; color: #080808; }
.loader-type-field > span[data-tone="empty"] { visibility: hidden; }
.loader-background-copy .loader-copy-cluster { display: none; }
.loader-copy-cluster { position: absolute; font: 400 clamp(13px, 1.65vw, 28px)/1.25 'Helvetica Neue', Arial, sans-serif; letter-spacing: -.04em; color: #8e8e89; }
.loader-copy-cluster > span { position: relative; display: block; white-space: pre; min-height: 1.25em; }
.loader-copy-cluster > span::before, .loader-copy-cluster > span::after {
  content: attr(data-echo);
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}
.loader-copy-cluster > span[data-glitching="true"] {
  color: #c9c9c2;
  animation: loader-copy-jolt .16s steps(1, end) infinite;
}
.loader-copy-cluster > span[data-glitching="true"]::before {
  opacity: .85;
  color: #db0119;
  clip-path: inset(18% 0 54% 0);
  transform: translateX(5px);
}
.loader-copy-cluster > span[data-glitching="true"]::after {
  opacity: .7;
  color: #f4f2ed;
  clip-path: inset(61% 0 13% 0);
  transform: translateX(-4px);
}
@keyframes loader-copy-jolt {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-3px, 1px); }
  50% { transform: translate(2px, 0); }
  75% { transform: translate(-1px, -1px); }
}
.loader-copy-services { top: 18%; left: 54%; }
.loader-copy-purpose { bottom: 18%; left: 48%; font-size: clamp(12px, 1.35vw, 23px); }
.loader-top, .loader-bottom, .loader-stage { position: relative; z-index: 1; }
.loader-top, .loader-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  font: 600 10px/1.5 Arial, sans-serif;
  letter-spacing: .14em;
}
.loader-top { color: #92928e; }
.loader-top-label { display: flex; align-items: center; gap: 10px; }
.loader-dot { width: 5px; height: 5px; background: #db0119; border-radius: 50%; }
.loader-stage { width: min(100%, 1200px); margin: auto; padding: 48px 0; }
.loader-symbol {
  width: clamp(52px, 7vw, 102px);
  height: clamp(52px, 7vw, 102px);
  margin-bottom: clamp(20px, 3vw, 44px);
  animation: loader-symbol-in 1.35s cubic-bezier(.2, .8, .2, 1) both;
}
.loader-word {
  display: flex;
  align-items: baseline;
  overflow: hidden;
  font-family: 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
  font-size: clamp(60px, 18.2vw, 270px);
  font-weight: 300;
  line-height: .95;
  letter-spacing: -.055em;
  padding-right: .08em;
}
.loader-word > span {
  display: inline-block;
  animation: loader-letter-in .95s cubic-bezier(.16, 1, .3, 1) both;
  animation-delay: calc(.08s + var(--i) * .055s);
}
.loader-word > span:last-child { color: #db0119; }
.loader-word > .brand-ai { font-weight: 800; }
.loader-statement {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  margin-top: clamp(24px, 4vw, 58px);
  padding-top: 18px;
  border-top: 1px solid #353533;
  font: 500 clamp(11px, 1.1vw, 15px)/1.3 Arial, sans-serif;
  letter-spacing: .02em;
}
.loader-roll { height: 1.3em; overflow: hidden; }
.loader-roll-track { display: block; animation: loader-words 1.7s cubic-bezier(.76, 0, .24, 1) both; }
.loader-roll-track > span { display: block; height: 1.3em; }
.loader-statement > span:last-child { color: #92928e; }
.loader-bottom { color: #92928e; }
.loader-skip {
  border: 0;
  border-bottom: 1px solid #53534f;
  padding: 8px 0;
  background: none;
  color: #f4f2ed;
  font: inherit;
  letter-spacing: inherit;
}
.loader-skip:hover { color: #db0119; border-color: #db0119; }
.loader-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@keyframes loader-letter-in { from { transform: translateY(115%); } to { transform: translateY(0); } }
@keyframes loader-symbol-in { from { opacity: 0; transform: rotate(-120deg) scale(.6); } to { opacity: 1; transform: rotate(0) scale(1); } }
@keyframes loader-words {
  0%, 25% { transform: translateY(0); }
  42%, 62% { transform: translateY(-1.3em); }
  82%, 100% { transform: translateY(-2.6em); }
}
@media (max-width: 600px) {
  .loader-type-field { grid-template-columns: repeat(6, minmax(0, 1fr)); inset: 13% 5% 14%; grid-auto-rows: 24px; }
  .loader-copy-services { top: 19%; left: 28%; font-size: 16px; }
  .loader-copy-purpose { bottom: 20%; left: 8%; font-size: clamp(11px, 3.1vw, 17px); }
  .loader-top, .loader-bottom { font-size: 8px; letter-spacing: .1em; }
  .loader-word { font-size: 18vw; }
  .loader-statement { flex-direction: column; gap: 10px; }
  .loader-bottom > span { max-width: 150px; }
}
@media (max-height: 540px) and (min-width: 601px) {
  .loader-copy-services { top: 14%; left: 65%; font-size: 14px; }
  .loader-copy-purpose { bottom: 16%; left: 55%; font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .loader-copy-cluster > span[data-glitching="true"] { animation: none; }
  .loader-copy-cluster > span::before, .loader-copy-cluster > span::after { display: none; }
  .intro-active .site-loader { transition: none; }
  .loader-symbol, .loader-word > span, .loader-roll-track { animation: none; }
  .loader-roll-track { transform: translateY(-2.6em); }
}

/* Opacity stages: arrival, quiet brand hold, dissolve into the same dark world. */
.site-loader{background:#101012;transition:opacity .85s ease,visibility .85s!important}
.site-loader.is-leaving{transform:none!important;opacity:0;visibility:hidden}
.loader-type-field{opacity:.13;transition:opacity .8s ease;filter:contrast(.8)}
.site-loader[data-phase=arrive] .loader-type-field{opacity:0}
.site-loader[data-phase=hold] .loader-type-field{opacity:.15}
.site-loader[data-phase=resolve] .loader-type-field{opacity:.035}
.loader-copy-cluster{opacity:.48;transition:opacity .6s}
.site-loader[data-phase=resolve] .loader-copy-cluster{opacity:0}
.loader-copy-cluster>span{animation:none!important;transition:opacity .18s}
.loader-copy-cluster>span::before,.loader-copy-cluster>span::after{display:none!important}
.loader-progress-fill{transition:width .15s linear}
@media(prefers-reduced-motion:reduce){.site-loader,.loader-type-field,.loader-copy-cluster,.loader-copy-cluster>span{transition:none!important}}

/* The progress curtain is driven by actual readiness, including decoded imagery. */
.readiness-status{position:absolute;left:clamp(24px,3.6vw,64px);bottom:100px;max-width:70%;font:13px/1.5 Arial,sans-serif;color:#c8c5be}
.readiness-retry{position:absolute;right:4vw;bottom:100px;border:1px solid #777;background:#111;color:#fff;padding:14px 20px;min-height:44px}
.readiness-retry[hidden]{display:none}
.site-loader[data-failed=true] .loader-progress-track>span{background:#f05e63}
.intro-active body>:not(.site-loader):not(script):not(style):not(link){visibility:hidden!important}
.intro-active .site-loader{visibility:visible!important}
@media(prefers-reduced-motion:reduce){.site-loader *{animation:none!important;transition:none!important}}
