:root {
  --journey-bg: #000614;
  --journey-panel: #081525;
  --journey-panel-raised: #091528;
  --journey-line: #1a3748;
  --journey-text: #f2f6fa;
  --journey-muted: #9aa8ba;
  --journey-cyan: #22d3ee;
  --journey-green: #34d399;
  --journey-amber: #f59e0b;
  --journey-ocean: #38bdf8;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-height: 100%; background: var(--journey-bg); color: var(--journey-text); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
body::before {
  content: ""; position: fixed; top: 0; right: 0; bottom: 0; left: 0; pointer-events: none; opacity: .42;
  background-image: linear-gradient(rgba(34,211,238,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(34,211,238,.025) 1px, transparent 1px);
  background-size: 48px 48px; mask-image: linear-gradient(to bottom, black, transparent 72%);
}
.journey-page { position: relative; width: min(1160px, calc(100% - 40px)); margin: 0 auto; padding: 72px 0 118px; }
.eyebrow { margin: 0 0 12px; color: var(--journey-cyan); font: 700 10px/1.3 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .18em; text-transform: uppercase; }
.section-heading { max-width: 650px; margin-bottom: 28px; }
.section-heading h2, .certificate-vault h2 { margin: 0; font: 600 clamp(28px, 4vw, 48px)/1.04 "Space Grotesk", sans-serif; letter-spacing: -.04em; }
.section-heading > p:last-child, .certificate-vault > div > p:last-child { margin: 12px 0 0; color: var(--journey-muted); font-size: 14px; line-height: 1.7; }

.journey-login { width: min(560px, 100%); margin: 8vh auto 0; padding: 42px; text-align: center; border: 1px solid var(--journey-line); border-radius: 28px; background: radial-gradient(circle at 50% 0, rgba(34,211,238,.1), transparent 42%), var(--journey-panel); box-shadow: 0 28px 80px rgba(0,0,0,.42); }
.login-signal { position: relative; width: 130px; height: 130px; margin: 0 auto 24px; display: grid; place-items: center; }
.login-signal span { position: absolute; top: 50%; right: 50%; bottom: 50%; left: 50%; border: 1px solid rgba(34,211,238,.32); border-radius: 50%; transform: translate(-50%,-50%); animation: login-ring 3s ease-out infinite; }
.login-signal span:nth-child(2) { animation-delay: 1s; }.login-signal span:nth-child(3) { animation-delay: 2s; }
.login-signal i { color: var(--journey-cyan); font-style: normal; font-size: 24px; text-shadow: 0 0 22px var(--journey-cyan); }
@keyframes login-ring { from { width: 20px; height: 20px; opacity: .8; } to { width: 130px; height: 130px; opacity: 0; } }
.journey-login h1 { margin: 0; font: 600 clamp(34px, 8vw, 58px)/.98 "Space Grotesk", sans-serif; letter-spacing: -.055em; }
.login-copy { max-width: 430px; margin: 18px auto 28px; color: var(--journey-muted); font-size: 14px; line-height: 1.7; }
.login-form { display: grid; gap: 10px; text-align: left; }
.login-form label { color: #bcc6d4; font-size: 12px; font-weight: 650; }
.login-form input { min-height: 50px; padding: 0 15px; border: 1px solid var(--journey-line); border-radius: 12px; background: #090d14; color: var(--journey-text); font-size: 14px; }
.login-form button, .empty-state a { min-height: 50px; border: 0; border-radius: 12px; background: linear-gradient(100deg,var(--journey-cyan),var(--journey-green)); color: #f7fcff; font-weight: 800; cursor: pointer; }
.login-form button:hover,.empty-state a:hover { filter: brightness(1.08); }.login-form button:active,.empty-state a:active { filter: brightness(.9); }.login-form button:focus-visible,.empty-state a:focus-visible { outline: 2px solid #f7fcff; outline-offset: 3px; }.login-form button:disabled,.empty-state a[aria-disabled="true"] { background: #102637; color: #718096; cursor: not-allowed; }
.form-error { color: #fda4af; font-size: 12px; }.privacy-note { margin: 18px 0 0; color: #697386; font-size: 11px; line-height: 1.6; }

.journey-hero { min-height: 610px; display: grid; grid-template-columns: minmax(0,1.05fr) minmax(360px,.95fr); gap: 64px; align-items: center; }
.hero-copy h1 { margin: 0; max-width: 720px; font: 580 clamp(48px, 7vw, 88px)/.9 "Space Grotesk", sans-serif; letter-spacing: -.065em; }
.hero-copy h1 em { color: var(--journey-green); font-style: normal; }
.hero-copy > p:last-of-type { max-width: 600px; margin: 24px 0 0; color: #a7b0bf; font-size: 16px; line-height: 1.75; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.hero-actions a { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; padding: 0 17px; border: 1px solid var(--journey-line); border-radius: 11px; color: #c8d2de; text-decoration: none; font-size: 12px; font-weight: 750; }
.hero-actions .primary-action { border-color: var(--journey-green); background: rgba(52,211,153,.1); color: #b7f7dd; }
.proof-constellation { position: relative; width: min(100%, 480px); justify-self: end; aspect-ratio: 1; display: grid; place-items: center; }
.proof-constellation::before { content: ""; position: absolute; top: 14%; right: 14%; bottom: 14%; left: 14%; border-radius: 50%; background: radial-gradient(circle, rgba(52,211,153,.12), rgba(34,211,238,.035) 45%, transparent 70%); filter: blur(12px); }
.proof-constellation svg { position: relative; width: 100%; height: 100%; overflow: visible; }
.orbit { fill: none; stroke: rgba(117,135,157,.19); stroke-width: 1; stroke-dasharray: 2 7; }
.orbit-two { stroke: rgba(34,211,238,.18); }.orbit-three { stroke: rgba(52,211,153,.12); }
.impact-light { transform-box: fill-box; transform-origin: center; animation: impact-arrive 700ms both; animation-delay: var(--delay); }
.impact-light.complete { fill: var(--journey-green); filter: drop-shadow(0 0 6px rgba(52,211,153,.9)); }
.impact-light.active { fill: var(--journey-amber); filter: drop-shadow(0 0 5px rgba(245,158,11,.72)); }
.impact-light.cancelled { fill: #6b7280; }
@keyframes impact-arrive { from { opacity: 0; transform: scale(.2); } to { opacity: 1; transform: scale(1); } }
.constellation-core { position: absolute; display: grid; place-items: center; text-align: center; }
.constellation-core strong { color: var(--journey-green); font: 650 64px/1 "Space Grotesk", sans-serif; letter-spacing: -.07em; }
.constellation-core span { color: #d7efe5; font-size: 12px; font-weight: 750; text-transform: uppercase; letter-spacing: .13em; }
.constellation-core small { margin-top: 6px; color: var(--journey-muted); font-size: 10px; }
.proof-constellation > p { position: absolute; bottom: 2%; width: 100%; margin: 0; color: #697386; text-align: center; font-size: 10px; }

.impact-ledger { display: grid; grid-template-columns: repeat(5,1fr); border: 1px solid var(--journey-line); border-radius: 20px; overflow: hidden; background: var(--journey-panel); }
.impact-ledger article { min-width: 0; padding: 22px 20px; border-right: 1px solid var(--journey-line); }
.impact-ledger article:last-child { border-right: 0; }.impact-ledger span,.impact-ledger small { display: block; color: var(--journey-muted); font-size: 10px; }
.impact-ledger span { text-transform: uppercase; letter-spacing: .11em; }.impact-ledger strong { display: block; margin: 7px 0 4px; font: 620 34px/1 "Space Grotesk", sans-serif; }
.impact-ledger .complete strong { color: var(--journey-green); }
.impact-kinds,.project-field,.journey-timeline,.certificate-vault { margin-top: 112px; }
.kind-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(230px,1fr)); gap: 12px; }
.kind-grid article { display: grid; grid-template-columns: auto 1fr; gap: 15px; padding: 20px; border: 1px solid var(--journey-line); border-radius: 16px; background: var(--journey-panel); }
.kind-icon { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: rgba(34,211,238,.07); font-size: 24px; }
.kind-grid b { display: block; color: #cbd5e1; font-size: 12px; }.kind-grid strong { display: block; margin-top: 6px; font: 650 30px/1 "Space Grotesk", sans-serif; }
.kind-grid p { margin: 7px 0 0; color: var(--journey-muted); font-size: 10px; }

.coordinate-chart { position: relative; border: 1px solid var(--journey-line); border-radius: 22px; overflow: hidden; background: #090d14; }
.coordinate-caption { margin: 0 0 9px; color: #697386; font: 700 9px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .12em; }
.coordinate-chart svg { display: block; width: 100%; height: auto; }
/* Tap label for a project point. The SVG <title> that used to carry this is a desktop hover
   tooltip and does nothing at all on a touch screen, which is why tapping a point showed nothing.
   <title> stays for hover and screen readers; this is what a finger gets. */
.point-callout { position: absolute; z-index: 3; transform: translate(-50%, calc(-100% - 14px));
  max-width: min(260px, 72%); padding: 8px 11px; border-radius: 12px;
  border: 1px solid rgba(52,211,153,.45); background: rgba(6,16,26,.95);
  box-shadow: 0 10px 26px rgba(0,0,0,.55); pointer-events: none; }
.point-callout[hidden] { display: none; }
/* Flipped under the point when there is no room above it. */
.point-callout.below { transform: translate(-50%, 14px); }
.point-callout b { display: block; color: #eaf6f1; font: 700 12px/1.3 inherit; }
.point-callout .place { display: block; margin-top: 2px; color: #9fb5c6; font-size: 10.5px; }
.point-callout .coord { display: block; margin-top: 3px; color: #6ee7b7; font: 10px ui-monospace, monospace; }
.project-point { cursor: pointer; }
.project-point.selected .point-core { stroke: #eaf6f1; stroke-width: 2; }
/* Coastlines sit under the grid and the points: filled just enough to read as land, outlined just
   enough to find a coast, and never bright enough to compete with a green project point. */
.world-outline path { fill: rgba(125,155,185,.10); stroke: rgba(141,175,205,.34); stroke-width: .6; stroke-linejoin: round; }
.grid-line { stroke: rgba(141,152,170,.11); stroke-width: 1; }.equator { stroke: rgba(34,211,238,.26); stroke-width: 1; stroke-dasharray: 5 8; }
.point-halo { fill: rgba(52,211,153,.1); stroke: rgba(52,211,153,.25); animation: point-breathe 3s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.point-core { fill: var(--journey-green); filter: drop-shadow(0 0 5px rgba(52,211,153,.9)); }.project-point text { fill: #a7f3d0; font: 700 10px ui-monospace, monospace; }
@keyframes point-breathe { 50% { transform: scale(1.35); opacity: .4; } }
/* These were designed against an empty grid. With coastlines behind them they sit on top of land,
   so they now carry their own dark backing and a slightly brighter ink, which keeps them readable
   over Greenland or the Pacific without becoming a second thing competing with the points. */
.axis-label { position: absolute; color: #93a4b8; font: 9px ui-monospace, monospace;
  padding: 2px 6px; border-radius: 7px; background: rgba(6,12,22,.72); backdrop-filter: blur(2px); }.axis-label.north { top: 10px; left: 16px; }.axis-label.south { bottom: 8px; left: 16px; }.axis-label.west { left: 12px; top: 50%; }.axis-label.east { right: 12px; top: 50%; }
.project-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 10px; margin-top: 12px; }
.project-anchor { display: none; }
.project-list article { overflow: hidden; border: 1px solid var(--journey-line); border-radius: 14px; background: var(--journey-panel); }.project-gallery { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2px; background: #090d14; }.impact-photo { display: block; width: 100%; padding: 0; border: 0; border-radius: 0; overflow: hidden; background: #090d14; cursor: zoom-in; }.impact-photo img { display: block; width: 100%; height: 100%; object-fit: cover; background: #090d14; transition: transform .28s ease,filter .28s ease; }.impact-photo:hover img { transform: scale(1.025); filter: saturate(1.08); }.impact-photo:focus-visible { position: relative; z-index: 2; outline: 2px solid var(--journey-cyan); outline-offset: -3px; }.project-gallery .impact-photo { aspect-ratio: 16/10; }.project-gallery .impact-photo:first-child:nth-last-child(n+2) { grid-column: 1 / -1; aspect-ratio: 16/8; }.project-list .project-info { padding: 16px; }.project-list span { color: var(--journey-green); font: 700 9px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .1em; }.project-list b { display: block; margin-top: 6px; font-size: 13px; }.project-list p,.project-list small,.project-list em { display: block; margin: 5px 0 0; color: var(--journey-muted); font-size: 10px; line-height: 1.5; }.project-list em { color: #8290a4; font-style: normal; }
.project-card-map { padding: 0 16px 16px; }.project-card-map > .map-toggle { width: 100%; min-height: 44px; border: 1px solid rgba(34,211,238,.36); border-radius: 10px; background: rgba(34,211,238,.07); color: var(--journey-cyan); font-size: 10px; font-weight: 750; cursor: pointer; }.project-card-map > .embedded-map { margin-top: 10px; }

.timeline-filters { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 14px; scrollbar-width: none; }.timeline-filters::-webkit-scrollbar { display: none; }
.timeline-filters button { flex: none; min-height: 44px; padding: 0 14px; border: 1px solid var(--journey-line); border-radius: 999px; background: transparent; color: var(--journey-muted); font-size: 11px; font-weight: 750; cursor: pointer; }
.timeline-filters button span { color: #d5dde8; margin-left: 5px; }.timeline-filters button.active { border-color: rgba(34,211,238,.48); color: var(--journey-cyan); background: rgba(34,211,238,.07); }
.timeline-pagination-tools { display: flex; align-items: center; justify-content: flex-end; gap: 9px; margin: -5px 0 14px; color: var(--journey-muted); font-size: 10px; }
.timeline-pagination-tools select { min-height: 40px; padding: 0 32px 0 11px; border: 1px solid var(--journey-line); border-radius: 10px; background: #0a0f17; color: var(--journey-text); font: 700 11px ui-monospace,monospace; }
.donation-note { margin: -2px 0 14px; padding: 10px 12px; border-left: 2px solid rgba(52,211,153,.45); color: #8290a4; background: rgba(52,211,153,.035); font-size: 10px; line-height: 1.55; }
.timeline-list { display: grid; gap: 10px; }.timeline-card { border: 1px solid var(--journey-line); border-radius: 17px; overflow: hidden; background: var(--journey-panel); }.timeline-card[hidden] { display: none; }
.timeline-card.deep-link-focus { border-color: rgba(34,211,238,.7); box-shadow: 0 0 0 1px rgba(34,211,238,.14),0 18px 54px rgba(34,211,238,.08); }
.timeline-summary { width: 100%; min-height: 78px; display: grid; grid-template-columns: 42px minmax(0,1fr) auto 18px; gap: 13px; align-items: center; padding: 12px 16px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.timeline-number { color: #5d6879; font: 10px ui-monospace,monospace; }.timeline-name { min-width: 0; display: flex; gap: 11px; align-items: center; }.timeline-name i { font-style: normal; font-size: 22px; }.timeline-name b,.timeline-name small { display: block; }.timeline-name b { font-size: 13px; }.timeline-name small { margin-top: 4px; color: var(--journey-muted); font-size: 9px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.state-pill { padding: 5px 8px; border-radius: 999px; background: rgba(245,158,11,.09); color: #fcd34d; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; white-space: nowrap; }.state-pill.completed { color: #a7f3d0; background: rgba(52,211,153,.1); }.state-pill.awaiting_sync { color: #cbd5e1; background: rgba(148,163,184,.1); }
.summary-chevron { width: 8px; height: 8px; border-right: 1px solid #8d98aa; border-bottom: 1px solid #8d98aa; transform: rotate(45deg); transition: transform .2s ease; }.timeline-summary[aria-expanded="true"] .summary-chevron { transform: rotate(225deg); }
.timeline-detail { padding: 4px 20px 22px 70px; }.timeline-detail[hidden] { display: none; }.journey-notice { margin: 0 0 14px; padding: 10px 12px; border-radius: 10px; background: rgba(245,158,11,.07); color: #f8d995; font-size: 10px; line-height: 1.55; }.journey-notice.warning { color: #cbd5e1; background: rgba(148,163,184,.08); }
.chain-list { list-style: none; margin: 0; padding: 0; }.chain-list li { position: relative; display: grid; grid-template-columns: 13px 1fr; gap: 10px; min-height: 54px; }.chain-list li:not(:last-child)::before { content: ""; position: absolute; left: 5px; top: 12px; bottom: -2px; width: 1px; background: linear-gradient(var(--journey-green), var(--journey-line)); }.chain-mark { position: relative; z-index: 1; width: 11px; height: 11px; margin-top: 3px; border: 2px solid var(--journey-panel); border-radius: 50%; background: var(--journey-green); box-shadow: 0 0 0 2px rgba(52,211,153,.15); }.chain-list b { display: block; font-size: 11px; }.chain-list p { margin: 4px 0 0; color: var(--journey-muted); font-size: 10px; line-height: 1.55; }.chain-separator { color: #5f6a7c; }
.project-proof { margin-top: 10px; padding: 14px; border: 1px solid rgba(52,211,153,.18); border-radius: 12px; background: rgba(52,211,153,.04); }.project-proof span { color: var(--journey-green); font: 700 9px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .1em; }.project-proof b { display: block; margin-top: 6px; font-size: 12px; }.project-proof p,.project-proof small { display: block; margin: 5px 0 0; color: var(--journey-muted); font-size: 10px; }
.project-proof-images { display: grid; grid-template-columns: 1.45fr 1fr; grid-template-rows: repeat(2,78px); gap: 5px; margin: -6px -6px 13px; overflow: hidden; border-radius: 9px; }.project-proof-images .impact-photo:first-child { grid-row: 1 / 3; }.project-proof-images .impact-photo:only-child { grid-column: 1 / 3; }
.proof-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 13px; }.proof-actions a,.proof-actions button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 12px; border: 1px solid var(--journey-line); border-radius: 10px; background: transparent; color: var(--journey-cyan); text-decoration: none; font-size: 10px; font-weight: 750; cursor: pointer; margin: 0; }
.embedded-map { margin-top: 12px; border: 1px solid var(--journey-line); border-radius: 13px; overflow: hidden; background: #080c12; }.embedded-map[hidden] { display: none; }.embedded-map iframe { display: block; width: 100%; height: 320px; border: 0; }.embedded-map p { margin: 0; padding: 9px 11px; color: #6f7a8d; font-size: 9px; line-height: 1.5; }.sync-note { margin: 13px 0 0; color: #5f6a7c; font-size: 9px; line-height: 1.5; }.filter-empty { color: var(--journey-muted); font-size: 12px; }
.timeline-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 20px; }.timeline-pager[hidden] { display: none; }.timeline-pager button { min-height: 44px; padding: 0 15px; border: 1px solid var(--journey-line); border-radius: 10px; background: transparent; color: var(--journey-cyan); font-size: 10px; font-weight: 750; cursor: pointer; }.timeline-pager button:disabled { opacity: .35; cursor: default; }.timeline-pager .page-info { color: var(--journey-muted); font: 700 10px ui-monospace,monospace; }

.certificate-vault { display: grid; grid-template-columns: .75fr 1.25fr; gap: 50px; padding: 34px; border: 1px solid rgba(52,211,153,.24); border-radius: 24px; background: radial-gradient(circle at 0 0,rgba(52,211,153,.1),transparent 42%),var(--journey-panel); }.certificate-vault-content { min-width: 0; }.certificate-filters { display: flex; gap: 7px; margin-bottom: 10px; padding-bottom: 3px; overflow-x: auto; scrollbar-width: none; }.certificate-filters::-webkit-scrollbar { display: none; }.certificate-filters button { flex: none; min-height: 40px; padding: 0 11px; border: 1px solid var(--journey-line); border-radius: 999px; color: var(--journey-muted); background: transparent; font-size: 9px; font-weight: 750; cursor: pointer; }.certificate-filters button span { margin-left: 4px; color: #d5dde8; }.certificate-filters button.active { border-color: rgba(52,211,153,.45); color: var(--journey-green); background: rgba(52,211,153,.07); }.certificate-links { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }.certificate-links a { min-height: 94px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-content: center; padding: 14px; border: 1px solid var(--journey-line); border-radius: 13px; color: inherit; text-decoration: none; background: rgba(7,10,16,.54); }.certificate-links a[hidden] { display: none; }.certificate-links span,.certificate-links b,.certificate-links small { display: block; min-width: 0; }.certificate-links span { color: var(--journey-green); font: 700 9px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .07em; white-space: normal; }.certificate-links b { margin-top: 7px; font-size: 12px; }.certificate-links small { margin-top: 4px; color: var(--journey-muted); font-size: 9px; }.certificate-links i { grid-column: 2; grid-row: 1 / 4; align-self: center; color: var(--journey-cyan); font-style: normal; }.certificate-empty { margin: 12px 0 0; color: var(--journey-muted); font-size: 10px; line-height: 1.5; }
.impact-lightbox { position: fixed; z-index: 12000; top: 0; right: 0; bottom: 0; left: 0; display: grid; place-items: center; padding: max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left)); background: rgba(2,5,9,.94); backdrop-filter: blur(16px); }.impact-lightbox[hidden] { display: none; }.impact-lightbox-shell { position: relative; width: min(100%,1440px); height: 100%; display: grid; grid-template-columns: 58px minmax(0,1fr) 58px; grid-template-rows: minmax(0,1fr) auto; align-items: center; }.impact-lightbox-stage { grid-column: 2; min-width: 0; min-height: 0; height: 100%; display: grid; place-items: center; overflow: hidden; }.impact-lightbox-stage img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 24px 60px rgba(0,0,0,.5)); }.impact-lightbox-close,.impact-lightbox-step { border: 1px solid rgba(255,255,255,.18); color: #f8fafc; background: rgba(8,13,21,.68); backdrop-filter: blur(10px); cursor: pointer; }.impact-lightbox-close { position: absolute; z-index: 2; top: 0; right: 0; width: 48px; height: 48px; border-radius: 50%; font: 300 30px/1 sans-serif; }.impact-lightbox-step { width: 48px; height: 64px; justify-self: center; border-radius: 999px; font: 300 38px/1 sans-serif; }.impact-lightbox-step[hidden] { display: none; }.impact-lightbox-proof { grid-column: 2; display: flex; justify-content: space-between; gap: 20px; align-items: end; padding: 16px 0 14px; border-top: 1px solid rgba(255,255,255,.12); }.impact-lightbox-proof span,.impact-lightbox-proof b { display: block; }.impact-lightbox-proof span { color: var(--journey-cyan); font: 700 9px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .12em; }.impact-lightbox-proof b { margin-top: 6px; font-size: 13px; }.impact-lightbox-count { color: #d6deea; font: 700 11px ui-monospace,monospace; white-space: nowrap; }.impact-lightbox-open { overflow: hidden; }
.empty-state { margin: 50px auto 0; max-width: 720px; padding: 38px; border: 1px solid var(--journey-line); border-radius: 22px; background: radial-gradient(circle at 50% 0,rgba(34,211,238,.07),transparent 45%),var(--journey-panel); text-align: center; }.empty-state > span { color: var(--journey-amber); font: 700 10px ui-monospace,monospace; text-transform: uppercase; letter-spacing: .1em; }.empty-state h2 { margin: 12px 0 0; font: 600 34px/1.05 "Space Grotesk",sans-serif; }.empty-state > p { max-width: 590px; margin: 14px auto 0; color: var(--journey-muted); font-size: 13px; line-height: 1.7; }.empty-steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; margin: 24px 0 0; padding: 0; list-style: none; counter-reset: first-impact; text-align: left; }.empty-steps li { position: relative; min-width: 0; padding: 16px 13px 14px; border: 1px solid var(--journey-line); border-radius: 13px; background: rgba(1,8,21,.72); counter-increment: first-impact; }.empty-steps li::before { content: counter(first-impact,decimal-leading-zero); display: block; margin-bottom: 10px; color: var(--journey-cyan); font: 700 9px ui-monospace,monospace; letter-spacing: .1em; }.empty-steps b,.empty-steps small { display: block; }.empty-steps b { color: #dce5ef; font-size: 11px; }.empty-steps small { margin-top: 6px; color: var(--journey-muted); font-size: 9px; line-height: 1.55; }.empty-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 9px; margin-top: 22px; }.empty-state .empty-actions a { min-height: 46px; display: inline-flex; align-items: center; padding: 0 16px; border-radius: 12px; background: linear-gradient(100deg,var(--journey-cyan),var(--journey-green)); color: #f7fcff; text-decoration: none; font-size: 12px; font-weight: 800; }.empty-state .empty-actions a.secondary { border: 1px solid var(--journey-line); background: transparent; color: #c8d2de; }
.journey-footer { margin-top: 110px; padding-top: 24px; border-top: 1px solid var(--journey-line); display: flex; justify-content: space-between; gap: 30px; align-items: flex-start; }.journey-footer > p { max-width: 650px; margin: 0; color: #697386; font-size: 10px; line-height: 1.7; }.journey-footer > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 12px; }.journey-footer a,.journey-footer button { padding: 0; border: 0; background: none; color: #8d98aa; font-size: 10px; text-decoration: none; cursor: pointer; }

@media (max-width: 820px) {
  .journey-hero { min-height: auto; grid-template-columns: 1fr; gap: 20px; padding-top: 34px; }.proof-constellation { justify-self: center; width: min(100%,430px); }.impact-ledger { grid-template-columns: repeat(2,1fr); }.impact-ledger article { border-bottom: 1px solid var(--journey-line); }.impact-ledger article:nth-child(2n) { border-right: 0; }.impact-ledger article:last-child { grid-column: 1 / -1; border-bottom: 0; }.certificate-vault { grid-template-columns: 1fr; gap: 24px; }
}
@media (max-width: 520px) {
  .journey-page { width: min(100% - 28px,1160px); padding-top: 50px; }.journey-login { padding: 30px 20px; border-radius: 22px; }.hero-copy h1 { font-size: clamp(45px,15vw,66px); }.hero-copy > p:last-of-type { font-size: 14px; }.proof-constellation { margin-top: -12px; }.constellation-core strong { font-size: 52px; }.impact-ledger article { padding: 18px 15px; }.impact-ledger strong { font-size: 29px; }.impact-kinds,.project-field,.journey-timeline,.certificate-vault { margin-top: 78px; }.timeline-summary { grid-template-columns: minmax(0,1fr) 18px; grid-template-rows: auto auto; gap: 7px 10px; padding: 14px 12px; }.timeline-number { display: none; }.timeline-name { grid-column: 1; grid-row: 1; }.state-pill { grid-column: 1; grid-row: 2; justify-self: start; margin-left: 33px; }.summary-chevron { grid-column: 2; grid-row: 1 / 3; }.timeline-detail { padding: 4px 13px 18px; }.timeline-name small { max-width: min(220px,calc(100vw - 112px)); }.embedded-map iframe { height: 260px; }.certificate-vault { padding: 24px 18px; }.certificate-links { grid-template-columns: 1fr; }.journey-footer { flex-direction: column; }.journey-footer > div { justify-content: flex-start; }
  .timeline-pagination-tools { justify-content: space-between; }.empty-state { padding: 28px 17px; }.empty-steps { grid-template-columns: 1fr; }.empty-actions { display: grid; }.empty-state .empty-actions a { justify-content: center; }
  .impact-lightbox { padding: max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom)); }.impact-lightbox-shell { grid-template-columns: 44px minmax(0,1fr) 44px; grid-template-rows: minmax(0,1fr) auto; }.impact-lightbox-close { top: 2px; right: 2px; width: 46px; height: 46px; }.impact-lightbox-step { width: 40px; height: 54px; font-size: 32px; }.impact-lightbox-proof { grid-column: 1 / -1; margin: 0 6px; padding: 14px 0 12px; }.impact-lightbox-proof b { max-width: 240px; }
}

/* V8 verified-impact instrument deck. The timeline stays first, while the complete audit,
   project, gallery and certificate sections remain available below it. */
body { background: #000614; color: #f2f6fa; }
body .blenav-toggle {
  top: max(18px, env(safe-area-inset-top)); bottom: auto; left: 14px; width: 44px; height: 44px;
  border: 0; background: transparent; border-radius: 0; font-size: 0; backdrop-filter: none;
}
body .blenav-toggle::before,
body .blenav-toggle::after { content: ""; position: absolute; left: 10px; width: 24px; height: 2px; border-radius: 3px; background: #e8f3f8; box-shadow: 0 7px 0 #e8f3f8; }
body .blenav-toggle::before { top: 13px; }
body .blenav-toggle::after { top: 27px; box-shadow: none; }
body .blenav-menu { top: calc(max(18px, env(safe-area-inset-top)) + 44px); bottom: auto; }
.login-signal i img { width: 30px; height: 30px; object-fit: contain; }
.journey-page { width: min(calc(100% - 24px), 720px); padding: calc(72px + env(safe-area-inset-top)) 0 calc(118px + env(safe-area-inset-bottom)); }
.journey-app-brand { position: absolute; top: calc(20px + env(safe-area-inset-top)); left: 50%; width: min(calc(100% - 120px), 260px); transform: translateX(-50%); text-align: center; pointer-events: none; }
.journey-app-brand strong { font: 700 24px/1 "Space Grotesk", sans-serif; letter-spacing: -.04em; color: #f4f8fb; }
.journey-app-brand strong span { color: #22d3ee; }
.journey-app-brand i { position: fixed; right: 18px; top: calc(22px + env(safe-area-inset-top)); width: 24px; height: 26px; display: flex; align-items: end; gap: 3px; }
.journey-app-brand i b { width: 4px; border-radius: 4px; background: #34d399; box-shadow: 0 0 8px rgba(52,211,153,.46); }
.journey-app-brand i b:nth-child(1) { height: 8px; }.journey-app-brand i b:nth-child(2) { height: 15px; }.journey-app-brand i b:nth-child(3) { height: 23px; background: #d7f43f; }
.journey-hero { display: flex; min-height: 0; padding: 0 0 14px; }
.journey-hero .hero-copy { display: flex; align-items: center; gap: 14px; max-width: none; }
.journey-hero .hero-copy > div { flex: 1 1 auto; min-width: 0; }
.journey-back { flex: 0 0 48px; width: 48px; height: 48px; overflow: hidden; color: transparent; border: 1px solid #1a3748; border-radius: 10px; background: #081525; position: relative; }
.journey-back::before { content: ""; position: absolute; left: 19px; top: 15px; width: 11px; height: 11px; border-left: 2px solid #c8d4df; border-bottom: 2px solid #c8d4df; transform: rotate(45deg); }
.hero-copy h1 { margin: 0; color: #f4f8fb; font-size: clamp(23px, 7.5vw, 29px); line-height: 1.08; letter-spacing: -.035em; }
.hero-copy > div > p { margin: 5px 0 0; color: #8f9eb0; font-size: 13px; line-height: 1.3; }
.hero-actions { display: none; }
.journey-timeline { margin-top: 0; }
.journey-timeline > .section-heading { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.timeline-filters { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 0; margin: 0 0 14px; padding: 4px; border: 1px solid #1a3748; border-radius: 13px; background: #081525; overflow: visible; }
.timeline-filters button { display: flex; min-width: 0; min-height: 48px; padding: 5px 6px; gap: 4px; align-items: center; justify-content: center; border: 0; border-right: 1px solid rgba(64,87,115,.36); border-radius: 9px; background: transparent; color: #d6dfe7; font: 500 10.5px/1.1 "Space Grotesk", sans-serif; white-space: nowrap; }
.timeline-filters button:last-child { border-right: 0; }
.timeline-filters button img { width: 21px; height: 21px; object-fit: contain; flex: 0 0 auto; opacity: .72; filter: grayscale(.8); }
.timeline-filters button span { display: none; }
.timeline-filters button.active { border: 1px solid #22d3ee; background: rgba(34,211,238,.08); color: #22d3ee; box-shadow: inset 0 0 14px rgba(34,211,238,.12), 0 0 8px rgba(34,211,238,.18); }
.timeline-filters button.active img { opacity: 1; filter: none; }
.timeline-pagination-tools { margin: 0 0 11px; justify-content: flex-end; }
.timeline-pagination-tools label { font-size: 10px; color: #8291a4; }
.timeline-pagination-tools select { min-height: 38px; border-color: #1a3748; background: #081525; }
.timeline-card { position: relative; margin: 0 0 10px; padding: 13px 12px 12px 20px; border: 1px solid #1a3748; border-left: 0; border-radius: 14px; background: linear-gradient(135deg,#081525 0%,#010815 100%); box-shadow: none; overflow: hidden; }
.timeline-card::before { content: ""; position: absolute; top: 0; right: auto; bottom: 0; left: 0; width: 5px; background: #34d399; box-shadow: 0 0 14px rgba(52,211,153,.62); }
.timeline-card[data-journey-state="in_motion"]::before { background: #f59e0b; box-shadow: 0 0 14px rgba(245,158,11,.55); }
.timeline-card[data-journey-state="upcoming"]::before { background: #22d3ee; box-shadow: 0 0 14px rgba(34,211,238,.55); }
.journey-card-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.timeline-number { color: #22d3ee; font: 650 10px/1 "Space Grotesk",sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.state-pill { flex: 0 0 auto; padding: 6px 10px; border: 1px solid rgba(52,211,153,.35); border-radius: 999px; background: rgba(52,211,153,.06); color: #53e2ad; font: 700 9px/1 "Space Grotesk",sans-serif; text-transform: uppercase; }
.state-pill.in_motion { border-color: rgba(245,158,11,.34); background: rgba(245,158,11,.06); color: #fbbf24; }
.state-pill.upcoming { border-color: rgba(34,211,238,.34); background: rgba(34,211,238,.06); color: #67e8f9; }
.timeline-name { display: flex; align-items: center; gap: 12px; margin: 8px 0 7px; }
.timeline-name > img { width: 50px; height: 50px; object-fit: contain; flex: 0 0 50px; }
.timeline-name b { display: block; color: #f4f8fb; font: 700 clamp(17px,5.2vw,21px)/1.12 "Space Grotesk",sans-serif; letter-spacing: -.02em; }
.timeline-name small { display: block; margin-top: 3px; color: #8392a5; font-size: 10.5px; }
.journey-facts { display: flex; align-items: center; gap: 9px; min-width: 0; margin: 6px 0 9px; color: #8493a6; font-size: 9.5px; }
.journey-facts time { flex: 1 1 auto; min-width: 0; }
.journey-facts strong { flex: 0 1 auto; color: #53e2ad; font-weight: 650; text-align: right; }
.timeline-summary { display: flex; width: 100%; min-height: 43px; padding: 8px 13px; align-items: center; justify-content: center; gap: 8px; border: 1px solid #2a566d; border-radius: 8px; background: #091528; color: #67e8f9; font: 600 11px/1.2 "Space Grotesk",sans-serif; transition: background .12s ease,border-color .12s ease; }
.timeline-summary:hover { border-color: #22d3ee; background: #0b1c31; }.timeline-summary:active { background: #06111f; }.timeline-summary:focus-visible { outline: 2px solid #f7fcff; outline-offset: 2px; }.timeline-summary:disabled { border-color: #173043; background: #06101d; color: #718096; cursor: not-allowed; }
.summary-chevron { position: absolute; right: 15px; width: 8px; height: 8px; border-right: 2px solid #9cafc0; border-bottom: 2px solid #9cafc0; transform: rotate(45deg); transition: transform .18s ease; }
.timeline-summary[aria-expanded="true"] .summary-chevron { transform: rotate(225deg); }
/* A live impact session is time critical, so it sits above the compact proof grid and is the
   first thing on the card, full width, instead of being folded away inside the detail panel. */
.journey-live { display: flex; align-items: center; gap: 10px; margin-top: 7px; padding: 10px 12px; border: 1px solid #1a3748; border-radius: 10px; background: #081525; color: #a5f3fc; text-decoration: none; }
.journey-live.live, .journey-live.now { border-color: #22d3ee; background: linear-gradient(135deg, rgba(34,211,238,.13), rgba(8,21,37,.9)); }
.journey-live.ended { color: #94a3b8; border-style: dashed; }
.journey-live-icon { flex: 0 0 26px; width: 26px; height: 26px; color: #22d3ee; }
.journey-live.ended .journey-live-icon { color: #64748b; }
.journey-live-icon svg { width: 100%; height: 100%; display: block; }
.journey-live-text { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.journey-live-text b { font: 600 12px/1.25 "Space Grotesk",sans-serif; color: #f7fcff; }
.journey-live.ended .journey-live-text b { color: #cbd5e1; }
.journey-live-text time { font: 600 11px/1.2 "Space Grotesk",sans-serif; color: #22d3ee; }
.journey-live-text small { font: 400 10px/1.3 "Space Grotesk",sans-serif; color: #94a3b8; }
a.journey-live:hover { border-color: #22d3ee; }
a.journey-live:focus-visible { outline: 2px solid #f7fcff; outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) {
  .journey-live.now .journey-live-icon { animation: journeyLivePulse 1.8s ease-in-out infinite; }
}
@keyframes journeyLivePulse { 0%,100% { opacity: 1; } 50% { opacity: .45; } }
.journey-quick-actions { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; margin-top: 7px; }
.journey-quick-actions a,.journey-quick-actions button { min-width: 0; min-height: 45px; padding: 5px 4px; display: flex; align-items: center; justify-content: center; gap: 4px; border: 1px solid #1a3748; border-radius: 8px; background: #081525; color: #67e8f9; font: 500 9px/1.05 "Space Grotesk",sans-serif; text-align: left; text-decoration: none; }
.journey-quick-actions a:hover,.journey-quick-actions button:hover { border-color: #22d3ee; }.journey-quick-actions a:focus-visible,.journey-quick-actions button:focus-visible { outline: 2px solid #f7fcff; outline-offset: 2px; }.journey-quick-actions a:active,.journey-quick-actions button:active { background: #06111f; }.journey-quick-actions button:disabled { color: #718096; border-color: #173043; cursor: not-allowed; }
.journey-quick-actions img { width: 22px; height: 22px; flex: 0 0 22px; object-fit: contain; }
.journey-quick-actions .impact-photo img { width: 22px; height: 22px; border: 0; border-radius: 0; background: transparent; object-fit: contain; }
.timeline-detail { margin-top: 10px; padding: 11px 2px 2px; border-top: 1px solid rgba(73,99,127,.28); }
.impact-kinds .kind-icon { width: 54px; height: 54px; object-fit: contain; }
.certificate-links a i { display: none; }
.impact-lightbox-close::before,.impact-lightbox-close::after { content: ""; position: absolute; left: 13px; top: 22px; width: 22px; height: 2px; border-radius: 2px; background: #e9f6fb; transform: rotate(45deg); }
.impact-lightbox-close::after { transform: rotate(-45deg); }
.impact-lightbox-step::before { content: ""; display: block; width: 13px; height: 13px; margin: auto; border-left: 2px solid #e9f6fb; border-bottom: 2px solid #e9f6fb; transform: rotate(45deg); }
.impact-lightbox-step.next::before { transform: rotate(225deg); }
.journey-tabbar { position: fixed; z-index: 1800; left: 50%; bottom: 0; width: min(720px,100%); transform: translateX(-50%); min-height: 76px; padding: 7px max(8px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left)); display: grid; grid-template-columns: repeat(5,1fr); align-items: end; border: 1px solid #1a3748; border-bottom: 0; border-radius: 14px 14px 0 0; background: rgba(0,6,20,.97); box-shadow: 0 -8px 30px rgba(0,0,0,.28); backdrop-filter: blur(14px); }
.journey-tabbar a { min-width: 0; min-height: 55px; display: flex; flex-direction: column; align-items: center; justify-content: end; gap: 3px; color: #8291a4; font: 500 9px/1 "Space Grotesk",sans-serif; text-decoration: none; }
.journey-tabbar img { width: 27px; height: 27px; object-fit: contain; opacity: .52; filter: grayscale(1); }
.journey-tabbar a.active { color: #22d3ee; }.journey-tabbar a.active img { opacity: 1; filter: none; }
.journey-tabbar a.center { align-self: start; width: 64px; height: 64px; min-height: 64px; margin: -25px auto 0; justify-content: center; border: 1px solid #22d3ee; border-radius: 50%; background: #0a1a2b; box-shadow: 0 0 18px rgba(34,211,238,.55), inset 0 0 14px rgba(52,211,153,.12); }
.journey-tabbar a.center img { width: 36px; height: 36px; opacity: 1; filter: none; }
.journey-footer { padding-bottom: 30px; }

@media (max-width: 350px) {
  .journey-page { width: min(calc(100% - 16px),720px); }
  .timeline-filters { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .timeline-filters button:nth-child(2) { border-right: 0; }
  .timeline-filters button:nth-child(-n+2) { border-bottom: 1px solid rgba(64,87,115,.36); }
  .journey-quick-actions { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .journey-facts { align-items: flex-start; flex-direction: column; gap: 3px; }
  .journey-facts strong { text-align: left; }
  .journey-tabbar a { font-size: 8px; }.journey-tabbar img { width: 24px; height: 24px; }
}
@media (orientation: landscape) and (max-height: 520px) {
  .journey-tabbar { min-height: 60px; }.journey-tabbar a { min-height: 44px; }.journey-tabbar a.center { width: 52px; height: 52px; min-height: 52px; margin-top: -18px; }
  .journey-tabbar a.center img { width: 30px; height: 30px; }
}
@media (prefers-reduced-motion: reduce) {
  .summary-chevron { transition: none; }
}
@media (prefers-reduced-motion: reduce) {
  .impact-light,.point-halo,.login-signal span { animation: none !important; }.summary-chevron,.impact-photo img { transition: none; }
}
