/* GENERATED by scripts/build-ds-css.mjs. Do not edit.
 * The flattened form of styles.css and the token files it imports, so a
 * page pays one request for them instead of nine down a serial chain.
 * Edit tokens/*.css and rebuild. */
/* tokens/fonts.css */
/* Camrose Buzz webfonts — self-hosted variable fonts from assets/fonts/.

   Three faces, all with real newspaper history.

   Frank Ruhl Libre — display. The Latin companion to Frank-Rühl, cut in 1908 and the face
                      Hebrew newspapers set for most of the twentieth century. Sturdy, dark,
                      low enough in contrast to have survived newsprint — which is why it
                      holds up at 22px as well as at 60px.
   Libre Franklin   — interface. An open interpretation of Morris Fuller Benton's Franklin
                      Gothic, cut for American Type Founders in 1902 and the workhorse of
                      North American newspapers for a century.
   EB Garamond      — editorial prose. Claude Garamont's sixteenth-century romans, digitised
                      from scans of the 1592 Egenolff-Berner specimen sheet. It runs small,
                      so --type-prose sets it at 21px rather than the 17px UI floor.

   SUBSTITUTION FLAG: no font files were supplied with the brief. These are our picks.
   All three are open-licensed and served from this project, not a third-party CDN. */
@font-face{font-family:"Frank Ruhl Libre";src:url("/_ds/camrose-buzz-design-system-1c642bfb-431c-4600-acfe-1bd7095929d9/assets/fonts/frank-ruhl-libre-var.woff2") format("woff2-variations");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Libre Franklin";src:url("/_ds/camrose-buzz-design-system-1c642bfb-431c-4600-acfe-1bd7095929d9/assets/fonts/libre-franklin-var.woff2") format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Libre Franklin";src:url("/_ds/camrose-buzz-design-system-1c642bfb-431c-4600-acfe-1bd7095929d9/assets/fonts/libre-franklin-italic-var.woff2") format("woff2-variations");font-weight:100 900;font-style:italic;font-display:swap}
@font-face{font-family:"EB Garamond";src:url("/_ds/camrose-buzz-design-system-1c642bfb-431c-4600-acfe-1bd7095929d9/assets/fonts/eb-garamond-var.woff2") format("woff2-variations");font-weight:400 800;font-style:normal;font-display:swap}
@font-face{font-family:"EB Garamond";src:url("/_ds/camrose-buzz-design-system-1c642bfb-431c-4600-acfe-1bd7095929d9/assets/fonts/eb-garamond-italic-var.woff2") format("woff2-variations");font-weight:400 800;font-style:italic;font-display:swap}
/* tokens/colors.css */
:root{
  /* ---- Base palette: Camrose blue ----
     EXACT REFERENCE PENDING. The brief promises official "Camrose blue" and
     "floral pink" values; these are considered stand-ins, tuned for AA contrast. */
  --blue-50:#eef4fa;
  --blue-100:#dbe8f4;
  --blue-200:#b3cde6;
  --blue-300:#7fabd6;
  --blue-400:#4d88c3;
  --blue-500:#1f6cb4;
  --blue-600:#15559a;
  --blue-700:#10437b;
  --blue-800:#0c325c;
  --blue-900:#08213d;

  /* ---- Base palette: floral pink ---- */
  --pink-50:#fbeee9;
  --pink-100:#f8dcd9;
  --pink-200:#f2bcc2;
  --pink-300:#ea94a4;
  --pink-400:#e0708b;
  --pink-500:#cc4d6f;
  --pink-600:#b03a5b;
  --pink-700:#8b2c46;
  --pink-800:#682134;

  /* ---- Paper and ink ----
     The page is aged cream; text is near-black ink. Warm greys throughout —
     nothing in this system is a cool grey. */
  --white:#ffffff;
  --paper:#f4ecd8;
  --neutral-50:#fdfaf3;
  --neutral-100:#f0e8d3;
  --neutral-200:#e6dcc4;
  --neutral-300:#cec1a4;
  --neutral-400:#9c9079;
  --neutral-500:#75695a;
  --neutral-600:#574e40;
  --neutral-700:#3d362c;
  --neutral-800:#26211a;
  --neutral-900:#141210;

  /* ---- Semantic status. Warmed to sit on cream. ---- */
  --green-100:#dfeada;--green-600:#3f6b32;--green-800:#2b4a22;
  --amber-100:#f7e9c6;--amber-600:#8a6208;--amber-800:#5f4405;
  --red-100:#f7ddd6;--red-600:#a93a28;--red-800:#75261a;

  /* ================= Semantic aliases ================= */
  --brand:var(--blue-500);
  --brand-strong:var(--blue-700);
  --brand-soft:var(--blue-50);
  --accent:var(--pink-400);
  --accent-strong:var(--pink-600);
  --accent-soft:var(--pink-50);

  --surface-page:var(--paper);
  --surface-card:var(--neutral-50);
  --surface-sunken:var(--neutral-100);
  --surface-band:var(--paper);
  --surface-dark:var(--neutral-900);
  --surface-brand:var(--blue-500);
  --surface-brand-soft:var(--neutral-100);
  --surface-accent-soft:var(--pink-50);
  --surface-overlay:rgba(20,18,16,.6);

  /* Headings are ink, not blue — Camrose blue is reserved for links and buttons. */
  --text-heading:var(--neutral-900);
  --text-body:var(--neutral-800);
  --text-muted:var(--neutral-500);
  --text-inverse:var(--neutral-50);
  --text-link:var(--blue-600);
  --text-link-hover:var(--pink-600);

  --border-subtle:var(--neutral-200);
  --border-strong:var(--neutral-300);
  --border-rule:var(--neutral-400);
  --border-brand:var(--blue-200);
  --border-accent:var(--pink-200);
  --focus-ring:var(--pink-500);

  --status-live-bg:var(--green-100);--status-live-fg:var(--green-800);
  --status-warn-bg:var(--amber-100);--status-warn-fg:var(--amber-800);
  --status-stop-bg:var(--red-100);--status-stop-fg:var(--red-800);
  --status-info-bg:var(--blue-100);--status-info-fg:var(--blue-800);
}
/* tokens/typography.css */
:root{
  --font-display:"Frank Ruhl Libre","Times New Roman",serif;
  --font-body:"Libre Franklin","Helvetica Neue",sans-serif;
  --font-editorial:"EB Garamond","Iowan Old Style",Garamond,serif;
  --font-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;

  --weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-black:900;

  /* Sizes. Body floor is 17px — the brief asks for comfortable reading for older residents. */
  --text-2xs:12px;
  --text-xs:13px;
  --text-sm:15px;
  --text-base:17px;
  --text-lg:19px;
  --text-xl:22px;
  --text-2xl:27px;
  --text-3xl:34px;
  --text-4xl:44px;
  --text-5xl:56px;
  --text-prose:21px;  /* EB Garamond runs small; prose is set larger than UI body */

  --leading-tight:1.08;
  --leading-snug:1.25;
  --leading-normal:1.5;
  --leading-relaxed:1.65;

  --tracking-tight:-0.02em;
  --tracking-normal:0;
  --tracking-wide:0.04em;
  --tracking-caps:0.09em;

  /* Composite roles */
  --type-display:var(--weight-black) var(--text-5xl)/var(--leading-tight) var(--font-display);
  --type-h1:var(--weight-bold) var(--text-4xl)/var(--leading-tight) var(--font-display);
  --type-h2:var(--weight-bold) var(--text-3xl)/var(--leading-snug) var(--font-display);
  --type-h3:var(--weight-bold) var(--text-xl)/var(--leading-snug) var(--font-display);
  --type-body:var(--weight-regular) var(--text-base)/var(--leading-relaxed) var(--font-body);
  --type-prose:var(--weight-regular) var(--text-prose)/var(--leading-relaxed) var(--font-editorial);
  --type-quote:var(--weight-regular) var(--text-3xl)/var(--leading-snug) var(--font-editorial);
  --type-body-sm:var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-body);
  --type-label:var(--weight-semibold) var(--text-sm)/1.3 var(--font-body);
  --type-eyebrow:var(--weight-bold) var(--text-xs)/1.2 var(--font-display);
}
/* tokens/spacing.css */
:root{
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;
  --space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;
  --space-20:80px;--space-24:96px;

  --gutter:var(--space-6);
  --section-y:var(--space-16);
  --card-padding:var(--space-5);
  --container-max:1200px;
  --content-max:680px;   /* story measure, ~70 characters */
  --rail-width:300px;    /* reserved for future sponsor/banner placements */
  --tap-min:44px;
}
/* tokens/radius.css */
:root{
  --radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-pill:999px;
  --radius-card:var(--radius-lg);
  --radius-control:var(--radius-sm);
  --radius-button:var(--radius-pill);
  --border-width:1px;--border-width-thick:2px;
}
/* tokens/elevation.css */
:root{
  --shadow-none:none;
  --shadow-xs:0 1px 2px rgba(20,18,16,.05);
  --shadow-sm:0 1px 3px rgba(20,18,16,.07),0 1px 2px rgba(20,18,16,.04);
  --shadow-md:0 4px 12px rgba(20,18,16,.10),0 1px 3px rgba(20,18,16,.05);
  --shadow-lg:0 12px 28px rgba(20,18,16,.13),0 2px 6px rgba(20,18,16,.06);
  --shadow-focus:0 0 0 3px rgba(204,77,111,.32);
  --scrim-bottom:linear-gradient(to top,rgba(20,18,16,.74) 0%,rgba(20,18,16,.3) 45%,rgba(20,18,16,0) 100%); /* @kind other */
}
/* tokens/motion.css */
:root{
  --duration-fast:120ms; /* @kind other */
  --duration-base:180ms; /* @kind other */
  --duration-slow:280ms; /* @kind other */
  --ease-out:cubic-bezier(.2,.8,.3,1); /* @kind other */
  --ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
  --transition-control:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out);
  --transition-card:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out);
  --lift-hover:translateY(-2px);/* @kind other */
  --press-scale:0.98; /* @kind other */
}
@media (prefers-reduced-motion:reduce){:root{
  --duration-fast:0ms; /* @kind other */
  --duration-base:0ms; /* @kind other */
  --duration-slow:0ms; /* @kind other */
  --lift-hover:none; /* @kind other */
  --press-scale:1; /* @kind other */
}}
/* tokens/base.css */
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);-webkit-font-smoothing:antialiased;text-wrap:pretty}
h1,h2,h3,h4{margin:0;color:var(--text-heading);font-family:var(--font-display);letter-spacing:var(--tracking-tight)}
h1{font:var(--type-h1)}h2{font:var(--type-h2)}h3{font:var(--type-h3)}
p{margin:0 0 var(--space-4)}
a{color:var(--text-link);text-decoration-thickness:1px;text-underline-offset:2px;transition:var(--transition-control)}
a:hover{color:var(--text-link-hover)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-xs)}
img{max-width:100%;display:block}
