:root{
  --bg: #F8F5EF;
  --bg-rgb: 248 245 239;
  --card: #FFFDF9;
  --ink: #1B1A17;
  --sub: #4A4740;
  --sub-light: #6E6A60;
  --line: #DED4BE;

  --cobalt: #B5502F;
  --cobalt-deep: #8F3E22;
  --cobalt-tint: #F1E1D2;
  --moss: #3F4B3B;
  --moss-deep: #2C352A;
  --moss-tint: #E4E8E0;
  --error: #B3261E;

  --radius-lg: 16px;
  --radius-md: 10px;
  --radius-sm: 8px;

  --btn-bg: #1B1A17;
  --btn-bg-hover: #2C352A;
  --btn-ink: #fff;
  --sand: rgb(231 223 207 / 0.35);

  color-scheme: light;
}

html[data-theme="dark"]{
  --bg: #191815;
  --bg-rgb: 25 24 21;
  --card: #211F1B;
  --ink: #F2EFE8;
  --sub: #C9C4B8;
  --sub-light: #9C978A;
  --line: #3A362E;

  --cobalt: #E08356;
  --cobalt-deep: #F0A87D;
  --cobalt-tint: #3A2A20;
  --moss: #8FA687;
  --moss-deep: #B9CCB2;
  --moss-tint: #26302380;

  --btn-bg: #F2EFE8;
  --btn-bg-hover: #B9CCB2;
  --btn-ink: #191815;
  --sand: #131210;

  color-scheme: dark;
}

@media (prefers-color-scheme: dark){
  html:not([data-theme="light"]){
    --bg: #191815;
    --bg-rgb: 25 24 21;
    --card: #211F1B;
    --ink: #F2EFE8;
    --sub: #C9C4B8;
    --sub-light: #9C978A;
    --line: #3A362E;

    --cobalt: #E08356;
    --cobalt-deep: #F0A87D;
    --cobalt-tint: #3A2A20;
    --moss: #8FA687;
    --moss-deep: #B9CCB2;
    --moss-tint: #26302380;

    --btn-bg: #F2EFE8;
    --btn-bg-hover: #B9CCB2;
    --btn-ink: #191815;
    --sand: #131210;

    color-scheme: dark;
  }
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Public Sans',-apple-system,sans-serif;
  font-weight:300;
  font-size:18px;
  line-height:1.6;
}
h1,h2,h3,h4{
  font-family:'Newsreader',Georgia,serif;
  font-weight:500;
  letter-spacing:-0.01em;
  margin:0;
  text-wrap:balance;
}
p{margin:0;}
a{color:inherit;}
img{max-width:100%;display:block;}
.wrap{max-width:1160px;margin:0 auto;padding:0 32px;}
em{color:var(--moss);font-style:italic;}

/* ---------- Brand ---------- */
.brand{display:flex;align-items:center;text-decoration:none;}
.brand img{height:30px;width:auto;display:block;}
html[data-theme="dark"] .brand img{filter:invert(1);}
@media (prefers-color-scheme: dark){
  html:not([data-theme="light"]) .brand img{filter:invert(1);}
}

/* ---------- Header ---------- */
.site-header{
  position:absolute;top:0;left:0;right:0;z-index:30;
  background:transparent;
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
}
.header-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:22px 32px;max-width:1160px;margin:0 auto;
}
.main-nav{display:flex;align-items:center;gap:34px;}
.main-nav a{
  text-decoration:none;color:var(--sub);font-size:15.5px;font-weight:500;
  padding-bottom:3px;border-bottom:2px solid transparent;
}
.main-nav a:hover, .main-nav a.active{color:var(--ink);border-bottom-color:var(--moss);}
.main-nav a.cta-link{
  background:var(--btn-bg);color:var(--btn-ink);border:none;
  padding:11px 20px;border-radius:999px;
  font-weight:600;
}
.main-nav a.cta-link:hover{background:var(--btn-bg-hover);border-color:transparent;}

/* ---------- Theme toggle ---------- */
.theme-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;border-radius:50%;
  border:none;background:var(--btn-bg);color:var(--btn-ink);
  cursor:pointer;margin-left:8px;flex-shrink:0;
  transition:background .15s;
}
.theme-toggle:hover{background:var(--btn-bg-hover);}
.theme-toggle svg{width:18px;height:18px;display:block;}
.theme-toggle .icon-sun{display:none;}
html[data-theme="dark"] .theme-toggle .icon-moon{display:none;}
html[data-theme="dark"] .theme-toggle .icon-sun{display:block;}
@media (prefers-color-scheme: dark){
  html:not([data-theme="light"]) .theme-toggle .icon-moon{display:none;}
  html:not([data-theme="light"]) .theme-toggle .icon-sun{display:block;}
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'Public Sans',sans-serif;font-weight:600;font-size:16px;
  padding:14px 26px;border-radius:999px;
  text-decoration:none;border:1.5px solid transparent;
  transition:transform .12s ease, background .12s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--btn-bg);color:var(--btn-ink);}
.btn-primary:hover{background:var(--btn-bg-hover);}
.btn-ghost{border-color:var(--ink);color:var(--ink);}
.btn-ghost:hover{background:var(--ink);color:var(--bg);}

/* ---------- Hero ---------- */
.hero{
  position:relative;overflow:hidden;
  padding:220px 0 170px;
}
#hero-canvas{
  position:absolute;inset:0;width:100%;height:100%;
  z-index:0;pointer-events:auto;
  opacity:.7;
}
.hero-fade{
  position:absolute;inset:0;z-index:0;
  pointer-events:none;
  background:linear-gradient(180deg,
    rgb(var(--bg-rgb) / 0) 0%,
    rgb(var(--bg-rgb) / .03) 35%,
    rgb(var(--bg-rgb) / .18) 60%,
    rgb(var(--bg-rgb) / .55) 82%,
    rgb(var(--bg-rgb) / 1) 100%);
}
.hero-content{position:relative;z-index:1;max-width:640px;pointer-events:none;}
.hero-content .hero-ctas{pointer-events:auto;}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--cobalt-deep);
  margin-bottom:24px;
}
.eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cobalt);}
.hero h1{font-size:62px;line-height:1.14;margin-bottom:22px;color:var(--ink);}
.hero .lede{font-size:20px;color:var(--sub);max-width:500px;margin-bottom:34px;}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;}

/* ---------- Sections ---------- */
.section{padding:88px 0;}
.section-alt{background:var(--card);}
.section-head{max-width:640px;margin-bottom:48px;}
.section-tag{
  font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--cobalt-deep);margin-bottom:14px;display:block;
}
.section-head h2{font-size:42px;line-height:1.15;margin-bottom:16px;}
.section-head p{color:var(--sub);font-size:18px;}

/* ---------- Trusted by ---------- */
.trusted-by{padding:36px 0 88px;}
.trusted-label{
  text-align:center;font-size:13px;font-weight:600;color:var(--sub-light);
  text-transform:uppercase;letter-spacing:.08em;margin-bottom:28px;
}
.logo-marquee{
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.logo-track{
  display:flex;align-items:center;width:max-content;
  animation:marquee 26s linear infinite;
}
.logo-track img{
  height:44px;width:auto;margin:0 44px;flex-shrink:0;
  filter:grayscale(1);opacity:.6;
  transition:opacity .2s, filter .2s;
}
.logo-track img:hover{filter:grayscale(0);opacity:1;}
html[data-theme="dark"] .logo-track img{filter:grayscale(1) invert(1);}
html[data-theme="dark"] .logo-track img:hover{filter:grayscale(0) invert(1);}
@media (prefers-color-scheme: dark){
  html:not([data-theme="light"]) .logo-track img{filter:grayscale(1) invert(1);}
  html:not([data-theme="light"]) .logo-track img:hover{filter:grayscale(0) invert(1);}
}
.logo-marquee:hover .logo-track{animation-play-state:paused;}
@keyframes marquee{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}
@media (prefers-reduced-motion: reduce){
  .logo-track{animation:none;}
}
@media (max-width: 900px){
  .logo-track img{height:34px;margin:0 32px;}
}

/* ---------- Cards ---------- */
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;}
.card{background:var(--card);padding:34px 30px;border-top:1px solid var(--line);border-left:1px solid var(--line);margin:-1px 0 0 -1px;}
.card .icon{
  font-family:'Newsreader',serif;font-style:italic;font-size:19px;color:var(--cobalt);
  margin-bottom:18px;
}
.card-icon{width:40px;height:40px;margin-bottom:20px;display:block;}
.card .tag{font-size:13px;font-weight:600;color:var(--moss-deep);text-transform:uppercase;letter-spacing:.05em;margin-bottom:18px;display:block;}
.card h3{font-size:21px;margin-bottom:10px;}
.card p{color:var(--sub);font-size:16px;line-height:1.6;}

/* ---------- Process ---------- */
.section-sand{background:var(--sand);padding:110px 0;}
.steps-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:56px 64px;}
.step-cell{padding-top:28px;border-top:1px solid var(--line);}
.step-num{
  display:block;font-family:'Newsreader',serif;font-style:italic;font-size:40px;
  color:var(--moss-deep);opacity:.55;margin-bottom:14px;
}
.step-cell h3{font-size:22px;margin-bottom:10px;}
.step-cell p{color:var(--sub);font-size:16px;line-height:1.6;max-width:46ch;}


/* ---------- Footer ---------- */
.site-footer{background:var(--bg);color:var(--sub);padding:56px 0 32px;border-top:1px solid var(--line);}
.footer-row{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;}
.footer-links{display:flex;gap:26px;font-size:14px;flex-wrap:wrap;}
.footer-links a{text-decoration:none;color:var(--sub);}
.footer-links a:hover{color:var(--cobalt-deep);}
.footer-meta{font-size:13px;margin-top:32px;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}

/* ---------- Services list ---------- */
.service-block{
  display:grid;grid-template-columns:1fr 1.3fr;gap:44px;
  padding:44px 0;border-top:1px solid var(--line);
}
.service-block:last-child{border-bottom:1px solid var(--line);}
.service-block .tag{font-size:13px;font-weight:600;color:var(--cobalt-deep);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;display:block;}
.service-block h3{font-size:27px;margin-bottom:8px;}
.service-block .desc{color:var(--sub);font-size:17px;margin-bottom:20px;}
.tick-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}
.tick-list li{display:flex;gap:12px;font-size:15px;color:var(--ink);}
.tick-list li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cobalt);margin-top:8px;flex-shrink:0;}

/* ---------- Engagement models ---------- */
.engage-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.engage-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);padding:30px;}
.engage-card .badge{
  display:inline-block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
  padding:5px 12px;border-radius:var(--radius-sm);margin-bottom:16px;
  background:var(--cobalt-tint);color:var(--cobalt-deep);
}
.engage-card h3{font-size:22px;margin-bottom:8px;}
.engage-card p{color:var(--sub);font-size:16px;}

/* ---------- Contact ---------- */
.contact-intro{max-width:560px;}
.contact-intro h2{font-size:48px;line-height:1.15;margin-bottom:18px;}
.contact-intro p{color:var(--sub);font-size:18px;line-height:1.6;}
.contact-meta{display:flex;gap:28px;flex-wrap:wrap;margin-top:36px;align-items:center;}
.contact-meta a{
  color:var(--ink);text-decoration:none;font-weight:600;font-size:16px;
  border-bottom:1.5px solid var(--line);padding-bottom:3px;
  transition:border-color .15s;
}
.contact-meta a:hover{border-color:var(--moss);}

.contact-band{background:#2C352A;}
.contact-band .section-tag{color:var(--moss-tint);}
.contact-band .contact-intro h2{color:#fff;}
.contact-band .contact-intro p{color:rgb(255 255 255 / 0.72);}
.contact-band .contact-meta a{color:#fff;border-bottom-color:rgb(255 255 255 / 0.35);}
.contact-band .contact-meta a:hover{border-bottom-color:#fff;}

/* ---------- Scroll reveal ---------- */
.reveal{
  opacity:0;transform:translateY(28px);
  transition:opacity .7s cubic-bezier(.16,.8,.24,1), transform .7s cubic-bezier(.16,.8,.24,1);
  will-change:opacity, transform;
}
.reveal.is-visible{opacity:1;transform:translateY(0);}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none;}
}

@media (max-width: 900px){
  .hero{padding:150px 0 110px;}
  #hero-canvas{opacity:.6;}
  .hero h1{font-size:36px;}
  .card-grid{grid-template-columns:1fr;}
  .steps-grid{grid-template-columns:1fr;gap:36px;}
  .service-block{grid-template-columns:1fr;}
  .engage-grid{grid-template-columns:1fr;}
  .contact-intro h2{font-size:32px;}
  .main-nav a{display:none;}
  .header-row{padding:16px 20px;}
  .brand img{height:26px;}
}
