/* GENERATED by site-src/build_catalyse_wine_pages.py from site-src/solution-kit/kit.css: do not edit.
   The kit's violet / lavender / yellow / coral recoloured to wine / rose / champagne (wine_base.recolour).
   Scope: .sk (each kit visual sits in <div class="sk wkit">); wine-base.css tunes .wkit after it. */
/* =====================================================================================================
   Catalyse Research - SOLUTION KIT (kit.css), 14 Oct 2026
   The page sections and the drawn product visuals of the owner's Netlify site
   (https://catalyse-platform.netlify.app, 32 pages) rebuilt for the new catalyseresearch.com look.

   SCOPE: every rule starts with .sk, every keyframe starts with sk-, nothing touches :root, html or body.
   Put class="sk" on the page's <main> (the header partial and the footer stay outside it).
   The homepage CSS (#s1-#s6) and the header (#site-header) cannot be reached from here, and back.

   FONTS (the page <head> must load them): Inter 400 500 600 700 800 and DM Mono 300 400 500.
     <link href="https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
   The homepage loads Inter without 400: solution pages need 400 for body text.
   Netlify look instead (Outfit display headings): add class "sk--outfit" next to "sk" and load Outfit 500.

   COLOURS: the new site palette (ink #1E0A1A, white page, violet #E8466F / #B4235A, yellow #F6C98E,
   lavender #FFB3C7, coral #FF8A7A). The Netlify site's blue / cyan / green / pink were mapped:
     blue glow + bars        -> violet (#E8466F, #B4235A)       cyan highlights -> lavender #FFB3C7
     green "ok" / positive    -> yellow #F6C98E (checks), violet (positive sentiment)
     pink "negative"          -> coral #FF8A7A                    amber           -> yellow / peach #F4A073
   Product stimuli (cartons, packs) use --sk-pack-* so they read as products, not as UI.

   SECTIONS (page order in ANALYSIS.md):
     0 tokens + base   1 heroes   2 method-page sections (sp-*)   3 product-page sections (pp-*)
     4 platform / guide sections (cap, pick, gloss, pgrid, method cards)   5 call to action band
     6 screens (fpanel) + shared visual parts   7 visuals from the Netlify pages (sv1-sv4, cv-*)
     8 new visuals in the same style   9 the homepage demo vocabulary (.sk-app) + the demo stage (.sk-demo)
     10 agent chat   11 responsive   12 reduced motion
   Behaviour (reveals, sticky chat, tabs, demo player, panel parallax) is in kit.js; without it every
   visual renders in its final, static state.
   ===================================================================================================== */

/* ===================================================================================================
   0. TOKENS + BASE
   =================================================================================================== */
.sk {
  --sk-ink: #1E0A1A;
  --sk-night: #1E0A1A;
  --sk-paper: #FFFFFF;
  --sk-cream: #FBF0F3;
  --sk-muted: #554A51;            /* secondary text on white, 6.9:1 */
  --sk-sub: #6E6269;              /* small labels on white, 5.3:1 */
  --sk-hair: #E8DFE3;
  --sk-hair-2: #DDD3D7;
  --sk-soft: #F7F2F4;
  --sk-card-line: #ECE4E7;
  --sk-violet: #E8466F;
  --sk-violet-deep: #B4235A;      /* violet for text and thin marks on white, 5.4:1 */
  --sk-violet-ink: #8E1A47;       /* text on lavender */
  --sk-lavender: #FFB3C7;
  --sk-lav-soft: #FDF1F4;
  --sk-yellow: #F6C98E;
  --sk-yellow-soft: #FCEFDC;
  --sk-yellow-ink: #6B3F12;       /* text on yellow-soft */
  --sk-coral: #FF8A7A;
  --sk-coral-deep: #C4452F;       /* coral for text on white, 4.7:1 */
  --sk-peach: #F4A073;
  --sk-cream-72: rgba(251, 240, 243, .72);
  --sk-cream-50: rgba(251, 240, 243, .5);
  --sk-cream-14: rgba(251, 240, 243, .14);
  --sk-cream-9: rgba(251, 240, 243, .09);

  /* dark "screens": the drawn product windows */
  --sk-scr: #1E0A1A;
  --sk-scr-72: rgba(255, 255, 255, .74);
  --sk-scr-60: rgba(255, 255, 255, .64);
  --sk-scr-45: rgba(255, 255, 255, .5);
  --sk-scr-line: rgba(255, 255, 255, .12);
  --sk-scr-fill: rgba(255, 255, 255, .06);
  --sk-scr-track: rgba(255, 255, 255, .1);
  --sk-card-bg: linear-gradient(180deg, rgba(74, 18, 56, .93), rgba(30, 10, 26, .96));
  --sk-bar: linear-gradient(90deg, #B4235A, #E8466F);
  --sk-bar-win: linear-gradient(90deg, #E8466F, #FFB3C7);
  --sk-ok: #F6C98E;
  --sk-ok-ink: #2B1606;

  /* chart series (dark screens): violet, lavender, yellow, coral, peach, deep violet */
  --sk-c1: #E8466F;
  --sk-c2: #FFB3C7;
  --sk-c3: #F6C98E;
  --sk-c4: #FF8A7A;
  --sk-c5: #F4A073;
  --sk-c6: #B4235A;
  --sk-neutral: #8F8389;

  /* drawn people (avatars): use as style="--c:var(--sk-av3)" */
  --sk-av1: linear-gradient(135deg, #F4A073, #FF8A7A);
  --sk-av2: linear-gradient(135deg, #E8466F, #B4235A);
  --sk-av3: linear-gradient(135deg, #F6C98E, #F4A073);
  --sk-av4: linear-gradient(135deg, #FFB3C7, #E8466F);
  --sk-av5: linear-gradient(135deg, #FF8A7A, #B4235A);
  --sk-av6: linear-gradient(135deg, #F19AB3, #A51F55);
  --sk-av7: linear-gradient(135deg, #F6C98E, #E8466F);
  --sk-av8: linear-gradient(135deg, #FFBCAE, #D9533F);

  /* product colours for packs and cartons (stimuli, not interface) */
  --sk-pack-a: linear-gradient(160deg, #FBE2BD, #E9A55A);
  --sk-pack-b: linear-gradient(160deg, #F3A3BA, #B4235A);
  --sk-pack-c: linear-gradient(160deg, #FFCDBF, #E0563F);
  --sk-pack-d: linear-gradient(160deg, #F1E9EC, #A1959B);
  --sk-pack-e: linear-gradient(160deg, #FDE3EA, #D94C78);
  --sk-pack-f: linear-gradient(160deg, #FBD5BF, #E07A4A);

  /* type */
  --sk-font: "Inter", "Helvetica Neue", Arial, sans-serif;
  --sk-display: var(--sk-font);
  --sk-display-w: 800;
  --sk-display-ls: -.035em;
  --sk-mono: "DM Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;

  /* shape, layout, motion */
  --sk-r: 10px;
  --sk-r-md: 14px;
  --sk-r-lg: 20px;
  --sk-r-xl: 28px;
  --sk-pill: 999px;
  --sk-wrap: 1440px;
  --sk-gutter: 34px;
  --sk-bar-h: 72px;               /* the fixed header bar */
  --sk-sec: clamp(64px, 7.2vw, 112px);
  --sk-e: cubic-bezier(.4, 0, .2, 1);
  --sk-e-out: cubic-bezier(.16, 1, .3, 1);

  display: block;
  background: var(--sk-paper);
  color: var(--sk-ink);
  font-family: var(--sk-font);
  font-size: 16px;
  line-height: 1.5;
  letter-spacing: -.006em;
  text-align: left;
  -webkit-font-smoothing: antialiased;
}
.sk.sk--outfit {
  --sk-display: "Outfit", "Inter", system-ui, sans-serif;
  --sk-display-w: 500;
  --sk-display-ls: -.04em;
}
.sk *, .sk *::before, .sk *::after { box-sizing: border-box; }
.sk :where(h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote, dl, dd) { margin: 0; }
.sk :where(ul, ol) { padding: 0; list-style: none; }
.sk a { color: inherit; text-decoration: none; }
.sk :where(img, video) { max-width: 100%; display: block; }
.sk :where(button) { font: inherit; color: inherit; }
.sk :where(p, li) { text-wrap: pretty; }
.sk :where(h1, h2) { text-wrap: balance; }
.sk :focus-visible { outline: 2px solid var(--sk-violet-deep); outline-offset: 3px; border-radius: 6px; }
.sk ::selection { background: var(--sk-lavender); color: var(--sk-ink); }
.sk .sk-sr {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.sk .wrap { width: 100%; max-width: var(--sk-wrap); margin-inline: auto; padding-inline: var(--sk-gutter); }
.sk .sec { padding-block: var(--sk-sec); }
.sk .sec + .sec:not(.sec--gap) { padding-top: 0; }   /* consecutive white sections share one gap */

/* headings and text */
.sk .h1 {
  font-family: var(--sk-display);
  font-weight: var(--sk-display-w);
  font-size: clamp(40px, 5.2vw, 68px);
  line-height: 1.0;
  letter-spacing: var(--sk-display-ls);
  max-width: 16.5ch;
}
.sk .h2 {
  font-family: var(--sk-display);
  font-weight: var(--sk-display-w);
  font-size: clamp(30px, 3.4vw, 44px);
  line-height: 1.05;
  letter-spacing: -.03em;
  max-width: 22ch;
}
.sk .h3 { font-size: 19px; font-weight: 600; line-height: 1.3; letter-spacing: -.012em; }
.sk .lead { font-size: clamp(17px, 1.35vw, 19px); line-height: 1.5; max-width: 560px; margin-top: 20px; }
.sk .kicker {
  display: inline-flex; align-items: center; gap: 9px;
  font: 400 11.5px/1 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase;
}
.sk .kicker i { width: 7px; height: 7px; border-radius: 50%; background: var(--sk-coral); flex: none; }

/* section head: kicker + title on the left, optional mono lede on the right (homepage pattern) */
.sk .sec-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
  column-gap: 48px;
  align-items: end;
  margin-bottom: clamp(32px, 4vw, 56px);
}
.sk .sec-head > * { grid-column: 1; }
.sk .sec-head .kicker + .h2 { margin-top: 14px; }
.sk .sec-head .lede {
  grid-column: 2; grid-row: 1 / span 2; align-self: end;
  font: 300 15px/1.45 var(--sk-mono); color: var(--sk-muted);
}

/* buttons: pills, like the header */
.sk .hero-btns { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 30px; }
.sk .btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 46px; padding: 0 22px; border-radius: var(--sk-pill); border: 1px solid transparent;
  font: 600 15px/1 var(--sk-font); white-space: nowrap; cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s, transform .2s var(--sk-e);
}
.sk .btn svg { transition: transform .3s var(--sk-e-out); }
.sk .btn:hover svg { transform: translateX(3px); }
.sk .btn-white { background: var(--sk-cream); color: var(--sk-night); }
.sk .btn-white:hover { background: #FFFFFF; }
.sk .btn-soft { border-color: var(--sk-cream-50); color: var(--sk-cream); }
.sk .btn-soft:hover { border-color: var(--sk-cream); background: var(--sk-cream-9); }
.sk .btn-ink { background: var(--sk-ink); color: var(--sk-cream); }
.sk .btn-ink:hover { background: var(--sk-violet-deep); }
.sk .btn-line { border-color: var(--sk-hair-2); color: var(--sk-ink); }
.sk .btn-line:hover { border-color: var(--sk-ink); }

/* scroll reveals: visible unless kit.js arms them (class sk-anim on .sk), watchdog in kit.js */
.sk .rv { transition: opacity .6s var(--sk-e-out), transform .6s var(--sk-e-out); }
.sk.sk-anim .rv { opacity: 0; transform: translateY(22px); }
.sk.sk-anim .rv.in { opacity: 1; transform: none; }

/* status / sample markers (visible) */
.sk .sk-soon {
  display: inline-flex; align-items: center; gap: 6px; vertical-align: middle;
  padding: 3px 9px; border-radius: var(--sk-pill);
  font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase;
  color: var(--sk-yellow-ink); background: var(--sk-yellow-soft);
}

/* ===================================================================================================
   1. HEROES (dark band under the transparent header, like the homepage; the header needs no sh--solid)
   =================================================================================================== */
/* method pages: centred or left text, then a big visual that straddles the dark band and the white page */
.sk .sp-hero {
  position: relative; isolation: isolate;
  padding-top: calc(var(--sk-bar-h) + clamp(44px, 6vw, 92px));
  padding-bottom: clamp(40px, 5vw, 72px);
  color: var(--sk-cream);
}
.sk .sp-hero::before {
  content: ""; position: absolute; z-index: -1; left: 0; right: 0; top: 0;
  bottom: var(--sk-straddle, clamp(150px, 19vw, 280px));
  background: var(--sk-night);
}
.sk .sp-hero.no-stage::before { bottom: 0; }
.sk .sp-hero .eyebrow, .sk .pp-hero .crumb {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 22px;
  font: 400 11.5px/1.2 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-cream-72);
}
.sk .sp-hero .eyebrow a:hover, .sk .pp-hero .crumb a:hover { color: var(--sk-cream); text-decoration: underline; text-underline-offset: 3px; }
.sk .sp-hero .lead { color: var(--sk-cream-72); }
.sk .sp-hero.center { text-align: center; }
.sk .sp-hero.center .h1, .sk .sp-hero.center .lead { margin-inline: auto; }
.sk .sp-hero.center .hero-btns, .sk .sp-hero.center .eyebrow { justify-content: center; }
.sk .sp-stage { margin-top: clamp(36px, 4.4vw, 56px); height: clamp(400px, 50vw, 700px); }
.sk .sp-stage .fpanel { height: 100%; }
.sk .sp-stage.is-app { height: auto; }           /* holds the homepage demo (.sk-stage) */

/* product / capability pages: text left, visual right, all on the dark band */
.sk .pp-hero {
  padding-top: calc(var(--sk-bar-h) + clamp(40px, 5vw, 80px));
  padding-bottom: clamp(48px, 6vw, 96px);
  background: var(--sk-night); color: var(--sk-cream);
}
.sk .pp-hero .wrap { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(28px, 4vw, 64px); align-items: center; }
.sk .pp-hero .pill {
  display: inline-flex; align-items: center; gap: 9px; margin-bottom: 20px; padding: 8px 14px;
  border-radius: var(--sk-pill); box-shadow: inset 0 0 0 1px var(--sk-cream-14);
  font: 400 11.5px/1 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-cream);
}
.sk .pp-hero .pill i { width: 7px; height: 7px; border-radius: 50%; background: var(--sk-yellow); }
.sk .pp-hero h1 {
  font-family: var(--sk-display); font-weight: var(--sk-display-w);
  font-size: clamp(36px, 4.2vw, 56px); line-height: 1.03; letter-spacing: var(--sk-display-ls);
}
.sk .pp-hero .lead { color: var(--sk-cream-72); }
.sk .pp-hero .fpanel { height: clamp(340px, 36vw, 500px); }
.sk .pp-hero .sv .card { width: 84%; padding: 24px 26px; }
.sk .pp-hero .sv .ttl { font-size: 22px; }
.sk .pp-hero .sv4 .orbit { scale: .82; }
.sk .pp-hero .cv-tiles { width: 88%; gap: 10px; }
.sk .pp-hero .sv2 .ppl .pp { width: 100px; height: 100px; }
.sk .pp-hero .sv2 .spk .pp { width: 156px; height: 156px; }
.sk .pp-hero .cv-say { font-size: 14px; max-width: 54%; }

/* ===================================================================================================
   2. METHOD-PAGE SECTIONS (Netlify "sp-" template)
   =================================================================================================== */
/* questions it answers: a hairline grid of the buyer's own questions */
.sk .sp-q {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px;
  background: var(--sk-hair); border: 1px solid var(--sk-hair); border-radius: var(--sk-r-xl); overflow: hidden;
}
.sk .sp-q p {
  background: var(--sk-paper); padding: 30px 28px;
  font-family: var(--sk-display); font-weight: 600; font-size: clamp(19px, 1.8vw, 24px); line-height: 1.25; letter-spacing: -.015em;
  color: var(--sk-muted); transition: color .25s var(--sk-e), background-color .25s var(--sk-e);
}
.sk .sp-q p:hover { color: var(--sk-ink); background: var(--sk-soft); }
.sk .sp-q.row { grid-template-columns: repeat(4, 1fr); }
.sk .sp-q.row p { font-size: clamp(17px, 1.4vw, 20px); padding: 26px 22px; }

/* the one-sentence statement */
.sk .sp-state .h2 { max-width: 24ch; font-size: clamp(30px, 3.8vw, 52px); }

/* story: cards with a visual on the left, the agent chat sticky on the right */
.sk .sp-flow { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 24px; align-items: start; }
.sk .sp-cards { display: flex; flex-direction: column; gap: clamp(48px, 6vw, 80px); }
.sk .sp-card { border: 1px solid var(--sk-card-line); border-radius: var(--sk-r-xl); background: var(--sk-paper); overflow: hidden; }
.sk .sp-card .fpanel { height: clamp(320px, 38vw, 520px); border-radius: var(--sk-r-xl) var(--sk-r-xl) 0 0; }
.sk .sp-card .txt { padding: 28px 34px 34px; max-width: 600px; }
.sk .sp-card .txt h3 { font-size: 20px; font-weight: 700; letter-spacing: -.015em; margin-bottom: 6px; }
.sk .sp-card .txt p { font-size: 17px; line-height: 1.5; color: var(--sk-muted); }
.sk .sp-cards.alt .sp-card:nth-child(even) .txt { margin-left: auto; text-align: right; }
.sk .sp-chat { position: sticky; top: calc(var(--sk-bar-h) + 24px); height: min(640px, calc(100vh - 130px)); }
.sk .sp-chat .msgs p { display: none; }
.sk .sp-chat[data-k="0"] .k0, .sk .sp-chat[data-k="1"] .k1, .sk .sp-chat[data-k="2"] .k2,
.sk .sp-chat[data-k="3"] .k3, .sk .sp-chat[data-k="4"] .k4, .sk .sp-chat[data-k="5"] .k5 {
  display: block; animation: sk-msg .45s var(--sk-e-out) both;
}
.sk .sp-chat .msg.a { animation-delay: .35s !important; }
@keyframes sk-msg { from { opacity: 0; transform: translateY(8px); } }

/* "built the way a researcher would build it": hairline cells */
.sk .sp-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--sk-hair); border: 1px solid var(--sk-hair); border-radius: var(--sk-r-xl); overflow: hidden;
}
.sk .sp-grid.c3 { grid-template-columns: repeat(3, 1fr); }
.sk .sp-grid > div {
  background: var(--sk-paper); padding: 30px; min-height: 220px;
  display: flex; flex-direction: column; gap: 8px; transition: background-color .3s var(--sk-e);
}
.sk .sp-grid > div:hover { background: var(--sk-soft); }
.sk .sp-grid .lbl {
  margin-bottom: auto; padding-bottom: 18px;
  font: 400 11px/1.2 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-violet-deep);
}
.sk .sp-grid h3 { font-size: 19px; font-weight: 600; letter-spacing: -.012em; }
.sk .sp-grid p { font-size: 15px; color: var(--sk-muted); max-width: 460px; }

/* how it works: numbered steps */
.sk .sp-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; counter-reset: skst; }
.sk .sp-steps > div {
  border-radius: var(--sk-r-lg); padding: 28px; background: var(--sk-soft); counter-increment: skst;
  min-height: 210px; display: flex; flex-direction: column; gap: 8px;
}
.sk .sp-steps > div::before {
  content: "0" counter(skst); margin-bottom: auto;
  font: 800 44px/1 var(--sk-display); letter-spacing: -.03em; color: var(--sk-violet-deep);
}
.sk .sp-steps h3 { font-size: 19px; font-weight: 600; }
.sk .sp-steps p { font-size: 15px; color: var(--sk-muted); }

/* what you can measure / what you get */
.sk .sp-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 40px; }
.sk .sp-list li {
  padding: 16px 0; border-top: 1px solid var(--sk-hair);
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  font-size: 16px; font-weight: 500; color: var(--sk-ink);
}
.sk .sp-list li span { font: 400 11.5px/1.3 var(--sk-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--sk-sub); text-align: right; }

/* when to use it, and when not to */
.sk .sp-when { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.sk .sp-when > div { border-radius: var(--sk-r-lg); padding: 26px; background: var(--sk-soft); }
.sk .sp-when .tag {
  display: inline-block; margin-bottom: 14px; padding: 5px 11px; border-radius: var(--sk-pill);
  font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase;
  color: var(--sk-violet-ink); background: var(--sk-lavender);
}
.sk .sp-when .tag.n { color: var(--sk-yellow-ink); background: var(--sk-yellow-soft); }
.sk .sp-when h3 { font-size: 19px; font-weight: 600; margin-bottom: 6px; letter-spacing: -.012em; }
.sk .sp-when p { font-size: 15px; color: var(--sk-muted); }
.sk .sp-when a { color: var(--sk-ink); text-decoration: underline; text-underline-offset: 3px; }
.sk .sp-when a:hover { color: var(--sk-violet-deep); }

/* questions, answered */
.sk .sp-faq { max-width: 860px; }
.sk .sp-faq details { border-top: 1px solid var(--sk-hair); padding: 20px 0; }
.sk .sp-faq details:last-child { border-bottom: 1px solid var(--sk-hair); }
.sk .sp-faq summary {
  cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 20px;
  font-family: var(--sk-display); font-weight: 600; font-size: 20px; letter-spacing: -.015em;
}
.sk .sp-faq summary::-webkit-details-marker { display: none; }
.sk .sp-faq summary::after { content: "+"; font-weight: 400; color: var(--sk-sub); transition: transform .25s var(--sk-e); }
.sk .sp-faq details[open] summary::after { transform: rotate(45deg); }
.sk .sp-faq p { color: var(--sk-muted); font-size: 16px; line-height: 1.55; margin-top: 12px; max-width: 720px; }

/* goes well with */
.sk .sp-rel { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.sk .sp-rel a {
  border: 1px solid var(--sk-card-line); border-radius: var(--sk-r-lg); padding: 24px; min-height: 150px;
  display: flex; flex-direction: column; justify-content: space-between; gap: 18px; background: var(--sk-paper);
  transition: border-color .25s var(--sk-e), transform .35s var(--sk-e-out), box-shadow .35s var(--sk-e-out);
}
.sk .sp-rel a:hover { border-color: var(--sk-ink); transform: translateY(-4px); box-shadow: 0 24px 40px -26px rgba(30, 10, 26, .45); }
.sk .sp-rel b { font-family: var(--sk-display); font-size: 20px; font-weight: 700; letter-spacing: -.015em; }
.sk .sp-rel span { font-size: 14px; color: var(--sk-muted); }

/* ===================================================================================================
   3. PRODUCT / CAPABILITY-PAGE SECTIONS (Netlify "pp-" template)
   =================================================================================================== */
.sk .pp-facts { display: grid; grid-template-columns: repeat(3, 1fr); border-block: 1px solid var(--sk-hair); }
.sk .pp-facts div { padding: 30px 28px; }
.sk .pp-facts div + div { border-left: 1px solid var(--sk-hair); }
.sk .pp-facts b { display: block; margin-top: 6px; font-family: var(--sk-display); font-size: clamp(20px, 2vw, 26px); font-weight: 700; letter-spacing: -.02em; }
.sk .pp-facts span { font: 400 11.5px/1.2 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-sub); }

/* tabs: feature list on the left, its visual and a short chat exchange on the right (kit.js rotates) */
.sk .pp-tabs { display: grid; grid-template-columns: 380px 1fr; gap: clamp(20px, 3vw, 44px); align-items: stretch; }
.sk .pp-tabs .tl { display: flex; flex-direction: column; gap: 10px; }
.sk .pp-tabs button {
  all: unset; box-sizing: border-box; cursor: pointer; display: block; position: relative; overflow: hidden;
  padding: 22px 24px; border-radius: var(--sk-r-lg); border: 1px solid var(--sk-card-line); background: var(--sk-paper);
  transition: border-color .3s var(--sk-e), background-color .3s var(--sk-e);
}
.sk .pp-tabs button:focus-visible { outline: 2px solid var(--sk-violet-deep); outline-offset: 3px; }
.sk .pp-tabs button h3 { font-family: var(--sk-display); font-size: 19px; font-weight: 600; color: var(--sk-sub); transition: color .3s var(--sk-e); }
.sk .pp-tabs button p {
  font-size: 15px; line-height: 1.45; color: var(--sk-muted); max-height: 0; opacity: 0; overflow: hidden;
  transition: max-height .45s var(--sk-e-out), opacity .3s var(--sk-e), margin .3s var(--sk-e);
}
.sk .pp-tabs button.on { border-color: var(--sk-ink); background: var(--sk-lav-soft); }
.sk .pp-tabs button.on h3 { color: var(--sk-ink); }
.sk .pp-tabs button.on p { max-height: 160px; opacity: 1; margin-top: 8px; }
.sk .pp-tabs button u { position: absolute; left: 0; bottom: 0; height: 3px; width: 100%; background: var(--sk-bar); transform: scaleX(0); transform-origin: 0 50%; }
.sk .pp-tabs button.on u { animation: sk-ppbar 6s linear forwards; }
.sk .pp-tabs:hover button.on u { animation-play-state: paused; }
@keyframes sk-ppbar { to { transform: scaleX(1); } }
.sk .pp-tabs .tv { position: relative; min-height: clamp(420px, 40vw, 560px); }
.sk .pp-tabs .pane {
  position: absolute; inset: 0; display: grid; grid-template-rows: 1fr auto; gap: 14px;
  opacity: 0; visibility: hidden; transform: translateY(10px) scale(.985);
  transition: opacity .4s var(--sk-e), transform .55s var(--sk-e-out), visibility .4s;
}
.sk .pp-tabs .pane.on { opacity: 1; visibility: visible; transform: none; }
.sk .pp-tabs .pane .fpanel { height: 100%; min-height: 0; }
.sk .pp-tabs .pane .sv .card { width: 80%; }
.sk .pp-tabs .ex { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.sk .pp-tabs .ex p { font-size: 14px; line-height: 1.42; padding: 12px 14px; border-radius: var(--sk-r-md); }
.sk .pp-tabs .ex .u { background: var(--sk-ink); color: var(--sk-cream); }
.sk .pp-tabs .ex .a { background: var(--sk-soft); color: var(--sk-ink); }
.sk .pp-tabs .ex small { display: block; margin-bottom: 4px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; opacity: .7; }

/* questions it answers: numbered cards */
.sk .pp-qs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; counter-reset: skpq; }
.sk .pp-qs p {
  counter-increment: skpq; min-height: 190px; padding: 24px; border: 1px solid var(--sk-card-line); border-radius: var(--sk-r-lg);
  display: flex; flex-direction: column; justify-content: flex-end;
  font-family: var(--sk-display); font-weight: 600; font-size: 20px; line-height: 1.25; letter-spacing: -.015em; color: var(--sk-ink);
  background: radial-gradient(90% 70% at 50% 0%, rgba(255, 179, 199, .8), transparent 70%), var(--sk-paper);
}
.sk .pp-qs p::before { content: "0" counter(skpq); margin-bottom: auto; font: 500 13px/1 var(--sk-mono); color: var(--sk-violet-deep); }

/* where it sits in a study: four joined steps, "here" in ink */
.sk .pp-pipe { display: grid; grid-template-columns: repeat(4, 1fr); }
.sk .pp-pipe a {
  position: relative; padding: 26px 22px 24px; border: 1px solid var(--sk-hair); border-left-width: 0; background: var(--sk-paper);
  display: flex; flex-direction: column; gap: 6px; transition: background-color .25s var(--sk-e);
}
.sk .pp-pipe a:first-child { border-left-width: 1px; border-radius: var(--sk-r-lg) 0 0 var(--sk-r-lg); }
.sk .pp-pipe a:last-child { border-radius: 0 var(--sk-r-lg) var(--sk-r-lg) 0; }
.sk .pp-pipe a:hover { background: var(--sk-soft); }
.sk .pp-pipe small { font: 400 11px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-sub); }
.sk .pp-pipe b { font-family: var(--sk-display); font-size: 22px; font-weight: 700; color: var(--sk-sub); }
.sk .pp-pipe span { font-size: 14px; color: var(--sk-muted); }
.sk .pp-pipe a.here { background: var(--sk-night); border-color: var(--sk-night); z-index: 1; }
.sk .pp-pipe a.here b { color: var(--sk-cream); }
.sk .pp-pipe a.here span { color: var(--sk-cream-72); }
.sk .pp-pipe a.here small { color: var(--sk-yellow); }

/* what it covers */
.sk .pp-cov { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.sk .pp-cov div {
  display: flex; gap: 14px; align-items: flex-start; padding: 22px; border: 1px solid var(--sk-card-line);
  border-radius: 18px; background: var(--sk-paper); transition: border-color .25s var(--sk-e), transform .35s var(--sk-e-out);
}
.sk .pp-cov div:hover { border-color: var(--sk-ink); transform: translateY(-3px); }
.sk .pp-cov i {
  width: 26px; height: 26px; border-radius: 8px; flex: none; display: grid; place-items: center;
  font-style: normal; font-size: 13px; font-weight: 700; color: var(--sk-violet-ink); background: var(--sk-lavender);
}
.sk .pp-cov b { display: block; font-weight: 600; font-size: 16px; }
.sk .pp-cov span { font-size: 13.5px; color: var(--sk-muted); }

/* questions, answered: sticky title on the left */
.sk .pp-faq { display: grid; grid-template-columns: 1fr 1.6fr; gap: clamp(24px, 4vw, 64px); align-items: start; }
.sk .pp-faq .h2 { position: sticky; top: calc(var(--sk-bar-h) + 24px); }

/* works with: a joined rail of links */
.sk .pp-rail { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--sk-hair); border-radius: 22px; overflow: hidden; }
.sk .pp-rail a { padding: 26px 24px; min-height: 150px; display: flex; flex-direction: column; justify-content: space-between; gap: 6px; transition: background-color .25s var(--sk-e); }
.sk .pp-rail a + a { border-left: 1px solid var(--sk-hair); }
.sk .pp-rail a:hover { background: var(--sk-soft); }
.sk .pp-rail b { font-family: var(--sk-display); font-size: 20px; font-weight: 700; letter-spacing: -.015em; }
.sk .pp-rail span { font: 400 11.5px/1.3 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-sub); }
.sk .pp-rail i { font-style: normal; color: var(--sk-sub); transition: transform .22s var(--sk-e), color .22s var(--sk-e); }
.sk .pp-rail a:hover i { transform: translateX(5px); color: var(--sk-ink); }

/* ===================================================================================================
   4. PLATFORM AND GUIDE SECTIONS (Netlify platform.html, methodology.html, homepage grid and strip)
   =================================================================================================== */
/* capability rows: visual and text alternate */
.sk .capnav { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.sk .capnav a {
  font-size: 14px; padding: 9px 15px; border-radius: var(--sk-pill); border: 1px solid var(--sk-hair-2); color: var(--sk-muted);
  transition: color .2s var(--sk-e), border-color .2s var(--sk-e);
}
.sk .capnav a:hover { color: var(--sk-ink); border-color: var(--sk-ink); }
.sk .cap {
  display: grid; grid-template-columns: 1.25fr 1fr; gap: clamp(24px, 4vw, 64px); align-items: center;
  padding-block: clamp(36px, 5vw, 64px); border-top: 1px solid var(--sk-hair); scroll-margin-top: calc(var(--sk-bar-h) + 18px);
}
.sk .cap:nth-of-type(even) .fpanel { order: 2; }
.sk .cap .fpanel { height: clamp(300px, 32vw, 440px); }
.sk .cap .lbl { font: 400 11px/1.2 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-violet-deep); }
.sk .cap h3 { font-family: var(--sk-display); font-size: clamp(26px, 2.8vw, 36px); font-weight: var(--sk-display-w); letter-spacing: -.025em; line-height: 1.08; margin: 10px 0 12px; }
.sk .cap p { font-size: 17px; line-height: 1.5; color: var(--sk-muted); }
.sk .cap ul { margin-top: 18px; display: flex; flex-direction: column; gap: 10px; }
.sk .cap li { font-size: 15px; display: flex; gap: 10px; align-items: flex-start; }
.sk .cap li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--sk-violet); margin-top: 8px; flex: none; }
.sk .cap .more { display: inline-flex; gap: 6px; margin-top: 22px; font-size: 15px; font-weight: 600; }
.sk .cap .more span { transition: transform .22s var(--sk-e); }
.sk .cap .more:hover span { transform: translateX(4px); }
.sk .cap .sv .card { width: 82%; padding: 24px 26px; }
.sk .cap .sv .ttl { font-size: 22px; }
.sk .cap .sv4 .orbit { scale: .74; }
.sk .cap .cv-tiles { width: 88%; gap: 10px; }
.sk .cap .sv2 .ppl .pp { width: 96px; height: 96px; }
.sk .cap .sv2 .spk .pp { width: 150px; height: 150px; }
.sk .cap .cv-say { font-size: 14px; max-width: 52%; }

/* which method answers your question: a pick list */
.sk .pick { border: 1px solid var(--sk-hair); border-radius: var(--sk-r-xl); overflow: hidden; }
.sk .pick a {
  display: grid; grid-template-columns: 1.4fr 1fr auto; gap: 20px; align-items: center;
  padding: 22px 28px; border-top: 1px solid var(--sk-hair); transition: background-color .2s var(--sk-e);
}
.sk .pick a:first-child { border-top: 0; }
.sk .pick a:hover { background: var(--sk-soft); }
.sk .pick span { font-family: var(--sk-display); font-weight: 600; font-size: clamp(17px, 1.6vw, 21px); letter-spacing: -.012em; }
.sk .pick b { font-weight: 600; color: var(--sk-violet-deep); font-size: 16px; }
.sk .pick i { font-style: normal; color: var(--sk-sub); }

/* glossary */
.sk .gloss { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; }
.sk .gloss div { padding: 20px 0; border-top: 1px solid var(--sk-hair); }
.sk .gloss b { display: block; font-family: var(--sk-display); font-size: 19px; font-weight: 700; margin-bottom: 4px; letter-spacing: -.012em; }
.sk .gloss p { font-size: 15px; color: var(--sk-muted); line-height: 1.5; }

/* platform grid (homepage f5): hairline cells, a stat or a small drawn art at the foot */
.sk .pgrid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
  background: var(--sk-hair); border: 1px solid var(--sk-hair); border-radius: var(--sk-r-lg); overflow: hidden;
}
.sk .pcell { background: var(--sk-paper); padding: 26px; min-height: 420px; display: flex; flex-direction: column; gap: 10px; transition: background-color .24s var(--sk-e); }
.sk .pcell:hover { background: var(--sk-soft); }
.sk .pcell .lbl { font: 400 11px/1.2 var(--sk-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--sk-violet-deep); }
.sk .pcell h3 { font-size: 19px; font-weight: 600; margin-top: 2px; }
.sk .pcell p { color: var(--sk-muted); font-size: 14.5px; }
.sk .pcell .big { margin-top: auto; padding-top: 22px; }
.sk .pcell .big .stat { display: block; font: var(--sk-display-w) 72px/1 var(--sk-display); letter-spacing: -.04em; color: var(--sk-ink); }
.sk .pcell .big span { display: block; font-size: 14px; color: var(--sk-muted); margin-top: 8px; }
.sk .pcell .art {
  position: relative; margin-top: auto; aspect-ratio: 1.66; padding: 16px; border-radius: 12px; overflow: hidden; color: #fff;
  background: radial-gradient(70% 80% at 50% 110%, rgba(180, 35, 90, .32), transparent 70%), var(--sk-scr);
}

/* method cards (homepage f6 strip): icon, name, a line on hover; .scard-row = a static grid, .strip = marquee */
.sk .strip { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent); mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent); }
.sk .strack { display: flex; gap: 12px; width: max-content; padding-right: 12px; animation: sk-marquee 120s linear infinite; }
.sk .strip:hover .strack { animation-play-state: paused; }
@keyframes sk-marquee { to { transform: translateX(-50%); } }
.sk .scard-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.sk .scard {
  position: relative; display: block; flex: none; width: 300px; height: 360px; border-radius: var(--sk-r-xl);
  background: var(--sk-soft); color: var(--sk-ink); transition: background-color .3s var(--sk-e), box-shadow .3s var(--sk-e);
}
.sk .scard-row .scard { width: auto; height: 300px; }
.sk .scard:hover { background: var(--sk-lav-soft); box-shadow: inset 0 0 0 1px var(--sk-violet); }
.sk .scard .mark {
  position: absolute; left: 24px; right: 24px; top: 50%; transform: translateY(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; transition: transform .45s var(--sk-e-out);
}
.sk .scard .mark svg { height: 34px; width: auto; color: var(--sk-violet-deep); }
.sk .scard .mark b { font-family: var(--sk-display); font-size: 22px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; }
.sk .scard .sub {
  position: absolute; left: 30px; right: 30px; top: calc(50% + 46px); text-align: center; font-size: 14px; line-height: 1.45; color: var(--sk-muted);
  opacity: 0; transform: translateY(8px); transition: opacity .3s var(--sk-e), transform .45s var(--sk-e-out);
}
.sk .scard:hover .mark, .sk .scard:focus-visible .mark { transform: translateY(calc(-50% - 22px)); }
.sk .scard:hover .sub, .sk .scard:focus-visible .sub { opacity: 1; transform: none; }
.sk .scard .more { position: absolute; left: 0; right: 0; bottom: 26px; text-align: center; font-size: 15px; font-weight: 600; }
.sk .scard .more i { font-style: normal; display: inline-block; margin-left: 4px; transition: transform .22s var(--sk-e); }
.sk .scard:hover .more i { transform: translateX(4px); }

/* ===================================================================================================
   5. CALL TO ACTION BAND (Netlify f9: "Your next study starts here" with a brief box)
   =================================================================================================== */
.sk .sk-cta { background: var(--sk-lavender); text-align: center; padding-block: clamp(72px, 8vw, 120px) clamp(80px, 9vw, 136px); }
.sk .sk-cta .h1 { margin-inline: auto; max-width: 14ch; font-size: clamp(36px, 4.6vw, 60px); }
.sk .sk-cta .sub2 { margin: 16px auto 0; max-width: 520px; font: 300 15px/1.45 var(--sk-mono); color: var(--sk-violet-ink); }
.sk .prompt {
  width: min(620px, 100%); margin: 36px auto 0; padding: 18px 18px 14px; text-align: left;
  background: var(--sk-paper); border-radius: var(--sk-r-xl); box-shadow: 0 0 0 1px rgba(30, 10, 26, .06), 0 30px 60px -30px rgba(142, 26, 71, .45);
}
.sk .prompt textarea.in {
  display: block; width: 100%; min-height: 88px; padding: 0; border: 0; outline: none; resize: none; background: none;
  font: 400 15px/1.5 var(--sk-font); color: var(--sk-ink);
}
.sk .prompt textarea.in::placeholder { color: var(--sk-sub); }
.sk .prompt .mrow { display: flex; justify-content: space-between; align-items: center; font: 400 11.5px/1 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-muted); }
.sk .prompt .send {
  width: 34px; height: 34px; border: 0; border-radius: 10px; cursor: pointer; display: grid; place-items: center;
  background: var(--sk-ink); color: var(--sk-cream); font-size: 15px; transition: transform .2s var(--sk-e), background-color .2s;
}
.sk .prompt .send:hover { transform: translateY(-2px); background: var(--sk-violet-deep); }
.sk .sk-cta .chips { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 16px; }
.sk .sk-cta .chip {
  display: inline-flex; align-items: center; height: 32px; padding: 0 14px; border: 0; border-radius: var(--sk-pill); cursor: pointer;
  font: 500 13px/1 var(--sk-font); color: var(--sk-ink); background: rgba(255, 255, 255, .7); transition: background-color .18s var(--sk-e);
}
.sk .sk-cta .chip:hover { background: #fff; }
.sk .sk-cta .hero-btns { justify-content: center; margin-top: 28px; }

/* ===================================================================================================
   6. SCREENS (fpanel) AND SHARED VISUAL PARTS
   A screen is a dark, glowing panel that holds one drawn visual. --p (0 -> 1, set by kit.js while the
   page scrolls) drifts the cards into place; it rests at 1, so without kit.js everything sits in place.
   =================================================================================================== */
.sk .fpanel {
  position: relative; border-radius: var(--sk-r-xl); overflow: hidden; display: grid; place-items: center;
  background: var(--sk-scr); color: #fff;
}
.sk .fpanel.glowp {
  --p: 1; isolation: isolate; background: var(--sk-scr);
  box-shadow: 0 0 0 1.5px rgba(232, 70, 111, .85), 0 0 6px 1px rgba(255, 179, 199, .45),
              0 26px 60px -20px rgba(180, 35, 90, .5), 0 0 100px rgba(180, 35, 90, .16);
}
/* the light that travels around the border */
.sk .fpanel.glowp::before {
  content: ""; position: absolute; left: 50%; top: 50%; width: 160%; aspect-ratio: 1; z-index: -2;
  background: conic-gradient(from 0deg, transparent 0 62%, rgba(232, 70, 111, .9) 78%, #fff 84%, rgba(232, 70, 111, .9) 90%, transparent 100%);
  transform: translate(-50%, -50%) rotate(0); animation: sk-spin 7s linear infinite;
}
.sk .fpanel.glowp::after {
  content: ""; position: absolute; inset: 2px; border-radius: inherit; z-index: -1;
  background: radial-gradient(70% 60% at 50% 115%, rgba(180, 35, 90, .5), transparent 65%),
              radial-gradient(50% 40% at 85% -5%, rgba(232, 70, 111, .3), transparent 60%), #160511;
}
/* the "soft" field the method pages use: violet top-left, coral bottom-right, lavender haze */
.sk .fpanel.glowp.soft::after {
  background: radial-gradient(55% 60% at 18% 22%, rgba(180, 35, 90, .55), transparent 70%),
              radial-gradient(50% 55% at 85% 80%, rgba(255, 138, 122, .26), transparent 70%),
              radial-gradient(40% 45% at 80% 12%, rgba(255, 179, 199, .2), transparent 70%), var(--sk-scr);
}
@keyframes sk-spin { to { transform: translate(-50%, -50%) rotate(360deg); } }
.sk .fpanel.glowp:not(.live)::before { animation-play-state: paused; }
.sk .glowp:not(.live) .sv * { animation-play-state: paused !important; }

/* the drawn scene */
.sk .sv { position: relative; width: 100%; height: 100%; font-family: var(--sk-font); color: #fff; }
.sk .sv .card {
  position: absolute; left: 50%; top: 50%; width: 64%; padding: 30px 32px; border-radius: 24px;
  background: var(--sk-card-bg);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .14), 0 40px 80px rgba(20, 4, 15, .55), inset 0 1px 0 rgba(255, 255, 255, .2);
  transform: translate(-50%, calc(-50% + (1 - var(--p)) * 40px));
}
.sk .sv .eyebrow { margin-bottom: 10px; font: 500 11.5px/1.25 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-lavender); }
.sk .sv .ttl { margin-bottom: 22px; font-family: var(--sk-display); font-size: 26px; line-height: 1.2; font-weight: 700; letter-spacing: -.02em; }
.sk .sv .chip {
  position: absolute; z-index: 4; display: inline-flex; align-items: center; gap: 8px; padding: 11px 16px; border-radius: var(--sk-pill);
  font-size: 13.5px; font-weight: 500; white-space: nowrap; color: #fff; background: rgba(42, 11, 34, .96);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .28), 0 16px 36px rgba(20, 4, 15, .5); animation: sk-bob 5s ease-in-out infinite;
}
.sk .sv .chip.ai { background: linear-gradient(90deg, #FFB3C7, #F07B9A); color: #3A0F2C; font-weight: 600; box-shadow: 0 16px 36px rgba(180, 35, 90, .4); }
.sk .sv .chip.ok i {
  width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; flex: none;
  font-size: 11px; font-style: normal; font-weight: 700; color: var(--sk-ok-ink); background: var(--sk-ok);
}
@keyframes sk-bob { 50% { translate: 0 -7px; } }

/* "Sample data" marker: every visual with numbers carries one (owner rule: sample numbers marked) */
.sk .sk-sample {
  position: absolute; z-index: 6; right: 14px; bottom: 12px; padding: 4px 9px; border-radius: var(--sk-pill); pointer-events: none;
  font: 500 10px/1 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .66); background: rgba(0, 0, 0, .4);
}

/* a simple drawn person */
.sk .pp { display: block; position: relative; flex: none; border-radius: 50%; overflow: hidden; background: var(--c, var(--sk-av2)); }
.sk .pp::before { content: ""; position: absolute; left: 33%; top: 22%; width: 34%; height: 34%; border-radius: 50%; background: rgba(255, 255, 255, .92); }
.sk .pp::after { content: ""; position: absolute; left: 16%; right: 16%; top: 62%; height: 70%; border-radius: 50% 50% 0 0; background: rgba(255, 255, 255, .92); }

/* a drawn carton (product stimulus) */
.sk .carton {
  display: block; position: relative; width: 62px; height: 120px; border-radius: 6px 6px 9px 9px; background: var(--c, var(--sk-pack-b));
  clip-path: polygon(0 14%, 22% 0, 78% 0, 100% 14%, 100% 100%, 0 100%);
  box-shadow: inset -12px 0 20px rgba(0, 0, 0, .28), inset 7px 0 12px rgba(255, 255, 255, .2);
}
.sk .carton::before { content: ""; position: absolute; left: 18%; right: 18%; top: 38%; height: 30%; border-radius: 50%; background: rgba(255, 255, 255, .9); }

/* checklist inside a card */
.sk .cv-list { display: flex; flex-direction: column; gap: 9px; }
.sk .cv-list p {
  display: flex; gap: 10px; align-items: center; padding: 11px 14px; border-radius: 12px; font-size: 14.5px;
  background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1);
}
.sk .cv-list p i {
  width: 18px; height: 18px; border-radius: 50%; flex: none; display: grid; place-items: center;
  font-size: 11px; font-style: normal; font-weight: 700; color: var(--sk-ok-ink); background: var(--sk-ok);
}
.sk .cv-list p.todo i { background: transparent; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .45); color: transparent; }

/* speech bubbles on a screen */
.sk .cv-say {
  position: absolute; z-index: 3; right: 6%; top: 10%; max-width: 42%; padding: 16px 18px; border-radius: 20px 20px 20px 6px;
  font-size: 16px; line-height: 1.35; background: #fff; color: var(--sk-ink); box-shadow: 0 20px 44px rgba(20, 4, 15, .5); animation: sk-bob 5s ease-in-out infinite;
}
.sk .cv-say small { display: block; margin-bottom: 5px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-violet-deep); }
.sk .cv-say.l { right: auto; left: 6%; top: auto; bottom: 12%; border-radius: 20px 20px 6px 20px; animation-delay: -2s; }

/* a quote card on a screen */
.sk .sv .quote {
  position: absolute; z-index: 3; right: 4%; bottom: 10%; width: 34%; padding: 16px 18px; border-radius: 20px;
  background: #fff; color: var(--sk-ink); font-size: 15px; line-height: 1.4; box-shadow: 0 20px 44px rgba(20, 4, 15, .5);
  animation: sk-bob 5s ease-in-out infinite; animation-delay: -1.5s;
}
.sk .sv .quote p { display: flex; align-items: center; gap: 8px; margin-top: 10px; font-size: 12px; color: var(--sk-muted); }
.sk .sv .quote .pp { width: 28px; height: 28px; }

/* ===================================================================================================
   7. VISUALS FROM THE NETLIFY PAGES (sv1-sv4 = homepage rows, cv-* = method and capability pages)
   =================================================================================================== */
/* sv1: a survey question with three packs; the pick moves between them */
.sk .sv1 .opts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.sk .sv1 .opt {
  border-radius: 16px; padding: 18px 10px 14px; display: flex; flex-direction: column; align-items: center; gap: 12px; font-size: 14px;
  background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12);
  animation: sk-pick 9s ease-in-out infinite; animation-delay: calc(var(--n, 0) * 3s);
}
@keyframes sk-pick {
  0%, 3% { background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
  8%, 30% { background: rgba(232, 70, 111, .2); box-shadow: inset 0 0 0 2px #E8466F, 0 0 30px rgba(232, 70, 111, .45); }
  35%, 100% { background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
}
.sk .sv1 .c1 { right: 5%; top: 12%; }
.sk .sv1 .c2 { left: 6%; bottom: 11%; animation-delay: -2.5s; }

/* sv2: three people, one speaking, the moderator's question in a bubble */
.sk .sv2 .ppl { position: absolute; left: 0; right: 0; top: 50%; display: flex; justify-content: center; align-items: center; gap: 30px; transform: translateY(calc(-42% + (1 - var(--p)) * 40px)); }
.sk .sv2 .ppl .pp { width: 140px; height: 140px; opacity: .75; }
.sk .sv2 .spk { position: relative; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.sk .sv2 .spk .pp { width: 210px; height: 210px; opacity: 1; box-shadow: 0 0 0 4px rgba(255, 255, 255, .9), 0 0 0 0 rgba(255, 255, 255, .5); animation: sk-ring 2.2s ease-out infinite; }
@keyframes sk-ring { to { box-shadow: 0 0 0 4px rgba(255, 255, 255, .9), 0 0 0 34px rgba(255, 255, 255, 0); } }
.sk .sv2 .wave { display: flex; align-items: center; gap: 4px; height: 34px; }
.sk .sv2 .wave i { width: 5px; height: 100%; border-radius: 3px; background: #fff; transform: scaleY(.2); animation: sk-wave 1.1s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -137ms); }
@keyframes sk-wave { 50% { transform: scaleY(1); } }
.sk .sv2 .say {
  position: absolute; right: 7%; top: 11%; max-width: 40%; padding: 16px 18px; border-radius: 20px 20px 20px 6px;
  font-size: 16px; line-height: 1.35; background: #fff; color: var(--sk-ink); box-shadow: 0 20px 44px rgba(20, 4, 15, .5); animation: sk-bob 5s ease-in-out infinite;
}
.sk .sv2 .say small { display: block; margin-bottom: 5px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-violet-deep); }
.sk .sv2 .c1 { left: 6%; bottom: 10%; animation-delay: -2s; }

/* sv3: labelled bars (themes, shares, quotas), optional quote card */
.sk .sv3 .row { display: grid; grid-template-columns: 1fr 64px; align-items: center; gap: 6px 14px; margin-top: 16px; }
.sk .sv3 .row span { font-size: 15px; grid-column: 1 / -1; }
.sk .sv3 .row i { display: block; height: 16px; border-radius: 8px; background: var(--sk-scr-track); overflow: hidden; }
.sk .sv3 .row i u { display: block; height: 100%; border-radius: 8px; background: var(--sk-bar); transform-origin: 0 50%; transform: scaleX(calc(.25 + var(--p) * .75)); }
.sk .sv3 .row.win i u { background: var(--sk-bar-win); box-shadow: 0 0 14px rgba(232, 70, 111, .6); }
.sk .sv3 .row b { font-family: var(--sk-display); font-size: 24px; font-weight: 700; text-align: right; letter-spacing: -.02em; }
.sk .sv3 .cut {
  position: relative; margin-top: 18px; padding-top: 2px; border-top: 1.5px dashed rgba(246, 201, 142, .75);
  font: 500 10.5px/1 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-yellow);
}
.sk .sv3 .cut span { position: relative; top: -9px; padding-right: 8px; background: #2A0B22; }
.sk .sv3 .card { left: 38%; width: 56%; }   /* leaves room for the quote card on the right */
.sk .sv3 .card.mid { left: 50%; }
.sk .sv3 .card.compact .row { margin-top: 10px; }
.sk .sv3 .card.compact .row b { font-size: 20px; }
.sk .sv3 .card.compact .ttl { margin-bottom: 12px; }
.sk .sv3 .c1 { right: 7%; top: 12%; }

/* sv4: the panel as people orbiting the PocketsFull mark */
.sk .sv4 .orbit { position: absolute; left: 50%; top: 50%; width: 460px; height: 460px; margin: -230px 0 0 -230px; transform: translateY(calc((1 - var(--p)) * 40px)); }
.sk .sv4 .ringl { position: absolute; inset: 0; border-radius: 50%; border: 1.5px dashed rgba(255, 255, 255, .28); }
.sk .sv4 .ringl.in { inset: 22%; }
.sk .sv4 .spin { position: absolute; inset: 0; animation: sk-turn 48s linear infinite; }
.sk .sv4 .spin.rev { inset: 22%; animation-duration: 36s; animation-direction: reverse; }
@keyframes sk-turn { to { transform: rotate(360deg); } }
.sk .sv4 .spin .pp { position: absolute; width: 64px; height: 64px; margin: -32px 0 0 -32px; box-shadow: 0 0 0 3px rgba(255, 255, 255, .9), 0 10px 24px rgba(20, 4, 15, .5); animation: sk-turn 48s linear infinite reverse; }
.sk .sv4 .spin.rev .pp { width: 48px; height: 48px; margin: -24px 0 0 -24px; animation-duration: 36s; animation-direction: normal; }
.sk .sv4 .hub {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); padding: 16px 22px; border-radius: 20px;
  background: rgba(20, 4, 15, .95); box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .3), 0 0 50px rgba(232, 70, 111, .6);
}
.sk .sv4 .hub img { display: block; height: 34px; width: auto; }
.sk .sv4 .c1 { left: 5%; top: 14%; }
.sk .sv4 .c2 { right: 5%; top: 22%; animation-delay: -2s; }
.sk .sv4 .c3 { left: 8%; bottom: 12%; animation-delay: -3.2s; }

/* cv-score: three concept cards, the winner lit */
.sk .cv-score {
  position: absolute; left: 50%; top: 50%; width: min(84%, 900px); display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
  transform: translate(-50%, calc(-50% + (1 - var(--p)) * 30px));
}
.sk .cv-score .c {
  border-radius: 20px; padding: 20px; display: flex; flex-direction: column; align-items: center; gap: 12px; background: var(--sk-card-bg);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .14), 0 30px 60px rgba(20, 4, 15, .5);
}
.sk .cv-score .c.win { box-shadow: 0 0 0 2px #E8466F, 0 0 40px rgba(232, 70, 111, .55), 0 30px 60px rgba(20, 4, 15, .5); }
.sk .cv-score .c b { font-family: var(--sk-display); font-size: clamp(28px, 3.4vw, 46px); font-weight: 700; letter-spacing: -.03em; }
.sk .cv-score .c small { font-size: 12.5px; color: var(--sk-scr-60); }
.sk .cv-score .c em {
  font-style: normal; padding: 4px 10px; border-radius: 99px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase;
  color: var(--sk-ok-ink); background: var(--sk-ok);
}
.sk .cv-score .bar { width: 100%; height: 8px; border-radius: 4px; background: var(--sk-scr-track); overflow: hidden; }
.sk .cv-score .bar u { display: block; height: 100%; border-radius: 4px; background: var(--sk-bar); transform-origin: 0 50%; transform: scaleX(calc(.2 + var(--p) * .8)); }
.sk .cv-score .c.win .bar u { background: var(--sk-bar-win); }

/* cv-stim: what you can test */
.sk .cv-stim { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.sk .cv-stim div {
  aspect-ratio: .8; border-radius: 14px; display: grid; place-items: center; font-size: 13px; color: #fff;
  background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12);
  animation: sk-pick 12s ease-in-out infinite; animation-delay: calc(var(--n, 0) * 3s);
}
.sk .cv-stim svg { width: 46%; height: auto; margin-bottom: 8px; color: var(--sk-lavender); }
.sk .cv-stim span { display: flex; flex-direction: column; align-items: center; }

/* cv-metrics: scorecard A / B / C */
.sk .cv-metrics .mrow2 { display: grid; grid-template-columns: 130px 1fr 1fr 1fr; gap: 10px; align-items: center; margin-top: 12px; font-size: 13.5px; color: var(--sk-scr-60); }
.sk .cv-metrics .mrow2.h { color: #fff; font: 500 11px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; }
.sk .cv-metrics .mrow2 i { display: block; height: 10px; border-radius: 5px; background: var(--sk-scr-track); overflow: hidden; }
.sk .cv-metrics .mrow2 i u { display: block; height: 100%; border-radius: 5px; background: rgba(255, 255, 255, .35); transform-origin: 0 50%; transform: scaleX(calc(.2 + var(--p) * .8)); }
.sk .cv-metrics .mrow2 i.w u { background: var(--sk-bar-win); }

/* cv-vw: Van Westendorp price lines */
.sk .cv-vw svg { width: 100%; height: auto; max-height: 210px; display: block; }
.sk .cv-vw path { fill: none; stroke-width: 2.4; stroke-linecap: round; }
.sk .cv-vw .k, .sk .cv-trend .k { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: var(--sk-scr-60); }
.sk .cv-vw .k i, .sk .cv-trend .k i { display: inline-block; width: 10px; height: 3px; border-radius: 2px; margin-right: 6px; vertical-align: middle; }

/* cv-md: MaxDiff task, most and least */
.sk .cv-md p:not(.eyebrow):not(.ttl) {
  display: grid; grid-template-columns: 34px 1fr 34px; gap: 10px; align-items: center; margin-top: 6px; padding: 5px 10px; border-radius: 12px;
  font-size: 14px; text-align: center; background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1);
}
.sk .cv-md p i { width: 22px; height: 22px; border-radius: 50%; justify-self: center; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .3); }
.sk .cv-md p i.b { background: var(--sk-violet); box-shadow: 0 0 14px rgba(232, 70, 111, .8); }
.sk .cv-md p i.w { background: var(--sk-coral); box-shadow: 0 0 14px rgba(255, 138, 122, .6); }
.sk .cv-md .hd { margin-top: 0; padding-block: 0; background: none; box-shadow: none; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-scr-60); }

/* cv-cj: conjoint choice task */
.sk .cv-cj { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.sk .cv-cj div {
  border-radius: 16px; padding: 16px; display: flex; flex-direction: column; gap: 8px; font-size: 14px;
  background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); animation: sk-pick 8s ease-in-out infinite;
}
.sk .cv-cj div + div { animation-delay: -4s; }
.sk .cv-cj b { font-family: var(--sk-display); font-size: 22px; font-weight: 700; letter-spacing: -.02em; }
.sk .cv-cj span { color: var(--sk-scr-60); display: flex; justify-content: space-between; gap: 8px; }
.sk .cv-cj span u { text-decoration: none; color: #fff; text-align: right; }

/* cv-seg: segments as clusters of dots */
.sk .cv-seg { position: absolute; inset: 8% 6%; transform: translateY(calc((1 - var(--p)) * 30px)); }
.sk .cv-seg svg { width: 100%; height: 100%; }
.sk .cv-seg text { fill: #fff; font: 700 15px var(--sk-display); }
.sk .cv-seg text.s { fill: rgba(255, 255, 255, .64); font: 400 11px var(--sk-font); }
.sk .cv-seg g circle { animation: sk-bob2 5s ease-in-out infinite; }
@keyframes sk-bob2 { 50% { transform: translateY(-4px); } }

/* cv-trend: tracker lines */
.sk .cv-trend svg { width: 100%; height: auto; max-height: 190px; display: block; margin-top: 8px; }

/* cv-ad: a video frame with an attention trace */
.sk .cv-ad { position: relative; border-radius: 14px; aspect-ratio: 1.9; overflow: hidden; background: linear-gradient(135deg, #4A1238, #B4235A 58%, #FF8A7A); }
.sk .cv-ad::after { content: ""; position: absolute; left: 50%; top: 50%; border: 16px solid transparent; border-left: 26px solid rgba(255, 255, 255, .92); transform: translate(-30%, -50%); }
.sk .cv-ad svg { position: absolute; inset: auto 0 0 0; width: 100%; height: 46%; }

/* cv-shelf: find it on the shelf */
.sk .cv-shelf { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; align-items: end; padding: 14px 14px 0; border-bottom: 4px solid rgba(255, 255, 255, .25); }
.sk .cv-shelf .carton { width: 100%; height: 110px; opacity: .55; }
.sk .cv-shelf .carton.hit { opacity: 1; filter: drop-shadow(0 0 16px rgba(232, 70, 111, .9)); }

/* cv-tiles: a grid of video answers */
.sk .cv-tiles {
  position: absolute; left: 50%; top: 50%; width: 80%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
  transform: translate(-50%, calc(-50% + (1 - var(--p)) * 30px));
}
.sk .cv-tiles div { position: relative; aspect-ratio: 1; border-radius: 18px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); }
.sk .cv-tiles .pp { width: 56%; aspect-ratio: 1; }
.sk .cv-tiles em { position: absolute; left: 8px; top: 8px; padding: 2px 7px; border-radius: 99px; font: 500 10px/1.4 var(--sk-mono); font-style: normal; background: rgba(0, 0, 0, .55); }
.sk .cv-tiles em::before { content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--sk-coral); margin-right: 4px; vertical-align: 1px; }
.sk .cv-tiles div:nth-child(3n+1) { animation: sk-pick 9s ease-in-out infinite; }
.sk .cv-tiles div:nth-child(3n+2) { animation: sk-pick 9s ease-in-out -3s infinite; }
.sk .cv-tiles div:nth-child(3n) { animation: sk-pick 9s ease-in-out -6s infinite; }

/* cv-ask: a question to the study and its answer with evidence */
.sk .cv-ask .askq { margin-bottom: 12px; padding: 12px 14px; border-radius: 14px; font: 600 20px/1.25 var(--sk-display); letter-spacing: -.012em; background: rgba(232, 70, 111, .2); box-shadow: inset 0 0 0 1px rgba(232, 70, 111, .55); }
.sk .cv-ask .aska { font-size: 14.5px; line-height: 1.5; color: rgba(255, 255, 255, .82); }
.sk .cv-ask .aska b { color: var(--sk-yellow); font-weight: 600; }
.sk .asks { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.sk .asks span { padding: 5px 10px; border-radius: 99px; font: 500 11px/1.3 var(--sk-mono); color: #fff; background: rgba(255, 255, 255, .07); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); }

/* cv-cloud: word cloud */
.sk .cv-cloud { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; justify-content: center; padding: 8px 0; line-height: 1.05; font-family: var(--sk-display); font-weight: 700; letter-spacing: -.02em; }
.sk .cv-cloud span { animation: sk-bob2 5s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -400ms); }

/* mini drawn arts for the platform grid (homepage f5) */
.sk .cv-ppl { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; align-content: center; justify-items: center; }
.sk .cv-ppl .pp { width: 100%; max-width: 54px; aspect-ratio: 1; animation: sk-bob2 4s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -410ms); }
.sk .cv-ppl .pp.ok { outline: 2px solid var(--sk-yellow); outline-offset: 2px; }
.sk .cv-col { display: flex; flex-direction: column; gap: 9px; justify-content: center; }
.sk .cv-col .q { padding: 10px 12px; border-radius: 10px; font-size: 13px; background: rgba(255, 255, 255, .06); border-left: 2px solid var(--sk-lavender); }
.sk .cv-col .c { display: flex; gap: 8px; align-items: center; max-width: 88%; font-size: 12px; color: var(--sk-scr-60); }
.sk .cv-col .c.r { margin-left: auto; }
.sk .cv-col .c .pp { width: 22px; height: 22px; }
.sk .cv-col .c span { padding: 7px 10px; border-radius: 12px; background: rgba(255, 255, 255, .08); }
.sk .cv-col .c b { color: #fff; font-weight: 600; }
.sk .cv-dash { padding: 0 !important; }
.sk .cv-dash svg { position: absolute; inset: 18% 0 0 0; width: 100%; height: 82%; }
.sk .cv-dash .live { position: absolute; left: 14px; top: 12px; display: flex; align-items: center; gap: 6px; font: 500 11px/1 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; }
.sk .cv-dash .live i { width: 7px; height: 7px; border-radius: 50%; background: var(--sk-yellow); animation: sk-blink 1.4s ease-in-out infinite; }
@keyframes sk-blink { 50% { opacity: .25; } }
.sk .cv-dash .dot { position: absolute; right: 2px; top: calc(18% + 82% * .2 - 5px); width: 10px; height: 10px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 0 rgba(255, 179, 199, .7); animation: sk-cvping 1.8s ease-out infinite; }
@keyframes sk-cvping { to { box-shadow: 0 0 0 16px rgba(255, 179, 199, 0); } }

/* the offices map (homepage f7): dotted world, three offices, travelling arcs */
.sk .sk-map { position: absolute; inset: 9% 5% 7%; display: flex; flex-direction: column; }
.sk .sk-map .lbl { font: 500 11px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-scr-60); }
.sk .sk-map svg { flex: 1; width: 100%; min-height: 0; margin-top: 8px; }
.sk .sk-map .land { fill: rgba(243, 163, 186, .3); }
.sk .sk-map .arc { fill: none; stroke: var(--sk-violet); stroke-width: 1.3; stroke-dasharray: 3 5; opacity: .85; animation: sk-dash 1.6s linear infinite; }
@keyframes sk-dash { to { stroke-dashoffset: -16; } }
.sk .sk-map .trav { fill: #fff; filter: drop-shadow(0 0 5px #E8466F); }
.sk .sk-map .pin { fill: var(--sk-yellow); }
.sk .sk-map .ping { fill: none; stroke: var(--sk-yellow); stroke-width: 1.5; transform-box: fill-box; transform-origin: center; animation: sk-ping 2.4s ease-out infinite; }
@keyframes sk-ping { 0% { opacity: .9; transform: scale(1); } 100% { opacity: 0; transform: scale(4); } }
.sk .sk-map text { fill: #fff; font: 700 15px var(--sk-display); }
.sk .sk-map text.r { fill: rgba(255, 255, 255, .6); font: 400 10.5px var(--sk-font); }

/* ===================================================================================================
   8. NEW VISUALS IN THE SAME STYLE (for pages the Netlify site never drew; see ANALYSIS.md)
   =================================================================================================== */
/* cv-funnel: brand funnel, you against a competitor (centred bars narrow like a funnel) */
.sk .cv-funnel .fn { display: grid; grid-template-columns: 118px 1fr 48px 52px; gap: 12px; align-items: center; margin-top: 10px; font-size: 13.5px; color: var(--sk-scr-72); }
.sk .cv-funnel .fn.h { margin-top: 0; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-scr-60); }
.sk .cv-funnel .fn i { display: flex; justify-content: center; height: 22px; border-radius: 6px; background: rgba(255, 255, 255, .04); }
.sk .cv-funnel .fn i u { display: block; width: var(--w, 50%); height: 100%; border-radius: 6px; background: var(--sk-bar); transform: scaleX(calc(.3 + var(--p) * .7)); }
.sk .cv-funnel .fn.drop i u { background: var(--sk-bar-win); box-shadow: 0 0 16px rgba(232, 70, 111, .6); }
.sk .cv-funnel .fn b { font: 700 17px var(--sk-display); color: #fff; text-align: right; }
.sk .cv-funnel .fn em { font-style: normal; font-size: 13px; color: var(--sk-scr-60); text-align: right; }

/* cv-nps: score, the three groups, the 0-10 spread */
.sk .cv-nps .top { display: flex; align-items: flex-end; gap: 16px; }
.sk .cv-nps .top b { font: 800 64px/0.9 var(--sk-display); letter-spacing: -.04em; }
.sk .cv-nps .top span { padding-bottom: 6px; font-size: 13px; color: var(--sk-scr-60); }
.sk .cv-nps .grp { display: flex; gap: 3px; height: 14px; margin-top: 18px; border-radius: 99px; overflow: hidden; }
.sk .cv-nps .grp i { display: block; flex: var(--f, 1); }
.sk .cv-nps .cols { display: grid; grid-template-columns: repeat(11, 1fr); gap: 5px; align-items: end; height: 110px; margin-top: 18px; }
.sk .cv-nps .cols i { display: block; height: calc(var(--h, 10) * 1%); min-height: 3px; border-radius: 4px 4px 0 0; background: var(--c, var(--sk-neutral)); transform-origin: 50% 100%; transform: scaleY(calc(.3 + var(--p) * .7)); }
.sk .cv-nps .ax { display: grid; grid-template-columns: repeat(11, 1fr); gap: 5px; margin-top: 6px; font: 400 10px/1 var(--sk-mono); color: var(--sk-scr-60); text-align: center; }
.sk .cv-nps .key, .sk .cv-turf .key, .sk .cv-opp .key { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 14px; font-size: 12px; color: var(--sk-scr-60); }
.sk .cv-nps .key i, .sk .cv-turf .key i, .sk .cv-opp .key i { display: inline-block; width: 9px; height: 9px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }

/* cv-turf: reach as a line-up grows */
.sk .cv-turf .tr { display: grid; grid-template-columns: 1fr 52px; gap: 6px 14px; align-items: center; margin-top: 14px; }
.sk .cv-turf .tr span { grid-column: 1 / -1; font-size: 14.5px; }
.sk .cv-turf .tr span small { color: var(--sk-scr-60); font-size: 12.5px; }
.sk .cv-turf .tr i { display: flex; height: 16px; border-radius: 8px; overflow: hidden; background: var(--sk-scr-track); }
.sk .cv-turf .tr i u { display: block; width: var(--a, 0%); background: rgba(232, 70, 111, .55); }
.sk .cv-turf .tr i s { display: block; width: var(--b, 0%); text-decoration: none; background: var(--sk-yellow); }
.sk .cv-turf .tr b { font: 700 22px var(--sk-display); text-align: right; letter-spacing: -.02em; }

/* cv-heat: a poster with click heat, and the areas table */
.sk .cv-heat { display: grid; grid-template-columns: auto 1fr; gap: 22px; align-items: center; }
.sk .cv-heat .poster {
  position: relative; height: clamp(170px, 19vw, 270px); aspect-ratio: 3 / 4; border-radius: 12px; overflow: hidden;
  background: linear-gradient(170deg, #FCEFDC 0%, #FCD9B8 55%, #F7B48A 100%); box-shadow: 0 0 0 1px rgba(255, 255, 255, .2);
}
.sk .cv-heat .poster .hl { position: absolute; left: 10%; right: 18%; top: 10%; height: 9%; border-radius: 4px; background: #4A1238; }
.sk .cv-heat .poster .hl2 { position: absolute; left: 10%; right: 38%; top: 22%; height: 5%; border-radius: 3px; background: rgba(74, 18, 56, .55); }
.sk .cv-heat .poster .prod { position: absolute; left: 34%; bottom: 14%; width: 32%; height: 40%; border-radius: 8px 8px 12px 12px; background: var(--sk-pack-b); clip-path: polygon(0 14%, 22% 0, 78% 0, 100% 14%, 100% 100%, 0 100%); }
.sk .cv-heat .poster .logo { position: absolute; right: 8%; bottom: 6%; width: 16%; aspect-ratio: 1; border-radius: 50%; background: #4A1238; }
.sk .cv-heat .blob {
  position: absolute; left: var(--x); top: var(--y); width: var(--s, 30%); aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; mix-blend-mode: multiply;
  background: radial-gradient(circle, rgba(230, 60, 50, .9) 0%, rgba(244, 160, 115, .7) 30%, rgba(246, 201, 142, .45) 55%, rgba(232, 70, 111, 0) 72%);
}
.sk .cv-heat .area { position: absolute; left: var(--x); top: var(--y); width: var(--w); height: var(--h); border: 1.5px solid #fff; border-radius: 6px; background: rgba(255, 255, 255, .12); }
.sk .cv-heat .area b { position: absolute; left: -9px; top: -9px; width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; font: 700 10px var(--sk-font); color: var(--sk-ink); background: #fff; }
.sk .cv-heat table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.sk .cv-heat th { padding: 0 0 8px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-scr-60); text-align: left; }
.sk .cv-heat td { padding: 9px 0; border-top: 1px solid var(--sk-scr-line); }
.sk .cv-heat td + td, .sk .cv-heat th + th { text-align: right; }
.sk .cv-heat td b { display: inline-grid; place-items: center; width: 18px; height: 18px; margin-right: 8px; border-radius: 50%; font: 700 10px var(--sk-font); color: var(--sk-ink); background: #fff; }

/* cv-audio: an audio ad player, then recall bars */
.sk .cv-audio .player { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border-radius: 16px; background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.sk .cv-audio .play { width: 38px; height: 38px; flex: none; border-radius: 50%; background: #fff; position: relative; }
.sk .cv-audio .play::after { content: ""; position: absolute; left: 15px; top: 11px; border: 8px solid transparent; border-left: 12px solid var(--sk-ink); }
.sk .cv-audio .wf { flex: 1; display: flex; align-items: center; gap: 3px; height: 40px; }
.sk .cv-audio .wf i { flex: 1; height: calc(var(--h, 50) * 1%); border-radius: 2px; background: rgba(255, 255, 255, .3); }
.sk .cv-audio .wf i.on { background: var(--sk-violet); }
.sk .cv-audio .t { font: 500 11.5px/1 var(--sk-mono); color: var(--sk-scr-60); }

/* cv-feed: a phone with a social feed, one sponsored post lit */
.sk .cv-feed { position: absolute; left: 12%; top: 50%; width: 30%; max-width: 250px; aspect-ratio: 9 / 18.5; transform: translateY(calc(-50% + (1 - var(--p)) * 30px)); padding: 10px; border-radius: 30px; background: #10030C; box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .2), 0 40px 80px rgba(20, 4, 15, .6); }
.sk .cv-feed .scr { height: 100%; border-radius: 22px; overflow: hidden; padding: 10px; display: flex; flex-direction: column; gap: 10px; background: #1E0A1A; }
.sk .cv-feed .post { padding: 9px; border-radius: 12px; background: rgba(255, 255, 255, .05); }
.sk .cv-feed .post .who { display: flex; align-items: center; gap: 7px; margin-bottom: 8px; }
.sk .cv-feed .post .who .pp { width: 18px; height: 18px; }
.sk .cv-feed .post .who i { display: block; height: 6px; width: 46%; border-radius: 3px; background: rgba(255, 255, 255, .3); }
.sk .cv-feed .post .img { aspect-ratio: 1.3; border-radius: 8px; background: linear-gradient(135deg, #3A1A30, #4F2242); }
.sk .cv-feed .post.ad { box-shadow: 0 0 0 2px var(--sk-violet), 0 0 26px rgba(232, 70, 111, .55); }
.sk .cv-feed .post.ad .img { background: linear-gradient(135deg, #4A1238, #B4235A 55%, #FF8A7A); }
.sk .cv-feed .post.ad small { display: block; margin-top: 6px; font: 500 9px/1 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-scr-60); }
.sk .sv .card.cv-feed-side { left: auto; right: 5%; width: 46%; padding: 24px 26px; transform: translateY(calc(-50% + (1 - var(--p)) * 40px)); }

/* cv-opts: options side by side (names, slogans, messages, ideas) */
.sk .cv-opts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.sk .cv-opts div { padding: 16px; border-radius: 16px; display: flex; flex-direction: column; gap: 10px; background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.sk .cv-opts div.win { background: rgba(232, 70, 111, .16); box-shadow: inset 0 0 0 2px var(--sk-violet), 0 0 30px rgba(232, 70, 111, .4); }
.sk .cv-opts b { font: 700 22px/1.1 var(--sk-display); letter-spacing: -.02em; }
.sk .cv-opts b.serif { font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-style: italic; }
.sk .cv-opts span { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--sk-scr-60); }
.sk .cv-opts span em { font-style: normal; color: #fff; font-weight: 600; }
.sk .cv-opts i { display: block; height: 6px; border-radius: 3px; background: var(--sk-scr-track); overflow: hidden; }
.sk .cv-opts i u { display: block; height: 100%; width: var(--w, 50%); border-radius: 3px; background: var(--sk-bar); }
.sk .cv-opts div.win i u { background: var(--sk-bar-win); }

/* cv-journey and cv-opp: small SVG charts on a card */
.sk .cv-journey svg, .sk .cv-opp svg, .sk .cv-size svg { display: block; width: 100%; height: auto; }
.sk .cv-journey .ln { fill: none; stroke: var(--sk-violet); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.sk .cv-journey .area { fill: rgba(232, 70, 111, .18); }
.sk .cv-journey .ax { stroke: rgba(255, 255, 255, .14); }
.sk .cv-journey .dot { fill: #fff; }
.sk .cv-journey .pain { fill: var(--sk-coral); }
.sk .cv-journey .ring { fill: none; stroke: var(--sk-coral); stroke-width: 1.5; transform-box: fill-box; transform-origin: center; animation: sk-ping 2.4s ease-out infinite; }
.sk .cv-journey text, .sk .cv-opp text { fill: rgba(255, 255, 255, .72); font: 400 11px var(--sk-font); }
.sk .cv-journey text.b, .sk .cv-opp text.b { fill: #fff; font: 600 12px var(--sk-font); }
.sk .cv-opp .ax { stroke: rgba(255, 255, 255, .22); }
.sk .cv-opp .q { fill: rgba(255, 138, 122, .12); }
.sk .cv-opp .d { fill: var(--sk-violet); }
.sk .cv-opp .d.hot { fill: var(--sk-coral); }
.sk .cv-opp .d.ok { fill: var(--sk-lavender); }

/* cv-size: market sizing steps */
.sk .cv-size .st { display: grid; grid-template-columns: 1fr 56px; gap: 4px 14px; align-items: center; margin-top: 9px; }
.sk .cv-size .st span { grid-column: 1 / -1; font-size: 14px; color: var(--sk-scr-72); }
.sk .cv-size .st i { display: block; height: 14px; border-radius: 5px; background: var(--sk-scr-track); overflow: hidden; }
.sk .cv-size .st i u { display: block; width: var(--w, 50%); height: 100%; background: var(--sk-bar); transform-origin: 0 50%; transform: scaleX(calc(.3 + var(--p) * .7)); }
.sk .cv-size .st.res i u { background: var(--sk-yellow); }
.sk .cv-size .st b { font: 700 18px var(--sk-display); text-align: right; }
.sk .cv-size .eq { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; margin-top: 12px; font: 500 10.5px/1 var(--sk-mono); letter-spacing: .04em; color: var(--sk-scr-60); }
.sk .cv-size .eq span { padding: 5px 8px; border-radius: 99px; color: #fff; background: rgba(255, 255, 255, .08); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); }

/* cv-files: the downloads a study gives you */
.sk .cv-files { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.sk .cv-files div {
  position: relative; padding: 16px 14px 14px; border-radius: 14px; display: flex; flex-direction: column; gap: 10px;
  background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12);
}
.sk .cv-files .doc { position: relative; width: 38px; height: 46px; border-radius: 5px; background: var(--c, var(--sk-violet)); clip-path: polygon(0 0, 70% 0, 100% 24%, 100% 100%, 0 100%); }
.sk .cv-files .doc::after { content: attr(data-x); position: absolute; left: 4px; right: 4px; bottom: 6px; font: 700 8.5px/1 var(--sk-mono); color: var(--sk-ink); text-align: center; }
.sk .cv-files b { font-size: 14px; font-weight: 600; }
.sk .cv-files small { font-size: 11.5px; color: var(--sk-scr-60); }
.sk .cv-files div.later { opacity: .5; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .2); background: none; border: 1px dashed rgba(255, 255, 255, .3); }

/* m1: the survey builder window (CSS from the Netlify site; its markup was never published there) */
.sk .m1 { position: relative; width: 100%; height: 100%; transform: scale(.9); font-family: var(--sk-font); color: #fff; }
.sk .m1 .g {
  position: absolute; border-radius: 16px; background: linear-gradient(180deg, rgba(90, 22, 66, .72), rgba(36, 9, 31, .9) 55%, rgba(20, 4, 15, .95));
  box-shadow: 0 0 0 1px rgba(232, 70, 111, .55), 0 0 26px rgba(180, 35, 90, .35), 0 30px 60px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .22);
}
.sk .m1 .win { left: 6%; top: 9%; width: 66%; height: 82%; overflow: hidden; transform: translateY(calc((1 - var(--p)) * 44px)) scale(calc(.955 + var(--p) * .045)); transform-origin: 50% 100%; }
.sk .m1 .bar { height: 38px; display: flex; align-items: center; gap: 6px; padding: 0 14px; border-bottom: 1px solid rgba(255, 255, 255, .08); font-size: 12px; color: var(--sk-scr-60); }
.sk .m1 .bar i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255, 255, 255, .18); }
.sk .m1 .bar b { margin-left: 10px; font-weight: 600; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sk .m1 .bar em { margin-left: auto; padding: 3px 9px; border-radius: 99px; font: 500 10.5px/1.3 var(--sk-mono); font-style: normal; color: var(--sk-ok-ink); background: var(--sk-ok); }
.sk .m1 .body { display: grid; grid-template-columns: 150px 1fr; height: calc(100% - 38px); }
.sk .m1 .side { display: flex; flex-direction: column; gap: 6px; padding: 14px 10px; border-right: 1px solid rgba(255, 255, 255, .08); font-size: 11.5px; color: var(--sk-scr-60); }
.sk .m1 .side span { padding: 7px 9px; border-radius: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sk .m1 .side span.on { background: rgba(232, 70, 111, .22); color: #fff; box-shadow: inset 0 0 0 1px rgba(232, 70, 111, .6); }
.sk .m1 .side small { margin: 6px 9px 2px; font: 500 9.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .4); }
.sk .m1 .main { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding: 20px 22px; }
.sk .m1 .qn { font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--sk-lavender); }
.sk .m1 .qt { font: 700 19px/1.25 var(--sk-display); letter-spacing: -.015em; }
.sk .m1 .packs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; flex: 1; min-height: 0; }
.sk .m1 .pack { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 10px; padding: 14px 8px 10px; border-radius: 12px; font-size: 11.5px; color: var(--sk-scr-72); background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1); }
.sk .m1 .pack.sel { color: #fff; background: rgba(232, 70, 111, .16); box-shadow: inset 0 0 0 1.5px var(--sk-violet), 0 0 22px rgba(180, 35, 90, .45); }
.sk .m1 .carton { width: 46%; height: auto; flex: 1; max-height: 150px; }
.sk .m1 .foot { display: flex; flex-wrap: wrap; gap: 8px; font-size: 11px; color: var(--sk-scr-60); }
.sk .m1 .foot span { padding: 5px 10px; border-radius: 99px; background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1); }
.sk .m1 .quota { right: 3%; top: 14%; width: 28%; padding: 14px; transform: translateY(calc((1 - var(--p)) * 80px)); }
.sk .m1 .rev { right: 4%; top: 50%; width: 31%; padding: 12px 14px; display: flex; gap: 10px; align-items: center; transform: translateY(calc((1 - var(--p)) * 120px)); }
.sk .m1 .lb { margin-bottom: 9px; font: 500 9.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .5); }
.sk .m1 .qr { display: flex; align-items: center; gap: 8px; margin-top: 7px; font-size: 11px; color: var(--sk-scr-72); }
.sk .m1 .qr b { flex: 0 0 58px; font-weight: 400; }
.sk .m1 .qr i { flex: 1; display: block; height: 5px; border-radius: 3px; background: var(--sk-scr-track); overflow: hidden; }
.sk .m1 .qr i u { display: block; height: 100%; border-radius: 3px; background: var(--sk-bar); transform-origin: 0 50%; transform: scaleX(calc(.45 + var(--p) * .55)); }
.sk .m1 .av { width: 30px; height: 30px; flex: none; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; color: var(--sk-ink); background: var(--sk-av3); }
.sk .m1 .rev p { font-size: 11.5px; line-height: 1.35; color: var(--sk-scr-72); }
.sk .m1 .rev p b { color: var(--sk-yellow); font-weight: 600; }

/* cv-qf: response quality, step by step */
.sk .cv-qf .q { display: grid; grid-template-columns: 22px 1fr auto; gap: 12px; align-items: center; padding: 11px 0; font-size: 14px; }
.sk .cv-qf .q + .q { border-top: 1px solid var(--sk-scr-line); }
.sk .cv-qf .q i { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-style: normal; font-weight: 700; color: var(--sk-ok-ink); background: var(--sk-ok); }
.sk .cv-qf .q em { font-style: normal; font: 500 12px/1 var(--sk-mono); color: #FF9C8C; }
.sk .cv-qf .q.kept { font-weight: 600; }
.sk .cv-qf .q.kept em { color: var(--sk-yellow); }

/* cv-plan: the survey consultant's plan card */
.sk .cv-plan .pl { display: grid; grid-template-columns: 116px 1fr; gap: 10px; padding: 6px 0; font-size: 13.5px; line-height: 1.35; }
.sk .cv-plan .pl + .pl { border-top: 1px solid var(--sk-scr-line); }
.sk .cv-plan .pl span { font: 500 10.5px/1.6 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-scr-60); }
.sk .cv-plan .acts { display: flex; gap: 8px; margin-top: 12px; }
.sk .cv-plan .acts span { padding: 9px 14px; border-radius: 99px; font-size: 13px; font-weight: 600; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .3); }
.sk .cv-plan .acts span.go { color: var(--sk-ink); background: var(--sk-yellow); box-shadow: none; }

/* cv-emo: a self-report emotion scale with drawn faces (no face reading) */
.sk .cv-emo .faces { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-top: 4px; }
.sk .cv-emo .faces div { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 12px 6px; border-radius: 14px; font-size: 12px; color: var(--sk-scr-72); background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1); }
.sk .cv-emo .faces div.sel { color: #fff; background: rgba(232, 70, 111, .2); box-shadow: inset 0 0 0 2px var(--sk-violet), 0 0 24px rgba(232, 70, 111, .45); }
.sk .cv-emo .faces svg { width: 40px; height: 40px; }

/* cv-player: a must-watch video with locked "Next" */
.sk .cv-player .frame { position: relative; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden; background: linear-gradient(135deg, #4A1238, #B4235A 58%, #FF8A7A); }
.sk .cv-player .frame::after { content: ""; position: absolute; left: 50%; top: 50%; border: 16px solid transparent; border-left: 26px solid rgba(255, 255, 255, .92); transform: translate(-30%, -50%); }
.sk .cv-player .prog { position: absolute; left: 12px; right: 12px; bottom: 12px; height: 5px; border-radius: 3px; background: rgba(255, 255, 255, .3); }
.sk .cv-player .prog u { display: block; width: var(--w, 60%); height: 100%; border-radius: 3px; background: #fff; }
.sk .cv-player .ctl { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; font-size: 13px; color: var(--sk-scr-60); }
.sk .cv-player .ctl span.next { padding: 8px 14px; border-radius: 99px; font-weight: 600; color: rgba(255, 255, 255, .45); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .2); }

/* ===================================================================================================
   9. THE HOMEPAGE DEMO: component vocabulary (.sk-app) + the 1180 x 757 stage (.sk-demo)
   .sk-app parts work on their own (study draft, quota fill, results tiles, interviews, report);
   inside .sk-demo the scenes appear beat by beat (data-beat b1-b7, driven by kit.js).
   =================================================================================================== */
.sk .sk-app { position: relative; font-family: var(--sk-font); color: #fff; font-size: 13px; }
.sk .sk-app .glass {
  position: relative; border-radius: 18px;
  background: linear-gradient(180deg, rgba(94, 15, 46, .62) 0%, rgba(36, 9, 31, .82) 55%, rgba(20, 4, 15, .9) 100%);
  box-shadow: 0 0 0 1.5px rgba(232, 70, 111, .9), 0 0 6px 1px rgba(255, 179, 199, .6), 0 0 34px rgba(180, 35, 90, .5), 0 0 90px rgba(180, 35, 90, .22),
              inset 0 1px 0 rgba(255, 255, 255, .3), inset 0 0 0 1px rgba(243, 163, 186, .16), inset 0 0 60px rgba(180, 35, 90, .22);
}
.sk .sk-app .glass::before { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(180deg, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, .05) 24%, transparent 46%); }
.sk .sk-app .glass::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; box-shadow: 0 0 60px rgba(180, 35, 90, .6), 0 0 150px rgba(180, 35, 90, .3); opacity: 0; animation: sk-halo 3.2s ease-in-out infinite; }
@keyframes sk-halo { 50% { opacity: .8; } }
.sk .sk-app .sheen { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; pointer-events: none; }
.sk .sk-app .sheen i { position: absolute; top: -30%; bottom: -30%; left: 0; width: 42%; display: block; background: linear-gradient(115deg, transparent 30%, rgba(255, 255, 255, .18) 50%, transparent 70%); transform: translateX(-160%); animation: sk-sheen 6s ease-in-out infinite; }
@keyframes sk-sheen { 0%, 50% { transform: translateX(-160%); } 80%, 100% { transform: translateX(400%); } }
.sk .sk-app .glass-sm { position: relative; border-radius: 10px; background: rgba(255, 255, 255, .05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .14), 0 0 0 1px rgba(240, 123, 154, .24); }

/* study draft: objective, screener, questions, quotas, review stamp */
.sk .sk-app .lbl { margin: 0 0 7px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .5); }
.sk .sk-app .obj { max-width: 62ch; font-size: 13px; line-height: 1.5; color: rgba(255, 255, 255, .9); }
.sk .sk-app .dchips { display: flex; flex-wrap: wrap; gap: 7px; }
.sk .sk-app .dchips span { padding: 6px 10px; border-radius: 99px; font-size: 12px; background: rgba(255, 255, 255, .07); box-shadow: inset 0 0 0 1px rgba(240, 123, 154, .3); }
.sk .sk-app .qs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.sk .sk-app .q { min-height: 52px; padding: 9px 11px; font-size: 11.5px; line-height: 1.35; color: rgba(255, 255, 255, .85); }
.sk .sk-app .q b { display: block; margin-bottom: 3px; font: 500 10px/1.2 var(--sk-mono); color: rgba(255, 255, 255, .5); }
.sk .sk-app .qts { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.sk .sk-app .qt { padding: 9px 10px; }
.sk .sk-app .qt b { display: block; margin-bottom: 7px; font-weight: 600; font-size: 11px; color: rgba(255, 255, 255, .9); }
.sk .sk-app .qt em { display: block; margin-top: 6px; font-style: normal; font-size: 9.5px; line-height: 1.35; color: rgba(255, 255, 255, .5); }
.sk .sk-app .seg { display: flex; gap: 2px; height: 6px; border-radius: 99px; overflow: hidden; }
.sk .sk-app .seg i { display: block; min-width: 2px; border-radius: 2px; overflow: hidden; background: rgba(255, 255, 255, .1); }
.sk .sk-app .stamp {
  display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; font-size: 12.5px; font-weight: 600;
  color: var(--sk-ok-ink); background: var(--sk-yellow); box-shadow: 0 0 22px rgba(246, 201, 142, .35); transform: rotate(-6deg);
}
.sk .sk-app .stamp i { width: 16px; height: 16px; border-radius: 50%; display: grid; place-items: center; background: var(--sk-ok-ink); }
.sk .sk-app .stamp i::after { content: ""; width: 4px; height: 7px; border-right: 2px solid var(--sk-yellow); border-bottom: 2px solid var(--sk-yellow); transform: rotate(45deg) translate(-1px, -1px); }

/* fieldwork: the panel lights up, completes count up, quotas fill */
.sk .sk-app .globe { position: relative; width: 300px; height: 300px; }
.sk .sk-app .globe::before { content: ""; position: absolute; inset: 8%; border-radius: 50%; background: radial-gradient(circle, rgba(180, 35, 90, .32), transparent 68%); }
.sk .sk-app .globe svg { position: relative; width: 100%; height: 100%; overflow: visible; }
.sk .sk-app .globe .ring { fill: none; stroke: rgba(240, 123, 154, .24); stroke-width: 1; stroke-dasharray: 2 6; }
.sk .sk-app .globe .dot { fill: url(#sk-dg); opacity: var(--o, .3); }
.sk .sk-app .globe .dot.hot { fill: url(#sk-dgh); }
.sk .sk-app .globe .rip { position: absolute; left: 50%; top: 50%; width: 260px; height: 260px; margin: -130px 0 0 -130px; border-radius: 50%; opacity: 0; pointer-events: none; box-shadow: 0 0 0 1.5px rgba(246, 201, 142, .8), 0 0 18px rgba(232, 70, 111, .5); }
.sk .sk-app .big { font: 800 64px/1 var(--sk-display); letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.sk .sk-app .big small { margin-left: 4px; font-size: 22px; font-weight: 600; letter-spacing: -.02em; color: rgba(255, 255, 255, .45); }
.sk .sk-app .bigl { margin: 6px 0 16px; font-size: 12.5px; color: rgba(255, 255, 255, .64); }
.sk .sk-app .bigl b { color: var(--sk-yellow); font-weight: 600; }
.sk .sk-app .qr { display: grid; grid-template-columns: 84px 1fr 34px; gap: 10px; align-items: center; margin-top: 9px; font-size: 11.5px; color: rgba(255, 255, 255, .8); }
.sk .sk-app .qr .seg { height: 8px; }
.sk .sk-app .qr em { font-style: normal; font-size: 11px; color: rgba(255, 255, 255, .5); text-align: right; font-variant-numeric: tabular-nums; }
.sk .sk-app .note { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 16px; font-size: 11.5px; color: rgba(255, 255, 255, .58); }
.sk .sk-app .note span::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: var(--sk-coral); vertical-align: 1px; }
.sk .sk-app .pf-logo { display: inline-block; height: 17px; width: auto; margin: 0 1px; vertical-align: -4px; }
.sk .sk-app .pf-logo.lg { height: 24px; vertical-align: -7px; }

/* results tiles */
.sk .sk-app .tile { display: flex; flex-direction: column; min-height: 0; padding: 12px 14px; }
.sk .sk-app .tile h5 { display: flex; justify-content: space-between; gap: 10px; margin: 0 0 10px; font: 500 10.5px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .55); }
.sk .sk-app .tile h5 span { letter-spacing: 0; text-transform: none; color: var(--sk-yellow); }
.sk .sk-app .bar { display: grid; grid-template-columns: 70px 1fr 38px; gap: 10px; align-items: center; margin-top: 11px; font-size: 12px; color: rgba(255, 255, 255, .75); }
.sk .sk-app .bar i { display: block; height: 12px; border-radius: 99px; background: rgba(255, 255, 255, .08); overflow: hidden; }
.sk .sk-app .fill { display: block; height: 100%; border-radius: inherit; transform-origin: 0 50%; }
.sk .sk-app .bar .fill { background: linear-gradient(90deg, #6E1A4C, #B4235A); }
.sk .sk-app .bar.win { color: #fff; }
.sk .sk-app .bar.win .fill { background: var(--sk-bar-win); box-shadow: 0 0 14px rgba(232, 70, 111, .7); }
.sk .sk-app .bar em { font-style: normal; text-align: right; font-variant-numeric: tabular-nums; }
.sk .sk-app .vw { width: 100%; flex: 1; min-height: 0; overflow: visible; }
.sk .sk-app .vw .ax { stroke: rgba(255, 255, 255, .18); stroke-width: 1; }
.sk .sk-app .vw .ln { fill: none; stroke-width: 2; stroke-linecap: round; }
.sk .sk-app .vw .tc { stroke: var(--sk-c2); }
.sk .sk-app .vw .ch { stroke: var(--sk-c1); }
.sk .sk-app .vw .ex { stroke: var(--sk-c3); }
.sk .sk-app .vw .te { stroke: var(--sk-c4); }
.sk .sk-app .vw .mk line { stroke: #fff; stroke-width: 1; stroke-dasharray: 3 3; }
.sk .sk-app .vw .mk circle { fill: #fff; filter: drop-shadow(0 0 5px #fff); }
.sk .sk-app .vw .mk text { fill: #fff; font: 600 10.5px var(--sk-font); }
.sk .sk-app .vw .mk2 circle { fill: none; stroke: #fff; stroke-width: 1.4; }
.sk .sk-app .vw .tk { fill: rgba(255, 255, 255, .45); font: 400 9px var(--sk-mono); }
.sk .sk-app .key { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; font-size: 9.5px; color: rgba(255, 255, 255, .58); }
.sk .sk-app .key i { display: inline-block; width: 8px; height: 2px; margin-right: 4px; vertical-align: 3px; }
.sk .sk-app .wc { flex: 1; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 12px; line-height: 1.05; font-family: var(--sk-display); font-weight: 700; letter-spacing: -.02em; }
.sk .sk-app .wc span { color: #FDEEF2; opacity: var(--o, 1); }
.sk .sk-app .wc span:nth-child(3n+1) { color: var(--sk-lavender); }
.sk .sk-app .wc span:nth-child(4n+2) { color: var(--sk-violet); }
.sk .sk-app .wc span:first-child { color: var(--sk-yellow); }
.sk .sk-app .sent { display: flex; gap: 2px; height: 12px; border-radius: 99px; overflow: hidden; }
.sk .sk-app .sent i { display: block; overflow: hidden; }
.sk .sk-app .th { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 9px; font-size: 11.5px; color: rgba(255, 255, 255, .8); }
.sk .sk-app .th em { padding: 2px 8px; border-radius: 99px; font-style: normal; font-size: 10.5px; }
.sk .sk-app .positive, .sk .sk-app .th em.p { color: #FBE3EA; background: rgba(232, 70, 111, .3); }
.sk .sk-app .mixed { color: var(--sk-yellow); background: rgba(246, 201, 142, .16); }
.sk .sk-app .th em.n { color: #FFC0B5; background: rgba(255, 138, 122, .2); }

/* interviews: video tiles with live captions, a probe */
.sk .sk-app .ivs { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; }
.sk .sk-app .iv { display: flex; flex-direction: column; gap: 9px; min-height: 0; padding: 12px 14px; }
.sk .sk-app .vid { position: relative; flex: 1; min-height: 70px; border-radius: 8px; overflow: hidden; display: grid; place-items: center; }
.sk .sk-app .vid::before { content: ""; position: absolute; inset: 0; background: radial-gradient(90% 90% at 50% 40%, rgba(20, 4, 15, .3), rgba(20, 4, 15, .8)); }
.sk .sk-app .vid b { position: relative; width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; font-size: 17px; font-weight: 700; color: #fff; background: rgba(255, 255, 255, .14); box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .35); }
.sk .sk-app .vid .rec { position: absolute; left: 8px; top: 8px; padding: 3px 7px; border-radius: 99px; font: 500 9.5px/1.3 var(--sk-mono); color: #fff; background: rgba(0, 0, 0, .5); font-variant-numeric: tabular-nums; }
.sk .sk-app .vid .rec::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 5px; border-radius: 50%; background: var(--sk-coral); box-shadow: 0 0 6px var(--sk-coral); vertical-align: 0; }
.sk .sk-app .vid .cc { position: absolute; right: 8px; bottom: 8px; padding: 3px 7px; border-radius: 99px; font-size: 9.5px; color: rgba(255, 255, 255, .85); background: rgba(0, 0, 0, .5); }
.sk .sk-app .who { display: flex; align-items: center; gap: 9px; font-size: 12px; color: rgba(255, 255, 255, .9); }
.sk .sk-app .who i { width: 30px; height: 30px; flex: none; border-radius: 50%; display: grid; place-items: center; font-style: normal; font-size: 10.5px; font-weight: 700; color: #2A0B22; }
.sk .sk-app .who em { margin-left: auto; padding: 2px 8px; border-radius: 99px; font-style: normal; font-size: 10.5px; }
.sk .sk-app .wave { display: flex; align-items: center; gap: 3px; height: 24px; }
.sk .sk-app .wave i { flex: 1; height: 100%; border-radius: 2px; background: linear-gradient(180deg, #FFB3C7, #B4235A); transform: scaleY(.18); animation: sk-wv 1.05s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -.085s); }
@keyframes sk-wv { 0%, 100% { transform: scaleY(.16); } 35% { transform: scaleY(.95); } 65% { transform: scaleY(.42); } }
.sk .sk-app .iv p { margin: 0; font-size: 12px; line-height: 1.45; color: rgba(255, 255, 255, .8); }
.sk .sk-app .iv mark { background: none; color: var(--sk-yellow); text-shadow: 0 0 14px rgba(246, 201, 142, .55); }
.sk .sk-app .probe { padding: 10px 14px; border-radius: 14px; font-size: 12.5px; line-height: 1.4; }
.sk .sk-app .probe b { display: block; margin-bottom: 3px; font: 500 10px/1.2 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-yellow); }

/* the report on three surfaces: deck, dashboard, phone summary */
.sk .sk-app .srf { display: flex; flex-direction: column; padding: 18px 20px; }
.sk .sk-app .srf h6 { margin: 0; font: 800 24px/1.1 var(--sk-display); letter-spacing: -.03em; }
.sk .sk-app .srf .k { margin-bottom: 8px; font: 500 10px/1.2 var(--sk-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .5); }
.sk .sk-app .srf .sub2 { margin-top: 8px; max-width: 40ch; font-size: 12.5px; color: rgba(255, 255, 255, .72); }
.sk .sk-app .srf .foot { display: flex; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 12px; font: 400 10px/1.3 var(--sk-mono); color: rgba(255, 255, 255, .45); }
.sk .sk-app .mini { display: grid; gap: 8px; margin-top: 16px; }
.sk .sk-app .mini .bar { margin-top: 0; grid-template-columns: 62px 1fr 34px; font-size: 11px; }
.sk .sk-app .kpi { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 4px; }
.sk .sk-app .kpi div { padding: 9px 10px; }
.sk .sk-app .kpi b { display: block; font: 800 20px/1.1 var(--sk-display); letter-spacing: -.03em; }
.sk .sk-app .kpi span { font-size: 10px; color: rgba(255, 255, 255, .58); }
.sk .sk-app .srf.phone { border-radius: 22px; padding: 16px 12px; }
.sk .sk-app .srf.phone ul { margin: 6px 0 0; padding: 0; list-style: none; display: grid; gap: 7px; font-size: 10.5px; line-height: 1.35; color: rgba(255, 255, 255, .82); }
.sk .sk-app .srf.phone li { padding: 7px 8px; }
.sk .sk-app .rpills { display: flex; flex-wrap: wrap; gap: 9px; justify-content: center; }
.sk .sk-app .rpills span { padding: 8px 14px; border-radius: 99px; font-size: 12px; background: rgba(255, 255, 255, .08); box-shadow: inset 0 0 0 1px rgba(240, 123, 154, .32); }
.sk .sk-app .rpills span:first-child { color: var(--sk-ink); font-weight: 600; background: var(--sk-yellow); box-shadow: 0 0 20px rgba(246, 201, 142, .4); }

/* standalone layouts for the parts (outside the demo) */
.sk .sk-app.ap-study { position: absolute; inset: 7% 6%; display: flex; flex-direction: column; justify-content: center; gap: 12px; overflow: hidden; }
.sk .sk-app.ap-study .qs .q:nth-child(n+4) { display: none; }   /* three questions are enough out of the demo */
.sk .sk-app.ap-study .stamp { position: absolute; right: 4px; top: 4px; }
.sk .sk-app.ap-panel { position: absolute; inset: 8% 6%; display: grid; grid-template-columns: minmax(0, 260px) 1fr; gap: 26px; align-items: center; }
.sk .sk-app.ap-panel .globe { width: 100%; height: auto; aspect-ratio: 1; }
.sk .sk-app.ap-results { position: absolute; inset: 6%; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; }
.sk .sk-app.ap-iv { position: absolute; inset: 5% 5% 21%; }
.sk .sk-app.ap-iv .ivs { height: 100%; }
.sk .sk-app.ap-iv .wave { display: none; }
.sk .sk-app.ap-iv .vid { min-height: 46px; }
.sk .sk-app.ap-iv .probe { position: absolute; left: 50%; top: calc(100% + 12px); width: 78%; transform: translateX(-50%); }
.sk .sk-app.ap-report { position: absolute; inset: 7% 5% 8%; display: grid; grid-template-columns: 2fr 1.1fr .62fr; grid-template-rows: 1fr auto auto; gap: 12px 14px; align-items: stretch; }
.sk .sk-app.ap-report .srf { grid-row: 1; min-height: 0; overflow: hidden; }
.sk .sk-app.ap-report .srf h6 { font-size: 20px; }
.sk .sk-app.ap-report .rcap { grid-column: 1 / -1; text-align: center; font-size: 12.5px; color: rgba(255, 255, 255, .72); }
.sk .sk-app.ap-report .rpills { grid-column: 1 / -1; }
/* standalone parts animate in once when they scroll into view (kit.js adds is-armed, then is-live) */
.sk .sk-app.is-armed .fill { transform: scaleX(0); }
.sk .sk-app.is-armed.is-live .fill { transform: none; transition: transform .9s var(--sk-e-out); }

/* ---- the demo stage: laid out at 1180 x 757, scaled to fit like a video ---- */
.sk .sk-stage {
  position: relative; max-width: 1180px; margin-inline: auto; border-radius: var(--sk-r-xl); overflow: hidden; background: #14040F;
  box-shadow: 0 0 0 1.5px rgba(232, 70, 111, .85), 0 0 6px 1px rgba(255, 179, 199, .45), 0 30px 80px -24px rgba(180, 35, 90, .55);
}
.sk .sk-stage-in { position: relative; aspect-ratio: 1180 / 757; container-type: inline-size; overflow: hidden; }
.sk .sk-demo {
  --fit: .25; position: absolute; left: 0; top: 0; width: 1180px; height: 757px; overflow: hidden;
  transform-origin: 0 0; transform: scale(var(--fit)); font-size: 13px;
  background: radial-gradient(70% 55% at 50% 118%, rgba(180, 35, 90, .55), transparent 62%),
              radial-gradient(60% 40% at 50% -10%, rgba(255, 138, 122, .18), transparent 60%), #14040F;
}
/* without kit.js the stage still fits, in 40px steps (kit.js sets the exact --fit) */
@container (min-width: 320px) { .sk .sk-demo { --fit: .2712; } }
@container (min-width: 360px) { .sk .sk-demo { --fit: .3051; } }
@container (min-width: 400px) { .sk .sk-demo { --fit: .3390; } }
@container (min-width: 440px) { .sk .sk-demo { --fit: .3729; } }
@container (min-width: 480px) { .sk .sk-demo { --fit: .4068; } }
@container (min-width: 520px) { .sk .sk-demo { --fit: .4407; } }
@container (min-width: 560px) { .sk .sk-demo { --fit: .4746; } }
@container (min-width: 600px) { .sk .sk-demo { --fit: .5085; } }
@container (min-width: 640px) { .sk .sk-demo { --fit: .5424; } }
@container (min-width: 680px) { .sk .sk-demo { --fit: .5763; } }
@container (min-width: 720px) { .sk .sk-demo { --fit: .6102; } }
@container (min-width: 760px) { .sk .sk-demo { --fit: .6441; } }
@container (min-width: 800px) { .sk .sk-demo { --fit: .6780; } }
@container (min-width: 840px) { .sk .sk-demo { --fit: .7119; } }
@container (min-width: 880px) { .sk .sk-demo { --fit: .7458; } }
@container (min-width: 920px) { .sk .sk-demo { --fit: .7797; } }
@container (min-width: 960px) { .sk .sk-demo { --fit: .8136; } }
@container (min-width: 1000px) { .sk .sk-demo { --fit: .8475; } }
@container (min-width: 1040px) { .sk .sk-demo { --fit: .8814; } }
@container (min-width: 1080px) { .sk .sk-demo { --fit: .9153; } }
@container (min-width: 1120px) { .sk .sk-demo { --fit: .9492; } }
@container (min-width: 1160px) { .sk .sk-demo { --fit: .9831; } }
@container (min-width: 1180px) { .sk .sk-demo { --fit: 1; } }
.sk .sk-demo .vig { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(80% 80% at 50% 50%, transparent 60%, rgba(0, 0, 0, .55)); }
.sk .sk-demo .sk-sample { z-index: 20; right: 22px; bottom: 16px; font-size: 11px; }

/* beat 1: the brief is typed */
.sk .sk-demo .p-wrap { position: absolute; left: 50%; top: 50%; width: 34%; transform: translate(-50%, -50%); transition: opacity .3s var(--sk-e), transform .45s var(--sk-e-out); }
.sk .sk-demo:not([data-beat="b1"]) .p-wrap { opacity: 0; transform: translate(-50%, -56%) scale(.94); pointer-events: none; }
.sk .sk-demo .pill { display: flex; align-items: center; gap: 8px; width: 84%; margin: 0 auto 14px; }
.sk .sk-demo .pill .glass-sm { flex: 1; display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; font-size: 13.5px; color: rgba(255, 255, 255, .85); }
.sk .sk-demo .pill .plus { width: 38px; height: 38px; flex: none; border-radius: 10px; display: grid; place-items: center; font-size: 18px; color: rgba(255, 255, 255, .8); }
.sk .sk-demo .dprompt { display: flex; flex-direction: column; min-height: 118px; padding: 16px 16px 12px; }
.sk .sk-demo .dprompt .txt { min-height: 44px; font-size: 14px; line-height: 1.45; color: #fff; }
.sk .sk-demo .dprompt .txt::after { content: ""; display: inline-block; width: 1.5px; height: 1em; margin-left: 2px; vertical-align: -2px; background: #fff; animation: sk-caret 1s steps(2) infinite; }
@keyframes sk-caret { 50% { opacity: 0; } }
.sk .sk-demo .mrow { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding-top: 12px; font-size: 12px; color: rgba(255, 255, 255, .7); }
.sk .sk-demo .icons { display: flex; gap: 6px; }
.sk .sk-demo .icons i { display: block; width: 24px; height: 24px; border-radius: 7px; background: rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15); }
.sk .sk-demo .icons i.send { position: relative; background: #fff; }
.sk .sk-demo .icons i.send::after { content: ""; position: absolute; left: 8px; top: 9px; width: 7px; height: 7px; border-left: 2px solid #000; border-top: 2px solid #000; transform: rotate(45deg); }

/* beats 2-6: canvas left (its scene changes), chat right; beat 7: the report */
.sk .sk-demo .canvas { position: absolute; left: 3.5%; top: 7.5%; width: 64.5%; height: 85%; overflow: hidden; opacity: 0; transform: scale(.78); transition: opacity .4s var(--sk-e) .22s, transform .7s var(--sk-e-out) .22s; }
.sk .sk-demo .chat { position: absolute; left: 71%; top: 7.5%; width: 25.5%; height: 85%; padding: 16px; display: flex; flex-direction: column; gap: 10px; opacity: 0; transform: translateX(34px); transition: opacity .4s var(--sk-e) .32s, transform .7s var(--sk-e-out) .32s; }
.sk .sk-demo:is([data-beat="b2"], [data-beat="b3"], [data-beat="b4"], [data-beat="b5"], [data-beat="b6"]) :is(.canvas, .chat) { opacity: 1; transform: none; }
.sk .sk-demo[data-beat="b7"] .canvas { opacity: 0; transform: scale(.92); transition: opacity .5s var(--sk-e), transform .7s var(--sk-e-out); }
.sk .sk-demo[data-beat="b7"] .chat { opacity: 0; transition: opacity .3s var(--sk-e); }
.sk .sk-demo .c-head { position: absolute; left: 24px; right: 24px; top: 20px; display: flex; align-items: center; justify-content: space-between; }
.sk .sk-demo .c-head b { font-weight: 600; font-size: 14.5px; color: #fff; }
.sk .sk-demo .tag { display: none; padding: 4px 10px; border-radius: 99px; font: 500 10.5px/1.3 var(--sk-mono); letter-spacing: .04em; background: rgba(255, 255, 255, .08); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); }
.sk .sk-demo .tag.g { color: var(--sk-ok-ink); background: var(--sk-yellow); box-shadow: none; }
.sk .sk-demo .tag.b { color: #FBE3EA; background: rgba(232, 70, 111, .3); box-shadow: inset 0 0 0 1px rgba(232, 70, 111, .6); }
.sk .sk-demo[data-beat="b2"] .t2, .sk .sk-demo[data-beat="b3"] .t3, .sk .sk-demo[data-beat="b4"] .t4, .sk .sk-demo[data-beat="b5"] .t5, .sk .sk-demo[data-beat="b6"] .t6 { display: inline-block; }
.sk .sk-demo .sc { position: absolute; left: 24px; right: 24px; top: 60px; bottom: 20px; opacity: 0; pointer-events: none; transform: scale(.95); transition: opacity .42s var(--sk-e), transform .7s var(--sk-e-out); }
.sk .sk-demo[data-beat="b2"] .sc-study, .sk .sk-demo[data-beat="b3"] .sc-study, .sk .sk-demo[data-beat="b4"] .sc-panel,
.sk .sk-demo[data-beat="b5"] .sc-results, .sk .sk-demo[data-beat="b6"] .sc-iv { opacity: 1; transform: none; transition-delay: .06s; }
.sk .sk-demo .sc-study > .pop ~ .pop { margin-top: 15px; }
.sk .sk-demo .sc-study .stamp { position: absolute; right: 0; bottom: 0; opacity: 0; transform: rotate(-6deg) scale(1.25); transition: opacity .3s var(--sk-e), transform .45s cubic-bezier(.2, 1.4, .4, 1); }
.sk .sk-demo[data-beat="b3"] .sc-study .stamp { opacity: 1; transform: rotate(-6deg) scale(1); transition-delay: 1.4s; }
.sk .sk-demo .sc-panel { display: grid; grid-template-columns: 300px 1fr; gap: 26px; align-items: center; }
.sk .sk-demo .sc-results { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; }
.sk .sk-demo .ivs { height: calc(100% - 68px); }
.sk .sk-demo .probe { position: absolute; left: 50%; bottom: 0; width: 78%; transform: translate(-50%, 14px); opacity: 0; transition: opacity .4s var(--sk-e), transform .55s var(--sk-e-out); }
.sk .sk-demo[data-beat="b6"] .probe { opacity: 1; transform: translate(-50%, 0); transition-delay: 1.2s; }
/* staggered arrival inside the active scene */
.sk .sk-demo .pop { opacity: 0; transform: translateY(9px); transition: opacity .34s var(--sk-e), transform .46s var(--sk-e-out); }
.sk .sk-demo:is([data-beat="b2"], [data-beat="b3"]) .sc-study .pop, .sk .sk-demo[data-beat="b4"] .sc-panel .pop,
.sk .sk-demo[data-beat="b5"] .sc-results .pop, .sk .sk-demo[data-beat="b6"] .sc-iv .pop, .sk .sk-demo[data-beat="b7"] .report .pop { opacity: 1; transform: none; transition-delay: calc(.08s + var(--d, 0s) * .75); }
.sk .sk-demo .fill { transform: scaleX(0); transition: transform .85s var(--sk-e-out); }
.sk .sk-demo[data-beat="b4"] .sc-panel .fill, .sk .sk-demo[data-beat="b5"] .sc-results .fill, .sk .sk-demo[data-beat="b7"] .report .fill { transform: scaleX(1); transition-delay: calc(.2s + var(--d, 0s) * .75); }
.sk .sk-demo .globe .dot { opacity: .07; transition: opacity .55s var(--sk-e); }
.sk .sk-demo[data-beat="b4"] .globe .dot { opacity: var(--o, .3); transition-delay: calc(.4s + var(--i, 0) * 7ms); }
.sk .sk-demo[data-beat="b4"] .globe .rip { animation: sk-rip 1.25s var(--sk-e-out) .3s both; }
.sk .sk-demo[data-beat="b4"] .globe .rip + .rip { animation-delay: .58s; }
@keyframes sk-rip { 0% { transform: scale(.08); opacity: .9; } 100% { transform: scale(1.18); opacity: 0; } }
.sk .sk-demo .vw .ln { stroke-dasharray: 440; stroke-dashoffset: 440; transition: stroke-dashoffset 1.25s var(--sk-e-out); }
.sk .sk-demo[data-beat="b5"] .vw .ln { stroke-dashoffset: 0; transition-delay: calc(.5s + var(--d, 0s)); }
.sk .sk-demo .wc span { opacity: 0; transform: scale(.7); transition: opacity .4s var(--sk-e), transform .5s cubic-bezier(.2, 1.3, .4, 1); }
.sk .sk-demo[data-beat="b5"] .wc span { opacity: var(--o, 1); transform: none; transition-delay: calc(.5s + var(--d, 0s)); }
.sk .sk-demo .wave i { animation-play-state: paused; }
.sk .sk-demo[data-beat="b6"] .wave i { animation-play-state: running; }
/* beat 7: the report on three surfaces */
.sk .sk-demo .report { position: absolute; inset: 0; pointer-events: none; }
.sk .sk-demo .srf { position: absolute; }
.sk .sk-demo .srf.deck { left: 4%; top: 19%; width: 50%; height: 47%; }
.sk .sk-demo .srf.dash { left: 56.5%; top: 14%; width: 25%; height: 52%; }
.sk .sk-demo .srf.phone { left: 84%; top: 21%; width: 12.5%; height: 45%; }
.sk .sk-demo .rcap { position: absolute; left: 0; right: 0; bottom: 18%; text-align: center; font-size: 13px; color: rgba(255, 255, 255, .72); }
.sk .sk-demo .rpills { position: absolute; left: 0; right: 0; bottom: 10%; }
.sk .sk-demo .report > .pop { transform: translateY(26px) scale(.97); }
.sk .sk-demo .report > .deck.pop { transform: scale(.92); }
.sk .sk-demo .report > .dash.pop, .sk .sk-demo .report > .phone.pop { transform: translateX(46px); }
.sk .sk-demo[data-beat="b7"] .report > .pop { opacity: 1; transform: none; transition-delay: calc(.3s + var(--d, 0s)); }
/* the chat column: messages grow in, older ones glide up */
.sk .sk-demo .ch-top { display: flex; justify-content: space-between; font-size: 12px; color: rgba(255, 255, 255, .55); }
.sk .sk-demo .msgs { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; min-height: 0; padding: 3px 4px; overflow: hidden; }
.sk .sk-demo .msg {
  flex: none; max-width: 96%; max-height: 0; margin-top: 0; padding: 0 12px; border-radius: 14px; opacity: 0; overflow: hidden; transform: translateY(12px);
  font-size: 12.5px; line-height: 1.42;
  transition: max-height .55s var(--sk-e-out), margin-top .55s var(--sk-e-out), padding .55s var(--sk-e-out), opacity .4s var(--sk-e) .12s, transform .55s var(--sk-e-out);
}
.sk .sk-demo .msg.on { max-height: 190px; margin-top: 9px; padding: 10px 12px; opacity: 1; transform: none; }
.sk .sk-demo .msg.u { align-self: flex-end; color: #fff; background: rgba(232, 70, 111, .26); border-bottom-right-radius: 5px; box-shadow: 0 0 0 1px rgba(232, 70, 111, .6), 0 0 18px rgba(180, 35, 90, .45); }
.sk .sk-demo .msg.a { align-self: flex-start; color: rgba(255, 255, 255, .86); background: rgba(255, 255, 255, .06); border-bottom-left-radius: 5px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); }
.sk .sk-demo .launch {
  display: inline-flex; align-items: center; gap: 8px; margin-top: 8px; padding: 8px 12px; border-radius: 9px; white-space: nowrap;
  font-size: 12px; font-weight: 600; color: var(--sk-ink); background: var(--sk-yellow); box-shadow: 0 0 22px rgba(246, 201, 142, .45);
}
.sk .sk-demo .launch i { display: block; width: 6px; height: 6px; border-radius: 50%; background: var(--sk-violet-deep); }
.sk .sk-demo .comp { border-top: 1px solid rgba(255, 255, 255, .1); padding-top: 11px; }
.sk .sk-demo .comp .ph { font-size: 12.5px; color: rgba(255, 255, 255, .4); }

/* ===================================================================================================
   10. AGENT CHAT (light, beside the dark screens on the white page)
   =================================================================================================== */
.sk .schat {
  display: flex; flex-direction: column; gap: 10px; min-height: 0; padding: 16px; border-radius: var(--sk-r-xl);
  background: var(--sk-paper); border: 1px solid var(--sk-card-line); box-shadow: 0 30px 50px -34px rgba(30, 10, 26, .4);
}
.sk .schat .top { display: flex; justify-content: space-between; align-items: center; font: 400 11.5px/1 var(--sk-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--sk-sub); }
.sk .schat .msgs { flex: 1; display: flex; flex-direction: column; gap: 8px; justify-content: flex-end; overflow: hidden; }
.sk .schat .msg { max-width: 94%; padding: 10px 12px; border-radius: 14px; font-size: 13px; line-height: 1.45; }
.sk .schat .msg.u { align-self: flex-end; color: var(--sk-cream); background: var(--sk-ink); border-bottom-right-radius: 5px; }
.sk .schat .msg.a { align-self: flex-start; color: var(--sk-ink); background: var(--sk-soft); border-bottom-left-radius: 5px; }
.sk .schat .comp { border-top: 1px solid var(--sk-hair); padding-top: 12px; }
.sk .schat .ph { font-size: 13px; color: var(--sk-sub); }
.sk .schat .mrow { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; font: 400 11px/1 var(--sk-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--sk-muted); }
.sk .schat .icons { display: flex; gap: 6px; }
.sk .schat .icons i { display: block; width: 22px; height: 22px; border-radius: 6px; background: var(--sk-soft); box-shadow: inset 0 0 0 1px var(--sk-hair); }
.sk .schat .icons i:last-child { background: var(--sk-ink); box-shadow: none; }

/* ===================================================================================================
   11. RESPONSIVE (the homepage is desktop-only at 1440; the kit still holds at tablet and phone)
   =================================================================================================== */
@media (max-width: 1000px) {
  .sk { --sk-gutter: 24px; }
  .sk .sec-head { grid-template-columns: 1fr; row-gap: 14px; }
  .sk .sec-head .lede { grid-column: 1; grid-row: auto; }
  .sk .sp-flow { grid-template-columns: 1fr; }
  .sk .sp-chat { display: none; }
  .sk .sp-q.row { grid-template-columns: 1fr 1fr; }
  .sk .sp-list { grid-template-columns: 1fr 1fr; }
  .sk .sp-when, .sk .sp-steps, .sk .sp-grid.c3 { grid-template-columns: 1fr; }
  .sk .sp-rel, .sk .scard-row { grid-template-columns: 1fr 1fr; }
  .sk .pp-hero .wrap, .sk .pp-tabs, .sk .pp-faq { grid-template-columns: 1fr; }
  .sk .pp-faq .h2 { position: static; }
  .sk .pp-qs, .sk .pp-cov { grid-template-columns: 1fr 1fr; }
  .sk .pp-pipe, .sk .pp-rail { grid-template-columns: 1fr 1fr; }
  .sk .pp-pipe a, .sk .pp-pipe a:first-child, .sk .pp-pipe a:last-child { border-radius: 0; border-left-width: 1px; }
  .sk .pp-rail a + a { border-left: 0; border-top: 1px solid var(--sk-hair); }
  .sk .pp-tabs .tv { min-height: 520px; }
  .sk .cap { grid-template-columns: 1fr; }
  .sk .cap:nth-of-type(even) .fpanel { order: 0; }
  .sk .pick a { grid-template-columns: 1fr; gap: 6px; }
  .sk .gloss { grid-template-columns: 1fr; }
  .sk .pgrid { grid-template-columns: 1fr 1fr; }
  .sk .cv-tiles { grid-template-columns: repeat(3, 1fr); }
  .sk .cv-say { max-width: 60%; font-size: 13.5px; }
  .sk .sv .card { width: 86%; padding: 22px; }
  .sk .sv .ttl { font-size: 21px; }
  .sk .sv1 .carton { width: 44px; height: 86px; }
  .sk .sv2 .ppl .pp { width: 84px; height: 84px; }
  .sk .sv2 .spk .pp { width: 130px; height: 130px; }
  .sk .sv2 .say { max-width: 60%; font-size: 13.5px; }
  .sk .sv3 .card { left: 50%; }
  .sk .sv3 .quote { display: none; }
  .sk .sv4 .orbit { scale: .7; }
  .sk .sv .chip { font-size: 12px; padding: 8px 12px; }
  .sk .m1 .side { display: none; }
  .sk .m1 .body { grid-template-columns: 1fr; }
  .sk .m1 .win { left: 4%; width: 74%; }
  .sk .m1 .quota { width: 34%; right: 2%; }
  .sk .m1 .rev { width: 44%; right: 3%; }
  .sk .cv-heat { grid-template-columns: 1fr; }
  .sk .cv-heat table { display: none; }
  .sk .sk-app.ap-report { grid-template-columns: 1fr 1fr; }
  .sk .sk-app.ap-report .phone { display: none; }
}
@media (max-width: 620px) {
  .sk { --sk-gutter: 16px; }
  .sk .sp-q, .sk .sp-grid, .sk .sp-list, .sk .sp-rel, .sk .scard-row { grid-template-columns: 1fr; }
  .sk .pp-facts, .sk .pp-qs, .sk .pp-cov, .sk .pp-pipe, .sk .pp-rail, .sk .pgrid { grid-template-columns: 1fr; }
  .sk .pp-facts div + div { border-left: 0; border-top: 1px solid var(--sk-hair); }
  .sk .pp-tabs .ex { grid-template-columns: 1fr; }
  .sk .pp-tabs .tv { min-height: 600px; }
  .sk .sp-card .txt { padding: 22px; }
  .sk .sp-card .fpanel, .sk .sp-stage:not(.is-app), .sk .pp-hero .fpanel, .sk .cap .fpanel { height: 440px; }
  .sk .sv .card { width: 92%; padding: 18px; }
  .sk .cv-stim div { aspect-ratio: 1.5; }
  .sk .cv-score { gap: 8px; }
  .sk .cv-score .c { padding: 12px; }
  .sk .cv-stim { grid-template-columns: 1fr 1fr; }
  .sk .cv-metrics .mrow2 { grid-template-columns: 90px 1fr 1fr 1fr; font-size: 12px; }
  .sk .cv-funnel .fn { grid-template-columns: 84px 1fr 40px 40px; font-size: 12px; }
  .sk .cv-opts, .sk .cv-files { grid-template-columns: 1fr 1fr; }
  .sk .cv-emo .faces { gap: 5px; }
  .sk .cv-feed { left: 6%; width: 40%; }
  .sk .sk-app.ap-results { grid-template-columns: 1fr; grid-template-rows: none; overflow: hidden; }
  .sk .sk-app.ap-panel { grid-template-columns: 1fr; }
  .sk .sk-app.ap-panel .globe { display: none; }
  .sk .sk-app .qs { grid-template-columns: 1fr 1fr; }
  .sk .sk-app .qts { grid-template-columns: repeat(3, 1fr); }
}

/* ===================================================================================================
   12. REDUCED MOTION: everything still, in its final state
   =================================================================================================== */
@media (prefers-reduced-motion: reduce) {
  .sk *, .sk *::before, .sk *::after { animation: none !important; transition: none !important; }
  .sk .rv, .sk.sk-anim .rv { opacity: 1 !important; transform: none !important; }
  .sk .sk-app.is-armed .fill { transform: none; }
}
