/* Interaction layer: keep the Omni composition, animate only its existing surfaces. */
@property --omni-search-angle{syntax:'<angle>';inherits:false;initial-value:0deg}
.omni-motion-root{position:relative;isolation:isolate;background-image:none!important}
.omni-motion-root>.e1vujlyi0,.omni-motion-root>section{position:relative;z-index:1}
.omni-ambient{position:absolute;inset:0 0 auto;height:1100px;overflow:hidden;pointer-events:none;z-index:0;contain:paint}
.omni-ambient__orb{position:absolute;width:900px;height:700px;border-radius:50%;filter:blur(70px);will-change:transform,opacity}
.omni-ambient__orb--blue{left:45%;top:-280px;background:radial-gradient(ellipse,#9aafff 0%,#cad4ff66 42%,transparent 72%);opacity:var(--ambient-blue,.32);transform:translate3d(var(--ambient-x,0px),var(--ambient-y,0px),0)}
.omni-ambient__orb--pink{left:-15%;top:-260px;background:radial-gradient(ellipse,#ff98ac 0%,#ffe0e950 45%,transparent 72%);opacity:var(--ambient-pink,.21);transform:translate3d(calc(var(--ambient-x,0px)*-.7),calc(var(--ambient-y,0px)*.6),0)}
.omni-ambient__orb--yellow{left:15%;top:-320px;background:radial-gradient(ellipse,#ffdf74 0%,#fff1c84d 46%,transparent 72%);opacity:var(--ambient-yellow,.24);transform:translate3d(calc(var(--ambient-x,0px)*.5),calc(var(--ambient-y,0px)*-.6),0)}
.omni-ribbon{display:none;position:absolute;top:0;width:clamp(200px,calc((100vw - 1280px)/2 + 200px),302px);height:auto;z-index:0;pointer-events:none;overflow:visible;will-change:transform}
.omni-ribbon--left{left:0;transform-origin:left 30%;animation:omni-ribbon-drift 10s cubic-bezier(.45,0,.55,1) infinite}
.omni-ribbon--right{right:0;transform-origin:right 35%;animation:omni-ribbon-drift 12s cubic-bezier(.45,0,.55,1) -4s infinite reverse}
.omni-ribbon__ink path{transform-box:fill-box;transform-origin:center;animation:omni-ribbon-wave 6s cubic-bezier(.45,0,.55,1) infinite;animation-delay:calc(var(--ribbon-phase,0)*-.16s)}
.omni-motion-root.is-offscreen .omni-ribbon,.omni-motion-root.is-offscreen .omni-ribbon path{animation-play-state:paused}
@media(min-width:1280px){.omni-ribbon{display:block}}
.omni-search-glow{position:relative;isolation:isolate}
.omni-search-glow:before{content:'';position:absolute;inset:-1px;padding:1px;border-radius:999px;background:conic-gradient(from var(--omni-search-angle),#3b68fc00 0deg,#3b68fc00 245deg,#3b68fc9c 280deg,#ff40598c 312deg,#ffcc0094 337deg,#3b68fc00 360deg);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none;z-index:2;opacity:.62;animation:omni-search-orbit 9s linear infinite;transition:opacity 300ms cubic-bezier(.22,1,.36,1)}
.omni-search-glow:focus-within:before{opacity:.9}
.omni-motion-root.is-offscreen .omni-search-glow:before{animation-play-state:paused}
/* Real source images. Transparent padding is cropped by layout, never by redrawing a logo. */
.source-home [data-testid=featured-logos-wrapper] .omni-brand-window{--logo-width:clamp(112px,13vw,180px);display:block;position:relative;overflow:hidden;width:var(--logo-width);height:72px;margin:auto;background:transparent}
.source-home [data-testid=featured-logos-wrapper] .omni-brand-window img{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--logo-width);max-width:none;height:auto;max-height:none;object-fit:contain;filter:none}
.source-home [data-testid=featured-logos-wrapper] .omni-brand--reolink img{width:calc(var(--logo-width)*1.36612);height:auto}
.source-home [data-testid=featured-logos-wrapper] .omni-brand--onvif img{width:calc(var(--logo-width)*1.30112);height:auto}
.source-home .omni-art-row{display:grid;grid-template-columns:1.35fr 1.6fr .8fr;gap:24px;align-items:stretch;overflow:hidden}
.source-home .omni-art-row img.omni-generated-art{display:block;width:100%;height:clamp(180px,18vw,260px);object-fit:cover;object-position:center;border-radius:8px;max-width:none}
/* Four equal cards per desktop row; a static readable grid is the no-script fallback. */
.source-home [data-testid=home-popular-section-calculators].omni-decks{display:block;width:min(100%,1120px);margin-inline:auto;overflow:visible;perspective:1400px}
.omni-deck-hint{margin:0 auto 24px;text-align:center;font-size:12px;line-height:18px;color:#8390a8}
.omni-deck-row{position:relative;padding:24px 0 40px;isolation:isolate}
.omni-deck-stage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;position:relative;transform-style:preserve-3d}
.source-home .omni-decks .omni-deck-stage>a.omni-deck-card{grid-column:auto!important;grid-row:auto!important;display:block;width:100%;height:260px!important;min-height:260px!important;max-height:260px!important;margin:0;transform-origin:50% 78%;backface-visibility:hidden;box-shadow:0 4px 14px #243b6810;will-change:transform;z-index:calc(var(--card-index,0) + 1);text-decoration:none}
.source-home .omni-decks .omni-deck-card article{height:100%;box-sizing:border-box;padding:20px;gap:14px;display:flex;flex-direction:column}
.source-home .omni-decks .omni-deck-card h3{font-size:15px;line-height:24px;min-height:48px;align-items:flex-start}
.source-home .omni-decks .omni-deck-card p{font-size:13px;line-height:20px;margin:0;min-height:0;flex:1;overflow:hidden}
.source-home .omni-decks .omni-deck-card article>span{font-size:12px;line-height:18px;flex:0 0 auto}
.omni-decks.is-motion-active .omni-deck-card{transform:translate3d(calc(var(--fold-x,0px)*(1 - var(--deck-open,1))),calc(var(--fold-y,0px)*(1 - var(--deck-open,1))),0) rotate(calc(var(--fold-angle,0deg)*(1 - var(--deck-open,1)))) scale(calc(.96 + .04*var(--deck-open,1)))}
.omni-decks.is-motion-active .omni-deck-row.is-manually-open .omni-deck-card,.omni-decks.is-motion-active .omni-deck-row.has-keyboard-focus .omni-deck-card{transition:transform 600ms cubic-bezier(.22,1,.36,1),box-shadow 300ms cubic-bezier(.22,1,.36,1)}
.omni-deck-card:focus-visible{outline:3px solid #8fa6ff;outline-offset:4px}
/* Remove the empty footer footprint, without changing the original multi-column footer. */
.source-home footer,.source-inner footer{min-height:0!important;height:auto!important;padding-bottom:0!important;margin-bottom:0!important;content-visibility:visible!important}
footer .e1sepkgg0{padding-top:16px!important;padding-bottom:16px!important;margin-bottom:0!important}
.source-home .ek8nv2v0{padding-bottom:32px!important}
@media(max-width:1023px){.source-home .omni-decks .omni-deck-stage>a.omni-deck-card{height:auto!important;min-height:0!important;max-height:none!important}.source-home .omni-decks .omni-deck-card article{height:auto;gap:12px;padding:18px}.source-home .omni-decks .omni-deck-card h3{min-height:0}.source-home .omni-decks .omni-deck-card p{flex:0 0 auto;overflow:visible}.omni-deck-stage{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.omni-deck-row{padding:0 0 16px}.omni-deck-hint{display:none}.source-home .omni-decks .omni-deck-stage>a.omni-deck-card{transform:none!important;box-shadow:none}.source-home .omni-art-row{gap:16px}.source-home .omni-art-row img.omni-generated-art{height:200px}.omni-ambient__orb{filter:blur(48px)}}
@media(max-width:599px){.omni-deck-stage{grid-template-columns:1fr}.omni-deck-row{padding-bottom:16px}.source-home .omni-decks .omni-deck-stage>a.omni-deck-card{height:auto!important;min-height:0!important;max-height:none!important}.source-home .omni-decks .omni-deck-card h3{min-height:24px}.omni-ambient{height:700px}.omni-ambient__orb{width:600px;height:500px}.omni-ambient__orb--blue{left:-10%}.omni-ambient__orb--yellow{left:-50%}}
@media(prefers-reduced-motion:reduce){.omni-ribbon,.omni-ribbon__ink path,.omni-search-glow:before{animation:none!important;transform:none!important}.omni-ribbon__ink{filter:none!important}.omni-ambient{display:none}.omni-deck-card{transform:none!important;transition:none!important}.omni-deck-hint{display:none}}
@keyframes omni-search-orbit{to{--omni-search-angle:360deg}}
@keyframes omni-ribbon-drift{0%,100%{transform:translate3d(0,-5px,0) rotate(-.8deg)}50%{transform:translate3d(3px,9px,0) rotate(1.2deg)}}
@keyframes omni-ribbon-wave{0%,100%{transform:translate3d(0,-1px,0)}50%{transform:translate3d(0,2px,0)}}
.source-home .omni-art-row img.omni-generated-art:first-child{object-position:left center}
.source-home .omni-motion-root{overflow-x:clip}
/* A visibly thicker, still clean search-field light trail. */
.omni-search-glow:before{inset:-3px;padding:3px;opacity:.86;animation-duration:6s}
.omni-search-glow:focus-within:before{opacity:1}
/* Larger color travel plus a soft halo directly tracking the pointer. */
.omni-ambient__orb--blue{opacity:var(--ambient-blue,.46)}
.omni-ambient__orb--pink{opacity:var(--ambient-pink,.36)}
.omni-ambient__orb--yellow{opacity:var(--ambient-yellow,.34)}
.omni-cursor-glow{display:block;position:absolute;left:0;top:0;width:820px;height:820px;border-radius:50%;pointer-events:none;background:radial-gradient(ellipse at 38% 38%,#7b98ff55 0%,#afbeff2e 24%,transparent 58%),radial-gradient(ellipse at 72% 42%,#ff8eae52 0%,#ffd4df24 25%,transparent 58%),radial-gradient(ellipse at 50% 72%,#ffdb6c4d 0%,#ffedb025 24%,transparent 60%);filter:blur(24px);opacity:var(--cursor-alpha,0);transform:translate3d(calc(var(--cursor-x,50vw) - 410px),calc(var(--cursor-y,250px) - 410px),0);transition:opacity 300ms cubic-bezier(.22,1,.36,1);will-change:transform,opacity}
.source-home .e1vujlyi2{background-color:rgba(255,255,255,.82)}
/* Animate the existing paths. The outer SVG boxes and all card labels stay fixed. */
.omni-icon-loop{overflow:visible;perspective:160px}
.omni-icon-motion{transform-box:fill-box;transform-origin:50% 50%;animation-duration:3.2s;animation-timing-function:cubic-bezier(.45,0,.55,1);animation-iteration-count:infinite;animation-delay:var(--icon-delay,0s);will-change:transform}
.omni-icon--flip .omni-icon-motion{animation-name:omni-icon-flip;animation-duration:4s}
.omni-icon--wobble .omni-icon-motion{animation-name:omni-icon-wobble;animation-duration:3.4s;transform-origin:50% 85%}
.omni-icon--tap .omni-icon-motion{animation-name:omni-icon-tap;animation-duration:2.8s;transform-origin:40% 80%}
.omni-icon--spin .omni-icon-motion{animation-name:omni-icon-spin;animation-duration:4.8s;animation-timing-function:linear}
.omni-icon--breathe .omni-icon-motion{animation-name:omni-icon-breathe;animation-duration:3s}
.omni-icon--scan .omni-icon-motion{animation-name:omni-icon-scan;animation-duration:3.1s}
.omni-icon--bounce .omni-icon-motion{animation-name:omni-icon-bounce;animation-duration:2.6s}
.omni-icon--heartbeat .omni-icon-motion{animation-name:omni-icon-heartbeat;animation-duration:2.8s}
.omni-icon--spark .omni-icon-motion{animation-name:omni-icon-spark;animation-duration:2.7s}
.omni-icon--orbit .omni-icon-motion{animation-name:omni-icon-spin;animation-duration:7s;animation-timing-function:linear}
.omni-icon--run .omni-icon-motion{animation-name:omni-icon-run;animation-duration:1.9s}
.omni-icon--twinkle .omni-icon-motion{animation-name:omni-icon-twinkle;animation-duration:3.5s}
.omni-icon-dot{transform-box:fill-box;transform-origin:center;animation:omni-icon-dot 1.8s cubic-bezier(.45,0,.55,1) infinite;animation-delay:calc(var(--part-index)*-.22s)}
.omni-icon-bar{transform-box:fill-box;transform-origin:center bottom;animation:omni-icon-bar 2.4s cubic-bezier(.45,0,.55,1) infinite;animation-delay:calc(var(--part-index)*-.32s)}
.omni-builder-loop{animation:omni-builder-loop 4.8s cubic-bezier(.45,0,.55,1) infinite;will-change:transform}
.omni-motion-root.is-offscreen .omni-icon-motion,.omni-motion-root.is-offscreen .omni-icon-dot,.omni-motion-root.is-offscreen .omni-icon-bar,.omni-motion-root.is-offscreen .omni-builder-loop{animation-play-state:paused}
@keyframes omni-icon-flip{0%,100%{transform:perspective(120px) rotateY(-28deg) rotate(-5deg)}50%{transform:perspective(120px) rotateY(28deg) rotate(5deg)}}
@keyframes omni-icon-wobble{0%,100%{transform:rotate(-9deg)}25%{transform:rotate(11deg) translateY(-2px)}50%{transform:rotate(-6deg)}75%{transform:rotate(7deg)}}
@keyframes omni-icon-tap{0%,45%,100%{transform:rotate(-12deg)}18%,65%{transform:rotate(13deg) translateY(2px)}28%,76%{transform:rotate(-4deg)}}
@keyframes omni-icon-spin{to{transform:rotate(360deg)}}
@keyframes omni-icon-breathe{0%,100%{transform:scale(.92)}50%{transform:scale(1.18) translateY(-1px)}}
@keyframes omni-icon-scan{0%,100%{transform:translateY(2px) rotate(-4deg);opacity:.8}50%{transform:translateY(-3px) rotate(4deg);opacity:1}}
@keyframes omni-icon-bounce{0%,100%{transform:translateY(1px) scale(1)}40%{transform:translateY(-4px) scale(1.1)}65%{transform:translateY(2px) scale(.96)}}
@keyframes omni-icon-heartbeat{0%,40%,100%{transform:scale(1)}12%,28%{transform:scale(1.23)}20%{transform:scale(1.04)}}
@keyframes omni-icon-spark{0%,65%,100%{transform:scale(1) rotate(0deg)}20%{transform:scale(1.22) rotate(12deg)}40%{transform:scale(1.08) rotate(-7deg)}}
@keyframes omni-icon-run{0%,100%{transform:translateX(-3px) rotate(-8deg)}50%{transform:translateX(3px) rotate(8deg)}}
@keyframes omni-icon-twinkle{0%,100%{transform:rotate(-12deg) scale(.94)}50%{transform:rotate(14deg) scale(1.2)}}
@keyframes omni-icon-dot{0%,65%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}
@keyframes omni-icon-bar{0%,100%{transform:scaleY(.62)}50%{transform:scaleY(1.12)}}
@keyframes omni-builder-loop{0%,100%{transform:translateY(3px) rotate(-1deg)}50%{transform:translateY(-4px) rotate(1deg)}}
@media(prefers-reduced-motion:reduce){.omni-ribbon__flow,.omni-ribbon__sheen,.omni-icon-loop,.omni-icon-motion,.omni-icon-motion>path,.omni-icon-dot,.omni-icon-bar,.omni-builder-loop{animation:none!important;transform:none!important}.omni-cursor-glow{display:none}}
@media(prefers-reduced-motion:reduce){.omni-ribbon__flow,.omni-ribbon__sheen{animation:none!important}}

/* First-screen icons: sticker-style loops. The whole icon floats, its mark travels, its parts breathe. */
.omni-icon-loop{animation:omni-icon-float 3.8s cubic-bezier(.45,0,.55,1) infinite;animation-delay:calc(var(--icon-delay,0s)*.55);transform-box:fill-box;transform-origin:50% 50%}
.omni-icon-motion{animation-duration:2.9s}

.omni-icon--flip .omni-icon-motion{animation-duration:3.4s}
.omni-icon--wobble .omni-icon-motion{animation-duration:2.8s}
.omni-icon--tap .omni-icon-motion{animation-duration:2.4s}
.omni-icon--spin .omni-icon-motion{animation-duration:4.2s}
.omni-icon--breathe .omni-icon-motion{animation-duration:2.6s}
.omni-icon--scan .omni-icon-motion{animation-duration:2.6s}
.omni-icon--bounce .omni-icon-motion{animation-duration:2.2s}
.omni-icon--heartbeat .omni-icon-motion{animation-duration:2.4s}
.omni-icon--spark .omni-icon-motion{animation-duration:2.4s}
.omni-icon--orbit .omni-icon-motion{animation-duration:5.6s}
.omni-icon--twinkle .omni-icon-motion{animation-duration:3s}
.omni-motion-root.is-offscreen .omni-icon-loop,.omni-motion-root.is-offscreen .omni-icon-motion>path{animation-play-state:paused}
@keyframes omni-icon-float{0%{transform:scale(1) rotate(0deg)}7%{transform:scale(1.14) rotate(-3.2deg)}15%{transform:scale(.96) rotate(1.8deg)}24%{transform:scale(1) rotate(0deg)}52%{transform:translate3d(0,-2.8px,0) rotate(-1.6deg) scale(1.02)}72%{transform:translate3d(0,1.2px,0) rotate(1.2deg)}100%{transform:scale(1) rotate(0deg)}}
@keyframes omni-icon-part{0%,100%{transform:scale(1)}40%{transform:scale(1.06) translateY(-.7px)}66%{transform:scale(.98) translateY(.5px)}}

/* Pastel wash now reads the pointer: bigger travel, warmer tints and a tighter trailing spot. */
.omni-ambient__orb{filter:blur(64px);width:780px;height:600px}
.omni-ambient__orb--blue{background:radial-gradient(ellipse,#94aaff 0%,#aebeff62 46%,transparent 74%);opacity:var(--ambient-blue,.4)}
.omni-ambient__orb--pink{background:radial-gradient(ellipse,#ff97ae 0%,#ffd2de5e 46%,transparent 74%);opacity:var(--ambient-pink,.32)}
.omni-ambient__orb--yellow{background:radial-gradient(ellipse,#ffd86a 0%,#ffedb15e 46%,transparent 74%);opacity:var(--ambient-yellow,.34)}
.omni-cursor-glow{width:620px;height:620px;filter:blur(40px);background:radial-gradient(ellipse at 40% 38%,#7d9bff6b 0%,#b9c6ff33 34%,transparent 66%),radial-gradient(ellipse at 70% 44%,#ff90ae66 0%,#ffd4de2e 34%,transparent 66%),radial-gradient(ellipse at 50% 70%,#ffd7635c 0%,#ffeeb02b 32%,transparent 66%);transform:translate3d(calc(var(--cursor-x,50vw) - 310px),calc(var(--cursor-y,250px) - 310px),0)}
@media(max-width:599px){.omni-ambient__orb{width:600px;height:500px;filter:blur(48px)}.omni-cursor-glow{display:none}}

/* Grid tracks set the height on tablet; the article fills its card, keeping footers aligned. */
@media(min-width:600px) and (max-width:1023px){
 .source-home .omni-decks .omni-deck-stage{grid-auto-rows:1fr}
 .source-home .omni-decks .omni-deck-card article{height:100%}
 .source-home .omni-decks .omni-deck-card p{flex:1}
}

/* Thin, separated colored strokes circulate along a smooth curve, without a solid backing. */
.omni-ribbon{animation:none!important;transform:none!important;will-change:auto;--flow-period:210px}
.omni-ribbon__strand{fill:none;stroke-width:11;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:var(--strand-offset,0px);animation:omni-ribbon-stream 5s linear infinite}
.omni-ribbon__strand--blue{stroke:#3b68fc;stroke-dasharray:82 128;--strand-offset:0px}
.omni-ribbon__strand--red{stroke:#ff4059;stroke-dasharray:50 160;--strand-offset:-100px}
.omni-ribbon__strand--amber{stroke:#ffcc00;stroke-dasharray:24 186;--strand-offset:-168px}
.omni-ribbon--right .omni-ribbon__strand{animation-direction:reverse;animation-duration:6.2s}
.omni-motion-root.is-offscreen .omni-ribbon__strand{animation-play-state:paused}
@keyframes omni-ribbon-stream{from{stroke-dashoffset:var(--strand-offset,0px)}to{stroke-dashoffset:calc(var(--strand-offset,0px) - var(--flow-period,210px))}}
/* Reversible scroll reveal: layout stays fixed while content fades and rises into place. */
.omni-scroll-section.is-reveal-ready .omni-scroll-item{opacity:var(--reveal-progress,1);transform:translate3d(0,calc(28px*(1 - var(--reveal-progress,1))),0);will-change:opacity,transform}
.omni-scroll-section:focus-within .omni-scroll-item{opacity:1!important;transform:none!important}
@media(prefers-reduced-motion:reduce){.omni-ribbon__strand{animation:none!important}.omni-scroll-section .omni-scroll-item{opacity:1!important;transform:none!important;will-change:auto}}

/* Let the page's pastel background show through the Brands & sources title. */
.source-home [data-scroll-reveal="brands"]{background:linear-gradient(to bottom,transparent 50px,#fff 50px)}
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]{min-height:50px;position:relative}
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]>img{display:block;width:71px;height:50px;flex:0 0 71px}
.source-home [data-scroll-reveal="brands"] .css-hempgq{background:transparent;padding-inline:26px}

/* White outside the curved notch; the notch interior remains transparent to the pastel wash. */
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]::before,
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]::after{content:'';position:absolute;top:0;height:50px;width:100vw;background:#fff;pointer-events:none}
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]::before{right:100%}
.source-home [data-scroll-reveal="brands"] [data-testid="content-transition-header"]::after{left:100%}
