/* ---------- Speaking: a poster wall. Praxtera AI Institute is the frame its engagements hang in. ---------- */
.sp2 { overflow-x: clip; padding-bottom: 96px; }
.sp2-hero { max-width: 1328px; margin: 0 auto; padding: clamp(16px, 3vw, 36px) var(--gutter) clamp(20px, 3vw, 36px); display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 16px 40px; }
.sp2-hero > h1 { font-size: clamp(3.5rem, 6.4vw, 6rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.045em; }

/* The frame */
.sp2-group { max-width: 1328px; margin: 0 auto; padding: 0 var(--gutter); }
.sp2-group--praxtera > * { --frame: var(--purple); }
.sp2-group--praxtera { --pad: clamp(16px, 2.6vw, 36px); position: relative; }
.sp2-group--praxtera::before { content: ''; position: absolute; inset: 0 var(--gutter); border: 12px solid var(--purple); border-radius: 4px; pointer-events: none; }
.sp2-group__head h2 { font-size: clamp(2rem, 3.6vw, 3.25rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.04em; }
.sp2-group--praxtera .sp2-group__head { padding: 20px calc(var(--pad) + 12px) 22px; background: var(--purple); color: #fff; border-radius: 4px 4px 0 0; }
:root[data-theme="dark"] .sp2-group--praxtera .sp2-group__head { color: #141413; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sp2-group--praxtera .sp2-group__head { color: #141413; } }
.sp2-group--praxtera .sp2-branch, .sp2-group--praxtera .sp2-group__members { margin-inline: calc(var(--pad) + 12px); }
.sp2-group--independent { margin-top: clamp(72px, 9vw, 120px); }
.sp2-group--independent .sp2-group__head { padding-bottom: 20px; border-bottom: 2px solid var(--ink); }

/* Posters */
.sp2-member, .sp2-branch {
  position: relative; container-type: inline-size; overflow: clip; min-height: 0;
  background: var(--c, var(--paper)); color: var(--on, var(--ink));
  box-shadow: 0 1px 1px rgb(26 26 26 / 0.14), 0 10px 18px -12px rgb(26 26 26 / 0.45);
  transition: translate 200ms cubic-bezier(0.16, 1, 0.3, 1), scale 120ms ease-out, box-shadow 200ms ease-out;
}
.sp2-member::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(118deg, rgb(255 255 255 / 0.1), transparent 38%, transparent 70%, rgb(0 0 0 / 0.06)); }
.sp2-member { aspect-ratio: 1 / 1.414; display: flex; flex-direction: column; padding: 6% 6% 7%; }
.sp2-member__name { font-size: var(--n, 18cqw); font-weight: 700; line-height: 1.02; letter-spacing: -0.055em; margin: -0.08em 0 0 -0.05em; text-wrap: balance; }
.sp2-sessions { list-style: none; margin: 3cqw 0 0; padding: 0; }
.sp2-session strong { display: block; font-size: 6.2cqw; font-weight: 600; line-height: 1.15; letter-spacing: -0.03em; text-wrap: balance; }
.sp2-session span { display: block; font-size: 4.2cqw; line-height: 1.3; margin-bottom: 2.4cqw; font-variant-numeric: tabular-nums; }
.sp2-member__title { margin-top: 3cqw; font-size: 6.2cqw; font-weight: 600; line-height: 1.15; }
.sp2-member__proofs { margin-top: auto; padding-top: 3.4cqw; border-top: 2px solid currentColor; font-size: 0.75rem; line-height: 1.4; }
.sp2-member__proofs h4 { font-size: 0.8125rem; font-weight: 700; }
.sp2-member__proofs p + p, .sp2-proof + .sp2-proof { margin-top: 0.6em; }
.sp2-member a, .sp2-branch a { color: inherit; font-weight: 600; text-underline-offset: 2px; }
@container (min-width: 480px) { .sp2-member__proofs { columns: 2; column-gap: 20px; } .sp2-proof { break-inside: avoid; } }

/* Each client's colour, and its name sized to fill the sheet */
#eagles { --c: var(--green); --on: #1A1A1A; }
#jacobson-strategic { --c: var(--yellow); --on: #1A1A1A; --n: 15cqw; }
#hp { --c: var(--blue); --on: #fff; --n: 44cqw; }
.sp2-logo { display: block; width: min(100%, var(--logo-h, 30cqw) * var(--ar)); aspect-ratio: var(--ar); background: currentColor;
  -webkit-mask: var(--logo) left center / contain no-repeat; mask: var(--logo) left center / contain no-repeat; }
.sp2-member__name:has(.sp2-logo) { margin: 0; }
#hp { --logo-h: 34cqw; } #eagles { --logo-h: 7cqw; } #cmu { --logo-h: 9cqw; } #atos { --logo-h: 14cqw; }
#morgan-lewis { --c: var(--red); --on: #fff; --n: 19cqw; }
#pbs { --c: #1A1A1A; --on: #F4F4EC; --n: 40cqw; }
#sonova { --c: var(--orange); --on: #1A1A1A; --n: 21cqw; }
#cmu { --c: var(--red); --on: #fff; --n: 12cqw; }
#atos { --c: var(--paper); --on: var(--ink); --n: 16cqw; }

/* Eagles: the keynote is the headline of the wall */
#eagles { --n: 8cqw; }
#eagles .sp2-member__proofs { margin-top: 2cqw; padding-top: 0; border: 0; columns: auto; font-size: inherit; flex: 1; display: flex; }
.sp2-proof--eagles { display: flex; flex-direction: column; width: 100%; }
#eagles .sp2-eagles__title { font-size: 21cqw; font-weight: 700; line-height: 0.98; letter-spacing: -0.06em; margin-left: -0.04em; }
.sp2-eagles__session { margin-top: 3cqw; font-size: 5cqw; font-weight: 600; }
.sp2-eagles__date { font-size: 9cqw; font-weight: 700; letter-spacing: -0.04em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.sp2-eagles__count { font-size: 4.4cqw; }
.sp2-eagles__sources { display: flex; flex-wrap: wrap; gap: 0 14px; font-size: 0.8125rem; }
/* The keynote photo prints across the top of the poster, edge to edge; the second frame joins it when pulled forward. */
#eagles .sp2-eagles__photo { order: -1; flex: none; margin: calc(-6% / 0.88) calc(-6% / 0.88) 4cqw; display: grid; grid-template-columns: 1fr; }
#eagles .sp2-eagles__photo img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; object-position: 50% 40%; }
#eagles .sp2-eagles__photo-more { display: none !important; }
#eagles.is-open .sp2-eagles__photo { margin: -36px -36px 28px; grid-template-columns: 2fr 1fr; gap: 4px; background: #1A1A1A; }
#eagles.is-open .sp2-eagles__photo img { height: 100%; aspect-ratio: auto; min-height: 220px; }
#eagles.is-open .sp2-eagles__photo-more { display: block !important; object-position: 50% 30%; }
@media (max-width: 760px) { .sp2-group__members > #eagles:not(.is-open) { aspect-ratio: auto; padding-bottom: calc(7% + 24px); } }

/* Praxtera's own record: the masthead of the frame. Role on top, then one whole line per column. */
.sp2-branch { --c: var(--paper); --on: var(--ink); margin-top: clamp(20px, 2.4vw, 32px); padding: clamp(28px, 4vw, 56px);
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: clamp(24px, 3vw, 48px); row-gap: clamp(24px, 3vw, 36px); align-items: start; }
.sp2-branch > .sp2-proof { margin: 0; }
.sp2-branch > .sp2-proof--scope { grid-column: 1 / -1; }
.sp2-branch__role { font-size: clamp(2rem, 3.4vw, 3rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.03em; color: var(--purple); }
.sp2-branch__meta { display: flex; flex-wrap: wrap; gap: 4px 24px; margin-top: 10px; color: var(--ink-2); font-size: 1.125rem; }
.sp2-branch > .sp2-proof:not(.sp2-proof--scope) { padding-top: 18px; border-top: 4px solid var(--purple); font-size: clamp(1.125rem, 1.4vw, 1.3rem); line-height: 1.5; }

/* The deck poster */
.sp2-deck { margin: 0; }
.sp2-deck img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; outline: 1px solid rgb(26 26 26 / 0.12); outline-offset: -1px; margin-bottom: 6px; }

/* The wall: posters pin to unit rows and overlap where their rows meet; z and tilt do the rest. */
.sp2-group__members { --u: calc((min(100vw, 1328px) - 2 * var(--gutter)) / 24); position: relative; display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); grid-template-rows: repeat(var(--rows, 22), var(--u)); margin-top: clamp(28px, 3vw, 44px); padding-bottom: 40px; }
.sp2-group__members > .sp2-member { grid-column: var(--gc) / span var(--gs); grid-row: var(--gr) / span 1; align-self: start; z-index: var(--z, 1); rotate: var(--r, 0deg); }
#eagles { --gc: 1; --gs: 10; --gr: 1; --z: 3; --r: -1deg; }
#jacobson-strategic { --gc: 10; --gs: 5; --gr: 2; --z: 4; --r: 2deg; }
#hp { --gc: 15; --gs: 5; --gr: 1; --z: 2; --r: -1.5deg; }
#morgan-lewis { --gc: 19; --gs: 5; --gr: 4; --z: 5; --r: 1.2deg; }
#pbs { --gc: 11; --gs: 5; --gr: 10; --z: 6; --r: -2deg; }
#sonova { --gc: 16; --gs: 6; --gr: 12; --z: 7; --r: 1.5deg; }
.sp2-group--praxtera .sp2-group__members { --rows: 17; }
.sp2-group--independent .sp2-group__members { --rows: 11; }
:root[data-theme="dark"] #pbs { outline: 1px solid rgb(255 255 255 / 0.22); outline-offset: -1px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) #pbs { outline: 1px solid rgb(255 255 255 / 0.22); outline-offset: -1px; } }
#cmu { --gc: 2; --gs: 8; --gr: 1; --z: 1; --r: -1deg; }
#atos { --gc: 11; --gs: 10; --gr: 2; --z: 2; --r: 1.4deg; aspect-ratio: auto; }
#atos .sp2-member__proofs { margin-top: 3cqw; }
.sp2-group--praxtera .sp2-group__members { margin-bottom: calc(var(--pad) + 12px); }
.sp2-group--praxtera { padding-bottom: 12px; }

/* The topic tree and the keynote fee */
.sp2-topics { max-width: 1328px; margin: 0 auto; padding: clamp(40px, 6vw, 88px) var(--gutter) 0; }
.sp2-topics > h2 { font-size: clamp(2rem, 3.6vw, 3.25rem); font-weight: 700; letter-spacing: -0.04em; line-height: 1.1; padding-bottom: 20px; border-bottom: 2px solid var(--ink); }

/* Pulling a poster forward */
.sp2-pull { position: absolute; inset: 0; z-index: 2; border: 0; background: none; cursor: zoom-in; }
.sp2-pull:focus-visible { outline: 3px solid var(--ink); outline-offset: -6px; }
@media (hover: hover) and (pointer: fine) { .sp2-member:not(.is-open):hover { translate: 0 -3px; box-shadow: 0 2px 2px rgb(26 26 26 / 0.12), 0 22px 34px -16px rgb(26 26 26 / 0.55); } }
.sp2-member:active:not(.is-open) { scale: 0.97; }
.is-open { position: fixed !important; inset: 0; margin: auto !important; z-index: 61 !important; rotate: none !important; translate: none !important;
  width: min(640px, 100vw - 24px); height: fit-content; max-height: calc(100dvh - 24px); aspect-ratio: auto !important; overflow-y: auto; overscroll-behavior: contain; columns: auto;
  box-shadow: 0 2px 4px rgb(0 0 0 / 0.2), 0 40px 80px -24px rgb(0 0 0 / 0.6); }
.is-open > .sp2-pull { display: none; }
.sp2-member.is-open { width: min(760px, 100vw - 24px); padding: clamp(24px, 5vw, 48px); }
.is-open .sp2-member__proofs { margin-top: 28px; padding-top: 24px; columns: auto; font-size: 1.0625rem; line-height: 1.6; text-wrap: pretty; }
.is-open .sp2-member__proofs h4 { font-size: 1.1875rem; line-height: 1.3; margin-bottom: 6px; letter-spacing: -0.01em; }
.is-open .sp2-proof + .sp2-proof { margin-top: 22px; }
.is-open .sp2-proof + .sp2-proof--cont { margin-top: 0.6em; }
.is-open .sp2-member__proofs h5 { font-size: 1.0625rem; font-weight: 700; margin-bottom: 4px; }
.is-open .sp2-proof + .sp2-proof:has(> h5) { margin-top: 1em; }
.sp2-quote { text-wrap: pretty; }
.sp2-quote::before { content: '“'; } .sp2-quote::after { content: '”'; }
.sp2-quote__by { margin-top: 8px; font-size: 0.9375rem; opacity: 0.85; }
.is-open .sp2-session strong { font-size: clamp(1.25rem, 3.2vw, 1.75rem); }
.is-open .sp2-session span { font-size: 1.0625rem; }
.sp2-scrim { position: fixed; inset: 0; z-index: 60; border: 0; background: rgb(20 20 19 / 0.74); cursor: zoom-out; }
.sp2-close { position: fixed; top: 12px; right: 12px; z-index: 62; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 0; background: var(--paper); color: var(--ink); font: 600 1rem var(--font); cursor: pointer; box-shadow: 0 0 0 2.5px var(--ink); }
html.sp2-locked { overflow: hidden; }

/* Phone: posters stack and overlap a little, each tilted its own way */
@media (max-width: 760px) {
  .sp2-hero > h1 { font-size: 3.5rem; }
  .sp2-group__members { display: block; padding-bottom: 8px; }
  .sp2-group__members > .sp2-member { width: 100%; margin-top: -20px; rotate: var(--r, 0deg); }
  .sp2-group__members > .sp2-member:first-child { margin-top: 0; }
  .sp2-group--praxtera::before { border-width: 8px; }
  .sp2-group--praxtera .sp2-branch, .sp2-group--praxtera .sp2-group__members { margin-inline: 14px; }
  .sp2-group--praxtera .sp2-group__head { padding: 16px 22px; }
  .sp2-branch { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) { .sp2-member, .sp2-branch { transition: none; } }

/* On the wall a poster shows only its face; the small print reads when you pull it forward. */
.sp2-group__members > .sp2-member:not(.is-open) .sp2-member__proofs { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.sp2-group__members > #eagles:not(.is-open) .sp2-member__proofs { position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; }
#eagles:not(.is-open) .sp2-eagles__sources,
#eagles:not(.is-open) .sp2-member__proofs > .sp2-proof:not(.sp2-proof--eagles) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#eagles.is-open .sp2-member__proofs { flex-direction: column; }
.sp2-group__members > .sp2-member:not(.is-open) { aspect-ratio: 1 / 1.3; }
.sp2-member:not(.is-open) .sp2-sessions { margin-top: auto; }
/* A light breeze: each sheet sways from its top edge, a little out of step with its neighbours. */
@media (prefers-reduced-motion: no-preference) {
  .sp2-group__members > .sp2-member:not(.is-open) { transform-origin: 50% 0; animation: sp2-breeze var(--breeze, 6s) ease-in-out var(--delay, 0s) infinite; }
  #jacobson-strategic { --breeze: 5.2s; --delay: -1.3s; }
  #hp { --breeze: 6.4s; --delay: -2.8s; }
  #morgan-lewis { --breeze: 5.6s; --delay: -0.6s; }
  #pbs { --breeze: 6.8s; --delay: -3.4s; }
  #sonova { --breeze: 5.9s; --delay: -2.1s; }
  #eagles { --breeze: 7.4s; --delay: -1.8s; }
  #cmu { --breeze: 6.2s; --delay: -0.9s; }
  #atos { --breeze: 5.4s; --delay: -2.5s; }
  @keyframes sp2-breeze {
    0%, 100% { transform: rotate(0deg) skewX(0deg); }
    30% { transform: rotate(0.9deg) skewX(-0.6deg); }
    65% { transform: rotate(-0.5deg) skewX(0.4deg); }
  }
  @media (hover: hover) and (pointer: fine) {
    .sp2-group__members > .sp2-member:not(.is-open):hover { animation-play-state: paused; transform: perspective(900px) rotateX(5deg) rotateY(-4deg); }
  }
}

/* ---- speaking topics: one sentence picks the talk; the grouped list is the full menu ---- */
.ts { margin-top: 36px; }
.ts__sentence { font: 750 clamp(2.25rem, 5.4vw, 4.6rem)/1.14 var(--font); letter-spacing: -0.045em; text-wrap: balance; }
.ts__field { position: relative; display: inline-block; max-width: 100%; }
.ts__tail { white-space: nowrap; }
.ts__field::after { content: ''; position: absolute; right: 0.12em; top: 50%; width: 0.26em; height: 0.26em; margin-top: -0.2em; border: solid currentColor;
  border-width: 0 0.075em 0.075em 0; rotate: 45deg; pointer-events: none; }
.ts__pick { appearance: none; -webkit-appearance: none; max-width: 100%; margin: 0; padding: 0 0.62em 0 0.04em; border: 0; border-bottom: 0.085em solid var(--orange);
  border-radius: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; cursor: pointer; field-sizing: content; }
.ts__pick option { font-size: 1rem; letter-spacing: normal; color: #1A1A1A; }
.ts__pick:focus-visible, .ts__alt:focus-visible, .ts__custom a:focus-visible, .ts__lead .ts__proof a:focus-visible, .ts__book:focus-visible, .ts__group .ts__talk:focus-visible { outline: 3px solid var(--ink); outline-offset: 4px; }
.ts__stage { margin-top: 56px; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 56px; align-items: start; }
.ts__lead .ts__title { font-size: clamp(2rem, 3.6vw, 3.25rem); line-height: 1.04; letter-spacing: -0.04em; text-wrap: balance; }
.ts__lead .ts__promise { margin-top: 18px; max-width: 56ch; font-size: 1.25rem; line-height: 1.5; color: var(--ink-2); text-wrap: pretty; }
.ts__lead .ts__proof { margin-top: 14px; font-weight: 700; color: var(--purple); }
.ts__book { margin-top: 28px; display: inline-flex; align-items: center; min-height: 48px; padding: 0 24px; border-radius: 999px; background: var(--ink); color: var(--map); font-weight: 700; text-decoration: none; }
.ts__alts { border-top: 2px solid var(--ink); }
.ts__alt { display: block; width: 100%; padding: 18px 0; border: 0; border-bottom: 1px solid color-mix(in srgb, var(--ink) 16%, transparent); background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.ts__alt b { display: block; font-size: 1.375rem; line-height: 1.15; letter-spacing: -0.02em; }
.ts__alt span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-top: 6px; font-size: 0.9375rem; line-height: 1.45; color: var(--ink-2); }
@media (hover: hover) and (pointer: fine) { .ts__alt:hover b, .ts__group .ts__talk:hover .ts__title { text-decoration: underline; text-underline-offset: 3px; } }
.ts__groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 44px 56px; }
.ts.is-js .ts__groups { margin-top: 48px; }
.ts.is-js .ts__groups { display: none; }
.ts__need { padding-bottom: 10px; border-bottom: 2px solid var(--ink); font-size: 1.375rem; font-weight: 750; letter-spacing: -0.025em; }
.ts__need::first-letter { text-transform: uppercase; }
.ts__list { display: flex; flex-direction: column; }
.ts__group .ts__talk { margin: 0; padding: 14px 0; border-bottom: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); }
.ts.is-js .ts__group .ts__talk { cursor: pointer; }
.ts__group .ts__title { font-size: 1.0625rem; font-weight: 700; letter-spacing: -0.01em; }
.ts__group .ts__promise { margin-top: 4px; font-size: 0.9375rem; line-height: 1.45; color: var(--ink-2); }
.ts__group .ts__proof { margin-top: 4px; font-size: 0.8125rem; font-weight: 700; color: var(--purple); }
@media (max-width: 760px) {
  .ts__stage, .ts__groups { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  .ts__lead .ts__promise { font-size: 1.0625rem; }
  .ts__sentence { font-size: clamp(1.625rem, 7.4vw, 2.25rem); }
  .ts__tail { white-space: normal; }
}
@media (prefers-reduced-motion: no-preference) { .ts__lead.is-new { animation: ts-in 360ms cubic-bezier(0.16, 1, 0.3, 1); } @keyframes ts-in { from { opacity: 0; translate: 0 10px; } } }

/* ---- page order: the finder, then the wall as its evidence, then one closing line ---- */
.sp2-hero > h1 { font-size: clamp(1.25rem, 1.6vw, 1.5rem); letter-spacing: -0.02em; color: var(--ink-2); }
.ts { margin-top: 0; }
.ts__custom { margin-top: 22px; font-size: 1rem; line-height: 1.5; color: var(--ink-2); }
.ts__custom a { color: var(--ink); font-weight: 700; text-underline-offset: 3px; }
.ts.is-js .ts__custom { margin-top: 18px; }
.ts__lead .ts__proof a { color: inherit; text-decoration: none; }
.ts__lead .ts__proof a::after { content: ' \2192'; }
@media (hover: hover) and (pointer: fine) { .ts__lead .ts__proof a:hover { text-decoration: underline; text-underline-offset: 3px; } }
.sp2-wall { max-width: 1328px; margin: clamp(96px, 11vw, 160px) auto 0; padding: 0 var(--gutter); font-size: clamp(2.25rem, 4.6vw, 4rem); font-weight: 750; letter-spacing: -0.045em; line-height: 1.05; }
.sp2-wall + .sp2-group { margin-top: clamp(28px, 3vw, 40px); }
.sp2-end { width: min(1328px - 2 * var(--gutter), 100% - 2 * var(--gutter)); margin: clamp(96px, 11vw, 160px) auto 0; padding: 40px 0 0; border-top: 2px solid var(--ink); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 32px; scroll-margin-top: 24px; }
.sp2-end h2 { flex: 1 1 0; min-width: min(100%, 16ch); max-width: 24ch; font-size: clamp(2rem, 4.2vw, 3.6rem); font-weight: 750; letter-spacing: -0.045em; line-height: 1.05; }
.sp2-end__link { display: inline-flex; align-items: center; min-height: 52px; padding: 0 28px; border-radius: 999px; background: var(--ink); color: var(--map); font-weight: 700; font-size: 1.0625rem; text-decoration: none; }
.sp2-end__link:focus-visible { outline: 3px solid var(--ink); outline-offset: 4px; }

