/* Explicitly requested subtle brand motion, pausable per page. */
.brand-cursor{display:inline-block;flex:none;width:2px;height:.82em;margin-left:7px;background:#3d7a2c;vertical-align:-.02em;animation:brand-blink 1.45s steps(1,end) infinite}
@keyframes brand-blink{0%,55%{opacity:1}56%,100%{opacity:0}}
.motion-control{font:inherit;font-size:11px;letter-spacing:.04em;border:1px solid #ccd8e6;background:#fff;color:#29445f;padding:7px 12px;border-radius:3px;cursor:pointer}
.motion-control:focus-visible{outline:2px solid #3d7a2c;outline-offset:4px}
.hero .dot{animation:signal-pulse 3s ease-in-out infinite}
@keyframes signal-pulse{0%,100%{opacity:1}50%{opacity:.35}}
.page-intro h1>span,.brand-dot{animation:ink-pulse 4s ease-in-out infinite}
@keyframes ink-pulse{0%,100%{color:#3d7a2c}50%{color:#3d7a2c}}
@media(prefers-reduced-motion:no-preference){
.hero-image{animation:photo-settle 2.4s cubic-bezier(.2,.6,.3,1) both}
@keyframes photo-settle{from{transform:scale(1.025)}to{transform:scale(1)}}
.hero-actions .primary>span{animation:arrow-invite 4.5s ease-in-out infinite}
@keyframes arrow-invite{0%,75%,100%{transform:translateX(0)}84%{transform:translateX(5px)}92%{transform:translateX(0)}}
.service-card{transition:transform .3s ease,box-shadow .3s ease}
.service-card:hover{transform:translateY(-4px);box-shadow:0 14px 26px #102b3b0c}
}
html.motion-paused *,html.motion-paused *:before,html.motion-paused *:after{animation-play-state:paused!important}
html.motion-paused .brand-cursor,html.motion-paused .dot{opacity:1!important}
html.motion-paused .motion-ready{opacity:1;transform:none}
html.motion-paused .motion-reveal{transition:none}
html.motion-paused .service-card:hover{transform:none}

/* Cursor requested explicitly; no spatial motion under reduced-motion. */
.brand-cursor{animation:brand-blink 1.45s steps(1,end) infinite!important}html.motion-paused .brand-cursor{animation:none!important}

/* A more visible rhythm, without moving text while it is read. */
.hero{overflow:hidden}.hero-image{animation:hero-breathe 16s ease-in-out infinite alternate!important;transform-origin:65% 45%}
@keyframes hero-breathe{from{transform:scale(1)}to{transform:scale(1.045)}}
.motion-accent{background-image:linear-gradient(#3d7a2c,#3d7a2c);background-repeat:no-repeat;background-position:left bottom;background-size:0 2px;padding-bottom:12px;transition:background-size 1.1s ease!important}
.motion-accent.is-arrived{background-size:72px 2px}
.motion-card{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s ease!important;transition-delay:var(--entrance-delay,0ms)!important}
.motion-card.is-arrived{opacity:1;transform:translateY(0)}
.hero-foot a>span{display:inline-block;animation:scroll-hint 2.4s ease-in-out infinite!important}
@keyframes scroll-hint{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@media(prefers-reduced-motion:reduce){.hero-image{animation:none!important}.motion-card{transform:none}.hero-foot a>span{animation:none!important}}
html.motion-paused .motion-card{opacity:1;transform:none;transition:none!important}html.motion-paused .motion-accent{background-size:72px 2px;transition:none!important}
