/* ============================================================
   SPARTISAN — Investment & Franchise landing
   Palette, fonts and structure follow the client's prototype.
   ============================================================ */

@font-face{
  font-family:'Big Shoulders Display';
  src:url('../vendor/fonts/big-shoulders-display-latin.woff2') format('woff2');
  font-weight:100 900;
  font-display:swap;
}
@font-face{
  font-family:'Manrope';
  src:url('../vendor/fonts/manrope-latin.woff2') format('woff2');
  font-weight:200 800;
  font-display:swap;
}

:root{
  --bg:#08070a;
  --bg-soft:#0f0c13;
  --panel:#16121b;
  --panel-2:#1c1723;
  --line:#2a2432;
  --line-soft:#221c2b;
  --text:#f3f0ec;
  --muted:#9b93a3;
  --heat:#ff7a45;
  --pink:#ff4f8b;
  --violet:#9b5cf6;
  --teal:#2fd9c8;
  --grad:linear-gradient(92deg, var(--heat) 0%, var(--pink) 33%, var(--violet) 66%, var(--teal) 100%);
  --radius:18px;
  --section-pad:clamp(90px, 12vw, 150px);
  --ease-out:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }

body{
  background:var(--bg);
  color:var(--text);
  font-family:'Manrope', sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3,.display{
  font-family:'Big Shoulders Display', sans-serif;
  text-transform:uppercase;
  letter-spacing:0.01em;
  line-height:0.92;
  font-weight:800;
}

.grad-text{
  background:var(--grad);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
button{font:inherit; color:inherit; background:none; border:none; cursor:pointer;}

.wrap{
  max-width:1240px;
  margin:0 auto;
  padding:0 clamp(20px, 4vw, 48px);
}

/* film grain over everything, very quiet */
.grain{
  position:fixed; inset:-100%;
  z-index:200;
  pointer-events:none;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 9s steps(6) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0);}
  20%{transform:translate(-4%,3%);}
  40%{transform:translate(3%,-4%);}
  60%{transform:translate(-3%,-2%);}
  80%{transform:translate(4%,2%);}
}
@media (prefers-reduced-motion: reduce){ .grain{animation:none;} }

.eyebrow{
  font-size:12px;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--muted);
  font-weight:700;
  display:flex;
  align-items:center;
  gap:12px;
}
.eyebrow::before{
  content:'';
  width:24px; height:1px;
  background:var(--grad);
  flex:none;
}

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:15px 28px;
  border-radius:100px;
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  border:none;
  transition:box-shadow .3s var(--ease-out), background .3s var(--ease-out), border-color .3s var(--ease-out), color .3s var(--ease-out);
  will-change:transform;
}
.btn-primary{
  background:#f3f0ec;
  color:#0a0a0a;
  position:relative;
  overflow:hidden;
}
.btn-primary:hover{box-shadow:0 12px 40px rgba(255,255,255,.12);}
.btn-ghost{
  background:rgba(255,255,255,.02);
  border:1px solid var(--line);
  color:var(--text);
}
.btn-ghost:hover{border-color:#5c5568; background:rgba(255,255,255,.05);}

/* ============ NAV ============ */
.nav{
  position:sticky; top:0; z-index:100;
  border-bottom:1px solid transparent;
  transition:border-color .4s ease;
}
.nav::before{
  content:'';
  position:absolute; inset:0;
  background:rgba(8,7,10,.72);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  opacity:0;
  transition:opacity .4s ease;
}
.nav.is-scrolled{border-bottom-color:var(--line-soft);}
.nav.is-scrolled::before{opacity:1;}
.nav__inner{
  position:relative;
  display:flex; align-items:center; justify-content:space-between;
  height:78px;
  gap:24px;
}
.logo{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900;
  font-size:23px;
  letter-spacing:0.04em;
}
.navlinks{
  display:flex; gap:clamp(20px, 3vw, 36px);
  font-size:13.5px; font-weight:600;
  color:var(--muted);
}
.navlinks a{position:relative; padding:6px 0; transition:color .25s ease;}
.navlinks a::after{
  content:'';
  position:absolute; left:0; bottom:0;
  width:100%; height:1px;
  background:var(--grad);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .35s var(--ease-out);
}
.navlinks a:hover{color:var(--text);}
.navlinks a:hover::after,
.navlinks a.is-active::after{transform:scaleX(1); transform-origin:left;}
.navlinks a.is-active{color:var(--text);}

.burger{
  display:none;
  position:relative;
  width:44px; height:44px;
  z-index:120;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
}
.burger span{
  display:block;
  width:22px; height:2px;
  background:var(--text);
  border-radius:2px;
  transition:transform .35s var(--ease-out), opacity .25s ease;
}
.burger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.burger.is-open span:nth-child(2){opacity:0;}
.burger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

@media(max-width:920px){
  .navlinks, .nav__cta{display:none;}
  .burger{display:flex;}
}

/* mobile menu */
.mobile-menu{
  position:fixed; inset:0;
  z-index:110;
  background:rgba(8,7,10,.96);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  padding:0 clamp(28px, 8vw, 60px);
  gap:40px;
  visibility:hidden;
  opacity:0;
}
.mobile-menu__links{display:flex; flex-direction:column; gap:6px;}
.mobile-menu__links a{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:800;
  text-transform:uppercase;
  font-size:clamp(38px, 9vw, 56px);
  line-height:1.05;
  color:var(--text);
}
.mobile-menu__links a:active{color:var(--pink);}

/* ============ HERO ============ */
.hero{
  position:relative;
  padding:clamp(90px, 12vh, 140px) 0 100px;
  overflow:hidden;
  min-height:92vh;
  display:flex;
  align-items:center;
}
.hero__photo{
  position:absolute; inset:0;
  background-image:
    linear-gradient(180deg, rgba(8,7,10,.5) 0%, rgba(8,7,10,.9) 76%, var(--bg) 100%),
    url('../assets/img/hero-2400.webp');
  background-size:cover;
  background-position:center 30%;
  opacity:.55;
  will-change:transform;
  transform:scale(1.06);
}
@media(max-width:700px){
  .hero__photo{
    background-image:
      linear-gradient(180deg, rgba(8,7,10,.5) 0%, rgba(8,7,10,.9) 76%, var(--bg) 100%),
      url('../assets/img/hero-1600.webp');
  }
}
.hero__glow{
  position:absolute; inset:-20% -10% auto -10%;
  height:720px;
  background:
    radial-gradient(ellipse at 30% 20%, rgba(255,122,69,.15), transparent 60%),
    radial-gradient(ellipse at 75% 10%, rgba(47,217,200,.12), transparent 55%);
  filter:blur(12px);
  pointer-events:none;
  will-change:transform;
}
.hero__grid{
  position:relative;
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:clamp(40px, 5vw, 72px);
  align-items:center;
  width:100%;
}
.hero__title{
  font-size:clamp(46px, 6.6vw, 92px);
  margin:20px 0 24px;
}
.lead{
  font-size:clamp(16px, 1.5vw, 18px);
  color:var(--muted);
  max-width:540px;
  margin-bottom:36px;
}
.hero__cta{display:flex; gap:14px; flex-wrap:wrap;}

.stat-row{
  display:flex; gap:clamp(28px, 4vw, 48px);
  margin-top:clamp(40px, 6vh, 60px);
  flex-wrap:wrap;
}
.stat{
  position:relative;
  padding-left:18px;
}
.stat::before{
  content:'';
  position:absolute; left:0; top:4px; bottom:4px;
  width:1px;
  background:linear-gradient(180deg, var(--line), transparent);
}
.stat__num{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900;
  font-size:clamp(30px, 3vw, 38px);
}
.stat__label{
  font-size:12.5px; color:var(--muted); max-width:150px; margin-top:4px;
}

/* ---- 5D widget ---- */
.fivewd{
  position:relative;
  aspect-ratio:1/1.05;
  border-radius:28px;
  background:
    radial-gradient(circle at 50% 45%, rgba(255,255,255,.03), transparent 60%),
    linear-gradient(180deg, #120f16, #0a080d);
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  will-change:transform;
}
.fivewd::before{
  content:'';
  position:absolute; inset:0;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px, transparent 1px);
  background-size:16px 16px;
  opacity:.35;
}
.orb{
  position:absolute;
  width:220px; height:220px;
  border-radius:50%;
  filter:blur(36px);
  opacity:.5;
  will-change:transform, opacity;
}
.orb--heat{background:var(--heat); top:10%; left:8%;}
.orb--cold{background:var(--teal); bottom:8%; left:14%;}
.orb--light{background:var(--violet); top:6%; right:10%;}
.orb--sound{background:var(--pink); bottom:16%; right:8%;}
.orb--aroma{background:#8ef0a0; top:40%; left:40%;}
.orb--effects{background:#ffe08a; bottom:38%; right:36%;}

.ring{
  position:relative; z-index:2;
  width:78%; aspect-ratio:1/1;
  border-radius:50%;
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
}
.ring__spin{
  position:absolute; inset:10%;
  border-radius:50%;
  border:1px dashed #322c3c;
  animation:ringspin 90s linear infinite;
}
@keyframes ringspin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion: reduce){ .ring__spin{animation:none;} }
.ring__inner{
  width:66%;
  aspect-ratio:1/1;
  border-radius:50%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center;
  gap:8px;
  background:radial-gradient(circle, rgba(8,7,10,.72) 0%, rgba(8,7,10,.5) 55%, transparent 72%);
}
.ring__state{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900; font-size:16px; letter-spacing:.08em;
  text-transform:uppercase;
}
.ring__state.is-broken{
  background:linear-gradient(92deg, var(--heat), var(--pink));
  -webkit-background-clip:text; background-clip:text;
}
.ring__state.is-flat{
  background:none; color:var(--muted);
}
.ring__caption{font-size:12px; color:#c9c2d1; padding:0 24px; line-height:1.5; text-shadow:0 1px 10px rgba(8,7,10,.9);}

.node{
  position:absolute;
  width:64px; height:64px;
  border-radius:50%;
  background:var(--panel);
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  font-size:20px;
  z-index:3;
  user-select:none;
  -webkit-tap-highlight-color:transparent;
  transition:border-color .3s ease, background .3s ease, box-shadow .45s ease;
  will-change:transform;
}
.node.is-active{
  border-color:#544c62;
  background:var(--panel-2);
  box-shadow:0 0 28px -8px var(--node-glow, rgba(255,255,255,.25));
}
.node--n1{--node-glow:var(--heat);}
.node--n2{--node-glow:var(--teal);}
.node--n3{--node-glow:var(--violet);}
.node--n4{--node-glow:var(--pink);}
.node--n5{--node-glow:#8ef0a0;}
.node--n6{--node-glow:#ffe08a;}
.node__glyph{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900; font-size:19px;
  opacity:.3;
  transition:opacity .3s ease;
}
.node.is-active .node__glyph{
  opacity:1;
  background:var(--grad);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.node small{
  position:absolute; bottom:-24px;
  font-family:'Manrope', sans-serif;
  font-size:10px; font-weight:700; letter-spacing:.08em; color:#d5cede;
  text-transform:uppercase; white-space:nowrap;
  text-shadow:0 1px 8px rgba(8,7,10,.95), 0 0 3px rgba(8,7,10,.9);
}
.node--n1{top:2%; left:14%;}
.node--n2{top:2%; right:14%;}
.node--n3{top:44%; left:-4%;}
.node--n4{top:44%; right:-4%;}
.node--n5{bottom:2%; left:14%;}
.node--n6{bottom:2%; right:14%;}

/* ============ SECTION SHELLS ============ */
section{padding:var(--section-pad) 0; position:relative;}
.dark{background:var(--bg);}
.soft{background:var(--bg-soft);}
.soft::before, .soft::after{
  content:'';
  position:absolute; left:0; right:0; height:1px;
  background:linear-gradient(90deg, transparent, var(--line-soft) 20%, var(--line-soft) 80%, transparent);
}
.soft::before{top:0;}
.soft::after{bottom:0;}

.section-head{
  max-width:660px;
  margin-bottom:clamp(44px, 6vw, 72px);
}
.section-head--wide{max-width:780px;}
.section-head h2{
  font-size:clamp(34px, 4.6vw, 56px);
  margin-top:16px;
}
.section-head p{color:var(--muted); margin-top:18px; font-size:16px;}
.section-head__lead{font-size:17px !important; color:#b6aec0 !important;}

.aside{
  color:var(--muted);
  font-size:14.5px;
  margin-top:34px;
  max-width:580px;
}
.aside strong{color:var(--text); font-weight:700;}
.aside--muted{max-width:640px;}

/* ============ PHOTO FIGURES ============ */
.photo{
  position:relative;
  border-radius:var(--radius);
  overflow:hidden;
  margin-bottom:clamp(36px, 5vw, 56px);
  border:1px solid var(--line-soft);
  background:var(--panel);
  aspect-ratio:16/9;
}
.photo img{
  width:100%; height:118%;
  object-fit:cover;
  will-change:transform;
}
.photo::after{
  content:'';
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(8,7,10,.08), transparent 30%, transparent 75%, rgba(8,7,10,.35));
  pointer-events:none;
}

/* ============ PROBLEM / GENERIC GRID CARDS ============ */
.prob-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1px;
  background:var(--line);
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
}
.prob-grid--4{grid-template-columns:repeat(4,1fr);}
.prob-grid--3{grid-template-columns:repeat(3,1fr);}
.prob-card{
  background:var(--panel);
  padding:32px 28px;
  position:relative;
  transition:background .35s ease;
}
.prob-card:hover{background:var(--panel-2);}
.prob-card__num{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900;
  font-size:30px; color:#4a4356;
}
.prob-card > p{margin-top:14px; font-size:15px; font-weight:600;}
.prob-card__title{
  font-weight:800; font-size:15.5px;
  display:flex; align-items:center; gap:10px;
  margin-top:0 !important;
}
.prob-card__desc{
  font-weight:400 !important; color:var(--muted); font-size:14px;
  margin-top:10px !important;
}
.prob-card--accent{
  background:linear-gradient(160deg, var(--panel-2), var(--panel));
}
.prob-card--accent::before{
  content:'';
  position:absolute; inset:0;
  border-radius:inherit;
  padding:1px;
  background:var(--grad);
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  opacity:.5;
  pointer-events:none;
}
.sys-dot{
  width:8px; height:8px; border-radius:50%;
  display:inline-block; flex:none;
}
.sys-dot--heat{background:var(--heat); box-shadow:0 0 10px var(--heat);}
.sys-dot--cold{background:var(--teal); box-shadow:0 0 10px var(--teal);}
.sys-dot--light{background:var(--violet); box-shadow:0 0 10px var(--violet);}
.sys-dot--sound{background:var(--pink); box-shadow:0 0 10px var(--pink);}
.sys-dot--aroma{background:#8ef0a0; box-shadow:0 0 10px #8ef0a0;}
.sys-dot--effects{background:#ffe08a; box-shadow:0 0 10px #ffe08a;}
.sys-grid .prob-card{will-change:transform;}

@media(max-width:1080px){ .prob-grid--4{grid-template-columns:repeat(2,1fr);} }
@media(max-width:760px){ .prob-grid, .prob-grid--3{grid-template-columns:1fr;} }
@media(max-width:600px){ .prob-grid--4{grid-template-columns:1fr;} }

/* ============ TIMELINE ============ */
.timeline{
  position:relative;
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:20px;
  margin-top:10px;
}
.tl-item{
  position:relative;
  padding-top:36px;
}
.tl-item::before{
  content:'';
  position:absolute; top:0; left:0; right:0;
  height:2px;
  background:var(--line);
}
.tl-item::after{
  content:'';
  position:absolute; top:0; left:0;
  width:100%;
  height:2px;
  background:var(--grad);
  transform:scaleX(var(--tl-progress, 0));
  transform-origin:left;
}
.tl-dot{
  position:absolute; top:-6px; left:0;
  width:12px; height:12px; border-radius:50%;
  background:var(--grad);
  opacity:var(--tl-dot, .25);
  box-shadow:0 0 14px rgba(255,79,139, calc(var(--tl-dot, .25) * .8));
}
.tl-time{font-size:12px; color:var(--muted); font-weight:700; letter-spacing:.06em;}
.tl-title{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:800; font-size:22px; margin:10px 0 8px; text-transform:uppercase;
}
.tl-desc{font-size:14px; color:var(--muted);}
@media(max-width:920px){
  .timeline{grid-template-columns:1fr; gap:0;}
  .tl-item{padding:0 0 36px 28px; margin-left:6px;}
  .tl-item::before{top:0; bottom:0; left:0; right:auto; width:2px; height:auto;}
  .tl-item::after{width:2px; height:100%; transform:scaleY(var(--tl-progress,0)); transform-origin:top;}
  .tl-dot{top:0; left:-5px;}
}

/* ============ WAVEFORM ============ */
.wave-box{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:30px 20px;
  margin-bottom:26px;
}
.wave-svg{width:100%; height:110px; display:block;}

/* ============ DIRECTIONS ============ */
.dir-grid{
  display:grid; grid-template-columns:repeat(5,1fr); gap:16px;
}
.dir-card{
  --dir-color:var(--muted);
  background:var(--panel-2);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:26px 20px;
  display:flex; flex-direction:column; gap:12px;
  transition:border-color .3s ease, box-shadow .4s ease;
  position:relative;
  overflow:hidden;
  will-change:transform;
}
.dir-card::before{
  content:'';
  position:absolute; top:0; left:0; right:0;
  height:2px;
  background:var(--dir-color);
  opacity:.7;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .45s var(--ease-out);
}
.dir-card:hover{border-color:#544c62; box-shadow:0 18px 40px -20px rgba(0,0,0,.8);}
.dir-card:hover::before{transform:scaleX(1);}
.dir-card--heat{--dir-color:var(--heat);}
.dir-card--pink{--dir-color:var(--pink);}
.dir-card--violet{--dir-color:var(--violet);}
.dir-card--teal{--dir-color:var(--teal);}
.dir-card--plain{--dir-color:#8ef0a0;}
.dir-card h3{font-size:17px; text-transform:none; font-family:'Manrope',sans-serif; font-weight:800;}
.dir-card p{font-size:13px; color:var(--muted);}
@media(max-width:1080px){ .dir-grid{grid-template-columns:repeat(2,1fr);} .dir-card--plain{grid-column:span 2;} }
@media(max-width:560px){ .dir-grid{grid-template-columns:1fr;} .dir-card--plain{grid-column:auto;} }

/* ============ PROOF ============ */
.proof-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px;
}
.proof-grid--tight{margin-bottom:48px;}
.proof-card{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:36px;
  will-change:transform;
  transition:border-color .3s ease;
}
.proof-card:hover{border-color:#3a3346;}
.proof-card__big{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900; font-size:clamp(42px, 4.5vw, 56px);
}
.proof-card__lbl{color:var(--muted); font-size:14px; margin-top:12px;}
.proof-card__k{font-weight:800; font-size:15px;}
.proof-card__body{color:var(--muted); font-size:14px; margin-top:12px; line-height:1.65;}
@media(max-width:760px){ .proof-grid{grid-template-columns:1fr;} }

/* ============ ECONOMICS ============ */
.econ-wrap{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px, 4vw, 48px);
  align-items:start;
}
@media(max-width:860px){ .econ-wrap{grid-template-columns:1fr;} }
.econ-title{font-weight:800; margin-bottom:16px; font-size:15px;}
.econ-list{display:flex; flex-direction:column;}
.econ-list--main{max-width:680px;}
.econ-row{
  display:flex; justify-content:space-between; align-items:baseline;
  gap:20px;
  padding:22px 0;
  position:relative;
}
.econ-row::after{
  content:'';
  position:absolute; left:0; right:0; bottom:0;
  height:1px;
  background:var(--line);
  transform:scaleX(var(--row-line, 1));
  transform-origin:left;
}
.econ-row--last::after{display:none;}
.econ-row__k{color:var(--muted); font-size:14px;}
.econ-row__v{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:800; font-size:26px;
  text-transform:uppercase;
  text-align:right;
  flex:none;
}
.econ-row__v--sm{font-size:20px;}
.econ-row__v--xs{font-size:16px;}
.econ-row__v--note{
  font-family:'Manrope', sans-serif;
  font-size:14px; font-weight:600; color:var(--muted);
  text-transform:none;
}

/* ============ THESIS ============ */
.thesis-grid{
  display:grid; grid-template-columns:repeat(5,1fr); gap:18px;
}
.thesis-card{
  background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:28px 22px;
  will-change:transform;
  transition:border-color .3s ease;
}
.thesis-card:hover{border-color:#3a3346;}
.thesis-card__num{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:900; font-size:36px;
  color:transparent;
  -webkit-text-stroke:1px #4a4356;
}
.thesis-card h3{font-size:15.5px; text-transform:none; font-family:'Manrope',sans-serif; margin:16px 0 10px; font-weight:800;}
.thesis-card p{font-size:13.5px; color:var(--muted);}
@media(max-width:980px){ .thesis-grid{grid-template-columns:repeat(2,1fr);} }
@media(max-width:560px){ .thesis-grid{grid-template-columns:1fr;} }

/* ============ COOPERATION ============ */
.coop-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:18px;
}
.coop-card{
  background:var(--panel-2);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:34px 28px;
  display:flex; flex-direction:column; gap:16px;
  transition:border-color .3s ease, box-shadow .45s ease;
  will-change:transform;
}
.coop-card:hover{
  border-color:#544c62;
  box-shadow:0 24px 50px -24px rgba(0,0,0,.85);
}
.coop-card__icon{
  width:46px; height:46px; border-radius:13px;
  background:var(--grad);
  display:flex; align-items:center; justify-content:center;
  font-size:20px;
}
.coop-card h3{font-size:19px; text-transform:none; font-family:'Manrope',sans-serif; font-weight:800;}
.coop-card p{font-size:14px; color:var(--muted); flex:1;}
.coop-card__link{
  font-size:13px; font-weight:700;
  display:flex; align-items:center; gap:6px;
  transition:gap .25s var(--ease-out);
}
.coop-card:hover .coop-card__link{gap:11px;}
@media(max-width:1080px){ .coop-grid{grid-template-columns:repeat(2,1fr);} }
@media(max-width:600px){ .coop-grid{grid-template-columns:1fr;} }

/* ============ CTA ============ */
.cta-band{
  position:relative;
  background:var(--panel);
  border:1px solid var(--line-soft);
  border-radius:28px;
  padding:clamp(48px, 7vw, 80px) clamp(28px, 5vw, 64px);
  display:flex; justify-content:space-between; align-items:center; gap:36px;
  flex-wrap:wrap;
  overflow:hidden;
}
.cta-band__photo{
  position:absolute; inset:0;
  background-image:
    linear-gradient(100deg, rgba(8,7,10,.92) 30%, rgba(8,7,10,.55) 100%),
    url('../assets/img/cta-1600.webp');
  background-size:cover;
  background-position:center 72%;
  opacity:.85;
}
.cta-band__copy{position:relative;}
.cta-band .btn{position:relative;}
.cta-band h2{font-size:clamp(32px, 4.4vw, 52px); margin-top:16px;}

/* ============ FOOTER ============ */
.footer{padding-top:80px; padding-bottom:44px; border-top:1px solid var(--line-soft); margin-top:40px;}
.footer__grid{display:flex; justify-content:space-between; flex-wrap:wrap; gap:32px; margin-bottom:56px;}
.footer__lbl{color:var(--muted); font-size:11.5px; text-transform:uppercase; letter-spacing:.1em; margin-bottom:8px;}
.footer__val{font-weight:700; font-size:16px; transition:color .25s ease;}
a.footer__val:hover{color:var(--pink);}
.footer__bottom{display:flex; justify-content:space-between; color:var(--muted); font-size:13px; flex-wrap:wrap; gap:10px;}

/* ============ HERO / GRID RESPONSIVE ============ */
@media(max-width:920px){
  .hero{min-height:auto;}
  .hero__grid{grid-template-columns:1fr;}
  .fivewd{max-width:440px; margin:16px auto 0;}
}
@media(max-width:560px){
  .node{width:52px; height:52px;}
  .node__glyph{font-size:16px;}
  .node small{font-size:9px; bottom:-20px;}
  .ring__inner{width:58%;}
  .ring__state{font-size:13px;}
  .ring__caption{font-size:10.5px; padding:0 12px;}
  .orb{width:160px; height:160px;}
}

/* ============ REVEAL PRE-STATES (JS removes) ============ */
.js [data-reveal], .js [data-reveal-batch] > *{opacity:0;}
.js [data-split] .split-line{
  display:block;
  overflow:hidden;
}
.js [data-split] .split-line > span{
  display:block;
  transform:translateY(110%);
}
/* if JS died for any reason, never leave a blank page */
.no-js [data-reveal], .no-js [data-reveal-batch] > *{opacity:1 !important;}

@media (prefers-reduced-motion: reduce){
  .js [data-reveal], .js [data-reveal-batch] > *{opacity:1;}
  .js [data-split] .split-line > span{transform:none;}
}
