/* Shared scroll-story treatments: the CCTV incident wire and the AI Control Case File.
   Used by the selected film preview and the Kiteworks page. */
:is(#the-risk, #kiteworks-incident-wire).news-wire[data-cctv-mode="scroll"].is-scroll {
  min-height: var(--cctv-track);
  padding-block: 24px;
  overflow: visible;
}
.news-wire[data-cctv-mode="scroll"].is-scroll > .wrap {
  position: sticky;
  top: var(--cctv-top);
}
.news-wire[data-cctv-mode="scroll"].is-scroll [data-reveal] {
  opacity: 1;
  transform: none;
}
.news-wire[data-cctv-mode="scroll"] .feed-window__clock {
  position: absolute;
  left: 14px;
  bottom: 12px;
  z-index: 2;
  display: grid;
  gap: 3px;
  padding: 6px 8px;
  background: #09110be6;
  color: #e5eadf;
  pointer-events: none;
  font: 400 12px/1.4 var(--font-mono);
  letter-spacing: .035em;
  font-variant-numeric: tabular-nums;
}
.news-wire[data-cctv-mode="scroll"] .feed-window__camera::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 7px;
  background: var(--red);
}
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__layout { display: block; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__intro { max-width: 680px; margin-bottom: 28px; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__cameras { max-width: none; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__label,
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__stage { display: none; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-wire__reports { margin-top: 36px; border-top: 0; padding-top: 0; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-report { max-width: 760px; margin-inline: auto; scroll-margin-top: 96px; }
.news-wire[data-cctv-mode="scroll"].is-flow .news-report + .news-report {
  margin-top: 72px;
  padding-top: 48px;
  border-top: 1px solid var(--border);
}
.news-wire[data-cctv-mode="scroll"].is-flow .feed-window {
  position: relative;
  inset: auto;
  width: 100%;
  max-width: 650px;
  margin-bottom: 28px;
  transform: none;
  opacity: 1;
  z-index: auto;
}
.news-wire[data-cctv-mode="scroll"].is-flow .news-report h3 { max-width: 32ch; }

/* Story change: a short tracking glitch on the incoming feed and its report.
   Small offset slices and low noise only, with no full-frame flash. */
.news-wire[data-cctv-mode="scroll"] .feed-window__glitch {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  background:
    linear-gradient(transparent 0 46%, rgb(229 234 223 / .16) 46% 48%, transparent 48% 100%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
  background-size: 100% 220%, 160px 160px;
  mix-blend-mode: screen;
}
.news-wire[data-cctv-mode="scroll"] .feed-window__glitch::before,
.news-wire[data-cctv-mode="scroll"] .feed-window__glitch::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--cctv-glitch-src) center / cover no-repeat;
  background-blend-mode: multiply;
  mix-blend-mode: screen;
  opacity: .8;
  clip-path: inset(50% 0 50% 0);
}
.news-wire[data-cctv-mode="scroll"] .feed-window__glitch::before { background-color: rgb(241 1 1); }
.news-wire[data-cctv-mode="scroll"] .feed-window__glitch::after { background-color: rgb(0 196 214); }
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__glitch {
  animation: cctv-glitch-frame .56s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__glitch::before {
  animation: cctv-glitch-red .56s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__glitch::after {
  animation: cctv-glitch-cyan .56s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__capture {
  animation: cctv-glitch-jolt .56s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__camera,
.news-wire[data-cctv-mode="scroll"] .feed-window.is-glitching .feed-window__clock {
  animation: cctv-glitch-label .56s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .news-report.is-glitching h3,
.news-wire[data-cctv-mode="scroll"] .news-report.is-glitching .news-report__question {
  animation: cctv-glitch-text .48s steps(1, end) both;
}
.news-wire[data-cctv-mode="scroll"] .news-report.is-glitching .news-report__meta,
.news-wire[data-cctv-mode="scroll"] .news-report.is-glitching .news-report__body {
  animation: cctv-glitch-settle .5s ease-out both;
}
@keyframes cctv-glitch-frame {
  0% { opacity: 1; background-position: 0 0, 0 0; }
  20% { opacity: 1; background-position: 0 30%, 40px 20px; }
  40% { opacity: .9; background-position: 0 70%, -30px 60px; }
  60% { opacity: .7; background-position: 0 100%, 20px -40px; }
  80% { opacity: .4; background-position: 0 140%, -10px 10px; }
  100% { opacity: 0; }
}
@keyframes cctv-glitch-red {
  0% { clip-path: inset(12% 0 74% 0); transform: translateX(-14px); }
  16% { clip-path: inset(58% 0 26% 0); transform: translateX(11px); }
  32% { clip-path: inset(30% 0 56% 0); transform: translateX(-7px); }
  48% { clip-path: inset(78% 0 8% 0); transform: translateX(15px); }
  64% { clip-path: inset(4% 0 86% 0); transform: translateX(-9px); }
  80% { clip-path: inset(44% 0 48% 0); transform: translateX(5px); }
  100% { clip-path: inset(50% 0 50% 0); transform: none; }
}
@keyframes cctv-glitch-cyan {
  0% { clip-path: inset(66% 0 18% 0); transform: translateX(12px); }
  16% { clip-path: inset(20% 0 70% 0); transform: translateX(-10px); }
  32% { clip-path: inset(84% 0 4% 0); transform: translateX(8px); }
  48% { clip-path: inset(38% 0 50% 0); transform: translateX(-13px); }
  64% { clip-path: inset(62% 0 30% 0); transform: translateX(6px); }
  80% { clip-path: inset(10% 0 84% 0); transform: translateX(-4px); }
  100% { clip-path: inset(50% 0 50% 0); transform: none; }
}
@keyframes cctv-glitch-jolt {
  0% { transform: translate(-6px, 2px) skewX(-3deg); }
  16% { transform: translate(5px, -1px) skewX(2deg); }
  32% { transform: translate(-3px, 0) skewX(-1deg); }
  48% { transform: translate(4px, 1px); }
  64% { transform: translate(-2px, 0); }
  80%, 100% { transform: none; }
}
@keyframes cctv-glitch-label {
  0% { opacity: .2; transform: translateX(-4px); }
  20% { opacity: 1; transform: translateX(3px); }
  40% { opacity: .35; transform: none; }
  60%, 100% { opacity: 1; transform: none; }
}
@keyframes cctv-glitch-text {
  0% { clip-path: inset(0 0 55% 0); transform: translateX(-6px); text-shadow: -3px 0 rgb(241 1 1 / .85), 3px 0 rgb(0 196 214 / .7); }
  18% { clip-path: inset(45% 0 0 0); transform: translateX(5px); text-shadow: 3px 0 rgb(241 1 1 / .85), -3px 0 rgb(0 196 214 / .7); }
  36% { clip-path: inset(20% 0 30% 0); transform: translateX(-3px); text-shadow: -2px 0 rgb(241 1 1 / .7), 2px 0 rgb(0 196 214 / .5); }
  54% { clip-path: none; transform: translateX(2px); text-shadow: 1px 0 rgb(241 1 1 / .5), -1px 0 rgb(0 196 214 / .4); }
  72%, 100% { clip-path: none; transform: none; text-shadow: none; }
}
@keyframes cctv-glitch-settle {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .news-wire[data-cctv-mode="scroll"] .is-glitching *,
  .news-wire[data-cctv-mode="scroll"] .is-glitching .feed-window__glitch,
  .news-wire[data-cctv-mode="scroll"] .is-glitching .feed-window__glitch::before,
  .news-wire[data-cctv-mode="scroll"] .is-glitching .feed-window__glitch::after { animation: none !important; }
}

/* Folder section: the case file settles, the lamp finds the label, then the review tab and questions light. */
[data-dossier-mode="scroll"].is-dossier-ready .dossier-stage {
  position: relative;
  display: block;
  transform: translateY(var(--dossier-y, 0)) rotate(var(--dossier-turn, 0deg)) scale(var(--dossier-scale, 1));
  transform-origin: 50% 70%;
  will-change: transform;
}
[data-dossier-mode="scroll"].is-dossier-ready .dossier-stage > img:not(.dossier-stage__tab) {
  position: relative;
  z-index: 1;
}
.dossier-stage__dim,
.dossier-stage__shade,
.dossier-stage__light {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  -webkit-mask: var(--dossier-mask) center / 100% 100% no-repeat;
  mask: var(--dossier-mask) center / 100% 100% no-repeat;
}
.dossier-stage__dim {
  background: #050403;
  opacity: var(--dossier-dim, 0);
}
/* Away from the lamp (upper right) each object falls into the same warm shadow as the desk around it. */
.dossier-stage__shade,
.case-file__tape-shade {
  background: linear-gradient(222deg, transparent 12%, rgb(52 26 10 / .32) 50%, rgb(16 8 3 / .7) 100%);
  mix-blend-mode: multiply;
}
.dossier-stage__shadow {
  position: absolute;
  z-index: 0;
  left: 12%;
  right: 10%;
  bottom: 1%;
  height: 9%;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgb(0 0 0 / .78), transparent);
  filter: blur(14px);
  opacity: calc(.25 + var(--dossier-shadow, 1) * .75);
  transform: translateY(calc(var(--dossier-y, 0px) * -.6)) scaleX(calc(.82 + var(--dossier-shadow, 1) * .18));
  pointer-events: none;
}
.dossier-stage__light {
  opacity: var(--dossier-light, 1);
  background: radial-gradient(circle at var(--dossier-light-x, 90%) var(--dossier-light-y, 6%), rgb(255 206 140 / .5), rgb(255 186 110 / .18) 34%, transparent 66%);
  mix-blend-mode: soft-light;
}
.dossier-stage__tab {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  pointer-events: none;
  clip-path: polygon(91.3% 30.2%, 97.1% 31.6%, 96.9% 49.6%, 95.2% 54.8%, 89.4% 56.1%, 90.4% 30.8%);
  filter: brightness(1.32) saturate(1.35) drop-shadow(0 0 10px rgb(241 1 1 / .55));
  opacity: var(--dossier-tab, 1);
}
.dossier-stage__tab--layer { clip-path: none; }
/* Split case file (homepage Kiteworks section and the Kiteworks page workflow): the folder and the tape are two objects
   on the lamp-lit desk. The figure runs past the copy above, below and into the right gutter. Everything is sized from
   the folder width (--f): the folder sits at the figure's left edge, and the tape lies across its lower half, flush with
   its right edge and hanging a little past the bottom. */
.case-file {
  --f: min(100cqw, 85cqh);
  --cy: calc((100cqh - var(--f) * 1.17) / 2);
  position: relative; container-type: size; align-self: stretch; justify-self: stretch; width: auto; max-width: none; min-height: 520px;
  /* Bleeds into the right gutter (stopping 28px short of the screen edge) and most of the column gap on the left
     (24px stays clear of the copy). */
  margin: calc(-1 * clamp(40px, 7vw, 104px)) calc(-1 * max(0px, min(88px, max(var(--gutter, 20px), (100vw - 1240px) / 2) - 28px))) calc(-1 * clamp(40px, 7vw, 104px)) calc(-1 * max(0px, clamp(32px, 5vw, 72px) - 24px));
}
[data-dossier-mode] .case-file > :is(.case-file__folder, .dossier-stage) {
  position: absolute; top: var(--cy); left: 0; width: var(--f); height: auto; max-height: none; aspect-ratio: 900 / 1033;
}
/* Scroll motion: the folder rises and turns into place, then lags behind as the section scrolls away. */
[data-dossier-mode="scroll"].is-dossier-ready .case-file > .dossier-stage {
  transform: translateY(calc(var(--dossier-y, 0px) + var(--dossier-past, 0) * 48px)) rotate(calc(var(--dossier-turn, 0deg) + var(--dossier-past, 0) * 1.5deg)) scale(var(--dossier-scale, 1));
}
[data-dossier-mode] .case-file > .dossier-stage { filter: drop-shadow(-16px 20px 18px rgb(8 4 2 / .62)); }
/* Lamp grade: the art was lit neutral; warm it and pull it down to the desk's exposure. */
.case-file .dossier-stage > img:not(.dossier-stage__tab),
.case-file__folder { display: block; width: 100%; height: 100%; max-height: none; object-fit: contain; filter: sepia(.34) saturate(1.1) hue-rotate(-6deg) contrast(1.06) brightness(.78); }
.case-file .dossier-stage__shadow { left: 2%; right: 22%; bottom: -1%; }
.case-file .case-file__tape {
  /* Slides in from the right edge, lands across the folder, then leads the folder as the section scrolls away. */
  position: absolute; z-index: 4; top: calc(var(--cy) + var(--f) * .72); left: calc(var(--f) * .28); width: calc(var(--f) * .72); height: auto; max-height: none;
  transform: translate(calc((1 - var(--dossier-tape, 1)) * 72%), calc((1 - var(--dossier-tape, 1)) * 34% - var(--dossier-past, 0) * 26%)) rotate(calc(-5deg + (1 - var(--dossier-tape, 1)) * 20deg - var(--dossier-past, 0) * 3deg));
  opacity: calc(.15 + var(--dossier-tape, 1) * 1.4);
  filter: drop-shadow(-14px 18px 16px rgb(8 4 2 / .72));
}
.case-file img.case-file__tape { filter: sepia(.3) saturate(1.1) hue-rotate(-6deg) contrast(1.05) brightness(.74) drop-shadow(-14px 18px 16px rgb(8 4 2 / .72)); }
.case-file__tape--staged { display: block; aspect-ratio: 900 / 561; }
.case-file__tape-image { display: block; width: 100%; height: 100%; filter: sepia(.3) saturate(1.1) hue-rotate(-6deg) contrast(1.05) brightness(calc(.54 + var(--dossier-light, 1) * .22)); }
.case-file__tape-shade,
.case-file__tape-light {
  position: absolute; inset: 0; pointer-events: none;
  -webkit-mask: var(--tape-mask) center / 100% 100% no-repeat;
  mask: var(--tape-mask) center / 100% 100% no-repeat;
}
.case-file__tape-light {
  opacity: var(--dossier-light, 1);
  background: radial-gradient(circle at 96% -40%, rgb(255 206 140 / .55), rgb(255 186 110 / .18) 45%, transparent 80%);
  mix-blend-mode: soft-light;
}
@media (max-width: 900px) {
  .case-file { --f: min(96cqw, 85cqh); justify-self: center; width: min(100%, 540px); height: auto; aspect-ratio: .84; min-height: 0; margin: 8px auto 0; }
}
/* The tape slides in from outside the frame; clip it to the section so it never widens the page. */
[data-dossier-mode="scroll"]:has(.case-file) { overflow-x: clip; }
[data-dossier-mode="scroll"] .kw-demo-checks li { transition: opacity .4s ease; }

/* Case-file room: the CTRL desk under its lamp, mirrored so the lamp hangs over the folder on the right. */
[data-dossier-mode="scroll"].is-dossier-room { position: relative; isolation: isolate; }
.dossier-room { --room-pass: .5; position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; background: #050404; }
.dossier-room__camera {
  position: absolute; inset: -8% 0; transform: translate3d(0, calc((.5 - var(--room-pass)) * 9%), 0) scale(calc(1.06 + var(--room-pass) * .06));
  transform-origin: 78% 30%; will-change: transform;
}
.dossier-room__plate {
  display: block; width: 100%; height: 100%; object-fit: cover; object-position: 0% 0%; transform: scaleX(-1);
  filter: brightness(.48) saturate(.82) contrast(1.06);
}
/* Unlit desk: darkens until the folder settles and the lamp comes up. */
.dossier-room__dim { position: absolute; inset: 0; background: #050404; opacity: calc((1 - var(--dossier-light, 1)) * .55); }
.dossier-room__lamp { position: absolute; inset: 0; opacity: var(--dossier-light, 1); mix-blend-mode: screen; }
.dossier-room__lamp i {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 34% 46% at 94% 4%, rgb(255 196 120 / .24), rgb(255 170 90 / .08) 45%, transparent 72%),
    radial-gradient(ellipse 46% 40% at 74% 62%, rgb(255 186 110 / .09), transparent 70%),
    radial-gradient(ellipse 40% 44% at 20% 46%, rgb(255 180 110 / .05), transparent 72%);
}
@media (prefers-reduced-motion: no-preference) {
  .dossier-room__lamp i { animation: dossier-lamp-flicker 7.4s steps(1, end) infinite; }
}
@keyframes dossier-lamp-flicker {
  0%, 100% { opacity: 1; }
  41% { opacity: .82; }
  42% { opacity: 1; }
  43.5% { opacity: .7; }
  44.5% { opacity: .96; }
  78% { opacity: .9; }
  79% { opacity: 1; }
}
.dossier-room__dust { position: absolute; inset: 0 0 30% 46%; width: 54%; height: 70%; mix-blend-mode: screen; }
/* Readability: the copy side stays near black, and the room fades into the bands above and below. */
.dossier-room__shade {
  position: absolute; inset: 0;
  background:
    linear-gradient(#050404 0%, #05040400 16%, #05040400 82%, #050404 100%),
    linear-gradient(90deg, #050404d6 0%, #050404c2 34%, #05040480 58%, #05040440 100%);
}
.motion-paused .dossier-room__lamp i { animation: none; }

/* Control-questions room: the CTRL pinboard under its picture light (board-room.js). */
[data-board-room].has-board-room { position: relative; isolation: isolate; }
.board-room { --board-pass: .5; --board-light: 1; position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; background: #050404; }
.board-room__camera {
  position: absolute; inset: -10% -4%; transform: translate3d(calc((.5 - var(--board-pass)) * 3%), calc((.5 - var(--board-pass)) * 10%), 0) scale(calc(1.02 + var(--board-pass) * .08));
  transform-origin: 46% 20%; will-change: transform;
}
.board-room__plate { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; filter: brightness(.4) saturate(.8) contrast(1.05); }
.board-room__dim { position: absolute; inset: 0; background: #050404; opacity: calc((1 - var(--board-light)) * .6); }
.board-room__lamp { position: absolute; inset: 0; opacity: var(--board-light); mix-blend-mode: screen; }
.board-room__lamp i { position: absolute; inset: 0; background: radial-gradient(ellipse 40% 34% at 46% 2%, rgb(255 196 120 / .16), rgb(255 170 90 / .05) 48%, transparent 74%); }
@media (prefers-reduced-motion: no-preference) {
  .board-room__lamp i { animation: board-lamp-breathe 9s ease-in-out infinite; }
}
@keyframes board-lamp-breathe {
  0%, 100% { opacity: 1; }
  47% { opacity: .78; }
  48% { opacity: .95; }
  49% { opacity: .72; }
  50% { opacity: .9; }
}
/* Strings stay strongest at the edges and in the column gutter, and fade under the answer text. */
.board-room__threads {
  position: absolute; inset: 14% 4% 18%; width: 92%; height: 68%; overflow: visible; opacity: .8;
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #0008 12%, #0005 30%, #000a 50%, #0005 70%, #0008 88%, #000 100%);
  mask-image: linear-gradient(90deg, #000 0%, #0008 12%, #0005 30%, #000a 50%, #0005 70%, #0008 88%, #000 100%);
}
.board-room__strings path { fill: none; stroke: #d0201a; stroke-width: 2px; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; stroke-linejoin: round; filter: drop-shadow(0 2px 2px rgb(0 0 0 / .85)); }
.board-room__pins circle { fill: #a81a13; stroke: #f0b8a8; stroke-width: 1px; vector-effect: non-scaling-stroke; opacity: calc(.45 + var(--board-light) * .55); }
.board-room__dust { position: absolute; left: 22%; top: 0; width: 48%; height: 70%; mix-blend-mode: screen; }
/* Readability: questions sit on a dark scrim; the board shows through mostly at the edges and under the light. */
.board-room__shade {
  position: absolute; inset: 0;
  background:
    linear-gradient(#050404 0%, #050404b3 14%, #05040499 50%, #050404cc 84%, #050404 100%),
    radial-gradient(ellipse 62% 54% at 50% 58%, #050404cc, transparent 82%);
}
.motion-paused .board-room__lamp i { animation: none; }

/* Scene rooms (scene-rooms.js): CTRL room plates behind sections that would otherwise be flat black.
   Like the case-file desk, each room stays visible through the open middle of the frame and only darkens behind copy. */
[data-scene-room].has-scene-room { position: relative; isolation: isolate; }
.scene-room { --room-pass: .5; --room-light: 1; position: absolute; inset: 0; z-index: -2; overflow: clip; pointer-events: none; background: #050404; }
/* The frame stays in view for tall sections such as the pinned incident wire. */
.scene-room__frame { position: sticky; top: 0; height: min(100%, 100svh); overflow: hidden; }
.scene-room__camera {
  position: absolute; inset: -8% -3%;
  transform: translate3d(calc((.5 - var(--room-pass)) * 2%), calc((.5 - var(--room-pass)) * 8%), 0) scale(calc(1.03 + var(--room-pass) * .07));
  will-change: transform;
}
.scene-room__plate { display: block; width: 100%; height: 100%; object-fit: cover; filter: brightness(.68) saturate(.9) contrast(1.06); }
.scene-room__dim { position: absolute; inset: 0; background: #050404; opacity: calc((1 - var(--room-light)) * .55); }
.scene-room__lamp { position: absolute; inset: 0; opacity: var(--room-light); mix-blend-mode: screen; }
.scene-room__lamp i { position: absolute; inset: 0; }
@media (prefers-reduced-motion: no-preference) {
  .scene-room__lamp i { animation: scene-room-flicker 8.6s steps(1, end) infinite; }
  .scene-room[data-room="entrance"] .scene-room__lamp i { animation-duration: 6.2s; }
}
@keyframes scene-room-flicker {
  0%, 100% { opacity: 1; }
  36% { opacity: .78; }
  37% { opacity: 1; }
  38.5% { opacity: .66; }
  39.5% { opacity: .94; }
  71% { opacity: .86; }
  72% { opacity: 1; }
}
.scene-room__shade { position: absolute; inset: 0; }
.motion-paused .scene-room__lamp i { animation: none; }
/* Copy over a lit room keeps a soft dark halo so lamps never wash out a line. */
.has-scene-room :is(.head, .news-wire__intro, .kw-film__copy) :is(h1, h2, .lead, .body, .slate, p:not([class])),
.has-scene-room .kw-hero__lead { text-shadow: 0 1px 2px rgb(5 4 4 / .7), 0 0 22px rgb(5 4 4 / .85); }

/* Incident wire: the CTRL entrance hall and its monitor wall. Cameras on the left, reports on the right. */
.scene-room[data-room="entrance"] .scene-room__camera { transform-origin: 40% 40%; }
.scene-room[data-room="entrance"] .scene-room__plate { object-position: 50% 45%; filter: brightness(.74) saturate(.9) contrast(1.06); }
.scene-room[data-room="entrance"] .scene-room__lamp i {
  background: radial-gradient(ellipse 30% 28% at 50% 22%, rgb(255 196 120 / .3), transparent 72%),
    radial-gradient(ellipse 22% 24% at 22% 50%, rgb(255 190 120 / .16), transparent 70%);
}
.scene-room[data-room="entrance"] .scene-room__shade {
  background: linear-gradient(#050404 0%, #05040400 14%, #05040400 82%, #050404 100%),
    linear-gradient(90deg, #05040466 0%, #0504044d 36%, #050404b8 56%, #050404d1 100%);
}

/* Kiteworks hero: the CTRL operations room, copy on the left and the TV with the lit boards behind it on the right. */
.scene-room[data-room="operations"] .scene-room__camera { transform-origin: 60% 40%; }
.scene-room[data-room="operations"] .scene-room__plate { object-position: 60% 42%; filter: brightness(.64) saturate(.88) contrast(1.06) blur(1px); }
.scene-room[data-room="operations"] .scene-room__lamp i {
  background: radial-gradient(ellipse 32% 30% at 66% 30%, rgb(255 200 130 / .28), rgb(255 170 90 / .08) 50%, transparent 76%);
}
.scene-room[data-room="operations"] .scene-room__shade {
  background: linear-gradient(#050404 0%, #05040400 16%, #05040400 80%, #050404 100%),
    linear-gradient(270deg, #05040480 0%, #0504044d 34%, #050404b3 56%, #050404d1 100%);
}

/* Office desk and pinboard, kept for sections that want a close room. */
.scene-room[data-room="office"] .scene-room__camera { transform-origin: 52% 50%; }
.scene-room[data-room="office"] .scene-room__plate { object-position: 50% 60%; filter: brightness(.6) saturate(.85) contrast(1.06) blur(1px); }
.scene-room[data-room="office"] .scene-room__lamp i {
  background: radial-gradient(ellipse 26% 30% at 52% 52%, rgb(255 200 130 / .26), rgb(255 170 90 / .08) 50%, transparent 76%);
}
.scene-room[data-room="office"] .scene-room__shade {
  background: linear-gradient(#050404 0%, #05040400 16%, #05040400 80%, #050404 100%),
    linear-gradient(90deg, #05040480 0%, #05040459 40%, #050404bf 60%, #050404d6 100%);
}
@media (max-width: 900px) {
  .scene-room__camera { inset: 0; transform: none; }
  .scene-room__shade { background: linear-gradient(#050404 0%, #05040499 14%, #05040480 60%, #050404 100%) !important; }
}
@media (max-width: 900px) {
  .board-room__camera { transform: none; inset: 0; }
  .board-room__threads { opacity: .35; }
  .board-room__shade { background: linear-gradient(#050404 0%, #050404d9 18%, #050404b8 60%, #050404 100%); }
}
@media (max-width: 900px) {
  .dossier-room__shade { background: linear-gradient(#050404 0%, #050404d9 22%, #05040499 60%, #050404 100%); }
  .dossier-room__camera { transform: none; }
}
[data-dossier-mode="scroll"].is-dossier-ready .kw-demo-checks li:not(.is-lit) { opacity: .45; }
[data-dossier-mode="scroll"] .kw-demo-checks li::after {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--red);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .7s cubic-bezier(.2, .7, .2, 1);
}
[data-dossier-mode="scroll"].is-dossier-ready .kw-demo-checks li.is-lit::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) {
  [data-dossier-mode="scroll"].is-dossier-ready .dossier-stage { will-change: auto; }
  [data-dossier-mode="scroll"] .kw-demo-checks li,
  [data-dossier-mode="scroll"] .kw-demo-checks li::after { transition: none; }
}
@media (max-width: 480px) {
  .news-wire[data-cctv-mode="scroll"] .feed-window__clock { left: 8px; bottom: 8px; font-size: 12px; letter-spacing: 0; }
  .news-wire[data-cctv-mode="scroll"] .feed-window__camera { top: 8px; left: 8px; }
}
