

  :root{
    --ink:#15110D;
    --ink-2:#1E1812;
    --paper:#FAF6EF;
    --paper-2:#F1EAE0;
    --camel:#AD7C4C;
    --camel-deep:#7C5433;
    --umber:#3E2A1B;
    --stone:#8A8074;
    --white:#FFFFFF;
    --line-dark: rgba(250,246,239,0.14);
    --line-light: rgba(21,17,13,0.12);
    --ease: cubic-bezier(.22,.68,.35,1);
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
  }
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter', sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  img{max-width:100%; display:block;}
  a{color:inherit; text-decoration:none;}
  ::selection{background:var(--camel); color:var(--white);}

  h1,h2,h3{
    font-family:'Fraunces', serif;
    font-weight:600;
    letter-spacing:-0.01em;
    line-height:1.06;
  }

  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:22px;
  }
  .eyebrow .dot{
    width:7px; height:7px; border-radius:50%;
    background:var(--camel);
    flex-shrink:0;
  }
  .eyebrow.on-dark{ color:#D9C6AE; }
  .eyebrow.on-light{ color:var(--camel-deep); }

  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding:0 32px;
  }

  .btn{
    font-family:'Inter', sans-serif;
    font-weight:600;
    font-size:15px;
    padding:16px 30px;
    border-radius:2px;
    display:inline-flex;
    align-items:center;
    gap:10px;
    transition:transform .35s var(--ease), background .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease);
    cursor:pointer;
    white-space:nowrap;
  }
  .btn-solid{
    background:var(--camel);
    color:var(--white);
    border:1px solid var(--camel);
  }
  .btn-solid:hover{ background:var(--camel-deep); border-color:var(--camel-deep); transform:translateY(-2px); }
  .btn-outline-dark{
    border:1px solid var(--line-dark);
    color:var(--paper);
  }
  .btn-outline-dark:hover{ border-color:var(--camel); color:var(--camel); transform:translateY(-2px); }
  .btn-outline-light{
    border:1px solid var(--line-light);
    color:var(--ink);
  }
  .btn-outline-light:hover{ border-color:var(--camel-deep); color:var(--camel-deep); transform:translateY(-2px); }
  .btn:focus-visible{ outline:2px solid var(--camel); outline-offset:3px; }
  a:focus-visible, button:focus-visible{ outline:2px solid var(--camel); outline-offset:3px; }

  /* connector thread - signature element */
  .thread{
    position:fixed;
    left:44px;
    top:0;
    bottom:0;
    width:1px;
    background:linear-gradient(to bottom, transparent 0%, var(--camel) 8%, var(--camel) 92%, transparent 100%);
    opacity:0.35;
    z-index:1;
    pointer-events:none;
  }
  @media (max-width:900px){ .thread{ display:none; } }

  /* section CTA rows */
  .section-cta{
    margin-top:56px;
    display:flex;
    justify-content:center;
  }

  /* marquee */
  .marquee-strip{
    background:var(--ink);
    border-top:1px solid var(--line-dark);
    border-bottom:1px solid var(--line-dark);
    overflow:hidden;
    padding:18px 0;
  }
  .marquee-track{
    display:flex;
    gap:18px;
    width:max-content;
    animation:marquee 26s linear infinite;
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    letter-spacing:0.08em;
    color:#8A7E6D;
    text-transform:uppercase;
  }
  .marquee-track span:nth-child(odd){ color:var(--camel); }
  @keyframes marquee{
    from{ transform:translateX(0); }
    to{ transform:translateX(-50%); }
  }
  @media (prefers-reduced-motion: reduce){
    .marquee-track{ animation:none; }
  }

  section{ position:relative; }

  /* reveal animation */
  .reveal{
    opacity:0;
    transform:translateY(22px);
    transition:opacity .8s var(--ease), transform .8s var(--ease);
  }
  .reveal.in{ opacity:1; transform:translateY(0); }

  /* staggered children inside revealed grids */
  .service-grid.reveal.in .service-card,
  .why-grid.reveal.in .why-card,
  .results-grid.reveal.in .t-card,
  .project-grid.reveal.in .project-card,
  .video-grid.reveal.in .video-card{
    animation:stagger-in .7s var(--ease) both;
  }
  .service-grid .service-card:nth-child(1),.why-grid .why-card:nth-child(1),.results-grid .t-card:nth-child(1),.project-grid .project-card:nth-child(1),.video-grid .video-card:nth-child(1){ animation-delay:.02s; }
  .service-grid .service-card:nth-child(2),.why-grid .why-card:nth-child(2),.results-grid .t-card:nth-child(2),.project-grid .project-card:nth-child(2),.video-grid .video-card:nth-child(2){ animation-delay:.09s; }
  .service-grid .service-card:nth-child(3),.why-grid .why-card:nth-child(3),.results-grid .t-card:nth-child(3),.project-grid .project-card:nth-child(3){ animation-delay:.16s; }
  .service-grid .service-card:nth-child(4),.why-grid .why-card:nth-child(4),.project-grid .project-card:nth-child(4){ animation-delay:.23s; }
  .service-grid .service-card:nth-child(5),.project-grid .project-card:nth-child(5){ animation-delay:.30s; }
  .service-grid .service-card:nth-child(6),.project-grid .project-card:nth-child(6){ animation-delay:.37s; }
  .project-grid .project-card:nth-child(7){ animation-delay:.44s; }
  .project-grid .project-card:nth-child(8){ animation-delay:.51s; }
  @keyframes stagger-in{
    from{ opacity:0; transform:translateY(18px) scale(0.98); }
    to{ opacity:1; transform:translateY(0) scale(1); }
  }
  @media (prefers-reduced-motion: reduce){
    .service-grid.reveal.in .service-card, .why-grid.reveal.in .why-card, .results-grid.reveal.in .t-card, .project-grid.reveal.in .project-card, .video-grid.reveal.in .video-card{ animation:none; }
  }

  /* ============ HERO ============ */
  .hero{
    background:var(--ink);
    color:var(--paper);
    padding:120px 0 90px;
    position:relative;
    overflow:hidden;
  }
  .hero::after{
    content:"";
    position:absolute;
    inset:0;
    background:
      radial-gradient(ellipse 60% 50% at 85% 20%, rgba(173,124,76,0.16), transparent 60%);
    pointer-events:none;
  }
  .hero-grid{
    display:grid;
    grid-template-columns:1.15fr 0.85fr;
    gap:64px;
    align-items:center;
    position:relative;
    z-index:2;
  }
  .hero h1{
    font-size:clamp(34px, 4.4vw, 58px);
    color:var(--white);
    margin-bottom:26px;
  }
  .hero h1 em{
    font-style:italic;
    color:var(--camel);
  }
  .hero p.lede{
    font-size:18px;
    color:#C9BEAF;
    max-width:520px;
    margin-bottom:40px;
    font-weight:400;
  }
  .hero-ctas{ display:flex; gap:16px; flex-wrap:wrap; margin-bottom:52px; justify-content:center; }
  .trust-line{
    font-family:'IBM Plex Mono', monospace;
    font-size:12.5px;
    letter-spacing:0.03em;
    color:var(--camel);
    margin-bottom:28px;
  }
  .hero-tags{
    display:flex;
    flex-wrap:wrap;
    gap:10px 22px;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:#8A7E6D;
    letter-spacing:0.03em;
    border-top:1px solid var(--line-dark);
    padding-top:22px;
  }
  .hero-media{
    position:relative;
  }
  .hero-media .frame{
    position:relative;
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:4/5;
    background:var(--ink-2);
  }
  .hero-media img{
    width:100%; height:100%; object-fit:cover;
    filter:grayscale(6%) contrast(1.04);
  }
  .hero-media .frame::after{
    content:"";
    position:absolute; inset:0;
    box-shadow:inset 0 0 0 1px var(--line-dark);
  }
  .hero-media .tag-float{
    position:absolute;
    bottom:-22px;
    left:-22px;
    background:var(--camel);
    color:var(--white);
    padding:16px 22px;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.05em;
    max-width:220px;
    box-shadow:0 18px 40px rgba(0,0,0,0.35);
  }
  @media (max-width:900px){
    .hero{ padding:88px 0 70px; }
    .hero-grid{ grid-template-columns:1fr; gap:48px; }
    .hero-media{ order:-1; max-width:340px; margin:0 auto; }
    .hero-media .tag-float{ display:none; }
  }

  /* ============ SECTION HEADS ============ */
  .section-head{
    max-width:680px;
    margin-bottom:56px;
  }
  .section-head h2{
    font-size:clamp(28px, 3.4vw, 42px);
  }
  .section-head.on-dark h2{ color:var(--white); }
  .section-head.on-light h2{ color:var(--ink); }
  .section-head p{
    margin-top:18px;
    font-size:16.5px;
    max-width:560px;
  }
  .section-head.on-dark p{ color:#B9AD9A; }
  .section-head.on-light p{ color:#5B5347; }

  /* ============ ABOUT ============ */
  .about{
    background:var(--paper);
    padding:110px 0;
  }
  .about-grid{
    display:grid;
    grid-template-columns:0.8fr 1.2fr;
    gap:72px;
    align-items:start;
  }
  .about-media{
    position:sticky;
    top:40px;
  }
  .about-media .frame{
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:3/4;
  }
  .about-media img{
    width:100%; height:100%; object-fit:cover;
    filter:sepia(8%) saturate(1.05);
  }
  .about-copy p{
    font-size:17px;
    color:#4A4338;
    margin-bottom:20px;
    max-width:600px;
  }
  .about-copy p strong{ color:var(--ink); font-weight:600; }
  .about-stats{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:24px;
    margin-top:44px;
    padding-top:32px;
    border-top:1px solid var(--line-light);
    max-width:600px;
  }
  .about-stats .stat b{
    font-family:'Fraunces', serif;
    font-size:32px;
    font-weight:600;
    display:block;
    color:var(--camel-deep);
    transition:transform .3s var(--ease);
  }
  .about-stats .stat:hover b{ transform:translateY(-3px); }
  .about-stats .stat span{
    font-family:'IBM Plex Mono', monospace;
    font-size:11.5px;
    color:var(--stone);
    letter-spacing:0.03em;
    text-transform:uppercase;
  }
  @media (max-width:900px){
    .about-grid{ grid-template-columns:1fr; gap:40px; }
    .about-media{ position:static; max-width:320px; }
    .about-stats{ grid-template-columns:1fr 1fr; }
  }

  /* ============ SERVICES ============ */
  .services{
    background:var(--paper-2);
    padding:110px 0;
  }
  .service-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line-light);
    border:1px solid var(--line-light);
  }
  .service-card{
    background:var(--paper-2);
    padding:38px 34px;
    transition:background .35s var(--ease), transform .45s var(--ease), box-shadow .45s var(--ease);
  }
  .service-card:hover{ background:var(--paper); transform:translateY(-6px); box-shadow:0 20px 40px rgba(21,17,13,0.08); z-index:2; }
  .service-card .icon{ transition:transform .45s var(--ease); }
  .service-card:hover .icon{ transform:translateY(-3px) scale(1.06); }
  .service-card .icon{
    width:38px; height:38px;
    margin-bottom:22px;
    color:var(--camel-deep);
  }
  .service-card .icon svg{ width:100%; height:100%; }
  .service-card .num{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:var(--stone);
    margin-bottom:8px;
    display:block;
  }
  .service-card h3{
    font-size:21px;
    font-weight:600;
    margin-bottom:12px;
    color:var(--ink);
  }
  .service-card p{
    font-size:14.5px;
    color:#5B5347;
    margin-bottom:16px;
  }
  .service-card .stack{
    font-family:'IBM Plex Mono', monospace;
    font-size:11.5px;
    color:var(--stone);
    line-height:1.7;
  }
  @media (max-width:900px){
    .service-grid{ grid-template-columns:1fr; }
  }

  /* ============ WHY (dark) ============ */
  .why{
    background:var(--ink);
    padding:110px 0;
    color:var(--paper);
  }
  .why-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:40px;
  }
  .why-card .mark{
    width:34px; height:34px;
    border:1px solid var(--camel);
    border-radius:50%;
    margin-bottom:24px;
    position:relative;
    transition:transform .45s var(--ease), background .45s var(--ease);
  }
  .why-card:hover .mark{ transform:scale(1.12); background:rgba(173,124,76,0.12); }
  .why-card .mark::after{
    content:"";
    position:absolute; top:50%; left:50%;
    width:6px; height:6px;
    background:var(--camel);
    border-radius:50%;
    transform:translate(-50%,-50%);
  }
  .why-card h3{
    font-size:19px;
    color:var(--white);
    margin-bottom:12px;
    font-weight:600;
  }
  .why-card p{
    font-size:14.5px;
    color:#B0A492;
    line-height:1.65;
  }
  @media (max-width:900px){
    .why-grid{ grid-template-columns:1fr 1fr; gap:36px 28px; }
  }
  @media (max-width:560px){
    .why-grid{ grid-template-columns:1fr; }
  }

  /* ============ PROCESS ============ */
  .process{
    background:var(--paper);
    padding:110px 0;
  }
  .process-list{
    max-width:820px;
  }
  .process-row{
    display:grid;
    grid-template-columns:90px 1fr;
    gap:32px;
    padding:32px 0;
    border-top:1px solid var(--line-light);
    align-items:start;
  }
  .process-row:last-child{ border-bottom:1px solid var(--line-light); }
  .process-row .step-num{
    font-family:'Fraunces', serif;
    font-size:34px;
    font-weight:500;
    color:var(--camel);
  }
  .process-row h3{
    font-size:21px;
    font-weight:600;
    margin-bottom:8px;
    color:var(--ink);
  }
  .process-row p{
    font-size:15.5px;
    color:#5B5347;
    max-width:520px;
  }
  @media (max-width:600px){
    .process-row{ grid-template-columns:56px 1fr; gap:20px; }
    .process-row .step-num{ font-size:26px; }
  }

  /* ============ RESULTS ============ */
  .results{
    background:var(--paper-2);
    padding:110px 0;
  }
  .results-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:28px;
  }
  .t-card{
    background:var(--paper);
    border:1px solid var(--line-light);
    padding:34px 30px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    min-height:240px;
    transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease);
  }
  .t-card:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(21,17,13,0.08); border-color:var(--camel); }
  .t-card .quote{
    font-family:'Fraunces', serif;
    font-size:18px;
    font-style:italic;
    color:#4A4338;
    line-height:1.5;
    margin-bottom:26px;
  }
  .t-card .who{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:var(--stone);
    border-top:1px solid var(--line-light);
    padding-top:16px;
  }
  .t-card .who b{ color:var(--camel-deep); display:block; font-style:normal; font-family:'Inter',sans-serif; font-size:14px; margin-bottom:2px; }
  @media (max-width:900px){
    .results-grid{ grid-template-columns:1fr; }
  }

  /* ============ PROJECTS ============ */
  .projects{
    background:var(--ink);
    padding:110px 0;
  }
  .project-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:22px;
  }
  .project-card{
    position:relative;
    display:block;
    overflow:hidden;
    border-radius:3px;
    aspect-ratio:16/11;
    background:var(--ink-2);
    border:1px solid var(--line-dark);
  }
  .project-card img{
    width:100%; height:100%; object-fit:cover;
    transition:transform .6s var(--ease), filter .6s var(--ease);
    filter:saturate(0.92);
  }
  .project-card:hover img{ transform:scale(1.06); filter:saturate(1.05); }
  .project-overlay{
    position:absolute; inset:0;
    background:linear-gradient(to top, rgba(21,17,13,0.92) 0%, rgba(21,17,13,0.15) 55%, transparent 100%);
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:22px;
    opacity:0.92;
    transition:opacity .4s var(--ease);
  }
  .project-overlay span{
    font-family:'Fraunces', serif;
    font-size:18px;
    color:var(--white);
    font-weight:600;
  }
  .project-overlay em{
    font-family:'IBM Plex Mono', monospace;
    font-style:normal;
    font-size:11.5px;
    color:var(--camel);
    margin-top:8px;
    opacity:0;
    transform:translateY(6px);
    transition:opacity .35s var(--ease), transform .35s var(--ease);
  }
  .project-card:hover .project-overlay em{ opacity:1; transform:translateY(0); }
  @media (max-width:700px){
    .project-grid{ grid-template-columns:1fr; }
  }

  /* ============ VIDEO FEEDBACK ============ */
  .video-feedback{
    background:var(--paper);
    padding:110px 0;
  }
  .video-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:28px;
    align-items:start;
  }
  .video-card{
    background:var(--ink);
    border-radius:3px;
    overflow:hidden;
    border:1px solid var(--line-light);
  }
  .video-card video{
    width:100%;
    height:auto;
    display:block;
    background:#000;
  }
  .video-landscape video{ aspect-ratio:16/9; }
  .video-portrait{ max-width:340px; justify-self:center; }
  .video-portrait video{ aspect-ratio:9/16; }
  .video-grid-single{
    grid-template-columns:1fr;
    max-width:640px;
    margin:0 auto;
  }
  .video-caption{
    font-family:'IBM Plex Mono', monospace;
    font-size:11.5px;
    letter-spacing:0.05em;
    color:var(--camel);
    text-transform:uppercase;
    padding:14px 18px;
  }
  @media (max-width:700px){
    .video-grid{ grid-template-columns:1fr; justify-items:center; }
  }

  /* ============ FINAL CTA ============ */
  .final-cta{
    background:var(--ink);
    color:var(--paper);
    padding:130px 0;
    text-align:center;
    position:relative;
    overflow:hidden;
  }
  .final-cta::after{
    content:"";
    position:absolute; inset:0;
    background:radial-gradient(ellipse 70% 60% at 50% 0%, rgba(173,124,76,0.18), transparent 65%);
    pointer-events:none;
  }
  .final-cta-inner{
    max-width:720px;
    margin:0 auto;
    position:relative;
    z-index:2;
  }
  .final-cta h2{
    font-size:clamp(30px, 4vw, 48px);
    color:var(--white);
    margin-bottom:24px;
  }
  .final-cta p{
    color:#C9BEAF;
    font-size:17px;
    max-width:520px;
    margin:0 auto 44px;
  }
  .final-cta .ctas{
    display:flex;
    gap:16px;
    justify-content:center;
    flex-wrap:wrap;
  }

  /* ============ FOOTER ============ */
  footer{
    background:#0F0C09;
    color:#8A7E6D;
    padding:56px 0 34px;
  }
  .footer-top{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    flex-wrap:wrap;
    gap:24px;
    padding-bottom:32px;
    border-bottom:1px solid var(--line-dark);
    margin-bottom:24px;
  }
  .footer-top .name{
    font-family:'Fraunces', serif;
    color:var(--paper);
    font-size:22px;
    font-weight:600;
  }
  .footer-top .tag{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.04em;
    color:#8A7E6D;
    margin-top:6px;
  }
  .footer-social{
    display:flex;
    gap:22px;
    font-family:'IBM Plex Mono', monospace;
    font-size:12.5px;
  }
  .footer-social a{ color:#B0A492; transition:color .3s; }
  .footer-social a:hover{ color:var(--camel); }
  .footer-bottom{
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:12px;
    font-size:12px;
    font-family:'IBM Plex Mono', monospace;
    color:#605645;
  }


/* ============ SITE ADDITIONS ============ */
section[id], .final-cta[id]{ scroll-margin-top:72px; }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* header */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(21,17,13,0.86);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-dark);
}
.site-header .bar{
  max-width:1180px; margin:0 auto; padding:0 32px;
  height:68px; display:flex; align-items:center; justify-content:space-between; gap:24px;
}
.brand{ font-family:'Fraunces', serif; font-weight:600; font-size:19px; color:var(--paper); letter-spacing:-0.01em; display:flex; align-items:center; gap:10px; }
.brand i{ width:8px; height:8px; border-radius:50%; background:var(--camel); display:inline-block; }
.nav{ display:flex; align-items:center; gap:30px; }
.nav a.link{ font-size:14px; color:#C9BEAF; transition:color .3s var(--ease); position:relative; padding:6px 0; }
.nav a.link::after{ content:""; position:absolute; left:0; bottom:0; height:1px; width:0; background:var(--camel); transition:width .35s var(--ease); }
.nav a.link:hover, .nav a.link.active{ color:var(--white); }
.nav a.link:hover::after, .nav a.link.active::after{ width:100%; }
.nav .btn{ padding:11px 20px; font-size:14px; }
.menu-btn{ display:none; background:none; border:1px solid var(--line-dark); color:var(--paper); width:42px; height:42px; border-radius:2px; cursor:pointer; align-items:center; justify-content:center; }
.menu-btn span{ display:block; width:18px; height:1.5px; background:currentColor; position:relative; }
.menu-btn span::before, .menu-btn span::after{ content:""; position:absolute; left:0; width:18px; height:1.5px; background:currentColor; transition:transform .3s var(--ease), top .3s var(--ease); }
.menu-btn span::before{ top:-6px; } .menu-btn span::after{ top:6px; }
.menu-btn[aria-expanded="true"] span{ background:transparent; }
.menu-btn[aria-expanded="true"] span::before{ top:0; transform:rotate(45deg); }
.menu-btn[aria-expanded="true"] span::after{ top:0; transform:rotate(-45deg); }
@media (max-width:900px){
  .site-header .bar{ padding:0 20px; }
  .menu-btn{ display:flex; }
  .nav{
    position:absolute; top:68px; left:0; right:0;
    background:var(--ink); border-bottom:1px solid var(--line-dark);
    flex-direction:column; align-items:center; gap:0; padding:8px 20px 26px;
    display:none;
  }
  .nav.open{ display:flex; }
  .nav a.link{ padding:15px 0; width:100%; text-align:center; border-bottom:1px solid var(--line-dark); font-size:16px; }
  .nav a.link::after{ display:none; }
  .nav .btn{ margin-top:20px; }
}

/* hero tweaks */
.hero{ padding-top:150px; }
.hero h1{ font-size:clamp(36px, 5vw, 64px); }
.hero-copy .hero-ctas{ justify-content:flex-start; }
.hero-copy .trust-line{ margin-bottom:22px; }
@media (max-width:900px){
  .hero{ padding-top:112px; }
  .hero-copy{ text-align:center; }
  .hero-copy p.lede{ margin-left:auto; margin-right:auto; }
  .hero-copy .hero-ctas{ justify-content:center; }
  .hero-tags{ justify-content:center; }
}
.hero-copy .hero-ctas{ margin-bottom:44px; }
.hero-note{ font-size:13px; color:#8A7E6D; margin:-26px 0 40px; }
@media (max-width:900px){ .hero-note{ margin-top:-30px; } }

/* centered buttons everywhere */
.section-cta, .final-cta .ctas{ justify-content:center; }

/* trades problem */
.problem{ background:var(--ink); color:var(--paper); padding:110px 0; border-top:1px solid var(--line-dark); }
.why-grid.four .why-card h3{ font-size:19px; }

/* about extras */
.about-copy .pull{
  font-family:'Fraunces', serif; font-style:italic; font-size:22px; line-height:1.4;
  color:var(--camel-deep); border-left:2px solid var(--camel); padding-left:20px; margin:30px 0 26px; max-width:560px;
}
.about-copy .btn{ margin-top:14px; }

/* how it works */
.process .section-head{ margin-bottom:44px; }

/* funnels section (smaller second offer) */
.funnels{ background:var(--ink); padding:100px 0 110px; border-top:1px solid var(--line-dark); }
.funnels .section-head{ max-width:760px; }
.funnel-tags{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.funnel-tags span{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--camel); border:1px solid var(--line-dark); padding:7px 14px; border-radius:30px; letter-spacing:0.03em; }
.project-card .project-overlay h3{ font-family:'Fraunces', serif; font-size:18px; color:var(--white); font-weight:600; }

/* reviews + video */
.results .video-wrap h3{ text-align:center; font-size:24px; margin-bottom:26px; }
.video-grid-single{ margin:0 auto; }

/* FAQ */
.faq{ background:var(--paper); padding:110px 0; }
.faq-list{ max-width:820px; margin:0 auto; }
.faq-item{ border-top:1px solid var(--line-light); }
.faq-item:last-child{ border-bottom:1px solid var(--line-light); }
.faq-item summary{
  list-style:none; cursor:pointer; padding:26px 48px 26px 0; position:relative;
  font-family:'Fraunces', serif; font-weight:600; font-size:20px; line-height:1.3; color:var(--ink);
  transition:color .3s var(--ease);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+"; position:absolute; right:6px; top:50%; transform:translateY(-50%);
  font-family:'IBM Plex Mono', monospace; font-size:26px; color:var(--camel); font-weight:400;
  transition:transform .35s var(--ease);
}
.faq-item[open] summary::after{ transform:translateY(-50%) rotate(45deg); }
.faq-item summary:hover{ color:var(--camel-deep); }
.faq-item p{ padding:0 48px 28px 0; font-size:16px; color:#5B5347; max-width:700px; }

/* services grid fits 6 */
.service-card .icon svg{ stroke:currentColor; fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.service-card.feature{ background:var(--ink); }
.service-card.feature h3{ color:var(--white); }
.service-card.feature p{ color:#B9AD9A; }
.service-card.feature .icon{ color:var(--camel); }
.service-card.feature .num, .service-card.feature .stack{ color:#8A7E6D; }
.service-card.feature:hover{ background:var(--ink-2); }

/* footer */
.footer-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:48px; padding-bottom:36px; border-bottom:1px solid var(--line-dark); margin-bottom:24px; }
.footer-grid .name{ font-family:'Fraunces', serif; color:var(--paper); font-size:22px; font-weight:600; }
.footer-grid .tag{ font-size:14px; color:#8A7E6D; margin-top:10px; max-width:320px; }
.footer-grid h4{ font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.14em; text-transform:uppercase; color:var(--camel); margin-bottom:18px; font-weight:500; }
.footer-grid ul{ list-style:none; display:grid; gap:11px; font-size:14px; }
.footer-grid a{ color:#B0A492; transition:color .3s; }
.footer-grid a:hover{ color:var(--camel); }
@media (max-width:800px){ .footer-grid{ grid-template-columns:1fr 1fr; } .footer-grid > div:first-child{ grid-column:1/-1; } }

/* =====================================================================
   V2: multi-page build, motion hero, alternating sections, carousel
   ===================================================================== */

/* ---------- HERO (full-bleed motion background) ---------- */
.hero{ padding:0; min-height:100svh; display:flex; flex-direction:column; justify-content:center; overflow:hidden; background:var(--ink); }
.hero::after{ display:none; }
.hero-bg{ position:absolute; inset:0; overflow:hidden; z-index:0; }
.hero-wall{
  position:absolute; top:-18%; right:-4%; width:64%; height:140%;
  display:grid; grid-template-columns:repeat(3,1fr); gap:16px;
  transform:rotate(8deg);
}
.hero-col{ overflow:hidden; }
.hero-track{ display:block; animation:drift 80s linear infinite; will-change:transform; }
.hero-col:nth-child(2) .hero-track{ animation-name:drift-rev; animation-duration:95s; }
.hero-col:nth-child(3) .hero-track{ animation-duration:110s; }
.hero-track img{ display:block; width:100%; height:auto; border-radius:6px; margin-bottom:16px; opacity:.78; }
@keyframes drift{ from{ transform:translateY(0); } to{ transform:translateY(-33.3333%); } }
@keyframes drift-rev{ from{ transform:translateY(-33.3333%); } to{ transform:translateY(0); } }
.hero-shade{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    linear-gradient(90deg, var(--ink) 0%, rgba(21,17,13,.97) 34%, rgba(21,17,13,.72) 62%, rgba(21,17,13,.5) 100%),
    linear-gradient(180deg, rgba(21,17,13,.85) 0%, transparent 22%, transparent 70%, var(--ink) 100%);
}
.hero > .wrap{ width:100%; }
.hero-inner{ position:relative; z-index:2; padding-top:132px; padding-bottom:36px; }
.hero h1{ font-size:clamp(38px, 5.6vw, 72px); max-width:780px; margin-bottom:26px; }
.hero p.lede{ font-size:clamp(17px, 1.6vw, 20px); max-width:600px; margin-bottom:38px; }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; justify-content:flex-start; margin-bottom:34px; }
.hero .trust-line{ margin-bottom:0; }
.goals{
  position:relative; z-index:2; margin-top:56px;
  display:grid; grid-template-columns:repeat(3,1fr); gap:0;
  border-top:1px solid var(--line-dark);
}
.goal{ padding:28px 28px 8px 0; display:flex; gap:16px; align-items:flex-start; }
.goal + .goal{ padding-left:28px; border-left:1px solid var(--line-dark); }
.goal .gi{ width:40px; height:40px; flex:0 0 40px; border:1px solid var(--camel); border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--camel); }
.goal .gi svg{ width:19px; height:19px; stroke:currentColor; fill:none; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.goal b{ display:block; font-family:'Fraunces', serif; font-size:19px; color:var(--white); font-weight:600; margin-bottom:4px; }
.goal span{ font-size:14px; color:#B0A492; line-height:1.55; display:block; }
.hero-end{ position:relative; z-index:2; height:36px; }

@media (max-width:900px){
  .hero{ min-height:0; }
  .hero-wall{ width:100%; right:-10%; top:-8%; height:120%; grid-template-columns:repeat(2,1fr); transform:rotate(8deg); }
  .hero-col:nth-child(3){ display:none; }
  .hero-shade{ background:linear-gradient(180deg, rgba(21,17,13,.9) 0%, rgba(21,17,13,.82) 45%, rgba(21,17,13,.94) 100%); }
  .hero-inner{ padding-top:104px; text-align:center; }
  .hero .eyebrow{ justify-content:center; text-align:center; }
  .hero .eyebrow .dot{ display:none; }
  .hero h1{ margin-left:auto; margin-right:auto; }
  .hero p.lede{ margin-left:auto; margin-right:auto; }
  .hero-ctas{ justify-content:center; }
  .goals{ grid-template-columns:1fr; margin-top:40px; text-align:left; }
  .goal, .goal + .goal{ padding:20px 0; border-left:0; }
  .goal + .goal{ border-top:1px solid var(--line-dark); }
}
@media (prefers-reduced-motion: reduce){ .hero-track{ animation:none !important; } }

/* ---------- INNER PAGE HEADER ---------- */
.page-hero{ background:var(--ink); color:var(--paper); padding:140px 0 76px; position:relative; overflow:hidden; }
.page-hero::after{ content:""; position:absolute; inset:0; background:radial-gradient(ellipse 60% 70% at 85% 0%, rgba(173,124,76,.18), transparent 60%); pointer-events:none; }
.page-hero .wrap{ position:relative; z-index:2; }
.page-hero h1{ font-size:clamp(34px, 4.8vw, 58px); color:var(--white); max-width:820px; margin-bottom:20px; }
.page-hero p{ font-size:18px; color:#C9BEAF; max-width:600px; }
.crumbs{ font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:.05em; color:#8A7E6D; margin-bottom:22px; }
.crumbs a{ color:var(--camel); }
.crumbs a:hover{ text-decoration:underline; }
@media (max-width:700px){ .page-hero{ padding:108px 0 56px; } .page-hero p{ font-size:16.5px; } }

/* ---------- SECTION RHYTHM: light / dark / light ---------- */
.wrap{ padding-left:32px; padding-right:32px; }
@media (max-width:700px){ .wrap{ padding-left:20px; padding-right:20px; } }
.problem, .services, .work, .reviews, .about, .process, .faq{ padding:110px 0; }
@media (max-width:700px){ .problem, .services, .work, .reviews, .about, .process, .faq{ padding:76px 0; } .final-cta{ padding:88px 0; } }

/* problem becomes the light one */
.problem{ background:var(--paper); color:var(--ink); border-top:0; }
.problem .why-card h3{ color:var(--ink); }
.problem .why-card p{ color:#5B5347; }
.problem .why-card .mark{ border-color:var(--camel-deep); }
.problem .why-card .mark::after{ background:var(--camel-deep); }

/* services becomes the dark one */
.services{ background:var(--ink); }
.services .service-grid{ background:var(--line-dark); border-color:var(--line-dark); }
.services .service-card{ background:var(--ink-2); }
.services .service-card:hover{ background:#271F17; box-shadow:0 20px 40px rgba(0,0,0,.35); }
.services .service-card .icon{ color:var(--camel); }
.services .service-card h3{ color:var(--white); }
.services .service-card p{ color:#B9AD9A; }
.services .service-card .num, .services .service-card .stack{ color:#8A7E6D; }
.services .service-card.feature{ background:var(--camel-deep); }
.services .service-card.feature:hover{ background:#8B5F3A; }
.services .service-card.feature .icon{ color:var(--white); }
.services .service-card.feature p{ color:#F1E6D6; }
.services .service-card.feature .num, .services .service-card.feature .stack{ color:#E3CFB4; }
.service-card.feature .badge{ display:inline-block; font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; background:rgba(255,255,255,.16); color:#fff; padding:4px 9px; border-radius:20px; margin-left:8px; vertical-align:middle; }

/* process becomes dark */
.process{ background:var(--ink); }
.process .section-head h2{ color:var(--white); }
.process .section-head p{ color:#B9AD9A; }
.process .process-row{ border-color:var(--line-dark); }
.process .process-row:last-child{ border-bottom-color:var(--line-dark); }
.process .process-row h3{ color:var(--white); }
.process .process-row p{ color:#B0A492; }
.process .eyebrow.on-light{ color:#D9C6AE; }

/* about stays light */
.about{ background:var(--paper); }

/* ---------- WORK TILES (checkerboard) ---------- */
.work{ background:var(--paper-2); }
.tiles{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.tile{ display:block; color:inherit; }
.tile-media{
  position:relative; overflow:hidden; aspect-ratio:4/3; border-radius:4px;
  border:1px solid var(--line-light); background:#fff;
  box-shadow:0 1px 0 rgba(21,17,13,.04), 0 12px 28px -16px rgba(21,17,13,.35);
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.tile-media img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
a.tile:hover .tile-media{ transform:translateY(-5px); box-shadow:0 22px 40px -18px rgba(21,17,13,.5); }
a.tile:hover .tile-media img{ transform:scale(1.04); }
.tile-visit{
  position:absolute; right:10px; top:10px; background:var(--ink); color:var(--paper);
  font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:.04em;
  padding:6px 10px; border-radius:20px; opacity:0; transform:translateY(-4px);
  transition:opacity .3s var(--ease), transform .3s var(--ease);
}
a.tile:hover .tile-visit, a.tile:focus-visible .tile-visit{ opacity:1; transform:none; }
.tile-cap{ padding:14px 2px 0; }
.tile-cap h3{ font-family:'Fraunces', serif; font-size:17px; font-weight:600; color:var(--ink); line-height:1.25; }
.tile-cap span{ display:block; font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:var(--stone); letter-spacing:.03em; margin-top:4px; }
.tiles.reveal.in .tile{ animation:stagger-in .7s var(--ease) both; animation-delay:calc(var(--i, 0) * 55ms); }
.tile-cta{
  grid-column:span 2; background:var(--ink); color:var(--paper); border-radius:4px;
  padding:34px 34px; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:16px; min-height:220px;
}
.tile-cta h3{ font-size:clamp(22px,2.2vw,30px); color:var(--white); line-height:1.15; }
.tile-cta p{ font-size:15px; color:#B9AD9A; max-width:420px; }
.work-tags{ display:flex; flex-wrap:wrap; gap:10px; margin-top:20px; }
.work-tags span{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--camel-deep); border:1px solid var(--line-light); padding:7px 14px; border-radius:30px; letter-spacing:.03em; }
@media (max-width:1060px){ .tiles{ grid-template-columns:repeat(2,1fr); gap:24px 20px; } }
@media (max-width:560px){ .tiles{ grid-template-columns:1fr; gap:28px; } .tile-cta{ grid-column:auto; padding:28px 22px; align-items:center; text-align:center; } }
@media (prefers-reduced-motion: reduce){ .tiles.reveal.in .tile{ animation:none; } }

/* ---------- REVIEWS: dark carousel on home, light grid on reviews page ---------- */
.reviews{ background:var(--ink); color:var(--paper); }
.reviews .section-head h2{ color:var(--white); }
.carousel{ position:relative; }
.car-track{
  display:flex; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding-left:0;
  scrollbar-width:none; -ms-overflow-style:none; padding:4px 0 14px; outline-offset:4px;
}
.car-track::-webkit-scrollbar{ display:none; }
.r-card{
  flex:0 0 calc((100% - 40px) / 3); scroll-snap-align:start;
  background:var(--ink-2); border:1px solid var(--line-dark); border-radius:4px;
  padding:32px 28px 26px; display:flex; flex-direction:column; justify-content:space-between; gap:24px;
  transition:border-color .4s var(--ease), transform .4s var(--ease);
}
.r-card:hover{ border-color:var(--camel); }
.r-mark{ font-family:'Fraunces', serif; font-size:54px; line-height:.6; color:var(--camel); height:26px; }
.r-card .quote{ font-family:'Fraunces', serif; font-style:italic; font-size:17.5px; line-height:1.55; color:#E6DCCB; }
.car-track .r-card .quote{ display:-webkit-box; -webkit-line-clamp:9; -webkit-box-orient:vertical; overflow:hidden; }
.r-more{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--camel); letter-spacing:.04em; margin-top:10px; display:inline-block; }
.r-more:hover{ text-decoration:underline; }
.r-who{ border-top:1px solid var(--line-dark); padding-top:16px; font-family:'IBM Plex Mono', monospace; font-size:12px; color:#8A7E6D; }
.r-who b{ display:block; font-family:'Inter', sans-serif; font-size:15px; color:var(--paper); font-weight:600; margin-bottom:3px; }
.r-who a{ color:var(--camel); }
.r-who a:hover{ text-decoration:underline; }
.car-ctrl{ display:flex; align-items:center; justify-content:center; gap:18px; margin-top:26px; }
.car-btn{
  width:48px; height:48px; border-radius:50%; border:1px solid var(--line-dark); background:transparent; color:var(--paper);
  display:flex; align-items:center; justify-content:center; cursor:pointer; transition:border-color .3s, color .3s, background .3s;
}
.car-btn:hover{ border-color:var(--camel); color:var(--camel); }
.car-btn:disabled{ opacity:.35; cursor:default; border-color:var(--line-dark); color:var(--paper); }
.car-btn svg{ width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.car-dots{ display:flex; gap:8px; }
.car-dots button{ width:9px; height:9px; border-radius:50%; border:0; padding:0; background:#4A3F33; cursor:pointer; transition:background .3s, transform .3s; position:relative; }
.car-dots button::after{ content:""; position:absolute; inset:-9px; }
.car-dots button.on{ background:var(--camel); transform:scale(1.25); }
@media (max-width:1000px){ .r-card{ flex-basis:calc((100% - 20px) / 2); } }
@media (max-width:640px){
  .r-card{ flex-basis:88%; padding:28px 22px 22px; }
  .car-track{ margin-right:-20px; padding-right:20px; }
  .car-btn{ width:46px; height:46px; }
}

/* reviews page grid (light) */
.reviews-page{ background:var(--paper); padding:90px 0 110px; }
.r-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch; }
.r-grid .r-card{ flex:none; background:#fff; border:1px solid var(--line-light); }
.r-grid .r-card:hover{ border-color:var(--camel); transform:translateY(-4px); box-shadow:0 20px 40px -22px rgba(21,17,13,.35); }
.r-grid .r-card .quote{ color:#3F382E; -webkit-line-clamp:unset; display:block; }
.r-grid .r-card .quote p + p{ margin-top:12px; }
.r-grid .r-who{ border-top-color:var(--line-light); color:var(--stone); }
.r-grid .r-who b{ color:var(--ink); }
.r-grid .r-who a{ color:var(--camel-deep); }
.r-grid.reveal.in .r-card{ animation:stagger-in .7s var(--ease) both; animation-delay:calc(var(--i, 0) * 70ms); }
@media (max-width:1000px){ .r-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .r-grid{ grid-template-columns:1fr; gap:18px; } .reviews-page{ padding:60px 0 76px; } }
@media (prefers-reduced-motion: reduce){ .r-grid.reveal.in .r-card{ animation:none; } }

/* ---------- BUTTONS: WhatsApp ---------- */
.btn svg.wa{ width:18px; height:18px; fill:currentColor; flex-shrink:0; }
.btn-wa{ border:1px solid rgba(37,211,102,.55); color:#fff; background:rgba(37,211,102,.1); }
.btn-wa:hover{ background:#25D366; border-color:#25D366; color:#0B2615; transform:translateY(-2px); }
.btn-wa-light{ border:1px solid var(--line-light); color:var(--ink); }
.btn-wa-light:hover{ background:#25D366; border-color:#25D366; color:#0B2615; transform:translateY(-2px); }
.btn{ min-height:48px; justify-content:center; }
.section-cta{ margin-top:52px; display:flex; justify-content:center; flex-wrap:wrap; gap:14px; }
@media (max-width:560px){
  .hero-ctas .btn, .final-cta .ctas .btn, .section-cta .btn{ width:100%; white-space:normal; text-align:center; }
  .hero-ctas, .final-cta .ctas{ flex-direction:column; align-items:stretch; }
}

/* floating WhatsApp (desktop) + sticky action bar (mobile) */
.wa-float{
  position:fixed; right:22px; bottom:22px; z-index:80; width:58px; height:58px; border-radius:50%;
  background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center;
  box-shadow:0 12px 30px rgba(0,0,0,.35); transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.wa-float:hover{ transform:translateY(-3px) scale(1.05); box-shadow:0 18px 38px rgba(0,0,0,.4); }
.wa-float svg{ width:30px; height:30px; fill:#fff; }
.mbar{ display:none; }
@media (max-width:700px){
  .wa-float{ display:none; }
  .mbar{
    position:fixed; left:0; right:0; bottom:0; z-index:90; display:grid; grid-template-columns:1fr 1fr; gap:10px;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom));
    background:rgba(21,17,13,.95); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
    border-top:1px solid var(--line-dark); transform:translateY(105%); transition:transform .45s var(--ease);
  }
  body.scrolled .mbar{ transform:none; }
  .mbar .btn{ padding:12px 8px; font-size:14.5px; min-height:48px; }
  footer{ padding-bottom:92px; }
}

/* ---------- misc ---------- */
.nav a.link.active{ color:var(--white); }
.final-cta .ctas{ gap:14px; }
.about-copy .pull{ max-width:none; }
.faq .section-head{ margin-bottom:44px; }
@media (max-width:900px){
  .section-head{ margin-bottom:40px; }
  .about-media{ max-width:none; }
  .about-media .frame{ aspect-ratio:4/5; max-height:440px; }
}
@media (max-width:700px){
  .about-stats{ grid-template-columns:repeat(3,1fr); gap:14px; }
  .about-stats .stat b{ font-size:26px; }
  .faq-item summary{ font-size:18px; padding:22px 40px 22px 0; }
  .faq-item p{ padding-right:8px; font-size:15.5px; }
  .process-row{ padding:26px 0; }
  .service-card{ padding:30px 24px; }
  .footer-grid{ gap:34px 24px; }
}
img{ height:auto; }
.tile-media img, .hero-track img{ height:auto; }
.tile-media img{ height:100%; }

/* tap-target polish */
.r-more{ padding:12px 0 6px; }
.footer-grid a{ display:inline-block; padding:5px 0; }
.car-dots button::after{ inset:-14px; }
.car-dots{ gap:12px; }
.crumbs a{ display:inline-block; padding:6px 0; }
