+
# Riprap — citation-grounded NYC flood-exposure briefings
Riprap takes any NYC address (or neighborhood, or development-permit query)
@@ -21,7 +25,7 @@ sampling. Sentences that fail one of four grounding checks
`citations_resolve`) are rerolled with surgical feedback until the
budget is exhausted.
-Live demo:
+Live demo:
---
@@ -120,3 +124,13 @@ permissive licences (see each `MODEL_CARD.md`).
Check out the HF Space configuration reference at
.
+
+---
+
+## Credits
+
+The Riprap dam mark is ["Dam" by Chintuza](https://thenounproject.com/icon/dam-4516918/)
+via the Noun Project, licensed CC-BY 3.0. The original SVG embedded
+the attribution as on-canvas text; Riprap's `assets/logo*.svg` strips
+the embedded text and carries the credit here in body copy instead,
+per the Creative Commons attribution requirement.
diff --git a/assets/logo-blue.svg b/assets/logo-blue.svg
new file mode 100644
index 0000000000000000000000000000000000000000..498374c82b942250adfc4480374c1e52d29b36ea
--- /dev/null
+++ b/assets/logo-blue.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/assets/logo-paper.png b/assets/logo-paper.png
new file mode 100644
index 0000000000000000000000000000000000000000..368c9f5af8e5dc094195571d9c6e8d02ffe92cdd
Binary files /dev/null and b/assets/logo-paper.png differ
diff --git a/assets/logo-paper.svg b/assets/logo-paper.svg
new file mode 100644
index 0000000000000000000000000000000000000000..106e00fc928817e0c1b18bf396d88cc7aa17bfe2
--- /dev/null
+++ b/assets/logo-paper.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/assets/logo-paper@2x.png b/assets/logo-paper@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..102cba953f0fee8a330df42ca9ed00b3148be647
Binary files /dev/null and b/assets/logo-paper@2x.png differ
diff --git a/assets/logo.png b/assets/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4fadbe5e938a4f6b9d35c9f5a61ba8f97ed5685
Binary files /dev/null and b/assets/logo.png differ
diff --git a/assets/logo.svg b/assets/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5e96bac27088942889b25ef3a93cca73eef5c756
--- /dev/null
+++ b/assets/logo.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/assets/logo@2x.png b/assets/logo@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2039ac431dad8c3ac211b90561da39420ed94bf3
Binary files /dev/null and b/assets/logo@2x.png differ
diff --git a/slides/deck.md b/slides/deck.md
index 4b77b4551eacb77b923fafa581b509792e3562a5..4cd3253fa364d56e7af37fcbae8f2130dcbccae0 100644
--- a/slides/deck.md
+++ b/slides/deck.md
@@ -10,7 +10,9 @@ description: AMD x lablab.ai Developer Hackathon, May 4–10 2026
-
+
+
+
AMD × lablab.ai · Developer Hackathon
@@ -201,7 +203,9 @@ description: AMD x lablab.ai Developer Hackathon, May 4–10 2026
-
Riprap · flood briefings on AMD
+
+
+
Riprap · flood briefings on AMD
# riprap.nyc
@@ -216,3 +220,7 @@ Apache-2.0 · public data · AMD MI300X · IBM Granite 4.1 &mi
AMD × lablab.ai · May 4–10 2026
+
+
+Dam mark: "Dam" by Chintuza via the Noun Project, CC-BY 3.0.
+
diff --git a/slides/logo-paper.svg b/slides/logo-paper.svg
new file mode 100644
index 0000000000000000000000000000000000000000..106e00fc928817e0c1b18bf396d88cc7aa17bfe2
--- /dev/null
+++ b/slides/logo-paper.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/slides/logo.svg b/slides/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..498374c82b942250adfc4480374c1e52d29b36ea
--- /dev/null
+++ b/slides/logo.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/slides/riprap.css b/slides/riprap.css
index 671cb04e26384b8f9a78cf181b67104a9d660ca6..4ce4b0a579a7adbfbaa352690e796aeca30403d4 100644
--- a/slides/riprap.css
+++ b/slides/riprap.css
@@ -279,16 +279,19 @@ section.lead {
}
section.lead::before {
- content: "▌";
+ /* Mark is now an inline sitting at the top-left of the slide
+ content (see deck.md). Pseudo-element no longer renders the
+ ▌ block — kept as a no-op so the bottom-left wordmark on
+ non-lead slides still wins via the base section::before. */
+ content: none;
+}
+section.lead .lead-mark {
position: absolute;
left: 88px;
- top: 64px;
- bottom: auto;
- font-family: var(--font-mono);
- font-size: 56px;
- font-weight: 600;
- color: var(--accent);
- line-height: 1;
+ top: 56px;
+ width: 64px;
+ height: 64px;
+ display: block;
}
section.lead .eyebrow {
@@ -376,13 +379,16 @@ section.cta {
justify-content: center;
}
section.cta::before {
- content: "▌";
- color: var(--accent);
- font-size: 56px;
+ /* Replaced by inline mark in deck.md (.cta-mark). */
+ content: none;
+}
+section.cta .cta-mark {
position: absolute;
left: 88px;
- top: 64px;
- bottom: auto;
+ top: 56px;
+ width: 56px;
+ height: 56px;
+ display: block;
}
section.cta::after { color: rgba(244, 246, 249, 0.42); }
section.cta h1 {
diff --git a/web/sveltekit/build/200.html b/web/sveltekit/build/200.html
index 14e3b2ab2324373f9ad8e20b977438a3d39e1feb..673931f5818b9232b2d18208624c0f51ca11378b 100644
--- a/web/sveltekit/build/200.html
+++ b/web/sveltekit/build/200.html
@@ -6,34 +6,37 @@
Riprap — flood-exposure briefing
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
- riprap
+ riprap/Flood Exposure Briefing · NYC
diff --git a/web/sveltekit/src/lib/components/shell/AppHeader.svelte b/web/sveltekit/src/lib/components/shell/AppHeader.svelte
index a24ee50d9861ee76cbfa0fec9ea8fc63db1ca12b..799b31b73e692539c07ada14ba2839b3793ae0b6 100644
--- a/web/sveltekit/src/lib/components/shell/AppHeader.svelte
+++ b/web/sveltekit/src/lib/components/shell/AppHeader.svelte
@@ -1,6 +1,7 @@
+
+
+
+
diff --git a/web/sveltekit/src/lib/styles.css b/web/sveltekit/src/lib/styles.css
index 35ddedba37dd5df3d2d9c3795b44141fd225e60d..693b30796e8119de3310b6a1415aed557b9333d5 100644
--- a/web/sveltekit/src/lib/styles.css
+++ b/web/sveltekit/src/lib/styles.css
@@ -750,7 +750,10 @@
.app-footer-inner { max-width: 1600px; margin: 0 auto; padding: 32px 28px; display: flex; flex-direction: column; gap: 12px; }
.app-footer-guard { font-size: 14px; line-height: 1.5; max-width: 70ch; margin: 0; }
.app-footer-guard a { color: var(--accent-graphical); border-bottom: 1px solid var(--accent-graphical); text-decoration: none; }
-.app-footer-build { font-family: var(--font-mono); font-size: 11px; color: rgba(250,250,247,0.55); margin: 0; letter-spacing: 0.04em; }
+.app-footer-build { font-family: var(--font-mono); font-size: 11px; color: rgba(244,246,249,0.55); margin: 0; letter-spacing: 0.04em; }
+.app-footer-credits { font-family: var(--font-mono); font-size: 11px; color: rgba(244,246,249,0.4); margin: 0; letter-spacing: 0.04em; }
+.app-footer-credits a { color: rgba(244,246,249,0.7); text-decoration: none; border-bottom: 1px dotted rgba(244,246,249,0.3); }
+.app-footer-credits a:hover { color: rgba(244,246,249,0.9); border-bottom-color: rgba(244,246,249,0.6); }
/* Dark mode — deferred to v0.5 (see §17). Partial styles removed in v0.4.2. */
diff --git a/web/sveltekit/src/lib/tokens.css b/web/sveltekit/src/lib/tokens.css
index 4ee2a0823378b41d54afaf297590bc999c9b025b..628acda4906108f349747bfa712917a542380bed 100644
--- a/web/sveltekit/src/lib/tokens.css
+++ b/web/sveltekit/src/lib/tokens.css
@@ -115,6 +115,10 @@ html, body {
}
/* ── 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;
@@ -123,16 +127,9 @@ html, body {
text-transform: lowercase;
color: var(--ink);
display: inline-flex;
- align-items: baseline;
- gap: 0;
-}
-.riprap-wordmark::before {
- content: "▌";
- color: var(--accent); /* federal blue — was burnt orange */
- margin-right: 4px;
- font-size: 0.85em;
- position: relative;
- top: 1px;
+ align-items: center;
+ gap: 6px;
+ text-decoration: none;
}
/* ── Skip link ── */