.zero-character-archive{--zero-accent:#a88ac8;--zero-border:#56466a;display:grid;grid-template-columns:repeat(var(--zero-cols),minmax(0,1fr));gap:24px;color:#e9e5ee;font-family:inherit}.zero-character-card{background:linear-gradient(155deg,#1d1c2a,#0d1019 75%);border:1px solid var(--zero-border);border-radius:12px;overflow:hidden;box-shadow:0 18px 40px #0005}.zero-character-portrait{height:310px;background:#121520}.zero-character-portrait img{width:100%;height:100%;object-fit:cover}.zero-portrait-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#a88ac8;letter-spacing:.25em;font-size:26px}.zero-portrait-empty small{font-size:10px;letter-spacing:.18em;margin-top:12px}.zero-character-content{padding:22px}.zero-eyebrow{font-size:10px;letter-spacing:.19em;color:#ae9abf}.zero-character-content h3{color:#f0ebf7;font-size:24px;margin:10px 0}.zero-role{color:#c5a9e3;font-weight:600;margin:0 0 5px}.zero-dept{color:#b9b5c3;font-size:13px;margin:0 0 10px}.zero-status{display:inline-block;border:1px solid #6b577f;border-radius:20px;padding:4px 10px;font-size:11px;color:#d7c8e8}.zero-biography{margin-top:15px;color:#d4d0dd;line-height:1.65}.zero-character-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.zero-character-photos a{display:block;aspect-ratio:1;background:#1b1b26;overflow:hidden;border:1px solid #534564;border-radius:5px}.zero-character-photos img{width:100%;height:100%;object-fit:cover;transition:transform .2s}.zero-character-photos a:hover img{transform:scale(1.06)}.zero-empty{grid-column:1/-1;color:#cfc6d8}@media(max-width:900px){.zero-character-archive{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:580px){.zero-character-archive{grid-template-columns:1fr}}

/* Accessible cinematic photo viewer; shared by private preview and shortcode. */
.zero-photo-link{display:block;width:100%;height:100%;cursor:zoom-in}.zero-photo-link img{display:block;width:100%;height:100%;object-fit:cover}.zero-lightbox[hidden]{display:none!important}.zero-lightbox{position:fixed;inset:0;z-index:2147483000;background:rgba(5,7,15,.97);color:#eee9f5;display:flex;flex-direction:column;padding:18px;box-sizing:border-box;font-family:Arial,sans-serif}.zero-lightbox *{box-sizing:border-box}.zero-lightbox-header{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:4px 8px 14px}.zero-lightbox-crumbs{font-size:14px;line-height:1.6;color:#c6a9e4}.zero-lightbox button{background:#201a30;border:1px solid #77618c;color:#f5eaff;border-radius:8px;cursor:pointer;padding:10px 14px;font:inherit}.zero-lightbox button:hover,.zero-lightbox button:focus-visible{background:#3a294f;outline:2px solid #bda1e2;outline-offset:2px}.zero-lightbox-close{font-size:22px!important;min-width:46px}.zero-lightbox-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.zero-lightbox-stage img{max-width:calc(100% - 110px);max-height:100%;object-fit:contain;width:auto;height:auto}.zero-lightbox-footer{text-align:center;padding:12px 0 4px;color:#d5c5e5;font-size:14px}.zero-lightbox-nav{min-width:44px}.zero-lightbox-nav:disabled{opacity:.3;cursor:default}@media(max-width:600px){.zero-lightbox{padding:9px}.zero-lightbox-stage{gap:3px}.zero-lightbox-stage img{max-width:calc(100% - 78px)}.zero-lightbox-nav{min-width:35px;padding:8px!important}.zero-lightbox-crumbs{font-size:12px}}

/* Personnel file detail grid and separate gallery — v1.0.7 */
.zero-personnel-details{border-top:1px solid #594568;margin-top:22px;padding-top:18px}
.zero-section-heading{font-size:11px;font-weight:700;letter-spacing:.17em;color:#bda0dd;margin-bottom:14px}
.zero-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 18px}
.zero-fact{display:flex;flex-direction:column;gap:5px;min-width:0}
.zero-fact span{color:#a59bb3;font-size:10px;letter-spacing:.12em}
.zero-fact strong{font-size:14px;color:#eee8f4;font-weight:600;overflow-wrap:anywhere}
.zero-gallery-section{grid-column:1/-1;border:1px solid #56466a;border-radius:12px;background:linear-gradient(150deg,#1b1a2a,#0c101a);padding:22px;margin-top:18px}
.zero-gallery-section .zero-character-photos{margin-top:0;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:12px}
.zero-gallery-section .zero-character-photos a{aspect-ratio:4/5}
@media(max-width:580px){.zero-facts{gap:12px}.zero-gallery-section{padding:16px}}

/* v1.0.8: Consistent centered portrait crop for character dossier cards. */
.zero-character-portrait img,.zero-photo-link img{object-position:center center}

/* v1.0.9: Show complete portrait, centered without forced cropping. */
.zero-character-portrait{display:flex;align-items:center;justify-content:center;background:#101420}
.zero-character-portrait .zero-photo-link{display:flex;align-items:center;justify-content:center}
.zero-character-portrait img,.zero-photo-link img{object-fit:contain;object-position:center center}

/* v1.0.10: Fill portrait panel with intentional upper-center subject framing. */
.zero-character-portrait .zero-photo-link{display:block;width:100%;height:100%;overflow:hidden}
.zero-character-portrait img,.zero-character-portrait .zero-photo-link img{display:block;width:100%;height:100%;max-height:none;object-fit:cover;object-position:50% 34%}
/* v1.0.11: Public dossiers beneath the existing Characters landing. */
.zero-character-public-list{max-width:1150px;margin:40px auto 60px;padding:0 16px;color:#ece9f6}
.zero-character-public-list>h2{font-size:clamp(18px,2.3vw,25px);letter-spacing:.17em;color:#c4a4ed;margin:0 0 24px;font-weight:700}
.zero-character-public-list .zero-character-archive{max-width:100%}
@media(max-width:650px){.zero-character-public-list{margin:28px auto 40px;padding:0 12px}}

.zero-character-public-list{position:relative;z-index:2;box-sizing:border-box;width:min(1150px,calc(100% - 32px));margin:30px auto 50px;padding:28px;border:1px solid #45345e;border-radius:18px;background:#0b101d;color:#f1edf9}.zero-character-public-list>h2{font-size:1.15rem;letter-spacing:.15em;color:#c9a4ed;margin:0 0 24px}

/* v1.0.15: Compact, horizontal dossiers ONLY on public /characters/ landing. */
.zero-character-public-list .zero-character-archive {
 display:grid;grid-template-columns:minmax(0,1fr);gap:24px;
}
.zero-character-public-list .zero-character-card {
 display:grid;grid-template-columns:minmax(0,38%) minmax(0,62%);
 align-items:stretch;width:100%;min-width:0;
}
.zero-character-public-list .zero-character-portrait {
 position:relative;min-height:420px;height:auto;overflow:hidden;
 background:#101420;display:block;
}
.zero-character-public-list .zero-character-portrait .zero-photo-link {
 position:absolute;inset:0;width:100%;height:100%;display:block;overflow:hidden;
}
.zero-character-public-list .zero-character-portrait img,
.zero-character-public-list .zero-character-portrait .zero-photo-link img {
 display:block;width:100%;height:100%;max-height:none;object-fit:cover;object-position:50% 34%;
}
.zero-character-public-list .zero-character-content {min-width:0;padding:26px 30px;}
.zero-character-public-list .zero-biography {overflow-wrap:break-word;}
.zero-character-public-list .zero-gallery-section {grid-column:1/-1;}
@media (max-width:700px) {
 .zero-character-public-list .zero-character-card {grid-template-columns:minmax(0,1fr);}
 .zero-character-public-list .zero-character-portrait {height:350px;min-height:0;}
 .zero-character-public-list .zero-character-content {padding:20px;}
}

/* v1.0.16: Full-resolution portrait with preserved aspect ratio.
   Restrict to public landing cards; the private preview is unchanged. */
.zero-character-public-list .zero-character-portrait .zero-photo-link {
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  isolation:isolate;background:#101420;overflow:hidden;
}
.zero-character-public-list .zero-character-portrait .zero-photo-link::before {
  content:"";position:absolute;inset:-24px;z-index:-1;
  background-image:var(--zero-portrait-bg);background-position:center;background-size:cover;
  filter:blur(25px) brightness(.25) saturate(.7);
}
.zero-character-public-list .zero-character-portrait .zero-photo-link img {
  position:relative;display:block;width:100%;height:auto;max-height:100%;
  max-width:100%;object-fit:contain;object-position:center center;
  image-rendering:auto;filter:none;
}
@media(max-width:700px) {
  .zero-character-public-list .zero-character-portrait {height:390px;}
}

/* v1.0.17 — approved compact portrait composition, PUBLIC archive cards only.
   A fixed-ratio image frame sits at the TOP of its column instead of stretching
   to match biography height. Original image pixels are untouched; CSS clips
   only the preview. Clicking the photo opens its complete source image. */
.zero-character-public-list .zero-character-card {
  grid-template-columns:minmax(0,45%) minmax(0,55%);
  align-items:stretch;
}
.zero-character-public-list .zero-character-portrait {
  position:relative; height:auto; min-height:0; aspect-ratio:auto;
  align-self:start; padding:16px 0 16px 16px;
  background:transparent; overflow:visible;
}
.zero-character-public-list .zero-character-portrait .zero-photo-link {
  position:relative; inset:auto; isolation:auto;
  display:block; width:100%; height:auto; aspect-ratio:4/5;
  border:1px solid #604a75; border-radius:12px;
  background:#101420; overflow:hidden;
}
.zero-character-public-list .zero-character-portrait .zero-photo-link::before {
  content:none; display:none; background:none; filter:none;
}
.zero-character-public-list .zero-character-portrait .zero-photo-link img,
.zero-character-public-list .zero-character-portrait img {
  position:static; display:block; width:100%; height:100%;
  max-width:none; max-height:none; aspect-ratio:auto;
  object-fit:cover; object-position:43% 50%; filter:none;
}
.zero-character-public-list .zero-character-content {padding:24px 28px;}
@media(max-width:700px){
  .zero-character-public-list .zero-character-card {grid-template-columns:minmax(0,1fr);}
  .zero-character-public-list .zero-character-portrait {padding:14px 14px 0; height:auto; min-height:0;}
  .zero-character-public-list .zero-character-portrait .zero-photo-link {aspect-ratio:4/5; max-width:470px; margin:auto;}
  .zero-character-public-list .zero-character-content {padding:20px;}
}
