/* A single live quote recedes into a dimensional monitor as the page scrolls. */
.studio-portal {
  position: relative;
  height: 250svh;
  margin-top: 60px;
  --portal-scale: 1;
  --portal-rise: 0px;
  --portal-tilt: 0deg;
  --portal-turn: 0deg;
  --portal-roll: 0deg;
  --portal-hardware: 0;
  --portal-entry: 0;
  --portal-hint: 1;
}
.portal-stage {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 0;
  display: grid;
  place-items: center;
  overflow: clip;
  perspective: 1400px;
  isolation: isolate;
}
.portal-computer {
  position: relative;
  width: min(920px, 86vw);
  aspect-ratio: 16/10;
  transform: translate3d(0, var(--portal-rise), 0) rotateX(var(--portal-tilt))
    rotateY(var(--portal-turn)) rotateZ(var(--portal-roll))
    scale(var(--portal-scale));
  transform-style: preserve-3d;
  will-change: transform;
}
.portal-screen {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 7% 8%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--page);
  border-radius: 5px;
  backface-visibility: hidden;
}
.portal-kicker {
  color: var(--text-secondary);
  font: 400 11px/1.5 var(--font-mono);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin: 0 0 28px;
}
.portal-screen blockquote {
  font: 400 clamp(30px, 3.6vw, 48px)/1.25 var(--font-sans);
  letter-spacing: -0.04em;
  margin: 0 0 30px;
  text-wrap: balance;
}
.portal-screen em {
  font-family: var(--font-serif);
  font-weight: 400;
}
.portal-screen figcaption {
  color: var(--text-secondary);
  font-size: 14px;
  line-height: 1.7;
}
.portal-screen figcaption strong {
  display: block;
  color: var(--ink);
  font-weight: 500;
}
.portal-hardware {
  position: absolute;
  inset: -17px -19px -46px;
  background: linear-gradient(
    135deg,
    #535557 0%,
    #202124 25%,
    #111214 75%,
    #424448
  );
  border: 2px solid #8b8d8f;
  border-radius: 18px;
  box-shadow:
    inset 0 0 0 2px #191b1e,
    16px 24px 0 -6px #77797b,
    25px 35px 50px #13141716;
  opacity: var(--portal-hardware);
  transform: translateZ(-2px);
}
.portal-hardware::before {
  content: "";
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #a5aab0;
  box-shadow: inset 0 0 0 2px #1c1f24;
  top: 5px;
  left: calc(50% - 3px);
}
.portal-hardware::after {
  content: "Raina’s Studio";
  position: absolute;
  bottom: 13px;
  left: 0;
  right: 0;
  color: #c3c5c8;
  text-align: center;
  font: 400 13px/1 var(--font-sans);
  letter-spacing: 0.04em;
}
.portal-stand {
  position: absolute;
  top: calc(100% + 35px);
  left: 42%;
  width: 16%;
  height: 20%;
  background: linear-gradient(
    90deg,
    #a9abad,
    #e1e3e5 43%,
    #b0b2b5 75%,
    #7b7e82
  );
  clip-path: polygon(14% 0, 86% 0, 100% 100%, 0 100%);
  opacity: var(--portal-hardware);
  transform: translateZ(-10px);
}
.portal-base {
  position: absolute;
  top: calc(120% + 22px);
  left: 27%;
  width: 46%;
  height: 6%;
  border-radius: 7px 7px 9px 9px;
  background: linear-gradient(175deg, #dedfe0, #b5b8bb 60%, #83868a);
  border-bottom: 6px solid #8a8d90;
  box-shadow: 10px 23px 18px #13141719;
  opacity: var(--portal-hardware);
  transform: rotateX(40deg) translateZ(4px);
}
.portal-open {
  position: absolute;
  inset: -17px -19px -46px;
  z-index: 4;
  border-radius: 18px;
  pointer-events: none;
}
.studio-portal.is-ready .portal-open {
  pointer-events: auto;
}
.portal-open:focus-visible {
  outline: 4px solid var(--ink);
  outline-offset: 12px;
}
.portal-entry {
  position: absolute;
  bottom: 48px;
  left: 5%;
  width: 90%;
  text-align: center;
  opacity: var(--portal-entry);
  transform: translateY(calc((1 - var(--portal-entry)) * 18px));
  pointer-events: none;
}
.studio-portal.is-ready .portal-entry {
  pointer-events: auto;
}
.portal-entry h2 {
  font: 400 clamp(25px, 2.8vw, 38px)/1.15 var(--font-sans);
  letter-spacing: -0.035em;
  margin: 0 0 10px;
}
.portal-entry p {
  color: var(--text-secondary);
  margin: 0 0 20px;
  font-size: 14px;
}
.portal-enter {
  display: inline-flex;
  gap: 14px;
  align-items: center;
  padding: 13px 22px;
  border-radius: 100px;
  background: var(--ink);
  color: white;
  text-decoration: none;
  font-size: 14px;
  transition: background var(--hover-duration);
}
.portal-enter:hover {
  background: var(--hover-bg);
}
.portal-hint {
  position: absolute;
  bottom: 55px;
  text-align: center;
  color: var(--text-secondary);
  font-size: 12px;
  opacity: var(--portal-hint);
  margin: 0 20px;
}
@media (max-width: 700px) {
  .studio-portal {
    height: 220svh;
    margin-top: 35px;
  }
  .portal-computer {
    width: 86vw;
    aspect-ratio: 1;
  }
  .portal-screen {
    padding: 6% 7%;
  }
  .portal-screen blockquote {
    font-size: clamp(21px, 5.7vw, 32px);
    line-height: 1.25;
    margin-bottom: 18px;
  }
  .portal-kicker {
    font-size: 9px;
    margin-bottom: 18px;
    letter-spacing: 0.1em;
  }
  .portal-screen figcaption {
    font-size: 12px;
  }
  .portal-entry {
    bottom: 35px;
  }
  .portal-entry p {
    max-width: 290px;
    margin: 0 auto 18px;
    line-height: 1.6;
  }
  .portal-hardware {
    inset: -10px -12px -28px;
    border-radius: 12px;
  }
  .portal-hardware::after {
    font-size: 9px;
    bottom: 8px;
  }
  .portal-hardware::before {
    width: 4px;
    height: 4px;
    top: 2px;
  }
  .portal-stand {
    top: calc(100% + 22px);
  }
  .portal-base {
    top: calc(120% + 12px);
  }
}
@media (prefers-reduced-motion: reduce), (max-height: 600px) {
  .studio-portal {
    height: auto;
  }
  .portal-stage {
    position: relative;
    height: max(680px, 100svh);
  }
  .portal-computer {
    will-change: auto;
  }
  .portal-enter {
    transition: none;
  }
}
