Files
dobetternorge-tools/Do Better Tools v1/design/distress.css
T
daveadmin 08d1e3cee3 feat: auto-select STT engine (Azure → Google Cloud → Whisper) and show provider in results
Removes user-facing engine/model/key/beam controls. The server now picks
the best available engine automatically:
1. Microsoft Azure Speech — short clips (≤1MB, no diarization, audio/*)
2. Google Cloud Speech v2 — long audio, diarization, all languages
3. OpenAI Whisper GPU — local fallback

Results display which provider was used (e.g. "Transcribed with Google
Cloud Speech") via transcript-engine-badge and traceMeta.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 13:22:24 +02:00

606 lines
24 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ============================================================================
distress.css — editorial overlay on top of the Do Better Norge design system
The base design system stays clean and institutional. This file layers
the "Norway in distress" treatment: cracked-flag motif, half-mast tint,
redaction marks, dossier stamps, manifesto type, evidence-trail-as-protest.
Distress intensity is driven by --distress (0..1) set on <html>.
Surface mode is driven by .surface-dark on <html>.
============================================================================ */
:root {
/* Set by the Tweaks panel. */
--distress: 0.6; /* 0 = somber, 1 = defiant */
--paper: #f4ecd8; /* dossier paper tone (used on stamps) */
--paper-2: #e9dfc5;
--stamp: #6e1421; /* deep red ink stamp */
--ink-stamp: #1b1b1b; /* black ink stamp / typewriter */
--bleed: var(--dbn-coral); /* red bleed accent */
/* Derived metrics */
--bleed-h: calc(2px + var(--distress) * 6px);
--flag-fade: calc(0.35 + var(--distress) * 0.65);
/* Mono / typewriter family for case-file marks */
--type-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
/* ─── Surface mode: dark ────────────────────────────────────────────────── */
html.surface-dark {
--dbn-bg: #0c1018;
--dbn-panel: #11161f;
--dbn-panel-tinted: #161c27;
--dbn-line: #2a313f;
--dbn-ink: #ecf0f6;
--dbn-ink-soft: #c4cad5;
--dbn-muted: #8a93a3;
--dbn-muted-2: #5b6271;
--dbn-teal-soft: rgba(78, 124, 220, 0.18);
--dbn-teal-soft-2: rgba(78, 124, 220, 0.28);
--dbn-coral-soft: rgba(186, 12, 47, 0.20);
--dbn-amber-soft: rgba(183, 121, 31, 0.14);
--dbn-amber-edge: rgba(183, 121, 31, 0.38);
--dbn-amber-ink: #e2b87a;
--paper: #1a1f2a;
--paper-2: #232938;
}
html.surface-dark .tool-tab { color: var(--dbn-ink); }
html.surface-dark .tool-tab.is-active { background: rgba(78,124,220,0.22); border-color: rgba(78,124,220,0.45); }
html.surface-dark .secondary-button { background: #1f2735; }
html.surface-dark .answer p strong,
html.surface-dark .source-title { color: var(--dbn-ink); }
/* ─── Body — fine grain noise + paper tone (subtle, scaled by --distress) */
body.dossier {
background-color: var(--dbn-bg);
background-image:
/* paper grain */
radial-gradient(circle at 23% 47%, rgba(0,0,0,calc(0.03 * var(--distress))) 0 1px, transparent 1px),
radial-gradient(circle at 71% 19%, rgba(0,0,0,calc(0.025 * var(--distress))) 0 1px, transparent 1px),
radial-gradient(circle at 8% 81%, rgba(0,0,0,calc(0.02 * var(--distress))) 0 1px, transparent 1px),
radial-gradient(circle at 88% 71%, rgba(0,0,0,calc(0.03 * var(--distress))) 0 1px, transparent 1px);
background-size: 7px 7px, 13px 13px, 11px 11px, 17px 17px;
}
html.surface-dark body.dossier {
background-image:
radial-gradient(circle at 23% 47%, rgba(255,255,255,calc(0.025 * var(--distress))) 0 1px, transparent 1px),
radial-gradient(circle at 71% 19%, rgba(255,255,255,calc(0.02 * var(--distress))) 0 1px, transparent 1px);
}
/* ─── App shell: top bleed bar + side numbering ─────────────────────────── */
.app-shell { position: relative; }
.app-shell::before {
/* the bleed: red bar at top, mimicking the flag colour eroding */
content: "";
position: absolute; left: 0; right: 0; top: 0;
height: var(--bleed-h);
background:
linear-gradient(90deg,
var(--bleed) 0%,
var(--bleed) 38%,
#00205B 38%,
#00205B 41%,
#fff 41%,
#fff 49%,
#00205B 49%,
#00205B 52%,
var(--bleed) 52%,
var(--bleed) 100%);
opacity: calc(0.55 + var(--distress) * 0.45);
}
/* ─── Manifesto strip (between disclaimer and workspace) ────────────────── */
.manifesto {
max-width: 1500px;
margin: 0 auto 14px;
display: grid;
grid-template-columns: 1fr auto;
gap: 18px;
align-items: end;
padding: calc(14px + var(--distress) * 18px) 22px calc(14px + var(--distress) * 14px) 26px;
border: 1px solid var(--dbn-line);
border-left: 6px solid var(--dbn-coral);
border-radius: 8px;
background: var(--dbn-panel);
position: relative;
overflow: hidden;
}
.manifesto::before {
/* the half-mast flag — faded, desaturated, sliced */
content: "";
position: absolute;
right: -40px; top: -10px; bottom: -10px; width: 320px;
background:
linear-gradient(180deg,
transparent 0%,
transparent 32%,
var(--dbn-coral) 32%,
var(--dbn-coral) 38%,
#fff 38%,
#fff 42%,
#00205B 42%,
#00205B 50%,
#fff 50%,
#fff 54%,
var(--dbn-coral) 54%,
var(--dbn-coral) 60%,
transparent 60%);
opacity: calc(0.10 + var(--distress) * 0.35);
filter: grayscale(calc(0.6 - var(--distress) * 0.4)) saturate(calc(0.4 + var(--distress) * 0.6));
transform: skewX(-8deg);
pointer-events: none;
mask-image: linear-gradient(90deg, transparent 0%, #000 35%, #000 100%);
-webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 35%, #000 100%);
}
html.surface-dark .manifesto::before { opacity: calc(0.20 + var(--distress) * 0.40); }
.manifesto-copy { position: relative; z-index: 2; max-width: 880px; }
.manifesto-eyebrow {
font-family: var(--type-mono);
font-size: 0.74rem;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--dbn-coral);
margin: 0 0 8px;
display: flex; align-items: center; gap: 10px;
}
.manifesto-eyebrow::before {
content: "";
display: inline-block;
width: 28px; height: 2px; background: var(--dbn-coral);
}
.manifesto-title {
margin: 0;
font-weight: 900;
letter-spacing: -0.025em;
line-height: 1.02;
color: var(--dbn-ink);
font-size: clamp(1.7rem, calc(2rem + var(--distress) * 1.6rem), 3.4rem);
text-wrap: balance;
}
.manifesto-sub {
margin: 12px 0 0;
color: var(--dbn-muted);
font-size: 1rem;
line-height: 1.5;
max-width: 56ch;
}
.manifesto-stats {
display: grid;
grid-template-columns: repeat(2, minmax(110px, auto));
gap: 16px 28px;
position: relative; z-index: 2;
align-self: center;
}
.manifesto-stat { text-align: right; min-width: 110px; }
.manifesto-stat-num {
font-size: clamp(1.6rem, 2.2rem, 2.6rem);
font-weight: 900;
letter-spacing: -0.04em;
color: var(--dbn-coral);
font-variant-numeric: tabular-nums;
line-height: 1;
}
.manifesto-stat-num.is-blue { color: var(--dbn-teal); }
.manifesto-stat-label {
font-family: var(--type-mono);
font-size: 0.66rem;
font-weight: 600;
letter-spacing: 0.10em;
text-transform: uppercase;
color: var(--dbn-muted);
margin-top: 4px;
max-width: 22ch;
margin-left: auto;
}
/* ─── Dossier stamp ─────────────────────────────────────────────────────── */
.stamp {
display: inline-flex; align-items: center; gap: 7px;
font-family: var(--type-mono);
font-size: 0.66rem;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
padding: 5px 9px 4px;
color: var(--stamp);
border: 1.5px solid var(--stamp);
border-radius: 4px;
background: transparent;
transform: rotate(-1.5deg);
opacity: calc(0.45 + var(--distress) * 0.55);
}
.stamp.is-ink { color: var(--ink-stamp); border-color: var(--ink-stamp); }
html.surface-dark .stamp { color: #e8b6b9; border-color: rgba(232,182,185,0.55); }
html.surface-dark .stamp.is-ink { color: #c9cfdb; border-color: rgba(201,207,219,0.45); }
.stamp::before {
content: "";
width: 8px; height: 8px; border-radius: 999px;
border: 1.5px solid currentColor;
}
/* ─── Topbar overrides ──────────────────────────────────────────────────── */
.topbar { padding-top: calc(10px + var(--distress) * 4px); }
.topbar .case-no {
font-family: var(--type-mono);
font-size: 0.68rem;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--dbn-muted);
margin-top: 6px;
display: inline-flex; align-items: center; gap: 10px;
}
.topbar .case-no .pulse {
width: 8px; height: 8px; border-radius: 999px;
background: var(--dbn-coral);
box-shadow: 0 0 0 0 rgba(186,12,47,0.6);
animation: caseno-pulse 1.6s ease-out infinite;
}
@keyframes caseno-pulse {
0%,100% { box-shadow: 0 0 0 0 rgba(186,12,47,0.55); }
60% { box-shadow: 0 0 0 9px rgba(186,12,47,0); }
}
/* ─── Tool rail: stat severity ──────────────────────────────────────────── */
.tool-rail { padding: 12px; gap: 6px; position: relative; }
.tool-rail::before {
content: "TOOLS · CASE WORK";
display: block;
font-family: var(--type-mono);
font-size: 0.6rem;
letter-spacing: 0.16em;
color: var(--dbn-muted);
margin: 4px 6px 8px;
}
.tool-tab {
position: relative;
padding: 12px 12px 12px 14px;
border-left: 2px solid transparent !important;
transition: background .15s, border-color .15s, color .15s;
}
.tool-tab span { font-size: 0.95rem; }
.tool-tab small { font-family: var(--type-mono); font-size: 0.66rem; letter-spacing: 0.06em; text-transform: uppercase; }
.tool-tab .tag {
position: absolute; top: 8px; right: 8px;
font-family: var(--type-mono); font-size: 0.6rem; font-weight: 700;
color: var(--dbn-coral); letter-spacing: 0.06em;
}
.tool-tab.is-active { border-left-color: var(--dbn-coral) !important; }
.tool-tab.is-active::before {
content: "▶";
position: absolute; left: -10px; top: 50%; transform: translateY(-50%);
color: var(--dbn-coral); font-size: 8px;
}
/* ─── Tool panel header: tab title + dossier corner fold ────────────────── */
.tool-panel { position: relative; padding: 20px 22px 22px; }
.tool-panel .corner-fold {
position: absolute; top: 0; right: 0;
width: calc(28px + var(--distress) * 22px);
height: calc(28px + var(--distress) * 22px);
background: linear-gradient(225deg, var(--paper) 50%, transparent 50%);
border-bottom-left-radius: 6px;
opacity: calc(0.35 + var(--distress) * 0.5);
pointer-events: none;
}
.tool-panel .corner-fold::after {
content: "";
position: absolute; right: 0; top: 0;
width: 100%; height: 100%;
background: linear-gradient(225deg, transparent 49%, rgba(0,0,0,0.08) 50%, transparent 51%);
}
html.surface-dark .tool-panel .corner-fold { opacity: calc(0.18 + var(--distress) * 0.32); }
/* ─── Reasoning panel: case-file aesthetic ──────────────────────────────── */
.reasoning-panel { padding: 18px 18px 20px; position: relative; }
.reasoning-panel .file-label {
font-family: var(--type-mono);
font-size: 0.62rem;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--dbn-muted);
margin: 0 0 4px;
}
.reasoning-panel .case-meta {
font-family: var(--type-mono);
font-size: 0.74rem;
color: var(--dbn-ink-soft);
border-top: 1px dashed var(--dbn-line);
margin-top: 18px; padding-top: 14px;
display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px;
}
.reasoning-panel .case-meta span:nth-child(odd) { color: var(--dbn-muted); }
/* ─── Citation chip — richer evidence treatment ─────────────────────────── */
.cite-chip {
background: transparent !important;
border: 1px solid var(--dbn-coral) !important;
color: var(--dbn-coral) !important;
}
.cite-chip:hover { background: var(--dbn-coral) !important; color: #fff !important; }
/* ─── Redaction motif ───────────────────────────────────────────────────── */
.redact {
background: #0a0c11;
color: transparent !important;
border-radius: 1px;
padding: 1px 4px;
margin: 0 1px;
text-shadow: none !important;
letter-spacing: 0.02em;
user-select: none;
cursor: help;
position: relative;
display: inline-block;
vertical-align: baseline;
transition: background .2s;
}
.redact::after {
/* faint typewriter strike-through */
content: "";
position: absolute; left: 2px; right: 2px; top: 50%; height: 0.6px;
background: rgba(255,255,255,0.06);
}
.redact:hover { background: #6e1421; }
/* ─── Headline / numbers ────────────────────────────────────────────────── */
.bignum {
font-weight: 900;
font-variant-numeric: tabular-nums;
letter-spacing: -0.03em;
line-height: 1;
color: var(--dbn-coral);
}
/* ─── Article 8 chip (used across tools) ────────────────────────────────── */
.art-chip {
display: inline-flex; align-items: center; gap: 6px;
background: var(--dbn-coral-soft);
color: var(--dbn-coral);
border: 1px solid var(--dbn-coral);
border-radius: 999px;
padding: 3px 10px;
font-family: var(--type-mono);
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.04em;
}
.art-chip.is-blue {
background: var(--dbn-teal-soft);
color: var(--dbn-teal);
border-color: var(--dbn-teal);
}
.art-chip.is-amber {
background: var(--dbn-amber-soft);
color: var(--dbn-amber-ink);
border-color: var(--dbn-amber-edge);
}
/* ─── Bench/Bar — visit-rights chart ────────────────────────────────────── */
.bench-row { display: grid; grid-template-columns: 130px 1fr 50px; gap: 10px; align-items: center; padding: 6px 0; }
.bench-row + .bench-row { border-top: 1px dashed var(--dbn-line); }
.bench-row.is-no { color: var(--dbn-coral); font-weight: 800; }
.bench-name { font-family: var(--type-mono); font-size: 0.78rem; letter-spacing: 0.04em; text-transform: uppercase; }
.bench-bar {
position: relative; height: 18px; background: var(--dbn-panel-tinted); border: 1px solid var(--dbn-line); border-radius: 2px;
}
.bench-fill {
position: absolute; left: 0; top: 0; bottom: 0;
background: var(--dbn-teal);
width: var(--w, 20%);
}
.bench-row.is-no .bench-fill { background: var(--dbn-coral); }
.bench-num { text-align: right; font-family: var(--type-mono); font-weight: 800; font-size: 0.95rem; font-variant-numeric: tabular-nums; }
/* ─── Advocate side-picker ──────────────────────────────────────────────── */
.side-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.side-tile {
border: 1px solid var(--dbn-line);
background: var(--dbn-panel-tinted);
border-radius: 8px;
padding: 12px;
text-align: left;
cursor: pointer;
transition: all .15s;
}
.side-tile:hover { border-color: var(--dbn-coral); }
.side-tile.is-on { border-color: var(--dbn-coral); background: var(--dbn-coral-soft); box-shadow: inset 0 0 0 1px var(--dbn-coral); }
.side-tile-glyph { font-family: var(--type-mono); font-size: 0.66rem; color: var(--dbn-muted); letter-spacing: 0.1em; }
.side-tile-name { font-weight: 800; margin: 4px 0 2px; font-size: 1rem; }
.side-tile-desc { font-size: 0.78rem; color: var(--dbn-muted); line-height: 1.4; }
/* ─── Timeline strip ─────────────────────────────────────────────────────── */
.tl {
list-style: none; padding: 0; margin: 0;
position: relative;
}
.tl::before {
content: ""; position: absolute; left: 9px; top: 6px; bottom: 6px;
width: 1px; background: var(--dbn-line);
}
.tl li { position: relative; padding: 8px 0 14px 28px; }
.tl-dot {
position: absolute; left: 4px; top: 12px;
width: 12px; height: 12px; border-radius: 999px;
background: var(--dbn-panel); border: 2px solid var(--dbn-coral);
}
.tl li.is-bad .tl-dot { background: var(--dbn-coral); }
.tl-time { font-family: var(--type-mono); font-size: 0.7rem; letter-spacing: 0.04em; color: var(--dbn-muted); }
.tl-event { font-weight: 700; color: var(--dbn-ink); margin: 2px 0; }
.tl-detail { color: var(--dbn-muted); font-size: 0.88rem; line-height: 1.45; }
/* ─── Cases table ───────────────────────────────────────────────────────── */
.cases-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.cases-table th {
text-align: left; padding: 8px 10px 8px 0;
font-family: var(--type-mono); font-size: 0.66rem;
letter-spacing: 0.10em; text-transform: uppercase; color: var(--dbn-muted);
border-bottom: 1px solid var(--dbn-line);
}
.cases-table td { padding: 10px 10px 10px 0; border-bottom: 1px dashed var(--dbn-line); vertical-align: top; }
.cases-table tr:hover td { background: var(--dbn-panel-tinted); }
.cases-table .c-no { font-family: var(--type-mono); font-weight: 800; color: var(--dbn-coral); width: 36px; }
.cases-table .c-name { font-weight: 800; color: var(--dbn-ink); }
.cases-table .c-year { color: var(--dbn-muted); font-variant-numeric: tabular-nums; width: 50px; }
.cases-table .c-art {
display: inline-block;
font-family: var(--type-mono); font-size: 0.7rem; font-weight: 800;
padding: 2px 7px; border-radius: 3px;
background: var(--dbn-coral-soft); color: var(--dbn-coral);
}
/* ─── Voice card (Elena K. style quote) ─────────────────────────────────── */
.voice {
border-left: 4px solid var(--dbn-coral);
padding: 12px 0 12px 16px;
margin: 0;
}
.voice q {
display: block;
font-size: clamp(0.98rem, calc(0.92rem + var(--distress) * 0.4rem), 1.32rem);
font-weight: 600;
line-height: 1.45;
color: var(--dbn-ink);
letter-spacing: -0.005em;
quotes: "“" "”" "" "";
text-wrap: pretty;
}
.voice q::before { content: open-quote; color: var(--dbn-coral); font-weight: 900; }
.voice q::after { content: close-quote; color: var(--dbn-coral); font-weight: 900; }
.voice-by { margin-top: 8px; font-size: 0.78rem; color: var(--dbn-muted); display: flex; gap: 10px; align-items: center; }
.voice-initials {
width: 28px; height: 28px; border-radius: 999px;
background: var(--dbn-coral-soft); color: var(--dbn-coral);
display: inline-flex; align-items: center; justify-content: center;
font-family: var(--type-mono); font-weight: 800; font-size: 0.7rem;
border: 1px solid var(--dbn-coral);
}
/* ─── Source card extra polish ───────────────────────────────────────────── */
.source-card { background: var(--dbn-panel); }
.source-card.is-highlight { background: var(--dbn-coral-soft); }
/* ─── Section heading (mini, inside tool panels) ─────────────────────────── */
.h-section {
font-family: var(--type-mono);
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--dbn-muted);
margin: 18px 0 10px;
display: flex; align-items: center; gap: 10px;
}
.h-section::after {
content: ""; flex: 1; height: 1px; background: var(--dbn-line);
}
/* ─── Hairline divider with mono caption ────────────────────────────────── */
.hairline {
border: 0; border-top: 1px solid var(--dbn-line); margin: 18px 0;
}
/* ─── Tweaks panel — pin to bottom-right ─────────────────────────────────── */
.tweaks-panel-host { z-index: 1000; }
/* ─── Animations: cracked-flag pulse (used in topbar mark) ──────────────── */
@keyframes flag-half-mast {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(2px); }
}
/* ─── Footer strip ───────────────────────────────────────────────────────── */
.foot-strip {
max-width: 1500px;
margin: 24px auto 12px;
padding: 12px 4px;
display: flex; justify-content: space-between; gap: 16px;
border-top: 1px dashed var(--dbn-line);
font-family: var(--type-mono);
font-size: 0.7rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--dbn-muted);
}
/* ─── Source modal-lite (inline detail panel) ───────────────────────────── */
.source-detail {
margin-top: 10px; padding: 14px 16px;
border: 1px solid var(--dbn-coral);
background: var(--dbn-coral-soft);
border-radius: 8px;
position: relative;
}
.source-detail .close {
position: absolute; top: 6px; right: 8px;
background: transparent; border: 0; color: var(--dbn-coral); cursor: pointer;
font-family: var(--type-mono); font-size: 0.9rem;
}
.source-detail .head { font-family: var(--type-mono); font-size: 0.7rem; letter-spacing: 0.1em; color: var(--dbn-coral); text-transform: uppercase; }
.source-detail blockquote { margin: 8px 0 0; font-size: 0.95rem; line-height: 1.55; color: var(--dbn-ink); border-left: 2px solid var(--dbn-coral); padding-left: 12px; }
/* ─── Search input row used in Search & Ask ─────────────────────────────── */
.search-row { display: grid; grid-template-columns: 1fr auto; gap: 10px; }
.search-input {
width: 100%; border: 1px solid var(--dbn-line); border-radius: 8px;
padding: 12px 14px; background: var(--dbn-panel); color: var(--dbn-ink);
font-size: 0.98rem;
}
.search-input:focus-visible { outline: 3px solid var(--dbn-teal-ring); outline-offset: 2px; }
/* ─── Pre-set filter pills ──────────────────────────────────────────────── */
.pill-row { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0 4px; }
.pill-row .pill {
border: 1px solid var(--dbn-line);
background: var(--dbn-panel);
color: var(--dbn-muted);
border-radius: 999px;
padding: 5px 11px;
font-size: 0.78rem;
font-weight: 600;
cursor: pointer;
transition: all .12s;
}
.pill-row .pill:hover { border-color: var(--dbn-teal); color: var(--dbn-teal); }
.pill-row .pill.is-on { background: var(--dbn-teal); color: #fff; border-color: var(--dbn-teal); }
/* ─── Redaction tool — case-file paper ──────────────────────────────────── */
.redact-paper {
background: var(--paper);
color: #1a1a1a;
border: 1px solid var(--paper-2);
border-radius: 4px;
padding: 22px 26px;
font-family: "Times New Roman", Georgia, serif;
font-size: 0.96rem;
line-height: 1.7;
position: relative;
box-shadow: 0 1px 0 var(--paper-2);
}
.redact-paper::after {
content: "CONFIDENTIAL";
position: absolute; top: 14px; right: 18px;
font-family: var(--type-mono); font-size: 0.7rem;
letter-spacing: 0.16em; color: rgba(110,20,33,0.7);
border: 1.5px solid rgba(110,20,33,0.7);
padding: 4px 8px; border-radius: 3px;
transform: rotate(2deg);
}
html.surface-dark .redact-paper { color: #d8d0b6; }
/* ─── Misc utility ──────────────────────────────────────────────────────── */
.mono { font-family: var(--type-mono); }
.muted { color: var(--dbn-muted); }
.danger-ink { color: var(--dbn-coral); }
.tinted-card { background: var(--dbn-panel-tinted); border: 1px solid var(--dbn-line); border-radius: 8px; padding: 14px 16px; }
/* ─── Hide manifesto half-mast on narrow screens ────────────────────────── */
@media (max-width: 860px) {
.manifesto { grid-template-columns: 1fr; }
.manifesto-stats { justify-content: flex-start; }
.manifesto::before { display: none; }
.manifesto-stat, .manifesto-stat-label { text-align: left; margin-left: 0; }
}