
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(data:font/woff2;base64,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) format('woff2');
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(data:font/woff2;base64,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) format('woff2');
}

:root {
  color-scheme: light;

  /* Page chrome — facto-interface light tokens. */
  --bg: oklch(1 0 0);
  --rail: oklch(0.985 0 0);
  --card: oklch(1 0 0);
  --inset: oklch(0.970 0 0);
  --hover: oklch(0.955 0 0);
  --line: oklch(0.922 0 0);
  --line-strong: oklch(0.820 0 0);
  --line-soft: oklch(0.950 0 0);

  /* Ink */
  --fg: oklch(0.145 0 0);
  --fg-mid: oklch(0.350 0 0);
  --fg-muted: oklch(0.556 0 0);
  --fg-faint: oklch(0.680 0 0);

  /* Facto brand green (hue 153, light-theme primary — accents only) */
  --brand: oklch(0.55 0.2 153);
  --brand-strong: oklch(0.48 0.18 153);
  --brand-soft: oklch(0.55 0.2 153 / 0.10);
  --brand-line: oklch(0.55 0.2 153 / 0.30);

  --warning: oklch(0.55 0.12 70);
  --warning-soft: oklch(0.76 0.13 70 / 0.14);
  --warning-line: oklch(0.76 0.13 70 / 0.35);

  --radius: 14px;
  --radius-md: 10px;
  --pill: 999px;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-feature-settings: "cv11", "ss01";
}

* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  min-height: 100vh;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, p, dl, dd, dt { margin: 0; }
button, input { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 4px; }
[hidden] { display: none !important; }

/* ── HTTP ceiling ribbon ───────────────────────────────────────────── */
.ribbon {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .5rem 1rem;
  font: 600 .72rem/1 var(--mono);
  letter-spacing: .14em;
  border-bottom: 1px solid transparent;
}
.ribbon-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.ribbon-public {
  background: var(--warning-soft);
  color: var(--warning);
  border-bottom-color: var(--warning-line);
}
.ribbon-public .ribbon-dot { animation: pulse 2s ease-in-out infinite; }
.ribbon-local {
  background: var(--inset);
  color: var(--fg-muted);
  border-bottom-color: var(--line);
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* ── Page layout ───────────────────────────────────────────────────── */
.meridian {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 clamp(1rem, 3vw, 2rem) 3rem;
}
.m-top {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 1.1rem 0;
  border-bottom: 1px solid var(--line);
}
.m-back {
  color: var(--fg-muted);
  text-decoration: none;
  font-size: .85rem;
  white-space: nowrap;
}
.m-back:hover { color: var(--brand); }
.m-title-wrap { display: flex; align-items: baseline; gap: .7rem; flex-wrap: wrap; }
.m-title { font-size: 1.05rem; font-weight: 650; }
.tag {
  font-family: var(--mono);
  font-size: .64rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fg-faint);
}
.m-status { margin-left: auto; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.m-chip {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .28rem .6rem;
  border: 1px solid var(--line);
  border-radius: var(--pill);
  font-family: var(--mono);
  font-size: .64rem;
  letter-spacing: .06em;
  color: var(--fg-muted);
  white-space: nowrap;
}
.m-chip-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--fg-faint); flex: none; }
.m-chip[data-status="provisioned"] { color: var(--brand-strong); border-color: var(--brand-line); background: var(--brand-soft); }
.m-chip[data-status="provisioned"] .m-chip-dot { background: var(--brand); }
.m-chip[data-status="unprovisioned"] { color: var(--warning); border-color: var(--warning-line); background: var(--warning-soft); }
.m-chip[data-status="unprovisioned"] .m-chip-dot { background: var(--warning); }

.stage {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 1.5rem;
  align-items: start;
  padding-top: 1.5rem;
}
.phone-wrap { display: flex; flex-direction: column; align-items: center; gap: .6rem; }

/* ── Guide panel (Expo-style task checklist, §12) ──────────────────── */
/* 1024–1280px: the guide renders as a full-width <details> block above the
   device stage (open by default); ≥1280px it becomes the fixed left column
   with its summary hidden (see the media queries below). */
.guide { grid-column: 1 / -1; min-width: 0; }
.guide-summary {
  cursor: pointer;
  list-style: none;
  padding: .7rem 1rem;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: .85rem;
  font-weight: 650;
  color: var(--fg-mid);
}
.guide-summary::-webkit-details-marker { display: none; }
.guide-summary::before { content: '▸ '; color: var(--fg-faint); }
.guide-fold[open] .guide-summary::before { content: '▾ '; }
.guide-fold[open] .guide-summary { margin-bottom: .8rem; }
.guide-cards { display: grid; gap: .8rem; }
.guide-card {
  display: grid;
  gap: .55rem;
  padding: 1rem 1.1rem;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.guide-title { font-size: .95rem; font-weight: 650; }
.guide-p { font-size: .78rem; color: var(--fg-muted); }
.guide-legend { display: grid; gap: .4rem; margin-top: .3rem; padding-top: .6rem; border-top: 1px solid var(--line-soft); }
.legend-row { display: flex; align-items: center; gap: .5rem; }
.legend-text { font-size: .72rem; color: var(--fg-muted); }
.guide-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.step { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .6rem; align-items: start; }
.step-num {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  margin-top: .05rem;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  font: 650 .68rem/1 var(--mono);
  color: var(--fg-faint);
}
.step[data-state="pending"] { opacity: .55; }
.step[data-state="active"] .step-num {
  background: var(--fg);
  border-color: var(--fg);
  color: oklch(0.985 0 0);
}
.step[data-state="done"] .step-num {
  background: var(--brand);
  border-color: var(--brand);
  color: oklch(0.985 0 0);
}
.step-body { display: grid; gap: .1rem; }
.step-title { font-size: .82rem; font-weight: 600; color: var(--fg); }
.step-desc { font-size: .72rem; color: var(--fg-muted); }

/* ── Device toolbar (Expo device-preview style, §12) ───────────────── */
.device-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  width: 390px;
  max-width: 100%;
}
.device-label {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-family: var(--mono);
  font-size: .66rem;
  letter-spacing: .08em;
  color: var(--fg-faint);
}
.device-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--fg-faint); flex: none; }
.device-reload {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--fg-muted);
  font-size: .74rem;
  padding: .3rem .6rem;
  cursor: pointer;
  white-space: nowrap;
}
.device-reload:hover { border-color: var(--line-strong); color: var(--fg); }
.device-actions { display: inline-flex; align-items: center; gap: .45rem; }
.device-reset { color: var(--fg-mid); }
.device-reset:hover { border-color: var(--brand-line); color: var(--brand-strong); }

/* ── Phone frame — Meridian v6.1 retheme (design spec §2-§6): #161618 bezel
   + Dynamic Island, fixed-light white screen, embedded Poppins, the ruled
   8px control radius and the compact real-device type scale. The --m-* token
   names survive (the preserved consent/pay/detail views read them) but their
   values now map onto the ruled palette. ── */
.phone {
  /* Ruled palette (spec §2) — fixed light, never theme-flipped. */
  --p-ink: #1d1d1d;
  --p-mut: #7a7a80;
  --p-line: #e4e4e7;
  --p-sep: #f0f0f2;
  --p-soft: #f3f3f4;
  --p-accent: #4d37ae;
  --p-accent-soft: #edeaf8;
  --p-danger: #b13838;
  --p-danger-soft: #f7e9e9;
  --p-green: #3e5c48;
  --p-gold: #d9c36a;
  --p-gold-ink: #3a3212;
  --p-card-ink: #161618;
  --r-control: 8px;

  /* Compact type scale (spec §3) — fixed px, never viewport-scaled. */
  --fs-2xs: 10px;
  --fs-xs: 11px;
  --fs-sm: 12px;
  --fs-md: 13px;
  --fs-btn: 15px;
  --fs-input: 16px;
  --fs-lg: 18px;
  --fs-xl: 22px;

  /* Legacy token names consumed by the preserved consent/pay/detail views. */
  --m-bg: #ffffff;
  --m-surface: #ffffff;
  --m-mint: #f3f3f4;
  --m-mint-line: #e4e4e7;
  --m-brand: #1d1d1d;
  --m-brand-deep: #000000;
  --m-ink: #1d1d1d;
  --m-ink-mid: #47474c;
  --m-ink-muted: #7a7a80;
  --m-gold: #d9c36a;
  --m-facto: oklch(0.55 0.2 153);
  --m-facto-strong: oklch(0.48 0.18 153);
  --m-facto-bright: oklch(0.8763 0.2278 153);
  --m-facto-soft: oklch(0.55 0.2 153 / 0.10);
  --m-facto-line: oklch(0.55 0.2 153 / 0.30);
  --m-danger: #b13838;
  --m-radius: 12px;
  --m-radius-sm: 8px;
  color-scheme: light;

  position: relative;
  width: 390px;
  height: 760px;
  border-radius: 48px;
  background: #161618;
  padding: 10px;
  color: var(--p-ink);
  box-shadow: 0 34px 64px -26px rgb(29 29 60 / 0.45);
  overflow: hidden;
  font-family: 'Poppins', system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
/* Dynamic Island (spec §5) — hardware silhouette; pill radius is exempt from
   the 8px control ruling. */
.phone-notch {
  position: absolute;
  top: 21px;
  left: 50%;
  transform: translateX(-50%);
  width: 100px;
  height: 25px;
  border-radius: 999px;
  background: #161618;
  z-index: 6;
}
.phone-screen {
  position: relative;
  height: 100%;
  overflow-y: auto;
  background: #ffffff;
  border-radius: 39px;
  scrollbar-width: none;
}
.phone-screen::-webkit-scrollbar { display: none; }
.phone :focus-visible { outline: 2px solid var(--p-accent); outline-offset: 2px; }

/* View switching: data-view on .phone selects the visible section. The
   signin screen keeps the internal key "login" (resolveMeridianBootView's
   vocabulary); signup/card/addcard/profile are the v6.1 additions. */
.view { display: none; flex-direction: column; min-height: 100%; padding: 3.4rem 1.35rem 1.6rem; }
.phone[data-view="login"] .view[data-view="login"],
.phone[data-view="signup"] .view[data-view="signup"],
.phone[data-view="handoff"] .view[data-view="handoff"],
.phone[data-view="home"] .view[data-view="home"],
.phone[data-view="card"] .view[data-view="card"],
.phone[data-view="addcard"] .view[data-view="addcard"],
.phone[data-view="profile"] .view[data-view="profile"],
.phone[data-view="pay"] .view[data-view="pay"],
.phone[data-view="consent"] .view[data-view="consent"],
.phone[data-view="detail"] .view[data-view="detail"] { display: flex; }
.view-card, .view-profile { padding-bottom: 5.4rem; }
.spacer { flex: 1; }

/* ── Auth screens (signin / signup / handoff) ──────────────────────── */
.mark {
  width: 46px;
  height: 46px;
  border-radius: var(--r-control);
  margin: 0.6rem auto 0.9rem;
  background: var(--p-ink);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 19px;
  font-weight: 600;
  flex: none;
}
.p-title { font-size: var(--fs-lg); font-weight: 600; letter-spacing: -0.015em; margin: 0 0 0.3rem; text-align: center; text-wrap: balance; }
.p-title.left { text-align: left; }
.signup-title { margin-top: 0.9rem; }
.p-sub { margin: 0 0 1rem; text-align: center; color: var(--p-mut); font-size: var(--fs-sm); line-height: 1.5; }
.p-sub.left { text-align: left; }
.p-fine { margin: 1rem 0 0; text-align: center; font-size: var(--fs-sm); color: var(--p-mut); }
.p-micro { margin: 0.5rem 0 0; text-align: center; font-size: var(--fs-2xs); color: var(--p-mut); opacity: 0.85; }
.login-handoff-note { margin: 0 0 0.6rem; text-align: center; color: var(--p-mut); font-size: var(--fs-sm); }

.pform { display: grid; gap: 0.75rem; width: 100%; text-align: left; }
.field { display: grid; gap: 0.3rem; }
.field label { font-size: var(--fs-sm); font-weight: 600; color: var(--p-mut); }
.pform input {
  width: 100%;
  font: inherit;
  font-size: var(--fs-input);
  color: var(--p-ink);
  padding: 0.62rem 0.85rem;
  border-radius: var(--r-control);
  border: 1.5px solid var(--p-line);
  background: #fff;
  outline: none;
  transition: border-color 0.15s ease;
}
.pform input::placeholder { color: var(--p-mut); opacity: 0.6; }
.pform input:focus-visible { border-color: var(--p-accent); }
.pform input.invalid { border-color: var(--p-danger); background: var(--p-danger-soft); }
.pwd { position: relative; }
.pwd input { padding-right: 2.7rem; }
.eye {
  position: absolute;
  right: 0.4rem;
  top: 50%;
  transform: translateY(-50%);
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: var(--r-control);
  background: transparent;
  color: var(--p-mut);
  cursor: pointer;
  display: grid;
  place-items: center;
  padding: 0;
}
.eye:hover { color: var(--p-ink); background: var(--p-soft); }
.eye .slash { display: none; }
.eye.on .slash { display: block; }
.ferr { margin: 0; font-size: var(--fs-xs); color: var(--p-danger); }
.banner {
  margin: 0 0 0.2rem;
  font-size: var(--fs-sm);
  padding: 0.55rem 0.75rem;
  border-radius: var(--r-control);
  background: var(--p-danger-soft);
  color: var(--p-danger);
}
.btn-primary {
  width: 100%;
  font: inherit;
  font-size: var(--fs-btn);
  font-weight: 600;
  cursor: pointer;
  padding: 0.78rem 1rem;
  border: 0;
  border-radius: var(--r-control);
  background: var(--p-ink);
  color: #fff;
  margin-top: 0.3rem;
  transition: background 0.15s ease, transform 0.08s ease;
}
.btn-primary:hover { background: #000; }
.btn-primary:active { transform: translateY(1px); }
.btn-primary:disabled { opacity: 0.55; cursor: default; }
.btn-danger {
  width: 100%;
  font: inherit;
  font-size: var(--fs-btn);
  font-weight: 600;
  cursor: pointer;
  padding: 0.78rem 1rem;
  border: 1px solid var(--p-ink);
  border-radius: var(--r-control);
  background: #fff;
  color: var(--p-ink);
  transition: background 0.15s ease;
}
.btn-danger:hover { background: var(--p-soft); }
.btn-danger:disabled { opacity: 0.55; cursor: default; }
.linkbtn {
  font: inherit;
  font-size: inherit;
  font-weight: 600;
  color: var(--p-accent);
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.linkbtn:hover { text-decoration: underline; }

/* Handoff transition view keeps the auth-screen anatomy. */
.view-handoff { align-items: center; justify-content: center; gap: 0.8rem; text-align: center; }
.handoff-status { color: var(--p-mut); font-size: var(--fs-md); animation: pulse 2s ease-in-out infinite; }
.btn-ghost-m {
  border: 1px solid var(--p-line);
  border-radius: var(--r-control);
  background: transparent;
  color: var(--p-ink);
  padding: 0.5rem 0.85rem;
  font: inherit;
  font-size: var(--fs-md);
  font-weight: 600;
  cursor: pointer;
}
.btn-ghost-m:hover { border-color: var(--p-ink); }
.btn-ghost-m:disabled { opacity: 0.55; cursor: default; }
.btn-mint {
  border: 0;
  border-radius: var(--r-control);
  background: var(--p-ink);
  color: #fff;
  padding: 0.55rem 1.1rem;
  font: inherit;
  font-size: var(--fs-md);
  font-weight: 600;
  cursor: pointer;
}
.btn-mint:hover { background: #000; }

/* ── Home: status line, top bar, wallet carousel ───────────────────── */
.view-home { padding: 0 0 5.4rem; }
.m-statusline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 30px;
  margin-top: 12px;
  padding: 0 26px;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--p-ink);
  font-variant-numeric: tabular-nums;
}
.m-statusline svg { display: block; }
/* Top bar (spec §6.8): green wordmark centered, bell right, no avatar. */
.topbar {
  display: grid;
  grid-template-columns: 36px 1fr 36px;
  align-items: center;
  margin-top: 4px;
  padding: 0 18px;
}
.tb-spacer { width: 36px; height: 36px; }
.tb-title { text-align: center; font-size: 15px; font-weight: 600; color: var(--p-green); }
.tb-icon {
  width: 36px;
  height: 36px;
  border: 0;
  background: none;
  color: var(--p-ink);
  cursor: pointer;
  display: grid;
  place-items: center;
  border-radius: var(--r-control);
  padding: 0;
}
.tb-icon:hover { background: var(--p-soft); }
/* Gold initials avatar — Profile page only (removed from the top bar). */
.avatar {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--p-gold);
  color: var(--p-gold-ink);
  font-size: var(--fs-xs);
  font-weight: 600;
}
.avatar.big { width: 64px; height: 64px; font-size: 16px; margin: 0.9rem auto 0; flex: none; }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Wallet carousel (spec §6.2): full-bleed snap strip, active card centered,
   neighbors peeking; mouse drag handled in /meridian.js. */
.wallet {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  margin-top: 0.9rem;
  padding: 6px 52px 4px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.wallet::-webkit-scrollbar { display: none; }
.wallet.dragging { scroll-snap-type: none; cursor: grabbing; }

/* Card face (spec §6.1): 1.586 black face + decorative color cube. The face
   deliberately carries NO balance figure — real data has no per-card balance
   and the demo never fabricates one. */
.cardface {
  position: relative;
  flex: 0 0 266px;
  aspect-ratio: 1.586 / 1;
  border: 0;
  text-align: left;
  color: #fff;
  background: var(--p-card-ink);
  border-radius: calc(var(--r-control) + 2px);
  padding: 0.85rem 1rem;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  font-family: inherit;
  scroll-snap-align: center;
  transition: filter 0.2s ease;
}
/* Hover brighten applies to EVERY card face — carousel buttons AND the
   card-detail / add-card preview divs (operator ruling): the face and its
   cube gradient lift together. Reduced-motion kills the transition via the
   global rule below. */
.cardface:hover { filter: brightness(1.18); }
button.cardface { cursor: pointer; }
.cf-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.6rem; position: relative; z-index: 1; }
.cf-holder { font-size: var(--fs-xs); font-weight: 400; opacity: 0.85; }
.cf-visa { font-size: var(--fs-sm); font-weight: 600; font-style: italic; letter-spacing: 0.1em; }
.cf-spacer { flex: 1; }
.cf-tail {
  position: relative;
  z-index: 1;
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.12em;
  opacity: 0.9;
  font-variant-numeric: tabular-nums;
}
.cf-cube {
  position: absolute;
  right: 14px;
  top: 34px;
  bottom: 34px;
  width: 37%;
  border-radius: 10px;
  transform: rotate(-4deg);
  box-shadow: 0 8px 18px rgb(0 0 0 / 0.4);
}
.cardface.cube-blue .cf-cube { background: radial-gradient(120% 120% at 30% 25%, #bfe4ff 0%, #59b9ff 55%, #1d6fb8 100%); }
.cardface.cube-lime .cf-cube { background: radial-gradient(120% 120% at 30% 25%, #eaffb0 0%, #b7f34a 55%, #6f9c1e 100%); }
.cardface.cube-purple .cf-cube { background: radial-gradient(120% 120% at 30% 25%, #f0d4ff 0%, #c77bf2 55%, #7d3cb5 100%); }

/* Empty wallet: one inert placeholder face — the "+ Add New Card" text entry
   below the strip is the live path to the first real card. */
.cardface-empty {
  background: #fff;
  border: 1.5px dashed var(--p-line);
  color: var(--p-mut);
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  padding: 1rem 1.6rem;
  text-align: center;
}
.cf-empty-title { font-size: var(--fs-md); font-weight: 600; color: var(--p-ink); }
.cf-empty-sub { font-size: var(--fs-xs); line-height: 1.5; }

.wallet-dots { display: flex; gap: 5px; justify-content: center; margin-top: 0.5rem; min-height: 6px; }
.wallet-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--p-line); }
.wallet-dots i.on { background: var(--p-ink); width: 16px; border-radius: 3px; }
/* Plain-text add-card entry (spec §6.3 — the filled button was ruled out). */
.add-card-link {
  margin: 0.4rem auto 0;
  display: block;
  background: none;
  border: 0;
  font-family: inherit;
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--p-ink);
  cursor: pointer;
  padding: 0.3rem 0.5rem;
}
.add-card-link:hover { text-decoration: underline; }

/* Total balance + transactions. */
.bal { margin: 0.8rem 18px 0; }
.bal-k { margin: 0; font-size: var(--fs-xs); color: var(--p-mut); }
.bal-v { margin: 2px 0 0; font-size: var(--fs-xl); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
.tx-head { display: flex; justify-content: space-between; align-items: baseline; margin: 1rem 18px 0; }
.tx-head h2 { margin: 0; font-size: var(--fs-md); font-weight: 600; }
.tx-tag { font-size: var(--fs-2xs); color: var(--p-mut); letter-spacing: 0.08em; text-transform: uppercase; }
.tx-list { list-style: none; margin: 0 18px; padding: 0; }
.tx-row {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  width: 100%;
  padding: 0.6rem 0;
  border: 0;
  border-bottom: 1px solid var(--p-sep);
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.tx-list li:last-child .tx-row { border-bottom: 0; }
.tx-row:hover .tx-name { color: var(--p-accent); }
.tx-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: var(--r-control);
  background: var(--p-soft);
  flex: none;
}
.tx-icon::after { content: ""; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.tx-icon-legacy { color: var(--p-mut); }
.tx-icon-facto { color: var(--m-facto); }
.tx-body { display: grid; gap: 1px; min-width: 0; flex: 1; }
.tx-name { font-size: var(--fs-md); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tx-sub { font-size: var(--fs-2xs); color: var(--p-mut); }
.tx-sub-facto { color: var(--m-facto-strong); font-weight: 600; }
.tx-amount { font-size: var(--fs-md); font-weight: 600; font-variant-numeric: tabular-nums; }
.tx-empty { padding: 0.7rem 0; font-size: var(--fs-sm); color: var(--p-mut); list-style: none; }
.home-note { min-height: 1.1rem; margin: 0.5rem 18px 0; font-size: var(--fs-sm); color: var(--p-mut); }
.cand-empty { padding: 0.8rem 0; font-size: var(--fs-sm); color: var(--p-mut); }

/* The #147 live payment entry survives the retheme: ink rectangle CTA +
   caption + the persistent verdict line. */
.pay-block { margin: 1.1rem 18px 0; }
.btn-pay {
  width: 100%;
  font: inherit;
  padding: 0.78rem 1rem;
  border: 0;
  border-radius: var(--r-control);
  background: var(--p-ink);
  color: #fff;
  font-size: var(--fs-btn);
  font-weight: 600;
  cursor: pointer;
}
.btn-pay:hover { background: #000; }
.btn-pay:disabled { opacity: 0.55; cursor: wait; }
.pay-caption { font-size: var(--fs-xs); color: var(--p-mut); align-self: center; text-align: center; }
/* Simulated purchase (#75 + §14): trigger plus its terminal verdict line. */
.sim-row { display: flex; flex-direction: column; gap: 8px; align-items: stretch; }
.sim-result { margin: 0; font-size: var(--fs-md); line-height: 1.5; color: var(--m-ink-mid); }
.sim-result[data-state="approved"] { color: var(--m-facto-strong); }
.sim-result[data-state="declined"] { color: var(--p-danger); }
.sim-result[data-state="unavailable"] { color: var(--p-mut); }
.sim-code { font-family: var(--mono); font-size: var(--fs-sm); }

/* Client-observed marker (#131): popup_blocked / partner_step_up_failed are
   NOT engine truth — the dashed mono chip keeps them visually distinct from
   engine terminal statuses and failure_reason pass-throughs. */
.client-code {
  font-family: var(--mono);
  font-size: var(--fs-2xs);
  color: var(--p-danger);
  border: 1px dashed var(--p-danger);
  border-radius: 999px;
  padding: 0.05rem 0.45rem;
  white-space: nowrap;
}
/* Relay-degradation note (#131): shown when the backend reports relayDegraded
   — the page still converges via status polling. */
.relay-note { margin: 0.4rem 18px 0; font-size: var(--fs-xs); color: var(--p-mut); }
.facto-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--m-facto); flex: none; }

/* ── Page header + info rows (card / addcard / profile) ────────────── */
.pagehead { display: flex; align-items: center; gap: 0.6rem; }
.pagehead h2 { margin: 0; font-size: 15px; font-weight: 600; flex: 1; text-align: center; padding-right: 34px; }
.back {
  align-self: flex-start;
  width: 34px;
  height: 34px;
  border-radius: var(--r-control);
  border: 0;
  background: var(--p-soft);
  color: var(--p-ink);
  cursor: pointer;
  display: grid;
  place-items: center;
  padding: 0;
  flex: none;
}
.back:hover { background: var(--p-line); }

.rows { margin-top: 1rem; }
.row, .row-btn {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 0.62rem 0.15rem;
  border-bottom: 1px solid var(--p-sep);
}
.rows > :last-child { border-bottom: 0; }
.row-btn {
  width: 100%;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--p-sep);
  font: inherit;
  line-height: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.row-btn:hover { background: var(--p-soft); }
.row-k { font-size: var(--fs-sm); color: var(--p-mut); }
.row-v { font-size: var(--fs-md); font-weight: 600; text-align: right; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.row-v.mono { font-family: var(--mono); font-weight: 400; font-size: var(--fs-xs); }
.row-end { display: inline-flex; align-items: center; gap: 0.35rem; min-width: 0; }
.row-chev { color: var(--p-mut); display: inline-flex; flex: none; }
/* Status chip — pill by design (badge shapes are exempt from the 8px ruling). */
.status-chip {
  font-size: var(--fs-2xs);
  font-weight: 600;
  border-radius: 999px;
  padding: 0.24rem 0.6rem;
  background: var(--p-accent-soft);
  color: var(--p-accent);
}
.status-chip.off { background: var(--p-soft); color: var(--p-mut); }

/* Card detail. */
.cd-face { width: 100%; flex: none; margin-top: 1rem; cursor: default; }
.view-card .tx-head, .view-card .tx-list { margin-left: 0; margin-right: 0; }

/* Add-card page (Payport reference layout — no Card cost row, no tab bar). */
.sec-label { margin: 1rem 0 0; font-size: var(--fs-md); font-weight: 600; }
.sec-help { margin: 0.2rem 0 0; font-size: var(--fs-sm); color: var(--p-mut); }
.ac-face { width: 100%; flex: none; margin-top: 0.8rem; cursor: default; }
.ac-note { margin: 0.8rem 0 0; font-size: var(--fs-xs); color: var(--p-mut); line-height: 1.55; }
.addcard-note { min-height: 1.1rem; margin: 0.6rem 0 0; font-size: var(--fs-xs); color: var(--p-mut); }
.addcard-cta { margin-top: 0.8rem; }

/* Profile (account info only — card-control tiles are ruled out, §6.7). */
.pf-name { margin: 0.6rem 0 0; font-size: 15px; font-weight: 600; text-align: center; }
.pf-mail { margin: 2px 0 0; font-size: var(--fs-xs); color: var(--p-mut); text-align: center; overflow-wrap: anywhere; }

/* ── Bottom tab bar: Home / Profile only (spec §6.9) ───────────────── */
.tabbar {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  z-index: 5;
  display: none;
  justify-content: center;
  align-items: center;
  gap: 5.5rem;
  background: #fff;
  border-top: 1px solid var(--p-sep);
  padding: 0.5rem 1rem 1rem;
  border-radius: 0 0 39px 39px;
}
.phone[data-view="home"] .tabbar,
.phone[data-view="card"] .tabbar,
.phone[data-view="profile"] .tabbar { display: flex; }
.tab {
  border: 0;
  background: none;
  cursor: pointer;
  font-family: inherit;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 3px;
  color: #b6b6bb;
  padding: 0.2rem 0.5rem;
  min-width: 44px;
  min-height: 44px;
}
.tab span { font-size: var(--fs-2xs); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.phone[data-view="home"] .tab-home,
.phone[data-view="card"] .tab-home,
.phone[data-view="profile"] .tab-profile { color: var(--p-ink); }

/* ── In-phone bottom sheets: Funding resource / Pipeline (spec §6.6c) ── */
.bsheet-wrap { position: absolute; inset: 10px; z-index: 8; }
.bsheet-wrap[hidden] { display: none; }
.bsheet-back {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  cursor: pointer;
  background: rgb(22 22 24 / 0.45);
  border-radius: 39px;
}
.bsheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  background: #fff;
  border-radius: 12px 12px 39px 39px;
  padding: 0.6rem 1.2rem 1.6rem;
}
.bsheet-grip { width: 34px; height: 4px; border-radius: 2px; background: var(--p-line); margin: 0.25rem auto 0.8rem; }
.bsheet-t { margin: 0; font-size: var(--fs-md); font-weight: 600; }
.bsheet-s { margin: 2px 0 0.6rem; font-size: var(--fs-xs); color: var(--p-mut); }
.bsheet-fine { margin: 0.8rem 0 0; font-size: var(--fs-2xs); color: var(--p-mut); }

.prov, .prov-off {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.68rem 0.2rem;
  border-bottom: 1px solid var(--p-sep);
}
.prov {
  background: none;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  font: inherit;
  line-height: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.prov:hover { background: var(--p-soft); }
.prov:disabled { opacity: 0.55; cursor: wait; }
.bsheet .prov-off:last-of-type { border-bottom: 0; }
.prov-name { font-size: var(--fs-md); font-weight: 600; flex: 1; }
.prov-off .prov-name { color: var(--p-mut); font-weight: 400; }
.prov-meta {
  font-size: var(--fs-2xs);
  font-weight: 600;
  border-radius: 999px;
  padding: 0.22rem 0.55rem;
  background: var(--p-soft);
  color: var(--p-mut);
}
.prov-meta.on { background: var(--p-accent-soft); color: var(--p-accent); }
/* Facto wordmark (spec §6.6d): Poppins lowercase + square motif, ink only. */
.facto-logo {
  display: inline-flex;
  align-items: flex-start;
  gap: 3px;
  flex: 1;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.035em;
  color: var(--p-ink);
  line-height: 1;
  text-transform: lowercase;
}
.facto-logo svg { display: block; margin-top: 1px; }

/* Pipeline lifecycle stages. */
.pl-id { margin: 0 0 0.5rem; font-family: var(--mono); font-size: var(--fs-2xs); color: var(--p-mut); overflow-wrap: anywhere; }
.pl-row { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.45rem 0; }
.pl-dot {
  width: 17px;
  height: 17px;
  border-radius: 50%;
  flex: none;
  margin-top: 1px;
  display: grid;
  place-items: center;
  border: 1.5px solid var(--p-line);
  color: #fff;
  background: #fff;
}
.pl-row.done .pl-dot { background: var(--p-ink); border-color: var(--p-ink); }
.pl-row .pl-dot svg { display: none; }
.pl-row.done .pl-dot svg { display: block; }
.pl-b { display: grid; }
.pl-n { font-size: var(--fs-md); font-weight: 600; }
.pl-row:not(.done) .pl-n { color: var(--p-mut); font-weight: 400; }
.pl-m { font-size: var(--fs-2xs); color: var(--p-mut); }

/* ── Consent view (Facto-hosted mock, §6.3 item 3) ─────────────────── */
.view-consent { padding: 0; }
.consent-top {
  display: grid;
  gap: .55rem;
  padding: 3.4rem 1.4rem 1.1rem;
  background: oklch(0.150 0 0);
  color: oklch(0.970 0 0);
}
.consent-brand { display: flex; align-items: center; gap: .5rem; font-size: .92rem; font-weight: 600; }
.consent-top .facto-dot { background: var(--m-facto-bright); }
.consent-close {
  margin-left: auto;
  border: 0;
  background: transparent;
  color: oklch(0.720 0 0);
  font-size: 1rem;
  cursor: pointer;
  padding: .1rem .35rem;
}
.consent-close:hover { color: oklch(0.970 0 0); }
.consent-status {
  justify-self: start;
  padding: .28rem .6rem;
  border: 1px solid oklch(0.8763 0.2278 153 / 0.32);
  border-radius: var(--pill);
  color: var(--m-facto-bright);
  font-family: var(--mono);
  font-size: .64rem;
  letter-spacing: .08em;
}
.consent-body { display: flex; flex-direction: column; gap: .8rem; padding: 1.2rem 1.4rem 2rem; }
.consent-title { font-size: 1.05rem; font-weight: 650; }
.consent-sub { font-size: .82rem; color: var(--m-ink-mid); }
.consent-k {
  margin-top: .4rem;
  font-size: .68rem;
  font-weight: 650;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--m-ink-muted);
}
.scope-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.scope-list li { display: flex; align-items: center; gap: .5rem; font-size: .8rem; }
.scope-list code { font-family: var(--mono); font-size: .74rem; color: var(--m-ink); }
.scope-check { color: var(--m-facto-strong); font-weight: 700; }
.cand-list { display: grid; gap: .5rem; }
.cand {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .8rem;
  padding: .7rem .9rem;
  border: 1px solid var(--m-mint-line);
  border-radius: var(--m-radius-sm);
  background: var(--m-surface);
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
.cand:has(input:checked) { border-color: var(--m-facto); background: var(--m-facto-soft); }
.cand input { accent-color: var(--m-facto); width: 18px; height: 18px; margin: 0; }
/* Mini card render: the thumbnail's status band lights Facto green as soon as
   the card is checked — previewing exactly what approval will do. */
.cand-thumb {
  position: relative;
  width: 46px;
  aspect-ratio: 1.586;
  border-radius: 7px;
  background: linear-gradient(150deg, oklch(0.27 0 0), oklch(0.16 0 0));
  overflow: hidden;
  flex: none;
}
.cand-thumb::before {
  content: "";
  position: absolute;
  top: 6px;
  left: 7px;
  width: 9px;
  height: 7px;
  border-radius: 2px;
  background: oklch(0.860 0 0 / 0.9);
}
.cand-thumb::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 30%;
  background: oklch(0.38 0 0);
  transition: background-color .15s ease;
}
.cand:has(input:checked) .cand-thumb::after { background: var(--m-facto-bright); }
.cand-body { display: grid; gap: .1rem; min-width: 0; }
.cand-name { font-size: .85rem; font-weight: 600; }
.cand-tail {
  font-family: var(--mono);
  font-size: .78rem;
  font-variant-numeric: tabular-nums;
  color: var(--m-ink-mid);
}
.consent-note { font-size: .78rem; color: var(--m-danger); }
.consent-fine { font-size: .72rem; color: var(--m-ink-muted); }
.consent-actions { display: flex; gap: .7rem; margin-top: .4rem; }
.btn-facto {
  flex: 1;
  border: 0;
  border-radius: var(--m-radius-sm);
  background: var(--m-brand);
  color: oklch(0.985 0 0);
  padding: .85rem 1rem;
  font-size: .95rem;
  font-weight: 650;
  cursor: pointer;
}
.btn-facto:hover { background: var(--m-brand-deep); }
.btn-facto:disabled, .consent-actions .btn-ghost-m:disabled { opacity: .55; cursor: wait; }

/* ── Detail view (bottom drawer, §6.3 item 4) ──────────────────────── */
.view-detail { justify-content: flex-end; padding: 0; background: oklch(0.2 0 0 / 0.35); }
.sheet {
  display: grid;
  gap: .9rem;
  padding: 1.2rem 1.4rem 2.2rem;
  border-radius: 12px 12px 0 0;
  background: var(--m-surface);
  box-shadow: 0 -18px 40px oklch(0 0 0 / 0.18);
}
.sheet-head { display: flex; align-items: center; justify-content: space-between; gap: .8rem; }
.sheet-head h2 { font-size: 1rem; font-weight: 650; }
.sheet-close {
  border: 0;
  background: transparent;
  color: var(--m-ink-muted);
  font-size: 1rem;
  cursor: pointer;
  padding: .1rem .35rem;
}
.sheet-close:hover { color: var(--m-ink); }
/* Full card render above the field list when the sheet shows a wallet card
   (transaction details keep the slot hidden). */
.detail-card { display: grid; }
.detail-card .card-face { box-shadow: 0 10px 24px oklch(0 0 0 / 0.22); }
.detail-fields { display: grid; gap: .55rem; }
.detail-row { display: grid; gap: .1rem; padding-bottom: .55rem; border-bottom: 1px solid var(--m-mint-line); }
.detail-row dt {
  font-size: .66rem;
  font-weight: 650;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--m-ink-muted);
}
.detail-row dd { font-size: .88rem; overflow-wrap: anywhere; }
.detail-row dd.mono { font-family: var(--mono); font-size: .78rem; }
.detail-links { display: flex; flex-wrap: wrap; gap: .9rem; }
.detail-links a { color: var(--m-facto-strong); font-size: .8rem; font-weight: 600; }
.detail-note { font-size: .76rem; color: var(--m-ink-muted); }

/* ── Payment sheet (§14.1): card + merchant chooser over a fixed amount ── */
/* height (not just the .view min-height) is required: a percentage max-height
   on the sheet only resolves against a DEFINITE container height. */
.view-pay { height: 100%; justify-content: flex-end; padding: 0; background: oklch(0.2 0 0 / 0.35); }
/* The sheet scrolls INTERNALLY past this cap (many cards, open merchant
   form) instead of pushing its header up behind the phone notch. */
.view-pay .sheet { max-height: calc(100% - 3.4rem); overflow-y: auto; scrollbar-width: none; }
.view-pay .sheet::-webkit-scrollbar { display: none; }
/* Stage machine (#147): choose → confirm (armed) → accepted, plus the
   read-only dry-run's busy/verdict pair. Each pane is visible ONLY in its own
   stage so an armed confirm step can never bleed into the chooser. */
.pay-choose, .pay-verdict, .pay-confirm, .pay-accepted, .pay-pending { display: none; }
.pay-stage[data-stage="choose"] .pay-choose,
.pay-stage[data-stage="busy"] .pay-choose { display: grid; }
.pay-stage[data-stage="verdict"] .pay-verdict { display: grid; }
.pay-stage[data-stage="confirm"] .pay-confirm { display: grid; }
.pay-stage[data-stage="accepted"] .pay-accepted { display: grid; }
.pay-stage[data-stage="pending"] .pay-pending { display: grid; }
.pay-choose { gap: .8rem; }
.pay-cards { display: grid; gap: .55rem; }
.pay-card-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .7rem;
  width: 100%;
  padding: .7rem .85rem;
  border: 1px solid var(--m-mint-line);
  border-radius: var(--m-radius-sm);
  background: var(--m-surface);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.pay-card-row[data-selected="true"] { border-color: var(--m-brand); background: var(--m-mint); }
.pay-card-row:disabled { cursor: default; opacity: .55; }
.pay-card-mark {
  display: grid;
  place-items: center;
  width: 40px;
  height: 28px;
  border-radius: 7px;
  background: linear-gradient(135deg, var(--m-brand), var(--m-brand-deep));
  color: oklch(0.985 0 0);
  font-size: .58rem;
  font-weight: 700;
  letter-spacing: .06em;
}
.pay-card-body { display: grid; gap: .1rem; min-width: 0; }
.pay-card-name { display: inline-flex; align-items: center; gap: .45rem; font-size: .85rem; font-weight: 600; }
.pay-chip-primary {
  padding: .12rem .5rem;
  border-radius: var(--pill);
  background: var(--m-mint);
  color: var(--m-brand);
  font-size: .62rem;
  font-weight: 650;
}
.pay-card-row[data-selected="true"] .pay-chip-primary { background: var(--m-surface); }
.pay-card-sub { font-size: .72rem; color: var(--m-ink-muted); }
.pay-card-check {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--m-mint-line);
  color: transparent;
  font-size: .7rem;
}
.pay-card-row[data-selected="true"] .pay-card-check {
  border-color: var(--m-brand);
  background: var(--m-brand);
  color: oklch(0.985 0 0);
}
.pay-add-card {
  justify-self: start;
  border: 0;
  background: transparent;
  color: var(--m-brand);
  font-size: .82rem;
  font-weight: 650;
  cursor: pointer;
  padding: 0;
}
.pay-add-card:hover { color: var(--m-brand-deep); }
.pay-amount-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .8rem;
  padding: .7rem .85rem;
  border: 1px solid var(--m-mint-line);
  border-radius: var(--m-radius-sm);
  background: var(--m-bg);
}
.pay-amount-k { font-size: .78rem; font-weight: 600; color: var(--m-ink-mid); }
.pay-amount-v { font-size: 1.05rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.pay-amount-note {
  font-family: var(--mono);
  font-size: .6rem;
  letter-spacing: .08em;
  color: var(--m-ink-muted);
  font-weight: 400;
}
.pay-k { font-size: .78rem; font-weight: 600; color: var(--m-ink-mid); }
.pay-merchants { display: flex; flex-wrap: wrap; gap: .45rem; }
.m-chip-merchant {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .42rem .8rem;
  border: 1px solid var(--m-mint-line);
  border-radius: var(--pill);
  background: var(--m-surface);
  color: var(--m-ink);
  font-size: .78rem;
  font-weight: 600;
  cursor: pointer;
}
.m-chip-merchant[data-selected="true"] {
  border-color: var(--m-brand);
  background: var(--m-brand);
  color: oklch(0.985 0 0);
}
.m-chip-x {
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: inherit;
  opacity: .65;
  font-size: .72rem;
  cursor: pointer;
  padding: 0 .05rem;
}
.m-chip-x:hover { opacity: 1; }
.m-chip-add { border-style: dashed; color: var(--m-brand); background: transparent; }
.merchant-form {
  display: grid;
  gap: .5rem;
  padding: .8rem .85rem;
  border: 1px dashed var(--m-mint-line);
  border-radius: var(--m-radius-sm);
}
.pay-label { font-size: .74rem; font-weight: 600; color: var(--m-ink-mid); }
.pay-label-note { margin-left: .4rem; font-weight: 400; color: var(--m-ink-muted); font-size: .68rem; }
.merchant-form input {
  width: 100%;
  padding: .6rem .8rem;
  border-radius: var(--m-radius-sm);
  border: 1px solid var(--m-mint-line);
  background: var(--m-surface);
  font-size: .85rem;
  color: var(--m-ink);
}
.pay-form-error { font-size: .74rem; color: var(--m-danger); }
.merchant-form-actions { display: flex; gap: .6rem; }
.pay-assure {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .7rem .85rem;
  border-radius: var(--m-radius-sm);
  background: var(--m-mint);
  font-size: .76rem;
  color: var(--m-ink-mid);
}
.pay-shield {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--m-brand);
  color: oklch(0.985 0 0);
  font-size: .68rem;
  flex: none;
}
.pay-note { font-size: .76rem; color: var(--m-danger); }
/* display is owned by the stage machine rules above. */
.pay-verdict { gap: .55rem; padding: .4rem 0 0; }
.pay-verdict-state { font-size: 1rem; font-weight: 700; }
.pay-verdict[data-state="approved"] .pay-verdict-state { color: var(--m-facto-strong); }
.pay-verdict[data-state="declined"] .pay-verdict-state { color: var(--m-danger); }
.pay-verdict[data-state="unavailable"] .pay-verdict-state { color: var(--m-ink-mid); }
.pay-verdict-reason { font-size: .82rem; color: var(--m-ink-mid); }
.pay-verdict-meta { font-family: var(--mono); font-size: .72rem; color: var(--m-ink-muted); overflow-wrap: anywhere; }
.pay-verdict .btn-pay { margin-top: .5rem; }
/* ── #147 armed-confirm + accepted panes ───────────────────────────── */
.pay-confirm { gap: .7rem; padding: .2rem 0 0; }
.pay-confirm-title { font-size: 1rem; font-weight: 700; }
.pay-terms {
  display: grid;
  gap: .45rem;
  border: 1px solid var(--m-mint-line);
  border-radius: var(--m-radius-sm);
  padding: .7rem .85rem;
  background: var(--m-surface);
}
.pay-term { display: flex; justify-content: space-between; gap: .8rem; font-size: .85rem; }
.pay-term-k { color: var(--m-ink-mid); flex: none; }
.pay-term-v { font-weight: 600; text-align: right; overflow-wrap: anywhere; min-width: 0; }
.pay-live-warning {
  border: 1px solid var(--m-danger);
  border-radius: var(--m-radius-sm);
  padding: .6rem .8rem;
  font-size: .8rem;
  font-weight: 600;
  color: var(--m-danger);
}
.pay-intent-ref { font-family: var(--mono); font-size: .72rem; color: var(--m-ink-muted); overflow-wrap: anywhere; }
.pay-confirm-error { font-size: .8rem; color: var(--m-danger); }
/* Defect ② (owner-scoped intent fix) — the degraded-retry note. */
.pay-confirm-note { font-size: .8rem; color: var(--m-ink-mid); }
/* #16 F2 — pending banner for an attempted (outcome-unknown) intent. */
.pay-pending { gap: .55rem; padding: .4rem 0 0; }
.pay-pending-state { font-size: 1rem; font-weight: 700; color: var(--m-danger); }
.pay-pending-detail, .pay-pending-warning { font-size: .82rem; color: var(--m-ink-mid); }
.pay-pending-terms { font-size: .85rem; font-weight: 600; }
.pay-pending-ref { font-family: var(--mono); font-size: .72rem; color: var(--m-ink-muted); overflow-wrap: anywhere; }
.pay-pending .btn-ghost-m[data-armed="true"] { border-color: var(--m-danger); color: var(--m-danger); font-weight: 700; }
.pay-accepted { gap: .55rem; padding: .4rem 0 0; }
.pay-accepted-state { font-size: 1rem; font-weight: 700; color: var(--m-facto-strong); }
.pay-accepted-detail { font-size: .82rem; color: var(--m-ink-mid); }
.pay-accepted-meta { font-family: var(--mono); font-size: .72rem; color: var(--m-ink-muted); overflow-wrap: anywhere; }
.sim-result[data-state="accepted"] { color: var(--m-facto-strong); }
.pay-dry-run { width: 100%; }

/* ── Toast ─────────────────────────────────────────────────────────── */
.toast-slot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 76px;
  display: grid;
  place-items: center;
  pointer-events: none;
  z-index: 7;
}
.toast {
  padding: .6rem 1.05rem;
  border-radius: var(--pill);
  background: oklch(0.22 0 0);
  color: oklch(0.985 0 0);
  font-size: .82rem;
  font-weight: 600;
  box-shadow: 0 10px 24px oklch(0 0 0 / 0.30);
  animation: toast-in .22s ease;
}
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ── Integration trace rail (§6.4, light console styling) ──────────── */
.trace {
  position: sticky;
  top: 4rem;
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 6rem);
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.trace-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .6rem;
  padding: 1rem 1.1rem;
  border-bottom: 1px solid var(--line-soft);
}
.trace-head h2 { font-size: .95rem; font-weight: 650; }
.trace-lead { margin-top: .2rem; font-size: .72rem; color: var(--fg-faint); }
.trace-toggle {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--fg-muted);
  font-size: .74rem;
  padding: .3rem .6rem;
  cursor: pointer;
  white-space: nowrap;
}
.trace-toggle:hover { border-color: var(--line-strong); color: var(--fg); }
.trace-body { overflow-y: auto; padding: .9rem 1.1rem 1.1rem; }
.trace[data-collapsed="true"] .trace-body { display: none; }
.trace-empty { color: var(--fg-faint); font-size: .85rem; }
.trace-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.trace-item {
  display: grid;
  gap: .3rem;
  padding: .8rem .9rem;
  background: var(--inset);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-md);
}
/* Plain-language headline first; the mono sdkMethod stays but demoted to a
   secondary size beneath it (§12 comprehension pass). */
.trace-headline { font-size: .8rem; font-weight: 600; color: var(--fg); }
.trace-method { font-family: var(--mono); font-size: .68rem; font-weight: 650; color: var(--brand-strong); }
.trace-path { font-family: var(--mono); font-size: .7rem; color: var(--fg-mid); overflow-wrap: anywhere; }
.trace-scenario { font-family: var(--mono); font-size: .66rem; color: var(--fg-faint); overflow-wrap: anywhere; }
.trace-sum { font-size: .76rem; color: var(--fg-muted); }
.trace-div { font-size: .7rem; color: var(--warning); }
.trace-run-line { font-family: var(--mono); font-size: .68rem; overflow-wrap: anywhere; }
.trace-run-line a { color: var(--brand); text-decoration: none; }
.trace-run-line a:hover { text-decoration: underline; }

/* Direction badge: which side placed this call (§5/§6 direction taxonomy). */
.trace-badge {
  justify-self: start;
  padding: .18rem .5rem;
  border-radius: var(--pill);
  font-family: var(--mono);
  font-size: .6rem;
  font-weight: 650;
  letter-spacing: .06em;
  border: 1px solid var(--line);
}
.trace-badge-outbound { color: var(--brand-strong); border-color: var(--brand-line); background: var(--brand-soft); }
.trace-badge-inbound { color: var(--fg); border-color: var(--line-strong); background: var(--hover); }
.trace-badge-setup { color: var(--fg-faint); border-color: var(--line); background: transparent; }

/* Collapsed-by-default code / JSON disclosures — native <details>, no JS. */
.trace-disclosure { font-size: .74rem; }
.trace-disclosure summary {
  cursor: pointer;
  color: var(--fg-mid);
  font-weight: 600;
  list-style: none;
}
.trace-disclosure summary::-webkit-details-marker { display: none; }
.trace-disclosure summary::before { content: '▸ '; color: var(--fg-faint); }
.trace-disclosure[open] summary::before { content: '▾ '; }
.trace-code {
  margin: .4rem 0 0;
  padding: .55rem .65rem;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  overflow-x: auto;
  font-family: var(--mono);
  font-size: .68rem;
  line-height: 1.5;
  color: var(--fg-mid);
  white-space: pre;
}

.trace-fab {
  display: none;
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 55;
  border: 1px solid var(--brand-line);
  border-radius: var(--pill);
  background: var(--card);
  color: var(--brand-strong);
  font: 600 .78rem/1 var(--mono);
  letter-spacing: .06em;
  padding: .7rem 1rem;
  cursor: pointer;
  box-shadow: 0 10px 24px oklch(0 0 0 / 0.18);
}

/* ── Responsive (§6.1 + §12 guide breakpoints) ─────────────────────── */
@media (min-width: 1280px) {
  .meridian { max-width: 1400px; }
  .stage { grid-template-columns: 300px minmax(0, 1fr) 340px; }
  .guide {
    grid-column: auto;
    position: sticky;
    top: 4rem;
    max-height: calc(100vh - 6rem);
    overflow-y: auto;
  }
  /* Desktop: always-open panel — the fold summary disappears and /meridian.js
     forces the details open on entering this breakpoint. */
  .guide-summary { display: none; }
}
@media (max-width: 1024px) {
  .stage { grid-template-columns: minmax(0, 1fr); }
  .trace {
    position: fixed;
    left: .75rem;
    right: .75rem;
    bottom: .75rem;
    top: auto;
    max-height: 65vh;
    transform: translateY(calc(100% + 1rem));
    transition: transform .25s ease;
    z-index: 60;
  }
  .trace[data-open="true"] { transform: none; }
  .trace-toggle { display: none; }
  .trace-fab { display: inline-flex; }
}
@media (max-width: 480px) {
  .meridian { padding: 0; }
  .m-top { padding: .8rem 1rem; }
  .stage { padding-top: 0; gap: 0; }
  .phone-wrap { justify-content: stretch; }
  .phone {
    width: 100%;
    height: calc(100dvh - 6.5rem);
    border-radius: 0;
    border: 0;
    padding: 0;
    box-shadow: none;
  }
  .phone-notch { display: none; }
  .phone-screen { border-radius: 0; }
  .tabbar { left: 0; right: 0; bottom: 0; border-radius: 0; }
  .bsheet-wrap { inset: 0; }
  .bsheet-back { border-radius: 0; }
  .bsheet { border-radius: 12px 12px 0 0; }
  .view { padding-top: 1.4rem; }
  .consent-top { padding-top: 1.4rem; }
}
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}


/* ── Standalone phone hosting (authorization popup / site sign-in) ──── */
body.phone-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem 1rem;
  background: var(--inset);
}
/* The hosted page has exactly ONE view; reveal it with the same
   [data-view] contract the phone shell uses for its own views. */
.phone[data-view="hosted"] .view[data-view="hosted"] { display: flex; }
.view-hosted { gap: 0; }
.view-hosted strong { font-weight: 600; color: var(--p-ink); }

.authz-account {
  margin: 0 0 0.8rem;
  padding: 0.5rem 0.7rem;
  border: 1px solid var(--p-line);
  border-radius: var(--r-control);
  background: var(--p-soft);
  color: var(--p-mut);
  font-size: var(--fs-sm);
  text-align: center;
}
.authz-scopes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.5rem;
}
.authz-scope {
  display: flex;
  gap: 0.55rem;
  align-items: flex-start;
  border: 1px solid var(--p-line);
  border-radius: var(--r-control);
  padding: 0.6rem 0.7rem;
}
.authz-scope-check { color: var(--p-green); font-weight: 600; line-height: 1.4; }
.authz-scope-title { font-size: var(--fs-md); font-weight: 600; }
.authz-scope-desc { font-size: var(--fs-xs); color: var(--p-mut); }
.authz-scope-code { font-family: var(--mono); font-size: var(--fs-2xs); color: var(--p-mut); }
.authz-actions { display: grid; gap: 0.5rem; }
.authz-terminal-icon {
  width: 46px;
  height: 46px;
  margin: 0.6rem auto 0.9rem;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 19px;
  font-weight: 600;
  flex: none;
}
.authz-terminal-icon.ok { background: var(--p-accent-soft); color: var(--p-accent); }
.authz-terminal-icon.off { background: var(--p-soft); color: var(--p-mut); border: 1px solid var(--p-line); }
.authz-grant-ref {
  margin: 0.2rem 0 0;
  font-family: var(--mono);
  font-size: var(--fs-2xs);
  color: var(--p-mut);
  text-align: center;
  word-break: break-all;
}
.site-auth-foot { margin: 0.9rem 0 0; text-align: center; font-size: var(--fs-sm); color: var(--p-mut); }
.site-auth-foot a { color: var(--p-accent); font-weight: 600; text-decoration: none; }
.site-auth-foot a:hover { text-decoration: underline; }
