  :root{
    --ink:#22064E;
    --purple:#7C3AED;
    --purple-dark:#5B21B6;
    --orange:#D36420;
    --white:#FFFFFF;
    --bg:#F8F9FC;
    --text:#221933;
    --text-soft:#5C5470;
    --lavender:#F1ECFB;
    --line:#E4E1EE;
    --grad: linear-gradient(120deg, #7C3AED 0%, #D36420 100%);
    --shadow: 0 20px 50px -25px rgba(34,6,78,0.35);
    --radius: 18px;
    --ease: cubic-bezier(.22,.61,.36,1);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{overflow-x:hidden; max-width:100%; overscroll-behavior-y:none;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation:none !important; transition:none !important;}
    .reveal{opacity:1 !important; transform:none !important;}
  }
  body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:'Inter',sans-serif;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{
    font-family:'Space Grotesk',sans-serif;
    color:var(--ink);
    line-height:1.15;
    margin:0 0 .5em;
    letter-spacing:-0.01em;
  }
  p{
    margin:0 0 1em; color:var(--text-soft);
    text-align:justify; text-justify:inter-word; hyphens:auto;
  }
  a{color:inherit;text-decoration:none;}
  ul{list-style:none;margin:0;padding:0;}
  img{max-width:100%;display:block;}
  section{padding:96px 0;}
  .wrap{max-width:1180px;margin:0 auto;padding:0 28px;}
  .eyebrow{
    font-family:'IBM Plex Mono',monospace;
    font-size:12.5px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--orange);
    display:inline-flex;
    align-items:center;
    gap:10px;
    margin-bottom:16px;
    font-weight:500;
  }
  .eyebrow::before{
    content:"";
    width:22px;height:1px;background:var(--orange);display:inline-block;
  }
  .section-head{max-width:640px; margin-bottom:56px;}
  .section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
  .section-head h2{font-size:clamp(28px,3.4vw,40px);}
  .section-head p{font-size:17px;}

  /* buttons */
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    font-family:'Inter',sans-serif;font-weight:600;font-size:15px;
    padding:14px 26px;border-radius:999px;border:1px solid transparent;
    cursor:pointer; transition:transform .2s var(--ease), box-shadow .2s var(--ease), opacity .2s var(--ease), background-color .2s var(--ease);
    white-space:nowrap;
  }
  .btn:hover{transform:translateY(-2px);}
  .btn:active{transform:translateY(0) scale(.97); transition-duration:.1s;}
  .btn-primary{background:var(--grad); color:var(--white); box-shadow:0 14px 30px -12px rgba(211,100,32,0.55);}
  .btn-primary:hover{box-shadow:0 18px 34px -12px rgba(211,100,32,0.7);}
  .btn-outline{background:transparent;border-color:rgba(255,255,255,0.4); color:var(--white);}
  .btn-outline.on-light{border-color:var(--ink); color:var(--ink);}
  .btn-outline:hover{background:rgba(255,255,255,0.08);}
  .btn-outline.on-light:hover{background:var(--lavender);}
  .btn-sm{padding:10px 18px;font-size:13.5px;}

  /* nav */
  .nav{
    position:sticky; top:0; z-index:50;
    background:rgb(248,249,252);
    border-bottom:1px solid var(--line);
    transition:box-shadow .3s var(--ease), background-color .3s var(--ease);
  }
  .nav.scrolled{
    background:rgb(248,249,252);
    box-shadow:0 8px 24px -16px rgba(34,6,78,0.25);
  }
  .nav .wrap{display:flex;align-items:center;justify-content:space-between;height:78px;gap:16px;}
  .nav.scrolled .wrap{height:78px;}
  .nav-logo{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-right:28px;transition:transform .2s var(--ease);}
  .nav-logo img{height:34px;width:auto;display:block;}
  .nav.scrolled .nav-logo img{height:34px;}
  .nav-links{display:flex;align-items:center;gap:34px;}
  .nav-links a{font-size:14.5px;font-weight:500;color:var(--text);position:relative;padding-bottom:2px;transition:color .2s ease;}
  .nav-links a::after{
    content:"";position:absolute;left:0;bottom:-3px;width:0;height:1.5px;background:var(--purple);
    transition:width .25s var(--ease);
  }
  .nav-links a:hover{color:var(--purple);}
  .nav-links a:hover::after{width:100%;}
  .nav-cta{display:flex;align-items:center;gap:18px;margin-left:auto;}
  .cta-short{display:none;}
  .nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:6px;}
  .nav-toggle span{display:block;width:22px;height:2px;background:var(--ink);margin:5px 0;border-radius:2px;transition:transform .25s var(--ease), opacity .2s ease;}
  .nav.open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav.open .nav-toggle span:nth-child(2){opacity:0;}
  .nav.open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

  /* hero */
  .hero{
    background:radial-gradient(ellipse at 15% 20%, #33096A 0%, var(--ink) 55%), var(--ink);
    color:var(--white);
    position:relative;
    overflow:hidden;
    padding:88px 0 100px;
  }
  .hero .wrap{display:grid;grid-template-columns:1.05fr 0.85fr;gap:56px;align-items:center;position:relative;z-index:2;}
  .hero-eyebrow{
    font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;
    color:#F3C8A6;margin-bottom:22px;display:flex;align-items:center;gap:10px;
  }
  .hero-eyebrow::before{content:"";width:22px;height:1px;background:#F3C8A6;}
  .hero h1{
    color:var(--white);
    font-size:clamp(34px,4.6vw,54px);
    margin-bottom:20px;
  }
  .hero h1 em{
    font-style:normal;
    background:var(--grad);
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
  }
  .hero p.lead{color:#D8CFEF;font-size:18px;max-width:520px;margin-bottom:34px;}
  .hero-actions{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:44px;}
  .hero-stats{display:flex;gap:32px;flex-wrap:wrap;}
  .hero-stat b{display:block;font-family:'Space Grotesk',sans-serif;font-size:26px;color:var(--white);}
  .hero-stat span{font-size:12.5px;color:#B7A9DA;font-family:'IBM Plex Mono',monospace;letter-spacing:.04em;}

  .hero-eyebrow, .hero h1, .hero p.lead, .hero-actions, .hero-stats, .hero-graphic{
    opacity:0; animation:heroIn .7s var(--ease) forwards;
  }
  .hero-eyebrow{animation-delay:.05s;}
  .hero h1{animation-delay:.15s;}
  .hero p.lead{animation-delay:.28s;}
  .hero-actions{animation-delay:.4s;}
  .hero-stats{animation-delay:.5s;}
  .hero-graphic{animation-delay:.25s;}

  .hero-graphic{position:relative;height:420px;display:flex;align-items:center;justify-content:center;}
  .ring{
    position:absolute;border-radius:50%;border:1.5px dashed rgba(255,255,255,0.25);
  }
  .ring.r1{width:100%;height:68%;border-color:rgba(124,58,237,0.45);animation:spin-cw 110s linear infinite;}
  .ring.r2{width:78%;height:50%;border-color:rgba(211,100,32,0.55);border-style:solid;border-width:2px;animation:spin-ccw 90s linear infinite;}
  .ring.r3{width:54%;height:34%;border-color:rgba(255,255,255,0.3);animation:spin-cw 70s linear infinite;}
  .ring::after{
    content:"";position:absolute;top:-5px;left:50%;transform:translateX(-50%);
    width:9px;height:9px;border-radius:50%;
  }
  .ring.r1::after{background:var(--orange);box-shadow:0 0 14px 3px rgba(211,100,32,0.8);}
  .ring.r2::after{background:var(--white);box-shadow:0 0 12px 3px rgba(255,255,255,0.7);top:-6px;}
  .ring.r3::after{background:var(--purple);box-shadow:0 0 14px 4px rgba(124,58,237,0.9);}
  .hero-glow{
    position:absolute;width:60%;height:60%;border-radius:50%;
    background:radial-gradient(circle, rgba(124,58,237,0.55) 0%, rgba(211,100,32,0.25) 45%, transparent 72%);
    filter:blur(18px); animation:pulse-glow 8s ease-in-out infinite;
  }
  @keyframes spin-cw{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
  @keyframes spin-ccw{from{transform:rotate(0deg);}to{transform:rotate(-360deg);}}
  @keyframes pulse-glow{0%,100%{transform:scale(1);opacity:.65;}50%{transform:scale(1.05);opacity:.8;}}
  @keyframes pulse-core{0%,100%{box-shadow:0 30px 60px -20px rgba(0,0,0,0.5);}50%{box-shadow:0 32px 64px -18px rgba(0,0,0,0.52);}}
  @keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-9px);}}
  @keyframes sweep{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
  @keyframes twinkle{0%,100%{opacity:.25;}50%{opacity:.55;}}
  @keyframes heroIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
  .orbit-wrap{position:absolute;inset:0;pointer-events:none;}
  .orbit-wrap.c1{animation:spin-cw 60s linear infinite;}
  .orbit-wrap.c2{animation:spin-cw 60s linear infinite;animation-delay:-20s;}
  .orbit-wrap.c3{animation:spin-cw 60s linear infinite;animation-delay:-40s;}
  .orbit-anchor{position:absolute;top:2%;left:50%;transform:translate(-50%,-50%);}
  .hero-core{animation:pulse-core 8s ease-in-out infinite;position:relative;overflow:hidden;}
  .hero-core::before{
    content:"";position:absolute;inset:0;border-radius:50%;
    background:conic-gradient(from 0deg, rgba(124,58,237,0.16), transparent 28%, transparent 72%, rgba(211,100,32,0.16));
    animation:sweep 16s linear infinite;
  }
  .particle{position:absolute;border-radius:50%;background:var(--white);animation:twinkle 6s ease-in-out infinite;}
  .particle.p1{width:5px;height:5px;top:4%;left:38%;animation-delay:0s;}
  .particle.p2{width:4px;height:4px;top:22%;right:8%;background:var(--orange);animation-delay:.8s;}
  .particle.p3{width:6px;height:6px;bottom:20%;left:2%;background:var(--purple);animation-delay:1.6s;}
  .particle.p4{width:4px;height:4px;bottom:6%;right:28%;animation-delay:2.4s;}
  .particle.p5{width:5px;height:5px;top:44%;left:6%;background:var(--orange);animation-delay:3.2s;}
  .hero-core{
    position:relative;z-index:2;width:34%;aspect-ratio:1;border-radius:50%;
    background:var(--white); box-shadow:0 30px 60px -20px rgba(0,0,0,0.5);
    display:flex;align-items:center;justify-content:center;
  }
  .hero-core img{width:56%;}
  .float-chip{
    position:relative; background:rgba(58,20,110,0.55); border:1px solid rgba(255,255,255,0.18);
    padding:10px 16px; border-radius:12px; font-size:12.5px;
    color:#EDE7F9; font-family:'IBM Plex Mono',monospace; letter-spacing:.02em;
    animation:spin-ccw 60s linear infinite; pointer-events:auto;
  }
  .float-chip.c2{animation-delay:-20s;}
  .float-chip.c3{animation-delay:-40s;}

  /* about */
  .about-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start;}
  .pillars{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:12px;}
  .pillar{padding:22px;border-radius:14px;background:var(--white);border:1px solid var(--line);transition:border-color .2s ease, transform .2s var(--ease), box-shadow .2s var(--ease);}
  .pillar:hover{border-color:var(--purple); transform:translateY(-2px); box-shadow:var(--shadow);}
  .pillar .tick{width:30px;height:30px;border-radius:8px;background:var(--lavender);display:flex;align-items:center;justify-content:center;margin-bottom:14px;color:var(--purple);transition:transform .2s var(--ease);}
  .pillar:hover .tick{transform:scale(1.1);}
  .pillar h4{font-size:16px;margin-bottom:6px;}
  .pillar p{font-size:14px;margin:0;}

  .about-quote{
    margin:32px 0; padding:24px 26px; border-left:3px solid var(--purple);
    background:var(--lavender); border-radius:0 12px 12px 0;
  }
  .about-quote-title{
    font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:19px;
    color:var(--ink); margin:0 0 10px;
  }
  .about-quote p:last-child{margin:0; color:var(--text);}
  .about-tagline{
    font-family:'Space Grotesk',sans-serif; font-size:18px; color:var(--purple);
    margin-top:28px;
  }

  .process{display:flex;gap:0;margin-top:40px;border-top:1px solid var(--line);}
  .process-step{flex:1;padding:26px 22px 0;position:relative;transition:transform .2s var(--ease);}
  .process-step:hover{transform:translateY(-2px);}
  .process-step .num{transition:color .2s ease;}
  .process-step:hover .num{color:var(--purple);}
  .process-step + .process-step{border-left:1px solid var(--line);}
  .process-step .num{
    font-family:'IBM Plex Mono',monospace;color:var(--orange);font-size:13px;
    display:block;margin-bottom:10px;
  }
  .process-step h4{font-size:16px;margin-bottom:6px;}
  .process-step p{font-size:14px;}

  /* services */
  .services-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:36px;}
  .tab-label{
    font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
    padding:8px 16px;border-radius:999px;background:var(--lavender);color:var(--purple-dark);
  }
  .service-groups{display:flex;flex-direction:column;gap:52px;}
  .service-group h3{font-size:19px;margin-bottom:20px;padding-bottom:14px;border-bottom:1px dashed var(--line);display:flex;align-items:center;gap:12px;}
  .service-group h3 .dot{width:9px;height:9px;border-radius:50%;background:var(--orange);display:inline-block;}
  .service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
  /* If a group's service count isn't a multiple of 3, the last card ends up
     alone in its row. Instead of leaving it stranded on the left, span it
     across the row and cap its width so it centers like a normal card. */
  .service-grid .service-card:last-child:nth-child(3n+1){
    grid-column:1 / -1; max-width:calc((100% - 40px) / 3); margin:0 auto;
  }
  .service-card{
    background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
    padding:26px; transition:box-shadow .2s ease, transform .2s ease, border-color .2s ease;
  }
  .service-card:hover{box-shadow:var(--shadow);transform:translateY(-3px);border-color:transparent;}
  .service-card .icon{
    width:42px;height:42px;border-radius:10px;margin-bottom:16px;
    background:var(--grad); display:flex;align-items:center;justify-content:center;color:var(--white);
    transition:transform .2s var(--ease);
  }
  .service-card:hover .icon{transform:scale(1.08) rotate(-4deg);}
  .service-card h4{font-size:16.5px;margin-bottom:8px;}
  .service-card p{font-size:14px;margin:0;}

  /* industries */
  .industries-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
  .industry-card{
    background:var(--white);border:1px solid var(--line);border-radius:14px;padding:20px;
    display:flex;flex-direction:column;gap:8px;transition:border-color .2s ease, transform .2s ease;
  }
  .industry-card:hover{border-color:var(--purple);transform:translateY(-2px);}
  .industry-card .mark{font-family:'IBM Plex Mono',monospace;color:var(--orange);font-size:12px;}
  .industry-card h4{font-size:15px;margin:0;}
  .industry-card p{font-size:13px;margin:0;}

  /* portfolio */
  .disclaimer{
    background:var(--lavender); border:1px dashed var(--purple);
    color:var(--purple-dark); font-size:13.5px; padding:14px 20px;border-radius:12px;
    margin-bottom:40px; font-family:'IBM Plex Mono',monospace; letter-spacing:.01em;
  }
  .case-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;}
  .case-card{
    background:var(--white); border:1px solid var(--line); border-radius:var(--radius);
    padding:28px; display:flex;flex-direction:column;gap:14px;
    transition:transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s ease;
  }
  .case-card:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:transparent;}
  .case-card .tag{
    align-self:flex-start; font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.06em;
    text-transform:uppercase; background:var(--ink); color:#F3C8A6; padding:5px 12px;border-radius:999px;
  }
  .case-card h4{font-size:19px;margin:4px 0 0;}
  .case-card p{font-size:14.5px;margin:0;}
  .case-metrics{display:flex;gap:18px;margin-top:6px;flex-wrap:wrap;}
  .case-metrics div b{display:block;font-family:'Space Grotesk',sans-serif;color:var(--ink);font-size:20px;}
  .case-metrics div span{font-size:11.5px;color:var(--text-soft);font-family:'IBM Plex Mono',monospace;}
  .case-card.wide{grid-column:span 2;}

  /* careers */
  .opportunity-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
  .opportunity-card{
    background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
    padding:30px;display:flex;flex-direction:column;
  }
  .opportunity-head{display:flex;align-items:center;gap:12px;margin-bottom:20px;}
  .opp-emoji{font-size:24px;line-height:1;}
  .opportunity-head h3{margin:0;font-size:20px;}
  .opportunity-list{margin-bottom:26px;}
  .opportunity-list li{
    font-size:14.5px;color:var(--text);padding:10px 0;border-bottom:1px dashed var(--line);
    display:flex;align-items:center;gap:10px;
  }
  .opportunity-list li:last-child{border-bottom:none;}
  .opportunity-list li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--orange);flex-shrink:0;}
  .opening-note{margin-top:0;}
  .opening-card{
    display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
    background:var(--white);border:1px solid var(--line);border-radius:14px;padding:18px 22px;margin-bottom:14px;
  }
  .opening-card b{display:block;font-size:15px;color:var(--ink);}
  .opening-card span{font-size:13px;color:var(--text-soft);}
  .field-error{font-size:12.5px;color:#B42318;display:block;margin-top:2px;min-height:16px;}
  .careers-success{
    background:var(--lavender);border:1px solid var(--purple);color:var(--purple-dark);
    border-radius:14px;padding:20px 22px;font-size:14.5px;line-height:1.6;
  }

  /* testimonials */
  .testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .testi-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:26px;transition:transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s ease;}
  .testi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:transparent;}
  .testi-card .quote{font-size:15px;color:var(--text);margin-bottom:18px;}
  .testi-card .who{display:flex;align-items:center;gap:10px;}
  .testi-card .avatar{width:36px;height:36px;border-radius:50%;background:var(--grad);}
  .testi-card .who b{display:block;font-size:14px;color:var(--ink);}
  .testi-card .who span{font-size:12.5px;color:var(--text-soft);}

  /* blog */
  .blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .blog-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s ease;}
  .blog-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:transparent;}
  .blog-card .thumb{height:120px; background:var(--grad); opacity:.9; position:relative;overflow:hidden;}
  .blog-card .thumb .ring{border-color:rgba(255,255,255,0.5);width:70px;height:70px;left:20px;top:20px;border-style:dashed;}
  .blog-icon{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;}
  .blog-icon svg{width:44px;height:44px;overflow:visible;}
  .blog-icon svg{ transition:transform .3s var(--ease); transform-origin:center; }
  .blog-icon.fitness svg .bar{ transition:transform .3s var(--ease); transform-origin:center; }
  .blog-card:hover .blog-icon.edu svg{ transform:translateY(-3px); }
  .blog-card:hover .blog-icon.health svg{ transform:scale(1.08); }
  .blog-card:hover .blog-icon.fitness svg .bar{ transform:rotate(-6deg); }
  .blog-card .body{padding:22px;}
  .blog-card .cat{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--orange);text-transform:uppercase;letter-spacing:.06em;}
  .blog-card h4{font-size:16.5px;margin:8px 0;}
  .blog-card p{font-size:14px;}
  .blog-card .read{font-size:13.5px;font-weight:600;color:var(--purple);display:inline-block;transition:transform .2s var(--ease), color .2s ease;}
  .blog-card .read:hover{transform:translateX(3px);color:var(--purple-dark);}

  /* contact */
  .contact-wrap{display:grid;grid-template-columns:1.1fr 0.9fr;gap:56px;}
  .contact-wrap > *{min-width:0;}
  .form-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:32px;}
  .form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;}
  .field{display:flex;flex-direction:column;gap:6px;min-width:0;}
  .field.full{grid-column:1 / -1;}
  .field label{font-size:13px;font-weight:600;color:var(--ink);}
  .field input, .field select, .field textarea{
    width:100%; min-width:0; max-width:100%;
    border:1px solid var(--line); border-radius:10px; padding:12px 14px; font-family:'Inter',sans-serif;
    font-size:14.5px; background:var(--bg); color:var(--text); resize:vertical;
    transition:border-color .2s ease, box-shadow .2s ease;
  }
  .field select{
    -webkit-appearance:none; -moz-appearance:none; appearance:none;
    text-overflow:ellipsis; white-space:nowrap; overflow:hidden;
    background-image:linear-gradient(45deg, transparent 50%, var(--text-soft) 50%), linear-gradient(135deg, var(--text-soft) 50%, transparent 50%);
    background-position:calc(100% - 20px) center, calc(100% - 15px) center;
    background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
    padding-right:38px;
  }
  .field input:focus, .field select:focus, .field textarea:focus{
    outline:none; border-color:var(--purple); box-shadow:0 0 0 3px rgba(124,58,237,0.15);
  }
  .form-note{font-size:12.5px;color:var(--text-soft);margin-top:10px;}

  .contact-side{display:flex;flex-direction:column;gap:16px;}
  .contact-tile{
    display:flex;align-items:center;gap:14px; background:var(--white); border:1px solid var(--line);
    border-radius:14px; padding:18px 20px; min-width:0; width:100%; max-width:100%;
    transition:border-color .2s ease, transform .2s var(--ease), box-shadow .2s var(--ease);
  }
  .contact-tile .icon{width:40px;height:40px;border-radius:10px;background:var(--lavender);color:var(--purple);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s var(--ease), background-color .2s ease;}
  .contact-tile b{display:block;font-size:14.5px;color:var(--ink);}
  .contact-tile span{font-size:13px;color:var(--text-soft);}
  .contact-tile > div:last-child{min-width:0; flex:1; overflow-wrap:anywhere; word-break:break-word;}
  .contact-tile.link:hover{border-color:var(--purple); transform:translateY(-2px); box-shadow:var(--shadow);}
  .contact-tile.link:hover .icon{transform:scale(1.08); background-color:var(--purple); color:var(--white);}

  .map-card{
    margin-top:44px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
    overflow:hidden;
  }
  .map-card-head{
    display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
    padding:20px 24px;border-bottom:1px solid var(--line);
  }
  .map-card-head b{display:block;font-size:15.5px;color:var(--ink);}
  .map-card-head span{font-size:13px;color:var(--text-soft);}
  .map-card iframe{width:100%;height:320px;border:0;display:block;}

  .cta-band{
    background:var(--ink); color:var(--white); border-radius:24px; padding:52px 48px;
    display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;
    position:relative;overflow:hidden;
  }
  .cta-band h3{color:var(--white);font-size:clamp(22px,2.6vw,30px);margin-bottom:8px;max-width:480px;}
  .cta-band p{color:#CFC3EA;margin:0;max-width:460px;}

  footer{background:var(--ink);color:#CBBEE6;padding:64px 0 52px;position:relative;}
  .visitor-counter{
    position:absolute; right:20px; bottom:14px; z-index:1;
    display:flex; align-items:center; gap:7px;
    background:rgba(255,255,255,0.07); border:1px solid rgba(255,255,255,0.16);
    padding:6px 13px; border-radius:999px; opacity:.92;
    backdrop-filter:blur(6px);
  }
  .visitor-counter .vc-dot{
    width:6px; height:6px; border-radius:50%; background:#4ADE80; flex-shrink:0;
    animation:vcPulse 2.4s ease-out infinite;
  }
  @keyframes vcPulse{
    0%{box-shadow:0 0 0 0 rgba(74,222,128,.55);}
    70%{box-shadow:0 0 0 6px rgba(74,222,128,0);}
    100%{box-shadow:0 0 0 0 rgba(74,222,128,0);}
  }
  .visitor-counter .vc-label{
    font-family:'IBM Plex Mono',monospace; text-transform:uppercase;
    font-size:10px; letter-spacing:.09em; color:#9C8FC2;
  }
  .visitor-counter .vc-count{
    font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:13px;
    color:var(--white); font-variant-numeric:tabular-nums; letter-spacing:.01em;
  }
  .footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;margin-bottom:48px;}
  .footer-logo{height:32px;margin-bottom:16px;}
  .footer-col h5{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#F3C8A6;margin-bottom:16px;}
  .footer-col li{margin-bottom:10px;font-size:14px;}
  .footer-col a:hover{color:var(--white);}
  .footer-bottom{border-top:1px solid rgba(255,255,255,0.12);padding-top:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;font-size:13px;}

  .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease), transform .6s var(--ease);}
  .reveal.in{opacity:1;transform:none;}

  /* stagger cards within grids that share a single reveal wrapper */
  .service-group.reveal .service-card,
  .industries-grid.reveal .industry-card,
  .pillars.reveal .pillar{
    opacity:0; transform:translateY(10px);
    transition:opacity .5s var(--ease), transform .5s var(--ease);
  }
  .service-group.reveal.in .service-card,
  .industries-grid.reveal.in .industry-card,
  .pillars.reveal.in .pillar{ opacity:1; transform:none; }
  .service-grid .service-card:nth-child(1), .industries-grid .industry-card:nth-child(1), .pillars .pillar:nth-child(1){transition-delay:.03s;}
  .service-grid .service-card:nth-child(2), .industries-grid .industry-card:nth-child(2), .pillars .pillar:nth-child(2){transition-delay:.08s;}
  .service-grid .service-card:nth-child(3), .industries-grid .industry-card:nth-child(3), .pillars .pillar:nth-child(3){transition-delay:.13s;}
  .service-grid .service-card:nth-child(4), .industries-grid .industry-card:nth-child(4), .pillars .pillar:nth-child(4){transition-delay:.18s;}
  .service-grid .service-card:nth-child(5), .industries-grid .industry-card:nth-child(5){transition-delay:.23s;}
  .service-grid .service-card:nth-child(6), .industries-grid .industry-card:nth-child(6){transition-delay:.28s;}
  .industries-grid .industry-card:nth-child(n+7){transition-delay:.32s;}
  .service-grid .service-card:nth-child(7){transition-delay:.33s;}

  /* responsive */
  @media (max-width: 980px){
    .hero .wrap{grid-template-columns:1fr;}
    .hero-graphic{height:300px;order:-1;}
    .about-grid{grid-template-columns:1fr;gap:36px;}
    .service-grid{grid-template-columns:repeat(2,1fr);}
    /* At 2 columns, a group with an odd count (like 7) leaves an orphan
       card alone in the last row; center it here too instead of the
       desktop 3-column rule, which no longer applies at this width. */
    .service-grid .service-card:last-child:nth-child(3n+1){
      grid-column:auto; max-width:none; margin:0;
    }
    .service-grid .service-card:last-child:nth-child(odd){
      grid-column:1 / -1; max-width:calc((100% - 20px) / 2); margin:0 auto;
    }
    .industries-grid{grid-template-columns:repeat(3,1fr);}
    .case-grid{grid-template-columns:1fr;}
    .case-card.wide{grid-column:span 1;}
    .testi-grid{grid-template-columns:1fr;}
    .blog-grid{grid-template-columns:1fr;}
    .opportunity-grid{grid-template-columns:1fr;}
    .contact-wrap{grid-template-columns:1fr; row-gap:48px;}
    .contact-side{margin-top:8px;}
    .footer-grid{grid-template-columns:1fr 1fr;}
    .process{flex-direction:column;}
    .process-step + .process-step{border-left:none;border-top:1px solid var(--line);}
  }
  @media (max-width: 720px){
    .nav-links{display:none;}
    .nav-toggle{display:block;}
    .nav .wrap{gap:10px;}
    .nav-logo{margin-right:auto;}
    .nav-cta{margin-left:0;gap:10px;}
    .nav-cta .btn-outline{display:none;}
    .nav-cta .btn-primary{padding:10px 16px;font-size:13px;}
    .cta-full{display:none;}
    .cta-short{display:inline;}
    .nav.open .nav-links{
      display:flex; position:absolute; top:78px; left:0; right:0; background:var(--white);
      flex-direction:column; padding:20px 28px; gap:18px; border-bottom:1px solid var(--line);
      animation:navDrop .25s var(--ease);
    }
    @keyframes navDrop{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:translateY(0);}}
    section{padding:64px 0;}
    .service-grid, .industries-grid{grid-template-columns:1fr 1fr;}
    .form-row{grid-template-columns:1fr;}
    .cta-band{flex-direction:column;align-items:flex-start;}
    .map-card iframe{height:240px;}
    .visitor-counter{padding:5px 10px; gap:5px; right:14px; bottom:10px;}
    .visitor-counter .vc-label{font-size:9px;}
    .visitor-counter .vc-count{font-size:12px;}
    .footer-grid{grid-template-columns:1fr;gap:28px;}
  }

  /* ============================================================
     PREMIUM MICRO-INTERACTIONS & SCROLL EFFECTS
     Additive layer only, no layout, spacing, color or content
     changes. Everything here degrades gracefully and is fully
     disabled under prefers-reduced-motion (see bottom of file).
     ============================================================ */

  /* ---- Alternating directional reveals (About section) ---- */
  .reveal-left{transform:translate(-18px, 10px);}
  .reveal-left.in{transform:none;}
  .reveal-right{transform:translate(18px, 10px);}
  .reveal-right.in{transform:none;}

  /* ---- Animated underline for inline text links (footer, body copy) ---- */
  .footer-col a{position:relative; transition:color .2s ease, transform .2s var(--ease);}
  .footer-col a::after{
    content:""; position:absolute; left:0; bottom:-2px; width:0; height:1px;
    background:#F3C8A6; transition:width .25s var(--ease);
  }
  .footer-col a:hover{transform:translateX(2px);}
  .footer-col a:hover::after{width:100%;}

  /* ---- Gradient glow + ripple container for CTA buttons ---- */
  .btn{position:relative; overflow:hidden; isolation:isolate;}
  .btn-primary::before{
    content:""; position:absolute; inset:0; border-radius:inherit; z-index:-1;
    background:linear-gradient(120deg, #9B5CF6, #D36420, #9B5CF6);
    background-size:200% 200%; opacity:0;
    transition:opacity .3s var(--ease);
  }
  .btn-primary:hover::before{opacity:1; animation:gradientShift 3s ease infinite;}
  @keyframes gradientShift{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}
  .btn-primary{animation:ctaPulse 6s ease-in-out infinite;}
  @keyframes ctaPulse{0%,92%,100%{box-shadow:0 14px 30px -12px rgba(211,100,32,0.55);}96%{box-shadow:0 14px 34px -10px rgba(211,100,32,0.8);}}

  .btn .ripple{
    position:absolute; border-radius:50%; transform:scale(0); pointer-events:none;
    background:rgba(255,255,255,0.55); animation:rippleEffect .55s ease-out forwards;
  }
  .btn-outline .ripple{background:rgba(124,58,237,0.25);}
  @keyframes rippleEffect{to{transform:scale(1); opacity:0;}}

  /* ---- Magnetic primary buttons (JS sets --mx/--my on mousemove) ---- */
  .btn-magnetic{transition:transform .25s var(--ease);}
  .btn-magnetic:hover{transform:translate(var(--mx, 0), var(--my, 0));}

  /* ---- Service card gradient border glow on hover ---- */
  .service-card{
    position:relative;
    transition:transform .18s var(--ease), box-shadow .25s var(--ease), border-color .2s ease;
  }
  .service-card::before{
    content:""; position:absolute; inset:0; border-radius:inherit; padding:1px; z-index:0;
    background:linear-gradient(135deg, var(--purple), var(--orange));
    -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite:xor; mask-composite:exclude;
    opacity:0; transition:opacity .3s ease; pointer-events:none;
  }
  .service-card:hover::before{opacity:.55;}
  .service-card > *{position:relative; z-index:1;}
  .service-card:hover{box-shadow:0 26px 60px -22px rgba(34,6,78,0.4);}

  /* ---- Icon micro-bounce shared across card types ---- */
  .industry-card .mark{transition:transform .2s var(--ease), color .2s ease;}
  .industry-card:hover .mark{transform:translateY(-2px); color:var(--purple);}

  /* ---- Stat number count-up targets: reserve layout, no visual jump ---- */
  .hero-stat b, .case-metrics b{font-variant-numeric:tabular-nums;}

  /* ---- Footer fade-in as a whole ---- */
  footer.reveal{opacity:0; transform:translateY(20px); transition:opacity .7s var(--ease), transform .7s var(--ease);}
  footer.reveal.in{opacity:1; transform:none;}

  /* ---- Masked word-by-word headline reveal (section titles) ---- */
  .word-mask{display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.08em; margin-bottom:-.08em;}
  .word-inner{display:inline-block; transform:translateY(115%); opacity:0; transition:transform .55s var(--ease), opacity .5s var(--ease);}
  .reveal.in .word-inner{transform:translateY(0); opacity:1;}

  /* ---- Decorative low-opacity background blobs (non-interactive) ---- */
  .bg-blob{position:absolute; border-radius:50%; filter:blur(40px); pointer-events:none; z-index:0; opacity:.05;}
  .bg-blob.purple{background:var(--purple);}
  .bg-blob.orange{background:var(--orange);}
  #about, #services{position:relative; overflow:hidden;}

  @media (hover:hover) and (pointer:fine){
    .bg-blob{animation:blobDrift 50s ease-in-out infinite;}
  }
  @keyframes blobDrift{
    0%,100%{transform:translate(0,0);}
    50%{transform:translate(24px,-18px);}
  }

  /* ---- Image / graphic hover zoom (blog thumb) ---- */
  .blog-card .thumb{overflow:hidden;}
  .blog-card .thumb .blog-icon{transition:transform .35s var(--ease);}
  .blog-card:hover .thumb .blog-icon{transform:scale(1.06);}

  /* ---- Active nav link indicator while scrolling ---- */
  .nav-links a.active{color:var(--purple);}
  .nav-links a.active::after{width:100%;}

  /* ---- Disable all of the above under reduced motion, and make sure
     nothing is left permanently invisible because its "in" trigger
     never fires an animation. ---- */
  @media (prefers-reduced-motion: reduce){
    .word-inner{opacity:1 !important; transform:none !important;}
    .reveal-left, .reveal-right{transform:none !important;}
    .btn-primary{animation:none !important;}
    .btn-primary::before{display:none !important;}
    .bg-blob{animation:none !important; opacity:.03 !important;}
    .service-card{transform:none !important;}
    .btn-magnetic:hover{transform:none !important;}
  }
