/* Cartorga DS — bundled tokens (cascade order preserved). One request replaces 8.
 * Lives in tokens/ so @font-face url(../../../assets/fonts/...) stays valid. */

/* === tokens/fonts.css === */
/* Cartorga — self-hosted webfonts (SIL OFL). Generated from Google Fonts css2.
 * latin + latin-ext subsets; unicode-range preserves subset switching.
 * Replaces the render-blocking Google Fonts <link>. */

@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(../../../assets/fonts/ibmplexmono-500-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:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(../../../assets/fonts/ibmplexmono-500-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:'Source Sans 3';font-style:normal;font-weight:400;font-display:swap;src:url(../../../assets/fonts/sourcesans3-400-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:'Source Sans 3';font-style:normal;font-weight:400;font-display:swap;src:url(../../../assets/fonts/sourcesans3-400-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:'Source Sans 3';font-style:normal;font-weight:500;font-display:swap;src:url(../../../assets/fonts/sourcesans3-500-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:'Source Sans 3';font-style:normal;font-weight:500;font-display:swap;src:url(../../../assets/fonts/sourcesans3-500-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:'Source Sans 3';font-style:normal;font-weight:600;font-display:swap;src:url(../../../assets/fonts/sourcesans3-600-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:'Source Sans 3';font-style:normal;font-weight:600;font-display:swap;src:url(../../../assets/fonts/sourcesans3-600-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:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(../../../assets/fonts/sourceserif4-400-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:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(../../../assets/fonts/sourceserif4-400-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:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(../../../assets/fonts/sourceserif4-600-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:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(../../../assets/fonts/sourceserif4-600-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:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(../../../assets/fonts/sourceserif4-700-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:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(../../../assets/fonts/sourceserif4-700-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;}


/* === tokens/colors.css === */
/* Cartorga — Color tokens */
:root {
  /* Surfaces */
  --bg: #FBFAF7;               /* warm off-white page canvas */
  --surface: #FFFFFF;          /* cards, product-UI frames that lift off the page */
  --surface-sunken: #F4F2EC;   /* alternating section bands, quote blocks */

  /* Ink */
  --ink: #1C1A17;              /* primary text, headlines */
  --ink-soft: #5C574E;         /* body, secondary */
  --ink-muted: #8B857A;        /* captions, metadata (large text / non-essential only) */

  /* Structure */
  --line: #E6E2D9;             /* hairline borders, dividers */

  /* Accent */
  --accent: #1E4B3C;           /* deep forest / pine green — the one signature */
  --accent-hover: #163829;
  --accent-tint: #EAF0EC;      /* faint wash behind an accented element, use rarely */
  --focus-ring: #1E4B3C;

  /* Dark band (used at most once per page) */
  --dark-bg: #181614;
  --dark-ink: #F4F2EC;
  --dark-ink-soft: #B8B2A7;
  --dark-line: #33302B;
  --dark-accent: #4E8A72;      /* lightened accent, legible on dark */
}


/* === tokens/typography.css === */
/* Cartorga — Typography tokens */
:root {
  --font-serif: "Source Serif 4", Georgia, "Times New Roman", serif; /* @kind font */
  --font-sans: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; /* @kind font */
  --font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; /* @kind font */

  /* Weights */
  --fw-regular: 400;  /* @kind font */
  --fw-medium: 500;   /* @kind font */
  --fw-semibold: 600; /* @kind font */
  --fw-bold: 700;     /* @kind font */

  /* Fluid sizes (mobile → desktop) */
  --fs-display: clamp(2.25rem, 1.3rem + 4.2vw, 4.5rem);    /* @kind other */
  --fs-h1:      clamp(1.9rem, 1.4rem + 2.2vw, 3rem);       /* @kind other */
  --fs-h2:      clamp(1.4rem, 1.15rem + 1.1vw, 2rem);      /* @kind other */
  --fs-lead:    clamp(1.15rem, 1.05rem + 0.5vw, 1.375rem); /* @kind other */
  --fs-body:    1.0625rem;   /* 17px @kind font */
  --fs-body-lg: 1.125rem;    /* 18px @kind font */
  --fs-small:   0.9375rem;   /* 15px @kind font */
  --fs-eyebrow: 0.8125rem;   /* 13px @kind font */

  /* Line heights */
  --lh-display: 1.08; /* @kind font */
  --lh-h1: 1.12;      /* @kind font */
  --lh-h2: 1.18;      /* @kind font */
  --lh-lead: 1.5;     /* @kind font */
  --lh-body: 1.6;     /* @kind font */
  --lh-tight: 1.3;    /* @kind font */

  /* Tracking */
  --tr-display: -0.005em; /* @kind font */
  --tr-eyebrow: 0.08em;   /* @kind font */

  /* Reading measures */
  --measure-prose: 68ch;  /* @kind other */
}


/* === tokens/spacing.css === */
/* Cartorga — Spacing (8px base) */
:root {
  --s-1: 4px;   /* @kind spacing */
  --s-2: 8px;   /* @kind spacing */
  --s-3: 12px;  /* @kind spacing */
  --s-4: 16px;  /* @kind spacing */
  --s-6: 24px;  /* @kind spacing */
  --s-8: 32px;  /* @kind spacing */
  --s-12: 48px; /* @kind spacing */
  --s-16: 64px; /* @kind spacing */
  --s-24: 96px; /* @kind spacing */
  --s-32: 128px;/* @kind spacing */
  --s-40: 160px;/* @kind spacing */

  /* Layout */
  --max-content: 1200px;  /* @kind spacing */
  --max-reading: 720px;   /* @kind spacing */
  --page-pad: 24px;       /* @kind spacing */
  --grid-gutter: 24px;    /* @kind spacing */

  /* Section rhythm — fluid vertical padding */
  --section-y: clamp(3.5rem, 2rem + 6vw, 10rem); /* @kind spacing */
}


/* === tokens/radius.css === */
/* Cartorga — Corners, borders, shadows */
:root {
  --radius-sm: 8px;    /* @kind radius */
  --radius-md: 12px;   /* @kind radius */

  --border-hair: 1px solid var(--line);           /* @kind other */
  --border-hair-dark: 1px solid var(--dark-line); /* @kind other */

  /* The single, only shadow. Used to lift a product-UI frame. Prefer a hairline first. */
  --shadow-lift: 0 1px 2px rgba(28,26,23,0.04), 0 8px 24px rgba(28,26,23,0.06); /* @kind shadow */
}


/* === tokens/motion.css === */
/* Cartorga — Motion */
:root {
  --dur-fast: 150ms;   /* @kind other */
  --dur-base: 240ms;   /* @kind other */
  --dur-slow: 500ms;   /* @kind other */

  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);   /* @kind other */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);       /* @kind other */
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}


/* === tokens/base.css === */
/* Cartorga — Base element resets & prose defaults */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--fs-body-lg);
  line-height: var(--lh-body);
  font-feature-settings: "onum" 1;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3 {
  font-family: var(--font-serif);
  color: var(--ink);
  font-weight: var(--fw-bold);
  letter-spacing: var(--tr-display);
  text-wrap: balance;
  margin: 0;
}
h1 { font-size: var(--fs-h1); line-height: var(--lh-h1); }
h2 { font-size: var(--fs-h2); line-height: var(--lh-h2); }
p { margin: 0; text-wrap: pretty; }
p, li { max-width: var(--measure-prose); }
a { color: var(--accent); text-decoration: none; transition: color var(--dur-fast) var(--ease-standard); }
a:hover { text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; }
a:focus-visible, button:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: 2px;
}
img, svg { display: block; max-width: 100%; }
::selection { background: var(--accent-tint); color: var(--ink); }

/* Numeric variants */
.tnum { font-variant-numeric: tabular-nums lining-nums; }
.onum { font-variant-numeric: oldstyle-nums; }

