/* Shared case-study template, section layers (the references' v1-v16 revisions). Loaded after case-study.css. */
/* ── v1: TrueWholesale case study ── */
/* 40 px tap targets on phones for the links live left at 24 px (breadcrumb, stack names, store and message links) */
@media (max-width: 767px) {
  main a.min-h-6, main a.cs-textlink { display: inline-flex; align-items: center; min-height: 40px; }
}


/* ── v2: TrueWholesale case study ── */
.tw2-fix { margin-top: 18px; padding: 14px 16px; border-radius: 14px; background: #F3FAF6; border: 1px solid rgba(0, 116, 74, .18); box-shadow: inset 3px 0 0 #00B26B; }
.tw2-fix__label { display: block; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #00744A; }
.tw2-fix b { display: block; margin-top: 4px; font-size: 16px; font-weight: 600; color: #111; }
.tw2-fix p { margin-top: 4px; font-size: 15px; line-height: 1.55; color: rgba(0, 0, 0, .72); }
.tw2-line b, .tw2-carry b { font-weight: 600; }
/* "What Provis built" box: from 768px the TrueWholesale look, a full green outline with a check (phones keep the left bar) */
@media (min-width: 768px) {
  .tw2-fix { position: relative; padding: 16px 18px 16px 52px; border-radius: 16px; border-color: rgba(0, 178, 107, .28); box-shadow: none; }
  .tw2-fix::before { content: ""; position: absolute; left: 16px; top: 16px; width: 22px; height: 22px; background: url("../img/ecommerce/icon-check.svg") center / contain no-repeat; }
  .tw2-fix__label { letter-spacing: .12em; color: #007A4A; }
  .tw2-fix b { font-size: 17px; line-height: 1.35; }
  .tw2-fix p { color: rgba(0, 0, 0, .75); }
}
/* notes under the phases: one white panel, each note a soft row with a check, like TrueWholesale's panels */
.tw2-lines { display: grid; gap: 10px; margin: 16px 0 0; padding: 16px; list-style: none; border-radius: 20px; background: #fff; border: 1px solid rgba(0, 0, 0, .1); }
@media (min-width: 768px) { .tw2-lines { margin-top: 20px; padding: 20px; } }
.tw2-lines .tw2-line { position: relative; max-width: none; padding: 14px 16px 14px 50px; border-radius: 14px; background: #F6F8F7; font-size: 15px; line-height: 1.6; color: rgba(0, 0, 0, .75); }
.tw2-lines .tw2-line::before { content: ""; position: absolute; left: 16px; top: 15px; width: 22px; height: 22px; background: url("../img/ecommerce/icon-check.svg") center / contain no-repeat; }
.tw2-lines .tw2-line b { color: #111; }
@media (max-width: 767px) { .tw2-lines { gap: 8px; padding: 8px; border-radius: 18px; } .tw2-lines .tw2-line { padding: 12px 14px 12px 44px; } .tw2-lines .tw2-line::before { left: 14px; top: 13px; width: 20px; height: 20px; } }
.tw2-carry { color: rgba(255, 255, 255, .78); max-width: 42rem; }
/* closing CTA: the "carries over" note as a card with an icon */
.cs-carry { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; max-width: 42rem; padding: 16px 18px; border-radius: 16px; border: 1px solid rgba(78, 211, 156, .22); background: linear-gradient(135deg, rgba(0, 178, 107, .14), rgba(255, 255, 255, .03)); }
.cs-carry .tw2-carry { margin-top: 0; }
.cs-carry .tw2-carry + .tw2-carry { margin-top: 8px; }
.cs-carry__icon { width: 36px; height: 36px; border-radius: 10px; background: rgba(0, 178, 107, .18) url("../img/founder/icon-sparkles.svg") center / 20px no-repeat; border: 1px solid rgba(78, 211, 156, .35); }
.cs-cta__h { max-width: 15em; }
@media (min-width: 1024px) { .cs-cta__h { font-size: 42px; line-height: 1.12; } }
@media (min-width: 1280px) { .cs-cta-grid { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 48px; } }
.tw2-carry b { color: #fff; }
@media (max-width: 639px) {
  .tw2-see { display: flex; flex-wrap: wrap; align-items: center; column-gap: 16px; }
}
/* light-background "See it live" lines (CYB Wear, Karb-Tech, Emploi Retraite): label, then the links as pills */
.tw9-see { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.tw9-see > span:first-child { margin-right: 2px; color: rgba(0, 0, 0, .65); }
.tw9-live { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border-radius: 12px; border: 1px solid rgba(0, 0, 0, .14); background: #fff; font-size: 14px; font-weight: 600; color: #111; text-decoration: none; transition: border-color .2s, color .2s; }
.tw9-live:hover { border-color: #00B26B; color: #007A4A; }
.tw9-live:focus-visible { outline: 2px solid #007A4A; outline-offset: 3px; }
@media (max-width: 639px) {
  .tw9-see > span:first-child { flex-basis: 100%; }
  .tw9-live { flex: 1 1 auto; justify-content: center; min-height: 44px; }
}

/* ── v3: TrueWholesale case study ── */
.tw3-client { display: flex; align-items: center; gap: 12px; }
.tw3-client img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; object-position: 50% 20%; border: 1px solid rgba(255, 255, 255, .25); flex: none; }
.tw3-client span { font-size: 14px; line-height: 1.4; color: rgba(255, 255, 255, .78); }
.tw3-client b { display: block; font-weight: 600; color: #fff; }
/* one white card: eyebrow, the three labelled columns (hairline dividers from 1024px), the facts under a hairline */
.tw3-glance { padding: 22px 20px; border-radius: 24px; border: 1px solid rgba(0, 0, 0, .1); background: #fff; }
@media (min-width: 768px) { .tw3-glance { padding: 32px 36px; } }
.tw3-psr { display: grid; gap: 20px; margin: 18px 0 0; padding: 0; list-style: none; }
.tw3-psr__k { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 10px; border-radius: 999px; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; background: #FEECEB; color: #B42318; border: 1px solid rgba(222, 75, 71, .3); }
.tw3-psr__k::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.tw3-psr--solution .tw3-psr__k { background: #EAF7F0; color: #007A4A; border-color: rgba(0, 178, 107, .35); }
.tw3-psr--result .tw3-psr__k { background: #007A4A; color: #fff; border-color: #007A4A; }
.tw3-psr p { margin-top: 12px; font-size: 17px; line-height: 1.55; color: rgba(0, 0, 0, .8); }
.tw3-psr--result p { font-weight: 600; color: #111; }
@media (min-width: 1024px) {
  .tw3-psr { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; }
  .tw3-psr li { padding: 0 32px; border-left: 1px solid rgba(0, 0, 0, .1); }
  .tw3-psr li:first-child { padding-left: 0; border-left: 0; }
  .tw3-psr li:last-child { padding-right: 0; }
}
.tw3-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; margin: 24px 0 0; padding-top: 22px; border-top: 1px solid rgba(0, 0, 0, .1); }
@media (min-width: 1024px) { .tw3-facts { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px 32px; margin-top: 32px; padding-top: 28px; } }
.tw3-facts dt { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: rgba(0, 0, 0, .6); }
.tw3-facts dd { margin: 4px 0 0; font-size: 15px; line-height: 1.45; color: #111; }
/* a word longer than its box (a domain like "(practiceppeexams.ca)" on a 360px phone) wraps inside it instead of pushing the page sideways */
.cs-tws :is(p, dd, dt, li, h2, h3, h4, figcaption, blockquote) { overflow-wrap: break-word; }
/* phones: label beside value, one row per fact, on a soft tinted panel */
@media (max-width: 639px) {
  .tw3-facts { grid-template-columns: 1fr; gap: 0; margin-top: 22px; padding: 4px 16px; border-top: 0; border-radius: 16px; background: #F6F8F7; }
  .tw3-facts > div { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; padding: 13px 0; border-top: 1px solid rgba(0, 0, 0, .07); }
  .tw3-facts > div:first-of-type { border-top: 0; }
  .tw3-facts dt { padding-top: 2px; font-size: 11px; }
  .tw3-facts dd { margin: 0; font-size: 14px; }
}
.tw3-res { font-size: 15px; font-weight: 600; color: #007A4A; }

/* ── v4: TrueWholesale case study ── */
@media (min-width: 640px) {
  .tw3-facts { grid-auto-flow: row dense; }
  .tw3-facts > .tw4-wide { grid-column: span 2; }
}
@media (min-width: 1024px) {
  section[aria-labelledby="cs-cta"] .cs-btn-secondary { padding-left: 20px; padding-right: 20px; }
}

/* ── v7: TrueWholesale case study ── */
.tw7-formcard { background: #fff; color: #111; border-radius: 20px; padding: 22px 20px; }
@media (min-width: 768px) { .tw7-formcard { padding: 28px; } }
h3.cs-hd, h4.cs-hd { margin-bottom: 0; font-weight: 700; line-height: inherit; }   /* a heading that looks like the bold text it replaced */
h3.cs-label { margin-bottom: 0; }
.tw7-formcard__title { margin: 0; font-size: 20px; font-weight: 600; line-height: 1.3; color: #111; }
.tw7-field { margin-top: 14px; }
.tw7-field label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 600; color: #111; }
.tw7-field label span { margin-left: 5px; font-weight: 400; color: rgba(0, 0, 0, .62); }
.tw7-labelrow { display: flex; align-items: baseline; justify-content: space-between; }
.tw7-labelrow label { margin-bottom: 6px; }
.tw7-count { font-size: 12px; color: rgba(0, 0, 0, .62); }
.tw7-field input, .tw7-field textarea { display: block; width: 100%; box-sizing: border-box; border: 1px solid #D0D5DD; border-radius: 12px; background: #fff; color: #111; font: inherit; font-size: 16px; }
.tw7-field input { height: 48px; padding: 0 14px; }
.tw7-field textarea { padding: 12px 14px; resize: vertical; min-height: 110px; }
.tw7-field input::placeholder, .tw7-field textarea::placeholder { color: #6b7076; }
.tw7-field input:focus, .tw7-field textarea:focus { outline: none; border-color: #00744A; box-shadow: 0 0 0 3px rgba(0, 178, 107, .3); }
.tw7-submit { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 52px; margin-top: 18px; border: 0; border-radius: 14px; background: #00B26B; color: #04150D; font: inherit; font-size: 16px; font-weight: 600; cursor: pointer; }
.tw7-submit:hover { background: #00A060; }
.tw7-submit:focus-visible { outline: 3px solid #04150D; outline-offset: 2px; }
.tw7-note { margin-top: 14px; text-align: center; font-size: 13px; color: rgba(0, 0, 0, .65); }
@media (min-width: 1024px) { .tw7-hero > .grid > .cs-reveal:first-child { align-self: start; } }   /* text column level with the chips, not sunk to the screenshots' baseline */
.tw7-hero { padding-top: 84px !important; }   /* clears the fixed header, as .cs-hero-in does on TrueWholesale */
@media (min-width: 768px) { .tw7-hero { padding-top: 112px !important; } }
@media (min-width: 1024px) { .tw7-hero { padding-top: 120px !important; } }
/* client line: logo | divider | photo + name; logo on its own line on phones */
.tw7-client { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 18px; }
.tw7-person { display: flex; align-items: center; gap: 12px; }
.tw3-client img.tw7-logo { display: block; width: 168px; height: auto; border: 0; border-radius: 0; object-fit: contain; }
.tw7-sep { width: 1px; height: 36px; background: rgba(255, 255, 255, .25); }
@media (max-width: 639px) { .tw7-logo-wrap { flex-basis: 100%; } .tw7-sep { display: none; } .tw3-client img.tw7-logo { width: 150px; } }
#cs-form { scroll-margin-top: 140px; }   /* clears the fixed header, as on TrueWholesale (96px left the form's top under it) */
/* the CTA card clips without becoming a scroll container, so #cs-form scrolls the page, not the card */
.cs-tws .cs-ctacard { overflow: clip; }
.tw7-link { color: #007A4A; font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: rgba(0, 122, 74, .35); }
.cs-arrow { display: inline-block; text-decoration: none; }   /* a link's trailing arrow is never underlined */
.tw7-link:hover { text-decoration-color: currentColor; }
.cs-ctacard .tw7-link, .tw7-hero .tw7-link { text-decoration-color: currentColor; }   /* on the dark bands the green tint would vanish */
.tw7-eyebrow-link { color: #4ED39C; text-decoration: none; transition: color .2s; }   /* as TrueWholesale's hero badge: green, no underline */
.tw7-eyebrow-link:hover { color: #8FE3BF; }
.tw7-eyebrow-link:focus-visible { outline: 2px solid #4ED39C; outline-offset: 3px; border-radius: 4px; }
/* primary button arrow drawn in the label's colour, as on TrueWholesale (was a white image next to dark text) */
.cs-btn__arrow { width: 16px; height: 16px; flex: none; background: currentColor; -webkit-mask: url("../img/ecommerce/icons/btn-arrow.svg") center / contain no-repeat; mask: url("../img/ecommerce/icons/btn-arrow.svg") center / contain no-repeat; transition: transform .2s; }
a:hover .cs-btn__arrow { transform: translateX(2px); }
@media (max-width: 767px) {
  .tw3-facts .tw7-link { display: inline; }   /* inline-block put the comma or full stop after a link on a line of its own (CW-08, TV-09) */
  .tw7-eyebrow-link { display: inline-block; padding: 14px 0; margin: -14px 0; }
}

/* ── v9: TrueWholesale case study ── */
.tw7-field input, .tw7-field textarea { scroll-margin-top: 96px; }
/* "Where it is today": the dark band (figures, and the "See it live" links in its footer; with no figures a slim strip of just the links) as on TrueWholesale */
.cs-stats { position: relative; overflow: hidden; margin-top: 32px; border-radius: 24px; background: #050806; color: #fff; border: 1px solid rgba(255, 255, 255, .08); }
.cs-stats::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(60% 120% at 0% 0%, rgba(0, 178, 107, .28), transparent 60%), radial-gradient(50% 100% at 100% 100%, rgba(0, 178, 107, .16), transparent 65%); }
@media (min-width: 768px) { .cs-stats { margin-top: 40px; } }
.cs-stats__grid { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; margin: 0; padding: 26px 20px; }
@media (min-width: 640px) { .cs-stats__grid { grid-template-columns: repeat(min(var(--n, 3), 3), minmax(0, 1fr)); padding: 32px 32px; } }
@media (min-width: 1280px) { .cs-stats__grid { grid-template-columns: repeat(min(var(--n, 6), 6), minmax(0, 1fr)); gap: 0; padding: 40px 16px; } .cs-stats__item { padding: 0 24px; border-left: 1px solid rgba(255, 255, 255, .1); } .cs-stats__item:first-child { border-left: 0; } }
.cs-stats__num { font-size: 32px; font-weight: 700; line-height: 1; letter-spacing: -.02em; color: #fff; font-variant-numeric: tabular-nums; }
@media (min-width: 768px) { .cs-stats__num { font-size: 40px; } }
.cs-stats__label { margin-top: 10px; font-size: 14px; line-height: 1.4; color: #8FE3BF; }
.cs-stats__live { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 16px 20px; border-top: 1px solid rgba(255, 255, 255, .1); background: rgba(255, 255, 255, .03); }
.cs-stats--slim .cs-stats__live { border-top: 0; }
@media (min-width: 640px) { .cs-stats__live { padding: 18px 32px; } }
@media (min-width: 1024px) { .cs-stats__live { padding: 18px 40px; } }
.cs-stats__see { margin-right: 4px; font-size: 14px; color: rgba(255, 255, 255, .7); }
.cs-livebtn { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px 0 12px; border-radius: 12px; border: 1px solid rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .06); font-size: 14px; font-weight: 600; color: #fff; text-decoration: none; transition: background-color .2s, border-color .2s, transform .2s; }
.cs-livebtn img { width: 18px; height: 18px; object-fit: contain; }
.cs-livebtn:hover { border-color: #00B26B; background: rgba(0, 178, 107, .18); transform: translateY(-1px); }
.cs-livebtn:focus-visible { outline: 2px solid #4ED39C; outline-offset: 3px; }
@media (max-width: 639px) {   /* phones: the label, then one full-width button per link, equal gaps */
  .cs-stats__live { display: grid; gap: 10px; }
  .cs-stats__see { margin: 0 0 2px; }
  .cs-livebtn { width: 100%; min-height: 44px; }
}
.tw9-mbar { position: fixed; left: 0; right: 0; bottom: var(--cs-cookie-h, 0px); z-index: 40;   /* case-study.js sets --cs-cookie-h while the cookie banner is showing */ display: none; gap: 10px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  background: #000; border-top: 1px solid rgba(255,255,255,.12); transform: translateY(calc(110% + var(--cs-cookie-h, 0px))); transition: transform .25s ease; }   /* fully off-screen whatever the lift */
.tw9-mbar.on { transform: none; }
.tw9-mbar a { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; border-radius: 14px; font-weight: 600; font-size: 15px; text-decoration: none; }
.tw9-mbar__call { flex: 1; background: #00B26B; color: #04150D; }
.tw9-mbar__wa { padding: 0 16px; border: 1px solid rgba(255,255,255,.4); color: #fff; }
@media (max-width: 767px) { .tw9-mbar { display: flex; } }
@media (prefers-reduced-motion: reduce) { .tw9-mbar { transition: none; } }

/* ── v10: TrueWholesale case study ── */
.tw10-client { margin-top: 18px; }
@media (min-width: 1024px) { .tw10-client { margin-top: 22px; } }

/* ── v13: TrueWholesale case study ── */
.tw13-after { display: grid; overflow: hidden; border-radius: 24px; border: 1px solid rgba(0, 0, 0, .1); background: #fff; }   /* the card: tinted run column, padded white "how" column, no gap (as TrueWholesale's .cs-after) */
.tw13-after__run { padding: 24px 20px; background: #F6F9F7; }
.tw13-after__how { padding: 24px 20px; border-top: 1px solid rgba(0, 0, 0, .08); }
@media (min-width: 768px) { .tw13-after__run, .tw13-after__how { padding: 32px 36px; } }
@media (min-width: 1024px) {
  .tw13-after { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
  .tw13-after__run { padding: 40px; }
  .tw13-after__how { padding: 40px; border-top: 0; border-left: 1px solid rgba(0, 0, 0, .08); }
}
/* run column: icon rows on the tint; one row may be the green highlighted line */
.tw13-after__run .cs-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; padding: 16px 0; border-top: 1px solid rgba(0, 0, 0, .08); }
.tw13-after__run .cs-row:first-of-type { margin-top: 22px; }
.tw13-after__run .cs-row p { font-size: 15px; }
.cs-row__icon { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 12px; background: #fff; border: 1px solid rgba(0, 178, 107, .25); }
.cs-row__icon::before { content: ""; width: 20px; height: 20px; background: #00B26B; -webkit-mask: url("../img/mvp-estimate/check.svg") center / contain no-repeat; mask: url("../img/mvp-estimate/check.svg") center / contain no-repeat; }
.cs-row--accent { align-items: center; margin-top: 6px; padding: 14px 16px !important; border: 0 !important; border-radius: 14px; background: #007A4A; }
.cs-row--accent p { font-weight: 600; color: #fff !important; }
.cs-row--accent .cs-row__icon { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .25); }
.cs-row--accent .cs-row__icon::before { background: #fff; -webkit-mask-image: url("../img/ecommerce/icons/ec-step-shield-check.svg"); mask-image: url("../img/ecommerce/icons/ec-step-shield-check.svg"); }
/* the column heading is the link to How We Work */
.cs-after__hww { display: inline; font-size: 20px; font-weight: 600; line-height: 1.3; color: #111; text-decoration: none; }
.cs-after__hww::after { content: ""; display: inline-block; margin-left: 8px; vertical-align: -2px; width: 18px; height: 18px; background: #007A4A; -webkit-mask: url("../img/ecommerce/icons/arrow-up-right.svg") center / 1.6em no-repeat; mask: url("../img/ecommerce/icons/arrow-up-right.svg") center / 1.6em no-repeat; transition: transform .2s; }
.cs-after__hww:hover { color: #007A4A; }
.cs-after__hww:hover::after { transform: translate(2px, -2px); }
.cs-after__hww:focus-visible { outline: 2px solid #007A4A; outline-offset: 3px; border-radius: 4px; }
@media (min-width: 768px) { .cs-after__hww { font-size: 22px; } }
/* the promises: round check badge, bold promise, one grey line, hairline above each row */
.tw13-list { display: grid; margin: 20px 0 0; padding: 0; list-style: none; }
.tw13-list li { position: relative; padding: 16px 0 16px 40px; border-top: 1px solid rgba(0, 0, 0, .08); font-size: 15px; line-height: 1.5; color: rgba(0, 0, 0, .65); }
.tw13-list li::before { content: ""; position: absolute; left: 0; top: 16px; width: 26px; height: 26px; border-radius: 50%; background: #EAF7F0; }
.tw13-list li::after { content: ""; position: absolute; left: 0; top: 16px; width: 26px; height: 26px; background: #007A4A; -webkit-mask: url("../img/mvp-estimate/check.svg") center / 14px no-repeat; mask: url("../img/mvp-estimate/check.svg") center / 14px no-repeat; }
.tw13-list b { display: block; margin-bottom: 2px; font-size: 16px; font-weight: 600; color: #111; }
/* IST: its own tinted strip at the end, clock instead of a check */
.tw13-list li.cs-runlist__clock { margin-top: 8px; padding: 14px 16px 14px 52px; border: 0; border-radius: 14px; background: #F6F9F7; }
.tw13-list li.cs-runlist__clock::before { left: 14px; top: 15px; background: #fff; border: 1px solid rgba(0, 178, 107, .25); width: 24px; height: 24px; }
.tw13-list li.cs-runlist__clock::after { left: 14px; top: 15px; width: 26px; height: 26px; -webkit-mask-image: url("../img/how-we-work/icon-clock.svg"); mask-image: url("../img/how-we-work/icon-clock.svg"); -webkit-mask-size: 16px; mask-size: 16px; }
@media (min-width: 640px) { .tw13-list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 36px; } }
@media (min-width: 1024px) { .tw13-next { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 640px) and (max-width: 1023px) { .tw13-next { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ── v14: TrueWholesale case study ── */
.tw13-list li.tw14-wide { grid-column: 1 / -1; }
@media (max-width: 767px) { .tw14-hww { display: inline-block; padding: 12px 0; margin: -12px 0; } }

/* ── v15: TrueWholesale case study ── */

/* ── v16: TrueWholesale case study ── */
@media (min-width: 768px) { .cs-tws .tw2-fix p .tw7-link, .cs-tws .tw2-line .tw7-link, .cs-tws .hz-proof .tw7-link, .cs-tws .tw13-after__run p .tw7-link, .cs-tws [aria-labelledby="cs-impact"] .cs-small .tw7-link { display: inline-block; padding: 10px 0; margin: -10px 0; } }   /* tap target of a link in running copy; phones keep them inline (inline-block pushed the full stop after one onto its own line, TV-09; in-sentence links are exempt from the target-size minimum) */

/* standalone links: at least 24px to hit on tablets and desktop (phones: the 40px rules above); padding + negative margin keeps the layout */
@media (min-width: 768px) {
  .tw14-hww, .tw7-eyebrow-link, .cs-acs .acs-also__list .tw7-link { display: inline-block; padding: 8px 0; margin: -8px 0; }
}

/* body copy: a comfortable line length wherever the column is wider than ~72 characters */
@layer base {   /* in a layer, below the Tailwind utilities: an explicit max-w-* on the element wins (an unlayered rule beat them all) */
  :where(.cs-tws) :where(.tw2-line, .cs-body, .cs-small, .tw14-wide, blockquote p, .acs-also__list li) { max-width: 72ch; }
}

/* ── form states: the layout's .custom-form-box handler and case-study.js fill .error-help-block ── */
.tw7-field .error-help-block, .tw7-form > .error-help-block { margin: 6px 0 0; font-size: 14px; line-height: 1.4; color: #B42318; font-weight: 500; }
.tw7-form > .error-help-block { text-align: center; }
.tw7-field .error-help-block:empty, .tw7-form > .error-help-block:empty { display: none; }
.tw7-field [aria-invalid="true"] { border-color: #B42318 !important; box-shadow: 0 0 0 3px rgba(180, 35, 24, .12); }
.tw7-count.is-near { color: #B42318; }
.tw7-spinner { width: 16px; height: 16px; border-radius: 50%; border: 2px solid rgba(4, 21, 13, .3); border-top-color: #04150D; animation: tw7-spin .7s linear infinite; }
.tw7-spinner.d-none, .tw7-spinner:not(.d-none) + svg { display: none; }
@keyframes tw7-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .tw7-spinner { animation-duration: 2s; } }

/* initials in place of a photo on the client quote */
.cs-mono { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 999px; background: #04150D; color: #fff; font-weight: 600; font-size: 18px; letter-spacing: .02em; }

/* App section: the grid of real screens (cs/app.blade.php) and the lightbox they open in */
.cs-shots { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; margin: 32px 0 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .cs-shots { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; } }
.cs-shots li { border-radius: 16px; overflow: hidden; border: 1px solid rgba(0, 0, 0, .08); background: #fff; box-shadow: 0 20px 40px -30px rgba(0, 0, 0, .45); }
.cs-shots img { display: block; width: 100%; height: auto; }
.cs-shots span { display: block; padding: 12px 16px; font-size: 14px; line-height: 1.45; color: rgba(0, 0, 0, .7); border-top: 1px solid rgba(0, 0, 0, .06); }
.cs-zoomable li { cursor: zoom-in; }
.cs-zoomable li:focus-visible, .cs-tws .kt-shot:focus-visible, .cs-tws .sb-zoom:focus-visible, .cs-tws .sb-card-btn:focus-visible { outline: 3px solid #00744A; outline-offset: 3px; }
.cs-lightbox { position: fixed; inset: 0; z-index: 100000;   /* above the cookie banner (99999) */ display: flex; align-items: flex-start; justify-content: center; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; padding: 64px 12px 16px; background: rgba(0, 0, 0, .86); }
.cs-lightbox[hidden] { display: none; }
/* every width: the image fills the dialog width (up to its natural width, set by case-study.js); a tall one scrolls inside the dialog */
.cs-lightbox img.is-wide { width: min(100%, calc((100vh - 80px) * var(--ar))); }   /* landscape screens fit the window whole (case-study.js sets .is-wide); portrait ones fill the width and scroll */
.cs-lightbox img { display: block; width: 100%; max-width: min(100%, 1200px); height: auto; margin-block: auto; border-radius: 10px; background: #fff; }
.cs-lightbox__close { position: fixed; top: 10px; right: 12px; z-index: 1; width: 48px; height: 48px; border: 2px solid #fff; border-radius: 50%; background: #111; color: #fff; font-size: 28px; line-height: 1; cursor: pointer; box-shadow: 0 2px 10px rgba(0, 0, 0, .5); }
.cs-lightbox__close:focus-visible { outline: 3px solid #00B26B; outline-offset: 3px; }

/* Optional slots shared by the studies (see the slot table in template.blade.php) */
.cs-tws .cs-bridge { max-width: 48rem; }                        /* impact.bridge */
.cs-tws .cs-video { margin-left: auto; }                        /* quote.video */
@media (max-width: 767px) { .cs-tws .cs-video { display: inline-block; padding: 10px 0; margin: -10px 0; } }
.cs-tws .cs-pullquote { font-size: 20px; }                      /* situation.quote with a byline */
@media (min-width: 768px) { .cs-tws .cs-pullquote { font-size: 26px; } }
.cs-tws .cs-pullquote-by { display: block; margin-top: 14px; font-size: 15px; font-weight: 500; letter-spacing: 0; color: rgba(0, 0, 0, .6); }
.cs-tws .cs-zoom-hero { margin: 0; padding: 0; list-style: none; }   /* hero.zoom: the shot enlarges in the lightbox */
.cs-tws .cs-zoom-hero li { border-radius: 16px; }
.cs-tws .cs-herocap { padding: 8px 14px 10px; font-size: 13px; line-height: 1.4; color: rgba(0, 0, 0, .66); background: #fff; border-top: 1px solid rgba(0, 0, 0, .08); }   /* hero.caption */
.cs-tws [data-hero-wa] { display: none; }                             /* hero.wa_phone: "WhatsApp Us" replaces "Send Us a Message" on phones */
@media (max-width: 639px) { .cs-tws [data-hero-wa] { display: inline-flex; } .cs-tws [data-hero-msg] { display: none; } }

/* Slots added for the remaining studies (see the slot table in template.blade.php) */
.cs-tws .cs-devices { margin: 0; }                                     /* hero.devices: a bare image, no browser frame */
.cs-tws .cs-devices img { display: block; width: 100%; height: auto; }
.cs-tws .cs-stagecap { margin-top: 10px; font-size: 13px; line-height: 1.45; color: rgba(255, 255, 255, .72); }   /* hero.note, caption of hero.devices */
.cs-tws .cs-stagecap + .tw3-client { margin-top: 12px; }
.cs-tws .cs-tile__num--word { font-size: clamp(26px, 3vw, 36px) !important; }   /* a word, not a number, in an impact tile */
.cs-tws .cs-tile__num--word-lg { font-size: clamp(30px, 3.2vw, 44px) !important; line-height: 1.1; }   /* the larger word size */
@media (min-width: 1024px) { .cs-tws .cs-tile__num--word-lg { font-size: clamp(28px, 2.6vw, 38px) !important; } }
.cs-tws .cs-logo-sm { width: 150px !important; height: auto !important; }   /* hero client logo (data hero.client.logo[4]) */
@media (max-width: 767px) { .tw13-next.cs-cols-3 { grid-template-columns: minmax(0, 1fr); } }   /* three cards: one column or three across, never 2 + 1 */
@media (min-width: 768px) and (max-width: 1023px) { .tw13-next.cs-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .tw13-next.cs-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }   /* read-next: three across (data cta.next_class) */
.cs-tws .cs-chain__step--provis { border-color: rgba(0, 178, 107, .6); background: #E6F7EF; box-shadow: inset 0 4px 0 #00B26B; }   /* a step Provis built */
.cs-tws .cs-chain__step--provis .cs-chain__num { background: #00B26B; color: #04150D; }
.cs-tws .cs-chain__key--provis { display: inline-block; width: 12px; height: 12px; margin-right: 8px; border-radius: 4px; background: #E6F7EF; border: 1px solid rgba(0, 178, 107, .6); box-shadow: inset 0 2px 0 #00B26B; vertical-align: -1px; }
.cs-tws .cs-nw { white-space: nowrap; }   /* [[words]] in rich copy */
.cs-tws .cs-chain__fixref { display: block; margin-top: 2px; font-weight: 600; color: #00744A !important; }   /* "Fixed in 01 below" under a step */
.cs-tws .cs-lightlink { color: #6EE7B7 !important; }                   /* a link on the dark closing card */
@media (min-width: 1024px) {   /* column count of a route (chain.class) or the phases (built.chain_class): cs-cols-3 … cs-cols-6 */
  .cs-tws .cs-cols-3.cs-chain, .cs-tws .cs-cols-3 .cs-chain { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cs-tws .cs-cols-4.cs-chain, .cs-tws .cs-cols-4 .cs-chain { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .cs-tws .cs-cols-5.cs-chain, .cs-tws .cs-cols-5 .cs-chain { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .cs-tws .cs-cols-6.cs-chain, .cs-tws .cs-cols-6 .cs-chain { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
/* "what could go wrong" box under the phases (built.extra): <div class="cs-risk"><h3 class="cs-risk__h"> + <ul class="cs-risk__list"> */
.cs-tws .cs-risk { margin-top: 32px; border-radius: 20px; background: #fff; border: 1px solid rgba(0, 0, 0, .1); padding: 20px; }
@media (min-width: 768px) { .cs-tws .cs-risk { padding: 24px 28px; } }
.cs-tws .cs-risk__h { margin: 0; font-size: 20px; line-height: 1.3; font-weight: 600; color: #000; }
.cs-tws .cs-risk__list { margin: 14px 0 0; padding: 0; list-style: none; display: grid; gap: 10px; }
@media (min-width: 1024px) { .cs-tws .cs-risk__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 32px; } }
.cs-tws .cs-risk__list li { position: relative; padding-left: 28px; font-size: 16px; line-height: 1.55; color: rgba(0, 0, 0, .78); }
.cs-tws .cs-risk__list li::before { content: ""; position: absolute; left: 2px; top: 6px; width: 14px; height: 8px; border-left: 2.5px solid #00744A; border-bottom: 2.5px solid #00744A; transform: rotate(-45deg); }
.cs-tws .cs-risk__list b { color: #000; font-weight: 600; }

/* repeated study rules */
.cs-tws .hz-phases + .tw2-line, .cs-tws .cs-chain.hz-phases + .tw2-line { margin-top: 20px !important; }
.cs-mls .tw2-carry a, .cs-nut .tw2-carry a { color: #6EE7B7 !important; }   /* the link on the dark closing card */
.cs-tws .sb-zoom img, .cs-tws .kt-shot img, .cs-tws .pp-gal__frame img, .cs-tws .pp-stage .cs-browser img, .cs-nut .cs-browser img, .cs-tws .ml-ba picture, .cs-tws .ml-ba picture img { display: block; width: 100%; height: auto; }

/* ── TrueWholesale QA round (CS-02/05/08/09/10/11), shared by every study ── */
/* required fields: * on the label and a note under the form title (CS-10) */
.tw7-field label .tw7-req-mark { margin-left: 2px; font-weight: inherit; color: #B42318; }
.tw7-req { margin: 6px 0 0; font-size: 13px; color: rgba(0, 0, 0, .65); }
.tw7-req span { color: #B42318; }
/* "Sending…": the button is disabled until the server answers (CS-02) */
.tw7-submit:disabled { opacity: .7; cursor: progress; }
/* "How every Provis project runs" is a heading (CS-05) wrapping the label link */
.cs-hwwh { margin: 0; font: inherit; }
/* hero shot keeps its own shape at every width (it used to be stretched to the phone's height and cropped at the sides); both sit on one baseline */
.cs-hero-pair { align-items: end; }
.cs-hero-pair .cs-browser--fill img { height: auto; object-fit: initial; }
/* no phone (every study but the apps): the browser alone, centred in its column, never wider than its image */
/* browser alone (no phone shot): full stage width at every size, lined up with the chips, caption and client line */
.cs-hero-pair--solo .cs-browser { width: 100%; max-width: none; margin-inline: 0; }
/* from 1280px: full stage width, lined up with the chips and caption; the window is TrueWholesale's height
   (its mock is ~344px of screen), showing the top of the page and trimming only the bottom, never the sides */
@media (min-width: 1280px) {
  .cs-hero-pair--solo .cs-browser img { aspect-ratio: 672 / 344; height: auto; object-fit: cover; object-position: center top; }
}
/* 1024-1279px (iPad Pro, small laptops): hero and contact form stack as on tablet instead of squeezing the mockup / form beside the copy (CS-09); two columns return at 1280px */
@media (min-width: 1024px) and (max-width: 1279px) {
  .tw7-hero > .grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; row-gap: 28px; }
  .tw7-hero > .grid > * { grid-column: auto; grid-row: auto; }
  .tw7-hero > .grid .lg\:mt-8 { margin-top: 0; }
  .tw7-hero h1 { max-width: 20em; }
  .cs-ctacard > .grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
}
/* phones: the app mockup is shown too, small, over the storefront's lower-right corner (CS-11) */
/* beside the browser (640px+) the phone keeps its own shape (never cropped) and sits on the browser's baseline, sized like TrueWholesale's:
   640-1279px the phone is as tall as a TrueWholesale phone in the same column (150/170/200px) or ~26px shorter than the browser, whichever is smaller, so --q = this phone's width/height over TW's .4616;
   1280px+ it is ~26px shorter (TW) than the browser: the column is solved from the row width (browser height = 47px bar + width*k; phone width = (height - 40px)*r + 14px), --k/--r = shot height/width and phone width/height */
@media (min-width: 640px) {
  .cs-stage:has(> .cs-hero-pair--phone) { container-type: inline-size; }
  .cs-hero-pair--phone { --cb: calc(14px + ((47px + (100cqw - 38px) * var(--k) + 40px * var(--r) * var(--k)) / (1 + var(--r) * var(--k)) - 40px) * var(--r)); --ca: calc(14px + 136px * var(--q)); grid-template-columns: minmax(0, 1fr) min(var(--ca), var(--cb)) !important; }
}
@media (min-width: 768px) { .cs-hero-pair--phone { --ca: calc(14px + 156px * var(--q)); } }
@media (min-width: 1024px) { .cs-hero-pair--phone { --ca: calc(14px + 186px * var(--q)); } }
@media (min-width: 1280px) { .cs-hero-pair--phone { grid-template-columns: minmax(0, 1fr) var(--cb) !important; } }
@media (max-width: 639px) {
  .cs-hero-pair--over { position: relative; }   /* the phone's bottom edge sits on the browser picture's bottom edge */
  .cs-hero-pair--over .cs-browser { margin-right: 14%; }
  .cs-hero-pair--over .cs-phone--hero { position: absolute; right: 0; bottom: 0; width: 30%; padding: 4px; border-radius: 16px; box-shadow: 0 20px 40px -16px rgba(0, 0, 0, .7), inset 0 0 0 1px rgba(255, 255, 255, .14); }
  .cs-hero-pair--over .cs-phone--hero img { border-radius: 12px; }
}

/* ── QA round 15 Oct ── */
/* figures stay on one line and shrink to fit their card (SP-03, TV-06); long words in a card wrap rather than run out of it */
.cs-tile__num:not(.cs-tile__num--word) { white-space: nowrap; }
.cs-tile__ctx { overflow-wrap: break-word; hyphens: auto; }   /* words stay whole; the smaller sizes below make them fit at 320 */
@media (max-width: 380px) { .cs-tile { padding-left: 10px; padding-right: 10px; } .cs-tile__ctx { font-size: 13px; } }
@media (max-width: 639px) { .cs-tile__num:not(.cs-tile__num--word) { font-size: clamp(22px, 8vw, 34px); } }
.cs-tile { container-type: inline-size; }
@media (min-width: 640px) and (max-width: 1279px) { .cs-tile__num:not(.cs-tile__num--word) { font-size: clamp(28px, 4vw, 52px); } }
/* a roomy tile (two across at 768, like TrueWholesale) gets the full 52px; the narrow four-across tiles at 1024 keep the fitted size */
@container (min-width: 300px) { @media (min-width: 768px) { .cs-tile__num:not(.cs-tile__num--word) { font-size: 52px; } } }
/* 320 px phones: the phone bar's label and the phone field's hint fit on one line (ACS-03, ACS-05) */
@media (max-width: 374px) {
  .tw9-mbar { gap: 8px; }
  .tw9-mbar a { font-size: 14px; }
  .tw9-mbar__call { padding: 0 8px; white-space: nowrap; }
  .tw9-mbar__wa { padding: 0 12px; }
  .tw7-field input::placeholder { font-size: 13px; }
}

/* visually hidden text for screen readers ("opens in a new tab") */
.cs-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.cs-next-slider > li { position: relative; }   /* sr-only text inside a slider card stays inside the card, never widens the page */

/* ── Round 1: TrueWholesale phone/tablet UI, shared ── */
/* hero: the eyebrow as a badge, the surface chips as pills, the client line as a card on phones */
.tw7-hero .cs-eyebrow--light { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px 6px 10px; border-radius: 999px; border: 1px solid rgba(78, 211, 156, .3); background: rgba(0, 178, 107, .1); color: #fff; }
.tw7-hero .cs-eyebrow--light::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #4ED39C; box-shadow: 0 0 0 3px rgba(78, 211, 156, .2); }
.tw7-hero .cs-eyebrow--light a { color: #4ED39C; }
.cs-chipd { display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .14); background: rgba(255, 255, 255, .06); font-size: 13px; font-weight: 500; color: rgba(255, 255, 255, .9); }
@media (max-width: 639px) {
  .tw10-client { flex-direction: column; align-items: flex-start; gap: 12px; padding: 14px 16px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .05); }
  .tw10-client .tw7-person { width: 100%; padding-top: 12px; border-top: 1px solid rgba(255, 255, 255, .1); }
}

/* slider controls (read next) show on phones only */
.cs-slider-ctl { display: none; }
@media (max-width: 767px) {
  .cs-challenge { display: block; }   /* problems and fixes: a plain stacked list, the number above the text, the green box straight under it */
  .cs-challenge__num { display: block; margin-bottom: 8px; }
  .cs-slider-ctl { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 14px; }
}
.cs-slider-ctl__btn { position: relative; display: grid; place-items: center; width: 44px; height: 44px; flex: none; border-radius: 50%; border: 1px solid rgba(0, 0, 0, .14); background: #fff; transition: background-color .2s, border-color .2s, opacity .2s; }
.cs-slider-ctl__btn::after { content: ""; width: 18px; height: 18px; background: #111; -webkit-mask: url("../img/ecommerce/icons/btn-arrow.svg") center / contain no-repeat; mask: url("../img/ecommerce/icons/btn-arrow.svg") center / contain no-repeat; }
.cs-slider-ctl__btn--prev::after { transform: scaleX(-1); }
.cs-slider-ctl__btn:not(:disabled):active { background: #EAF7F0; border-color: #00B26B; }
.cs-slider-ctl__btn:disabled { opacity: .35; }
.cs-slider-ctl__btn:focus-visible, .cs-dots button:focus-visible { outline: 2px solid #007A4A; outline-offset: 3px; }
.cs-dots { display: flex; align-items: center; justify-content: center; gap: 4px; }
.cs-dots button { position: relative; width: 24px; height: 24px; padding: 0; background: none; }   /* 24 px hit area around the 8 px dot */
.cs-dots button::before { content: ""; position: absolute; top: 8px; left: 8px; width: 8px; height: 8px; border-radius: 999px; background: rgba(0, 0, 0, .25); transition: width .25s, left .25s, background-color .25s; }
.cs-dots button[aria-current="true"]::before { left: 1px; width: 22px; background: #007A4A; }

/* ── Round 2: TrueWholesale phone/tablet UI, shared ── */
/* situation pull-quote: on phones a tinted card with a quote mark, not a second heading */
@media (max-width: 767px) {
  .cs-tws .cs-pull { position: relative; max-width: none; text-wrap: wrap; margin: 32px 0 8px; padding: 46px 18px 18px 20px; border-radius: 16px; border-left: 4px solid #00B26B; background: #F3FAF6; text-align: left; font-size: 18px; font-weight: 500; line-height: 1.5; letter-spacing: 0; color: rgba(0, 0, 0, .85); }
  .cs-tws .cs-pull > span:first-child { display: none; }
  .cs-tws .cs-pull::before { content: ""; position: absolute; left: 20px; top: 16px; width: 26px; height: 21px; background: url("../img/case-study/truewholesale/quote-mark.svg") center / contain no-repeat; }
  .cs-tws .cs-pull .cs-pullquote-by { margin-top: 10px; font-size: 14px; }
  .cs-tws section[aria-labelledby="cs-situation"] + section { padding-top: 56px; }
}

/* the phases: one card, a numbered timeline (vertical below 1024px, a row of --n steps from there) */
.cs-steps { display: grid; gap: 0; margin: 0; padding: 24px 20px; list-style: none; border-radius: 20px; background: #fff; border: 1px solid rgba(0, 0, 0, .1); }
.cs-step { position: relative; display: flex; flex-direction: column; padding: 0 0 26px 52px; }
.cs-step:last-child { padding-bottom: 0; }
.cs-step::before { content: ""; position: absolute; left: 17px; top: 40px; bottom: 4px; width: 2px; border-radius: 2px; background: rgba(0, 178, 107, .3); }
.cs-step:last-child::before { display: none; }
.cs-step__dot { position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: #EAF7F0; border: 2px solid rgba(0, 178, 107, .45); color: #007A4A; font-size: 15px; font-weight: 700; }
.cs-step__title { padding-top: 6px; font-size: 18px; font-weight: 600; line-height: 1.3; color: #111; }
.cs-step__text { margin-top: 6px; font-size: 15px; line-height: 1.55; color: rgba(0, 0, 0, .7); }
@media (min-width: 768px) { .cs-steps { padding: 32px 36px; } }
@media (min-width: 1024px) {
  .cs-steps { grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 32px; padding: 36px 40px 40px; }
  .cs-step { padding: 56px 0 0; }
  .cs-step::before { left: 46px; right: -24px; top: 17px; bottom: auto; width: auto; height: 2px; }
  .cs-step__title { padding-top: 0; }
}

/* closing CTA: the form card with a green accent edge and a mail icon, Name and Email side by side from 640px */
.tw7-formcard { border: 1px solid rgba(255, 255, 255, .6); position: relative; overflow: hidden; padding: 24px 18px 20px; border-radius: 22px; box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); }
@media (min-width: 768px) { .tw7-formcard { padding: 30px 30px 24px; } }
.tw7-formcard::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg, #00B26B, #4ED39C); }
.tw7-formcard__head { display: flex; align-items: center; gap: 12px; }
.tw7-formcard__icon { width: 40px; height: 40px; flex: none; border-radius: 12px; background: #EAF7F0 url("../img/imc/mail.svg") center / 22px no-repeat; }
.tw7-formcard__title { font-size: 22px; line-height: 1.2; }
@media (min-width: 640px) { .tw7-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; } }

/* read next: picture cards; below 768px a swipe slider (case-study.js adds .cs-next-slider and the controls; without JS the cards stack) */
.tw13-nav { margin-top: 40px; }
.tw13-next { gap: 14px; margin-top: 14px; }
@media (min-width: 768px) { .tw13-nav { margin-top: 56px; } .tw13-next { gap: 16px; } }
@media (min-width: 1024px) { .tw13-next { gap: 20px; } }
.cs-nextcard { overflow: hidden; border-radius: 20px; border-color: rgba(0, 0, 0, .08); color: #111; }
.cs-nextcard__title { display: inline-flex; align-items: center; gap: 6px; font-size: 18px; font-weight: 600; letter-spacing: -.01em; }
.cs-nextcard .cs-card__arrow { position: static; flex: none; background-color: rgba(0, 0, 0, .35); transition: background-color .25s, transform .25s; }
.cs-nextcard:hover .cs-nextcard__title { color: #007A4A; }
.cs-nextcard:hover .cs-card__arrow { background-color: #007A4A; }
.cs-nextcard__media { display: block; overflow: hidden; border-bottom: 1px solid rgba(0, 0, 0, .06); background: #F3F4F6; }
.cs-nextcard__media img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: top center; }
.cs-nextcard__media img[src$=".svg"] { object-fit: contain; object-position: center; }
.cs-nextcard__body { position: relative; display: flex; flex: 1; flex-direction: column; align-items: flex-start; padding: 16px 18px 20px; }
@media (max-width: 767px) {
  .cs-next-slider { display: flex; gap: 12px; margin: 14px -16px 0; padding: 4px 16px 8px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 16px; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .cs-next-slider::-webkit-scrollbar { display: none; }
  .cs-next-slider:focus-visible { outline: 2px solid #007A4A; outline-offset: -2px; }
  .cs-next-slider > li { flex: 0 0 82%; scroll-snap-align: start; }
}
@media (min-width: 640px) and (max-width: 767px) { .cs-next-slider { margin-inline: -24px; padding-inline: 24px; scroll-padding-inline: 24px; } .cs-app-strip { margin-inline: -24px; padding-inline: 24px; scroll-padding-inline: 24px; } }
.cs-nextcard .tw3-res { align-self: flex-start; margin-top: 10px; padding: 4px 10px; border-radius: 8px; background: #EAF7F0; font-size: 13px; line-height: 1.45; }
.cs-nextcard .cs-small { margin-top: 10px; font-size: 14px; line-height: 1.6; color: rgba(0, 0, 0, .6); }

/* Name/Email pair: the full example text shows at every width (1280 left 4px short) */
.tw7-pair .tw7-field input { padding-inline: 12px; }
.tw7-pair .tw7-field input::placeholder { font-size: 14px; }
/* hero label on narrow phones: one wrapping block, tighter tracking, no flex columns */
@media (max-width: 639px) {
  .tw7-hero .cs-eyebrow--light { display: block; width: fit-content; max-width: 100%; font-size: 11px; letter-spacing: .06em; line-height: 1.5; border-radius: 16px; }
  .tw7-hero .cs-eyebrow--light::before { display: inline-block; margin-right: 8px; vertical-align: middle; }
}

/* client quote: padding and size like TrueWholesale */
.tw1-quote { border-radius: 24px; border: 1px solid rgba(0, 0, 0, .1); background: #F6F9F7; padding: 22px 20px; }
.tw1-quote__t { max-width: 64rem; font-size: 20px; font-weight: 600; line-height: 1.375; letter-spacing: -.025em; color: #000; }
@media (min-width: 768px) { .tw1-quote { padding: 36px 40px; } .tw1-quote__t { font-size: 28px; line-height: 1.3; } }

/* the phases sit 28px (40px from 1024) under their intro, like TrueWholesale */
.tw1-phases { margin-top: 28px; }
@media (min-width: 1024px) { .tw1-phases { margin-top: 40px; } }

/* hero: breadcrumb 16px (20px from 768) and badge 14px above the headline, like TrueWholesale */
.tw7-hero nav[aria-label="Breadcrumb"] { margin-bottom: 16px; }
.tw7-hero .cs-eyebrow--light { margin-bottom: 14px; }
@media (min-width: 768px) { .tw7-hero nav[aria-label="Breadcrumb"] { margin-bottom: 20px; } }

/* situation: nothing moves on scroll (the heading is not sticky, the reveal does not slide); the content simply fades in */
html.cs-js .cs-tws > section[aria-labelledby="cs-situation"] .cs-reveal { transform: none; }

/* ── hero fits one screen on laptops and desktops (landscape, 1024px+): the mockup is capped to the viewport height less the rest of the hero
   (--cs-hero-rest: header gap, breadcrumb, chips, caption, client line); the screenshot crops from the top ── */
@media (min-width: 1024px) and (orientation: landscape) {
  :root { --cs-hero-rest: 410px; }
  .tw7-hero { padding-bottom: 40px; }
  .cs-hero-pair--solo .cs-browser img { max-height: max(220px, calc(100svh - var(--cs-hero-rest))); object-fit: cover; object-position: center top; }
}
/* browser + phone (1280px+): --wm is the row width at which the browser is exactly the height budget (--cb solved for it, see above); both scale together, phone 40px shorter, bottoms aligned */
@media (min-width: 1280px) and (orientation: landscape) {
  .cs-hero-pair--phone { --hb: max(260px, calc(100svh - var(--cs-hero-rest) + 37px)); --wm: calc(38px + (var(--hb) - 47px) / var(--k) + (var(--hb) - 40px) * var(--r)); max-width: var(--wm); margin-inline: 0; }   /* shrunk to the screen height, it stays on the chips' left edge */
  .cs-hero-pair--phone { --cb: calc(14px + ((47px + (min(100cqw, var(--wm)) - 38px) * var(--k) + 40px * var(--r) * var(--k)) / (1 + var(--r) * var(--k)) - 40px) * var(--r)); }
}
