/* Icons and reveals, ported from haloai.click (lyokolabscom/halo-ai, site/assets/site.css) so both sites move
   the same way. Icons are SVGs split into named parts (components/icons/Icon.tsx); each draws in when it scrolls
   into view and plays its own gesture when its link or button is hovered. Cards and images rise in on view.
   components/behaviors/Reveal.tsx adds .in-view / .is-done. THEME_SNIPPET adds html.ic-anim before the first paint
   (not with reduced motion); without JavaScript everything simply shows. */

/* =========================================================================
   ICONS — every icon animates, each in its own way.
   Entrance: plays every time the icon scrolls into view (app.js adds .in-view, then .is-done; both are removed when it leaves).
   Hover: replays a short, icon-specific motion when its link/card/button is hovered.
   Without JS or with reduced motion the icons simply show their final state.
   ========================================================================= */
.ic{overflow:visible}
.ic *{transform-box:view-box}
.ic .p-draw{stroke-dasharray:1 1;stroke-dashoffset:0}
:root{--ic-ease:cubic-bezier(.2,.9,.25,1.15);--ic-out:cubic-bezier(.2,.7,.2,1)}

/* hidden until it enters (only when JS will reveal it) */
html.ic-anim .ic:not(.in-view) .p-draw{stroke-dashoffset:1}
html.ic-anim .ic:not(.in-view) :is(.p-shackle,.p-body,.p-rings,.p-dot,.p-hole,.p-bullet,.p-a,.p-b,.p-handset,.p-wave,.p-lid,.p-lidt,.p-beam,.p-pupil){opacity:0}

@keyframes ic-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes ic-fade{from{opacity:0}to{opacity:1}}
@keyframes ic-pop{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.3)}100%{transform:scale(1)}}
@keyframes ic-nudge-x{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
@keyframes ic-nudge-y{0%,100%{transform:translateY(0)}50%{transform:translateY(2.5px)}}
@keyframes ic-turn{from{transform:rotate(0)}to{transform:rotate(90deg)}}
@keyframes ic-shackle{0%{opacity:0;transform:translateY(-5px)}45%{opacity:1;transform:translateY(-5px)}75%{transform:translateY(.8px)}100%{transform:translateY(0)}}
@keyframes ic-unlock{0%,100%{transform:translateY(0)}35%,55%{transform:translateY(-3px)}80%{transform:translateY(.6px)}}
@keyframes ic-rise{from{opacity:0;transform:scaleY(.3)}to{opacity:1;transform:scaleY(1)}}
@keyframes ic-drop{0%{opacity:0;transform:translateY(-4px)}70%{opacity:1;transform:translateY(.6px)}100%{transform:translateY(0)}}
@keyframes ic-swing{0%{transform:rotate(-20deg)}30%{transform:rotate(13deg)}55%{transform:rotate(-7deg)}78%{transform:rotate(3deg)}100%{transform:rotate(0)}}
@keyframes ic-tip{0%{transform:rotate(-15deg)}28%{transform:rotate(11deg)}52%{transform:rotate(-6deg)}75%{transform:rotate(2.5deg)}100%{transform:rotate(0)}}
@keyframes ic-tip-c{0%{transform:rotate(15deg)}28%{transform:rotate(-11deg)}52%{transform:rotate(6deg)}75%{transform:rotate(-2.5deg)}100%{transform:rotate(0)}}
@keyframes ic-shift{0%,100%{transform:translateX(0)}45%{transform:translateX(2.5px)}}
@keyframes ic-link-a{from{opacity:0;transform:translate(4px,-4px)}to{opacity:1;transform:translate(0,0)}}
@keyframes ic-link-b{from{opacity:0;transform:translate(-4px,4px)}to{opacity:1;transform:translate(0,0)}}
@keyframes ic-apart-a{0%,100%{transform:translate(0,0)}45%{transform:translate(1.8px,-1.8px)}}
@keyframes ic-apart-b{0%,100%{transform:translate(0,0)}45%{transform:translate(-1.8px,1.8px)}}
@keyframes ic-slide-l{from{opacity:0;transform:translateX(7px)}to{opacity:1;transform:translateX(0)}}
@keyframes ic-slide-r{from{opacity:0;transform:translateX(-7px)}to{opacity:1;transform:translateX(0)}}
@keyframes ic-swap-a{0%,100%{transform:translateX(0)}45%{transform:translateX(-2.5px)}}
@keyframes ic-swap-b{0%,100%{transform:translateX(0)}45%{transform:translateX(2.5px)}}
@keyframes ic-ring{0%,100%{transform:rotate(0)}8%,24%,40%{transform:rotate(-13deg)}16%,32%,48%{transform:rotate(13deg)}58%{transform:rotate(0)}}
@keyframes ic-wave{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}
@keyframes ic-open{0%{opacity:0;transform:scaleY(.08)}55%{opacity:1;transform:scaleY(1.08)}100%{transform:scaleY(1)}}
@keyframes ic-look{0%,100%{transform:translateX(0)}30%{transform:translateX(-1.8px)}65%{transform:translateX(1.8px)}}
@keyframes ic-blink{0%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}
@keyframes ic-lid{0%{opacity:0;transform:translateY(-5px) rotate(-22deg)}60%{opacity:1;transform:translateY(0) rotate(4deg)}100%{transform:rotate(0)}}
@keyframes ic-lid-lift{0%,100%{transform:rotate(0)}40%{transform:translateY(-1.5px) rotate(-18deg)}75%{transform:rotate(3deg)}}
@keyframes ic-flap{0%,100%{transform:translateY(0)}45%{transform:translateY(1.6px)}}

/* entrance, per icon */
.ic.in-view:not(.is-done) .p-draw{animation:ic-draw .55s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic.in-view:not(.is-done) .p-2{animation-delay:calc(var(--icd,0s) + .18s)}
.ic.in-view:not(.is-done) .p-3{animation-delay:calc(var(--icd,0s) + .32s)}
.ic-check.in-view:not(.is-done) .p-draw{animation:ic-draw .45s var(--ic-out) both,ic-pop .5s var(--ic-ease) both;transform-origin:12px 12px;animation-delay:var(--icd,0s)}
.ic-lock .p-body{transform-origin:12px 21px}
.ic-lock.in-view:not(.is-done) .p-body{animation:ic-rise .35s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic-lock.in-view:not(.is-done) .p-shackle{animation:ic-shackle .7s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .15s)}
.ic-cal.in-view:not(.is-done) .p-rings{animation:ic-drop .45s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .4s)}
.ic-cal .p-dot{transform-origin:12px 15px}
.ic-cal.in-view:not(.is-done) .p-dot{animation:ic-pop .45s var(--ic-ease) both;animation-delay:calc(var(--icd,0s) + .65s)}
.ic-tag .p-swing{transform-origin:7.5px 8.5px}
.ic-tag.in-view:not(.is-done) .p-swing{animation:ic-swing 1.1s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .2s)}
.ic-tag .p-hole{transform-origin:7.5px 8.5px}
.ic-tag.in-view:not(.is-done) .p-hole{animation:ic-pop .4s var(--ic-ease) both;animation-delay:var(--icd,0s)}
.ic-scale .p-beam{transform-origin:12px 8px}
.ic-scale .p-l{transform-origin:6px 8px}
.ic-scale .p-r{transform-origin:18px 8px}
.ic-scale.in-view:not(.is-done) .p-beam{animation:ic-fade .2s both,ic-tip 1.2s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .25s)}
.ic-scale.in-view:not(.is-done) .p-pan{animation:ic-tip-c 1.2s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .25s)}
.ic-list .p-bullet{transform-origin:4px 12px}
.ic-list.in-view:not(.is-done) .p-1 .p-bullet{animation:ic-fade .3s both;animation-delay:calc(var(--icd,0s) + .1s)}
.ic-list.in-view:not(.is-done) .p-2 .p-draw,.ic-list.in-view:not(.is-done) .p-2 .p-bullet{animation-delay:calc(var(--icd,0s) + .15s)}
.ic-list.in-view:not(.is-done) .p-3 .p-draw,.ic-list.in-view:not(.is-done) .p-3 .p-bullet{animation-delay:calc(var(--icd,0s) + .3s)}
.ic-list.in-view:not(.is-done) .p-bullet{animation-name:ic-fade;animation-duration:.3s;animation-fill-mode:both}
.ic-link.in-view:not(.is-done) .p-a{animation:ic-link-a .55s var(--ic-ease) both;animation-delay:var(--icd,0s)}
.ic-link.in-view:not(.is-done) .p-b{animation:ic-link-b .55s var(--ic-ease) both;animation-delay:calc(var(--icd,0s) + .08s)}
.ic-swap.in-view:not(.is-done) .p-a{animation:ic-slide-l .5s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic-swap.in-view:not(.is-done) .p-b{animation:ic-slide-r .5s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .15s)}
.ic-phone .p-handset{transform-origin:11px 12px}
.ic-phone .p-wave{transform-origin:15px 9px}
.ic-phone.in-view:not(.is-done) .p-handset{animation:ic-fade .25s both,ic-ring 1.3s ease-in-out both;animation-delay:var(--icd,0s)}
.ic-phone.in-view:not(.is-done) .p-wave{animation:ic-wave .45s var(--ic-ease) both;animation-delay:calc(var(--icd,0s) + .5s)}
.ic-phone.in-view:not(.is-done) .p-wave.p-1{animation-delay:calc(var(--icd,0s) + .65s)}
.ic-eye .p-lid{transform-origin:12px 12px}
.ic-eye .p-pupil{transform-origin:12px 12px}
.ic-eye.in-view:not(.is-done) .p-lid{animation:ic-open .55s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic-eye.in-view:not(.is-done) .p-pupil{animation:ic-fade .2s both,ic-look 1s ease-in-out both;animation-delay:calc(var(--icd,0s) + .45s)}
.ic-trash .p-lidt{transform-origin:4px 7px}
.ic-trash.in-view:not(.is-done) .p-lidt{animation:ic-lid .65s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .3s)}
.ic-mail .p-flap{transform-origin:12px 7px}

/* hover: the icon's own gesture */
:is(a,button,summary,.card,.chip,label,.ic-hover):hover>.ic.is-done .p-move,
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-move{animation:ic-nudge-x .7s ease-in-out infinite}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-check.is-done .p-draw{animation:ic-draw .4s var(--ic-out),ic-pop .45s var(--ic-ease);transform-origin:12px 12px}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-x.is-done .p-turn{animation:ic-turn .35s var(--ic-out);transform-origin:12px 12px}
:is(a,button,summary,.card,.chip,label,span,.ic-hover):hover .ic-lock.is-done .p-shackle{animation:ic-unlock .8s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-chev.is-done .p-draw{animation:ic-nudge-y .6s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-menu.is-done .p-mid{transform:scaleX(.6);transform-origin:20px 12px;transition:transform .25s var(--ic-out)}
.ic-menu .p-mid{transition:transform .25s var(--ic-out);transform-origin:20px 12px}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-cal.is-done .p-rings{animation:ic-drop .4s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-cal.is-done .p-dot{animation:ic-pop .45s var(--ic-ease) .1s both}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-tag.is-done .p-swing{animation:ic-swing 1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-scale.is-done .p-beam{animation:ic-tip 1.1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-scale.is-done .p-pan{animation:ic-tip-c 1.1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-list.is-done .p-row{animation:ic-shift .5s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-list.is-done .p-2{animation-delay:.08s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-list.is-done .p-3{animation-delay:.16s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-link.is-done .p-a{animation:ic-apart-a .6s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-link.is-done .p-b{animation:ic-apart-b .6s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-swap.is-done .p-a{animation:ic-swap-a .6s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-swap.is-done .p-b{animation:ic-swap-b .6s ease-in-out .08s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-phone.is-done .p-handset{animation:ic-ring 1.1s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-phone.is-done .p-wave{animation:ic-wave .45s var(--ic-ease) .25s both}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-eye.is-done .p-lid{animation:ic-blink .35s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-eye.is-done .p-pupil{animation:ic-look .9s ease-in-out .3s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-trash.is-done .p-lidt{animation:ic-lid-lift .8s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic-mail.is-done .p-flap{animation:ic-flap .55s ease-in-out}

@keyframes ic-drive{0%{opacity:0;transform:translateX(-7px)}70%{opacity:1;transform:translateX(.8px)}100%{transform:translateX(0)}}
@keyframes ic-hop{0%,100%{transform:translateY(0)}35%{transform:translateY(-3px)}60%{transform:translateY(.5px)}}
@keyframes ic-flag{0%{transform:skewY(-10deg) scaleX(.6);opacity:0}40%{opacity:1;transform:skewY(6deg) scaleX(1)}70%{transform:skewY(-3deg)}100%{transform:skewY(0)}}

/* =========================================================================
   ICONS: generic parts, shared by industries, verticals, solutions and cards.
   Entrance: p-pop / p-fall / p-grow / p-in (+ --pd delay), p-e-* motions.
   Hover on the card/link: p-h-* gestures. Transform origins are set inline in view-box units.
   ========================================================================= */
html.ic-anim .ic:not(.in-view) :is(.p-pop,.p-fall,.p-grow,.p-in){opacity:0}
.ic.in-view:not(.is-done) .p-pop{animation:ic-pop .45s var(--ic-ease) both;animation-delay:calc(var(--icd,0s) + var(--pd,.35s))}
.ic.in-view:not(.is-done) .p-fall{animation:ic-drop .5s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + var(--pd,.3s))}
.ic.in-view:not(.is-done) .p-grow{animation:ic-rise .45s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + var(--pd,.2s))}
.ic.in-view:not(.is-done) .p-in{animation:ic-fade .35s both;animation-delay:calc(var(--icd,0s) + var(--pd,.3s))}
.ic.in-view:not(.is-done) .p-e-drive{animation:ic-drive .7s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic.in-view:not(.is-done) .p-e-spin{animation:ic-spin-in .9s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .15s)}
.ic.in-view:not(.is-done) .p-e-ring{animation:ic-ring 1.2s ease-in-out both;animation-delay:calc(var(--icd,0s) + .35s)}
.ic.in-view:not(.is-done) .p-e-beat{animation:ic-beat 1s ease-in-out both;animation-delay:calc(var(--icd,0s) + .45s)}
.ic.in-view:not(.is-done) .p-e-turn{animation:ic-key-in .9s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .3s)}
.ic.in-view:not(.is-done) .p-e-hit{animation:ic-hit .8s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .35s)}
.ic.in-view:not(.is-done) .p-e-sweep{animation:ic-sweep-in 1s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .25s)}
.ic.in-view:not(.is-done) .p-e-pin{animation:ic-pin .7s var(--ic-out) both;animation-delay:var(--icd,0s)}
.ic.in-view:not(.is-done) .p-e-flag{animation:ic-flag .9s var(--ic-out) both;animation-delay:calc(var(--icd,0s) + .2s)}
.ic.in-view:not(.is-done) .p-e-zap{animation:ic-zap 1s ease-out both;animation-delay:calc(var(--icd,0s) + var(--pd,.35s))}

@keyframes ic-spin-in{from{transform:rotate(-270deg)}to{transform:rotate(0)}}
@keyframes ic-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes ic-beat{0%,100%{transform:scale(1)}18%{transform:scale(1.16)}34%{transform:scale(.97)}50%{transform:scale(1.1)}70%{transform:scale(1)}}
@keyframes ic-key-in{0%{opacity:0;transform:rotate(-70deg)}55%{opacity:1;transform:rotate(9deg)}100%{transform:rotate(0)}}
@keyframes ic-key{0%,100%{transform:rotate(0)}40%{transform:rotate(-35deg)}70%{transform:rotate(5deg)}}
@keyframes ic-hit{0%{transform:rotate(-38deg)}45%{transform:rotate(7deg)}65%{transform:rotate(-4deg)}82%{transform:rotate(1.5deg)}100%{transform:rotate(0)}}
@keyframes ic-sweep-in{0%{transform:rotate(-115deg)}70%{transform:rotate(12deg)}100%{transform:rotate(0)}}
@keyframes ic-sweep{0%,100%{transform:rotate(0)}35%{transform:rotate(-95deg)}75%{transform:rotate(10deg)}}
@keyframes ic-pin{0%{opacity:0;transform:translateY(-7px)}55%{opacity:1;transform:translateY(1px)}78%{transform:translateY(-1.2px)}100%{transform:translateY(0)}}
@keyframes ic-zap{0%{opacity:0}14%{opacity:1}26%{opacity:.15}40%{opacity:1}52%{opacity:.4}100%{opacity:1}}
@keyframes ic-scan{0%,100%{transform:translate(0,0)}30%{transform:translate(-1.6px,-1px)}65%{transform:translate(1.6px,-1px)}}
@keyframes ic-flip{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.1)}}
@keyframes ic-type{0%,100%{transform:translateY(0)}40%{transform:translateY(-2.2px)}}

:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-swing{animation:ic-swing 1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-drive{animation:ic-drive .7s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-beat{animation:ic-beat .9s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-redraw{animation:ic-draw .6s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-zap{animation:ic-zap .8s ease-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-hop{animation:ic-hop .6s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-hit{animation:ic-hit .7s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-turn{animation:ic-key .8s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-type>*{animation:ic-type .5s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-type>:nth-child(2){animation-delay:.1s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-type>:nth-child(3){animation-delay:.2s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-sweep{animation:ic-sweep 1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-drop{animation:ic-drop .5s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-ring{animation:ic-ring 1.1s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-write>*{animation:ic-draw .45s var(--ic-out) both}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-write>:nth-child(2){animation-delay:.12s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-write>:nth-child(3){animation-delay:.24s}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-spin{animation:ic-spin .8s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-pin{animation:ic-pin .6s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-scan{animation:ic-scan .9s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-flip{animation:ic-flip .6s ease-in-out}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-nod{animation:ic-pop .45s var(--ic-ease)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-grow{animation:ic-rise .45s var(--ic-out) both;animation-delay:calc(var(--pd,.2s) - .2s)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-tilt{animation:ic-tip 1s var(--ic-out)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-twinkle{animation:ic-pop .5s var(--ic-ease)}
:is(a,button,summary,.card,.chip,label,.ic-hover):hover .ic.is-done .p-h-flag{animation:ic-flag .9s var(--ic-out)}
@media (prefers-reduced-motion: reduce){ .ic *{animation:none!important} }

/* =========================================================================
   REVEALS: cards and images rise in each time they enter the viewport (as on haloai.click).
   The selector list is shared with components/behaviors/Reveal.tsx (REVEAL_SELECTOR).
   ========================================================================= */
:root{--rv-ease:cubic-bezier(.16,1,.3,1)}
html.ic-anim :is(.rv,.post-a-body figure,.post-a-body>p:has(>img:only-child),.cs figure):not(.in-view){opacity:0}
:is(.rv,.post-a-body figure,.post-a-body>p:has(>img:only-child),.cs figure).in-view{animation:rv-rise .8s var(--rv-ease) backwards;animation-delay:var(--rvd,0s)}
@keyframes rv-rise{from{opacity:0;transform:translateY(18px) scale(.985)}}
@media (prefers-reduced-motion: reduce){:is(.rv,.post-a-body figure,.cs figure).in-view{animation:none}}
