/* All content is visible without JS. Only observed elements opt into reveals. */
:root{--motion-ease:cubic-bezier(.16,1,.3,1)}
.hero-title-line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.hero-title-line>span{display:block;transform-origin:left bottom}
[data-reveal]{--reveal-delay:0ms}
.motion-enabled [data-reveal].motion-armed{opacity:0;transform:translate3d(0,38px,0);transition:opacity .85s var(--motion-ease) var(--reveal-delay),transform 1.1s var(--motion-ease) var(--reveal-delay),clip-path 1.15s var(--motion-ease) var(--reveal-delay)}
.motion-enabled [data-reveal="image"].motion-armed{opacity:1;transform:translate3d(0,22px,0);clip-path:inset(0 0 100% 0)}
.motion-enabled [data-reveal="left"].motion-armed{transform:translate3d(-38px,0,0)}
.motion-enabled [data-reveal="right"].motion-armed{transform:translate3d(38px,0,0)}
.motion-enabled [data-reveal].motion-armed.is-revealed{opacity:1;transform:translate3d(0,0,0)}
.motion-enabled [data-reveal="image"].motion-armed.is-revealed{clip-path:inset(0 0 0 0)}
/* Reveal choreography must not replace the cards' continuous hover expansion. */
@media(min-width:1000px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .motion-enabled .service-gallery .service-panel[data-reveal].motion-armed{transition:opacity .85s var(--motion-ease) var(--reveal-delay),transform 1.1s var(--motion-ease) var(--reveal-delay),clip-path 1.15s var(--motion-ease) var(--reveal-delay),flex-grow .65s cubic-bezier(.22,1,.36,1) 0s}
}
.motion-parallax{translate:0 var(--parallax-y,0);scale:1.085;transform-origin:center}
.motion-enabled [data-magnetic]{translate:var(--magnetic-x,0) var(--magnetic-y,0);transition:translate .55s var(--motion-ease),background-color .3s,color .3s,border-color .3s,box-shadow .3s}
.motion-enabled [data-magnetic].magnet-active{transition-duration:.16s,.3s,.3s,.3s,.3s}
.reading-progress{transform:scaleX(0);transform-origin:0 50%;pointer-events:none}
.clean-scene{--clean-progress:1}
.clean-blade{pointer-events:none;transition:opacity .35s ease}
.clean-scene.is-clean .clean-blade{opacity:0}
.clean-orbit,.marquee-track{animation-play-state:paused}
.motion-enabled .clean-orbit{animation:ongyeol-orbit 28s linear infinite;animation-play-state:paused}
.motion-enabled .marquee-track{animation:ongyeol-marquee 32s linear infinite;animation-play-state:paused}
.motion-enabled .clean-orbit.is-motion-visible,.motion-enabled .marquee-track.is-motion-visible{animation-play-state:running}
.motion-enabled .marquee-track:hover{animation-play-state:paused}
.motion-paused .clean-orbit,.motion-paused .marquee-track{animation-play-state:paused!important}
.process-step{transition:color .55s ease,background-color .55s ease,border-color .55s ease}
.process-step .step-number,.process-step .process-number,.process-step .process-icon{transition:transform .7s var(--motion-ease),background-color .5s,color .5s,border-color .5s}
.process-step.is-active .process-icon{transform:rotate(0deg) scale(1)}
@keyframes ongyeol-orbit{to{transform:rotate(360deg)}}
@keyframes ongyeol-marquee{to{transform:translate3d(-50%,0,0)}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .button .icon,.text-link .icon,.service-link .icon{transition:transform .55s var(--motion-ease)}
 .button:hover .icon,.text-link:hover .icon,.service-link:hover .icon{transform:translate(3px,-2px)}
 .service-card .service-image img{transition:transform 1.1s var(--motion-ease)}
 .service-card:hover .service-image img{transform:scale(1.045)}
}
@media(max-width:700px){.motion-parallax{scale:1.055}.motion-enabled [data-reveal].motion-armed{transition-duration:.7s,.85s,.9s}.motion-enabled .marquee-track{animation-duration:24s}}
@media(prefers-reduced-motion:reduce){
 [data-reveal],[data-reveal].motion-armed,.hero-title-line>span{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
 .motion-parallax,[data-parallax],[data-magnetic]{translate:none!important;scale:none!important}
 .clean-frost,.clean-blade{display:none!important}
 .clean-orbit,.marquee-track{animation:none!important}
}
@media print{
 [data-reveal],[data-reveal].motion-armed,.hero-title-line>span{opacity:1!important;transform:none!important;clip-path:none!important}
 .motion-parallax,[data-parallax],[data-magnetic]{translate:none!important;scale:none!important}
 .clean-frost,.clean-blade,.reading-progress{display:none!important}
 .clean-orbit,.marquee-track{animation:none!important}
}
