/* ChemAI deck slides (chemai/deck/slides/NN.html, written by
   scripts/build-chemai-deck.mjs): the Adams Street deck's 1920×1080 canvas,
   type and footer (adams-street/deck/slides/slide.css), plus the drawn charts
   this deck needs. scaled to fit its frame by slide.js. */
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--chart-canvas); }
.slide {
    position: relative; width: 1920px; height: 1080px; padding: 28px 80px 0;
    transform-origin: 0 0; transform: scale(var(--slide-scale, 1));
    background: var(--chart-canvas); color: var(--white); font-family: var(--font-sans);
}
.eyebrow { margin: 0; color: var(--eyebrow); font-family: var(--font-display); font-size: 21px; font-weight: 300; letter-spacing: .04em; text-transform: uppercase; }
h1 { margin: 14px 0 0; font-family: var(--font-display); font-size: 56px; font-weight: 700; line-height: 1.1; letter-spacing: -.01em; }
.slide > .standfirst { position: absolute; z-index: 1; left: 80px; top: 192px; margin: 0; max-width: 1640px; color: var(--text-light); font-size: 22px; line-height: 1.3; }
.slide-foot {
    position: absolute; left: 46px; right: 48px; bottom: 20px; height: 60px;
    display: flex; align-items: center; gap: 72px;
    color: var(--text-light); font-size: 17px; line-height: 1.3;
}
.slide-foot .page { flex: none; width: 28px; color: var(--white); white-space: nowrap; }
.slide-foot .source { flex: 1; margin: 0; max-width: 1400px; }
.slide-foot img { display: block; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* The card-surface band every content slide draws on, from under the title to the footer. */
.band { position: absolute; left: 0; right: 0; top: 165px; bottom: 110px; padding: 80px 80px 30px; background: var(--surface-card); }
.band.flush { padding-top: 40px; }

/* Embedded site chart (slide 2): drawn narrower and scaled up by slide.js. */
.chart-area { position: absolute; left: 0; right: 0; top: 165px; bottom: 110px; padding: 80px 80px 36px; overflow: hidden; background: var(--surface-card); --chart-zoom: 1.5; }
.chart-area iframe { display: block; border: 0; transform-origin: 0 0; transform: scale(var(--chart-fit, var(--chart-zoom))); width: calc(100% / var(--chart-fit, var(--chart-zoom))); height: calc(100% / var(--chart-fit, var(--chart-zoom))); }

/* Colours: Europe blue, the US in the deck family's red, the rest muted. */
:root { --slide-us: #E0524A; --slide-night: #06070B; --slide-night-ink: #F4F6FC; --slide-night-muted: #C9D5EA; --slide-take: #F7A43C; --geo-1: #DCE4FB; --geo-2: #B4C5F5; --geo-3: #7C98EC; } /* theme-guardrail-allow: the Adams Street deck's US red, night canvas, section orange and light blue tints (adams-street/deck/slides/slide.css). */

/* Night slides: cover, section divider, closing. */
.slide.night { background: var(--slide-night); color: var(--slide-night-ink); padding: 70px 106px; }
.night .lattice { position: absolute; inset: 0; width: 100%; height: 100%; }
.night .lattice line { stroke: var(--slide-night-ink); stroke-opacity: .16; stroke-width: 2; }
.night .lattice circle { fill: var(--slide-night); stroke: var(--slide-night-ink); stroke-opacity: .32; stroke-width: 2; }
.night .lattice circle.on { fill: var(--slide-take); stroke: none; fill-opacity: .9; }
.night-logos { position: relative; display: flex; align-items: center; gap: 46px; }
.cover-text { position: absolute; left: 106px; top: 330px; width: 1240px; }
.cover-text .kicker { margin: 0; color: var(--slide-take); font-size: 30px; font-weight: 700; letter-spacing: .02em; }
.cover-text h1 { margin: 26px 0 0; color: var(--slide-night-ink); font-size: 96px; line-height: 1.02; }
.cover-text p.sub { margin: 34px 0 0; color: var(--slide-night-muted); font-size: 36px; line-height: 1.3; }
.cover-who { position: absolute; left: 106px; bottom: 96px; margin: 0; color: var(--slide-night-muted); font-size: 26px; line-height: 1.45; }
.cover-who b { display: block; color: var(--slide-night-ink); font-size: 30px; }
.divider-text { position: absolute; left: 106px; top: 380px; width: 1100px; }
.divider-text .num { margin: 0; color: var(--slide-take); font-family: var(--font-display); font-size: 86px; font-weight: 700; line-height: 1; }
.divider-text h1 { margin: 24px 0 0; color: var(--slide-night-ink); font-size: 80px; }
.divider-text p { margin: 24px 0 0; color: var(--slide-night-muted); font-size: 32px; line-height: 1.35; }

/* Line chart (Europe's share). */
.lines { display: grid; grid-template-columns: 1fr 470px; gap: 70px; height: 100%; }
.lines.full { grid-template-columns: 1fr; }
svg.usf .v { font-size: 26px; font-weight: 700; fill: var(--text); }
svg.usf .sub { font-size: 18px; }
.lines svg { display: block; width: 100%; height: 100%; overflow: visible; }
svg text { font-family: var(--font-display); fill: var(--text-light); }
svg .grid { stroke: var(--border-light); stroke-width: 1.5; }
svg .axis-l { font-size: 22px; }
svg .eu { stroke: var(--blue); fill: var(--blue); }
svg .ai { stroke: var(--text-light); fill: var(--text-light); }
svg path.ln { fill: none; stroke-width: 4; stroke-linejoin: round; }
svg .end { font-size: 26px; font-weight: 700; }
svg .end.eu { stroke: none; } svg .end.ai { stroke: none; }
svg .ghost { fill: none; stroke: var(--blue); stroke-width: 2.5; stroke-dasharray: 6 6; }
svg .note { font-family: var(--font-sans); font-size: 19px; }
.side { display: flex; flex-direction: column; justify-content: center; gap: 34px; }
.side .stat b { display: block; color: var(--blue); font-family: var(--font-display); font-size: 88px; font-weight: 700; line-height: 1; }
.side .stat b.muted { color: var(--text-light); }
.side .stat span { display: block; margin-top: 8px; color: var(--text-light); font-size: 23px; line-height: 1.35; }
.side .caveat { margin: 0; padding: 18px 22px; border-radius: 12px; background: var(--geo-1); font-size: 20px; line-height: 1.4; }

/* Landscape: three lenses side by side, a few named companies each. */
.lenses { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; height: 100%; padding-top: 10px; }
.lens { padding: 0 40px; border-left: 2px solid var(--border-light); display: flex; flex-direction: column; }
.lens:first-child { padding-left: 0; border-left: 0; }
.lens:last-child { padding-right: 0; }
.lens h2 { margin: 0; font-family: var(--font-display); font-size: 36px; font-weight: 700; }
.lens .def { margin: 8px 0 0; color: var(--text-light); font-size: 18px; line-height: 1.35; min-height: 2.7em; }
.lens .nums { display: flex; gap: 34px; margin: 18px 0 8px; }
.lens .nums b { display: block; color: var(--blue); font-family: var(--font-display); font-size: 52px; line-height: 1; }
.lens .nums span { color: var(--text-light); font-size: 17px; }
.lens ul { margin: 0; padding: 0; list-style: none; }
.lens li { padding: 15px 0; border-top: 1px solid var(--border-light); }
.lens li b { font-size: 22px; }
.lens li .where { margin-left: 8px; color: var(--text-light); font-size: 17px; }
.lens li p { margin: 5px 0 0; font-size: 18px; line-height: 1.35; color: var(--text-light); }
.chip { display: inline-block; margin-left: 8px; padding: 2px 9px; border-radius: 6px; background: var(--geo-1); color: var(--blue); font-size: 13px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; vertical-align: 3px; }

/* Horizontal bars (universities). */
.hbars { display: grid; grid-template-columns: 1fr 520px; gap: 80px; height: 100%; }
.hbars ol { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; justify-content: center; gap: 8px; height: 100%; }
.hbars li { display: grid; grid-template-columns: 300px 1fr; align-items: center; gap: 18px; font-size: 21px; }
.hbars li .bar { display: flex; align-items: center; gap: 12px; }
.hbars li i { display: block; height: 44px; background: var(--blue); }
.hbars li .flag { margin-right: 12px; }
.hbars li.away i { background: var(--text-light); opacity: .35; }
.hbars li.away { color: var(--text-light); }
.hbars li em { font-family: var(--font-display); font-style: normal; font-size: 24px; font-weight: 700; }
.key { position: absolute; z-index: 1; right: 80px; top: 30px; display: flex; gap: 26px; margin: 0; color: var(--text-light); font-size: 19px; }
.key i { display: inline-block; width: 16px; height: 16px; margin-right: 8px; vertical-align: -2px; background: var(--blue); }
.key i.away { background: var(--text-light); opacity: .35; }
.key i.us { background: var(--slide-us); }
.key i.none { background: var(--border-light); }
.cities { margin: 0; padding: 0; list-style: none; }
.cities li { display: flex; justify-content: space-between; padding: 9px 0; border-top: 1px solid var(--border-light); font-size: 21px; }
.cities li:last-child { border-bottom: 1px solid var(--border-light); }
.cities li b { font-family: var(--font-display); }
.cities li.hl { color: var(--blue); font-weight: 700; }
.panel-title { margin: 0 0 12px; color: var(--text-light); font-size: 17px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }

/* Company journeys: one card each. */
.cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; height: 100%; }
.card { display: flex; flex-direction: column; padding: 26px 26px 22px; border-radius: 14px; background: var(--chart-canvas); }
.card .model { margin: 0; color: var(--blue); font-family: var(--font-display); font-size: 18px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.card h2 { margin: 8px 0 0; font-family: var(--font-display); font-size: 34px; font-weight: 700; }
.card .where { margin: 2px 0 0; color: var(--text-light); font-size: 17px; }
.card .what { margin: 14px 0 0; font-size: 19px; line-height: 1.35; }
.card dl { margin: 14px 0 0; }
.card dt { margin-top: 14px; color: var(--text-light); font-size: 14px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.card dd { margin: 4px 0 0; font-size: 18px; line-height: 1.35; }
.card .gap { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--border-light); color: var(--text-light); font-size: 16px; line-height: 1.35; }
.cards.three { grid-template-columns: repeat(4, 1fr); }

/* 100% stacked columns (who leads the rounds). */
.stack { display: grid; grid-template-columns: 1fr 470px; gap: 80px; height: 100%; }
.stack .cols { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 60px; height: 100%; padding: 30px 0 0; }
.stack .col { display: flex; flex-direction: column; }
.stack .bars { flex: 1; display: flex; flex-direction: column-reverse; border-radius: 6px; overflow: hidden; }
.stack .bars div { display: flex; align-items: center; justify-content: center; color: var(--surface-card); font-family: var(--font-display); font-size: 28px; font-weight: 700; }
.stack .bars .eu { background: var(--blue); }
.stack .bars .non { background: var(--slide-us); }
.stack .bars .none { background: var(--border-light); color: var(--text-light); }
.stack .bars .o-dom, .key i.o-dom { background: var(--blue); }
.stack .bars .o-oeu, .key i.o-oeu { background: var(--geo-3); }
.stack .bars .o-usa, .key i.o-usa { background: var(--slide-us); }
.stack .bars .o-row, .key i.o-row { background: var(--orange); }
.stack .lbl { margin: 14px 0 0; text-align: center; font-size: 24px; font-weight: 700; }
.stack .lbl small { display: block; color: var(--text-light); font-size: 18px; font-weight: 400; }

/* Grouped small bars: funding by year, one panel per lens. */
.panels { display: grid; grid-template-columns: repeat(3, 1fr); gap: 50px; height: 100%; }
.panels section { display: flex; flex-direction: column; }
.panels h2 { margin: 0 0 4px; font-family: var(--font-display); font-size: 30px; }
.panels h2 span { color: var(--text-light); font-size: 20px; font-weight: 400; }
.panels svg { flex: 1; display: block; width: 100%; overflow: visible; }
.panels svg .eu { fill: var(--blue); stroke: none; }
.panels svg .us { fill: var(--slide-us); stroke: none; }
.panels svg .v { font-size: 17px; font-weight: 700; }
.panels svg .x { font-size: 18px; text-anchor: middle; }
.panels svg .base { stroke: var(--border); stroke-width: 2; }

/* Plain tables. */
.deck-table { width: 100%; border-collapse: collapse; font-size: 21px; }
.deck-table th { padding: 0 12px 12px 0; color: var(--text-light); font-size: 16px; font-weight: 700; letter-spacing: .04em; text-align: left; text-transform: uppercase; border-bottom: 2px solid var(--border-light); }
.deck-table td { padding: 10px 12px 10px 0; border-bottom: 1px solid var(--border-light); vertical-align: top; }
.deck-table .r { text-align: right; font-variant-numeric: tabular-nums; }
.deck-table .muted { color: var(--text-light); }
.deck-table.small { font-size: 18px; }
.deck-table.small td { padding: 7px 12px 7px 0; }
.tables3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 50px; }
.tables3 h2 { margin: 0 0 14px; font-family: var(--font-display); font-size: 28px; }

/* Questions (closing core slide). */
.qs { position: absolute; left: 0; right: 0; top: 165px; bottom: 110px; display: flex; flex-direction: column; justify-content: center; padding: 0 80px; background: var(--surface-card); }
.qs ol { margin: 0; padding: 0; list-style: none; }
.qs li { display: flex; align-items: baseline; gap: 48px; padding: 30px 0; border-top: 1px solid var(--border-light); }
.qs li:last-child { border-bottom: 1px solid var(--border-light); }
.qs li span { flex: none; width: 36px; color: var(--blue); font-family: var(--font-display); font-size: 40px; font-weight: 700; }
.qs li p { margin: 0; font-size: 40px; line-height: 1.25; font-family: var(--font-display); font-weight: 700; }
.qs li small { display: block; margin-top: 10px; color: var(--text-light); font-family: var(--font-sans); font-size: 22px; font-weight: 400; line-height: 1.4; }
.qs .central { margin: 44px 0 0; padding: 24px 30px; border-radius: 14px; background: var(--geo-1); font-size: 30px; line-height: 1.35; }
.qs .central span { display: block; margin-bottom: 4px; color: var(--blue); font-family: var(--font-display); font-size: 18px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }

/* Method slide: two columns of definitions. */
.method { columns: 2; column-gap: 70px; font-size: 19px; line-height: 1.45; }
.method h2 { margin: 0 0 6px; font-family: var(--font-display); font-size: 22px; break-after: avoid; }
.method p { margin: 0 0 18px; color: var(--text-light); break-inside: avoid; }

.panels .yr { margin: 0 0 6px; color: var(--text-light); font-size: 19px; }
.panels .yr .eu-t { color: var(--blue); } .panels .yr .us-t { color: var(--slide-us); }
/* Cards: type sized to fill the card at slide distance. */
.card h2 { font-size: 38px; }
.card .what { font-size: 22px; }
.card dd { font-size: 20px; }
.card dt { font-size: 15px; margin-top: 18px; }
.card .gap { font-size: 18px; }
.band > .deck-table:not(.small) { font-size: 26px; }
.key.inline { position: static; margin: -12px 0 0; }
.key.inline + .stack { height: calc(100% - 30px); }
.chart-area .snap { display: block; width: 100%; height: 100%; object-fit: contain; }

/* Snapshot slides: an existing chart as an image, filling the band. */
.snap-band { display: flex; align-items: center; justify-content: center; gap: 60px; padding-bottom: 24px; }
.snap-band.no-label { padding-top: 24px; }
.snap-band .snap { display: block; flex: 1 1 auto; min-width: 0; max-width: 100%; max-height: 100%; object-fit: contain; }
.snap-band.with-side .side { flex: 0 0 420px; }

/* ChemAI's lime-on-dark logo needs its own dark ground on the light footer. */
.slide-foot .chemai-mono { display: block; height: 24px; width: auto; }
.slide-foot .chemai-tile { display: flex; align-items: center; padding: 9px 14px; border-radius: 8px; background: var(--slide-night); }
.night-logos img + img { margin-left: 8px; }

/* Treemaps (landscape, largest rounds): absolute tiles laid out by the generator. */
.tm-band { padding: 70px 80px 20px; }
.treemap { position: relative; margin-top: 10px; }
.tm-head, .tm-tile { position: absolute; box-sizing: border-box; overflow: hidden; }
.tm-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; height: 40px; padding: 0 14px; color: var(--surface-card); font-size: 20px; border: 2px solid var(--surface-card); }
.tm-head span { font-family: var(--font-display); font-weight: 700; white-space: nowrap; }
.tm-head b { white-space: nowrap; }
.tm-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 6px; text-align: center; border: 2px solid var(--surface-card); }
.tm-tile img { display: block; flex: none; padding: 3px; border-radius: 8px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.tm-tile b { max-width: 100%; font-family: var(--font-display); line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tm-tile span { font-family: var(--font-display); font-weight: 700; line-height: 1; }
.tm-tile small { max-width: 100%; margin-top: 2px; color: var(--text-light); font-size: 14px; line-height: 1.25; }
.tm-tile { background: var(--surface-card); }
.tm-tile::before { content: ""; position: absolute; inset: 0; background: var(--tint, transparent); opacity: .13; }
.tm-tile > * { position: relative; }
.tm-head.f-drugs { background: var(--blue); } .tm-tile.f-drugs { --tint: var(--blue); } .tm-tile.f-drugs span { color: var(--blue); }
.tm-head.f-engineering { background: var(--series-c1); } .tm-tile.f-engineering { --tint: var(--series-c1); } .tm-tile.f-engineering span { color: var(--series-c1); }
.tm-head.f-materials { background: var(--orange); } .tm-tile.f-materials { --tint: var(--orange); } .tm-tile.f-materials span { color: var(--orange); }
.tm-tile.other { --tint: transparent; background: var(--chart-canvas); } .tm-tile.other b, .tm-tile.other span { color: var(--text-light); }
.tm-tile.o-eu { --tint: var(--blue); } .tm-tile.o-eu span { color: var(--blue); }
.tm-tile.o-non { --tint: var(--slide-us); } .tm-tile.o-non span { color: var(--slide-us); }
.tm-tile.o-none { background: var(--chart-canvas); } .tm-tile.o-none span { color: var(--text-light); }

/* Europe per US dollar: two bars per field against a parity line. */
.ratio { --ratio-label: 440px; position: relative; display: flex; align-items: center; height: 100%; }
.ratio-rows { position: relative; display: flex; flex-direction: column; gap: 26px; width: 100%; padding-top: 50px; }
.ratio-row { display: grid; grid-template-columns: var(--ratio-label) 1fr; align-items: center; --bar: var(--blue); }
.ratio-row.f-materials { --bar: var(--orange); } .ratio-row.f-engineering { --bar: var(--series-c1); }
.ratio-row.total { margin-top: 10px; padding-top: 36px; border-top: 2px solid var(--border-light); }
.ratio-row.muted { --bar: var(--text-light); margin-top: 10px; padding-top: 36px; border-top: 2px solid var(--border-light); }
.ratio-label { margin: 0; font-family: var(--font-display); font-size: 34px; font-weight: 700; }
.ratio-row.muted .ratio-label { color: var(--text-light); }
.rb { position: relative; height: 60px; background: var(--bar); }
.ratio-row.muted .rb { opacity: .55; }
.rb em { position: absolute; left: calc(100% + 14px); top: 50%; transform: translateY(-50%); font-family: var(--font-display); font-size: 38px; font-style: normal; font-weight: 700; color: var(--bar); white-space: nowrap; }
.parity { position: absolute; top: 0; bottom: -12px; border-left: 3px dashed var(--white); }
.parity span { position: absolute; top: 0; left: 12px; font-size: 22px; font-weight: 700; white-space: nowrap; }
.key i.soft { background: var(--geo-3); }

/* Business models: four stages along one axis, companies with logos. */
.models-band { padding-top: 70px; display: flex; flex-direction: column; }
.spectrum { display: flex; align-items: center; gap: 16px; margin: 4px 0 14px; color: var(--text-light); font-size: 18px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.spectrum i { flex: 1; height: 3px; background: linear-gradient(90deg, var(--border-light), var(--blue)); position: relative; }
.spectrum i::after { content: ""; position: absolute; right: -2px; top: -7px; border: 8px solid transparent; border-left: 12px solid var(--blue); border-right: 0; }
.stages { flex: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; min-height: 0; }
.stage { display: flex; flex-direction: column; padding: 18px 20px; border-radius: 14px; background: var(--chart-canvas); }
.stage-n { margin: 0; color: var(--blue); font-family: var(--font-display); font-size: 18px; font-weight: 700; }
.stage h2 { margin: 2px 0 0; font-family: var(--font-display); font-size: 28px; line-height: 1.1; }
.stage .how { margin: 6px 0 10px; color: var(--text-light); font-size: 17px; }
.stage ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 12px; }
.stage li { display: grid; grid-template-columns: 60px 1fr; gap: 14px; align-items: start; padding: 12px; border-radius: 10px; background: var(--surface-card); }
.stage li img { width: 60px; height: 60px; padding: 3px; border-radius: 10px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.stage li b { font-family: var(--font-display); font-size: 22px; }
.stage li .where { color: var(--text-light); font-size: 15px; }
.stage li p { margin: 3px 0 0; font-size: 16px; line-height: 1.3; }
.stage li p.rd { color: var(--blue); font-weight: 700; font-size: 15px; }
.models-note { margin: 12px 0 0; color: var(--text-light); font-size: 18px; }

/* Country table (the North of England keynote's layout): a fill bar in each cell. */
.ctable { width: 100%; margin-top: 36px; border-collapse: separate; border-spacing: 6px 5px; font-size: 21px; }
.ctable thead th { padding: 0 10px 6px; color: var(--text-light); font-size: 15px; font-weight: 700; letter-spacing: .04em; text-align: left; text-transform: uppercase; vertical-align: bottom; }
.ctable thead th small { display: block; margin-top: 2px; font-size: 13px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.ctable tbody th { padding: 0 10px; font-family: var(--font-display); font-size: 22px; font-weight: 700; text-align: left; white-space: nowrap; }
.ctable td { position: relative; height: 46px; padding: 0 10px; background: var(--chart-canvas); font-family: var(--font-display); }
.ctable td .fill { position: absolute; left: 0; top: 0; bottom: 0; opacity: .55; }
.ctable td b { position: relative; }
.ctable .c-companies .fill { background: var(--geo-2); opacity: .8; }
.ctable .c-breakouts .fill { background: var(--text-light); opacity: .25; }
.ctable .c-scaleups .fill { background: var(--purple); opacity: .3; }
.ctable .c-unicorns .fill { background: var(--series-c1); opacity: .3; }
.ctable .c-value .fill { background: var(--orange); opacity: .3; }
.ctable td.share { background: none; font-weight: 700; }
.ctable tr.hl th, .ctable tr.hl td.share { color: var(--blue); }
.ctable tr.hl td { box-shadow: inset 0 0 0 2px var(--blue); }
.ctable tr.rest th { color: var(--text-light); font-weight: 400; }
.ctable.sub { margin-top: 24px; border-spacing: 6px 2px; }
.ctable.sub td { height: 30px; font-size: 18px; }
.ctable.sub thead th { padding-bottom: 2px; }
.ctable.sub tbody th { font-size: 18px; font-weight: 400; }
.ctable.sub td b { font-weight: 400; }
.ctable.sub td.uni { width: 210px; background: none; padding: 0 0 0 14px; }
.ctable.sub td.uni img { display: block; max-width: 190px; max-height: 26px; }
.ctable.sub tr.grp th { padding-top: 6px; font-size: 16px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.ctable.sub tr.grp th.f-materials { color: var(--orange); }
.ctable.sub tr.grp th.f-engineering { color: var(--series-c1); }
.ctable.sub tr.grp th.f-drugs { color: var(--blue); }

/* Section dividers: the three sections listed, the current one lit (the Adams Street deck's divider). */
.night .sections { position: absolute; left: 128px; top: 330px; margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 46px; }
.night .sections li { display: grid; grid-template-columns: 166px auto; align-items: center; color: var(--slide-night-ink); opacity: .45; }
.night .sections .num { font-family: var(--font-display); font-weight: 700; font-size: 58px; line-height: 1; }
.night .sections h2 { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: 44px; line-height: 1.1; }
.night .sections li.on { opacity: 1; }
.night .sections li.on .num { position: relative; padding-left: 46px; margin-left: -46px; color: var(--slide-take); font-size: 86px; }
.night .sections li.on .num::before { content: ""; position: absolute; left: 0; top: -4px; bottom: -4px; width: 10px; background: var(--slide-take); }
.night .sections li.on h2 { font-size: 66px; }
.night .sections li.on p { margin: 12px 0 0; max-width: 900px; color: var(--slide-night-muted); font-size: 30px; line-height: 1.35; }

/* Definition slide: one band per field, a coloured edge, the definition, and a full-width row of logos. */
.def-band { display: flex; flex-direction: column; gap: 14px; padding-top: 70px; }
.def-row { flex: 1; display: grid; grid-template-columns: 430px 1fr; gap: 30px; align-items: center; padding: 0 0 0 28px; border-left: 10px solid var(--field); border-radius: 4px; background: var(--chart-canvas); }
.def-row.f-materials { --field: var(--orange); } .def-row.f-engineering { --field: var(--series-c1); } .def-row.f-drugs { --field: var(--blue); }
.def-text h2 { margin: 0; color: var(--field); font-family: var(--font-display); font-size: 40px; font-weight: 700; line-height: 1.05; }
.def-text p { margin: 8px 0 0; font-family: var(--font-display); font-size: 26px; font-weight: 700; line-height: 1.2; }
.def-text span { display: block; margin-top: 8px; color: var(--text-light); font-size: 17px; }
.def-row ul { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; margin: 0; padding: 0 22px 0 0; list-style: none; }
.def-row li { display: flex; flex-direction: column; align-items: center; gap: 8px; min-width: 0; }
.def-row li img { width: 120px; height: 120px; padding: 4px; border-radius: 16px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.def-row li b { max-width: 100%; font-size: 19px; line-height: 1.15; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.def-text .areas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.def-text .areas i { padding: 3px 10px; border-radius: 999px; border: 1.5px solid var(--field); color: var(--field); font-size: 14px; font-style: normal; font-weight: 700; }

/* Split slide (the Adams Street deck's slide 14): text left, chart panel right, top edge to footer. */
.slide.split .split-text { position: absolute; left: 80px; top: 60px; width: 450px; }
.split-text h1 { margin: 18px 0 0; font-size: 50px; line-height: 1.1; }
.split-text .big { margin: 40px 0 0; color: var(--blue); font-family: var(--font-display); font-size: 112px; font-weight: 700; line-height: 1; }
.split-text .big-note { margin: 8px 0 0; color: var(--text-light); font-size: 24px; line-height: 1.35; }
.split-text .split-sub { margin: 34px 0 0; color: var(--text-light); font-size: 21px; line-height: 1.4; }
.split-panel { position: absolute; left: 590px; right: 0; top: 0; bottom: 110px; display: flex; align-items: center; justify-content: center; padding: 36px 40px; background: var(--surface-card); }
.split-panel .snap { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }

/* Europe's share by founding decade (the Adams Street generation-shares chart, Europe only). */
.gens-band { padding-top: 60px; }
.gens { display: flex; flex-direction: column; height: 100%; }
.ghead, .grow { display: grid; grid-template-columns: 220px 560px 1fr; gap: 30px; align-items: center; }
.ghead { padding: 0 20px 8px; color: var(--text-light); font-size: 16px; font-weight: 700; }
.grow { flex: 1; padding: 6px 20px; border-radius: 10px; }
.grow.last { flex: 1.7; }
.grow.tint { background: var(--chart-canvas); }
.glabel b { display: block; font-family: var(--font-display); font-size: 28px; }
.glabel span { color: var(--text-light); font-size: 15px; }
.gbar { display: flex; align-items: center; height: 34px; }
.gbar i { display: block; height: 100%; background: var(--blue); }
.gbar i.ghost { background: none; border: 2px dashed var(--blue); border-left: 0; box-sizing: border-box; }
.gbar.count i { background: var(--series-c1); }
.gbar b { margin-left: 10px; color: var(--blue); font-family: var(--font-display); font-size: 32px; white-space: nowrap; }
.gbar b.ex { font-size: 20px; }
.gbar.count b { color: var(--series-c1); }
.gcap { margin: 4px 0 6px; color: var(--text-light); font-size: 15px; }
.glogos { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.gl { display: flex; align-items: center; height: 34px; }
.gl img { display: block; width: 100%; height: 100%; object-fit: contain; }
.gl sup { font-size: 14px; }
.gfoot { margin: 6px 20px 0; color: var(--text-light); font-size: 14px; }

/* Decacorns: stacked bars by country, legend and the newest names on the right. */
.deca { position: relative; height: 100%; }
.deca svg { display: block; width: 100%; height: 100%; overflow: visible; }
.deca svg .dt { font-size: 24px; font-weight: 700; text-anchor: middle; fill: var(--white); }
.deca svg .dx { font-size: 19px; text-anchor: middle; }
.deca svg rect { stroke: var(--surface-card); stroke-width: 1px; vector-effect: non-scaling-stroke; }
.deca svg .dl { font-size: 22px; font-weight: 700; dominant-baseline: middle; }
.deca svg .dv { font-weight: 400; fill: var(--text-light); }
.deca svg .base { stroke: var(--border); stroke-width: 2; }
.deca-new { position: absolute; left: 0; top: 0; width: 780px; }
.deca-new ul { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px 18px; margin: 14px 0 0; padding: 0; list-style: none; }
.deca-new li { display: flex; align-items: center; gap: 12px; min-width: 0; }
.deca-new img { flex: none; width: 56px; height: 56px; padding: 3px; border-radius: 12px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.deca-new b { font-size: 19px; line-height: 1.15; }

/* Slides without the footer logos: the chart takes the height the logos used. */
.slide.nologo .band { bottom: 64px; }
.slide.nologo .slide-foot { bottom: 18px; }
.slide.nologo .slide-foot .source { max-width: none; }
.slide.split.nologo .slide-foot { left: 80px; right: auto; width: 450px; bottom: 40px; flex-direction: column-reverse; align-items: flex-start; gap: 18px; font-size: 16px; }
.slide.split .chart-area.right { top: 0; bottom: 110px; left: 590px; padding: 40px 40px 30px; }

/* Netherlands: logo bars by funding; city bars. */
.nl { display: grid; grid-template-columns: 1fr 560px; gap: 80px; height: 100%; }
.nl ul { margin: 16px 0 0; padding: 0; list-style: none; }
.nl-cos li { display: grid; grid-template-columns: 58px 330px 1fr; align-items: center; gap: 18px; padding: 2px 0; }
.nl-cos img { width: 58px; height: 58px; padding: 3px; border-radius: 12px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.nl-name b { display: block; font-size: 23px; }
.nl-name span { display: block; color: var(--text-light); font-size: 16px; }
.nl-bar { display: flex; align-items: center; gap: 12px; }
.nl-bar i { display: block; height: 58px; min-width: 3px; background: var(--blue); }
.nl-bar em { font-style: normal; font-family: var(--font-display); font-size: 23px; font-weight: 700; white-space: nowrap; }
.nl-cities li { display: grid; grid-template-columns: 170px 1fr; align-items: center; gap: 14px; padding: 2px 0; font-size: 21px; }
.nl-cities .nl-bar i { height: 38px; background: var(--geo-2); }
.nl-cities .hl span, .nl-cities .hl em { color: var(--blue); font-weight: 700; }
.nl-cities .hl .nl-bar i { background: var(--blue); }
.nl-key { display: flex; gap: 28px; margin: 14px 0 0; color: var(--text-light); font-size: 17px; }
.nl-key span { display: flex; align-items: center; gap: 8px; }
.nl-key i { width: 14px; height: 14px; border-radius: 3px; background: var(--field); }
.nl-key .f-materials { --field: var(--orange); } .nl-key .f-engineering { --field: var(--series-c1); } .nl-key .f-drugs { --field: var(--blue); }

/* UK: stacked VC bars by field and the UK share of Europe per field. */
.uk { display: grid; grid-template-columns: 1fr 560px; gap: 90px; height: 100%; }
.uk svg { display: block; width: 100%; height: calc(100% - 40px); margin-top: 10px; overflow: visible; }
.uk svg rect { stroke: var(--surface-card); stroke-width: 1px; vector-effect: non-scaling-stroke; }
.uk svg .f-materials { fill: var(--orange); } .uk svg .f-engineering { fill: var(--series-c1); } .uk svg .f-drugs { fill: var(--blue); }
.uk svg .dt { font-size: 22px; font-weight: 700; text-anchor: middle; fill: var(--white); }
.uk svg .dx { font-size: 19px; text-anchor: middle; fill: var(--text-light); }
.uk svg .base { stroke: var(--border); stroke-width: 2; }
.uk-shares { margin: 24px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 40px; }
.uk-shares li p { display: flex; align-items: baseline; gap: 18px; margin: 0; }
.uk-shares b { font-family: var(--font-display); font-size: 72px; line-height: 1; color: var(--field); }
.uk-shares span { font-size: 24px; font-weight: 700; }
.uk-bar { height: 16px; margin-top: 12px; border-radius: 8px; background: var(--geo-1); overflow: hidden; }
.uk-bar i { display: block; height: 100%; background: var(--field); }
.uk-shares .uk-cap { margin-top: 8px; color: var(--text-light); font-size: 18px; }
.uk-shares .f-materials { --field: var(--orange); } .uk-shares .f-engineering { --field: var(--series-c1); } .uk-shares .f-drugs { --field: var(--blue); }
.slide.split.nologo .split-panel { bottom: 0; }

/* Founders slide: cities as small square bars, the Netherlands row set apart. */
.cbars { margin: 12px 0 0; padding: 0; list-style: none; }
.hbars .cbars li { display: grid; grid-template-columns: 112px 1fr; align-items: center; gap: 10px; padding: 1px 0; font-size: 19px; }
.cbars .bar { display: flex; align-items: center; gap: 10px; }
.hbars .cbars i { display: block; height: 30px; background: var(--blue); }
.cbars em { font-style: normal; font-family: var(--font-display); font-size: 19px; font-weight: 700; }
.cbars li.hl { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border-light); color: var(--blue); font-weight: 700; }
.cbars li.hl small { display: block; color: var(--text-light); font-size: 15px; font-weight: 400; }
.hbars .cbars li.hl i { background: var(--blue); }

/* Acquired companies: still counted, marked quietly. */
.tm-tile .acq-note { max-width: 190px; color: var(--text-light); font-style: italic; }
.tm-tile .acq-tag { position: absolute; top: 4px; right: 5px; padding: 0 4px; border-radius: 4px; background: var(--surface-card); color: var(--text-light); font-size: 11px; font-style: normal; line-height: 15px; }

/* Spinouts by parent university: logo-only market map. */
.spinmap { columns: 5; column-gap: 16px; height: 100%; padding-top: 30px; column-fill: auto; }
.sm-card { break-inside: avoid; margin: 0 0 10px; padding: 10px 12px 12px; border: 1px solid var(--border-light); border-radius: 12px; background: var(--chart-canvas); }
.sm-card.quiet { opacity: .8; }
.sm-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 8px; font-size: 23px; font-weight: 700; }
.sm-head .flag { margin-right: 8px; }
.sm-head b { color: var(--blue); font-family: var(--font-display); font-size: 28px; }
.sm-logos { display: flex; flex-wrap: wrap; gap: 4px; }
.sm-logos img, .sm-logos i { display: block; width: 33px; height: 33px; padding: 2px; border-radius: 8px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }

/* Critical technologies as squares by layer; each square fills to the share. */
.key i.cn { background: var(--series-c1); }
.techgrid { display: flex; flex-direction: column; gap: 12px; height: 100%; padding-top: 18px; }
.tg-row { flex: 1; display: grid; grid-template-columns: 175px 1fr; gap: 18px; min-height: 0; }
.tg-layer { margin: 0; padding-top: 6px; color: var(--text); font-family: var(--font-display); font-size: 19px; font-weight: 400; letter-spacing: .04em; text-transform: uppercase; }
.tg-cells { display: grid; grid-template-columns: repeat(7, 1fr); gap: 12px; }
.tg-cell { position: relative; display: flex; flex-direction: column; overflow: hidden; padding: 10px 14px; border-radius: 10px; background: var(--chart-canvas); --c: var(--blue); }
.tg-cell.r-us { --c: var(--slide-us); } .tg-cell.r-cn { --c: var(--series-c1); } .tg-cell.r-eu { --c: var(--blue); }
.tg-cell i { position: absolute; left: 0; right: 0; bottom: 0; background: var(--c); opacity: .2; }
.tg-cell > :not(i) { position: relative; }
.tg-cell b { font-size: 23px; line-height: 1.1; white-space: nowrap; }
.tg-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; margin: auto 0 6px; }
.tg-cell strong { flex: none; color: var(--c); opacity: .6; font-family: var(--font-display); font-size: 28px; font-weight: 400; line-height: 1; }
.tg-cell span { color: var(--text-light); font-size: 15px; font-weight: 400; line-height: 1.2; text-align: left; }
.tg-cell span em { font-style: normal; }
.tg-foot span { min-width: 0; }
.tg-cell.r-open span { font-size: 14px; }
.tg-key { position: static; grid-column: span 3; align-self: end; justify-self: end; font-size: 23px; }
.tg-key i { width: 18px; height: 18px; }
.tg-cell.r-open { --c: var(--blue); background: var(--surface-card); border: 2px dashed var(--geo-3); }
.tg-row.open .tg-layer { color: var(--text); }
.tg-note { grid-column: span 3; align-self: center; margin: 0; padding-left: 10px; color: var(--text-light); font-size: 20px; line-height: 1.35; }

/* Europe against the US ratio slide: bigger legend. */
.band:has(.ratio) .key { font-size: 24px; }
.band:has(.ratio) .key i { width: 20px; height: 20px; }

/* What we cover: three columns, a full wordmark per company. */
.def-band.cols3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; padding-top: 70px; }
.def-col { position: relative; display: flex; flex-direction: column; gap: 22px; padding: 24px 24px 24px; border-radius: 16px; }
.def-col::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--field); opacity: .08; }
.def-col > * { position: relative; }
.def-col.f-materials { --field: var(--orange); } .def-col.f-engineering { --field: var(--series-c1); } .def-col.f-drugs { --field: var(--blue); }
.def-col .def-text p { min-height: 2.4em; }
.def-col ul { flex: 1; display: grid; grid-template-rows: repeat(5, 1fr); gap: 12px; margin: 0; padding: 0; list-style: none; }
.def-col li { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 10px 24px; border-radius: 12px; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); min-height: 0; }
.def-col li img { max-width: 78%; max-height: 64px; width: auto; height: auto; object-fit: contain; }
.def-col li img.sq { width: 56px; height: 56px; }
.def-col li b { font-size: 22px; }

/* Pastel 100% stack (From Savings to Sovereignty style). */
.pstack { display: block; width: 100%; height: 100%; overflow: visible; }
.pstack .ps-0 { fill: var(--blue); fill-opacity: .45; }
.pstack .ps-1 { fill: var(--blue); fill-opacity: .25; }
.pstack .ps-2 { fill: var(--slide-us); fill-opacity: .25; }
.pstack .ps-3 { fill: var(--orange); fill-opacity: .22; }
.pstack .pf-materials { fill: var(--orange); fill-opacity: .3; }
.pstack .pf-engineering { fill: var(--series-c1); fill-opacity: .3; }
.pstack .pf-drugs { fill: var(--blue); fill-opacity: .3; }
.pstack rect { stroke: var(--surface-card); stroke-width: 2; }
.pstack .ps-v { fill: var(--text); font-size: 20px; font-weight: 700; text-anchor: middle; }
.pstack .ps-l { fill: var(--text); font-size: 24px; font-weight: 700; text-anchor: middle; }
.pstack .ps-s { fill: var(--text-light); font-size: 19px; text-anchor: middle; }
.pstack .ps-n { fill: var(--text-light); font-size: 22px; }
.pstack .ps-lead { fill: none; stroke: var(--text-light); stroke-width: 1.5; }

/* UK rounds by size: three small bar charts side by side. */
.rc { display: grid; grid-template-columns: repeat(3, 1fr); gap: 50px; height: 100%; }
.rc section { display: flex; flex-direction: column; min-height: 0; }
.rc h2 { margin: 0 0 6px; font-family: var(--font-display); font-size: 30px; }
.rc h2.f-materials { color: var(--orange); } .rc h2.f-engineering { color: var(--series-c1); } .rc h2.f-drugs { color: var(--blue); }
.rc svg { flex: 1; display: block; width: 100%; min-height: 0; overflow: visible; }
.rc rect.f-materials { fill: var(--orange); } .rc rect.f-engineering { fill: var(--series-c1); } .rc rect.f-drugs { fill: var(--blue); }
.rc rect.est { fill-opacity: .55; }
.rc rect.lag { fill-opacity: .08; stroke-width: 2; stroke-dasharray: 6 4; }
.rc rect.lag.f-materials { stroke: var(--orange); } .rc rect.lag.f-engineering { stroke: var(--series-c1); } .rc rect.lag.f-drugs { stroke: var(--blue); }
.rc.sizes .dt { font-size: 28px; } .rc.sizes .dx { font-size: 22px; }
.rc .dt { fill: var(--text); font-size: 20px; font-weight: 700; text-anchor: middle; }
.rc .dx { fill: var(--text-light); font-size: 18px; text-anchor: middle; }
.rc .base { stroke: var(--border-light); stroke-width: 2; }

/* Business models: four tinted buckets, full wordmarks. */
.def-band.cols4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; padding-top: 70px; }
.def-col.b-1 { --field: var(--blue); } .def-col.b-2 { --field: var(--series-c1); } .def-col.b-3 { --field: var(--slide-us); } .def-col.b-4 { --field: var(--orange); }
.cols4 .def-text h2 { font-size: 34px; }
.cols4 .def-text span { font-size: 20px; }
.cols4 .def-col ul { grid-template-rows: repeat(3, minmax(0, 150px)); align-content: start; }

/* Hidden until slide.js has fitted the title and charts (see reveal()). */
html:not(.sl-ready) .slide { visibility: hidden; }

/* Value over time: by field (lines) and by ownership (stacked bars). */
.evl, .evo { display: block; width: 100%; height: 100%; overflow: visible; }
.evl .evl-ln { fill: none; stroke-width: 4; stroke-linejoin: round; }
.evl .evl-ln.f-materials { stroke: var(--orange); } .evl .evl-ln.f-engineering { stroke: var(--series-c1); } .evl .evl-ln.f-drugs { stroke: var(--blue); }
.evl .evl-pt.f-materials, .evl .evl-end.f-materials { fill: var(--orange); }
.evl .evl-pt.f-engineering, .evl .evl-end.f-engineering { fill: var(--series-c1); }
.evl .evl-pt.f-drugs, .evl .evl-end.f-drugs { fill: var(--blue); }
.evl .evl-mk { fill: var(--surface-card); stroke: var(--blue); stroke-width: 3; }
.evl .evl-guide { stroke: var(--text-light); stroke-width: 1.5; stroke-dasharray: 5 6; }
.evl .evl-end, .evo .evo-end { font-size: 26px; font-weight: 700; }
.evl .evl-end tspan, .evo .evo-end tspan { fill: var(--text-light); font-weight: 400; }
.evo .evo-private { fill: var(--blue); }
.evo .evo-acquired { fill: var(--purple); }
.evo .evo-public { fill: var(--orange); }
.evo rect { stroke: var(--surface-card); stroke-width: 1.5; }
.evo .evo-t-private { fill: var(--blue); } .evo .evo-t-acquired { fill: var(--purple); } .evo .evo-t-public { fill: var(--orange); }
.evo .evo-tot { fill: var(--text); font-size: 26px; font-weight: 700; }

/* VC by round size: green to deep purple, small to large. */
.evo .rs-0 { fill: var(--series-c1); } .evo .rs-t-0 { fill: var(--series-c1); }
.evo .rs-1 { fill: var(--blue); } .evo .rs-t-1 { fill: var(--blue); }
.evo .rs-2 { fill: var(--purple); fill-opacity: .45; } .evo .rs-t-2 { fill: var(--purple); fill-opacity: .7; }
.evo .rs-3 { fill: var(--purple); fill-opacity: .75; } .evo .rs-t-3 { fill: var(--purple); }
.evo .rs-4 { fill: var(--purple); } .evo .rs-t-4 { fill: var(--purple); }
/* Funnel: four stages, bar heights on a log scale. */
.fnl { display: flex; align-items: flex-end; gap: 14px; height: 100%; padding-top: 10px; }
.fnl-logos { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 18px 24px; margin-bottom: auto; }
.fnl-logos img { display: block; max-width: 170px; max-height: 28px; }
.fnl-col:last-child { justify-content: space-between; height: 100%; }
.fnl-col { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; min-width: 0; }
.fnl-head b { display: block; font-family: var(--font-display); font-size: 80px; font-weight: 700; line-height: 1; color: var(--text); }
.fnl-head span { display: block; margin-top: 6px; font-family: var(--font-display); font-size: 32px; font-weight: 700; color: var(--text); }
.fnl-head small { display: block; font-size: 22px; color: var(--text-light); }
.fnl-bar { position: relative; margin-top: 14px; }
.fnl-bar::before { content: ''; position: absolute; inset: 0; background: var(--blue); }
.fnl-0::before { opacity: .3; } .fnl-1::before { opacity: .5; } .fnl-2::before { opacity: .75; } .fnl-3::before { opacity: 1; }
.fnl-bar p { position: absolute; left: 16px; right: 12px; bottom: 12px; margin: 0; font-family: var(--font-display); font-size: 19px; font-weight: 700; color: var(--text); white-space: nowrap; }
.fnl-3 p, .fnl-2 p { color: var(--surface-card); }
.fnl-now { margin: 16px 0 0; font-size: 24px; color: var(--text); }
.fnl-now b { font-family: var(--font-display); font-size: 44px; color: var(--orange); }
.fnl-prev { margin: 4px 0 0; font-size: 22px; color: var(--text-light); }
.fnl-arrow { align-self: center; margin-bottom: 0; font-size: 34px; color: var(--text-light); }

/* Deep tech: share of European VC (left, 2/3) and where it goes (right, 1/3), on one plot height. */
.dt { display: grid; grid-template-columns: 1100fr 560fr; gap: 40px; height: 100%; }
.dt section { display: flex; flex-direction: column; min-height: 0; }
.dt h2 { margin: 0 0 4px; font-family: var(--font-display); font-size: 26px; color: var(--text); }
.dt svg { flex: 1; width: 100%; min-height: 0; overflow: visible; }
.dt .dt-line { fill: none; stroke: var(--blue); stroke-width: 3.5; stroke-linejoin: round; }
.dt .dt-area { fill: url(#dtFill); }
.dt .dt-stop-top { stop-color: var(--blue); stop-opacity: .22; }
.dt .dt-stop-bottom { stop-color: var(--blue); stop-opacity: 0; }
.dt .dt-pt { fill: var(--surface-card); stroke: var(--blue); stroke-width: 3; }
.dt .dt-pt.last { fill: var(--blue); }
.dt .dt-val { fill: var(--text); font-size: 24px; font-weight: 700; }
.dt .dt-val.last { font-size: 30px; }
.dt .dt-hbar { fill: var(--blue); fill-opacity: .6; }
.dt .dt-hbar.sci { fill: var(--orange); fill-opacity: .7; }
.dt .dt-lbl { fill: var(--text); font-size: 22px; font-weight: 400; }
.dt .dt-lbl.sci { fill: var(--orange); }
.dt .dt-hval { fill: var(--text-light); font-size: 21px; font-weight: 400; }

/* Share chart: the last three years boxed, with their combined shares. */
svg .share-box { fill: var(--blue); fill-opacity: .05; stroke: var(--blue); stroke-opacity: .35; stroke-width: 2; }
svg .share-box-l { fill: var(--blue); font-size: 22px; font-weight: 700; }

/* Risks and questions side by side, headings only. */
.qs.rq { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-content: center; }
.qs.rq h2 { margin: 0 0 14px; color: var(--blue); font-family: var(--font-display); font-size: 22px; font-weight: 400; letter-spacing: .04em; text-transform: uppercase; }
.qs.rq li { gap: 28px; padding: 24px 0; }
.qs.rq li span, .qs.rq li p { font-size: 32px; }

/* University spinouts: one row per university, the bar made of company logos. */
.spinbars { margin: 0; padding: 26px 0 0; list-style: none; }
.spinbars li { display: grid; grid-template-columns: 190px 1fr; align-items: center; gap: 18px; padding: 2px 0; }
.sb-name { font-size: 21px; }
.sb-logos { display: flex; align-items: center; gap: 4px; }
.sb-logos img, .sb-logos i { display: block; width: 40px; height: 40px; padding: 2px; border-radius: 7px; object-fit: contain; background: var(--logo-tile-bg); border: 1px solid var(--logo-tile-border); }
.sb-logos em { margin-left: 12px; font-style: normal; font-family: var(--font-display); font-size: 22px; font-weight: 700; }
