/* Biography view: profile banner, fact ribbon, sticky section nav, life-story tabs,
   timeline, quotes, videos, photos and a sticky biodata sheet. Uses the theme tokens. */
.bv{--bv-r:calc(var(--radius) + 6px);margin:0 0 2.5rem}
.bv *{box-sizing:border-box}
.bv-wrap{max-width:1200px;margin:0 auto;padding:0 1.25rem}
/* banner */
.bv-hero{position:relative;display:grid;grid-template-columns:230px 1fr;gap:2rem;align-items:end;padding:2.2rem 2.2rem 4.6rem;border-radius:var(--bv-r);color:#fff;overflow:hidden;
  background:radial-gradient(900px 380px at 85% -10%,hsl(var(--primary)/.55),transparent 60%),radial-gradient(600px 300px at 0% 110%,hsl(var(--primary)/.28),transparent 60%),linear-gradient(135deg,#15121a,#241519 55%,#2b1013)}
.bv-hero::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.03) 0 2px,transparent 2px 14px);pointer-events:none}
.bv-hero>*{position:relative;z-index:1}
.bv-portrait{width:230px;aspect-ratio:3/4;border-radius:1.4rem;overflow:hidden;background:#2a2024;border:3px solid rgba(255,255,255,.9);box-shadow:0 22px 50px rgba(0,0,0,.45)}
.bv-portrait img{width:100%;height:100%;object-fit:cover;display:block}
.bv-portrait .ph{display:grid;place-items:center;width:100%;height:100%;color:rgba(255,255,255,.5)}
.bv-portrait .ph svg{width:4rem;height:4rem}
.bv-kicker{display:inline-flex;align-items:center;gap:.45rem;padding:.25rem .75rem;border-radius:999px;background:rgba(255,255,255,.14);backdrop-filter:blur(4px);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.bv-name{margin:.7rem 0 .2rem;font-size:clamp(2rem,5vw,3.4rem);line-height:1.04;font-weight:900;letter-spacing:-.035em;color:#fff}
.bv-role{margin:0;font-size:1.1rem;font-weight:600;color:rgba(255,255,255,.82)}
.bv-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none}
.bv-chips li{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .8rem;border-radius:999px;border:1px solid rgba(255,255,255,.28);font-size:.85rem;font-weight:700}
.bv-chips svg{width:.9rem;height:.9rem}
.bv-social{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}
.bv-social a{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .85rem;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-size:.82rem;font-weight:700;text-decoration:none;transition:background .15s}
.bv-social a:hover{background:hsl(var(--primary))}
.bv-social svg{width:1rem;height:1rem}
/* fact ribbon overlaps the banner */
.bv-ribbon{position:relative;z-index:2;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin:-2.6rem 1.4rem 0;padding:.9rem;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--bv-r);box-shadow:0 14px 34px rgba(0,0,0,.12)}
.bv-fact{padding:.55rem .8rem;border-radius:calc(var(--radius) - 2px);min-width:0}
.bv-fact span{display:block;font-size:.7rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:hsl(var(--muted-foreground))}
.bv-fact b{display:block;margin-top:.15rem;font-size:1.02rem;font-weight:800;line-height:1.25;overflow-wrap:anywhere}
/* sticky nav */
.bv-nav{position:sticky;top:.5rem;z-index:20;display:flex;gap:.4rem;overflow-x:auto;margin:1.4rem 0 1.6rem;padding:.4rem;background:hsl(var(--card)/.92);backdrop-filter:blur(8px);border:1px solid hsl(var(--border));border-radius:999px;scrollbar-width:none}
.bv-nav::-webkit-scrollbar{display:none}
.bv-nav a{flex:none;padding:.5rem 1rem;border-radius:999px;font-size:.88rem;font-weight:700;color:hsl(var(--muted-foreground));text-decoration:none;white-space:nowrap;transition:background .15s,color .15s}
.bv-nav a:hover{color:hsl(var(--foreground))}
.bv-nav a.on{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}
/* layout */
.bv-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.75rem;align-items:start}
.bv-main{display:grid;grid-template-columns:minmax(0,1fr);gap:1.75rem;min-width:0}
.bv-side{position:sticky;top:4.6rem;display:grid;gap:1.1rem}
.bv-card{min-width:0;background:hsl(var(--card));color:hsl(var(--card-foreground));border:1px solid hsl(var(--border));border-radius:var(--bv-r);padding:1.4rem}
.bv-sec{scroll-margin-top:5rem}
.bv-h{display:flex;align-items:center;gap:.6rem;margin:0 0 1rem;font-size:1.25rem;font-weight:900;letter-spacing:-.02em}
.bv-h i{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.6rem;background:hsl(var(--primary)/.12);color:hsl(var(--primary));font-style:normal}
.bv-h svg{width:1.05rem;height:1.05rem}
.bv-lead{font-size:1.12rem;line-height:1.75}
.bv-lead>*:first-child{margin-top:0}
/* tabs */
.bv-tabs{display:flex;gap:.4rem;margin-bottom:1rem;overflow-x:auto;border-bottom:1px solid hsl(var(--border));scrollbar-width:none}
.bv-tabs button{flex:none;padding:.7rem 1rem;border:0;background:none;font:inherit;font-weight:800;color:hsl(var(--muted-foreground));border-bottom:3px solid transparent;margin-bottom:-1px;cursor:pointer}
.bv-tabs button[aria-selected="true"]{color:hsl(var(--primary));border-color:hsl(var(--primary))}
.bv-tabs button:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:-2px;border-radius:.4rem}
.bv-panel[hidden]{display:none}
.bv-panel .prose{max-width:none}
/* timeline */
.bv-tl{position:relative;margin:0;padding:0 0 0 .2rem;list-style:none;display:grid;gap:1.1rem}
.bv-tl::before{content:"";position:absolute;left:3.4rem;top:.4rem;bottom:.4rem;width:2px;background:hsl(var(--border))}
.bv-tl li{display:grid;grid-template-columns:3.6rem 1fr;gap:1.3rem;align-items:start}
.bv-tl time{position:relative;padding:.25rem .4rem;border-radius:.5rem;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-size:.8rem;font-weight:800;text-align:center}
.bv-tl p{margin:.1rem 0 0;line-height:1.6}
/* quotes */
.bv-quotes{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.6rem}
.bv-q{flex:0 0 min(420px,86%);scroll-snap-align:start;display:grid;gap:.9rem;padding:1.3rem;border-radius:var(--bv-r);background:linear-gradient(160deg,hsl(var(--primary)/.09),transparent 70%),hsl(var(--muted)/.5);border:1px solid hsl(var(--border))}
.bv-q svg.qm{width:2rem;height:2rem;color:hsl(var(--primary))}
.bv-q blockquote{margin:0;font-size:1.12rem;line-height:1.6;font-weight:600}
.bv-q footer{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-size:.82rem;color:hsl(var(--muted-foreground));font-weight:700}
.bv-copy{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .7rem;border-radius:999px;border:1px solid hsl(var(--border));background:hsl(var(--card));color:inherit;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer}
.bv-copy.copied{background:hsl(142 65% 38%);color:#fff;border-color:transparent}
/* videos */
.bv-vids{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
.bv-vid{display:grid;gap:.5rem}
.bv-vid .f{aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:#000}
.bv-vid iframe{width:100%;height:100%;border:0}
.bv-vid p{margin:0;font-weight:700;font-size:.92rem}
/* photos */
.bv-photos{columns:3 180px;column-gap:.7rem}
.bv-photos a{display:block;margin:0 0 .7rem;border-radius:var(--radius);overflow:hidden;break-inside:avoid;position:relative}
.bv-photos img{width:100%;height:auto;display:block;transition:transform .3s}
.bv-photos a:hover img{transform:scale(1.04)}
/* biodata sheet */
.bv-sheet h3{margin:0 0 .8rem;font-size:1.05rem;font-weight:900}
.bv-grp{margin:0 0 1rem}
.bv-grp:last-child{margin-bottom:0}
.bv-grp h4{margin:0 0 .35rem;font-size:.7rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:hsl(var(--primary))}
.bv-dl{margin:0;display:grid}
.bv-dl>div{display:grid;grid-template-columns:42% 1fr;gap:.6rem;padding:.55rem 0;border-bottom:1px dashed hsl(var(--border));font-size:.92rem;line-height:1.45}
.bv-dl>div:last-child{border-bottom:0}
.bv-dl dt{font-weight:700;color:hsl(var(--muted-foreground))}
.bv-dl dd{margin:0;font-weight:700;overflow-wrap:anywhere}
.bv-dl dd ul{margin:0;padding-left:1rem;font-weight:600}
.bv-share{display:flex;gap:.5rem}
.bv-share .bv-copy{flex:1;justify-content:center;padding:.6rem}
@media(max-width:980px){
  .bv-grid{grid-template-columns:minmax(0,1fr)}
  .bv-side{position:static}
}
@media(max-width:700px){
  .bv-wrap{padding:0 .8rem}
  .bv-hero{grid-template-columns:1fr;justify-items:center;text-align:center;padding:1.6rem 1.1rem 4rem;gap:1.1rem}
  .bv-portrait{width:150px}
  .bv-chips,.bv-social{justify-content:center}
  .bv-ribbon{margin:-2.4rem .5rem 0;grid-template-columns:repeat(2,1fr)}
  .bv-card{padding:1.1rem}
  .bv-tl::before{left:2.6rem}.bv-tl li{grid-template-columns:2.6rem 1fr;gap:1.1rem}
}
@media print{.bv-nav,.bv-social,.bv-share,.bv-copy{display:none!important}.bv-hero{background:#fff!important;color:#000!important}}
@media(prefers-reduced-motion:reduce){.bv *{transition:none!important}}

/* the article drop cap does not belong inside the profile cards */
.bv .prose>p:first-child::first-letter{float:none;font-size:inherit;line-height:inherit;margin:0;padding:0;color:inherit;font-weight:inherit;font-family:inherit}
.bv-dl>div.long{grid-template-columns:1fr;gap:.2rem}
.bv-dl>div.long dd{font-weight:500;line-height:1.6}

/* The site's icon sprite draws outlines (stroke) and expects class="icon" for that;
   these inline <svg><use> icons had no such class and rendered as solid black blobs. */
.bv svg{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.bv-hero svg,.bv-social svg,.bv-chips svg{flex:none}
.bv-q svg.qm{fill:hsl(var(--primary)/.2)}
