/* ══════════════════════════════════════════════════════════════════
   Consent Tree — 2050 Institutional Solarpunk Design System
   Porcelain light canvas · Emerald ink · Serif display · Hairline grids
   Deliberately calm: built for compliance professionals, not gamers.
   ══════════════════════════════════════════════════════════════════ */

/* fonts.css is linked directly from each page's <head>, not @import'ed here —
   an @import forces the browser to discover and fetch it only after this
   file has already started downloading, serializing two requests that
   should run in parallel. */

:root {
  /* Canvas */
  --porcelain:   #f5f8f5;
  --paper:       #fbfdfb;
  --mist:        #e9f1ea;
  --mist-2:      #dcebe0;

  /* Ink */
  --ink:         #081810;
  --ink-2:       #10291c;
  --ink-3:       #2c4a3a;
  --ink-soft:    #55705f;
  --ink-faint:   #8aa494;

  /* Emerald ramp */
  --em-950:      #022c22;
  --em-900:      #064e3b;
  --em-800:      #065f46;
  --em-700:      #047857;
  --em-600:      #059669;
  --em-500:      #10b981;
  --em-400:      #34d399;
  --em-300:      #6ee7b7;
  --em-200:      #a7f3d0;
  --em-100:      #d1fae5;
  --em-50:       #ecfdf5;

  /* Seal gold — used sparingly for “attestation” accents */
  --seal:        #b9922f;
  --seal-soft:   #e7d9ad;

  --danger:      #c2402f;
  --warn:        #b97324;

  /* Meaning-only accents — category/severity/status labels, never decorative.
     Emerald stays the dominant accent everywhere else. */
  --coral:       #c2664a;
  --blue:        #1b6fa8;
  --blue-soft:   #cfe8ee;

  --hair:        rgba(8, 24, 16, 0.10);
  --hair-strong: rgba(8, 24, 16, 0.18);

  --font-d: 'Fraunces', 'Iowan Old Style', Georgia, serif;
  --font-u: 'Space Grotesk', 'Avenir Next', system-ui, sans-serif;
  --font-m: 'IBM Plex Mono', 'SF Mono', Menlo, monospace;

  --r-sm: 6px;
  --r-md: 12px;
  --r-lg: 20px;
  --r-pill: 100px;
  --nav-h: 72px;
  --shell: 1180px;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

body {
  font-family: var(--font-u);
  background: var(--porcelain);
  color: var(--ink-2);
  line-height: 1.65;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

::selection { background: var(--em-200); color: var(--em-950); }

img, svg { max-width: 100%; display: block; }
a { color: var(--em-700); text-decoration: none; }
a:hover { color: var(--em-600); }
button { font-family: inherit; cursor: pointer; }

/* ── Typography ─────────────────────────────────────────────── */
h1, h2, h3 {
  font-family: var(--font-d);
  font-weight: 420;
  letter-spacing: -0.015em;
  color: var(--ink);
  line-height: 1.12;
  text-wrap: balance;
}
h1 { font-size: clamp(2.6rem, 5.6vw, 4.4rem); font-variation-settings: 'opsz' 100; }
h2 { font-size: clamp(1.9rem, 3.6vw, 2.8rem); font-variation-settings: 'opsz' 72; }
h3 { font-size: 1.25rem; font-weight: 520; }
h4 { font-family: var(--font-u); font-size: 1.02rem; font-weight: 600; color: var(--ink); }
em.serif { font-family: var(--font-d); font-style: italic; font-weight: 400; }

.lede {
  font-size: clamp(1.05rem, 1.6vw, 1.22rem);
  color: var(--ink-3);
  max-width: 40em;
  line-height: 1.7;
}

/* Mono micro-label — the “HUD” voice of the site */
.tag {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  font-family: var(--font-m);
  font-size: .68rem;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--em-800);
}
.tag::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 2px;
  background: var(--em-500);
  box-shadow: 0 0 0 3px var(--em-100);
}
.tag.gold::before { background: var(--seal); box-shadow: 0 0 0 3px var(--seal-soft); }

.mono { font-family: var(--font-m); }

/* ── Layout ─────────────────────────────────────────────────── */
.shell { max-width: var(--shell); margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }
.section { padding: clamp(4rem, 9vw, 7.5rem) 0; position: relative; }
.section-tight { padding: clamp(3rem, 6vw, 4.5rem) 0; }

.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1.5rem, 3vw, 3rem); }
.grid-2 > *, .grid-3 > *, .grid-4 > * { min-width: 0; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; }
@media (max-width: 980px) {
  .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
}

.hair-top { border-top: 1px solid var(--hair); }
.hair-bottom { border-bottom: 1px solid var(--hair); }

/* Fine blueprint grid backdrop */
.gridfield {
  position: absolute; inset: 0; pointer-events: none;
  background-image:
    linear-gradient(var(--hair) 1px, transparent 1px),
    linear-gradient(90deg, var(--hair) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: radial-gradient(ellipse 90% 70% at 50% 30%, black 30%, transparent 78%);
  opacity: .5;
}

/* ── Nav ────────────────────────────────────────────────────── */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  height: var(--nav-h);
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  background: rgba(251, 253, 251, 0.82);
  border-bottom: 1px solid var(--hair);
}
.nav-inner {
  max-width: var(--shell); margin: 0 auto; height: 100%;
  padding: 0 clamp(1.25rem, 4vw, 2.5rem);
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
}
.brand { display: flex; align-items: center; gap: .65rem; color: var(--ink); }
.brand:hover { color: var(--ink); }
.brand-mark {
  width: 42px; height: 42px;
  display: grid; place-items: center;
}
.brand-name { font-family: var(--font-d); font-size: 1.18rem; font-weight: 520; letter-spacing: -0.01em; white-space: nowrap; }
.brand-name span { color: var(--em-700); }
.brand-year {
  font-family: var(--font-m); font-size: .58rem; letter-spacing: .22em;
  color: var(--ink-faint); display: block; margin-top: -3px; text-transform: uppercase;
  white-space: nowrap;
}
.nav-links { display: flex; align-items: center; gap: 1.6rem; }
.nav-links a {
  font-size: .88rem; font-weight: 500; color: var(--ink-3);
  padding: .3rem 0; border-bottom: 2px solid transparent; transition: all .2s;
  white-space: nowrap;
}
.nav-links a:hover { color: var(--ink); }
.nav-links a.active { color: var(--em-800); border-bottom-color: var(--em-500); }
.nav-cta { display: flex; align-items: center; gap: .75rem; }

/* Launch dropdown — links to the running product consoles */
.nav-dd { position: relative; }
.nav-dd-panel {
  position: absolute; top: calc(100% + 12px); right: 0;
  min-width: 300px; padding: .5rem;
  background: var(--paper); border: 1px solid var(--hair-strong);
  border-radius: var(--r-md);
  box-shadow: 0 20px 50px -16px rgba(6, 78, 59, .35);
  display: none; z-index: 300;
}
.nav-dd.open .nav-dd-panel { display: block; }
.nav-dd-panel a {
  display: flex; flex-direction: column; gap: .1rem;
  padding: .6rem .75rem; border-radius: 8px; color: var(--ink);
}
.nav-dd-panel a:hover { background: var(--em-50); color: var(--ink); }
.nav-dd-panel a b { font-size: .86rem; font-weight: 600; }
.nav-dd-panel a span {
  font-family: var(--font-m); font-size: .62rem; letter-spacing: .05em;
  color: var(--ink-faint);
}
.nav-dd-panel .dd-live::after {
  content: "● live"; font-family: var(--font-m); font-size: .58rem;
  color: var(--em-600); letter-spacing: .08em;
}
.nav-group-label {
  font-family: var(--font-m); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--ink-faint);
  padding: .9rem 0 .3rem !important; border-bottom: none !important;
  pointer-events: none;
}
/* Console links inside the menu list are for the mobile burger only;
   desktop gets them via the Launch dropdown. */
.nav-links .nav-mobile-only { display: none; }
@media (max-width: 1240px) {
  .nav-links.open .nav-mobile-only { display: block; }
}
.nav-burger { display: none; background: none; border: 1px solid var(--hair-strong); border-radius: 8px; padding: .45rem .6rem; color: var(--ink); }
@media (max-width: 1240px) {
  .nav-links {
    display: none;
    position: absolute; top: var(--nav-h); left: 0; right: 0;
    flex-direction: column; align-items: flex-start; gap: 0;
    background: var(--paper); border-bottom: 1px solid var(--hair);
    padding: .5rem 1.5rem 1rem;
  }
  .nav-links.open { display: flex; }
  .nav-links a { padding: .7rem 0; width: 100%; border-bottom: 1px solid var(--hair); }
  .nav-burger { display: block; }
  .nav-cta .btn-ghost { display: none; }
}

@media (max-width: 480px) {
  .brand-year { display: none; }
  .nav-inner { gap: .75rem; }
  .nav-cta { gap: .45rem; }
  .nav-cta .btn-sm { padding: .45rem .8rem; font-size: .74rem; }
}

/* ── Buttons ────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--font-u); font-size: .9rem; font-weight: 600;
  padding: .78rem 1.5rem; border-radius: var(--r-pill);
  border: 1px solid transparent; transition: all .22s var(--ease);
  white-space: nowrap;
}
.btn-primary {
  background: linear-gradient(135deg, var(--em-800), var(--em-600));
  color: #fff !important;
  box-shadow: 0 6px 20px rgba(5, 150, 105, .28), inset 0 1px 0 rgba(255,255,255,.18);
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(5, 150, 105, .38); }
.btn-ghost {
  background: transparent; color: var(--ink); border-color: var(--hair-strong);
}
.btn-ghost:hover { border-color: var(--em-600); color: var(--em-800); background: var(--em-50); }
.btn-dark {
  background: var(--ink); color: var(--em-100) !important; border-color: var(--ink);
}
.btn-dark:hover { background: var(--em-950); transform: translateY(-2px); }
.btn-sm { padding: .5rem 1.05rem; font-size: .8rem; }

/* ── Hero aurora ───────────────────────────────────────────── */
.hero {
  position: relative;
  padding: calc(var(--nav-h) + clamp(4rem, 9vw, 7rem)) 0 clamp(4rem, 8vw, 6rem);
  overflow: hidden;
}
.aurora {
  position: absolute; inset: -20% -10%; pointer-events: none; z-index: 0;
  filter: blur(70px) saturate(1.15);
  opacity: .55;
}
.aurora::before, .aurora::after {
  content: ""; position: absolute; border-radius: 50%;
}
.aurora::before {
  width: 55vw; height: 42vw; top: -6vw; right: -8vw;
  background: radial-gradient(closest-side, var(--em-200), transparent 70%);
  animation: drift1 26s ease-in-out infinite alternate;
}
.aurora::after {
  width: 44vw; height: 36vw; top: 16vw; left: -10vw;
  background: radial-gradient(closest-side, #d9ecd4, transparent 70%);
  animation: drift2 32s ease-in-out infinite alternate;
}
@keyframes drift1 { to { transform: translate(-7vw, 5vw) scale(1.12); } }
@keyframes drift2 { to { transform: translate(6vw, -4vw) scale(1.08); } }

/* Organic gold→emerald motif — abstract contour ribbons, not geometric/grid.
   Ported from the client-overview deck's locked background direction
   (2026-07-17): corner placement, gold fading into emerald, plus a couple of
   thin freehand contour strokes for texture. Layers under .aurora's blobs,
   adds warmth without competing with them. */
.organic-motif {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2000' height='1125' viewBox='0 0 2000 1125'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0%25' stop-color='%23E7D9AD' stop-opacity='.55'/%3E%3Cstop offset='100%25' stop-color='%23E7D9AD' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0%25' stop-color='%236EE7B7' stop-opacity='.4'/%3E%3Cstop offset='100%25' stop-color='%236EE7B7' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M1300-80C1550 60 1680 260 1620 480 1560 700 1750 820 2080 760L2080-80Z' fill='url(%23g)'/%3E%3Cpath d='M1500-80C1700 100 1780 320 1700 540 1640 720 1820 860 2080 900L2080-80Z' fill='url(%23e)' opacity='.6'/%3E%3Cpath d='M1150 1205C1350 1050 1420 880 1330 700 1260 560 1380 420 1620 380' fill='none' stroke='%23B9922F' stroke-width='2' opacity='.28'/%3E%3Cpath d='M1050 1205C1260 1030 1300 850 1180 680' fill='none' stroke='%23047857' stroke-width='1.5' opacity='.22'/%3E%3Ccircle cx='120' cy='1050' r='340' fill='%23E7D9AD' opacity='.14'/%3E%3Ccircle cx='60' cy='1000' r='200' fill='%2334D399' opacity='.10'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}

.hero-inner { position: relative; z-index: 2; }

/* ── Cards ─────────────────────────────────────────────────── */
.card {
  background: var(--paper);
  border: 1px solid var(--hair);
  border-radius: var(--r-lg);
  padding: 1.75rem;
  transition: all .3s var(--ease);
  position: relative;
}
.card:hover {
  border-color: rgba(5, 150, 105, .35);
  box-shadow: 0 18px 44px -18px rgba(6, 78, 59, .22);
  transform: translateY(-3px);
}
.card h4 { margin-bottom: .45rem; }
.card p { font-size: .9rem; color: var(--ink-soft); line-height: 1.7; }

.card-num {
  font-family: var(--font-m); font-size: .68rem; color: var(--ink-faint);
  letter-spacing: .12em; margin-bottom: 1rem; display: block;
}

.icon-tile {
  width: 42px; height: 42px; border-radius: 11px;
  background: var(--em-50); border: 1px solid var(--em-100);
  display: grid; place-items: center; color: var(--em-700);
  margin-bottom: 1.1rem;
}

/* Fact chip — appears under claims to cite the real implementation */
.fact {
  display: inline-flex; align-items: center; gap: .45rem;
  margin-top: .9rem;
  font-family: var(--font-m); font-size: .64rem; letter-spacing: .06em;
  color: var(--em-800); background: var(--em-50);
  border: 1px solid var(--em-100); border-radius: var(--r-pill);
  padding: .28rem .7rem;
}
.fact::before { content: "✓"; font-weight: 700; color: var(--em-600); }

/* ── Team / leadership profiles ───────────────────────────── */
.team-profile {
  display: grid; grid-template-columns: 240px 1fr; gap: clamp(1.75rem, 4vw, 3rem);
  align-items: start; padding: clamp(2rem, 4vw, 2.75rem) 0;
  border-top: 1px solid var(--hair);
}
.team-profile:first-of-type { border-top: none; padding-top: 0; }
@media (max-width: 720px) {
  .team-profile { grid-template-columns: 1fr; }
}
.team-photo {
  width: 100%; aspect-ratio: 1 / 1; border-radius: var(--r-lg);
  background: linear-gradient(160deg, var(--em-900), var(--em-700));
  display: flex; align-items: center; justify-content: center;
  color: var(--em-100); font-family: var(--font-d); font-size: 2.6rem;
  border: 1px solid var(--hair-strong); position: relative; overflow: hidden;
}
.team-photo::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(ellipse 90% 60% at 30% -10%, rgba(167,243,208,.28), transparent 65%);
}
.team-photo span { position: relative; z-index: 1; }
/* Sits above ::after so the emerald wash doesn't tint the face. Sources are
   already square-cropped; object-fit is the safety net, not the framing. */
.team-photo img {
  position: relative; z-index: 1; display: block;
  width: 100%; height: 100%; object-fit: cover;
}
.team-photo-tag {
  position: absolute; bottom: .65rem; left: 50%; transform: translateX(-50%); z-index: 1;
  font-family: var(--font-m); font-size: .58rem; letter-spacing: .08em; text-transform: uppercase;
  color: var(--em-100); background: rgba(6, 46, 34, .55); border: 1px solid rgba(167,243,208,.25);
  padding: .28rem .6rem; border-radius: var(--r-pill); white-space: nowrap;
}
.team-role {
  font-family: var(--font-m); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase;
  color: var(--em-700); margin: .3rem 0 1rem; display: block;
}
.team-profile p { color: var(--ink-soft); line-height: 1.75; margin-bottom: 1rem; }
.team-profile p:last-child { margin-bottom: 0; }

/* ── Dark sections (deep evergreen) ────────────────────────── */
.dark {
  background:
    radial-gradient(ellipse 80% 60% at 70% -10%, rgba(16, 185, 129, .14), transparent 60%),
    linear-gradient(180deg, #06231a, #041a13 55%, #03130d);
  color: #c8ddd0;
}
.dark h1, .dark h2, .dark h3 { color: #f0f7f2; }
.dark h4 { color: #eaf5ee; }
.dark .lede { color: #9fbfab; }
.dark .tag { color: var(--em-300); }
.dark .tag::before { box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.dark .card {
  background: rgba(255, 255, 255, .035);
  border-color: rgba(167, 243, 208, .12);
  backdrop-filter: blur(6px);
}
.dark .card:hover { border-color: rgba(52, 211, 153, .45); box-shadow: 0 18px 44px -14px rgba(0,0,0,.5); }
.dark .card p { color: #93b3a0; }
.dark .icon-tile { background: rgba(16,185,129,.1); border-color: rgba(16,185,129,.22); color: var(--em-300); }
.dark .fact { color: var(--em-200); background: rgba(16,185,129,.08); border-color: rgba(16,185,129,.2); }
.dark .hair-top, .dark .hair-bottom { border-color: rgba(167,243,208,.1); }
.dark .gridfield {
  background-image:
    linear-gradient(rgba(167,243,208,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(167,243,208,.06) 1px, transparent 1px);
}

/* ── Stats band ────────────────────────────────────────────── */
.stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  border: 1px solid var(--hair); border-radius: var(--r-lg);
  overflow: hidden; background: var(--paper);
}
.stat {
  padding: 2rem 1.6rem; border-right: 1px solid var(--hair);
}
.stat:last-child { border-right: none; }
.stat b {
  font-family: var(--font-d); font-size: clamp(2.3rem, 3.9vw, 3.3rem);
  font-weight: 480; color: var(--em-800); display: block; line-height: 1;
  letter-spacing: -0.02em;
}
.stat span { font-size: .8rem; color: var(--ink-soft); display: block; margin-top: .55rem; line-height: 1.45; }
.stat b span { font: inherit; color: inherit; display: inline; margin-top: 0; }
.stat .mono-sub { font-family: var(--font-m); font-size: .6rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); margin-top: .5rem; display: block; }
@media (max-width: 860px) {
  .stats { grid-template-columns: repeat(2, 1fr); }
  .stat:nth-child(2) { border-right: none; }
  .stat:nth-child(-n+2) { border-bottom: 1px solid var(--hair); }
}

/* ── Ledger chain visual ───────────────────────────────────── */
.ledger {
  display: flex; align-items: stretch; gap: 0;
  overflow-x: auto; padding: .5rem 0 1rem;
  scrollbar-width: thin;
}
.ledger-block {
  min-width: 210px; flex: 1;
  background: var(--paper); border: 1px solid var(--hair);
  border-radius: var(--r-md); padding: 1.1rem 1.2rem;
  position: relative;
}
.ledger-block + .ledger-block { margin-left: 2.2rem; }
.ledger-block + .ledger-block::before {
  content: "⛓"; position: absolute; left: -1.85rem; top: 50%;
  transform: translateY(-50%);
  color: var(--em-500); font-size: .9rem;
}
.ledger-block .lb-kind {
  font-family: var(--font-m); font-size: .6rem; letter-spacing: .14em;
  text-transform: uppercase; color: var(--em-700); margin-bottom: .4rem;
}
.ledger-block .lb-hash {
  font-family: var(--font-m); font-size: .66rem; color: var(--ink-faint);
  word-break: break-all; line-height: 1.5;
}
.ledger-block .lb-body { font-size: .82rem; color: var(--ink-3); margin: .3rem 0 .5rem; font-weight: 500; }
.ledger-block.anchor { border-color: var(--seal); background: linear-gradient(180deg, #fdfbf4, var(--paper)); }
.ledger-block.anchor .lb-kind { color: var(--seal); }

/* ── Timeline ──────────────────────────────────────────────── */
.timeline { position: relative; padding-left: 1.75rem; }
.timeline::before {
  content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px;
  width: 2px; background: linear-gradient(var(--em-500), var(--em-200));
  border-radius: 2px;
}
.tl-item { position: relative; padding-bottom: 2.2rem; }
.tl-item:last-child { padding-bottom: 0; }
.tl-item::before {
  content: ""; position: absolute; left: -1.75rem; top: 7px;
  width: 14px; height: 14px; border-radius: 50%;
  background: var(--paper); border: 3px solid var(--em-600);
}
.tl-item.future::before { border-style: dashed; border-color: var(--em-300); }
.tl-year { font-family: var(--font-m); font-size: .72rem; letter-spacing: .12em; color: var(--em-700); text-transform: uppercase; }
.tl-item h4 { margin: .2rem 0 .3rem; }
.tl-item p { font-size: .88rem; color: var(--ink-soft); max-width: 44em; }

/* ── Tables ───────────────────────────────────────────────── */
.tablewrap { overflow-x: auto; border: 1px solid var(--hair); border-radius: var(--r-lg); background: var(--paper); }
table { width: 100%; border-collapse: collapse; font-size: .88rem; min-width: 640px; }
th {
  font-family: var(--font-m); font-size: .66rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--ink-soft); font-weight: 500;
  text-align: left; padding: .9rem 1.2rem; border-bottom: 1px solid var(--hair-strong);
  background: var(--em-50);
}
td { padding: .85rem 1.2rem; border-bottom: 1px solid var(--hair); color: var(--ink-3); vertical-align: top; }
tr:last-child td { border-bottom: none; }
td .yes { color: var(--em-700); font-weight: 700; }
td .no { color: var(--ink-faint); }

/* ── Code panels ──────────────────────────────────────────── */
.code {
  background: #04150e;
  border: 1px solid rgba(167, 243, 208, .14);
  border-radius: var(--r-md);
  font-family: var(--font-m); font-size: .78rem; line-height: 1.75;
  color: #b6d9c4; overflow-x: auto;
}
.code-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: .6rem 1rem; border-bottom: 1px solid rgba(167,243,208,.1);
  font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: #5d8a71;
}
.code pre { padding: 1.1rem 1.25rem; margin: 0; }
.code .c-k { color: #6ee7b7; }
.code .c-s { color: #fcd97c; }
.code .c-c { color: #4e7560; }
.code .c-n { color: #93c5fd; }

/* ── Pricing ──────────────────────────────────────────────── */
.plan {
  display: flex; flex-direction: column;
  background: var(--paper); border: 1px solid var(--hair);
  border-radius: var(--r-lg); padding: 2.2rem 2rem;
  position: relative;
}
.plan.popular {
  border-color: var(--em-600);
  box-shadow: 0 24px 60px -24px rgba(6, 95, 70, .35);
  background: linear-gradient(180deg, var(--em-50), var(--paper) 30%);
}
.plan-flag {
  position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
  background: var(--em-700); color: #fff;
  font-family: var(--font-m); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; padding: .32rem .9rem; border-radius: var(--r-pill);
}
.plan h3 { font-size: 1.5rem; }
.plan .plan-tag { font-size: .85rem; color: var(--ink-soft); margin: .35rem 0 1.4rem; min-height: 2.6em; }
.plan-price b {
  font-family: var(--font-d); font-size: 2.6rem; font-weight: 500; color: var(--ink);
  letter-spacing: -0.02em;
}
.plan-price span { color: var(--ink-soft); font-size: .85rem; }
.plan-setup { font-family: var(--font-m); font-size: .66rem; color: var(--ink-faint); margin-top: .4rem; letter-spacing: .04em; }
.plan ul { list-style: none; margin: 1.5rem 0 2rem; flex: 1; }
.plan li {
  font-size: .87rem; color: var(--ink-3); padding: .42rem 0 .42rem 1.6rem;
  position: relative; border-bottom: 1px dashed var(--hair);
}
.plan li:last-child { border-bottom: none; }
.plan li::before { content: "✓"; position: absolute; left: 0; color: var(--em-600); font-weight: 700; }

.toggle {
  display: inline-flex; background: var(--mist); border-radius: var(--r-pill);
  border: 1px solid var(--hair); padding: 4px; gap: 4px;
}
.toggle button {
  border: none; background: transparent; border-radius: var(--r-pill);
  padding: .5rem 1.25rem; font-size: .82rem; font-weight: 600; color: var(--ink-soft);
  transition: all .2s;
}
.toggle button.on { background: var(--paper); color: var(--em-800); box-shadow: 0 2px 8px rgba(8,24,16,.1); }
.toggle .save-pill {
  font-size: .62rem; font-family: var(--font-m); color: var(--em-700);
  background: var(--em-100); border-radius: var(--r-pill); padding: .1rem .5rem; margin-left: .4rem;
}

/* ── Forms ────────────────────────────────────────────────── */
.field { margin-bottom: 1.15rem; }
.field label {
  display: block; font-size: .78rem; font-weight: 600; color: var(--ink-2);
  margin-bottom: .4rem; letter-spacing: .02em;
}
.field input, .field select, .field textarea {
  width: 100%; padding: .78rem 1rem; font-family: var(--font-u); font-size: .92rem;
  border: 1px solid var(--hair-strong); border-radius: var(--r-md);
  background: var(--paper); color: var(--ink); transition: border .2s, box-shadow .2s;
}
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none; border-color: var(--em-600); box-shadow: 0 0 0 4px var(--em-100);
}
.field .err { color: var(--danger); font-size: .74rem; margin-top: .3rem; display: none; }
.field.invalid input, .field.invalid textarea { border-color: var(--danger); }
.field.invalid .err { display: block; }

.notice {
  border-radius: var(--r-md); padding: 1rem 1.25rem; font-size: .88rem;
  border: 1px solid var(--em-200); background: var(--em-50); color: var(--em-900);
}

/* ── Pulse subscribe (research.html) ──────────────────────── */
.pulse-subscribe { max-width: 460px; margin: 0 auto; text-align: left; }
.pulse-subscribe label {
  display: block; font-family: var(--font-m); font-size: .62rem;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--em-700); margin-bottom: .45rem;
}
.pulse-subscribe input {
  width: 100%; padding: .8rem 1rem; font: inherit; font-size: .95rem;
  border: 1px solid var(--hair-strong); border-radius: var(--r-md);
  background: var(--paper); color: var(--ink);
}
.pulse-subscribe input:focus-visible {
  outline: 2px solid var(--em-700); outline-offset: 1px; border-color: var(--em-700);
}
.pulse-subscribe .btn { width: 100%; margin-top: 1rem; justify-content: center; }
.pulse-subscribe .btn[disabled] { opacity: .6; cursor: progress; }
/* The consent notice sits between the field and the button on purpose: it is
   read before the address is submitted, not after. */
.pulse-notice {
  font-size: .78rem; line-height: 1.6; color: var(--ink-soft); margin: .7rem 0 0;
}
.pulse-msg {
  margin: 1rem 0 0; padding: .8rem 1rem; border-radius: var(--r-md);
  font-size: .85rem; line-height: 1.6;
  border: 1px solid var(--hair-strong); background: var(--paper);
}
.pulse-msg-ok  { border-color: var(--em-200); background: var(--em-50); color: var(--em-900); }
.pulse-msg-err { border-color: var(--danger); color: var(--danger); background: var(--paper); }
/* Deliberately a plain notice, not a seal or stamp: a graphic mark would imply
   an authentication this page cannot perform, and publishing seal artwork hands
   a forger the thing to paste onto a fake document. The CIN is the verifiable
   part — it resolves on the MCA register without trusting us. */
/* `.team-profile p` sets --ink-soft and outranks .notice, so restate the
   notice colour here — it lifts contrast on the em-50 ground from ~4.9:1 to
   ~11:1, which this paragraph in particular should not be squinted at. */
.team-profile .signing-authority {
  margin-top: 1.5rem; line-height: 1.7; color: var(--em-900);
}
.signing-authority-label {
  display: block; font-family: var(--font-m); font-size: .62rem;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--em-700); margin-bottom: .45rem;
}

/* ── Interactive widgets ──────────────────────────────────── */
.widget {
  border: 1px solid var(--hair); border-radius: var(--r-lg);
  background: var(--paper); overflow: hidden;
}
.widget-head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .85rem 1.4rem; border-bottom: 1px solid var(--hair);
  background: linear-gradient(180deg, var(--em-50), transparent);
}
.widget-head .tag { font-size: .62rem; }
.widget-body { padding: 1.5rem; }

.lang-pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.lang-pills button {
  border: 1px solid var(--hair-strong); background: var(--paper);
  border-radius: var(--r-pill); padding: .4rem .95rem; font-size: .8rem;
  font-weight: 500; color: var(--ink-3); transition: all .2s;
}
.lang-pills button.on { background: var(--em-800); border-color: var(--em-800); color: #fff; }

.quiz-q { padding: 1.1rem 0; border-bottom: 1px dashed var(--hair); }
.quiz-q p { font-size: .95rem; font-weight: 500; color: var(--ink-2); margin-bottom: .6rem; }
.quiz-q .quiz-opts { display: flex; gap: .5rem; }
.quiz-opts button {
  border: 1px solid var(--hair-strong); background: var(--paper); border-radius: var(--r-pill);
  padding: .38rem 1.15rem; font-size: .8rem; font-weight: 600; color: var(--ink-3);
  transition: all .15s;
}
.quiz-opts button.sel-yes { background: var(--em-700); border-color: var(--em-700); color: #fff; }
.quiz-opts button.sel-no { background: var(--ink); border-color: var(--ink); color: #fff; }
.score-ring { display: grid; place-items: center; position: relative; }
.score-ring b {
  position: absolute; font-family: var(--font-d); font-size: 2.2rem; font-weight: 500; color: var(--em-800);
}

/* ── Marquee ──────────────────────────────────────────────── */
.marquee { overflow: hidden; white-space: nowrap; position: relative; }
.marquee-track { display: inline-flex; gap: 3.5rem; animation: scroll 42s linear infinite; padding-right: 3.5rem; }
.marquee:hover .marquee-track { animation-play-state: paused; }
@keyframes scroll { to { transform: translateX(-50%); } }
.marquee span {
  font-family: var(--font-m); font-size: .74rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--ink-faint);
  display: inline-flex; align-items: center; gap: .6rem;
}
.marquee span::before { content: "◆"; font-size: .5rem; color: var(--em-400); }

/* ── Footer ───────────────────────────────────────────────── */
footer {
  background: var(--ink);
  color: #86a894;
  padding: 4.5rem 0 2.5rem;
  position: relative; overflow: hidden;
}
footer h5 {
  font-family: var(--font-m); font-size: .66rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--em-300); margin-bottom: 1.1rem; font-weight: 500;
}
footer a { color: #a9c6b5; font-size: .85rem; display: block; padding: .28rem 0; }
footer a:hover { color: var(--em-300); }
.foot-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2.5rem; margin-bottom: 3.5rem; }
@media (max-width: 860px) { .foot-grid { grid-template-columns: 1fr 1fr; } }
.foot-legal {
  border-top: 1px solid rgba(167,243,208,.12); padding-top: 1.8rem;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
  font-size: .76rem; color: #5d7a69;
}
.truth-badge {
  display: inline-flex; align-items: center; gap: .55rem;
  border: 1px solid rgba(185, 146, 47, .45); border-radius: var(--r-pill);
  padding: .45rem 1rem; font-family: var(--font-m); font-size: .64rem;
  letter-spacing: .1em; text-transform: uppercase; color: var(--seal-soft);
}
.truth-badge::before { content: "◈"; color: var(--seal); }
a.truth-badge:hover { border-color: var(--seal); color: #fff; }

/* Social row — footer brand column. Inline SVG only (no external asset
   hosts), so the static_site_csp snippet needs no change. */
.foot-social { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.6rem; }
.foot-social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.3rem; height: 2.3rem; padding: 0;
  border: 1px solid rgba(167,243,208,.18); border-radius: var(--r-pill);
  color: #a9c6b5; transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease);
}
.foot-social a:hover { color: var(--em-300); border-color: var(--em-400); background: rgba(167,243,208,.07); }
.foot-social a:focus-visible { outline: 2px solid var(--em-300); outline-offset: 2px; }
.foot-social svg { width: 1.05rem; height: 1.05rem; fill: currentColor; display: block; }
@media (prefers-reduced-motion: reduce) { .foot-social a { transition: none; } }

/* ── Reveal animation ─────────────────────────────────────── */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.reveal.d1 { transition-delay: .08s; }
.reveal.d2 { transition-delay: .16s; }
.reveal.d3 { transition-delay: .24s; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .aurora::before, .aurora::after, .marquee-track { animation: none; }
}

/* ── Page hero (interior pages) ───────────────────────────── */
.page-hero { padding: calc(var(--nav-h) + clamp(3.5rem, 7vw, 5.5rem)) 0 clamp(2.5rem, 5vw, 4rem); position: relative; overflow: hidden; }

/* ── Misc ─────────────────────────────────────────────────── */
.center { text-align: center; }
.center .lede { margin-left: auto; margin-right: auto; }
.mt-1 { margin-top: 1rem; } .mt-2 { margin-top: 2rem; } .mt-3 { margin-top: 3rem; }
.mb-1 { margin-bottom: 1rem; } .mb-2 { margin-bottom: 2rem; } .mb-3 { margin-bottom: 3rem; }
.flex { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }

.kbd {
  font-family: var(--font-m); font-size: .72rem; background: var(--mist);
  border: 1px solid var(--hair-strong); border-bottom-width: 2px;
  border-radius: 5px; padding: .1rem .45rem; color: var(--ink-2);
}

/* ── Live consent widget (demo.html) — native to the site theme ──── */
/*
   The --ct-* custom properties are written by js/consent-design.js from the
   TENANT'S design, and only when the tenant actually stated a value; anything
   unstated is removed rather than defaulted, so the var() fallbacks below
   (this site's own tokens) keep applying. That is why every rule reads
   var(--ct-x, <site token>) and never var(--ct-x) alone: an unstated colour
   must render as this site's colour, not as nothing.
*/
.cs-consent {
  margin: 1.4rem 0;
  border: 1px solid var(--ct-border, var(--em-200));
  border-radius: var(--ct-radius, var(--r-md));
  background: var(--ct-bg, linear-gradient(180deg, var(--em-50), var(--paper)));
  color: var(--ct-text, inherit);
  font-family: var(--ct-font, inherit);
  overflow: hidden;
}
/* A heading the tenant authored in the designer. Absent markup when they did
   not author one — never an empty element holding space. */
.cs-consent-heading {
  font-size: .95rem; font-weight: 700; margin: 0 0 .2rem;
  color: var(--ct-accent, var(--ink-2));
}
.cs-consent-subtitle {
  font-size: .78rem; margin: 0 0 .8rem; color: var(--ink-3); line-height: 1.6;
}
/* Withdrawal information for a single purpose (DPDP S.6(4)/S.6(6)). Rendered
   only when the organisation said something — never as blanket reassurance. */
.cs-purpose-withdraw {
  font-size: .72rem; color: var(--ink-3); margin-top: .3rem; line-height: 1.55;
}
.cs-purpose-nowithdraw { color: var(--danger); font-weight: 600; }
.cs-consent-designed-foot {
  font-size: .74rem; color: var(--ink-3); line-height: 1.6;
  margin-top: .8rem; padding-top: .8rem; border-top: 1px dashed var(--hair);
}
.cs-consent-head {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  flex-wrap: wrap; padding: .7rem 1rem; border-bottom: 1px solid var(--em-100);
}
.cs-consent-body { padding: 1rem; }
.cs-consent-loading, .cs-consent-err {
  font-size: .74rem; color: var(--ink-faint); margin: .2rem 0;
}
.cs-consent-err { color: var(--danger); }

.cs-lang { display: flex; flex-wrap: wrap; gap: .35rem; }
.cs-lang select {
  font-family: var(--font-u); font-size: .74rem; color: var(--ink-3);
  border: 1px solid var(--hair-strong); border-radius: var(--r-pill);
  background: var(--paper); padding: .28rem .7rem;
}

.cs-purpose {
  display: flex; gap: .7rem; padding: .8rem 0; border-bottom: 1px dashed var(--hair);
}
.cs-purpose:last-child { border-bottom: none; }
.cs-purpose input[type=checkbox] {
  width: 18px; height: 18px; margin-top: .15rem;
  accent-color: var(--ct-accent, var(--em-600)); flex: none;
}
.cs-purpose-main { flex: 1; }
.cs-purpose-title {
  font-size: .86rem; font-weight: 600; color: var(--ink-2);
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.cs-purpose-req {
  font-family: var(--font-m); font-size: .58rem; letter-spacing: .06em;
  text-transform: uppercase; color: var(--em-700);
  border: 1px solid var(--em-200); border-radius: var(--r-pill); padding: .05rem .45rem;
}
.cs-purpose-desc { font-size: .8rem; color: var(--ink-soft); margin: .25rem 0 .35rem; line-height: 1.55; }
.cs-purpose-elements {
  font-family: var(--font-m); font-size: .64rem; letter-spacing: .03em;
  color: var(--ink-faint); text-transform: uppercase;
}
.cs-purpose-elements b { color: var(--ink-3); font-weight: 600; }
.cs-consent-foot {
  font-size: .68rem; color: var(--ink-faint); margin-top: .7rem; line-height: 1.5;
  display: flex; align-items: center; gap: .4rem;
}
.cs-consent-foot .cs-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--em-500); flex: none; }
.cs-rights {
  margin-top: .7rem; padding-top: .7rem; border-top: 1px dashed var(--hair);
  font-size: .68rem; color: var(--ink-faint); line-height: 1.6;
}
.cs-rights a { color: var(--em-700); }
.cs-rights strong { color: var(--ink-3); font-weight: 600; }

/* ── Cookie / storage consent banner (site-wide, first-party) ────── */
.cs-cookie {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 1rem;
  z-index: 200; width: min(680px, calc(100vw - 2rem));
  background: var(--paper); border: 1px solid var(--em-200);
  border-radius: var(--r-lg); box-shadow: 0 18px 50px rgba(6,78,59,.20);
  overflow: hidden; animation: csCookieUp .35s ease;
}
@keyframes csCookieUp { from { opacity:0; transform:translate(-50%,14px);} to {opacity:1; transform:translate(-50%,0);} }
.cs-cookie-body { padding: 1.1rem 1.25rem; }
.cs-cookie-head { display:flex; align-items:center; gap:.6rem; margin-bottom:.5rem; }
.cs-cookie-head .tag { font-size:.6rem; }
.cs-cookie p { font-size:.82rem; color:var(--ink-3); line-height:1.6; margin:0; }
.cs-cookie p a { color:var(--em-700); }
.cs-cookie-actions { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.9rem; align-items:center; }
.cs-cookie-actions .btn { padding:.5rem 1.1rem; font-size:.82rem; }
.cs-cookie-link { font-size:.76rem; color:var(--ink-soft); text-decoration:underline; margin-left:auto; background:none; border:none; cursor:pointer; }
.cs-cookie-cats { margin-top:.9rem; border-top:1px dashed var(--hair); padding-top:.8rem; display:none; }
.cs-cookie-cats.on { display:block; }
.cs-cookie-cat { display:flex; gap:.7rem; align-items:flex-start; padding:.55rem 0; border-bottom:1px dashed var(--hair); }
.cs-cookie-cat:last-child { border-bottom:none; }
.cs-cookie-cat-main { flex:1; }
.cs-cookie-cat-name { font-size:.82rem; font-weight:600; color:var(--ink-2); display:flex; align-items:center; gap:.5rem; }
.cs-cookie-cat-desc { font-size:.72rem; color:var(--ink-soft); margin-top:.15rem; line-height:1.5; }
.cs-cookie-cat-state { font-family:var(--font-m); font-size:.6rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--em-700); border:1px solid var(--em-200); border-radius:var(--r-pill); padding:.08rem .5rem; white-space:nowrap; }
.cs-cookie-cat-state.off { color:var(--ink-faint); border-color:var(--hair-strong); }
.cs-cookie-cat-static { cursor:default; }
label.cs-cookie-cat { cursor:pointer; }
.cs-cookie-err { font-size:.76rem; color:var(--ink-soft); padding:.5rem 0; }
/* Real per-category toggle (Functional/Analytics/Marketing) — unchecked by
   default, no pre-ticked optional boxes (DPDP Rule 3). */
.cs-cookie-toggle {
  appearance:none; -webkit-appearance:none; flex:0 0 auto; width:34px; height:20px;
  border-radius:var(--r-pill); border:1px solid var(--hair-strong); background:var(--ink-faint);
  position:relative; cursor:pointer; transition:background .15s ease, border-color .15s ease;
}
.cs-cookie-toggle::before {
  content:''; position:absolute; top:2px; left:2px; width:14px; height:14px; border-radius:50%;
  background:var(--paper); transition:transform .15s ease;
}
.cs-cookie-toggle:checked { background:var(--em-600); border-color:var(--em-600); }
.cs-cookie-toggle:checked::before { transform:translateX(14px); }
@media (max-width:520px){ .cs-cookie-link{ margin-left:0; width:100%; text-align:left; } }

/* ── Consent withdrawal page (withdraw.html) ─────────────────────── */
.cs-w-pill { font-family:var(--font-m); font-size:.58rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--em-700); border:1px solid var(--em-200); border-radius:var(--r-pill); padding:.05rem .45rem; }
.cs-w-pill.off { color:var(--ink-faint); border-color:var(--hair-strong); }
.btn-sm.cs-w-btn { padding:.35rem .85rem; font-size:.78rem; }

/* ── Consent self-service portal (portal.html) ───────────────────── */
.cs-portal-dash-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.cs-portal-list { display:flex; flex-direction:column; gap:1rem; }
.cs-portal-doc { border:1px solid var(--hair); border-radius:var(--r-md); padding:.9rem 1rem; }
.cs-portal-doc-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:.5rem; padding-bottom:.5rem; border-bottom:1px dashed var(--hair); }
.cs-portal-purpose { align-items:center; }
.cs-portal-doc-actions { display:flex; gap:1rem; margin-top:.6rem; padding-top:.6rem; border-top:1px dashed var(--hair); }
.cs-portal-doc-actions .cs-cookie-link { margin-left:0; }
.cs-portal-receipt { margin-top:.6rem; padding-top:.6rem; border-top:1px dashed var(--hair); }
.cs-portal-receipt-body { font-size:.76rem; color:var(--ink-soft); display:flex; flex-direction:column; gap:.3rem; }
.cs-portal-otp-err { font-size:.76rem; color:var(--ink-soft); }
