:root[data-theme="light"]{color-scheme:dark}
*,*::before,*::after{box-sizing:border-box}
html{font-family:var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);overflow-x:clip;font-size:var(--fs-body)}
h1,h2,h3,h4{margin:0;text-wrap:balance;font-family:var(--sans);font-weight:700;letter-spacing:-.025em;line-height:1.1}
h1{font-size:var(--fs-h1);line-height:1.02;letter-spacing:-.035em}
h2{font-size:var(--fs-h2);line-height:1.06;letter-spacing:-.03em}
h3{font-size:var(--fs-h3);line-height:1.2}
h4{font-size:var(--fs-h4);line-height:1.25}
p{margin:0} a{color:inherit} img{max-width:100%;display:block}
em.s{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em;font-size:1.06em}
strong{font-weight:600}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gutter)}
.eyebrow{font-size:var(--fs-cap);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2)}
.lead{font-size:var(--fs-lead);color:var(--text-2);max-width:56ch;line-height:1.55}
.lead strong{color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 28px;border-radius:999px;font-weight:600;font-size:var(--fs-body);letter-spacing:-.005em;text-decoration:none;border:1px solid transparent;cursor:pointer;font-family:var(--sans);transition:transform .25s var(--ease),box-shadow .25s,background .25s,border-color .25s;position:relative}
.btn:focus-visible{outline:3px solid var(--accent-2);outline-offset:3px}
.btn-primary{background:linear-gradient(135deg,#25c2b0,#13988a);color:#04120f;box-shadow:0 10px 30px var(--glow),inset 0 1px 0 rgba(255,255,255,.35);overflow:hidden}
.btn-primary::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);transform:translateX(-130%);transition:transform .8s var(--ease)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 18px 40px var(--glow),inset 0 1px 0 rgba(255,255,255,.35)}
.btn-primary:hover::after{transform:translateX(130%)}
.btn-glass{background:var(--glass);border-color:var(--edge-2);color:var(--text);backdrop-filter:blur(10px)}.btn-glass:hover{background:var(--glass-2);transform:translateY(-2px)}
.btn svg{width:18px;height:18px;transition:transform .3s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.grain{position:absolute;inset:0;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");mix-blend-mode:overlay}

/* motion vocabulary */
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes enter{from{opacity:0;transform:translateX(70px) rotateY(-24deg) rotateX(9deg) scale(.95)}to{opacity:1;transform:rotateY(-9deg) rotateX(5deg)}}
@keyframes enter-flat{from{opacity:0;transform:translateY(34px) scale(.97)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:scale(.85) translateY(8px)}to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fadein{to{opacity:1}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(4);opacity:0}}
@keyframes aurora{0%{transform:translate(0,0) scale(1)}50%{transform:translate(-7%,5%) scale(1.18)}100%{transform:translate(5%,-4%) scale(1.06)}}
@keyframes breathe{0%,100%{box-shadow:0 0 90px var(--glow)}50%{box-shadow:0 0 160px rgba(0,150,136,.55)}}
@keyframes typing{0%,12%{opacity:0}22%,82%{opacity:1}100%{opacity:0}}
@keyframes dot{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-4px);opacity:1}}
@keyframes scroll{to{transform:translateX(-50%)}}
@keyframes ring{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.8);opacity:0}}
@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(0,120,109,.45)}100%{box-shadow:0 0 0 12px rgba(0,120,109,0)}}

/* nav */
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:rgba(8,18,15,.74);backdrop-filter:blur(16px);border-bottom:1px solid var(--edge)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;height:76px}
.logo{display:inline-flex;align-items:center;text-decoration:none}
.logo img{height:30px;width:auto}
.nav-links{display:flex;gap:32px;align-items:center;font-weight:500;font-size:15px}
.nav-links a{text-decoration:none;color:var(--text-2);position:relative;padding-block:4px}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;border-radius:2px;background:var(--accent-2);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.nav-links a:hover{color:#fff}.nav-links a:hover::after{transform:scaleX(1)}
.nav-cta{display:flex;gap:10px;align-items:center}
.nav-cta .btn{padding:11px 20px;font-size:var(--fs-sm)}
.progress{position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transform:scaleX(0);transform-origin:left;box-shadow:0 0 12px var(--accent-2)}
@media (max-width:920px){.nav-links{display:none}.nav-cta .btn-glass{display:none}}

/* logo strip */
.marquee{border-block:1px solid var(--edge);padding-block:26px 28px;background:var(--bg-2)}
.marquee .label{text-align:center;font-size:var(--fs-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);font-weight:600;margin-bottom:22px}
.lane{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.track{display:flex;align-items:center;gap:72px;width:max-content;padding-inline:36px;margin:0;list-style:none;animation:scroll 42s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.track li{flex:0 0 auto}
.track img{height:36px;width:auto;opacity:.72;transition:opacity .3s,transform .3s var(--ease)}
.track img.tall{height:44px}
.track img:hover{opacity:1;transform:scale(1.08)}
@media (prefers-reduced-motion:reduce){.track{animation:none;flex-wrap:wrap;width:auto;justify-content:center;gap:40px}.track li.dup{display:none}}

/* sections */
section.block{padding-block:120px;position:relative}
.head{max-width:64ch}
.head h2{color:#fff}
.head h2 em.s{color:var(--accent-2)}
.head .lead{margin-top:20px}
.center{text-align:center;margin-inline:auto}.center .lead{margin-inline:auto}

footer.site{border-top:1px solid var(--edge);padding-block:56px 36px;font-size:var(--fs-sm);color:var(--text-3)}
footer.site .wrap{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
footer.site h4,footer.site .fh{color:#fff;font-size:var(--fs-cap);letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin-bottom:14px}
footer.site ul{list-style:none;padding:0;margin:0;display:grid;gap:9px}
footer.site a{text-decoration:none;color:var(--text-3)}footer.site a:hover{color:#fff}
footer.site .tag{margin-top:16px;max-width:32ch;font-family:var(--serif);font-style:italic;font-size:var(--fs-h3);color:var(--text-2);line-height:1.3}
footer.site .tag em{color:var(--accent-2);font-style:italic}
.copyright{border-top:1px solid var(--edge);margin-top:40px;padding-top:20px;grid-column:1/-1;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:var(--fs-xs)}
@media (max-width:920px){footer.site .wrap{grid-template-columns:1fr 1fr}}
/* scroll reveal: transform only, content is always visible */
.rv{transform:translateY(22px);transition:transform .9s var(--ease);transition-delay:calc(var(--i,0) * 80ms)}
.rv.in{transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rv,.tl,.steps-v i,.week span,.tasks div,.phone,.phone>*,.hstep .n,.checklist li i,.t .ic{transform:none!important}.ring{--p:71}.chart .line{stroke-dashoffset:0}.chart .area,.chart .dot,.kpi,.chart,.sched,.thread,.bubble,.float,.panel,.hero .w,.hero .eyebrow,.hero .lead,.hero .hero-cta,.hero .hero-trust{opacity:1!important}.typing{display:none}}

/* theme additions */
.nav-links li{list-style:none;display:contents}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:16px;z-index:60;background:#fff;color:#000;padding:8px 12px;border-radius:8px}
/* click-to-load video */
.yt{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#0c1916}
.yt img,.yt iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;border:0}
.yt-play{position:absolute;left:50%;top:50%;width:56px;height:56px;margin:-28px 0 0 -28px;border-radius:50%;border:0;background:rgba(255,255,255,.92);cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.4);transition:transform .35s cubic-bezier(.3,1.6,.5,1);z-index:1}
.yt-play span{display:block;width:0;height:0;border-left:14px solid #04120f;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:22px}
.yt:hover .yt-play{transform:scale(1.1)}
.yt::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(8,18,15,.7));pointer-events:none}
.yt.on::after{display:none}
.yt-dur{position:absolute;right:8px;bottom:8px;z-index:1;font-size:12px;font-weight:600;color:#fff;background:rgba(8,18,15,.75);padding:3px 7px;border-radius:6px;font-variant-numeric:tabular-nums}
.tour-yt{position:absolute;inset:0;border-radius:0;z-index:5}
.news-form{display:flex;gap:10px;flex-wrap:wrap}.news-form input{padding:14px 18px;border-radius:999px;border:1px solid var(--edge-2);background:rgba(8,18,15,.6);color:#fff;font:500 16px var(--sans);min-width:0;flex:1 1 220px}
/* Elementor-built pages were designed on a light site: give them paper and ink by default; their own section colours still win. */
.elementor-page-body,body.elementor-page:not(.landing) main>.elementor{background:var(--paper);color:var(--ink)}
.elementor-page-body :is(h1,h2,h3,h4),body.elementor-page:not(.landing) main>.elementor :is(h1,h2,h3,h4){color:var(--ink)}
.elementor-page-body a,body.elementor-page:not(.landing) main>.elementor a{color:var(--accent-deep)}
body.landing main>.elementor{background:var(--bg);color:var(--text)}
/* canvas / full-width Elementor pages have no main wrapper: unstyled text still reads as ink on their light sections */
body.elementor-page:not(.landing) [data-elementor-type="wp-page"]{color:var(--ink-2)}
body.elementor-page:not(.landing) [data-elementor-type="wp-page"] :is(h1,h2,h3,h4,h5,h6){color:var(--ink)}
