/* Lenisca design tokens — The Members' Room
   Generated from lenisca.tokens.json naming. Use semantic tokens in components; core ramps only to define themes. */

@import url("https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&family=Instrument+Sans:wght@400;500;600&display=swap");

:root {
  /* Core colour ramps */
  --nv-color-green-50: #F1F4F2;
  --nv-color-green-100: #DDE5E0;
  --nv-color-green-200: #BCCBC2;
  --nv-color-green-300: #93AA9D;
  --nv-color-green-400: #6C8A7A;
  --nv-color-green-500: #4F6E5F;
  --nv-color-green-600: #3D5A4C;
  --nv-color-green-700: #30483D;
  --nv-color-green-800: #263A31;
  --nv-color-green-900: #1E2B25;
  --nv-color-green-950: #131C18;
  --nv-color-stone-50: #F7F7F5;
  --nv-color-stone-100: #EEEEEB;
  --nv-color-stone-200: #E2E2DE;
  --nv-color-stone-300: #CFCFCA;
  --nv-color-stone-400: #B0B0AA;
  --nv-color-stone-500: #8C8C86;
  --nv-color-stone-600: #686863;
  --nv-color-stone-700: #4F4F4B;
  --nv-color-stone-800: #3A3A37;
  --nv-color-stone-900: #282826;
  --nv-color-stone-950: #1A1B1A;
  --nv-color-oxblood-50: #F8EEEC;
  --nv-color-oxblood-100: #F0DAD6;
  --nv-color-oxblood-200: #E0B5AE;
  --nv-color-oxblood-300: #CB8A80;
  --nv-color-oxblood-400: #B06258;
  --nv-color-oxblood-500: #93463D;
  --nv-color-oxblood-600: #7D3830;
  --nv-color-oxblood-700: #6E2A2A;
  --nv-color-oxblood-800: #57211F;
  --nv-color-oxblood-900: #3F1816;
  --nv-color-oxblood-950: #2A0F0E;
  --nv-color-tweed-50: #F5F2EC;
  --nv-color-tweed-100: #E9E2D5;
  --nv-color-tweed-200: #D5C9B2;
  --nv-color-tweed-300: #BCAA8B;
  --nv-color-tweed-400: #A08C6A;
  --nv-color-tweed-500: #8A7656;
  --nv-color-tweed-600: #7A6A4F;
  --nv-color-tweed-700: #62553F;
  --nv-color-tweed-800: #4A4030;
  --nv-color-tweed-900: #342D22;
  --nv-color-tweed-950: #221D16;
  --nv-color-white: #FFFFFF;

  /* Typography */
  --nv-font-family-serif: 'Newsreader', 'Tiempos Headline', Georgia, serif;
  --nv-font-family-sans: 'Instrument Sans', 'Söhne', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --nv-font-weight-regular: 400;
  --nv-font-weight-medium: 500;
  --nv-font-weight-semibold: 600;
  --nv-font-size-display: clamp(3.5rem, 2.7958rem + 3.005vw, 5.5rem);
  --nv-line-height-display: 1.0;
  --nv-font-weight-display: 400;
  --nv-letter-spacing-display: -0.02em;
  --nv-font-family-display: var(--nv-font-family-serif);
  --nv-font-size-h1: clamp(2.75rem, 2.3099rem + 1.878vw, 4rem);
  --nv-line-height-h1: 1.05;
  --nv-font-weight-h1: 400;
  --nv-letter-spacing-h1: -0.02em;
  --nv-font-family-h1: var(--nv-font-family-serif);
  --nv-font-size-h2: clamp(2.25rem, 1.9859rem + 1.127vw, 3rem);
  --nv-line-height-h2: 1.1;
  --nv-font-weight-h2: 400;
  --nv-letter-spacing-h2: -0.015em;
  --nv-font-family-h2: var(--nv-font-family-serif);
  --nv-font-size-h3: clamp(1.75rem, 1.5739rem + 0.751vw, 2.25rem);
  --nv-line-height-h3: 1.15;
  --nv-font-weight-h3: 400;
  --nv-letter-spacing-h3: -0.01em;
  --nv-font-family-h3: var(--nv-font-family-serif);
  --nv-font-size-h4: clamp(1.5rem, 1.412rem + 0.376vw, 1.75rem);
  --nv-line-height-h4: 1.2;
  --nv-font-weight-h4: 500;
  --nv-letter-spacing-h4: -0.005em;
  --nv-font-family-h4: var(--nv-font-family-serif);
  --nv-font-size-h5: clamp(1.1875rem, 1.1435rem + 0.188vw, 1.3125rem);
  --nv-line-height-h5: 1.3;
  --nv-font-weight-h5: 600;
  --nv-letter-spacing-h5: 0em;
  --nv-font-family-h5: var(--nv-font-family-sans);
  --nv-font-size-h6: clamp(1rem, 0.978rem + 0.094vw, 1.0625rem);
  --nv-line-height-h6: 1.4;
  --nv-font-weight-h6: 600;
  --nv-letter-spacing-h6: 0.01em;
  --nv-font-family-h6: var(--nv-font-family-sans);
  --nv-font-size-body-lg: clamp(1.125rem, 1.103rem + 0.094vw, 1.1875rem);
  --nv-line-height-body-lg: 1.6;
  --nv-font-weight-body-lg: 400;
  --nv-letter-spacing-body-lg: 0em;
  --nv-font-family-body-lg: var(--nv-font-family-sans);
  --nv-font-size-body: clamp(1rem, 0.978rem + 0.094vw, 1.0625rem);
  --nv-line-height-body: 1.6;
  --nv-font-weight-body: 400;
  --nv-letter-spacing-body: 0em;
  --nv-font-family-body: var(--nv-font-family-sans);
  --nv-font-size-small: clamp(0.875rem, 0.853rem + 0.094vw, 0.9375rem);
  --nv-line-height-small: 1.5;
  --nv-font-weight-small: 400;
  --nv-letter-spacing-small: 0em;
  --nv-font-family-small: var(--nv-font-family-sans);
  --nv-font-size-caption: 0.8125rem;
  --nv-line-height-caption: 1.45;
  --nv-font-weight-caption: 400;
  --nv-letter-spacing-caption: 0.01em;
  --nv-font-family-caption: var(--nv-font-family-sans);
  --nv-font-size-overline: clamp(0.75rem, 0.728rem + 0.094vw, 0.8125rem);
  --nv-line-height-overline: 1.2;
  --nv-font-weight-overline: 600;
  --nv-letter-spacing-overline: 0.16em;
  --nv-font-family-overline: var(--nv-font-family-sans);
  --nv-font-size-label: 0.9375rem;
  --nv-line-height-label: 1.2;
  --nv-font-weight-label: 500;
  --nv-letter-spacing-label: 0em;
  --nv-font-family-label: var(--nv-font-family-sans);
  --nv-font-size-figure: clamp(2rem, 1.8239rem + 0.751vw, 2.5rem);
  --nv-line-height-figure: 1.0;
  --nv-font-weight-figure: 400;
  --nv-letter-spacing-figure: 0em;
  --nv-font-family-figure: var(--nv-font-family-serif);

  /* Space (4/8 base) */
  --nv-space-0: 0;
  --nv-space-1: 0.25rem;
  --nv-space-2: 0.5rem;
  --nv-space-3: 0.75rem;
  --nv-space-4: 1rem;
  --nv-space-5: 1.25rem;
  --nv-space-6: 1.5rem;
  --nv-space-8: 2rem;
  --nv-space-10: 2.5rem;
  --nv-space-12: 3rem;
  --nv-space-16: 4rem;
  --nv-space-20: 5rem;
  --nv-space-24: 6rem;
  --nv-space-32: 8rem;
  --nv-space-40: 10rem;
  --nv-space-section: 4rem;

  /* Layout */
  --nv-container-max: 80rem;
  --nv-container-prose: 42.5rem;
  --nv-grid-columns: 4;
  --nv-grid-gutter: 1rem;
  --nv-grid-margin: 1.25rem;
  --nv-bp-sm: 480px; /* reference only; media queries can't read custom properties */
  --nv-bp-md: 768px; /* reference only; media queries can't read custom properties */
  --nv-bp-lg: 1024px; /* reference only; media queries can't read custom properties */
  --nv-bp-xl: 1280px; /* reference only; media queries can't read custom properties */
  --nv-bp-2xl: 1440px; /* reference only; media queries can't read custom properties */

  /* Shape */
  --nv-radius-none: 0px;
  --nv-radius-xs: 2px;
  --nv-radius-sm: 4px;
  --nv-radius-md: 8px;
  --nv-radius-full: 999px;
  --nv-border-width-hairline: 1px;
  --nv-border-width-emphasis: 2px;
  --nv-border-width-focus: 2px;
  --nv-focus-ring: 0 0 0 2px var(--nv-color-focus-ring-offset), 0 0 0 4px var(--nv-color-focus-ring);

  /* Elevation */
  --nv-shadow-0: none;
  --nv-shadow-1: 0 1px 2px rgba(26, 28, 26, 0.06), 0 1px 1px rgba(26, 28, 26, 0.04);
  --nv-shadow-2: 0 4px 16px rgba(26, 28, 26, 0.08), 0 1px 3px rgba(26, 28, 26, 0.06);
  --nv-shadow-3: 0 16px 48px rgba(26, 28, 26, 0.14), 0 2px 6px rgba(26, 28, 26, 0.06);

  /* Motion */
  --nv-duration-instant: 80ms;
  --nv-duration-fast: 160ms;
  --nv-duration-base: 240ms;
  --nv-duration-slow: 400ms;
  --nv-duration-deliberate: 640ms;
  --nv-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --nv-ease-enter: cubic-bezier(0, 0, 0.2, 1);
  --nv-ease-exit: cubic-bezier(0.4, 0, 1, 1);

  /* Icons, layers */
  --nv-icon-sm: 16px;
  --nv-icon-md: 24px;
  --nv-icon-lg: 32px;
  --nv-icon-xl: 48px;
  --nv-z-base: 0;
  --nv-z-sticky: 100;
  --nv-z-dropdown: 200;
  --nv-z-overlay: 300;
  --nv-z-dialog: 400;
  --nv-z-toast: 500;
}

/* Light theme (default) */
:root, [data-theme="light"] {
  color-scheme: light;
  --nv-color-bg-default: var(--nv-color-stone-100);
  --nv-color-bg-inverse: var(--nv-color-green-900);
  --nv-color-surface-default: var(--nv-color-stone-50);
  --nv-color-surface-raised: var(--nv-color-white);
  --nv-color-surface-sunken: var(--nv-color-stone-200);
  --nv-color-surface-inverse: var(--nv-color-green-900);
  --nv-color-text-primary: var(--nv-color-stone-950);
  --nv-color-text-secondary: var(--nv-color-stone-700);
  --nv-color-text-tertiary: var(--nv-color-stone-600);
  --nv-color-text-inverse: var(--nv-color-stone-100);
  --nv-color-text-inverse-secondary: var(--nv-color-stone-400);
  --nv-color-text-on-action: var(--nv-color-stone-50);
  --nv-color-text-accent: var(--nv-color-oxblood-700);
  --nv-color-text-link: var(--nv-color-green-700);
  --nv-color-text-link-hover: var(--nv-color-green-900);
  --nv-color-text-disabled: #85857F;
  --nv-color-border-subtle: var(--nv-color-stone-300);
  --nv-color-border-default: var(--nv-color-stone-400);
  --nv-color-border-strong: var(--nv-color-stone-600);
  --nv-color-border-inverse: #3A4A42;
  --nv-color-action-primary: var(--nv-color-green-900);
  --nv-color-action-primary-hover: var(--nv-color-green-700);
  --nv-color-action-primary-active: var(--nv-color-green-950);
  --nv-color-action-secondary-hover: var(--nv-color-stone-200);
  --nv-color-action-secondary-active: var(--nv-color-stone-300);
  --nv-color-action-disabled: var(--nv-color-stone-300);
  --nv-color-accent-default: var(--nv-color-oxblood-700);
  --nv-color-accent-subtle: var(--nv-color-oxblood-50);
  --nv-color-status-success: #2F6B45;
  --nv-color-status-success-subtle: #E3EFE6;
  --nv-color-status-warning: #8A5A12;
  --nv-color-status-warning-subtle: #F6EBD4;
  --nv-color-status-error: #A3302A;
  --nv-color-status-error-subtle: #F7E4E1;
  --nv-color-status-info: #2F4F6E;
  --nv-color-status-info-subtle: #E3EAF2;
  --nv-color-focus-ring: var(--nv-color-green-900);
  --nv-color-focus-ring-offset: var(--nv-color-stone-50);
  --nv-color-overlay-scrim: rgba(19, 28, 24, 0.56);
}

/* Dark theme: follows the OS unless the page forces light */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --nv-color-bg-default: var(--nv-color-green-950);
    --nv-color-bg-inverse: var(--nv-color-stone-100);
    --nv-color-surface-default: var(--nv-color-green-900);
    --nv-color-surface-raised: var(--nv-color-green-800);
    --nv-color-surface-sunken: #0F1613;
    --nv-color-surface-inverse: var(--nv-color-stone-100);
    --nv-color-text-primary: var(--nv-color-stone-100);
    --nv-color-text-secondary: var(--nv-color-stone-400);
    --nv-color-text-tertiary: #A3A39D;
    --nv-color-text-inverse: var(--nv-color-green-900);
    --nv-color-text-inverse-secondary: var(--nv-color-stone-700);
    --nv-color-text-on-action: var(--nv-color-green-900);
    --nv-color-text-accent: var(--nv-color-oxblood-300);
    --nv-color-text-link: var(--nv-color-green-200);
    --nv-color-text-link-hover: var(--nv-color-stone-50);
    --nv-color-text-disabled: #6C7A72;
    --nv-color-border-subtle: #3A4A42;
    --nv-color-border-default: #4A5A52;
    --nv-color-border-strong: var(--nv-color-green-400);
    --nv-color-border-inverse: var(--nv-color-stone-300);
    --nv-color-action-primary: var(--nv-color-stone-100);
    --nv-color-action-primary-hover: var(--nv-color-green-200);
    --nv-color-action-primary-active: var(--nv-color-stone-300);
    --nv-color-action-secondary-hover: var(--nv-color-green-800);
    --nv-color-action-secondary-active: var(--nv-color-green-700);
    --nv-color-action-disabled: var(--nv-color-green-800);
    --nv-color-accent-default: var(--nv-color-oxblood-300);
    --nv-color-accent-subtle: var(--nv-color-oxblood-900);
    --nv-color-status-success: #7FBF95;
    --nv-color-status-success-subtle: #1F3A2A;
    --nv-color-status-warning: #E0B45E;
    --nv-color-status-warning-subtle: #3A2E15;
    --nv-color-status-error: #F08A80;
    --nv-color-status-error-subtle: #3D1C19;
    --nv-color-status-info: #9DB8D6;
    --nv-color-status-info-subtle: #1C2A3A;
    --nv-color-focus-ring: var(--nv-color-stone-100);
    --nv-color-focus-ring-offset: var(--nv-color-green-950);
    --nv-color-overlay-scrim: rgba(0, 0, 0, 0.64);
  }
}
[data-theme="dark"] {
  color-scheme: dark;
  --nv-color-bg-default: var(--nv-color-green-950);
  --nv-color-bg-inverse: var(--nv-color-stone-100);
  --nv-color-surface-default: var(--nv-color-green-900);
  --nv-color-surface-raised: var(--nv-color-green-800);
  --nv-color-surface-sunken: #0F1613;
  --nv-color-surface-inverse: var(--nv-color-stone-100);
  --nv-color-text-primary: var(--nv-color-stone-100);
  --nv-color-text-secondary: var(--nv-color-stone-400);
  --nv-color-text-tertiary: #A3A39D;
  --nv-color-text-inverse: var(--nv-color-green-900);
  --nv-color-text-inverse-secondary: var(--nv-color-stone-700);
  --nv-color-text-on-action: var(--nv-color-green-900);
  --nv-color-text-accent: var(--nv-color-oxblood-300);
  --nv-color-text-link: var(--nv-color-green-200);
  --nv-color-text-link-hover: var(--nv-color-stone-50);
  --nv-color-text-disabled: #6C7A72;
  --nv-color-border-subtle: #3A4A42;
  --nv-color-border-default: #4A5A52;
  --nv-color-border-strong: var(--nv-color-green-400);
  --nv-color-border-inverse: var(--nv-color-stone-300);
  --nv-color-action-primary: var(--nv-color-stone-100);
  --nv-color-action-primary-hover: var(--nv-color-green-200);
  --nv-color-action-primary-active: var(--nv-color-stone-300);
  --nv-color-action-secondary-hover: var(--nv-color-green-800);
  --nv-color-action-secondary-active: var(--nv-color-green-700);
  --nv-color-action-disabled: var(--nv-color-green-800);
  --nv-color-accent-default: var(--nv-color-oxblood-300);
  --nv-color-accent-subtle: var(--nv-color-oxblood-900);
  --nv-color-status-success: #7FBF95;
  --nv-color-status-success-subtle: #1F3A2A;
  --nv-color-status-warning: #E0B45E;
  --nv-color-status-warning-subtle: #3A2E15;
  --nv-color-status-error: #F08A80;
  --nv-color-status-error-subtle: #3D1C19;
  --nv-color-status-info: #9DB8D6;
  --nv-color-status-info-subtle: #1C2A3A;
  --nv-color-focus-ring: var(--nv-color-stone-100);
  --nv-color-focus-ring-offset: var(--nv-color-green-950);
  --nv-color-overlay-scrim: rgba(0, 0, 0, 0.64);
}

/* Responsive layout tokens */
@media (min-width: 480px) { :root { --nv-grid-margin: 1.5rem; } }
@media (min-width: 768px) { :root { --nv-grid-columns: 8; --nv-grid-gutter: 1.5rem; --nv-grid-margin: 2.5rem; --nv-space-section: 6rem; } }
@media (min-width: 1024px) { :root { --nv-grid-columns: 12; --nv-grid-margin: 3rem; } }
@media (min-width: 1280px) { :root { --nv-grid-gutter: 2rem; --nv-grid-margin: 5rem; --nv-space-section: 8rem; } }

/* Reduced motion: every duration collapses to instant; components drop transforms */
@media (prefers-reduced-motion: reduce) {
  :root { --nv-duration-fast: 80ms; --nv-duration-base: 80ms; --nv-duration-slow: 80ms; --nv-duration-deliberate: 80ms; }
  html { scroll-behavior: auto; }
}
