
/* PT.Elektra V5.1 — restrained cinematic electricity; progressive enhancement.
   No external fonts, video backgrounds, WebGL, or continuous particle loops. */
:root{--v51-electric:#b4d72b;--v51-white:#e9ffc3;--v51-dark:#071620}
.v51-energy-meter{position:fixed;z-index:89;right:0;top:0;height:100dvh;width:3px;pointer-events:none;transform-origin:top;transform:scaleY(var(--v51-scroll,0));background:#b4d72b;box-shadow:-2px 0 11px #b4d72b38;will-change:transform}
.v51-power-contact{position:absolute;top:5%;right:-8px;width:45px;height:3px;background:var(--v51-electric);transform-origin:right;transform:scaleX(.25);opacity:.5;pointer-events:none}
.v51-service .v5-hero,.v51-projects .v5-hero,.v51-location .v5-hero{isolation:isolate}
.v51-service .v5-hero-visual,.v51-projects .v5-hero-visual{perspective:1050px;transform-style:preserve-3d;isolation:isolate}
.v51-service .v5-hero-visual img,.v51-projects .v5-hero-visual img{transform:perspective(1200px) rotateY(var(--v51-rY,0deg)) rotateX(var(--v51-rX,0deg)) scale(1.012);transition:transform .42s cubic-bezier(.18,.75,.26,1),filter .4s ease;will-change:transform}
.v51-service .v5-hero-visual:is(:hover,:focus-within) img,.v51-projects .v5-hero-visual:is(:hover,:focus-within) img{transform:perspective(1200px) rotateY(var(--v51-rY,0deg)) rotateX(var(--v51-rX,0deg)) translateZ(18px) scale(1.034)}
.v51-arc-field{position:absolute;inset:-5% -8%;width:116%;height:110%;pointer-events:none;z-index:4;overflow:visible;opacity:0;transition:opacity .16s ease}
.v51-arc-field path{fill:none;stroke:var(--v51-electric);stroke-width:3.4;stroke-linecap:square;stroke-linejoin:bevel;stroke-dasharray:340;stroke-dashoffset:340;filter:drop-shadow(0 0 2px #b4d72b)}
.v51-arc-field .minor{stroke:#ecffd2;stroke-width:1.7;stroke-dasharray:180;stroke-dashoffset:180}
.v51-hero-energized .v51-arc-field,.v5-hero-visual:hover .v51-arc-field{opacity:1}
.v51-hero-energized .v51-arc-field path,.v5-hero-visual:hover .v51-arc-field path{animation:v51-discharge .95s cubic-bezier(.1,.7,.26,1) 1 both}
.v51-hero-energized .v51-arc-field .minor,.v5-hero-visual:hover .v51-arc-field .minor{animation-duration:.62s;animation-delay:.1s}
@keyframes v51-discharge{0%{stroke-dashoffset:340;opacity:0}18%{opacity:1}40%{stroke-dashoffset:0;opacity:1}56%{opacity:.15}65%{opacity:1}100%{stroke-dashoffset:-80;opacity:0}}
.v51-service .v5-hero-copy h1{position:relative}
.v51-hero-index{letter-spacing:.02em!important}
/* Different service families deliberately use different energy behavior. */
.v51-urgent .v5-hero{background:#07131c}
.v51-urgent .v51-arc-field path{stroke:#d8ff85}
.v51-architectural .v5-hero{background:#0c2630}
.v51-architectural .v5-hero-visual img{object-position:center 40%}
.v51-precision .v5-hero{background:#081c28}
.v51-location .v5-hero{background:#102634}
.v51-location .v5-hero-visual img{filter:saturate(.87)}
.v51-location .v5-hero-line{opacity:.55}
.v51-projects .v5-hero{background:#071620}
/* One of the signature interactions: portfolio imagery escapes its architectural frame. */
.v51-projects .v5-project-card,.v51-projects .v5-legacy-card{perspective:900px;isolation:isolate;transform:translateZ(0);transition:box-shadow .28s ease,translate .4s cubic-bezier(.2,.7,.2,1);will-change:translate}
@media(hover:hover) and (pointer:fine){
 .v51-projects .v5-project-card:hover,.v51-projects .v5-legacy-card:hover{translate:0 -9px;box-shadow:0 26px 35px #06182433}
 .v51-projects .v5-project-card:hover img,.v51-projects .v5-legacy-card:hover img{transform:scale(1.09) translateY(-8px);filter:contrast(1.045)}
}
.v51-projects .v5-project-card::before,.v51-projects .v5-legacy-card::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;background:linear-gradient(115deg,transparent 0 36%,#d7ff80a8 37%,transparent 39% 72%,#b4d72b55 74%,transparent 76%);background-size:230% 100%;background-position:-100% 0}
.v51-projects .v5-project-card:hover::before,.v51-projects .v5-legacy-card:hover::before{animation:v51-sweep .65s ease-out 1 both}
@keyframes v51-sweep{0%{background-position:-100% 0;opacity:0}24%{opacity:.65}100%{background-position:100% 0;opacity:0}}
/* Editorial sections benefit from improved typography and calm breathing room. */
.v51-service .v5-article h2{scroll-margin-top:110px}
.v51-service .v5-article h2::first-letter{color:#16313c}
.v51-service .v5-article-grid{align-items:start}
.v51-location .v5-article-lead{border-left:3px solid var(--v51-electric);padding-left:20px}
.v51-page-image-reveal{opacity:1}
/* Mobile CTA intentionally visible, no collision with top navigation. */
@media(max-width:680px){
 .v5-header .v5-header-cta{display:inline-flex!important;margin:0 0 0 auto;padding:10px 12px;font-size:11px;line-height:1.25;max-width:132px;min-height:43px;align-items:center;justify-content:center;white-space:normal;text-align:center}
 .v5-menu-toggle{margin-left:0!important}
 .v51-energy-meter{width:2px}
 .v51-arc-field{inset:-4%;width:108%;height:108%}
 .v51-service .v5-hero-visual img,.v51-projects .v5-hero-visual img{transform:none!important;will-change:auto}
 .v51-service .v5-hero-visual{min-width:0}
}
@media(max-width:380px){
 .v5-header .v5-header-cta{max-width:105px;font-size:10px;padding:9px 8px}
 .v5-menu-toggle{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
 .v51-energy-meter{display:none!important}
 .v51-arc-field{display:none!important}
 .v51-service .v5-hero-visual img,.v51-projects .v5-hero-visual img{transform:none!important;transition:none!important;will-change:auto}
 .v51-projects .v5-project-card,.v51-projects .v5-legacy-card{transition:none!important;translate:none!important;will-change:auto}
 .v51-projects .v5-project-card::before,.v51-projects .v5-legacy-card::before{display:none!important}
}
/* Homepage has its own bespoke story; polish instead of replacing its V4 arc system. */
.v51-home .service{transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.v51-home .hero-copy{position:relative;z-index:5}
.v51-home .button:focus-visible,.v51-home .service:focus-visible{outline:3px solid #d6ff77;outline-offset:4px}
/* QA correction: intentional out-of-frame hero art must not cause page scrolling. */
.v51-home .hero,.v51-home .section-about{overflow-x:clip}
@media(max-width:365px){.v5-header .v5-header-cta{display:none!important}}
/* Very small phones prioritize logo + a usable menu; the quote link stays inside menu. */
@media(max-width:440px){
 .v5-header .v5-header-cta{display:none!important}
 .v5-header .v5-menu-toggle{margin-left:auto!important}
 .v5-nav .v51-mobile-nav-cta{display:flex;align-items:center;background:#b4d72b;color:#102331;margin-top:8px;padding:13px 15px;font-weight:800}
}
@media(min-width:441px){.v5-nav .v51-mobile-nav-cta{display:none!important}}
/* Fail-safe logo poster: even if animation scheduling is delayed on a busy device,
   the opening sequence shows the actual logo instead of a blank black screen. */
.v51-home .v4-intro__brand{opacity:1;animation:v51-logo-ignite .54s .18s cubic-bezier(.18,.85,.2,1) both}
@keyframes v51-logo-ignite{0%{opacity:.36;transform:scale(.94);filter:brightness(.62)}38%{opacity:.88;filter:brightness(1.4)}60%{opacity:.55;filter:brightness(.86)}100%{opacity:1;transform:scale(1);filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){.v51-home .v4-intro__brand{animation:none!important;opacity:1!important}}
