Spaces:
Configuration error
Configuration error
| /* Riprap design tokens β Civic Hydrology palette (v0.4.6, 2026-05-06) | |
| USWDS-aligned federal blue + cool slate register. Replaces the warm | |
| newsprint+orange palette that read as editorial / Anthropic-adjacent. | |
| IBM Plex still drives type (Apache / SIL-OFL); colors are now in the | |
| civic-tech flood-tool family (NOAA / NWS / FloodHelpNY / USWDS). | |
| All values WCAG 2.2 AA verified. | |
| */ | |
| :root { | |
| /* ββ Epistemic tier colors βββββββββββββββββββββββββββββββββββββββββ | |
| Tier palette anchored to USWDS blue-60v (#005EA2) β the canonical | |
| federal civic blue. Tier is ALSO encoded via glyph + label, so | |
| deutan/protan/tritan-safe even though all three top tiers share | |
| the blue family. | |
| */ | |
| --tier-empirical: #005EA2; /* USWDS blue-60v 7.07:1 vs paper β AAA */ | |
| --tier-empirical-fill: rgba(0, 94, 162, 0.40); | |
| --tier-empirical-line: #005EA2; | |
| --tier-modeled: #1A4480; /* USWDS blue-warm-70v 10.4:1 β AAA */ | |
| --tier-modeled-fill: rgba(26, 68, 128, 0.22); | |
| --tier-modeled-line: #1A4480; | |
| --tier-proxy: #475569; /* slate-600 7.6:1 β AAA */ | |
| --tier-proxy-fill: transparent; | |
| --tier-proxy-line: #475569; | |
| --tier-synthetic: #1A4480; /* same hue as modeled β pattern carries the difference */ | |
| --tier-synthetic-fill: rgba(26, 68, 128, 0.22); | |
| --tier-synthetic-line: #1A4480; | |
| /* ββ Stone accent tokens (v0.4.6) ββ | |
| Re-themed for the Civic Hydrology register. Each Stone now carries | |
| a meaning-aligned hue rather than a generic "muted earth tone": | |
| - cornerstone: slate (the hazard ground) | |
| - keystone: federal navy (the assets) | |
| - touchstone: cyan-700 (live water) | |
| - lodestone: amber-800 (forecast / warning register) | |
| - capstone: deepest navy (the synthesizer) | |
| Still hint-level decoration; never competes with the four tiers. | |
| All degrade to neutral gray in @media print. */ | |
| --stone-cornerstone: #475569; /* slate-600 */ | |
| --stone-keystone: #1A4480; /* federal navy */ | |
| --stone-touchstone: #0E7490; /* cyan-700 β live water */ | |
| --stone-lodestone: #92400E; /* amber-800 β hazard register */ | |
| --stone-capstone: #162E51; /* USWDS darkest navy */ | |
| /* ββ Reference + accent ββ */ | |
| --reference-bg: #E8ECF2; /* cool gray-blue */ | |
| --reference-line: #CBD5E1; /* slate-300 */ | |
| --accent: #005EA2; /* USWDS federal blue (was burnt orange) */ | |
| --accent-graphical: #005EA2; | |
| --accent-warn: #92400E; /* amber-800; used SPARINGLY for hazard pills */ | |
| --accent-alert: #B91C1C; /* red-700; used ONLY for active flood alerts */ | |
| /* ββ Neutrals (cool register, replaces warm newsprint) ββ */ | |
| --paper: #F4F6F9; /* cool off-white, slight blue cast */ | |
| --paper-deep: #E8ECF2; /* slate-100 */ | |
| --ink: #0F172A; /* slate-950 18.7:1 β AAA */ | |
| --ink-secondary: #334155; /* slate-700 10.4:1 β AAA */ | |
| --ink-tertiary: #64748B; /* slate-500 4.7:1 β AA */ | |
| --rule: #0F172A; | |
| --rule-soft: #CBD5E1; /* slate-300 */ | |
| /* ββ Type ββ */ | |
| --font-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; | |
| --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace; | |
| --font-serif: "IBM Plex Serif", Georgia, "Times New Roman", serif; | |
| /* ββ Scale ββ */ | |
| --measure: 70ch; | |
| --leading-prose: 1.55; | |
| --leading-tight: 1.25; | |
| /* ββ Spacing ββ */ | |
| --s-1: 4px; | |
| --s-2: 8px; | |
| --s-3: 12px; | |
| --s-4: 16px; | |
| --s-5: 24px; | |
| --s-6: 32px; | |
| --s-7: 48px; | |
| --s-8: 64px; | |
| --s-9: 96px; | |
| } | |
| * { box-sizing: border-box; } | |
| html, body { | |
| margin: 0; | |
| padding: 0; | |
| background: var(--paper); | |
| color: var(--ink); | |
| font-family: var(--font-sans); | |
| font-size: 16px; | |
| line-height: var(--leading-prose); | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| } | |
| /* High-contrast focus rings, brief-spec'd. Uses the federal-blue | |
| accent so focus reads as "civic" not "alert". */ | |
| :focus-visible { | |
| outline: 3px solid var(--accent); | |
| outline-offset: 2px; | |
| border-radius: 1px; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, *::before, *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |
| /* ββ Wordmark βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Dam-mark prefix is now an inline SVG component (RipMark.svelte) | |
| mounted next to the text in AppHeader / LandHeader, replacing the | |
| earlier β block-glyph. The mark inherits color via currentColor; | |
| the wordmark text picks up its own ink color from the cascade. */ | |
| .riprap-wordmark { | |
| font-family: var(--font-mono); | |
| font-weight: 600; | |
| font-size: 14px; | |
| letter-spacing: 0.06em; | |
| text-transform: lowercase; | |
| color: var(--ink); | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| text-decoration: none; | |
| } | |
| /* ββ Skip link ββ */ | |
| .skip-link { | |
| position: absolute; | |
| left: -9999px; | |
| top: 8px; | |
| padding: 8px 12px; | |
| background: var(--ink); | |
| color: var(--paper); | |
| font-family: var(--font-mono); | |
| font-size: 13px; | |
| z-index: 1000; | |
| } | |
| .skip-link:focus { | |
| left: 8px; | |
| } | |
| /* ββ Generic section labels ββ */ | |
| .section-label { | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| font-weight: 500; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| color: var(--ink-tertiary); | |
| } | |
| .rule-thin { | |
| border: 0; | |
| border-top: 1px solid var(--rule-soft); | |
| margin: 0; | |
| } | |
| .rule-heavy { | |
| border: 0; | |
| border-top: 2px solid var(--ink); | |
| margin: 0; | |
| } | |
| /* v0.4.5 β Stone tints degrade to neutral gray in print so the PDF's | |
| hierarchy is preserved by structure (Stone headings, type scale, | |
| rules), not by color. */ | |
| @media print { | |
| :root { | |
| --stone-cornerstone: #999; | |
| --stone-keystone: #999; | |
| --stone-touchstone: #999; | |
| --stone-lodestone: #999; | |
| --stone-capstone: #999; | |
| } | |
| } | |