/*
Theme Name: Corporate Builder
Theme URI: https://corporate-builder.com
Author: eightM Corporation
Description: The Corporate Builder landing page in English, German and Spanish. A single-purpose marketing theme: one template, three language files, no blog, no comments, no customiser. Fonts are bundled, so the page renders with no external requests.
Version: 1.6.0
Requires at least: 6.0
Requires PHP: 7.4
License: Proprietary
Text Domain: corporate-builder
*/

/*
 * Every class here is prefixed cb-.
 *
 * `.btn` and `.card` were safe names in a standalone HTML file. In
 * WordPress they are not — a cookie banner or a contact-form plugin
 * ships its own, and whichever stylesheet loads second wins. The prefix
 * settles it both ways: nothing of ours reaches plugin markup, nothing
 * of theirs reaches ours.
 */

/*
 * Self-hosted, exactly as the app does it.
 *
 * This draft loaded Onest, Roboto and JetBrains Mono from
 * fonts.googleapis.com, which sends every visitor's IP address to Google on
 * every page load. A German court held that to be a GDPR violation without
 * consent (LG Muenchen I, 3 O 17493/20, January 2022) and awarded damages.
 * The app removed that exposure deliberately; a marketing page in front of
 * it, aimed at the same DACH audience, must not put it back.
 *
 * The woff2 files are in ./fonts and travel with this HTML. Variable
 * fonts, latin and latin-ext only: en/de/es need no more than that.
 */
@font-face{font-family:'Onest';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Roboto';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/roboto-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Roboto';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/roboto-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 500;font-display:swap;src:url(fonts/jetbrains-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 500;font-display:swap;src:url(fonts/jetbrains-mono-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  /*
   * Lifted from app/[locale]/globals.css rather than guessed. The draft's
   * comment said "swap for your real tokens" — this is that swap, and the
   * names are kept so every rule below keeps working.
   */
  --black:#000000;          /* --bbx-brand-ink: the tool bar, the tool cards */
  --gold:#FFD300;           /* --bbx-brand-gold: sampled from the wordmark */
  --gold-dk:#E5BE00;        /* hover only; the app prefers swapping, see .btn-g */
  --navy:#12212E;           /* --bbx-ink: body text and headings */
  --teal:#23566E;           /* --bbx-stamp: the app's action colour */
  --teal-dk:#1A4152;        /* darkened stamp; the app has no token for hover */
  --bg:#F4F6F5;             /* --bbx-paper */
  --white:#FFFFFF;          /* --bbx-surface */
  --slate:#3A4B55;          /* --bbx-soft */
  --slate-lt:#65756F;       /* --bbx-muted */
  --rule:#D3DAD7;           /* --bbx-rule */
  --go:#3F6B4A;             /* --bbx-pass */
  --hold:#8C6209;           /* --bbx-amber: the text weight, not the fill */
  --stop:#D32F2F;           /* --bbx-fail: the text weight, not the fill */

  /* The app's three faces. Onest sets headings, Roboto sets text, JetBrains
     Mono carries labels and sources — same division as the product. */
  --display:'Onest',system-ui,sans-serif;
  --body:'Roboto',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--navy);font-family:var(--body);font-size:16.5px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-0.01em;line-height:1.08;margin:0}
p{margin:0}
a{color:inherit}
:focus-visible{outline:2.5px solid var(--gold);outline-offset:3px;border-radius:2px}
.cb-wrap{max-width:1140px;margin:0 auto;padding:0 26px}
.cb-eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--slate-lt)}
.cb-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:2px;background:#EDEFEF;color:var(--slate);white-space:nowrap}
.cb-tag-soon{background:#FBF1D8;color:#8A6A12}

/* top bars */
.cb-util{background:var(--white);border-bottom:1px solid var(--rule)}
.cb-util-in{display:flex;align-items:center;gap:18px;height:46px;font-size:14px}
.cb-util .cb-lg{margin-right:auto;display:flex;align-items:center}
.cb-util img{height:24px;width:auto;display:block}
.cb-util a{color:var(--slate);text-decoration:none}
.cb-util a:hover{color:var(--navy)}
.cb-lang a{font-family:var(--mono);font-size:12px;letter-spacing:.06em;padding:0 5px}
.cb-lang a[aria-current="true"]{color:var(--navy);font-weight:500;text-decoration:underline}
.cb-bar{background:var(--black)}
.cb-bar-in{display:flex;align-items:center;gap:26px;height:52px}
.cb-bar a{color:var(--gold);text-decoration:none;font-family:var(--display);font-weight:600;font-size:13.5px;letter-spacing:.09em;text-transform:uppercase}
.cb-bar a:hover{color:#fff}
.cb-bar .cb-push{margin-left:auto}
/* 2px, not 3px: .bbx-btn in the app is a 2px radius, and a button that is
   nearly the same shape reads as a different button. */
.cb-btn{display:inline-block;font-family:var(--body);font-weight:600;font-size:15px;padding:11px 20px;border-radius:2px;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .15s,color .15s,border-color .15s;text-align:center}
/*
 * The primary button is the brand pair, not the app's interior blue.
 *
 * The teal it used is --bbx-stamp, which the app uses INSIDE the product for
 * ordinary actions. What the app's own front page leads with is gold on black:
 * the tool cards, their Open buttons and the tool bar are all that pair. A
 * marketing page in front of it should look like the page it leads to.
 *
 * The black border is not decoration. Gold on white measures 1.44:1, well
 * under the 3:1 that WCAG asks of a control's boundary, so an unbordered gold
 * button has no visible edge on this page's white sections. The border also
 * means hover changes the fill without changing the shape.
 */
.cb-btn-p{background:var(--gold);color:var(--black);border-color:var(--black)}
/* The swap the tool bar makes, rather than a darker gold. Both directions
   measure about 15:1, so neither state is the weaker one. */
.cb-btn-p:hover{background:var(--black);color:var(--gold);border-color:var(--black)}

/* Kept as an alias: .btn-g was already gold and is now the same button, so any
   markup still using it stays correct rather than quietly diverging. */
.cb-btn-g{background:var(--gold);color:var(--black);border-color:var(--black)}

/* The quiet variant, matching .bbx-btn--quiet in the app. The border moves from
   --rule to --slate-lt for the same reason the gold button gained one: --rule
   on white is 1.35:1 and is not a visible edge. */
.cb-btn-o{background:transparent;color:var(--navy);border-color:var(--slate-lt)}
.cb-btn-o:hover{background:var(--navy);color:var(--white);border-color:var(--navy)}
.cb-btn-g:hover{background:var(--black);color:var(--gold);border-color:var(--black)}
.cb-btn-lg{font-size:16px;padding:14px 26px}
.cb-btn-w{display:block;width:100%}
@media(max-width:800px){.cb-hide-s{display:none}}

/* hero */
.cb-hero{padding:70px 0 76px;background:var(--white);border-bottom:1px solid var(--rule)}
.cb-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:60px;align-items:start}
.cb-hero h1{font-size:clamp(38px,5vw,58px);margin:16px 0 0;max-width:13ch}
.cb-hero h1 u{text-decoration:none;box-shadow:inset 0 -.14em 0 var(--gold)}
.cb-hero-sub{margin-top:22px;font-size:18px;color:var(--slate);max-width:46ch;line-height:1.55}
.cb-hero-btns{margin-top:30px;display:flex;gap:11px;flex-wrap:wrap}
.cb-hero-note{margin-top:16px;font-size:13.5px;color:var(--slate-lt)}
@media(max-width:900px){.cb-hero-grid{grid-template-columns:1fr;gap:44px}.cb-hero{padding:48px 0 56px}.cb-hero h1{max-width:18ch}}

/*
 * A hero with nothing beside it — the deals page.
 *
 * .cb-hero-grid pairs the copy with the verdict card, so the 13ch headline and
 * 46ch paragraph above are measures for a half-width left column. Dropped onto
 * a page with no card, those same widths leave the copy huddled at the left
 * edge with the right half of the row blank.
 *
 * So this variant splits the copy across the row instead of narrowing it: the
 * headline takes the left, everything supporting it takes the right, and the
 * grid column sets the measure rather than a ch value written for a different
 * layout.
 *
 * Centred rather than aligned to either edge. The two halves are different
 * heights in all three languages — the German headline runs to three lines
 * where the English one runs to two — so pinning them top or bottom leaves a
 * ragged gap that changes with the translation. Centring holds the block
 * together whichever way the copy falls.
 */
.cb-hero-lead{display:grid;grid-template-columns:1.08fr .92fr;gap:22px 60px;align-items:center}
.cb-hero-lead h1{max-width:none}
.cb-hero-lead .cb-hero-sub{max-width:none;margin-top:0}
@media(max-width:900px){.cb-hero-lead{grid-template-columns:1fr;gap:26px;align-items:start}.cb-hero-lead h1{max-width:18ch}}

/* verdict card */
.cb-card{background:var(--white);border:1px solid var(--rule);border-radius:5px;overflow:hidden;box-shadow:0 16px 40px -24px rgba(22,48,61,.4)}
.cb-card-tabs{display:flex;border-bottom:1px solid var(--rule);background:#F0F2F2}
.cb-tab{flex:1;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:11px 6px;background:none;border:0;border-bottom:2px solid transparent;color:var(--slate);cursor:pointer;font-weight:500}
.cb-tab[aria-selected="true"]{background:var(--white);color:var(--navy);border-bottom-color:var(--teal)}
.cb-card-head{padding:18px 20px 15px;border-bottom:1px solid var(--rule)}
.cb-card-url{font-family:var(--mono);font-size:12.5px;color:var(--slate);word-break:break-all}
.cb-verdict{display:flex;align-items:center;gap:10px;margin-top:11px}
.cb-lamp{width:14px;height:14px;border-radius:50%;background:var(--rule);flex:none;transition:background .3s}
.cb-vtext{font-family:var(--display);font-weight:700;font-size:23px;color:var(--slate-lt);transition:color .3s}
.cb-card.cb-is-stop .cb-lamp{background:var(--stop)} .cb-card.cb-is-stop .cb-vtext{color:var(--stop)}
.cb-card.cb-is-go .cb-lamp{background:var(--go)} .cb-card.cb-is-go .cb-vtext{color:var(--go)}
.cb-rows{list-style:none;margin:0;padding:4px 0}
.cb-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:10px 20px;border-bottom:1px solid #EDEFEF;opacity:0;transform:translateY(5px)}
.cb-row:last-child{border-bottom:0}
.cb-row.cb-in{opacity:1;transform:none;transition:opacity .3s,transform .3s}
.cb-row-l{font-size:14px;color:var(--slate)}
.cb-row-v{font-family:var(--mono);font-size:12.5px;text-align:right}
.cb-g{font-family:var(--mono);font-size:12px;width:20px;text-align:center;color:var(--slate-lt)}
.cb-row[data-s="pass"] .cb-g{color:var(--go)}
.cb-row[data-s="fail"] .cb-g{color:var(--stop)}
.cb-row[data-s="soft"] .cb-g{color:var(--hold)}
.cb-row[data-s="fail"]{background:#FBF0EF}
.cb-card-foot{padding:13px 20px 16px;border-top:1px solid var(--rule);background:#F0F2F2;font-size:13px;color:var(--slate);line-height:1.5}
.cb-card-foot b{color:var(--navy)}
.cb-hero-cap{margin-top:15px;font-size:13.5px;color:var(--slate-lt);line-height:1.5}

/* sections */
.cb-sec{padding:82px 0;border-top:1px solid var(--rule)}
.cb-sec-w{background:var(--white)}
.cb-sec-d{background:var(--black);color:#DDE3E4;border-top:0}
.cb-sec h2{font-size:clamp(27px,3.4vw,38px);margin-top:13px}
.cb-sec-d h2{color:#fff}
.cb-lede{margin-top:17px;font-size:17.5px;color:var(--slate);max-width:52ch;line-height:1.55}
.cb-sec-d .cb-lede{color:#9EAAAD}
@media(max-width:800px){.cb-sec{padding:58px 0}}

/* tools */
.cb-tools{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.cb-tool{background:var(--white);border:1px solid var(--rule);border-radius:5px;padding:26px 24px;display:flex;flex-direction:column}
.cb-tool-soon{background:#FAFBFB;border-style:dashed}
/* Out of the three-column grid: with three live tools a fourth card would sit
   alone on a second row. A full-width strip says the same thing without the
   orphan, and stays quiet next to the tools that actually exist. */
.cb-tool-next{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-top:20px;flex-wrap:wrap}
.cb-tool-next h3{margin-top:6px}
.cb-tool-next .cb-tool-p{margin-bottom:0;max-width:68ch}
.cb-tool-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cb-tool h3{font-size:17px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;margin-top:14px}
.cb-tool-p{margin-top:12px;color:var(--slate);font-size:15.5px;line-height:1.6;flex:1}
.cb-spec{list-style:none;margin:18px 0 22px;padding:16px 0 0;border-top:1px solid var(--rule)}
.cb-spec li{display:flex;gap:10px;padding:5px 0;font-size:14px;color:var(--slate)}
.cb-spec li::before{content:"—";font-family:var(--mono);color:var(--slate-lt);flex:none}
@media(max-width:900px){.cb-tools{grid-template-columns:1fr}}

/* steps */
.cb-steps{display:grid;grid-template-columns:repeat(3,1fr);margin-top:44px;border-top:1px solid var(--rule)}
.cb-step{padding:26px 24px 28px;border-right:1px solid var(--rule)}
.cb-step:last-child{border-right:0}
.cb-step h3{font-size:19px;margin-top:12px}
.cb-step p{margin-top:10px;font-size:15px;color:var(--slate);line-height:1.6}
@media(max-width:900px){.cb-steps{grid-template-columns:1fr}.cb-step{border-right:0;border-bottom:1px solid var(--rule)}.cb-step:last-child{border-bottom:0}}

/* limits */
.cb-limits{margin-top:40px;border-top:1px solid #2C3335}
.cb-limit{display:grid;grid-template-columns:auto 1fr;gap:18px;padding:22px 0;border-bottom:1px solid #2C3335}
.cb-limit-g{font-family:var(--mono);font-size:13px;color:#E08A80;padding-top:3px}
.cb-limit h3{font-size:18px;color:#fff}
.cb-limit p{margin-top:8px;font-size:15px;color:#9EAAAD;line-height:1.6;max-width:62ch}

/* pricing */
.cb-pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:42px}
.cb-pcard{background:var(--white);border:1px solid var(--rule);border-radius:5px;padding:26px 24px;display:flex;flex-direction:column}
.cb-pcard h3{font-size:16px;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
.cb-pcard .cb-sub{margin-top:8px;font-size:14.5px;color:var(--slate);min-height:44px}
.cb-plans{list-style:none;margin:18px 0 0;padding:0;flex:1}
.cb-plan{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--rule)}
.cb-plan-n{font-weight:600;font-size:15px;width:66px;flex:none}
.cb-plan-q{font-family:var(--mono);font-size:13px;color:var(--slate);flex:1}
.cb-plan-p{font-family:var(--display);font-weight:700;font-size:19px;white-space:nowrap}
.cb-plan-p small{font-family:var(--body);font-weight:400;font-size:12.5px;color:var(--slate-lt)}
.cb-bundle{margin-top:20px;background:var(--navy);color:#fff;border-radius:5px;padding:28px 26px;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}
.cb-bundle h3{font-size:21px;color:#fff}
.cb-bundle p{margin-top:10px;font-size:15px;color:#A9BAC1;max-width:52ch;line-height:1.55}
.cb-bundle .cb-save{font-family:var(--mono);font-size:12px;color:var(--gold);letter-spacing:.08em;text-transform:uppercase}
/*
 * The bundle's "most popular" marker.
 *
 * Gold fill with black text, which is the brand chip and the same pair the
 * active tool-bar item uses in the app — so the one thing on the pricing
 * section that is being pointed at is pointed at in the colour the product
 * uses for "this one".
 *
 * It sits inline after the save line rather than floating over the card
 * corner: a badge positioned absolutely over a rounded corner is the first
 * thing to break when the card wraps to one column on a phone.
 */
.cb-tag-pop{
  display:inline-block;margin-left:10px;vertical-align:1px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  padding:3px 8px;border-radius:2px;
  background:var(--gold);color:var(--black);
}
@media (max-width:640px){
  /* On its own line once the card is narrow — 'Bundle, save $13 a month, most
     popular' wrapping mid-badge reads as a broken sentence. */
  .cb-tag-pop{display:block;margin:8px 0 0;width:max-content}
}
.cb-bprice{font-family:var(--display);font-weight:700;font-size:38px;text-align:right;white-space:nowrap}
.cb-pbook{margin-top:20px}
/*
 * The flagged plan.
 *
 * A chip with nothing behind it reads as decoration, so the card it sits on
 * carries the same gold on its border. Border only — no lift, no scale, no
 * shadow: the grid's three cards stay the same size and on the same baseline,
 * and a card that grows is the one that breaks the row on a narrow screen.
 */
.cb-pcard--pop{border-color:var(--gold)}

/*
 * The billing note is a footnote to the whole section, not to the last card
 * above it. Centred and measured so it reads as one, instead of as a sentence
 * left hanging under whichever card happens to end the grid.
 */
.cb-pnote{margin:22px auto 0;max-width:64ch;font-size:14.5px;color:var(--slate-lt);text-align:center}
.cb-bbook{display:flex;flex-direction:column;gap:16px}
.cb-bprice small{display:block;font-family:var(--body);font-weight:400;font-size:13px;color:#A9BAC1}
.cb-bprice del{font-size:15px;color:#7E9199;font-weight:400}
@media(max-width:900px){.cb-pgrid{grid-template-columns:1fr}.cb-bundle{grid-template-columns:1fr}.cb-bprice{text-align:left}}

/* faq */
.cb-faq{margin-top:36px;border-top:1px solid var(--rule);max-width:820px}
.cb-q{border-bottom:1px solid var(--rule)}
.cb-q summary{cursor:pointer;list-style:none;padding:19px 0;font-size:17px;font-weight:500;display:flex;justify-content:space-between;gap:18px;align-items:center;font-family:var(--display)}
.cb-q summary::-webkit-details-marker{display:none}
.cb-q summary::after{content:"+";font-family:var(--mono);color:var(--slate-lt);font-size:18px;flex:none}
.cb-q[open] summary::after{content:"–"}
.cb-q p{padding:0 0 20px;color:var(--slate);font-size:15.5px;line-height:1.65;max-width:68ch}

/*
 * A section head that fills its row, for the same reason cb-hero-lead does.
 *
 * .cb-lede is capped at 52ch because it usually introduces a grid of cards that
 * carries the width itself. Above the deal table there is no such grid — the
 * table starts at the full measure — so the lede alone in a left column leaves
 * the right half of the row blank right where the eye is about to land on a
 * full-width table.
 *
 * Heading left, lede right, centred against each other. Only the head is laid
 * out this way; whatever follows the wrapper keeps the full width.
 */
.cb-sec-lead{display:grid;grid-template-columns:1.08fr .92fr;gap:14px 60px;align-items:center}
.cb-sec-lead .cb-lede{max-width:none;margin-top:0}
@media(max-width:900px){.cb-sec-lead{grid-template-columns:1fr;gap:16px;align-items:start}}

/* deal preview table */

/*
 * The theme's skin on the cb-deal-preview plugin's markup.
 *
 * The plugin styles only structure — padding, rules, the collapse — and takes
 * every colour from `currentColor`, so that it renders sanely in any theme and
 * follows this one's palette without being told. That is why these rules live
 * HERE and not in the plugin: brand colour is the theme's business, and a
 * plugin that hardcoded #FFD300 would carry this site's palette into any other
 * install it was ever activated on.
 *
 * Loaded before the plugin's stylesheet, which is enqueued at render time and
 * therefore prints later. Where both have an opinion, these selectors are one
 * step more specific so they win regardless of order.
 */
.cb-deals-table thead th{background:var(--black);color:var(--white);opacity:1;border-color:var(--black)}
.cb-deals-table tbody tr:nth-child(odd){background:var(--white)}
.cb-deals-table tbody tr:nth-child(even){background:var(--gold)}

/*
 * Hover has to be restated per band.
 *
 * The plugin tints the row with a translucent black, which is right on an
 * inherited background and wrong on this one: composited over gold it reads as
 * a dirty olive and the band disappears. These two are a step more specific, so
 * a gold row darkens to the gold hover token and a white row to the page
 * ground, and the banding survives the pointer.
 */
.cb-deals-table tbody tr:nth-child(odd):hover{background:var(--bg)}
.cb-deals-table tbody tr:nth-child(even):hover{background:var(--gold-dk)}

/* final + footer */
.cb-final{background:var(--white);padding:80px 0;text-align:center;border-top:1px solid var(--rule)}
.cb-final h2{font-size:clamp(28px,4.2vw,46px);margin:0 auto;max-width:17ch}
.cb-final p{margin:18px auto 0;color:var(--slate);max-width:46ch;font-size:17px}
.cb-final-b{margin-top:30px;display:flex;gap:11px;justify-content:center;flex-wrap:wrap}
.cb-foot{background:var(--black);color:#8B9AA0;padding:44px 0 46px;font-size:14px}
.cb-foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:30px}
.cb-foot h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#68767B;margin:0 0 12px;font-weight:500}
.cb-foot a{display:block;padding:5px 0;color:#8B9AA0;text-decoration:none}
.cb-foot a:hover{color:var(--gold)}
.cb-foot img{height:26px;margin-bottom:12px;filter:invert(1) brightness(1.6)}
.cb-foot-b{margin-top:36px;padding-top:20px;border-top:1px solid #2C3335;font-size:12.5px;color:#68767B;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
@media(max-width:900px){.cb-foot-grid{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}.cb-row{opacity:1;transform:none}}
