customer-presentation/protected/mobile/mobile.css
Jonathan Hvid 9703d47407 credits: redesign supporter lockup + mobile parity pass
Rework the supporter credits ("Backed by" / "Part of") into a
three-tier lockup — a small uppercase label over an upright Newsreader
serif name, with the parent body / issuing authority in a quieter
serif beneath — so the credits read in the deck's editorial voice
instead of as a foreign sans-serif caption. Applied consistently
across all three views:

- Entrance welcome screen: replaced three separately position:fixed
  blocks (with hand-tuned top offsets) with one centred .welcome-credits
  lockup; drops the brittle magic-number stacking.
- Timeline hero ("Fenja introduction"): left-aligned .support-credit
  stack in place of the old .support / .support-bii lines.
- Mobile hero: matching .m-credit stack replacing .m-support / .m-backer.

Credits now read: Backed by Innofounder (Innovationsfonden); Part of
AI Lab (BioInnovation Institute); Part of The AI Regulatory Sandbox
(Datatilsynet & Digitaliseringsstyrelsen).

Also brings the mobile view to parity with the customer-facing desktop
deck: updated hero copy, platform-question framing, architecture layers,
Wiki deep-dive, deployment cards, and implementation roadmap; removes the
old "Join Project Bifrost" CTA + footer (mobile.js loses the join
handler, keeps the session check).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 14:08:19 +02:00

912 lines
23 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.

/* ─────────────────────────────────────────────────────────────
protected/mobile/mobile.css — minimal mobile view.
Design intent: the desktop site is an animated editorial
experience; this file is the legible fallback. Zero animations,
zero dependencies beyond /fenja/colors_and_type.css (loaded
first for the font-face declarations). Every class here is
`m-`-prefixed so there is no accidental cascade overlap with
the desktop CSS in protected/index.html.
───────────────────────────────────────────────────────────── */
:root {
--paper: #faf6ee;
--paper-2: #f3efe4;
--paper-3: #ece4d1;
--ink: #2e2e28;
--ink-soft: #5f5e5e;
--ink-dim: #8a887f;
--line: rgba(46, 46, 40, 0.12);
--line-soft: rgba(46, 46, 40, 0.06);
--crimson: #8a3a2f;
--copper: #6d8c7c;
--ochre: #c29d59;
--terracotta: #b96b58;
--accent: #b96b58;
}
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
background: var(--paper);
color: var(--ink);
font-family: "Newsreader", Georgia, "Times New Roman", serif;
font-size: 17px;
line-height: 1.55;
-webkit-text-size-adjust: 100%;
overflow-x: hidden; /* belt-and-suspenders — the arc + carousel both
rely on horizontal overflow, so we make sure
the page itself never horizontally scrolls. */
}
/* ─── Masthead ───────────────────────────────────────────── */
.m-masthead {
position: sticky;
top: 0;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
padding: 28px 18px 26px;
background: var(--paper);
border-bottom: 1px solid var(--line-soft);
}
.m-logo,
.m-logo:link,
.m-logo:visited,
.m-logo:hover,
.m-logo:active {
display: inline-block;
line-height: 0;
text-decoration: none;
border-bottom: 0;
-webkit-tap-highlight-color: transparent;
}
.m-logo img {
height: 48px;
width: auto;
display: block;
border: 0;
}
/* ─── Main layout ────────────────────────────────────────── */
.m-main {
padding-bottom: 48px;
}
/* Default section = generous vertical rhythm. Individual sections
override this where they need their own breathing. */
.m-section {
padding: 56px 22px;
}
/* ─── Shared type ────────────────────────────────────────── */
.m-title {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 32px;
line-height: 1.1;
letter-spacing: -0.015em;
margin: 0 0 22px 0;
text-wrap: pretty;
}
.m-title em { font-style: italic; font-weight: 700; }
.m-section-head {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 26px;
line-height: 1.15;
letter-spacing: -0.012em;
margin: 0 0 18px 0;
text-wrap: pretty;
}
.m-section-head em { font-style: italic; font-weight: 700; }
.m-section-eyebrow {
font-family: "Manrope", system-ui, -apple-system, sans-serif;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--ink-soft);
margin: 0 0 10px 0;
}
.m-body {
margin: 0 0 14px 0;
font-size: 17px;
line-height: 1.6;
color: var(--ink);
}
.m-body em { font-style: italic; font-weight: 700; color: var(--ink); }
/* Crimson bottom paragraph — consistent with the desktop intro */
.m-body--accent,
.m-body--accent em { color: var(--crimson); }
/* ─── Intro ──────────────────────────────────────────────── */
.m-intro {
padding: 44px 22px 48px;
}
/* ─── Timeline carousel ──────────────────────────────────── */
.m-timeline {
background: var(--paper-2);
padding: 56px 0 64px; /* track bleeds edge-to-edge; use inner padding */
}
.m-timeline-intro {
padding: 0 22px 18px;
}
.m-swipe-hint {
margin: 0;
font-family: "Manrope", system-ui, -apple-system, sans-serif;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--ink-dim);
display: inline-flex;
align-items: baseline;
gap: 8px;
}
.m-swipe-hint span { letter-spacing: 0.22em; }
.m-timeline-track {
display: flex;
flex-direction: row;
gap: 14px;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-padding-inline-start: 22px;
padding: 6px 22px 10px;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
}
.m-timeline-track::-webkit-scrollbar { display: none; }
.m-event {
flex: 0 0 84vw;
max-width: 340px;
scroll-snap-align: start;
scroll-snap-stop: always;
padding: 22px 20px 18px;
background: #fffdf6;
border: 1px solid var(--line);
border-radius: 8px;
position: relative;
box-shadow: 0 10px 22px -18px rgba(46, 46, 40, 0.28);
}
.m-event-meta {
display: flex;
gap: 10px;
align-items: baseline;
margin-bottom: 8px;
font-family: "Manrope", system-ui, -apple-system, sans-serif;
font-size: 10.5px;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.m-event-kind {
font-weight: 700;
color: var(--ink);
}
.m-event[data-accent="crimson"] .m-event-kind { color: var(--crimson); }
.m-event[data-accent="copper"] .m-event-kind { color: var(--copper); }
.m-event[data-accent="ochre"] .m-event-kind { color: var(--ochre); }
.m-event[data-accent="terracotta"] .m-event-kind { color: var(--terracotta); }
.m-event-date { color: var(--ink-dim); font-weight: 500; }
.m-event-hed {
font-family: "Newsreader", Georgia, serif;
font-weight: 500;
font-size: 20px;
line-height: 1.22;
letter-spacing: -0.01em;
margin: 0 0 10px 0;
color: var(--ink);
text-wrap: pretty;
}
.m-event-hed em { font-style: italic; font-weight: 700; }
.m-event-body {
margin: 0 0 12px 0;
font-size: 15.5px;
line-height: 1.55;
color: var(--ink-soft);
}
.m-event-source {
font-family: "Manrope", system-ui, -apple-system, sans-serif;
font-size: 10.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--ink-dim);
}
.m-event-index {
position: absolute;
top: 14px;
right: 16px;
font-family: "Newsreader", Georgia, serif;
font-size: 13px;
color: var(--ink-dim);
font-variant-numeric: tabular-nums;
}
.m-event-index span {
color: var(--accent);
font-weight: 600;
}
/* ─── Transition strip ───────────────────────────────────── */
.m-transition {
padding: 88px 22px;
text-align: center;
}
.m-rule-top,
.m-rule-bottom {
display: block;
width: 44px;
height: 1px;
margin: 0 auto 20px;
background: var(--ink-dim);
}
.m-rule-bottom { margin: 20px auto 0; }
.m-transition-eyebrow {
font-family: "Newsreader", Georgia, serif;
font-size: 24px;
line-height: 1.25;
margin: 0;
color: var(--ink);
}
.m-transition-eyebrow em { font-style: italic; font-weight: 700; color: var(--accent); }
/* ─── Hero ───────────────────────────────────────────────── */
.m-hero {
background: var(--paper-2);
padding: 72px 22px 80px;
text-align: center;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.m-hero-mark {
margin: 0 0 28px 0;
line-height: 0;
}
.m-hero-mark img {
height: 36px;
width: auto;
display: inline-block;
opacity: 0.95;
}
.m-eyebrow {
font-family: "Manrope", system-ui, -apple-system, sans-serif;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--accent);
margin: 0 0 20px 0;
}
.m-hero-title {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 34px;
line-height: 1.08;
letter-spacing: -0.018em;
margin: 0 0 22px 0;
text-wrap: pretty;
}
.m-hero-title em { font-style: italic; font-weight: 700; color: var(--accent); }
.m-hero-lede {
margin: 0 auto 32px;
font-size: 18px;
line-height: 1.55;
color: var(--ink);
max-width: 44ch;
}
/* Backer credits — funder + affiliations, in the deck's editorial
voice: a small uppercase Manrope label over each entity name set in
upright Newsreader serif, with the parent body / issuing authority
in a quieter serif beneath. Mirrors the desktop hero's left-aligned
.support-credit stack and the entrance page's .welcome-credits. */
.m-credits {
margin-top: 24px;
padding-top: 22px;
border-top: 1px solid var(--line);
display: flex;
flex-direction: column;
gap: 16px;
}
.m-credit {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.m-credit-label {
font-family: "Manrope", system-ui, sans-serif;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--ink-dim);
}
.m-credit-name {
font-family: "Newsreader", Georgia, serif;
font-style: normal;
font-weight: 500;
font-size: 19px;
line-height: 1.2;
letter-spacing: 0.005em;
color: var(--ink);
}
.m-credit-auth {
font-family: "Newsreader", Georgia, serif;
font-style: normal;
font-size: 13.5px;
line-height: 1.3;
color: var(--ink-soft);
}
/* ─── Platform question (framing) ────────────────────────── */
.m-pq {
padding: 80px 22px 64px;
border-top: 1px solid var(--line);
}
.m-pq-title {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 25px;
line-height: 1.18;
letter-spacing: -0.012em;
margin: 0 0 20px 0;
text-wrap: pretty;
}
.m-pq-body {
margin: 0;
font-size: 17px;
line-height: 1.6;
color: var(--ink-soft);
}
.m-pq-body em { font-style: italic; font-weight: 700; color: var(--ink); }
/* ─── Architecture ───────────────────────────────────────── */
.m-arch {
padding: 72px 22px 80px;
}
/* Narrative beats — colored cards, paper text. Palette mirrors the
desktop layer story (sage, slate, clay, plum), with a dark ink
"full picture" summary card to close the sequence. */
.m-arch-beat {
position: relative;
padding: 24px 22px;
margin: 0 0 14px 0;
border-radius: 10px;
background: #7a8c70;
color: #fbf6e9;
box-shadow:
0 16px 28px -22px rgba(46, 46, 40, 0.45),
0 4px 10px -6px rgba(46, 46, 40, 0.18);
}
.m-arch-beat:nth-of-type(1) { background: #7a8c70; } /* sage — model */
.m-arch-beat:nth-of-type(2) { background: #7b9399; } /* slate — knowledge */
.m-arch-beat:nth-of-type(3) { background: #b07556; } /* clay — tools */
.m-arch-beat:nth-of-type(4) { background: #8a7a92; } /* plum — agents */
.m-arch-beat--summary { background: var(--ink); margin-bottom: 0; }
.m-arch-eyebrow {
font-family: "Manrope", system-ui, sans-serif;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: rgba(251, 246, 233, 0.8);
margin: 0 0 10px 0;
}
.m-arch-headline {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 21px;
line-height: 1.2;
letter-spacing: -0.01em;
margin: 0 0 12px 0;
color: #fbf6e9;
text-wrap: pretty;
}
.m-arch-headline em { font-style: italic; font-weight: 700; color: #fff9ea; }
.m-arch-body {
margin: 0;
font-size: 15.5px;
line-height: 1.55;
color: rgba(251, 246, 233, 0.88);
}
.m-arch-body em { font-style: italic; font-weight: 700; color: #fff9ea; }
/* Component grid — light cards on paper, grouped under a labeled
"client-managed" frame. */
.m-arch-frame {
margin-top: 32px;
padding: 16px 14px 18px;
border: 1px solid var(--line);
border-radius: 12px;
background: var(--paper-2);
}
.m-arch-frame-label {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
text-align: center;
margin: 0 0 16px 0;
}
.m-arch-group { margin: 0 0 18px 0; }
.m-arch-group:last-child { margin-bottom: 0; }
.m-arch-group-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 10px;
margin: 0 0 8px 0;
}
.m-arch-group-label {
font-family: "Manrope", system-ui, sans-serif;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--ink);
}
.m-arch-group-caption {
font-family: "Newsreader", Georgia, serif;
font-style: italic;
font-size: 13.5px;
color: var(--ink-soft);
}
.m-arch-cards {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.m-arch-card {
padding: 12px 12px 13px;
border-radius: 8px;
background: #fffdf6;
border: 1px solid var(--line);
}
.m-arch-card-name {
font-family: "Manrope", system-ui, sans-serif;
font-weight: 700;
font-size: 13px;
line-height: 1.25;
color: var(--ink);
margin: 0 0 4px 0;
}
.m-arch-card-italic {
font-family: "Newsreader", Georgia, serif;
font-style: italic;
font-size: 13px;
line-height: 1.3;
color: var(--ink-soft);
margin: 0 0 6px 0;
}
.m-arch-card-mono {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--ink-dim);
margin: 0;
}
/* ─── Project Bifrost reveal ─────────────────────────────── */
.m-bifrost {
position: relative;
overflow: hidden;
padding: 120px 22px 110px;
background: linear-gradient(to bottom,
var(--paper) 0%, var(--paper-2) 40%, var(--paper-2) 60%, var(--paper) 100%);
text-align: center;
}
/* The arc is drawn in an SVG that's wider than the viewport so the
gradient ends are always cropped at the screen edges — the bridge
runs off the sides instead of shrinking into a thin ribbon. */
.m-bifrost-arc {
position: absolute;
left: 50%;
top: 48%;
transform: translate(-50%, -50%);
width: 190%;
max-width: 900px;
pointer-events: none;
z-index: 1;
opacity: 0.98;
}
.m-bifrost-arc svg {
display: block;
width: 100%;
height: auto;
}
.m-bifrost-content {
position: relative;
z-index: 2;
}
.m-bifrost-eyebrow {
font-family: "Manrope", system-ui, sans-serif;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--accent);
margin: 0 0 20px 0;
}
.m-bifrost-name {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 48px;
line-height: 1.05;
letter-spacing: -0.02em;
margin: 0 0 26px 0;
}
.m-bifrost-name em {
font-style: italic;
font-weight: 700;
color: var(--accent);
}
.m-bifrost-sub {
margin: 0 auto;
font-size: 17px;
line-height: 1.55;
color: var(--ink);
max-width: 38ch;
}
.m-bifrost-sub em { font-style: italic; font-weight: 700; color: var(--accent); }
/* ─── What Bifrost means ─────────────────────────────────── */
.m-meaning {
padding: 80px 22px 72px;
}
.m-meaning-lede {
margin: 0 0 40px 0;
font-size: 17px;
line-height: 1.55;
color: var(--ink-soft);
}
.m-meaning-lede em { font-style: italic; font-weight: 700; color: var(--ink); }
.m-stop {
padding: 32px 0;
border-top: 1px solid var(--line);
}
.m-stop:first-of-type { border-top: none; padding-top: 8px; }
.m-stop-illust {
display: block;
width: 100%;
max-width: 220px;
height: auto;
margin: 0 0 20px 0;
/* SVG illustrations have white-ish backgrounds; let them sit on
paper without a frame. */
}
.m-stop-eyebrow {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10.5px;
font-weight: 600;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
margin: 0 0 8px 0;
}
.m-stop-title {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 28px;
line-height: 1.1;
letter-spacing: -0.012em;
margin: 0 0 8px 0;
}
.m-stop-title em { font-style: italic; font-weight: 700; color: var(--accent); }
.m-stop-sub {
margin: 0 0 14px 0;
font-family: "Newsreader", Georgia, serif;
font-style: italic;
color: var(--ink-soft);
font-size: 16px;
}
.m-stop-body {
margin: 0;
font-size: 16px;
line-height: 1.55;
color: var(--ink);
}
/* ─── Advisory board — 2-up portrait grid ────────────────── */
.m-board {
padding: 80px 22px 72px;
border-top: 1px solid var(--line);
}
.m-board-sub {
margin: 6px 0 36px 0;
font-family: "Newsreader", Georgia, serif;
font-style: italic;
font-size: 17px;
color: var(--ink-soft);
}
.m-board-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 32px 18px;
}
.m-board-member { margin: 0; }
.m-board-portrait {
width: 100%;
aspect-ratio: 1 / 1;
border-radius: 4px;
overflow: hidden;
background: #efeadc;
}
.m-board-portrait img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.m-bm-name {
font-family: "Newsreader", Georgia, serif;
font-weight: 700;
font-size: 17px;
line-height: 1.18;
letter-spacing: -0.01em;
color: var(--ink);
margin: 12px 0 4px 0;
}
.m-bm-title {
font-family: "Manrope", system-ui, sans-serif;
font-weight: 600;
font-size: 12.5px;
line-height: 1.3;
color: var(--ink);
margin: 0;
}
.m-bm-company {
font-family: "Manrope", system-ui, sans-serif;
font-weight: 400;
font-size: 12.5px;
line-height: 1.3;
color: var(--ink-dim);
margin: 2px 0 0 0;
}
/* ─── Wiki deep-dive — scattered → compiler → structured ─── */
.m-wiki {
padding: 72px 22px 80px;
border-top: 1px solid var(--line);
}
.m-wiki-zone {
padding: 22px 20px;
border-radius: 10px;
border: 1px solid var(--line);
background: #fffdf6;
}
/* Top zone reads "unsettled": muted surface, dashed edge. */
.m-wiki-zone--scatter {
background: var(--paper-2);
border-style: dashed;
border-color: var(--ink-dim);
}
/* Compiler is the only element carrying the accent — mirrors the
desktop's single walnut highlight. */
.m-wiki-zone--compiler {
background: var(--accent);
border-color: var(--accent);
}
.m-wiki-zone--compiler .m-wiki-eyebrow { color: rgba(255, 249, 234, 0.85); }
.m-wiki-zone--compiler .m-wiki-name { color: #fff9ea; }
.m-wiki-zone--compiler .m-wiki-sub { color: rgba(255, 249, 234, 0.92); }
.m-wiki-eyebrow {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
margin: 0 0 8px 0;
}
.m-wiki-name {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 23px;
line-height: 1.15;
letter-spacing: -0.012em;
color: var(--ink);
margin: 0 0 8px 0;
}
.m-wiki-sub {
margin: 0;
font-size: 15px;
line-height: 1.5;
color: var(--ink-soft);
}
/* Down-chevron connector between zones. */
.m-wiki-arrow {
width: 14px;
height: 14px;
margin: 14px auto;
border-right: 2px solid var(--ink-dim);
border-bottom: 2px solid var(--ink-dim);
transform: rotate(45deg);
}
/* ─── Deployment options ─────────────────────────────────── */
.m-deploy {
padding: 72px 22px 80px;
border-top: 1px solid var(--line);
}
.m-deploy-grid {
display: flex;
flex-direction: column;
gap: 14px;
}
.m-deploy-card {
padding: 22px 20px;
border-radius: 10px;
border: 1px solid var(--line);
background: #fffdf6;
}
.m-deploy-card--dark {
background: var(--ink);
border-color: var(--ink);
}
.m-deploy-card--dark .m-deploy-name { color: #fbf6e9; }
.m-deploy-card--dark .m-deploy-name em { color: var(--accent); }
.m-deploy-card--dark .m-deploy-tier { color: rgba(251, 246, 233, 0.7); }
.m-deploy-card--dark .m-deploy-body { color: rgba(251, 246, 233, 0.9); }
.m-deploy-card--dark .m-deploy-includes { color: rgba(251, 246, 233, 0.6); }
.m-deploy-name {
font-family: "Newsreader", Georgia, serif;
font-weight: 400;
font-size: 24px;
line-height: 1.1;
letter-spacing: -0.012em;
color: var(--ink);
margin: 0 0 6px 0;
}
.m-deploy-name em { font-style: italic; font-weight: 700; color: var(--accent); }
.m-deploy-tier {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
margin: 0 0 12px 0;
}
.m-deploy-body {
margin: 0;
font-size: 15.5px;
line-height: 1.55;
color: var(--ink);
}
.m-deploy-includes {
margin: 12px 0 0 0;
font-family: "Manrope", system-ui, sans-serif;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.04em;
color: var(--ink-dim);
}
/* ─── Implementation roadmap ─────────────────────────────── */
.m-roadmap {
padding: 72px 22px 88px;
border-top: 1px solid var(--line);
}
.m-rm-card {
margin: 0 0 12px 0;
border-radius: 10px;
border: 1px solid var(--line);
background: #fffdf6;
overflow: hidden;
}
.m-rm-summary {
display: flex;
flex-direction: column;
gap: 4px;
padding: 18px 44px 18px 20px;
position: relative;
cursor: pointer;
list-style: none;
}
.m-rm-summary::-webkit-details-marker { display: none; }
/* +/ toggle chevron, top-right of the summary. */
.m-rm-summary::after {
content: "";
position: absolute;
right: 20px;
top: 22px;
width: 9px;
height: 9px;
border-right: 2px solid var(--ink-dim);
border-bottom: 2px solid var(--ink-dim);
transform: rotate(45deg);
transition: transform 0.2s ease;
}
.m-rm-card[open] .m-rm-summary::after {
transform: rotate(-135deg);
top: 26px;
}
.m-rm-name {
font-family: "Newsreader", Georgia, serif;
font-weight: 700;
font-size: 20px;
line-height: 1.1;
letter-spacing: -0.01em;
color: var(--ink);
}
.m-rm-italic {
font-family: "Newsreader", Georgia, serif;
font-style: italic;
font-size: 15px;
color: var(--ink-soft);
}
.m-rm-detail {
padding: 0 20px 20px;
}
.m-rm-intro {
margin: 0 0 16px 0;
font-size: 15.5px;
line-height: 1.55;
color: var(--ink);
}
.m-rm-label {
font-family: "Manrope", system-ui, sans-serif;
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink-dim);
margin: 0 0 8px 0;
}
.m-rm-list {
margin: 0;
padding: 0 0 0 18px;
}
.m-rm-list li {
font-size: 15px;
line-height: 1.5;
color: var(--ink-soft);
margin: 0 0 6px 0;
}
.m-rm-list li:last-child { margin-bottom: 0; }
/* Cross-cutting band — neutral surface so it reads as "always on",
not as a fifth deliverable. */
.m-rm-band {
margin-top: 20px;
padding: 18px 20px;
border-radius: 10px;
background: var(--paper-3);
border: 1px solid var(--line);
}
.m-rm-band-name {
font-family: "Manrope", system-ui, sans-serif;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--ink);
margin: 0 0 6px 0;
}
.m-rm-band-italic {
font-family: "Newsreader", Georgia, serif;
font-style: italic;
font-size: 14.5px;
line-height: 1.4;
color: var(--ink-soft);
margin: 0;
}
.m-rm-foot {
margin: 22px 0 0 0;
text-align: center;
font-family: "Manrope", system-ui, sans-serif;
font-size: 11.5px;
letter-spacing: 0.04em;
color: var(--ink-dim);
}