/* GENERATED by scripts/build-ds.py from ds/styles.css and ds/tokens/.
 * Do not edit. Edit the token files and re-run the script.
 * The webfont request is NOT here: it is a <link> in the document head,
 * so it does not wait for this file to be parsed first. */

/* ---- tokens/fonts.css ---- */
/* GENERATED by scripts/build-fonts.py. Do not edit by hand.
 * Self-hosted so nothing render-blocking is fetched cross-origin and
 * no visitor IP reaches a third party. font-display: swap is Google's
 * own, and is what stops the page holding text back while a face loads.
 *
 * The wordmark is an SVG, so the logo's own face is never needed here.
 * Body and interface text is IBM Plex Sans, headlines are Source Serif 4,
 * record data is IBM Plex Mono. */

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexMono-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexMono-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexMono-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexMono-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: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 450;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-450-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 Sans';
  font-style: normal;
  font-weight: 450;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-450-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: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-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 Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-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: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-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: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/ds/fonts/IBMPlexSans-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 600;
  font-display: swap;
  src: url(/ds/fonts/SourceSerif4-400_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: 400 600;
  font-display: swap;
  src: url(/ds/fonts/SourceSerif4-400_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;
}

/* ---- tokens/colors.css ---- */
:root{
/* --- brand base --------------------------------------------------------- */
--green-50:#eaf7f2;--green-100:#cdece1;--green-200:#9ad9c3;--green-300:#63c9a7;
--green-400:#2fb98d;--green-500:#00B07D;--green-550:#00A071;--green-600:#00875f;--green-650:#00825B;--green-700:#006b4c;--green-800:#04503a;
--navy-50:#eef2f8;--navy-100:#dbe3ef;--navy-200:#b3c1da;--navy-300:#7f96c0;
--navy-400:#4a6a9e;--navy-500:#2a5289;--navy-600:#1c4073;--navy-700:#16335c;--navy-800:#102544;--navy-900:#0b1a30;
/* --- neutrals (cool, faintly navy-tinted) ------------------------------- */
--n-0:#ffffff;--n-25:#fafbfc;--n-50:#f4f6f9;--n-100:#e8ecf2;--n-200:#d5dbe4;--n-300:#b7c0cd;
--n-400:#8b96a6;--n-500:#667283;--n-600:#4b5666;--n-700:#35404e;--n-800:#212a36;--n-900:#131a23;
/* --- paper (the one warm surface; alternate section background) --------- */
--paper-50:#faf8f4;--paper-100:#f5f1e9;--paper-200:#e9e2d4;
/* --- form/system feedback ---------------------------------------------- */
/* Never applied to a senior living home. See readme.md → "The no-rating rule". */
--feedback-error:#a8331f;--feedback-error-bg:#fbf0ed;
--feedback-notice:#8a6d1f;--feedback-notice-bg:#faf5e8;
--feedback-info:var(--navy-600);--feedback-info-bg:var(--navy-50);

/* --- semantic aliases -------------------------------------------------- */
/* The brand green is #00B07D (client, 17 September 2026). It fails as a
   ground for white text, at 2.80:1, so small marks that sit on it carry navy
   instead: 6.23:1. --on-brand is that navy, and it is right on a step number
   or a badge, where the mark is a few characters wide.

   It was wrong on the button. A full size navy label on bright green reads as
   two brand colours fighting rather than as one action, and it was the first
   thing the reviewer named. The primary button therefore uses its own pair:
   white on #00825B, 4.83:1, which is the same green one step deeper. The
   bright green stays the accent everywhere it does not have to carry text. */
--brand:var(--green-500);--brand-hover:var(--green-550);--on-brand:var(--navy-900);
--btn-bg:var(--green-650);--btn-bg-hover:var(--green-700);--on-btn:var(--n-0);
--brand-ink:var(--green-700);--brand-deep:var(--navy-600);

/* Secondary text is two steps darker than the scale's midpoint on purpose.
   n-500 clears AA on white at 4.88:1 but only reaches 4.34:1 on the paper
   ground, and n-400 fails on both. Both grounds are in use on the same page,
   so the token has to pass on the worse one: n-600 is 6.61:1 on paper and
   7.44:1 on white. Do not lighten either of these back without re-running
   scripts/a11y-audit.py. */
--text-strong:var(--navy-800);--text-body:var(--n-700);--text-muted:var(--n-600);
--text-faint:var(--n-500);--text-inverse:var(--n-0);--text-inverse-muted:var(--navy-200);
--text-link:var(--green-700);--text-link-hover:var(--green-800);
--surface-page:var(--n-0);--surface-subtle:var(--n-50);--surface-paper:var(--paper-100);
--surface-card:var(--n-0);--surface-inset:var(--n-50);
--surface-dark:var(--navy-800);--surface-dark-deep:var(--navy-900);--surface-brand:var(--green-500);
--border-hairline:var(--n-100);--border-default:var(--n-200);--border-strong:var(--n-300);
--border-dark:rgba(255,255,255,.14);--border-focus:var(--green-600);
--accent-rule:var(--green-500);--accent-quiet:var(--navy-200);
}

/* ---- tokens/typography.css ---- */
:root{
--font-display:"Source Serif 4",Georgia,"Times New Roman",serif; /* @kind font */
--font-sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; /* @kind font */
--font-brand:"Poppins","Century Gothic",var(--font-sans); /* @kind font */
--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace; /* @kind font */

--fs-display-1:clamp(2.25rem,4.4vw,3.5rem); /* @kind font */
--fs-display-2:clamp(1.75rem,2.9vw,2.375rem); /* @kind font */
--fs-display-3:clamp(1.5rem,2.2vw,1.875rem); /* @kind font */
--fs-h1:clamp(1.625rem,2.6vw,2rem); /* @kind font */
--fs-h2:1.375rem; /* @kind font */
--fs-h3:1.125rem; /* @kind font */
--fs-lead:clamp(1rem,1.25vw,1.0625rem); /* @kind font */
--fs-body:1rem; /* @kind font */
--fs-body-sm:.875rem; /* @kind font */
--fs-caption:.8125rem; /* @kind font */
--fs-micro:.6875rem; /* @kind font */
--fs-eyebrow:.75rem; /* @kind font */
--fs-stat:clamp(2.5rem,5vw,3.75rem); /* @kind font */

--lh-tight:1.06; /* @kind font */
--lh-snug:1.14; /* @kind font */
--lh-heading:1.28; /* @kind font */
--lh-body:1.62; /* @kind font */
--lh-loose:1.75; /* @kind font */

--fw-regular:400; /* @kind font */
--fw-text:450; /* @kind font */
--fw-medium:500; /* @kind font */
--fw-semibold:600; /* @kind font */

--ls-display:-0.02em; /* @kind font */
--ls-heading:-0.01em; /* @kind font */
--ls-body:0; /* @kind font */
--ls-eyebrow:0.11em; /* @kind font */
--ls-mono:0.01em; /* @kind font */

--tt-eyebrow:uppercase; /* @kind other */
}

/* ---- tokens/spacing.css ---- */
:root{
--sp-0:0; /* @kind spacing */
--sp-1:.25rem; /* @kind spacing */
--sp-2:.5rem; /* @kind spacing */
--sp-3:.75rem; /* @kind spacing */
--sp-4:1rem; /* @kind spacing */
--sp-5:1.25rem; /* @kind spacing */
--sp-6:1.5rem; /* @kind spacing */
--sp-8:2rem; /* @kind spacing */
--sp-10:2.5rem; /* @kind spacing */
--sp-12:3rem; /* @kind spacing */
--sp-16:4rem; /* @kind spacing */
--sp-20:5rem; /* @kind spacing */
--sp-24:6rem; /* @kind spacing */
--sp-32:8rem; /* @kind spacing */
--gutter:1.25rem; /* @kind spacing */
--gutter-lg:2rem; /* @kind spacing */
--section-y:clamp(3rem,6.6vw,6rem); /* @kind spacing */
--section-y-tight:clamp(2.5rem,5vw,4rem); /* @kind spacing */
--stack-tight:var(--sp-3); /* @kind spacing */
--stack:var(--sp-5); /* @kind spacing */
--stack-loose:var(--sp-8); /* @kind spacing */
}

/* ---- tokens/radius.css ---- */
:root{
--radius-xs:3px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:16px;--radius-2xl:24px;
--radius-pill:999px;
--radius-control:var(--radius-md);--radius-card:var(--radius-lg);--radius-device:2.25rem;
--border-w:1px;--border-w-thick:2px;--rule-w:3px;
}

/* ---- tokens/elevation.css ---- */
:root{
/* Quiet, low-spread shadows. Borders do most of the work; shadow signals lift, never decoration. */
--shadow-none:none; /* @kind shadow */
--shadow-hairline:0 1px 0 rgba(19,26,35,.04); /* @kind shadow */
--shadow-1:0 1px 2px rgba(11,26,48,.06),0 1px 1px rgba(11,26,48,.04); /* @kind shadow */
--shadow-2:0 2px 6px rgba(11,26,48,.07),0 1px 2px rgba(11,26,48,.05); /* @kind shadow */
--shadow-3:0 8px 24px rgba(11,26,48,.09),0 2px 6px rgba(11,26,48,.05); /* @kind shadow */
--shadow-device:0 24px 60px rgba(11,26,48,.18),0 4px 12px rgba(11,26,48,.08); /* @kind shadow */
--shadow-focus:0 0 0 3px rgba(0,166,118,.28); /* @kind shadow */
--overlay-scrim:rgba(11,26,48,.55); /* @kind color */
--blur-panel:saturate(180%) blur(14px); /* @kind other */
}

/* ---- tokens/motion.css ---- */
:root{
--ease-standard:cubic-bezier(.2,0,.2,1); /* @kind other */
--ease-out:cubic-bezier(0,0,.2,1); /* @kind other */
--ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
--dur-fast:120ms; /* @kind other */
--dur-base:180ms; /* @kind other */
--dur-slow:280ms; /* @kind other */
--dur-reveal:420ms; /* @kind other */
--transition-control:color var(--dur-fast) var(--ease-standard),background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard); /* @kind other */
}
@media (prefers-reduced-motion:reduce){:root{
--dur-fast:0ms; /* @kind other */
--dur-base:0ms; /* @kind other */
--dur-slow:0ms; /* @kind other */
--dur-reveal:0ms; /* @kind other */
}}

/* ---- tokens/layout.css ---- */
:root{
--container-max:1280px; /* @kind spacing */
--container-narrow:720px; /* @kind spacing */
--container-wide:1400px; /* @kind spacing */
--measure:64ch; /* @kind other */
--measure-narrow:46ch; /* @kind other */
--header-h:64px; /* @kind spacing */
--header-h-lg:76px; /* @kind spacing */
--bp-sm:480px; /* @kind spacing */
--bp-md:768px; /* @kind spacing */
--bp-lg:1024px; /* @kind spacing */
--bp-xl:1280px; /* @kind spacing */
--z-base:0; /* @kind other */
--z-raised:10; /* @kind other */
--z-header:100; /* @kind other */
--z-overlay:200; /* @kind other */
--z-modal:300; /* @kind other */
--phone-w:320px; /* @kind spacing */
--phone-w-lg:380px; /* @kind spacing */
--desktop-w:960px; /* @kind spacing */
}

/* ---- tokens/base.css ---- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);font-weight:var(--fw-text);line-height:var(--lh-body);color:var(--text-body);background:var(--surface-page);-webkit-font-smoothing:antialiased;text-wrap:pretty}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-strong);font-weight:var(--fw-semibold);line-height:var(--lh-heading);letter-spacing:var(--ls-heading);margin:0;text-wrap:balance}
p{margin:0}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid var(--green-200);transition:var(--transition-control)}
a:hover{color:var(--text-link-hover);border-bottom-color:var(--green-500)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
img,svg{display:block;max-width:100%}
::selection{background:var(--green-100);color:var(--navy-800)}
