@charset "utf-8";
/* ===========================================================
   AOML — motion layer for the dual theme.
   Loads after aoml-theme.css; all colours come from that
   file's custom properties, so it works in both appearances.
   =========================================================== */

/* ---------- per-page washed cover artwork -------------- */
.page-art{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:var(--bg-art,none);
  background-size:cover;background-position:52% 14%;background-repeat:no-repeat;
  opacity:var(--art-op,1);filter:var(--art-filter,none);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.72) 45%,rgba(0,0,0,.26) 80%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.72) 45%,rgba(0,0,0,.26) 80%,transparent 100%);
}
html[data-bg] body{background:var(--art-body)}
html[data-bg] .page-container{
  position:relative;z-index:1;
  background:linear-gradient(180deg,var(--overlay-1) 0%,var(--overlay-2) 48%,var(--overlay-3) 100%);
}
@media print{.page-art{display:none}}
html[data-bg="ami"]{--bg-art:url(../img/bg/wash-ami.png)}
html[data-bg="afm"]{--bg-art:url(../img/bg/wash-afm.png)}
html[data-bg="afm2"]{--bg-art:url(../img/bg/wash-afm2.png)}
html[data-bg="am"]{--bg-art:url(../img/bg/wash-am.png)}
html[data-bg="small"]{--bg-art:url(../img/bg/wash-small.png)}
@media print{html[data-bg]{background-image:none}}

/* ---------- scroll progress ------------------------------- */
.scroll-progress{
  position:fixed;top:0;left:0;height:2px;width:100%;z-index:200;
  transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,var(--blue),var(--indigo));
  transition:transform .12s linear;
}

/* ---------- soft light wash ------------------------------- */
.page-container::before,
.page-container::after{
  content:"";position:fixed;pointer-events:none;z-index:-1;
  border-radius:50%;filter:blur(80px);
}
.page-container::before{
  width:58vw;height:58vw;left:-16vw;top:-20vw;
  background:radial-gradient(circle,var(--wash-a),transparent 66%);
  animation:drift-a 34s ease-in-out infinite alternate;
}
.page-container::after{
  width:52vw;height:52vw;right:-18vw;top:24vh;
  background:radial-gradient(circle,var(--wash-b),transparent 66%);
  animation:drift-b 42s ease-in-out infinite alternate;
}
@keyframes drift-a{
  from{transform:translate3d(0,0,0) scale(1)}
  to{transform:translate3d(9vw,7vh,0) scale(1.16)}
}
@keyframes drift-b{
  from{transform:translate3d(0,0,0) scale(1.1)}
  to{transform:translate3d(-8vw,-6vh,0) scale(.94)}
}

/* ---------- header condenses on scroll -------------------- */
.header{transition:background .3s ease,box-shadow .3s ease,border-color .3s ease}
.header .header-top,.header .header-bottom{transition:padding .3s ease}
.header.is-scrolled{
  background:var(--header-bg-2);
  box-shadow:0 6px 24px var(--header-shadow);
  border-bottom-color:var(--hair);
}
.header.is-scrolled .header-top{padding-top:9px;padding-bottom:6px}
.header.is-scrolled .header-bottom{padding-bottom:3px}
.header.is-scrolled a.sitelogo{width:34px;height:34px}
a.sitelogo{transition:width .3s ease,height .3s ease}

/* ---------- reveal on scroll ------------------------------ */
[data-reveal]{
  opacity:0;transform:translate3d(0,28px,0);
  transition:opacity .8s cubic-bezier(.22,.7,.2,1),
             transform .8s cubic-bezier(.22,.7,.2,1);
  transition-delay:var(--d,0ms);
  will-change:opacity,transform;
}
[data-reveal].is-in{opacity:1;transform:none}

/* ---------- homepage hero -------------------------------- */
html[data-page="home"] .main-content{padding-top:0}
html[data-page="home"] h1.pagetitle{
  display:block;align-content:center;
  min-height:min(72svh,700px);margin-bottom:0;
  padding-top:12svh;
  font-size:clamp(38px,7vw,80px);line-height:1.04;
  letter-spacing:-0.04em;max-width:16ch;color:var(--ink);
}
h1.pagetitle .w{display:inline-block;overflow:hidden;vertical-align:top}
h1.pagetitle .w > span{
  display:inline-block;
  transform:translate3d(0,110%,0);opacity:0;
  transition:transform 1s cubic-bezier(.16,.84,.24,1),opacity .8s ease;
  transition-delay:var(--d,0ms);
}
h1.pagetitle.is-in .w > span{transform:none;opacity:1}

.scroll-cue{
  display:flex;align-items:center;gap:11px;
  margin:-14px 0 clamp(60px,9vw,120px);
  font:500 10.5px/1 var(--mono);letter-spacing:.24em;
  text-transform:uppercase;color:var(--ink-3);
  opacity:0;animation:cue-in 1s ease 1.5s forwards;
}
.scroll-cue i{
  display:block;width:1px;height:44px;
  background:linear-gradient(180deg,var(--blue),transparent);
  animation:cue-pulse 2.4s ease-in-out infinite;
}
@keyframes cue-in{to{opacity:1}}
@keyframes cue-pulse{
  0%,100%{opacity:.35;transform:scaleY(.7);transform-origin:top}
  50%{opacity:1;transform:scaleY(1);transform-origin:top}
}

/* ---------- homepage intro: sticky figure ---------------- */
html[data-page="home"] .main-content_4{
  align-items:start;gap:clamp(28px,5vw,72px);
  margin-bottom:clamp(64px,10vw,140px);
}
html[data-page="home"] .main-content_4 .column1-unit-left{position:sticky;top:132px}
html[data-page="home"] .main-content_4 .column1-unit-left img{
  transform:scale(calc(.94 + .06 * var(--p,1)));
  transition:transform .2s linear;
}
html[data-page="home"] .main-content_4 .column2-unit-right h4{
  font-size:clamp(17px,1.7vw,21px);line-height:1.62;
}

/* research highlights band */
html[data-page="home"] .main-content_3{
  border-radius:28px;padding:clamp(30px,5vw,58px);overflow:hidden;
}
html[data-page="home"] .main-content_3 h5 > ul{gap:clamp(20px,3vw,34px)}
html[data-page="home"] .main-content_3 li{
  padding-left:0;font-size:clamp(16px,1.55vw,19px);line-height:1.6;
}
html[data-page="home"] .main-content_3 li::before{display:none}
html[data-page="home"] .main-content_3 li > b{
  display:block;margin-bottom:6px;
  font:600 clamp(19px,2.2vw,27px)/1.2 var(--sans);
  letter-spacing:-0.024em;color:var(--ink);
}

/* ---------- cards lift with pointer ---------------------- */
.main-subcontent{transition:box-shadow .28s ease,transform .28s ease,border-color .28s ease}
.main-subcontent:hover{
  border-color:var(--hair);
  box-shadow:var(--sh-card-hover);
  transform:translateY(-2px);
}

/* ---------- inner-page section headings ------------------ */
h1.block{position:relative}
h1.block::after{
  content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;
  background:linear-gradient(90deg,var(--blue),transparent);
  transition:width 1.1s cubic-bezier(.22,.7,.2,1) .1s;
}
h1.block.is-in::after{width:min(240px,60%)}

@media (max-width:820px){
  html[data-page="home"] .main-content_4 .column1-unit-left{position:static;top:auto}
  html[data-page="home"] h1.pagetitle{min-height:auto;padding:20svh 0 8svh;max-width:none}
}

@media (prefers-reduced-motion:reduce){
  [data-reveal],[data-reveal].is-in{opacity:1;transform:none;transition:none}
  h1.pagetitle .w > span{transform:none;opacity:1}
  .page-container::before,.page-container::after,.scroll-cue i{animation:none}
  .scroll-cue{opacity:1;animation:none}
}

@media print{
  .scroll-progress,.scroll-cue{display:none}
  [data-reveal],[data-reveal].is-in{opacity:1;transform:none}
  .page-container::before,.page-container::after{display:none}
  html[data-bg] body,html[data-bg] .page-container{background:#fff}
  html[data-page="home"] h1.pagetitle{min-height:auto}
}
