/* Helmet — dark operator concept ("Groundcraft Website" comp), enqueued ONLY
 * on /platform/ (course change 2026-08-05: the dark concept is the operator/
 * night-mode page, NOT the marketing homepage; the Light comp takes `/`).
 * The Light-home foundation sheet that previously lived here is preserved at
 * helmet-platform.css.bak-lighthome — the Light lane moves it to helmet-home.css.
 *
 * Keyframes verbatim from the dark comp <style> block. NOTE this page's
 * gcMaskUp carries the rotate component — News ships a different gcMaskUp,
 * which is why these blocks are separate files rather than one sheet. */
@keyframes gcMaskUp{from{transform:translateY(105%) rotate(2deg)}to{transform:translateY(0) rotate(0)}}
@keyframes gcRoll{
  0%,26%{transform:translateY(0)}
  33%,59%{transform:translateY(-100%)}
  66%,92%{transform:translateY(-200%)}
  100%{transform:translateY(-300%)}
}
@keyframes gcRule{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes gcDrift{from{transform:translateY(0)}to{transform:translateY(-8px)}}
[data-anim="on"] [data-rv]{opacity:0;transform:translateY(22px)}
[data-anim="on"] [data-rv="in"]{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
[data-anim="on"] [data-rule]{transform:scaleX(0);transform-origin:left}
[data-anim="on"] [data-rule="in"]{transform:scaleX(1);transition:transform .9s cubic-bezier(.16,1,.3,1)}
[data-hv]{transition:background .18s ease,color .18s ease}
[data-hv]:hover{background:var(--green-500)!important;color:#12160e!important}
[data-hv]:hover [data-hvi]{color:#12160e!important}
::selection{background:var(--green-500);color:#12160e}
@media (prefers-reduced-motion:reduce){
  [data-rv],[data-rule]{opacity:1!important;transform:none!important}
  *{animation:none!important}
}

/* ------------------------------------------------------------------ *
 * B0 dark-page composition (2026-08-05).
 *
 * 1) ALWAYS-DARK token anchor. Per the design decision this page renders
 *    dark REGARDLESS of the visitor's scheme, so the comp's exact dark
 *    palette is anchored on plain `body` (this sheet only loads on
 *    /platform/, so body scoping IS the page scoping). The doc carries
 *    only var() colors; these anchors make them resolve to the comp's
 *    darks in BOTH themes. The theme toggle is consequently inert here
 *    (same posture as /news/, which is always dark by construction).
 * 2) Chrome mirror: helmet.css keys the header/footer dark treatment to
 *    [data-theme="dark"]; a light-preferring visitor lands here with the
 *    attribute set to "light", so those rules are mirrored below at
 *    page scope to keep the chrome dark over the dark canvas.
 * 3) Class carriers for what logged-out KSES strips from inline style=""
 *    (animation, transform) — L14.
 * 4) Skins for ComparisonTable / PricingTable badge on the dark comp.
 * ------------------------------------------------------------------ */

body{
  /* comp-exact darks — this page's designed (and only) state */
  --canvas:#0f110d;--surface:#141712;--surface-2:#181b15;
  --ink:#ffffff;--ink-2:#c8ccc2;--muted:#8b9086;--muted-2:#6f7569;--ink-faint:#5d635a;
  --border:#2b2f27;--border-strong:#3a3f35;--border-2:#1e2219;
  --brand-strong:#9bd45f;--brand-soft:rgba(155,212,95,.07);
  --brand-ink:#12160e;   /* ink on lime (matches chrome console button) */
  --nav-bg:#12160e;
  --lime-ink-78:rgba(18,22,14,.78);
  --lime-ink-65:rgba(18,22,14,.65);
  --lime-ink-60:rgba(18,22,14,.6);
  --lime-line-25:rgba(18,22,14,.25);
  --lime-line-18:rgba(18,22,14,.18);
  /* Forge element tokens follow the same ramp */
  --gf-color-canvas:#0f110d;--gf-color-surface:#141712;--gf-color-surface-2:#181b15;
  --gf-color-ink:#ffffff;--gf-color-ink-2:#c8ccc2;--gf-color-muted:#8b9086;
  --gf-color-border:#2b2f27;--gf-color-border-strong:#3a3f37;
  --gf-color-brand-strong:#9bd45f;--gf-color-brand-soft:rgba(155,212,95,.07);
  color-scheme:dark;
}

/* chrome mirror (helmet.css dark rules, unconditional at page scope) */
.gf-container.gc-sitehead{border-bottom-color:#2b2f27}
.gf-container.gc-sitehead::before{background:rgba(15,17,13,.86)}
img.gc-logo--dark,.gc-logo--dark{display:block}
img.gc-logo--light,.gc-logo--light{display:none}
.gc-fcol a{color:#8b9086}
.gc-fcol a:hover{color:var(--green-500)}
.gf-container.gc-sitefoot{background:#0f110d}
.gc-sitefoot-legal-in{border-top-color:#1e2219;color:#4e5449}
.gc-sitefoot-legal-in a:hover{color:var(--green-500)}

/* hero — mask reveals, word roller, terminal cursor, pulse dot */
.gc-mask-line{display:block;overflow:hidden;padding-bottom:.02em}
.gc-mask-in{display:block;animation:gcMaskUp .9s cubic-bezier(.16,1,.3,1) both}
.gc-mask-in--d1{animation-delay:.1s}
.gc-mask-flex{display:flex;align-items:baseline;gap:.22em;flex-wrap:nowrap;animation:gcMaskUp .9s .2s cubic-bezier(.16,1,.3,1) both}
.gc-roll-window{display:inline-block;height:.92em;overflow:hidden;vertical-align:bottom}
.gc-roll{display:block;animation:gcRoll 9s steps(1,end) infinite;color:var(--brand-strong)}
.gc-roll>span{display:block;height:.92em;line-height:.92em}
.gc-blink{display:inline-block;width:8px;background:var(--brand);animation:gcBlink 1s steps(1,end) infinite}
.gc-pulse-dot{width:8px;height:8px;border-radius:999px;display:inline-block;flex:0 0 auto;background:var(--brand);animation:gc-pulse 1.3s ease-in-out infinite}
.gc-cta-ghost:hover{border-color:var(--brand)!important}
.gc-t-off{display:none!important}

/* keyword marquee (raw html node; gcMarquee keyframes live in helmet.css) */
.gc-marquee-track-home{display:flex;width:max-content;animation:gcMarquee 46s linear infinite;font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2)}
.gc-marquee-set-home{display:flex;gap:26px;padding-right:26px}

/* ComparisonTable skinned to the comp's #spec table */
.gf-comparison-table{background:transparent;font-size:13.5px}
.gf-comparison-table th,.gf-comparison-table td{padding:15px 18px;border-bottom:1px solid var(--border-2);line-height:normal} /* comp cells carry no line-height — the theme's 1.5 added ~4px/row */
.gf-comparison-table__head th{font-family:var(--font-display);font-size:15px;font-weight:500;letter-spacing:0;color:var(--muted);border-bottom:1px solid var(--brand);background:transparent;white-space:nowrap;padding-top:0} /* comp header: padding 0 18px 14px */
.gf-comparison-table__head th[data-highlight="1"]{font-weight:700;color:var(--brand-strong);border-bottom-color:var(--brand)}
.gf-comparison-table__row-label{font-weight:400;color:var(--ink-2);padding-left:0}
.gf-comparison-table__cell{font-family:var(--font-mono);font-size:11.5px;color:var(--muted-2)}
.gf-comparison-table__cell[data-highlight="1"]{background:var(--brand-soft);color:var(--brand-strong)}
.gf-comparison-table__mark svg{width:15px;height:15px}
.gf-comparison-table__mark[data-v="1"]{color:var(--ink-faint)}                       /* competitors: muted tick */
td[data-highlight="1"] .gf-comparison-table__mark[data-v="1"]{color:var(--brand-strong)} /* Groundcraft: green tick */
.gf-comparison-table__footnote{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);padding:16px 0 0}
@media (max-width:640px){
  .gf-comparison-table__row-label{padding-left:1rem}
  .gf-comparison-table__footnote{padding:16px 0 0}
}

/* PricingTable badge on the Agency card */
.gf-pricing-table__badge{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--brand-ink);background:var(--brand);border-radius:999px;padding:3px 8px}
