.speaker-jump-links{display:flex;flex-wrap:wrap;gap:12px 24px;padding:30px 0;border-bottom:1px solid var(--border-hover)}
.speaker-jump-links a{font-size:15px;color:#a8cfff;text-decoration:underline;text-underline-offset:5px}
.speaker-photo-group{margin-top:48px}.speaker-photo-group>h3{margin-bottom:22px}
.speaker-photo-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px}
.speaker-photo{grid-column:span 4}
.gallery-stage .speaker-photo,.gallery-people .speaker-photo{grid-column:span 6}
.gallery-global .speaker-photo:nth-child(-n+2){grid-column:span 6}
.speaker-photo{min-width:0;overflow:hidden;border:1px solid var(--border-hover);border-radius:18px;background:#0d0f12}
.speaker-photo>a{display:block;overflow:hidden}.speaker-photo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:center top}
.speaker-photo.portrait img{aspect-ratio:3/4}
.speaker-photo figcaption{padding:18px;display:flex;flex-direction:column;gap:10px;font-size:15px}
.speaker-photo figcaption span{font-weight:600;color:var(--white)}
.speaker-photo figcaption a{width:fit-content;padding:6px 0}
.speaker-bios{display:grid;grid-template-columns:1fr 1.5fr;gap:24px;margin:36px 0 24px}
.speaker-bios .page-card p{font-size:16px}
.page-section a{overflow-wrap:anywhere}
.jim-kwik-photo>a:first-child{position:relative;aspect-ratio:4/3}
.jim-kwik-photo img{position:absolute;left:50%;top:50%;width:75%;height:133.333333%;max-width:none;aspect-ratio:auto;object-position:center;transform:translate(-50%,-50%) rotate(-90deg)}

/* A warm portrait, with a restrained entrance and slow movement in the backdrop. */
.speaker-hero .hero-layout{grid-template-columns:1.25fr .9fr;gap:clamp(32px,5vw,72px)}
.speaker-hero-copy{animation:speaker-arrive 850ms cubic-bezier(.2,.7,.2,1) both}
.speaker-hero h1{font-size:clamp(2.8rem,4.6vw,4.4rem);line-height:1.06;max-width:15ch;letter-spacing:-.035em}
.speaker-hero .visual-scene img{animation:speaker-scene-drift 24s ease-in-out infinite alternate;transform-origin:70% center}
.speaker-hero-portrait{position:relative;justify-self:end;width:100%;max-width:430px;animation:speaker-arrive 1s 140ms cubic-bezier(.2,.7,.2,1) both}
.speaker-hero .speaker-hero-portrait .page-portrait{width:100%;max-width:none;max-height:none;aspect-ratio:4/5;object-fit:cover;border-radius:24px;border:1px solid rgba(255,255,255,.25);box-shadow:0 22px 70px rgba(0,0,0,.24)}
.speaker-hero-portrait figcaption{position:absolute;inset:auto 16px 16px;padding:20px 22px;border-radius:14px;display:grid;gap:5px;background:rgba(8,10,13,.84);backdrop-filter:blur(12px);color:#e0e4e9}
.speaker-hero-portrait figcaption>span:first-child{font:10px var(--font-mono);letter-spacing:.15em;color:#a7c9e8}
.speaker-hero-portrait strong{font-size:21px;color:#fff;line-height:1.3}
.speaker-hero-portrait figcaption>span:last-child{font-size:12px;line-height:1.5}
@keyframes speaker-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes speaker-scene-drift{from{transform:scale(1)}to{transform:scale(1.06)}}

/* The coastal scene carries a thought into the talk themes. */
.speaker-reflection{position:relative;isolation:isolate;overflow:hidden;border-radius:24px}
.speaker-reflection picture{border:0;border-radius:0}
.speaker-reflection img{height:clamp(390px,40vw,510px);object-position:center 55%}
.speaker-reflection::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(8,10,13,.91),rgba(8,10,13,.72) 42%,rgba(8,10,13,.1));pointer-events:none}
.speaker-reflection figcaption{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(28px,5vw,66px);max-width:760px}
.speaker-reflection .speaker-reflection-line{font-size:clamp(1.8rem,3.1vw,2.7rem);line-height:1.17;font-weight:650;letter-spacing:-.025em;color:#fff;margin-bottom:24px}
.speaker-reflection figcaption>p:last-child{max-width:38ch;font-size:16px;line-height:1.7;color:#e2e7ee}

.speaker-topics h2{font-size:clamp(2.45rem,5vw,4rem);max-width:24ch;line-height:1.07}
.speaker-topics h2 span{color:#8fc8ff}
.speaker-topics .speaker-topics-intro{max-width:56ch;color:#c9d1dc}
.speaker-topics .page-grid{gap:26px;margin-top:44px}
.speaker-topics .page-card{position:relative;display:flex;flex-direction:column;padding:38px;border-radius:24px;border-top:3px solid #7bbaf1;background:linear-gradient(155deg,#192735,#11161b 70%)}
.speaker-topics .page-card .kicker{font-size:14px;font-weight:700;letter-spacing:.08em;color:#93c8f5;margin-bottom:26px}
.speaker-topics .page-card h3{font-size:clamp(1.65rem,2.35vw,2.15rem);line-height:1.16;letter-spacing:-.022em;color:#fff;max-width:19ch;margin-bottom:22px;font-weight:700}
.speaker-topics .page-card p{font-size:17px;line-height:1.8;color:#d8e0e9;max-width:48ch;margin-bottom:0}
.speaker-booking .wrap{max-width:820px}
.speaker-booking .wrap>.kicker,.speaker-booking h2,.speaker-booking .wrap>p{text-align:center;margin-left:auto;margin-right:auto}
.speaker-booking h2{max-width:24ch}
.speaker-booking .form-shell{width:100%;max-width:760px;margin:36px auto 0;text-align:left;padding:clamp(24px,4vw,44px)}
.speaker-page [id]{scroll-margin-top:110px}

@media(max-width:900px){.speaker-bios{grid-template-columns:1fr}.speaker-hero .hero-layout{grid-template-columns:1fr 1fr;gap:28px}}
@media(max-width:768px){.speaker-hero .hero-layout{grid-template-columns:1fr;gap:40px}.speaker-hero h1{font-size:clamp(2.15rem,9vw,3.25rem);max-width:18ch}.speaker-hero-portrait{max-width:350px;justify-self:center}.speaker-topics .page-card{padding:28px}.speaker-reflection figcaption{padding:30px}.speaker-reflection figcaption .kicker{font-size:10px}.speaker-reflection img{height:440px}}
@media(max-width:680px){.speaker-photo-grid{grid-template-columns:1fr;gap:20px}.speaker-photo,.gallery-stage .speaker-photo,.gallery-people .speaker-photo,.gallery-global .speaker-photo:nth-child(-n+2){grid-column:1}.speaker-jump-links{gap:14px 20px}.speaker-hero-portrait figcaption{padding:16px}.speaker-topics h2{font-size:2.45rem}.speaker-reflection .speaker-reflection-line{font-size:clamp(1.6rem,6vw,2rem)}}
@media(prefers-reduced-motion:reduce){.speaker-hero-copy,.speaker-hero-portrait,.speaker-hero .visual-scene img{animation:none;transform:none}html{scroll-behavior:auto}}
