/* Infocor motion system: a live mark, connected sections and reactive surfaces. */
.scroll-progress{position:absolute;left:0;bottom:-1px;right:0;height:2px;background:var(--amber);transform:scaleX(0);transform-origin:left;pointer-events:none;box-shadow:0 0 12px #f4bd3260}
.site-header{transition:background .3s,box-shadow .3s}
.site-header.has-scrolled{background:rgba(19,23,21,.97);box-shadow:0 8px 35px #00000020}
.main-nav>a:not(.nav-contact)::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--amber);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.main-nav>a[aria-current=location]{color:var(--amber)}
.main-nav>a[aria-current=location]::after,.main-nav>a:hover::after{transform:scaleX(1)}

/* Logo: the eyes power up, the owl perimeter conducts a signal, and light
   passes through the vector letters. The real logo never disappears. */
.brand-live{position:relative;isolation:isolate}
.brand-energy{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.brand-eyes,.brand-eye-halo,.brand-sweep,.brand-outline{opacity:0}
.brand-eyes{filter:drop-shadow(0 0 5px #fff3aa) drop-shadow(0 0 12px #f4bd32)}
.brand-eye-halo{filter:drop-shadow(0 0 6px #f4bd32)}
.brand-outline{stroke-dasharray:13 87;stroke-dashoffset:100;filter:drop-shadow(0 0 3px #f4bd32)}
.motion-ready .brand-eyes{animation:brand-awake 5.8s ease-in-out infinite}
.motion-ready .brand-eye-halo{animation:brand-halo 5.8s ease-in-out infinite}
.motion-ready .brand-outline{animation:brand-current 7s linear infinite}
.motion-ready .brand-sweep{animation:brand-letter-sweep 8.5s ease-in-out infinite}
.brand-live:hover .brand-eyes,.brand-live:focus-visible .brand-eyes{fill:#fff;filter:drop-shadow(0 0 8px #fff3aa) drop-shadow(0 0 16px #f4bd32)}

/* Hero chip. */
.hero{position:relative;isolation:isolate;background:radial-gradient(ellipse at 78% 43%,#44442b28,transparent 47%)}
.hero-art{perspective:1000px}
.circuit-board{transform:rotateX(var(--board-rx,0deg)) rotateY(var(--board-ry,0deg));transition:transform .5s cubic-bezier(.2,.7,.2,1);transform-style:preserve-3d}
.art-index{color:#7e8874}
.circuit-signals{opacity:0;filter:drop-shadow(0 0 4px #f4bd32)}
.circuit-signals path{stroke-dasharray:6 94;stroke-dashoffset:100}
.core-halo{transform-origin:280px 255px;opacity:0}
.board-scan{opacity:0}
.owl-eyes{opacity:0;filter:drop-shadow(0 0 4px #ffdb75)}
.motion-ready .circuit-signals{opacity:1}
.motion-ready .circuit-signals path{animation:signal-travel 4.8s linear infinite}
.motion-ready .circuit-signals path:nth-child(2n){animation-delay:-2.6s;animation-duration:6s}
.motion-ready .circuit-signals path:nth-child(3n){animation-delay:-1.1s;animation-duration:5.4s}
.motion-ready .circuit-signals path:nth-child(4n){animation-delay:-3.6s;animation-duration:6.7s}
.motion-ready .circuit-nodes circle{animation:node-power 5s ease-in-out infinite}
.motion-ready .circuit-nodes circle:nth-child(2n){animation-delay:-2s}
.motion-ready .circuit-nodes circle:nth-child(3n){animation-delay:-3.6s}
.motion-ready .core-owl{animation:core-breathe 4.8s ease-in-out infinite}
.motion-ready .owl-eyes{animation:eyes-power 4.8s ease-in-out infinite}
.motion-ready .core-edge{animation:edge-power 4.8s ease-in-out infinite}
.motion-ready .core-halo{animation:core-wave 6s ease-out infinite}
.motion-ready .halo-two{animation-delay:-3s}
.motion-ready .board-scan{animation:board-scan 9s linear infinite}
.motion-ready .hero h1{animation:hero-arrive .8s cubic-bezier(.2,.7,.2,1) both}
.motion-ready .hero h1>span{background:linear-gradient(105deg,var(--amber) 20%,#fff0b5 45%,var(--amber) 66%);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:title-current 9s ease-in-out infinite}

/* Each section carries a physical circuit across its upper edge. Ambient
   grids and light stay behind the content, and never capture the pointer. */
.fx-section{position:relative;isolation:isolate;overflow:clip}
.fx-section>.wrap{position:relative;z-index:1}
.section-atmosphere{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at var(--surface-x,85%) var(--surface-y,0%),#c0a8390a,transparent 55%)}
.section-atmosphere::before{content:'';position:absolute;inset:0;background-image:linear-gradient(#bdbf9d14 1px,transparent 1px),linear-gradient(90deg,#bdbf9d14 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(160deg,transparent 30%,#000 75%,transparent);opacity:.8}
.section-light .section-atmosphere::before{background-image:linear-gradient(#48564110 1px,transparent 1px),linear-gradient(90deg,#48564110 1px,transparent 1px);mask-image:linear-gradient(160deg,transparent 40%,#000)}
.section-circuit{position:absolute;top:0;left:0;width:100%;height:110px;z-index:-1;pointer-events:none;fill:none;stroke:var(--amber);stroke-width:1;opacity:.62}
.section-track{opacity:.16}
.section-signal{opacity:0;stroke-width:1.8;stroke-dasharray:4 96;filter:drop-shadow(0 0 3px #f4bd3260)}
.section-pads{stroke:none;fill:var(--amber);opacity:.28}
.section-light .section-circuit{stroke:#a17a13;opacity:.65}
.section-light .section-pads{fill:#a17a13}
.motion-ready .section-signal{animation:signal-travel 8s linear infinite}
.motion-ready .section-pads{animation:pad-breathe 6s ease-in-out infinite}
.fx-section:nth-of-type(2n) .section-circuit{transform:scaleX(-1)}
.fx-section:nth-of-type(2n) .section-signal{animation-delay:-4s}
.fx-section:nth-of-type(3n) .section-signal{animation-delay:-2.5s}
.section-index{position:relative}
.section-index::before{content:'';position:absolute;width:26px;height:2px;left:0;top:-12px;background:#ad8521;transform:scaleX(.35);transform-origin:left}
.motion-ready .fx-inview .section-index::before{animation:index-charge 4s ease-in-out infinite}
.reveal-item{transition:opacity .6s ease,transform .65s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}
.motion-ready .reveal-item:not(.is-revealed){opacity:.2;transform:translateY(20px)}
.reveal-item.is-revealed{opacity:1;transform:none}
[data-title-reveal]{position:relative}
[data-title-reveal]::after{content:'';position:absolute;left:0;bottom:-9px;width:70px;height:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);opacity:0;pointer-events:none}
.section-light [data-title-reveal]::after{background:linear-gradient(90deg,transparent,#aa7c14,transparent)}
.motion-ready [data-title-reveal].is-revealed::after{animation:heading-sweep 1.1s ease-out both}

/* Services: individual luminous surfaces, icons that draw on entry and a
   border trace that makes each link feel connected to its service. */
.service-row{position:relative;isolation:isolate;transition:background .3s,transform .3s}
.service-row::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 380px 190px at var(--surface-x,40%) var(--surface-y,50%),#ecc44e28,transparent 75%);opacity:0;transition:opacity .35s;pointer-events:none}
.service-row::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:linear-gradient(90deg,#9f7611,#d8aa2c,transparent);transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.2,.7,.2,1);pointer-events:none}
.service-row:hover::before,.service-row:focus-within::before{opacity:1}
.service-row:hover::after,.service-row:focus-within::after{transform:scaleX(1)}
.service-icon{position:relative;align-self:center;width:62px;height:62px;display:grid;place-items:center;padding:9px;background:#e8e8d9;transition:background .3s,transform .35s,color .3s}
.service-icon::before,.service-icon::after{content:'';position:absolute;inset:0;border:1px solid #9eaa8a;pointer-events:none}
.service-icon::before{clip-path:polygon(0 0,28% 0,28% 3%,3% 3%,3% 28%,0 28%,0 0,100% 100%,72% 100%,72% 97%,97% 97%,97% 72%,100% 72%,100% 100%)}
.service-icon::after{border-color:#b48413;opacity:0;transform:scale(.86)}
.service-row:hover .service-icon,.service-row:focus-within .service-icon{background:#f4df93;color:#5f4712;transform:translateY(-3px)}
.service-row:hover .service-icon::after{opacity:.45;transform:scale(1.15);transition:transform .6s,opacity .6s}
.motion-ready .service-row.is-revealed .service-icon svg{animation:icon-assemble 1.1s ease-out both}
.motion-ready .service-row.fx-inview .service-number{animation:number-light 5s ease-in-out infinite}
.service-row:nth-child(2) .service-number{animation-delay:-1.7s!important}
.service-row:nth-child(3) .service-number{animation-delay:-3.4s!important}
.round-link{position:relative;overflow:hidden}
.round-link span{transition:transform .25s}
.round-link:hover span{transform:translate(2px,-2px)}
.round-link:focus-visible,.button:focus-visible{outline-offset:5px}

/* The consultation process has a moving signal joining its three steps. */
.steps{position:relative;isolation:isolate}
.steps::before{content:'';position:absolute;left:17px;top:29px;bottom:25px;width:1px;background:#6a765840;z-index:-1}
.steps::after{content:'';position:absolute;left:17px;top:29px;bottom:25px;width:1px;background:linear-gradient(180deg,transparent 35%,#f4bd32 49%,#fff0a0 50%,transparent 65%);background-size:100% 300%;background-position:0 100%;z-index:-1;opacity:0}
.motion-ready .steps::after{opacity:1;animation:step-current 6s linear infinite}
.steps article>span{position:relative;background:#252b28;width:35px;height:29px;display:grid;place-items:center;padding:0;font-size:11px;border:1px solid #606c4c;transition:background .3s,border-color .3s,box-shadow .3s}
.motion-ready .steps article:nth-child(1)>span{animation:step-node 6s ease-in-out infinite}
.motion-ready .steps article:nth-child(2)>span{animation:step-node 6s 1.5s ease-in-out infinite}
.motion-ready .steps article:nth-child(3)>span{animation:step-node 6s 3s ease-in-out infinite}

/* Heritage uses one scanning highlight, never a fabricated counter. */
.since{isolation:isolate}
.since::before{content:'';position:absolute;inset:0 18px 0 0;background-image:radial-gradient(#83907150 1px,transparent 1px);background-size:17px 17px;mask-image:linear-gradient(130deg,transparent 20%,#000);opacity:.25;z-index:-1}
.since>strong{position:relative;isolation:isolate}
.motion-ready .since>strong{background:linear-gradient(105deg,var(--ink) 32%,#9b7414 45%,var(--ink) 58%);background-size:320% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:heritage-current 10s ease-in-out infinite}
.photo-frame{position:relative;overflow:hidden;background:var(--ink)}
.photo-frame::after{content:'';position:absolute;inset:16px;pointer-events:none;background:linear-gradient(var(--amber),var(--amber)) left top/30px 1px no-repeat,linear-gradient(var(--amber),var(--amber)) left top/1px 30px no-repeat,linear-gradient(var(--amber),var(--amber)) right top/30px 1px no-repeat,linear-gradient(var(--amber),var(--amber)) right top/1px 30px no-repeat,linear-gradient(var(--amber),var(--amber)) left bottom/30px 1px no-repeat,linear-gradient(var(--amber),var(--amber)) left bottom/1px 30px no-repeat,linear-gradient(var(--amber),var(--amber)) right bottom/30px 1px no-repeat,linear-gradient(var(--amber),var(--amber)) right bottom/1px 30px no-repeat;opacity:.85;transition:inset .6s}
.photo-frame img{transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.photo-frame:hover img{transform:scale(1.025)}
.photo-frame:hover::after{inset:23px}
.photo-scan{position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 40%,#f4bd3218 49%,#fff7d530 50%,transparent 55%);transform:translateX(-100%);opacity:0}
.motion-ready .store-photo.is-revealed .photo-scan{animation:photo-capture 1.8s .2s ease-out both}

/* The form behaves like a powered panel. Fields themselves stay still. */
.consultation-panel{position:relative;isolation:isolate;transition:border-color .3s,box-shadow .3s}
.consultation-panel::before,.consultation-panel::after{content:'';position:absolute;left:-1px;right:-1px;height:2px;background:linear-gradient(90deg,transparent 30%,#f4bd32 49%,#ffefb1 50%,transparent 70%);background-size:250% 100%;pointer-events:none;opacity:0}
.consultation-panel::before{top:-1px}
.consultation-panel::after{bottom:-1px;transform:scaleX(-1)}
.motion-ready .consultation-panel::before,.motion-ready .consultation-panel::after{opacity:.8;animation:panel-current 5s linear infinite}
.consultation-panel:focus-within{border-color:#a9924e;box-shadow:0 0 35px #f4bd320c}
.form-heading>span{transition:transform .3s,color .3s}
.consultation-panel:focus-within .form-heading>span{transform:translate(3px,-3px);color:#fff0b5}
input,select,textarea{transition:border-color .2s,background .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{background:#232b22;box-shadow:inset 2px 0 var(--amber)}
.consultation-result:not([hidden]){animation:result-enter .35s ease-out}

/* Location uses an abstract route and a beacon, without imitating live data. */
.local-graphic{position:relative;overflow:hidden;background-color:#e6e7d8;background-image:linear-gradient(#abb59728 1px,transparent 1px),linear-gradient(90deg,#abb59728 1px,transparent 1px);background-size:18px 18px}
.location-signal{stroke-dasharray:12 88;opacity:0}
.location-ping{transform-origin:120px 43px;opacity:0}
.motion-ready .location-signal{animation:signal-travel 4s linear infinite}
.motion-ready .location-ping{animation:location-beacon 4s ease-out infinite}
.motion-ready .ping-second{animation-delay:-2s}
.faq details{transition:border-color .25s}
.faq details[open]{border-bottom-color:#a28229}
.faq summary{transition:color .2s}
.faq summary:hover{color:#89670f}
.faq summary>span{transition:transform .25s,color .25s}
.faq details[open]>div{animation:result-enter .3s ease-out}
.closing-band{position:relative;isolation:isolate;overflow:hidden}
.closing-band::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(110deg,transparent 0,transparent 150px,#fff5bc16 151px,#fff5bc16 180px,transparent 181px,transparent 320px);background-size:640px 100%}
.motion-ready .closing-band::before{animation:closing-current 18s linear infinite}

/* Shared small interactions. */
.button{position:relative;overflow:hidden}
.button::after{content:'';position:absolute;inset:0;transform:translateX(-130%) skewX(-20deg);background:linear-gradient(90deg,transparent,#ffffff40,transparent);transition:transform .65s;pointer-events:none}
.button:hover::after{transform:translateX(130%) skewX(-20deg)}
.text-link{position:relative}
.text-link span{transition:transform .25s}
.text-link:hover span{transform:translate(2px,-2px)}
.motion-ready [data-motion-zone]:not(.fx-inview) *,.motion-ready [data-motion-zone]:not(.fx-inview)::before,.motion-ready [data-motion-zone]:not(.fx-inview)::after,.page-asleep *,.page-asleep *::before,.page-asleep *::after{animation-play-state:paused!important}
.motion-ready [data-motion-zone]:not(.fx-inview) *::before,.motion-ready [data-motion-zone]:not(.fx-inview) *::after{animation-play-state:paused!important}

@keyframes brand-awake{0%,100%{opacity:.25}22%,45%{opacity:1}65%,78%{opacity:.55}}
@keyframes brand-halo{0%,100%{opacity:.12}25%,45%{opacity:.9}65%,78%{opacity:.3}}
@keyframes brand-current{0%{stroke-dashoffset:100;opacity:0}10%,90%{opacity:.9}100%{stroke-dashoffset:0;opacity:0}}
@keyframes brand-letter-sweep{0%,52%{transform:translateX(-110px);opacity:0}57%{opacity:.9}88%{opacity:.9}100%{transform:translateX(520px);opacity:0}}
@keyframes signal-travel{0%{stroke-dashoffset:100;opacity:0}7%{opacity:1}88%{opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes node-power{0%,60%,100%{fill:#191c1c;stroke:#7c805e}28%,36%{fill:#f4bd32;stroke:#ffdc7a;filter:drop-shadow(0 0 5px #f4bd32)}}
@keyframes core-breathe{0%,100%{filter:drop-shadow(0 0 1px #f4bd3220)}50%{filter:drop-shadow(0 0 8px #f4bd3275)}}
@keyframes eyes-power{0%,15%,85%,100%{opacity:0}40%,58%{opacity:.9}}
@keyframes edge-power{0%,100%{stroke:#6e7059;filter:none}50%{stroke:#c59c36;filter:drop-shadow(0 0 6px #f4bd3240)}}
@keyframes core-wave{0%{transform:scale(1);opacity:0}10%{opacity:.32}85%,100%{transform:scale(1.55);opacity:0}}
@keyframes board-scan{0%,65%{transform:translateY(0);opacity:0}67%{opacity:.4}98%{transform:translateY(510px);opacity:.4}100%{transform:translateY(510px);opacity:0}}
@keyframes hero-arrive{from{transform:translateY(14px);filter:blur(2px)}to{transform:none;filter:none}}
@keyframes title-current{0%,40%{background-position:100% 0}80%,100%{background-position:0 0}}
@keyframes pad-breathe{0%,100%{opacity:.25}50%{opacity:.7}}
@keyframes index-charge{0%,100%{transform:scaleX(.35);opacity:.5}50%{transform:scaleX(1);opacity:1}}
@keyframes heading-sweep{0%{transform:translateX(-8px) scaleX(.1);opacity:0}45%{opacity:.8}100%{transform:translateX(95px) scaleX(.6);opacity:0}}
@keyframes icon-assemble{from{stroke-dasharray:240;stroke-dashoffset:240;opacity:.3}to{stroke-dasharray:240;stroke-dashoffset:0;opacity:1}}
@keyframes number-light{0%,100%{color:#70756c}50%{color:#89670c;text-shadow:0 0 12px #caa32344}}
@keyframes step-current{from{background-position:0 100%}to{background-position:0 0}}
@keyframes step-node{0%,55%,100%{border-color:#606c4c;box-shadow:none}15%,30%{border-color:#c8a64c;box-shadow:0 0 13px #f4bd321c}}
@keyframes heritage-current{0%,35%{background-position:100% 0}70%,100%{background-position:0 0}}
@keyframes photo-capture{0%{transform:translateX(-100%);opacity:0}20%,70%{opacity:1}100%{transform:translateX(100%);opacity:0}}
@keyframes panel-current{from{background-position:100% 0}to{background-position:0 0}}
@keyframes location-beacon{0%{transform:scale(.35);opacity:0}15%{opacity:.7}100%{transform:scale(1.7);opacity:0}}
@keyframes result-enter{from{opacity:.35;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes closing-current{from{background-position:0 0}to{background-position:640px 0}}

@media(max-width:1100px){.service-icon{width:44px;height:48px;padding:6px}.service-icon svg{width:32px;height:32px}}
@media(max-width:760px){.section-circuit{height:66px;width:145%;left:-20%;opacity:.5}.section-atmosphere::before{background-size:32px 32px;opacity:.5}.service-icon{width:38px;height:42px;padding:5px;align-self:start}.service-icon svg{width:28px;height:28px}.service-title>span{font-size:9px;letter-spacing:.02em;line-height:1.6}.service-row>p{font-size:14px;padding-right:5px}.steps::before,.steps::after{left:12px}.steps article>span{width:25px;height:27px;font-size:10px}.photo-frame::after{inset:10px}.main-nav>a:not(.nav-contact)::after{width:28px}.motion-ready .reveal-item:not(.is-revealed){transform:translateY(12px)}.brand-live{min-height:44px;display:flex;align-items:center}.brand-energy{top:50%;height:auto;aspect-ratio:510/128;transform:translateY(-50%)}.section-index::before{top:-9px}}
@media(max-width:380px){.service-icon{width:31px;height:36px;padding:4px}.service-icon svg{width:25px;height:25px}.service-title>span{font-size:8px}.service-row>p{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal-item{opacity:1!important;transform:none!important}.circuit-board,.button:hover,.photo-frame:hover img,.service-row:hover .service-icon{transform:none!important}.brand-eyes{opacity:.7}.motion-ready .hero h1>span{background:none;color:var(--amber)}.motion-ready .since>strong{background:none;color:var(--ink)}.photo-scan{display:none}}
@media print{.brand-energy,.section-atmosphere,.section-circuit,.photo-scan{display:none}.reveal-item{opacity:1!important;transform:none!important}.motion-ready .since>strong,.motion-ready .hero h1>span{background:none;color:black}*,*::before,*::after{animation:none!important}}
