/* ==========================================================
   DESIGN SYSTEM TOKENS
   The only place values live. Components use var(--token);
   never write a raw colour, font size, weight, space or radius
   in a component rule. See STYLE_GUIDE.md.
   ========================================================== */
:root {
  /* ---------- Colour: brand ---------- */
  --accent: #1f87f7;          /* primary blue: links, buttons, highlights */
  --accent-700: #09203b;      /* deep blue (gradients, deep shade) */
  --accent-300: #31dfe6;      /* light blue on dark surfaces */
  --accent-200: #bddcfd;      /* pale blue */
  --accent-soft: #e0efff;     /* tint backgrounds (100) */
  --accent-pale: #e0efff;      /* fixed pale blue: text on accent / dark surfaces (same in both themes) */
  --navy: #09203b;            /* fixed brand navy */
  --btn: #09203b;             /* solid button / active pill fill (navy in light, accent in dark) */
  --accent-ink: #ffffff;      /* text on --accent */
  --accent-hover: #1672d6;    /* hover state of --accent */

  color-scheme: light;

  /* ---------- Colour: neutrals ---------- */
  --ink: #09203b;             /* headings and primary text */
  --ink-2: #3a4d63;           /* body text */
  --muted: #6c7e92;           /* secondary text on light */
  --ink-faint: #c2ccd7;       /* unrevealed text, scrollbar */
  --line: rgba(9, 32, 59, 0.1);
  --bg: #f1f5f9;              /* page background */
  --surface: #ffffff;         /* cards */
  --surface-2: #e4ebf3;       /* quiet surfaces */
  --white: #ffffff;
  --header-bg: rgba(255, 255, 255, 0.82);
  --header-line: rgba(255, 255, 255, 0.8);
  --pill-bg: rgba(255, 255, 255, 0.9);
  --hero-grad: linear-gradient(180deg, #b9dcff 0%, #d9ecff 38%, #ecf4fb 70%, #f1f5f9 100%);
  --black: #000000;

  /* ---------- Colour: dark surfaces ---------- */
  --dark: #09203b;
  --dark-2: #0f2c4e;
  --dark-3: #183a63;
  --on-dark-0: #e6eef7;       /* text on dark: nearly white (footer links) */
  --on-dark-1: #b4c3d4;       /* text on dark: strongest muted */
  --on-dark-2: #a2b2c5;
  --on-dark-3: #8497ad;
  --on-dark-4: #778ba2;       /* faintest */

  /* ---------- Colour: semantic ---------- */
  --alert: #d4452f;
  --alert-soft: #fbe5e0;
  --success: #1f7a4d;
  --success-soft: #e1f4e8;
  --star: #f5b301;

  /* ---------- Typography: families ---------- */
  --font-display: "Inter Tight", "Inter", system-ui, sans-serif;   /* headings, numbers */
  --font-body: "Inter", system-ui, sans-serif;                    /* paragraphs, UI */

  /* ---------- Typography: fixed scale (px) ---------- */
  --fs-11: 11px;  --fs-12: 12px;  --fs-13: 13px;  --fs-14: 14px;  --fs-15: 15px;
  --fs-16: 16px;  --fs-17: 17px;  --fs-18: 18px;  --fs-20: 20px;  --fs-22: 22px;
  --fs-24: 24px;  --fs-26: 26px;  --fs-28: 28px;  --fs-30: 30px;

  /* ---------- Typography: fluid roles ---------- */
  --fs-display: clamp(42px, 7.6vw, 118px);     /* hero H1 */
  --fs-display-2: clamp(42px, 7vw, 100px);     /* CTA headline */
  --fs-display-3: clamp(40px, 5.4vw, 80px);    /* service page H1 */
  --fs-card-title: var(--fs-26);               /* heading of every card (problem, process, industry, project, feature) */
  --fs-h2: clamp(36px, 5.4vw, 72px);           /* section heading */
  --fs-statement: clamp(30px, 4.4vw, 60px);    /* about statement */
  --fs-title-xl: clamp(34px, 4.2vw, 60px);     /* service card title */
  --fs-title-lg: clamp(26px, 3.4vw, 44px);     /* footer email */
  --fs-title-md: clamp(24px, 2.6vw, 34px);     /* comparison titles */
  --fs-title-sm: clamp(20px, 2.2vw, 28px);     /* callout */
  --fs-quote: clamp(20px, 1.9vw, 25px);        /* testimonial quote */
  --fs-stat: clamp(52px, 6vw, 84px);           /* big numbers */
  --fs-lead: clamp(17px, 1.5vw, 20px);         /* section intro */
  --fs-lead-hero: clamp(16px, 1.4vw, 19px);    /* hero intro */
  --fs-lead-card: clamp(15px, 1.4vw, 18px);    /* service description */
  --fs-lead-sm: clamp(15px, 1.5vw, 18px);

  /* ---------- Typography: weight, line height, tracking ---------- */
  --fw-regular: 400;  --fw-medium: 500;  --fw-semibold: 600;  --fw-bold: 700;
  --lh-none: 1;  --lh-tight: 1.05;  --lh-snug: 1.2;  --lh-normal: 1.4;  --lh-body: 1.6;
  --tracking: -0.04em;        /* one letter-spacing for every heading and paragraph */

  /* ---------- Spacing scale (px) ---------- */
  --sp-2: 2px;   --sp-4: 4px;   --sp-6: 6px;   --sp-8: 8px;   --sp-10: 10px;  --sp-12: 12px;
  --sp-14: 14px; --sp-16: 16px; --sp-20: 20px; --sp-24: 24px; --sp-28: 28px;  --sp-32: 32px;
  --sp-40: 40px; --sp-48: 48px; --sp-64: 64px; --sp-80: 80px;

  /* ---------- Layout ---------- */
  --container: 1240px;
  --gutter: clamp(16px, 4vw, 40px);
  --section: clamp(72px, 10vw, 140px);   /* the gap between every pair of sections */
  --pad-card: 26px;                      /* inner padding of cards */
  --card-pad: var(--sp-24);              /* phones: same inner padding on all four sides of the big hero and footer cards */
  --card-pad-lg: var(--sp-32);           /* phones: inner padding of the Process and CTA cards */
  --gap-grid: 14px;                      /* gap between cards in a grid */

  /* ---------- Radius ---------- */
  --r-xs: 6px;
  --r-sm: 12px;
  --r-tile: 14px;
  --r-md: 20px;
  --r-lg: 32px;
  --r-pill: 999px;

  /* ---------- Shadow ---------- */
  --shadow-pop: 0 16px 30px -18px rgba(0, 0, 0, .4);

  /* ---------- Motion ---------- */
  --ease-out: cubic-bezier(.2, .8, .2, 1);
  --ease-soft: cubic-bezier(.3, 1, .4, 1);
  --ease-spring: cubic-bezier(.3, 1.6, .5, 1);
  --ease-pop: cubic-bezier(.2, .9, .25, 1.15);
  --ease-lift: cubic-bezier(.2, .7, .2, 1);

  /* ---------- Layers ---------- */
  --z-consent: 300;  --z-skip: 200;  --z-header: 100;  --z-menu: 99;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --accent-hover: #4aa0ff;
  --accent-200: #1c4a80;
  --accent-soft: #12365f;
  --btn: #1f87f7;
  --ink: #e8f0fa;
  --ink-2: #b4c3d4;
  --muted: #8497ad;
  --ink-faint: #3a5170;
  --line: rgba(255, 255, 255, 0.12);
  --bg: #061426;
  --surface: #0d2340;
  --surface-2: #11294a;
  --dark: #0a1d36;
  --dark-2: #10294a;
  --dark-3: #183a63;
  --header-bg: rgba(13, 35, 64, 0.82);
  --header-line: rgba(255, 255, 255, 0.1);
  --pill-bg: rgba(13, 35, 64, 0.9);
  --hero-grad: linear-gradient(180deg, #0a2447 0%, #081c38 40%, #061628 72%, #050f1d 100%);
}


/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
/* every element resolves the shared tracking against its own font-size (em is inherited as pixels otherwise) */
* { letter-spacing: var(--tracking); }
html { scroll-behavior: smooth; scroll-padding-top: 96px; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--fs-16);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; letter-spacing: var(--tracking); }
ul { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4, p { margin: 0; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: var(--r-xs); }

.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: 0; margin-top: var(--section); }  /* one gap between all sections */
.section.process, .section.cta { padding-block: var(--section); }  /* card sections keep their inner padding */
.skip-link { position: absolute; left: -999px; top: 8px; background: var(--btn); color: var(--white); padding: var(--sp-10) var(--sp-16); border-radius: 8px; z-index: var(--z-skip); }
.skip-link:focus { left: 8px; }

/* ---------- Type ---------- */
.h-display {
  font-family: var(--font-display);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--tracking);
  line-height: 0.95;
}
.h-section { font-size: var(--fs-h2); }
.lead { font-size: var(--fs-lead); color: var(--ink-2); max-width: 58ch; }
.tag { font-size: var(--fs-12); letter-spacing: var(--tracking); text-transform: uppercase; color: var(--muted); font-weight: var(--fw-medium); }
.sec-head { display: grid; grid-template-columns: 1fr; gap: var(--sp-16); margin-bottom: clamp(24px, 4vw, 56px); }
.sec-head .lead { max-width: 44ch; }
@media (min-width: 900px) {
  .sec-head { grid-template-columns: 1.4fr 1fr; align-items: end; gap: var(--sp-16) 60px; }
  .sec-head--top { align-items: start; }
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: var(--sp-10);
  padding: var(--sp-14) var(--sp-24); border-radius: var(--r-pill);
  font-weight: var(--fw-medium); font-size: var(--fs-15); border: 1px solid transparent;
  cursor: pointer; transition: transform .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
  white-space: nowrap;
}
.btn i { font-size: var(--fs-14); transform: rotate(-45deg); transition: transform .2s; }
.btn:hover i { transform: translate(2px, -2px) rotate(-45deg); }
.btn--primary { background: var(--accent); color: var(--accent-ink); }
.btn--dark { background: var(--btn); color: var(--white); }
.btn--ghost { border-color: var(--line); background: transparent; }
.btn--ghost:hover { border-color: var(--ink); }
.btn--light { background: var(--white); color: var(--navy); }

/* blob hover (from codepen hilwat/BeemVX): gooey blobs rise and fill the button; button look itself is unchanged */
.btn { position: relative; isolation: isolate; --blob: var(--accent); }
.btn--primary { --blob: var(--ink); }
.btn__blobs { position: absolute; inset: 0; z-index: -1; border-radius: inherit; overflow: hidden; filter: url("#btn-goo"); pointer-events: none; }
.btn__blob { position: absolute; top: 2px; width: 25%; height: 100%; border-radius: 100%; background: var(--blob); transform: translate3d(0, 150%, 0) scale(1.7); transition: transform .45s ease; }
.btn__blob:nth-child(1) { left: 0; }
.btn__blob:nth-child(2) { left: 30%; transition-delay: .08s; }
.btn__blob:nth-child(3) { left: 60%; transition-delay: .16s; }
.btn__blob:nth-child(4) { left: 90%; transition-delay: .24s; }
.btn:hover, .btn:focus-visible { color: var(--white); }
.btn:hover .btn__blob, .btn:focus-visible .btn__blob { transform: translate3d(0, 0, 0) scale(1.7); }
@media (prefers-reduced-motion: reduce) { .btn__blob { transition: none; } }

/* ==========================================================
   HEADER
   ========================================================== */
.header { position: fixed; top: clamp(26px, 2.6vw, 34px); left: 0; right: 0; z-index: var(--z-header); pointer-events: none; }
.header__inner {
  position: relative; pointer-events: auto; display: flex; align-items: center; justify-content: space-between; height: 64px; gap: var(--sp-24);
  width: calc(100% - 2 * clamp(22px, 3vw, 40px)); max-width: 1180px; margin-inline: auto;
  padding: 0 var(--sp-10) 0 var(--sp-24); border-radius: var(--r-pill);
  background: var(--header-bg); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--header-line); box-shadow: 0 10px 34px -14px rgba(16, 16, 16, 0.22);
}
.logo { font-family: var(--font-display); font-weight: var(--fw-bold); font-size: var(--fs-24); letter-spacing: var(--tracking); display: inline-flex; align-items: flex-start; gap: var(--sp-2); }
.logo sup { font-size: 10px; font-weight: var(--fw-medium); margin-top: 3px; }
.nav { display: none; }
.nav__list { display: flex; align-items: center; gap: var(--sp-4); }
.nav__link { display: inline-flex; align-items: center; gap: var(--sp-6); padding: var(--sp-10) var(--sp-14); font-size: var(--fs-15); border-radius: var(--r-pill); transition: background .2s; }
.nav__link:hover { background: var(--bg); }
.has-menu { position: relative; }
.has-menu > .nav__link i { font-size: var(--fs-11); transition: transform .2s; }
.has-mega { position: static; }
.mega {
  position: absolute; top: calc(100% + 12px); left: 0; right: 0; display: grid; gap: var(--sp-16); padding: var(--sp-16);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: 0 30px 70px -24px rgba(0,0,0,.28);
  opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .22s ease, transform .22s ease, visibility .22s;
}
.mega::before { content: ""; position: absolute; left: 0; right: 0; top: calc(var(--sp-16) * -1); height: var(--sp-16); }
.has-mega:hover .mega, .has-mega:focus-within .mega { opacity: 1; visibility: visible; transform: none; }
.has-mega:hover > .nav__link i, .has-mega:focus-within > .nav__link i { transform: rotate(180deg); }
.has-mega:hover > .nav__link { background: var(--bg); }
.mega--services { grid-template-columns: 1fr 300px; }
.mega--services .mega__foot { grid-column: 1 / -1; }
.mega__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); align-content: start; }
.mega__item, .mega__head { display: flex; align-items: center; gap: var(--sp-14); border-radius: var(--r-sm); transition: background .2s; }
.mega__item { padding: var(--sp-14); }
.mega__item:hover { background: var(--bg); }
.mega__ico { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-16); transition: background .2s, color .2s; }
.mega__item:hover .mega__ico, .mega__head:hover .mega__ico { background: var(--accent); color: var(--accent-ink); }
.mega__txt { display: grid; gap: var(--sp-2); }
.mega strong { font-family: var(--font-display); font-size: var(--fs-16); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); }
.mega__txt span { font-size: var(--fs-13); color: var(--muted); line-height: var(--lh-normal); }
.mega__promo { display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-16); padding: var(--sp-24); border-radius: var(--r-md); background: var(--accent); color: var(--white); }
.mega__promo h3 { font-family: var(--font-display); font-size: var(--fs-24); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.mega__promo p { font-size: var(--fs-14); color: var(--accent-pale); margin-top: calc(var(--sp-8) * -1); }
.mega__promo .btn { align-self: flex-start; }
.mega__groups { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-4) var(--sp-8); }
.mega__group { padding: var(--sp-14); border-radius: var(--r-sm); }
.mega__head { margin-bottom: var(--sp-10); }
.mega__group ul { display: grid; gap: var(--sp-2); padding-left: calc(44px + var(--sp-14)); }
.mega__group li a { display: block; padding: var(--sp-2) 0; font-size: var(--fs-13); color: var(--ink-2); transition: color .2s; }
.mega__group li a:hover { color: var(--accent); }
.mega__foot { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-16); padding: var(--sp-14) var(--sp-14) var(--sp-4); border-top: 1px solid var(--line); font-size: var(--fs-14); color: var(--muted); }
.mega__foot a { color: var(--accent); font-weight: var(--fw-medium); }
.mega__foot a i { font-size: var(--fs-12); transform: rotate(-45deg); display: inline-block; }
.header__cta { display: none; }
.burger { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 50%; background: transparent; display: grid; place-items: center; cursor: pointer; }
.burger span { display: block; width: 18px; height: 1.5px; background: var(--ink); position: relative; transition: .25s; }
.burger span::before, .burger span::after { content: ""; position: absolute; left: 0; width: 100%; height: 1.5px; background: var(--ink); transition: .25s; }
.burger span::before { top: -6px; } .burger span::after { top: 6px; }
.burger[aria-expanded="true"] span { background: transparent; }
.burger[aria-expanded="true"] span::before { top: 0; transform: rotate(45deg); }
.burger[aria-expanded="true"] span::after { top: 0; transform: rotate(-45deg); }

.mobile-nav {
  position: fixed; top: 100px; bottom: 12px; left: clamp(22px, 3vw, 40px); right: clamp(22px, 3vw, 40px); background: var(--surface); z-index: var(--z-menu); border-radius: 28px;
  padding: var(--sp-12) var(--sp-24) var(--sp-28); overflow-y: auto;
  transform: translateY(-12px); opacity: 0; visibility: hidden; transition: .25s;
}
.mobile-nav.is-open { transform: none; opacity: 1; visibility: visible; }
.mobile-nav a { display: block; padding: var(--sp-14) 0; font-family: var(--font-display); font-size: var(--fs-30); letter-spacing: var(--tracking); border-bottom: 1px solid var(--line); }
.mobile-nav .btn { display: flex; justify-content: center; margin-top: var(--sp-24); font-size: var(--fs-16); font-family: var(--font-body); letter-spacing: var(--tracking); border: 0; padding: var(--sp-16) var(--sp-24); color: var(--accent-ink); }
.m-acc__btn { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: var(--sp-14) 0; background: none; border: 0; border-bottom: 1px solid var(--line); font-family: var(--font-display); font-size: var(--fs-30); letter-spacing: var(--tracking); color: var(--ink); text-align: left; cursor: pointer; }
.m-acc__btn i { font-size: var(--fs-14); flex: none; transition: transform .3s ease; }
.m-acc.is-open .m-acc__btn i { transform: rotate(180deg); }
.m-acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s ease; }
.m-acc.is-open .m-acc__panel { grid-template-rows: 1fr; }
.m-acc__inner { overflow: hidden; min-height: 0; }
.m-acc__inner a { display: block; padding: var(--sp-12) 0 var(--sp-12) var(--sp-16); border: 0; border-left: 2px solid var(--accent-soft); margin: var(--sp-4) 0; font-family: var(--font-body); letter-spacing: var(--tracking); transition: border-color .2s, padding .2s; }
.m-acc__inner a:hover, .m-acc__inner a:focus-visible { border-left-color: var(--accent); padding-left: var(--sp-20); }
.m-acc__inner strong { display: block; font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-20); letter-spacing: var(--tracking); }
.m-acc__inner span { display: block; font-size: var(--fs-14); color: var(--muted); letter-spacing: var(--tracking); margin-top: var(--sp-2); }
.m-acc.is-open .m-acc__inner { padding-bottom: var(--sp-8); border-bottom: 1px solid var(--line); }
.m-acc.is-open .m-acc__btn { border-bottom-color: transparent; }

/* themed scrollbars */
html { scrollbar-width: thin; scrollbar-color: var(--ink-faint) var(--bg); }
.mobile-nav { scrollbar-width: thin; scrollbar-color: var(--accent) transparent; overscroll-behavior: contain; }

@media (min-width: 1000px) {
  .nav { display: block; }
  .header__cta { display: inline-flex; }
  .burger, .mobile-nav { display: none; }
}

/* ==========================================================
   HERO (full-bleed card, centered content)
   ========================================================== */
.hero { padding: 10px clamp(8px, 1vw, 14px) 0; }
.hero__card {
  position: relative; overflow: hidden; isolation: isolate;
  border-radius: clamp(24px, 3vw, 40px);
  background: var(--hero-grad);
  min-height: calc(100vh - 20px); min-height: calc(100svh - 20px);
  padding: 148px var(--gutter) clamp(24px, 3vw, 40px);
  display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-48);
}
.hero__bg { position: absolute; inset: 0; z-index: -1; }
.hero__bg .orb { position: absolute; border-radius: 50%; filter: blur(60px); }
.orb--1 { width: 54%; aspect-ratio: 1; background: var(--accent); left: -14%; bottom: -46%; opacity: .55; animation: float 14s ease-in-out infinite; }
.orb--2 { width: 42%; aspect-ratio: 1; background: var(--accent-300); right: -6%; bottom: -34%; opacity: .6; animation: float 11s ease-in-out infinite reverse; }
.orb--3 { width: 34%; aspect-ratio: 1; background: var(--white); left: 6%; top: 8%; opacity: .75; animation: float 12s ease-in-out infinite; }
.orb--4 { width: 30%; aspect-ratio: 1; background: var(--white); right: 4%; top: 22%; opacity: .7; animation: float 10s ease-in-out infinite reverse; }
@keyframes float { 0%,100% { transform: translate(0,0); } 50% { transform: translate(3%, -5%); } }

.hero__content { display: flex; flex-direction: column; align-items: center; text-align: center; margin-block: auto; }
.badge-row { display: inline-flex; align-items: center; gap: var(--sp-12); padding: 7px var(--sp-16) 7px var(--sp-8); border-radius: var(--r-pill); background: var(--pill-bg); box-shadow: 0 6px 20px -10px rgba(16,16,16,.25); font-size: var(--fs-13); font-weight: var(--fw-medium); margin-bottom: var(--sp-28); text-align: left; }
.avatars { display: flex; }
.avatars i { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--white); margin-left: -8px; background: var(--c, #999); }
.avatars i:first-child { margin-left: 0; }
.avatars--lg i { width: 48px; height: 48px; margin-left: -12px; border-color: var(--surface); }
.avatars--lg i:first-child { margin-left: 0; }
.hero h1 { font-size: var(--fs-display); max-width: 13ch; line-height: .96; }
.hero h1 em { font-style: normal; color: var(--accent); }
.hero__lead { margin-top: 26px; max-width: 54ch; font-size: var(--fs-lead-hero); color: var(--ink-2); }
.hero__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sp-10); margin-top: 30px; }
.btn--glass { background: var(--pill-bg); color: var(--ink); border-color: rgba(255,255,255,.9); backdrop-filter: blur(8px); }
.hero__trust { margin-top: var(--sp-24); font-size: var(--fs-13); color: var(--ink-2); max-width: 44ch; }

@media (max-width: 640px) {
  .hero__card { padding-top: 124px; min-height: 0; }
}

/* ---------- Logo marquee ---------- */
.logos { padding-block: var(--sp-40) 0; }
.logos__label { text-align: center; font-size: var(--fs-14); color: var(--muted); margin-bottom: var(--sp-24); }
.marquee { overflow: hidden; mask-image: linear-gradient(90deg, transparent, var(--black) 12%, var(--black) 88%, transparent); }
/* seamless loop: main.js clones the logos until the strip is wider than two screens, then sets --shift (one full set) and --dur */
.marquee__track { display: flex; align-items: center; width: max-content; animation: marquee var(--dur, 40s) linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee__item { flex: none; display: inline-flex; align-items: center; padding-right: var(--sp-64); }
.marquee__item img { display: block; height: var(--h, 44px); width: auto; max-width: none; filter: grayscale(1); opacity: .6; transition: filter .3s ease, opacity .3s ease; }
.marquee__item:hover img { filter: none; opacity: 1; }
@keyframes marquee { to { transform: translateX(calc(var(--shift, 50%) * -1)); } }
@media (max-width: 639px) { .marquee__item { padding-right: var(--sp-40); } .marquee__item img { height: calc(var(--h, 44px) * .8); } }
@media (prefers-reduced-motion: reduce) { .marquee__track { animation: none; } }

/* ==========================================================
   STATEMENT + STATS
   ========================================================== */
.statement { display: grid; gap: var(--sp-28); }
.statement__big { font-family: var(--font-display); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: 1.04; font-size: var(--fs-statement); }
.statement__big .w { color: var(--ink-faint); transition: color .25s ease; }
.statement__big .w.on { color: var(--ink); }
.statement__big { max-width: 1000px; }

.bento { display: grid; gap: var(--sp-14); margin-top: clamp(48px, 7vw, 90px); grid-template-columns: 1fr; }
.bento__card { border-radius: var(--r-md); padding: var(--sp-24); min-height: 260px; display: flex; flex-direction: column; justify-content: space-between; background: var(--surface); }
.bento__card--dark { background: var(--dark); color: var(--white); }
.bento__card--accent { background: var(--accent); color: var(--white); }
.bento__card p { font-size: var(--fs-14); opacity: .8; max-width: 28ch; }
.stat { font-family: var(--font-display); font-weight: var(--fw-medium); letter-spacing: var(--tracking); font-size: var(--fs-stat); line-height: var(--lh-none); }
.stat sup { font-size: .45em; vertical-align: top; position: relative; top: .15em; }
.bento__label { font-size: var(--fs-15); }
.ring { width: 78px; height: 78px; border-radius: 50%; border: 1px dashed currentColor; display: grid; place-items: center; align-self: flex-end; opacity: .8; }
.ring svg { width: 30px; height: 30px; }
.bento__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--sp-12); }
@media (min-width: 640px) { .bento { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .bento { grid-template-columns: repeat(4, 1fr); } }

/* ==========================================================
   SERVICES
   ========================================================== */
/* ---------- Stacking service sections ---------- */
.svc-stack { display: grid; gap: var(--sp-16); }
.svc-card {
  --bg-c: var(--surface); --fg: var(--ink); --fg2: var(--ink-2); --fg3: var(--muted); --ln: var(--line); --viz: var(--bg);
  position: relative; overflow: hidden; isolation: isolate;
  background: var(--bg-c); color: var(--fg); border-radius: var(--r-lg);
  padding: clamp(26px, 4vw, 56px); display: grid; gap: clamp(28px, 4vw, 56px); grid-template-columns: 1fr;
  transform-origin: 50% 0; transform: scale(var(--s, 1));
}
.svc-card::after { content: ""; position: absolute; inset: 0; z-index: 5; border-radius: inherit; background: var(--black); opacity: var(--o, 0); pointer-events: none; }
.c-white { --bg-c: var(--surface); --viz: #e4ebf3; }
.c-dark  { --bg-c: var(--dark); --fg: var(--white); --fg2: #b4c3d4; --fg3: var(--on-dark-3); --ln: rgba(255,255,255,.16); --viz: #0f2c4e; }
.c-soft  { --bg-c: var(--accent-soft); --fg2: #1d3b5e; --fg3: #4f6a8a; --ln: rgba(16,16,16,.14); --viz: #c4e0ff; }
.c-accent{ --bg-c: var(--accent); --fg: var(--white); --fg2: var(--accent-pale); --fg3: #d3e9ff; --ln: rgba(255,255,255,.3); --viz: #4a9cf9; }
.c-cream { --bg-c: var(--surface-2); --viz: #d3deea; }

.svc-card__main { display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-32); min-width: 0; }
.svc-card__body { flex: 1; display: flex; flex-direction: column; justify-content: center; }
.svc-card__title { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-title-xl); line-height: var(--lh-none); letter-spacing: var(--tracking); }
.svc-card__desc { margin-top: var(--sp-24); color: var(--fg2); font-size: var(--fs-lead-card); line-height: var(--lh-body); max-width: 42ch; }
.svc-card__tags { display: flex; flex-wrap: wrap; gap: var(--sp-8); margin-top: 30px; }
.svc-card__tags li { font-size: var(--fs-12); padding: 5px var(--sp-12); border: 1px solid var(--ln); border-radius: var(--r-pill); color: var(--fg2); }
.svc-card__foot { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--sp-16); padding-top: var(--pad-card); border-top: 1px solid var(--ln); }
.svc-card__price { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: 34px; line-height: var(--lh-tight); display: flex; flex-direction: column; }
.svc-card__price small { font-family: var(--font-body); font-weight: var(--fw-regular); font-size: var(--fs-12); color: var(--fg3); }

/* visual side */
.viz { position: relative; min-height: 280px; display: grid; place-items: center; padding: clamp(18px, 2.6vw, 34px); color: var(--ink); }

/* white mockups on light cards */
.c-white .mb, .c-white .node { border: 1px solid var(--line); }

/* web */
.mb { position: relative; z-index: 1; width: min(100%, 400px); background: var(--surface); border-radius: var(--r-tile); box-shadow: 0 30px 50px -26px rgba(0,0,0,.4); overflow: hidden; }
.mb__bar { display: flex; align-items: center; gap: var(--sp-6); padding: var(--sp-10) var(--sp-12); border-bottom: 1px solid var(--line); }
.mb__bar i { width: 8px; height: 8px; border-radius: 50%; background: #d9d9d3; }
.mb__bar span { margin-left: var(--sp-8); font-size: var(--fs-11); color: var(--muted); background: var(--bg); padding: 3px var(--sp-12); border-radius: var(--r-pill); }
.mb__body { padding: var(--sp-14); display: grid; gap: var(--sp-12); }
.mb__hero { border-radius: 10px; padding: 18px var(--sp-14); background: linear-gradient(135deg, var(--accent-soft), var(--surface)); display: flex; flex-direction: column; gap: var(--sp-8); }
.mb__hero b { display: block; height: 12px; border-radius: var(--r-xs); background: rgba(16,16,16,.16); width: 85%; }
.mb__hero b.w60 { width: 60%; }
.mb__hero u { text-decoration: none; align-self: flex-start; margin-top: var(--sp-4); background: var(--accent); color: var(--white); font-size: var(--fs-11); padding: var(--sp-6) var(--sp-12); border-radius: var(--r-pill); }
.mb__cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-8); }
.mb__cols i { height: 56px; border-radius: 8px; background: var(--bg); }

/* paid */
.dash { position: relative; z-index: 1; width: min(100%, 420px); background: var(--dark-3); color: var(--white); border-radius: var(--r-tile); padding: var(--sp-16); box-shadow: 0 30px 50px -26px rgba(0,0,0,.6); }
.dash__top { display: flex; justify-content: space-between; align-items: center; font-size: var(--fs-13); }
.dash__top em { font-style: normal; color: #9a9a94; font-size: var(--fs-12); }
.dash__pills { display: flex; gap: var(--sp-6); margin-top: var(--sp-12); }
.dash__pills span { font-size: var(--fs-11); padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: rgba(255,255,255,.1); }
.bars { display: flex; align-items: flex-end; gap: 7px; height: 150px; margin-top: var(--sp-16); }
.bars i { flex: 1; height: var(--h); border-radius: var(--r-xs) var(--r-xs) 2px 2px; background: linear-gradient(#6fb5fa, var(--accent)); }
.bars i:last-child { background: linear-gradient(var(--white), var(--accent-200)); }

/* seo */
.serp { position: relative; z-index: 1; width: min(100%, 420px); display: grid; gap: var(--sp-10); }
.serp__search { display: flex; align-items: center; gap: var(--sp-10); background: var(--surface); border-radius: var(--r-pill); padding: var(--sp-12) 18px; font-size: var(--fs-14); box-shadow: var(--shadow-pop); }
.serp__search svg { width: 17px; height: 17px; color: var(--muted); flex: none; }
.serp__ai { background: var(--surface); border-radius: var(--r-tile); padding: var(--sp-14) var(--sp-16); border-left: 3px solid var(--accent); font-size: var(--fs-13); box-shadow: var(--shadow-pop); }
.serp__ai small { display: block; color: var(--accent); font-weight: var(--fw-medium); margin-bottom: var(--sp-4); }
.serp__res { position: relative; background: var(--surface); border-radius: var(--r-tile); padding: var(--sp-14) var(--sp-16); display: grid; gap: var(--sp-6); box-shadow: var(--shadow-pop); }
.serp__res b { color: var(--accent); font-weight: var(--fw-medium); font-size: var(--fs-14); padding-right: 36px; }
.serp__res em { font-style: normal; font-size: var(--fs-12); color: var(--success); }
.serp__res i { display: block; height: 8px; border-radius: 4px; background: #e6e6e2; }
.serp__res i.w70 { width: 70%; }
.serp__rank { position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; border-radius: 50%; background: var(--accent); color: var(--white); font-size: var(--fs-12); font-weight: var(--fw-medium); display: grid; place-items: center; }


/* seo visual: typed search, then answer cards appear in sequence (JS adds .js-anim) */
.serp__caret { display: inline-block; width: 2px; height: 1.15em; margin-left: var(--sp-2); background: var(--accent); vertical-align: -0.18em; animation: caret 1s steps(1) infinite; }
.serp__caret.done { display: none; }
@keyframes caret { 50% { opacity: 0; } }
.viz--seo.js-anim .serp__search, .viz--seo.js-anim .serp__ai, .viz--seo.js-anim .serp__res { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .6s var(--ease-out); }
.viz--seo.js-anim .serp__search.show, .viz--seo.js-anim .serp__ai.show, .viz--seo.js-anim .serp__res.show { opacity: 1; transform: none; }
.viz--seo.js-anim .serp__rank { transform: scale(0); transition: transform .5s var(--ease-spring) .35s; }
.viz--seo.js-anim .serp__res.show .serp__rank { transform: scale(1); }
.serp__search.go { animation: enterpress .35s ease; }
@keyframes enterpress { 40% { transform: scale(.97); box-shadow: 0 6px 14px -10px rgba(0,0,0,.4); } }

/* ai media */
.gen { position: relative; z-index: 1; width: min(100%, 400px); }
.gen__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-10); }
.gen__grid i { aspect-ratio: 4/3; border-radius: var(--r-tile); background: var(--g); box-shadow: 0 18px 30px -18px rgba(0,0,0,.5); }
.gen__prompt { margin-top: var(--sp-12); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-10); background: var(--surface); color: var(--ink); border-radius: var(--r-pill); padding: var(--sp-8) var(--sp-8) var(--sp-8) var(--sp-16); font-size: var(--fs-13); box-shadow: 0 16px 30px -18px rgba(0,0,0,.5); }
.gen__prompt u { text-decoration: none; background: var(--btn); color: var(--white); border-radius: var(--r-pill); padding: 7px var(--sp-14); font-size: var(--fs-12); }

/* lead automation */
.flow { position: relative; z-index: 1; width: min(100%, 410px); display: grid; }
.node { display: grid; grid-template-columns: auto 1fr auto; align-items: center; column-gap: var(--sp-12); background: var(--surface); border-radius: 16px; padding: var(--sp-12) var(--sp-14); box-shadow: 0 18px 30px -20px rgba(0,0,0,.4); }
.node__txt b { display: block; font-size: var(--fs-14); font-weight: var(--fw-medium); line-height: 1.25; }
.node__txt small { color: var(--muted); font-size: var(--fs-12); }
.node__ico { width: 38px; height: 38px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; }
.node__ico i { font-size: var(--fs-16); }
.node__avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-200), var(--accent-300)); color: var(--accent-700); font-size: var(--fs-13); font-weight: var(--fw-medium); display: grid; place-items: center; }
.node__tag { font-style: normal; font-size: var(--fs-11); color: var(--muted); background: var(--bg); padding: var(--sp-4) 9px; border-radius: var(--r-pill); }
.channels { display: flex; gap: 5px; }
.channels span { font-size: var(--fs-11); padding: 3px 9px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); }
.bubble { grid-column: 1 / -1; position: relative; margin-top: var(--sp-10); background: var(--accent-soft); border-radius: var(--r-sm) var(--r-sm) var(--r-sm) 4px; padding: var(--sp-10) var(--sp-12); font-size: var(--fs-13); line-height: var(--lh-normal); color: var(--ink); }
.bubble p { margin: 0; }
.typing { display: none; position: absolute; left: 12px; top: 50%; translate: 0 -50%; gap: var(--sp-4); }
.typing u { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: typingbounce 1s ease-in-out infinite; }
.typing u:nth-child(2) { animation-delay: .15s; } .typing u:nth-child(3) { animation-delay: .3s; }
@keyframes typingbounce { 0%, 60%, 100% { transform: none; opacity: .5; } 30% { transform: translateY(-4px); opacity: 1; } }
.ticks { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: var(--sp-6); margin-top: var(--sp-10); }
.ticks span { font-size: var(--fs-11); padding: var(--sp-4) var(--sp-10) var(--sp-4) var(--sp-8); border-radius: var(--r-pill); background: var(--success-soft); color: var(--success); display: inline-flex; align-items: center; gap: 5px; }
.ticks span::before { content: ""; width: 10px; height: 10px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center / contain no-repeat; }
.node--ok .node__ico { background: var(--success-soft); color: var(--success); }
.link { position: relative; width: 2px; height: 24px; margin-left: 31px; background: repeating-linear-gradient(var(--accent) 0 4px, transparent 4px 8px); }
.link .dot { position: absolute; left: 50%; top: 0; width: 8px; height: 8px; margin-left: -4px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px rgba(47,84,235,.2); opacity: 0; }

/* stacking behaviour on large screens */
@media (min-width: 900px) and (min-height: 640px) {
  .svc-stack { gap: var(--sp-40); }
  .svc-card { position: sticky; top: calc(112px + var(--i) * 14px); height: min(calc(100svh - 170px), 560px); grid-template-columns: 1.05fr 1fr; align-items: stretch; }
  .svc-card:nth-child(even) .viz { order: -1; }
  .viz { min-height: 0; }
}
@media (min-width: 900px) and (max-height: 639px) {
  .svc-card { grid-template-columns: 1.05fr 1fr; }
}
/* phones and tablets: cards stack too. --stick is set per card in main.js so a tall card sticks with its bottom in view */
@media (max-width: 899px) {
  .svc-card { position: sticky; top: var(--stick, 84px); }
}

/* price + note */
.svc-note { margin-top: var(--sp-28); font-size: var(--fs-14); color: var(--muted); max-width: 60ch; }

/* ==========================================================
   PROBLEM / DIFFERENCE
   ========================================================== */
.pain-grid { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.pain { display: flex; min-height: 280px; filter: drop-shadow(0 14px 18px rgba(16,16,16,.07)); transition: filter .5s ease; }

.pain__stage { position: relative; flex: 1; display: flex; transform-style: preserve-3d; transform-origin: 50% 100%;
  transform: perspective(1400px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) rotateZ(var(--rz, 0deg));
  transition: transform .7s var(--ease-pop); }
.pain__body { position: relative; flex: 1; display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-28); padding: var(--pad-card); background: var(--surface); border-radius: var(--r-md); }
.pain__edge { position: absolute; inset: 0; border-radius: var(--r-md); background: #c9c9c2; clip-path: var(--cut, none); opacity: 0; translate: -3px 6px; transition: opacity .4s ease; }
.pain__shard { position: absolute; inset: 0; border-radius: var(--r-md); background: var(--surface); clip-path: var(--shard, none);
  transform-origin: var(--so, 70% 25%);
  transform: translate3d(var(--sx, 0px), var(--sy, 0px), var(--sz, 0px)) rotate(var(--sr, 0deg));
  transition: transform .7s var(--ease-pop); }
.pain__shard::after { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 30%, rgba(16,16,16,.09)); opacity: 0; transition: opacity .4s ease; }
.pain__body::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: var(--crack, none) top right / 62% 62% no-repeat; opacity: 0; transition: opacity .4s ease .1s; }
.pain__ico { width: 48px; height: 48px; border-radius: var(--r-pill); display: grid; place-items: center; background: var(--alert-soft); color: var(--alert); }
.pain__ico i { font-size: var(--fs-20); }
.pain h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); margin-bottom: var(--sp-8); }
.pain p { color: var(--ink-2); font-size: var(--fs-15); }

/* break shapes (per card): the cut-out on the body and the matching shard */
.pain:nth-child(1) {
  --cut: polygon(0 0, 70% 0, 76% 6%, 72% 14%, 84% 20%, 80% 28%, 92% 34%, 100% 30%, 100% 100%, 0 100%);
  --shard: polygon(70% 0, 100% 0, 100% 30%, 92% 34%, 80% 28%, 84% 20%, 72% 14%, 76% 6%);
  --so: 85% 15%; --b-sx: 10px; --b-sy: -18px; --b-sr: 7deg; --b-sz: 30px; --b-rx: 2deg; --b-ry: -4deg; --b-rz: -.5deg;
  --crack: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23101010' stroke-opacity='.22' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M154 66l-12 22 28 16-22 30'/%3E%3C/svg%3E"); }
.pain:nth-child(2) {
  --cut: polygon(0 0, 74% 0, 80% 7%, 76% 13%, 86% 19%, 82% 27%, 94% 33%, 100% 31%, 100% 100%, 0 100%);
  --shard: polygon(74% 0, 100% 0, 100% 31%, 94% 33%, 82% 27%, 86% 19%, 76% 13%, 80% 7%);
  --so: 85% 15%; --b-sx: 12px; --b-sy: -22px; --b-sr: 9deg; --b-sz: 35px; --b-rx: 3deg; --b-ry: -6deg; --b-rz: -1deg;
  --crack: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23101010' stroke-opacity='.24' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M150 62l-14 24 30 18-26 34'/%3E%3C/svg%3E"); }
.pain:nth-child(3) {
  --cut: polygon(0 0, 58% 0, 64% 8%, 59% 15%, 72% 22%, 67% 31%, 82% 38%, 100% 35%, 100% 100%, 0 100%);
  --shard: polygon(58% 0, 100% 0, 100% 35%, 82% 38%, 67% 31%, 72% 22%, 59% 15%, 64% 8%);
  --so: 75% 20%; --b-sx: 14px; --b-sy: -34px; --b-sr: 12deg; --b-sz: 40px; --b-rx: 4deg; --b-ry: -8deg; --b-rz: 1.5deg;
  --crack: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23101010' stroke-opacity='.27' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M140 76l-30 26 22 16-34 36'/%3E%3Cpath d='M110 102l-34-4M132 118l-28 2'/%3E%3C/svg%3E"); }
.pain:nth-child(4) {
  --cut: polygon(0 0, 44% 0, 50% 10%, 45% 18%, 58% 26%, 53% 36%, 70% 44%, 100% 40%, 100% 100%, 0 100%);
  --shard: polygon(44% 0, 100% 0, 100% 40%, 70% 44%, 53% 36%, 58% 26%, 45% 18%, 50% 10%);
  --so: 60% 25%; --b-sx: 8px; --b-sy: -46px; --b-sr: -14deg; --b-sz: 45px; --b-rx: 5deg; --b-ry: -10deg; --b-rz: -2deg;
  --crack: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23101010' stroke-opacity='.3' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M120 84l-34 24 24 20-40 40'/%3E%3Cpath d='M86 108l-30-6M112 128l-34 4M70 150l-26-2'/%3E%3C/svg%3E"); }

@media (min-width: 900px) and (hover: hover) and (pointer: fine) {
  .pain:hover, .pain:focus-within { filter: drop-shadow(0 26px 24px rgba(16,16,16,.18)); }
  /* hover / focus = the card breaks (desktop with a mouse only; phones and tablets keep the cards whole) */
  .pain:hover .pain__body, .pain:focus-within .pain__body { clip-path: var(--cut, none); }
  .pain:hover, .pain:focus-within {
    --rx: var(--b-rx); --ry: var(--b-ry); --rz: var(--b-rz);
    --sx: var(--b-sx); --sy: var(--b-sy); --sr: var(--b-sr); --sz: var(--b-sz);
  }
  .pain:hover .pain__edge, .pain:focus-within .pain__edge,
  .pain:hover .pain__shard::after, .pain:focus-within .pain__shard::after,
  .pain:hover .pain__body::after, .pain:focus-within .pain__body::after { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { .pain__stage, .pain__shard { transition: none !important; } }
#problem { overflow-x: clip; }

@media (max-width: 639px) { .pain { min-height: 0; } .pain-grid { row-gap: var(--sp-28); } }
@media (min-width: 640px) { .pain-grid { grid-template-columns: 1fr 1fr; row-gap: var(--sp-48); padding-top: var(--sp-24); } }
@media (min-width: 1000px) { .pain-grid { grid-template-columns: repeat(4, 1fr); row-gap: var(--sp-14); } .pain { min-height: 280px; } }

.compare { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.compare__col { border-radius: var(--r-md); padding: clamp(24px, 3vw, 40px); background: var(--surface-2); }
.compare__col--us { background: var(--dark); color: var(--white); }
.compare__logo { display: block; height: 70%; width: auto; }
.compare h3 { font-family: var(--font-display); font-size: var(--fs-title-md); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); margin-bottom: var(--sp-20); display: flex; align-items: center; height: 64px; }
.compare li { display: flex; gap: var(--sp-12); align-items: flex-start; padding: var(--sp-14) 0; border-top: 1px solid var(--line); font-size: var(--fs-16); }
.compare__col--us li { border-color: rgba(255,255,255,.12); }
.compare li::before { content: "\f00d"; font-family: "Font Awesome 6 Free"; font-weight: 900; flex: none; width: 22px; height: 22px; border-radius: 50%; background: rgba(16,16,16,.08); display: grid; place-items: center; font-size: var(--fs-14); line-height: var(--lh-none); color: var(--muted); margin-top: var(--sp-2); }
.compare__col--us li::before { content: "\f00c"; background: var(--accent); color: var(--white); font-size: var(--fs-12); }
.compare__col:not(.compare__col--us) li { color: var(--ink-2); }
.fit { margin: var(--sp-14) 0 0; width: 100%; background: var(--surface); border-radius: var(--r-md); padding: clamp(24px, 3vw, 36px); display: flex; flex-direction: column; align-items: center; gap: var(--sp-16); text-align: center; }
.fit p { font-family: var(--font-display); font-size: var(--fs-title-sm); letter-spacing: var(--tracking); line-height: var(--lh-snug); color: var(--ink); max-width: 44ch; }
@media (min-width: 800px) { .compare { grid-template-columns: 1fr 1fr; } }

/* ==========================================================
   INDUSTRIES
   ========================================================== */

/* ==========================================================
   WORK
   ========================================================== */
.work-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-16); margin-bottom: var(--sp-32); }
.work-filters { flex: 1; min-width: 0; display: flex; gap: var(--sp-8); overflow-x: auto; scrollbar-width: none; }
.work-filters::-webkit-scrollbar { display: none; }
.work-filters.is-dragging { cursor: grabbing; user-select: none; }
@media (max-width: 899px) { .work-filters { margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); } }
.work-filter { flex: none; padding: var(--sp-10) var(--sp-16); border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--surface); color: var(--ink); font-size: var(--fs-14); font-weight: var(--fw-medium); cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.work-filter.is-active { background: var(--btn); border-color: var(--btn); color: var(--white); }
@media (hover: hover) and (pointer: fine) { .work-filter:not(.is-active):hover { border-color: var(--ink); } }
.work-bar .work-nav { margin-top: 0; flex: none; }
.work-scroller { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; cursor: grab; }
.work-scroller::-webkit-scrollbar { display: none; }
.work-scroller.is-dragging { cursor: grabbing; user-select: none; }
.work-grid { display: flex; gap: var(--sp-16); width: max-content; padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))); }
.work-empty { margin-top: var(--sp-24); color: var(--muted); }
.case { flex: none; width: clamp(270px, 80vw, 380px); display: flex; flex-direction: column; border-radius: var(--r-md); background: var(--surface); overflow: hidden; }
.case__body { flex: 1; display: flex; flex-direction: column; gap: var(--sp-16); padding: var(--sp-24); }
.case[hidden] { display: none; }
.case__media { aspect-ratio: 4/3; overflow: hidden; position: relative; background: var(--bg-c, #ddd); }
.case__media .mock { position: absolute; inset: 22% 12% 0 12%; background: var(--surface); border-radius: var(--r-tile) var(--r-tile) 0 0; box-shadow: 0 30px 60px -20px rgba(0,0,0,.4); padding: var(--sp-14); transition: transform .5s var(--ease-lift); }
@media (hover: hover) and (pointer: fine) { .case:hover .mock { transform: translateY(-8px); } }
.mock i { display: block; height: 8px; border-radius: 4px; background: #e6e6e2; margin-bottom: var(--sp-8); }
.mock i:nth-child(1) { width: 30%; background: var(--c1, #111); } .mock i:nth-child(2) { width: 80%; height: 24px; } .mock i:nth-child(3) { width: 60%; }
.mock .blk { height: 44%; border-radius: 10px; background: var(--c1, #111); opacity: .9; margin-top: var(--sp-14); }
.case__badge { position: absolute; left: 14px; top: 14px; background: var(--pill-bg); border-radius: var(--r-pill); font-size: var(--fs-12); padding: var(--sp-6) var(--sp-12); z-index: 1; }
.case__meta h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); }
.case__meta p { font-size: var(--fs-14); color: var(--muted); margin-top: var(--sp-4); }
.case__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-12); margin-top: auto; padding-top: var(--sp-16); border-top: 1px solid var(--line); }
.case__stats li { display: grid; gap: var(--sp-4); align-content: start; }
.case__stats b { font-family: var(--font-display); font-size: var(--fs-22); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--accent); font-weight: var(--fw-semibold); }
.case__stats span { font-size: var(--fs-12); color: var(--muted); line-height: var(--lh-normal); }
.work__cta { margin-top: var(--sp-40); display: flex; justify-content: flex-start; }

/* ==========================================================
   PROCESS
   ========================================================== */
.process { background: var(--dark); color: var(--white); border-radius: var(--r-lg); margin-inline: clamp(0px, 1vw, 12px); }
.process .tag, .process .lead { color: var(--on-dark-2); }
.steps { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; counter-reset: s; }
.step { background: var(--dark-2); border: 1px solid rgba(255,255,255,.08); border-radius: var(--r-md); padding: var(--pad-card); display: flex; flex-direction: column; justify-content: flex-start; transition: background .3s, transform .3s; }
.step:hover { background: var(--dark-2); transform: translateY(-4px); }
.step h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); margin-bottom: var(--sp-8); line-height: var(--lh-tight); }
.step p { font-size: var(--fs-15); color: var(--on-dark-2); }
.step > div:last-child { flex: 1; display: flex; flex-direction: column; }
.step p:not(.step__time) { margin-bottom: var(--sp-20); }
.step .step__time { align-self: flex-start; margin-top: auto; padding: var(--sp-4) var(--sp-12); border-radius: var(--r-pill); background: var(--dark-3); font-size: var(--fs-12); color: var(--on-dark-1); }
/* process step visuals: one small looping scene per step (runs only while the card is on screen) */
.step__viz { position: relative; display: flex; align-items: center; height: 96px; margin-bottom: var(--sp-24); }
.sv-audit { flex-direction: column; align-items: stretch; justify-content: center; gap: var(--sp-10); padding-right: var(--sp-40); }
.sv-audit__row { display: flex; align-items: center; gap: var(--sp-10); }
.sv-audit__row em { flex: none; display: grid; place-items: center; width: 22px; height: 22px; border-radius: var(--r-pill); border: 1px solid var(--accent); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.sv-audit__row b { height: 8px; border-radius: var(--r-pill); background: var(--dark-3); }
.sv-audit__row:nth-child(1) b { width: 85%; } .sv-audit__row:nth-child(2) b { width: 65%; } .sv-audit__row:nth-child(3) b { width: 75%; }
.sv-audit__lens { position: absolute; right: 0; top: 4px; font-size: var(--fs-22); color: var(--accent-300); }
@media (prefers-reduced-motion: no-preference) {
  .step__viz, .step__viz * { animation-duration: 6s; animation-iteration-count: infinite; animation-timing-function: ease-in-out; animation-play-state: paused; }
  .step.is-live .step__viz, .step.is-live .step__viz * { animation-play-state: running; }
  .sv-audit__row:nth-child(1) em { animation-name: sv-tick1; } .sv-audit__row:nth-child(2) em { animation-name: sv-tick2; } .sv-audit__row:nth-child(3) em { animation-name: sv-tick3; }
  .sv-audit__lens { animation-name: sv-lens; }
}
@keyframes sv-tick1 { 0%, 10% { background: transparent; border-color: var(--on-dark-4); color: transparent; } 16%, 88% { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } 96%, 100% { background: transparent; border-color: var(--on-dark-4); color: transparent; } }
@keyframes sv-tick2 { 0%, 32% { background: transparent; border-color: var(--on-dark-4); color: transparent; } 38%, 88% { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } 96%, 100% { background: transparent; border-color: var(--on-dark-4); color: transparent; } }
@keyframes sv-tick3 { 0%, 54% { background: transparent; border-color: var(--on-dark-4); color: transparent; } 60%, 88% { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } 96%, 100% { background: transparent; border-color: var(--on-dark-4); color: transparent; } }
@keyframes sv-lens { 0%, 12% { transform: translateY(0); } 30%, 36% { transform: translateY(32px); } 52%, 66% { transform: translateY(60px); } 100% { transform: translateY(0); } }
.sv-scope { flex-direction: column; align-items: stretch; justify-content: center; gap: var(--sp-10); }
.sv-scope__rows { display: grid; gap: var(--sp-6); }
.sv-scope__rows span { display: flex; align-items: center; gap: var(--sp-8); }
.sv-scope__rows em { flex: none; display: grid; place-items: center; width: 14px; height: 14px; border-radius: var(--r-pill); background: var(--dark-3); color: var(--accent-300); font-size: var(--fs-11); }
.sv-scope__rows b { height: 6px; border-radius: var(--r-pill); background: var(--on-dark-4); }
.sv-scope__rows span:nth-child(1) b { width: 78%; } .sv-scope__rows span:nth-child(2) b { width: 58%; } .sv-scope__rows span:nth-child(3) b { width: 68%; }
@media (prefers-reduced-motion: no-preference) {
  .sv-scope__rows span:nth-child(1) { animation-name: sv-row1; } .sv-scope__rows span:nth-child(2) { animation-name: sv-row2; } .sv-scope__rows span:nth-child(3) { animation-name: sv-row3; }
}
@keyframes sv-row1 { 0%, 6% { opacity: 0; transform: translateX(-8px); } 14%, 90% { opacity: 1; transform: none; } 98%, 100% { opacity: 0; transform: none; } }
@keyframes sv-row2 { 0%, 16% { opacity: 0; transform: translateX(-8px); } 24%, 90% { opacity: 1; transform: none; } 98%, 100% { opacity: 0; transform: none; } }
@keyframes sv-row3 { 0%, 26% { opacity: 0; transform: translateX(-8px); } 34%, 90% { opacity: 1; transform: none; } 98%, 100% { opacity: 0; transform: none; } }
.sv-scope__total { align-self: flex-start; display: inline-flex; align-items: center; gap: var(--sp-8); padding: var(--sp-6) var(--sp-12); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-13); font-weight: var(--fw-medium); }
.sv-scope__lock { display: inline-grid; place-items: center; width: 14px; height: 14px; }
.sv-scope__lock i { grid-area: 1 / 1; }
.sv-scope__lock .fa-lock-open { opacity: 0; }
.sv-board { gap: var(--sp-8); align-items: stretch; }
.sv-board__col { flex: 1; display: grid; align-content: start; gap: var(--sp-6); padding: var(--sp-8) var(--sp-6); border-radius: var(--r-sm); background: var(--dark-3); }
.sv-board__col u { height: 14px; border-radius: var(--r-xs); background: var(--on-dark-4); opacity: .5; }
.sv-board__card { position: absolute; top: 0; left: 0; display: grid; place-items: center; width: calc((100% - var(--sp-16)) / 3 - var(--sp-12)); height: 14px; border-radius: var(--r-xs); background: var(--accent); box-shadow: var(--shadow-pop); color: var(--accent-ink); font-size: var(--fs-11); transform: translate(calc(200% + var(--sp-40) + var(--sp-6)), calc(var(--sp-8) + 20px)); }
.sv-board__card i { opacity: 1; }
.sv-live { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; }
.sv-live__grid { stroke: var(--dark-3); stroke-width: 1; }
.sv-live__area { fill: var(--accent); opacity: .16; stroke: none; }
.sv-live__line { fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.sv-live__badge { position: absolute; left: 0; top: 0; display: inline-flex; align-items: center; gap: var(--sp-6); padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: var(--dark-3); color: var(--on-dark-1); font-size: var(--fs-12); }
.sv-live__badge i { width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--accent-300); }
.sv-live__chip { position: absolute; right: 0; bottom: var(--sp-6); padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-12); font-weight: var(--fw-medium); }
@media (prefers-reduced-motion: no-preference) {
  .sv-scope__total { animation-name: sv-total; }
  .sv-scope__lock .fa-lock-open { animation-name: sv-open; }
  .sv-scope__lock .fa-lock { animation-name: sv-closed; }
  .sv-board__card { animation-name: sv-card; }
  .sv-live__line { stroke-dasharray: 1 2; animation-name: sv-draw; }
  .sv-live__area { animation-name: sv-area; }
  .sv-live__chip { animation-name: sv-chip; }
}
@keyframes sv-total { 0%, 40% { opacity: 0; transform: translateY(6px); background: var(--dark-3); } 50%, 58% { opacity: 1; transform: none; background: var(--dark-3); } 72%, 90% { opacity: 1; transform: none; background: var(--accent); } 98%, 100% { opacity: 0; transform: none; background: var(--accent); } }
@keyframes sv-open { 0%, 50% { opacity: 0; transform: translateY(2px) scale(.8); } 54%, 60% { opacity: 1; transform: none; } 66%, 100% { opacity: 0; transform: translateY(-3px) scale(.8); } }
@keyframes sv-closed { 0%, 62% { opacity: 0; transform: translateY(3px) scale(.7); } 70% { opacity: 1; transform: scale(1.2); } 76%, 90% { opacity: 1; transform: scale(1); } 98%, 100% { opacity: 0; transform: scale(1); } }
@keyframes sv-card { 0%, 6% { opacity: 0; transform: translate(var(--sp-6), calc(var(--sp-8) + 40px)); } 14%, 30% { opacity: 1; transform: translate(var(--sp-6), calc(var(--sp-8) + 40px)); } 46%, 56% { opacity: 1; transform: translate(calc(100% + var(--sp-20) + var(--sp-6)), calc(var(--sp-8) + 20px)); } 72%, 90% { opacity: 1; transform: translate(calc(200% + var(--sp-40) + var(--sp-6)), calc(var(--sp-8) + 20px)); } 98%, 100% { opacity: 0; transform: translate(calc(200% + var(--sp-40) + var(--sp-6)), calc(var(--sp-8) + 20px)); } }
@keyframes sv-draw { 0%, 8% { stroke-dashoffset: 1; opacity: 1; } 60%, 90% { stroke-dashoffset: 0; opacity: 1; } 98%, 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes sv-area { 0%, 40% { opacity: 0; } 62%, 90% { opacity: .16; } 98%, 100% { opacity: 0; } }
@keyframes sv-chip { 0%, 64% { opacity: 0; transform: translateY(6px); } 74%, 90% { opacity: 1; transform: none; } 98%, 100% { opacity: 0; transform: none; } }
@media (min-width: 640px) { .steps { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .steps { grid-template-columns: repeat(4, 1fr); } }

/* ==========================================================
   INDUSTRIES / WHY
   ========================================================== */
.split { display: grid; gap: var(--sp-40); }
@media (min-width: 1000px) { .split { grid-template-columns: 1fr 1.2fr; gap: var(--sp-80); align-items: start; } .split__sticky { position: sticky; top: 110px; } }
.why { display: grid; gap: var(--sp-14); }
.why__item { background: var(--surface); border-radius: var(--r-md); padding: var(--pad-card); display: grid; gap: var(--sp-8); }
.why__item .ico { width: 44px; height: 44px; border-radius: var(--r-sm); background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; margin-bottom: var(--sp-8); }
.why__item .ico svg { width: 22px; height: 22px; }
.why__item h3 { font-family: var(--font-display); font-size: var(--fs-24); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); }
.why__item p { color: var(--ink-2); font-size: var(--fs-15); }
@media (min-width: 640px) { .why { grid-template-columns: 1fr 1fr; } }

/* ==========================================================
   TESTIMONIALS
   ========================================================== */
.t-grid { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.t-card { background: var(--surface); border-radius: var(--r-md); padding: var(--pad-card); display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-28); }
.t-card--rating { background: var(--dark); color: var(--white); min-height: 340px; }
.t-card blockquote { margin: 0; font-family: var(--font-display); font-size: var(--fs-quote); letter-spacing: var(--tracking); line-height: var(--lh-snug); font-weight: var(--fw-medium); }
.q { font-size: 56px; line-height: .6; font-family: Georgia, serif; color: var(--accent); display: block; margin-bottom: var(--sp-10); }
.stars { color: var(--star); letter-spacing: 2px; font-size: var(--fs-14); }
.person { display: flex; align-items: center; gap: var(--sp-12); font-size: var(--fs-14); }
.person i { width: 40px; height: 40px; border-radius: 50%; background: var(--c, #999); flex: none; }
.person small { display: block; color: var(--muted); font-size: var(--fs-12); }
.t-card--rating .big { font-family: var(--font-display); font-size: 84px; letter-spacing: var(--tracking); line-height: var(--lh-none); }
.t-card--rating .big small { font-size: var(--fs-22); color: var(--on-dark-3); }
.t-card--rating p { color: var(--on-dark-2); font-size: var(--fs-14); max-width: 28ch; }
@media (min-width: 700px) { .t-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .t-grid { grid-template-columns: 1fr 1.15fr 1.15fr 1fr; } }

/* ==========================================================
   FAQ
   ========================================================== */
.faq-wrap { display: grid; gap: var(--sp-40); }
@media (min-width: 1000px) { .faq-wrap { grid-template-columns: 1fr 1.5fr; gap: var(--sp-80); } }
.faq details { background: var(--surface); border-radius: var(--r-md); margin-bottom: var(--sp-10); overflow: hidden; }
.faq summary { list-style: none; cursor: pointer; padding: var(--sp-24) var(--pad-card); display: flex; justify-content: space-between; gap: var(--sp-16); align-items: center; font-weight: var(--fw-medium); font-size: var(--fs-17); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary i { width: 32px; height: 32px; border-radius: 50%; background: var(--bg); flex: none; position: relative; transition: .25s; }
.faq summary i::before, .faq summary i::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.5px; background: var(--ink); transform: translate(-50%, -50%); transition: .25s; }
.faq summary i::after { transform: translate(-50%, -50%) rotate(90deg); }
.faq details[open] summary i { background: var(--accent); }
.faq details[open] summary i::before, .faq details[open] summary i::after { background: var(--white); }
.faq details[open] summary i::after { transform: translate(-50%, -50%) rotate(0); }
.faq .ans { padding: 0 var(--pad-card) var(--sp-24); color: var(--ink-2); max-width: 62ch; }

/* ==========================================================
   CTA / BOOKING
   ========================================================== */
.cta { background: var(--accent); color: var(--white); border-radius: var(--r-lg); margin-inline: clamp(0px, 1vw, 12px); position: relative; overflow: hidden; }
.cta::before { content: ""; position: absolute; width: 60%; aspect-ratio: 1; border-radius: 50%; background: var(--accent); filter: blur(80px); right: -20%; top: -40%; opacity: .7; }
.cta__grid { display: grid; gap: var(--sp-40); position: relative; }
.cta h2 { font-size: var(--fs-display-2); }
.cta .lead { color: var(--accent-pale); margin-top: var(--sp-24); }
.cta__points { margin-top: var(--sp-28); display: grid; gap: var(--sp-10); font-size: var(--fs-15); }
.cta__points li { display: flex; gap: var(--sp-10); align-items: center; }
.cta__points i { font-size: var(--fs-16); flex: none; }
.form { background: var(--surface); color: var(--ink); border-radius: var(--r-md); padding: clamp(22px, 3vw, 34px); display: grid; gap: var(--sp-14); }
.form h3 { font-family: var(--font-display); font-size: var(--fs-26); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); }
.field { display: grid; gap: var(--sp-6); }
.field label { font-size: var(--fs-13); color: var(--ink-2); }
.field input, .field select, .field textarea { width: 100%; padding: var(--sp-14) var(--sp-16); border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--bg); transition: border-color .2s; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--accent); background: var(--surface); }
.field textarea { min-height: 96px; resize: vertical; }
.row { display: grid; gap: var(--sp-14); }
@media (min-width: 560px) { .row { grid-template-columns: 1fr 1fr; } }
.form small { color: var(--muted); font-size: var(--fs-12); }
.form .ok { display: none; background: #e7f6ec; color: #145c2c; padding: var(--sp-14) var(--sp-16); border-radius: var(--r-sm); font-size: var(--fs-14); }
.form.is-sent .ok { display: block; }
@media (min-width: 1000px) { .cta__grid { grid-template-columns: 1.2fr 1fr; gap: var(--sp-80); align-items: center; } }

/* ==========================================================
   FOOTER
   ========================================================== */
.footer { background: var(--dark); color: var(--white); border-radius: var(--r-lg) var(--r-lg) 0 0; margin: 24px clamp(0px, 1vw, 12px) 0; padding-top: clamp(56px, 8vw, 100px); overflow: hidden; }
.footer__top { display: grid; gap: var(--sp-40); }
.footer__mail { font-family: var(--font-display); font-size: var(--fs-title-lg); letter-spacing: var(--tracking); border-bottom: 1px solid rgba(255,255,255,.4); display: inline-block; padding-bottom: var(--sp-4); margin-top: 18px; transition: color .2s, border-color .2s; }
.footer__mail:hover { color: var(--accent-pale); border-color: var(--accent-pale); }
.footer__intro { color: var(--on-dark-2); max-width: 36ch; font-size: var(--fs-15); }
.footer__cols { display: grid; gap: var(--sp-32); grid-template-columns: 1fr 1fr; }
.footer h4 { font-size: var(--fs-12); text-transform: uppercase; letter-spacing: .07em; color: var(--on-dark-4); font-weight: var(--fw-medium); margin-bottom: var(--sp-14); }
.footer li { margin-bottom: var(--sp-8); }
.footer li a { color: var(--on-dark-0); font-size: var(--fs-15); transition: color .2s; }
.footer li a:hover { color: var(--accent-pale); }
.socials { display: flex; gap: var(--sp-10); }
.socials a { width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,.25); display: grid; place-items: center; transition: .2s; }
.socials a:hover { background: var(--white); color: var(--navy); }
.socials i { font-size: var(--fs-14); }
.footer__word { font-family: var(--font-display); font-weight: var(--fw-bold); letter-spacing: -.07em; line-height: .8; font-size: clamp(56px, 16vw, 240px); margin: clamp(40px, 6vw, 80px) 0 0; white-space: nowrap; color: var(--white); text-align: center; transform: translateY(14%); }
.footer__bar { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--sp-12); padding-block: var(--sp-24); font-size: var(--fs-13); color: var(--on-dark-4); border-top: 1px solid rgba(255,255,255,.1); position: relative; background: var(--dark); }
.footer__bar a:hover { color: var(--white); }
@media (min-width: 900px) { .footer__top { grid-template-columns: 1fr 2.4fr; gap: var(--sp-64); } .footer__cols { grid-template-columns: repeat(3, max-content); justify-content: end; column-gap: clamp(48px, 6vw, 96px); } }

/* ---------- Reveal ---------- */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform .8s var(--ease-lift); }
.reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .reveal { opacity: 1; transform: none; }
  html { scroll-behavior: auto; }
}

/* ---------- Service visuals: animated when the card is in view (JS adds .js-anim, then .is-live) ---------- */

/* web: page builds, cursor clicks the CTA */
.viz--web.js-anim .mb { opacity: 0; transform: translateY(26px) scale(.97); transition: opacity .6s ease, transform .8s var(--ease-out); }
.viz--web.is-live .mb { opacity: 1; transform: none; }
.viz--web.js-anim .mb__hero b { transform: scaleX(0); transform-origin: left; transition: transform .7s var(--ease-out); }
.viz--web.is-live .mb__hero b { transform: none; }
.viz--web.is-live .mb__hero b:nth-of-type(1) { transition-delay: .55s; } .viz--web.is-live .mb__hero b:nth-of-type(2) { transition-delay: .8s; }
.viz--web.js-anim .mb__hero u { opacity: 0; transform: translateY(6px); transition: opacity .4s ease 1.05s, transform .4s ease 1.05s; }
.viz--web.is-live .mb__hero u { opacity: 1; transform: none; animation: btnpress .35s ease 2.45s; }
.viz--web.js-anim .mb__cols i { opacity: 0; transform: translateY(12px); transition: opacity .5s ease, transform .5s ease; }
.viz--web.is-live .mb__cols i { opacity: 1; transform: none; }
.viz--web.is-live .mb__cols i:nth-child(1) { transition-delay: 1s; } .viz--web.is-live .mb__cols i:nth-child(2) { transition-delay: 1.15s; } .viz--web.is-live .mb__cols i:nth-child(3) { transition-delay: 1.3s; }
.mb__hero { position: relative; }
.mb__cursor { position: absolute; left: 46px; bottom: 6px; width: 20px; height: 20px; z-index: 3; opacity: 0; pointer-events: none; }
.viz--web.is-live .mb__cursor { animation: cursormove 1.7s cubic-bezier(.4,0,.2,1) 1.1s forwards; }
@keyframes cursormove { 0% { opacity: 0; transform: translate(150px, 70px); } 20% { opacity: 1; } 70% { transform: translate(0, 0); } 82% { transform: translate(0, 0) scale(.8); } 100% { opacity: 1; transform: translate(0, 0) scale(1); } }
@keyframes btnpress { 40% { transform: scale(.9); box-shadow: 0 0 0 6px rgba(47,84,235,.22); } }

/* paid: bars grow, numbers count */
.viz--paid.js-anim .dash { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .8s var(--ease-out); }
.viz--paid.is-live .dash { opacity: 1; transform: none; }
.viz--paid.js-anim .bars i { transform: scaleY(0); transform-origin: bottom; transition: transform .9s cubic-bezier(.2,.9,.3,1); }
.viz--paid.is-live .bars i { transform: none; transition-delay: calc(.35s + var(--k) * .09s); }
.viz--paid.is-live .bars i:last-child { animation: barglow 1.6s ease 1.6s 1; }
@keyframes barglow { 50% { filter: drop-shadow(0 0 12px rgba(199,211,255,.9)); } }
.viz--paid.js-anim .dash__pills span { opacity: 0; transform: translateY(6px); transition: opacity .4s ease .3s, transform .4s ease .3s; }
.viz--paid.is-live .dash__pills span { opacity: 1; transform: none; }

/* ai media: type the prompt, generate, tiles resolve one by one */
.viz--ai.js-anim .gen__grid i { opacity: 0; }
.viz--ai.is-live .gen__grid i { animation: tilegen 1.3s var(--ease-out) forwards; animation-delay: calc(2.15s + var(--k) * .4s); }
.gen__grid i { position: relative; }
.gen__grid i::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(110deg, rgba(255,255,255,.55) 20%, rgba(255,255,255,.9) 40%, rgba(255,255,255,.55) 60%); background-size: 200% 100%; opacity: 0; }
.viz--ai.is-live .gen__grid i::after { animation: skel 1.3s ease forwards, shimmer 1s linear infinite; animation-delay: calc(2.15s + var(--k) * .4s), calc(2.15s + var(--k) * .4s); }
@keyframes tilegen { 0% { opacity: 0; transform: scale(.88); filter: blur(10px); } 35% { opacity: 1; transform: scale(1); filter: blur(10px); } 100% { opacity: 1; transform: scale(1); filter: blur(0); } }
@keyframes skel { 0% { opacity: 1; } 55% { opacity: 1; } 100% { opacity: 0; } }
@keyframes shimmer { to { background-position: -200% 0; } }
.gen__prompt .serp__caret { margin-right: auto; }
.gen__prompt .gen__q { white-space: nowrap; overflow: hidden; text-overflow: clip; }
.gen__btn.press { animation: btnpress2 .35s ease; }
@keyframes btnpress2 { 40% { transform: scale(.9); } }
.viz--ai.js-anim .gen__prompt { opacity: 0; transform: translateY(14px); transition: opacity .5s ease, transform .6s var(--ease-out); }
.viz--ai.is-live .gen__prompt { opacity: 1; transform: none; }

/* lead automation: workflow connects step by step */
.viz--lead.js-anim .node { opacity: 0; transform: translateX(-18px); transition: opacity .5s ease, transform .6s var(--ease-out); }
.viz--lead.is-live .node { opacity: 1; transform: none; }
.viz--lead.is-live .node:nth-child(1) { transition-delay: .2s; } .viz--lead.is-live .node:nth-child(3) { transition-delay: 1.1s; } .viz--lead.is-live .node:nth-child(5) { transition-delay: 3s; }
.viz--lead.js-anim .link { transform: scaleY(0); transform-origin: top; transition: transform .45s ease; }
.viz--lead.is-live .link { transform: none; }
.viz--lead.is-live .link:nth-child(2) { transition-delay: .65s; } .viz--lead.is-live .link:nth-child(4) { transition-delay: 2.5s; }
/* a dot travels down each connector */
.viz--lead.is-live .link:nth-child(2) .dot { animation: travel .7s ease .75s both; }
.viz--lead.is-live .link:nth-child(4) .dot { animation: travel .7s ease 2.6s both; }
@keyframes travel { 0% { opacity: 0; transform: translateY(-4px); } 15% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; transform: translateY(22px); } }
/* AI node: channels pop, typing dots, then the message appears */
.viz--lead.js-anim .channels span { opacity: 0; transform: scale(.7); transition: opacity .3s ease, transform .4s var(--ease-spring); }
.viz--lead.is-live .channels span { opacity: 1; transform: none; }
.viz--lead.is-live .channels span:nth-child(1) { transition-delay: 1.5s; } .viz--lead.is-live .channels span:nth-child(2) { transition-delay: 1.65s; }
.viz--lead.js-anim .bubble { opacity: 0; transform: translateY(6px); transition: opacity .35s ease 1.6s, transform .4s ease 1.6s; }
.viz--lead.is-live .bubble { opacity: 1; transform: none; }
.viz--lead.js-anim .typing { display: flex; }
.viz--lead.js-anim .bubble p { opacity: 0; transition: opacity .4s ease 2.35s; }
.viz--lead.is-live .bubble p { opacity: 1; }
.viz--lead.is-live .typing { animation: typinggone .2s ease 2.3s forwards; }
@keyframes typinggone { to { opacity: 0; visibility: hidden; } }
/* booked: check pops, ticks follow */
.viz--lead.is-live .node--ok .node__ico { animation: popcheck .6s var(--ease-spring) 3.4s both; }
.viz--lead.is-live .node--ok { animation: okpulse 1.2s ease 3.4s 1; }
.viz--lead.js-anim .ticks span { opacity: 0; transform: translateY(6px); transition: opacity .35s ease, transform .35s ease; }
.viz--lead.is-live .ticks span { opacity: 1; transform: none; }
.viz--lead.is-live .ticks span:nth-child(1) { transition-delay: 3.7s; } .viz--lead.is-live .ticks span:nth-child(2) { transition-delay: 3.9s; }
@keyframes popcheck { 0% { transform: scale(0); } 100% { transform: scale(1); } }
@keyframes okpulse { 40% { box-shadow: 0 0 0 8px rgba(31,122,77,.2), 0 18px 30px -20px rgba(0,0,0,.4); } }

/* ---------- Equal top/bottom padding, visuals fill the card height ---------- */
.svc-card__body { justify-content: flex-start; }
.serp__res i.w50 { width: 50%; }
.viz { padding: 0; align-items: stretch; justify-content: center; min-height: 300px; }
.mb, .dash, .serp, .gen, .brand, .flow { height: 100%; }
.mb { display: flex; flex-direction: column; }
.mb__body { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.mb__hero { flex: 1; justify-content: center; }
.mb__cols { flex: 0 0 30%; }
.mb__cols i { height: 100%; }
.dash { display: flex; flex-direction: column; width: min(100%, 460px); }
.bars { flex: 1; height: auto; min-height: 120px; }
.serp { display: flex; flex-direction: column; width: min(100%, 460px); }
.serp__res { flex: 1; align-content: start; }
.gen { display: flex; flex-direction: column; width: min(100%, 440px); }
.gen__grid { flex: 1; min-height: 0; grid-template-rows: 1fr 1fr; }
.gen__grid i { aspect-ratio: auto; }
.brand { width: min(100%, 460px); grid-template-rows: 1fr auto; }
.brand__logo, .brand__type { aspect-ratio: auto; }
.brand__logo svg { width: 62%; max-height: 62%; }
.flow { display: flex; flex-direction: column; justify-content: space-between; width: min(100%, 420px); }
.link { flex: 1; height: auto; min-height: 24px; }
.link .dot { top: 0; }
@keyframes travel { 0% { opacity: 0; top: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; top: calc(100% - 8px); } }
@media (max-width: 899px), (max-height: 639px) {
  .viz { padding: var(--sp-4) 0; }
  .mb, .dash, .serp, .gen, .brand, .flow { height: auto; }
  .mb__hero { flex: none; } .mb__cols { flex: none; } .mb__cols i { height: 56px; }
  .bars { flex: none; height: 150px; }
  .serp__res { flex: none; }
  .gen__grid { flex: none; } .gen__grid i { aspect-ratio: 4/3; }
  .brand { grid-template-rows: auto auto; } .brand__logo, .brand__type { aspect-ratio: 1; }
  .link { flex: none; height: 24px; }
}

/* one width for every service visual (grid track stretches, the mockup is centered inside it) */
.viz { justify-content: stretch; }
.mb, .dash, .serp, .gen, .brand, .flow { width: min(100%, 420px); }

/* web mockup: more hero content, cursor is anchored to the button so it always clicks it */
.mb__hero { gap: 9px; padding: var(--sp-20) var(--sp-16); }
.mb__hero b.t { height: 16px; }
.mb__hero b.p { height: 8px; width: 92%; opacity: .75; }
.mb__hero b.w70 { width: 72%; }
.mb__btns { display: flex; align-items: center; gap: var(--sp-8); margin-top: var(--sp-10); }
.mb__hero u { position: relative; margin-top: 0; font-size: var(--fs-12); padding: var(--sp-8) var(--sp-14); }
.mb__ghost { font-size: var(--fs-12); padding: 7px 13px; border-radius: var(--r-pill); border: 1px solid rgba(16,16,16,.25); color: var(--ink-2); }
.mb__trust { display: flex; align-items: center; gap: 0; margin-top: var(--sp-12); font-size: var(--fs-11); color: var(--ink-2); }
.mb__trust i { width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--white); margin-right: -6px; background: linear-gradient(135deg, var(--accent-200), var(--accent-300)); }
.mb__trust i:nth-child(2) { background: linear-gradient(135deg, #ffd9cf, #ff8a73); } .mb__trust i:nth-child(3) { background: linear-gradient(135deg, #cfe8d9, #6bb28a); }
.mb__trust span { margin-left: var(--sp-14); }
.mb__cursor { left: calc(50% - 4px); top: calc(55% - 2px); bottom: auto; }
@keyframes cursormove { 0% { opacity: 0; transform: translate(170px, 120px); } 20% { opacity: 1; } 70% { transform: translate(0, 0); } 82% { transform: translate(0, 0) scale(.8); } 100% { opacity: 1; transform: translate(0, 0) scale(1); } }
.viz--web.js-anim .mb__hero b.t, .viz--web.js-anim .mb__hero b.p { transform: scaleX(0); transform-origin: left; }
.viz--web.is-live .mb__hero b:nth-of-type(1) { transition-delay: .5s; } .viz--web.is-live .mb__hero b:nth-of-type(2) { transition-delay: .62s; }
.viz--web.is-live .mb__hero b:nth-of-type(3) { transition-delay: .8s; } .viz--web.is-live .mb__hero b:nth-of-type(4) { transition-delay: .92s; }
.viz--web.js-anim .mb__ghost, .viz--web.js-anim .mb__trust { opacity: 0; transform: translateY(6px); transition: opacity .4s ease 1.1s, transform .4s ease 1.1s; }
.viz--web.is-live .mb__ghost, .viz--web.is-live .mb__trust { opacity: 1; transform: none; }
.viz--web.is-live .mb__trust { transition-delay: 1.3s; }

/* lead automation: connectors sit in the horizontal center of the cards */
.link { margin-left: auto; margin-right: auto; }

/* the live state must beat the hidden state of the heading/paragraph bars */
.viz--web.is-live .mb__hero b.t, .viz--web.is-live .mb__hero b.p { transform: none; }

/* ---------- Branding: brand board (hero lockup, symbol, palette, pattern, tagline) ---------- */
.brand { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: 26% 11% 1fr; gap: var(--sp-8); width: min(100%, 420px); height: 100%; }
.bt { position: relative; border-radius: var(--r-tile); overflow: hidden; box-shadow: 0 14px 26px -18px rgba(0,0,0,.45); }
.bt--hero { grid-column: 1 / 4; grid-row: 1; display: flex; align-items: center; justify-content: center; gap: var(--sp-10); color: var(--white); background: radial-gradient(120% 160% at 0% 0%, var(--accent) 0%, var(--accent-700) 38%, var(--ink) 85%); }
.bt__mark svg { width: 30px; height: 30px; display: block; }
.bt__word { font-family: var(--font-display); font-weight: var(--fw-bold); font-size: var(--fs-22); letter-spacing: .04em; }
.bt--sym { grid-column: 4 / 6; grid-row: 1; background: var(--accent-soft); display: grid; place-items: center; color: var(--accent); }
.bt--sym svg { width: 70%; max-height: 80%; overflow: visible; }
.lg-fill { fill: var(--accent-soft); }
.anchors rect { fill: var(--white); stroke: var(--accent); stroke-width: .35; opacity: 0; }
.pen { opacity: 0; }
.bt--pal { grid-column: 1 / 4; grid-row: 2; display: flex; overflow: visible; box-shadow: none; }
.bt--pal i { flex: 1; display: flex; align-items: flex-end; padding: 5px; background: var(--c); transition: background-color .5s ease; }
.bt--pal i:first-of-type { border-radius: var(--r-tile) 0 0 var(--r-tile); } .bt--pal i:nth-of-type(5) { border-radius: 0 var(--r-tile) var(--r-tile) 0; }
.bt--pal small { font-size: 8px; font-style: normal; transition: color .5s ease; }
.bt--pat { grid-column: 1 / 4; grid-row: 3; background: var(--accent-soft); }
.truchet { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.truchet .tr { fill: none; stroke: var(--accent); stroke-width: 4.5; stroke-dasharray: 1; stroke-dashoffset: 0; }
.truchet .tf { fill: var(--ink); }
.bt--tag { grid-column: 4 / 6; grid-row: 2 / 4; display: flex; flex-direction: column; align-items: center; justify-content: space-between; text-align: center; color: var(--white); padding: 18px var(--sp-10) var(--sp-14); background: linear-gradient(170deg, var(--accent) 0%, var(--accent-700) 45%, var(--ink) 100%); }
.bt--tag b { font-family: var(--font-display); font-size: var(--fs-lead-sm); font-weight: var(--fw-semibold); text-transform: uppercase; line-height: 1.12; position: relative; z-index: 1; padding: 0 var(--sp-2); }
.bt--tag b.swap { animation: fontflip .38s var(--ease-out); }
@keyframes fontflip { from { opacity: 0; transform: translateY(10px) scale(.94); filter: blur(5px); } }
.bt__foot { display: flex; flex-direction: column; align-items: center; gap: var(--sp-6); }
.bt__foot small { font-size: var(--fs-11); color: rgba(255,255,255,.65); }
.bt__word--sm { font-size: var(--fs-13); color: var(--white); }
.sel { position: absolute; left: 50%; top: 50%; width: 88%; height: 30%; translate: -50% -50%; border: 1px dashed rgba(255,255,255,.8); opacity: 0; transition: opacity .25s ease; pointer-events: none; }
.sel u { position: absolute; width: 7px; height: 7px; background: var(--white); border: 1px solid var(--accent); }
.sel u:nth-child(1) { left: -4px; top: -4px; } .sel u:nth-child(2) { right: -4px; top: -4px; } .sel u:nth-child(3) { left: -4px; bottom: -4px; } .sel u:nth-child(4) { right: -4px; bottom: -4px; }
.brand__type.picking .sel { opacity: 1; }

/* pen tool draws the symbol, the pattern draws itself, then type and colour options are tried and one is approved */
.viz--brand.js-anim .bt { opacity: 0; transform: translateY(20px); transition: opacity .6s ease, transform .7s var(--ease-out); }
.viz--brand.is-live .bt { opacity: 1; transform: none; }
.viz--brand.is-live .bt--hero { transition-delay: .05s; } .viz--brand.is-live .bt--sym { transition-delay: .2s; } .viz--brand.is-live .bt--pal { transition-delay: .35s; } .viz--brand.is-live .bt--pat { transition-delay: .5s; } .viz--brand.is-live .bt--tag { transition-delay: .65s; }
.viz--brand.js-anim .lg { stroke-dasharray: 1; stroke-dashoffset: 1; }
.viz--brand.is-live .lg-o { stroke-dashoffset: 0; transition: stroke-dashoffset 1.6s linear .5s; }
.viz--brand.is-live .lg-h { stroke-dashoffset: 0; transition: stroke-dashoffset .4s linear 2.25s; }
.viz--brand.is-live .lg-v { stroke-dashoffset: 0; transition: stroke-dashoffset .5s linear 2.8s; }
.viz--brand.js-anim .lg-fill { opacity: 0; transition: opacity .6s ease; }
.viz--brand.is-live .lg-fill { opacity: 1; transition-delay: 3.5s; }
.viz--brand.is-live .anchors rect { animation: anchorpop 3.1s ease both; }
.viz--brand.is-live .anchors rect:nth-child(1) { animation-delay: .5s; } .viz--brand.is-live .anchors rect:nth-child(2) { animation-delay: .85s; }
.viz--brand.is-live .anchors rect:nth-child(3) { animation-delay: 1.3s; } .viz--brand.is-live .anchors rect:nth-child(4) { animation-delay: 1.75s; }
@keyframes anchorpop { 0% { opacity: 0; } 6% { opacity: 1; } 78% { opacity: 1; } 100% { opacity: 0; } }
.viz--brand.is-live .pen { animation: penmove 3.2s linear .5s both; }
@keyframes penmove {
  0% { opacity: 1; transform: translate(12px, 3px); }
  10.8% { transform: translate(19px, 10px); }
  25% { transform: translate(12px, 21px); }
  39.2% { transform: translate(5px, 10px); }
  50% { transform: translate(12px, 3px); }
  54.7% { transform: translate(5px, 10px); }
  67.2% { transform: translate(19px, 10px); }
  71.9% { transform: translate(12px, 3px); }
  87.5% { opacity: 1; transform: translate(12px, 21px); }
  100% { opacity: 0; transform: translate(12px, 21px); }
}
.viz--brand.js-anim .truchet .tr { stroke-dashoffset: 1; transition: stroke-dashoffset .6s ease; }
.viz--brand.is-live .truchet .tr { stroke-dashoffset: 0; transition-delay: calc(.7s + var(--k) * 28ms); }
.viz--brand.js-anim .truchet .tf { opacity: 0; transition: opacity .5s ease; }
.viz--brand.is-live .truchet .tf { opacity: 1; transition-delay: calc(1s + var(--k) * 28ms); }
@media (max-width: 899px), (max-height: 639px) { .brand { height: 400px; } .brand__logo, .brand__type { aspect-ratio: auto; } }

/* ---------- Branding board v3: pen-drawn symbol (left), colour-tested lockup (right), colour picker ---------- */
.brand { grid-template-rows: 26% 17% 1fr; }
.bt--sym { grid-column: 1 / 4; grid-row: 1; }
.bt--sym svg { width: auto; height: 86%; max-width: 90%; max-height: none; }
.bt--hero { grid-column: 4 / 6; grid-row: 1; flex-direction: row; gap: var(--sp-8); padding: 0 var(--sp-6);
  background-color: var(--hbg, var(--accent)); background-image: linear-gradient(135deg, rgba(255,255,255,.22), rgba(0,0,0,.5)); color: var(--hfg, var(--white));
  transition: background-color .5s ease, color .5s ease; }
.bt--hero .bt__mark svg { width: 24px; height: 24px; }
.bt--hero .bt__word { font-size: var(--fs-17); }
.bt--hero .bt__word, .bt--hero .bt__mark { transition: translate .4s ease; }
.bt--pal { grid-row: 2; }
.bt--pal small { font-size: 9px; }
.bt--cp { grid-column: 1 / 4; grid-row: 3; background: var(--surface); padding: var(--sp-12); display: flex; flex-direction: column; gap: var(--sp-10); --h: 227; --x: 80%; --y: 8%; --pc: var(--accent); }
.cp__area { position: relative; flex: 1; min-height: 0; border-radius: 10px; overflow: hidden; background: linear-gradient(to top, var(--black), rgba(0,0,0,0)), linear-gradient(to right, var(--white), hsl(var(--h), 100%, 50%)); }
.cp__thumb { position: absolute; left: var(--x); top: var(--y); width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; border: 2.5px solid var(--white); background: var(--pc); box-shadow: 0 2px 8px rgba(0,0,0,.5); transition: left .75s var(--ease-soft), top .75s var(--ease-soft), background-color .4s ease; }
.cp__hue { position: relative; height: 12px; border-radius: var(--r-xs); background: linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00); }
.cp__hthumb { position: absolute; top: 50%; left: calc(var(--h) / 360 * 100%); width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; border: 2.5px solid var(--white); background: hsl(var(--h), 100%, 50%); box-shadow: 0 2px 6px rgba(0,0,0,.4); transition: left .75s var(--ease-soft), background-color .4s ease; }
.cp__row { display: flex; align-items: center; gap: var(--sp-10); font-size: var(--fs-13); }
.cp__prev { width: 24px; height: 24px; border-radius: 50%; background: var(--pc); box-shadow: inset 0 0 0 1px rgba(16,16,16,.12); transition: background-color .4s ease; }
.cp__hex { font-variant-numeric: tabular-nums; font-weight: var(--fw-medium); }
.cp__drop { width: 18px; height: 18px; margin-left: auto; color: var(--muted); }
.viz--brand.js-anim .bt--cp .cp__thumb, .viz--brand.js-anim .bt--cp .cp__hthumb { opacity: 0; }
.viz--brand.is-live .bt--cp .cp__thumb, .viz--brand.is-live .bt--cp .cp__hthumb { opacity: 1; transition: left .75s var(--ease-soft), top .75s var(--ease-soft), background-color .4s ease, opacity .4s ease 1.2s; }
.viz--brand.is-live .bt--cp { transition-delay: .5s; }
.viz--brand.is-live .bt--sym { transition-delay: .05s; } .viz--brand.is-live .bt--pal { transition-delay: .35s; } .viz--brand.is-live .bt--tag { transition-delay: .65s; }
.viz--brand.js-anim .bt--hero { transition: opacity .6s ease, transform .7s var(--ease-out), background-color .5s ease, color .5s ease; }

/* fixes: symbol stays inside its tile, palette swatches never wider than the strip */
.bt--sym svg { position: absolute; left: 50%; top: 50%; translate: -50% -50%; height: 86%; width: auto; aspect-ratio: 1; max-width: none; }
.bt--pal i { min-width: 0; overflow: hidden; padding: var(--sp-4); }
.bt--pal small { font-size: 8px; white-space: nowrap; }

/* ---------- Branding v4: interactive colour picker, typography tile back to the light card ---------- */
.brand { --primary: var(--accent); --primary-deep: var(--accent-700); --primary-tint: var(--accent-soft); }
.bt--sym { color: var(--primary); }
.lg-fill { fill: var(--primary-tint); }
.bt--tag { background: var(--surface); color: var(--ink); justify-content: center; gap: var(--sp-16); padding: var(--sp-16) var(--sp-10); }
.aa { position: relative; display: inline-block; padding: 0 var(--sp-2); }
.bt--tag b { font-size: clamp(64px, 6.4vw, 84px); line-height: var(--lh-none); font-weight: var(--fw-semibold); text-transform: none; padding: 0; }
.bt--tag .sel { left: auto; top: auto; inset: -8px -14px; width: auto; height: auto; translate: none; border-color: var(--primary); }
.bt--tag .sel u { border-color: var(--primary); }
.bt__foot small { color: var(--muted); font-size: var(--fs-12); }
.cp__hint { margin-left: auto; font-style: normal; font-size: var(--fs-11); color: var(--muted); opacity: 0; transition: opacity .4s ease; }
.cp__drop { margin-left: var(--sp-10); }
.bt--cp.is-interactive .cp__hint { opacity: 1; }
.bt--cp.is-interactive.was-used .cp__hint { opacity: 0; }
.bt--cp.is-interactive .cp__area { cursor: crosshair; touch-action: none; }
.bt--cp.is-interactive .cp__hue { cursor: ew-resize; touch-action: none; }
.bt--cp.is-interactive .cp__thumb { animation: thumbhint 1.6s ease 2; }
@keyframes thumbhint { 50% { box-shadow: 0 0 0 7px rgba(255,255,255,.35), 0 2px 8px rgba(0,0,0,.5); } }
.brand.dragging .cp__thumb, .brand.dragging .cp__hthumb { transition: none !important; }
.brand.dragging .bt--pal i, .brand.dragging .bt--hero, .brand.dragging .cp__prev { transition-duration: .1s !important; }
.cp__hint { white-space: nowrap; font-size: 10px; }
.cp__row { gap: var(--sp-8); }

/* symbol tile on white, like the typography tile */
.bt--sym { background: var(--surface); }

/* ---------- Branding board v5: two equal columns, colour strip full width ---------- */
.brand { grid-template-columns: 1fr 1fr; grid-template-rows: 26% 17% 1fr; }
.bt--sym  { grid-column: 1; grid-row: 1; }
.bt--hero { grid-column: 2; grid-row: 1; }
.bt--pal  { grid-column: 1 / 3; grid-row: 2; }
.bt--cp   { grid-column: 1; grid-row: 3; }
.bt--tag  { grid-column: 2; grid-row: 3; }
.bt--hero .bt__mark svg { width: 28px; height: 28px; }
.bt--hero .bt__word { font-size: 21px; }
.bt--pal small { font-size: 9px; }

/* the selection box around "Aa" stays once the font is chosen (visible by default without JS) */
.brand__type .sel { opacity: 1; }
.viz--brand.js-anim .brand__type .sel { opacity: 0; }
.viz--brand.js-anim .brand__type.picking .sel { opacity: 1; }

/* selection box: comfortable space around "Aa" */
.aa { display: block; line-height: var(--lh-none); }
.bt--tag b { display: block; }
.bt--tag .sel { inset: -4px -18px; }

/* AI media tiles: real stock photos and a video inside the generated tiles */
.gen__grid i { overflow: hidden; }
.gen__grid i img, .gen__grid i video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; display: block; }

/* stat suffixes (+ × %): same line as the number, balanced size, optically centred, not a thin superscript */
.stat sup { font-size: .58em; font-weight: var(--fw-semibold); vertical-align: .28em; position: static; margin-left: .06em; color: var(--accent); line-height: 0; }
.bento__card--dark .stat sup { color: var(--accent-300); }
.bento__card--accent .stat sup { color: rgba(255, 255, 255, .75); }
.stat sup { font-size: .72em; font-weight: var(--fw-medium); vertical-align: .12em; margin-left: .04em; }

/* mobile: bigger stat numbers so the bento cards are filled instead of mostly white space */
@media (max-width: 639px) {
  .stat { font-size: clamp(80px, 26vw, 116px); }
  .bento__card { min-height: 240px; padding: var(--sp-24); }
  .bento__label { font-size: var(--fs-16); }
}
@media (max-width: 639px) { .bento__card { gap: var(--sp-24); } }

/* mobile: stat numbers a little smaller, card labels slightly fuller */
@media (max-width: 639px) {
  .stat { font-size: clamp(64px, 21vw, 94px); }
  .bento__label { font-size: var(--fs-18); font-weight: var(--fw-medium); }
}
@media (max-width: 639px) { .bento__card .bento__label { font-size: var(--fs-18); font-weight: var(--fw-medium); opacity: 1; max-width: none; } }

/* pricing note: one line on wide screens (wraps naturally on phones) */
.svc-note { max-width: none; }

/* picker row: icons never get squeezed; the "Drag to try" hint is desktop only */
.cp__prev, .cp__drop { flex: none; }
@media (max-width: 899px) { .cp__hint { display: none; } }

/* ---------- Testimonials: the rating card stays put, reviews glide behind it and fade out ---------- */
.t-stage { --rate-w: clamp(260px, 27%, 330px); --tw: clamp(300px, 34vw, 440px); display: grid; }
.t-stage > * { grid-area: 1 / 1; }
.t-card--rating { position: relative; z-index: 3; width: var(--rate-w); justify-self: start; align-self: stretch; box-shadow: 14px 0 28px -10px rgba(0,0,0,.25); }
.t-viewport { overflow: hidden; z-index: 1;
  -webkit-mask-image: linear-gradient(90deg, transparent var(--rate-w), var(--black) calc(var(--rate-w) + 90px), var(--black) calc(100% - 48px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent var(--rate-w), var(--black) calc(var(--rate-w) + 90px), var(--black) calc(100% - 48px), transparent 100%); }
.t-track { position: relative; display: flex; gap: var(--sp-14); width: max-content; height: 100%; padding-left: calc(var(--rate-w) + 14px); animation: tmarquee var(--tdur, 50s) linear infinite; will-change: transform; }
.t-track .t-card { flex: 0 0 var(--tw); min-height: 340px; margin: 0; }
.t-stage:hover .t-track, .t-stage:focus-within .t-track { animation-play-state: paused; }
@keyframes tmarquee { to { transform: translateX(calc(var(--shift, 0px) * -1)); } }
@media (max-width: 899px) {
  .t-stage { display: block; --tw: min(80vw, 340px); }
  .t-card--rating { width: auto; justify-self: stretch; align-self: auto; box-shadow: none; }
  .t-viewport { margin-top: var(--sp-14);
    -webkit-mask-image: linear-gradient(90deg, transparent 0, var(--black) 28px, var(--black) calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, var(--black) 28px, var(--black) calc(100% - 28px), transparent 100%); }
  .t-track { padding-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .t-track { animation: none; }
  .t-viewport { overflow-x: auto; }
  .t-track .t-card[aria-hidden="true"] { display: none; }
}

/* ---------- Rating card v2 ---------- */
.t-card--rating { background: radial-gradient(120% 80% at 100% 0%, rgba(47,84,235,.38), rgba(47,84,235,0) 62%), var(--dark); border: 1px solid rgba(255,255,255,.09); padding: var(--sp-24); gap: var(--sp-14); justify-content: space-between; }
.rt__top { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-10); }
.rt__label { font-size: var(--fs-14); color: var(--on-dark-1); }
.rt__stars { display: inline-flex; gap: var(--sp-2); }
.rt__stars i { font-size: var(--fs-14); color: var(--star); }
.t-card--rating .big { font-size: clamp(76px, 7vw, 96px); line-height: .95; }
.t-card--rating .big small { font-size: var(--fs-24); color: var(--on-dark-3); margin-left: var(--sp-4); }
.rt__src { display: flex; align-items: center; gap: var(--sp-12); }
.rt__avs { display: flex; flex: none; }
.rt__avs i { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--dark); margin-left: -8px; background: var(--c); }
.rt__avs i:first-child { margin-left: 0; }
.t-card--rating .rt__src p { margin: 0; font-size: var(--fs-13); color: var(--on-dark-2); max-width: none; line-height: var(--lh-normal); }
.rt__btn { width: 100%; justify-content: space-between; padding: 7px 7px 7px var(--sp-24); }
.rt__arrow { width: 36px; height: 36px; border-radius: 50%; background: var(--btn); color: var(--white); display: grid; place-items: center; transition: transform .25s ease, background .25s ease; }
.rt__arrow i { font-size: var(--fs-13); }
.rt__btn:hover .rt__arrow { background: var(--accent); transform: rotate(45deg); }

/* CTA card: tighter inner padding (the section gap outside the card stays the same) */
.section.cta { padding-block: clamp(48px, 6vw, 88px); }

/* header pill: the gap right of the last control equals the gap above and below it (1px border + padding) */
.header__inner { padding-right: calc(var(--sp-10) - 1px); }          /* menu button 44px in a 64px pill: 10px all round */
@media (min-width: 1000px) { .header__inner { padding-right: var(--sp-4); } }  /* "Book a call" 54px in a 64px pill: 5px all round */

/* sound toggle: floating button, out of the page flow so it never adds a gap under the footer */
.sound-toggle { position: fixed; left: var(--sp-16); bottom: var(--sp-16); z-index: var(--z-header); width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--surface); color: var(--ink); cursor: pointer; }
.sound-toggle i { font-size: var(--fs-16); }
.sound-toggle .off { display: none; }
.sound-toggle.is-off .on { display: none; }
.sound-toggle.is-off .off { display: inline; }

/* ---------- Industry card (new): live scene, title, text, link ---------- */
.icard { display: flex; flex-direction: column; gap: var(--sp-16); width: 100%; padding: var(--sp-20) var(--sp-20) var(--sp-24); border-radius: var(--r-md); background: var(--surface); transition: background .3s, color .3s; }
.icard__icon { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: var(--sp-24); border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); transition: background .3s, color .3s; }
.icard__icon i { font-size: var(--fs-20); }
.icard h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); }
.icard p { font-size: var(--fs-15); color: var(--ink-2); margin-top: calc(var(--sp-8) * -1); }
.icard__go { margin-top: auto; padding-top: var(--sp-8); font-size: var(--fs-14); font-weight: var(--fw-medium); color: var(--accent); }
.icard__go::after { content: " ↗"; }

/* industries strip: cards scroll sideways on their own, pause on hover, stay swipeable for reduced motion */
.ind-marquee { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; cursor: grab; margin-top: clamp(24px, 4vw, 56px); mask-image: linear-gradient(90deg, transparent, var(--black) 6%, var(--black) 94%, transparent); }
.ind-marquee::-webkit-scrollbar { display: none; }
.ind-marquee.is-dragging { cursor: grabbing; user-select: none; }
.ind-marquee__track { display: flex; gap: var(--sp-14); width: max-content; padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))); }
.ind-marquee .icard { flex: none; width: clamp(230px, 70vw, 262px); }
/* card hover: same blob fill as the buttons (mouse only, no hover state on touch screens) */
.icard { position: relative; isolation: isolate; overflow: hidden; --blob: var(--accent); }
.icard h3, .icard p, .icard__go { transition: color .3s; }
@media (hover: hover) and (pointer: fine) {
  .icard:hover h3, .icard:hover .icard__go { color: var(--white); }
  .icard:hover p { color: var(--on-dark-1); }
  .icard:hover .icard__icon { background: var(--white); color: var(--accent); }
  .icard:hover .btn__blob, .icard:focus-visible .btn__blob { transform: translate3d(0, 0, 0) scale(1.7); }
}
.ind-nav { display: flex; gap: var(--sp-10); margin-top: var(--sp-24); }
.ind-nav__btn { display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--r-pill); border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-size: var(--fs-16); cursor: pointer; transition: background .2s, color .2s, opacity .2s; }
.ind-nav__btn:disabled { opacity: .35; cursor: default; }
.ind-nav--below { display: none; justify-content: flex-start; }
@media (max-width: 899px) { .sec-head .ind-nav, .work-nav { display: none; } .ind-nav--below { display: flex; } }
@media (hover: hover) and (pointer: fine) { .ind-nav__btn:not(:disabled):hover { background: var(--btn); color: var(--white); } }

/* no sound effects on phones and tablets, so the toggle is hidden there */
@media (max-width: 899px), (hover: none) { .sound-toggle { display: none; } }

/* phones: hero and footer share one inner padding, the Process and CTA cards get a bit more */
@media (max-width: 639px) {
  .hero__card { padding-inline: var(--card-pad); }
  .section.process, .section.cta { padding-block: var(--card-pad-lg); }
  .process .container, .cta .container { padding-inline: var(--card-pad-lg); }
  .footer .container { padding-inline: var(--card-pad); }
  .footer { padding-top: var(--card-pad); }
}

/* ==========================================================
   SERVICE PAGES (services/*.html)
   ========================================================== */
.hero--page .hero__card { min-height: 0; justify-content: flex-start; padding-inline: 0; padding-bottom: clamp(32px, 4vw, 56px); }
.hero__grid { display: grid; gap: var(--sp-40); align-items: center; width: 100%; }
.hero--page .hero__content { align-items: flex-start; text-align: left; margin-block: 0; }
.hero--page h1 { font-size: var(--fs-display-3); max-width: 15ch; }
.hero__pills { display: flex; flex-wrap: wrap; gap: var(--sp-8); margin-top: var(--sp-24); }
.hero__pills li { padding: var(--sp-6) var(--sp-14); border-radius: var(--r-pill); background: var(--pill-bg); border: 1px solid rgba(255,255,255,.9); font-size: var(--fs-13); color: var(--ink-2); }
.hero__viz { display: flex; align-items: center; }
.viz--web.is-leaving .mb { opacity: 0; transition: opacity .6s ease; }
.hero__viz .viz { flex: 1; min-height: 0; padding: 0; display: block; }
.hero__viz .mb { width: 100%; border-radius: var(--r-md); }
.hero__viz .mb__body { padding: var(--sp-16); gap: var(--sp-14); }
.hero__viz .mb__hero { padding: var(--sp-24); gap: var(--sp-12); }
.hero__viz .mb__hero b { height: 16px; }
.hero__viz .mb__hero u { font-size: var(--fs-13); padding: var(--sp-8) var(--sp-16); }
.hero__viz .mb__cols i { height: clamp(48px, 8vw, 84px); }
@media (min-width: 900px) { .hero__grid { grid-template-columns: 1.05fr 1fr; gap: var(--sp-64); } }
@media (max-width: 639px) { .hero--page .hero__card { padding-inline: var(--card-pad); } .hero--page .container { padding-inline: 0; } }

.feat-grid { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.feat { display: flex; flex-direction: column; gap: var(--sp-12); padding: var(--sp-24); border-radius: var(--r-md); background: var(--surface); }
.feat__ico { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: var(--sp-12); border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-20); }
.feat h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); }
.feat p { font-size: var(--fs-15); color: var(--ink-2); }
@media (min-width: 640px) { .feat-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .feat-grid { grid-template-columns: repeat(3, 1fr); } }

.step__ico { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: var(--sp-24); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-20); }

.case-grid { display: grid; gap: var(--sp-16); grid-template-columns: 1fr; }
.case-grid .case { width: auto; }
@media (min-width: 640px) { .case-grid { grid-template-columns: 1fr 1fr; } }

.price { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.price__main, .price__side { padding: var(--sp-32); border-radius: var(--r-md); }
.price__main { background: var(--surface); }
.price__amount { font-family: var(--font-display); font-size: var(--fs-display-2); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--sp-10); }
.price__amount small { font-family: var(--font-body); font-size: var(--fs-15); font-weight: var(--fw-regular); color: var(--muted); }
.price__list { display: grid; gap: var(--sp-12); margin-top: var(--sp-28); font-size: var(--fs-16); }
.price__list li { display: flex; align-items: center; gap: var(--sp-10); }
.price__list i { color: var(--accent); font-size: var(--fs-18); }
.price__side { display: flex; flex-direction: column; gap: var(--sp-12); background: var(--accent); color: var(--white); }
.price__side h3 { font-family: var(--font-display); font-size: var(--fs-30); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.price__side p { color: var(--accent-pale); margin-bottom: var(--sp-16); }
.price__side .btn { align-self: flex-start; margin-top: auto; }
@media (min-width: 900px) { .price { grid-template-columns: 1.4fr 1fr; } }


/* service page: extra blocks (journey tags, promo card, questions, related services) */
.hero--page .hero__lead { max-width: 52ch; margin-top: var(--sp-16); }
.hero--page .hero__lead:first-of-type { margin-top: var(--sp-24); }
.hero--page h1 { max-width: 14ch; }
.feat__tag { align-self: flex-start; margin-top: auto; padding: var(--sp-4) var(--sp-12); border-radius: var(--r-pill); background: var(--bg); font-size: var(--fs-12); color: var(--ink-2); }
.feat--promo { justify-content: space-between; background: var(--accent); color: var(--white); }
.feat--promo h3 { font-size: var(--fs-card-title); }
.feat--promo p { color: var(--accent-pale); }
.feat--promo .btn { align-self: flex-start; margin-top: var(--sp-8); }
.q-wrap { display: grid; gap: var(--sp-40); align-items: center; }
.q-list { display: grid; gap: var(--sp-10); }
.q-list li { display: flex; align-items: center; gap: var(--sp-16); padding: var(--sp-20) var(--sp-24); border-radius: var(--r-md); background: var(--surface); font-family: var(--font-display); font-size: var(--fs-22); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-snug); }
.q__ico { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-18); }
@media (min-width: 900px) { .q-wrap { grid-template-columns: 1fr 1.1fr; gap: var(--sp-64); } }
.rel-grid { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
@media (min-width: 640px) { .rel-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .rel-grid { grid-template-columns: repeat(4, 1fr); } }

@media (min-width: 1000px) { .pain-grid--tall .pain { min-height: 340px; } }

/* service page: centered heads, connected journey flow, tabbed showcase, question band */
.sec-head.sec-head--center { grid-template-columns: 1fr; row-gap: var(--sp-16); justify-items: center; text-align: center; }
.sec-head--center .lead { max-width: 56ch; }
.jflow { list-style: none; padding: 0; margin: 0; position: relative; display: grid; gap: var(--sp-40); grid-template-columns: 1fr; counter-reset: none; }
.jflow__item { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--sp-12); }
.jflow__node { position: relative; z-index: 1; display: grid; place-items: center; width: 64px; height: 64px; margin-bottom: var(--sp-8); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-22); box-shadow: 0 0 0 8px var(--accent-soft); }
.jflow__item h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); }
.jflow__item p { max-width: 34ch; font-size: var(--fs-15); color: var(--ink-2); }
.jflow__tag { margin-top: var(--sp-4); padding: var(--sp-4) var(--sp-12); border-radius: var(--r-pill); background: var(--surface); font-size: var(--fs-12); color: var(--ink-2); }
@media (min-width: 900px) {
  .jflow { grid-template-columns: repeat(3, 1fr); gap: var(--sp-24); }
  .jflow::before { content: ""; position: absolute; top: 31px; left: 16.66%; right: 16.66%; border-top: 2px dashed var(--ink-faint); }
  .jflow::after { content: ""; position: absolute; top: 25px; left: 16.66%; width: 14px; height: 14px; border-radius: var(--r-pill); background: var(--accent); }
}
@media (min-width: 900px) and (prefers-reduced-motion: no-preference) { .jflow::after { animation: jflow-dot 5s ease-in-out infinite; } }
@keyframes jflow-dot { 0% { left: 16.66%; opacity: 0; } 8% { opacity: 1; } 92% { opacity: 1; } 100% { left: calc(83.33% - 14px); opacity: 0; } }

.showcase { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
.show__tabs { display: flex; gap: var(--sp-8); overflow-x: auto; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); }
.show__tabs::-webkit-scrollbar { display: none; }
.show__tab { flex: none; display: flex; align-items: center; gap: var(--sp-12); padding: var(--sp-10) var(--sp-16) var(--sp-10) var(--sp-10); border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--surface); color: var(--ink); font-family: var(--font-body); font-size: var(--fs-15); font-weight: var(--fw-medium); text-align: left; cursor: pointer; transition: background .25s, color .25s, border-color .25s; }
.show__ico { display: grid; place-items: center; width: 36px; height: 36px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-14); transition: background .25s, color .25s; }
.show__tab.is-active { background: var(--btn); border-color: var(--btn); color: var(--white); }
.show__tab.is-active .show__ico { background: var(--accent); color: var(--accent-ink); }
.show__panel { position: relative; min-height: 340px; border-radius: var(--r-lg); background: var(--dark); color: var(--white); overflow: hidden; isolation: isolate; }
.show__panel::before { content: ""; position: absolute; z-index: -1; width: 70%; aspect-ratio: 1; right: -20%; top: -40%; border-radius: 50%; background: var(--accent); filter: blur(90px); opacity: .45; }
.show__pane { display: none; flex-direction: column; gap: var(--sp-16); height: 100%; padding: var(--sp-32); }
.show__pane.is-active { display: flex; animation: show-in .45s var(--ease-out); }
@keyframes show-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.show__big { display: grid; place-items: center; width: 64px; height: 64px; border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-26); }
.show__pane h3 { font-family: var(--font-display); font-size: var(--fs-30); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); }
.show__pane > p { max-width: 52ch; color: var(--on-dark-1); font-size: var(--fs-16); }
.show__list { display: grid; gap: var(--sp-10); margin-top: var(--sp-8); font-size: var(--fs-15); color: var(--on-dark-0); }
.show__list li { display: flex; align-items: center; gap: var(--sp-10); }
.show__list i { color: var(--accent-300); font-size: var(--fs-16); }
.show__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-16); margin-top: auto; padding-top: var(--sp-20); }
.show__best { padding: var(--sp-6) var(--sp-14); border-radius: var(--r-pill); background: var(--dark-3); color: var(--on-dark-1); font-size: var(--fs-13); }
@media (min-width: 900px) {
  .showcase { grid-template-columns: 340px 1fr; gap: var(--sp-16); align-items: stretch; }
  .show__tabs { flex-direction: column; overflow: visible; margin-inline: 0; padding-inline: 0; }
  .show__tab { border-radius: var(--r-md); padding: var(--sp-14) var(--sp-16); flex: 1; }
  .show__pane { padding: var(--sp-40); }
}
@media (hover: hover) and (pointer: fine) { .show__tab:not(.is-active):hover { border-color: var(--ink); } }

.qband { display: flex; flex-direction: column; align-items: center; gap: var(--sp-32); padding: clamp(40px, 7vw, 96px) var(--sp-24); border-radius: var(--r-lg); background: var(--surface); text-align: center; }
.qband__title { font-family: var(--font-display); font-size: var(--fs-22); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); color: var(--accent); }
.qband__list { display: grid; gap: var(--sp-12); list-style: none; padding: 0; margin: 0; }
.qband__list li { font-family: var(--font-display); font-size: clamp(28px, 4.6vw, 64px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); color: var(--ink); }
.qband__close { max-width: 40ch; font-size: var(--fs-lead); color: var(--ink-2); }
.qband__list li { transition: color .6s ease; color: var(--ink-faint); }
.qband__list li.is-on { color: var(--ink); }
@media (prefers-reduced-motion: reduce) { .qband__list li { transition: none; } }

/* ==========================================================
   Process step scenes for the service pages (.step__viz + .sa-* motion classes)
   Motion runs only while the step is on screen (.step.is-live); the base state of every element is its finished state.
   ========================================================== */
.vs-svg { width: 100%; height: 100%; overflow: visible; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.vs-line { stroke: var(--on-dark-4); stroke-width: 1.5; }
.vs-acc { stroke: var(--accent-300); stroke-width: 2; }
.vs-node { fill: var(--dark-3); stroke: var(--on-dark-4); stroke-width: 1; }
.vs-root { fill: var(--accent); stroke: none; }
.vs-txt { fill: var(--on-dark-1); font-family: var(--font-body); font-size: 9.5px; stroke: none; }
.vs-txt.on { fill: var(--accent-ink); }
.vs-dot { fill: var(--accent-300); stroke: none; }
.vs-ringc { stroke: var(--accent-300); stroke-width: 2; opacity: 0; }
.vs-fillshape { fill: var(--accent); stroke: none; opacity: .9; }
.sa-out { opacity: 0; }
.sa-scan, .sa-ping { opacity: 0; }

/* web design */
.vs-page { flex-direction: column; align-items: stretch; justify-content: center; gap: var(--sp-10); padding: var(--sp-12) var(--sp-14); border-radius: var(--r-sm); background: var(--dark-3); position: relative; }
.vs-page__bar { height: 7px; border-radius: var(--r-pill); background: var(--on-dark-4); transform-origin: left; }
.vs-page__row { position: relative; display: flex; align-items: center; margin-top: var(--sp-4); }
.vs-page__btn { position: relative; z-index: 1; padding: var(--sp-6) var(--sp-14); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-12); font-weight: var(--fw-medium); }
.vs-page__heat { position: absolute; left: -14px; top: 50%; width: 110px; height: 56px; margin-top: -28px; background: radial-gradient(closest-side, var(--accent) 0%, transparent 100%); opacity: .45; }
.vs-page__cursor { position: absolute; z-index: 2; left: 34px; top: 8px; font-size: var(--fs-16); color: var(--white); }
.vs-resp { flex-direction: column; justify-content: center; gap: var(--sp-8); }
.vs-resp__frame { width: 100%; max-width: 100%; height: 62px; padding: var(--sp-8); border-radius: var(--r-sm); background: var(--dark-3); display: grid; grid-template-columns: 1fr; align-content: start; gap: var(--sp-6); overflow: hidden; }
.vs-resp__bar { height: 6px; width: 40%; border-radius: var(--r-pill); background: var(--accent); }
.vs-resp__line { height: 6px; border-radius: var(--r-pill); background: var(--on-dark-4); } .vs-resp__line.s { width: 60%; }
.vs-resp__block { height: 14px; border-radius: var(--r-xs); background: var(--accent-300); opacity: .5; }
.vs-resp__icons { display: flex; gap: var(--sp-14); font-size: var(--fs-13); color: var(--on-dark-4); }
.vs-conv { gap: var(--sp-16); }
.vs-conv__num { position: relative; flex: none; width: 76px; height: 44px; font-family: var(--font-display); font-size: var(--fs-30); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); }
.vs-conv__num b { position: absolute; left: 0; top: 0; line-height: var(--lh-none); }
.vs-conv__num b:last-child { color: var(--accent-300); }
.vs-conv__arrow { font-size: var(--fs-20); color: var(--accent-300); }
.vs-conv__spark { flex: 1; width: 0; min-width: 0; height: 44px; }

/* paid media */
.vs-bud { flex-direction: column; justify-content: center; align-items: stretch; gap: var(--sp-10); }
.vs-bud__row { display: flex; align-items: center; gap: var(--sp-10); }
.vs-bud__row em { flex: none; width: 48px; font-style: normal; font-size: var(--fs-12); color: var(--on-dark-2); }
.vs-bud__row b { height: 12px; border-radius: var(--r-pill); background: var(--accent); transform-origin: left; }
.vs-bud__row b.b2 { background: var(--accent-300); } .vs-bud__row b.b3 { background: var(--on-dark-4); }
.vs-ad { gap: var(--sp-14); }
.vs-ad__card { flex: 1; min-width: 0; display: flex; gap: var(--sp-10); padding: var(--sp-8); border-radius: var(--r-sm); background: var(--dark-3); }
.vs-ad__img { flex: none; width: 44px; height: 56px; border-radius: var(--r-xs); background: linear-gradient(135deg, var(--accent), var(--accent-300)); }
.vs-ad__txt { flex: 1; display: grid; align-content: center; gap: var(--sp-6); }
.vs-ad__txt b { height: 6px; border-radius: var(--r-pill); background: var(--on-dark-4); transform-origin: left; }
.vs-ad__txt u { justify-self: start; text-decoration: none; padding: 2px var(--sp-8); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.vs-ad__chips { flex: none; display: grid; gap: var(--sp-6); }
.vs-ad__chips i { font-style: normal; padding: 2px var(--sp-10); border-radius: var(--r-pill); background: var(--dark-3); color: var(--on-dark-1); font-size: var(--fs-11); white-space: nowrap; }
.vs-trk { gap: var(--sp-16); }
.vs-trk__rows { flex: 1; display: grid; gap: var(--sp-8); }
.vs-trk__row { display: flex; align-items: center; gap: var(--sp-8); font-size: var(--fs-12); color: var(--on-dark-1); }
.vs-trk__row em, .vs-test__track em, .vs-aud__row em { flex: none; display: grid; place-items: center; width: 20px; height: 20px; border-radius: var(--r-pill); border: 1px solid var(--accent); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); font-style: normal; }
.vs-trk__sw { flex: none; width: 46px; height: 26px; padding: 3px; border-radius: var(--r-pill); background: var(--accent); }
.vs-trk__sw u { display: block; width: 20px; height: 20px; border-radius: var(--r-pill); background: var(--white); transform: translateX(20px); }
.vs-opt { gap: var(--sp-16); position: relative; }
.vs-opt__bars { display: flex; align-items: flex-end; gap: var(--sp-12); height: 60px; margin-bottom: var(--sp-20); }
.vs-opt__bars u { display: block; width: 26px; height: 100%; border-radius: var(--r-xs); transform-origin: bottom; }
.vs-opt__bars u:nth-child(1) { background: var(--on-dark-4); transform: scaleY(.3); } .vs-opt__bars u:nth-child(2) { background: var(--accent-300); transform: scaleY(.55); } .vs-opt__bars u:nth-child(3) { background: var(--accent); transform: scaleY(1); }
.vs-opt__lbl { position: absolute; left: 0; bottom: 0; display: flex; gap: var(--sp-12); font-size: var(--fs-11); color: var(--on-dark-2); }
.vs-opt__lbl i { width: 26px; text-align: center; font-style: normal; }
.vs-opt__chip { margin-left: auto; align-self: flex-start; padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-12); white-space: nowrap; }

/* seo and aeo */
.vs-aud { flex-direction: column; justify-content: center; align-items: stretch; gap: var(--sp-10); position: relative; }
.vs-aud__row { display: flex; align-items: center; gap: var(--sp-10); }
.vs-aud__row b { height: 8px; border-radius: var(--r-pill); background: var(--dark-3); }
.vs-aud__row em { position: relative; }
.vs-aud__row em i { position: absolute; inset: 0; display: grid; place-items: center; font-style: normal; }
.vs-aud__row em u { position: absolute; width: 20px; height: 20px; border-radius: var(--r-pill); background: var(--alert); }
.vs-aud__row em { background: var(--accent); }
.vs-aud__scan { position: absolute; left: 0; right: 0; top: 14px; height: 2px; background: linear-gradient(90deg, transparent, var(--accent-300), transparent); }
.vs-ser { flex-direction: column; justify-content: center; align-items: stretch; gap: var(--sp-8); padding: var(--sp-12) var(--sp-14); border-radius: var(--r-sm); background: var(--dark-3); position: relative; }
.vs-ser__url { width: 38%; height: 5px; border-radius: var(--r-pill); background: var(--on-dark-4); opacity: .7; }
.vs-ser__title { width: 72%; height: 9px; border-radius: var(--r-pill); background: var(--accent-300); transform-origin: left; }
.vs-ser__d { height: 5px; border-radius: var(--r-pill); background: var(--on-dark-4); transform-origin: left; }
.vs-ser__ai { position: absolute; right: var(--sp-8); bottom: var(--sp-8); display: inline-flex; align-items: center; gap: var(--sp-6); padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); white-space: nowrap; }
.vs-rank { display: block; position: relative; height: 96px; margin-block: 0 var(--sp-24); }
.vs-rank__row { position: absolute; left: 0; right: 0; display: flex; align-items: center; gap: var(--sp-10); height: 22px; padding: 0 var(--sp-12); border-radius: var(--r-pill); background: var(--dark-3); }
.vs-rank__row em { font-style: normal; font-size: var(--fs-12); color: var(--on-dark-2); width: 20px; }
.vs-rank__row b { flex: 1; height: 6px; border-radius: var(--r-pill); background: var(--on-dark-4); }
.vs-rank__row.you { top: 11px; background: var(--accent); } .vs-rank__row.you em { color: var(--accent-ink); } .vs-rank__row.you b { background: var(--accent-ink); opacity: .6; }
.vs-rank__row:nth-child(2) { top: 36px; } .vs-rank__row:nth-child(3) { top: 61px; }

/* ai media */
.vs-brief { gap: var(--sp-16); }
.vs-brief__lines { flex: 1; display: grid; gap: var(--sp-10); padding: var(--sp-12); border-radius: var(--r-sm); background: var(--dark-3); }
.vs-brief__lines b { height: 7px; border-radius: var(--r-pill); background: var(--on-dark-4); transform-origin: left; }
.vs-brief__tags { display: grid; gap: var(--sp-6); }
.vs-brief__tags i { font-style: normal; padding: 2px var(--sp-10); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.vs-mood { position: relative; justify-content: center; }
.vs-mood__grid { display: grid; grid-template-columns: repeat(2, 52px); gap: var(--sp-8); }
.vs-mood__grid u { display: block; height: 38px; border-radius: var(--r-xs); }
.vs-mood__grid .m1 { background: linear-gradient(135deg, var(--accent), var(--accent-300)); } .vs-mood__grid .m2 { background: var(--accent-soft); } .vs-mood__grid .m3 { background: var(--star); } .vs-mood__grid .m4 { background: var(--dark-3); border: 1px solid var(--on-dark-4); }
.vs-mood__ring { position: absolute; left: calc(50% - 60px); top: 8px; width: 52px; height: 38px; border-radius: var(--r-xs); border: 2px solid var(--white); }
.vs-mood__ok { position: absolute; left: calc(50% - 22px); top: 4px; display: grid; place-items: center; width: 20px; height: 20px; border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.vs-gen { gap: var(--sp-16); }
.vs-gen__frame { position: relative; flex: 1; height: 72px; border-radius: var(--r-sm); background: var(--dark-3); overflow: hidden; }
.vs-gen__img { position: absolute; inset: 0; background: linear-gradient(135deg, var(--accent), var(--accent-300) 60%, var(--accent-soft)); transform-origin: left; }
.vs-gen__spark { position: absolute; right: var(--sp-10); top: var(--sp-8); font-size: var(--fs-16); color: var(--white); }
.vs-gen__pill { position: relative; flex: none; width: 82px; height: 26px; border-radius: var(--r-pill); background: var(--dark-3); font-size: var(--fs-12); color: var(--on-dark-1); }
.vs-gen__pill b { position: absolute; inset: 0; display: grid; place-items: center; font-weight: var(--fw-regular); }
.vs-fmt { position: relative; gap: var(--sp-14); align-items: flex-end; justify-content: center; padding-block: var(--sp-8); }
.vs-fmt > i { display: grid; place-items: center; border-radius: var(--r-xs); background: var(--accent); color: var(--accent-ink); font-style: normal; font-size: var(--fs-11); }
.vs-fmt > i:nth-child(2) { background: var(--accent-300); color: var(--dark); } .vs-fmt > i:nth-child(3) { background: var(--dark-3); color: var(--on-dark-1); border: 1px solid var(--on-dark-4); }
.vs-fmt__ok { position: absolute; right: 0; top: 0; display: inline-flex; align-items: center; gap: var(--sp-6); padding: var(--sp-4) var(--sp-10); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-12); }

/* branding */
.vs-map { position: relative; margin-block: 0 var(--sp-24); height: 96px; border-radius: var(--r-sm); background: var(--dark-3); }
.vs-map__ax { position: absolute; background: var(--on-dark-4); opacity: .5; } .vs-map__ax.x { left: 8px; right: 8px; top: 50%; height: 1px; } .vs-map__ax.y { top: 8px; bottom: 8px; left: 50%; width: 1px; }
.vs-map__d, .vs-map__you, .vs-map__ring { position: absolute; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: var(--r-pill); background: var(--on-dark-4); }
.vs-map__you { width: 20px; height: 20px; margin: -10px 0 0 -10px; background: var(--accent); }
.vs-map__ring { width: 20px; height: 20px; margin: -10px 0 0 -10px; background: transparent; border: 2px solid var(--accent-300); }
.vs-pal { flex-direction: column; justify-content: center; gap: var(--sp-10); }
.vs-pal__sw { display: flex; gap: var(--sp-10); }
.vs-pal__sw u { display: block; width: 34px; height: 34px; border-radius: var(--r-pill); background: var(--c); }
.vs-pal__aa { font-family: var(--font-display); font-size: var(--fs-26); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--white); }
.vs-book { gap: var(--sp-14); }
.vs-book__grid { flex: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-6); }
.vs-book__grid u { display: grid; place-items: center; align-content: center; gap: 3px; height: 56px; border-radius: var(--r-xs); background: var(--dark-3); text-decoration: none; font-family: var(--font-display); font-size: var(--fs-20); font-weight: var(--fw-semibold); color: var(--white); }
.vs-book__grid .t1 { background: var(--accent); }
.vs-book__grid .t2 { display: flex; gap: 4px; } .vs-book__grid .t2 i { width: 10px; height: 10px; border-radius: var(--r-pill); background: var(--accent-300); } .vs-book__grid .t2 i:nth-child(2) { background: var(--star); } .vs-book__grid .t2 i:nth-child(3) { background: var(--accent-soft); }
.vs-book__grid .t4 { display: flex; gap: 4px; font-size: var(--fs-12); color: var(--accent-300); }
.vs-book__dl { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-14); }

/* lead automation */
.vs-crm { position: absolute; right: calc(15% - 6px); top: 50%; margin-top: -9px; width: 0; font-size: var(--fs-16); color: var(--accent-ink); display: none; }
.vs-hub { position: relative; }
.vs-hub .vs-svg { position: absolute; inset: 0; }
.vs-hub__c { position: absolute; left: calc(50% - 22px); top: calc(50% - 22px); display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-18); }
.vs-hub__s { position: absolute; display: grid; place-items: center; width: 34px; height: 34px; border-radius: var(--r-pill); background: var(--dark-3); border: 1px solid var(--on-dark-4); color: var(--accent-300); font-size: var(--fs-14); }
.vs-hub__s.l { left: 8px; top: calc(50% - 17px); } .vs-hub__s.r { right: 8px; top: calc(50% - 17px); } .vs-hub__s.t { left: calc(50% - 17px); top: -10px; }
.vs-test { flex-direction: column; justify-content: center; align-items: stretch; gap: var(--sp-14); }
.vs-test__track { position: relative; display: flex; justify-content: space-between; }
.vs-test__track::before { content: ""; position: absolute; left: 10px; right: 10px; top: 50%; border-top: 2px dashed var(--on-dark-4); }
.vs-test__track em { position: relative; z-index: 1; width: 26px; height: 26px; }
.vs-test__ok { align-self: center; padding: var(--sp-4) var(--sp-12); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-12); font-weight: var(--fw-medium); }

@media (prefers-reduced-motion: no-preference) {
  .sa { animation-duration: var(--t, 6s); animation-delay: var(--d, 0s); animation-iteration-count: infinite; animation-fill-mode: backwards; animation-timing-function: var(--tf, ease-in-out); transform-box: fill-box; transform-origin: var(--o, center); animation-play-state: paused; }
  .step.is-live .sa { animation-play-state: running; }
  .sa-pop { animation-name: sa-pop; } .sa-rise { animation-name: sa-rise; } .sa-grow-x { animation-name: sa-gx; } .sa-move { animation-name: sa-move; }
  .sa-draw { animation-name: sa-draw; stroke-dasharray: 1 2; } .sa-blink { animation-name: sa-blink; } .sa-pulse { animation-name: sa-pulse; }
  .sa-ping { animation-name: sa-ping; animation-timing-function: ease-out; } .sa-fill { animation-name: sa-fill; }
  .sa-out { animation-name: sa-out; } .sa-in { animation-name: sa-in; } .sa-hl { animation-name: sa-hl; } .sa-resp { animation-name: sa-resp; }
  .sa-scan { animation-name: sa-scan; } .sa-reveal { animation-name: sa-reveal; } .sa-knob { animation-name: sa-knob; } .sa-trk { animation-name: sa-trk; }
  .sa-bA { animation-name: sa-ba; } .sa-bB { animation-name: sa-bb; } .sa-bC { animation-name: sa-bc; }
  .sa-ryou { animation-name: sa-ryou; } .sa-r2 { animation-name: sa-r2; } .sa-r3 { animation-name: sa-r3; }
}
@keyframes sa-pop { 0% { opacity: 0; transform: scale(.4); } 8% { opacity: 1; transform: scale(1.1); } 12% { transform: scale(1); } 82% { opacity: 1; transform: scale(1); } 94%, 100% { opacity: 0; transform: scale(1); } }
@keyframes sa-rise { 0% { opacity: 0; transform: translateY(10px); } 10% { opacity: 1; transform: none; } 82% { opacity: 1; } 94%, 100% { opacity: 0; transform: translateY(-4px); } }
@keyframes sa-gx { 0% { transform: scaleX(0); } 14%, 82% { transform: scaleX(1); } 94%, 100% { transform: scaleX(0); } }
@keyframes sa-draw { 0% { stroke-dashoffset: 1; opacity: 1; } 22%, 82% { stroke-dashoffset: 0; opacity: 1; } 94%, 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes sa-move { 0% { transform: translate(var(--x0, 0), var(--y0, 0)); opacity: 0; } 8% { opacity: 1; } 34%, 82% { transform: translate(var(--x1, 0), var(--y1, 0)); opacity: 1; } 94%, 100% { transform: translate(var(--x1, 0), var(--y1, 0)); opacity: 0; } }
@keyframes sa-blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
@keyframes sa-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.12); } }
@keyframes sa-ping { 0%, 20% { opacity: 0; transform: scale(.6); } 24% { opacity: .9; } 55%, 100% { opacity: 0; transform: scale(2.2); } }
@keyframes sa-fill { 0%, 4% { background: transparent; border-color: var(--on-dark-4); color: transparent; } 12%, 82% { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); } 94%, 100% { background: transparent; border-color: var(--on-dark-4); color: transparent; } }
@keyframes sa-out { 0%, 10% { opacity: 1; } 16%, 82% { opacity: 0; } 94%, 100% { opacity: 1; } }
@keyframes sa-in { 0%, 10% { opacity: 0; transform: scale(.6); } 18%, 82% { opacity: 1; transform: scale(1); } 94%, 100% { opacity: 0; } }
@keyframes sa-hl { 0%, 1% { color: var(--on-dark-4); } 4%, 26% { color: var(--accent-300); } 32%, 100% { color: var(--on-dark-4); } }
@keyframes sa-resp { 0%, 24% { width: 100%; } 34%, 52% { width: 62%; } 62%, 82% { width: 34%; } 92%, 100% { width: 100%; } }
@keyframes sa-scan { 0% { transform: translateY(0); opacity: 0; } 5% { opacity: 1; } 56% { transform: translateY(var(--h, 60px)); opacity: 1; } 64%, 100% { transform: translateY(var(--h, 60px)); opacity: 0; } }
@keyframes sa-reveal { 0%, 8% { transform: scaleX(0); } 40%, 82% { transform: scaleX(1); } 94%, 100% { transform: scaleX(0); } }
@keyframes sa-knob { 0%, 52% { transform: translateX(0); } 62%, 86% { transform: translateX(20px); } 98%, 100% { transform: translateX(0); } }
@keyframes sa-trk { 0%, 52% { background: var(--dark-3); } 62%, 86% { background: var(--accent); } 98%, 100% { background: var(--dark-3); } }
@keyframes sa-ba { 0%, 15% { transform: scaleY(.9); } 45%, 85% { transform: scaleY(.3); } 98%, 100% { transform: scaleY(.9); } }
@keyframes sa-bb { 0%, 15%, 98%, 100% { transform: scaleY(.5); } 45%, 85% { transform: scaleY(.55); } }
@keyframes sa-bc { 0%, 15% { transform: scaleY(.35); } 45%, 85% { transform: scaleY(1); } 98%, 100% { transform: scaleY(.35); } }
@keyframes sa-ryou { 0%, 15% { transform: translateY(50px); } 45%, 85% { transform: translateY(0); } 98%, 100% { transform: translateY(50px); } }
@keyframes sa-r2 { 0%, 15% { transform: translateY(-25px); } 45%, 85% { transform: translateY(0); } 98%, 100% { transform: translateY(-25px); } }
@keyframes sa-r3 { 0%, 15% { transform: translateY(-25px); } 45%, 85% { transform: translateY(0); } 98%, 100% { transform: translateY(-25px); } }

.steps > .step { min-width: 0; }

/* web design step 4: conversion dashboard */
.vs-dash { position: relative; gap: var(--sp-14); padding: var(--sp-12) var(--sp-14); border-radius: var(--r-sm); background: var(--dark-3); }
.vs-dash__l { flex: none; display: grid; gap: var(--sp-4); }
.vs-dash__l em { font-style: normal; font-size: var(--fs-11); color: var(--on-dark-2); }
.vs-dash__num { position: relative; display: block; width: 74px; height: 32px; font-family: var(--font-display); font-size: var(--fs-30); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); }
.vs-dash__num b { position: absolute; left: 0; top: 0; line-height: var(--lh-none); }
.vs-dash__num b:last-child { color: var(--accent-300); }
.vs-dash__chart { flex: 1; min-width: 0; width: 0; height: 64px; overflow: visible; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.vs-dash__area { fill: var(--accent); fill-opacity: .28; stroke: none; }
.vs-dash__chip { position: absolute; right: var(--sp-10); top: var(--sp-8); display: inline-flex; align-items: center; gap: var(--sp-4); padding: 2px var(--sp-8); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); font-weight: var(--fw-medium); }

/* industry pages: specialty cards, marketing foundations list */
.sub-grid { display: grid; gap: var(--sp-14); grid-template-columns: 1fr; }
@media (min-width: 640px) { .sub-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sub-grid { grid-template-columns: repeat(3, 1fr); } }
.rows { display: grid; gap: var(--sp-40); align-items: start; }
.rows__head { display: grid; gap: var(--sp-16); justify-items: start; }
.rows__head .btn { margin-top: var(--sp-8); }
.rows__list { display: grid; }
.rows__item { display: flex; gap: var(--sp-20); padding: var(--sp-24) 0; border-top: 1px solid var(--line); }
.rows__item:last-child { border-bottom: 1px solid var(--line); }
.rows__ico { flex: none; display: grid; place-items: center; width: 52px; height: 52px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-20); }
.rows__item h3 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); margin-bottom: var(--sp-8); }
.rows__item p { font-size: var(--fs-15); color: var(--ink-2); max-width: 56ch; }
@media (min-width: 900px) { .rows { grid-template-columns: 1fr 1.25fr; gap: var(--sp-64); } .rows__head { position: sticky; top: 120px; } }
.steps > .step > div:last-child p:not(.step__time) { margin-bottom: var(--sp-20); }
.steps > .step > div:last-child .step__time { margin-bottom: 0; }
@media (min-width: 1000px) {
  .sub-grid:has(> :nth-child(2):last-child), .sub-grid:has(> :nth-child(4):last-child) { grid-template-columns: repeat(2, 1fr); }
}

/* law firm specialty pages */
.qstack { display: grid; gap: var(--sp-10); list-style: none; padding: 0; margin: 0; }
.qstack__item { display: flex; align-items: center; gap: var(--sp-14); padding: var(--sp-14) var(--sp-20) var(--sp-14) var(--sp-14); border-radius: var(--r-pill); background: var(--surface); font-family: var(--font-display); font-size: var(--fs-20); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-snug); }
.qstack__ico { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-14); }
@media (min-width: 900px) { .qstack__item:nth-child(even) { margin-left: var(--sp-48); } }
/* related areas: one row. Many cards scroll sideways at the same card width as the home industries strip, few cards share the full width */
.rel-grid--5 { display: flex; gap: var(--sp-14); overflow-x: auto; overflow-y: hidden; scrollbar-width: none; cursor: grab; scroll-snap-type: x proximity; }
.rel-grid--5::-webkit-scrollbar { display: none; }
.rel-grid--5.is-dragging { cursor: grabbing; user-select: none; scroll-snap-type: none; }
.rel-grid--5 > .icard { flex: 1 0 clamp(230px, 70vw, 262px); min-width: 0; scroll-snap-align: start; }
.rel-grid--5 .icard h3 { font-size: var(--fs-22); }

/* hero visuals fill their whole column on the service pages */
.hero__viz .viz { align-items: stretch; justify-content: stretch; min-height: clamp(360px, 38vw, 480px); }
.hero__viz .viz > .mb, .hero__viz .viz > .dash, .hero__viz .viz > .serp, .hero__viz .viz > .gen, .hero__viz .viz > .brand, .hero__viz .viz > .flow { width: 100%; max-width: none; }
.hero__viz { align-self: stretch; }
.hero__viz .viz { display: flex; }
.hero__viz .viz > .mb, .hero__viz .viz > .dash, .hero__viz .viz > .serp, .hero__viz .viz > .gen, .hero__viz .viz > .brand, .hero__viz .viz > .flow { flex: 1; height: auto; align-self: stretch; }
.hero__viz .viz > .brand { display: grid; }
@media (max-width: 899px) { .hero__viz .viz { min-height: 0; } .hero__viz .viz > .gen__grid, .hero__viz .viz > * { flex: none; } }
/* typing caret sits right against the last letter (cancels the flex gap) */
.serp__search .serp__caret, .gen__prompt .serp__caret { margin-left: calc(var(--sp-10) * -1 + 2px); }

/* hub pages: hero without a visual */
.hero--solo .hero__grid { grid-template-columns: 1fr; }
.hero--solo.hero--page h1 { max-width: 20ch; }
.hero--solo .hero__lead { max-width: 58ch; }

/* form select: arrow sits inside the field with proper spacing */
.field select { appearance: none; -webkit-appearance: none; padding-right: var(--sp-48); cursor: pointer; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101010' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat: no-repeat; background-position: right var(--sp-20) center; background-size: 16px; }

/* multi-select dropdown in the booking form */
.multi { position: relative; }
.multi__btn { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-12); text-align: left; padding: var(--sp-14) var(--sp-16); padding-right: var(--sp-48); border: 1px solid var(--line); border-radius: var(--r-sm); background-color: var(--bg); cursor: pointer; transition: border-color .2s; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101010' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat: no-repeat; background-position: right var(--sp-20) center; background-size: 16px; }
.multi__btn:focus-visible, .multi.is-open .multi__btn { outline: none; border-color: var(--accent); background-color: var(--surface); }
.multi__val { display: flex; align-items: center; gap: var(--sp-8); min-width: 0; overflow: hidden; white-space: nowrap; }
.multi__val.is-empty { color: var(--muted); }
.multi__panel { display: none; position: absolute; z-index: var(--z-pop, 20); top: calc(100% + var(--sp-6)); left: 0; right: 0; padding: var(--sp-8); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); box-shadow: var(--shadow-pop); }
.multi.is-open .multi__panel { display: grid; }
.multi__opt { display: flex; align-items: center; gap: var(--sp-12); padding: var(--sp-10) var(--sp-12); border-radius: var(--r-sm); font-size: var(--fs-15); color: var(--ink); cursor: pointer; }
.multi__opt:hover { background: var(--bg); }
.multi__opt input { appearance: none; -webkit-appearance: none; display: grid; place-items: center; flex: none; width: 20px; height: 20px; margin: 0; padding: 0; border: 1.5px solid var(--muted); border-radius: 50%; background: var(--surface); cursor: pointer; transition: background-color .2s, border-color .2s; }
.multi__opt input::after { content: ""; width: 5px; height: 10px; margin-top: -2px; border: solid var(--white); border-width: 0 2px 2px 0; transform: rotate(45deg) scale(0); transition: transform .15s ease; }
.multi__opt input:checked { background: var(--accent); border-color: var(--accent); }
.multi__opt input:checked::after { transform: rotate(45deg) scale(1); }
.multi__opt input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.multi__pill { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; padding: var(--sp-4) var(--sp-12); border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-14); font-weight: var(--fw-medium); line-height: var(--lh-tight); }
.multi__pill--more { flex: none; background: var(--accent); color: var(--white); }

/* footer brand column: logo, intro, email, phone, address, socials */
.footer__logo { display: inline-flex; margin-bottom: var(--sp-16); color: var(--white); }
.footer__contact { display: grid; gap: var(--sp-12); margin: var(--sp-24) 0; padding: 0; list-style: none; }
.footer__contact li { display: flex; align-items: flex-start; gap: var(--sp-12); margin: 0; font-size: var(--fs-15); color: var(--on-dark-0); }
.footer__contact i { flex: none; width: 18px; margin-top: 4px; color: var(--on-dark-3, var(--on-dark-4)); text-align: center; }
.footer__contact address { font-style: normal; line-height: var(--lh-body, 1.5); }

/* legal pages: sticky contents list beside plain text sections */
.legal { display: grid; gap: var(--sp-40); align-items: start; }
.legal__toc p { font-size: var(--fs-13); color: var(--muted); margin-bottom: var(--sp-12); }
.legal__toc ul { display: grid; gap: var(--sp-10); list-style: none; padding: 0; margin: 0; }
.legal__toc a { font-size: var(--fs-15); color: var(--ink-2); transition: color .2s; }
.legal__toc a:hover { color: var(--accent); }
.legal__body { display: grid; max-width: 72ch; }
.legal__sec { display: grid; gap: var(--sp-16); padding-block: var(--sp-32); border-top: 1px solid var(--line); scroll-margin-top: 120px; }
.legal__sec:first-child { border-top: 0; padding-top: 0; }
.legal__sec h2 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.legal__sec p { font-size: var(--fs-16, var(--fs-15)); color: var(--ink-2); }
@media (min-width: 900px) { .legal { grid-template-columns: 240px 1fr; gap: var(--sp-64); } .legal__toc { position: sticky; top: 120px; } }

/* ---------- Cookie consent: banner + settings dialog (injected by main.js) ---------- */
.ck-banner { position: fixed; z-index: var(--z-consent); left: 50%; bottom: var(--sp-24); width: min(600px, calc(100% - var(--sp-32))); display: grid; gap: var(--sp-16); padding: var(--sp-32); overflow: hidden; background: var(--header-bg); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); color: var(--ink); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: 0 30px 80px -24px rgba(0, 0, 0, .35); transform: translate(-50%, 24px); opacity: 0; visibility: hidden; transition: transform .5s var(--ease-out), opacity .4s ease, visibility 0s .5s; }
.ck-banner.is-open { transform: translate(-50%, 0); opacity: 1; visibility: visible; transition-delay: 0s; }
.ck-banner h2, .ck-dialog h2 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.ck-banner > h2, .ck-banner > p { position: relative; max-width: 46ch; }
.ck-banner p, .ck-dialog p { font-size: var(--fs-15); color: var(--ink-2); }
.ck-banner a, .ck-dialog a { color: var(--ink); font-weight: var(--fw-medium); text-decoration: underline; text-underline-offset: 3px; }
.ck-ico { position: absolute; right: var(--sp-24); top: var(--sp-24); width: 84px; height: 84px; color: var(--line); pointer-events: none; }
.ck-actions { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-12); margin-top: var(--sp-8); }
.ck-actions .btn { margin-left: auto; }
.ck-text { padding: var(--sp-10) var(--sp-8); border: 0; background: none; font-size: var(--fs-15); font-weight: var(--fw-medium); color: var(--ink); cursor: pointer; border-radius: var(--r-pill); transition: color .2s; }
.ck-text:hover { color: var(--accent); }
.ck-text:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ck-dialog .ck-actions .btn { flex: 1 1 auto; justify-content: center; margin-left: 0; }
.ck-link { display: none; }
.ck-overlay { position: fixed; z-index: var(--z-consent); inset: 0; display: grid; place-items: center; padding: var(--sp-16); background: rgba(16, 16, 16, .5); opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility 0s .3s; }
.ck-overlay.is-open { opacity: 1; visibility: visible; transition-delay: 0s; }
.ck-dialog { width: min(100%, 560px); max-height: calc(100svh - var(--sp-32)); overflow-y: auto; display: grid; gap: var(--sp-20); padding: var(--sp-32); background: var(--surface); color: var(--ink); border-radius: var(--r-md); }
.ck-list { display: grid; gap: var(--sp-12); list-style: none; padding: 0; margin: 0; }
.ck-item { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-16); padding: var(--sp-16); border-radius: var(--r-sm); background: var(--bg); }
.ck-item h3 { font-size: var(--fs-16, var(--fs-15)); font-weight: var(--fw-medium); margin-bottom: var(--sp-4); }
.ck-item p { font-size: var(--fs-13); }
.ck-switch { position: relative; flex: none; width: 44px; height: 26px; margin-top: var(--sp-2); }
.ck-switch input { appearance: none; -webkit-appearance: none; width: 100%; height: 100%; margin: 0; border-radius: var(--r-pill); background: var(--line); cursor: pointer; transition: background-color .2s; }
.ck-switch input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: var(--white); transition: transform .2s ease; }
.ck-switch input:checked { background: var(--accent); }
.ck-switch input:checked::after { transform: translateX(18px); }
.ck-switch input:disabled { opacity: .55; cursor: not-allowed; }
.ck-switch input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.footer__bar button.ck-open { background: none; border: 0; padding: 0; color: inherit; font: inherit; cursor: pointer; }
.footer__bar button.ck-open:hover { color: var(--white); }
@media (max-width: 559px) { .ck-banner { bottom: var(--sp-16); padding: var(--sp-24); } .ck-ico { width: 64px; height: 64px; } .ck-actions { justify-content: flex-start; } .ck-actions .btn { margin-left: 0; flex: 1 1 100%; justify-content: center; order: -1; } }
@media (prefers-reduced-motion: reduce) { .ck-banner, .ck-overlay { transition: none; } }

/* work page: featured project band */
.fband { display: grid; gap: var(--sp-32); padding: clamp(24px, 4vw, 48px); border-radius: var(--r-md); background: var(--dark); color: var(--white); }
.fband__main { display: grid; gap: var(--sp-16); align-content: start; justify-items: start; }
.fband__badge { padding: var(--sp-6) var(--sp-12); border-radius: var(--r-pill); background: rgba(255,255,255,.12); font-size: var(--fs-12); }
.fband h3 { font-family: var(--font-display); font-size: var(--fs-display-3); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.fband__sub { font-size: var(--fs-14); color: var(--on-dark-4); margin-top: var(--sp-4); }
.fband__text { max-width: 56ch; font-size: var(--fs-15); color: var(--on-dark-2); }
.fband__chips { display: flex; flex-wrap: wrap; gap: var(--sp-8); list-style: none; padding: 0; margin: 0; }
.fband__chips li { padding: var(--sp-6) var(--sp-14); border: 1px solid rgba(255,255,255,.2); border-radius: var(--r-pill); font-size: var(--fs-13); color: var(--on-dark-0); }
.fband__side { display: grid; gap: var(--sp-24); align-content: space-between; justify-items: start; }
.fband__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-16); width: 100%; list-style: none; padding: 0; margin: 0; }
.fband__stats li { display: grid; gap: var(--sp-6); align-content: start; }
.fband__stats b { font-family: var(--font-display); font-size: clamp(28px, 3.4vw, 44px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--accent-300); }
.fband__stats span { font-size: var(--fs-13); color: var(--on-dark-4); }
@media (min-width: 900px) { .fband { grid-template-columns: 1.3fr 1fr; gap: var(--sp-64); align-items: stretch; } .fband__stats { grid-template-columns: 1fr; gap: var(--sp-20); } }
@media (min-width: 640px) { .case-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .case-grid { grid-template-columns: repeat(3, 1fr); } }

/* ---------- case study pages ---------- */
.cres { display: grid; gap: var(--sp-24); }
.cc { margin: 0; padding: var(--sp-24); border-radius: var(--r-md); background: var(--surface); display: grid; gap: var(--sp-16); }
.cc figcaption { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.cc svg { width: 100%; height: auto; overflow: visible; }
.cc__grid { stroke: var(--line); stroke-width: 1; }
.cc__lab { fill: var(--muted); font-size: 12px; font-family: var(--font-body); }
.cc__line { fill: none; stroke: var(--c1, var(--accent)); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.cc__dot { fill: var(--white); stroke: var(--c1, var(--accent)); stroke-width: 2.5; }
.cres__stats { display: grid; gap: var(--sp-16); list-style: none; padding: 0; margin: 0; }
.cres__stats li { display: grid; gap: var(--sp-6); align-content: center; padding: var(--sp-24); border-radius: var(--r-md); background: var(--surface); }
.cres__stats b { font-family: var(--font-display); font-size: clamp(36px, 4.4vw, 56px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--c1, var(--accent)); }
.cres__stats span { font-size: var(--fs-15); color: var(--ink-2); }
.cres__stats--row { margin-top: var(--sp-16); grid-template-columns: 1fr; }
@media (min-width: 640px) { .cres__stats--row { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px) { .cres { grid-template-columns: 1.7fr 1fr; align-items: stretch; } .cc { padding: var(--sp-32); } }

.mk { position: relative; border-radius: var(--r-md); background: var(--surface); box-shadow: 0 30px 60px -30px rgba(0,0,0,.35); overflow: hidden; }
.mkg { display: grid; gap: var(--sp-16); padding: clamp(16px, 3vw, 40px); border-radius: var(--r-md); background: var(--bg-c); }
.mkg__main, .mkg__phones, .mkg__brand { display: grid; gap: var(--sp-16); }
.mkg__phones { grid-template-columns: 1fr 1fr; align-items: end; justify-items: center; }
.mkg__brand { grid-template-columns: 1fr 1fr; }
.mk-browser__bar { display: flex; align-items: center; gap: var(--sp-6); padding: var(--sp-10) var(--sp-14); background: var(--bg); border-bottom: 1px solid var(--line); }
.mk-browser__bar i { width: 9px; height: 9px; border-radius: 50%; background: var(--line); }
.mk-browser__bar span { flex: 1; height: 10px; margin-left: var(--sp-12); border-radius: var(--r-pill); background: var(--line); max-width: 220px; }
.mk-browser__body { display: grid; gap: var(--sp-16); padding: var(--sp-20); }
.mk-nav { display: flex; align-items: center; gap: var(--sp-16); }
.mk-nav b { width: 64px; height: 14px; border-radius: 4px; background: var(--c1); margin-right: auto; }
.mk-nav span { width: 36px; height: 8px; border-radius: 4px; background: var(--line); }
.mk-hero { display: grid; grid-template-columns: 1.1fr 1fr; gap: var(--sp-20); align-items: center; }
.mk-hero > div:first-child { display: grid; gap: var(--sp-10); }
.mk i.t { display: block; height: 16px; border-radius: 4px; background: var(--ink); }
.mk i.t.w60 { width: 60%; }
.mk i.p { display: block; height: 8px; width: 90%; border-radius: 4px; background: var(--line); }
.mk u { display: block; width: 90px; height: 28px; border-radius: var(--r-pill); background: var(--c1); }
.mk-hero__img, .mk-phone__img { border-radius: var(--r-sm); background: linear-gradient(135deg, var(--c1), color-mix(in srgb, var(--c1) 45%, var(--bg-c))); min-height: 120px; }
.mk-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-12); }
.mk-cols i { height: 64px; border-radius: var(--r-sm); background: var(--bg); border: 1px solid var(--line); }
.mk-phone { width: min(100%, 180px); border-radius: 28px; border: 6px solid var(--ink); background: var(--surface); }
.mk-phone__notch { display: block; width: 44px; height: 6px; margin: var(--sp-6) auto 0; border-radius: var(--r-pill); background: var(--ink); }
.mk-phone__screen { display: grid; gap: var(--sp-10); padding: var(--sp-14); }
.mk-phone__img { min-height: 110px; }
.mk-phone__img--tall { min-height: 150px; }
.mk-logo { display: grid; place-items: center; gap: var(--sp-10); padding: var(--sp-32) var(--sp-16); color: var(--c1); text-align: center; }
.mk-logo svg { width: 56px; height: 56px; }
.mk-logo b { font-family: var(--font-display); font-size: var(--fs-22); letter-spacing: var(--tracking); color: var(--ink); }
.mk-sw { display: grid; grid-template-columns: repeat(5, 1fr); min-height: 120px; }
.mk-type { display: grid; place-items: center; gap: var(--sp-6); padding: var(--sp-24); }
.mk-type b { font-family: var(--font-display); font-size: 64px; line-height: 1; letter-spacing: var(--tracking); }
.mk-type span { font-size: var(--fs-12); color: var(--muted); }
.mk-card { display: grid; align-content: end; gap: var(--sp-4); padding: var(--sp-20); background: var(--c1); color: var(--white); min-height: 120px; }
.mk-card b { font-family: var(--font-display); font-size: var(--fs-20); letter-spacing: var(--tracking); }
.mk-card span { font-size: var(--fs-12); opacity: .8; }
@media (min-width: 900px) { .mkg:has(.mkg__main) { grid-template-columns: 2fr 1fr; align-items: stretch; } .mkg:has(.mkg__main):has(.mkg__brand) .mkg__brand { grid-column: 1 / -1; grid-template-columns: repeat(4, 1fr); } .mkg:not(:has(.mkg__main)) .mkg__brand { grid-template-columns: repeat(4, 1fr); } }

.med { display: grid; gap: var(--sp-16); grid-template-columns: 1fr 1fr; }
.med figure { margin: 0; border-radius: var(--r-md); overflow: hidden; background: var(--bg-c); }
.med img, .med video { display: block; width: 100%; height: 100%; object-fit: cover; }
.med__vid { grid-column: 1 / -1; aspect-ratio: 16/9; }
.med__img { aspect-ratio: 4/3; }
.med__img:last-child { grid-column: 1 / -1; }
@media (min-width: 900px) { .med { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: auto auto; } .med__vid { grid-column: 1; grid-row: 1 / 3; aspect-ratio: auto; min-height: 380px; } .med__img { aspect-ratio: 1; } .med__img:last-child { grid-column: 2 / 4; aspect-ratio: auto; } }

.cquote { margin: 0; display: grid; gap: var(--sp-16); justify-items: center; text-align: center; padding: clamp(32px, 6vw, 80px) var(--sp-24); border-radius: var(--r-lg); background: var(--surface); }
.cquote blockquote { margin: 0; max-width: 24ch; font-family: var(--font-display); font-size: clamp(28px, 4vw, 52px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.cquote figcaption { font-size: var(--fs-14); color: var(--muted); }

/* work page: bento of project tiles */
.tile-grid { display: grid; gap: var(--sp-16); grid-template-columns: 1fr; }
.tile { position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-16); min-height: 300px; padding: var(--sp-24); overflow: hidden; border-radius: var(--r-md); background: var(--bg-c); color: var(--ink); transition: opacity .4s ease, filter .4s ease, transform .5s var(--ease-out); }
.tile.is-dim { opacity: .2; filter: grayscale(1); transform: scale(.98); pointer-events: none; }
.tile__top { position: relative; z-index: 2; display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-12); }
.tile__badge { padding: var(--sp-6) var(--sp-12); border-radius: var(--r-pill); background: var(--pill-bg); font-size: var(--fs-12); }
.tile__go { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 50%; background: var(--btn); color: var(--white); font-size: var(--fs-14); transform: rotate(-45deg); transition: transform .35s var(--ease-out), background-color .25s; }
.tile__art { position: absolute; right: -8%; bottom: -10%; width: 62%; aspect-ratio: 4/3; transform: rotate(-6deg); transition: transform .6s var(--ease-out); }
.tile__mock { position: absolute; inset: 0; display: grid; align-content: start; gap: var(--sp-10); padding: var(--sp-16); border-radius: var(--r-tile); background: var(--surface); box-shadow: 0 30px 60px -24px rgba(0,0,0,.4); }
.tile__mock i { display: block; height: 10px; width: 55%; border-radius: 4px; background: var(--c1); }
.tile__mock i + i { width: 80%; height: 8px; background: var(--line); }
.tile__mock b { display: block; height: 56%; border-radius: var(--r-sm); background: linear-gradient(135deg, var(--c1), color-mix(in srgb, var(--c1) 40%, var(--bg-c))); }
.tile__body { position: relative; z-index: 2; display: grid; gap: var(--sp-6); max-width: 58%; }
.tile__stat { display: grid; gap: var(--sp-2); margin-bottom: var(--sp-8); }
.tile__stat b { font-family: var(--font-display); font-size: clamp(34px, 4vw, 56px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--c1); }
.tile__stat span { font-size: var(--fs-13); color: var(--ink-2); }
.tile h3 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
.tile p { font-size: var(--fs-14); color: var(--ink-2); }
@media (hover: hover) and (pointer: fine) {
  .tile:hover .tile__art { transform: rotate(-2deg) translate(-14px, -14px) scale(1.05); }
  .tile:hover .tile__go { transform: rotate(0); background: var(--accent); }
}
@media (min-width: 700px) {
  .tile-grid { grid-template-columns: repeat(12, 1fr); grid-auto-rows: 250px; }
  .tile { min-height: 0; }
  .tile--a { grid-column: span 7; grid-row: span 2; } .tile--b { grid-column: span 5; } .tile--c { grid-column: span 4; } .tile--d { grid-column: span 4; grid-row: span 2; } .tile--e { grid-column: span 12; }
  .tile--a .tile__art { width: 56%; right: -4%; bottom: -6%; } .tile--a h3, .tile--d h3 { font-size: var(--fs-display-3); } .tile--a .tile__body { max-width: 52%; }
  .tile--d .tile__art { width: 90%; right: -22%; bottom: auto; top: 30%; opacity: .95; } .tile--d .tile__body { max-width: 100%; margin-top: auto; }
  .tile--c .tile__art { width: 52%; right: -10%; bottom: auto; top: 26%; } .tile--c .tile__body { max-width: 66%; }
  .tile--e .tile__art { width: 34%; right: 4%; bottom: -30%; } .tile--e .tile__body { max-width: 50%; }
}
@media (prefers-reduced-motion: reduce) { .tile, .tile__art, .tile__go { transition: none; } }

/* ---------- case study pages: creative layout ---------- */
.chero { margin: var(--sp-8); padding: calc(var(--sp-48) + 80px) 0 var(--sp-48); overflow: hidden; border-radius: var(--r-lg); background: var(--bg-c); }
.chero__grid { display: grid; gap: var(--sp-40); align-items: center; }
.chero h1 { font-family: var(--font-display); font-size: var(--fs-display); font-weight: var(--fw-bold); letter-spacing: var(--tracking); line-height: .96; color: var(--c1); text-wrap: balance; }
.chero__lead { max-width: 46ch; margin-top: var(--sp-24); font-size: var(--fs-lead); color: var(--ink-2); }
.chero__actions { display: flex; flex-wrap: wrap; gap: var(--sp-12); margin-top: var(--sp-32); }
.cstage { position: relative; min-height: 340px; }
.cstage__dash { position: absolute; inset: 6% 8% 12% 4%; display: grid; grid-template-rows: auto 1fr auto auto; gap: var(--sp-8); padding: var(--sp-20); border-radius: var(--r-md); background: var(--surface); box-shadow: 0 40px 80px -30px rgba(0,0,0,.4); transform: rotate(-4deg); }
.cstage__bar { display: flex; gap: var(--sp-6); } .cstage__bar i { width: 9px; height: 9px; border-radius: 50%; background: var(--line); }
.cstage__chart { display: flex; align-items: flex-end; gap: var(--sp-8); }
.cstage__chart i { flex: 1; height: var(--h); border-radius: 6px 6px 0 0; background: linear-gradient(180deg, var(--c1), color-mix(in srgb, var(--c1) 40%, var(--white))); }
.cstage__dash b { font-family: var(--font-display); font-size: clamp(32px, 4vw, 52px); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-none); color: var(--c1); }
.cstage__dash span { font-size: var(--fs-13); color: var(--ink-2); }
.cstage__web { position: absolute; left: 0; top: 8%; width: 82%; transform: rotate(-3deg); }
.cstage__ph { position: absolute; right: 2%; bottom: 0; width: 34%; transform: rotate(5deg); }
.cstage__ph .mk-phone { width: 100%; }
.cstage__img { position: absolute; width: 52%; aspect-ratio: 4/5; object-fit: cover; border-radius: var(--r-md); border: 6px solid var(--white); box-shadow: 0 30px 60px -24px rgba(0,0,0,.4); }
.cstage__img--1 { left: 2%; top: 10%; transform: rotate(-8deg); } .cstage__img--2 { left: 24%; top: 0; transform: rotate(3deg); z-index: 1; } .cstage__img--3 { right: 2%; top: 18%; transform: rotate(9deg); z-index: 2; }
.cchip { position: absolute; z-index: 3; padding: var(--sp-8) var(--sp-16); border-radius: var(--r-pill); background: var(--btn); color: var(--white); font-size: var(--fs-13); font-weight: var(--fw-medium); box-shadow: var(--shadow-pop); animation: cfloat 6s ease-in-out infinite; }
.cchip--a { left: 4%; bottom: -5%; } .cchip--b { right: 0; top: 4%; background: var(--surface); color: var(--ink); animation-delay: -2s; } .cchip--c { right: 6%; bottom: -3%; background: var(--c1); animation-delay: -4s; }
@keyframes cfloat { 50% { transform: translateY(-10px); } }
@media (prefers-reduced-motion: reduce) { .cchip { animation: none; } }
@media (min-width: 900px) { .chero__grid { grid-template-columns: 1.05fr 1fr; gap: var(--sp-64); } .cstage { min-height: 440px; } }

.cfacts-wrap { padding-block: var(--sp-40) 0; }
.cfacts { display: grid; grid-template-columns: 1fr 1fr; list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.cfacts li { display: grid; align-content: start; gap: var(--sp-4); padding: var(--sp-20) var(--sp-16); }
.cfacts li:nth-child(odd) { border-right: 1px solid var(--line); } .cfacts li:nth-child(n+3) { border-top: 1px solid var(--line); }
.cfacts span { font-size: var(--fs-13); color: var(--muted); }
.cfacts b { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); }
@media (min-width: 900px) { .cfacts { grid-template-columns: repeat(4, 1fr); } .cfacts li { padding: var(--sp-24); border-top: 0 !important; border-right: 1px solid var(--line); } .cfacts li:last-child { border-right: 0; } }

.ctl { position: relative; display: grid; gap: var(--sp-32); list-style: none; padding: 0; margin: 0; }
.ctl::before { content: ""; position: absolute; left: 23px; top: 24px; bottom: 24px; width: 2px; background: var(--line); }
.ctl__item { position: relative; display: flex; gap: var(--sp-20); }
.ctl__ico { position: relative; flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--c1); color: var(--white); font-size: var(--fs-18, var(--fs-16)); box-shadow: 0 0 0 6px var(--bg); }
.ctl__item h3 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-tight); margin-bottom: var(--sp-8); }
.ctl__item p { font-size: var(--fs-15); color: var(--ink-2); max-width: 52ch; }

.cnums { display: grid; list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.cnums li { display: grid; gap: var(--sp-6); padding: var(--sp-24) 0; border-bottom: 1px solid var(--line); }
.cnums b { font-family: var(--font-display); font-size: clamp(64px, 11vw, 150px); font-weight: var(--fw-bold); letter-spacing: -.04em; line-height: .95; color: var(--c1); }
.cnums span { font-size: var(--fs-lead); color: var(--ink-2); }
@media (min-width: 900px) { .cnums { grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); } .cnums li { padding: var(--sp-32) var(--sp-24) var(--sp-32) 0; border-bottom: 0; } .cnums li + li { padding-left: var(--sp-24); border-left: 1px solid var(--line); } }
.cc.is-wait .cc__line { stroke-dashoffset: 1; } .cc.is-wait .cc__dot, .cc.is-wait polygon { opacity: 0; }
.cc__line { stroke-dasharray: 1; stroke-dashoffset: 0; transition: stroke-dashoffset 1.8s ease; }
.cc__dot, .cc polygon { transition: opacity .8s ease .9s; }

.cquote--tint { background: var(--bg-c); }
.cquote--tint blockquote { color: var(--c1); }
.cnext { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-24); min-height: 260px; padding: clamp(24px, 4vw, 56px); overflow: hidden; border-radius: var(--r-lg); background: var(--bg-c); color: var(--ink); }
.cnext__text { display: grid; gap: var(--sp-8); }
.cnext small { font-size: var(--fs-14); color: var(--ink-2); }
.cnext b { font-family: var(--font-display); font-size: var(--fs-display-2); font-weight: var(--fw-bold); letter-spacing: var(--tracking); line-height: .98; color: var(--c1); }
.cnext em { font-style: normal; font-size: var(--fs-15); color: var(--ink-2); }
.cnext__go { display: grid; place-items: center; flex: none; width: 64px; height: 64px; border-radius: 50%; background: var(--btn); color: var(--white); font-size: var(--fs-20); transform: rotate(-45deg); transition: transform .4s var(--ease-out), background-color .25s; }
@media (hover: hover) and (pointer: fine) { .cnext:hover .cnext__go { transform: rotate(0); background: var(--accent); } }

/* brand mockup: real Clixious symbol */
.lmark { display: block; aspect-ratio: 212 / 339; }
.bt--sym svg.lmark { height: 70%; width: auto; max-width: 90%; aspect-ratio: 212 / 339; }
.bt--hero .bt__mark svg.lmark { height: 26px; width: auto; }

/* brand mockup: logo drawn by a pen cursor */
.lmark--draw { aspect-ratio: 236 / 363; overflow: visible; }
.bt--sym svg.lmark--draw { height: 76%; width: auto; max-width: 90%; aspect-ratio: 236 / 363; }
.lmark--draw .lf { opacity: 1; transition: opacity .6s ease; }
.lmark--draw .ls { fill: none; stroke-width: 3; stroke-linejoin: round; stroke-dasharray: 1; stroke-dashoffset: 0; }
.lmark--draw .ls-c { stroke: #31dfe6; } .lmark--draw .ls-b { stroke: #1f87f7; }
.lmark--draw .la rect { fill: var(--white); stroke: var(--accent); stroke-width: 1.4; opacity: 0; }
.lmark--draw .lp { opacity: 0; }
.viz--brand.js-anim .lmark--draw .lf { opacity: 0; }
.viz--brand.js-anim .lmark--draw .ls { stroke-dashoffset: 1; }
.viz--brand.is-live .lmark--draw .ls-c { stroke-dashoffset: 0; transition: stroke-dashoffset 1.4s linear .5s; }
.viz--brand.is-live .lmark--draw .ls-b { stroke-dashoffset: 0; transition: stroke-dashoffset 1.4s linear 1.9s; }
.viz--brand.is-live .lmark--draw .lf { opacity: 1; transition-delay: 3.3s; }
.viz--brand.is-live .lmark--draw .la rect { animation: anchorpop 3.4s ease both .5s; }
.viz--brand.is-live .lmark--draw .lp { animation: logopen 2.8s linear .5s both; }
@keyframes logopen {
  0.0% { opacity: 1; transform: translate(88px, 151px); }
  6.7% { transform: translate(16px, 94px); }
  13.3% { transform: translate(60px, 47px); }
  20.0% { transform: translate(192px, 0px); }
  26.7% { transform: translate(207px, 34px); }
  33.3% { transform: translate(206px, 86px); }
  40.0% { transform: translate(165px, 124px); }
  46.7% { transform: translate(88px, 151px); }
  53.3% { transform: translate(0px, 135px); }
  60.0% { transform: translate(86px, 186px); }
  66.7% { transform: translate(200px, 229px); }
  73.3% { transform: translate(206px, 327px); }
  80.0% { transform: translate(191px, 338px); }
  86.7% { transform: translate(52px, 288px); }
  93.3% { transform: translate(0px, 229px); }
  100.0% { transform: translate(0px, 135px); }
  100% { opacity: 0; transform: translate(0px, 135px); }
}

/* logo images: header, footer, giant footer wordmark */
.logo img { display: block; height: 30px; width: auto; }
.footer__logo img { height: 34px; }
.footer__word { position: relative; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); transform: translateY(10%); --mx: -999px; --my: -999px; }
.footer__word img { display: block; width: 100%; height: auto; opacity: .14; }
/* shimmer band (cyan to blue) sweeps through the letters; the pointer lights them up */
.footer__word::after { content: ""; position: absolute; inset: 0 var(--gutter); pointer-events: none;
  -webkit-mask: url("../img/logo/logo-wordmark-white.svg") center / 100% 100% no-repeat; mask: url("../img/logo/logo-wordmark-white.svg") center / 100% 100% no-repeat;
  background: radial-gradient(circle 230px at var(--mx) var(--my), #fff 0%, rgba(255,255,255,0) 72%), linear-gradient(100deg, #fff 0%, #fff 32%, var(--accent-300) 44%, var(--accent) 56%, #fff 68%, #fff 100%);
  background-size: 100% 100%, 260% 100%; background-position: 0 0, 100% 0; animation: footer-sweep 7s ease-in-out infinite; }
@keyframes footer-sweep { 0% { background-position: 0 0, 100% 0; } 100% { background-position: 0 0, 0% 0; } }
@media (prefers-reduced-motion: reduce) { .footer__word::after { animation: none; background-position: 0 0, 50% 0; } }
.bt--hero { background: var(--dark); }
.bt--hero .bt__logo { display: block; height: 34%; max-height: 52px; width: auto; max-width: 80%; }

/* ---------- dark theme: component fixes ---------- */
:root[data-theme="dark"] .c-soft { --fg2: #b4c3d4; --fg3: #8497ad; --ln: rgba(255,255,255,.14); --viz: #1c4a80; }
:root[data-theme="dark"] .c-white, :root[data-theme="dark"] .c-cream { --viz: #183a63; }
:root[data-theme="dark"] .marquee__item img { padding: 8px 14px; box-sizing: content-box; border-radius: 12px; background: #eef3f8; opacity: .8; }
:root[data-theme="dark"] .marquee__item:hover img { opacity: 1; }
:root[data-theme="dark"] .mock i, :root[data-theme="dark"] .serp__res i { background: rgba(255,255,255,.14); }
:root[data-theme="dark"] .mb__bar i { background: rgba(255,255,255,.2); }
:root[data-theme="dark"] .bt--sym { background: var(--surface); }


/* theme toggle */
.theme-toggle { flex: none; display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; transition: background .2s, border-color .2s; }
.theme-toggle:hover { border-color: var(--ink); }
.theme-toggle svg { width: 18px; height: 18px; display: block; }
.theme-toggle .ic-moon { display: none; }
:root[data-theme="dark"] .theme-toggle .ic-sun { display: none; }
:root[data-theme="dark"] .theme-toggle .ic-moon { display: block; }

.header__tools { display: flex; align-items: center; gap: var(--sp-8); }
:root[data-theme="dark"] .orb--3, :root[data-theme="dark"] .orb--4 { opacity: .08; }


/* dark theme: CTA section */
:root[data-theme="dark"] .cta { background: linear-gradient(135deg, #0f4a8f 0%, #0b2f5c 52%, #08203d 100%); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
:root[data-theme="dark"] .cta::before { background: var(--accent-300); opacity: .22; }
:root[data-theme="dark"] .form { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 30px 60px -30px rgba(0,0,0,.6); }
:root[data-theme="dark"] .field input, :root[data-theme="dark"] .field select, :root[data-theme="dark"] .field textarea { background: var(--bg); }
:root[data-theme="dark"] .field select { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b4c3d4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>"); }


.case__badges { position: absolute; left: 14px; top: 14px; z-index: 1; display: flex; flex-wrap: wrap; gap: var(--sp-6); max-width: calc(100% - 28px); }
.case__badges .case__badge { position: static; }
/* compare cards on phones: shorter heading strip (both cards share it, so the lines stay level) */
@media (max-width: 799px) { .compare h3 { height: 44px; margin-bottom: var(--sp-12); } .compare__logo { height: 80%; } }

/* paid media process scenes on phones: each scene sits in its own panel and fills the card width */
@media (max-width: 639px) {
  .step__viz.vs-bud, .step__viz.vs-ad, .step__viz.vs-trk, .step__viz.vs-opt { box-sizing: border-box; width: 100%; height: auto; min-height: 150px; padding: var(--sp-20) var(--sp-16); border-radius: var(--r-sm); background: rgba(255,255,255,.05); }
  .vs-bud { gap: var(--sp-16); }
  .vs-bud__row em { width: 60px; font-size: var(--fs-13); }
  .vs-bud__row b { height: 16px; }
  .vs-ad { flex-direction: column; align-items: stretch; gap: var(--sp-16); }
  .vs-ad__img { width: 56px; height: 72px; }
  .vs-ad__txt b { height: 8px; }
  .vs-ad__txt u { font-size: var(--fs-12); padding: 3px var(--sp-12); }
  .vs-ad__chips { display: flex; flex-wrap: wrap; gap: var(--sp-8); }
  .vs-ad__chips i { font-size: var(--fs-12); padding: 4px var(--sp-12); }
  .vs-trk { justify-content: space-between; gap: var(--sp-16); }
  .vs-trk__rows { gap: var(--sp-14); min-width: 0; }
  .vs-trk__row { font-size: var(--fs-14); gap: var(--sp-10); }
  .vs-trk__row em { width: 24px; height: 24px; }
  .vs-trk__sw { width: 56px; height: 32px; padding: 4px; }
  .vs-trk__sw u { width: 24px; height: 24px; transform: translateX(24px); }
  .vs-opt { align-items: flex-end; }
  .vs-opt__bars { height: 84px; gap: var(--sp-20); margin-bottom: var(--sp-24); }
  .vs-opt__bars u { width: 44px; }
  .vs-opt__lbl { left: var(--sp-16); bottom: var(--sp-16); gap: var(--sp-20); font-size: var(--fs-12); }
  .vs-opt__lbl i { width: 44px; }
  .vs-opt__chip { position: absolute; top: var(--sp-16); right: var(--sp-16); margin: 0; font-size: var(--fs-13); }
}
@media (max-width: 639px) { @keyframes sa-knob { 0%, 52% { transform: translateX(0); } 62%, 86% { transform: translateX(24px); } 98%, 100% { transform: translateX(0); } } }

/* ---------- AI media process scenes ---------- */
.va-brief { gap: var(--sp-12); }
.va-brief__box { position: relative; flex: 1; min-width: 0; display: grid; align-content: center; gap: var(--sp-6); padding: var(--sp-12) var(--sp-12) var(--sp-12) var(--sp-32); height: 72px; border-radius: var(--r-sm); background: var(--dark-3); overflow: hidden; }
.va-brief__ico { position: absolute; left: var(--sp-10); top: var(--sp-10); font-size: var(--fs-13); color: var(--accent-300); }
.va-brief__txt { display: grid; gap: var(--sp-4); font-size: var(--fs-11); line-height: 1.2; color: var(--on-dark-0); white-space: nowrap; }
.va-brief__txt > span { display: block; width: max-content; max-width: 100%; }
.va-brief__txt > span:last-child { color: var(--on-dark-2); }
.va-brief__caret { position: absolute; right: var(--sp-12); bottom: var(--sp-12); width: 2px; height: 12px; background: var(--accent-300); }
.va-brief__chips { flex: none; display: grid; gap: var(--sp-6); }
.va-brief__chips > i { display: inline-flex; align-items: center; gap: var(--sp-4); font-style: normal; padding: 2px var(--sp-8); border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.va-brief__chips > i i { font-size: 8px; }
.va-mood { justify-content: center; }
.va-mood__grid { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: var(--sp-8); }
.va-mood__grid u { position: relative; display: block; height: 38px; border-radius: var(--r-xs); }
.va-mood__grid .m2 { box-shadow: 0 0 0 2px var(--dark-2), 0 0 0 4px var(--white); }
.va-mood__grid .m1 { background: linear-gradient(135deg, var(--accent), var(--accent-300)); } .va-mood__grid .m2 { background: linear-gradient(135deg, var(--accent-300), var(--accent-soft)); } .va-mood__grid .m3 { background: linear-gradient(135deg, var(--star), #ff8a73); } .va-mood__grid .m4 { background: linear-gradient(135deg, var(--dark-3), var(--accent-700)); border: 1px solid var(--on-dark-4); }
.va-mood__ok { position: absolute; right: -7px; top: -7px; display: grid; place-items: center; width: 20px; height: 20px; border-radius: var(--r-pill); background: var(--accent); color: var(--accent-ink); font-size: var(--fs-11); }
.va-gen { flex-direction: column; justify-content: center; align-items: stretch; gap: var(--sp-10); }
.va-gen__frame { position: relative; height: 56px; border-radius: var(--r-sm); background: var(--dark-3); overflow: hidden; }
.va-gen__img { position: absolute; inset: 0; background: radial-gradient(60% 90% at 78% 20%, var(--accent-300), transparent 70%), linear-gradient(135deg, var(--accent), var(--accent-300) 60%, var(--accent-soft)); }
.va-gen__scan { position: absolute; top: 0; bottom: 0; left: 0; width: 2px; background: var(--white); box-shadow: 0 0 14px 3px rgba(255,255,255,.7); opacity: 0; }
.va-gen__s { position: absolute; width: 10px; height: 10px; background: var(--white); clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%); }
.va-gen__s.s1 { right: 18px; top: 10px; } .va-gen__s.s2 { right: 44px; bottom: 10px; width: 7px; height: 7px; }
.va-gen__bar { display: flex; align-items: center; gap: var(--sp-10); }
.va-gen__track { flex: 1; height: 6px; border-radius: var(--r-pill); background: var(--dark-3); overflow: hidden; }
.va-gen__fill { display: block; height: 100%; border-radius: inherit; background: var(--accent-300); transform-origin: left; }
.va-gen__lbl { position: relative; flex: none; width: 68px; height: 16px; font-size: var(--fs-11); color: var(--on-dark-1); }
.va-gen__lbl b { position: absolute; inset: 0; display: grid; align-items: center; font-weight: var(--fw-regular); }
.va-gen__lbl b:last-child { color: var(--accent-300); opacity: 0; }
.va-rev { gap: var(--sp-14); justify-content: center; }
.va-rev__card { position: relative; flex: none; width: 46px; height: 64px; border-radius: var(--r-xs); background: linear-gradient(160deg, var(--accent), var(--accent-300)); }
.va-rev__pin { position: absolute; left: 6px; top: 14px; width: 8px; height: 8px; border-radius: 50%; background: var(--star); box-shadow: 0 0 0 4px rgba(245,179,1,.3); opacity: 0; }
.va-rev__ok { position: absolute; right: -8px; bottom: -8px; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--success); color: var(--white); font-size: var(--fs-11); border: 2px solid var(--dark-2); }
.va-rev__fmts { display: grid; gap: var(--sp-6); }
.va-rev__fmts > span { display: flex; align-items: center; gap: var(--sp-8); padding: 3px var(--sp-10); border-radius: var(--r-pill); background: var(--dark-3); font-size: var(--fs-11); color: var(--on-dark-1); white-space: nowrap; }
.va-rev__fmts b { color: var(--white); font-weight: var(--fw-semibold); }
.va-rev__fmts i { margin-left: auto; color: var(--accent-300); font-size: 9px; }

@media (prefers-reduced-motion: no-preference) {
  .sa.va-t1, .sa.va-t2, .sa.va-pa, .sa.va-pb, .sa.va-pc, .sa.va-tile1, .sa.va-tile2, .sa.va-tile3, .sa.va-tile4, .sa.va-okpop, .sa.va-img, .sa.va-scan, .sa.va-tw1, .sa.va-tw2, .sa.va-fill, .sa.va-gl, .sa.va-rl, .sa.va-pin, .sa.va-approve { --t: 7s; --d: 0s; }
  .va-t1 { animation-name: va-t1; --tf: steps(16, end); } .va-t2 { animation-name: va-t2; --tf: steps(18, end); }
  .va-pa { animation-name: va-pa; } .va-pb { animation-name: va-pb; } .va-pc { animation-name: va-pc; }
  .va-tile1 { animation-name: va-tile1; } .va-tile2 { animation-name: va-tile2; } .va-tile3 { animation-name: va-tile3; } .va-tile4 { animation-name: va-tile4; }
  .va-okpop { animation-name: va-okpop; }
  .va-img { animation-name: va-img; } .va-scan { animation-name: va-scan; --tf: linear; } .va-tw1 { animation-name: va-tw; } .va-tw2 { animation-name: va-tw2; }
  .va-fill { animation-name: va-fill; --tf: linear; } .va-gl { animation-name: va-gl; } .va-rl { animation-name: va-rl; }
  .va-pin { animation-name: va-pin; } .va-approve { animation-name: va-approve; }
}
@keyframes va-t1 { 0%, 3% { clip-path: inset(0 100% 0 0); } 22%, 90% { clip-path: inset(0 0 0 0); } 96%, 100% { clip-path: inset(0 100% 0 0); } }
@keyframes va-t2 { 0%, 25% { clip-path: inset(0 100% 0 0); } 44%, 90% { clip-path: inset(0 0 0 0); } 96%, 100% { clip-path: inset(0 100% 0 0); } }
@keyframes va-pa { 0%, 50% { opacity: 0; transform: scale(.6); } 55% { opacity: 1; transform: scale(1.08); } 58%, 90% { opacity: 1; transform: scale(1); } 96%, 100% { opacity: 0; } }
@keyframes va-pb { 0%, 58% { opacity: 0; transform: scale(.6); } 63% { opacity: 1; transform: scale(1.08); } 66%, 90% { opacity: 1; transform: scale(1); } 96%, 100% { opacity: 0; } }
@keyframes va-pc { 0%, 66% { opacity: 0; transform: scale(.6); } 71% { opacity: 1; transform: scale(1.08); } 74%, 90% { opacity: 1; transform: scale(1); } 96%, 100% { opacity: 0; } }
@keyframes va-tile1 { 0%, 2% { opacity: 0; transform: scale(.5); box-shadow: none; } 8% { opacity: 1; transform: scale(1); } 34%, 40% { opacity: 1; box-shadow: 0 0 0 2px var(--dark-2), 0 0 0 4px var(--white); } 44%, 78% { opacity: 1; transform: scale(1); box-shadow: none; } 84%, 92% { opacity: .3; transform: scale(.94); box-shadow: none; } 98%, 100% { opacity: 0; box-shadow: none; } }
@keyframes va-tile2 { 0%, 8% { opacity: 0; transform: scale(.5); box-shadow: none; } 14%, 66% { opacity: 1; transform: scale(1); box-shadow: none; } 70%, 92% { opacity: 1; transform: scale(1.04); box-shadow: 0 0 0 2px var(--dark-2), 0 0 0 4px var(--white); } 98%, 100% { opacity: 0; transform: scale(1); box-shadow: none; } }
@keyframes va-tile3 { 0%, 14% { opacity: 0; transform: scale(.5); box-shadow: none; } 20% { opacity: 1; transform: scale(1); } 54%, 62% { opacity: 1; box-shadow: 0 0 0 2px var(--dark-2), 0 0 0 4px var(--white); } 66%, 78% { opacity: 1; transform: scale(1); box-shadow: none; } 84%, 92% { opacity: .3; transform: scale(.94); box-shadow: none; } 98%, 100% { opacity: 0; box-shadow: none; } }
@keyframes va-tile4 { 0%, 20% { opacity: 0; transform: scale(.5); box-shadow: none; } 26% { opacity: 1; transform: scale(1); } 44%, 52% { opacity: 1; box-shadow: 0 0 0 2px var(--dark-2), 0 0 0 4px var(--white); } 56%, 78% { opacity: 1; transform: scale(1); box-shadow: none; } 84%, 92% { opacity: .3; transform: scale(.94); box-shadow: none; } 98%, 100% { opacity: 0; box-shadow: none; } }
@keyframes va-okpop { 0%, 76% { opacity: 0; transform: scale(.3); } 82% { opacity: 1; transform: scale(1.15); } 86%, 92% { opacity: 1; transform: scale(1); } 98%, 100% { opacity: 0; } }
@keyframes va-img { 0%, 4% { filter: blur(16px) saturate(.4); opacity: .55; transform: scale(1.12); } 56%, 90% { filter: none; opacity: 1; transform: none; } 97%, 100% { filter: blur(16px) saturate(.4); opacity: .55; transform: scale(1.12); } }
@keyframes va-scan { 0%, 4% { left: 0; opacity: 0; } 8% { opacity: 1; } 54% { left: calc(100% - 2px); opacity: 1; } 58%, 100% { left: calc(100% - 2px); opacity: 0; } }
@keyframes va-tw { 0%, 58% { opacity: 0; transform: scale(.2) rotate(0); } 66% { opacity: 1; transform: scale(1.2) rotate(45deg); } 74%, 88% { opacity: .85; transform: scale(1) rotate(45deg); } 96%, 100% { opacity: 0; } }
@keyframes va-tw2 { 0%, 64% { opacity: 0; transform: scale(.2) rotate(0); } 72% { opacity: 1; transform: scale(1.2) rotate(-45deg); } 80%, 88% { opacity: .8; transform: scale(1) rotate(-45deg); } 96%, 100% { opacity: 0; } }
@keyframes va-fill { 0%, 4% { transform: scaleX(0); } 56%, 90% { transform: scaleX(1); } 97%, 100% { transform: scaleX(0); } }
@keyframes va-gl { 0%, 54% { opacity: 1; } 60%, 94% { opacity: 0; } 99%, 100% { opacity: 1; } }
@keyframes va-rl { 0%, 56% { opacity: 0; } 62%, 90% { opacity: 1; } 96%, 100% { opacity: 0; } }
@keyframes va-pin { 0%, 6% { opacity: 0; transform: scale(.3); } 12% { opacity: 1; transform: scale(1.2); } 18%, 34% { opacity: 1; transform: scale(1); } 40%, 100% { opacity: 0; } }
@keyframes va-approve { 0%, 40% { opacity: 0; transform: scale(.3); } 46% { opacity: 1; transform: scale(1.2); } 50%, 90% { opacity: 1; transform: scale(1); } 96%, 100% { opacity: 0; } }

/* phones: AI media scenes in their own panel, scaled up to fill the card */
@media (max-width: 639px) {
  .step__viz.va-brief, .step__viz.va-mood, .step__viz.va-gen, .step__viz.va-rev { box-sizing: border-box; width: 100%; height: auto; min-height: 150px; padding: var(--sp-20) var(--sp-16); border-radius: var(--r-sm); background: rgba(255,255,255,.05); }
  .va-brief__box { height: 92px; padding-left: var(--sp-40); } .va-brief__ico { left: var(--sp-14); top: var(--sp-14); font-size: var(--fs-16); }
  .va-brief__txt { font-size: var(--fs-14); } .va-brief__chips > i { font-size: var(--fs-13); padding: 3px var(--sp-12); }
  .va-mood__grid { width: 100%; max-width: 360px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-14); } .va-mood__grid u { height: auto; aspect-ratio: 5 / 3; border-radius: var(--r-sm); } .va-mood__ok { width: 26px; height: 26px; font-size: var(--fs-13); right: -8px; top: -8px; }
  .va-gen__frame { height: 84px; } .va-gen__lbl { width: 84px; font-size: var(--fs-13); }
  .va-rev { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr); align-items: center; gap: var(--sp-24); }
  .va-rev__card { justify-self: center; width: 100%; max-width: 104px; height: auto; aspect-ratio: 3 / 4; } .va-rev__ok { width: 26px; height: 26px; font-size: var(--fs-13); }
  .va-rev__fmts { gap: var(--sp-10); } .va-rev__fmts > span { font-size: var(--fs-13); padding: 6px var(--sp-14); gap: var(--sp-12); }
}
/* ---------- paid media and branding process scenes ---------- */
.step__viz.vp, .step__viz.vbr { height: auto; min-height: 9.6em; font-size: 10px; flex-direction: column; justify-content: center; align-items: stretch; }
/* paid media */
.vp-split { flex-direction: row !important; align-items: center !important; justify-content: center !important; gap: 1.6em; }
.vp-split__ring { position: relative; flex: none; width: 8em; height: 8em; }
.vp-split__ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.vp-split__ring circle { fill: none; stroke-width: 6.5; }
.vp-split__ring .vp-split__bg { stroke: var(--dark-3); }
.vp-split__ring b { position: absolute; inset: 0; display: grid; place-items: center; font-size: 1.1em; font-weight: var(--fw-medium); color: var(--on-dark-1); }
.vp-split__lg { display: grid; gap: .9em; font-size: 1.2em; color: var(--on-dark-0); }
.vp-split__lg > span { display: flex; align-items: center; gap: .6em; }
.vp-split__lg i { width: .8em; height: .8em; border-radius: 50%; }
.vp-split__lg em { margin-left: .6em; font-style: normal; color: var(--on-dark-2); }
.vp-ad__card { display: grid; gap: .7em; padding: 1.1em 1.3em; border-radius: 1em; background: var(--dark-3); }
.vp-ad__top { display: flex; align-items: center; gap: .6em; font-size: 1em; color: var(--on-dark-2); }
.vp-ad__top u { text-decoration: none; padding: 0 .5em; border: 1px solid var(--on-dark-3); border-radius: .4em; font-size: .9em; color: var(--on-dark-0); }
.vp-ad__top em { font-style: normal; }
.vp-ad__head { display: block; font-size: 1.2em; font-weight: var(--fw-medium); color: var(--accent-300); white-space: nowrap; overflow: hidden; }
.vp-ad__head > span { display: block; width: max-content; }
.vp-ad__lines { display: grid; gap: .5em; } .vp-ad__lines b { display: block; height: .6em; border-radius: 1em; background: var(--on-dark-4); transform-origin: left; }
.vp-ad__lines b:last-child { width: 62%; }
.vp-ad__chips { display: flex; flex-wrap: wrap; gap: .5em; } .vp-ad__chips i { font-style: normal; font-size: 1.05em; padding: .15em .8em; border-radius: 2em; background: var(--accent); color: var(--accent-ink); }
.vp-track { gap: .5em; }
.vp-track__hd { display: flex; align-items: center; justify-content: space-between; padding: 0 .4em; font-size: 1.05em; color: var(--on-dark-1); }
.vp-track__num { display: block; height: 1.3em; overflow: hidden; font-size: 1.45em; font-weight: var(--fw-semibold); color: var(--white); line-height: 1.3em; }
.vp-track__num > span { display: grid; } .vp-track__num b { display: block; height: 1.3em; text-align: right; font-weight: inherit; }
.vp-track__rows { display: grid; gap: .45em; }
.vp-track__rows > span { display: flex; align-items: center; gap: .7em; padding: .22em .8em; border-radius: 2em; background: var(--dark-3); font-size: 1.05em; color: var(--on-dark-0); }
.vp-track__rows i { display: grid; place-items: center; width: 1.5em; height: 1.5em; border-radius: 50%; background: var(--accent); color: var(--accent-ink); font-size: .75em; }
.vp-track__rows em { margin-left: auto; font-style: normal; color: var(--accent-300); }
.vp-opt { position: relative; gap: 1.1em; }
.vp-opt__row { display: flex; align-items: center; gap: .9em; font-size: 1.15em; color: var(--on-dark-1); }
.vp-opt__row em { flex: none; width: 4.4em; font-style: normal; }
.vp-opt__track { flex: 1; height: 1.1em; border-radius: 2em; background: var(--dark-3); overflow: hidden; }
.vp-opt__track b { display: block; height: 100%; border-radius: inherit; background: var(--on-dark-3); transform-origin: left; }
.vp-opt__row:last-of-type .vp-opt__track b { background: var(--accent-300); }
.vp-opt__v { flex: none; width: 2.6em; text-align: right; color: var(--on-dark-2); } .vp-opt__v.good { color: var(--accent-300); }
.vp-opt__chip { align-self: flex-start; margin-left: 5.3em; padding: .3em 1em; border-radius: 2em; background: var(--accent); color: var(--accent-ink); font-size: 1.1em; white-space: nowrap; }
/* branding */
.vbr-map svg { width: 100%; height: 100%; max-height: 9.6em; overflow: visible; }
.vbr-map__lines path { fill: none; stroke: var(--on-dark-3); stroke-width: 1.2; stroke-dasharray: 1; stroke-linecap: round; }
.vbr-map g > rect { fill: var(--dark-3); stroke: var(--on-dark-4); stroke-width: .8; }
.vbr-map text { fill: var(--on-dark-0); font-size: 8px; text-anchor: middle; font-family: var(--font-body); }
.vbr-map__core { fill: var(--accent); } .vbr-map text.vbr-map__ct { fill: var(--accent-ink); font-weight: 600; font-size: 8.5px; }
.vbr-dir { flex-direction: row !important; align-items: center !important; justify-content: center !important; gap: 2.2em; }
.vbr-dir__sw { display: flex; align-items: flex-end; gap: .7em; height: 8em; }
.vbr-dir__sw b { display: block; width: 2.6em; border-radius: 1.3em; transform-origin: bottom; }
.vbr-dir__sw b:nth-child(1) { height: 100%; } .vbr-dir__sw b:nth-child(2) { height: 74%; } .vbr-dir__sw b:nth-child(3) { height: 56%; } .vbr-dir__sw b:nth-child(4) { height: 38%; }
.vbr-dir__type { display: grid; justify-items: center; gap: .5em; }
.vbr-dir__aa { position: relative; width: 5.6em; height: 4.6em; }
.vbr-dir__aa b { position: absolute; inset: 0; display: grid; place-items: center; font-size: 4.2em; font-weight: 600; color: var(--white); line-height: 1; }
.vbr-dir__type em { font-style: normal; font-size: 1.1em; color: var(--on-dark-2); }
.vbr-id { flex-direction: row !important; align-items: center !important; justify-content: center !important; gap: 1.6em; }
.vbr-id__mk { flex: none; height: 9em; width: auto; overflow: visible; }
.vbr-id__mk circle, .vbr-id__mk path { fill: none; stroke: var(--on-dark-3); stroke-width: 2; }
.vbr-id__mk path[fill] { stroke: none; }
.vbr-id__mk path.vb-mc, .vbr-id__mk path.vb-mb { stroke-width: 4; stroke-dasharray: 1; }
.vbr-id__wm { flex: none; width: 8.4em; height: auto; }
.vbr-kit { flex-direction: row !important; align-items: center !important; justify-content: center !important; gap: 2em; }
.vbr-kit__book { position: relative; flex: none; width: 6.4em; height: 8.4em; border-radius: .8em; background: var(--dark-3); border: 1px solid var(--on-dark-4); overflow: hidden; }
.vbr-kit__book .pg { position: absolute; inset: 0; display: grid; align-content: center; justify-items: center; gap: .6em; padding: 1em; }
.vbr-kit__book .pg b { width: 2.6em; height: 2.6em; border-radius: 50%; background: var(--accent); }
.vbr-kit__book .pg i { display: block; width: 80%; height: .45em; border-radius: 1em; background: var(--on-dark-4); }
.vbr-kit__book .pg u { display: block; width: 100%; height: 1.5em; border-radius: .4em; }
.vbr-kit__book .pg strong { font-size: 2.8em; line-height: 1; color: var(--white); font-family: var(--font-display); }
.vbr-kit__files { display: flex; flex-wrap: wrap; gap: .5em; width: 8.6em; align-content: center; }
.vbr-kit__files > i { font-style: normal; font-size: 1.1em; padding: .2em .8em; border-radius: 2em; background: var(--dark-3); color: var(--on-dark-0); }
.vbr-kit__files > span { flex-basis: 100%; display: inline-flex; align-items: center; gap: .5em; width: max-content; margin-top: .3em; padding: .35em 1em; border-radius: 2em; background: var(--accent); color: var(--accent-ink); font-size: 1.05em; white-space: nowrap; }
@media (prefers-reduced-motion: no-preference) {
  .sa.vp-arca, .sa.vp-arcb, .sa.vp-arcc, .sa.vp-l1, .sa.vp-l2, .sa.vp-l3, .sa.vp-type, .sa.vp-d1, .sa.vp-d2, .sa.vp-c1, .sa.vp-c2, .sa.vp-c3, .sa.vp-e1, .sa.vp-e2, .sa.vp-e3, .sa.vp-roll, .sa.vp-ba, .sa.vp-bb, .sa.vp-chip, .sa.vb-l1, .sa.vb-l2, .sa.vb-l3, .sa.vb-l4, .sa.vb-n1, .sa.vb-n2, .sa.vb-n3, .sa.vb-n4, .sa.vb-core, .sa.vb-s1, .sa.vb-s2, .sa.vb-s3, .sa.vb-s4, .sa.vb-f1, .sa.vb-f2, .sa.vb-f3, .sa.vb-ring, .sa.vb-mc, .sa.vb-mb, .sa.vb-fillc, .sa.vb-mk, .sa.vb-word, .sa.vb-pg1, .sa.vb-pg2, .sa.vb-pg3, .sa.vb-t1, .sa.vb-t2, .sa.vb-t3, .sa.vb-ready, .sa.vb-dot { --t: 7s; --d: 0s; --tf: ease-in-out; }
  .sa.vp-type, .sa.vp-roll { --tf: steps(24, end); } .sa.vp-roll { --tf: steps(1, end); }
  .vp-arca { animation-name: vp-arca; } .vp-arcb { animation-name: vp-arcb; } .vp-arcc { animation-name: vp-arcc; } .vp-l1 { animation-name: vp-l1; } .vp-l2 { animation-name: vp-l2; } .vp-l3 { animation-name: vp-l3; } .vp-type { animation-name: vp-type; } .vp-d1 { animation-name: vp-d1; } .vp-d2 { animation-name: vp-d2; } .vp-c1 { animation-name: vp-c1; } .vp-c2 { animation-name: vp-c2; } .vp-c3 { animation-name: vp-c3; } .vp-e1 { animation-name: vp-e1; } .vp-e2 { animation-name: vp-e2; } .vp-e3 { animation-name: vp-e3; } .vp-roll { animation-name: vp-roll; } .vp-ba { animation-name: vp-ba; } .vp-bb { animation-name: vp-bb; } .vp-chip { animation-name: vp-chip; } .vb-l1 { animation-name: vb-l1; } .vb-l2 { animation-name: vb-l2; } .vb-l3 { animation-name: vb-l3; } .vb-l4 { animation-name: vb-l4; } .vb-n1 { animation-name: vb-n1; } .vb-n2 { animation-name: vb-n2; } .vb-n3 { animation-name: vb-n3; } .vb-n4 { animation-name: vb-n4; } .vb-core { animation-name: vb-core; } .vb-s1 { animation-name: vb-s1; } .vb-s2 { animation-name: vb-s2; } .vb-s3 { animation-name: vb-s3; } .vb-s4 { animation-name: vb-s4; } .vb-f1 { animation-name: vb-f1; } .vb-f2 { animation-name: vb-f2; } .vb-f3 { animation-name: vb-f3; } .vb-ring { animation-name: vb-ring; } .vb-mc { animation-name: vb-mc; } .vb-mb { animation-name: vb-mb; } .vb-fillc { animation-name: vb-fillc; } .vb-mk { animation-name: vb-mk; } .vb-word { animation-name: vb-word; } .vb-pg1 { animation-name: vb-pg1; } .vb-pg2 { animation-name: vb-pg2; } .vb-pg3 { animation-name: vb-pg3; } .vb-t1 { animation-name: vb-t1; } .vb-t2 { animation-name: vb-t2; } .vb-t3 { animation-name: vb-t3; } .vb-ready { animation-name: vb-ready; } .vb-dot { animation-name: vb-dot; } 
}
@keyframes vp-arca { 0%,4% { stroke-dasharray: 0 94.25; } 22%,90% { stroke-dasharray: 50.9 94.25; } 96%,100% { stroke-dasharray: 0 94.25; } }
@keyframes vp-arcb { 0%,22% { stroke-dasharray: 0 94.25; } 38%,90% { stroke-dasharray: 28.3 94.25; } 96%,100% { stroke-dasharray: 0 94.25; } }
@keyframes vp-arcc { 0%,38% { stroke-dasharray: 0 94.25; } 50%,90% { stroke-dasharray: 15.1 94.25; } 96%,100% { stroke-dasharray: 0 94.25; } }
@keyframes vp-l1 { 0%,6% { opacity: 0; } 12%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vp-l2 { 0%,24% { opacity: 0; } 30%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vp-l3 { 0%,40% { opacity: 0; } 46%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vp-type { 0%,4% { clip-path: inset(0 100% 0 0); } 28%,90% { clip-path: inset(0 0 0 0); } 96%,100% { clip-path: inset(0 100% 0 0); } }
@keyframes vp-d1 { 0%,30% { transform: scaleX(0); } 40%,90% { transform: scaleX(1); } 96%,100% { transform: scaleX(0); } }
@keyframes vp-d2 { 0%,34% { transform: scaleX(0); } 46%,90% { transform: scaleX(1); } 96%,100% { transform: scaleX(0); } }
@keyframes vp-c1 { 0%,50% { opacity: 0; transform: scale(.6); } 55% { opacity: 1; transform: scale(1.08); } 58%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vp-c2 { 0%,58% { opacity: 0; transform: scale(.6); } 63% { opacity: 1; transform: scale(1.08); } 66%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vp-c3 { 0%,66% { opacity: 0; transform: scale(.6); } 71% { opacity: 1; transform: scale(1.08); } 74%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vp-e1 { 0%,18% { opacity: 0; transform: translateX(1.2em); } 25%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; transform: none; } }
@keyframes vp-e2 { 0%,38% { opacity: 0; transform: translateX(1.2em); } 45%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; transform: none; } }
@keyframes vp-e3 { 0%,58% { opacity: 0; transform: translateX(1.2em); } 65%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; transform: none; } }
@keyframes vp-roll { 0%,20% { transform: translateY(0); } 25%,38% { transform: translateY(-1.3em); } 43%,58% { transform: translateY(-2.6em); } 63%,90% { transform: translateY(-3.9em); } 96%,100% { transform: translateY(0); } }
@keyframes vp-ba { 0%,20% { transform: scaleX(.78); } 52%,90% { transform: scaleX(.3); } 97%,100% { transform: scaleX(.78); } }
@keyframes vp-bb { 0%,20% { transform: scaleX(.3); } 52%,90% { transform: scaleX(.86); } 97%,100% { transform: scaleX(.3); } }
@keyframes vp-chip { 0%,54% { opacity: 0; transform: scale(.6); } 59% { opacity: 1; transform: scale(1.08); } 62%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-l1 { 0%,4% { stroke-dashoffset: 1; } 14%,90% { stroke-dashoffset: 0; } 96%,100% { stroke-dashoffset: 1; } }
@keyframes vb-l2 { 0%,10% { stroke-dashoffset: 1; } 20%,90% { stroke-dashoffset: 0; } 96%,100% { stroke-dashoffset: 1; } }
@keyframes vb-l3 { 0%,16% { stroke-dashoffset: 1; } 26%,90% { stroke-dashoffset: 0; } 96%,100% { stroke-dashoffset: 1; } }
@keyframes vb-l4 { 0%,22% { stroke-dashoffset: 1; } 32%,90% { stroke-dashoffset: 0; } 96%,100% { stroke-dashoffset: 1; } }
@keyframes vb-n1 { 0%,14% { opacity: 0; transform: scale(.6); } 19% { opacity: 1; transform: scale(1.08); } 22%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-n2 { 0%,20% { opacity: 0; transform: scale(.6); } 25% { opacity: 1; transform: scale(1.08); } 28%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-n3 { 0%,26% { opacity: 0; transform: scale(.6); } 31% { opacity: 1; transform: scale(1.08); } 34%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-n4 { 0%,32% { opacity: 0; transform: scale(.6); } 37% { opacity: 1; transform: scale(1.08); } 40%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-core { 0%,2% { opacity: 0; transform: scale(.4); } 8%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes vb-s1 { 0%,4% { transform: scaleY(0); } 16%,90% { transform: scaleY(1); } 96%,100% { transform: scaleY(0); } }
@keyframes vb-s2 { 0%,10% { transform: scaleY(0); } 22%,90% { transform: scaleY(1); } 96%,100% { transform: scaleY(0); } }
@keyframes vb-s3 { 0%,16% { transform: scaleY(0); } 28%,90% { transform: scaleY(1); } 96%,100% { transform: scaleY(0); } }
@keyframes vb-s4 { 0%,22% { transform: scaleY(0); } 34%,90% { transform: scaleY(1); } 96%,100% { transform: scaleY(0); } }
@keyframes vb-f1 { 0%,36% { opacity: 1; } 40%,94% { opacity: 0; } 100% { opacity: 1; } }
@keyframes vb-f2 { 0%,38% { opacity: 0; } 44%,60% { opacity: 1; } 64%,100% { opacity: 0; } }
@keyframes vb-f3 { 0%,60% { opacity: 0; } 66%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vb-ring { 0%,4% { stroke-dashoffset: 1; opacity: 1; } 24%,90% { stroke-dashoffset: 0; opacity: 1; } 96%,100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes vb-mc { 0%,22% { stroke-dashoffset: 1; } 46%,60% { stroke-dashoffset: 0; } 64%,100% { stroke-dashoffset: 0; } }
@keyframes vb-mb { 0%,34% { stroke-dashoffset: 1; } 56%,60% { stroke-dashoffset: 0; } 64%,100% { stroke-dashoffset: 0; } }
@keyframes vb-fillc { 0%,58% { fill-opacity: 0; } 70%,90% { fill-opacity: 1; } 96%,100% { fill-opacity: 0; } }
@keyframes vb-mk { 0%,4% { opacity: 1; } 90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vb-word { 0%,72% { opacity: 0; } 80%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes vb-pg1 { 0%,24% { opacity: 1; transform: none; } 30%,94% { opacity: 0; transform: translateX(-.6em); } 100% { opacity: 1; transform: none; } }
@keyframes vb-pg2 { 0%,26% { opacity: 0; transform: translateX(.6em); } 34%,50% { opacity: 1; transform: none; } 56%,100% { opacity: 0; transform: translateX(-.6em); } }
@keyframes vb-pg3 { 0%,52% { opacity: 0; transform: translateX(.6em); } 60%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes vb-t1 { 0%,66% { opacity: 0; transform: scale(.6); } 71% { opacity: 1; transform: scale(1.08); } 74%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-t2 { 0%,72% { opacity: 0; transform: scale(.6); } 77% { opacity: 1; transform: scale(1.08); } 80%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-t3 { 0%,78% { opacity: 0; transform: scale(.6); } 83% { opacity: 1; transform: scale(1.08); } 86%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-ready { 0%,84% { opacity: 0; transform: scale(.6); } 89% { opacity: 1; transform: scale(1.08); } 92%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; transform: scale(1); } }
@keyframes vb-dot { 0%,24% { background: var(--on-dark-4); } 30%,50% { background: var(--on-dark-4); } 100% { background: var(--on-dark-4); } }
@media (max-width: 639px) {
  .step__viz.vp, .step__viz.vbr { box-sizing: border-box; width: 100%; height: auto; min-height: 150px; padding: var(--sp-20) var(--sp-16); border-radius: var(--r-sm); background: rgba(255,255,255,.05); font-size: min(18px, calc((100vw - 132px) / 17)); }
}

/* ---------- lead automation scenes: connect the systems, test and optimize ---------- */
.step__viz.la { height: auto; min-height: 9.6em; font-size: 10px; flex-direction: column; justify-content: center; align-items: stretch; gap: .5em; }
.la-row { display: flex; align-items: center; gap: .9em; padding: .25em .7em; border-radius: 2em; background: var(--dark-3); font-size: 1.1em; color: var(--on-dark-0); }
.la-row > b { font-weight: var(--fw-regular); white-space: nowrap; }
.la-ico { display: grid; place-items: center; flex: none; width: 1.7em; height: 1.7em; border-radius: 50%; background: var(--dark-2); color: var(--accent-300); font-size: .8em; }
.la-st { position: relative; margin-left: auto; flex: none; width: 6.6em; height: 1.4em; font-size: .9em; }
.la-st s { position: absolute; inset: 0; display: flex; align-items: center; justify-content: flex-end; gap: .4em; text-decoration: none; white-space: nowrap; }
.la-st s:first-child { opacity: 0; color: var(--on-dark-2); } .la-st s:last-child { color: var(--accent-300); }
.la-pill { align-self: flex-start; display: inline-flex; align-items: center; gap: .5em; padding: .2em .9em; border-radius: 2em; background: var(--accent); color: var(--accent-ink); font-size: 1em; white-space: nowrap; }
.la-test .la-row > u { text-decoration: none; padding: 0 .6em; border-radius: 2em; background: rgba(245,179,1,.18); color: var(--star); font-size: .85em; }
.la-stat { position: relative; margin-left: auto; flex: none; width: 1.6em; height: 1.6em; }
.la-stat > span { position: absolute; inset: 0; display: grid; place-items: center; border-radius: 50%; font-size: .75em; }
.la-stat > span:first-child { opacity: 0; }
.la-stat > span:first-child i { width: 1.5em; height: 1.5em; border-radius: 50%; border: 2px solid var(--on-dark-4); border-top-color: var(--accent-300); }
.la-stat > span:nth-child(2):not(.la-ok) { opacity: 0; background: var(--alert); color: var(--white); }
.la-stat .la-ok { background: var(--accent); color: var(--accent-ink); }
.la-test .la-pill { margin-top: .1em; }
@media (prefers-reduced-motion: no-preference) {
  .sa.la-r1, .sa.la-w1, .sa.la-c1, .sa.la-r2, .sa.la-w2, .sa.la-c2, .sa.la-r3, .sa.la-w3, .sa.la-c3, .sa.la-all, .sa.la-t1, .sa.la-t2, .sa.la-t3, .sa.la-s1, .sa.la-k1, .sa.la-s2, .sa.la-x2, .sa.la-k2, .sa.la-fx, .sa.la-s3, .sa.la-k3, .sa.la-done { --t: 7s; --d: 0s; --tf: ease-in-out; }
  .sa.la-rot { --t: .8s; --tf: linear; animation-name: la-rot; }
  .la-r1 { animation-name: la-r1; } .la-w1 { animation-name: la-w1; } .la-c1 { animation-name: la-c1; } .la-r2 { animation-name: la-r2; } .la-w2 { animation-name: la-w2; } .la-c2 { animation-name: la-c2; } .la-r3 { animation-name: la-r3; } .la-w3 { animation-name: la-w3; } .la-c3 { animation-name: la-c3; } .la-all { animation-name: la-all; } .la-t1 { animation-name: la-t1; } .la-t2 { animation-name: la-t2; } .la-t3 { animation-name: la-t3; } .la-s1 { animation-name: la-s1; } .la-k1 { animation-name: la-k1; } .la-s2 { animation-name: la-s2; } .la-x2 { animation-name: la-x2; } .la-k2 { animation-name: la-k2; } .la-fx { animation-name: la-fx; } .la-s3 { animation-name: la-s3; } .la-k3 { animation-name: la-k3; } .la-done { animation-name: la-done; }
}
@keyframes la-r1 { 0%,0% { opacity: 0; transform: translateY(.8em); } 6%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-w1 { 0%,16% { opacity: 1; } 20%,96% { opacity: 0; } 100% { opacity: 1; } }
@keyframes la-c1 { 0%,16% { opacity: 0; } 20%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-r2 { 0%,22% { opacity: 0; transform: translateY(.8em); } 28%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-w2 { 0%,38% { opacity: 1; } 42%,96% { opacity: 0; } 100% { opacity: 1; } }
@keyframes la-c2 { 0%,38% { opacity: 0; } 42%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-r3 { 0%,44% { opacity: 0; transform: translateY(.8em); } 50%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-w3 { 0%,60% { opacity: 1; } 64%,96% { opacity: 0; } 100% { opacity: 1; } }
@keyframes la-c3 { 0%,60% { opacity: 0; } 64%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-all { 0%,70% { opacity: 0; transform: scale(.6); } 76% { opacity: 1; transform: scale(1.08); } 80%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes la-t1 { 0%,2% { opacity: 0; transform: translateY(.8em); } 8%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-t2 { 0%,18% { opacity: 0; transform: translateY(.8em); } 24%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-t3 { 0%,46% { opacity: 0; transform: translateY(.8em); } 52%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes la-s1 { 0%,4% { opacity: 0; } 7%,16% { opacity: 1; } 19%,100% { opacity: 0; } }
@keyframes la-k1 { 0%,16% { opacity: 0; } 20%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-s2 { 0%,20% { opacity: 0; } 23%,30% { opacity: 1; } 33%,100% { opacity: 0; } }
@keyframes la-x2 { 0%,30% { opacity: 0; } 33%,50% { opacity: 1; } 53%,100% { opacity: 0; } }
@keyframes la-k2 { 0%,50% { opacity: 0; } 54%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-fx { 0%,52% { opacity: 0; transform: scale(.6); } 56% { opacity: 1; transform: scale(1.08); } 59%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes la-s3 { 0%,48% { opacity: 0; } 51%,58% { opacity: 1; } 61%,100% { opacity: 0; } }
@keyframes la-k3 { 0%,58% { opacity: 0; } 62%,90% { opacity: 1; } 96%,100% { opacity: 0; } }
@keyframes la-done { 0%,70% { opacity: 0; transform: scale(.6); } 74% { opacity: 1; transform: scale(1.08); } 77%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes la-rot { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@media (max-width: 639px) { .step__viz.la { box-sizing: border-box; width: 100%; height: auto; min-height: 150px; padding: var(--sp-20) var(--sp-16); border-radius: var(--r-sm); background: rgba(255,255,255,.05); font-size: min(18px, calc((100vw - 132px) / 17)); } }

/* ---------- AI media: creative brief fills in field by field ---------- */
.step__viz.ab { height: auto; min-height: 9.6em; font-size: 10px; flex-direction: column; justify-content: center; align-items: stretch; gap: .45em; }
.ab-row { display: flex; align-items: center; gap: .8em; padding: .25em .8em; border-radius: 2em; background: var(--dark-3); font-size: 1.05em; color: var(--on-dark-0); }
.ab-row em { flex: none; width: 4.6em; font-style: normal; color: var(--on-dark-2); }
.ab-val { position: relative; flex: 1; min-width: 0; display: block; white-space: nowrap; }
.ab-w { position: relative; display: block; width: max-content; max-width: 100%; }
.ab-w > span { display: block; width: max-content; max-width: 100%; }
.ab-w > i { position: absolute; top: 8%; bottom: 8%; left: 0; width: 2px; margin-left: 1px; background: var(--accent-300); opacity: 0; }
.ab-row u { flex: none; display: grid; place-items: center; width: 1.6em; height: 1.6em; border-radius: 50%; background: var(--accent); color: var(--accent-ink); font-size: .75em; text-decoration: none; }
@media (prefers-reduced-motion: no-preference) {
  .sa.ab-r1, .sa.ab-t1, .sa.ab-k1, .sa.ab-c1, .sa.ab-r2, .sa.ab-t2, .sa.ab-k2, .sa.ab-c2, .sa.ab-r3, .sa.ab-t3, .sa.ab-k3, .sa.ab-c3, .sa.ab-r4, .sa.ab-t4, .sa.ab-k4, .sa.ab-c4 { --t: 7s; --d: 0s; --tf: ease-in-out; }
  .sa.ab-t1, .sa.ab-t2, .sa.ab-t3, .sa.ab-t4, .sa.ab-c1, .sa.ab-c2, .sa.ab-c3, .sa.ab-c4 { --tf: steps(14, end); }
  .ab-r1 { animation-name: ab-r1; } .ab-t1 { animation-name: ab-t1; } .ab-k1 { animation-name: ab-k1; } .ab-c1 { animation-name: ab-c1; } .ab-r2 { animation-name: ab-r2; } .ab-t2 { animation-name: ab-t2; } .ab-k2 { animation-name: ab-k2; } .ab-c2 { animation-name: ab-c2; } .ab-r3 { animation-name: ab-r3; } .ab-t3 { animation-name: ab-t3; } .ab-k3 { animation-name: ab-k3; } .ab-c3 { animation-name: ab-c3; } .ab-r4 { animation-name: ab-r4; } .ab-t4 { animation-name: ab-t4; } .ab-k4 { animation-name: ab-k4; } .ab-c4 { animation-name: ab-c4; }
}
@keyframes ab-r1 { 0%,1% { opacity: 0; transform: translateY(.7em); } 5%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes ab-t1 { 0%,4% { clip-path: inset(0 100% 0 0); } 16%,90% { clip-path: inset(0 0 0 0); } 96%,100% { clip-path: inset(0 100% 0 0); } }
@keyframes ab-k1 { 0%,16% { opacity: 0; transform: scale(.5); } 20% { opacity: 1; transform: scale(1.15); } 23%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes ab-c1 { 0%,4% { opacity: 1; left: 0%; } 16% { opacity: 1; left: 100%; } 17%,100% { opacity: 0; left: 100%; } }
@keyframes ab-r2 { 0%,15% { opacity: 0; transform: translateY(.7em); } 19%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes ab-t2 { 0%,18% { clip-path: inset(0 100% 0 0); } 30%,90% { clip-path: inset(0 0 0 0); } 96%,100% { clip-path: inset(0 100% 0 0); } }
@keyframes ab-k2 { 0%,30% { opacity: 0; transform: scale(.5); } 34% { opacity: 1; transform: scale(1.15); } 37%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes ab-c2 { 0%,18% { opacity: 1; left: 0%; } 30% { opacity: 1; left: 100%; } 31%,100% { opacity: 0; left: 100%; } }
@keyframes ab-r3 { 0%,29% { opacity: 0; transform: translateY(.7em); } 33%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes ab-t3 { 0%,32% { clip-path: inset(0 100% 0 0); } 44%,90% { clip-path: inset(0 0 0 0); } 96%,100% { clip-path: inset(0 100% 0 0); } }
@keyframes ab-k3 { 0%,44% { opacity: 0; transform: scale(.5); } 48% { opacity: 1; transform: scale(1.15); } 51%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes ab-c3 { 0%,32% { opacity: 1; left: 0%; } 44% { opacity: 1; left: 100%; } 45%,100% { opacity: 0; left: 100%; } }
@keyframes ab-r4 { 0%,43% { opacity: 0; transform: translateY(.7em); } 47%,90% { opacity: 1; transform: none; } 96%,100% { opacity: 0; } }
@keyframes ab-t4 { 0%,46% { clip-path: inset(0 100% 0 0); } 58%,90% { clip-path: inset(0 0 0 0); } 96%,100% { clip-path: inset(0 100% 0 0); } }
@keyframes ab-k4 { 0%,58% { opacity: 0; transform: scale(.5); } 62% { opacity: 1; transform: scale(1.15); } 65%,90% { opacity: 1; transform: scale(1); } 96%,100% { opacity: 0; } }
@keyframes ab-c4 { 0%,46% { opacity: 1; left: 0%; } 58% { opacity: 1; left: 100%; } 59%,100% { opacity: 0; left: 100%; } }
@media (max-width: 639px) { .step__viz.ab { font-size: min(18px, calc((100vw - 132px) / 17)); } }

/* sits right under the description (pulled up into the section head gap), with room before the cards */
.rel-nav { display: flex; gap: var(--sp-10); margin: calc(var(--sp-16) - clamp(24px, 4vw, 56px)) 0 clamp(28px, 4vw, 48px); justify-content: center; }
.rel-nav[hidden] { display: none; }

.link-inline { color: var(--accent); font-weight: var(--fw-medium); text-decoration: underline; text-underline-offset: 3px; }

/* dark theme: calmer hero glow */
:root[data-theme="dark"] .orb--1 { opacity: .22; }
:root[data-theme="dark"] .orb--2 { opacity: .16; }
:root[data-theme="dark"] .mb__hero b { background: rgba(255, 255, 255, .16); }

/* ---------- portfolio: project cards, browser frames, case study blocks ---------- */
.case__media .shot { position: absolute; inset: 16% 9% 0 9%; overflow: hidden; border-radius: var(--r-tile) var(--r-tile) 0 0; background: var(--surface); box-shadow: 0 30px 60px -20px rgba(0,0,0,.4); transition: transform .5s var(--ease-lift); }
.case__media .shot img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
@media (hover: hover) and (pointer: fine) { .case:hover .case__media .shot { transform: translateY(-8px); } }
.case-grid--3 { grid-template-columns: 1fr; }
@media (min-width: 900px) { .case-grid--3 { grid-template-columns: repeat(3, 1fr); } }
.bframe { overflow: hidden; border-radius: var(--r-md); background: var(--surface); border: 1px solid var(--line); box-shadow: 0 30px 60px -30px rgba(0,0,0,.35); }
.bframe__bar { display: flex; align-items: center; gap: var(--sp-6); padding: var(--sp-10) var(--sp-14); border-bottom: 1px solid var(--line); background: var(--surface-2); }
.bframe__bar i { width: 10px; height: 10px; border-radius: 50%; background: var(--ink-faint); }
.bframe__bar span { margin-left: var(--sp-10); padding: 2px var(--sp-12); border-radius: var(--r-pill); background: var(--surface); color: var(--muted); font-size: var(--fs-12); }
.bframe__view { position: relative; overflow: hidden; background: #fff; }
.bframe__view img { display: block; width: 100%; height: auto; }
.bframe--hero .bframe__view { aspect-ratio: 4 / 3; }
.bframe--hero .bframe__view img { height: 100%; object-fit: cover; object-position: top; }
.bframe__view.is-scroll { height: clamp(380px, 54vw, 700px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.bframe__view.is-scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.hero__viz--shot { align-self: center; }
.goal { max-width: 72ch; margin: var(--sp-32) 0 0; font-family: var(--font-display); font-size: var(--fs-lead); line-height: var(--lh-snug); letter-spacing: var(--tracking); color: var(--ink); }
.ps { display: grid; gap: var(--sp-16); }
.ps__item { display: grid; gap: var(--sp-16); padding: var(--sp-24); border-radius: var(--r-md); background: var(--surface); }
.ps__ico { display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent); font-size: var(--fs-18); }
.ps__col small { display: block; margin-bottom: var(--sp-8); font-size: var(--fs-12); text-transform: uppercase; letter-spacing: .07em; color: var(--muted); }
.ps__col h3 { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); line-height: var(--lh-tight); margin-bottom: var(--sp-8); }
.ps__col p { color: var(--ink-2); }
.ps__col--sol { padding-left: var(--sp-20); border-left: 2px solid var(--accent); }
.ps__col--sol small { color: var(--accent); }
.ps__col--sol p { color: var(--ink); }
@media (min-width: 900px) { .ps__item { grid-template-columns: 48px 1fr 1fr; align-items: start; gap: var(--sp-32); padding: var(--sp-32); } }
.shots { display: grid; gap: var(--sp-32); }
.shot-block { margin: 0; display: grid; gap: var(--sp-14); }
.shot-block figcaption { display: grid; gap: var(--sp-4); }
.shot-block figcaption b { font-family: var(--font-display); font-size: var(--fs-card-title); letter-spacing: var(--tracking); font-weight: var(--fw-semibold); }
.shot-block figcaption span { color: var(--ink-2); max-width: 64ch; }
@media (min-width: 900px) { .shots { grid-template-columns: 1fr 1fr; } .shot-block--lead { grid-column: 1 / -1; } .shot-block--lead .bframe__view.is-scroll { height: clamp(460px, 48vw, 760px); } }

/* ---------- logo portfolio ---------- */
.case--logo .case__media .logo-tile { position: absolute; inset: 20% 10% 14% 10%; display: grid; place-items: center; padding: var(--sp-16) var(--sp-20); border-radius: var(--r-md); background: #fff; box-shadow: 0 20px 40px -20px rgba(0,0,0,.25); transition: transform .5s var(--ease-lift); }
.case--logo .logo-tile img { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; }
@media (hover: hover) and (pointer: fine) { .case--logo:hover .logo-tile { transform: translateY(-6px); } }
.lstage { display: grid; place-items: center; padding: clamp(28px, 5vw, 56px); border-radius: var(--r-lg); background: #fff; box-shadow: 0 30px 60px -30px rgba(0,0,0,.3); border: 1px solid var(--line); min-height: clamp(220px, 28vw, 340px); }
.lstage img { display: block; width: min(100%, 460px); height: auto; }
.lsurfs { display: grid; gap: var(--sp-16); }
@media (min-width: 640px) { .lsurfs { grid-template-columns: 1fr 1fr; } }
.lsurf { margin: 0; display: grid; gap: var(--sp-10); }
.lsurf__stage { display: grid; place-items: center; min-height: 230px; padding: var(--sp-32); border-radius: var(--r-md); border: 1px solid var(--line); }
.lsurf__stage img { display: block; max-width: min(100%, 360px); max-height: 150px; width: auto; height: auto; }
.lsurf--white .lsurf__stage { background: #fff; } .lsurf--tint .lsurf__stage { background: var(--tint); } .lsurf--mono .lsurf__stage { background: #fff; } .lsurf--brand .lsurf__stage { background: var(--brand); border-color: transparent; }
.lsurf img.is-mono { filter: brightness(0); } .lsurf img.is-white { filter: brightness(0) invert(1); }
.lsurf figcaption { font-size: var(--fs-14); color: var(--muted); }
.lsystem { display: grid; gap: var(--sp-16); }
.swatches { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-14); }
.swatch { display: grid; gap: var(--sp-2); }
.swatch i { display: block; height: 72px; border-radius: var(--r-sm); border: 1px solid var(--line); margin-bottom: var(--sp-8); }
.swatch b { font-weight: var(--fw-medium); } .swatch span { font-size: var(--fs-13); color: var(--muted); letter-spacing: .04em; }
.lsizes { display: grid; gap: var(--sp-24); justify-items: start; padding: var(--sp-24); border-radius: var(--r-md); background: #fff; border: 1px solid var(--line); }
.lsizes img { display: block; width: auto; max-width: 100%; }

.sec-head.sec-head--mid { align-items: center; }

/* work section: centred header, centred filters, arrows centred under the cards */
.work-bar { justify-content: center; }
.work-bar .work-filters { flex: 0 1 auto; justify-content: center; }
.work-bar .work-nav { display: none; }
#work .ind-nav--below { display: flex; justify-content: center; margin-top: var(--sp-24); }

/* contact page */
.feat .contact__value, .contact__value { margin: var(--sp-8) 0 var(--sp-4); font-family: var(--font-display); font-size: var(--fs-22) !important; font-weight: var(--fw-semibold); letter-spacing: var(--tracking); line-height: var(--lh-snug); color: var(--ink); overflow-wrap: anywhere; }
.contact__value a:hover { color: var(--accent); }
.contact address { font-style: normal; }
.contact .link-inline { margin-top: var(--sp-12); display: inline-block; }
@media (min-width: 1000px) { .steps.steps--3 { grid-template-columns: repeat(3, 1fr); } }

/* work section: arrows either side of the View all button; filters sit right under the description */
.work__foot { display: flex; align-items: center; justify-content: center; gap: var(--sp-16); margin-top: var(--sp-32); }
#work .ind-nav--below { display: none; }
#work .work-bar { margin: calc(var(--sp-16) - clamp(24px, 4vw, 56px)) 0 clamp(36px, 5vw, 64px); }

/* book a call */
.scheduler { max-width: 980px; margin-inline: auto; }
.scheduler iframe { display: block; width: 100%; height: clamp(640px, 80vh, 760px); border: 0; border-radius: var(--r-md); background: var(--surface); box-shadow: 0 30px 60px -30px rgba(0,0,0,.25); }
.scheduler__note { margin-top: var(--sp-14); text-align: center; font-size: var(--fs-14); color: var(--muted); }
.scheduler--soon { display: grid; justify-items: center; gap: var(--sp-12); padding: clamp(28px, 5vw, 56px); border-radius: var(--r-md); background: var(--surface); text-align: center; }
.scheduler--soon h3 { font-family: var(--font-display); font-size: var(--fs-card-title); font-weight: var(--fw-semibold); letter-spacing: var(--tracking); }
.scheduler--soon p { max-width: 52ch; color: var(--ink-2); }
.scheduler--soon .hero__actions { justify-content: center; margin-top: var(--sp-8); }
/* 404 */
.nf-code { margin: 0 0 var(--sp-8); font-family: var(--font-display); font-size: clamp(64px, 10vw, 120px); font-weight: var(--fw-bold); letter-spacing: var(--tracking); line-height: .9; color: var(--accent); }
.nf-grid { grid-template-columns: 1fr; }
@media (min-width: 640px) { .nf-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .nf-grid { grid-template-columns: repeat(4, 1fr); } }
