/** NCDE Environment Engine v1.0.7 — additive atmospheric layer */
:root{
  --ncde-env-tone:rgba(0,0,0,0);
  --ncde-env-vignette:.18;
  --ncde-env-cloud:0;
  --ncde-env-fog:0;
  --ncde-env-rain:0;
  --ncde-env-bg-filter:brightness(1) saturate(1) contrast(1);
}

/* Time grading: deliberately subtle to preserve the approved chapters. */
html[data-ncde-time="sunrise"]{
  --ncde-env-tone:linear-gradient(135deg,rgba(188,111,51,.14),rgba(238,193,105,.06) 48%,rgba(5,35,29,.08));
  --ncde-env-bg-filter:brightness(.94) saturate(1.05) contrast(1.02) sepia(.06);
  --ncde-env-vignette:.20;
}
html[data-ncde-time="day"]{
  --ncde-env-tone:linear-gradient(180deg,rgba(12,62,51,.015),rgba(2,24,19,.06));
  --ncde-env-bg-filter:brightness(1) saturate(1.02) contrast(1.01);
  --ncde-env-vignette:.16;
}
html[data-ncde-time="golden-hour"]{
  --ncde-env-tone:linear-gradient(135deg,rgba(211,145,60,.14),rgba(240,197,104,.07) 45%,rgba(3,25,20,.12));
  --ncde-env-bg-filter:brightness(.90) saturate(1.10) contrast(1.04) sepia(.08);
  --ncde-env-vignette:.24;
}
html[data-ncde-time="night"]{
  --ncde-env-tone:linear-gradient(180deg,rgba(2,16,24,.28),rgba(2,27,23,.30) 58%,rgba(0,11,9,.38));
  --ncde-env-bg-filter:brightness(.70) saturate(.82) contrast(1.10) hue-rotate(5deg);
  --ncde-env-vignette:.34;
}

html[data-ncde-weather="clear"]{--ncde-env-cloud:0;--ncde-env-fog:0;--ncde-env-rain:0}
html[data-ncde-weather="cloudy"]{--ncde-env-cloud:.08;--ncde-env-fog:.035;--ncde-env-bg-filter:brightness(.96) saturate(.94) contrast(1.02)}
html[data-ncde-weather="fog"]{--ncde-env-cloud:.08;--ncde-env-fog:.22;--ncde-env-bg-filter:brightness(.92) saturate(.84) contrast(.97)}
html[data-ncde-weather="rain"]{--ncde-env-cloud:.06;--ncde-env-fog:.055;--ncde-env-rain:.10;--ncde-env-bg-filter:brightness(.94) saturate(.90) contrast(1.04)}
html[data-ncde-weather="storm"]{--ncde-env-cloud:.10;--ncde-env-fog:.08;--ncde-env-rain:.22;--ncde-env-bg-filter:brightness(.78) saturate(.76) contrast(1.12)}
html[data-ncde-weather="windy"]{--ncde-env-cloud:.08;--ncde-env-fog:.06}

[data-ncde-background]{
  filter:var(--ncde-env-bg-filter)!important;
  transition:filter 1400ms cubic-bezier(.22,1,.36,1)!important;
}

.ncde-environment-layer{
  position:fixed;
  inset:0;
  z-index:2;
  overflow:hidden;
  pointer-events:none;
  contain:strict;
}
.ncde-environment-layer>span{position:absolute;inset:0;pointer-events:none}
.ncde-env__tone{background:var(--ncde-env-tone);transition:background 1400ms cubic-bezier(.22,1,.36,1)}
.ncde-env__vignette{background:radial-gradient(circle at 50% 42%,transparent 35%,rgba(0,12,10,var(--ncde-env-vignette)) 100%)}
.ncde-env__cloud{
  opacity:var(--ncde-env-cloud);
  inset:-12% -30%!important;
  background:
    radial-gradient(ellipse at 24% 24%,rgba(216,227,222,.24),transparent 30%),
    radial-gradient(ellipse at 68% 19%,rgba(197,214,209,.20),transparent 34%),
    linear-gradient(180deg,rgba(13,32,31,.24),transparent 46%);
  filter:blur(28px);
  animation:ncde-env-cloud-drift 38s linear infinite alternate;
  transition:opacity 1200ms ease;
}
.ncde-env__fog{
  opacity:var(--ncde-env-fog);
  inset:auto -35% 14% -35%!important;
  height:34%;
  background:radial-gradient(ellipse at center,rgba(220,231,225,.26),rgba(169,191,183,.10) 40%,transparent 72%);
  filter:blur(22px);
  animation:ncde-env-fog-drift 28s ease-in-out infinite alternate;
  transition:opacity 1200ms ease;
}
.ncde-env__fog--two{bottom:34%;animation-duration:36s;animation-direction:alternate-reverse;opacity:calc(var(--ncde-env-fog) * .64)}
.ncde-env__rain{
  opacity:var(--ncde-env-rain);
  inset:-20% -15%!important;
  background-image:repeating-linear-gradient(108deg,transparent 0 13px,rgba(225,239,236,.34) 14px,transparent 15px 26px);
  background-size:32px 80px;
  transform:translate3d(0,-10%,0);
  animation:ncde-env-rain 620ms linear infinite;
  mix-blend-mode:screen;
  transition:opacity 800ms ease;
}


.ncde-env__lightning{
  opacity:0;
  background:radial-gradient(circle at 68% 18%,rgba(226,238,255,.42),transparent 34%);
  mix-blend-mode:screen;
}
html[data-ncde-weather="storm"] .ncde-env__lightning{animation:ncde-env-lightning 11s steps(1,end) infinite}
@keyframes ncde-env-lightning{0%,91%,94%,100%{opacity:0}92%{opacity:.52}93%{opacity:.10}}

/* Keep atmosphere below all narrative/UI layers. */
.site-header,.gateway-header,.ncde-c01__story,.ncde-c02__story,.ncde-c02__pillars,
.ncde-c01__continue,.ncde-c02__continue,.ncde-journey-dock,.gateway-menu-backdrop,.gateway-menu-panel,
[data-chapter-transition]{position:relative;z-index:3}
.gateway-menu-backdrop,.gateway-menu-panel,[data-chapter-transition]{position:fixed}

@keyframes ncde-env-cloud-drift{from{transform:translate3d(-3%,0,0) scale(1.03)}to{transform:translate3d(5%,1.5%,0) scale(1.08)}}
@keyframes ncde-env-fog-drift{from{transform:translate3d(-4%,0,0)}to{transform:translate3d(6%,-2%,0)}}
@keyframes ncde-env-rain{to{transform:translate3d(-14px,80px,0)}}

@media(prefers-reduced-motion:reduce){
  .ncde-env__cloud,.ncde-env__fog,.ncde-env__rain,.ncde-env__lightning{animation:none!important}
}
html[data-ncde-performance="reduced"] .ncde-env__cloud,
html[data-ncde-performance="reduced"] .ncde-env__fog,
html[data-ncde-performance="reduced"] .ncde-env__rain,
html[data-ncde-network="save-data"] .ncde-env__rain,
html[data-ncde-network="save-data"] .ncde-env__lightning{animation:none!important}

/* Time + Weather Asset Router v1.0.8 */
[data-ncde-background]{opacity:1;transition:filter 1400ms cubic-bezier(.22,1,.36,1),opacity 360ms ease!important;background-position:center center;background-size:cover;background-repeat:no-repeat}
[data-ncde-background].ncde-time-asset-switching,.ncde-c01__background.ncde-time-asset-switching,.ncde-c02__background.ncde-time-asset-switching{opacity:.18}
@media(prefers-reduced-motion:reduce){[data-ncde-background]{transition:none!important}}

/* EE 1.0.7.2 — native image renderer; avoids browser background-image routing conflicts. */
.ncde-c01__background,.ncde-c02__background{overflow:hidden;background:#061c17!important}
.ncde-environment-image{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center center;opacity:1;filter:var(--ncde-env-bg-filter);transform:none!important;transition:filter 1400ms cubic-bezier(.22,1,.36,1),opacity 360ms ease!important}
.ncde-time-asset-switching .ncde-environment-image{opacity:.18}
[data-ncde-background]{filter:none!important}
@media(prefers-reduced-motion:reduce){.ncde-environment-image{transition:none!important}}

/* EE 1.0.8.2 — dismissible location consent notification */
.ncde-location-prompt{
  position:fixed;
  left:50%;
  bottom:calc(env(safe-area-inset-bottom,0px) + 112px);
  z-index:9998;
  display:grid;
  grid-template-columns:minmax(0,1fr) 38px;
  align-items:center;
  width:min(320px,calc(100vw - 32px));
  border:1px solid rgba(215,181,103,.38);
  border-radius:18px;
  background:rgba(4,38,29,.94);
  color:#f1dfaf;
  box-shadow:0 16px 40px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  transform:translateX(-50%);
  overflow:hidden;
  animation:ncde-location-in .38s cubic-bezier(.22,1,.36,1) both;
}
.ncde-location-prompt__action{
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
  padding:11px 4px 11px 14px;
  border:0;
  background:transparent;
  color:inherit;
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.ncde-location-prompt__icon{
  flex:0 0 34px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:1px solid rgba(215,181,103,.42);
  border-radius:50%;
  font-size:18px;
}
.ncde-location-prompt__copy{min-width:0;display:block;padding-right:2px}
.ncde-location-prompt strong,.ncde-location-prompt small{display:block}
.ncde-location-prompt strong{font-size:13px;letter-spacing:.03em}
.ncde-location-prompt small{margin-top:2px;color:rgba(255,255,255,.62);font-size:11px;line-height:1.35}
.ncde-location-prompt__close{
  align-self:stretch;
  display:grid;
  place-items:center;
  width:38px;
  min-height:56px;
  padding:0;
  border:0;
  border-left:1px solid rgba(215,181,103,.12);
  background:rgba(255,255,255,.015);
  color:rgba(241,223,175,.72);
  cursor:pointer;
  transition:color .2s ease,background .2s ease;
}
.ncde-location-prompt__close svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.ncde-location-prompt__close:hover,.ncde-location-prompt__close:focus-visible{color:#f1dfaf;background:rgba(215,181,103,.09);outline:none}
.ncde-location-prompt--loading{opacity:.68;pointer-events:none}
.ncde-location-prompt--attention{animation:ncde-location-shake .5s ease}
.ncde-location-prompt--leaving{pointer-events:none;animation:ncde-location-out .26s ease both}
@keyframes ncde-location-in{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes ncde-location-out{from{opacity:1;transform:translate(-50%,0)}to{opacity:0;transform:translate(-50%,10px)}}
@keyframes ncde-location-shake{0%,100%{transform:translateX(-50%)}25%{transform:translateX(calc(-50% - 5px))}75%{transform:translateX(calc(-50% + 5px))}}
@media(min-width:900px){
  .ncde-location-prompt{bottom:28px;left:auto;right:28px;transform:none}
  .ncde-location-prompt--attention{animation:none}
  .ncde-location-prompt--leaving{animation:ncde-location-out-desktop .26s ease both}
  @keyframes ncde-location-out-desktop{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}
}
@media(prefers-reduced-motion:reduce){.ncde-location-prompt,.ncde-location-prompt--leaving{animation-duration:.01ms!important}}
