/* Grenvo Counterpoint 1.0.0 — generated from tokens.json. */
:root {
  --gv-font-brand-family: Georgia, "Times New Roman", serif;
  --gv-font-display-family: Georgia, "Times New Roman", serif;
  --gv-font-ui-family: "Trebuchet MS", Trebuchet, Arial, sans-serif;
  --gv-font-numeric-family: "Trebuchet MS", Trebuchet, Arial, sans-serif;
  --gv-font-brand-weight: 700;
  --gv-font-display-weight: 700;
  --gv-font-ui-weight: 400;
  --gv-font-ui-weight-strong: 700;
  --gv-font-size-xs: 0.75rem;
  --gv-font-size-sm: 0.875rem;
  --gv-font-size-body: 1rem;
  --gv-font-size-lg: 1.125rem;
  --gv-font-size-title: 1.5rem;
  --gv-font-size-display: clamp(2rem, 4vw, 3.5rem);
  --gv-font-line-body: 1.5;
  --gv-font-line-label: 1.3;
  --gv-font-line-display: 1.1;
  --gv-font-tracking-brand: -0.045em;
  --gv-font-tracking-display: -0.03em;
  --gv-font-tracking-ui: 0;
  --gv-space-1: 0.25rem;
  --gv-space-2: 0.5rem;
  --gv-space-3: 0.75rem;
  --gv-space-4: 1rem;
  --gv-space-5: 1.25rem;
  --gv-space-6: 1.5rem;
  --gv-space-8: 2rem;
  --gv-space-10: 2.5rem;
  --gv-space-12: 3rem;
  --gv-space-16: 4rem;
  --gv-radius-small: 0.25rem;
  --gv-radius-control: 0.5rem;
  --gv-radius-card: 0.75rem;
  --gv-radius-panel: 1rem;
  --gv-radius-pill: 999px;
}

[data-theme="light"] {
  color-scheme: light;
  --gv-canvas: #F7F4F8;
  --gv-surface: #FFFFFF;
  --gv-surface-subtle: #EEE8F2;
  --gv-surface-elevated: #FBF9FC;
  --gv-text: #2A1834;
  --gv-text-muted: #685871;
  --gv-text-disabled: #998CA2;
  --gv-border: #DED3E5;
  --gv-border-subtle: #EAE3EF;
  --gv-border-control: #927FA0;
  --gv-border-control-hover: #4A285C;
  --gv-focus: #4A285C;
  --gv-focus-gap: #F7F4F8;
  --gv-primary: #4A285C;
  --gv-primary-hover: #5D3671;
  --gv-primary-active: #3B1D4C;
  --gv-on-primary: #FFFFFF;
  --gv-accent: #C7AFF0;
  --gv-on-accent: #2A1834;
  --gv-secondary: #EEE8F2;
  --gv-secondary-hover: #F0E6F8;
  --gv-secondary-active: #E6D9F0;
  --gv-on-secondary: #4A285C;
  --gv-secondary-border: #4A285C;
  --gv-selected: #E9DDF3;
  --gv-on-selected: #4A285C;
  --gv-selected-bg: #E9DDF3;
  --gv-selected-text: #4A285C;
  --gv-selected-border: #4A285C;
  --gv-sidebar: #4A285C;
  --gv-sidebar-text: #F7F1FB;
  --gv-sidebar-muted: #D7C4E5;
  --gv-sidebar-selected: #6C437F;
  --gv-sidebar-selected-text: #FFFFFF;
  --gv-sidebar-focus: #FFFFFF;
  --gv-sidebar-focus-gap: #4A285C;
  --gv-link: #4A285C;
  --gv-link-hover: #5D3671;
  --gv-link-active: #3B1D4C;
  --gv-input-bg: #FFFFFF;
  --gv-input-text: #2A1834;
  --gv-input-placeholder: #716078;
  --gv-input-border: #927FA0;
  --gv-input-border-hover: #4A285C;
  --gv-input-border-invalid: #8C2543;
  --gv-disabled-bg: #EEE8F2;
  --gv-disabled-text: #998CA2;
  --gv-disabled-border: #D4C8DD;
  --gv-success-bg: #E5F3EB;
  --gv-success-text: #205E43;
  --gv-success-border: #3A8461;
  --gv-warning-bg: #FFF0CB;
  --gv-warning-text: #6B4710;
  --gv-warning-border: #98700E;
  --gv-danger-bg: #FCE7ED;
  --gv-danger-text: #8C2543;
  --gv-danger-border: #C24768;
  --gv-info-bg: #E5EDF9;
  --gv-info-text: #234E80;
  --gv-info-border: #4E76A8;
  --gv-neutral-bg: #EEE8F2;
  --gv-neutral-text: #685871;
  --gv-neutral-border: #927FA0;
  --gv-chart-1: #4A285C;
  --gv-chart-2: #355F9C;
  --gv-chart-3: #23705C;
  --gv-chart-4: #8D5617;
  --gv-chart-5: #9B466B;
  --gv-shadow-small: 0 1px 3px rgb(42 24 52 / 0.08);
  --gv-shadow-card: 0 6px 20px rgb(42 24 52 / 0.07);
  --gv-shadow-elevated: 0 16px 40px rgb(42 24 52 / 0.14);
}

[data-theme="dark"] {
  color-scheme: dark;
  --gv-canvas: #19111F;
  --gv-surface: #24192D;
  --gv-surface-subtle: #302139;
  --gv-surface-elevated: #372A42;
  --gv-text: #F5EDF9;
  --gv-text-muted: #C2B4CD;
  --gv-text-disabled: #7F6B8F;
  --gv-border: #50395F;
  --gv-border-subtle: #3F2C4C;
  --gv-border-control: #8D6EA5;
  --gv-border-control-hover: #D8C5F2;
  --gv-focus: #EBD8FF;
  --gv-focus-gap: #19111F;
  --gv-primary: #D8C5F2;
  --gv-primary-hover: #E5D8F7;
  --gv-primary-active: #C7AFF0;
  --gv-on-primary: #291832;
  --gv-accent: #C7AFF0;
  --gv-on-accent: #2A1834;
  --gv-secondary: #3D2A4B;
  --gv-secondary-hover: #473155;
  --gv-secondary-active: #503761;
  --gv-on-secondary: #F5EDF9;
  --gv-secondary-border: #D8C5F2;
  --gv-selected: #402C51;
  --gv-on-selected: #E5D8F7;
  --gv-selected-bg: #402C51;
  --gv-selected-text: #E5D8F7;
  --gv-selected-border: #C7AFF0;
  --gv-sidebar: #201627;
  --gv-sidebar-text: #F5EDF9;
  --gv-sidebar-muted: #C2B4CD;
  --gv-sidebar-selected: #402C51;
  --gv-sidebar-selected-text: #E5D8F7;
  --gv-sidebar-focus: #EBD8FF;
  --gv-sidebar-focus-gap: #201627;
  --gv-link: #D8C5F2;
  --gv-link-hover: #EBD8FF;
  --gv-link-active: #C7AFF0;
  --gv-input-bg: #24192D;
  --gv-input-text: #F5EDF9;
  --gv-input-placeholder: #C2B4CD;
  --gv-input-border: #8D6EA5;
  --gv-input-border-hover: #D8C5F2;
  --gv-input-border-invalid: #FFB4C8;
  --gv-disabled-bg: #302139;
  --gv-disabled-text: #7F6B8F;
  --gv-disabled-border: #50395F;
  --gv-success-bg: #15382C;
  --gv-success-text: #A2E7C3;
  --gv-success-border: #559D79;
  --gv-warning-bg: #3D2F17;
  --gv-warning-text: #F6D18B;
  --gv-warning-border: #B88D48;
  --gv-danger-bg: #462332;
  --gv-danger-text: #FFB4C8;
  --gv-danger-border: #D67691;
  --gv-info-bg: #20344E;
  --gv-info-text: #A8CBFB;
  --gv-info-border: #6A98D1;
  --gv-neutral-bg: #302139;
  --gv-neutral-text: #C2B4CD;
  --gv-neutral-border: #8D6EA5;
  --gv-chart-1: #D8C5F2;
  --gv-chart-2: #83B5EC;
  --gv-chart-3: #80C9AE;
  --gv-chart-4: #E1AE67;
  --gv-chart-5: #DF8CAB;
  --gv-shadow-small: 0 1px 3px rgb(0 0 0 / 0.22);
  --gv-shadow-card: 0 6px 20px rgb(0 0 0 / 0.22);
  --gv-shadow-elevated: 0 16px 40px rgb(0 0 0 / 0.36);
}

/* Optional component recipes; all selectors are opt-in. */
.gv-theme {
  background: var(--gv-canvas);
  color: var(--gv-text);
  font-family: var(--gv-font-ui-family);
  font-size: var(--gv-font-size-body);
  line-height: var(--gv-font-line-body);
}
.gv-wordmark, .gv-display {
  font-family: var(--gv-font-display-family);
  font-weight: var(--gv-font-display-weight);
  letter-spacing: var(--gv-font-tracking-display);
  line-height: var(--gv-font-line-display);
}
.gv-wordmark { letter-spacing: var(--gv-font-tracking-brand); }
.gv-amount { font-variant-numeric: tabular-nums; text-align: right; }
.gv-sidebar {
  background: var(--gv-sidebar);
  color: var(--gv-sidebar-text);
  --gv-focus: var(--gv-sidebar-focus);
  --gv-focus-gap: var(--gv-sidebar-focus-gap);
}
.gv-link { color: var(--gv-link); text-decoration: underline; text-underline-offset: .18em; }
.gv-link:hover { color: var(--gv-link-hover); }
.gv-link:active { color: var(--gv-link-active); }
.gv-button {
  min-height: 2.75rem;
  padding: .65rem 1rem;
  border: 1px solid transparent;
  border-radius: var(--gv-radius-control);
  font: inherit;
  font-weight: var(--gv-font-ui-weight-strong);
  background: var(--gv-primary);
  color: var(--gv-on-primary);
  cursor: pointer;
}
.gv-button:hover { background: var(--gv-primary-hover); }
.gv-button:active { background: var(--gv-primary-active); }
.gv-button--secondary {
  background: var(--gv-secondary);
  color: var(--gv-on-secondary);
  border-color: var(--gv-secondary-border);
}
.gv-button--secondary:hover { background: var(--gv-secondary-hover); }
.gv-button--secondary:active { background: var(--gv-secondary-active); }
.gv-input {
  box-sizing: border-box;
  min-height: 2.75rem;
  width: 100%;
  padding: .65rem .75rem;
  border: 1px solid var(--gv-input-border);
  border-radius: var(--gv-radius-control);
  background: var(--gv-input-bg);
  color: var(--gv-input-text);
  font: inherit;
}
.gv-input::placeholder { color: var(--gv-input-placeholder); opacity: 1; }
.gv-input:hover { border-color: var(--gv-input-border-hover); }
.gv-input[aria-invalid="true"] { border-color: var(--gv-input-border-invalid); border-width: 2px; }
.gv-field-error { margin: .5rem 0 0; color: var(--gv-danger-text); }
.gv-helper { color: var(--gv-text-muted); }
.gv-button:disabled, .gv-input:disabled {
  background: var(--gv-disabled-bg);
  color: var(--gv-disabled-text);
  border-color: var(--gv-disabled-border);
  cursor: not-allowed;
}
/* An opaque gap ensures contrast around both dark and pale controls. */
.gv-focusable:focus-visible, .gv-button:focus-visible, .gv-input:focus-visible, .gv-link:focus-visible {
  outline: 2px solid var(--gv-focus);
  outline-offset: 3px;
  box-shadow: 0 0 0 3px var(--gv-focus-gap);
}
/* Forced-colors lets system colors provide the ring rather than suppressing it. */
@media (forced-colors: active) {
  .gv-focusable:focus-visible, .gv-button:focus-visible, .gv-input:focus-visible, .gv-link:focus-visible {
    outline-color: Highlight;
    box-shadow: none;
  }
}
