/* Section headings and the scroll-driven four-field chapter. */
.hero-material-controls{display:flex;align-items:center}
.motion-heading .title-word{display:inline-block;vertical-align:baseline}
.motion-heading .title-ink{display:inline-block;transition:color .4s}
.motion-heading.type-entered .title-word{animation:title-arrival 1.15s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--word-delay)}
.motion-heading em{position:relative;display:inline-block}
.motion-heading em:after{content:"";position:absolute;left:.05em;right:0;bottom:-.07em;height:1px;background:linear-gradient(90deg,#a8d4e3,#d6bdf1);transform:scaleX(.13);transform-origin:left;opacity:.3;transition:transform .75s cubic-bezier(.22,1,.36,1),opacity .5s;pointer-events:none}
@keyframes title-arrival{from{opacity:0;transform:perspective(900px) translateY(.5em) rotateX(-12deg) scale(.92);filter:blur(5px)}to{opacity:1;transform:perspective(900px) translateY(0) rotateX(0) scale(1);filter:blur(0)}}
@media(hover:hover) and (pointer:fine){html:not(.portfolio-motion-paused) .motion-heading:hover em:after{transform:scaleX(1);opacity:.8}}
.portfolio-motion-paused .motion-heading .title-word{animation:none}
.portfolio-motion-paused .motion-heading .title-ink,.portfolio-motion-paused .motion-heading em:after{transition:none;transform:none}
.portfolio-motion-paused .motion-heading em:after{transform:scaleX(.13)}
.category-scroll-cue{display:none}
.category-viewport{min-width:0}
.horizontal-chapter.category-section{position:relative;padding:0;overflow:visible;background:radial-gradient(ellipse at 72% 10%,#20152955,transparent 55%),#0a0b0e}
.horizontal-chapter .category-sticky{position:sticky;top:0;height:100svh;min-height:820px;box-sizing:border-box;padding:106px var(--gutter) 30px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.horizontal-chapter .category-head{grid-template-columns:1fr 1.7fr 1fr;gap:24px;margin-bottom:30px;flex-shrink:0}
.horizontal-chapter .category-head h2{font-size:clamp(36px,3.2vw,54px);line-height:1.05}
.horizontal-chapter .category-head>.eyebrow{font-size:8px}
.horizontal-chapter .category-viewport{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain;flex-shrink:0;padding:4px 0 12px}
.horizontal-chapter .category-viewport::-webkit-scrollbar{display:none}
.horizontal-chapter .category-panels{position:relative;display:flex;width:max-content;height:auto;gap:24px}
.horizontal-chapter .category-panel,.horizontal-chapter .category-panel:hover,.horizontal-chapter .category-panel:focus-visible{flex:0 0 clamp(380px,40vw,600px);width:clamp(380px,40vw,600px);height:min(48svh,460px);border-radius:14px;transition:opacity .4s,border-color .4s,box-shadow .4s}
.horizontal-chapter .category-panel:hover,.horizontal-chapter .category-panel:focus-visible{border-color:#c3a9e780;box-shadow:inset 0 0 28px #b89cd00d}
.horizontal-chapter .category-panels:has(.category-panel:hover) .category-panel:not(:hover){opacity:.58}
.horizontal-chapter .category-scroll-cue{display:flex;align-items:center;gap:22px;padding-top:22px;font:8px monospace;letter-spacing:1.4px;color:#a195b4}
.category-scroll-track{height:1px;flex:1;background:#ffffff20;overflow:hidden}
.category-scroll-track i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#8a82a9,#e0d7ef);transform:scaleX(.12);transform-origin:left}
.scroll-arrival.has-arrived{animation:section-arrival .95s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--arrival-delay,0ms)}
@keyframes section-arrival{from{opacity:0;translate:0 64px;scale:.98;filter:blur(4px)}to{opacity:1;translate:0 0;scale:1;filter:blur(0)}}
.js-motion .reveal{transition-duration:1s;transition-timing-function:cubic-bezier(.22,1,.36,1)}
@media(max-width:1049px),(max-height:819px){.category-sticky{position:relative}.category-viewport{overflow:visible}}
.portfolio-motion-paused .scroll-arrival{animation:none}
@media(prefers-reduced-motion:reduce){
  .motion-heading .title-word,.motion-heading.type-entered .title-word{animation:none!important;opacity:1;transform:none;filter:none}
  .motion-heading .title-ink,.motion-heading em:after{transition:none}
  .scroll-arrival,.scroll-arrival.has-arrived{animation:none;translate:none;scale:none;opacity:1;filter:none}
}
