/* Blueprint identity and site theme. Later scene sheets refine individual features. */

.agency-blueprint {
  --agency-ground: var(--color-blueprint-ground);
  --agency-ink: var(--color-blueprint-ink);
  --agency-accent: var(--color-blueprint-accent);
  --agency-paper: var(--color-blueprint-paper);
  --agency-paper-ink: var(--color-blueprint-paper-ink);
  --agency-display: var(--font-blueprint-display);
  --agency-body: var(--font-blueprint-body);
}

.redesign.agency {
  --new-ground: var(--agency-ground);
  --new-ink: var(--agency-ink);
  --new-accent: var(--agency-accent);
  --new-paper: var(--agency-paper);
  --new-paper-ink: var(--agency-paper-ink);
  --new-display: var(--agency-display);
  --new-body: var(--agency-body);
  --spatial-ground: var(--agency-ground);
  --spatial-ink: var(--agency-ink);
  --spatial-light: var(--agency-accent);
  --spatial-metal: var(--color-brand-signal);
  --line: color-mix(in srgb, var(--color-blueprint-paper-ink) 24%, var(--color-blueprint-paper));
}

.redesign.agency :is(.nav-contact, .button--top, .button-primary, .button--primary, .toc-cta) {
  background: var(--color-brand-primary);
  border-color: var(--color-brand-primary);
  color: var(--color-white);
}

.redesign.agency
  :is(.nav-contact, .button--top, .button-primary, .button--primary, .toc-cta):hover {
  background: var(--color-brand-primary-hover);
  border-color: var(--color-brand-primary-hover);
  color: var(--color-white);
}

.redesign.agency .site-header :is(.site-logo, .wordmark) {
  font-family: var(--agency-display);
}

.redesign.agency .site-header .wordmark em {
  color: var(--agency-ink);
}

.redesign.agency .spatial-hero {
  --header-height: var(--header-height-default);
  --hold: 0px;
  min-height: calc(100svh - var(--header-height) + var(--hold));
  align-items: start;
  padding: 0;
  overflow: visible;
}

.redesign.agency .spatial-hero .spatial-grid {
  min-height: calc(100svh - var(--header-height));
  padding-block: clamp(2.2rem, 5.5vh, 5rem);
  align-content: center;
  width: min(calc(100% - 2 * clamp(1.15rem, 4vw, 5rem)), 1450px);
  position: relative;
}

.redesign.agency .spatial-hero.is-held .spatial-grid {
  position: sticky;
  top: var(--header-height);
}

.redesign.agency .spatial-grid h1 {
  font-family: var(--agency-display);
  font-weight: 620;
}

.redesign.agency .spatial-grid :is(.eyebrow, .cinema__eyebrow) {
  color: var(--agency-accent);
}

.redesign.agency .spatial-grid .button-quiet:hover {
  background: color-mix(in srgb, var(--agency-ink) 12%, transparent);
}

.redesign.agency .spatial-stage figcaption {
  font-family: var(--agency-body);
  color: var(--agency-ink);
}

.redesign.agency .spatial-stage figcaption::before {
  content: "";
  display: inline-block;
  width: 0.4rem;
  height: 0.4rem;
  margin-right: 0.45rem;
  border-radius: var(--radius-round);
  background: var(--color-brand-signal);
}

.redesign.agency .craft-scene::before {
  background: var(--color-brand-signal);
}

.redesign.agency .inner-film__trace {
  stroke: var(--color-brand-signal);
}

.redesign.agency .article-toc nav a.active {
  border-color: var(--color-brand-primary);
  color: var(--color-brand-primary);
}

.redesign.agency .spatial-grid :is(.hero-text, .cinema__copy) {
  align-self: center;
}

@media (min-width: 1000px) {
  .redesign.agency .agency-immersive .spatial-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-rows: 1fr;
    isolation: isolate;
  }
  .redesign.agency .agency-immersive .spatial-grid .cinema__copy {
    grid-area: 1 / 1;
    align-self: end;
    padding-bottom: clamp(var(--space-block), 7vh, 5.5rem);
  }
  .agency-immersive .spatial-stage {
    grid-area: 1 / 1 / 2 / 3;
    width: 100%;
    align-self: stretch;
    aspect-ratio: auto;
    min-height: 560px;
  }
  .agency-immersive .spatial-stage :is(canvas, img) {
    inset-inline-start: 30%;
    width: 70%;
  }
  .agency-immersive .spatial-stage figcaption {
    inset: 1rem 1rem auto auto;
  }
  .redesign.agency .agency-blueprint .spatial-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    border-block: 1px solid #4c18df50;
  }
  .agency-blueprint .spatial-stage {
    border: 1px solid #4c18df46;
    aspect-ratio: 1.23;
  }
  .redesign.agency .agency-ledger .spatial-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.2rem;
  }
  .redesign.agency .agency-ledger .spatial-grid .hero-text {
    grid-area: 1 / 1;
  }
  .redesign.agency .agency-ledger .spatial-stage {
    grid-area: 2 / 1;
    aspect-ratio: 3.25;
  }
  .redesign.agency .agency-ledger h1 {
    max-width: 25ch;
  }
  .redesign.agency .agency-marquee .spatial-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.6rem;
  }
  .agency-marquee .hero-text {
    text-align: center;
  }
  .agency-marquee :is(h1, .hero-deck) {
    margin-inline: auto;
  }
  .redesign.agency .agency-marquee h1 {
    max-width: 22ch;
  }
  .agency-marquee .hero-buttons {
    justify-content: center;
  }
  .agency-marquee .spatial-stage {
    aspect-ratio: 4.2;
  }
  .redesign.agency .agency-editorial .spatial-grid {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    gap: 4.8rem;
  }
  .agency-editorial .hero-text {
    border-top: 3px double var(--color-brand-primary);
    padding-top: var(--space-block);
  }
  .agency-editorial .spatial-stage {
    aspect-ratio: 1.15;
    border: 0;
    border-bottom: 1px solid #4c18df70;
  }
  .redesign.agency .agency-atlas .spatial-grid {
    grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);
    gap: 0.75rem;
  }
  .agency-atlas .hero-text {
    border-left: 3px solid var(--color-brand-signal);
    padding-left: 1.35rem;
  }
  .agency-atlas .spatial-stage {
    aspect-ratio: 1.18;
  }
  .redesign.agency .agency-path .spatial-grid {
    grid-template-columns: minmax(0, 0.83fr) minmax(0, 1.17fr);
  }
  .agency-path .spatial-stage {
    border-radius: 50% 48% 46% 44% / 39% 41% 47% 45%;
  }
  .agency-path .spatial-stage figcaption {
    inset-inline-start: 22%;
    bottom: 11%;
  }
  .redesign.agency .agency-flight .spatial-grid {
    grid-template-columns: minmax(0, 0.65fr) minmax(0, 1.35fr);
  }
  .agency-flight .hero-text {
    border-block: 1px solid #03b9fc66;
    padding-block: 1.6rem;
  }
  .agency-flight .spatial-stage {
    aspect-ratio: 1.9;
    border-block: 1px solid #03b9fc80;
  }
  .redesign.agency .agency-portal .spatial-grid {
    grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr);
  }
  .redesign.agency .agency-portal .spatial-stage {
    grid-area: 1 / 1;
    aspect-ratio: 1;
    border-radius: 48% 48% 0 0 / 24% 24% 0 0;
  }
  .redesign.agency .agency-portal .hero-text {
    grid-area: 1 / 2;
  }
  .agency-cutaway .spatial-stage {
    aspect-ratio: 1.13;
    border-left: 3px solid var(--color-brand-signal);
  }
}

@media (max-width: 999px) {
  .redesign.agency .spatial-hero .spatial-grid {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
  }
  .redesign.agency .spatial-hero .spatial-stage {
    aspect-ratio: 1.55;
  }
  .redesign.agency :is(.agency-portal, .agency-blueprint, .agency-cutaway) .spatial-stage {
    aspect-ratio: 1.22;
  }
  .redesign.agency .spatial-grid h1 {
    max-width: 18ch;
    font-size: min(clamp(2.25rem, 8vw, 4.9rem), 12cqi);
  }
}

@media (min-width: 1000px) {
  .redesign.agency .agency-immersive .spatial-stage::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(90deg, var(--agency-ground) 15%, transparent 62%);
  }
  .redesign.agency .agency-immersive .spatial-grid .cinema__copy {
    max-width: 30rem;
  }
}

.redesign.agency .breadcrumbs:has(+ .inner-runway) :is(a, span) {
  color: inherit;
}

.redesign.agency .inner-runway .inner-grid {
  min-height: 0;
  padding-block: 0;
}

.redesign.agency .inner-runway .inner-film {
  border: 0;
  border-radius: 0;
  padding: 0;
}

.inner-film :is(.inner-film__poster, .inner-film__canvas) {
  width: 100%;
  height: 100%;
  grid-area: 1/1;
  object-fit: contain;
  filter: drop-shadow(0 16px 16px #10162d44);
}

.inner-film.is-live .inner-film__poster {
  visibility: hidden;
}

.redesign.agency .inner-film__label {
  background: var(--color-blueprint-ground);
  color: var(--color-blueprint-ink);
  border: 0;
  border-inline-start: 2px solid var(--color-brand-signal);
}

.redesign.agency .spatial-stage :is(img, canvas) {
  filter: drop-shadow(0 12px 22px #19244b45);
}

.redesign.agency .spatial-stage {
  box-shadow: none;
  background: radial-gradient(
    ellipse at 55% 53%,
    color-mix(in srgb, var(--color-blueprint-light) 45%, var(--color-blueprint-ground)),
    var(--color-blueprint-ground) 77%
  );
}

.redesign.agency :is(.article-section--case, .article-section--tool, .case-inline-callout) {
  background: color-mix(in srgb, var(--color-blueprint-light) 15%, var(--color-blueprint-paper));
  color: var(--color-blueprint-paper-ink);
  border-color: var(--line);
}

.redesign.agency
  :is(.article-section--case, .article-section--tool, .case-inline-callout)
  :is(h2, h3, p, li) {
  color: inherit;
}

.redesign.agency .article-aside .toc-links a:is(:hover, .is-active) {
  height: auto;
  background: color-mix(in srgb, var(--color-blueprint-light) 23%, var(--color-blueprint-paper));
  color: var(--color-blueprint-paper-ink);
}

.redesign.agency .request-panel-head {
  background: #151f42;
  color: #edf4ff;
}

.redesign.agency .brief-form :is(input:not([type="checkbox"]), select, textarea) {
  background: var(--color-white);
  color: #1a2343;
  border-color: #879ac4;
}

.redesign.agency .brief-form :is(input, textarea)::placeholder {
  color: #566885;
  opacity: 1;
}

.redesign.agency .related-card {
  min-height: 0;
}

.redesign.agency .related-card h3 {
  margin-block: 0.7rem var(--space-text);
}

@media (max-width: 760px) {
  .redesign.agency .inner-runway .inner-stage {
    min-height: 0;
  }
}

body:has([data-spatial-hero]) .site-header {
  background: color-mix(in srgb, var(--new-ground) 84%, transparent);
  backdrop-filter: blur(16px) saturate(140%);
}

[data-spatial-hero] .spatial-stage::before {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(
    ellipse at var(--spot-x, 55%) var(--spot-y, 50%),
    #03b9fc35,
    transparent 53%
  );
  content: "";
  transform: scale(calc(1 + var(--camera-progress, 0) * 0.12));
}

[data-spatial-hero] .spatial-stage :is(canvas, img) {
  translate: 0 calc(var(--camera-progress, 0) * -12px);
}

[data-spatial-hero] :is(.hero-buttons, .hero-actions) a {
  position: relative;
}

.spatial-spark {
  position: absolute;
  inset: 50% auto auto 50%;
  width: 4px;
  height: 4px;
  border-radius: var(--radius-round);
  background: var(--color-night-signal);
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  [data-spatial-hero] .spatial-stage :is(canvas, img),
  [data-spatial-hero] a {
    translate: none !important;
  }
}

[data-spatial-hero] .hero-review-note {
  margin: 0.75rem 0 0;
  color: var(--new-ink);
  font-size: 0.85rem;
}

/* The midnight header anchors the entire site. */

.redesign.agency .site-header {
  background: var(--color-header-ground);
  border-bottom-color: var(--color-header-border);
}

.redesign.agency .site-header .desktop-menu a:not(.button) {
  color: #e4e9ff;
}

.redesign.agency .site-header .desktop-menu a:not(.button):is(:hover, :focus-visible) {
  color: var(--color-night-signal);
}

.redesign.agency .site-header .site-logo {
  color: var(--color-night-heading);
}

.redesign.agency .breadcrumbs:has(+ .inner-runway) {
  clip-path: inset(0 -100vmax);
  background: var(--color-header-ground);
  color: #d5def9;
  box-shadow: 0 0 0 100vmax var(--color-header-ground);
}

.redesign.agency .inner-runway .inner-stage {
  background: var(--color-scene-ground);
  color: var(--color-night-heading);
}

.redesign.agency .inner-runway .inner-film__label {
  background: #151c3a;
  color: #e4edff;
}

.redesign.agency .inner-runway .inner-grid :is(.hero-meta, .case-hero__tags) > * {
  color: #c5d2f3;
}

.redesign.agency .inner-runway .inner-grid .button-quiet {
  color: var(--color-action-on-dark);
}

.redesign.agency .inner-lens .inner-film {
  background: radial-gradient(ellipse at 44% 48%, #6548b38c, transparent 67%);
}

.redesign.agency .inner-editorial .inner-film {
  background: radial-gradient(ellipse at 38% 56%, #5261b98c, transparent 64%);
}

.redesign.agency .inner-path .inner-film {
  background: radial-gradient(ellipse at 57% 65%, #0075ac70, transparent 64%);
}

.redesign.agency .inner-signal .inner-film {
  background: radial-gradient(ellipse at 60% 43%, #204ba899, transparent 66%);
}

.redesign.agency .inner-release .inner-film {
  background: radial-gradient(ellipse at 54% 58%, #4135a99c, transparent 67%);
}

body:has([data-prism-hero]) main > :is(#explore, #case-studies, .craft-scene, .bottom-cta) {
  position: relative;
  isolation: isolate;
  --chapter-progress: 1;
}

body:has([data-prism-hero]) main > :is(#explore, #case-studies, .craft-scene, .bottom-cta)::after {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 2px;
  background: #74ddff;
  transform-origin: left;
  transform: scaleX(var(--chapter-progress));
  pointer-events: none;
}

body:has([data-prism-hero]) #explore {
  background: #edf0ff;
  padding-block: clamp(4rem, 10vw, 9rem);
}

body:has([data-prism-hero]) #case-studies {
  background: #13182e;
  color: var(--color-night-copy);
  padding-block: clamp(4rem, 10vw, 9rem);
}

body:has([data-prism-hero]) #case-studies :is(h2, h3, p) {
  color: inherit;
}

body:has([data-prism-hero]) #case-studies :is(article, .case-list-card) {
  background: #1d2648;
  color: var(--color-night-copy);
  border-color: #4e6398;
}

body:has([data-prism-hero]) #case-studies :is(article, .case-list-card) a {
  color: var(--color-night-copy);
}

body:has([data-prism-hero]) .craft-scene {
  background: #0e1731;
  color: #ecf4ff;
}

body:has([data-prism-hero]) .craft-scene .craft-plate {
  translate: 0 calc((1 - var(--chapter-progress)) * 42px);
}

body:has([data-prism-hero]) .bottom-cta {
  background: #131a37;
  color: var(--color-action-on-dark);
}

@media (prefers-reduced-motion: reduce) {
  body:has([data-prism-hero]) .craft-scene .craft-plate {
    translate: none;
  }
  body:has([data-prism-hero])
    main
    > :is(#explore, #case-studies, .craft-scene, .bottom-cta)::after {
    transform: none;
  }
}
