[data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .55s ease, transform .55s ease; }
[data-reveal].is-visible { opacity: 1; transform: none; }
.hero-visual img { animation: hero-entrance .75s ease both; }
@keyframes hero-entrance { from { opacity: .4; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
}
.filter-in { animation: filter-in .22s ease both; }
@keyframes filter-in { from { opacity: .55; transform: translateY(5px); } to { opacity: 1; transform: none; } }

/* Additional, restrained interactions for the SurveyX page layouts. */
.brand img { transition: transform .22s ease; }
.brand:hover img { transform: scale(1.025); }
.menu-toggle { transition: border-color .18s ease, transform .18s ease; }
.menu-toggle:active { transform: scale(.96); }
.nav-cta span { display: inline-block; transition: transform .18s ease; }
.nav-cta:hover span { transform: translateX(4px); }
.button:active { transform: translateY(1px) scale(.985); }
.button:focus-visible, .filter-button:focus-visible, .lightbox button:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.text-link { position: relative; }
.text-link::after { position: absolute; right: 0; bottom: -.12rem; left: 0; height: 2px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .22s ease; }
.text-link:hover::after, .text-link:focus-visible::after { transform: scaleX(1); }
.site-footer a { position: relative; text-decoration: none; }
.site-footer a::after { position: absolute; right: 0; bottom: -.18rem; left: 0; height: 1px; background: #e3c66f; content: ""; transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.site-footer a:hover::after, .site-footer a:focus-visible::after { transform: scaleX(1); }

.hero-visual img { transition: transform .45s ease; }
.hero-visual:hover img { transform: scale(1.018); }
.hero-visual figcaption { transition: transform .2s ease, background-color .2s ease; }
.hero-visual:hover figcaption { transform: translateY(-4px); background: #fff; }
.service-tile::after { position: absolute; z-index: 2; inset: 0; border: 1px solid transparent; content: ""; pointer-events: none; transition: border-color .2s ease; }
.service-tile:hover::after, .service-tile:focus-visible::after { border-color: var(--gold); }
.tile-number { transition: transform .2s ease, background-color .2s ease; }
.service-tile:hover .tile-number { transform: translateY(-2px); background: var(--gold-pale); }

.mission-cards article { position: relative; overflow: hidden; }
.mission-cards article::before { position: absolute; top: 0; right: 0; left: 0; height: 3px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .25s ease; }
.mission-cards article:hover::before, .mission-cards article:focus-within::before { transform: scaleX(1); }
.values-list article { transition: padding-left .2s ease, border-color .2s ease; }
.values-list article:hover { padding-left: .45rem; border-color: var(--gold); }
.about-images img, .about-markets > img { transition: transform .35s ease; }
.about-images img:hover, .about-markets > img:hover { transform: scale(1.015); }

.service-index a { position: relative; padding-block: .2rem; }
.service-index a::after { position: absolute; right: 0; bottom: -.1rem; left: 0; height: 2px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.service-index a:hover::after, .service-index a.is-active::after { transform: scaleX(1); }
.technical-detail summary, .equipment-detail summary { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.technical-detail summary::after, .equipment-detail summary::after { content: "+"; color: var(--gold); font-size: 1.15rem; transition: transform .18s ease; }
.technical-detail[open] summary::after, .equipment-detail[open] summary::after { transform: rotate(45deg); }
.service-columns li { transition: color .18s ease, padding-left .18s ease; }
.service-columns li:hover { padding-left: .45rem; color: var(--navy-2); }
.process-steps article { transition: border-color .2s ease, transform .2s ease; }
.process-steps article:hover { transform: translateY(-3px); border-color: var(--gold); }

.equipment-item { position: relative; }
.equipment-item::before { position: absolute; z-index: 1; top: 0; right: 0; left: 0; height: 3px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .25s ease; }
.equipment-item:hover::before, .equipment-item:focus-within::before { transform: scaleX(1); }
.availability-label { display: flex; align-items: center; gap: .45rem; }
.availability-label::before { width: .42rem; height: .42rem; flex: 0 0 .42rem; border-radius: 50%; background: var(--gold); content: ""; }
.equipment-item:hover .availability-label::before { animation: availability-tick .7s ease-in-out 2; }
@keyframes availability-tick { 50% { transform: scale(1.35); } }
.filter-button { box-shadow: inset 0 0 0 0 var(--gold); transition: color .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.filter-button.selected { box-shadow: inset 0 -3px 0 var(--gold); }
.filter-button:active { transform: scale(.97); }
.hire-step-grid article span { display: inline-block; transition: transform .2s ease, color .2s ease; }
.hire-step-grid article:hover span { transform: translateX(4px); color: var(--gold); }

.gallery-item figcaption { position: relative; width: fit-content; max-width: 100%; }
.gallery-item figcaption::after { position: absolute; right: 0; bottom: .35rem; left: 0; height: 1px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.gallery-item:hover figcaption::after, .gallery-item:focus-within figcaption::after { transform: scaleX(1); }
.lightbox button { transition: transform .18s ease, background-color .18s ease, border-color .18s ease; }
.lightbox button:hover { transform: scale(1.06); border-color: #e3c66f; background: rgba(255,255,255,.12); }
.lightbox-prev:hover, .lightbox-next:hover { transform: translateY(-50%) scale(1.06); }
.gallery-item button:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.filter-button.selected[data-gallery-filter]::after { margin-left: .35rem; color: #e3c66f; content: "✓"; }

.division-cards article { position: relative; overflow: hidden; }
.division-cards article::before { position: absolute; top: 0; right: 0; left: 0; height: 3px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .25s ease; }
.division-cards article:hover::before, .division-cards article:focus-within::before { transform: scaleX(1); }
.division-cards a { position: relative; width: fit-content; }
.division-cards a::after { position: absolute; right: 0; bottom: -.12rem; left: 0; height: 1px; background: var(--gold); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.division-cards a:hover::after, .division-cards a:focus-visible::after { transform: scaleX(1); }
.map-frame { border: 1px solid transparent; transition: border-color .2s ease, box-shadow .2s ease; }
.map-frame:hover, .map-frame:focus-within { border-color: var(--gold); box-shadow: 0 8px 24px rgba(16,43,78,.08); }
.inquiry-form label { transition: color .18s ease; }
.inquiry-form label:focus-within { color: var(--navy-2); }
.inquiry-form > .button.is-submitting { gap: .6rem; }
.inquiry-form > .button.is-submitting::after { width: .9rem; height: .9rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; content: ""; animation: submit-spin .7s linear infinite; }
@keyframes submit-spin { to { transform: rotate(360deg); } }
.contact-illustration img, .contact-last > img { transition: transform .35s ease; }
.contact-illustration:hover img, .contact-last > img:hover { transform: scale(1.015); }

@media (hover: none) {
  .hero-visual:hover img, .about-images img:hover, .about-markets > img:hover, .contact-illustration:hover img, .contact-last > img:hover { transform: none; }
}
