/* home: rules only this page uses, plus overrides of site.css. */

.highlight{ background:linear-gradient(100deg,var(--navy) 0%,var(--cyan) 90%); -webkit-background-clip:text; background-clip:text; color:transparent; }
.btn-outline-navy, .tx-btn-outline-navy .elementor-button{ margin-top:36px; padding:.95rem 1.8rem; font-size:.98rem; }
.center-cta .btn-outline-navy, .center-cta .tx-btn-outline-navy .elementor-button{ margin-top:0; }
.page-hero-inner{ position:relative; z-index:2; max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(24px,5vw,60px); align-items:center; padding:0 clamp(20px,4vw,64px); }
.page-hero-copy{ padding-bottom:40px; }
.page-hero-copy h1{ font-family:"Sora",sans-serif; font-weight:800; letter-spacing:-.02em; line-height:1.06; font-size:clamp(2.5rem,5.2vw,3.75rem); color:var(--navy); margin:0; }
.page-hero-sub{ margin-top:22px; max-width:540px; }
.page-hero-support{ margin-top:14px; max-width:540px; }
.page-hero-actions{ margin-top:34px; }
.page-hero-actions .btn-primary, .page-hero-actions .btn-outline-navy, .page-hero-actions .tx-btn-primary .elementor-button, .page-hero-actions .tx-btn-outline-navy .elementor-button{ display:inline-flex; align-items:center; justify-content:center; padding:1rem 2.1rem; font-size:1rem; line-height:1; margin-top:0; box-sizing:border-box; }
.page-hero-actions .btn-primary, .page-hero-actions .tx-btn-primary .elementor-button{ border:1.5px solid transparent; }
.page-hero-actions .btn-outline-navy, .page-hero-actions .tx-btn-outline-navy .elementor-button{ border-width:1.5px; }
.page-hero-visual{ position:relative; }
.page-hero-ground-glow{ position:absolute; left:50%; bottom:-6%; width:88%; height:70px; transform:translateX(-50%); background:radial-gradient(ellipse at center, rgba(43,163,255,.45) 0%, rgba(43,163,255,0) 72%); filter:blur(6px); z-index:0; transition:opacity .5s ease; }
.page-hero-visual:hover .page-hero-ground-glow{ opacity:1.4; }
.page-hero-imgwrap{ position:relative; z-index:2; display:flex; align-items:center; justify-content:center; min-height:clamp(260px,30vw,420px); }
.page-hero-img, .tx-page-hero-img img{ position:relative; width:auto; height:100%; max-width:100%; display:block; object-fit:contain; filter:drop-shadow(0 30px 34px rgba(10,30,77,.25)); }
.tx-hero-film-widget{ width:100%; }
.tx-hero-film{ width:100%; margin:0; }
.tx-hero-film video{ display:block; width:100%; aspect-ratio:16/9; object-fit:cover; border-radius:20px; background:#0A1E4D; box-shadow:0 28px 48px -24px rgba(10,30,77,.4); }
.orbit-ring{ position:absolute; inset:0; z-index:3; pointer-events:none; }
.orbit-pivot{ position:absolute; inset:0; animation:orbitSpin 26s linear infinite; }
.orbit-icon-wrap{ position:absolute; top:50%; left:50%; width:78px; height:78px; margin:-39px 0 0 -39px; transform:translate(var(--radius,170px), 0); }
.orbit-icon{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; border-radius:20px; background:rgba(255,255,255,.95); border:1px solid rgba(10,30,77,.08); box-shadow:0 1px 0 rgba(255,255,255,.9) inset, 0 16px 30px -14px rgba(10,30,77,.32); backdrop-filter:blur(6px); opacity:1; animation:orbitCounterSpin 26s linear infinite; transition:opacity .5s ease; overflow:hidden; }
.orbit-icon img{ width:70%; height:70%; object-fit:contain; }
@keyframes orbitSpin{ from{ transform:rotate(var(--start,0deg)); } to{ transform:rotate(calc(var(--start,0deg) + 360deg)); } }
@keyframes orbitCounterSpin{ from{ opacity:1; transform:rotate(calc(-1 * var(--start,0deg))); } to{ opacity:1; transform:rotate(calc(-1 * var(--start,0deg) - 360deg)); } }
.orbit-pivot.o1{ --start:0deg; }
.orbit-pivot.o2{ --start:60deg; }
.orbit-pivot.o3{ --start:120deg; }
.orbit-pivot.o4{ --start:180deg; }
.orbit-pivot.o5{ --start:240deg; }
.orbit-pivot.o6{ --start:300deg; }
@media (max-width:968px){
  .orbit-icon-wrap{ transform:translate(var(--radius,120px), 0); }
}
@media (max-width:968px) and (min-width:601px){
  .orbit-icon-wrap{ width:60px; height:60px; margin:-30px 0 0 -30px; }
}
@media (max-width:600px){
  .orbit-icon-wrap{ width:50px; height:50px; margin:-25px 0 0 -25px; --radius:110px; }
}
@media (prefers-reduced-motion:reduce){
  .orbit-pivot, .orbit-icon{ animation:none !important; }
  .page-hero-img, .tx-page-hero-img img{ transition:none; }
}
@media (max-width:968px){
  .page-hero-inner{ grid-template-columns:1fr; text-align:center; }
  .page-hero-sub, .page-hero-support{ margin-left:auto; margin-right:auto; }
  .page-hero-actions{ justify-content:center; }
  .page-hero-copy{ order:1; }
  .page-hero-visual{ order:2; margin-top:40px; }
  .eyebrow{ justify-content:center; }
}
@media (max-width:480px){
  .page-hero-copy h1{ font-size:2.05rem; line-height:1.12; }
  .page-hero-actions{ margin-top:26px; gap:14px; flex-wrap:wrap; }
}
#services{ scroll-margin-top:calc(var(--nav-h) + 12px); }
.tech-intro, .process-intro{ text-align:center; max-width:640px; margin:0 auto clamp(46px,6vw,64px); }
.tech-intro h2, .process-intro h2{ font-family:"Sora",sans-serif; font-weight:800; letter-spacing:-.01em; line-height:1.2; font-size:clamp(1.9rem,3.4vw,2.4rem); color:var(--navy); margin:8px 0 14px; }
.tech-intro .eyebrow, .process-intro .eyebrow{ justify-content:center; }
.tech-intro p:not(.eyebrow), .process-intro p:not(.eyebrow){ font-size:1.02rem; line-height:1.7; color:var(--body-text); }
.tech-grid.cols-3{ grid-template-columns:repeat(3, 1fr); }
.tech-card-icon{ width:60px; height:60px; border-radius:16px; }
.tech-card-icon svg{ width:26px; height:26px; }
.tech-card h4{ margin-bottom:4px; }
.tech-card-sub{ font-size:.85rem; margin-bottom:0; line-height:1.6; }
.card-link, .tx-card-link .elementor-button{ display:inline-flex; align-items:center; gap:8px; margin-top:16px; font-weight:600; font-size:.88rem; color:var(--cyan); transition:color .25s ease; }
.card-link svg, .tx-card-link .elementor-button svg{ width:15px; height:15px; transition:transform .3s cubic-bezier(.2,.85,.25,1); }
.card-link:hover, .tx-card-link .elementor-button:hover{ color:var(--navy); }
.card-link:hover svg, .tx-card-link .elementor-button:hover svg{ transform:translateX(3px); }
@media (max-width:900px){
  .tech-grid.cols-3{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:560px){
  .tech-grid.cols-3{ grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce){
  .tech-card, .tech-card-icon{ transition:none; }
}
.project-card{ transition:transform .4s cubic-bezier(.2,.8,.2,1), box-shadow .4s ease, border-color .4s ease; }
.project-card .project-desc{ margin-bottom:4px; }
.tx-delivery-feature{ max-width:1180px; margin:0 auto; padding:0 clamp(20px,4vw,64px); display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(32px,5vw,72px); align-items:center; }
.tx-delivery-feature figure{ margin:0; }
.tx-delivery-feature figure img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:20px; box-shadow:0 24px 50px -30px rgba(10,30,77,.38); }
.tx-delivery-feature__copy h2{ font-family:"Sora",sans-serif; font-weight:800; font-size:clamp(1.9rem,3vw,2.5rem); line-height:1.16; margin:12px 0 18px; }
.tx-delivery-feature__copy > p:not(.tx-media-kicker){ color:var(--body-text); line-height:1.7; max-width:52ch; }
.tx-delivery-feature__copy ul{ display:grid; gap:18px; margin:28px 0 8px; }
.tx-delivery-feature__copy li{ display:grid; gap:4px; padding-top:14px; border-top:1px solid var(--border); }
.tx-delivery-feature__copy li strong{ font-family:"Sora",sans-serif; font-size:.98rem; }
.tx-delivery-feature__copy li span{ color:var(--body-text); line-height:1.55; }
@media (max-width:900px){ .tx-delivery-feature{ grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce){
  .project-card, .project-card-img, .tx-project-card-img img{ transition:none; }
}
.cta-section{ padding:clamp(64px,9vw,110px) clamp(20px,4vw,64px) clamp(90px,11vw,130px); }
@media (max-width:480px){
  .page-hero-sub{ font-size:1rem; margin-top:16px; }
  .page-hero-support{ font-size:.92rem; margin-top:10px; }
}
@media (max-width:900px){
  .cta-section{ perspective:none; }
}

/* [tx_hero_stack]: WebGL layers with HTML labels pinned by scenes.js. Without WebGL the list is the visual. */
.stack3d{ position:relative; width:100%; aspect-ratio:1/1; max-height:560px; }
.stack3d canvas{ position:absolute; inset:0; width:100%; height:100%; }
.stack3d-labels{ list-style:none; margin:0; padding:0; display:grid; gap:14px; align-content:center; height:100%; }
.stack3d-labels li{ display:grid; gap:2px; padding:14px 18px; border-radius:14px; background:#fff; border:1px solid rgba(43,163,255,.25); box-shadow:0 14px 30px -20px rgba(10,30,77,.35); transform:translateX(calc(var(--i) * 18px)); }
.stack3d-labels strong{ font-family:"Sora",sans-serif; font-size:.92rem; color:var(--navy); }
.stack3d-labels span{ font-size:.76rem; color:var(--body-text); }
.stack3d.is-live .stack3d-labels{ position:absolute; inset:0; display:block; pointer-events:none; }
.stack3d.is-live .stack3d-labels li{ position:absolute; left:0; top:0; padding:8px 12px; border-radius:10px; background:rgba(255,255,255,.88); backdrop-filter:blur(6px); white-space:nowrap; }
.stack3d.is-live .stack3d-labels strong{ font-size:.8rem; }
.stack3d.is-live .stack3d-labels span{ font-size:.7rem; }
@media (max-width:600px){ .stack3d.is-live .stack3d-labels span{ display:none; } }

/* Home: project teaser replaces the old "stories being prepared" block. */
.tx-work-teaser{ max-width:1180px; margin:0 auto; padding:0 clamp(20px,4vw,64px); }
.tx-work-teaser .projects-grid{ margin-top:clamp(32px,5vw,48px); }
.projects-teaser .project-card{ display:block; color:inherit; text-decoration:none; }
