/* ascendant — generated by tools/generate-tokens.mjs from
   clients/ascendant/contract.tokens.json. DO NOT EDIT: change the contract
   and regenerate. `node tools/generate-tokens.mjs ascendant --check` fails
   when this file and the contract disagree. */

:root {
  /* Brand palette: private. Only the roles below may use these. */
  --_ink:                   #201640;
  --_ink-raised:            #2E2260;
  --_ink-deep:              #341D7D;
  --_ink-60:                #3C2B70;
  --_lime:                  #D7EB0C;
  --_lime-deep:             #D0DF3D;
  --_violet:                #7F5AFF;
  --_violet-deep:           #6B52D9;
  --_violet-light:          #9F86FF;
  --_lavender-pale:         #F2F1FF;
  --_lavender:              #EDEEFF;
  --_grey-pale:             #F6F5F9;
  --_hairline:              #EAE4FF;
  --_hairline-cool:         #E9E5F6;
  --_body:                  #5B5470;
  --_body-muted:            #75699F;
  --_on-dark-soft:          #D7CCFF;
  --_on-accent-soft:        #EFE9FF;
  --_white:                 #FFFFFF;

  /* fg */
  --fg-strong:              var(--_ink);
  --fg-medium:              var(--_body);
  --fg-secondary:           var(--_ink-60);
  --fg-muted:               var(--_body-muted);
  --fg-on-dark:             var(--_white);
  --fg-on-dark-soft:        var(--_on-dark-soft);
  --fg-on-accent:           var(--_white);
  --fg-on-accent-soft:      var(--_on-accent-soft);
  --fg-eyebrow:             var(--_violet-deep);
  --fg-emphasis-on-dark:    var(--_lime);
  --fg-link:                var(--_violet-deep);
  --fg-link-on-dark:        var(--_violet-light);
  --fg-on-badge:            var(--_ink);

  /* surface */
  --surface-page:           var(--_white);
  --surface-raised:         var(--_lavender-pale);
  --surface-sunken:         var(--_grey-pale);
  --surface-inverse:        var(--_ink);
  --surface-inverse-raised: var(--_ink-raised);
  --surface-accent:         var(--_violet-deep);
  --surface-marker:         var(--_lavender);
  --surface-badge:          var(--_lime);

  /* ground */
  --ground-text:            var(--fg-strong);

  /* gradient */
  --gradient-hero:          linear-gradient(180deg, var(--_ink) 4%, var(--_ink-deep) 100%);

  /* action */
  --action-primary-bg:      var(--_ink);
  --action-primary-fg:      var(--_lime);
  --action-on-dark-bg:      var(--_violet-deep);
  --action-on-dark-fg:      var(--_white);
  --action-on-accent-bg:    var(--_lime);
  --action-on-accent-fg:    var(--_ink);
  --action-ghost-border:    var(--_violet);
  --action-ghost-fg:        var(--_violet-light);

  /* border */
  --border-faint:           var(--_hairline);
  --border-card:            var(--_hairline-cool);
  --border-soft:            var(--_lavender);
  --border-on-dark:         rgba(255, 255, 255, .14);
  --border-accent:          var(--_lime);
  --border-accent-on-dark:  rgba(215, 235, 12, .5);

  /* font */
  --font-body:              Inter, sans-serif;
  --font-heading:           Inter, sans-serif;

  /* hairline */
  --hairline:               1px;

  /* radius */
  --radius-sm:              6px;
  --radius-md:              10px;
  --radius-lg:              12px;
  --radius-pill:            999px;
  --radius-xs:              3px;
  --radius-org:             100px 10px 10px 10px;

  /* shadow */
  --shadow-card-tinted:     0 2px 4px 0 #39296D;
  --shadow-card-sm:         0 2px 4px rgba(57, 41, 109, .12);
  --shadow-card-md:         0 8px 24px rgba(57, 41, 109, .14);
  --shadow-card-lg:         0 12px 32px rgba(57, 41, 109, .2);
  --shadow-image:           5px 9px 7px 0 rgba(51, 36, 98, .55);

  /* t */
  --t-hero:                 clamp(34px, 22.4px + 2.6vw, 52px);
  --t-section:              clamp(28px, 21.6px + 1.4vw, 38px);
  --t-h3:                   clamp(24px, 20px + 0.9vw, 32px);
  --t-card-title:           19px;
  --t-lead:                 clamp(17px, 16px + 0.35vw, 19px);
  --t-body:                 16px;
  --t-small:                15px;
  --t-eyebrow:              13px;
  --t-stat:                 clamp(32px, 24px + 1.8vw, 44px);
  --t-label:                15px;
  --t-tag:                  12px;

  /* lh */
  --lh-tight:               1.12;
  --lh-snug:                1.2;
  --lh-normal:              1.45;
  --lh-relaxed:             1.78;

  /* fw */
  --fw-regular:             400;
  --fw-semi:                600;
  --fw-bold:                700;

  /* space */
  --space-0:                0;
  --space-1:                4px;
  --space-2:                8px;
  --space-3:                12px;
  --space-4:                16px;
  --space-5:                20px;
  --space-6:                24px;
  --space-7:                32px;
  --space-8:                40px;
  --space-9:                48px;
  --space-10:               56px;
  --space-11:               72px;
  --space-12:               96px;

  /* measure */
  --measure-site:           1800px;
  --measure-banner:         1410px;
  --measure-content:        calc(var(--measure-banner) - var(--gutter) - var(--sidebar-width) - var(--sidebar-gap));
  --measure-prose:          60ch;
  --measure-prose-tight:    52ch;

  /* gutter */
  --gutter:                 var(--space-5);

  /* breakpoint */
  --breakpoint-mobile:      48em;

  /* sidebar */
  --sidebar-width:          315px;
  --sidebar-gap:            30px;

  /* main */
  --main-basis:             480px;
}

@media (min-width: 48em) {
  :root {
    --gutter:               var(--space-8);
  }
}

body:not(.has-sidebar) { --measure-content: var(--measure-banner); }

.c-ground--sunken { background: var(--surface-sunken); }

.c-ground--raised {
  background: var(--surface-raised);
  --fg-muted:           var(--fg-medium);
  color: var(--ground-text);
}

.c-ground--inverse {
  background: var(--surface-inverse);
  --ground-text:        var(--fg-on-dark);
  background-image: var(--gradient-hero);
  --fg-strong:          var(--fg-on-dark);
  --fg-medium:          var(--fg-on-dark-soft);
  --fg-secondary:       var(--fg-on-dark-soft);
  --fg-muted:           var(--fg-on-dark-soft);
  --fg-eyebrow:         var(--fg-emphasis-on-dark);
  --fg-link:            var(--fg-link-on-dark);
  --border-faint:       var(--border-on-dark);
  --border-card:        var(--border-on-dark);
  --surface-raised:     var(--surface-inverse-raised);
  --shadow-card-tinted: none;
  color: var(--ground-text);
}

.c-ground--accent {
  background: var(--surface-accent);
  --ground-text:        var(--fg-on-accent);
  --fg-strong:          var(--fg-on-accent);
  --fg-medium:          var(--fg-on-accent-soft);
  --fg-secondary:       var(--fg-on-accent-soft);
  --fg-muted:           var(--fg-on-accent-soft);
  --fg-eyebrow:         var(--fg-on-accent-soft);
  --fg-link:            var(--fg-on-accent);
  --border-faint:       var(--border-on-dark);
  --border-card:        var(--border-on-dark);
  --shadow-card-tinted: none;
  color: var(--ground-text);
}

.c-ground--page {
  background: var(--surface-page);
  --fg-muted:           var(--_body-muted);
  --ground-text:        var(--_ink);
  --fg-strong:          var(--_ink);
  --fg-medium:          var(--_body);
  --fg-secondary:       var(--_ink-60);
  --fg-eyebrow:         var(--_violet-deep);
  --fg-link:            var(--_violet-deep);
  --border-faint:       var(--_hairline);
  --border-card:        var(--_hairline-cool);
  --surface-raised:     var(--_lavender-pale);
  --shadow-card-tinted: 0 2px 4px 0 #39296D;
  color: var(--ground-text);
}
