/* DREAM GALLERY — DREAM VERSION 002 FINAL */
:root{
  --black:#050505;
  --void:#030303;
  --charcoal:#12110f;
  --stone:#8a8173;
  --bone:#ece5d8;
  --ink:#141210;
  --ease:cubic-bezier(.16,.7,.24,1);
  --heavy:cubic-bezier(.22,.61,.16,1);
  --display:'Fraunces', 'Times New Roman', serif;
  --sans:'Inter', system-ui, sans-serif;
  --mono:'IBM Plex Mono', ui-monospace, monospace;
  --bg:var(--black);
  --fg:var(--bone);
  --muted:rgba(236,229,216,.42);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
html,body{min-height:100%;height:auto}
body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body.locked{overflow:hidden;height:100vh;height:100dvh}
img,video{display:block;max-width:100%;height:auto}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
a{color:inherit}
::selection{background:var(--bone);color:var(--black)}
:focus-visible{outline:1px solid var(--fg);outline-offset:4px}
[data-lang="en"] .es{display:none}
[data-lang="es"] .en{display:none}

.visually-hidden{
  position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
}
.skip-link{
  position:fixed;z-index:200;
  top:max(12px, env(safe-area-inset-top));left:16px;
  width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  text-decoration:none;color:var(--fg);background:var(--black);
}
.skip-link:focus,.skip-link:focus-visible{
  width:auto;height:auto;overflow:visible;clip:auto;
  padding:12px 16px;
}
body.entered .skip-enter{display:none}
body:not(.entered) .skip-world{display:none}

body[data-chapter="light"],
body[data-chapter="material"],
body.luna-pale-chrome,
body.fleur-pale-chrome{
  --fg:#141210;
  --muted:rgba(20,18,16,.68);
}
#luna .display{color:#141210}
#luna .eyebrow,
#luna .line,
#luna .whisper{color:rgba(20,18,16,.52)}

body.dream .arch img,
body.dream .stage-visual{filter:saturate(.9) brightness(.93);transition:filter 1.8s var(--ease)}
body.dream .drift{animation:dreamDrift 32s var(--ease) infinite alternate}
@keyframes dreamDrift{
  from{transform:scale(1) translate3d(0,0,0)}
  to{transform:scale(1.015) translate3d(1.2%,-0.8%,0)}
}

.grain{
  pointer-events:none;position:fixed;inset:0;z-index:80;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.chrome{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:max(16px,env(safe-area-inset-top)) 22px 12px;
  pointer-events:none;opacity:0;transition:opacity .9s var(--ease);
}
.chrome > *{pointer-events:none}
body.entered .chrome{opacity:1}
body.entered .chrome > *{pointer-events:auto}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}
.brand img{width:28px;height:28px;object-fit:cover}
.wordmark{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap}
.chrome-right{display:flex;align-items:center;gap:16px;position:relative}
.sound-toggle,.lang-toggle{position:relative;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.55;transition:opacity .25s}
.sound-toggle::before,.lang-toggle button::before{
  content:'';position:absolute;inset:-10px -8px;
}
.sound-toggle:hover,.lang-toggle button:hover{opacity:.9}
.sound-toggle{display:flex;align-items:center;gap:8px}
.sound-toggle .dot{width:6px;height:6px;border-radius:50%;background:var(--stone);transition:background .4s,box-shadow .4s}
.sound-toggle.on .dot{background:var(--fg);box-shadow:0 0 0 3px color-mix(in srgb, var(--fg) 18%, transparent)}
.lang-toggle{display:flex;gap:6px;align-items:center}
.lang-toggle button{position:relative;opacity:.4;padding:4px}
.lang-toggle button[aria-pressed="true"]{opacity:1}
.dream-flag{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;opacity:0;transition:opacity 1.2s;pointer-events:none}
body.dream .dream-flag{opacity:.45}

.contact-open{
  position:absolute;right:100%;margin-right:16px;top:50%;transform:translateY(-50%);z-index:1;
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  opacity:.55;white-space:nowrap;padding:4px 0;
}
.contact-open::before{content:'';position:absolute;inset:-10px -8px}
.contact-open:hover,.contact-open:focus-visible{opacity:.9}
.contact-panel{
  position:fixed;inset:0;z-index:60;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:#050505;color:#ece5d8;text-align:center;padding:80px 24px 48px;
}
.contact-panel[hidden]{display:none}
.contact-panel .display{font-size:clamp(28px,5vw,56px);margin:0 0 18px;color:#ece5d8}
.contact-note{
  font-size:clamp(14px,2vw,18px);font-weight:300;letter-spacing:.08em;
  color:rgba(236,229,216,.72);max-width:36ch;
}
.contact-links{list-style:none;margin-top:36px}
.contact-links li{margin:0 0 4px}
.contact-links a{
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  display:inline-block;padding:12px 4px;border-bottom:1px solid rgba(236,229,216,.28);
  opacity:.7;
}
.contact-links a:hover,.contact-links a:focus-visible{opacity:1;border-bottom-color:rgba(236,229,216,.8)}
.contact-close{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  opacity:.45;margin-bottom:28px;padding:4px 0;color:#ece5d8;
}
.contact-close:hover,.contact-close:focus-visible{opacity:.9}


.progress{
  position:fixed;right:max(14px, env(safe-area-inset-right));top:50%;transform:translateY(-50%);
  z-index:45;display:flex;flex-direction:column;gap:9px;opacity:0;transition:opacity .9s;
}
body.entered .progress{opacity:1}
.progress button{
  position:relative;
  width:7px;height:7px;border-radius:50%;
  background:transparent;border:1px solid color-mix(in srgb, var(--fg) 35%, transparent);
  padding:0;transition:transform .25s var(--ease), background .25s, border-color .25s;
}
.progress button::before{
  content:'';position:absolute;inset:-12px;
}
.progress button[aria-current="true"]{background:var(--fg);border-color:var(--fg);transform:scale(1.25)}
.progress button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}
.display{font-family:var(--display);font-weight:320;letter-spacing:-.02em;line-height:.92}
.line{font-size:clamp(16px,2.2vw,26px);font-weight:400;letter-spacing:.04em;color:var(--muted);max-width:28ch}
.whisper{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

.entry{
  position:fixed;inset:0;z-index:30;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:#050505;text-align:center;padding:80px 24px 48px;
  transition:opacity .9s var(--ease), visibility 0s linear .9s;
}
body.entered .entry{opacity:0;visibility:hidden;pointer-events:none}
.entry-logo{
  width:min(42vw, 220px);height:min(42vw,220px);object-fit:cover;
  animation:logoBreath 16s var(--ease) infinite;
}
@keyframes logoBreath{
  0%,100%{transform:scale(1);opacity:.92}
  50%{transform:scale(1.035);opacity:1}
}
.entry h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.entry-tag{
  margin-top:36px;font-size:clamp(14px,2vw,18px);letter-spacing:.08em;
  color:rgba(236,229,216,.72);font-weight:300;
}
.entry-actions{display:flex;gap:28px;margin-top:48px;flex-wrap:wrap;justify-content:center}
.entry-actions button{
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  padding:12px 4px;border-bottom:1px solid rgba(236,229,216,.28);
  opacity:.7;transition:opacity .2s, border-color .2s;
}
.entry-actions button:hover{opacity:1;border-color:rgba(236,229,216,.8)}

.veil{
  position:fixed;inset:0;z-index:90;background:#050505;
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity 1.6s var(--ease);
}
.veil.on{opacity:1;visibility:visible}
.veil img{width:min(28vw,140px);height:min(28vw,140px);object-fit:cover;animation:veilPulse 2.6s cubic-bezier(.25,.1,.2,1)}
@keyframes veilPulse{
  0%{transform:scale(.99);opacity:.2}
  60%{transform:scale(1.02);opacity:1}
  100%{transform:scale(1.04);opacity:0}
}

.world{position:relative;z-index:1}
.blend{
  position:relative;
  height:180vh;
  margin-top:-16vh;
}
.blend:first-of-type{margin-top:0}
.sticky-stage{
  position:-webkit-sticky;position:sticky;top:0;
  height:100vh;height:100dvh;
  overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;
  -webkit-backface-visibility:hidden;
  will-change:opacity;
}
.arch{
  position:absolute;inset:0;z-index:0;
  overflow:hidden;
}
.arch img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.08);
  filter:brightness(.28) saturate(.85);
  will-change:transform,filter,opacity;
}
.arch-late{opacity:0}
.shade{position:absolute;inset:0;z-index:1;pointer-events:none}
.seam{position:absolute;inset:0;z-index:3;pointer-events:none;background:#000;opacity:0;will-change:opacity}
.room-copy,.stage-copy{will-change:opacity}
.shade-heavy{background:radial-gradient(ellipse at 50% 58%, rgba(5,5,5,.15) 0%, rgba(5,5,5,.78) 72%, #050505 100%)}
.shade-mid{background:radial-gradient(ellipse at 48% 55%, rgba(5,5,5,.05) 10%, rgba(5,5,5,.55) 70%, #10100e 100%)}
.shade-soft{background:linear-gradient(180deg, rgba(26,24,20,.12) 0%, rgba(26,24,20,.35) 70%, rgba(26,24,20,.7) 100%)}
.shade-warm{background:linear-gradient(180deg, rgba(183,173,156,.08), rgba(20,18,16,.45) 80%)}
.shade-black{background:radial-gradient(ellipse at 50% 40%, rgba(11,10,9,.2), #0b0a09 78%)}
.illuminate{
  position:absolute;inset:-10%;z-index:2;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at 50% 38%, rgba(255,250,238,.8) 0%, rgba(207,198,182,.35) 42%, rgba(207,198,182,0) 72%);
  mix-blend-mode:screen;
}
.matter-photo img{object-position:center 58%;filter:brightness(.78) saturate(.9) grayscale(.08)}
.facade-arch img{object-position:26% 46%}
.space-arch img{object-position:28% 55%}
.light-arch img{object-position:center center}
#material{margin-top:0}
.room-copy{
  position:relative;z-index:4;
  padding:0 8vw max(10vh, 48px);
  max-width:min(46vw, 36ch);
}
.room-copy .display{font-size:clamp(40px,8vw,92px);margin:12px 0 16px}
#light .room-copy{
  padding-bottom:max(12vh, 56px);
  text-shadow:0 2px 28px rgba(20,18,16,.4);
}

.objects-stage{display:flex;flex-direction:column;justify-content:flex-start;padding-top:12vh}
.objects-stage .room-copy{flex:0 0 auto;padding:0 8vw 2vh}
.presences{position:relative;z-index:4;display:flex;flex:1 1 auto;min-height:0;gap:3vw;justify-content:center;align-items:stretch;padding:2vh 6vw 6vh}
.presence{
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:22px;
  width:min(42vw,520px);
  height:100%;
  opacity:var(--reveal,.18);
  transform:translateY(var(--ty,26px));
  transition:opacity .4s var(--ease), transform .9s var(--heavy);
}
.presence::before{
  content:'';position:absolute;inset:6% 2%;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse at 50% 55%, rgba(236,229,216,.14), rgba(236,229,216,0) 72%);
}
.presence:hover,.presence:focus-visible{opacity:1;transform:translateY(-10px)}
.presence img{width:100%;aspect-ratio:1491/1055;height:auto;object-fit:cover;object-position:center center;max-width:100%;max-height:none;filter:drop-shadow(0 30px 64px rgba(0,0,0,.5));-webkit-mask-image:radial-gradient(ellipse 80% 84% at 50% 50%,#000 44%,transparent 100%);mask-image:radial-gradient(ellipse 80% 84% at 50% 50%,#000 44%,transparent 100%)}
.presence[data-jump="fleur"] img{object-position:center 42%}
.presence span{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;opacity:.45;transition:opacity .3s;min-height:2.6em;display:flex;align-items:flex-start;justify-content:center;text-align:center;max-width:100%}
.presence:hover span,.presence:focus-visible span{opacity:1}

.encounter{height:380vh;padding:0;margin-top:-12vh}
.encounter .sticky-stage{align-items:center;justify-content:center}
.stage-visual{position:absolute;inset:0}
.stage-visual img, .stage-visual video{
  pointer-events:none;
  position:absolute;left:50%;top:50%;
  width:min(78vw, 920px);height:auto;max-height:72vh;object-fit:contain;
  transform:translate(-50%,-50%);
  opacity:0;
  will-change:transform,opacity;
}
.stage-visual .vignette{
  position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 48%, transparent 34%, rgba(5,5,5,.5) 68%, #050505 100%);
  pointer-events:none;
}

.fleur-exhibition{
  position:relative;
  height:auto;
  margin-top:-12vh;
  background:#d9d1c3;
}
.fleur-moment{
  position:relative;
  height:155vh;
}
.fleur-moment + .fleur-moment{margin-top:-18vh}
.fleur-moment-first + .fleur-moment{margin-top:0}
.fleur-visual{
  position:-webkit-sticky;position:sticky;
  top:0;
  height:100vh;height:100dvh;
  overflow:hidden;
  background:#d9d1c3;
  display:flex;flex-direction:column;justify-content:flex-end;
}
.fleur-visual img,
.fleur-visual video{
  position:absolute;inset:0;
  width:100%;height:100%;
  max-width:none;max-height:none;
  object-fit:cover;object-position:center;
  opacity:1;
  pointer-events:none;
  display:block;
}
.fleur-copy{
  position:relative;z-index:4;
  margin-top:auto;
}
.stage-copy{
  position:relative;z-index:4;align-self:flex-end;
  padding:0 8vw max(10vh,48px);width:100%;
  display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
}
.stage-copy .display{font-size:clamp(32px,6vw,72px);margin:8px 0 10px}
#objects .sticky-stage{background:#0b0a09}
#luna .sticky-stage{background:#050505}
#lunaHero{
  pointer-events:auto;cursor:ew-resize;touch-action:none;
  width:140vw;height:140vh;
  max-width:none;max-height:none;
  object-fit:cover;
  position:absolute;left:50%;top:50%;
  opacity:1;
  transform:translate(-50%,-50%);
}
#luna .stage-visual .vignette{background:transparent}
#luna .sticky-stage::after{
  content:'';
  position:absolute;left:0;right:0;bottom:0;height:46%;
  z-index:3;pointer-events:none;
  background:none;
}
#luna .stage-copy{z-index:4}

.after-room{
  min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:12vh 8vw;
  margin-top:-8vh;
  background:#030303;
  position:relative;
  z-index:20;
}
.after-room img{width:72px;height:72px;object-fit:cover;margin:0 auto 28px;opacity:.85}
.after-room .display{font-size:clamp(28px,5vw,56px);max-width:16ch}

.fleur-bridge{position:relative;z-index:4;padding:0 8vw max(8vh,36px);opacity:0;transition:opacity 1.2s var(--ease)}
.after-invite{margin-top:28px;max-width:44ch;letter-spacing:.12em}
.enquire-cta{
  margin-top:36px;
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  padding:12px 4px;border-bottom:1px solid rgba(236,229,216,.28);
  opacity:.7;transition:opacity .2s, border-color .2s;
}
.enquire-cta:hover,.enquire-cta:focus-visible{opacity:1;border-color:rgba(236,229,216,.8)}
.enquire-cta[hidden]{display:none}
.enquire-panel{
  margin-top:40px;
  width:min(100%, 28rem);
  text-align:left;
}
.enquire-close{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  opacity:.45;margin-bottom:28px;padding:4px 0;
}
.enquire-close:hover,.enquire-close:focus-visible{opacity:.9}
.enquire-panel label{
  display:flex;flex-direction:column;gap:8px;
  margin-bottom:22px;
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);
}
.enquire-panel input,
.enquire-panel textarea{
  font-family:var(--sans);font-size:16px;letter-spacing:.02em;text-transform:none;
  color:var(--fg);background:transparent;border:0;border-bottom:1px solid rgba(236,229,216,.22);
  padding:8px 0 10px;width:100%;outline:none;resize:none;
}
.enquire-panel input:focus-visible,
.enquire-panel textarea:focus-visible{border-bottom-color:rgba(236,229,216,.7)}
.enquire-about{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);margin:8px 0 12px;
}
.enquire-choice{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:28px}
.enquire-choice button{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  padding:12px 4px;min-height:24px;border-bottom:1px solid transparent;opacity:.4;
}
.enquire-choice button[aria-pressed="true"]{opacity:1;border-bottom-color:rgba(236,229,216,.55)}
.enquire-choice button:hover,.enquire-choice button:focus-visible{opacity:.85}
.enquire-submit{
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  padding:12px 4px;border-bottom:1px solid rgba(236,229,216,.28);
  opacity:.7;margin-top:8px;
}
.enquire-submit:hover,.enquire-submit:focus-visible{opacity:1;border-bottom-color:rgba(236,229,216,.8)}
.enquire-privacy{
  font-family:var(--sans);font-size:10px;font-weight:300;letter-spacing:.04em;line-height:1.5;
  color:var(--muted);margin-top:20px;max-width:42ch;text-transform:none;
}
.enquire-error{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--fg);margin:0 0 18px;
}
.enquire-error[hidden]{display:none}
.enquire-sent{margin-top:8px}
.after-room.enquiry-open{justify-content:flex-start;padding-top:18vh;padding-bottom:12vh}


@media (max-width:720px){
  .blend{height:165vh;margin-top:-10vh}
  .encounter{height:340vh}
  .presences{flex-direction:column;align-items:center;gap:3vh;padding:1vh 8vw 3vh}
  .presence{width:min(78vw,420px);height:auto;flex:1 1 0}
  .progress{right:10px}
  .stage-copy{flex-direction:column;align-items:flex-start}
  .entry-actions{flex-direction:column;gap:18px}
  .room-copy{max-width:none}
  .arch img{object-position:center center}
  .facade-arch img{object-position:30% 44%}
  .space-arch img{object-position:32% 60%}
  .light-arch img{object-position:center center}
  #material{margin-top:0}
  .wordmark{white-space:nowrap;letter-spacing:.14em}
  .chrome{padding-left:14px;padding-right:14px}
  .chrome-right{gap:10px}
  .contact-open{margin-right:10px;letter-spacing:.1em}
}
@media (max-width:400px){
  .dream-flag{opacity:0 !important;pointer-events:none}
  .contact-open{left:0;right:auto;margin-right:0;letter-spacing:0;font-size:9px;z-index:1}
  .contact-open::before{inset:-8px 0}
}
@media (min-width:900px){
  .blend{height:200vh}
  .arch img{transform:scale(1.12)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
  body.dream .arch img, body.dream .stage-visual{filter:none}
}



/* 3D Gallery entry — minimal chrome affordance; production rooms untouched */
.chrome-left{display:flex;align-items:center;gap:14px;flex-shrink:0}
.chrome-3d{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  text-decoration:none;opacity:.42;transition:opacity .25s;flex-shrink:0;
  padding:4px 2px;
}
.chrome-3d:hover,.chrome-3d:focus-visible{opacity:.9}
.chrome-3d-arrow{font-size:11px;letter-spacing:0;opacity:.85}
@media (max-width:720px){
  .chrome-left{gap:10px}
  .chrome-3d{letter-spacing:.12em}
}
