/* Additions for the self-hosted build: motion (replaces framer-motion), media players, small fixes. */
.reveal{opacity:0;transform:translateY(var(--ry,28px));transition:opacity .85s cubic-bezier(.22,1,.36,1) var(--d,0s),transform .85s cubic-bezier(.22,1,.36,1) var(--d,0s);will-change:opacity,transform}
.reveal.in{opacity:1;transform:none}
@keyframes ktr-fade-up{from{opacity:0;transform:translateY(var(--fy,12px))}to{opacity:1;transform:none}}
@keyframes ktr-fade{from{opacity:0}to{opacity:1}}
@keyframes ktr-title{from{opacity:0;transform:scale(1.06);filter:blur(14px)}to{opacity:1;transform:scale(1);filter:blur(0)}}
.intro-tag{animation:ktr-fade-up 1s ease .2s both;--fy:12px}
.intro-title{animation:ktr-title 1.4s cubic-bezier(.22,1,.36,1) both}
.intro-cta{animation:ktr-fade-up 1s ease .7s both;--fy:16px}
.intro-line{animation:ktr-fade 1.2s ease 1s both}
.pop-in{animation:ktr-fade-up .3s ease both;--fy:8px}
.modal-fade{animation:ktr-fade .25s ease both}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.intro-tag,.intro-title,.intro-cta,.intro-line,.animate-slow-zoom{animation:none}}
img.block{display:block}
.ktr-audio{width:100%;color-scheme:dark;height:44px}
.ktr-audio-card{display:flex;align-items:center;gap:1rem}
.ktr-audio-card img{width:72px;height:72px;border-radius:.9rem;object-fit:cover;flex-shrink:0}
video.ktr-video{width:100%;height:100%;background:#000;object-fit:contain}
.ktr-hidden{display:none!important}
/* Hero: keep text in the lower part so the face in the photo stays clear */
.hero-content{justify-content:flex-end;padding-bottom:clamp(4.5rem,9vh,6.5rem)}
.hero-title{font-size:clamp(2.8rem,11vw,6.5rem)}
.hero-shade{background:linear-gradient(to bottom,rgba(5,5,8,.12) 0%,rgba(5,5,8,.2) 38%,rgba(5,5,8,.75) 68%,#050508 100%)}
section .animate-slow-zoom{object-position:center 22%}
