:root {
  --black:#050505;
  --white:#ffffff;
  --surface:#181A1B;
  --neutral:#D9DDDC;
  --blue:#52677A;
  --ice:#DCE3E8;
  --safe-top:env(safe-area-inset-top, 0px);
  --safe-right:env(safe-area-inset-right, 0px);
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --safe-left:env(safe-area-inset-left, 0px);
  --container:min(1240px, calc(100vw - 64px));
  --radius:28px;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--black);scroll-padding-top:110px}
body{margin:0;min-height:100%;background:var(--black);color:var(--white);font-family:"Lato",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;padding-left:var(--safe-left);padding-right:var(--safe-right)}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button{color:inherit}
img{max-width:100%;display:block}
::selection{background:rgba(82,103,122,.75);color:#fff}
:focus-visible{outline:2px solid var(--ice);outline-offset:4px}
.section-shell{width:var(--container);margin-inline:auto;position:relative;z-index:2}
.section-dark{background:var(--black);color:var(--white)}
.section-light{background:#f4f5f5;color:var(--black)}
.page-noise{position:fixed;inset:0;pointer-events:none;z-index:100;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E")}
.ambient{position:fixed;width:38vw;height:38vw;border-radius:50%;filter:blur(100px);opacity:.07;pointer-events:none;z-index:0;will-change:transform}
.ambient-a{background:var(--blue);top:8vh;left:-18vw}
.ambient-b{background:var(--ice);right:-20vw;bottom:5vh;opacity:.04}

/* Preloader */
.preloader{position:fixed;inset:0;z-index:1000;background:var(--black);display:grid;place-items:center;transition:opacity .75s var(--ease),visibility .75s var(--ease)}
.preloader.is-done{opacity:0;visibility:hidden;pointer-events:none}
.preloader-inner{width:min(700px,76vw);text-align:center}
.preloader-logo{width:min(620px,76vw);margin:auto;opacity:0;transform:scale(.965);animation:preLogo .85s var(--ease) .15s forwards}
.preloader p{font-size:clamp(.78rem,1.1vw,.96rem);letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.55);margin:24px 0 20px;opacity:0;animation:preCopy .7s var(--ease) .65s forwards}
.preloader-line{display:block;height:1px;background:rgba(255,255,255,.12);overflow:hidden;width:160px;margin:auto}
.preloader-line i{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--blue),var(--ice));transform:scaleX(0);transform-origin:left;animation:preLine 2s cubic-bezier(.35,0,.2,1) .45s forwards}
@keyframes preLogo{to{opacity:1;transform:scale(1)}}
@keyframes preCopy{to{opacity:1}}
@keyframes preLine{to{transform:scaleX(1)}}

/* Glass */
.glass-panel,.glass-nav{background:linear-gradient(135deg,rgba(255,255,255,.105),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 22px 70px rgba(0,0,0,.2);-webkit-backdrop-filter:blur(18px) saturate(130%);backdrop-filter:blur(18px) saturate(130%)}

/* Navigation */
.site-header{position:fixed;z-index:90;left:50%;top:calc(18px + var(--safe-top));transform:translateX(-50%);width:min(980px,calc(100vw - 28px));pointer-events:none}
.glass-nav{min-height:62px;border-radius:999px;padding:8px 10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;pointer-events:auto;transition:background .35s,border-color .35s,transform .35s}
.nav-brand{width:112px;height:44px;display:flex;align-items:center;padding:0 10px;opacity:0;transform:translateX(-8px);pointer-events:none;transition:.45s var(--ease)}
.site-header.has-brand .nav-brand{opacity:1;transform:none;pointer-events:auto}
.nav-brand img{width:100%;height:auto}
.nav-links{display:flex;justify-content:center;gap:8px}
.nav-links a{font-size:.78rem;color:rgba(255,255,255,.74);padding:12px 10px;border-radius:999px;transition:.25s}
.nav-links a:hover,.nav-links a.active{color:#fff;background:rgba(255,255,255,.08)}
.nav-cta{display:flex;align-items:center;gap:9px;padding:12px 17px;border-radius:999px;background:#fff;color:#050505;font-size:.78rem;font-weight:700}
.nav-cta span{transition:transform .3s var(--ease)}
.nav-cta:hover span{transform:translate(2px,-2px)}
.menu-toggle,.mobile-menu{display:none}

/* Common */
.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.2em;font-weight:700;color:var(--blue)}
.section-heading{max-width:880px;margin-bottom:76px}
.section-heading h2,.vision h2,.founder h2,.contact h2,.manifesto h2,.interlude-shell h2{font-size:clamp(3.2rem,6vw,7.4rem);line-height:.94;letter-spacing:-.045em;margin:18px 0 26px;font-weight:900}
.section-heading>p{max-width:680px;font-size:clamp(1rem,1.5vw,1.22rem);line-height:1.65;color:rgba(255,255,255,.6)}
.section-heading.dark>p{color:rgba(5,5,5,.66)}
.reveal{opacity:0;transform:translateY(30px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in-view{opacity:1;transform:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:50px;padding:0 19px;border:1px solid transparent;border-radius:999px;font-size:.82rem;font-weight:700;transition:transform .3s var(--ease),background .3s,border-color .3s,box-shadow .3s}
.btn span{transition:transform .3s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn:hover span{transform:translate(2px,-2px)}
.btn-primary{background:#fff;color:#050505;box-shadow:0 10px 32px rgba(255,255,255,.08)}
.btn-primary:hover{box-shadow:0 14px 38px rgba(255,255,255,.14)}
.btn-ghost{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.045);color:#fff}
.btn-dark{background:#050505;color:#fff}

/* Hero */
.hero{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden;padding:calc(100px + var(--safe-top)) 24px max(56px,var(--safe-bottom))}
.hero-grid{position:absolute;inset:-15%;opacity:.14;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:80px 80px;mask-image:radial-gradient(circle at 50% 45%,#000,transparent 68%);transform:perspective(900px) rotateX(65deg) translateY(30%);transform-origin:center}
.hero-glow{position:absolute;width:70vw;height:55vw;left:50%;top:30%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(82,103,122,.25),rgba(82,103,122,.08) 28%,transparent 68%);filter:blur(8px);opacity:.65}
.hero-content{text-align:center;max-width:1040px;position:relative;z-index:3}
.hero-logo-wrap{width:min(500px,62vw);margin:0 auto 50px}
.hero-logo{width:100%;height:auto;filter:drop-shadow(0 0 36px rgba(220,227,232,.08))}
.hero h1{font-size:clamp(3.2rem,7.1vw,7.8rem);line-height:.92;letter-spacing:-.052em;margin:0;font-weight:900}
.hero h1 span{color:var(--ice)}
.hero-copy{font-size:clamp(1.05rem,1.6vw,1.35rem);line-height:1.55;color:rgba(255,255,255,.62);margin:34px auto 28px}
.hero-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
.hero-meta{position:absolute;bottom:35px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;color:rgba(255,255,255,.25);font-size:.6rem;text-transform:uppercase;letter-spacing:.16em}
.hero-meta i{width:20px;height:1px;background:rgba(255,255,255,.15)}
.scroll-cue{position:absolute;right:32px;bottom:30px;width:42px;height:42px;border:1px solid rgba(255,255,255,.14);border-radius:50%;display:grid;place-items:center}
.scroll-cue span{width:1px;height:14px;background:#fff;position:relative}
.scroll-cue span:after{content:"";position:absolute;width:5px;height:5px;border-right:1px solid #fff;border-bottom:1px solid #fff;bottom:0;left:-2px;transform:rotate(45deg)}

/* Vision */
.vision{position:relative;overflow:hidden;padding:150px 0 170px}
.vision-symbol{position:absolute;font-size:clamp(13rem,33vw,34rem);line-height:.8;font-weight:900;letter-spacing:-.08em;color:#fff;right:-4vw;top:8vh;user-select:none}
.vision-layout{display:grid;grid-template-columns:1.08fr .92fr;gap:80px;align-items:start;margin-top:60px}
.vision h2{font-size:clamp(3.6rem,6.8vw,7.7rem);margin:0}
.vision-copy{padding-top:8px}
.vision-copy p{font-size:1.08rem;line-height:1.75;color:rgba(5,5,5,.68);margin:0 0 26px;max-width:570px}
.vision-copy .lead{font-size:clamp(1.4rem,2.2vw,2rem);line-height:1.35;color:#050505;font-weight:700}
.vision-sequence{margin-top:140px;border-top:1px solid rgba(5,5,5,.14);display:flex;flex-direction:column}
.vision-sequence span,.vision-sequence strong{font-size:clamp(2rem,4.5vw,5.5rem);line-height:1.08;letter-spacing:-.04em;padding:26px 0;border-bottom:1px solid rgba(5,5,5,.12)}
.vision-sequence span{color:rgba(5,5,5,.36)}
.vision-sequence strong{font-weight:900;color:#050505}

/* Interlude */
.possibility-interlude{min-height:80svh;display:grid;place-items:center;position:relative;overflow:hidden;padding:120px 0}
.interlude-orbit{position:absolute;width:min(720px,74vw);aspect-ratio:1;border:1px solid rgba(255,255,255,.08);border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}
.interlude-orbit:before,.interlude-orbit:after{content:"";position:absolute;inset:14%;border:1px solid rgba(255,255,255,.07);border-radius:50%}
.interlude-orbit:after{inset:29%}
.interlude-orbit i{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--ice);box-shadow:0 0 25px rgba(220,227,232,.65)}
.interlude-orbit i:nth-child(1){top:8%;left:50%}.interlude-orbit i:nth-child(2){right:12%;top:58%}.interlude-orbit i:nth-child(3){left:20%;bottom:14%}
.interlude-shell{text-align:center}
.interlude-shell p{color:rgba(255,255,255,.46);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}
.interlude-shell h2{font-size:clamp(3rem,6vw,7rem)}
.interlude-shell h2 span{color:var(--ice)}

/* Solutions */
.solutions{padding:160px 0 180px;position:relative}
.solution-stack{border-top:1px solid rgba(255,255,255,.12)}
.solution-panel{min-height:190px;display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:35px;align-items:center;border-bottom:1px solid rgba(255,255,255,.12);position:relative;padding:30px 8px;overflow:hidden}
.solution-panel:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(82,103,122,.16),transparent 60%);opacity:0;transform:translateX(-10%);transition:.5s var(--ease)}
.solution-panel:hover:before{opacity:1;transform:none}
.solution-index{font-size:.72rem;color:rgba(255,255,255,.35);letter-spacing:.12em;position:relative}
.solution-panel h3{font-size:clamp(1.8rem,3vw,3.7rem);line-height:1.05;letter-spacing:-.035em;margin:0 0 10px;position:relative}
.solution-panel p{max-width:750px;margin:0;color:rgba(255,255,255,.48);line-height:1.55;position:relative}
.solution-arrow{font-size:2rem;color:rgba(255,255,255,.3);transition:.35s var(--ease);position:relative}
.solution-panel:hover .solution-arrow{color:#fff;transform:translate(4px,-4px)}
.section-cta{display:flex;justify-content:flex-end;margin-top:34px}

/* Ecosystem */
.ecosystem{padding:160px 0 180px;position:relative;overflow:hidden}
.product-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px}
.product-card{background:#080909;color:#fff;border:1px solid rgba(255,255,255,.09);border-radius:30px;position:relative;overflow:hidden;display:flex;flex-direction:column;isolation:isolate;box-shadow:0 20px 50px rgba(0,0,0,.08);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.product-card:hover{transform:translateY(-7px);box-shadow:0 28px 70px rgba(0,0,0,.16)}
.product-card-large{grid-column:span 3;min-height:520px;padding:34px}
.product-card-small{grid-column:span 2;min-height:410px;padding:28px}
.product-card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 88% 8%,color-mix(in srgb,var(--brand) 60%,transparent),transparent 36%),linear-gradient(145deg,color-mix(in srgb,var(--brand) 20%,#080909),#080909 55%);z-index:-2}
.product-card:after{content:"";position:absolute;inset:1px;border-radius:29px;background:linear-gradient(135deg,rgba(255,255,255,.08),transparent 18%,transparent 80%,rgba(255,255,255,.04));z-index:-1;pointer-events:none}
.product-light{position:absolute;right:-15%;top:-25%;width:65%;aspect-ratio:1;border-radius:50%;background:var(--brand2);filter:blur(70px);opacity:.18;transition:.5s var(--ease)}
.product-card:hover .product-light{opacity:.28;transform:scale(1.08)}
.product-topline{display:flex;justify-content:space-between;font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.42);position:relative;z-index:2}
.product-logo{width:min(310px,70%);height:auto;object-fit:contain;margin:auto 0 34px;position:relative;z-index:2}
.product-card-small .product-logo{width:min(235px,78%)}
.text-wordmark{font-size:clamp(2.3rem,4vw,4.5rem);font-weight:900;letter-spacing:-.05em;margin:auto 0 34px;position:relative;z-index:2}
.product-card p{font-size:1rem;line-height:1.55;color:rgba(255,255,255,.65);max-width:560px;margin:0 0 26px;position:relative;z-index:2}
.product-card a{font-size:.78rem;font-weight:700;display:flex;align-items:center;gap:8px;width:max-content;position:relative;z-index:2}
.product-card a span{transition:.3s var(--ease)}.product-card a:hover span{transform:translateX(4px)}

/* Manifesto */
.manifesto{min-height:86svh;display:grid;place-items:center;position:relative;overflow:hidden;padding:130px 0}
.manifesto-track{position:absolute;top:12%;left:0;white-space:nowrap;font-size:clamp(4rem,11vw,11rem);font-weight:900;letter-spacing:-.055em;color:rgba(255,255,255,.035);display:flex;gap:3vw;align-items:center;transform:translateX(-8vw)}
.manifesto-track i{font-style:normal;color:rgba(82,103,122,.12)}
.manifesto-shell{padding-top:120px}
.manifesto-shell p{color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem}
.manifesto h2{max-width:1100px}.manifesto h2 span{color:var(--ice)}

/* Founder */
.founder{padding:150px 0 170px;overflow:hidden}
.founder-shell{display:grid;grid-template-columns:.9fr 1.1fr;gap:90px;align-items:center}
.founder-visual{height:min(720px,75vw);min-height:560px;position:relative;border-radius:42px;overflow:hidden;background:linear-gradient(145deg,#e8ebed,#cfd5d8)}
.portrait-halo{position:absolute;width:80%;aspect-ratio:1;left:10%;top:15%;border-radius:50%;background:radial-gradient(circle,rgba(82,103,122,.22),transparent 67%);filter:blur(12px)}
.portrait{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center 20%;transition:opacity .8s var(--ease),transform 1.2s var(--ease)}
.portrait-color{opacity:0}.founder-visual:hover .portrait-color{opacity:1}.founder-visual:hover .portrait{transform:scale(1.012)}
.founder-tag{position:absolute;left:22px;bottom:22px;padding:12px 16px;border-radius:999px;color:#fff;font-size:.65rem;letter-spacing:.15em;text-transform:uppercase}
.founder h2{font-size:clamp(3rem,5.5vw,6.4rem);margin-bottom:12px}
.founder-role{color:var(--blue);font-weight:700;margin:0 0 34px}
.founder-copy>p{font-size:1rem;line-height:1.7;color:rgba(5,5,5,.66);max-width:650px}
.founder-copy .lead{font-size:clamp(1.25rem,1.8vw,1.65rem);line-height:1.45;color:#050505;font-weight:700}
blockquote{font-size:clamp(1.4rem,2.4vw,2.4rem);line-height:1.25;letter-spacing:-.025em;font-weight:900;margin:36px 0;color:#050505}

/* Contact */
.contact{padding:170px 0 140px;position:relative;overflow:hidden}
.contact-light{position:absolute;width:70vw;height:70vw;border-radius:50%;right:-35vw;top:15%;background:var(--blue);filter:blur(120px);opacity:.11}
.contact-intro{max-width:840px}.contact h2{font-size:clamp(3.2rem,6.5vw,7rem);margin-bottom:24px}.contact-intro p{font-size:1.05rem;line-height:1.65;color:rgba(255,255,255,.55);max-width:670px}
.possibility-statement{margin:150px 0 110px;position:relative;width:max-content;max-width:100%;padding-bottom:20px}
.possibility-statement span,.possibility-statement strong{display:block;font-size:clamp(4.6rem,11vw,12.5rem);line-height:.78;letter-spacing:-.068em;font-weight:900}
.possibility-statement span{color:rgba(255,255,255,.33)}
.possibility-statement strong{color:#fff;margin-left:8vw}
.possibility-statement i{position:absolute;left:8vw;right:0;bottom:-18px;height:7px;border-radius:999px;background:linear-gradient(90deg,var(--ice),var(--blue));transform:scaleX(0);transform-origin:left;transition:transform 1.35s var(--ease)}
.possibility-statement.line-in i{transform:scaleX(1)}
.contact-form{padding:28px;border-radius:34px;position:relative;overflow:hidden}
.contact-form:before{content:"";position:absolute;inset:0;background:linear-gradient(145deg,rgba(255,255,255,.04),transparent 45%);pointer-events:none}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;position:relative}
.contact-form label{display:flex;flex-direction:column;gap:9px}
.contact-form label>span:first-child{font-size:.67rem;text-transform:uppercase;letter-spacing:.12em;color:rgba(255,255,255,.55);font-weight:700}
.contact-form input,.contact-form select,.contact-form textarea{width:100%;border:1px solid rgba(255,255,255,.14);background:rgba(5,5,5,.38);color:#fff;border-radius:16px;padding:0 16px;outline:none;transition:border-color .25s,background .25s,box-shadow .25s}
.contact-form input,.contact-form select{height:56px}
.contact-form textarea{min-height:150px;padding-top:16px;resize:vertical}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:rgba(255,255,255,.28)}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{border-color:rgba(220,227,232,.55);background:rgba(5,5,5,.58);box-shadow:0 0 0 3px rgba(82,103,122,.12)}
.contact-form select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,rgba(255,255,255,.5) 50%),linear-gradient(135deg,rgba(255,255,255,.5) 50%,transparent 50%);background-position:calc(100% - 18px) 25px,calc(100% - 13px) 25px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.field-full,.product-select-field{grid-column:1/-1}
.privacy-check{margin-top:18px;display:grid!important;grid-template-columns:22px 1fr;align-items:start;gap:10px!important;color:rgba(255,255,255,.5);font-size:.78rem;line-height:1.5}
.privacy-check input{width:18px;height:18px;margin:2px 0 0;padding:0;accent-color:var(--blue)}
.privacy-check a{text-decoration:underline;text-underline-offset:3px}
.form-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:24px}.form-status{font-size:.8rem;color:var(--ice);min-height:20px;margin:0}

/* Footer */
.site-footer{background:#000;padding:90px 0 max(30px,var(--safe-bottom));border-top:1px solid rgba(255,255,255,.08)}
.footer-shell{display:grid;grid-template-columns:1.7fr repeat(3,1fr);gap:55px}
.footer-brand img{width:210px;margin-bottom:26px}.footer-brand p{color:rgba(255,255,255,.45);line-height:1.55}
.footer-col{display:flex;flex-direction:column;gap:10px}.footer-col h2{font-size:.65rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.35);margin:0 0 10px}.footer-col a{font-size:.85rem;color:rgba(255,255,255,.65);transition:.2s}.footer-col a:hover{color:#fff;transform:translateX(2px)}
.footer-bottom{margin-top:70px;padding-top:22px;border-top:1px solid rgba(255,255,255,.08);display:flex;gap:24px;color:rgba(255,255,255,.32);font-size:.7rem}.footer-bottom p{margin:0}.footer-bottom a{margin-left:auto;color:rgba(255,255,255,.55)}

@media (max-width: 980px){
  :root{--container:min(100% - 36px,820px)}
  .nav-links,.nav-cta{display:none}.glass-nav{grid-template-columns:auto 1fr auto}.menu-toggle{display:grid;width:44px;height:44px;border:0;background:transparent;place-content:center;gap:6px;cursor:pointer}.menu-toggle span{display:block;width:20px;height:1px;background:#fff;transition:.3s}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
  .mobile-menu{display:flex;pointer-events:auto;position:absolute;top:72px;left:0;right:0;border-radius:28px;padding:16px;flex-direction:column}.mobile-menu[hidden]{display:none}.mobile-menu a{padding:14px 12px;border-radius:14px;color:rgba(255,255,255,.74)}.mobile-menu a:hover{background:rgba(255,255,255,.07);color:#fff}
  .vision-layout,.founder-shell{grid-template-columns:1fr;gap:50px}.vision-copy{max-width:680px}.founder-visual{height:680px;width:min(620px,100%)}
  .product-card-large{grid-column:span 6}.product-card-small{grid-column:span 3}.product-card-small:last-child{grid-column:span 6;min-height:330px}
  .footer-shell{grid-template-columns:1.5fr 1fr 1fr}.footer-col:last-child{grid-column:2/4}
}
@media (max-width: 680px){
  :root{--container:calc(100% - 28px);--radius:22px}
  html{scroll-padding-top:88px}.site-header{width:calc(100vw - 18px);top:calc(8px + var(--safe-top))}.glass-nav{min-height:56px;padding:6px 8px}.nav-brand{width:102px;height:42px}.hero{padding-left:14px;padding-right:14px}.hero-logo-wrap{width:min(360px,77vw);margin-bottom:38px}.hero h1{font-size:clamp(3.25rem,15vw,5.2rem)}.hero-copy br{display:none}.hero-actions{flex-direction:column;width:min(360px,100%);margin:auto}.hero-actions .btn{width:100%}.hero-meta{display:none}.scroll-cue{right:18px;bottom:18px}
  .vision,.solutions,.ecosystem,.founder,.contact{padding:110px 0 120px}.vision-symbol{font-size:43vw;top:5vh;right:-8vw}.vision-layout{margin-top:44px}.vision-sequence{margin-top:90px}.vision-sequence span,.vision-sequence strong{padding:21px 0}.section-heading{margin-bottom:54px}.section-heading h2,.vision h2,.founder h2,.contact h2,.manifesto h2,.interlude-shell h2{font-size:clamp(2.85rem,12.8vw,4.7rem)}
  .possibility-interlude{min-height:72svh;padding:90px 0}.interlude-orbit{width:96vw}
  .solution-panel{grid-template-columns:44px 1fr;gap:16px;align-items:start;padding:28px 0;min-height:0}.solution-arrow{display:none}.solution-panel h3{font-size:clamp(1.75rem,8vw,2.5rem)}.solution-panel p{font-size:.9rem}
  .product-grid{gap:12px}.product-card-large,.product-card-small,.product-card-small:last-child{grid-column:span 6;min-height:390px;padding:24px;border-radius:24px}.product-card-large{min-height:450px}.product-card:after{border-radius:23px}.product-logo{width:min(260px,75%)}.text-wordmark{font-size:clamp(2.5rem,13vw,4rem)}
  .manifesto{min-height:72svh}.manifesto-shell{padding-top:70px}
  .founder-visual{height:570px;min-height:0;border-radius:30px}.founder-shell{gap:44px}.founder-copy .lead{font-size:1.22rem}blockquote{font-size:1.55rem}
  .possibility-statement{margin:110px 0 88px}.possibility-statement span,.possibility-statement strong{font-size:clamp(4rem,20vw,7rem);line-height:.82}.possibility-statement strong{margin-left:0}.possibility-statement i{left:0;height:5px}
  .contact-form{padding:16px;border-radius:24px}.form-grid{grid-template-columns:1fr}.field-full,.product-select-field{grid-column:auto}.form-footer{align-items:stretch;flex-direction:column-reverse}.form-footer .btn{width:100%}
  .footer-shell{grid-template-columns:1fr 1fr;gap:42px 28px}.footer-brand{grid-column:1/-1}.footer-col:last-child{grid-column:auto}.footer-bottom{flex-wrap:wrap}.footer-bottom a{margin-left:0;width:100%}
}
@media (hover:none){.product-card:hover,.btn:hover{transform:none}.founder-visual:hover .portrait-color{opacity:0}}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}.possibility-statement i{transform:scaleX(1)}
}
@media (max-width: 680px), (prefers-reduced-transparency: reduce){.glass-panel,.glass-nav{-webkit-backdrop-filter:blur(11px) saturate(120%);backdrop-filter:blur(11px) saturate(120%)}}

/* ========================================================================== */
/* HEURESIS refinement pass — 2026-09-14                                     */
/* Global typography, two-state navigation, immersive motion, ecosystem grid */
/* ========================================================================== */

/* Global typographic scale: prominent, not oversized. */
.section-heading h2,
.vision h2,
.founder h2,
.contact h2,
.manifesto h2,
.interlude-shell h2{
  font-size:clamp(2.35rem,4.55vw,5.35rem);
  line-height:.98;
  letter-spacing:-.038em;
}
.section-heading{max-width:820px;margin-bottom:66px}
.vision h2{font-size:clamp(2.7rem,5vw,5.55rem)}
.founder h2{font-size:clamp(2.55rem,4.25vw,4.75rem)}
.contact h2{font-size:clamp(2.65rem,4.75vw,5.2rem)}
.interlude-shell h2{font-size:clamp(2.45rem,4.65vw,5.25rem)}
.manifesto h2{font-size:clamp(2.5rem,4.45vw,5rem)}
.vision-sequence span,.vision-sequence strong{font-size:clamp(1.65rem,3.25vw,3.85rem)}
.possibility-statement span,.possibility-statement strong{font-size:clamp(3.7rem,8.2vw,8.8rem);line-height:.84}

/* Intro -> Hero. The destination logo is hidden while the moving clone lands. */
.intro-running .hero-logo{opacity:0}
.intro-running .hero-content h1,
.intro-running .hero-copy,
.intro-running .hero-actions,
.intro-running .hero-meta,
.intro-running .scroll-cue{opacity:0}
.intro-logo-flight{position:fixed;z-index:1002;pointer-events:none;transform-origin:top left;will-change:transform,width,height,opacity;filter:drop-shadow(0 0 40px rgba(220,227,232,.08))}
.preloader.intro-transition{background:rgba(5,5,5,0);transition:background .8s var(--ease),visibility 0s 1s}
.preloader.intro-transition .preloader-inner{opacity:0;transition:opacity .22s ease}
.hero-logo{transition:opacity .22s ease}
.hero-content h1,.hero-copy,.hero-actions,.hero-meta,.scroll-cue{transition:opacity .72s var(--ease),transform .72s var(--ease)}
.hero.hero-ready .hero-content h1,.hero.hero-ready .hero-copy,.hero.hero-ready .hero-actions,.hero.hero-ready .hero-meta,.hero.hero-ready .scroll-cue{opacity:1}

/* Hero: logo first, copy deliberately restrained. */
.hero-content{max-width:920px}
.hero-logo-wrap{width:min(640px,68vw);margin:0 auto 38px}
.hero h1{
  font-size:clamp(1.42rem,2.15vw,2.05rem);
  line-height:1.12;
  letter-spacing:-.022em;
  font-weight:900;
  background:linear-gradient(108deg,#71777d 0%,#f5f7f8 23%,#a9b0b5 42%,#ffffff 58%,#7f8991 78%,#dce3e8 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  text-shadow:0 0 28px rgba(220,227,232,.06);
  animation:titaniumShift 8s ease-in-out infinite alternate;
}
.hero h1 span{color:inherit}
.hero-copy{font-size:clamp(1.03rem,1.55vw,1.28rem);margin:24px auto 26px;color:rgba(255,255,255,.64)}
@keyframes titaniumShift{0%{background-position:0% 50%}100%{background-position:100% 50%}}

/* Two-state navigation. Compact over hero, expanded after hero. */
.site-header{
  width:min(720px,calc(100vw - 28px));
  transition:width .58s var(--ease),top .35s var(--ease);
}
.site-header.has-brand{width:min(980px,calc(100vw - 28px))}
.glass-nav{
  grid-template-columns:0 minmax(0,1fr) 0;
  gap:0;
  min-height:58px;
  padding:7px 9px;
  transition:grid-template-columns .58s var(--ease),gap .58s var(--ease),background .35s,border-color .35s,box-shadow .35s;
}
.site-header.has-brand .glass-nav{grid-template-columns:122px minmax(0,1fr) auto;gap:14px}
.nav-brand{
  width:0;
  height:42px;
  padding:0;
  overflow:hidden;
  opacity:0;
  transform:translateX(-10px) scale(.97);
  transition:width .58s var(--ease),opacity .4s var(--ease),transform .5s var(--ease),padding .58s var(--ease);
}
.site-header.has-brand .nav-brand{width:122px;padding:0 10px;opacity:1;transform:none}
.nav-logo{position:absolute;width:102px;height:auto;transition:opacity .32s var(--ease)}
.nav-logo-dark{opacity:0}
.nav-cta{
  width:0;
  padding-left:0;
  padding-right:0;
  overflow:hidden;
  white-space:nowrap;
  opacity:0;
  transform:translateX(10px) scale(.97);
  pointer-events:none;
  transition:width .58s var(--ease),padding .58s var(--ease),opacity .4s var(--ease),transform .5s var(--ease),background .3s,color .3s;
}
.site-header.has-brand .nav-cta{width:104px;padding:12px 17px;opacity:1;transform:none;pointer-events:auto}
.nav-links{gap:5px}
.nav-links a{font-size:.75rem;padding:11px 9px}

/* Navbar automatically inverts on light sections. */
.site-header.on-light .glass-nav{
  background:linear-gradient(135deg,rgba(255,255,255,.82),rgba(244,245,245,.58));
  border-color:rgba(5,5,5,.11);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 18px 55px rgba(5,5,5,.10);
}
.site-header.on-light .nav-links a{color:rgba(5,5,5,.65)}
.site-header.on-light .nav-links a:hover,.site-header.on-light .nav-links a.active{color:#050505;background:rgba(5,5,5,.055)}
.site-header.on-light .nav-logo-light{opacity:0}
.site-header.on-light .nav-logo-dark{opacity:1}
.site-header.on-light .nav-cta{background:#050505;color:#fff}
.site-header.on-light .menu-toggle span{background:#050505}
.site-header.on-light .mobile-menu{background:rgba(247,248,248,.88);border-color:rgba(5,5,5,.1)}
.site-header.on-light .mobile-menu a{color:rgba(5,5,5,.72)}
.site-header.on-light .mobile-menu a:hover{color:#050505;background:rgba(5,5,5,.05)}

/* Scroll-driven scene language. Only transforms/opacity are linked to scroll. */
.motion-scene{--scene:0;position:relative;isolation:isolate}
.motion-scene:before,.motion-scene:after{content:"";position:absolute;pointer-events:none;z-index:0}
.vision:after{width:42vw;max-width:620px;aspect-ratio:1;border:1px solid rgba(82,103,122,.13);border-radius:50%;left:-14vw;bottom:-12vw;transform:translate3d(calc(var(--scene) * 6vw),calc((.5 - var(--scene)) * 5vw),0) scale(calc(.88 + var(--scene) * .16));opacity:.8}
.vision-symbol{transform:translate3d(calc((.5 - var(--scene)) * 8vw),calc((.5 - var(--scene)) * 6vh),0);will-change:transform}
.vision-copy .reveal:nth-child(2){transition-delay:.08s}.vision-copy .reveal:nth-child(3){transition-delay:.15s}
.vision-sequence .reveal:nth-child(2){transition-delay:.06s}.vision-sequence .reveal:nth-child(3){transition-delay:.12s}.vision-sequence .reveal:nth-child(4){transition-delay:.18s}

.possibility-interlude:after{inset:13% 9%;border:1px solid rgba(220,227,232,.08);border-radius:50%;transform:rotate(calc((var(--scene) - .5) * 16deg)) scale(calc(.86 + var(--scene) * .2));opacity:.8}
.interlude-orbit{transform:translate(-50%,-50%) rotate(calc(var(--scene) * 30deg)) scale(calc(.92 + var(--scene) * .12));will-change:transform}
.interlude-shell{transform:translate3d(0,calc((.5 - var(--scene)) * 34px),0);will-change:transform}

.solutions:before{width:1px;top:120px;bottom:120px;right:7vw;background:linear-gradient(transparent,rgba(220,227,232,.20),transparent);transform:scaleY(calc(.2 + var(--scene) * .8));transform-origin:top}
.solution-panel{transition:transform .65s var(--ease),border-color .35s}
.solution-panel.in-view:nth-child(1){transition-delay:.02s}.solution-panel.in-view:nth-child(2){transition-delay:.09s}.solution-panel.in-view:nth-child(3){transition-delay:.16s}
.solution-panel:after{content:"";position:absolute;width:160px;height:1px;right:70px;top:50%;background:linear-gradient(90deg,transparent,rgba(220,227,232,.22));transform:scaleX(.35);transform-origin:right;transition:transform .55s var(--ease),opacity .55s;opacity:.35}
.solution-panel:hover:after{transform:scaleX(1);opacity:1}

.ecosystem:before{width:54vw;max-width:760px;aspect-ratio:1;border-radius:50%;right:-24vw;top:8%;background:radial-gradient(circle,rgba(82,103,122,.11),transparent 68%);transform:translate3d(calc((.5 - var(--scene)) * 5vw),calc((.5 - var(--scene)) * 5vw),0)}
.product-card{transform:translate3d(0,0,0);will-change:transform}
.product-card.in-view:nth-child(1){transition-delay:.02s}.product-card.in-view:nth-child(2){transition-delay:.08s}.product-card.in-view:nth-child(3){transition-delay:.04s}.product-card.in-view:nth-child(4){transition-delay:.1s}.product-card.in-view:nth-child(5){transition-delay:.16s}
.product-light{transform:translate3d(calc((var(--scene) - .5) * 22px),calc((.5 - var(--scene)) * 22px),0);will-change:transform}

.manifesto-track{transform:translateX(calc(-14vw + var(--scene) * 18vw));will-change:transform}
.manifesto:after{width:34vw;aspect-ratio:1;border:1px solid rgba(82,103,122,.13);border-radius:50%;right:-10vw;bottom:-11vw;transform:rotate(calc(var(--scene) * 26deg)) scale(calc(.9 + var(--scene) * .14))}

.founder:after{width:42vw;aspect-ratio:1;border-radius:50%;right:-18vw;top:10%;background:radial-gradient(circle,rgba(82,103,122,.11),transparent 70%);transform:translateY(calc((.5 - var(--scene)) * 55px))}
.founder-visual{transform:translate3d(0,calc((.5 - var(--scene)) * 34px),0);will-change:transform}
.portrait{transform:translate3d(0,calc((var(--scene) - .5) * 18px),0) scale(1.025)}
.founder-visual:hover .portrait{transform:translate3d(0,calc((var(--scene) - .5) * 18px),0) scale(1.04)}

.contact-light{transform:translate3d(calc((.5 - var(--scene)) * 5vw),calc((.5 - var(--scene)) * 6vh),0);will-change:transform}
.contact:before{left:5vw;top:120px;width:1px;height:45vh;background:linear-gradient(transparent,rgba(220,227,232,.18),transparent);transform:scaleY(calc(.1 + var(--scene) * .9));transform-origin:top}

/* Ecosystem: 2 large cards above + 3 equal cards below. */
.product-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;align-items:stretch}
.product-card-large{grid-column:span 6;min-height:500px;padding:32px}
.product-card-small{grid-column:span 4;min-height:400px;padding:28px}
.product-card-large,.product-card-small{display:flex}
.product-logo{width:min(285px,72%);max-height:92px;object-fit:contain;object-position:left center;margin:auto 0 30px}
.product-card-small .product-logo{width:min(230px,76%);max-height:82px}
.text-wordmark{font-size:clamp(2.05rem,2.8vw,3.15rem);line-height:1;min-height:82px;display:flex;align-items:center;margin:auto 0 30px}
.product-card p{font-size:.95rem;line-height:1.58;min-height:4.75em;margin-bottom:24px}
.product-card a{margin-top:auto}
.product-topline{font-size:.56rem}

/* Subtler reveal distance: elegant rather than theatrical. */
.reveal{transform:translateY(22px)}

@media (max-width: 980px){
  .site-header,.site-header.has-brand{width:calc(100vw - 24px)}
  .glass-nav{grid-template-columns:0 1fr auto;gap:0}
  .site-header.has-brand .glass-nav{grid-template-columns:118px 1fr auto;gap:8px}
  .nav-cta{display:none!important}
  .nav-brand{display:flex}
  .site-header.has-brand .nav-brand{width:118px}
  .product-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}
  .product-card-large{grid-column:span 6;min-height:460px}
  .product-card-small{grid-column:span 4;min-height:370px}
  .text-wordmark{font-size:clamp(1.75rem,3.7vw,2.6rem)}
}

@media (max-width: 760px){
  .site-header{width:calc(100vw - 18px)}
  .site-header:not(.has-brand) .glass-nav{grid-template-columns:1fr auto}
  .site-header:not(.has-brand) .nav-brand{display:none}
  .site-header.has-brand .glass-nav{grid-template-columns:112px 1fr auto}
  .site-header.has-brand .nav-brand{width:112px}
  .hero-logo-wrap{width:min(420px,82vw);margin-bottom:30px}
  .hero h1{font-size:clamp(1.24rem,5.6vw,1.62rem);line-height:1.14}
  .hero-copy{font-size:clamp(.98rem,4.25vw,1.12rem);margin-top:20px}
  .section-heading h2,.vision h2,.founder h2,.contact h2,.manifesto h2,.interlude-shell h2{font-size:clamp(2.15rem,9.7vw,3.65rem);line-height:1}
  .vision-sequence span,.vision-sequence strong{font-size:clamp(1.5rem,7.6vw,2.55rem)}
  .possibility-statement span,.possibility-statement strong{font-size:clamp(3.1rem,15vw,5.8rem)}
  .product-card-large,.product-card-small{grid-column:span 12;min-height:380px;padding:24px}
  .product-card-large{min-height:420px}
  .product-card p{min-height:0;font-size:.92rem}
  .text-wordmark{font-size:clamp(2rem,10vw,3rem);min-height:72px}
  .product-logo,.product-card-small .product-logo{max-height:76px;width:min(245px,75%)}
  .motion-scene:before,.motion-scene:after{opacity:.55}
}

@media (prefers-reduced-motion: reduce){
  .hero h1{animation:none;background-position:50% 50%}
  .intro-logo-flight{display:none!important}
  .motion-scene,.vision-symbol,.interlude-orbit,.interlude-shell,.manifesto-track,.founder-visual,.portrait,.contact-light,.product-light{transform:none!important}
}

/* Small final consistency fixes. */
.nav-brand{position:relative}
.solution-panel h3{font-size:clamp(1.7rem,2.45vw,2.85rem)}
.vision-copy .lead{font-size:clamp(1.22rem,1.75vw,1.62rem)}
blockquote{font-size:clamp(1.3rem,2vw,2rem)}

@media (max-width: 980px){
  .glass-nav{display:flex;align-items:center;justify-content:flex-end}
  .site-header.has-brand .nav-brand{margin-right:auto}
  .menu-toggle{margin-left:auto}
}

/* v3 work copy */

/* ========================================================================== */
/* HEURESIS v3 refinement — requested 2026-09-14                             */
/* ========================================================================== */

/* ---------- Global typography: elegant, restrained, consistent ---------- */
body{font-size:16px}
.section-heading h2{font-size:38px;line-height:1.04;letter-spacing:-.028em}
.vision h2{font-size:43px;line-height:1.02}
.founder h2{font-size:43px;line-height:1.02}
.contact h2{font-size:43px;line-height:1.02}
.interlude-shell h2{font-size:50px;line-height:1.02}
.manifesto h2{font-size:50px;line-height:1.02}
.vision-sequence span,.vision-sequence strong{font-size:30px;line-height:1.12}
.solution-panel h3{font-size:38px;line-height:1.06}
.text-wordmark{font-size:33px;line-height:1}
.product-card p{font-size:15px;line-height:1.58}
.vision-copy p,.founder-copy>p,.contact-intro p,.section-heading>p{font-size:16px}
.vision-copy .lead{font-size:26px;line-height:1.38}
blockquote{font-size:21px;line-height:1.32}
.possibility-statement span,.possibility-statement strong{font-size:59px;line-height:.9;letter-spacing:-.045em}

/* ---------- Hero ---------- */
.hero{padding-top:calc(84px + var(--safe-top));}
.hero-content{max-width:900px;transform:translateY(-10px)}
.hero-logo-wrap{width:min(700px,72vw);margin:0 auto 34px;transform:translateY(-10px)}
.hero h1{font-size:clamp(23px,2.15vw,33px);line-height:1.12;letter-spacing:-.018em;margin:0}
.hero-copy{font-size:16px;line-height:1.52;margin:24px auto 0;color:rgba(255,255,255,.67)}
.hero-actions{margin-top:34px;gap:10px}
.hero-actions .btn{font-size:13px}

/* more compact navigation while the Hero is active */
.site-header:not(.has-brand){width:min(650px,calc(100vw - 28px))}
.site-header:not(.has-brand) .glass-nav{min-height:52px;padding:5px 8px}
.site-header:not(.has-brand) .nav-links{gap:2px}
.site-header:not(.has-brand) .nav-links a{font-size:12px;padding:9px 8px}

/* expanded navigation: make the HEURESIS wordmark fully visible */
.site-header.has-brand{width:min(980px,calc(100vw - 28px))}
.site-header.has-brand .glass-nav{grid-template-columns:154px minmax(0,1fr) auto;gap:12px}
.site-header.has-brand .nav-brand{width:154px;height:42px;padding:0 8px;overflow:visible;display:flex;align-items:center;justify-content:flex-start}
.nav-logo{position:absolute;left:8px;top:50%;transform:translateY(-50%);width:132px;max-width:none;height:auto;object-fit:contain;object-position:left center}
.site-header.has-brand .nav-cta{width:104px;font-size:12px}

/* intro remains readable for a full three seconds before docking */
.preloader-logo{width:min(650px,76vw)}
.preloader-line i{animation-duration:2.7s}

/* ---------- More immersive visual language ---------- */
.hero-grid{will-change:transform;transform:perspective(900px) rotateX(65deg) translateY(calc(30% + var(--hero-scroll,0) * 10%)) scale(calc(1 + var(--hero-scroll,0) * .05))}
.hero-glow{will-change:transform,opacity;transform:translate(-50%,-50%) scale(calc(1 + var(--hero-scroll,0) * .18));opacity:calc(.68 - var(--hero-scroll,0) * .25)}
.hero-content{will-change:transform,opacity;opacity:calc(1 - var(--hero-scroll,0) * .58);transform:translate3d(0,calc(-10px - var(--hero-scroll,0) * 34px),0) scale(calc(1 - var(--hero-scroll,0) * .025))}

.motion-scene{overflow:hidden}
.motion-scene>.section-shell{will-change:transform}
.vision .section-shell{transform:translate3d(0,calc((.5 - var(--scene)) * 18px),0)}
.solutions .section-shell{transform:translate3d(0,calc((.5 - var(--scene)) * 20px),0)}
.ecosystem .section-shell{transform:translate3d(0,calc((.5 - var(--scene)) * 18px),0)}
.contact .section-shell{transform:translate3d(0,calc((.5 - var(--scene)) * 16px),0)}

/* animated architectural lines / light passes */
.motion-scene .scene-lines{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.motion-scene .scene-lines::before,.motion-scene .scene-lines::after{content:"";position:absolute;opacity:.5;will-change:transform,opacity}
.section-dark .scene-lines::before{width:1px;height:64%;left:12%;top:18%;background:linear-gradient(transparent,rgba(220,227,232,.16),transparent);transform:translateY(calc((.5 - var(--scene)) * 80px))}
.section-dark .scene-lines::after{height:1px;width:48%;right:-8%;top:28%;background:linear-gradient(90deg,transparent,rgba(82,103,122,.28),transparent);transform:translateX(calc((.5 - var(--scene)) * 120px))}
.section-light .scene-lines::before{width:1px;height:56%;right:10%;top:20%;background:linear-gradient(transparent,rgba(82,103,122,.18),transparent);transform:translateY(calc((.5 - var(--scene)) * 70px))}
.section-light .scene-lines::after{height:1px;width:42%;left:-6%;bottom:24%;background:linear-gradient(90deg,transparent,rgba(82,103,122,.18),transparent);transform:translateX(calc((var(--scene) - .5) * 110px))}

/* section reveal gets depth, but remains clean */
.reveal{transform:translate3d(0,22px,0) scale(.995);filter:blur(2px);transition:opacity .82s var(--ease),transform .9s var(--ease),filter .82s var(--ease)}
.reveal.in-view{transform:none;filter:none}

/* interlude feels like an actual scene */
.interlude-orbit{box-shadow:0 0 90px rgba(82,103,122,.08),inset 0 0 60px rgba(220,227,232,.025)}
.interlude-orbit i{transform:scale(calc(.8 + var(--scene) * .45));opacity:calc(.45 + var(--scene) * .55)}
.interlude-shell h2 span{background:linear-gradient(100deg,#fff 0%,#dce3e8 36%,#52677a 76%,#fff 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;background-position:calc(var(--scene) * 100%) 50%}

/* Solutions: alternating spatial entrance and pointer light */
.solution-panel{--mx:50%;--my:50%;transform:translate3d(calc((.5 - var(--scene)) * 20px),0,0)}
.solution-panel:nth-child(even){transform:translate3d(calc((var(--scene) - .5) * 20px),0,0)}
.solution-panel:before{background:radial-gradient(420px circle at var(--mx) var(--my),rgba(220,227,232,.10),transparent 45%),linear-gradient(90deg,rgba(82,103,122,.13),transparent 64%)}

/* ---------- Ecosystem: actually use the available width ---------- */
.ecosystem .section-shell{width:min(1480px,calc(100vw - 48px))}
.ecosystem .section-heading{max-width:880px}
.product-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;width:100%}
.product-card-large{grid-column:span 6;min-height:440px;padding:32px}
.product-card-small{grid-column:span 4;min-height:350px;padding:28px}
.product-card{--mx:50%;--my:50%;--rx:0deg;--ry:0deg;transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry)) translateZ(0);transform-style:preserve-3d;transition:transform .34s var(--ease),box-shadow .4s var(--ease),border-color .3s}
.product-card:hover{transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(-5px);box-shadow:0 30px 80px rgba(0,0,0,.18);border-color:rgba(255,255,255,.16)}
.product-card:after{background:radial-gradient(520px circle at var(--mx) var(--my),rgba(255,255,255,.11),transparent 34%),linear-gradient(135deg,rgba(255,255,255,.07),transparent 18%,transparent 80%,rgba(255,255,255,.04))}
.product-card .product-logo,.product-card .text-wordmark,.product-card p,.product-card a,.product-card .product-topline{transform:translateZ(22px)}
.product-card .product-topline{transform:translateZ(28px)}
.product-logo{margin:auto 0 24px}
.product-card-small .product-logo{width:min(245px,76%)}
.text-wordmark{min-height:62px;margin:auto 0 24px}
.product-card p{min-height:0;max-width:520px;margin-bottom:20px}

/* Founder / Contact detail motion */
.founder-copy{transform:translate3d(0,calc((.5 - var(--scene)) * 20px),0)}
.founder-visual:after{content:"";position:absolute;inset:-35%;background:linear-gradient(115deg,transparent 42%,rgba(255,255,255,.22) 50%,transparent 58%);transform:translateX(calc(-42% + var(--scene) * 84%)) rotate(8deg);pointer-events:none;mix-blend-mode:screen;opacity:.55}
.contact-form{--mx:50%;--my:50%}
.contact-form:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(560px circle at var(--mx) var(--my),rgba(220,227,232,.07),transparent 38%);z-index:0}
.contact-form>*{position:relative;z-index:1}

/* Cursor glow: native pointer stays usable; glow is an atmospheric layer. */
.cursor-glow{position:fixed;left:0;top:0;width:26px;height:26px;border:1px solid rgba(220,227,232,.48);border-radius:50%;pointer-events:none;z-index:9997;opacity:0;transform:translate3d(-50%,-50%,0);transition:width .22s var(--ease),height .22s var(--ease),opacity .2s,border-color .22s;background:radial-gradient(circle,rgba(255,255,255,.16),rgba(82,103,122,.08) 45%,transparent 70%);box-shadow:0 0 24px rgba(220,227,232,.16);will-change:transform}
.cursor-glow::after{content:"";position:absolute;inset:-26px;border-radius:50%;background:radial-gradient(circle,rgba(82,103,122,.13),transparent 68%);filter:blur(5px)}
.cursor-glow.is-visible{opacity:1}
.cursor-glow.is-active{width:46px;height:46px;border-color:rgba(255,255,255,.68)}

@media (max-width:980px){
  .site-header.has-brand .glass-nav{grid-template-columns:auto 1fr auto}
  .site-header.has-brand .nav-brand{width:142px;min-width:142px}
  .nav-logo{width:122px}
  .ecosystem .section-shell{width:min(100% - 36px,920px)}
  .product-card-large{min-height:420px}
  .product-card-small{min-height:340px}
}

@media (max-width:760px){
  body{font-size:16px}
  .hero{padding-top:calc(76px + var(--safe-top))}
  .hero-content{transform:translateY(-4px)}
  .hero-logo-wrap{width:min(450px,86vw);margin-bottom:28px;transform:translateY(-7px)}
  .hero h1{font-size:20px;line-height:1.15}
  .hero-copy{font-size:16px;line-height:1.5;margin-top:20px}
  .hero-actions{margin-top:30px}
  .section-heading h2,.vision h2,.founder h2,.contact h2{font-size:34px;line-height:1.03}
  .interlude-shell h2,.manifesto h2{font-size:34px}
  .vision-sequence span,.vision-sequence strong{font-size:24px}
  .solution-panel h3{font-size:28px}
  .possibility-statement span,.possibility-statement strong{font-size:50px}
  .text-wordmark{font-size:30px}
  .vision-copy .lead{font-size:22px}
  blockquote{font-size:21px}
  .site-header:not(.has-brand){width:calc(100vw - 18px)}
  .site-header:not(.has-brand) .glass-nav{min-height:52px}
  .site-header.has-brand .nav-brand{width:124px;min-width:124px;height:40px;padding-left:5px}
  .nav-logo{left:5px;width:112px}
  .ecosystem .section-shell{width:calc(100% - 28px)}
  .product-card-large,.product-card-small{grid-column:span 12;min-height:360px;padding:24px}
  .product-card-large{min-height:390px}
  .product-card{transform:none!important}
  .product-card .product-logo,.product-card .text-wordmark,.product-card p,.product-card a,.product-card .product-topline{transform:none}
  .cursor-glow{display:none}
  .reveal{filter:none}
}

@media (prefers-reduced-motion:reduce){
  .hero-content,.hero-grid,.hero-glow,.motion-scene>.section-shell,.founder-copy,.product-card,.solution-panel{transform:none!important}
  .cursor-glow,.scene-lines{display:none!important}
}

/* interactive light field in the Hero */
.hero{--hx:50%;--hy:42%}
.hero:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(520px circle at var(--hx) var(--hy),rgba(220,227,232,.075),rgba(82,103,122,.035) 28%,transparent 62%);opacity:.9;transition:opacity .3s}
.hero-content,.hero-meta,.scroll-cue{z-index:3}
@media (max-width:760px),(pointer:coarse){.hero:after{opacity:.45}}
.hero.is-offscreen h1,.page-hidden .hero h1{animation-play-state:paused}

/* ========================================================================== */
/* HEURESIS v4 — alignment pass                                                */
/* Requested: no cursor dot, coherent typography, cleaner services, full-width */
/* product row, new route interlude, stronger manifesto, founder in color.     */
/* ========================================================================== */

/* 1) Primary section typography: one coherent scale. */
.section-heading h2,
.vision h2,
.founder h2,
.contact h2{
  font-size:43px;
  line-height:1.04;
  letter-spacing:-.03em;
}
.section-heading h2{margin-top:18px;margin-bottom:24px}
.vision h2{margin:0}
.founder h2{margin:18px 0 12px}
.contact h2{margin:18px 0 24px}

/* Vision: keep the content compact instead of spreading the sequence too far. */
.vision{padding:132px 0 145px}
.vision-layout{margin-top:48px}
.vision-sequence{margin-top:82px}
.vision-sequence span,
.vision-sequence strong{
  padding:15px 0;
  font-size:30px;
  line-height:1.1;
}

/* 2) Interlude: remove the orbital circles and turn the section into a path. */
.interlude-orbit{display:none!important}
.possibility-interlude{
  min-height:76svh;
  padding:108px 0;
  isolation:isolate;
}
.interlude-route{
  position:absolute;
  inset:0;
  z-index:0;
  overflow:hidden;
  pointer-events:none;
}
.interlude-route svg{
  position:absolute;
  inset:7% -3% 4%;
  width:106%;
  height:89%;
  overflow:visible;
  opacity:.95;
}
.interlude-route path{
  fill:none;
  vector-effect:non-scaling-stroke;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.route-base{
  stroke:rgba(220,227,232,.10);
  stroke-width:1.1;
}
.route-progress,
.route-branch{
  stroke-dasharray:1;
  stroke-dashoffset:calc(1 - var(--route, var(--scene)));
  transition:stroke-dashoffset .08s linear;
}
.route-progress{
  stroke:#DCE3E8;
  stroke-width:1.8;
  opacity:calc(.48 + var(--route, var(--scene)) * .42);
  filter:none;
}
.route-branch{
  stroke:#52677A;
  stroke-width:1.15;
  opacity:.38;
}
.route-branch-a{stroke-dashoffset:calc(1.18 - var(--route, var(--scene)) * 1.18)}
.route-branch-b{stroke-dashoffset:calc(1.34 - var(--route, var(--scene)) * 1.34)}
.interlude-scan{
  position:absolute;
  top:-10%;
  bottom:-10%;
  left:calc(-28% + var(--scene) * 128%);
  width:26%;
  transform:skewX(-13deg);
  background:linear-gradient(90deg,transparent,rgba(220,227,232,.055),rgba(82,103,122,.11),rgba(220,227,232,.04),transparent);
  filter:blur(10px);
  opacity:.95;
  will-change:left;
}
.interlude-shell{
  position:relative;
  z-index:2;
  text-align:center;
  transform:translate3d(0,calc((.5 - var(--scene)) * 20px),0);
}
.interlude-shell h2{
  font-size:43px;
  max-width:920px;
  margin:18px auto 0;
  line-height:1.03;
}
.interlude-shell h2 span{
  background:linear-gradient(100deg,#ffffff 0%,#dce3e8 34%,#7d93a7 66%,#ffffff 100%);
  background-size:220% 100%;
  background-position:calc(var(--scene) * 100%) 50%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

/* 3) Services are descriptive, not clickable. No arrows, no hover affordance. */
.solution-panel{
  grid-template-columns:70px minmax(0,1fr);
  gap:28px;
  cursor:default;
  transition:none;
}
.solution-panel::before,
.solution-panel::after{
  display:none!important;
}
.solution-panel:hover,
.solution-panel:hover h3,
.solution-panel:hover p,
.solution-panel:hover .solution-index{
  transform:none;
  background:transparent;
}
.solution-arrow{display:none!important}
.solution-panel h3{font-size:38px}

/* 4) Ecosystem: the two leading products and the three products below share
      exactly the same full-width footprint. */
.ecosystem .section-shell{
  width:min(1560px,calc(100vw - 32px));
  max-width:none;
}
.product-grid{
  width:100%;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px;
}
.product-grid > .product-card{min-width:0;width:100%}
.product-grid > .product-card:nth-child(1){grid-column:1 / 7}
.product-grid > .product-card:nth-child(2){grid-column:7 / 13}
.product-grid > .product-card:nth-child(3){grid-column:1 / 5}
.product-grid > .product-card:nth-child(4){grid-column:5 / 9}
.product-grid > .product-card:nth-child(5){grid-column:9 / 13}
.product-card-large{min-height:455px}
.product-card-small{min-height:405px;padding:30px}
.product-card-small .product-logo{width:min(275px,82%);max-height:92px}
.text-wordmark{font-size:33px;min-height:76px}
.product-card p{font-size:15px;line-height:1.62;max-width:none}

/* Product identity must be visible, not only hinted at. */
.product-wedflow:before{
  background:
    radial-gradient(circle at 83% 12%,rgba(53,87,125,.72),transparent 40%),
    linear-gradient(145deg,#141E30 0%,#101a2a 55%,#080909 100%);
}
.product-dmqc:before{
  background:
    radial-gradient(circle at 84% 12%,rgba(239,233,233,.18),transparent 32%),
    linear-gradient(145deg,#5A2132 0%,#35131e 57%,#080909 100%);
}
.product-wedflow .product-light{background:#35577D;opacity:.34}
.product-dmqc .product-light{background:#EFE9E9;opacity:.22}
.product-wedflow,
.product-dmqc{border-color:rgba(255,255,255,.14)}

/* 5) Manifesto: preserve the horizontal text movement, add one stronger
      typographic layer and a travelling light line. */
.manifesto{min-height:84svh}
.manifesto-track{
  top:10%;
  transform:translateX(calc(-18vw + var(--scene) * 24vw));
  opacity:.9;
}
.manifesto-word{
  position:absolute;
  left:-8vw;
  bottom:4%;
  z-index:0;
  white-space:nowrap;
  font-size:clamp(7rem,19vw,20rem);
  line-height:.78;
  font-weight:900;
  letter-spacing:-.07em;
  color:transparent;
  -webkit-text-stroke:1px rgba(220,227,232,.075);
  transform:translateX(calc(17vw - var(--scene) * 34vw));
  will-change:transform;
  user-select:none;
}
.manifesto-beam{
  position:absolute;
  left:8%;
  right:8%;
  top:51%;
  height:1px;
  z-index:1;
  background:linear-gradient(90deg,transparent 0%,rgba(82,103,122,.16) 22%,rgba(220,227,232,.72) 50%,rgba(82,103,122,.16) 78%,transparent 100%);
  transform:scaleX(calc(.10 + var(--scene) * .90));
  transform-origin:left center;
  box-shadow:0 0 22px rgba(220,227,232,.12);
}
.manifesto-shell{position:relative;z-index:2;padding-top:92px}
.manifesto h2{font-size:43px;max-width:900px}
.manifesto h2 span{
  background:linear-gradient(100deg,#fff,#dce3e8 42%,#7d93a7 74%,#fff);
  background-size:210% 100%;
  background-position:calc(var(--scene) * 100%) 50%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

/* 6) Founder: color portrait only, with the full head always inside frame. */
.portrait-color{opacity:1!important}
.founder-visual .portrait{
  width:100%;
  height:100%;
  top:0;
  left:0;
  object-fit:contain;
  object-position:center top;
  transform:translate3d(0,calc((var(--scene) - .5) * 8px),0) scale(1);
}
.founder-visual:hover .portrait{
  transform:translate3d(0,calc((var(--scene) - .5) * 8px),0) scale(1);
}
.founder-visual:after{opacity:.28}

/* 7) Contact: the removed statement no longer creates a huge empty pause. */
.contact-intro{margin-bottom:62px}
.contact-form{margin-top:0}

/* 8) Pointer: glow only. No outlined dot, ring, cursor substitute or centre. */
.cursor-glow{
  width:190px;
  height:190px;
  border:0!important;
  border-radius:50%;
  background:radial-gradient(circle,rgba(220,227,232,.13) 0%,rgba(82,103,122,.09) 28%,rgba(82,103,122,.04) 48%,transparent 72%);
  box-shadow:none!important;
  filter:blur(12px);
  opacity:0;
  mix-blend-mode:screen;
  transition:width .28s var(--ease),height .28s var(--ease),opacity .22s;
}
.cursor-glow::after{display:none!important}
.cursor-glow.is-visible{opacity:.82}
.cursor-glow.is-active{
  width:225px;
  height:225px;
  border:0!important;
}

@media (max-width:980px){
  .ecosystem .section-shell{width:min(100% - 28px,1080px)}
  .product-card-small{min-height:380px}
}

@media (max-width:760px){
  .section-heading h2,
  .vision h2,
  .founder h2,
  .contact h2{font-size:34px;line-height:1.04}
  .vision{padding:108px 0 116px}
  .vision-sequence{margin-top:64px}
  .vision-sequence span,
  .vision-sequence strong{font-size:24px;padding:13px 0}
  .interlude-shell h2,
  .manifesto h2{font-size:34px}
  .possibility-interlude{min-height:70svh;padding:88px 0}
  .interlude-route svg{inset:5% -28% 4%;width:156%;height:91%}
  .manifesto-word{font-size:28vw;bottom:8%}
  .manifesto-beam{left:5%;right:5%;top:54%}
  .ecosystem .section-shell{width:calc(100% - 20px)}
  .product-grid{gap:12px}
  .product-grid > .product-card:nth-child(n){grid-column:1 / 13}
  .product-card-large,.product-card-small{min-height:365px;padding:24px}
  .product-card-large{min-height:405px}
  .product-card-small .product-logo{width:min(255px,80%)}
  .text-wordmark{font-size:30px;min-height:68px}
  .founder-visual{height:610px}
  .contact-intro{margin-bottom:44px}
}

@media (prefers-reduced-motion:reduce){
  .route-progress,.route-branch{stroke-dashoffset:0!important}
  .interlude-scan,.manifesto-beam{display:none!important}
  .manifesto-word,.manifesto-track{transform:none!important}
}


/* ========================================================================== */
/* HEURESIS v5 — focused refinement                                           */
/* ========================================================================== */

/* Interlude: the path completes while the section is still fully in view.
   No travelling glow/scan: only the drawn line remains. */
.interlude-scan{display:none!important}
.route-progress{filter:none!important;box-shadow:none!important}

/* Ecosystem: more balanced hierarchy. Leading cards remain slightly taller,
   while the second row has enough vertical presence to read as real products. */
@media (min-width:981px){
  .product-card-large{min-height:432px}
  .product-card-small{min-height:418px}
}
@media (min-width:761px) and (max-width:980px){
  .product-card-large{min-height:410px}
  .product-card-small{min-height:398px}
}


/* ========================================================================== */
/* HEURESIS v6 — product cards structure refinement                           */
/* ========================================================================== */

/* The product cards must read as a clean editorial system: consistent top
   metadata, top-aligned logo/wordmark, readable copy, and balanced heights. */
.ecosystem .section-shell{
  width:min(1560px,calc(100vw - 32px));
  max-width:none;
}
.product-grid{
  width:100%;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px;
  align-items:stretch;
}
.product-grid > .product-card:nth-child(1){grid-column:1 / 7}
.product-grid > .product-card:nth-child(2){grid-column:7 / 13}
.product-grid > .product-card:nth-child(3){grid-column:1 / 5}
.product-grid > .product-card:nth-child(4){grid-column:5 / 9}
.product-grid > .product-card:nth-child(5){grid-column:9 / 13}
.product-grid > .product-card{
  min-width:0;
  width:100%;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
}

.product-topline{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  margin:0 0 26px;
  font-size:11px;
  line-height:1.15;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,.42);
}
.product-topline span{
  display:block;
  min-width:0;
}
.product-topline span:last-child{
  text-align:right;
}

.product-card .product-logo,
.product-card .text-wordmark{
  margin:0 0 24px;
  align-self:flex-start;
}
.product-card-large .product-logo{
  width:min(320px,60%);
  max-height:88px;
  object-fit:contain;
  object-position:left center;
}
.product-card-small .product-logo{
  width:min(260px,86%);
  max-height:74px;
  object-fit:contain;
  object-position:left center;
}
.text-wordmark{
  min-height:74px;
  display:flex;
  align-items:flex-start;
  font-size:33px;
  line-height:1.02;
  letter-spacing:-.045em;
  font-weight:900;
}
.product-card p{
  margin:0 0 24px;
  flex:1;
  max-width:none;
  font-size:15px;
  line-height:1.6;
  color:rgba(255,255,255,.68);
}
.product-card a{
  margin-top:auto;
  align-self:flex-start;
  font-size:14px;
  gap:10px;
}

/* Balance hierarchy: row one slightly taller, row two nearly equal and more
   substantial than before. */
@media (min-width:981px){
  .product-card-large{
    min-height:428px;
    padding:30px 38px 28px;
  }
  .product-card-small{
    min-height:404px;
    padding:28px 24px 24px;
  }
}
@media (min-width:761px) and (max-width:980px){
  .product-card-large{
    min-height:408px;
    padding:28px;
  }
  .product-card-small{
    min-height:392px;
    padding:24px;
  }
}
@media (max-width:760px){
  .product-grid{gap:12px}
  .product-grid > .product-card:nth-child(n){grid-column:1 / 13}
  .product-card-large,
  .product-card-small{
    min-height:370px;
    padding:24px;
  }
  .product-card-large{min-height:402px}
  .product-topline{font-size:10px;margin-bottom:22px}
  .product-card .product-logo,
  .product-card .text-wordmark{margin-bottom:20px}
  .product-card-small .product-logo{width:min(248px,84%);max-height:68px}
  .text-wordmark{font-size:30px;min-height:64px}
}


/* ========================================================================== */
/* HEURESIS v7 — product cards vertical compression                           */
/* ========================================================================== */

/* The product cards were leaving too much empty space between the product
   identity block and the CTA. Compress the central stack on both the large
   cards and the three smaller cards, keeping the overall cards intact. */
.product-grid > .product-card{
  justify-content:flex-start;
}
.product-card p{
  flex:0 1 auto;
  margin:0 0 14px;
}
.product-card a{
  margin-top:0;
}
.product-card .product-logo,
.product-card .text-wordmark{
  margin-bottom:18px;
}
.product-topline{
  margin-bottom:22px;
}

@media (min-width:981px){
  .product-card-large{
    min-height:428px;
  }
  .product-card-small{
    min-height:404px;
  }
}
@media (max-width:760px){
  .product-card .product-logo,
  .product-card .text-wordmark{margin-bottom:16px}
  .product-topline{margin-bottom:18px}
  .product-card p{margin-bottom:12px}
}


/* ========================================================================== */
/* HEURESIS v8 — correct product card compression                             */
/* ========================================================================== */

/* Keep the CTA in its original anchored position at the bottom of each card.
   Compress the cards themselves, taking height out of the middle content area
   rather than moving the CTA upward. */
.product-card p{
  flex:1 1 auto;
  margin:0 0 16px;
}
.product-card a{
  margin-top:auto;
}
.product-card .product-logo,
.product-card .text-wordmark{
  margin-bottom:18px;
}
.product-topline{
  margin-bottom:20px;
}

@media (min-width:981px){
  .product-card-large{
    min-height:394px;
    padding:28px 36px 26px;
  }
  .product-card-small{
    min-height:378px;
    padding:26px 24px 24px;
  }
}

@media (min-width:761px) and (max-width:980px){
  .product-card-large{
    min-height:386px;
    padding:26px;
  }
  .product-card-small{
    min-height:370px;
    padding:24px;
  }
}

@media (max-width:760px){
  .product-card-large{
    min-height:382px;
  }
  .product-card-small{
    min-height:356px;
  }
  .product-card p{margin-bottom:14px}
}


/* ========================================================================== */
/* HEURESIS v9 — requested focused refinements                                */
/* ========================================================================== */

/* MOBILE — no menu at all while the Hero is visible. */
@media (max-width:980px){
  .site-header{
    transition:opacity .42s var(--ease),visibility .42s var(--ease),transform .42s var(--ease),width .58s var(--ease),top .35s var(--ease);
  }
  .site-header:not(.has-brand){
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateX(-50%) translateY(-12px);
  }
  .site-header.has-brand{
    opacity:1;
    visibility:visible;
    pointer-events:none;
    transform:translateX(-50%) translateY(0);
  }
  .site-header.has-brand .glass-nav,
  .site-header.has-brand .mobile-menu{pointer-events:auto}
}

/* MOBILE — solution titles 2px smaller than v8. */
@media (max-width:760px){
  .solution-panel h3{font-size:26px;line-height:1.08}
}

/* DESKTOP — let the wave visually travel all the way to the right edge. */
@media (min-width:981px){
  .interlude-route svg{
    inset:7% -6% 4%;
    width:112%;
    height:89%;
  }
}

/* PRODUCT CARDS — both rows now have exactly the same physical height.
   The hierarchy remains in width, colour and prominence, not extra height. */
.product-card .product-description,
.product-card .product-benefit{
  flex:0 0 auto;
  max-width:none;
}
.product-card .product-description{
  margin:0 0 8px;
  font-size:14px;
  line-height:1.48;
  color:rgba(255,255,255,.72);
}
.product-card .product-benefit{
  margin:0 0 14px;
  font-size:13px;
  line-height:1.42;
  color:rgba(255,255,255,.54);
}
.product-card .product-benefit strong{
  color:rgba(255,255,255,.86);
  font-weight:700;
}
.product-card a{margin-top:auto}
.product-card .product-logo,
.product-card .text-wordmark{margin-bottom:14px}
.product-topline{margin-bottom:16px}
.text-wordmark{min-height:58px}
.product-card-small .product-logo{max-height:64px}
.product-card-large .product-logo{max-height:76px}

@media (min-width:981px){
  .product-card-large,
  .product-card-small{
    min-height:360px;
    height:360px;
    padding:24px 26px 22px;
  }
  .product-card-large{padding-left:32px;padding-right:32px}
}
@media (min-width:761px) and (max-width:980px){
  .product-card-large,
  .product-card-small{
    min-height:352px;
    height:352px;
    padding:23px;
  }
}
@media (max-width:760px){
  .product-card-large,
  .product-card-small{
    min-height:370px;
    height:auto;
    padding:22px;
  }
  .product-topline{margin-bottom:16px}
  .product-card .product-logo,
  .product-card .text-wordmark{margin-bottom:14px}
  .product-card .product-description{font-size:14px;line-height:1.48;margin-bottom:8px}
  .product-card .product-benefit{font-size:13px;line-height:1.42;margin-bottom:14px}
}


/* ========================================================================== */
/* HEURESIS v10 — product palette refresh + desktop navigation timing          */
/* ========================================================================== */

/* Flash Sites — official palette: #6367FF / #FFDBFD */
.product-flash:before{
  background:
    radial-gradient(circle at 84% 10%,rgba(255,219,253,.34),transparent 34%),
    radial-gradient(circle at 18% 88%,rgba(99,103,255,.20),transparent 42%),
    linear-gradient(145deg,#272958 0%,#171833 48%,#080909 100%);
}
.product-flash .product-light{
  background:#FFDBFD;
  opacity:.22;
}
.product-flash{border-color:rgba(99,103,255,.28)}

/* Signature Sites — official palette: #184944 / #DDD4D4 */
.product-signature:before{
  background:
    radial-gradient(circle at 84% 10%,rgba(221,212,212,.24),transparent 34%),
    radial-gradient(circle at 18% 88%,rgba(24,73,68,.30),transparent 44%),
    linear-gradient(145deg,#123a36 0%,#0d2926 50%,#080909 100%);
}
.product-signature .product-light{
  background:#DDD4D4;
  opacity:.18;
}
.product-signature{border-color:rgba(24,73,68,.36)}

/* NexusTouch — official palette: #DFD0B8 / #222831 */
.product-nexus:before{
  background:
    radial-gradient(circle at 84% 10%,rgba(223,208,184,.32),transparent 34%),
    radial-gradient(circle at 20% 88%,rgba(34,40,49,.56),transparent 46%),
    linear-gradient(145deg,#222831 0%,#171b21 52%,#080909 100%);
}
.product-nexus .product-light{
  background:#DFD0B8;
  opacity:.20;
}
.product-nexus{border-color:rgba(223,208,184,.20)}


/* ========================================================================== */
/* HEURESIS v11 — navbar active-state fix + cleaner product cards             */
/* ========================================================================== */

/* Clean Apple-like product presentation inside the corporate site.
   Row 1: dark surfaces, white content. Row 2: light surfaces, black content.
   Product colors stay only as subtle accents, not as dominant backgrounds. */
.product-grid .product-card{
  box-shadow:0 18px 48px rgba(0,0,0,.08);
}
.product-grid .product-card:hover{
  box-shadow:0 24px 62px rgba(0,0,0,.12);
}

/* First two featured cards */
.product-wedflow,
.product-dmqc{
  background:linear-gradient(180deg,#101112 0%, #070707 100%);
  color:#fff;
  border-color:rgba(255,255,255,.10);
}
.product-wedflow:before,
.product-dmqc:before{
  content:"";
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 85% 14%, rgba(255,255,255,.055), transparent 24%),
    linear-gradient(145deg, rgba(255,255,255,.028), rgba(255,255,255,0) 52%);
  z-index:-2;
}
.product-wedflow .product-light{
  background:radial-gradient(circle, rgba(53,87,125,.34), rgba(20,30,48,.08) 45%, transparent 72%);
  opacity:.42;
  filter:blur(68px);
}
.product-dmqc .product-light{
  background:radial-gradient(circle, rgba(90,33,50,.34), rgba(239,233,233,.05) 46%, transparent 72%);
  opacity:.38;
  filter:blur(68px);
}
.product-wedflow .product-topline,
.product-dmqc .product-topline,
.product-wedflow .product-description,
.product-dmqc .product-description,
.product-wedflow .product-benefit,
.product-dmqc .product-benefit{color:rgba(255,255,255,.68)}
.product-wedflow .product-benefit strong,
.product-dmqc .product-benefit strong{color:#fff}
.product-wedflow a,
.product-dmqc a{color:#fff}

/* Secondary cards become clean light cards */
.product-flash,
.product-signature,
.product-nexus{
  background:linear-gradient(180deg,#ffffff 0%, #f6f7f8 100%);
  color:#050505;
  border-color:rgba(5,5,5,.08);
  box-shadow:0 16px 42px rgba(5,5,5,.06);
}
.product-flash:hover,
.product-signature:hover,
.product-nexus:hover{
  border-color:rgba(5,5,5,.12);
  box-shadow:0 22px 58px rgba(5,5,5,.10);
}
.product-flash:before,
.product-signature:before,
.product-nexus:before{
  content:"";
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 86% 10%, rgba(24,24,24,.035), transparent 24%),
    linear-gradient(180deg, rgba(255,255,255,.72), rgba(244,246,248,0) 34%);
  z-index:-2;
}
.product-flash:after,
.product-signature:after,
.product-nexus:after{
  background:
    radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.55),transparent 34%),
    linear-gradient(135deg,rgba(255,255,255,.80),transparent 22%,transparent 78%,rgba(5,5,5,.03));
}
.product-flash .product-light{
  background:radial-gradient(circle, rgba(99,103,255,.10), rgba(255,219,253,.12) 40%, transparent 70%);
  opacity:.30;
  filter:blur(64px);
}
.product-signature .product-light{
  background:radial-gradient(circle, rgba(24,73,68,.10), rgba(221,212,212,.18) 42%, transparent 72%);
  opacity:.30;
  filter:blur(64px);
}
.product-nexus .product-light{
  background:radial-gradient(circle, rgba(223,208,184,.20), rgba(34,40,49,.06) 42%, transparent 72%);
  opacity:.28;
  filter:blur(64px);
}
.product-flash .product-topline,
.product-signature .product-topline,
.product-nexus .product-topline{color:rgba(5,5,5,.42)}
.product-flash .product-description,
.product-signature .product-description,
.product-nexus .product-description{color:rgba(5,5,5,.70)}
.product-flash .product-benefit,
.product-signature .product-benefit,
.product-nexus .product-benefit{color:rgba(5,5,5,.68)}
.product-flash .product-benefit strong,
.product-signature .product-benefit strong,
.product-nexus .product-benefit strong{color:#050505}
.product-flash a,
.product-signature a,
.product-nexus a{color:#050505}
.product-signature .text-wordmark,
.product-nexus .text-wordmark{color:#050505}

/* Keep the section elegant: reduce the feeling of five unrelated colorful cards. */
.product-flash,
.product-signature,
.product-nexus,
.product-wedflow,
.product-dmqc{overflow:hidden}

/* Navigation active state should be clearer. */
.nav-links a.active{
  color:#fff;
  background:rgba(255,255,255,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.site-header.on-light .nav-links a.active{
  color:#050505;
  background:rgba(5,5,5,.075);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55);
}

@media (max-width:760px){
  .product-flash,
  .product-signature,
  .product-nexus{
    box-shadow:0 14px 34px rgba(5,5,5,.06);
  }
}


/* ========================================================================== */
/* HEURESIS v12 — cleaner founder section + no cursor glow                    */
/* ========================================================================== */

/* Remove the global cursor glow entirely. */
.cursor-glow{display:none!important}

/* Founder section simplified: text-led composition, more editorial, cleaner.
   A subtle monogram sits in the background without competing with the copy. */
.founder-shell-text-only{
  position:relative;
  display:block;
  max-width:980px;
  min-height:auto;
  padding-top:10px;
}
.founder-copy-wide{
  position:relative;
  z-index:2;
  max-width:760px;
}
.founder-copy-wide > p,
.founder-copy-wide blockquote{max-width:760px}
.founder-mark{
  position:absolute;
  right:-4%;
  top:-2%;
  z-index:0;
  font-size:clamp(8rem,24vw,17rem);
  line-height:.82;
  font-weight:900;
  letter-spacing:-.08em;
  color:transparent;
  -webkit-text-stroke:1px rgba(82,103,122,.14);
  opacity:.75;
  user-select:none;
  transform:translate3d(calc((.5 - var(--scene)) * 18px),0,0);
  pointer-events:none;
}
.founder:after{
  width:36vw;
  max-width:520px;
  aspect-ratio:1;
  border-radius:50%;
  right:-12vw;
  top:4%;
  background:radial-gradient(circle,rgba(82,103,122,.09),transparent 70%);
  transform:translateY(calc((.5 - var(--scene)) * 38px));
}
.founder-copy{
  transform:translate3d(0,calc((.5 - var(--scene)) * 14px),0);
}
.founder .btn{margin-top:6px}

/* Neutralize old photo-specific layout so the text section breathes. */
.founder-shell{grid-template-columns:1fr;gap:0;align-items:flex-start}
.founder-visual,
.portrait-halo,
.portrait,
.founder-tag{display:none!important}

@media (max-width:980px){
  .founder-shell-text-only{max-width:860px}
  .founder-mark{right:0;top:0;font-size:clamp(6.5rem,28vw,12rem)}
}
@media (max-width:760px){
  .founder-shell-text-only{padding-top:0}
  .founder-copy-wide{max-width:100%}
  .founder-mark{
    right:auto;
    left:0;
    top:-18px;
    font-size:clamp(5.25rem,27vw,7.5rem);
    opacity:.55;
  }
}
@media (prefers-reduced-motion:reduce){
  .founder-mark,.founder-copy{transform:none!important}
}


/* ========================================================================== */
/* HEURESIS v13 — cleaner founder + section markers + hero discovery cue      */
/* ========================================================================== */

/* Remove the founder monogram and any decorative line artifacts. */
.founder-mark{display:none!important}
.founder:after{display:none!important}
.founder .scene-lines{display:none!important}

/* Subtle section markers on desktop only. */
.section-marker{
  position:absolute;
  left:0;
  top:-42px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:11px;
  line-height:1;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(82,103,122,.52);
  opacity:.78;
  pointer-events:none;
}
.section-marker::before{
  content:"";
  width:22px;
  height:1px;
  background:currentColor;
  opacity:.55;
}
.solutions .section-marker,
.contact .section-marker{color:rgba(220,227,232,.54)}
.ecosystem .section-marker,
.vision .section-marker,
.founder .section-marker{color:rgba(82,103,122,.52)}

/* Hero discovery cue replaces the circular arrow on desktop. */
.scroll-cue-discovery{
  position:absolute;
  right:34px;
  top:50%;
  bottom:auto;
  width:auto;
  height:auto;
  border:none;
  border-radius:0;
  display:flex;
  align-items:center;
  gap:14px;
  transform:translateY(-50%);
  color:rgba(255,255,255,.72);
  text-decoration:none;
  padding:6px 0;
}
.scroll-cue-discovery .scroll-cue-word{
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  font-size:11px;
  letter-spacing:.24em;
  text-transform:uppercase;
}
.scroll-cue-discovery .scroll-cue-line{
  position:relative;
  width:1px;
  height:114px;
  background:linear-gradient(rgba(255,255,255,.15), rgba(255,255,255,.9) 35%, rgba(255,255,255,.16));
}
.scroll-cue-discovery .scroll-cue-line::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-1px;
  width:6px;
  height:6px;
  border-right:1px solid rgba(255,255,255,.9);
  border-bottom:1px solid rgba(255,255,255,.9);
  transform:translateX(-50%) rotate(45deg);
}
.scroll-cue-discovery:hover{color:#fff}

/* Prevent the old mobile positioning rule from affecting desktop look. */
@media (max-width:980px){
  .section-marker{display:none}
  .scroll-cue-discovery{display:none}
}
@media (min-width:981px){
  .vision .section-shell,
  .solutions .section-shell,
  .ecosystem .section-shell,
  .founder .section-shell,
  .contact .section-shell{padding-top:18px}
}


/* ========================================================================== */
/* HEURESIS v14 — remove section labels, fix Discovery cue, wide route        */
/* ========================================================================== */

/* Section labels experiment reverted. */
.section-marker{display:none!important}

/* Discovery: explicitly reset the legacy .scroll-cue span rules so only one
   arrow remains at the bottom of the vertical line. */
.scroll-cue-discovery > span{
  width:auto;
  height:auto;
  background:none;
  position:static;
}
.scroll-cue-discovery > span::after{display:none!important}
.scroll-cue-discovery .scroll-cue-word{
  width:auto;
  height:auto;
  background:none;
  position:static;
}
.scroll-cue-discovery .scroll-cue-line{
  position:relative;
  width:1px;
  height:114px;
  background:linear-gradient(rgba(255,255,255,.14),rgba(255,255,255,.88) 36%,rgba(255,255,255,.15));
}
.scroll-cue-discovery .scroll-cue-line::after{
  display:block!important;
  content:"";
  position:absolute;
  left:50%;
  bottom:-1px;
  width:7px;
  height:7px;
  border:0;
  border-right:1px solid rgba(255,255,255,.92);
  border-bottom:1px solid rgba(255,255,255,.92);
  transform:translateX(-50%) rotate(45deg);
  background:transparent;
}

/* Desktop route: extend the SVG beyond both viewport edges. The path itself
   also ends beyond the viewBox, so completion always reaches the right edge
   even on very wide monitors. */
@media (min-width:981px){
  .interlude-route svg{
    inset:4% -8% 2%;
    width:116%;
    height:94%;
  }
}


/* ========================================================================== */
/* HEURESIS v16 — consent UI only; visual home remains v14                    */
/* ========================================================================== */
.hp-field{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.footer-link-button{appearance:none;border:0;background:none;padding:0;text-align:left;font:inherit;color:rgba(255,255,255,.65);cursor:pointer;transition:.2s}
.footer-link-button:hover{color:#fff;transform:translateX(2px)}
.consent-banner{position:fixed;left:50%;bottom:max(18px,calc(14px + env(safe-area-inset-bottom)));z-index:10020;transform:translateX(-50%);width:min(920px,calc(100vw - 28px));padding:22px;border-radius:28px;background:linear-gradient(135deg,rgba(24,26,27,.94),rgba(5,5,5,.94));border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 90px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.08);-webkit-backdrop-filter:blur(18px) saturate(120%);backdrop-filter:blur(18px) saturate(120%);display:grid;grid-template-columns:1fr auto;gap:28px;align-items:end;color:#fff}
.consent-banner[hidden],.consent-modal-backdrop[hidden]{display:none!important}
.consent-copy{max-width:650px}.consent-kicker{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(220,227,232,.62);font-weight:700}.consent-copy h2,.consent-modal h2{font-size:22px;line-height:1.1;margin:8px 0 10px}.consent-copy p{font-size:14px;line-height:1.55;margin:0 0 8px;color:rgba(255,255,255,.68)}.consent-copy a{font-size:12px;text-decoration:underline;text-underline-offset:3px;color:rgba(255,255,255,.82)}
.consent-actions,.consent-modal-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.consent-btn{min-height:42px;border-radius:999px;padding:0 15px;border:1px solid rgba(255,255,255,.14);font-size:12px;font-weight:700;cursor:pointer}.consent-btn-primary{background:#fff;color:#050505}.consent-btn-ghost{background:rgba(255,255,255,.04);color:#fff}
.consent-modal-backdrop{position:fixed;inset:0;z-index:10030;background:rgba(0,0,0,.54);display:grid;place-items:center;padding:18px}.consent-modal{width:min(620px,100%);position:relative;border-radius:30px;padding:28px;background:#101112;color:#fff;border:1px solid rgba(255,255,255,.13);box-shadow:0 35px 110px rgba(0,0,0,.5)}.consent-close{position:absolute;right:18px;top:16px;border:0;background:transparent;color:#fff;font-size:28px;cursor:pointer}.consent-option{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:18px 0;border-top:1px solid rgba(255,255,255,.09)}.consent-option strong{font-size:14px}.consent-option p{font-size:12px;line-height:1.5;color:rgba(255,255,255,.55);margin:5px 0 0}.consent-always{font-size:11px;color:rgba(220,227,232,.62);white-space:nowrap}.consent-option-toggle{position:relative;cursor:pointer}.consent-option-toggle input{position:absolute;opacity:0;pointer-events:none}.toggle-ui{width:46px;height:26px;border-radius:99px;background:rgba(255,255,255,.14);position:relative;flex:0 0 auto;transition:.25s}.toggle-ui:after{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.25s}.consent-option-toggle input:checked + .toggle-ui{background:#52677A}.consent-option-toggle input:checked + .toggle-ui:after{transform:translateX(20px)}.consent-modal-actions{margin-top:18px}.consent-open{overflow:hidden}
@media(max-width:760px){.consent-banner{grid-template-columns:1fr;padding:18px;border-radius:22px;gap:18px}.consent-actions{justify-content:stretch}.consent-actions .consent-btn{flex:1}.consent-modal{padding:24px 18px}.consent-option{gap:14px}.consent-modal-actions{flex-direction:column}.consent-modal-actions .consent-btn{width:100%}}

/* ========================================================================== */
/* HEURESIS v17 — mobile hero viewport + mobile CTA                           */
/* ========================================================================== */
@media (max-width:760px){
  /* Keep the first screen entirely inside the dark Hero on iOS/Safari.
     100lvh prevents the following light section from peeking through while
     the browser chrome is expanded/collapsing. */
  .hero{
    min-height:100vh;
    min-height:100dvh;
    min-height:100lvh;
    background:#050505;
  }
  /* Mobile Hero: keep only the conversational CTA. */
  .hero-actions .btn-primary{display:none!important}
  .hero-actions .btn-ghost{display:inline-flex;width:100%}
}


/* ========================================================================== */
/* HEURESIS v19 — mobile Hero viewport + official product logos + nav motion  */
/* ========================================================================== */

/* MOBILE — the Hero owns the whole visible viewport. Use the dynamic viewport
   rather than lvh so Safari's expanding/collapsing browser chrome does not
   reveal the following light section before the user actually scrolls. */
@media (max-width:760px){
  html,
  body,
  main{background:#050505}
  .hero{
    height:100vh;
    min-height:100vh;
    height:100dvh;
    min-height:100dvh;
    max-height:none;
    background:#050505;
    overflow:hidden;
  }
}

/* OFFICIAL PRODUCT LOGOS — secondary cards use the supplied black marks on
   their light surfaces. Keep original proportions; never stretch them. */
.product-logo-signature{
  width:min(270px,88%)!important;
  max-height:68px!important;
  object-fit:contain;
  object-position:left center;
}
.product-logo-nexus{
  width:76px!important;
  height:76px!important;
  max-height:76px!important;
  object-fit:contain;
  object-position:left center;
}
@media (max-width:760px){
  .product-logo-signature{width:min(250px,86%)!important;max-height:62px!important}
  .product-logo-nexus{width:68px!important;height:68px!important;max-height:68px!important}
}

/* DESKTOP NAV — preserve the approved appearance, but animate only one stable
   width instead of grid tracks. Brand and CTA are layered at the edges, so the
   menu expands/retracts smoothly without Safari layout jumps. */
@media (min-width:981px){
  .site-header,
  .site-header:not(.has-brand),
  .site-header.has-brand{
    width:min(980px,calc(100vw - 28px));
    transition:top .35s var(--ease);
  }
  .glass-nav,
  .site-header:not(.has-brand) .glass-nav,
  .site-header.has-brand .glass-nav{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    width:min(650px,100%);
    margin-inline:auto;
    grid-template-columns:none;
    gap:0;
    transition:
      width .78s cubic-bezier(.22,1,.36,1),
      min-height .45s var(--ease),
      padding .45s var(--ease),
      background .35s,
      border-color .35s,
      box-shadow .35s;
    will-change:width;
  }
  .site-header.has-brand .glass-nav{width:100%}

  .nav-links{
    position:relative;
    z-index:2;
    flex:0 0 auto;
    justify-content:center;
  }

  .nav-brand,
  .site-header.has-brand .nav-brand{
    position:absolute;
    left:10px;
    top:50%;
    z-index:3;
    width:144px;
    height:42px;
    padding:0 8px;
    transform:translate3d(-12px,-50%,0) scale(.985);
    opacity:0;
    overflow:visible;
    pointer-events:none;
    transition:opacity .38s ease .02s,transform .62s cubic-bezier(.22,1,.36,1);
  }
  .site-header.has-brand .nav-brand{
    opacity:1;
    transform:translate3d(0,-50%,0) scale(1);
    pointer-events:auto;
    transition-delay:.16s,0s;
  }
  .nav-logo{left:8px;top:50%;width:132px}

  .nav-cta,
  .site-header.has-brand .nav-cta{
    position:absolute;
    right:10px;
    top:50%;
    z-index:3;
    width:104px;
    padding:12px 17px;
    transform:translate3d(12px,-50%,0) scale(.985);
    opacity:0;
    overflow:hidden;
    pointer-events:none;
    transition:
      opacity .38s ease .02s,
      transform .62s cubic-bezier(.22,1,.36,1),
      background .3s,color .3s;
  }
  .site-header.has-brand .nav-cta{
    opacity:1;
    transform:translate3d(0,-50%,0) scale(1);
    pointer-events:auto;
    transition-delay:.16s,0s,0s,0s;
  }
  .site-header:not(.has-brand) .nav-brand,
  .site-header:not(.has-brand) .nav-cta{transition-delay:0s}
}


/* ========================================================================== */
/* HEURESIS v20 — stable mobile Hero viewport + corrected official logos      */
/* ========================================================================== */

/* Freeze the mobile Hero to the real device-screen height captured at load.
   Compensate content position by half the hidden browser-chrome area so the
   approved composition remains visually where it was. */
@media (max-width:760px){
  .hero{
    height:var(--mobile-hero-height, 100svh)!important;
    min-height:var(--mobile-hero-height, 100svh)!important;
    max-height:none!important;
    background:#050505!important;
  }
  .hero-content{
    transform:translateY(calc(-4px - (var(--mobile-hero-extra, 0px) / 2)))!important;
  }
}

/* Supplied PNG marks. Only transparent outer whitespace is cropped; artwork
   geometry and proportions are untouched. */
.product-logo-signature{
  width:min(272px,88%)!important;
  height:auto!important;
  max-height:66px!important;
  object-fit:contain!important;
  object-position:left center!important;
}
.product-logo-nexus{
  width:auto!important;
  height:82px!important;
  max-width:150px!important;
  max-height:82px!important;
  object-fit:contain!important;
  object-position:left center!important;
}
@media (max-width:760px){
  .product-logo-signature{width:min(248px,86%)!important;max-height:60px!important}
  .product-logo-nexus{height:74px!important;max-height:74px!important;max-width:140px!important}
}


/* ========================================================================== */
/* HEURESIS v21 — immersive Hero                                              */
/* Adds motion only inside the approved Hero. No other section is touched.    */
/* ========================================================================== */

.hero{isolation:isolate}
.hero-grid,.hero-glow{z-index:0}
.hero-immersive{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  overflow:hidden;
  opacity:0;
  transition:opacity 1.35s cubic-bezier(.22,1,.36,1) .1s;
}
.hero.hero-ready .hero-immersive{opacity:1}

/* Soft moving atmosphere: gradients only, no large animated blur filters. */
.hero-aurora{
  position:absolute;
  width:56vw;
  aspect-ratio:1.45;
  border-radius:50%;
  opacity:.16;
  will-change:transform,opacity;
  background:radial-gradient(ellipse at center,rgba(82,103,122,.30) 0%,rgba(82,103,122,.10) 34%,transparent 70%);
}
.hero-aurora-a{
  left:-14vw;
  top:4vh;
  animation:heroAuroraA 11s ease-in-out infinite alternate;
}
.hero-aurora-b{
  right:-16vw;
  bottom:-12vh;
  opacity:.11;
  background:radial-gradient(ellipse at center,rgba(220,227,232,.19) 0%,rgba(82,103,122,.08) 36%,transparent 72%);
  animation:heroAuroraB 14s ease-in-out infinite alternate;
}
@keyframes heroAuroraA{
  0%{transform:translate3d(-2vw,-1vh,0) scale(.94);opacity:.10}
  55%{transform:translate3d(7vw,3vh,0) scale(1.06);opacity:.19}
  100%{transform:translate3d(12vw,-2vh,0) scale(1);opacity:.13}
}
@keyframes heroAuroraB{
  0%{transform:translate3d(4vw,2vh,0) scale(.92);opacity:.07}
  60%{transform:translate3d(-8vw,-5vh,0) scale(1.08);opacity:.14}
  100%{transform:translate3d(-3vw,-8vh,0) scale(1.02);opacity:.10}
}

/* Extremely thin orbital geometry creates depth without looking like decoration. */
.hero-orbit{
  position:absolute;
  left:50%;
  top:50%;
  border:1px solid rgba(220,227,232,.075);
  border-radius:50%;
  transform-origin:center;
  will-change:transform,opacity;
}
.hero-orbit-a{
  width:88vw;
  height:42vw;
  margin-left:-44vw;
  margin-top:-21vw;
  transform:rotate(-8deg);
  animation:heroOrbitA 19s ease-in-out infinite alternate;
}
.hero-orbit-b{
  width:68vw;
  height:30vw;
  margin-left:-34vw;
  margin-top:-15vw;
  border-color:rgba(82,103,122,.10);
  transform:rotate(12deg);
  animation:heroOrbitB 23s ease-in-out infinite alternate;
}
@keyframes heroOrbitA{
  0%{transform:rotate(-9deg) scale(.98);opacity:.38}
  100%{transform:rotate(-3deg) scale(1.035);opacity:.75}
}
@keyframes heroOrbitB{
  0%{transform:rotate(14deg) scale(1.025);opacity:.28}
  100%{transform:rotate(8deg) scale(.985);opacity:.62}
}

/* Flow lines: the same "finding a path" language used later in the site,
   but quieter, so the Hero feels alive after the logo docks. */
.hero-flow{
  position:absolute;
  inset:-3% -5%;
  width:110%;
  height:106%;
  overflow:visible;
}
.hero-flow path{fill:none;vector-effect:non-scaling-stroke}
.hero-flow-base{
  stroke:rgba(220,227,232,.055);
  stroke-width:1;
}
.hero-flow-base-b{stroke:rgba(82,103,122,.07)}
.hero-flow-live{
  stroke-width:1.15;
  stroke-linecap:round;
  stroke-dasharray:.12 .88;
  stroke-dashoffset:1;
  will-change:stroke-dashoffset,opacity;
}
.hero-flow-live-a{
  stroke:rgba(220,227,232,.55);
  animation:heroFlowA 8.5s cubic-bezier(.45,0,.2,1) infinite;
}
.hero-flow-live-b{
  stroke:rgba(82,103,122,.50);
  stroke-dasharray:.08 .92;
  animation:heroFlowB 11.5s cubic-bezier(.45,0,.2,1) 1.6s infinite;
}
@keyframes heroFlowA{
  0%{stroke-dashoffset:1;opacity:0}
  10%{opacity:.2}
  34%{opacity:.8}
  74%{opacity:.5}
  100%{stroke-dashoffset:0;opacity:0}
}
@keyframes heroFlowB{
  0%{stroke-dashoffset:1;opacity:0}
  14%{opacity:.1}
  42%{opacity:.55}
  76%{opacity:.34}
  100%{stroke-dashoffset:0;opacity:0}
}

/* A very restrained light sweep gives the scene a living material quality. */
.hero-scanline{
  position:absolute;
  left:-30%;
  top:0;
  width:28%;
  height:100%;
  opacity:0;
  background:linear-gradient(90deg,transparent,rgba(220,227,232,.035),transparent);
  transform:skewX(-14deg);
  will-change:transform,opacity;
  animation:heroScan 10s ease-in-out 2.8s infinite;
}
@keyframes heroScan{
  0%,16%{transform:translate3d(0,0,0) skewX(-14deg);opacity:0}
  22%{opacity:.35}
  58%{opacity:.18}
  72%,100%{transform:translate3d(490%,0,0) skewX(-14deg);opacity:0}
}

/* The approved grid becomes gently alive through background-position only. */
.hero.hero-ready .hero-grid{
  animation:heroGridDrift 18s linear infinite;
}
@keyframes heroGridDrift{
  0%{background-position:0 0,0 0}
  100%{background-position:80px 80px,-80px 80px}
}

/* The logo stays authoritative, but gains a barely perceptible spatial breath. */
.hero-logo-wrap{position:relative}
.hero-logo-wrap::after{
  content:"";
  position:absolute;
  inset:18% 9%;
  z-index:-1;
  border-radius:50%;
  background:radial-gradient(ellipse at center,rgba(220,227,232,.12),rgba(82,103,122,.055) 38%,transparent 70%);
  opacity:0;
  transform:scale(.9);
  transition:opacity 1.4s var(--ease) .35s;
  pointer-events:none;
}
.hero.hero-ready .hero-logo-wrap::after{
  opacity:.8;
  animation:heroLogoHalo 6.5s ease-in-out infinite alternate;
}
@keyframes heroLogoHalo{
  0%{transform:scale(.92);opacity:.42}
  100%{transform:scale(1.08);opacity:.82}
}

/* Mobile keeps the same concept but simplifies the scene and lowers intensity. */
@media (max-width:760px){
  .hero-immersive{opacity:0}
  .hero.hero-ready .hero-immersive{opacity:.88}
  .hero-aurora{width:110vw;opacity:.12}
  .hero-aurora-a{left:-48vw;top:8%}
  .hero-aurora-b{right:-52vw;bottom:5%}
  .hero-orbit-a{
    width:155vw;
    height:76vw;
    margin-left:-77.5vw;
    margin-top:-38vw;
    border-color:rgba(220,227,232,.055);
  }
  .hero-orbit-b{display:none}
  .hero-flow{inset:-2% -36%;width:172%;height:104%}
  .hero-flow-live{stroke-width:.9}
  .hero-flow-base{stroke-width:.8}
  .hero-scanline{width:48%;opacity:0}
  .hero.hero-ready .hero-grid{animation-duration:24s}
  .hero-logo-wrap::after{inset:22% 4%}
}

/* Preserve the existing performance contract: pause all Hero motion when the
   Hero is not visible or the tab is hidden. */
.hero.is-offscreen .hero-immersive *,
.hero.is-offscreen .hero-grid,
.hero.is-offscreen .hero-logo-wrap::after,
.page-hidden .hero-immersive *,
.page-hidden .hero-grid,
.page-hidden .hero-logo-wrap::after{
  animation-play-state:paused!important;
}

@media (prefers-reduced-motion:reduce){
  .hero-immersive{opacity:.42!important}
  .hero-aurora,
  .hero-orbit,
  .hero-flow-live,
  .hero-scanline,
  .hero-grid,
  .hero-logo-wrap::after{
    animation:none!important;
  }
  .hero-scanline{display:none!important}
}


/* ========================================================================== */
/* HEURESIS v22 — Hero continuity + mobile composition                        */
/* Only the Hero is changed.                                                  */
/* ========================================================================== */

/* The immersive layer starts while the intro logo is docking, so there is no
   visual "switch" after the logo arrives. */
.hero.hero-awake .hero-immersive,
.hero.hero-ready .hero-immersive{
  opacity:1;
}
.hero.hero-awake .hero-grid,
.hero.hero-ready .hero-grid{
  animation:heroGridDrift 18s linear infinite;
}
.hero.hero-awake .hero-logo-wrap::after,
.hero.hero-ready .hero-logo-wrap::after{
  opacity:.72;
  animation:heroLogoHalo 6.5s ease-in-out infinite alternate;
}

/* During docking, let the atmosphere build slightly more softly than after the
   Hero is fully ready. */
.hero.hero-awake:not(.hero-ready) .hero-immersive{
  opacity:.72;
  transition:opacity .8s cubic-bezier(.22,1,.36,1);
}
.hero.hero-awake:not(.hero-ready) .hero-logo-wrap::after{
  opacity:.42;
}

/* Mobile: exact one-layout-viewport Hero, no physical screen.height extension. */
@media (max-width:760px){
  .hero{
    height:var(--mobile-hero-height, 100svh)!important;
    min-height:var(--mobile-hero-height, 100svh)!important;
    max-height:var(--mobile-hero-height, 100svh)!important;
    background:#050505!important;
  }

  /* Remove the old physical-screen compensation and give the logo/copy a little
     more breathing room without shifting the whole composition aggressively. */
  .hero-content{
    transform:translateY(4px)!important;
  }
  .hero-logo-wrap{
    margin-bottom:38px!important;
    transform:translateY(-4px)!important;
  }

  /* Restore the narrative footer on mobile. */
  .hero-meta{
    display:flex!important;
    left:50%;
    bottom:max(18px, calc(var(--safe-bottom) + 10px));
    transform:translateX(-50%);
    gap:9px;
    width:max-content;
    max-width:calc(100% - 28px);
    color:rgba(255,255,255,.34);
    font-size:9px;
    letter-spacing:.14em;
    white-space:nowrap;
  }
  .hero-meta i{
    width:14px;
    background:rgba(255,255,255,.18);
  }

  /* Mobile should feel as alive as desktop, but still use cheap compositing. */
  .hero.hero-awake .hero-immersive,
  .hero.hero-ready .hero-immersive{
    opacity:1;
  }
  .hero-aurora{
    width:118vw;
    opacity:.17;
  }
  .hero-aurora-a{
    left:-46vw;
    top:4%;
  }
  .hero-aurora-b{
    right:-48vw;
    bottom:-2%;
    opacity:.14;
  }

  .hero-orbit-a{
    width:158vw;
    height:78vw;
    margin-left:-79vw;
    margin-top:-39vw;
    border-color:rgba(220,227,232,.075);
  }
  .hero-orbit-b{
    display:block;
    width:126vw;
    height:54vw;
    margin-left:-63vw;
    margin-top:-27vw;
    border-color:rgba(82,103,122,.10);
  }

  .hero-flow{
    inset:-1% -44%;
    width:188%;
    height:102%;
  }
  .hero-flow-base{
    stroke-width:.95;
    stroke:rgba(220,227,232,.07);
  }
  .hero-flow-base-b{
    stroke:rgba(82,103,122,.09);
  }
  .hero-flow-live{
    stroke-width:1.15;
  }
  .hero-flow-live-a{
    stroke:rgba(220,227,232,.60);
  }
  .hero-flow-live-b{
    stroke:rgba(82,103,122,.58);
  }

  /* Keep the sweep subtle, but visible on mobile too. */
  .hero-scanline{
    display:block;
    width:58%;
    opacity:0;
    animation-duration:11.5s;
    animation-delay:2.2s;
  }

  .hero.hero-awake .hero-grid,
  .hero.hero-ready .hero-grid{
    animation-duration:22s;
  }
  .hero-logo-wrap::after{
    inset:18% 2%;
  }
}

/* Reduced motion keeps the atmosphere, without movement. */
@media (prefers-reduced-motion:reduce){
  .hero.hero-awake .hero-immersive,
  .hero.hero-ready .hero-immersive{
    opacity:.48!important;
  }
}


/* ========================================================================== */
/* HEURESIS v23 — autonomous path + iOS Hero stability + mobile performance   */
/* ========================================================================== */

/* -------------------------------------------------------------------------- */
/* "Troviamo il modo giusto" — autonomous line loop                           */
/* -------------------------------------------------------------------------- */

.possibility-interlude .interlude-shell{
  transform:none!important;
}
.possibility-interlude .interlude-shell h2 span{
  background-position:55% 50%!important;
}
.possibility-interlude .route-progress,
.possibility-interlude .route-branch{
  transition:none!important;
  animation-play-state:paused!important;
}
.possibility-interlude .route-progress{
  stroke-dasharray:1;
  stroke-dashoffset:1;
  opacity:.18;
}
.possibility-interlude .route-branch-a,
.possibility-interlude .route-branch-b{
  stroke-dasharray:1;
  stroke-dashoffset:1;
  opacity:.20;
}
.possibility-interlude.is-route-active .route-progress{
  animation:heuresisRouteMain 7.2s cubic-bezier(.45,0,.20,1) infinite!important;
  animation-play-state:running!important;
}
.possibility-interlude.is-route-active .route-branch-a{
  animation:heuresisRouteBranchA 7.2s cubic-bezier(.45,0,.20,1) .55s infinite!important;
  animation-play-state:running!important;
}
.possibility-interlude.is-route-active .route-branch-b{
  animation:heuresisRouteBranchB 7.2s cubic-bezier(.45,0,.20,1) 1.05s infinite!important;
  animation-play-state:running!important;
}

@keyframes heuresisRouteMain{
  0%,8%{stroke-dashoffset:1;opacity:.16}
  18%{opacity:.48}
  48%{stroke-dashoffset:0;opacity:.90}
  70%{stroke-dashoffset:0;opacity:.66}
  88%,100%{stroke-dashoffset:-1;opacity:0}
}
@keyframes heuresisRouteBranchA{
  0%,12%{stroke-dashoffset:1;opacity:.08}
  32%{opacity:.34}
  56%{stroke-dashoffset:0;opacity:.42}
  76%{stroke-dashoffset:0;opacity:.24}
  92%,100%{stroke-dashoffset:-1;opacity:0}
}
@keyframes heuresisRouteBranchB{
  0%,14%{stroke-dashoffset:1;opacity:.06}
  34%{opacity:.30}
  58%{stroke-dashoffset:0;opacity:.38}
  78%{stroke-dashoffset:0;opacity:.20}
  94%,100%{stroke-dashoffset:-1;opacity:0}
}

/* Pause the loop immediately when it is outside the viewport or the tab is hidden. */
.possibility-interlude:not(.is-route-active) .route-progress,
.possibility-interlude:not(.is-route-active) .route-branch,
.page-hidden .possibility-interlude .route-progress,
.page-hidden .possibility-interlude .route-branch{
  animation-play-state:paused!important;
}

/* -------------------------------------------------------------------------- */
/* Mobile Hero — fill the real viewport and avoid the white section peeking   */
/* -------------------------------------------------------------------------- */

@media (max-width:760px){
  .hero{
    height:var(--mobile-hero-height, 100svh)!important;
    min-height:var(--mobile-hero-height, 100svh)!important;
    max-height:var(--mobile-hero-height, 100svh)!important;
    background:#050505!important;
  }

  /* Touch devices no longer run the global scroll-linked scene interpolation.
     Keep all later scenes at a visually balanced static progress value. */
  .motion-scene{--scene:.52}

  /* Performance: preserve the Hero's depth with fewer continuously animated
     layers. One aurora + one orbit + one route + logo halo are enough. */
  .hero-aurora-b,
  .hero-orbit-b,
  .hero-flow-live-b,
  .hero-scanline{
    display:none!important;
  }
  .hero.hero-awake .hero-grid,
  .hero.hero-ready .hero-grid{
    animation:none!important;
  }
  .hero-aurora-a{
    opacity:.17;
    animation-duration:15s!important;
  }
  .hero-orbit-a{
    opacity:.72;
    animation-duration:25s!important;
  }
  .hero-flow-live-a{
    stroke:rgba(220,227,232,.62);
    stroke-width:1.12;
    animation-duration:10.5s!important;
  }
  .hero-logo-wrap::after{
    animation-duration:8.5s!important;
  }

  /* Release unnecessary compositor hints on mobile outside the Hero. */
  .motion-scene>.section-shell,
  .vision-symbol,
  .product-light,
  .manifesto-track,
  .contact-light,
  .scene-lines::before,
  .scene-lines::after{
    will-change:auto!important;
  }
}

/* Reduced-motion: show the route fully, without a loop. */
@media (prefers-reduced-motion:reduce){
  .possibility-interlude .route-progress,
  .possibility-interlude .route-branch{
    animation:none!important;
    stroke-dashoffset:0!important;
    opacity:.40!important;
  }
}


/* ========================================================================== */
/* HEURESIS v24 — Dicono di noi                                               */
/* ========================================================================== */
.reviews{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(900px 560px at 13% 6%,rgba(82,103,122,.16),transparent 68%),
    radial-gradient(760px 520px at 92% 88%,rgba(220,227,232,.055),transparent 72%),
    #050505;
}
.reviews[hidden]{display:none!important}
.reviews-ambient{
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.72;
  background:
    linear-gradient(112deg,transparent 0 42%,rgba(220,227,232,.035) 42.15%,transparent 42.3% 100%),
    linear-gradient(68deg,transparent 0 69%,rgba(82,103,122,.045) 69.15%,transparent 69.3% 100%);
  -webkit-mask-image:linear-gradient(to bottom,transparent,black 16%,black 84%,transparent);
  mask-image:linear-gradient(to bottom,transparent,black 16%,black 84%,transparent);
}
.reviews-shell{
  position:relative;
  z-index:1;
  padding-top:clamp(98px,10vw,150px);
  padding-bottom:clamp(98px,10vw,150px);
}
.reviews-heading{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:48px;
  margin-bottom:54px;
}
.reviews-heading-copy{max-width:760px}
.reviews-heading .eyebrow{color:rgba(220,227,232,.60)}
.reviews-heading h2{
  margin:17px 0 18px;
  max-width:760px;
  color:#fff;
  font-size:clamp(38px,4.2vw,62px);
  line-height:.98;
  letter-spacing:-.042em;
  font-weight:700;
}
.reviews-heading-copy>p{
  max-width:580px;
  color:rgba(255,255,255,.57);
  font-size:16px;
  line-height:1.65;
}
.reviews-rating{
  display:flex;
  align-items:center;
  gap:15px;
  flex:0 0 auto;
  padding:16px 19px 15px;
  border:1px solid rgba(255,255,255,.11);
  border-radius:20px;
  background:rgba(255,255,255,.055);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 22px 70px rgba(0,0,0,.22);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.reviews-rating>strong{
  color:#fff;
  font-size:31px;
  line-height:1;
  letter-spacing:-.04em;
}
.reviews-stars{
  overflow:hidden;
  width:max-content;
  color:#fff;
  font-size:13px;
  letter-spacing:.13em;
  line-height:1;
}
.reviews-rating p{
  margin:6px 0 0;
  color:rgba(255,255,255,.43);
  font-size:11px;
  letter-spacing:.02em;
}
.reviews-preview-note{
  width:max-content;
  max-width:100%;
  margin:-25px 0 26px;
  padding:8px 11px;
  border:1px solid rgba(220,227,232,.10);
  border-radius:999px;
  color:rgba(220,227,232,.54);
  background:rgba(220,227,232,.035);
  font-size:10px;
  line-height:1.25;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.reviews-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
}
.review-card{
  position:relative;
  display:flex;
  min-height:330px;
  flex-direction:column;
  padding:28px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.105);
  border-radius:25px;
  background:
    linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.026) 58%,rgba(82,103,122,.055)),
    rgba(16,17,18,.80);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055),0 24px 70px rgba(0,0,0,.22);
  transform:translateZ(0);
  transition:transform .5s cubic-bezier(.22,1,.36,1),border-color .5s ease,background .5s ease;
}
.review-card::before{
  content:'“';
  position:absolute;
  right:20px;
  top:10px;
  color:rgba(220,227,232,.055);
  font-size:112px;
  line-height:1;
  font-weight:700;
  pointer-events:none;
}
.review-card::after{
  content:'';
  position:absolute;
  width:180px;
  height:180px;
  right:-95px;
  bottom:-95px;
  border-radius:50%;
  background:rgba(82,103,122,.11);
  filter:blur(30px);
  pointer-events:none;
}
.review-card:hover{
  transform:translateY(-5px);
  border-color:rgba(220,227,232,.19);
  background:
    linear-gradient(145deg,rgba(255,255,255,.09),rgba(255,255,255,.033) 58%,rgba(82,103,122,.07)),
    rgba(16,17,18,.84);
}
.review-card-top{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:20px;
}
.review-card-stars{
  color:#fff;
  font-size:12px;
  line-height:1;
  letter-spacing:.16em;
}
.review-card-source{
  color:rgba(255,255,255,.31);
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.review-card blockquote{
  position:relative;
  z-index:1;
  margin:34px 0 34px;
  color:rgba(255,255,255,.90);
  font-size:18px;
  line-height:1.55;
  letter-spacing:-.012em;
  font-weight:400;
}
.review-card-footer{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:auto;
  padding-top:20px;
  border-top:1px solid rgba(255,255,255,.075);
}
.review-author-mark{
  display:grid;
  width:38px;
  height:38px;
  flex:0 0 38px;
  place-items:center;
  border:1px solid rgba(255,255,255,.10);
  border-radius:50%;
  color:rgba(255,255,255,.84);
  background:linear-gradient(145deg,rgba(82,103,122,.36),rgba(255,255,255,.055));
  font-size:12px;
  font-weight:700;
  letter-spacing:.02em;
}
.review-author-copy{min-width:0}
.review-author-copy strong{
  display:block;
  overflow:hidden;
  color:rgba(255,255,255,.88);
  font-size:13px;
  line-height:1.2;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.review-author-copy span{
  display:block;
  margin-top:5px;
  color:rgba(255,255,255,.34);
  font-size:10px;
  line-height:1.2;
}
.reviews-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-top:30px;
}
.reviews-source{
  display:flex;
  align-items:center;
  gap:9px;
  color:rgba(255,255,255,.34);
  font-size:11px;
}
.reviews-source strong{color:rgba(255,255,255,.62);font-weight:600}
.reviews-disclosure{position:relative}
.reviews-disclosure summary{
  display:grid;
  width:18px;
  height:18px;
  place-items:center;
  border:1px solid rgba(255,255,255,.14);
  border-radius:50%;
  color:rgba(255,255,255,.52);
  cursor:pointer;
  font-size:10px;
  line-height:1;
  list-style:none;
}
.reviews-disclosure summary::-webkit-details-marker{display:none}
.reviews-disclosure p{
  position:absolute;
  left:0;
  bottom:28px;
  z-index:20;
  width:min(350px,calc(100vw - 44px));
  margin:0;
  padding:13px 14px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;
  color:rgba(255,255,255,.64);
  background:rgba(18,20,21,.96);
  box-shadow:0 18px 55px rgba(0,0,0,.32);
  font-size:11px;
  line-height:1.5;
}
.reviews-google-link{flex:0 0 auto}
.reviews.reviews-ready{
  animation:reviewsSectionIn .75s cubic-bezier(.22,1,.36,1) both;
}
@keyframes reviewsSectionIn{
  from{opacity:.01}
  to{opacity:1}
}

@media(max-width:980px){
  .reviews-heading{align-items:flex-start;flex-direction:column;gap:26px}
  .reviews-grid{
    grid-template-columns:repeat(3,minmax(78vw,1fr));
    gap:13px;
    overflow-x:auto;
    margin-right:calc(var(--page-padding) * -1);
    margin-left:calc(var(--page-padding) * -1);
    padding:0 var(--page-padding) 10px;
    scroll-padding-left:var(--page-padding);
    scroll-snap-type:x mandatory;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
  }
  .reviews-grid::-webkit-scrollbar{display:none}
  .review-card{scroll-snap-align:start}
}

@media(max-width:760px){
  .reviews-shell{padding-top:92px;padding-bottom:92px}
  .reviews-heading{margin-bottom:38px}
  .reviews-heading h2{
    margin-top:14px;
    font-size:34px;
    line-height:1.03;
  }
  .reviews-heading-copy>p{font-size:15px}
  .reviews-rating{
    width:100%;
    justify-content:flex-start;
    padding:14px 16px;
    border-radius:17px;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
  .reviews-rating>strong{font-size:27px}
  .reviews-preview-note{margin-top:-18px;font-size:9px;white-space:normal}
  .reviews-grid{grid-template-columns:repeat(3,minmax(84vw,1fr))}
  .review-card{
    min-height:312px;
    padding:24px;
    border-radius:22px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 16px 48px rgba(0,0,0,.18);
  }
  .review-card:hover{transform:none}
  .review-card blockquote{margin:30px 0;font-size:17px;line-height:1.55}
  .review-card::after{display:none}
  .reviews-footer{align-items:flex-start;flex-direction:column;margin-top:22px}
  .reviews-google-link{width:100%;justify-content:center}
  .reviews-disclosure p{left:auto;right:-4px}
}

@media(prefers-reduced-motion:reduce){
  .reviews.reviews-ready{animation:none}
  .review-card{transition:none}
}


/* ========================================================================== */
/* HEURESIS v25 — reviews without reviewer identity                           */
/* ========================================================================== */
.review-card-footer-anonymous{
  justify-content:flex-start;
  min-height:auto;
  padding-top:2px;
}
.review-card-date{
  display:inline-flex;
  align-items:center;
  gap:9px;
  color:rgba(220,227,232,.48);
  font-size:11px;
  line-height:1.2;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.review-card-date::before{
  content:"";
  width:18px;
  height:1px;
  background:rgba(220,227,232,.24);
}


/* ========================================================================== */
/* HEURESIS v27 — reviewer names                                              */
/* ========================================================================== */
.review-card-footer-with-name{
  justify-content:flex-start;
}
.review-card-footer-with-name .review-author-copy{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.review-card-footer-with-name .review-author-copy strong{
  color:rgba(255,255,255,.88);
  font-size:13px;
  font-weight:700;
  letter-spacing:.01em;
}
.review-card-footer-with-name .review-author-copy span{
  color:rgba(220,227,232,.46);
  font-size:10px;
  letter-spacing:.10em;
  text-transform:uppercase;
}


/* ========================================================================== */
/* HEURESIS v28 — reviews background aligned with manifesto section           */
/* ========================================================================== */
.reviews{
  background:#050505 !important;
}

.reviews-ambient{
  opacity:.32 !important;
  background:
    linear-gradient(90deg, transparent 0%, rgba(82,103,122,.08) 22%, rgba(220,227,232,.18) 50%, rgba(82,103,122,.08) 78%, transparent 100%),
    linear-gradient(180deg, transparent 0%, rgba(220,227,232,.03) 46%, transparent 100%) !important;
  -webkit-mask-image:linear-gradient(to bottom, transparent, black 18%, black 82%, transparent) !important;
  mask-image:linear-gradient(to bottom, transparent, black 18%, black 82%, transparent) !important;
}


/* ========================================================================== */
/* HEURESIS v30 — Hero material ribbons experiment                            */
/* Inspired by the user's approved Apple-like abstract curved surfaces.       */
/* Scope: Hero only. Reversible.                                              */
/* ========================================================================== */

/* Replace the previous "line-based" feel with broader, more immersive
   material surfaces. The rest of the Hero remains unchanged. */
.hero{
  /* HEURESIS official palette only:
     #050505 / #FFFFFF / #52677A / #DCE3E8 */
  --hero-ribbon-accent: rgba(220, 227, 232, .82);
  --hero-ribbon-edge: rgba(220, 227, 232, .34);
  --hero-ribbon-fill-a: rgba(82, 103, 122, .34);
  --hero-ribbon-fill-b: rgba(5, 5, 5, .52);
  --hero-ribbon-fill-c: rgba(220, 227, 232, .18);
}

.hero-grid{opacity:.09}
.hero-flow,
.hero-scanline{
  display:none !important;
}
.hero-orbit{
  opacity:0 !important;
}

.hero-ribbons{
  position:absolute;
  inset:-10% -10%;
  z-index:1;
  pointer-events:none;
  opacity:0;
  transition:opacity 1.05s cubic-bezier(.22,1,.36,1) .08s;
}
.hero.hero-awake .hero-ribbons,
.hero.hero-ready .hero-ribbons{
  opacity:1;
}
.hero.hero-awake:not(.hero-ready) .hero-ribbons{
  opacity:.72;
}

.hero-ribbon{
  position:absolute;
  border-radius:999px;
  will-change:transform, opacity;
  border:1px solid var(--hero-ribbon-edge);
  background:
    linear-gradient(145deg,
      rgba(220,227,232,.14) 0%,
      var(--hero-ribbon-fill-c) 16%,
      var(--hero-ribbon-fill-a) 34%,
      rgba(24,26,27,.48) 58%,
      var(--hero-ribbon-fill-b) 100%);
  box-shadow:
    inset 1px 1px 0 rgba(255,255,255,.22),
    inset -14px -18px 50px rgba(5,5,5,.18),
    0 0 0 1px rgba(255,255,255,.035);
  overflow:hidden;
}

.hero-ribbon::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:
    radial-gradient(110% 92% at 78% 22%, rgba(220,227,232,.20), transparent 52%),
    linear-gradient(125deg, rgba(255,255,255,.10), transparent 26%, transparent 72%, rgba(220,227,232,.08));
  opacity:.92;
}

.hero-ribbon::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.05),
    inset 0 0 26px rgba(255,255,255,.05);
  opacity:.65;
}

.hero-ribbon-a{
  width:min(78vw, 1240px);
  height:min(31vw, 480px);
  top:-1%;
  right:-14%;
  transform:rotate(-16deg);
  animation:heroRibbonA 18s ease-in-out infinite alternate;
}
.hero-ribbon-b{
  width:min(94vw, 1340px);
  height:min(37vw, 560px);
  left:-32%;
  top:28%;
  transform:rotate(-24deg);
  background:
    linear-gradient(144deg,
      rgba(220,227,232,.12) 0%,
      rgba(82,103,122,.20) 14%,
      rgba(24,26,27,.42) 42%,
      rgba(5,5,5,.72) 68%,
      rgba(220,227,232,.10) 100%);
  animation:heroRibbonB 21s ease-in-out infinite alternate;
}
.hero-ribbon-c{
  width:min(66vw, 980px);
  height:min(54vw, 860px);
  right:-18%;
  bottom:-26%;
  transform:rotate(18deg);
  background:
    linear-gradient(152deg,
      rgba(220,227,232,.14) 0%,
      rgba(82,103,122,.16) 18%,
      rgba(24,26,27,.46) 48%,
      rgba(5,5,5,.68) 76%,
      rgba(220,227,232,.14) 100%);
  animation:heroRibbonC 23s ease-in-out infinite alternate;
}

@keyframes heroRibbonA{
  0%{transform:translate3d(-1vw,0,0) rotate(-18deg) scale(1.01);opacity:.78}
  52%{transform:translate3d(1.8vw,1.2vh,0) rotate(-13.5deg) scale(1.035);opacity:.92}
  100%{transform:translate3d(4vw,-1vh,0) rotate(-11deg) scale(1.06);opacity:.84}
}
@keyframes heroRibbonB{
  0%{transform:translate3d(-1vw,-1vh,0) rotate(-26deg) scale(.99);opacity:.84}
  50%{transform:translate3d(2vw,1vh,0) rotate(-21deg) scale(1.03);opacity:.96}
  100%{transform:translate3d(5vw,3vh,0) rotate(-18deg) scale(1.05);opacity:.88}
}
@keyframes heroRibbonC{
  0%{transform:translate3d(0,0,0) rotate(16deg) scale(.98);opacity:.74}
  48%{transform:translate3d(-1.8vw,-1vh,0) rotate(19deg) scale(1.03);opacity:.88}
  100%{transform:translate3d(-4vw,-2.6vh,0) rotate(22deg) scale(1.07);opacity:.82}
}

/* Let the Hero keep its dark identity while the new material surfaces
   stay under the logo and copy. */
.hero-aurora{
  opacity:.06;
}
.hero-aurora-b{
  opacity:.045;
}
.hero-glow{
  opacity:.42;
}

/* Mobile: make the material more legible on smaller screens without
   covering the content. */
@media (max-width:760px){
  .hero-ribbons{
    inset:-14% -18% -10% -18%;
  }
  .hero-ribbon-a{
    width:118vw;
    height:48vw;
    top:6%;
    right:-34%;
  }
  .hero-ribbon-b{
    width:136vw;
    height:58vw;
    left:-56%;
    top:31%;
  }
  .hero-ribbon-c{
    width:104vw;
    height:92vw;
    right:-44%;
    bottom:-18%;
  }
  .hero-ribbon{
    border-color:rgba(220,227,232,.30);
    box-shadow:
      inset 1px 1px 0 rgba(255,255,255,.18),
      inset -10px -14px 34px rgba(5,5,5,.14),
      0 0 0 1px rgba(255,255,255,.03);
  }
  .hero-glow{opacity:.28}
  .hero-grid{opacity:.06}
}

/* Reduced motion: keep the look, freeze the movement. */
@media (prefers-reduced-motion:reduce){
  .hero-ribbon,
  .hero-ribbon-a,
  .hero-ribbon-b,
  .hero-ribbon-c{
    animation:none !important;
  }
  .hero-ribbons{opacity:.82 !important}
}


/* ========================================================================== */
/* HEURESIS v32 — Hero reveal + mobile safe-area + consent timing             */
/* Scope: Hero/mobile presentation only.                                      */
/* ========================================================================== */

/* Text and CTAs now enter as one continuous, staged movement after the logo
   docks instead of switching on abruptly. */
.hero-content h1,
.hero-copy,
.hero-actions,
.hero-meta-mobile{
  opacity:0;
  transform:translate3d(0,14px,0);
  transition:
    opacity .92s cubic-bezier(.22,1,.36,1),
    transform 1.02s cubic-bezier(.22,1,.36,1);
}

/* Meta/discovery keep their approved positioning transforms; only opacity is
   animated so desktop geometry cannot be altered. */
.hero-meta,
.scroll-cue{
  opacity:0;
  transition:opacity .92s cubic-bezier(.22,1,.36,1);
}

.hero.hero-ready .hero-content h1{
  opacity:1;
  transform:translate3d(0,0,0);
  transition-delay:.06s;
}
.hero.hero-ready .hero-copy{
  opacity:1;
  transform:translate3d(0,0,0);
  transition-delay:.16s;
}
.hero.hero-ready .hero-actions{
  opacity:1;
  transform:translate3d(0,0,0);
  transition-delay:.27s;
}
.hero.hero-ready .hero-meta-mobile{
  opacity:1;
  transform:translate3d(0,0,0);
  transition-delay:.38s;
}
.hero.hero-ready .hero-meta{
  opacity:1;
  transition-delay:.38s;
}
.hero.hero-ready .scroll-cue{
  opacity:1;
  transition-delay:.42s;
}

/* Desktop uses the original footer meta. */
.hero-meta-mobile{display:none}

/* Mobile only. */
@media (max-width:760px){
  /* The page paint starts at the very top of the iPhone viewport. Content
     remains protected by the existing safe-area padding on Hero/header. */
  html,
  body{
    background:#050505 !important;
    min-height:100%;
  }
  body{
    padding-top:0 !important;
  }
  main#top{
    background:#050505;
    margin-top:0;
  }
  .hero{
    margin-top:0 !important;
    background-color:#050505 !important;
  }

  /* Keep the desktop/bottom meta out of mobile and place the mobile version
     directly after the single visible CTA. */
  .hero > .hero-meta{
    display:none !important;
  }
  .hero-meta-mobile{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:9px;
    width:max-content;
    max-width:100%;
    margin:22px auto 0;
    color:rgba(255,255,255,.42);
    font-size:9px;
    line-height:1;
    letter-spacing:.14em;
    text-transform:uppercase;
    white-space:nowrap;
  }
  .hero-meta-mobile i{
    display:block;
    width:14px;
    height:1px;
    flex:0 0 auto;
    background:rgba(255,255,255,.22);
  }

  /* Mobile Hero elements keep the same composition: only the entrance gets
     smoother. The logo position and approved spacing are untouched. */
  .hero-content h1,
  .hero-copy,
  .hero-actions,
  .hero-meta-mobile{
    transform:translate3d(0,11px,0);
  }
}

/* Keep reduced-motion users free from staged movement. */
@media (prefers-reduced-motion:reduce){
  .hero-content h1,
  .hero-copy,
  .hero-actions,
  .hero-meta-mobile{
    transition:none !important;
    transform:none !important;
  }
  .hero-meta,
  .scroll-cue{
    transition:none !important;
  }
}


/* ========================================================================== */
/* HEURESIS v36 — mobile zoom disabled                                        */
/* Based strictly on v34.                                                     */
/* ========================================================================== */
@media (max-width:760px){
  html,
  body{
    touch-action:pan-x pan-y;
  }
}


/* ========================================================================== */
/* HEURESIS v37 — mobile preloader slogan                                     */
/* ========================================================================== */

/* Desktop keeps the existing single-line visual. */
.preloader p span{
  display:inline;
}
.preloader p span + span::before{
  content:" ";
}

@media (max-width:760px){
  /* Give the copy enough horizontal room while leaving the logo untouched. */
  .preloader-inner{
    width:min(700px,92vw);
  }

  /* On phones a forced single line would make the slogan unnecessarily tiny.
     Keep it readable and intentional: one sentence per line. */
  .preloader p{
    width:100%;
    margin:24px auto 20px;
    font-size:11px;
    line-height:1.55;
    letter-spacing:.11em;
    white-space:normal;
  }
  .preloader p span{
    display:block;
    white-space:nowrap;
  }
  .preloader p span + span::before{
    content:none;
  }
}


/* ========================================================================== */
/* HEURESIS v40 FINAL — footer social profiles                                */
/* ========================================================================== */
.footer-socials{
  display:flex;
  align-items:center;
  gap:9px;
  margin-top:22px;
}
.footer-socials a{
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.10);
  border-radius:999px;
  background:rgba(255,255,255,.025);
  color:rgba(255,255,255,.52);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  transition:
    color .24s ease,
    border-color .24s ease,
    background .24s ease,
    transform .24s cubic-bezier(.22,1,.36,1);
}
.footer-socials a:hover{
  color:#fff;
  border-color:rgba(255,255,255,.24);
  background:rgba(255,255,255,.065);
  transform:translateY(-2px);
}
.footer-socials a:focus-visible{
  outline:2px solid rgba(220,227,232,.72);
  outline-offset:3px;
}
.footer-socials svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.65;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.footer-socials svg .social-dot{
  fill:currentColor;
  stroke:none;
}
.footer-socials svg .social-play{
  fill:currentColor;
  stroke:none;
}
.footer-social-google{
  display:block;
  font-size:15px;
  line-height:1;
  font-weight:700;
  letter-spacing:-.04em;
}
@media (max-width:760px){
  .footer-socials{
    margin-top:19px;
  }
  .footer-socials a{
    width:38px;
    height:38px;
  }
}
