.organigram-hero { max-width: 820px; margin: 3rem 0 2.5rem; }
.organigram-hero p { max-width: 620px; color: #557087; font-size: 1.12rem; }
.organigram-hero .organigram-actions { display: flex; flex-wrap: wrap; gap: .6rem; max-width: none; }
.organigram-actions form { margin: 0; }
.organigram-toggle { display: flex; gap: .5rem; margin: 1.25rem 0; }
.organigram-toggle .button.active { border-color: var(--navy); background: var(--navy); color: #fff; }
.organigram-search { max-width: 620px; margin: 1rem 0; }
.organigram-search label { display: block; margin-bottom: .35rem; color: var(--navy); font-weight: 700; }
.organigram-search div { display: flex; flex-wrap: wrap; gap: .5rem; }
.organigram-search input { flex: 1 1 260px; min-height: 2.7rem; padding: .55rem .7rem; border: 1px solid var(--blue); font: inherit; }
.organigram-section { margin: 2.5rem 0; padding-top: 1.5rem; border-top: 2px solid var(--blue); }
.organigram-section-heading { display: flex; align-items: baseline; gap: 1rem; margin-bottom: 1.4rem; }
.organigram-section-heading h2 { margin: 0; }
.organigram-section-heading p { margin: 0; color: #557087; }
.people-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(155px, 1fr)); gap: 2rem 1.25rem; }
.person-card { position: relative; min-width: 0; text-align: center; outline: none; }
.person-card:focus-visible .person-portrait { outline: 3px solid var(--blue); outline-offset: 4px; }
.person-portrait { width: min(100%, 142px); aspect-ratio: 1; margin: 0 auto .7rem; overflow: hidden; border: 3px solid var(--pale); border-radius: 50%; background: #e9f3f8; }
.person-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
/* Karin Ingold's source portrait places her face to the right of centre. */
.person-portrait--ingold img { object-position: 92% center; }
/* Olivia's portrait is tall; favour the top of the image to keep her hair visible. */
.person-portrait--romppainen-martius img { object-position: center 25%; }
/* Sabine's portrait needs a little more room above her head. */
.person-portrait--hoffmann img { object-position: center 12%; }
/* Keep more of Christian Erik Pohl's tall portrait within the circular frame. */
.person-portrait--pohl { background: #302f2d; }
.person-portrait--pohl img { object-fit: contain; }
/* Sebastian Engelke's tall outdoor portrait benefits from a contained crop. */
.person-portrait--engelke { background: #29451c; }
.person-portrait--engelke img { object-fit: contain; }
/* Thomas Frölicher is positioned on the right of a wide source image. */
.person-portrait--frolicher img { object-position: 98% center; }
/* Mischa Croci-Maspoli sits slightly left of centre in the source portrait. */
.person-portrait--croci-maspoli img { object-position: 33% center; }
/* Michael Lehning's source portrait has more surrounding space than the card needs. */
.person-portrait--lehning img { transform: scale(1.35); transform-origin: center 42%; }
/* Nicolas Gruber's wide portrait needs a small rightward shift and tighter crop. */
.person-portrait--gruber img { object-position: 65% center; transform: scale(1.15); transform-origin: 60% center; }
/* Andreas Prein's portrait is a close, tall headshot. */
.person-portrait--prein { background: #bcbcbc; }
.person-portrait--prein img { object-fit: contain; }
/* Claus Jacobs' tall portrait needs more room above the head. */
.person-portrait--jacobs img { object-position: center 14%; }
/* Tobias Schmidt's close, tall portrait needs a little more room around it. */
.person-portrait--schmidt { background: #aebfc2; }
.person-portrait--schmidt img { object-fit: contain; }
/* Helen Keller's full-body portrait needs a higher, closer head-and-shoulders crop. */
.person-portrait--keller img { object-position: center 8%; transform: scale(1.15); transform-origin: center 32%; }
/* Frédéric Varone's tall portrait needs a slightly higher focal point. */
.person-portrait--varone img { object-position: center 20%; }
/* Lukas Gudmundsson's tall portrait needs more space above the head. */
.person-portrait--gudmundsson img { object-position: center 10%; }
/* Viktoria Cologna is positioned to the right in a wide source portrait. */
.person-portrait--cologna img { object-position: 88% center; }
/* Quynh Nguyen's tall portrait needs a higher focal point. */
.person-portrait--nguyen img { object-position: center 12%; }
/* Jing Zeng is positioned to the right in a wide source portrait. */
.person-portrait--zeng img { object-position: 88% center; }
/* Tobias Brosch's close, tall outdoor portrait needs a wider framing. */
.person-portrait--brosch { background: #75924f; }
.person-portrait--brosch img { object-fit: contain; }
/* Adrienne Grêt-Regamey's portrait needs a little more space around it. */
.person-portrait--gret-regamey, .person-portrait--gretregamey { background: #eceae8; }
.person-portrait--gret-regamey img, .person-portrait--gretregamey img { object-fit: contain; }
/* Manuela Brunner's tall portrait needs a higher focal point. */
.person-portrait--brunner img { object-position: center 8%; }
/* Annelie Holzkaemper is slightly right of centre in an already-square portrait. */
.person-portrait--holzkaemper img { transform: scale(1.1) translateX(-8%); }
/* Ana Vicedo-Cabrera's full-body portrait needs a close, face-centred crop. */
.person-portrait--vicedo-cabrera img, .person-portrait--vicedocabrera img { object-position: center top; transform: scale(1.52) translate(-10%, -6%); transform-origin: center 28%; }
/* Catharina Bening's portrait benefits from a slightly wider framing. */
.person-portrait--bening { background: #2d3a43; }
.person-portrait--bening img { object-fit: contain; }
/* Hans Gersbach's close, tall portrait needs a wider framing. */
.person-portrait--gersbach { background: #b0c6d0; }
.person-portrait--gersbach img { object-fit: contain; }
/* Julian Koelbel's close, tall portrait needs a wider framing. */
.person-portrait--koelbel { background: #b6d5dd; }
.person-portrait--koelbel img { object-fit: contain; }
/* Bjarne Steffen's portrait benefits from a slightly wider framing. */
.person-portrait--steffen { background: #c7c6c4; }
.person-portrait--steffen img { object-fit: contain; }
/* Reto Knutti's close, tall portrait needs a wider framing. */
.person-portrait--knutti { background: #c7c7c9; }
.person-portrait--knutti img { object-fit: contain; }
/* Markus Leippold's portrait needs a slightly wider, centred framing. */
.person-portrait--leippold { background: #06242b; }
.person-portrait--leippold img { object-fit: contain; }
/* Thomas Schulthess' portrait needs more room above his hair. */
.person-portrait--schulthess img { object-position: center 4%; }
/* Christiane Tretter's portrait needs a higher focal point for her hair. */
.person-portrait--tretter img { object-position: center top; }
/* Joost VandeVondele's portrait needs more room above the head. */
.person-portrait--vande-vondele img, .person-portrait--vandevondele img { object-position: center top; }
/* Michele Volpi's tall upper-body portrait needs a top-aligned crop. */
.person-portrait--volpi img { object-position: center top; }
/* Charlotte Blattner's wide, full-body portrait needs a close face-centred crop. */
.person-portrait--blattner img { object-position: 56% 35%; transform: scale(1.65); transform-origin: 56% 35%; }
/* Laura Mai's tall portrait needs a higher face-and-shoulders focal point. */
.person-portrait--mai img { object-position: center 25%; transform: scale(1.28); transform-origin: center 30%; }
/* Philipp Trein's portrait needs a closer face-and-shoulders crop. */
.person-portrait--trein img { object-position: center 28%; transform: scale(1.35) translateY(5%); transform-origin: center 32%; }
/* Ruth Lorenz's close portrait needs a slight upward, rightward adjustment. */
.person-portrait--lorenz img { object-position: 52% 34%; }
/* Claus Beisbart's portrait has generous surrounding space. */
.person-portrait--beisbart img { transform: scale(1.2); transform-origin: center 38%; }
/* Stefan Brönnimann's portrait needs more room above the head. */
.person-portrait--bronnimann img { object-position: center 24%; }
.portrait-fallback { position: relative; display: block; width: 100%; height: 100%; background: #c9dce7; }
.portrait-fallback::before { position: absolute; top: 19%; left: 36%; width: 28%; aspect-ratio: 1; border-radius: 50%; background: #7d9bad; content: ""; }
.portrait-fallback::after { position: absolute; right: 18%; bottom: 0; left: 18%; height: 48%; border-radius: 48% 48% 0 0; background: #7d9bad; content: ""; }
.person-title, .person-affiliation { margin: 0; color: #557087; font-size: .78rem; }
.person-title { min-height: 1.2em; }
.person-card h3 { margin: .1rem 0; color: var(--navy); font-size: 1rem; line-height: 1.15; }
.person-info { position: absolute; z-index: 10; top: calc(100% + .65rem); left: 50%; display: none; width: min(330px, 90vw); padding: 1rem; transform: translateX(-50%); border: 1px solid var(--line); background: #fff; color: var(--ink); text-align: left; box-shadow: 0 10px 24px rgba(25, 25, 150, .18); }
.person-info::before { position: absolute; top: -.5rem; left: 50%; width: .85rem; height: .85rem; transform: translateX(-50%) rotate(45deg); border-top: 1px solid var(--line); border-left: 1px solid var(--line); background: #fff; content: ""; }
.person-card:hover .person-info, .person-card:focus .person-info { display: block; }
.person-info dl { grid-template-columns: 105px 1fr; gap: .35rem .7rem; margin: 0; font-size: .82rem; }
.person-info dt { font-weight: 700; }
.person-info dd { min-width: 0; }
@media (max-width: 600px) { .people-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .organigram-section-heading { align-items: flex-start; flex-direction: column; gap: .2rem; } }
