/* Progressive motion. Visible ornaments can repeat; content stays readable. */
@keyframes rscm-feature-lattice-reach {
    0%, 90%, 100% { width: var(--rscm-feature-lattice-rest-width, 260px); }
    45%, 55% { width: var(--rscm-feature-lattice-peak-width, 50%); }
}
@keyframes rscm-ornament-turn {
    0% { rotate: -32deg; scale: .97; opacity: var(--rscm-rest-opacity, 1); }
    55% { opacity: var(--rscm-peak-opacity, 1); }
    72% { rotate: 3deg; scale: 1; }
    100% { rotate: 0deg; scale: 1; opacity: var(--rscm-rest-opacity, 1); }
}
@keyframes rscm-ornament-palm {
    0%, 100% { rotate: 0deg; }
    30% { rotate: -2.5deg; }
    68% { rotate: 1.8deg; }
}
@keyframes rscm-ornament-column {
    0%, 100% { translate: 0 0; }
    45% { translate: 0 -14px; }
    75% { translate: 0 2px; }
}
@keyframes rscm-ornament-panel {
    from { translate: 0 12px; scale: .96; clip-path: inset(0 0 100% 0); }
    to { translate: 0 0; scale: 1; clip-path: inset(0); }
}
/* Four seconds of rise/return, then two seconds at the original resting state. */
@keyframes rscm-ornament-door {
    0%, 66.667%, 100% { translate: 0 0; opacity: var(--rscm-rest-opacity, 1); }
    33.333% { translate: 0 -10px; opacity: var(--rscm-peak-opacity, 1); }
}
@keyframes rscm-ornament-door-gentle {
    0%, 66.667%, 100% { opacity: var(--rscm-rest-opacity, 1); }
    33.333% { opacity: var(--rscm-peak-opacity, 1); }
}
@keyframes rscm-parapet-drift {
    0%, 100% { background-position-x: calc(var(--rscm-parapet-x, 50%) + var(--rscm-parapet-travel, 48px)); }
    50% { background-position-x: calc(var(--rscm-parapet-x, 50%) - var(--rscm-parapet-travel, 48px)); }
}
@keyframes rscm-ornament-reveal {
    from { clip-path: inset(0 0 100% 0); }
    to { clip-path: inset(0); }
}
@keyframes rscm-ornament-line {
    from { scale: .25 1; }
    to { scale: 1 1; }
}
@keyframes rscm-ornament-rise {
    from { clip-path: inset(100% 0 0); }
    to { clip-path: inset(0); }
}
@keyframes rscm-ornament-glow {
    0%, 100% { filter: brightness(1); }
    45% { filter: brightness(1.55); }
}
/* The original lattice dims only while its individual gold cells pass. */
@keyframes rscm-lattice-base {
    0%, 100% { opacity: var(--rscm-rest-opacity, 1); }
    20%, 65% { opacity: calc(var(--rscm-rest-opacity, 1) * .18); }
}
@keyframes rscm-lattice-cell {
    0% {
        opacity: 0; transform: translateX(5px);
        filter: drop-shadow(0 0 0 rgba(200, 145, 76, 0));
    }
    32%, 55% {
        opacity: 1; transform: translateX(0);
        filter: drop-shadow(0 0 4px rgba(200, 145, 76, .48));
    }
    100% {
        opacity: 0; transform: translateX(-6px);
        filter: drop-shadow(0 0 1px rgba(200, 145, 76, 0));
    }
}
@keyframes rscm-ornament-gentle-before {
    0%, 100% { opacity: var(--rscm-before-opacity, 1); filter: brightness(1); }
    45% { opacity: var(--rscm-before-glow-opacity, 1); filter: brightness(1.22); }
}
@keyframes rscm-ornament-gentle-after {
    0%, 100% { opacity: var(--rscm-after-opacity, 1); filter: brightness(1); }
    45% { opacity: var(--rscm-after-glow-opacity, 1); filter: brightness(1.22); }
}
@keyframes rscm-icon-greeting {
    0%, 100% { rotate: 0deg; scale: 1; translate: 0 0; }
    35% { rotate: -9deg; scale: 1.12; translate: 0 -3px; }
    65% { rotate: 6deg; scale: 1.06; translate: 0 -1px; }
}
@keyframes rscm-photo-sheen {
    from { background-position: 180% 0; }
    to { background-position: -80% 0; }
}
@keyframes rscm-step-signal {
    0%, 100% { filter: brightness(1) drop-shadow(0 0 0 rgba(217, 168, 94, 0)); }
    45% { filter: brightness(1.1) drop-shadow(0 0 9px rgba(217, 168, 94, .5)); }
}
.rscm-reading-progress {
    position: fixed; z-index: 1040; inset: 0 0 auto; height: 3px;
    pointer-events: none; background: transparent; contain: layout paint;
}
.rscm-reading-progress > span {
    display: block; width: 100%; height: 100%; transform: scaleX(0); transform-origin: left;
    background: linear-gradient(90deg, #a97536, #e6c58c, #b9843f);
}
html[lang^="ar"] .rscm-reading-progress > span { transform-origin: right; }
/* These classes are added only to existing, visible ornaments on this website.
   Per-side variables allow a circle and its portrait frame to move independently. */
.rscm-decor-before-circle { --rscm-before-motion: rscm-ornament-turn; }
.rscm-decor-after-circle { --rscm-after-motion: rscm-ornament-turn; }
.rscm-decor-before-palm { --rscm-before-motion: rscm-ornament-palm; --rscm-before-origin: bottom center; }
.rscm-decor-after-palm { --rscm-after-motion: rscm-ornament-palm; --rscm-after-origin: bottom center; }
.rscm-decor-before-column { --rscm-before-motion: rscm-ornament-column; }
.rscm-decor-after-column { --rscm-after-motion: rscm-ornament-column; }
.rscm-decor-before-panel { --rscm-before-motion: rscm-ornament-panel; }
.rscm-decor-after-panel { --rscm-after-motion: rscm-ornament-panel; }
.rscm-decor-before-reveal { --rscm-before-motion: rscm-ornament-reveal; }
.rscm-decor-after-reveal { --rscm-after-motion: rscm-ornament-reveal; }
.rscm-decor-before-line { --rscm-before-motion: rscm-ornament-line; }
.rscm-decor-after-line { --rscm-after-motion: rscm-ornament-line; }
.rscm-decor-before-rise { --rscm-before-motion: rscm-ornament-rise; }
.rscm-decor-after-rise { --rscm-after-motion: rscm-ornament-rise; }
.rscm-decor-before-glow { --rscm-before-motion: rscm-ornament-glow; }
.rscm-decor-after-glow { --rscm-after-motion: rscm-ornament-glow; }
.rscm-decor-before-lattice { --rscm-before-motion: rscm-lattice-base; --rscm-before-duration: 4s; }
.rscm-decor-after-lattice { --rscm-after-motion: rscm-lattice-base; --rscm-after-duration: 4s; }
/* JavaScript matches this layer to an existing visible pseudo-element and
   staggers cells by physical x position, so the wave also travels left in RTL. */
.rscm-lattice-wave {
    position: absolute; z-index: 0; overflow: hidden;
    pointer-events: none; color: #c8914c;
}
.rscm-lattice-svg {
    position: absolute; display: block; overflow: visible; max-width: none;
}
.rscm-lattice-cell { opacity: 0; }
html body #wrap.rscm-motion-on.rscm-motion-full .rscm-lattice-wave-play .rscm-lattice-cell {
    animation: rscm-lattice-cell 1.65s ease-in-out var(--rscm-cell-delay, 0ms) 1 both !important;
}
/* The theme's reduced-motion reset uses #wrap plus !important. Scope our
   finite, safe override above that specificity; do not weaken the global reset. */
html body #wrap.rscm-motion-on .rscm-decor-before.rscm-decor-before-play::before,
html body :is(footer#bottom, #footer).rscm-decor-before.rscm-decor-before-play::before {
    animation: var(--rscm-before-motion) var(--rscm-before-duration, 2s) cubic-bezier(.25, .6, .25, 1) 1 !important;
    --rscm-rest-opacity: var(--rscm-before-opacity, 1);
    --rscm-peak-opacity: var(--rscm-before-peak-opacity, 1);
    transform-origin: var(--rscm-before-origin, center);
}
html body #wrap.rscm-motion-on .rscm-decor-after.rscm-decor-after-play::after,
html body :is(footer#bottom, #footer).rscm-decor-after.rscm-decor-after-play::after {
    animation: var(--rscm-after-motion) var(--rscm-after-duration, 2s) cubic-bezier(.25, .6, .25, 1) 1 !important;
    --rscm-rest-opacity: var(--rscm-after-opacity, 1);
    --rscm-peak-opacity: var(--rscm-after-peak-opacity, 1);
    transform-origin: var(--rscm-after-origin, center);
}
/* Reach the midpoint and return once. JavaScript remembers the started pass
   across viewport changes and enhancement cleanup. */
html body #wrap.rscm-home-v2.rscm-motion-on.rscm-motion-full .rh-features.rscm-feature-lattice-play::before {
    background-repeat: repeat-x;
    animation: rscm-feature-lattice-reach 3s ease-in-out 1 !important;
}
html body #wrap.rscm-motion-on .rscm-decor-before-door.rscm-door-before-play::before {
    --rscm-rest-opacity: var(--rscm-before-opacity, 1);
    --rscm-peak-opacity: var(--rscm-before-peak-opacity, 1);
}
html body #wrap.rscm-motion-on .rscm-decor-after-door.rscm-door-after-play::after {
    --rscm-rest-opacity: var(--rscm-after-opacity, 1);
    --rscm-peak-opacity: var(--rscm-after-peak-opacity, 1);
}
html body #wrap.rscm-motion-on.rscm-motion-full .rscm-decor-before-door.rscm-door-before-play::before,
html body #wrap.rscm-motion-on.rscm-motion-full .rscm-decor-after-door.rscm-door-after-play::after {
    animation: rscm-ornament-door 6s ease-in-out infinite !important;
}
html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-before-door.rscm-door-before-play::before,
html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-after-door.rscm-door-after-play::after {
    animation: rscm-ornament-door-gentle 6s ease-in-out infinite !important;
}
/* Move only the repeated background, including the separate native footer.
   Tile width, vertical position, strip geometry and solid colors stay untouched. */
html body #wrap.rscm-motion-on .rscm-decor-before-parapet.rscm-parapet-before-play::before,
html body :is(footer#bottom, #footer).rscm-decor-before-parapet.rscm-parapet-before-play::before {
    --rscm-parapet-x: var(--rscm-before-parapet-x, 50%);
    --rscm-parapet-travel: var(--rscm-before-parapet-travel, 48px);
    animation: rscm-parapet-drift 18s ease-in-out infinite !important;
}
html body #wrap.rscm-motion-on .rscm-decor-after-parapet.rscm-parapet-after-play::after,
html body :is(footer#bottom, #footer).rscm-decor-after-parapet.rscm-parapet-after-play::after {
    --rscm-parapet-x: var(--rscm-after-parapet-x, 50%);
    --rscm-parapet-travel: var(--rscm-after-parapet-travel, 48px);
    animation: rscm-parapet-drift 18s ease-in-out infinite !important;
}
/* Keep the gentle fallback static; the site's explicit full choice remains full. */
@media screen {
    html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-before-parapet.rscm-parapet-before-play::before,
    html body.rscm-motion-gentle :is(footer#bottom, #footer).rscm-decor-before-parapet.rscm-parapet-before-play::before,
    html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-after-parapet.rscm-parapet-after-play::after,
    html body.rscm-motion-gentle :is(footer#bottom, #footer).rscm-decor-after-parapet.rscm-parapet-after-play::after { animation: none !important; }
}
html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-card {
    transition: transform .45s cubic-bezier(.22, .75, .24, 1),
                box-shadow .45s ease, border-color .45s ease, background-color .45s ease !important;
}
/* Keep the tile/background still; animate only its FontAwesome glyph. */
html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-icon::before { display: inline-block; transform-origin: center; }
html #wrap.rscm-motion-on.rscm-motion-full .rscm-arrived:is(.rh-step, .rs-process-step) > :is(.rh-step__num, .rs-step-number) {
    animation: rscm-step-signal 1.35s ease-out 1 !important;
}
html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-photo {
    transition: scale .85s cubic-bezier(.22, .75, .24, 1), clip-path .85s ease,
                filter .85s ease, transform .85s cubic-bezier(.22, .75, .24, 1) !important;
}
html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-btn, .rs-btn) {
    transition: translate .3s ease, box-shadow .35s ease,
                background-color .3s ease, border-color .3s ease, color .3s ease !important;
}
html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-card__link, .rs-text-link) {
    text-underline-offset: 5px;
    transition: color .3s ease, text-underline-offset .3s ease !important;
}
html #wrap.rscm-motion-on .rscm-spotlight-layer { display: none; }
@media (hover: hover) and (pointer: fine) {
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-spotlight { position: relative; isolation: isolate; }
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-spotlight > .rscm-spotlight-layer {
        display: block; position: absolute; inset: 0; z-index: 2; border-radius: inherit;
        pointer-events: none; opacity: 0; transition: opacity .45s ease !important;
        background: radial-gradient(240px circle at var(--rscm-pointer-x, 50%) var(--rscm-pointer-y, 50%), rgba(217, 168, 94, .2), transparent 72%);
    }
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-spotlight:hover > .rscm-spotlight-layer,
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-spotlight:focus-within > .rscm-spotlight-layer { opacity: 1; }
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-card, .rs-service-card__media) { position: relative; }
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-card, .rs-service-card__media)::after {
        content: ""; position: absolute; top: 0; inset-inline: 0; width: 100%;
        aspect-ratio: 16 / 9; z-index: 3; pointer-events: none; opacity: 0;
        background: linear-gradient(115deg, transparent 42%, rgba(255, 255, 255, .22) 49%, transparent 56%);
        background-size: 220% 100%; background-repeat: no-repeat;
    }
    html #wrap.rscm-motion-on.rscm-motion-full .rh-card:hover::after,
    html #wrap.rscm-motion-on.rscm-motion-full .rh-card:focus-within::after,
    html #wrap.rscm-motion-on.rscm-motion-full .rs-service-card:hover .rs-service-card__media::after,
    html #wrap.rscm-motion-on.rscm-motion-full .rs-service-card:focus-within .rs-service-card__media::after {
        opacity: 1; animation: rscm-photo-sheen 1s ease-out 1 both !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-card:hover,
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-card:focus-within {
        transform: none;
    }
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-card, .rs-service-card, .rs-process-step, .rs-pillar).rscm-motion-card:hover {
        border-color: #cba66b;
        box-shadow: 0 16px 36px rgba(12, 37, 51, .12);
    }
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-icon-host:hover .rscm-motion-icon::before,
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-icon-host:focus-within .rscm-motion-icon::before {
        animation: rscm-icon-greeting .75s ease-in-out 1 !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-photo:hover,
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-card:hover .rscm-motion-photo,
    html #wrap.rscm-motion-on.rscm-motion-full .rscm-motion-card:focus-within .rscm-motion-photo {
        scale: 1.04;
        /* The crop compensates the scale on photos without a dedicated wrapper. */
        clip-path: inset(1.93% round 4px);
        filter: brightness(1.035);
    }
    /* Existing service-card scale uses transform; keep just one zoom. */
    html #wrap.rscm-motion-on.rscm-motion-full .rs-service-card:hover .rs-service-card__media img.rscm-motion-photo,
    html #wrap.rscm-motion-on.rscm-motion-full .rs-service-card:focus-visible .rs-service-card__media img.rscm-motion-photo { transform: none; }
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-btn, .rs-btn):hover,
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-btn, .rs-btn):focus-visible {
        translate: 0 -2px;
        box-shadow: 0 8px 22px rgba(181, 130, 61, .2);
    }
    html #wrap.rscm-motion-on.rscm-motion-full :is(.rh-card__link, .rs-text-link):hover {
        text-decoration: underline;
        text-underline-offset: 7px;
    }
}
/* Without the explicit site choice, keep the visitor's reduced-motion fallback. */
@media screen {
    body.rscm-motion-gentle > .rscm-reading-progress { display: none !important; }
    /* Reduced motion still has a gentle automatic gold-light cue, not a hidden
       feature or a toggle. No rotation, translation, clipping or zoom. */
    html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-before.rscm-decor-before-play::before,
    html body.rscm-motion-gentle :is(footer#bottom, #footer).rscm-decor-before.rscm-decor-before-play::before {
        animation: rscm-ornament-gentle-before 2.2s ease-in-out 1 !important;
    }
    html body #wrap.rscm-motion-on.rscm-motion-gentle .rscm-decor-after.rscm-decor-after-play::after,
    html body.rscm-motion-gentle :is(footer#bottom, #footer).rscm-decor-after.rscm-decor-after-play::after {
        animation: rscm-ornament-gentle-after 2.2s ease-in-out 1 !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-motion-icon::before {
        animation: none !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-arrived .rscm-motion-icon::before,
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-arrived:is(.rh-step, .rs-process-step) > :is(.rh-step__num, .rs-step-number) {
        animation: rscm-ornament-glow 2s ease-in-out 1 !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-gentle :is(.rscm-motion-card, .rscm-motion-photo, .rh-btn, .rs-btn) {
        transition: none !important;
        translate: none !important;
        scale: none !important;
        clip-path: none !important;
    }
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-motion-card:hover,
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-motion-card:focus-within,
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-motion-card:hover .rscm-motion-photo,
    html #wrap.rscm-motion-on.rscm-motion-gentle .rscm-motion-card:focus-within .rscm-motion-photo { transform: none !important; }
}
@media print {
    .rscm-reading-progress, .rscm-lattice-wave { display: none !important; }
    html body #wrap.rscm-home-v2.rscm-motion-on.rscm-motion-full .rh-features.rscm-feature-lattice-play::before {
        animation: none !important;
        width: var(--rscm-feature-lattice-rest-width, 260px);
        background-repeat: no-repeat;
    }
    html body #wrap.rscm-motion-on .rscm-decor-before-parapet.rscm-parapet-before-play::before,
    html body :is(footer#bottom, #footer).rscm-decor-before-parapet.rscm-parapet-before-play::before,
    html body #wrap.rscm-motion-on .rscm-decor-after-parapet.rscm-parapet-after-play::after,
    html body :is(footer#bottom, #footer).rscm-decor-after-parapet.rscm-parapet-after-play::after,
    html body #wrap.rscm-motion-on:is(.rscm-motion-full, .rscm-motion-gentle) .rscm-decor-before-door.rscm-door-before-play::before,
    html body #wrap.rscm-motion-on:is(.rscm-motion-full, .rscm-motion-gentle) .rscm-decor-after-door.rscm-door-after-play::after,
    html body #wrap.rscm-motion-on .rscm-decor-before.rscm-decor-before-play::before,
    html body :is(footer#bottom, #footer).rscm-decor-before.rscm-decor-before-play::before,
    html body #wrap.rscm-motion-on .rscm-decor-after.rscm-decor-after-play::after,
    html body :is(footer#bottom, #footer).rscm-decor-after.rscm-decor-after-play::after,
    html #wrap.rscm-motion-on:is(.rscm-motion-full, .rscm-motion-gentle) .rscm-motion-icon::before,
    html #wrap.rscm-motion-on:is(.rscm-motion-full, .rscm-motion-gentle) .rscm-arrived:is(.rh-step, .rs-process-step) > :is(.rh-step__num, .rs-step-number) {
        animation: none !important;
    }
}
