.elementor-10493 .elementor-element.elementor-element-4d8c265 > .elementor-widget-container{margin:0px 0px -10px 0px;}.elementor-10493 .elementor-element.elementor-element-4d8c265 .elementor-icon-wrapper{text-align:center;}.elementor-10493 .elementor-element.elementor-element-4d8c265.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-4d8c265.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-4d8c265.elementor-view-default .elementor-icon{color:var( --e-global-color-v4-c-cyan-dark );border-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-4d8c265.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-4d8c265.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-4d8c265 .elementor-icon{font-size:30px;}.elementor-10493 .elementor-element.elementor-element-4d8c265 .elementor-icon svg{height:30px;}.elementor-10493 .elementor-element.elementor-element-505717a > .elementor-widget-container{margin:0px 0px -10px 0px;}.elementor-10493 .elementor-element.elementor-element-505717a .elementor-icon-wrapper{text-align:center;}.elementor-10493 .elementor-element.elementor-element-505717a.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-505717a.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-505717a.elementor-view-default .elementor-icon{color:var( --e-global-color-v4-c-cyan-dark );border-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-505717a.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-505717a.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-505717a .elementor-icon{font-size:30px;}.elementor-10493 .elementor-element.elementor-element-505717a .elementor-icon svg{height:30px;}.elementor-10493 .elementor-element.elementor-element-08d4f67 > .elementor-widget-container{margin:0px 0px -10px 0px;}.elementor-10493 .elementor-element.elementor-element-08d4f67 .elementor-icon-wrapper{text-align:center;}.elementor-10493 .elementor-element.elementor-element-08d4f67.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-08d4f67.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-08d4f67.elementor-view-default .elementor-icon{color:var( --e-global-color-v4-c-cyan-dark );border-color:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-08d4f67.elementor-view-framed .elementor-icon, .elementor-10493 .elementor-element.elementor-element-08d4f67.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-v4-c-cyan-dark );}.elementor-10493 .elementor-element.elementor-element-08d4f67 .elementor-icon{font-size:30px;}.elementor-10493 .elementor-element.elementor-element-08d4f67 .elementor-icon svg{height:30px;}@media(max-width:767px){.elementor-10493 .elementor-element.elementor-element-4d8c265 .elementor-icon{font-size:25px;}.elementor-10493 .elementor-element.elementor-element-4d8c265 .elementor-icon svg{height:25px;}.elementor-10493 .elementor-element.elementor-element-505717a .elementor-icon{font-size:25px;}.elementor-10493 .elementor-element.elementor-element-505717a .elementor-icon svg{height:25px;}.elementor-10493 .elementor-element.elementor-element-08d4f67 .elementor-icon{font-size:25px;}.elementor-10493 .elementor-element.elementor-element-08d4f67 .elementor-icon svg{height:25px;}}/* Start custom CSS *//* Homepage 2026 (page 10493) — page Custom CSS: what native V4/V3 controls can't do.
   The V3 menu uses the synced V3 globals (--e-global-*-v4-*). */

/* Brief form chips: whole pill is the checkbox/radio, filled navy when selected */
.elementor-10493 .chip { position: relative; }
.elementor-10493 .chip input {
	position: absolute; inset: 0; width: 100%; height: 100%;
	margin: 0; opacity: 0; cursor: pointer; clip-path: none; z-index: 1;
}
.elementor-10493 .chip:has(input:checked) { background-color: var(--c-navy); }
.elementor-10493 .chip:has(input:checked) label { color: var(--c-white); }
.elementor-10493 .chip:has(input:focus-visible) {
	outline: 3px solid var(--c-navy); outline-offset: 3px;
}

/* Selected work: details panel slides up on hover (desktop pointer only) */
@media (hover: hover) and (min-width: 1025px) {
	.elementor-10493 #work a.card > :first-child { transition: transform .8s cubic-bezier(.2,.8,.2,1); }
	.elementor-10493 #work a.card:hover > :first-child { transform: scale(1.05) rotate(-.6deg); }
	.elementor-10493 #work a.card > :last-child {
		transform: translateY(calc(100% - 88px));
		transition: transform .55s cubic-bezier(.2,1.2,.3,1);
	}
	.elementor-10493 #work a.card > :last-child > :last-child { opacity: 0; transition: opacity .35s .1s; }
	.elementor-10493 #work a.card:hover > :last-child,
	.elementor-10493 #work a.card:focus-visible > :last-child { transform: none; }
	.elementor-10493 #work a.card:hover > :last-child > :last-child,
	.elementor-10493 #work a.card:focus-visible > :last-child > :last-child { opacity: 1; }
}

/* FAQ: open item gets the cyan hard shadow, plus turns into × */
.elementor-10493 .faq-item { transition: box-shadow .3s; }
.elementor-10493 .faq-item[open] { box-shadow: 6px 6px 0 var(--c-cyan); }
.elementor-10493 .faq-item > summary > :last-child { transition: transform .3s, background-color .3s; }
.elementor-10493 .faq-item[open] > summary > :last-child {
	transform: rotate(45deg) !important;
	background-color: var(--c-cyan);
}

/* ---------- Editor-visible illustrations (e-svg / e-image) + their animations ---------- */

/* Hero stage = hero-back (SVG) + hero-portrait (image, masked) + hero-front (SVG), stacked on a 640×580 box.
   Portrait mask = the circle (r236 @ 340,330) united with everything above its centre line, so the head pops out.
   #hero-portrait box (Doron's position): left 27%, width 59.375%; top -15.8% / height 118.62% = 20% headroom above the
   image so the entrance bounce isn't clipped (a mask cuts everything outside the box). Image = bottom 83.14% (98.62/118.62).
   Mask % are derived from those numbers — recompute if the box changes. */
.elementor-10493 #hero-stage svg { display: block; width: 100%; height: 100%; overflow: visible; }
.elementor-10493 #hero-portrait {
	-webkit-mask: radial-gradient(62.1% 34.3% at 44% 61.29%, #000 99.6%, transparent 100%), linear-gradient(#000 61.29%, transparent 61.29%);
	mask: radial-gradient(62.1% 34.3% at 44% 61.29%, #000 99.6%, transparent 100%), linear-gradient(#000 61.29%, transparent 61.29%);
	transform: translate(calc(var(--mx, 0) * -8px), calc(var(--my, 0) * 6px));
	transition: transform .5s cubic-bezier(.2,.8,.2,1);
}
.elementor-10493 #hero-portrait img { display: block; width: 100%; height: 83.14%; object-fit: contain; animation: dwPopP .95s .25s both; }
/* Pop-in: fast rise, overshoot, two settling bounces (overshoot must stay inside the 20% headroom above) */
@keyframes dwPopP {
	0% { transform: translateY(56%); animation-timing-function: cubic-bezier(.2,.9,.3,1); }
	45% { transform: translateY(-5%); animation-timing-function: ease-in-out; }
	66% { transform: translateY(1.8%); animation-timing-function: ease-in-out; }
	83% { transform: translateY(-.7%); animation-timing-function: ease-in-out; }
	100% { transform: none; }
}
.elementor-10493 #hero-stage .px1 { transform: translate(calc(var(--mx,0)*-18px), calc(var(--my,0)*-12px)); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.elementor-10493 #hero-stage .px2 { transform: translate(calc(var(--mx,0)*10px), calc(var(--my,0)*8px)); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.elementor-10493 #hero-stage .px3 { transform: translate(calc(var(--mx,0)*-8px), calc(var(--my,0)*6px)); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.elementor-10493 #hero-stage .tail-h { transform-box: view-box; transform-origin: 36px -18px; }
.elementor-10493 #hero-stage .arm-h { transform-box: view-box; transform-origin: -20px -78px; }
.elementor-10493 #hero-stage .sw { transform-box: fill-box; transform-origin: 50% 92%; transition: transform .7s cubic-bezier(.2,1.5,.4,1); }
.elementor-10493 #hero-stage .sw1 { transform: rotate(-26deg); } .elementor-10493 #hero-stage .sw2 { transform: rotate(-9deg); }
.elementor-10493 #hero-stage .sw3 { transform: rotate(8deg); } .elementor-10493 #hero-stage .sw4 { transform: rotate(25deg); }
.elementor-10493 #hero-stage:hover .sw1 { transform: rotate(-44deg); } .elementor-10493 #hero-stage:hover .sw2 { transform: rotate(-15deg); }
.elementor-10493 #hero-stage:hover .sw3 { transform: rotate(15deg); } .elementor-10493 #hero-stage:hover .sw4 { transform: rotate(44deg); }
@media (max-width: 767px) { .elementor-10493 #hero-stage .dw-bezier { display: none; } }

/* Hero tagline sparkle (media 10552) */
.elementor-10493 #tagline-spark { animation: dwTw 2.6s ease-in-out infinite; }

/* Hero underline (.dw-uline, snippet #14): its dasharray 100 left the NEXT dash starting exactly at the path's end,
   and a round cap draws even a zero-length dash — an orange dot on the left during the 1.3s delay. A gap longer than
   the path (101) + offset 100.5 keeps it fully hidden until the draw starts. Reduced motion: show the full line. */
.elementor-10493 #hero-title .dw-uline path { stroke-dasharray: 100 101; stroke-dashoffset: 100.5; }
@media (prefers-reduced-motion: reduce) {
	.elementor-10493 #hero-title .dw-uline path { stroke-dashoffset: 0; }
}

/* Code window caret (svc-web.svg in element 1f3ce26 — the only 8×18 rect): terminal-style hard blink */
.elementor-10493 [data-id="1f3ce26"] rect[width="8"][height="18"] { animation: dwCaret 1.1s steps(1, end) infinite; }
@keyframes dwCaret { 50% { opacity: 0; } }

/* Service Brand art (30d8bdaa): hide the "מערכת שלמה!" note (the only 28px text in svc-brand.svg) */
.elementor-10493 [data-id="30d8bdaa"] text[font-size="28"] { display: none; }

/* Case Balonim card: three copies of balonim-balloon-blue.svg (class fl1) — give each its own float
   speed + phase so they drift independently instead of bobbing in sync */
.elementor-10493 [data-id="71725731"] .fl1 { animation-duration: 5s; animation-delay: 0s; }
.elementor-10493 [data-id="dbd3b8d"] .fl1 { animation-duration: 6.3s; animation-delay: -2.1s; }
.elementor-10493 [data-id="0b2e655"] .fl1 { animation-duration: 5.6s; animation-delay: -3.7s; }

/* Service Performance art (1985b7e4): both captions (baseline y=236 in svc-performance.svg) share one size —
   30 on desktop (the SVG has 30 + 28); on tablet + phone the SVG renders at ~47–50%, so both go to 44 */
.elementor-10493 [data-id="1985b7e4"] text { font-size: 30px; }
@media (max-width: 1024px) {
	.elementor-10493 [data-id="1985b7e4"] text { font-size: 44px; }
}

/* Process wave (JS fills .prog to the active step and colours the nodes) */
.elementor-10493 #process-wave .prog { transition: stroke-dashoffset .8s cubic-bezier(.3,1,.4,1); }
.elementor-10493 #process-wave .node { transition: fill .4s; cursor: pointer; }
/* Process header row (.dw-headrow, built by snippet #14). All sizes: --gap-lg below the row (space before the tabs).
   Tablet + desktop: arrows beside the title, centred on its last line ("בלי הפתעות.") — the heading shrinks to its text,
   its --gap-lg bottom margin moves to the row (heading padding is 0, set in the editor), arrows 10px off the left edge.
   Phones: arrows on their own line, centred. */
.elementor-10493 #process .dw-headrow { margin-bottom: var(--gap-lg); }
@media (min-width: 768px) {
	.elementor-10493 #process .dw-headrow > .section-head { width: auto; margin-bottom: 0; }
	.elementor-10493 #process .dw-headrow > .dw-nav { margin-left: 10px; }
}
@media (max-width: 767px) {
	.elementor-10493 #process .dw-headrow > .dw-nav { flex-basis: 100%; justify-content: center; }
}

/* Process tab step numbers (01–04, class t-hero-word inside #process-tabs): the design's ".hatch" look —
   hollow digits, navy outline, cyan diagonal stripes clipped to the glyphs */
.elementor-10493 #process-tabs .t-hero-word {
	color: transparent; -webkit-text-stroke: 2.5px var(--c-navy);
	background: repeating-linear-gradient(-45deg, var(--c-cyan) 0 3px, transparent 3px 8px);
	-webkit-background-clip: text; background-clip: text;
}

/* Process tab titles: the theme's reset.css gives every <button> white-space:nowrap and V4 tabs render as buttons,
   so long titles overflowed their column on tablet — let them wrap */
.elementor-10493 #process-tabs .step-tab { white-space: normal; }

/* Testimonials. Desktop: arrows (.dw-nav, built by snippet #14) at the bottom of the tabs column, level with the
   card's bottom edge, as in the design (overrides the snippet's row-2 placement). It shares that grid cell with the
   tabs list, which is position:relative and would cover the arrows — so lift them above it. */
@media (min-width: 1025px) {
	.elementor-10493 #testimonial-tabs .dw-nav { grid-row: 1; align-self: end; position: relative; z-index: 1; }
}
/* Speech-bubble tail under the quote card, bottom-left (design: 60×40 svg, 70px in from the card's left edge).
   Drawn on the tab panel because the card itself has overflow:hidden; covers the card's bottom border. */
.elementor-10493 #testimonial-tabs [role="tabpanel"] { position: relative; }
.elementor-10493 #testimonial-tabs [role="tabpanel"]::after {
	content: ""; position: absolute; left: 72px; bottom: -35.5px; width: 60px; height: 40px; pointer-events: none;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'%3E%3Cpath d='M0 -2 L 44 -2 L 8 38 Z' fill='%23fff'/%3E%3Cpath d='M44 0 L 8 38 L 4 0' fill='none' stroke='%23202E4E' stroke-width='2.5' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat;
}

/* Peeking wolf over the brief card (brief-peek wraps peek-head, brief-card, peek-paws) */
.elementor-10493 #brief-peek { position: relative; margin-top: 70px; padding: 0; }
.elementor-10493 #brief-peek #brief-card { position: relative; z-index: 1; margin-top: 0; }
.elementor-10493 #peek-head, .elementor-10493 #peek-paws { position: absolute; inset-inline-end: 60px; width: 132px; }
.elementor-10493 #peek-head { top: -200px; z-index: 0; height: 220px; }
.elementor-10493 #peek-paws { top: -11px; z-index: 2; height: 33px; }
.elementor-10493 #peek-head svg, .elementor-10493 #peek-paws svg { overflow: visible; }
/* Match the hero wolf: hide the jagged fur tuft at the back of the jaw (peek-head.svg; the hero's head has none) */
.elementor-10493 #peek-head path[d^="M-2 -104 L 8 -100"] { display: none; }
/* Mirrored at all sizes (faces right, toward the card). The eye-tracking offset is in SVG coords, so negate its x
   to keep the pupils following the pointer */
.elementor-10493 #peek-head, .elementor-10493 #peek-paws { transform: scaleX(-1); }
.elementor-10493 #peek-head .pupil2 { transform: translate(calc(var(--ex,0)*-1.8px), calc(var(--ey,0)*1.4px)); }
/* Hover (pointer devices): head peeks 10px higher, paws stay on the card edge. Only the drawn shapes count as hover
   area (not the empty SVG box); hovering the paws lifts the head too. Transform must repeat scaleX(-1). */
.elementor-10493 #peek-head { transition: transform .2s ease; pointer-events: none; }
.elementor-10493 #peek-head svg { pointer-events: none; }
.elementor-10493 #peek-head svg * { pointer-events: visiblePainted; }
@media (hover: hover) {
	.elementor-10493 #peek-head:hover,
	.elementor-10493 #brief-peek:has(#peek-paws:hover) #peek-head { transform: translateY(-10px) scaleX(-1); }
}
/* Desktop: card raised so the ears poke ~20px into the bottom of the FAQ section. #contact has overflow:hidden
   (clips them — no z-index helps); clip only sideways so nothing can cause horizontal scroll. */
@media (min-width: 1025px) {
	.elementor-10493 #contact { overflow-x: clip; overflow-y: visible; }
	.elementor-10493 #brief-peek { margin-top: 30px; }
}
@media (max-width: 1024px) {
	.elementor-10493 #brief-peek { margin-top: 170px; }
}
/* Phones: smaller wolf, still on the left side of the card like desktop/tablet */
@media (max-width: 767px) {
	.elementor-10493 #brief-peek { margin-top: 130px; }
	.elementor-10493 #peek-head { width: 96px; height: 160px; top: -146px; inset-inline-end: 32px; }
	.elementor-10493 #peek-paws { width: 96px; height: 24px; top: -8px; inset-inline-end: 32px; }
}

/* Primary buttons + "לכל הפורטפוליו": arrow */
.elementor-10493 .btn--primary::after, .elementor-10493 #work-all::after {
	content: ""; width: 18px; height: 18px; flex: none; background: currentColor; transform: scaleX(-1);
	transition: transform .25s cubic-bezier(.2,.8,.2,1);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}
.elementor-10493 .btn--primary:hover::after, .elementor-10493 #work-all:hover::after { transform: scaleX(-1) translateX(5px); }

/* Doodle animations used inside the SVGs (hero, peeking wolf, service art) */
.elementor-10493 .tail { transform-box: fill-box; transform-origin: 0% 100%; animation: dwWag 1.4s ease-in-out infinite; }
.elementor-10493 .arm { transform-box: fill-box; transform-origin: 100% 0%; animation: dwArm 1.2s ease-in-out infinite; }
.elementor-10493 .head { transform-box: fill-box; transform-origin: 50% 100%; animation: dwTilt 5s ease-in-out infinite; }
.elementor-10493 .blink { transform-box: fill-box; transform-origin: center; animation: dwBlink 4.5s infinite; }
.elementor-10493 .pupil2 { transform: translate(calc(var(--ex,0)*1.8px), calc(var(--ey,0)*1.4px)); transition: transform .12s ease-out; }
.elementor-10493 .pupil { transform: translate(calc(var(--ex,0)*4px), calc(var(--ey,0)*3.5px)); transition: transform .12s ease-out; }
.elementor-10493 .tw { transform-box: fill-box; transform-origin: center; animation: dwTw 2.6s ease-in-out infinite; }
.elementor-10493 .tw.tw-d1 { animation-delay: -1s; } .elementor-10493 .tw.tw-d2 { animation-delay: -1.8s; } .elementor-10493 .tw.tw-d3 { animation-delay: -.6s; }
.elementor-10493 .fl1 { animation: dwFl 5s ease-in-out infinite; } .elementor-10493 .fl2 { animation: dwFl 6s ease-in-out -2s infinite; } .elementor-10493 .fl3 { animation: dwFl 7s ease-in-out -4s infinite; }
.elementor-10493 .flame { transform-box: fill-box; transform-origin: 50% 0%; animation: dwFlick .25s ease-in-out infinite; }
.elementor-10493 .ripple { transform-box: fill-box; transform-origin: center; animation: dwRipple 1.6s ease-out infinite; }
.elementor-10493 .draw { stroke-dasharray: 900; animation: dwDraw 1.8s cubic-bezier(.6,0,.2,1) both; }
.elementor-10493 .draw.draw-slow { animation-delay: 1.4s; animation-duration: 2.4s; }
.elementor-10493 .dashmove { stroke-dasharray: 7 9; animation: dwDash 3s linear infinite; }
.elementor-10493 .leg { transform-box: fill-box; transform-origin: 50% 0%; animation: dwSwing 2.2s ease-in-out infinite; } .elementor-10493 .leg2 { animation-delay: -1.1s; }
.elementor-10493 .needle { transform-box: view-box; transform-origin: 150px 170px; animation: dwNeedle 3s cubic-bezier(.3,1.5,.5,1) infinite alternate; }
.elementor-10493 .ex { animation: dwEx 2.4s linear infinite alternate; } .elementor-10493 .ey { animation: dwEy 2.4s cubic-bezier(.4,0,.6,1) infinite alternate; }
.elementor-10493 .bob { transform-box: fill-box; transform-origin: center; transition: transform .5s cubic-bezier(.2,1.6,.4,1); }
.elementor-10493 .card:hover .bob1 { transform: translateY(-12px); } .elementor-10493 .card:hover .bob2 { transform: translateY(-18px); }
.elementor-10493 .card:hover .bob3 { transform: translateY(-10px); } .elementor-10493 .card:hover .bob4 { transform: translateY(-16px); }
.elementor-10493 .spinme { transition: transform .5s cubic-bezier(.2,1.6,.4,1); } .elementor-10493 .card:hover .spinme { transform: rotate(-14deg) scale(1.08); }
.elementor-10493 .wf { transition: opacity .5s; } .elementor-10493 .proto { opacity: 0; transition: opacity .5s; }
.elementor-10493 .card:hover .proto { opacity: 1; } .elementor-10493 .card:hover .wf { opacity: .1; }
@keyframes dwWag { 0%,100% { transform: rotate(-8deg); } 50% { transform: rotate(14deg); } }
@keyframes dwArm { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-6deg); } 75% { transform: rotate(5deg); } }
@keyframes dwTilt { 0%,100% { transform: rotate(-3deg); } 50% { transform: rotate(4deg); } }
@keyframes dwBlink { 0%,94%,100% { transform: scaleY(1); } 97% { transform: scaleY(.1); } }
@keyframes dwTw { 0%,100% { transform: scale(.6) rotate(0); opacity: .5; } 50% { transform: scale(1.15) rotate(45deg); opacity: 1; } }
@keyframes dwFl { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes dwFlick { 0%,100% { transform: scaleY(1); } 50% { transform: scaleY(1.35); } }
@keyframes dwRipple { 0% { transform: scale(.4); opacity: 1; } 100% { transform: scale(1.8); opacity: 0; } }
@keyframes dwDraw { from { stroke-dashoffset: 900; } to { stroke-dashoffset: 0; } }
@keyframes dwDash { to { stroke-dashoffset: -120; } }
@keyframes dwSwing { 0%,100% { transform: rotate(-10deg); } 50% { transform: rotate(12deg); } }
@keyframes dwNeedle { 0% { transform: rotate(-80deg); } 70%,100% { transform: rotate(66deg); } }
@keyframes dwEx { from { transform: translateX(0); } to { transform: translateX(190px); } }
@keyframes dwEy { from { transform: translateY(0); } to { transform: translateY(-130px); } }

/* Touch devices: no hover lift on cards */
@media (hover: none) {
	.elementor-10493 .card:hover { transform: none; }
}

/* iOS Safari ignores fixed backgrounds — scroll normally there */
@supports (-webkit-touch-callout: none) {
	.elementor-10493 .grid-bg,
	.elementor-10493 #process,
	.elementor-10493 #contact { background-attachment: scroll; }
}/* End custom CSS */