/* ============================================================
 * oddly landing archetypes. Design impl Phase 1b
 * (OEG-BRIEF-2026-DESIGNIMPL, design-handoff-2026-07-02).
 *
 * The reusable component layer behind the marketing surface. Phase 1
 * (#515) authored the landing's section archetypes INLINE in
 * src/app/index.html; the brief requires them as REUSABLE archetype
 * components so every other marketing page composes from the same set
 * instead of reinventing a look per page (the "cross-cutting visual
 * changes go through the shared layer, never stamped per page" rule,
 * locked 2026-06-23). This file lifts those archetypes verbatim out of
 * the landing into the shared layer, then adds the prose/longform
 * archetype family the narrative pages need, composed only from the
 * landing's own primitives (the same type scale, colours, hairlines,
 * radii, buttons). No new visual vocabulary.
 *
 * Built on the locked spine v2 tokens (/_shared/oddly-tokens.css:
 * Newsreader display serif, Hanken Grotesk body, cream canvas, teal is
 * the one action colour, gold is earned). Load order on a page:
 *   oddly-chrome.css, oddly-tokens.css, [insights.css], oddly-broadsheet.css,
 *   oddly-titan.css, then this.
 *
 * Section archetypes (from the landing, sections 1-9):
 *   hero + hero brief card, the idea (noise -> ranked), proof (ink inset),
 *   connectors grid, trust columns, manifesto, pricing cards, photo band,
 *   closing CTA panel.
 * Prose/longform archetypes (Phase 1b additions, composed from the above):
 *   band rhythm, longform prose column, solo prose hero, the gold-o seal,
 *   hairline fact rows, editorial table, question/answer FAQ.
 * ============================================================ */

.o-page {
  width: 100%;
  background: var(--oddly-canvas, #FAFAF7);
  color: var(--oddly-ink, #1A1A2E);
  font-family: var(--oddly-font-sans, "Hanken Grotesk", system-ui, sans-serif);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
.o-page ::selection { background: var(--oddly-teal, #2C7873); color: var(--oddly-canvas, #FAFAF7); }

/* Shared display + emphasis primitives */
.o-serif { font-family: var(--oddly-font-serif, "Newsreader", Georgia, serif); font-weight: 400; }
.o-em { font-style: italic; color: var(--oddly-teal, #2C7873); }
.o-em-gold { font-style: italic; color: var(--oddly-gold, #B08D57); }
.o-kicker {
  font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--oddly-teal, #2C7873); font-weight: 700;
}
.o-h2 {
  font-family: var(--oddly-font-serif, "Newsreader", Georgia, serif); font-weight: 400;
  font-size: clamp(32px, 4vw, 50px); line-height: 1.1; letter-spacing: -0.015em; margin: 0;
}
.o-sub { font-size: 19px; line-height: 1.6; color: var(--oddly-text-secondary, rgba(26,26,46,0.66)); margin: 0; }

/* Buttons (the reference's hero primary = the v2 button token defaults) */
.o-btn {
  display: inline-flex; align-items: center; gap: 10px; text-decoration: none;
  font-size: var(--oddly-btn-font-size, 16px); font-weight: var(--oddly-btn-weight, 600);
  padding: var(--oddly-btn-pad, 17px 30px); border-radius: var(--oddly-radius-btn, 11px);
}
.o-btn--teal { background: var(--oddly-teal, #2C7873); color: var(--oddly-canvas, #FAFAF7); }
.o-btn--ghost { color: var(--oddly-ink, #1A1A2E); }
.o-btn--outline { color: var(--oddly-ink, #1A1A2E); border: 1px solid var(--oddly-border-btn, rgba(26,26,46,0.18)); }

/* ---- Section 1: hero ---- */
.o-hero-sec { position: relative; background: var(--oddly-canvas, #FAFAF7); border-bottom: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); overflow: hidden; }
.o-hero-glow { position: absolute; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; }
.o-hero-glow::before {
  content: ""; position: absolute; top: -90px; right: -90px; width: 780px; height: 780px; border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, var(--oddly-gold-tint-strong, rgba(176,141,87,0.14)), transparent 60%);
}
.o-hero { position: relative; z-index: 2; max-width: 1240px; margin: 0 auto; padding: 64px 44px 56px;
  display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 60px; align-items: center; }
.o-hero-h1 {
  font-family: var(--oddly-font-serif, "Newsreader", Georgia, serif); font-weight: 400;
  font-size: clamp(44px, 5vw, 70px); line-height: 1.0; letter-spacing: -0.025em; margin: 26px 0; color: var(--oddly-ink, #1A1A2E);
}
.o-hero-sub { font-size: 20px; line-height: 1.55; color: var(--oddly-text-secondary, rgba(26,26,46,0.66)); max-width: 460px; margin: 0 0 36px; }
.o-hero-cta { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.o-tour-ring { width: 30px; height: 30px; border-radius: 50%; border: 1px solid rgba(26,26,46,0.25); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; }

/* Hero "Today's brief" card */
.o-hero-card { justify-self: end; width: 100%; max-width: 430px; background: var(--oddly-surface, #FFF);
  border: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); border-radius: var(--oddly-radius-card, 16px);
  box-shadow: var(--oddly-shadow-hero, 0 34px 70px -38px rgba(26,26,46,0.4)); overflow: hidden; }
.o-hc-rule { height: 3px; background: linear-gradient(90deg, var(--oddly-teal, #2C7873), var(--oddly-gold, #B08D57)); }
.o-hc-body { padding: 24px; }
.o-hc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.o-hc-head-l { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--oddly-text-secondary-soft, rgba(26,26,46,0.55)); }
.o-hc-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--oddly-teal, #2C7873); }
.o-hc-head-r { font-size: 12px; color: var(--oddly-text-tertiary-soft, rgba(26,26,46,0.4)); }
.o-hc-health { display: flex; align-items: flex-end; gap: 14px; padding-bottom: 20px; margin-bottom: 18px; border-bottom: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); }
.o-hc-score { display: flex; align-items: baseline; gap: 5px; }
.o-hc-score b { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 400; font-size: 50px; line-height: 0.9; letter-spacing: -0.02em; }
.o-hc-score span { font-size: 16px; color: var(--oddly-text-tertiary-soft, rgba(26,26,46,0.4)); }
.o-hc-hl { padding-bottom: 5px; }
.o-hc-hl-k { font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(26,26,46,0.45); font-weight: 700; }
.o-hc-hl-s { font-size: 13px; color: var(--oddly-teal, #2C7873); font-weight: 600; }
.o-hc-plays { display: flex; flex-direction: column; gap: 11px; }
.o-hc-play { display: grid; grid-template-columns: 22px 1fr auto; gap: 12px; align-items: center; }
.o-hc-num { width: 22px; height: 22px; border-radius: 50%; color: var(--oddly-canvas, #FAFAF7); font-size: 12px; font-weight: 700; text-align: center; line-height: 22px; }
.o-hc-name { font-size: 14px; font-weight: 600; }
.o-hc-val { font-size: 13px; font-weight: 700; }
.o-hc-note { display: flex; align-items: center; gap: 8px; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); font-size: 12px; color: var(--oddly-text-tertiary, rgba(26,26,46,0.5)); }

/* ---- Section 2: the idea ---- */
.o-idea-sec { max-width: 1200px; margin: 0 auto; padding: 70px 40px 120px; }
.o-idea-intro { max-width: 760px; margin-bottom: 64px; }
.o-idea-intro .o-h2 { margin-bottom: 22px; }
.o-idea { display: grid; grid-template-columns: 1fr auto 1.1fr; gap: 48px; align-items: center;
  background: var(--oddly-surface, #FFF); border: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); border-radius: var(--oddly-radius-card-lg, 20px); padding: 48px; }
.o-idea-k { font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--oddly-text-tertiary-soft, rgba(26,26,46,0.4)); font-weight: 600; margin-bottom: 18px; }
.o-chips { display: flex; flex-wrap: wrap; gap: 9px; }
.o-chip { font-size: 13px; padding: 7px 13px; border-radius: 30px; background: rgba(26,26,46,0.04); color: var(--oddly-text-secondary-soft, rgba(26,26,46,0.55)); }
.o-idea-arrow { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--oddly-teal, #2C7873); }
.o-idea-arrow-l { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; }
.o-idea-arrow-g { font-size: 30px; }
.o-rank { display: flex; flex-direction: column; gap: 12px; }
.o-rank-row { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border-radius: 12px; border: 1px solid rgba(26,26,46,0.1); }
.o-rank-row--hi { border: 1px solid var(--oddly-teal-tint-strong, rgba(44,120,115,0.25)); background: var(--oddly-teal-tint-faint, rgba(44,120,115,0.04)); }
.o-rank-num { width: 28px; height: 28px; border-radius: 50%; color: var(--oddly-canvas, #FAFAF7); font-weight: 700; font-size: 14px; text-align: center; line-height: 28px; }
.o-rank-t { flex: 1; font-size: 15px; font-weight: 600; }
.o-rank-tag { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; }

/* ---- Section 3: proof (ink inset) ---- */
.o-proof-sec { background: var(--oddly-canvas, #FAFAF7); padding: 44px 24px 64px; }
.o-proof-panel { max-width: 1240px; margin: 0 auto; padding: clamp(48px, 6vw, 92px) clamp(24px, 5vw, 60px); background: var(--oddly-ink, #1A1A2E); color: var(--oddly-canvas, #FAFAF7); border-radius: var(--oddly-radius-inset, 30px); }
.o-proof-head { max-width: 720px; margin-bottom: 56px; }
.o-proof-head .o-h2 { margin-bottom: 22px; }
.o-proof-head p { font-size: 19px; line-height: 1.6; color: rgba(250,250,247,0.66); margin: 0; }
.o-proof-mock { box-shadow: var(--oddly-shadow-proof, 0 50px 110px -40px rgba(0,0,0,0.6)); border-radius: 20px; overflow: hidden; }
.o-proof-mock a { text-decoration: none; color: inherit; display: block; }

/* ---- Section 4: connectors ---- */
.o-conn-sec { max-width: 1120px; margin: 0 auto; padding: 80px 40px 72px; }
.o-conn-intro { text-align: center; max-width: 720px; margin: 0 auto 52px; }
.o-conn-intro .o-h2 { font-size: clamp(30px, 3.6vw, 46px); line-height: 1.12; margin-bottom: 20px; }
.o-conn-intro p { font-size: 18px; line-height: 1.6; color: var(--oddly-text-secondary, rgba(26,26,46,0.64)); margin: 0; }
.o-grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: rgba(26,26,46,0.1); border: 1px solid rgba(26,26,46,0.1); border-radius: var(--oddly-radius-card, 16px); overflow: hidden; }
.o-conn-cell { background: var(--oddly-surface, #FFF); padding: 26px 24px; }
.o-conn-k { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--oddly-teal, #2C7873); font-weight: 700; margin-bottom: 18px; }
.o-conn-items { display: flex; flex-direction: column; gap: 11px; }
.o-conn-on { font-size: 15px; font-weight: 600; color: var(--oddly-ink, #1A1A2E); }
.o-conn-soon { font-size: 14px; color: var(--oddly-text-tertiary, rgba(26,26,46,0.5)); }
.o-conn-foot { text-align: center; margin-top: 26px; font-size: 14px; color: var(--oddly-text-tertiary, rgba(26,26,46,0.5)); }

/* ---- Section 5: trust ---- */
.o-trust-sec { max-width: 1200px; margin: 0 auto; padding: 40px 40px 100px; }
.o-trust-head { max-width: 720px; margin-bottom: 56px; }
.o-trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 36px; }
.o-trust-col { padding-top: 22px; }
.o-trust-col--teal { border-top: 2px solid var(--oddly-teal, #2C7873); }
.o-trust-col--gold { border-top: 2px solid var(--oddly-gold, #B08D57); }
.o-trust-t { font-size: 17px; font-weight: 700; margin-bottom: 10px; }
.o-trust-col p { font-size: 14px; line-height: 1.6; color: var(--oddly-text-secondary, rgba(26,26,46,0.6)); margin: 0; }
/* On the ink band, the trust columns keep their teal/gold top-rule accent but
   flip to light text (the page's one ink "moment"). */
.o-band--ink .o-trust-t { color: var(--oddly-canvas, #FAFAF7); }
.o-band--ink .o-trust-col p { color: rgba(250,250,247,0.72); }

/* ---- Section 6: manifesto ---- */
.o-manifesto { max-width: 880px; margin: 0 auto; padding: 72px 40px 100px; text-align: center; }
.o-manifesto-h { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 400; font-size: clamp(30px, 3.8vw, 48px); line-height: 1.16; letter-spacing: -0.015em; color: var(--oddly-ink, #1A1A2E); margin: 0 0 26px; }
.o-manifesto p.sub { font-size: 18px; line-height: 1.65; color: var(--oddly-text-secondary, rgba(26,26,46,0.62)); max-width: 620px; margin: 0 auto; }

/* ---- Section 7: pricing ---- */
.o-pricing-sec { background: var(--oddly-canvas, #FAFAF7); }
.o-pricing { max-width: 1200px; margin: 0 auto; padding: 110px 40px 120px; }
.o-pricing-head { max-width: 720px; margin-bottom: 56px; }
.o-pricing-head .o-h2 { margin-bottom: 22px; }
.o-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: stretch; }
/* Four-rung tier ladder (Watch / Spark / Nudge / Autopilot). Same o-tier
   cards, one more column with a tighter gutter; collapses to 2-up then 1-up. */
.o-grid4-tier { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; align-items: stretch; }
.o-tier { border-radius: 18px; padding: 32px; display: flex; flex-direction: column; }
.o-tier--plain { background: var(--oddly-canvas, #FAFAF7); border: 1px solid rgba(26,26,46,0.1); }
.o-tier--feat { background: var(--oddly-canvas, #FAFAF7); border: 1px solid rgba(44,120,115,0.4); position: relative; box-shadow: var(--oddly-shadow-cta, 0 24px 50px -30px rgba(44,120,115,0.5)); }
.o-tier--dark { background: var(--oddly-ink, #1A1A2E); color: var(--oddly-canvas, #FAFAF7); }
.o-tier-badge { position: absolute; top: -11px; left: 32px; background: var(--oddly-teal, #2C7873); color: var(--oddly-canvas, #FAFAF7); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; padding: 5px 12px; border-radius: 30px; }
.o-tier-name { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 400; font-size: 24px; margin-bottom: 6px; }
.o-tier-head { display: flex; align-items: center; justify-content: space-between; }
.o-tier-req { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; color: var(--oddly-gold, #B08D57); }
.o-tier-tag { font-size: 14px; color: rgba(26,26,46,0.55); margin-bottom: 22px; }
.o-tier--dark .o-tier-tag { color: rgba(250,250,247,0.55); }
.o-tier-price { display: flex; align-items: baseline; gap: 6px; margin-bottom: 24px; }
.o-tier-price b { font-size: 36px; font-weight: 700; letter-spacing: -0.01em; }
.o-tier-price span { font-size: 15px; color: rgba(26,26,46,0.45); }
.o-tier-price--prem b { font-size: 30px; color: var(--oddly-gold, #B08D57); }
.o-tier-feats { display: flex; flex-direction: column; gap: 12px; margin-bottom: 28px; font-size: 14px; color: rgba(26,26,46,0.7); }
.o-tier--dark .o-tier-feats { color: rgba(250,250,247,0.78); }
.o-tier-feat { display: flex; gap: 10px; }
.o-tier-check { color: var(--oddly-teal, #2C7873); font-weight: 700; }
.o-tier--dark .o-tier-check { color: var(--oddly-gold, #B08D57); }
.o-tier-cta { margin-top: auto; text-align: center; padding: 14px; border-radius: var(--oddly-radius-btn, 11px); font-size: 15px; font-weight: 600; text-decoration: none; }
.o-tier-cta--ghost { border: 1px solid rgba(26,26,46,0.18); color: var(--oddly-ink, #1A1A2E); }
.o-tier-note { margin-top: 10px; font-size: 12.5px; color: rgba(26,26,46,0.55); text-align: center; }
.o-tier-cta--teal { background: var(--oddly-teal, #2C7873); color: var(--oddly-canvas, #FAFAF7); }
.o-tier-cta--dark { border: 1px solid rgba(250,250,247,0.25); color: var(--oddly-canvas, #FAFAF7); }
.o-pricing-foot { text-align: center; margin-top: 30px; font-size: 14px; color: var(--oddly-text-tertiary, rgba(26,26,46,0.5)); }

/* ---- Section 8: anywhere band ---- */
.o-anywhere-sec { background: var(--oddly-canvas, #FAFAF7); padding: 44px 24px; }
.o-anywhere { position: relative; max-width: 1240px; margin: 0 auto; border-radius: var(--oddly-radius-inset, 30px); overflow: hidden; }
.o-stage-wrap { position: relative; width: 100%; aspect-ratio: 1024 / 576; overflow: hidden; }
.o-stage { position: absolute; top: 0; left: 0; width: 1024px; height: 576px; transform-origin: top left; }
.o-stage img.o-cafe { display: block; width: 1024px; height: 576px; }
.o-scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(250,250,247,0.94) 0%, rgba(250,250,247,0.72) 22%, rgba(250,250,247,0) 46%); }
/* Laptop-screen composite: the perspective transform is final; the fill is a
   TEMP neutral placeholder until the Playwright dashboard-render row supplies a
   real screenshot (design impl sequencing). No fabricated dashboard here. */
.o-screen { position: absolute; top: 0; left: 0; width: 800px; height: 560px;
  transform: matrix3d(0.39772,-0.00563,0,-0.000092,-0.010936,0.459372,0,0.00001,0,0,1,0,527,150,0,1); transform-origin: 0 0;
  background: linear-gradient(155deg, var(--oddly-surface, #FFF), var(--oddly-surface-sunken, #F4F2EC));
  display: flex; align-items: center; justify-content: center; }
.o-screen-mark { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 500; font-size: 52px; letter-spacing: -0.02em; color: rgba(26,26,46,0.16); }
.o-anywhere-copy { position: absolute; top: 50%; left: 6%; transform: translateY(-50%); width: 34%; min-width: 260px; z-index: 3; }
.o-anywhere-copy h2 { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 400; font-size: clamp(28px, 3.4vw, 46px); line-height: 1.06; letter-spacing: -0.02em; margin: 0 0 18px; }
.o-anywhere-copy p { font-size: 17px; line-height: 1.55; color: var(--oddly-text-secondary, rgba(26,26,46,0.66)); margin: 0; }
.o-anywhere-copy .o-kicker { display: block; margin-bottom: 20px; }

/* ---- Section 9: closing ---- */
.o-close-sec { background: var(--oddly-canvas, #FAFAF7); padding: 44px 24px 72px; }
.o-close-panel { position: relative; max-width: 1240px; margin: 0 auto; border-radius: var(--oddly-radius-inset, 30px); overflow: hidden; background-image: url('/site/desk-book.png'); background-size: cover; background-position: center; }
.o-close-veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(250,250,247,0.9), rgba(250,250,247,0.82)); }
.o-close-body { position: relative; z-index: 2; max-width: 820px; margin: 0 auto; padding: clamp(72px, 9vw, 112px) 40px; text-align: center; }
.o-close-h { font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 400; font-size: clamp(38px, 5vw, 66px); line-height: 1.05; letter-spacing: -0.02em; margin: 0 0 24px; }
.o-close-sub { font-size: 20px; line-height: 1.6; color: var(--oddly-text-secondary, rgba(26,26,46,0.68)); max-width: 560px; margin: 0 auto 40px; }
.o-close-cta { display: flex; align-items: center; justify-content: center; gap: 16px; flex-wrap: wrap; }
.o-close-cta .o-btn { padding: 18px 34px; border-radius: 12px; font-size: 17px; }
.o-close-cta .o-btn--outline { padding: 18px 26px; }
.o-close-foot { margin-top: 22px; font-size: 14px; color: var(--oddly-text-tertiary, rgba(26,26,46,0.5)); }

/* ============================================================
 * PROSE / LONGFORM ARCHETYPE FAMILY (Phase 1b).
 *
 * The narrative marketing pages (what-is-oddly, why-oddly,
 * how-it-works, ...) are editorial: measured prose columns broken by
 * the section archetypes above. These classes give them one band
 * rhythm and one prose voice, composed only from the landing's
 * primitives and the spine v2 tokens. Nothing here introduces a colour,
 * type family, radius, or shadow the landing does not already use.
 * ============================================================ */

/* Band rhythm: alternating fields with a centred wrap. The one place
   the marketing surface sets its vertical breathing + field colours. */
.o-band { padding: var(--oddly-section-y, clamp(72px, 9vw, 120px)) 0; background: var(--oddly-canvas, #FAFAF7); }
.o-band--surface { background: var(--oddly-surface, #FFF); }
.o-band--sunken { background: var(--oddly-surface-sunken, #F4F2EC); }
.o-band--ink { background: var(--oddly-ink, #1A1A2E); color: var(--oddly-canvas, #FAFAF7); }
.o-band--hero { padding: 72px 0 60px; border-bottom: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); position: relative; overflow: hidden; }
.o-band--hero .o-wrap { position: relative; z-index: 2; }
.o-wrap { max-width: var(--oddly-max-landing, 1240px); margin: 0 auto; padding: 0 var(--oddly-pad-x-wide, 44px); }
.o-measure { max-width: 760px; }

/* Longform prose: a bare Newsreader serif heading + Hanken body at the
   landing's reading size, in a measured column. The narrative pages carry
   test-locked BARE headings (<h1>/<h2>/<h3> that mirror schema), so the
   prose family styles bare headings inside its containers rather than
   requiring a class. Same serif, sizes, colours as the landing's o-h2.
   Ink emphasis, teal links. */
.o-prose h2 {
  font-family: var(--oddly-font-serif, "Newsreader", Georgia, serif); font-weight: 400;
  font-size: clamp(28px, 3.2vw, 40px); line-height: 1.12; letter-spacing: -0.015em;
  color: var(--oddly-ink, #1A1A2E); margin: 0 0 22px; max-width: 20em;
}
.o-prose > p { font-size: var(--oddly-landing-body, 18px); line-height: 1.65; color: var(--oddly-text-secondary, rgba(26,26,46,0.7)); margin: 0 0 18px; }
.o-prose > p:last-child { margin-bottom: 0; }
.o-prose p strong { color: var(--oddly-ink, #1A1A2E); font-weight: 600; }
.o-prose a:not(.o-btn) { color: var(--oddly-teal, #2C7873); font-weight: 600; text-decoration: none; }
.o-prose a:not(.o-btn):hover { text-decoration: underline; }
.o-band--ink .o-prose h2 { color: var(--oddly-canvas, #FAFAF7); }
.o-band--ink .o-prose > p { color: rgba(250,250,247,0.72); }
.o-band--ink .o-prose p strong { color: var(--oddly-canvas, #FAFAF7); }
.o-band--ink .o-prose a:not(.o-btn) { color: var(--oddly-gold, #B08D57); }
.o-lede { font-size: clamp(19px, 2vw, 22px); line-height: 1.5; color: var(--oddly-ink, #1A1A2E); max-width: 34em; margin: 0 0 26px; }

/* Solo prose hero: the landing hero display treatment on a single column
   (no brief card), for pages whose hero is a sentence, not a screenshot.
   The bare test-locked <h1> gets the display face. */
.o-hero-prose h1 {
  font-family: var(--oddly-font-serif, "Newsreader", Georgia, serif); font-weight: 400;
  font-size: clamp(40px, 5vw, 64px); line-height: 1.02; letter-spacing: -0.025em;
  color: var(--oddly-ink, #1A1A2E); margin: 20px 0 22px; max-width: 15em;
}

/* The gold-o seal: the one-line promise, gold "o" + Newsreader. */
.o-seal {
  display: inline-flex; align-items: center; gap: 12px;
  font-family: var(--oddly-font-serif, "Newsreader", serif); font-size: 17px; color: var(--oddly-ink, #1A1A2E);
  border: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); background: rgba(255,255,255,0.55);
  border-radius: var(--oddly-radius-btn, 11px); padding: 11px 18px; margin: 0 0 28px;
}
.o-seal-o {
  font-family: var(--oddly-font-serif, "Newsreader", serif); font-weight: 600; font-size: 22px;
  color: var(--oddly-gold, #B08D57); display: inline-block;
  transform: rotate(5deg); transform-origin: 50% 60%;
}
.o-hero-cta--wrap { display: flex; flex-wrap: wrap; gap: 14px; }

/* Hairline fact rows: the connectors/works-with/signals list, one
   hairline-separated stack. */
.o-factrow {
  list-style: none; margin: 8px 0 0; padding: 0;
  display: grid; gap: 1px;
  background: var(--oddly-border-subtle, rgba(26,26,46,0.08)); border: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08));
  border-radius: var(--oddly-radius-card-sm, 14px); overflow: hidden;
}
.o-factrow li { background: var(--oddly-surface, #FFF); padding: 15px 18px; font-size: 15px; line-height: 1.55; color: var(--oddly-text-secondary, rgba(26,26,46,0.7)); }
.o-band--sunken .o-factrow li { background: var(--oddly-surface-sunken, #F4F2EC); }
.o-factrow li strong { color: var(--oddly-ink, #1A1A2E); font-weight: 600; }

/* Editorial table: sharp field, hairline rules, tabular numerals,
   scrolls on narrow screens. */
.o-tablewrap { overflow-x: auto; margin: 8px 0 0; border: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); border-radius: var(--oddly-radius-card-sm, 14px); }
.o-table { width: 100%; border-collapse: collapse; font-size: 14px; min-width: 560px; }
.o-table th, .o-table td { text-align: left; padding: 12px 15px; border-bottom: 1px solid var(--oddly-border-subtle, rgba(26,26,46,0.08)); vertical-align: top; }
.o-table thead th { background: var(--oddly-surface-sunken, #F4F2EC); font-weight: 700; color: var(--oddly-ink, #1A1A2E); white-space: nowrap; }
.o-table thead th.o-col-oddly { color: var(--oddly-teal, #2C7873); }
.o-table tbody tr:last-child td { border-bottom: none; }
.o-table td.o-price { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.o-table td.o-cell-yes { font-weight: 600; color: var(--oddly-teal, #2C7873); }
.o-table td.o-cell-no { color: var(--oddly-text-secondary, rgba(26,26,46,0.66)); }
.o-tablenote { font-size: 14px; color: var(--oddly-text-secondary, rgba(26,26,46,0.66)); margin-top: 14px; }
.o-tablenote a { color: var(--oddly-teal, #2C7873); font-weight: 600; }

/* Question/answer FAQ: bare H3 questions (test-locked, mirror the
   FAQPage schema) + measured answers. */
.o-faq h3 {
  font-family: var(--oddly-font-serif, "Newsreader", serif); font-size: 20px; font-weight: 400;
  letter-spacing: -0.01em; color: var(--oddly-ink, #1A1A2E); margin: 30px 0 8px;
}
.o-faq h3:first-of-type { margin-top: 8px; }
.o-faq p { margin: 0 0 8px; font-size: 16px; line-height: 1.6; color: var(--oddly-text-secondary, rgba(26,26,46,0.7)); }

/* ---- responsive (handoff breakpoints) ---- */
@media (max-width: 900px) {
  .o-hero { grid-template-columns: 1fr; gap: 40px; padding-top: 48px; }
  .o-hero-card { justify-self: stretch; max-width: 460px; }
  .o-idea { grid-template-columns: 1fr; gap: 26px; padding: 32px; }
  .o-idea-arrow-g { transform: rotate(90deg); }
  .o-grid4 { grid-template-columns: repeat(2, 1fr); }
  .o-trust-grid { grid-template-columns: repeat(2, 1fr); }
  .o-grid3 { grid-template-columns: 1fr; max-width: 420px; margin-left: auto; margin-right: auto; }
  .o-grid4-tier { grid-template-columns: repeat(2, 1fr); }
  .o-anywhere { display: flex; flex-direction: column-reverse; gap: 24px; }
  .o-anywhere-copy { position: static; transform: none; width: auto; min-width: 0; left: auto; top: auto; padding: 0 4px 8px; }
}
@media (max-width: 560px) {
  .o-grid4 { grid-template-columns: 1fr; }
  .o-grid4-tier { grid-template-columns: 1fr; max-width: 420px; margin-left: auto; margin-right: auto; }
  .o-trust-grid { grid-template-columns: 1fr; }
  .o-hero, .o-idea-sec, .o-trust-sec, .o-pricing, .o-manifesto, .o-conn-sec { padding-left: 22px; padding-right: 22px; }
  .o-wrap { padding-left: 22px; padding-right: 22px; }
  .o-band { padding: 56px 0; }
  .o-band--hero { padding: 52px 0 44px; }
}
