#world.sw-root{--sw-bg:#171713;--sw-ink:#fff;--sw-ink-soft:#f1ede4;--sw-accent:#d9b86c;--sw-font-display:Georgia,'Times New Roman',serif;--sw-font-body:Arial,Helvetica,sans-serif;isolation:isolate;position:relative;margin:0;padding:0;overflow:visible}
#world *{box-sizing:border-box}
#world .sw-viewport{position:sticky;top:0;width:100%;height:100vh;overflow:hidden}
#world .sw-topbar,#world .sw-particles{display:none}
#world .sw-scrollbar{z-index:80;top:auto;bottom:0;height:2px}
#world .sw-copylayer::before{display:none}
#world .sw-scene__still,#world .sw-scene__video{object-position:center;transform:none!important;width:100%;height:100%;max-width:none;max-height:none}
#world .sw-copy{left:56px;top:auto;bottom:105px;width:min(610px,65vw);transform:none!important;padding:24px 0;isolation:isolate}
#world .sw-copy::before{content:'';position:absolute;z-index:-1;inset:-140px -60px -120px -300px;background:radial-gradient(closest-side,rgba(0,0,0,.88),rgba(0,0,0,.8) 58%,rgba(0,0,0,.52) 82%,transparent 100%);pointer-events:none}
#world .sw-copy__num{display:none}
#world .sw-copy__eyebrow{display:block;margin:0 0 14px;color:#fff;font:600 12px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.22em;text-shadow:0 1px 6px rgba(0,0,0,.85)}
#world .sw-copy__title{color:#fff;font-family:Georgia,'Times New Roman',serif;font-size:clamp(40px,4.8vw,70px);font-weight:400;line-height:1.06;letter-spacing:-.04em;max-width:12ch;margin:0;text-wrap:balance;text-shadow:0 2px 16px rgba(0,0,0,.5)}
#world .sw-copy__body{font:17px/1.5 Arial,Helvetica,sans-serif;margin:18px 0 0;max-width:35ch;color:#fff;text-wrap:pretty;text-shadow:0 1px 8px rgba(0,0,0,.7)}
#world .sw-route{right:24px;gap:7px;padding:8px 0}
#world .sw-route::before{top:30px;bottom:30px;background:#fff;opacity:.55}
#world .sw-route__dot{width:44px;height:44px;padding:0;border-radius:0;background:transparent;border:0;box-shadow:none}
#world .sw-route__dot i{width:7px;height:7px;background:#fff}
#world .sw-route__label{right:49px;background:var(--sw-bg);color:#fff;border-color:rgba(255,255,255,.3);font:12px/1.4 Arial,Helvetica,sans-serif;border-radius:3px;padding:7px 10px;backdrop-filter:none}
#world .sw-route__dot.is-active i{background:var(--sw-accent)}
#world .sw-hint{bottom:35px;color:#fff;font-size:12px;background:rgba(0,0,0,.58);padding:10px 15px;border-radius:3px}
#world .sw-hint i{height:25px;width:17px;border-color:#fff}
#world .video-status{position:absolute;z-index:60;right:30px;top:110px;max-width:260px;font:13px/1.5 Arial,Helvetica,sans-serif;background:var(--sw-bg);padding:10px 14px;border-radius:3px;color:#fff}
#world .video-status:empty{display:none}
#world .sw-copy[hidden]{display:none}
#world [data-sw-seo]:not([hidden]){padding:160px 30px 60px;max-width:700px;margin:auto}
#world a:focus-visible,#world button:focus-visible{outline:3px solid var(--sw-accent);outline-offset:5px}
@media(max-width:860px){
 #world .sw-copy{left:24px;bottom:100px;width:calc(100vw - 75px);right:auto;padding:18px 0}
 #world .sw-copy__title{font-size:clamp(36px,10vw,52px);max-width:12ch}
 #world .sw-copy__eyebrow{font-size:12px;letter-spacing:.12em;margin-bottom:12px}
 #world .sw-copy__body{font-size:15px;max-width:27ch;margin-top:14px}
 #world .sw-copy::before{inset:-130px -51px -100px -24px;background:linear-gradient(to top,rgba(0,0,0,.86),rgba(0,0,0,.78) 55%,rgba(0,0,0,.45) 80%,transparent)}
 #world .sw-route{right:3px;padding:0;gap:4px}
 #world .sw-route__dot{width:44px;height:44px}
 #world .sw-route__label{display:none}
 #world .sw-hint{display:none}
}
@media(max-width:860px) and (orientation:portrait){#world .sw-scene__still,#world .sw-scene__video{object-position:var(--scene-position,50%) center}}
@media(max-height:550px){
 #world .sw-copy{bottom:45px;padding:10px 0}
 #world .sw-copy__title{font-size:34px;max-width:20ch}
 #world .sw-copy__eyebrow{margin-bottom:6px}
 #world .sw-copy__body{margin-top:8px}
 #world .sw-hint{display:none}
}
@media(prefers-reduced-motion:reduce){#world *,#world *::before,#world *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* hero overlay tools (from the dev page's homepage.css) */
.hero-tools{position:absolute;bottom:18px;left:clamp(20px,4vw,56px);right:clamp(20px,4vw,56px);z-index:45;display:flex;justify-content:space-between;align-items:center;gap:14px;color:#fff;font:12px/1.4 Arial,sans-serif;pointer-events:none}
.hero-tools>span,.hero-tools>a{background:rgba(0,0,0,.6);padding:9px 12px;border-radius:3px}
.hero-tools>a{pointer-events:auto;color:#fff;text-decoration:none;min-height:44px;display:flex;align-items:center;gap:14px}
.hero-tools>span{white-space:nowrap}
@media(max-width:560px){.hero-tools{left:16px;right:16px;bottom:max(12px,env(safe-area-inset-bottom));font-size:12px}.hero-tools>span{max-width:130px;padding:7px 10px}.hero-tools>a{max-width:170px;padding:8px 10px}}
@media(max-height:500px){.hero-tools{bottom:10px}}
/* live site: the tour replaces the old Elementor hero; the overlay header stays as it was */
#world.gc-tour{width:100%;background:#171713}
#gc-after-tour{position:relative;height:0;outline:none}
/* keep clear of the site's floating back-to-top button (bottom right) */
#world .hero-tools{right:clamp(76px,6vw,96px)}
@media(max-width:560px){#world .hero-tools{right:62px}#world .hero-tools>a{max-width:160px}}
/* ---- QA round 1 (2026-10-14) ---- */
/* Reserve the tour's final scroll height before the script runs (engine: (sum of scroll + 1) viewports;
   desktop 17 + 1 = 18, phones x1.15 = 20.55), so nothing below jumps (CLS). Poster shows pre-script. */
#world.gc-tour{height:1800vh;background:#171713 url(/assets/tour/01-poster.webp?v=20261014i) center top/cover no-repeat;background-size:100% 100vh}
@media (max-width:860px),(hover:none) and (pointer:coarse){#world.gc-tour{height:2055vh}}
@media (max-width:860px){#world.gc-tour{background-size:auto 100vh;background-position:52% top}}
#world.gc-tour [data-sw-seo]:not([hidden]){position:absolute;left:0;right:0;top:0;height:100vh;margin:0;max-width:none;padding:0 0 120px 56px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.7),rgba(0,0,0,0) 60%)}
#world.gc-tour [data-sw-seo] h1{color:#fff;font-family:Georgia,'Times New Roman',serif;font-size:clamp(32px,4vw,56px);font-weight:400;line-height:1.1;max-width:16ch;margin:0}
#world.gc-tour [data-sw-seo] p{color:#fff;max-width:40ch;margin:14px 0 0}
/* Tighter scrim: sits behind the copy block only */
#world .sw-copy::before{inset:-48px -36px -40px -56px;background:radial-gradient(ellipse 75% 70% at 32% 58%,rgba(0,0,0,.66),rgba(0,0,0,.42) 55%,rgba(0,0,0,0) 78%)}
@media(max-width:860px){#world .sw-copy::before{inset:-40px -24px -36px -24px;background:radial-gradient(ellipse 85% 75% at 40% 60%,rgba(0,0,0,.7),rgba(0,0,0,.45) 55%,rgba(0,0,0,0) 80%)}}
#world .sw-copy__title{text-shadow:0 2px 18px rgba(0,0,0,.65),0 1px 3px rgba(0,0,0,.5)}
/* Soft dark band at the top so the site's overlay header reads over bright sky */
#world .sw-viewport::after{content:"";position:absolute;left:0;right:0;top:0;height:170px;background:linear-gradient(180deg,rgba(0,0,0,.6),rgba(0,0,0,.25) 55%,rgba(0,0,0,0));z-index:40;pointer-events:none}
/* Scroll hint: an arrow, not a ring that reads as "0" */
#world .sw-hint i{display:none}
#world .sw-hint::after{content:"\2193";display:block;text-align:center;font-size:18px;line-height:1;margin-top:6px}
/* Phone: keep at least 12px between the services pill and the floating back-to-top button */
@media(max-width:560px){#world .hero-tools{right:72px}#world .hero-tools>a{max-width:156px}}
/* ---- QA round 2 (2026-10-14): scrim with the eyebrow inside the dark core (measured: eyebrow >=5.5:1 desktop, >=4.3:1 phone at 70% fade) ---- */
#world .sw-copy::before{inset:-120px -70px -100px -160px!important;background:radial-gradient(ellipse 72% 74% at 40% 46%,rgba(0,0,0,.86),rgba(0,0,0,.8) 52%,rgba(0,0,0,.5) 78%,rgba(0,0,0,0) 100%)!important}
#world .sw-copy__eyebrow{text-shadow:0 0 10px rgba(0,0,0,.9),0 1px 3px rgba(0,0,0,.9)!important}
#world .sw-copy__body{text-shadow:0 0 12px rgba(0,0,0,.85),0 1px 3px rgba(0,0,0,.8)!important}
@media(max-width:860px){#world .sw-copy::before{inset:-110px -24px -90px -24px!important;background:linear-gradient(to top,rgba(0,0,0,.9),rgba(0,0,0,.85) 55%,rgba(0,0,0,.8) 78%,rgba(0,0,0,0) 100%)!important}}
/* ---- QA round 3 (2026-10-14): edge-safe scrim (closest-side radial ends at 0 inside its box; phone full-width, lighter) + eyebrow backing ---- */
#world .sw-copy::before{inset:-170px -120px -150px -230px!important;background:radial-gradient(closest-side at 44% 50%,rgba(0,0,0,.86),rgba(0,0,0,.8) 48%,rgba(0,0,0,.48) 76%,rgba(0,0,0,0) 100%)!important}
#world .sw-copy__eyebrow{display:inline-block!important;background:rgba(0,0,0,.58)!important;padding:5px 9px!important;border-radius:3px!important;text-shadow:none!important}
#world .sw-copy__body{text-shadow:0 0 12px rgba(0,0,0,.85),0 1px 3px rgba(0,0,0,.8)!important}
@media(max-width:860px){#world .sw-copy::before{inset:-34px -51px -110px -24px!important;background:linear-gradient(to top,rgba(0,0,0,.82) 0%,rgba(0,0,0,.74) 45%,rgba(0,0,0,.5) 78%,rgba(0,0,0,0) 100%)!important}}
/* ---- QA round 4 (2026-10-14): homepage content below the tour (pre-existing QAWise findings), CSS only ---- */
body.home .gcinfo-eyebrow{color:#80611A}
body.home #gc-ba .eyebrow,body.home #gc-ba .heading em{color:#80611A}
body.home .proj-cat{color:#80611A;font-size:12px}
body.home .proj-badge{font-size:12px}
body.home #page :is(h2,h3,.gc-tl-name,.proj-title,.gcinfo-eyebrow){text-wrap:balance}
body.home #page p{text-wrap:pretty}
/* scrim peak ~10% lighter on desktop; eyebrow keeps its own backing */
@media(min-width:861px){#world .sw-copy::before{background:radial-gradient(closest-side at 44% 50%,rgba(0,0,0,.77),rgba(0,0,0,.72) 48%,rgba(0,0,0,.43) 76%,rgba(0,0,0,0) 100%)!important}}
/* ---- QA round 5 (2026-10-14): beat the inline #id rules on the homepage ---- */
body.home #gc-ba .proj-badge{font-size:12px}
body.home #gc-ba .proj-cat{font-size:12px;color:#80611A}
body.home #gc-tl .gc-tl-cat{font-size:12px}
body.home .rhi-eyebrow{font-size:12px;color:#80611A}
body.home #rhi-projects-heading em{color:#80611A}
/* QA round 6: keep the header call number on one line (homepage) */
body.home header.elementor-location-header .elementor-button-text{white-space:nowrap}
/* QA round 7: time-lapse cards - category label readable over any thumbnail; phone titles fit the card */
body.home #gc-tl .gc-tl-cat{display:inline-block;background:rgba(0,0,0,.62);padding:2px 7px;border-radius:3px}
@media(max-width:560px){body.home #gc-tl .gc-tl-name{font-size:14px}}
/* QA round 8 (2026-10-20): keep the nav fixed on top through the whole tour scroll, plus a Skip Tour button */
body.home header.elementor-location-header{position:fixed!important;top:0;left:0;right:0;width:100%;z-index:150;background:#171713}
.gc-skip-tour{position:absolute;top:106px;left:clamp(20px,4vw,56px);z-index:50;background:rgba(0,0,0,.6);color:#fff;font:600 12px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.02em;padding:9px 14px;border-radius:3px;text-decoration:none;display:inline-flex;align-items:center;gap:6px;pointer-events:auto}
.gc-skip-tour:hover,.gc-skip-tour:focus-visible{background:rgba(0,0,0,.8)}
@media(max-width:560px){.gc-skip-tour{top:102px;left:16px;padding:7px 10px;font-size:11px}}
#gc-after-tour{scroll-margin-top:100px}
