/* ==============================================
   animations.css — Keyframes & entrance animations
   ============================================== */

@keyframes riseIn       { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
@keyframes brushIn      { 0%{width:0;opacity:.7} 60%{width:58%;opacity:.5} 100%{width:55%;opacity:.45} }
@keyframes drawArrowBody{ to{stroke-dashoffset:0} }
@keyframes drawArrowHead{ to{stroke-dashoffset:0} }

@keyframes blotPulse    { 0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.8} 50%{transform:translate(-50%,-50%) scale(1.12);opacity:1} }
@keyframes scrollBounce { 0%,100%{transform:translateY(0);opacity:.6} 50%{transform:translateY(4px);opacity:1} }
@keyframes stickyDrop   { 0%{opacity:0;transform:rotate(var(--fr,0deg)) translateY(-40px) scale(.92)} 65%{transform:rotate(calc(var(--fr,0deg)*.8)) translateY(4px) scale(1.01)} 100%{opacity:1;transform:rotate(var(--fr,0deg)) translateY(0) scale(1)} }
@keyframes cardFlip     { 0%{opacity:0;transform:rotate(var(--fr,0deg)) perspective(600px) rotateX(-35deg) translateY(20px)} 100%{opacity:1;transform:rotate(var(--fr,0deg)) perspective(600px) rotateX(0) translateY(0)} }
@keyframes intFan       { 0%{opacity:0;transform:rotate(var(--fr,0deg)) scale(.85) translateY(16px)} 100%{opacity:1;transform:rotate(var(--fr,0deg)) scale(1) translateY(0)} }

/* Hero blot */
.hero-blot { position:absolute; width:clamp(280px,45vw,520px); height:clamp(280px,45vw,520px); top:50%;left:65%; transform:translate(-50%,-50%); border-radius:50%; background:radial-gradient(circle,rgba(0,0,0,.04) 0%,rgba(0,0,0,.015) 45%,transparent 70%); pointer-events:none; z-index:0; animation:blotPulse 7s ease-in-out infinite; }
/* hero-scroll bounce arrow */
.hero-scroll::after { content:"\2304"; display:none; margin-left:.4rem; animation:scrollBounce 2s ease-in-out 4s infinite; font-size:.9rem; line-height:1; }

/* Typewriter */
/* typewriter removed */

/* Sec-num ghost */
.sec-num { position:absolute; top:-1.5rem; right:0; font-family:var(--serif); font-size:clamp(5rem,10vw,8rem); font-weight:600; font-style:italic; opacity:0; line-height:1; letter-spacing:-.04em; pointer-events:none; user-select:none; transition:opacity 1.2s var(--eout) .3s,transform 1.2s var(--eout) .3s; transform:translateY(12px); -webkit-text-stroke:1.5px currentColor; color:transparent; }
.sec.vis .sec-num { opacity:1; transform:none; }

/* Stickies */
.sticky       { opacity:0; animation:none; }
.sticky.vis   { animation:stickyDrop .65s var(--eout) calc(var(--si,0)*.09s) forwards; }
.sticky:hover { transform:rotate(0deg) translateY(-2px) !important; box-shadow:0 6px 18px rgba(55,50,35,.12),0 2px 6px rgba(55,50,35,.07) !important; filter:brightness(1.01); }

/* Quote cards */
.quote-card     { opacity:0; transition:transform .35s var(--eout),box-shadow .35s var(--eout); }
.quote-card.vis { animation:cardFlip .7s var(--eout) calc(var(--qi,0)*.12s) forwards; }
.quote-card:hover { transform:rotate(0) translateY(-4px) !important; box-shadow:0 10px 28px rgba(55,50,35,.13),0 3px 8px rgba(55,50,35,.07),inset 0 3px 0 var(--ink-3); }

/* Interest cards */
.int-card     { opacity:0; transition:transform .4s var(--eout),box-shadow .4s var(--eout),filter .3s var(--epaint); }
.int-card.vis { animation:intFan .6s var(--eout) calc(var(--ii,0)*.07s) forwards; }
.int-card:hover { transform:rotate(0deg) translateY(-2px) !important; box-shadow:0 5px 16px rgba(55,50,35,.11),0 2px 5px rgba(55,50,35,.07) !important; filter:brightness(1.01); }

/* Experience */
.exp-item               { opacity:0; transform:translateX(-28px); transition:opacity .7s var(--eout),transform .7s var(--eout),padding-left .3s var(--eout); }
.exp-item.vis           { opacity:1; transform:translateX(0); }
.exp-item:nth-child(even)      { transform:translateX(28px); }
.exp-item:nth-child(even).vis  { transform:translateX(0); }
.exp-item:hover { padding-left:.6rem; }

/* Prose */
.prose p { opacity:0; transform:translateY(10px); transition:opacity .65s var(--eout),transform .65s var(--eout); }
.sec.vis .prose p:nth-child(1) {opacity:1;transform:none;transition-delay:.1s}
.sec.vis .prose p:nth-child(2) {opacity:1;transform:none;transition-delay:.25s}
.sec.vis .prose p:nth-child(3) {opacity:1;transform:none;transition-delay:.4s}
.sec.vis .prose p:nth-child(n+4){opacity:1;transform:none;transition-delay:.55s}
