/* R17 local review: registered gold/red emission and upper-right moving mist.
   R16 photographic grounding and room geometry are retained; reading controls stay still. */
body { isolation: isolate; }
.site-world.scene {
  --scene-pointer-x: 0;
  --scene-pointer-y: 0;
  --scene-scroll: 0;
  --scene-calm: 0;
  --scene-dust-rise: 48px;
  --scene-vh: 100vh;
  --depth-near: 0;
  --depth-near-opacity: 1;
  --depth-near-scale: 1;
  --scene-edge-progress: 0;
  position: fixed;
  inset: 0;
  height: 100vh;
  z-index: -1;
  isolation: isolate;
  overflow: hidden;
  pointer-events: none;
  background: #08080a;
}
@supports (height: 100svh) {
  .site-world.scene { --scene-vh: 100svh; }
}
@supports (height: 100lvh) {
  .site-world.scene { height: 100lvh; }
}
.cinematic-stage {
  --scene-stage-height: clamp(760px, calc(100svh - 103px), 920px);
  position: relative;
  min-height: var(--scene-stage-height);
  background: transparent;
}
.site-header {
  width: min(1440px, calc(100% - 112px));
  border-bottom-color: rgba(210, 175, 112, .12);
}
.site-header .brand-type { font-size: 18px; letter-spacing: .29em; }
.site-header .brand-type small { font-size: 8px; letter-spacing: .31em; }
.site-header .desktop-nav { gap: 30px; }
.site-header .header-book { border-color: rgba(210, 175, 112, .65); }

.scene-camera-travel {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  transform: translate3d(calc(var(--scene-scroll) * .4vw), calc(var(--scene-scroll) * var(--scene-vh) * -.012), 0);
  will-change: transform;
}
.scene-camera {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  transform-origin: 50% 50%;
  /* The minimum zoom covers both the scroll advance and .3% camera drift. */
  transform: translate3d(-.3%, .3%, 0) scale(1.035);
  animation: scene-camera-breathe 16s ease-in-out -4s infinite alternate;
  will-change: transform;
}

.scene-background,
.scene-light,
.scene-floor-light,
.scene-beam,
.scene-haze,
.scene-haze-front,
.scene-dust,
.scene-atmosphere,
.scene-grain,
.scene-shade {
  position: absolute;
  pointer-events: none;
}
.scene-background,
.scene-emission {
  inset: 0;
  width: 100%;
  height: 100%;
}
.scene-background {
  z-index: 0;
}
.scene-background picture,
.scene-emission picture {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}
.scene-background img,
.scene-emission img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
  color: transparent;
}
/* These are exact room copies screened through source-coordinate light masks.
   Only luminance contribution changes; fixtures never move independently. */
.scene-emission {
  position: absolute; z-index: 1; pointer-events: none;
  mix-blend-mode: screen; opacity: .12;
  animation: var(--effect-animation);
}
.scene-emission img { mask-size: cover; mask-repeat: no-repeat; mask-position: 50% 50%; }
.scene-emission-gold { --effect-animation: scene-gold-emission 6.4s ease-in-out -1.6s infinite; }
.scene-emission-wine { --effect-animation: scene-wine-emission 8.2s ease-in-out -2s infinite; }
.scene-emission-gold img { mask-image: url('assets/emission-gold-wide-r17.svg'); }
.scene-emission-wine img { mask-image: url('assets/emission-wine-wide-r17.svg'); }
/* A fixed feathered volume limits fog to the existing wine-lit air. Its two
   nested textures advect and shear independently; the rack remains stable. */
.scene-red-fog {
  position: absolute; left: 62%; top: -12%; width: 53%; height: 75%;
  z-index: 4; pointer-events: none; mix-blend-mode: screen;
  mask-image: radial-gradient(ellipse at 56% 42%, #000 30%, rgba(0,0,0,.8) 54%, transparent 82%);
}
.scene-red-fog-flow {
  position: absolute; inset: -12% -18%; pointer-events: none;
  mask-image: url('assets/red-fog-volume-r17.webp');
  mask-repeat: no-repeat; mask-size: 100% 100%;
  background: radial-gradient(ellipse at 65% 34%, rgba(226,38,69,.88), rgba(169,17,46,.68) 49%, rgba(113,16,39,.28) 80%);
  opacity: .42; filter: blur(1.5px); animation: var(--effect-animation);
}
.scene-red-fog-flow-back { --effect-animation: scene-red-fog-back 6.8s ease-in-out -1.7s infinite; }
.scene-red-fog-flow-front {
  --effect-animation: scene-red-fog-front 9.2s ease-in-out -6.9s infinite;
  inset: -17% -24%;
  background: radial-gradient(ellipse at 61% 49%, rgba(216,43,74,.80), rgba(156,21,51,.48) 56%, transparent 88%);
}
.scene-light { z-index: 1; border-radius: 50%; }
.scene-light-wine {
  --effect-animation: scene-wine-light 8s ease-in-out -2s infinite alternate;
  width: 34%; height: 74%; right: -5%; top: -18%;
  background: radial-gradient(ellipse at 69% 35%, rgba(167, 15, 50, .17), rgba(111, 13, 34, .065) 43%, transparent 73%);
  animation: var(--effect-animation);
}
.scene-light-gold {
  --effect-animation: scene-gold-light 9s ease-in-out -5s infinite alternate;
  width: 18%; height: 78%; left: 41%; top: -14%;
  background: radial-gradient(ellipse at 50% 45%, rgba(209, 141, 66, .16), rgba(154, 95, 38, .05) 45%, transparent 73%);
  animation: var(--effect-animation);
}
/* Reflected light remains near the photographed divider and red rack lighting.
   Broad gradients have no hard beam edges or independently drifting fixtures. */
.scene-beam {
  z-index: 1;
  width: 30%; height: 75%;
  transform-origin: 50% 50%;
  filter: blur(14px);
}
.scene-beam-wine {
  --effect-animation: scene-wine-beam 8s ease-in-out -3s infinite alternate;
  right: 0; top: -4%;
  background: radial-gradient(ellipse at 80% 16%, rgba(247, 79, 109, .085), rgba(198, 32, 71, .045) 38%, transparent 76%);
  animation: var(--effect-animation);
}
.scene-beam-gold {
  --effect-animation: scene-gold-beam 12s ease-in-out -6s infinite alternate;
  width: 19%; height: 70%; left: 42%; top: 2%;
  background: radial-gradient(ellipse at 50% 25%, rgba(235, 190, 118, .075), rgba(207, 147, 69, .04) 41%, transparent 76%);
  animation: var(--effect-animation);
}
/* Floor illumination stays inside the room camera; it breathes independently
   of the photographic pair's full-document floor recession. */
.scene-floor-light {
  z-index: 2;
  bottom: 16px;
  width: 28vw; height: clamp(70px, 13svh, 140px);
  transform: perspective(500px) rotateX(66deg);
  transform-origin: 50% 100%;
  opacity: calc(.74 - var(--scene-calm) * .16);
}
.scene-floor-light-gold { right: max(13%, calc((100vw - 1440px) / 2 + 140px)); }
.scene-floor-light-wine { right: max(1%, calc((100vw - 1440px) / 2)); }
.scene-floor-light::before {
  content: ''; position: absolute; inset: 0;
  --effect-animation: scene-floor-reflect 9s ease-in-out -3s infinite alternate;
  border-radius: 50%; filter: blur(12px);
  animation: var(--effect-animation);
}
.scene-floor-light-gold::before {
  --effect-animation: scene-gold-floor 6.4s ease-in-out -1.6s infinite;
  background: radial-gradient(ellipse, rgba(211, 156, 84, .23), rgba(157, 100, 47, .08) 46%, transparent 74%);
}
.scene-floor-light-wine::before {
  --effect-animation: scene-wine-floor 8.2s ease-in-out -2s infinite;
  background: radial-gradient(ellipse, rgba(169, 46, 70, .22), rgba(109, 24, 43, .065) 45%, transparent 74%);
}
.scene-haze {
  --effect-animation: scene-haze-light 11s ease-in-out -4s infinite alternate;
  inset: 19% -11% -4% 36%; z-index: 3;
  background: radial-gradient(ellipse at 77% 35%, rgba(185, 97, 84, .14), transparent 43%),
    radial-gradient(ellipse at 51% 80%, rgba(213, 181, 128, .125), transparent 37%);
  filter: blur(7px);
  animation: var(--effect-animation);
}
.scene-haze-front {
  --effect-animation: scene-haze-light 12s ease-in-out -7s infinite alternate;
  inset: 44% -8% -9% 32%; z-index: 7;
  background: radial-gradient(ellipse at 24% 86%, rgba(213, 174, 117, .095), transparent 47%),
    radial-gradient(ellipse at 92% 60%, rgba(169, 42, 63, .115), transparent 51%);
  filter: blur(9px);
  animation: var(--effect-animation);
}
/* Transparent curved filaments cross both haze planes. Texture owns its own
   drift within the diffuse light so it reads as moving air rather than fog. */
.scene-haze::after,
.scene-haze-front::after {
  content: ''; position: absolute; inset: -18% -22%; pointer-events: none;
  background-image: url('assets/haze-wisps-r16.webp');
  background-repeat: no-repeat; background-size: 100% 100%;
  filter: blur(1.5px); mix-blend-mode: screen;
  opacity: calc(.56 - var(--scene-calm) * .06);
  animation: var(--effect-animation);
}
.scene-haze::after {
  --effect-animation: scene-haze-filament-back 9s ease-in-out -2s infinite alternate;
  mask-image: radial-gradient(ellipse at 64% 59%, #000 41%, transparent 79%);
}
.scene-haze-front::after {
  --effect-animation: scene-haze-filament-front 10s ease-in-out -6s infinite alternate;
  mask-image: radial-gradient(ellipse at 56% 66%, #000 48%, transparent 82%);
}
.scene-dust {
  inset: 0; z-index: 5; opacity: .52;
  mask-image: linear-gradient(90deg, transparent 21%, rgba(0, 0, 0, .45) 43%, #000 70%);
  transform: translate3d(calc(var(--scene-pointer-x) * -10px), calc(var(--scene-pointer-y) * -6px), 0);
}
.scene-dust i {
  --effect-animation: scene-dust-float var(--dust-duration, 18s) linear var(--dust-delay, 0s) infinite;
  position: absolute; width: 2px; height: 2px; border-radius: 50%;
  background: #efd2a7; box-shadow: 0 0 5px rgba(236, 175, 98, .4);
  animation: var(--effect-animation);
  opacity: 0;
}
.scene-dust i:nth-child(1) { left: 57%; top: 32%; --dust-delay: -12s; }
.scene-dust i:nth-child(2) { left: 72%; top: 65%; --dust-delay: -4s; --dust-duration: 22s; }
.scene-dust i:nth-child(3) { left: 86%; top: 23%; --dust-delay: -9s; width: 1px; height: 1px; }
.scene-dust i:nth-child(4) { left: 64%; top: 77%; --dust-delay: -17s; --dust-duration: 24s; }
.scene-dust i:nth-child(5) { left: 91%; top: 49%; --dust-delay: -7s; --dust-duration: 20s; }
.scene-dust i:nth-child(6) { left: 48%; top: 54%; --dust-delay: -16s; width: 1px; height: 1px; }
.scene-dust i:nth-child(7) { left: 77%; top: 39%; --dust-delay: -21s; --dust-duration: 26s; }
.scene-dust i:nth-child(8) { left: 83%; top: 81%; --dust-delay: -10s; }
.scene-dust i:nth-child(9) { left: 62%; top: 16%; --dust-delay: -19s; --dust-duration: 23s; }
.scene-dust i:nth-child(10) { left: 96%; top: 73%; --dust-delay: -6s; width: 1px; height: 1px; }
.scene-dust i:nth-child(11) { left: 69%; top: 46%; --dust-delay: -18s; --dust-duration: 25s; }
.scene-dust i:nth-child(12) { left: 54%; top: 89%; --dust-delay: -9s; }
.scene-dust i:nth-child(13) { left: 88%; top: 58%; --dust-delay: -16s; --dust-duration: 22s; }
.scene-dust i:nth-child(14) { left: 75%; top: 13%; --dust-delay: -3s; width: 1px; height: 1px; }
.scene-dust i:nth-child(15) { left: 93%; top: 36%; --dust-delay: -23s; --dust-duration: 25s; }
.scene-dust i:nth-child(16) { left: 59%; top: 67%; --dust-delay: -14s; width: 1px; height: 1px; }
.scene-foreground {
  --near-width: min(27vw, calc(var(--scene-vh) * .4 * 1440 / 1210));
  --near-right: max(3vw, calc((100vw - 1440px) / 2));
  --near-bottom: max(24px, calc(var(--scene-vh) * .029));
  --near-floor-x: calc(100vw - var(--near-right) - var(--near-width) * .3520833333);
  --near-floor-y: calc(var(--scene-vh) - var(--near-bottom) - var(--near-width) * 1210 / 1440 * .04132231405);
  --near-vanish-x: 96vw;
  --near-vanish-y: calc(var(--scene-vh) * .74);
  position: absolute; pointer-events: none; z-index: 6;
  right: var(--near-right); bottom: var(--near-bottom); width: var(--near-width);
  /* C(s) = V + (C0 - V) * s. Both translation and photographic scale
     share the front foot origin, so the pair retreats on the floor. */
  transform: translate3d(calc((var(--near-vanish-x) - var(--near-floor-x)) * (1 - var(--depth-near-scale))), calc((var(--near-vanish-y) - var(--near-floor-y)) * (1 - var(--depth-near-scale))), 0) scale(var(--depth-near-scale));
  transform-origin: 64.79166667% 95.8677686%;
  opacity: 1;
}
/* Foot coordinates are measured from the photographic alpha bases. All six
   floor attachments share the pair transform; cast shadows extend lower-left
   from the upper-right room lamps without a floating image drop-shadow. */
.scene-contact-shadow,
.scene-cast-shadow,
.scene-ground-spill {
  position: absolute; pointer-events: none; z-index: 0;
  border-radius: 50%;
}
.scene-contact-shadow {
  width: 34%; height: 2%;
  background: radial-gradient(ellipse, rgba(0, 0, 0, .9), rgba(0, 0, 0, .56) 43%, transparent 78%);
  filter: blur(1.2px); transform: translate(-50%, -50%);
}
.scene-contact-shadow-rear,
.scene-cast-shadow-rear,
.scene-ground-spill-rear { left: 27.53472222%; top: 83.38842975%; }
.scene-contact-shadow-front,
.scene-cast-shadow-front,
.scene-ground-spill-front { left: 64.79166667%; top: 95.8677686%; }
.scene-contact-shadow-rear { width: 28%; }
.scene-contact-shadow::before {
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 180%; height: 320%; border-radius: 50%;
  background: radial-gradient(ellipse, rgba(0, 0, 0, .38), rgba(0, 0, 0, .18) 43%, transparent 79%);
  filter: blur(4px); transform: translate(-50%, -50%);
}
.scene-cast-shadow {
  width: 72%; height: 8%;
  background: radial-gradient(ellipse at 62% 50%, rgba(0, 0, 0, .58), rgba(0, 0, 0, .28) 46%, transparent 86%);
  filter: blur(6px);
  transform-origin: 100% 50%;
  transform: translate(-100%, -50%) rotate(-3deg);
}
.scene-cast-shadow-rear { width: 58%; height: 6.5%; }
.scene-ground-spill {
  width: 38%; height: 4%;
  background: radial-gradient(ellipse, rgba(153, 48, 64, .09), rgba(86, 27, 43, .0375) 48%, transparent 77%);
  filter: blur(5px); transform: translate(-50%, -50%);
}
.scene-ground-spill-rear {
  width: 32%;
  background: radial-gradient(ellipse, rgba(180, 143, 84, .13), rgba(130, 92, 48, .05) 47%, transparent 77%);
}
.scene-foreground img {
  position: relative; z-index: 1; display: block; width: 100%; height: auto; color: transparent;
}
.scene-equipment-light {
  --effect-animation: scene-equipment-reflect 6.4s ease-in-out -1.6s infinite;
  position: absolute; inset: 0; z-index: 2; pointer-events: none;
  mask-image: url('assets/kettlebells-r15-review.webp');
  mask-size: 100% 100%; mask-repeat: no-repeat; mask-mode: alpha;
  background: radial-gradient(ellipse at 29% 30%, rgba(204, 165, 98, .34), transparent 24%),
    radial-gradient(ellipse at 72% 36%, rgba(210, 173, 104, .18), transparent 16%);
  mix-blend-mode: screen;
  opacity: .2;
  animation: var(--effect-animation);
}
.scene-equipment-light-wine {
  --effect-animation: scene-equipment-wine-reflect 8.2s ease-in-out -2s infinite;
  background: radial-gradient(ellipse at 87% 59%, rgba(174,46,70,.30), transparent 23%);
}
/* Film is present in the first pose. Scroll moves the wisp wrapper gently;
   its nested diffuse glow owns autonomous breathing without replacing travel. */
.scene-atmosphere {
  top: -12%; bottom: -12%;
  width: 18vw;
  z-index: 7;
  opacity: calc(.66 - var(--scene-calm) * .12);
}
.scene-atmosphere-left { left: 0; }
.scene-atmosphere-right { right: 0; }
.scene-atmosphere-wisp {
  position: absolute;
  inset: -18% 0;
  pointer-events: none;
}
.scene-atmosphere-left .scene-atmosphere-wisp {
  transform: translate3d(calc(var(--scene-edge-progress) * -.35vw), calc(var(--scene-edge-progress) * var(--scene-vh) * -.02), 0);
}
.scene-atmosphere-right .scene-atmosphere-wisp {
  transform: translate3d(calc(var(--scene-edge-progress) * .35vw), calc(var(--scene-edge-progress) * var(--scene-vh) * .02), 0);
}
.scene-atmosphere-wisp::before {
  content: '';
  --effect-animation: scene-atmosphere-breathe 11s ease-in-out -3s infinite alternate;
  position: absolute;
  inset: 0;
  border-radius: 50%;
  filter: blur(20px);
  animation: var(--effect-animation);
}
.scene-atmosphere-left .scene-atmosphere-wisp::before {
  background: radial-gradient(ellipse at 9% 49%, rgba(211, 163, 95, .15), rgba(157, 107, 51, .06) 38%, transparent 76%);
}
.scene-atmosphere-right .scene-atmosphere-wisp::before {
  background: radial-gradient(ellipse at 91% 53%, rgba(170, 47, 75, .17), rgba(109, 22, 43, .06) 39%, transparent 76%);
  animation-delay: -8s;
}
/* Native 128px microdither is static and faint enough to preserve black detail. */
.scene-grain {
  inset: 0;
  z-index: 9;
  opacity: .035;
  background-image: url('assets/scene-grain-r11.svg');
  background-repeat: repeat;
  background-size: 128px 128px;
}
.scene-shade {
  inset: 0; z-index: 8;
  background: linear-gradient(180deg, rgba(5, 6, 8, .16), transparent 31%, rgba(5, 6, 8, .07));
}
.site-world[data-world-zone="home"] .scene-shade {
  background: linear-gradient(90deg, rgba(5, 6, 8, .3), rgba(5, 6, 8, .09) 44%, transparent 74%),
    linear-gradient(180deg, rgba(5, 6, 8, .14), transparent 37%, rgba(5, 6, 8, .08));
}
.cinematic-stage .hero {
  width: min(1440px, calc(100% - 112px));
  min-height: var(--scene-stage-height);
  padding-top: clamp(58px, 5.2vw, 90px); padding-bottom: 25px;
  display: flex; flex-direction: column; align-items: flex-start;
  position: relative; z-index: 10;
}
.cinematic-stage .hero-copy { max-width: min(57%, 720px); position: relative; }
.cinematic-stage .hero .eyebrow { font-size: 10px; letter-spacing: .26em; gap: 12px; }
.cinematic-stage .hero .eyebrow > span:first-child { display: none; }
.cinematic-stage .hero h1 {
  font-size: clamp(80px, 7.85vw, 122px); line-height: .91; letter-spacing: -.025em;
  margin-top: 27px; text-wrap: balance;
}
.cinematic-stage .hero h1 em { color: #e8c98f; }
.cinematic-stage .hero h1 .last-word { margin-left: 0; }
.cinematic-stage .hero-description { max-width: 510px; font-size: 16px; line-height: 1.7; margin-top: 30px; color: #d3ceca; }
.cinematic-stage .hero-actions { margin-top: 29px; gap: 24px; }
.cinematic-stage .hero .primary {
  padding: 19px 26px; font-size: 14px; gap: 34px; min-height: 59px;
  background: linear-gradient(115deg, #850629, #710422); border-color: #96203f;
  box-shadow: 0 8px 35px rgba(32, 1, 10, .20);
}
.cinematic-stage .hero .primary:hover { background: linear-gradient(115deg, #9d1339, #830828); }
.cinematic-stage .hero-actions .text-link { font-size: 11px; color: #c5b7a5; }
.cinematic-stage .microcopy { color: #b6aaa4; font-size: 11px; margin-top: 14px; }
.cinematic-stage .hero-proof {
  margin-top: auto; padding-top: 24px; padding-bottom: 0;
  max-width: 790px; width: 66%; gap: 30px;
  border-top-color: rgba(221, 176, 96, .64);
}
.cinematic-stage .hero-proof > div { gap: 12px; flex: 0 1 auto; }
.cinematic-stage .hero-proof > div + div { border-left: 1px solid rgba(210, 175, 112, .36); padding-left: 30px; }
.cinematic-stage .hero-proof strong { font-size: 31px; color: #e0be83; }
.cinematic-stage .hero-proof div span { font-size: 10px; color: #c3b6a9; max-width: 110px; }
.cinematic-stage .hero-scroll { display: none; }
.cinematic-stage .scene-meta {
  position: absolute; z-index: 12; right: 0; left: 0; bottom: 16px;
  width: min(1440px, calc(100% - 112px));
  display: flex; flex-direction: column; align-items: flex-end; gap: 8px;
  pointer-events: none;
}
.cinematic-stage .scene-control {
  position: static; order: 1; pointer-events: auto;
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 44px; max-width: 100%; padding: 9px 12px;
  border: 1px solid rgba(210, 175, 112, .25); border-radius: 0;
  background: rgba(8, 8, 10, .5); color: #c8b9a6; font-size: 10px;
  backdrop-filter: blur(6px);
}
.cinematic-stage .hero-motion {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px;
  margin-top: 13px; max-width: 100%;
}
.cinematic-stage .motion-status {
  max-width: 310px; color: #baaa9d; font-size: 10px; line-height: 1.55;
}
.cinematic-stage .motion-status[hidden] { display: none; }
.cinematic-stage .scene-control::before { content: ''; width: 4px; height: 4px; background: var(--gold); border-radius: 50%; }
.cinematic-stage .scene-control:hover { border-color: var(--gold); color: #f1ddbb; }
.cinematic-stage .scene-control[aria-pressed="true"]::before { background: #8d8580; }
.cinematic-stage .scene-control:disabled { cursor: default; color: #a69c94; }
.cinematic-stage .scene-caption {
  position: static; order: 2;
  color: #a89687; font-size: 8px; letter-spacing: .14em; pointer-events: none;
}

/* Reading surfaces are bounded shells. The gym stays exposed beside and between
   them; no solid section background replaces the photographic world. */
.cinematic-stage .hero-copy::before {
  content: ''; position: absolute; z-index: -1;
  inset: -22px -30px -20px;
  background: linear-gradient(110deg, rgba(8, 8, 11, .51), rgba(8, 8, 11, .18) 76%, transparent);
  pointer-events: none;
}
.cinematic-stage .hero-proof {
  background: linear-gradient(90deg, rgba(8, 8, 11, .66), rgba(8, 8, 11, .34) 82%, transparent);
  padding-bottom: 18px;
}
.reading-panel {
  padding-inline: clamp(26px, 3.3vw, 48px);
  border: 1px solid rgba(210, 175, 112, .23);
  background: linear-gradient(90deg, rgba(9, 8, 11, .62), rgba(9, 8, 11, .8) 24px, rgba(14, 9, 13, .8) calc(100% - 24px), rgba(14, 9, 13, .62));
  box-shadow: 0 20px 64px rgba(3, 3, 5, .15);
}
.section.reading-panel {
  padding-block: 66px;
  margin-top: 46px;
  margin-bottom: 46px;
}
.services.section, .final-cta.section {
  padding-block: 46px;
  background: transparent;
  border: 0;
  overflow: visible;
}
.services > .reading-panel, .final-cta > .reading-panel { padding-block: 66px; }
.services-heading { margin-bottom: 38px; }
.reading-panel .service-row { gap: 28px; }
.reading-panel .place-card { background: rgba(15, 10, 13, .4); }
.reading-panel .place-art {
  background: linear-gradient(140deg, rgba(58, 18, 34, .23), rgba(11, 10, 12, .37));
}
.reading-panel .public-place .place-art {
  background: linear-gradient(140deg, rgba(43, 26, 32, .22), rgba(11, 10, 12, .37));
}
.final-cta .cta-glow { display: none; }
.discipline-strip {
  background: rgba(13, 9, 13, .53);
  border-color: rgba(210, 175, 112, .26);
}
.scene-reveal-gap { height: clamp(72px, 14svh, 160px); pointer-events: none; }
footer.shell {
  background: linear-gradient(110deg, rgba(9, 8, 11, .68), rgba(14, 9, 13, .4));
  padding-inline: 28px;
  border-top: 1px solid rgba(210, 175, 112, .23);
  margin-top: 24px;
}
.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.mobile-book .scene-control-compact {
  display: grid; place-items: center;
  flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px;
  margin: 0; padding: 0;
  border: 1px solid rgba(210, 175, 112, .4);
  background: rgba(7, 8, 10, .75); color: #e1c797;
  font-size: 16px; line-height: 1;
}
.mobile-book .scene-control-compact > .scene-control-symbol { font-size: 16px; }
.mobile-book .scene-control-compact[aria-pressed="true"] { color: #c2b8ac; border-color: rgba(194, 184, 172, .36); }
.mobile-book .mobile-booking-cta { margin-left: auto; }

@keyframes scene-camera-breathe {
  from { transform: translate3d(-.3%, .3%, 0) scale(1.035); }
  to { transform: translate3d(.3%, -.3%, 0) scale(1.062); }
}
@keyframes scene-atmosphere-breathe {
  from { opacity: .64; transform: translate3d(-3%, -5%, 0) scale(.96); }
  to { opacity: .98; transform: translate3d(3%, 5%, 0) scale(1.04); }
}
@keyframes scene-wine-light {
  from { opacity: calc(.66 - var(--scene-calm) * .10); transform: translate3d(-1%, .5%, 0) scale(.985); }
  to { opacity: calc(.99 - var(--scene-calm) * .14); transform: translate3d(1%, -.5%, 0) scale(1.015); }
}
@keyframes scene-gold-light {
  from { opacity: calc(.67 - var(--scene-calm) * .10); transform: translate3d(-1%, -.5%, 0) scale(.985); }
  to { opacity: calc(1 - var(--scene-calm) * .14); transform: translate3d(1%, .5%, 0) scale(1.015); }
}
@keyframes scene-wine-beam {
  from { opacity: calc(.57 - var(--scene-calm) * .09); transform: scaleX(.985); }
  to { opacity: calc(.92 - var(--scene-calm) * .14); transform: scaleX(1.015); }
}
@keyframes scene-gold-beam {
  from { opacity: calc(.55 - var(--scene-calm) * .09); transform: scaleX(.985); }
  to { opacity: calc(.9 - var(--scene-calm) * .14); transform: scaleX(1.015); }
}
@keyframes scene-equipment-reflect {
  0%, 100% { opacity: calc(.20 - var(--scene-calm) * .04); }
  50% { opacity: calc(.56 - var(--scene-calm) * .08); }
}
@keyframes scene-equipment-wine-reflect {
  0%, 100% { opacity: calc(.16 - var(--scene-calm) * .03); }
  50% { opacity: calc(.44 - var(--scene-calm) * .07); }
}
@keyframes scene-gold-emission {
  0%, 100% { opacity: calc(.12 - var(--scene-calm) * .025); }
  50% { opacity: calc(.44 - var(--scene-calm) * .06); }
}
@keyframes scene-wine-emission {
  0%, 100% { opacity: calc(.10 - var(--scene-calm) * .02); }
  50% { opacity: calc(.34 - var(--scene-calm) * .05); }
}
@keyframes scene-gold-floor {
  0%, 100% { opacity: .58; transform: translate3d(-8%, 2%, 0) scale(.86, 1.08); }
  50% { opacity: 1; transform: translate3d(8%, -2%, 0) scale(1.14, .9); }
}
@keyframes scene-wine-floor {
  0%, 100% { opacity: .58; transform: translate3d(8%, 2%, 0) scale(.90, 1.08); }
  50% { opacity: .94; transform: translate3d(-8%, -2%, 0) scale(1.12, .9); }
}
@keyframes scene-red-fog-back {
  0%, 100% { opacity: calc(.48 - var(--scene-calm) * .04); transform: translate3d(-9%, 5%, 0) rotate(-2deg) scale(.96, 1.08); }
  50% { opacity: calc(.78 - var(--scene-calm) * .06); transform: translate3d(9%, -5%, 0) rotate(2deg) scale(1.08, .96); }
}
@keyframes scene-red-fog-front {
  0%, 100% { opacity: calc(.34 - var(--scene-calm) * .03); transform: translate3d(8%, -4%, 0) rotate(3deg) scale(1.10, .96); }
  50% { opacity: calc(.60 - var(--scene-calm) * .05); transform: translate3d(-8%, 5%, 0) rotate(-1deg) scale(.98, 1.09); }
}
@keyframes scene-floor-reflect {
  from { opacity: .58; transform: translate3d(-8%, 2%, 0) scale(.86, 1.08); }
  to { opacity: 1; transform: translate3d(8%, -2%, 0) scale(1.14, .9); }
}
@keyframes scene-haze-light {
  from { opacity: calc(.66 - var(--scene-calm) * .1); transform: translate3d(-9%, 6%, 0); }
  to { opacity: calc(.98 - var(--scene-calm) * .12); transform: translate3d(11%, -6%, 0); }
}
@keyframes scene-haze-filament-back {
  from { opacity: calc(.48 - var(--scene-calm) * .06); transform: translate3d(-8%, 4%, 0) rotate(-4deg) scale(1.06, 1.02); }
  to { opacity: calc(.85 - var(--scene-calm) * .10); transform: translate3d(10%, -5%, 0) rotate(1deg) scale(1.12, .96); }
}
@keyframes scene-haze-filament-front {
  from { opacity: calc(.52 - var(--scene-calm) * .06); transform: translate3d(9%, -3%, 0) rotate(8deg) scale(1.15, .98); }
  to { opacity: calc(.88 - var(--scene-calm) * .10); transform: translate3d(-9%, 5%, 0) rotate(3deg) scale(1.06, 1.08); }
}
@keyframes scene-dust-float {
  0% { opacity: 0; transform: translate3d(0, 10px, 0); }
  24% { opacity: .58; }
  72% { opacity: .3; }
  100% { opacity: 0; transform: translate3d(14px, calc(var(--scene-dust-rise) * -1), 0); }
}
/* A wide centered cover crop exposes less floor in a short desktop window.
   Fit the full photographic silhouette below the retained source barbell's
   lower landmark (y602.24 in941px) rather than merely fitting the canvas. */
@media (min-width: 820px) and (min-aspect-ratio: 1001/1000) {
  .scene-foreground {
    --near-room-floor: calc(var(--scene-vh) * .5 + max(calc(100vw * 131.74 / 1672), calc(var(--scene-vh) * 131.74 / 941)));
    --near-floor-fit: max(1px, calc((var(--scene-vh) - var(--near-bottom) - var(--near-room-floor) - 14px) / .7215277778));
    --near-width: min(27vw, calc(var(--scene-vh) * .4 * 1440 / 1210), var(--near-floor-fit));
    --near-vanish-y: max(calc(var(--scene-vh) * .74), calc(var(--near-room-floor) + 14px));
  }
}

@media (max-width: 1100px) and (min-width: 820px) {
  .site-header, .cinematic-stage .hero { width: calc(100% - 72px); }
  .site-header .brand-type { font-size: 15px; }
  .site-header .desktop-nav { gap: 20px; }
  .site-header .header-actions { gap: 15px; }
  .cinematic-stage .hero-copy { max-width: 62%; }
  .cinematic-stage .hero h1 { font-size: clamp(77px, 8.1vw, 90px); }
  .cinematic-stage .hero-description { max-width: 420px; font-size: 15px; }
  .cinematic-stage .hero-actions { gap: 14px; }
  .cinematic-stage .hero-actions .text-link { display: none; }
  .cinematic-stage .hero-proof { width: 73%; gap: 19px; }
  .cinematic-stage .hero-proof > div + div { padding-left: 19px; }
  .cinematic-stage .hero-proof strong { font-size: 28px; }
  .cinematic-stage .hero-proof div span { max-width: 92px; }
  .cinematic-stage .scene-meta { width: calc(100% - 48px); bottom: 10px; }
  .cinematic-stage .scene-caption { font-size: 7px; }
}

@media (max-width: 819px) {
  .site-header { height: 82px; width: calc(100% - 44px); }
  .site-header .brand-type { font-size: 14px; letter-spacing: .27em; }
  .site-header .brand-type small { font-size: 7px; }
  .site-header .desktop-nav, .site-header .header-book { display: none; }
  .site-header .menu-toggle { display: grid; width: 38px; height: 38px; gap: 6px; }
  .site-header .menu-toggle span { display: block; width: 18px; height: 1px; background: var(--gold); }
  .cinematic-stage { --scene-stage-height: 0px; }
  .cinematic-stage .hero { width: calc(100% - 44px); min-height: 0; display: block; padding-top: 34px; padding-bottom: 24px; }
  .cinematic-stage .hero-copy { max-width: 620px; }
  .cinematic-stage .hero .eyebrow { font-size: 9px; letter-spacing: .22em; }
  .cinematic-stage .hero h1 { font-size: clamp(52px, 15.3vw, 80px); line-height: .94; margin-top: 22px; }
  .cinematic-stage .hero h1 .last-word { margin-left: 0; }
  .cinematic-stage .hero-description { max-width: 480px; font-size: 15px; line-height: 1.65; margin-top: 23px; }
  .cinematic-stage .hero-actions { margin-top: 24px; display: block; }
  .cinematic-stage .hero .primary { min-height: 55px; padding: 16px 21px; font-size: 13px; gap: 28px; }
  .cinematic-stage .hero-actions .text-link { display: none; }
  .cinematic-stage .microcopy { font-size: 10px; max-width: 320px; line-height: 1.8; margin-top: 13px; }
  .cinematic-stage .hero-proof { margin-top: clamp(180px, 58vw, 320px); width: 100%; max-width: none; gap: 0; justify-content: space-between; padding-top: 22px; }
  .cinematic-stage .hero-proof > div { flex: 1; flex-direction: column; align-items: flex-start; gap: 7px; }
  .cinematic-stage .hero-proof > div + div { padding-left: 15px; margin-left: 12px; }
  .cinematic-stage .hero-proof strong { font-size: 28px; }
  .cinematic-stage .hero-proof div span { font-size: 10px; max-width: 115px; line-height: 1.45; }
  .site-world.scene { --scene-dust-rise: 34px; }
  .scene-camera-travel {
    transform: translate3d(calc(var(--scene-scroll) * .3vw), calc(var(--scene-scroll) * var(--scene-vh) * -.01), 0);
  }
  .scene-haze { inset: 30% -13% -1% 11%; filter: blur(6px); }
  .scene-haze-front { inset: 50% -18% -8% 0; filter: blur(7px); }
  .scene-dust { opacity: .47; mask-image: linear-gradient(180deg, transparent 18%, #000 51%); }
  .scene-dust i:nth-child(n + 9) { display: none; }
  .scene-foreground {
    --near-width: 52vw; --near-right: 4vw;
    --near-vanish-x: 94vw;
    --near-bottom: calc(84px + env(safe-area-inset-bottom));
    --near-vanish-y: calc(var(--scene-vh) * .6);
  }
  .scene-floor-light { width: 44vw; bottom: calc(84px + env(safe-area-inset-bottom)); height: clamp(70px, 11svh, 110px); }
  .scene-floor-light-gold { right: 24%; }
  .scene-floor-light-wine { right: 2%; }
  .scene-atmosphere { width: 20vw; }
  .scene-shade, .site-world[data-world-zone="home"] .scene-shade {
    background: linear-gradient(180deg, rgba(5, 6, 8, .14), transparent 39%, rgba(5, 6, 8, .04));
  }
  .cinematic-stage .hero-copy::before { inset: -19px -14px -17px; background: linear-gradient(110deg, rgba(7, 7, 10, .61), rgba(7, 7, 10, .28) 77%, rgba(7, 7, 10, .08)); }
  .reading-panel { padding-inline: 22px; background: linear-gradient(90deg, rgba(8, 8, 11, .62), rgba(8, 8, 11, .8) 20px, rgba(13, 9, 13, .8) calc(100% - 20px), rgba(13, 9, 13, .62)); }
  .section.reading-panel { padding-block: 42px; margin-block: 32px; }
  .services.section, .final-cta.section { padding-block: 32px; }
  .services > .reading-panel, .final-cta > .reading-panel { padding-block: 42px; }
  .reading-panel .service-row { gap: 15px; }
  .services-heading { margin-bottom: 30px; }
  footer.shell { padding-inline: 22px; }
  .mobile-book { gap: 10px; background: rgba(16, 10, 14, .83); }
  .mobile-book > span { display: none; }
  .mobile-book .mobile-booking-cta { flex: 1 1 auto; justify-content: center; min-height: 44px; }
  .cinematic-stage .scene-meta { width: calc(100% - 44px); bottom: 105px; gap: 6px; }
  .cinematic-stage .scene-control { min-height: 44px; padding: 9px 11px; font-size: 10px; }
  .cinematic-stage .hero-motion { gap: 7px 10px; }
  .cinematic-stage .motion-status { max-width: 260px; }
  .cinematic-stage .scene-caption { font-size: 6px; }
}

/* Short landscape phones fit by height as well as width. The pair and its
   reflections share the small-viewport floor while the room remains 100lvh. */
@media (max-width: 819px) and (min-aspect-ratio: 4/3) {
  .site-world.scene {
    --scene-landscape-fit: max(1px, calc((100svh - 110px - env(safe-area-inset-bottom)) * 1440 / 1210));
    /* Wide1672x941 floor landmark y590 after a bottom-aligned cover crop.
       The rear contact (2018/2420) must remain beneath that floor line. */
    --scene-landscape-floor: calc(100svh - max(calc(100vw * 351 / 1672), calc(100svh * 351 / 941)));
    --scene-floor-fit: max(1px, calc((100svh - 84px - env(safe-area-inset-bottom) - var(--scene-landscape-floor) - 12px) * 1440 / 1210 / .1661157025));
    --scene-landscape-photo-width: calc(max(100vw, calc(100svh * 1672 / 941)) + (100lvh - 100svh) * 1672 / 351);
  }
  .scene-foreground {
    --near-width: min(52vw, var(--scene-landscape-fit), var(--scene-floor-fit));
    --near-bottom: calc(84px + env(safe-area-inset-bottom) + 100lvh - 100svh);
    /* On a short phone the depth target stays beneath the floor horizon
       and never rises beyond the initial contact plane. */
    --near-vanish-y: max(min(calc(var(--scene-vh) * .6), calc(100svh * .5), var(--near-floor-y)), calc(var(--scene-landscape-floor) + 12px));
  }
  .scene-floor-light {
    bottom: calc(84px + env(safe-area-inset-bottom) + 100lvh - 100svh);
  }
  .scene-floor-light { width: min(44vw, calc(min(var(--scene-landscape-fit), var(--scene-floor-fit)) * 44 / 52)); }
  .scene-floor-light-gold { right: calc(4% + min(20vw, calc(min(var(--scene-landscape-fit), var(--scene-floor-fit)) * 20 / 52))); }
  .scene-floor-light-wine { right: calc(4% - min(2vw, calc(min(var(--scene-landscape-fit), var(--scene-floor-fit)) * 2 / 52))); }
}

/* These positions follow the same portrait/square source choice as the room.
   Gold belongs to the left divider; wine blooms around the upper-right lamp. */
@media (max-width: 819px), (max-aspect-ratio: 1/1) {
  .scene-emission-gold img { mask-image: url('assets/emission-gold-phone-r17.svg'); }
  .scene-emission-wine img { mask-image: url('assets/emission-wine-phone-r17.svg'); }
  .scene-red-fog { left: 52%; top: -5%; width: 67%; height: 70%; }
  .scene-light-wine { top: 15%; right: -8%; width: 38%; height: 48%; }
  .scene-light-gold { top: 31%; left: 9%; width: 26%; height: 45%; }
  .scene-beam-wine { right: -3%; top: 23%; width: 31%; height: 39%; }
  .scene-beam-gold { left: 13%; top: 40%; width: 17%; height: 30%; }
}

/* Short landscape has a separate wide-plate crop. Keep the floor in the
   small visible viewport even while the shared camera retains stable lvh. */
@media (max-width: 819px) and (min-aspect-ratio: 4/3) {
  .scene-background picture, .scene-background img, .scene-emission picture, .scene-emission img { height: 100lvh; }
  .scene-background picture, .scene-emission picture { top: 0; bottom: auto; }
  /* One uniformly cropped photo fills lvh. Extra horizontal crop keeps the
     same floor landmark visible when browser chrome expands or collapses. */
  .scene-background img, .scene-emission img {
    position: absolute; left: calc((100vw - var(--scene-landscape-photo-width)) / 2);
    width: var(--scene-landscape-photo-width); object-position: 50% 100%;
  }
  .scene-emission img { mask-position: 50% 100%; }
  .scene-emission-gold img { mask-image: url('assets/emission-gold-wide-r17.svg'); }
  .scene-emission-wine img { mask-image: url('assets/emission-wine-wide-r17.svg'); }
  .scene-red-fog { left: 62%; top: -12%; width: 53%; height: 75%; }
  .scene-light-wine { top: -18%; right: -5%; width: 34%; height: 74%; }
  .scene-light-gold { top: -14%; left: 41%; width: 18%; height: 78%; }
  .scene-beam-wine { right: 0; top: -4%; width: 30%; height: 75%; }
  .scene-beam-gold { left: 42%; top: 2%; width: 19%; height: 70%; }
}

@media (max-width: 440px) {
  .site-header .brand-type { font-size: 12px; }
  .site-header .brand-type small { font-size: 6px; letter-spacing: .26em; }
  .cinematic-stage .hero .eyebrow { font-size: 8px; letter-spacing: .15em; }
  html[lang="pl"] .cinematic-stage .hero h1 { font-size: clamp(49px, 14.1vw, 62px); }
  .cinematic-stage .hero-proof > div + div { margin-left: 8px; padding-left: 11px; }
  .cinematic-stage .hero-proof div span { font-size: 9px; }
}

@media (max-width: 350px) {
  .site-header .brand-type { font-size: 11px; letter-spacing: .2em; }
  .cinematic-stage .hero { width: calc(100% - 36px); }
  .cinematic-stage .hero h1 { font-size: 50px; }
  html[lang="pl"] .cinematic-stage .hero h1 { font-size: 46px; }
  .cinematic-stage .hero .primary { padding-inline: 14px; font-size: 12px; gap: 17px; }
  .cinematic-stage .hero-proof strong { font-size: 26px; }
}


@media (prefers-reduced-motion: reduce) {
  .site-world *, .site-world *::before, .site-world *::after { animation: none !important; transition: none !important; }
  .scene-light, .scene-beam, .scene-haze, .scene-haze-front, .scene-dust { transform: none; }
  .scene-camera-travel, .scene-camera, .scene-background, .scene-background picture, .scene-background img,
  .scene-foreground, .scene-foreground img, .scene-atmosphere, .scene-atmosphere-wisp,
  .scene-atmosphere-wisp::before, .scene-grain { transform: none !important; }
  .scene-floor-light::before, .scene-haze::after, .scene-haze-front::after, .scene-red-fog-flow { transform: none !important; }
  .scene-foreground { opacity: 1 !important; }
  .scene-dust { display: none; }

  /* A deliberate opt-in enables only these decorative layers. Reading content,
     scroll parallax, reveals and the marquee remain still. */
  html.motion-opt-in .site-world :is(.scene-light, .scene-beam, .scene-haze, .scene-haze-front, .scene-dust i, .scene-emission, .scene-red-fog-flow) {
    animation: var(--effect-animation) !important;
  }
  html.motion-opt-in .site-world .scene-dust { display: block; }
}
html:is(.motion-paused, .page-hidden) *,
html:is(.motion-paused, .page-hidden) *::before,
html:is(.motion-paused, .page-hidden) *::after,
html .site-world[data-scene-state="paused"] *,
html .site-world[data-scene-state="paused"] *::before,
html .site-world[data-scene-state="paused"] *::after {
  animation-play-state: paused !important;
  transition: none !important;
}
