/* AOS-style scroll animations */
[data-aos] { opacity: 0; transition: opacity 0.7s ease, transform 0.7s ease; }
[data-aos="fade-up"] { transform: translateY(40px); }
[data-aos="fade-left"] { transform: translateX(40px); }
[data-aos="fade-right"] { transform: translateX(-40px); }
[data-aos="fade-in"] { transform: none; }
[data-aos="zoom-in"] { transform: scale(0.92); }
[data-aos].aos-animate { opacity: 1; transform: none !important; }

/* Stagger delays */
[data-aos-delay="100"] { transition-delay: 0.1s; }
[data-aos-delay="200"] { transition-delay: 0.2s; }
[data-aos-delay="300"] { transition-delay: 0.3s; }
[data-aos-delay="400"] { transition-delay: 0.4s; }
[data-aos-delay="500"] { transition-delay: 0.5s; }
[data-aos-delay="600"] { transition-delay: 0.6s; }
[data-aos-delay="700"] { transition-delay: 0.7s; }
[data-aos-delay="800"] { transition-delay: 0.8s; }

/* Hero entrance animations */
@keyframes fadeUp { from { opacity:0; transform:translateY(30px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes drawLine { from { width:0; } to { width:48px; } }
@keyframes drawLineH { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@keyframes photoReveal { from { opacity:0; transform:scale(0.95) translateX(20px); } to { opacity:1; transform:scale(1) translateX(0); } }
@keyframes countUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
@keyframes shimmer { 0%{background-position:-200% 0} 100%{background-position:200% 0} }
@keyframes lineGrow { from{height:0} to{height:100%} }
@keyframes chipPop { from{opacity:0;transform:scale(0.8) translateY(8px)} to{opacity:1;transform:scale(1) translateY(0)} }
@keyframes slideInLeft { from{opacity:0;transform:translateX(-30px)} to{opacity:1;transform:translateX(0)} }
@keyframes slideInRight { from{opacity:0;transform:translateX(30px)} to{opacity:1;transform:translateX(0)} }
@keyframes pulseBorder { 0%,100%{border-color:var(--cream-border)} 50%{border-color:var(--red)} }
@keyframes typing-cursor { 0%,100%{opacity:1} 50%{opacity:0} }

.hero-label { animation: fadeUp 0.5s 0.4s ease both; }
.hero-title { animation: fadeUp 0.6s 0.6s ease both; }
.hero-rule { animation: drawLine 0.5s 1s ease both; }
.hero-sub { animation: fadeUp 0.5s 1.1s ease both; }
.hero-btns { animation: fadeUp 0.5s 1.3s ease both; }
.hero-photo { animation: photoReveal 0.8s 0.8s ease both; }
.hero-stats { animation: countUp 0.5s 1.5s ease both; }

.floating { animation: float 4s ease-in-out infinite; }

/* Timeline line draw */
.timeline-line { position:absolute; left:0; top:0; width:2px; background:var(--red); height:0; }
.timeline-line.drawn { animation: lineGrow 1.5s ease forwards; }

/* Typewriter cursor */
.typed-cursor { animation: typing-cursor 0.8s infinite; color:var(--red); }

/* Chip stagger animation */
.chip-stagger { opacity:0; animation: chipPop 0.4s ease forwards; }

/* Case study card alternating */
.case-left { animation: slideInLeft 0.6s ease both; }
.case-right { animation: slideInRight 0.6s ease both; }

/* Photo hover effect */
.photo-wrap { position:relative; overflow:hidden; }
.photo-wrap::after { content:'"This guy ships."'; position:absolute; bottom:0; left:0; right:0; background:rgba(230,57,70,0.9); color:#fff; font-family:var(--sans); font-size:0.85rem; font-weight:600; text-align:center; padding:1rem; transform:translateY(100%); transition:transform 0.3s ease; }
.photo-wrap:hover::after { transform:translateY(0); }
.photo-wrap img { transition:transform 0.4s ease; display:block; width:100%; }
.photo-wrap:hover img { transform:scale(1.04); }

/* Stat tooltip */
.stat-item { position:relative; }
.stat-tooltip { position:absolute; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%); background:var(--ink); color:#fff; font-size:0.72rem; font-weight:500; padding:0.4rem 0.75rem; border-radius:4px; white-space:nowrap; opacity:0; pointer-events:none; transition:opacity 0.2s; font-family:var(--sans); }
.stat-tooltip::after { content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:5px solid transparent; border-top-color:var(--ink); }
.stat-item:hover .stat-tooltip { opacity:1; }

/* Scroll progress bar */
#scroll-progress { position:fixed; top:0; left:0; height:2px; background:var(--red); z-index:9999; width:0%; transition:width 0.1s linear; }

/* Page load overlay */
#page-loader { position:fixed; inset:0; background:var(--cream); z-index:99990; display:flex; align-items:center; justify-content:center; transition:opacity 0.6s ease; }
#page-loader.hide { opacity:0; pointer-events:none; }
.loader-inner { text-align:center; }
.loader-name { font-family:var(--serif); font-size:1.5rem; font-weight:700; color:var(--ink); margin-bottom:0.5rem; }
.loader-name span { color:var(--red); }
.loader-bar { width:180px; height:2px; background:var(--cream-border); border-radius:2px; overflow:hidden; margin:0 auto; }
.loader-fill { height:100%; background:var(--red); border-radius:2px; animation:loaderAnim 1.2s ease forwards; }
@keyframes loaderAnim { from{width:0} to{width:100%} }

/* Section entrance */
.reveal { opacity:0; transform:translateY(32px); transition:opacity 0.7s ease, transform 0.7s ease; }
.reveal.visible { opacity:1; transform:none; }
