:root{
  --bg:#090b0c;--bg2:#0f1214;--paper:#f1ede4;--muted:#a5abb0;--line:#252a2f;--blue:#2e63a8;--blue2:#4c84ce;--max:1240px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.55}
body::before{content:"";position:fixed;inset:0;z-index:998;pointer-events:none;opacity:.045;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:170px 170px}
@media(prefers-reduced-motion:reduce){body::before{opacity:.03}}
a{color:inherit;text-decoration:none} img{max-width:100%;display:block}
.container{width:min(var(--max),calc(100% - 40px));margin:auto}
.serif{font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.02em}
.eyebrow{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--blue2);font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border:1px solid #65707a;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;transition:.25s;background:transparent;color:white}
.btn:hover{background:white;color:#111}.btn.primary{background:linear-gradient(135deg,#3a72c0,var(--blue) 55%,#264d80);border-color:var(--blue);box-shadow:0 4px 22px -6px rgba(46,99,168,.55)}.btn.primary:hover{background:#fff;color:#111;box-shadow:none}
.nav{position:fixed;inset:0 0 auto 0;z-index:50;background:linear-gradient(rgba(6,9,11,.72),rgba(6,9,11,.5));backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border-bottom:1px solid rgba(255,255,255,.07)}
.nav-inner{height:82px;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:10px;margin-right:auto}.brand img{width:45px;height:45px;object-fit:contain}.brand strong{font-family:Georgia,serif;letter-spacing:.08em;font-size:1.1rem;font-weight:500}.brand small{display:block;color:#aeb4b8;letter-spacing:.18em;font-size:.58rem;margin-top:-2px}
.nav-links{display:flex;gap:30px;align-items:center}.nav-links a{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#e8e6df}.menu{display:none;background:none;border:0;color:white;font-size:1.5rem}
.hero{min-height:100svh;position:relative;display:grid;align-items:end;overflow:hidden}.hero-parallax{position:absolute;inset:-12% 0 -12% 0;background:center/cover no-repeat;will-change:transform}.hero:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(5,7,8,.88) 0%,rgba(5,7,8,.3) 52%,rgba(5,7,8,.18)),linear-gradient(0deg,rgba(5,7,8,.96),transparent 46%)}
.hero-content{position:relative;z-index:2;padding:160px 0 90px;max-width:820px}.hero h1{font-size:clamp(3.3rem,8vw,7.8rem);line-height:.88;margin:14px 0 24px}
.hero h1,.hero h1>div{background:linear-gradient(180deg,#ffffff 0%,#f2f6fb 45%,#bdd6f2 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{max-width:650px;color:#d7d9d7;font-size:1.07rem}.actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
.section{padding:110px 0}.section.alt{background:var(--bg2)}.split{display:grid;grid-template-columns:1fr 1.55fr;gap:70px;align-items:center}.split h2,.section-head h2{font-size:clamp(2.5rem,5vw,5rem);line-height:.98;margin:10px 0 20px}.lead{font-size:1.08rem;color:#c5c9ca;max-width:700px}
.media-frame{border:1px solid var(--line);padding:10px;background:#0b0e10}.media-frame img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.media-frame.portrait img{aspect-ratio:3/4;object-fit:cover;object-position:center 18%}
.project-feature{display:grid;grid-template-columns:.8fr 1.7fr;gap:40px;align-items:end;margin-top:50px}.project-feature img{width:100%;height:560px;object-fit:cover}.project-meta h3{font-size:3.5rem;margin:.2rem 0}.project-meta p{color:#b9bec0}
.timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);margin-top:1px}.timeline article{background:#0b0d0f;padding:12px}.timeline img{height:145px;width:100%;object-fit:cover}.timeline span{display:block;margin-top:10px;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#c4c8cb}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:42px}.card{background:var(--bg);padding:34px;min-height:250px}.card .icon{font-size:1.6rem;color:var(--blue2)}.card h3{font-family:Georgia,serif;font-weight:400;font-size:1.55rem}.card p{color:#aeb4b7;font-size:.95rem}
.gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-auto-rows:280px;gap:10px;margin-top:45px}.gallery img{width:100%;height:100%;object-fit:cover}.gallery .tall{grid-row:span 2}.gallery .wide{grid-column:span 2}

.bento-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:130px;grid-auto-flow:dense;gap:10px;margin-top:45px}
.bento-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.16,1,.3,1)}
.bento-grid a:hover img,.bento-grid figure:hover img{transform:scale(1.06)}
.bento-grid a,.bento-grid figure{position:relative;overflow:hidden;display:block;margin:0}
.bento-grid .b-xl{grid-column:span 2;grid-row:span 3}
.bento-grid .b-lg{grid-column:span 2;grid-row:span 2}
.bento-grid .b-md{grid-column:span 1;grid-row:span 2}
.bento-grid .b-sm{grid-column:span 1;grid-row:span 1}
.bento-grid .b-wide{grid-column:span 2;grid-row:span 1}
@media(max-width:900px){.bento-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}.bento-grid .b-xl{grid-column:span 2;grid-row:span 2}.bento-grid .b-lg,.bento-grid .b-wide{grid-column:span 2;grid-row:span 1}.bento-grid .b-md{grid-row:span 1}}
.process{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);margin-top:45px}.process article{background:var(--bg);padding:35px;min-height:260px}.process b{font-size:3rem;font-family:Georgia,serif;color:#314d71}.process h3{font-family:Georgia,serif;font-weight:400;font-size:1.5rem}.process p{color:#abb0b2}
.quote{position:relative;padding:110px 0;background:url('assets/lighting-home.jpeg') center/cover no-repeat}.quote:before{content:"";position:absolute;inset:0;background:rgba(6,7,8,.74)}.quote .container{position:relative}.quote blockquote{font-family:Georgia,serif;font-size:clamp(2rem,4vw,4.2rem);line-height:1.12;max-width:950px;margin:0}.quote cite{display:block;margin-top:22px;color:#c1c5c6;font-style:normal;letter-spacing:.12em;font-size:.72rem;text-transform:uppercase}
.cta{position:relative;padding:110px 0;text-align:center;background:#101418;overflow:hidden}
.cta::before{content:"";position:absolute;inset:-20%;z-index:0;background:radial-gradient(ellipse 55% 60% at 25% 20%,rgba(76,132,206,.22),transparent 60%),radial-gradient(ellipse 50% 55% at 78% 85%,rgba(46,99,168,.18),transparent 60%);filter:blur(10px);pointer-events:none}
.cta .container{position:relative;z-index:1}
.cta h2{font-size:clamp(3rem,6vw,6rem);margin:0 0 18px}.cta p{color:#bcc2c5;max-width:700px;margin:0 auto 30px}
.footer{padding:60px 0 25px;border-top:1px solid var(--line)}.footer-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:50px}.footer h4{font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:var(--blue2)}.footer p,.footer a{color:#aeb3b5}.legal{border-top:1px solid var(--line);margin-top:35px;padding-top:20px;color:#73797c;font-size:.78rem}
.page-hero{position:relative;padding:180px 0 90px;background:#0d1012;border-bottom:1px solid var(--line);overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:-20%;z-index:0;background:radial-gradient(ellipse 50% 55% at 15% 15%,rgba(76,132,206,.2),transparent 60%),radial-gradient(ellipse 45% 50% at 85% 90%,rgba(46,99,168,.16),transparent 60%);filter:blur(10px);pointer-events:none}
.page-hero .container{position:relative;z-index:1}
.page-hero h1{font-size:clamp(3.5rem,7vw,7rem);margin:.2em 0}.page-hero p{max-width:760px;color:#bcc1c3;font-size:1.1rem}
.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:32px;margin-top:50px}.project-card{position:relative;min-height:480px;overflow:hidden;border:1px solid var(--line)}.project-card img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;transition:.6s}.project-card:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.92),transparent 65%)}.project-card:hover img{transform:scale(1.03)}.project-card .copy{position:absolute;z-index:2;left:28px;right:28px;bottom:26px}.project-card h3{font-family:Georgia,serif;font-weight:400;font-size:2.4rem;margin:0}.project-card p{color:#d0d2d3;margin:.4rem 0}
.detail-hero{min-height:82svh;display:grid;align-items:end;position:relative;background:url('assets/hero-pool.jpeg') center/cover no-repeat}.detail-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#080a0b 3%,transparent 70%)}.detail-hero .container{position:relative;z-index:2;padding-bottom:70px}.detail-hero h1{font-size:clamp(4rem,8vw,8rem);margin:0}.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:40px}
.fact{background:rgba(255,255,255,.04);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.08);border-radius:2px;padding:26px}
.fact small{color:#7f8a90;text-transform:uppercase;letter-spacing:.12em}.fact div{margin-top:8px;font-family:Georgia,serif;font-size:1.3rem}
.form-wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:65px;align-items:start}.form{display:grid;gap:18px}.field{display:grid;gap:8px}.field label{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:#c4c9cc}.field input,.field select,.field textarea{width:100%;background:#0f1214;border:1px solid #333a40;color:#f2eee6;padding:15px 14px;font:inherit}.field textarea{min-height:150px;resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.notice{padding:15px;border-left:3px solid var(--blue);background:#0f1419;color:#bdc3c6;font-size:.9rem}.success,.error{display:none;padding:15px;margin-top:10px}.success{background:#13261c}.error{background:#311617}.score{font-size:.78rem;color:#77828a;margin-top:8px}
/* Divisions */
.division-list{display:flex;flex-direction:column;gap:1px;background:var(--line);margin-top:50px;border-top:1px solid var(--line)}
.division{background:var(--bg);display:grid;grid-template-columns:.85fr 1.15fr;align-items:stretch;min-height:520px}
.division:nth-child(even){grid-template-columns:1.15fr .85fr}
.division:nth-child(even) .division-media{order:2}
.division-media{position:relative;overflow:hidden}
.division-media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.division:hover .division-media img{transform:scale(1.045)}
.division-copy{padding:70px 64px;display:flex;flex-direction:column;justify-content:center}
.division-index{font-family:Georgia,serif;color:#2c4a70;font-size:1rem;letter-spacing:.1em}
.division-copy h3{font-family:Georgia,serif;font-weight:400;font-size:clamp(2.1rem,3.2vw,3.2rem);margin:.3rem 0 18px;line-height:1.02}
.division-copy p.lead{margin-bottom:22px}
.division-services{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 30px}
.division-services span{border:1px solid #333a40;padding:7px 14px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#c7cbcd}
.partner-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:50px}
.partner-card{background:rgba(255,255,255,.045);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%);border:1px solid rgba(255,255,255,.09);padding:46px 40px;transition:background .3s,border-color .3s}
.partner-card:hover{background:rgba(76,132,206,.09);border-color:rgba(76,132,206,.3)}
.partner-type{display:inline-flex;align-items:center;gap:8px;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue2);border:1px solid #33424f;padding:6px 13px;margin-bottom:20px}
.partner-mark{font-family:Georgia,serif;font-size:2rem;color:var(--paper);line-height:1.1;margin:0 0 6px}
.partner-mark small{display:block;font-family:Inter,ui-sans-serif,sans-serif;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#9aa1a5;font-weight:600;margin-top:8px}
.partner-card p{color:#b9bec0;font-size:.92rem;margin-top:16px;max-width:46ch}
.partner-note{margin-top:28px;color:#8a9095;font-size:.85rem}
@media(max-width:900px){.partner-grid{grid-template-columns:1fr}}
a.partner-card{display:block;text-decoration:none;color:inherit}

.footer-badge{display:inline-block;margin-bottom:18px;opacity:.9;transition:opacity .2s}
.footer-badge:hover{opacity:1}
.footer-badge img{width:60px;height:60px;border-radius:50%;display:block}

.san-juan-seal{position:absolute;top:36px;right:0;width:130px;height:auto;filter:drop-shadow(0 12px 20px rgba(0,0,0,.4))}
@media(max-width:900px){.san-juan-seal{position:static;margin-bottom:24px;width:90px}}

.blog-list{display:flex;flex-direction:column;gap:1px;background:var(--line);margin-top:10px}
.blog-card{background:var(--bg);padding:38px 6px}
.blog-card h3{margin:.3rem 0 10px;font-size:1.6rem}
.blog-card h3 a{color:var(--paper)}
.blog-card p{color:#b9bec0;max-width:65ch}

.blog-body{color:#c5c9ca;font-size:1.05rem;line-height:1.75}
.blog-body h2{font-family:Georgia,serif;font-weight:400;color:var(--paper);font-size:1.9rem;margin:2.2em 0 .6em}
.blog-body h3{font-family:Georgia,serif;font-weight:400;color:var(--paper);font-size:1.4rem;margin:1.8em 0 .5em}
.blog-body p{margin:0 0 1.3em}
.blog-body a{color:var(--blue2);text-decoration:underline}
.blog-body ul,.blog-body ol{margin:0 0 1.3em;padding-left:1.4em}
.blog-body li{margin-bottom:.5em}
.blog-body img{width:100%;height:auto;margin:1.5em 0;border:1px solid var(--line)}
.blog-body blockquote{margin:1.8em 0;padding-left:20px;border-left:3px solid var(--blue);color:#9aa1a5;font-style:italic}
.blog-body strong{color:var(--paper)}

.brand-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:50px}
.brand-tile{background:var(--bg);min-height:110px;padding:20px;display:flex;align-items:center;justify-content:center;text-align:center;transition:.3s}
.brand-tile:hover{background:#0d1215}
.brand-tile img{max-width:100%;max-height:56px;width:auto;height:auto;filter:grayscale(1) brightness(1.6) contrast(.9);opacity:.75;transition:.3s}
.brand-tile:hover img{filter:none;opacity:1}
.brand-tile span{font-family:Georgia,serif;font-size:1.1rem;color:#c9cdcf;letter-spacing:.01em;transition:.3s}
.brand-tile:hover span{color:var(--paper)}
@media(max-width:900px){.brand-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.brand-grid{grid-template-columns:1fr}}

.layer-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);margin-top:50px}
.layer-strip article{background:var(--bg);padding:26px 20px;text-align:left}
.layer-strip b{display:block;font-family:Georgia,serif;color:#3a6096;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.layer-strip p{color:#aeb4b7;font-size:.85rem;margin:0}

/* Scroll reveal (initial state set inline by GSAP in script.js — no CSS hiding, so content stays visible if JS/CDN fails) */
.btn{position:relative;overflow:hidden}

/* Ken Burns ambient motion (hero zoom handled in JS alongside its scroll-parallax to avoid transform conflicts) */
.division-media img{animation:kenburns 26s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.09)}}
.division:hover .division-media img{animation-play-state:paused}

/* Click ripple */
.btn .ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(255,255,255,.5);pointer-events:none;animation:ripple-out .65s ease-out forwards}
.btn.primary .ripple{background:rgba(255,255,255,.55)}
@keyframes ripple-out{to{transform:scale(3.2);opacity:0}}

/* Wave divider — animated flowing water */
.wave-divider{overflow:hidden;line-height:0;background:var(--bg)}
.wave-divider.alt{background:var(--bg2)}
.wave-track{display:flex;width:200%;animation:wave-scroll 14s linear infinite}
.wave-svg{width:50%;height:64px;flex-shrink:0;display:block}
.wave-svg .w1{fill:var(--blue);opacity:.3}
.wave-svg .w2{fill:var(--blue2);opacity:.5}
.wave-svg .w3{fill:#f1ede4;opacity:.06}
@keyframes wave-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Cursor glow */
.cursor-glow{position:fixed;top:0;left:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:2;mix-blend-mode:screen;background:radial-gradient(circle,rgba(76,132,206,.16) 0%,rgba(76,132,206,.07) 35%,transparent 70%);opacity:0;transition:opacity .4s;will-change:transform}

.cursor-label{position:fixed;top:0;left:0;width:86px;height:86px;margin:-43px 0 0 -43px;border-radius:50%;background:var(--paper);color:#0a0d0f;display:flex;align-items:center;justify-content:center;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;opacity:0;transform:scale(.4);transition:opacity .3s,transform .3s;pointer-events:none;z-index:999;will-change:transform}
.cursor-label.is-active{opacity:1;transform:scale(1)}

.ticker{overflow:hidden;background:var(--blue);padding:20px 0;line-height:1}
.ticker-track{display:flex;width:max-content;animation:ticker-scroll 30s linear infinite}
.ticker-track .ticker-set{display:flex;flex-shrink:0}
.ticker-track span.word{white-space:nowrap;font-family:Georgia,serif;font-size:1.35rem;color:#eef2f7;padding:0 20px}
.ticker-track span.dot{white-space:nowrap;color:#9fc0e6;font-size:1rem}
@keyframes ticker-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:600px){.ticker-track span.word{font-size:1.05rem;padding:0 14px}}
.cursor-glow.is-active{opacity:1}

/* 3D tilt cards */
.tilt{transform-style:preserve-3d;perspective:900px;will-change:transform}
.tilt-inner{transition:transform .1s linear}

/* Kinetic split text */
.split-word{display:inline-block;will-change:transform,opacity}
.split-char{display:inline-block;will-change:transform,opacity}

/* Rig scene — scroll-driven truck crossing */
.rig-scene{position:relative;height:100vh;overflow:hidden;background:linear-gradient(180deg,#0a0d0f,#050607)}
.rig-sky{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 30%,rgba(76,132,206,.13),transparent 65%)}
.rig-copy{position:absolute;top:8%;left:0;right:0;text-align:center;z-index:3;padding:0 24px}
.rig-copy .eyebrow{justify-content:center;display:flex}
.rig-copy h2{font-size:clamp(2.2rem,5vw,4.6rem);margin:.4rem 0 0}
.rig-road{position:absolute;left:0;right:0;bottom:26%;height:4px;background:repeating-linear-gradient(90deg,#3a424a 0 40px,transparent 40px 80px)}
.rig-truck{position:absolute;bottom:27.5%;left:50%;width:min(68vw,830px);height:auto;z-index:2;filter:drop-shadow(0 18px 24px rgba(0,0,0,.5))}
.rig-truck .body{fill:var(--paper)}
.rig-truck .cab{fill:var(--blue)}
.rig-truck .accent{fill:var(--blue2)}
.rig-truck .wheel{fill:#111}
.rig-truck .wheel-hub{fill:#666}
.rig-truck .glass{fill:#9fd0ff;opacity:.85}

/* Mow scene — scroll-driven mower cutting a stripe into the lawn */
.mow-scene{position:relative;height:100vh;overflow:hidden;background:linear-gradient(180deg,#0a0d0f,#0d1410)}
.mow-copy{position:absolute;top:8%;left:0;right:0;text-align:center;z-index:4;padding:0 24px}
.mow-copy .eyebrow{justify-content:center;display:flex}
.mow-copy h2{font-size:clamp(2rem,4.6vw,4rem);margin:.4rem 0 0}
.mow-lawn{position:absolute;left:0;right:0;bottom:0;height:34%;overflow:hidden;background:repeating-linear-gradient(90deg,#172318 0 34px,#1d2c1e 34px 68px)}
.mow-lawn-cut{position:absolute;inset:0;width:calc(var(--mow,0) * 1%);background:repeating-linear-gradient(90deg,#32502b 0 34px,#3d5e34 34px 68px);box-shadow:3px 0 12px rgba(0,0,0,.5)}
.mow-mower{position:absolute;bottom:34%;left:calc(var(--mow,0) * 1%);transform:translateX(-50%);width:min(13vw,150px);height:auto;z-index:3;filter:drop-shadow(0 12px 16px rgba(0,0,0,.5))}
.mow-mower .body{fill:var(--paper)}
.mow-mower .accent{fill:var(--blue2)}
.mow-mower .handle{stroke:var(--blue);fill:none}
.mow-mower .wheel{fill:#111}
.mow-mower .wheel-hub{fill:#666}
@media(max-width:900px){.mow-copy h2{font-size:2.2rem}.mow-mower{width:26vw}}
@media(prefers-reduced-motion:reduce){.mow-scene{--mow:100}}

/* Lyon Financial banner */
.lyon-banner{display:block;max-width:640px;margin:0 auto;border-radius:10px;overflow:hidden;box-shadow:0 20px 40px rgba(0,0,0,.35);transition:transform .25s ease}
.lyon-banner:hover{transform:translateY(-3px)}
.lyon-banner img,.lyon-banner video{display:block;width:100%;height:auto}

/* FAQ accordion (native details/summary) */
.faq{margin-top:45px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line);padding:22px 0}
.faq summary{cursor:pointer;font-family:Georgia,serif;font-size:1.15rem;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';font-size:1.5rem;color:var(--blue2);flex-shrink:0;transition:transform .2s;line-height:1}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{color:var(--muted);margin-top:14px;max-width:70ch}

/* Pool scene — scroll-driven pool filling with water */
.pool-scene{position:relative;height:100vh;overflow:hidden;background:linear-gradient(180deg,#0a0d0f,#0d1714);display:flex;align-items:center;justify-content:center}
.pool-copy{position:absolute;top:8%;left:0;right:0;text-align:center;z-index:4;padding:0 24px}
.pool-copy .eyebrow{justify-content:center;display:flex}
.pool-copy h2{font-size:clamp(2rem,4.6vw,4rem);margin:.4rem 0 0}
.pool-basin{width:min(70vw,860px);height:auto;position:relative;z-index:2;filter:drop-shadow(0 30px 40px rgba(0,0,0,.5))}
.basin-shell{fill:#c9c4b6}
.basin-floor{fill:#8d8878}
.pool-water{animation:pool-shimmer 3.5s ease-in-out infinite}
.pool-surface{fill:#bff2ff;opacity:.55}
.basin-outline{fill:none;stroke:var(--blue2);stroke-width:3;opacity:.6}
@keyframes pool-shimmer{0%,100%{opacity:.92}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.pool-water{animation:none}}
@media(max-width:900px){.pool-copy h2{font-size:2.2rem}}

/* Vine divider — hand-drawn vine that grows as you scroll past it */
.vine-divider{position:relative;height:120px;overflow:hidden;background:var(--bg2)}
.vine-divider svg{width:100%;height:100%;display:block}
.vine-stem{fill:none;stroke:var(--blue2);stroke-width:3;stroke-linecap:round}
.vine-leaf{fill:var(--blue);opacity:0}
@media(prefers-reduced-motion:reduce){.vine-stem{stroke-dashoffset:0 !important}.vine-leaf{opacity:1 !important}}

/* Reveal scene — scroll-driven before/after wipe */
.reveal-scene{position:relative;height:100vh;overflow:hidden;background:var(--bg2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:36px}
.reveal-copy{text-align:center;padding:0 24px}
.reveal-copy .eyebrow{justify-content:center;display:flex}
.reveal-copy h2{font-size:clamp(2rem,4.2vw,3.4rem);margin:.4rem 0 0}
.reveal-frame{--reveal:0;position:relative;width:min(78vw,880px);aspect-ratio:16/10;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,.45)}
.reveal-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.reveal-after{clip-path:inset(0 calc(100% - var(--reveal) * 1%) 0 0)}
.reveal-line{position:absolute;top:0;bottom:0;left:calc(var(--reveal) * 1%);width:2px;background:var(--blue2);box-shadow:0 0 16px rgba(76,132,206,.85);transform:translateX(-1px)}
.reveal-tag{position:absolute;bottom:16px;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;padding:7px 14px;background:rgba(5,7,8,.72);border:1px solid var(--line);color:#e7e5df}
.reveal-tag-before{left:16px}
.reveal-tag-after{right:16px;opacity:calc(var(--reveal) / 100)}

@media(max-width:900px){.rig-copy h2{font-size:2.4rem}.rig-truck{width:88vw}.cursor-glow{display:none}.reveal-frame{width:92vw}}
@media(hover:none){.cursor-glow{display:none}.cursor-label{display:none}}

@media(prefers-reduced-motion:reduce){.hero-parallax,.division-media img,.wave-track,.ticker-track{animation:none !important}.cursor-glow,.cursor-label{display:none}.reveal-frame{--reveal:100}}

@media(max-width:900px){.nav-links{display:none}.menu{display:block}.nav.open .nav-links{display:flex;position:absolute;top:82px;left:0;right:0;background:#080a0b;padding:24px;flex-direction:column;align-items:flex-start}.split,.project-feature,.form-wrap{grid-template-columns:1fr}.cards,.process{grid-template-columns:1fr 1fr}.timeline{grid-template-columns:1fr 1fr}.gallery{grid-template-columns:1fr 1fr}.project-grid{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr}.facts{grid-template-columns:1fr 1fr}.hero h1{font-size:4.4rem}.division,.division:nth-child(even){grid-template-columns:1fr}.division{min-height:auto}.division-media{height:340px}.division:nth-child(even) .division-media{order:0}.division-copy{padding:44px 30px}.layer-strip{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.container{width:min(var(--max),calc(100% - 28px))}.section{padding:78px 0}.hero-content{padding-bottom:62px}.hero h1{font-size:3.5rem}.cards,.process,.timeline,.facts,.two{grid-template-columns:1fr}.gallery{display:block}.gallery img{height:290px;margin-bottom:10px}.project-feature img{height:390px}.nav-inner{height:72px}.brand strong{font-size:.95rem}.nav.open .nav-links{top:72px}.division-copy{padding:36px 22px}.division-media{height:260px}.layer-strip{grid-template-columns:1fr}.division-services span{font-size:.65rem}}
