:root {
  --ink: #17202a;
  --ink-2: #25313c;
  --paper: #f3efe5;
  --paper-2: #fffdf8;
  --acid: #e7c6a2;
  --orange: #a94d35;
  --cyan: #8eb0bd;
  --muted: #626762;
  --line: rgba(23,32,42,.2);
  --shadow: 0 12px 28px rgba(23,32,42,.1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: "DM Sans", sans-serif; }
button, input, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
a { color: inherit; }
[hidden] { display: none !important; }
.skip-link { position: fixed; top: .7rem; left: .7rem; z-index: 100; padding: .8rem 1rem; color: var(--ink); background: var(--acid); transform: translateY(-160%); }
.skip-link:focus-visible { transform: none; }
:focus-visible { outline: 3px solid var(--cyan); outline-offset: 3px; }

.ambient { position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.ambient i { position: absolute; border: 1px solid rgba(7,26,27,.05); border-radius: 50%; }
.ambient i:nth-child(1) { width: 58vw; height: 58vw; top: -31vw; right: -9vw; }
.ambient i:nth-child(2) { width: 35vw; height: 35vw; top: -18vw; right: 2vw; }
.ambient i:nth-child(3) { width: 8px; height: 8px; top: 30vh; left: 3vw; background: var(--orange); border: 0; }

.masthead { position: sticky; top: 0; z-index: 20; height: 78px; display: grid; grid-template-columns: minmax(250px,1fr) auto minmax(250px,1fr); align-items: center; padding: 0 2.2rem; color: var(--paper-2); background: var(--ink); border-bottom: 1px solid rgba(255,255,255,.12); }
.brand { display: flex; align-items: center; gap: .8rem; text-decoration: none; font: 400 1.1rem/1 "Archivo Black", sans-serif; letter-spacing: -.05em; }
.brand b { color: var(--acid); }
.brand small { display: block; margin-top: .25rem; color: rgba(255,255,255,.42); font: 500 .43rem/1 "IBM Plex Mono", monospace; letter-spacing: .12em; }
.brand-eye { position: relative; width: 37px; height: 23px; display: block; border: 2px solid var(--acid); border-radius: 70% 10% 70% 10%; transform: rotate(45deg); }
.brand-eye::after { content: ""; position: absolute; inset: 6px; background: var(--acid); border-radius: 50%; }
.masthead nav { display: flex; align-self: stretch; }
.nav-button { position: relative; min-width: 94px; padding: 0 .75rem; color: rgba(255,255,255,.52); background: transparent; border: 0; font: 500 .57rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; letter-spacing: .05em; }
.nav-button::after { content: ""; position: absolute; left: 50%; right: 50%; bottom: 0; height: 4px; background: var(--acid); transition: left .25s, right .25s; }
.nav-button:hover, .nav-button.active { color: white; }
.nav-button.active::after { left: 12%; right: 12%; }
.mast-actions { display: flex; justify-content: flex-end; align-items: center; gap: 1rem; }
.mast-actions > a { color: rgba(255,255,255,.58); font: 500 .54rem/1 "IBM Plex Mono", monospace; text-decoration: none; text-transform: uppercase; }
.mast-actions > a.schedule-review-link { padding: .7rem .8rem; color: var(--ink); background: var(--cyan); }
.demo-button { padding: .7rem .85rem; color: var(--ink); background: var(--acid); border: 0; font: 600 .54rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }

main { min-height: calc(100vh - 78px); }
.view { min-height: calc(100vh - 78px); }
.view.active { animation: view-in .45s ease both; }
.hero { min-height: 650px; display: grid; grid-template-columns: 1.35fr .65fr; gap: 4vw; align-items: center; padding: 6.5rem max(4vw,2rem) 5rem; }
.eyebrow { margin: 0 0 1.6rem; color: var(--muted); font: 500 .58rem/1.3 "IBM Plex Mono", monospace; text-transform: uppercase; letter-spacing: .06em; }
.eyebrow span { margin-right: .65rem; padding: .35rem .5rem; color: var(--paper-2); background: var(--ink); }
h1, h2, h3, p { text-wrap: pretty; }
.hero h1, .view-hero h1 { margin: 0; font: 400 clamp(3.8rem,7.4vw,8rem)/.86 "Archivo Black", sans-serif; letter-spacing: -.075em; text-transform: uppercase; }
.hero h1 em, .view-hero h1 em { color: var(--orange); font-style: normal; -webkit-text-stroke: 0; text-shadow: none; }
.hero-intro { max-width: 740px; margin: 2.1rem 0 0; color: #3f504f; font-size: clamp(1rem,1.5vw,1.28rem); line-height: 1.6; }
.hero-actions { display: flex; align-items: center; gap: 1rem; margin-top: 2rem; }
.primary-button { display: inline-flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding: 1rem 1.15rem; color: var(--paper-2); background: var(--ink); border: 0; font: 600 .58rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }
.primary-button span { color: var(--acid); font-size: 1rem; }
.plain-button { padding: .9rem; color: var(--ink); background: transparent; border: 0; border-bottom: 1px solid var(--ink); font-size: .72rem; text-decoration: none; }
.radar-card { position: relative; min-height: 400px; padding: 1.25rem; color: var(--paper-2); background: var(--ink); overflow: hidden; border-top: 7px solid var(--orange); }
.radar-card::before { content: none; }
.radar-head, .radar-foot { position: relative; z-index: 2; display: flex; justify-content: space-between; color: rgba(255,255,255,.48); font: 500 .5rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }
.radar-head i { color: var(--acid); font-style: normal; }
.radar-visual { position: relative; height: 280px; display: grid; place-items: center; border-bottom: 1px solid rgba(255,255,255,.13); }
.radar-number { position: relative; z-index: 2; text-align: center; }
.radar-number strong { display: block; color: white; font: 400 5.5rem/.75 "Archivo Black", sans-serif; letter-spacing: -.08em; }
.radar-number span { display: block; margin-top: .8rem; color: rgba(255,255,255,.55); font: 500 .54rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }
.radar-foot { padding-top: 1rem; }
.radar-foot b { display: block; margin-bottom: .25rem; color: white; font: 400 1.2rem/1 "Archivo Black", sans-serif; }

.pulse-strip { display: grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.pulse-strip article { position: relative; min-height: 160px; padding: 1.4rem max(2vw,1rem); border-right: 1px solid var(--line); overflow: hidden; }
.pulse-strip article:last-child { border-right: 0; }
.pulse-strip article::after { content: ""; position: absolute; width: 70px; height: 70px; top: -40px; right: -40px; border: 18px solid rgba(7,26,27,.05); border-radius: 50%; }
.pulse-strip span, .pulse-strip small { display: block; color: var(--muted); font: 500 .52rem/1.35 "IBM Plex Mono", monospace; text-transform: uppercase; }
.pulse-strip strong { display: block; margin: .8rem 0 .4rem; font: 400 3.5rem/.8 "Archivo Black", sans-serif; letter-spacing: -.07em; }
.pulse-alert strong { color: var(--orange); }.pulse-good strong { color: #27857f; }

.priority-section, .themes-section, .source-register { padding: 7rem max(4vw,2rem); }
.section-heading { display: grid; grid-template-columns: 1fr minmax(280px,480px); gap: 2rem; align-items: end; margin-bottom: 2rem; }
.section-heading > div > span, .themes-section .section-heading span { color: var(--orange); font: 600 .56rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }
.section-heading h2 { margin: .55rem 0 0; font: 400 clamp(2.3rem,4.3vw,4.7rem)/.88 "Archivo Black", sans-serif; letter-spacing: -.065em; text-transform: uppercase; }
.section-heading > p { margin: 0; color: var(--muted); font-size: .83rem; line-height: 1.6; }
.priority-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .85rem; }
.priority-card { position: relative; min-height: 330px; padding: 1.25rem; display: flex; flex-direction: column; text-align: left; color: var(--ink); background: var(--paper-2); border: 1px solid var(--line); transition: transform .25s, box-shadow .25s, background .25s; }
.priority-card:hover { z-index: 2; transform: translateY(-3px); box-shadow: var(--shadow); }
.priority-card.lead { color: var(--paper-2); background: var(--ink); }
.priority-top { display: flex; justify-content: space-between; align-items: center; }
.priority-top > span { color: var(--muted); font: 500 .54rem/1 "IBM Plex Mono", monospace; }
.rating { display: inline-block; padding: .35rem .5rem; background: rgba(7,26,27,.08); font: 600 .48rem/1 "IBM Plex Mono", monospace; text-transform: uppercase; }
.rating.red { color: #a82e1b; background: rgba(255,101,66,.16); }.rating.amber { color: #865716; background: rgba(240,174,71,.2); }.rating.green { color: #12675d; background: rgba(83,215,210,.17); }.rating.not-published, .rating.unpublished { color: var(--muted); }
.lead .rating.red { color: #ffd3cb; }.lead .priority-top > span { color: rgba(255,255,255,.4); }
.score-ring { position: relative; width: 80px; height: 80px; display: grid; place-items: center; margin: 1.2rem 0 1rem; border-radius: 50%; background: conic-gradient(var(--orange) calc(var(--score)*1%),rgba(7,26,27,.09) 0); }
.score-ring::after { content: ""; position: absolute; inset: 6px; background: var(--paper-2); border-radius: 50%; }.lead .score-ring::after { background: var(--ink); }
.score-ring strong, .score-ring small { position: relative; z-index: 1; grid-area: 1/1; }.score-ring strong { margin-top: -.6rem; font: 400 1.5rem/1 "Archivo Black",sans-serif; }.score-ring small { margin-top: 1.9rem; color: var(--muted); font: 500 .4rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.priority-card h3 { margin: 0; font: 400 1.55rem/1 "Archivo Black", sans-serif; letter-spacing: -.04em; text-transform: uppercase; }
.priority-card p { margin: .75rem 0 1.2rem; color: var(--muted); font-size: .72rem; line-height: 1.5; }.lead p { color: rgba(255,255,255,.55); }
.priority-card footer { display: flex; justify-content: space-between; align-items: end; gap: .7rem; margin-top: auto; padding-top: .8rem; border-top: 1px solid var(--line); color: var(--muted); font: 500 .48rem/1.3 "IBM Plex Mono",monospace; text-transform: uppercase; }.lead footer { border-color: rgba(255,255,255,.15); }.priority-card footer i { color: var(--orange); font-style: normal; }

.movement-section { padding: 7rem max(4vw,2rem); color: var(--paper-2); background: var(--ink); }
.section-heading.inverse h2 { color: white; }.section-heading.inverse > div > span { color: var(--acid); }.section-heading.inverse > p { color: rgba(255,255,255,.5); }
.movement-layout { display: grid; grid-template-columns: 1.2fr .8fr; gap: 1rem; }
.transition-chart { padding: 1.3rem; background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.13); }
.chart-head { display: flex; justify-content: space-between; margin-bottom: 2rem; color: rgba(255,255,255,.43); font: 500 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.chart-head b { color: white; }
.transition-row { width: 100%; display: grid; grid-template-columns: 120px 1fr 40px; align-items: center; gap: 1rem; margin-bottom: 1.2rem; padding: .3rem 0; color: white; background: transparent; border: 0; text-align: left; }
.transition-row > span { font-size: .7rem; }.transition-row > div { height: 28px; background: rgba(255,255,255,.06); }.transition-row i { display: block; width: var(--width); height: 100%; background: rgba(255,255,255,.35); transform-origin: left; animation: grow .9s both; }.transition-row.worsened i { background: var(--orange); }.transition-row.improved i { background: var(--cyan); }.transition-row strong { font: 400 1.3rem/1 "Archivo Black",sans-serif; }
.transition-chart > p { margin: 2rem 0 0; color: rgba(255,255,255,.4); font-size: .65rem; line-height: 1.5; }
.contradictions { padding: 1.5rem; color: var(--ink); background: var(--acid); }
.contradictions > span { font: 600 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.contradictions > h3 { margin: .8rem 0 1.5rem; font: 400 2.4rem/.9 "Archivo Black",sans-serif; letter-spacing: -.05em; text-transform: uppercase; }
.contradictions > div { display: grid; gap: .5rem; }.contradictions > div button { padding: .85rem; display: grid; grid-template-columns: 1fr auto; gap: .35rem; text-align: left; color: white; background: var(--ink); border: 0; }.contradictions button span { color: var(--cyan); font: 500 .48rem/1 "IBM Plex Mono",monospace; }.contradictions button strong { grid-column: 1/-1; font-size: .72rem; }.contradictions button small { grid-column: 2; grid-row: 1; color: rgba(255,255,255,.52); font: 500 .46rem/1 "IBM Plex Mono",monospace; }
.inverse-button { width: 100%; margin-top: 1rem; padding: .85rem; color: var(--ink); background: transparent; border: 1px solid var(--ink); font: 600 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }

.theme-cloud { display: grid; grid-template-columns: repeat(4,1fr); border: 1px solid var(--line); }
.theme-cloud button { min-height: 190px; padding: 1rem; display: flex; flex-direction: column; align-items: flex-start; text-align: left; color: var(--ink); background: rgba(255,255,255,calc(var(--weight)*.35)); border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); transition: background .2s; }.theme-cloud button:hover { background: var(--cyan); }.theme-cloud button:nth-child(4n) { border-right: 0; }.theme-cloud button:nth-last-child(-n+4) { border-bottom: 0; }
.theme-cloud span, .theme-cloud small { color: var(--muted); font: 500 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.theme-cloud strong { max-width: 220px; margin: auto 0 .8rem; font: 400 1.35rem/.95 "Archivo Black",sans-serif; letter-spacing: -.04em; text-transform: uppercase; }.theme-cloud b { font: 400 2.5rem/.8 "Archivo Black",sans-serif; }

.leaver-section { padding: 7rem max(4vw,2rem); color: white; background: var(--ink-2); }.leaver-section .section-heading > div > span { color: var(--acid); }.leaver-section .section-heading h2 b { color: var(--orange); }.leaver-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .7rem; }.leaver-grid article { min-height: 310px; padding: 1.1rem; display: flex; flex-direction: column; background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.14); }.leaver-grid article > div { display: flex; justify-content: space-between; color: rgba(255,255,255,.35); font: 500 .5rem/1 "IBM Plex Mono",monospace; }.leaver-grid h3 { margin: 3rem 0 .8rem; font: 400 1.4rem/1 "Archivo Black",sans-serif; letter-spacing: -.04em; text-transform: uppercase; }.leaver-grid p { color: rgba(255,255,255,.5); font-size: .65rem; line-height: 1.55; }.leaver-grid footer { display: flex; justify-content: space-between; gap: .8rem; margin-top: auto; padding-top: .8rem; border-top: 1px solid rgba(255,255,255,.13); color: rgba(255,255,255,.4); font: 500 .45rem/1.35 "IBM Plex Mono",monospace; text-transform: uppercase; }.leaver-grid footer a { color: var(--cyan); }.leaver-source { display: inline-block; margin-top: 1rem; padding: .75rem .9rem; color: var(--ink); background: var(--acid); font: 600 .5rem/1 "IBM Plex Mono",monospace; text-decoration: none; text-transform: uppercase; }
.leaver-section .section-heading h2 i { color: var(--cyan); font-style: normal; }

.view-hero { min-height: 410px; padding: 5.5rem max(4vw,2rem) 4rem; color: white; background: var(--ink); overflow: hidden; }
.view-hero h1 { font-size: clamp(3.4rem,6.4vw,6.5rem); }.view-hero .eyebrow { color: rgba(255,255,255,.5); }.view-hero .eyebrow span { color: var(--ink); background: var(--acid); }.view-hero h1 em { -webkit-text-stroke: 0; text-shadow: none; }
.view-hero > p:last-child { max-width: 650px; color: rgba(255,255,255,.55); font-size: .9rem; line-height: 1.6; }
.filter-bar { position: sticky; top: 78px; z-index: 10; display: grid; grid-template-columns: 1.7fr repeat(4,1fr) auto; gap: .6rem; padding: 1rem max(4vw,2rem); background: var(--paper-2); border-bottom: 1px solid var(--line); box-shadow: 0 10px 30px rgba(7,26,27,.07); }
.filter-bar label { min-width: 0; }.filter-bar label span { display: block; margin-bottom: .35rem; color: var(--muted); font: 500 .45rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.filter-bar input, .filter-bar select { width: 100%; height: 40px; padding: 0 .65rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); font-size: .65rem; }.filter-bar > button { align-self: end; height: 40px; padding: 0 .8rem; color: var(--ink); background: transparent; border: 1px solid var(--ink); font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.explorer-status { display: flex; justify-content: space-between; padding: 1rem max(4vw,2rem); color: var(--muted); font: 500 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.explorer-status button { margin: -.45rem 0; padding: .45rem .65rem; color: var(--ink); background: transparent; border: 1px solid var(--line); font: 600 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.explorer-status button.active { color: var(--ink); background: var(--acid); border-color: var(--ink); }.explorer-status button b { color: var(--orange); }
.project-table-wrap { overflow-x: auto; border-top: 1px solid var(--line); }
.project-table { width: 100%; min-width: 1050px; border-collapse: collapse; }
.project-table th { padding: .8rem 1rem; text-align: left; color: var(--muted); background: rgba(255,255,255,.32); border-bottom: 1px solid var(--line); font: 600 .46rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.project-table td { padding: .9rem 1rem; border-bottom: 1px solid var(--line); font-size: .66rem; }
.project-table tbody tr { background: rgba(255,255,255,.18); transition: background .16s; cursor: pointer; }.project-table tbody tr:hover { background: var(--paper-2); }
.project-table td:nth-child(2) { width: 31%; }.project-table td strong { display: block; font-size: .7rem; }.project-table td small { display: block; margin-top: .3rem; color: var(--muted); font-size: .55rem; }.project-table td:last-child button { color: var(--ink); background: transparent; border: 0; font-size: 1.15rem; }.project-table td:last-child button.saved { color: #c34b24; }
.table-score { display: grid; place-items: center; width: 38px; height: 38px; color: white; background: var(--ink); border-radius: 50%; font: 600 .58rem/1 "IBM Plex Mono",monospace; }
.movement { font: 600 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.movement.worsened { color: #ad311d; }.movement.improved { color: #12675d; }.movement.not-comparable { color: var(--muted); }
.mini-themes { display: flex; gap: .3rem; flex-wrap: wrap; }.mini-themes span { padding: .25rem .35rem; background: rgba(7,26,27,.07); font-size: .48rem; }
.pagination { display: flex; justify-content: flex-end; align-items: center; gap: 1rem; padding: 1.5rem max(4vw,2rem) 4rem; }.pagination button { padding: .7rem .9rem; color: var(--ink); background: transparent; border: 1px solid var(--ink); font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.pagination button:disabled { opacity: .3; }.pagination span { color: var(--muted); font: 500 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.empty-result { padding: 3rem !important; text-align: center; color: var(--muted); }

.cases-hero { background: var(--ink-2); }.case-picker { display: grid; grid-template-columns: auto minmax(250px,650px) auto; align-items: center; gap: 1rem; padding: 1.5rem max(4vw,2rem); background: var(--acid); }.case-picker label { font: 600 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.case-picker select { width: 100%; padding: .85rem; color: var(--ink); background: var(--paper-2); border: 1px solid var(--ink); }.case-context { padding: 3rem max(4vw,2rem) 1rem; }.case-context > span { color: var(--muted); font: 500 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.case-context > strong { display: block; max-width: 900px; margin: .6rem 0 1rem; font: 400 2.4rem/.95 "Archivo Black",sans-serif; text-transform: uppercase; letter-spacing: -.05em; }.case-context > div { display: flex; flex-wrap: wrap; gap: .4rem; }.case-context i, .shared-themes span, .detail-themes span { padding: .35rem .45rem; color: var(--ink); background: var(--cyan); font: normal 500 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.case-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .8rem; padding: 1rem max(4vw,2rem) 3rem; }.case-card { min-height: 380px; display: flex; flex-direction: column; padding: 1.2rem; background: var(--paper-2); border: 1px solid var(--line); }.case-rank { display: flex; justify-content: space-between; color: var(--muted); font: 500 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.case-rank b { color: #12675d; }.case-card h2 { margin: 1.2rem 0 .8rem; font: 400 1.35rem/.95 "Archivo Black",sans-serif; letter-spacing: -.04em; text-transform: uppercase; }.case-shift { display: flex; align-items: center; gap: .45rem; }.case-shift small { margin-left: auto; color: var(--muted); font: 500 .48rem/1 "IBM Plex Mono",monospace; }.case-card > p { max-height: 105px; overflow: hidden; color: var(--muted); font-size: .66rem; line-height: 1.5; }.shared-themes { display: flex; flex-wrap: wrap; gap: .3rem; }.case-card footer { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); }.case-card footer button { padding: 0; color: var(--ink); background: transparent; border: 0; font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.case-boundary { margin: 0 max(4vw,2rem) 5rem; padding: 1rem; color: rgba(255,255,255,.65); background: var(--ink); border-left: 6px solid var(--orange); font-size: .7rem; }.case-boundary strong { color: white; }.empty-cases { grid-column: 1/-1; padding: 4rem; text-align: center; color: var(--muted); }

.method-hero { background: #102120; }.method-grid { display: grid; grid-template-columns: repeat(4,1fr); border-bottom: 1px solid var(--line); }.method-grid article { min-height: 260px; padding: 1.4rem; border-right: 1px solid var(--line); }.method-grid article:last-child { border: 0; }.method-grid span { color: var(--orange); font: 500 .55rem/1 "IBM Plex Mono",monospace; }.method-grid h2 { margin: 5rem 0 .8rem; font: 400 1.7rem/1 "Archivo Black",sans-serif; text-transform: uppercase; }.method-grid p { color: var(--muted); font-size: .72rem; line-height: 1.55; }
.score-explainer { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; padding: 7rem max(4vw,2rem); }.score-explainer > div:first-child > span { color: var(--orange); font: 600 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.score-explainer h2 { margin: .7rem 0 1rem; font: 400 clamp(2.4rem,4vw,4rem)/.9 "Archivo Black",sans-serif; letter-spacing: -.055em; text-transform: uppercase; }.score-explainer p { color: var(--muted); line-height: 1.6; }.score-formula { border-top: 4px solid var(--ink); }.score-formula div { display: grid; grid-template-columns: 120px 1fr; gap: 1rem; align-items: center; padding: 1rem 0; border-bottom: 1px solid var(--line); }.score-formula b { color: var(--orange); font: 400 1.45rem/1 "Archivo Black",sans-serif; }.score-formula span { font-size: .75rem; }
.limitations { display: grid; grid-template-columns: .6fr 1.4fr; gap: 3rem; padding: 5rem max(4vw,2rem); color: white; background: var(--ink); }.limitations span { color: var(--acid); font: 600 .52rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.limitations h2 { margin: .7rem 0; font: 400 2.6rem/.9 "Archivo Black",sans-serif; text-transform: uppercase; }.limitations ul { margin: 0; padding: 0; list-style: none; }.limitations li { padding: 1rem 0; color: rgba(255,255,255,.62); border-bottom: 1px solid rgba(255,255,255,.12); font-size: .75rem; line-height: 1.5; }.limitations li::before { content: "BOUNDARY"; display: inline-block; width: 90px; color: var(--orange); font: 500 .45rem/1 "IBM Plex Mono",monospace; }
.source-register { padding-top: 5rem; }.source-register > div:last-child { display: grid; grid-template-columns: repeat(2,1fr); border: 1px solid var(--line); }.source-register a { min-height: 120px; padding: 1rem; display: grid; grid-template-columns: 70px 1fr auto; align-items: center; gap: .8rem; text-decoration: none; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }.source-register a:nth-child(even) { border-right: 0; }.source-register a:nth-last-child(-n+2) { border-bottom: 0; }.source-register a:hover { background: var(--cyan); }.source-register a span, .source-register a i { color: var(--muted); font: normal 500 .48rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.source-register a strong { font-size: .72rem; }
.external-register { padding-top: 0; }.external-register a strong small { display: block; margin-top: .4rem; color: var(--muted); font-weight: 400; line-height: 1.4; }

dialog { padding: 0; border: 0; box-shadow: 0 28px 80px rgba(0,0,0,.4); } dialog::backdrop { background: rgba(23,32,42,.82); }.dialog-close { position: absolute; top: 1rem; right: 1rem; z-index: 2; width: 44px; height: 44px; color: currentColor; background: transparent; border: 1px solid currentColor; border-radius: 0; font-size: 1.2rem; }
.project-dialog { width: min(980px,calc(100% - 2rem)); max-height: calc(100vh - 2rem); color: var(--ink); background: var(--paper); }.project-dialog > article { position: relative; padding: 2rem; }.dialog-kicker { display: flex; gap: .5rem; padding-right: 3rem; color: var(--muted); font: 500 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.dialog-kicker span + span::before { content: "·"; margin-right: .5rem; }.project-dialog h2 { max-width: 820px; margin: 1rem 0 1.5rem; font: 400 clamp(2rem,4vw,4rem)/.88 "Archivo Black",sans-serif; letter-spacing: -.055em; text-transform: uppercase; }.detail-summary { display: grid; grid-template-columns: repeat(4,1fr); color: white; background: var(--ink); }.detail-summary div { padding: 1rem; border-right: 1px solid rgba(255,255,255,.15); }.detail-summary div:last-child { border: 0; }.detail-summary span { display: block; color: rgba(255,255,255,.42); font: 500 .46rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.detail-summary strong { display: block; margin-top: .55rem; font: 400 1.35rem/1 "Archivo Black",sans-serif; }.detail-summary small { display: block; margin-top: .35rem; color: rgba(255,255,255,.45); font-size: .48rem; }.detail-summary strong.red { color: var(--orange); }.detail-summary strong.green { color: var(--cyan); }
.detail-panel { margin-top: 1rem; padding: 1.2rem; background: var(--paper-2); border: 1px solid var(--line); }.detail-panel > span { color: var(--orange); font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.detail-panel ul { display: grid; grid-template-columns: repeat(2,1fr); gap: .5rem 2rem; margin: 1rem 0 0; padding-left: 1.2rem; font-size: .72rem; }.detail-panel blockquote { margin: 1rem 0; color: #354645; font-size: .84rem; line-height: 1.65; }.detail-panel > a { font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.timeline { position: relative; display: grid; grid-template-columns: repeat(4,1fr); gap: .6rem; margin-top: 1rem; }.timeline::before { content: ""; position: absolute; top: 39px; left: 8%; right: 8%; height: 1px; background: var(--line); }.timeline article { position: relative; }.timeline time { color: var(--muted); font: 500 .48rem/1 "IBM Plex Mono",monospace; }.timeline article > i { position: relative; z-index: 1; width: 12px; height: 12px; display: block; margin: 1rem 0; background: var(--muted); border: 3px solid var(--paper-2); border-radius: 50%; box-shadow: 0 0 0 1px var(--line); }.timeline article > i.red { background: var(--orange); }.timeline article > i.amber { background: #e6a736; }.timeline article > i.green { background: var(--cyan); }.timeline strong, .timeline span { display: block; font-size: .65rem; }.timeline span { margin-top: .3rem; color: var(--muted); }.timeline p { height: 75px; overflow: hidden; color: var(--muted); font-size: .58rem; line-height: 1.45; }.timeline a { font: 600 .45rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.detail-themes { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .8rem; }.case-button { width: 100%; margin-top: 1rem; padding: 1rem; display: flex; justify-content: space-between; color: var(--ink); background: var(--acid); border: 0; font: 600 .55rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }
.demo-dialog { width: min(560px,calc(100% - 2rem)); color: white; background: var(--ink); }.demo-dialog article { position: relative; padding: 2rem; }.demo-dialog article > span { color: var(--acid); font: 500 .52rem/1 "IBM Plex Mono",monospace; }.demo-dialog h2 { margin: 1rem 0; font: 400 2.4rem/.9 "Archivo Black",sans-serif; letter-spacing: -.05em; text-transform: uppercase; }.demo-dialog p { min-height: 70px; color: rgba(255,255,255,.6); font-size: .76rem; line-height: 1.6; }.demo-progress { display: flex; gap: .4rem; margin: 1.5rem 0; }.demo-progress i { height: 4px; flex: 1; background: rgba(255,255,255,.15); }.demo-progress i.active { background: var(--acid); }.demo-dialog footer { display: flex; justify-content: space-between; gap: .7rem; }.demo-dialog footer button { padding: .75rem .9rem; color: white; background: transparent; border: 1px solid rgba(255,255,255,.35); font: 600 .5rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.demo-dialog footer button:last-child { color: var(--ink); background: var(--acid); border-color: var(--acid); }.demo-dialog footer button:disabled { opacity: .25; }
.loading { position: fixed; inset: 78px 0 0; z-index: 30; display: grid; place-content: center; gap: 1rem; text-align: center; color: white; background: var(--ink); transition: opacity .35s, visibility .35s; }.loading.hidden { opacity: 0; visibility: hidden; }.loading > span { width: 70px; height: 70px; margin: auto; border: 2px solid rgba(255,255,255,.15); border-top-color: var(--acid); border-radius: 50%; animation: spin 1s linear infinite; }.loading b { font: 500 .6rem/1 "IBM Plex Mono",monospace; text-transform: uppercase; }.loading strong { font: 400 2rem/1 "Archivo Black",sans-serif; }.loading > span:last-child { width: auto; height: auto; border: 0; animation: none; color: rgba(255,255,255,.5); }
.toast { position: fixed; right: 1.2rem; bottom: 1.2rem; z-index: 50; max-width: 390px; padding: 1rem 1.2rem; color: white; background: var(--ink); border-left: 5px solid var(--acid); box-shadow: var(--shadow); font-size: .7rem; transform: translateY(150%); transition: transform .3s; }.toast.show { transform: none; }.toast:empty { display: none; }

.reveal { opacity: 0; transform: translateY(22px); animation: reveal .7s cubic-bezier(.2,.8,.2,1) forwards; }.delay-1 { animation-delay: .1s; }.delay-2 { animation-delay: .2s; }.delay-3 { animation-delay: .3s; }.delay-4 { animation-delay: .4s; }
@keyframes reveal { to { opacity: 1; transform: none; } }
@keyframes grow { from { transform: scaleX(0); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes view-in { from { opacity: 0; transform: translateY(8px); } }

@media (max-width: 1050px) {
  .masthead { grid-template-columns: 220px 1fr auto; padding: 0 1rem; }.nav-button { min-width: 76px; }.mast-actions > a { display: none; }
  .hero { grid-template-columns: 1fr 360px; }.priority-grid, .case-grid, .leaver-grid { grid-template-columns: repeat(2,1fr); }.theme-cloud { grid-template-columns: repeat(2,1fr); }.theme-cloud button:nth-child(2n) { border-right: 0; }.theme-cloud button:nth-last-child(-n+4) { border-bottom: 1px solid var(--line); }.theme-cloud button:nth-last-child(-n+2) { border-bottom: 0; }
  .filter-bar { grid-template-columns: 1.5fr repeat(2,1fr) auto; }.filter-bar label:nth-of-type(4), .filter-bar label:nth-of-type(5) { display: none; }
}

@media (max-width: 760px) {
  .masthead { height: 64px; grid-template-columns: 1fr auto; }.brand small { display: none; }.masthead nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; height: 62px; justify-content: stretch; background: var(--ink); border-top: 1px solid rgba(255,255,255,.12); }.nav-button { min-width: 0; flex: 1; font-size: .46rem; }.demo-button { padding: .65rem; font-size: .45rem; }
  main { padding-bottom: 62px; }.hero { min-height: 0; grid-template-columns: 1fr; padding: 4rem 1rem 3rem; }.hero h1 { font-size: 3.25rem; }.hero-intro { font-size: 1rem; }.hero-actions { align-items: stretch; flex-direction: column; }.plain-button { align-self: flex-start; }.radar-card { min-height: 340px; }.radar-visual { height: 230px; }
  .pulse-strip { grid-template-columns: repeat(2,1fr); }.pulse-strip article { min-height: 135px; }.pulse-strip article:nth-child(2) { border-right: 0; }.pulse-strip article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }.pulse-strip strong { font-size: 2.7rem; }
  .priority-section, .themes-section, .source-register, .movement-section, .leaver-section { padding: 4rem 1rem; }.section-heading { grid-template-columns: 1fr; }.section-heading h2 { font-size: 2.5rem; }.priority-grid, .movement-layout, .case-grid, .leaver-grid { grid-template-columns: 1fr; }.priority-card { min-height: 300px; }.transition-row { grid-template-columns: 90px 1fr 30px; gap: .6rem; }.theme-cloud { grid-template-columns: 1fr; }.theme-cloud button { min-height: 145px; border-right: 0 !important; border-bottom: 1px solid var(--line) !important; }.theme-cloud button:last-child { border-bottom: 0 !important; }
  .view-hero { min-height: 340px; padding: 4rem 1rem 3rem; }.view-hero h1 { font-size: 3rem; }.filter-bar { top: 64px; grid-template-columns: 1fr 1fr; padding: .75rem 1rem; }.filter-bar .search-field { grid-column: 1/-1; }.filter-bar label:nth-of-type(3), .filter-bar label:nth-of-type(4), .filter-bar label:nth-of-type(5) { display: none; }.explorer-status { padding: 1rem; }.explorer-status > span:nth-child(2) { display: none; }.pagination { padding: 1.5rem 1rem 3rem; justify-content: space-between; }
  .case-picker { grid-template-columns: 1fr; padding: 1rem; }.case-context { padding: 2rem 1rem 1rem; }.case-context > strong { font-size: 1.8rem; }.case-grid { padding: 1rem 1rem 2rem; }.case-boundary { margin: 0 1rem 3rem; }
  .method-grid { grid-template-columns: repeat(2,1fr); }.method-grid article:nth-child(2) { border-right: 0; }.method-grid article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }.method-grid article { min-height: 220px; }.method-grid h2 { margin-top: 3rem; }.score-explainer, .limitations { grid-template-columns: 1fr; gap: 2rem; padding: 4rem 1rem; }.source-register > div:last-child { grid-template-columns: 1fr; }.source-register a { border-right: 0; border-bottom: 1px solid var(--line) !important; }.source-register a:last-child { border-bottom: 0 !important; }
  .project-dialog > article { padding: 1.2rem; }.project-dialog h2 { font-size: 2rem; }.detail-summary { grid-template-columns: repeat(2,1fr); }.detail-summary div:nth-child(2) { border-right: 0; }.detail-summary div:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.15); }.detail-panel ul { grid-template-columns: 1fr; }.timeline { grid-template-columns: 1fr; }.timeline::before { top: 0; bottom: 0; left: 5px; right: auto; width: 1px; height: auto; }.timeline article { display: grid; grid-template-columns: 30px 1fr; }.timeline time { grid-column: 2; }.timeline article > i { grid-column: 1; grid-row: 1/3; }.timeline article > div { grid-column: 2; }.timeline p { height: auto; max-height: 85px; }
  .loading { inset: 64px 0 62px; }.toast { left: .7rem; right: .7rem; bottom: 70px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
