/* ===== DCT static site — shared motion layer =====
   Purely additive polish: every effect is transform / opacity / filter or a
   pseudo-element, so nothing reflows. Hooks are applied by shared/js/motion.js.
   Timing system: fast 180ms · base 320ms · slow 620ms · ease (0.16,1,0.3,1). */
:root{--dm-ease:cubic-bezier(0.16,1,0.3,1);--dm-fast:180ms;--dm-base:320ms;--dm-slow:620ms}

/* ---- page load: content settles in, chrome fades ---- */
html.dm-boot body{opacity:0}
body.dm-ready{opacity:1;transition:opacity 420ms ease}
.dm-head-in{animation:dmHeadIn 620ms var(--dm-ease) both}
@keyframes dmHeadIn{from{transform:translateY(-14px);opacity:.001}to{transform:none;opacity:1}}

/* ---- section reveals (stagger via --dm-d) ---- */
.dm-up,.dm-in-l,.dm-in-r,.dm-scale{opacity:0;transition:opacity var(--dm-slow) var(--dm-ease),transform var(--dm-slow) var(--dm-ease);transition-delay:var(--dm-d,0ms);will-change:transform,opacity}
.dm-up{transform:translateY(22px)}
.dm-in-l{transform:translateX(-26px)}
.dm-in-r{transform:translateX(26px)}
.dm-scale{transform:scale(.965)}
.dm-up.dm-on,.dm-in-l.dm-on,.dm-in-r.dm-on,.dm-scale.dm-on{opacity:1;transform:none}
.dm-on.dm-done{will-change:auto}

/* ---- eyebrow rules draw out ---- */
.dm-rule{transform:scaleX(0);transform-origin:left center;transition:transform var(--dm-slow) var(--dm-ease) 120ms}
.dm-rule.dm-on{transform:scaleX(1)}

/* ---- cards: soft hover lift ---- */
.dm-card{transition:transform var(--dm-base) var(--dm-ease),box-shadow var(--dm-base) var(--dm-ease)}
.dm-card:hover{transform:translateY(-4px);box-shadow:0 22px 48px -26px rgba(26,23,32,.26)}
.dm-card-dark:hover{box-shadow:0 24px 52px -26px rgba(0,0,0,.6)}

/* ---- link rows: gentle slide ---- */
.dm-row{transition:transform var(--dm-base) var(--dm-ease)}
.dm-row:hover{transform:translateX(4px)}

/* ---- buttons ---- */
.dm-btn{transition:transform var(--dm-fast) var(--dm-ease),box-shadow var(--dm-base) var(--dm-ease),background var(--dm-fast) var(--dm-ease),color var(--dm-fast) var(--dm-ease),opacity var(--dm-fast) var(--dm-ease)!important}
.dm-btn:hover{transform:translateY(-2px);box-shadow:0 14px 28px -16px rgba(26,23,32,.5)}
.dm-btn:active{transform:translateY(0);box-shadow:none}

/* ---- images: subtle zoom inside their frame ---- */
.dm-media{overflow:hidden}
.dm-media img,img.dm-img{transition:transform 700ms var(--dm-ease)}
.dm-media:hover img,.dm-card:hover .dm-media img{transform:scale(1.035)}

/* ---- chips / pills ---- */
.dm-chip{transition:transform var(--dm-base) var(--dm-ease),border-color var(--dm-base) var(--dm-ease),color var(--dm-base) var(--dm-ease)}
.dm-chip:hover{transform:translateY(-2px)}

/* ---- nav: dropdown easing + link underline ---- */
nav.dct-desktop-nav > div > div{transition:opacity var(--dm-base) var(--dm-ease),transform var(--dm-base) var(--dm-ease),visibility var(--dm-base)!important}
a.dct-navlink{position:relative}
a.dct-navlink::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1.5px;background:currentColor;opacity:.55;transform:scaleX(0);transform-origin:center;transition:transform var(--dm-base) var(--dm-ease)}
a.dct-navlink:hover::after{transform:scaleX(1)}
a.dct-dropitem{transition:background var(--dm-fast) var(--dm-ease),transform var(--dm-fast) var(--dm-ease)}
a.dct-dropitem:hover{transform:translateX(3px)}

/* ---- footer links ---- */
footer a{transition:color var(--dm-fast) var(--dm-ease),opacity var(--dm-fast) var(--dm-ease)}

/* ---- CTA band: breathing glow behind the headline ---- */
.dm-cta-glow{position:absolute;left:50%;top:50%;width:min(760px,90%);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:9999px;pointer-events:none;background:radial-gradient(circle,rgba(130,55,144,.28) 0%,rgba(92,44,157,.12) 42%,rgba(10,10,10,0) 70%);animation:dmGlow 9s ease-in-out infinite;z-index:0}
@keyframes dmGlow{0%,100%{opacity:.55;transform:translate(-50%,-50%) scale(1)}50%{opacity:.85;transform:translate(-50%,-50%) scale(1.09)}}

@media (max-width:768px){
  .dm-up{transform:translateY(14px)}
  .dm-in-l,.dm-in-r{transform:translateY(14px)}
  .dm-card:hover,.dm-row:hover,.dm-chip:hover,.dm-btn:hover{transform:none;box-shadow:none}
}

@media (prefers-reduced-motion:reduce){
  html.dm-boot body,body.dm-ready{opacity:1!important;transition:none!important}
  .dm-head-in{animation:none!important}
  .dm-up,.dm-in-l,.dm-in-r,.dm-scale,.dm-rule{opacity:1!important;transform:none!important;transition:none!important}
  .dm-card,.dm-row,.dm-btn,.dm-chip,.dm-media img,img.dm-img{transition:none!important}
  .dm-card:hover,.dm-row:hover,.dm-btn:hover,.dm-chip:hover{transform:none!important;box-shadow:none!important}
  .dm-media:hover img,.dm-card:hover .dm-media img{transform:none!important}
  a.dct-navlink::after{display:none}
  .dm-cta-glow{animation:none;opacity:.5}
}
