/* Ludus Lab People Directory v1.1 — complete circular portraits, compact copy, scoped styles. */
.ll-people {
  --ll-ink: #17392f;
  --ll-muted: #536962;
  --ll-line: #e3e9e3;
  --ll-soft: #f5f7f3;
  --ll-accent: #a44521;
  color: var(--ll-ink);
  max-width: 1180px;
  margin: 0 auto;
  padding: 16px 16px 72px;
  font-family: inherit;
}
.ll-people *, .ll-people *::before, .ll-people *::after { box-sizing: border-box; }
.ll-people__intro { max-width: 840px; margin: 0 0 30px; }
.ll-people__eyebrow { margin: 0 0 12px; color: #97431e; font-size: .79rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.ll-people__intro h2 { margin: 0 0 14px; color: var(--ll-ink); font-weight: 760; font-size: clamp(1.8rem, 3vw, 2.65rem); line-height: 1.2; letter-spacing: -.025em; }
.ll-people__intro > p:last-child { max-width: 790px; margin: 0; color: var(--ll-muted); font-size: 1.03rem; line-height: 1.75; }
.ll-people__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--ll-line); padding-bottom: 22px; margin-bottom: 27px; }
.ll-people__filters { display: flex; flex-wrap: wrap; gap: 8px; }
.ll-people__filter { appearance: none; cursor: pointer; padding: 10px 18px; min-height: 44px; background: #fff; color: var(--ll-ink); border: 1px solid #bdcfc5; border-radius: 999px; font: inherit; font-size: .9rem; font-weight: 680; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.ll-people__filter:hover { background: var(--ll-soft); border-color: var(--ll-ink); }
.ll-people__filter.is-active, .ll-people__filter[aria-pressed="true"] { background: var(--ll-ink); color: #fff; border-color: var(--ll-ink); }
.ll-people__count { margin: 0; color: var(--ll-muted); font-size: .87rem; white-space: nowrap; }
.ll-people__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: 24px; }
.ll-person { display: flex; flex-direction: column; min-width: 0; padding: 0; border: 1px solid var(--ll-line); border-radius: 19px; background: #fff; box-shadow: 0 4px 18px rgba(22, 54, 44, .045); transition: transform .2s ease, box-shadow .2s ease; }
.ll-person:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(22, 54, 44, .085); }
.ll-person[hidden] { display: none !important; }
/* The complete round frame is contained INSIDE the card. No top/bottom clipping. */
.ll-person__visual {
  display: block;
  text-decoration: none !important;
  width: 220px;
  height: 220px;
  max-width: calc(100% - 48px);
  aspect-ratio: 1 / 1;
  margin: 27px auto 8px;
  padding: 6px;
  border-radius: 50%;
  overflow: hidden;
  background: #f0f4ef;
  border: 1px solid #e3eae3;
  box-shadow: 0 5px 16px rgba(23, 57, 47, .05);
}
.ll-person__visual img {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: contain; /* Show more of the source photograph rather than zoom-cropping. */
  object-position: center;
}
.ll-person__placeholder { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; border-radius: 50%; background: linear-gradient(145deg, #e0ebdf, #f3ede4); color: #517464; font-size: 3.9rem; font-weight: 750; }
.ll-person__body { display: flex; flex-direction: column; flex: 1; padding: 16px 25px 26px; text-align: center; }
.ll-person__name { margin: 0 0 10px; color: var(--ll-ink); font-size: 1.46rem; font-weight: 760; line-height: 1.25; }
.ll-person__name a { color: inherit !important; text-decoration: none !important; }
.ll-person__name a:hover { text-decoration: underline !important; text-underline-offset: 3px; }
.ll-person__roles { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; margin-bottom: 14px; }
.ll-person__role { display: inline-flex; align-items: center; padding: 5px 10px; border-radius: 999px; background: #eaf2ec; color: #285647; font-size: .74rem; font-weight: 730; line-height: 1.35; }
.ll-person__tagline { color: #8b4628; font-size: .89rem; font-weight: 700; line-height: 1.5; margin: 0 0 10px; }
.ll-person__description { color: var(--ll-muted); font-size: .94rem; line-height: 1.7; margin: 0 0 23px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; line-clamp: 4; overflow: hidden; }
.ll-person__link { margin: auto auto 0; display: inline-flex; align-items: center; gap: 8px; color: #8a3d1c !important; text-decoration: underline !important; text-underline-offset: 3px; font-size: .92rem; font-weight: 760; }
.ll-person__link:hover { color: #54250f !important; }
.ll-people__empty { color: var(--ll-muted); padding: 22px; }
.ll-people__closing { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px 30px; margin-top: 43px; padding: 31px 34px; background: var(--ll-soft); border-radius: 17px; }
.ll-people__closing > div { max-width: 740px; }
.ll-people__closing h3 { margin: 0 0 7px; font-size: 1.21rem; line-height: 1.35; color: var(--ll-ink); }
.ll-people__closing p { margin: 0; color: var(--ll-muted); font-size: .98rem; line-height: 1.6; }
.ll-people__closing a { color: #813818 !important; font-weight: 760; text-underline-offset: 3px; white-space: nowrap; }
.ll-people :focus-visible { outline: 3px solid #b45222 !important; outline-offset: 3px; }
@media (max-width: 920px) { .ll-people__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; } }
@media (max-width: 580px) {
  .ll-people { padding: 12px 12px 42px; }
  .ll-people__grid { grid-template-columns: minmax(0, 1fr); gap: 17px; }
  .ll-person__visual { width: 200px; height: 200px; margin-top: 23px; }
  .ll-person__body { padding: 13px 23px 24px; }
  .ll-people__closing { padding: 24px 21px; }
}
@media (prefers-reduced-motion: reduce) { .ll-person, .ll-people__filter { transition: none; } .ll-person:hover { transform: none; } }


/* Ludus Lab matching individual profile — used only in optional shared single template. */
.ll-single {
  --ll-ink: #17392f; --ll-muted: #536962; --ll-line: #e3e9e3;
  --ll-soft: #f5f7f3; --ll-accent: #a44521;
  max-width: 1140px; margin: 0 auto; padding: 38px 22px 84px;
  color: var(--ll-ink); font-family: inherit;
}
.ll-single *, .ll-single *::before, .ll-single *::after { box-sizing: border-box; }
.ll-single__breadcrumb { margin: 0 0 28px; font-size: .91rem; }
.ll-single__breadcrumb a { color: #8a3d1c; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.ll-single__panel { background: #fff; border: 1px solid var(--ll-line); border-radius: 24px; overflow: hidden; box-shadow: 0 8px 32px rgba(22,54,44,.04); }
.ll-single__hero { padding: 48px 54px; display: grid; grid-template-columns: 295px minmax(0,1fr); align-items: center; gap: 53px; background: linear-gradient(115deg, #f4f8f4, #fff 80%); }
.ll-single__portrait { width: 295px; aspect-ratio: 1 / 1; padding: 8px; background: #eef3ee; border: 1px solid var(--ll-line); border-radius: 50%; overflow: hidden; box-shadow: 0 7px 20px rgba(22,54,44,.07); }
.ll-single__portrait img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; border-radius: 50%; }
.ll-single__placeholder { width: 100%; height: 100%; display: grid; place-items: center; border-radius: 50%; background: #e2ede3; color: var(--ll-ink); font-size: 5rem; font-weight: 750; }
.ll-single__eyebrow { color: #97431e; letter-spacing: .13em; font-weight: 800; text-transform: uppercase; font-size: .79rem; margin: 0 0 12px; }
.ll-single__lead h1 { margin: 0 0 14px; font-size: clamp(2rem, 3.5vw, 3.3rem); font-weight: 770; line-height: 1.14; letter-spacing: -.03em; color: var(--ll-ink); }
.ll-single__roles { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 16px; }
.ll-single__role { display: inline-flex; border-radius: 999px; padding: 6px 13px; color: #285647; background: #eaf2ec; font-weight: 730; font-size: .79rem; }
.ll-single__tagline { font-size: 1.06rem; color: #8b4628; font-weight: 730; margin: 0 0 13px; }
.ll-single__teaser { font-size: 1.07rem; color: var(--ll-muted); line-height: 1.75; margin: 0; max-width: 650px; }
.ll-single__linkedin { display: inline-flex; margin-top: 16px; color: #8a3d1c; text-decoration: underline; text-underline-offset: 3px; font-weight: 700; }
.ll-single__story { padding: 47px 66px 60px; max-width: 980px; margin: 0 auto; }
.ll-single__story h2 { font-size: 1.6rem; font-weight: 750; line-height: 1.3; color: var(--ll-ink); margin: 0 0 25px; }
.ll-single__body { font-size: 1.05rem; line-height: 1.85; color: #344840; }
.ll-single__body p { margin: 0 0 20px; }
.ll-single__body p:last-child { margin-bottom: 0; }
.ll-single__body ul, .ll-single__body ol { padding-inline-start: 1.5rem; margin-bottom: 20px; }
.ll-single__body a { color: #863e1c; text-decoration: underline; text-underline-offset: 3px; }
.ll-single__footer { margin-top: 28px; padding: 30px 36px; border-radius: 18px; background: #f5f7f3; display: flex; align-items: center; justify-content: space-between; gap: 26px; }
.ll-single__footer h2 { margin: 0 0 7px; color: var(--ll-ink); font-size: 1.28rem; }
.ll-single__footer p { margin: 0; color: var(--ll-muted); }
.ll-single__footer > a { color: #8a3d1c; font-weight: 750; white-space: nowrap; text-underline-offset: 3px; }
.ll-single :focus-visible { outline: 3px solid #b45222 !important; outline-offset: 3px; }
@media (max-width: 850px) { .ll-single__hero { grid-template-columns: 240px minmax(0,1fr); gap: 32px; padding: 36px; } .ll-single__portrait { width: 240px; } .ll-single__story { padding: 37px 40px 48px; } }
@media (max-width: 650px) { .ll-single { padding: 21px 14px 54px; } .ll-single__hero { grid-template-columns: 1fr; justify-items: center; gap: 25px; text-align: center; padding: 28px 24px 37px; } .ll-single__portrait { width: min(240px, 74vw); } .ll-single__roles { justify-content: center; } .ll-single__story { padding: 29px 25px 40px; } .ll-single__footer { padding: 27px 24px; align-items: flex-start; flex-direction: column; } .ll-single__footer > a { white-space: normal; } }

/* v1.3: explicit classification, full card summaries, and contextual enquiry actions. */
.ll-person__description {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
  line-clamp: unset;
  max-height: none;
  white-space: normal;
  overflow-wrap: anywhere;
}
.ll-person__classification,
.ll-single__classification {
  display: inline-flex;
  align-self: center;
  align-items: center;
  max-width: 100%;
  width: fit-content;
  border-radius: 999px;
  background: #f9ecdf;
  color: #663616;
  border: 1px solid #e8c5a5;
  font-size: .8rem;
  font-weight: 750;
  padding: 6px 12px;
  line-height: 1.45;
}
.ll-person__classification { margin: 0 auto 12px; }
.ll-single__classification { margin: 0 0 16px; }
.ll-person__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 13px;
  margin-top: auto;
}
.ll-person__link { margin: 0; }
.ll-person__enquire,
.ll-single__enquiry {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 44px;
  padding: 10px 16px;
  border-radius: 999px;
  background: #17392f;
  color: #fff !important;
  border: 1px solid #17392f;
  text-decoration: none !important;
  font-weight: 700;
  font-size: .9rem;
  line-height: 1.35;
  transition: background .15s ease;
}
.ll-person__enquire:hover,
.ll-single__enquiry:hover { background: #285849; color: #fff !important; }
.ll-single__enquiries { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 20px; }
.ll-single__enquiry { justify-content: flex-start; }
.ll-single__linkedin { display: block; }
@media (max-width: 650px) { .ll-single__enquiries { justify-content: center; } }
@media (prefers-reduced-motion: reduce) { .ll-person__enquire, .ll-single__enquiry { transition: none; } }

.ll-person__enquire[hidden] { display: none !important; }

/* v1.3.2 — compact A–Z letter index and sortable first-name directory. */
.ll-people__alphabet-toolbar { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 15px 22px; margin: -3px 0 25px; }
.ll-people__alphabet-block { flex: 1 1 350px; min-width: 0; }
.ll-people__alphabet-label { display: block; margin-bottom: 9px; color: var(--ll-muted); font-size: .83rem; font-weight: 700; }
.ll-people__alphabet { display: flex; flex-wrap: wrap; gap: 6px; }
.ll-people__letter { appearance: none; min-width: 39px; min-height: 40px; padding: 7px 10px; border: 1px solid #cbdad1; border-radius: 9px; background: #fff; color: var(--ll-ink); font: inherit; font-size: .9rem; font-weight: 700; cursor: pointer; transition: background .15s, border-color .15s; }
.ll-people__letter:first-child { padding-inline: 14px; }
.ll-people__letter:hover:not(:disabled) { background: var(--ll-soft); border-color: var(--ll-ink); }
.ll-people__letter.is-active, .ll-people__letter[aria-pressed="true"] { color: #fff; background: var(--ll-ink); border-color: var(--ll-ink); }
.ll-people__letter:disabled { color: #9eaba5; background: #f5f7f5; border-color: #e4e8e5; opacity: .65; cursor: not-allowed; }
.ll-people__sort-label { display: flex; flex-direction: column; gap: 7px; color: var(--ll-muted); font-size: .83rem; font-weight: 700; }
.ll-people__sort { color: var(--ll-ink); font: inherit; font-size: .9rem; min-height: 42px; min-width: 150px; padding: 8px 35px 8px 12px; border-radius: 9px; border: 1px solid #cbdad1; background-color: #fff; cursor: pointer; }
.ll-people__reset { min-height: 44px; border: 1px solid var(--ll-ink); border-radius: 999px; padding: 8px 15px; font: inherit; font-weight: 700; color: var(--ll-ink); background: #fff; cursor: pointer; }
.ll-people__empty[hidden] { display: none !important; }
.ll-people__empty p { margin: 0 0 12px; }
@media (max-width: 580px) {
  .ll-people__alphabet-toolbar { align-items: stretch; margin-bottom: 21px; }
  .ll-people__alphabet-block { flex-basis: 100%; }
  .ll-people__letter { min-width: 39px; min-height: 44px; }
  .ll-people__sort-label { width: fit-content; }
}
@media (prefers-reduced-motion: reduce) { .ll-people__letter { transition: none; } }
