/* Atmospheric architecture behind the original brand typography. */
.home-refined .hero-ambient {
  --architecture-cycle:36s;
  --architecture-step:6s;
  isolation: isolate;
  min-height: min(940px, 100svh);
  padding: calc(var(--header-h) + 54px) 0 30px;
  background: #090d10;
}
.architecture-background,.hero-atmosphere { position:absolute; inset:0; pointer-events:none; }
.architecture-background { z-index:-3; overflow:hidden; }
.architecture-slide {
  position:absolute; inset:0; opacity:0;
  perspective:1350px; perspective-origin:50% 50%;
  --image-opacity:.56;
  --image-tone:saturate(.78) brightness(1.08);
  --image-blur:4px;
  --image-blur-far:8px;
  --orbit-animation:architecture-orbit;
  --turn-direction:1;
}
.architecture-slide:first-child { opacity:1; }
.architecture-orbit { position:absolute;inset:6% 8%;transform-origin:50% 50%; }
.architecture-slide img {
  position:absolute; width:100%; height:100%; max-width:none; left:0; top:0;
  object-fit:contain; object-position:center; opacity:var(--image-opacity);
  filter:var(--image-tone) blur(var(--image-blur));
}
.architecture-slide--museum { --image-opacity:.62; }
.architecture-slide--tower { --image-opacity:.64; }
.architecture-slide--heritage {
  --image-opacity:.46;
  --image-tone:invert(1) sepia(.28) saturate(.55) brightness(.95);
}
.architecture-slide--heritage img {
  mix-blend-mode:screen;
}
.hero-atmosphere {
  z-index:-2;
  background:linear-gradient(90deg,rgba(8,11,14,.42) 0%,rgba(8,11,14,.12) 44%,rgba(8,11,14,.08) 100%),linear-gradient(180deg,rgba(8,11,14,.1),transparent 35%,rgba(8,11,14,.1) 78%,#0b0d10 100%);
}
.home-refined .hero-ambient .hero-grid { z-index:-1; opacity:.28; mask-image:linear-gradient(90deg,#000,transparent 96%); }
.home-refined .hero-ambient .hero-inner { z-index:1; }
.home-refined .hero-ambient .gold-title { margin:0 0 45px; }
.hero-ambient .hero-copy { max-width:970px; }
.home-refined .hero-ambient h1 {
  font-size:clamp(38px,5.35vw,72px);line-height:1.42;letter-spacing:.025em;
  margin:22px 0 30px;text-shadow:0 2px 18px rgba(0,0,0,.85);
}
.home-refined .hero-ambient h1 .en-line { font-size:clamp(21px,2vw,27px);max-width:32em; }
.home-refined .hero-ambient .hero-lead { max-width:40em; }
.home-refined .hero-ambient .hero-lead[lang="en"] { margin-bottom:30px; }
.hero-ambient-note { display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-top:46px;color:#939b9c;font-size:.75rem; }
.hero-ambient-note [lang="en"] { font-family:var(--en);font-size:.875rem;font-style:italic; }
.motion-toggle {
  background:transparent;border:0;border-bottom:1px solid rgba(201,180,138,.3);border-radius:0;
  color:#b5b5ac;font:inherit;font-size:.875rem;line-height:1.6;letter-spacing:.05em;padding:9px 0;cursor:pointer;
}
.motion-toggle:hover { color:var(--white);border-bottom-color:var(--brass); }
.motion-toggle[hidden] { display:none; }
.home-refined .hero-ambient .hero-meta { margin-top:16px; }
/* Brief dissolves keep a softly focused building visible throughout each turn. */
.ambient-ready .architecture-slide {
  animation:architecture-dissolve var(--architecture-cycle) linear infinite both;
  animation-delay:calc(var(--stage-index) * var(--architecture-step) - 1.2s);
}
.ambient-ready .architecture-orbit {
  animation:var(--orbit-animation) var(--architecture-cycle) linear infinite both;
  animation-delay:calc(var(--stage-index) * var(--architecture-step) - 1.2s);
}
.ambient-ready .architecture-slide img {
  animation:architecture-focus var(--architecture-cycle) linear infinite both;
  animation-delay:calc(var(--stage-index) * var(--architecture-step) - 1.2s);
}
@keyframes architecture-dissolve {
  0% {opacity:0}
  2.5%,16.6667% {opacity:1}
  20%,100% {opacity:0}
}
@keyframes architecture-orbit {
  0% {
    transform:translate3d(-3%,2%,-260px) rotateY(-55deg) rotateX(6deg) rotateZ(-2deg) scale(.84);
  }
  2.5% {
    transform:translate3d(-1.5%,1%,-120px) rotateY(-38deg) rotateX(4deg) rotateZ(-1deg) scale(.94);
  }
  8.3333% {
    transform:translate3d(0,0,20px) rotateY(-5deg) rotateX(1deg) rotateZ(0deg) scale(1);
  }
  16.6667% {
    transform:translate3d(1.5%,-1%,-80px) rotateY(34deg) rotateX(-3deg) rotateZ(1deg) scale(.97);
  }
  20%,100% {
    transform:translate3d(3%,-2%,-280px) rotateY(58deg) rotateX(-6deg) rotateZ(2deg) scale(.84);
  }
}
@keyframes architecture-focus {
  0% {filter:var(--image-tone) blur(var(--image-blur-far))}
  2.5%,16.6667% {filter:var(--image-tone) blur(calc(var(--image-blur) + 1px))}
  8.3333% {filter:var(--image-tone) blur(var(--image-blur))}
  20%,100% {filter:var(--image-tone) blur(var(--image-blur-far))}
}
/* Mobile paths bank and travel around the centre; paired directions vary all six views. */
@keyframes architecture-arc {
  0% {transform:translate3d(calc(var(--turn-direction) * -5%),4%,-220px) rotateY(calc(var(--turn-direction) * -64deg)) rotateX(12deg) rotateZ(calc(var(--turn-direction) * -14deg)) scale(.82)}
  2.5% {transform:translate3d(calc(var(--turn-direction) * -4%),-3%,-90px) rotateY(calc(var(--turn-direction) * -44deg)) rotateX(8deg) rotateZ(calc(var(--turn-direction) * -8deg)) scale(.94)}
  8.3333% {transform:translate3d(0,-3%,0) rotateY(calc(var(--turn-direction) * -6deg)) rotateX(2deg) rotateZ(calc(var(--turn-direction) * 3deg)) scale(.98)}
  16.6667% {transform:translate3d(calc(var(--turn-direction) * 4%),2%,-90px) rotateY(calc(var(--turn-direction) * 40deg)) rotateX(-10deg) rotateZ(calc(var(--turn-direction) * 12deg)) scale(.94)}
  20%,100% {transform:translate3d(calc(var(--turn-direction) * 6%),4%,-240px) rotateY(calc(var(--turn-direction) * 66deg)) rotateX(-16deg) rotateZ(calc(var(--turn-direction) * 18deg)) scale(.82)}
}
@keyframes architecture-spiral {
  0% {transform:translate3d(calc(var(--turn-direction) * 6%),-6%,-220px) rotateY(calc(var(--turn-direction) * 64deg)) rotateX(-16deg) rotateZ(calc(var(--turn-direction) * 14deg)) scale(.82)}
  2.5% {transform:translate3d(calc(var(--turn-direction) * 4%),-4%,-90px) rotateY(calc(var(--turn-direction) * 44deg)) rotateX(-8deg) rotateZ(calc(var(--turn-direction) * 8deg)) scale(.94)}
  8.3333% {transform:translate3d(calc(var(--turn-direction) * -2%),1%,0) rotateY(calc(var(--turn-direction) * -4deg)) rotateX(6deg) rotateZ(calc(var(--turn-direction) * -3deg)) scale(.98)}
  16.6667% {transform:translate3d(calc(var(--turn-direction) * -3%),5%,-100px) rotateY(calc(var(--turn-direction) * -40deg)) rotateX(14deg) rotateZ(calc(var(--turn-direction) * -12deg)) scale(.94)}
  20%,100% {transform:translate3d(calc(var(--turn-direction) * -5%),6%,-240px) rotateY(calc(var(--turn-direction) * -66deg)) rotateX(20deg) rotateZ(calc(var(--turn-direction) * -18deg)) scale(.82)}
}
@keyframes architecture-bank {
  0% {transform:translate3d(calc(var(--turn-direction) * 4%),3%,-240px) rotateY(calc(var(--turn-direction) * -62deg)) rotateX(-16deg) rotateZ(calc(var(--turn-direction) * -18deg)) scale(.82)}
  2.5% {transform:translate3d(calc(var(--turn-direction) * -3%),4%,-100px) rotateY(calc(var(--turn-direction) * -40deg)) rotateX(-8deg) rotateZ(calc(var(--turn-direction) * -11deg)) scale(.94)}
  8.3333% {transform:translate3d(calc(var(--turn-direction) * -3%),-2%,-20px) rotateY(calc(var(--turn-direction) * -6deg)) rotateX(7deg) rotateZ(calc(var(--turn-direction) * 1deg)) scale(.98)}
  16.6667% {transform:translate3d(calc(var(--turn-direction) * 3%),-4%,-90px) rotateY(calc(var(--turn-direction) * 40deg)) rotateX(13deg) rotateZ(calc(var(--turn-direction) * 13deg)) scale(.94)}
  20%,100% {transform:translate3d(calc(var(--turn-direction) * 5%),2%,-240px) rotateY(calc(var(--turn-direction) * 66deg)) rotateX(18deg) rotateZ(calc(var(--turn-direction) * 20deg)) scale(.82)}
}
:is(.ambient-paused,.ambient-offscreen,.ambient-document-hidden) .architecture-slide,
:is(.ambient-paused,.ambient-offscreen,.ambient-document-hidden) .architecture-orbit,
:is(.ambient-paused,.ambient-offscreen,.ambient-document-hidden) .architecture-slide img {animation-play-state:paused}
/* Content remains visible without JavaScript, or with reduced motion. */
.reveal-pending { opacity:0; transform:translate3d(0,28px,0); filter:blur(5px); }
.reveal-target { transition:opacity 1.05s ease,transform 1.15s cubic-bezier(.2,.7,.2,1),filter 1.1s ease; transition-delay:var(--reveal-delay,0ms); }
.reveal-target.is-revealed { opacity:1; transform:none;filter:none; }
@media(max-width:900px) {
  .home-refined .hero-ambient { --architecture-cycle:30s;--architecture-step:5s;padding-top:calc(var(--header-h) + 38px);min-height:auto; }
  .home-refined .hero-ambient h1 { font-size:clamp(34px,5.65vw,52px); }
  .architecture-background {inset:calc(var(--header-h) + 112px) 0 auto;height:clamp(310px,88vw,430px)}
  .architecture-slide {perspective:1050px;--image-opacity:.66;--image-tone:saturate(.65) brightness(1.04);--image-blur:3.5px;--orbit-animation:architecture-arc}
  .architecture-orbit {inset:16% 8%}
  .architecture-slide--tower {--orbit-animation:architecture-spiral;--turn-direction:-1}
  .architecture-slide--opera {--orbit-animation:architecture-bank;--turn-direction:-1}
  .architecture-slide--heritage {--image-opacity:.52;--image-tone:invert(1) sepia(.28) saturate(.55) brightness(.95);--orbit-animation:architecture-spiral}
  .architecture-slide--gallery {--orbit-animation:architecture-bank}
  .architecture-slide--residence {--turn-direction:-1}
  .hero-atmosphere {background:linear-gradient(90deg,rgba(8,11,14,.15),rgba(8,11,14,.04)),linear-gradient(180deg,rgba(8,11,14,.1),transparent 28%,rgba(8,11,14,.12) 48%,#0b0d10 75%)}
}
@media(max-width:560px) {
  .home-refined .hero-ambient {padding-top:calc(var(--header-h) + 24px)}
  .home-refined .hero-ambient .gold-title {margin-bottom:30px}
  .home-refined .hero-ambient h1 {font-size:clamp(24px,6.7vw,38px);line-height:1.5}
  .home-refined .hero-ambient h1 .en-line {font-size:1.25rem}
  .hero-ambient-note {margin-top:30px;gap:8px}
  .architecture-background {top:calc(var(--header-h) + 110px);height:clamp(280px,94vw,390px)}
  .architecture-orbit {inset:7% 8%}
}
@media(max-width:900px) and (orientation:landscape) {
  .architecture-background {top:calc(var(--header-h) + 32px);height:min(350px,calc(100svh - var(--header-h) - 48px))}
  .architecture-orbit {inset:20% 8%}
}
@media(prefers-reduced-motion:reduce) {
  .ambient-ready .architecture-slide,.ambient-ready .architecture-orbit,.ambient-ready .architecture-slide img {animation:none!important}
  .ambient-ready .architecture-slide {opacity:0!important}
  .ambient-ready .architecture-slide:first-child {opacity:1!important}
  .architecture-orbit,.architecture-slide img {transform:none!important}
  .motion-toggle {display:none!important}
  .reveal-target,.reveal-pending {opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
}
@media (prefers-reduced-motion:no-preference) {
  .ambient-ready .hero-copy > * {animation:hero-copy-arrive 1.5s cubic-bezier(.2,.7,.2,1) both}
  .ambient-ready .hero-copy > :nth-child(2) {animation-delay:.08s}
  .ambient-ready .hero-copy > :nth-child(3) {animation-delay:.2s}
  .ambient-ready .hero-copy > :nth-child(4) {animation-delay:.27s}
  .ambient-ready .hero-copy > :nth-child(5) {animation-delay:.34s}
}
@keyframes hero-copy-arrive {from{opacity:0;transform:translate3d(0,14px,0);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@media print {.architecture-background,.motion-toggle{display:none!important}.reveal-pending{opacity:1!important;transform:none!important;filter:none!important}}

/* CODEX / 2026-09-18: editorial rhythm, headings emerging one line at a time. */
.reveal-target {
  transition: opacity .8s ease, transform 1s cubic-bezier(.16,1,.3,1), filter .8s ease;
  transition-delay: var(--reveal-delay,0ms);
}
.reveal-pending { opacity:0; transform:translate3d(0,24px,0); filter:blur(3px); }
.reveal-panel.reveal-pending { transform:translate3d(0,32px,0); filter:none; }
.reveal-target.is-revealed { opacity:1; transform:none; filter:none; }
.motion-heading .motion-line { display:block; overflow:clip; padding-block:.09em; margin-block:-.09em; }
.motion-heading .motion-line-inner { display:block; }
main :is(h1,h2,h3)[id] { scroll-margin-top:calc(var(--header-h,76px) + 24px); }
.motion-heading.reveal-target { opacity:1; transform:none; filter:none; transition:none; }
.motion-heading .motion-line-inner {
  transition:transform 1.05s cubic-bezier(.16,1,.3,1),opacity .8s ease,filter .9s ease;
  transition-delay:calc(var(--reveal-delay,0ms) + var(--line-delay,0ms));
}
.motion-heading.reveal-pending .motion-line-inner { transform:translate3d(0,105%,0); opacity:0; filter:blur(2px); }
.motion-heading.is-revealed .motion-line-inner { transform:none; opacity:1; filter:none; }
.reveal-instant, .reveal-instant .motion-line-inner { transition:none!important; }
.motion-initializing .reveal-target, .motion-initializing .motion-line-inner { transition:none!important; }
.kicker.reveal-target::before { transform-origin:left; transition:transform .85s cubic-bezier(.16,1,.3,1); }
.kicker.reveal-pending::before { transform:scaleX(0); }
.reading-progress { position:absolute; inset:auto 0 -1px; height:2px; overflow:hidden; pointer-events:none; }
.reading-progress > span { display:block; width:100%; height:100%; background:var(--brass,#c9b48a); transform:scaleX(0); transform-origin:left; }
.bim-flow-art { display:block; width:min(100%,300px); height:auto; margin:0 auto 26px; color:#a9b0ac; stroke-width:1.25; stroke-linecap:round; stroke-linejoin:round; }
.bim-flow-art .flow-draw { stroke-dasharray:1; stroke-dashoffset:0; }
.reveal-pending .bim-flow-art .flow-draw { stroke-dashoffset:1; }
.is-revealed .bim-flow-art .flow-draw {
  transition:stroke-dashoffset 1.5s cubic-bezier(.25,.65,.3,1);
  transition-delay:calc(var(--reveal-delay,0ms) + .2s);
}
/* Service page: a model-led opening and an actual model image break up the reading. */
.service-hero-layout { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:56px; align-items:center; }
.service-page .service-hero-layout h1 { font-size:clamp(34px,3.5vw,54px); line-height:1.5; }
.service-page .service-hero-layout .service-hero-lead { font-size:16px; }
.service-page .service-hero-layout .service-hero-links { gap:24px; flex-wrap:wrap; }
.service-model-demo { margin:0; padding:26px 28px 30px; border:1px solid rgba(201,180,138,.24); background:radial-gradient(ellipse at 50% 43%,rgba(201,180,138,.075),transparent 68%); }
.model-demo-top { display:flex; justify-content:space-between; gap:12px; color:var(--brass); font-size:10px; letter-spacing:.13em; }
.model-demo-top > span:first-child { color:var(--white); }
.model-panels { margin:28px -12px 0; background-image:linear-gradient(rgba(201,180,138,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(201,180,138,.035) 1px,transparent 1px); background-size:24px 24px; }
.model-panel[hidden], .model-controls[hidden] { display:none; }
.service-model-demo .bim-flow-art { width:100%; max-width:none; margin:0; stroke-width:1.1; }
.service-model-demo .model-panel > p { font-family:var(--serif); text-align:center; font-size:20px; color:var(--brass); margin:12px 0 28px; line-height:1.8; }
.model-controls { display:grid; grid-template-columns:repeat(3,1fr); border-block:1px solid var(--line); }
.model-controls button { appearance:none; font:inherit; font-size:13px; color:var(--muted,#aaa); background:transparent; border:0; border-bottom:2px solid transparent; cursor:pointer; padding:15px 4px; }
.model-controls button span { font-size:10px; letter-spacing:.05em; display:block; margin-bottom:5px; color:var(--brass); }
.model-controls button[aria-pressed="true"] { color:var(--white); border-bottom-color:var(--brass); background:rgba(201,180,138,.07); }
.model-controls button:hover { color:var(--white); background:rgba(201,180,138,.05); }
.model-controls button:focus-visible { outline:2px solid var(--brass); outline-offset:-4px; }
.service-model-demo figcaption { color:var(--muted,#aaa); font-size:13px; text-align:center; line-height:1.9; margin-top:20px; }
.service-model-evidence { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); align-items:center; gap:48px; margin:48px 0 0; padding:36px; background:#0c1319; border:1px solid var(--line); }
.service-model-evidence img { display:block; width:100%; height:auto; }
.service-model-evidence figcaption > p { font-family:var(--serif); font-size:clamp(22px,2.4vw,30px); line-height:1.8; margin:20px 0; }
.service-model-evidence small { color:var(--muted,#aaa); line-height:1.9; font-size:12px; }
@media (prefers-reduced-motion:no-preference) {
  .model-demo-ready .model-panel:not([hidden]) { animation:model-panel-arrive .7s ease both; }
  .model-demo-ready .model-panel:not([hidden]) .flow-draw { animation:model-line-draw 1.8s cubic-bezier(.2,.7,.2,1) both; }
}
@keyframes model-panel-arrive { from {opacity:0; transform:translateY(10px)} to {opacity:1;transform:none} }
@keyframes model-line-draw { from {stroke-dashoffset:1} to {stroke-dashoffset:0} }
@media (max-width:1100px) {
  .service-hero-layout { gap:30px; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); }
  .service-model-demo { padding-inline:20px; }
  .model-demo-top { font-size:9px; letter-spacing:.06em; }
}
@media (max-width:900px) {
  .service-hero-layout { grid-template-columns:1fr; gap:40px; }
  .service-model-demo { width:min(100%,560px); justify-self:center; }
  .service-model-evidence { grid-template-columns:1fr; gap:26px; padding:24px; }
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  :is(.service-audience,.vision-benefits > article,.service-permit-stages > li,.knowledge-card):hover {
    border-color:rgba(201,180,138,.6);
    box-shadow:inset 0 2px 0 rgba(201,180,138,.3);
  }
}
@media (max-width:760px) {
  .reveal-pending { transform:translate3d(0,18px,0); }
  .reveal-panel.reveal-pending { transform:translate3d(0,22px,0); }
  .bim-flow-art { width:min(100%,260px); margin:0 auto 22px; }
}
@media (prefers-reduced-motion:reduce) {
  .reveal-target,.reveal-pending,.motion-heading .motion-line-inner {
    opacity:1!important; transform:none!important; filter:none!important; transition:none!important;
  }
  .bim-flow-art .flow-draw { stroke-dashoffset:0!important; transition:none!important; }
  .kicker::before { transform:none!important; transition:none!important; }
}
@media print {
  .reading-progress { display:none; }
  .reveal-target,.reveal-pending,.motion-heading .motion-line-inner {
    opacity:1!important; transform:none!important; filter:none!important; transition:none!important;
  }
  .bim-flow-art .flow-draw { stroke-dashoffset:0!important; }
  .model-panel { animation:none!important; }
  .model-panel .flow-draw { animation:none!important; }
}
