@font-face{font-family:Open Sans;src:url(/fonts/open-sans-var.woff2)format("woff2-variations");font-weight:300 800;font-stretch:75% 100%;font-style:normal;font-display:swap}@font-face{font-family:Open Sans;src:url(/fonts/open-sans-italic-var.woff2)format("woff2-variations");font-weight:300 800;font-stretch:75% 100%;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Upright;src:url(/fonts/cormorant-upright.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--brand-purple:#7030a0;--brand-lavender:#ccf;--brand-grey:#aeaaa9;--color-bg:#fff;--color-bg-subtle:#f7f5fa;--color-card-bg:#fff;--color-text:#1a1a1a;--color-text-muted:#55505a;--color-border:#e2dee8;--color-accent:#7030a0;--color-accent-hover:#5a2680;--color-accent-contrast:#fff;--color-overlay:#140c1ceb;--font-sans:"Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--spacing-xs:.5rem;--spacing-sm:.75rem;--spacing-md:1.25rem;--spacing-lg:2rem;--spacing-xl:3.5rem;--radius:4px;--max-width:68rem;--measure:38rem}:root[data-theme=dark]{--color-bg:#0f0f0f;--color-bg-subtle:#171419;--color-card-bg:#1a171d;--color-text:#e5e5e5;--color-text-muted:#a9a3b0;--color-border:#2e2833;--color-accent:#b98fe0;--color-accent-hover:#cdaced;--color-accent-contrast:#14091e;--color-overlay:#060409f0}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;margin:0;font-size:1rem;line-height:1.6;display:flex}img{max-width:100%;height:auto;display:block}h1,h2,h3{letter-spacing:-.01em;margin:0 0 var(--spacing-md);font-weight:600;line-height:1.2}h1{font-size:2.5rem}h2{margin-top:var(--spacing-xl);font-size:2rem}h3{margin-top:var(--spacing-lg);font-size:1.5rem}p{margin:0 0 var(--spacing-md);max-width:var(--measure)}.lead{color:var(--color-text-muted);font-size:1.2rem}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}hr{border:0;border-top:1px solid var(--color-border);margin:var(--spacing-xl) 0}.container{width:100%;max-width:var(--max-width);padding:0 var(--spacing-md);margin:0 auto}main{padding:var(--spacing-xl) 0;flex:1 0 auto}main:has(>.hero:first-child){padding-top:0}.skip-link{background:var(--color-accent);color:var(--color-accent-contrast);padding:var(--spacing-sm) var(--spacing-md);z-index:100;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}:where(a,button,[tabindex]):focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.site-nav{z-index:50;background:color-mix(in srgb, var(--color-bg) 88%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);position:sticky;top:0}.nav-inner{align-items:center;gap:var(--spacing-md);min-height:4rem;display:flex}.nav-brand{align-items:center;margin-right:auto;display:inline-flex}.nav-brand img{width:auto;height:2.5rem;display:block}.nav-brand:hover img{opacity:.85}.nav-links{gap:var(--spacing-md);margin:0;padding:0;list-style:none;display:flex}.nav-links a{color:var(--color-text-muted);font-size:.95rem}.nav-links a:hover{color:var(--color-accent);text-decoration:none}.nav-links a[aria-current=page]{color:var(--color-accent);font-weight:600}.nav-toggle{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;background:0 0;padding:.4rem;line-height:0;display:none}.nav-toggle:hover{color:var(--color-accent);border-color:var(--color-accent)}.nav-toggle svg{width:1.25rem;height:1.25rem}.nav-toggle .icon-close,[data-nav-open] .nav-toggle .icon-bars{display:none}[data-nav-open] .nav-toggle .icon-close{display:inline}.theme-toggle{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;background:0 0;padding:.4rem;line-height:0;display:inline-flex}.theme-toggle:hover{color:var(--color-accent);border-color:var(--color-accent)}.theme-toggle svg{width:1.1rem;height:1.1rem}.theme-toggle .icon-moon,:root[data-theme=dark] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:inline}.btn,.btn-secondary{border-radius:var(--radius);padding:.65rem 1.4rem;font-size:.95rem;font-weight:600;transition:transform .15s,background .15s;display:inline-block}.btn{background:var(--color-accent);color:var(--color-accent-contrast);border:1px solid var(--color-accent)}.btn:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-accent-contrast);text-decoration:none;transform:translateY(-1px)}.btn-secondary{color:var(--color-accent);border:1px solid var(--color-border);background:0 0}.btn-secondary:hover{border-color:var(--color-accent);text-decoration:none;transform:translateY(-1px)}.btn-row{gap:var(--spacing-sm);margin-top:var(--spacing-lg);flex-wrap:wrap;display:flex}:root{--band-image:none;--band-image-sm:none;--band-position:center 62%;--band-veil-strong:#ffffffed;--band-veil-mid:#ffffffb8;--band-veil-soft:#ffffff57}:root[data-theme=dark]{--band-veil-strong:#0f0f0fed;--band-veil-mid:#0f0f0fbd;--band-veil-soft:#0f0f0f61}.photo-band{padding:var(--spacing-xl) 0;background-color:var(--color-bg);background-image:linear-gradient(100deg, var(--band-veil-strong) 0%, var(--band-veil-strong) 46%, var(--band-veil-mid) 66%, var(--band-veil-soft) 100%), var(--band-image);background-size:cover;background-position:var(--band-position);background-repeat:no-repeat;position:relative}.photo-band>.container>:first-child{margin-top:0}.hero{--band-image:image-set(url(/images/hero-catenary-1920.webp) 1x);--band-image-sm:image-set(url(/images/hero-catenary-1024.webp) 1x);border-bottom:1px solid var(--color-border)}.band-approach{--band-image:image-set(url(/images/band-approach-1440.webp) 1x);--band-image-sm:image-set(url(/images/band-approach-1024.webp) 1x);--band-position:center 58%;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);margin:var(--spacing-xl) 0}.hero-inner{position:relative}.hero h1{max-width:20ch;font-size:clamp(2rem,5vw,3.25rem)}.hero-tagline{color:var(--color-accent);max-width:var(--measure);font-size:1.25rem;font-style:italic}.hero-stat{width:fit-content;max-width:var(--measure);margin:var(--spacing-lg) 0 0;padding-top:var(--spacing-md);border-top:1px solid var(--color-border);color:var(--color-accent);font-size:1.05rem;font-weight:600}.rail-photo{display:none}.rail-photo,.contact-photo{-webkit-mask-composite:source-in;-webkit-mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000),linear-gradient(#0000,#000 7% 93%,#0000);mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000),linear-gradient(#0000,#000 7% 93%,#0000);mask-composite:intersect}.about h1{font-size:2rem}.about .lead{font-size:1rem}.about-card{margin-top:var(--spacing-lg);padding:var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-card-bg)}.about-card h3{margin-top:0;font-size:1.05rem}.about-card .data-list{gap:var(--spacing-xs) 0;grid-template-columns:1fr}.about-card dd{margin-bottom:var(--spacing-sm);color:var(--color-accent);font-weight:600}:root{--photo-veil:#ffffff80}:root[data-theme=dark]{--photo-veil:#0f0f0f80}@media (width>=60rem){.rail-layout{--measure:34rem;grid-template-columns:minmax(0, var(--measure)) minmax(14rem, 1fr);gap:var(--spacing-xl);align-items:start;display:grid}.rail-aside{gap:var(--spacing-xl);align-content:start;display:grid}.rail-text>:first-child,.about-card,.rail-aside>.quote{margin-top:0}.rail-aside>.quote{border-top:0;padding-top:0}.rail-photo{background-position:50%;background-size:cover;display:block}.rail-photo-bridge{aspect-ratio:4/3;background-image:linear-gradient(to right, var(--photo-veil), transparent), url(/images/about-under-bridge.webp)}.rail-photo-canopy{aspect-ratio:1/1.85;background-image:linear-gradient(to right, var(--photo-veil), transparent), url(/images/about-catenary-canopy.webp)}.rail-photo-substation{aspect-ratio:3/4;background-image:linear-gradient(to right, var(--photo-veil), transparent), url(/images/services-substation.webp)}.rail-photo-cantilever{aspect-ratio:3/4;background-image:linear-gradient(to right, var(--photo-veil), transparent), url(/images/services-cantilever.webp)}}.diagram{margin:var(--spacing-lg) 0;max-width:none;overflow-x:auto}.diagram-sheet{aspect-ratio:1191/842;border:1px solid var(--color-border);border-radius:var(--radius);background-color:#fff;background-image:url(/images/design-process-diagram.webp);background-position:50%;background-repeat:no-repeat;background-size:contain;min-width:34rem}.diagram figcaption{margin-top:var(--spacing-sm);color:var(--color-text-muted);max-width:var(--measure);font-size:.9rem}.contact-photo{margin-top:var(--spacing-lg);aspect-ratio:3/2;background-image:linear-gradient(to right, var(--photo-veil), transparent), url(/images/contact-dusk.webp);background-position:50%;background-size:cover}@media (width>=60rem){.contact{--measure:26rem;grid-template-columns:minmax(0, var(--measure)) minmax(14rem, 1fr);gap:var(--spacing-xl);align-items:start;display:grid}.contact-details>:first-child,.contact-photo{margin-top:0}}.reference-list{margin:var(--spacing-lg) 0;counter-reset:reference;padding:0;list-style:none}.reference{counter-increment:reference;padding:var(--spacing-md) 0 var(--spacing-md) var(--spacing-xl);border-top:1px solid var(--color-border);position:relative}.reference:last-child{border-bottom:1px solid var(--color-border)}.reference:before{content:counter(reference, decimal-leading-zero);left:0;top:var(--spacing-md);font-variant-numeric:tabular-nums;color:var(--color-accent);font-weight:600;position:absolute}.reference-scope{margin-bottom:var(--spacing-xs);color:var(--color-text);font-weight:600}.reference-project{color:var(--color-text-muted);margin-bottom:0;font-size:.95rem}.rail-text>:last-child,.credentials-text>:last-child{margin-bottom:0}.credentials,.quote-section{margin-top:var(--spacing-xl)}.quote-section .quote{margin-top:0;text-align:center;max-width:42rem;margin-inline:auto}@media (width>=60rem){.credentials-text>:first-child,.credentials .about-card{margin-top:0}}.quote{max-width:var(--measure);margin:var(--spacing-xl) 0 0;padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.quote p{margin-bottom:var(--spacing-md);font-family:Cormorant Upright,Georgia,Times New Roman,serif;font-size:clamp(1rem,1.5vw,1.15rem);font-style:italic;line-height:1.4}.quote footer{color:var(--color-text-muted);font-size:.95rem;line-height:1.5}.quote cite{color:var(--color-accent);font-style:normal;font-weight:600}.card-grid{gap:var(--spacing-md);margin-top:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));display:grid}.card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing-lg)}.card h3{margin-top:0;font-size:1.15rem}.card p:last-child{margin-bottom:0}.checklist{max-width:var(--measure);padding:0;list-style:none}.checklist li{padding:var(--spacing-sm) 0 var(--spacing-sm) 1.6rem;border-bottom:1px solid var(--color-border);position:relative}.checklist li:before{content:"";background:var(--color-accent);width:.5rem;height:.5rem;position:absolute;top:1.35rem;left:0}.data-list{gap:var(--spacing-xs) var(--spacing-md);max-width:var(--measure);grid-template-columns:max-content 1fr;margin:0;display:grid}.data-list dt{color:var(--color-text-muted);font-weight:600}.data-list dd{margin:0}.placeholder{color:#000;background:#ffd400;padding:0 .3em;font-weight:700}.gallery{margin:var(--spacing-lg) 0;margin:var(--spacing-lg) 0}.carousel{max-width:49rem;margin-inline:auto;position:relative}.carousel-stage{position:relative;overflow:hidden}.gallery-sheets .carousel-stage{aspect-ratio:16/7}.gallery-sheets .carousel-slide img{object-fit:contain;background:#fff}.gallery-photos .carousel-stage{aspect-ratio:16/9}.gallery-photos .carousel-slide img{object-fit:cover}.gallery-photos .carousel-slide.is-contain img{object-fit:contain}.carousel-slide{cursor:zoom-in;font:inherit;color:inherit;opacity:0;pointer-events:none;background:0 0;border:0;padding:0;transition:opacity .6s,transform .6s cubic-bezier(.33,.1,.25,1);position:absolute;inset:0;transform:scale(.94)}.carousel-slide.is-active{opacity:1;pointer-events:auto;z-index:1;transform:scale(1)}.carousel-slide.is-leaving{opacity:0;z-index:2;transform:scale(1.09) translateX(var(--leave-x,-16%));transition:opacity .6s ease-in,transform .6s cubic-bezier(.33,.1,.25,1)}.carousel-slide.is-leaving-next{--leave-x:-16%}.carousel-slide.is-leaving-prev{--leave-x:16%}@media (prefers-reduced-motion:reduce){.carousel-slide{transition:none}.carousel-slide.is-leaving{transform:scale(1)}}.carousel-slide img{width:100%;height:100%}.carousel-arrow{z-index:2;border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg) 85%, transparent);backdrop-filter:blur(4px);width:2.75rem;height:2.75rem;color:var(--color-text);cursor:pointer;border-radius:50%;font-size:1.5rem;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.carousel-arrow:hover{border-color:var(--color-accent);color:var(--color-accent)}@media (hover:hover){.carousel-arrow{opacity:0;pointer-events:none;transition:opacity .2s,border-color .15s,color .15s}.carousel:hover .carousel-arrow,.carousel:focus-within .carousel-arrow{opacity:1;pointer-events:auto}}@media (prefers-reduced-motion:reduce){.carousel-arrow{transition:none}}.carousel-prev{left:var(--spacing-sm)}.carousel-next{right:var(--spacing-sm)}.carousel-controls{margin-top:var(--spacing-md);justify-content:center;display:flex}.carousel-dots{gap:var(--spacing-xs);display:flex}.carousel-dot{border:1px solid var(--color-accent);cursor:pointer;background:0 0;border-radius:50%;width:.7rem;height:.7rem;padding:0;transition:background .15s}.carousel-dot:hover{background:var(--color-accent-hover)}.carousel-dot[aria-current=true]{background:var(--color-accent)}.lightbox{width:100%;max-width:100vw;height:100%;max-height:100vh;color:var(--color-text);background:0 0;border:0;padding:0}.lightbox::backdrop{background:var(--color-overlay)}.lightbox-inner{justify-content:center;align-items:center;gap:var(--spacing-md);height:100%;padding:var(--spacing-lg);flex-direction:column;display:flex}.lightbox img{object-fit:contain;border-radius:var(--radius);max-width:min(96vw,78rem);max-height:78vh}.lightbox-caption{color:#f3f0f6;text-align:center;max-width:60ch;margin:0}.lightbox-controls{pointer-events:none;position:absolute;inset:0}.lightbox-btn{pointer-events:auto;color:#fff;border-radius:var(--radius);cursor:pointer;background:#ffffff1f;border:1px solid #ffffff47;width:2.75rem;height:2.75rem;font-size:1.4rem;line-height:1;position:absolute}.lightbox-btn:hover{background:#ffffff3d}.lightbox-close{top:var(--spacing-md);right:var(--spacing-md)}.lightbox-prev{left:var(--spacing-md);top:50%;transform:translateY(-50%)}.lightbox-next{right:var(--spacing-md);top:50%;transform:translateY(-50%)}.site-footer{border-top:1px solid var(--color-border);background:var(--color-bg-subtle);padding:var(--spacing-lg) 0;color:var(--color-text-muted);flex-shrink:0;font-size:.9rem}.footer-inner{gap:var(--spacing-md) var(--spacing-xl);flex-wrap:wrap;justify-content:space-between;display:flex}.site-footer p{margin:0 0 var(--spacing-xs);max-width:none}@media (width<=768px){.photo-band{background-image:linear-gradient(var(--band-veil-strong), var(--band-veil-strong)), var(--band-image-sm)}.carousel-arrow{width:2.25rem;height:2.25rem;font-size:1.2rem}h1{font-size:2rem}h2{font-size:1.6rem}h3{font-size:1.25rem}.nav-inner{padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm);flex-wrap:wrap}.nav-brand img{height:2.1rem}.nav-links{gap:var(--spacing-sm) var(--spacing-md);width:100%;padding-bottom:var(--spacing-xs);flex-wrap:wrap;order:3}[data-nav=enhanced] .nav-toggle{display:inline-flex}[data-nav=enhanced] .nav-links{display:none}[data-nav=enhanced][data-nav-open] .nav-links{width:auto;padding:0 var(--spacing-md) var(--spacing-sm);background:var(--color-bg);border-bottom:1px solid var(--color-border);flex-direction:column;gap:0;display:flex;position:absolute;top:100%;left:0;right:0}[data-nav=enhanced][data-nav-open]{background:var(--color-bg)}[data-nav=enhanced][data-nav-open] .nav-links a{border-top:1px solid var(--color-border);padding:.7rem 0;font-size:1rem;display:block}}@media (width<=480px){:root{--spacing-xl:2.5rem}.data-list{grid-template-columns:1fr;gap:0}.data-list dd{margin-bottom:var(--spacing-sm)}.btn,.btn-secondary{text-align:center;width:100%}}
