/* ========================= SECTIONS ========================= */

/* HERO */
.hero{
  min-height:690px;display:grid;
  grid-template-columns:58px minmax(380px,.9fr) minmax(460px,1.2fr) 245px;
}
.hero-rail{
  writing-mode:vertical-rl;transform:rotate(180deg);
  display:flex;justify-content:center;align-items:center;gap:28px;
  padding:20px;border-right:1px solid var(--line);font-size:9px;color:#777;
}
.hero-copy{padding:72px 34px 36px;align-self:center}
.hero-copy .eyebrow{font-size:13px;color:#989890;margin-bottom:14px}
.hero-copy h1{
  font:clamp(72px,7.7vw,142px)/.94 var(--font-impact);
  letter-spacing:-.01em;margin-bottom:30px;color:#efeee8;
  text-transform:uppercase;
}
.hero-access{
  width:min(520px,100%);border:1px solid var(--yellow);
  padding:12px 18px;margin-bottom:25px;text-align:center;
}
.hero-access strong{
  display:block;font:23px var(--font-institutional);color:var(--yellow);letter-spacing:.03em;
}
.hero-access span{font:12px var(--font-system);letter-spacing:.08em;color:#c8c7c1}
.hero-definition{max-width:580px;color:#aaa;font-size:16px;line-height:1.55}
.field-card{
  margin-top:25px;max-width:600px;border:1px solid #5c4d00;border-radius:3px;
  display:grid;grid-template-columns:1fr 160px auto;align-items:end;gap:16px;padding:13px 16px;
}
.field-card small{font:10px var(--font-system);color:#999}
.field-card strong{display:block;margin-top:6px;font:24px var(--font-system);color:var(--yellow)}
.hazard{height:14px;background:repeating-linear-gradient(115deg,var(--yellow) 0 7px,transparent 7px 14px)}
.hero-image{position:relative;overflow:hidden;border-left:1px solid var(--line);border-right:1px solid var(--line)}
.hero-image::after{
  content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.55),transparent 25%,rgba(0,0,0,.32));
}
.hero-image img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.15) brightness(.62)}
.hero-status{padding:50px 24px;color:#aaa;font-size:10px;display:flex;flex-direction:column;gap:20px}
.hero-status div{padding-bottom:14px;border-bottom:1px solid var(--line)}
.hero-status strong{color:var(--yellow);font-weight:400}

/* LATEST */
.latest-file{
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);
  height:410px;
  min-height:0;
  overflow:hidden;
}
.latest-photo{
  position:relative;
  overflow:hidden;
  border-right:1px solid var(--line);
  min-width:0;
  min-height:0;
  height:410px;
}
.latest-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(1) contrast(1.15);
}
.stamp{
  position:absolute;left:28px;bottom:30px;z-index:5;
  border:4px solid var(--yellow);color:var(--yellow);padding:9px 14px;
  font:26px var(--font-impact);transform:rotate(7deg);
}
.stamp small{display:block;font:8px var(--font-system);margin-top:4px}
.latest-data{
  min-width:0;
  min-height:0;
  padding:28px 30px;
  background:#050505;
  display:flex;
  flex-direction:column;
  justify-content:center;
  overflow:hidden;
}
.latest-data h3{
  font:38px/1 var(--font-impact);
  margin:8px 0 14px;
}
.latest-data .system-button{
  width:100%;
  margin-top:12px;
  min-height:42px;
}

/* ENTITIES */
.entities{padding-bottom:28px}
.entity-grid{
  padding:18px 28px;display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;
}
.entity-card{min-width:0;border:1px solid var(--line);background:#050505}
.entity-reveal{height:310px;position:relative;width:100%;padding:0;border:0;background:#111;cursor:pointer;overflow:hidden}
.entity-reveal img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.1)}
.entity-id{position:absolute;top:12px;left:12px;z-index:5;color:var(--yellow);font-size:9px}
.entity-body{padding:13px}
.entity-body h3{font:24px var(--font-impact);margin:0 0 10px}
.entity-body p{font-size:9px;color:#888}.entity-body p strong{color:var(--yellow);font-weight:400}
.file-link{display:flex;justify-content:flex-end;padding-top:9px;border-top:1px solid var(--line);font:9px var(--font-system);color:var(--yellow)}
.intake-card{border:1px dashed var(--yellow)}
.intake-open{
  width:100%;height:100%;min-height:390px;border:0;background:transparent;color:var(--yellow);cursor:pointer;
  display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:25px;
}
.intake-open .plus{font:58px/1 var(--font-institutional);font-weight:200}
.intake-open strong{font:20px/1.15 var(--font-institutional);margin:18px 0}
.intake-open small{font:9px var(--font-system);color:#8d7c12}

/* OPERATIONS */
.operation-file{display:grid;grid-template-columns:1.2fr .8fr;min-height:500px}
.operation-image{border-right:1px solid var(--line);overflow:hidden}
.operation-image img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.15) brightness(.72)}
.operation-copy{padding:48px}
.operation-copy h3{font:58px var(--font-impact);margin:12px 0 28px}
.operation-copy .system-button{margin-top:24px;width:100%}

/* RELEASES */
.release-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:18px 28px 30px}
.release-card{border:1px solid var(--line);background:#050505}
.release-card img{width:100%;aspect-ratio:1;object-fit:cover;filter:grayscale(1) contrast(1.05)}
.release-card div{padding:13px}
.release-card span{font-size:9px;color:var(--yellow)}
.release-card h3{font:22px var(--font-institutional);margin:7px 0}
.release-card p{font-size:9px;color:#858580;margin:0}

/* PUBLIC RECORD */
.public-record{display:grid;grid-template-columns:.8fr 1.2fr;gap:70px;padding:80px 58px}
.public-record h2{font:76px/.9 var(--font-impact);margin:10px 0}
.record-copy{font-size:21px;line-height:1.55;color:#d0cfc9}
.record-copy strong{color:var(--yellow)}
.redacted-copy{font-family:var(--font-system);letter-spacing:.08em;color:#262626}

/* DIALOG */
.intake-dialog{
  width:min(760px,calc(100% - 32px));max-height:90vh;overflow:auto;
  border:1px solid var(--yellow);background:#050505;color:#fff;padding:0;
}
.intake-dialog::backdrop{background:rgba(0,0,0,.82)}
.intake-dialog form{padding:26px}
.dialog-head{display:flex;justify-content:space-between;gap:25px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:18px}
.dialog-head h2{font:36px var(--font-impact);margin:7px 0}
.dialog-close{border:1px solid var(--line);background:none;color:#fff;width:42px;height:42px;font-size:25px;cursor:pointer}
.intake-dialog label{display:block;margin-top:16px;font:10px var(--font-system);color:var(--yellow)}
.intake-dialog input,.intake-dialog textarea{
  width:100%;margin-top:7px;border:1px solid #3c3c38;background:#000;color:#fff;
  padding:13px 12px;font:16px var(--font-document);
}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}
.form-status{color:var(--yellow);margin-top:16px;font-size:10px}

/* V3: controlled separation between DICKSON / RECORDS */
.hero-copy h1 span{
  display:block;
}
.hero-copy h1 span + span{
  margin-top:.055em;
}


/* V4 — ENTITY IMAGE HOVER SWAP */
.entity-reveal img{
  transition:opacity .16s ease, transform .35s ease, filter .25s ease;
}
.entity-reveal.is-swapping img{
  opacity:.12;
}
@media (hover:hover) and (pointer:fine){
  .entity-reveal:hover img{
    transform:scale(1.018);
  }
}


/* V5 — eye classification bars remain static.
   Only the underlying entity photograph changes on hover. */



/* V6 — compact Latest Declassification */
.latest-data .file-meta div{
  padding:8px 0;
  font-size:10px;
}
.latest-data .file-label{
  font-size:10px;
}
.latest .stamp{
  font-size:20px;
  padding:7px 11px;
  left:22px;
  bottom:22px;
}

/* Prevent any section from visually overlapping the next one. */
.latest,
.entities{
  position:relative;
  overflow:hidden;
}


/* =========================================================
   V21 — FULL INSTITUTIONAL HERO
   Demian remains in the ordered roster only; the first screen
   is one continuous public-access surface.
   ========================================================= */
.access-overview{
  display:grid;
  grid-template-columns:54px minmax(0,1fr);
  min-height:max(640px,calc(100svh - 78px));
  overflow:hidden;
  background:
    linear-gradient(115deg,transparent 0 72%,rgba(255,212,0,.035) 72% 72.15%,transparent 72.15%),
    linear-gradient(180deg,rgba(255,255,255,.018),transparent 35%),
    #000;
}
.overview-rail{
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  display:flex;
  justify-content:center;
  align-items:center;
  gap:30px;
  border-right:1px solid var(--line);
  color:#777;
  font-size:9px;
  padding:16px 0;
}
.overview-left{
  padding:46px clamp(34px,4.2vw,76px) 42px;
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr);
  grid-template-rows:auto auto auto auto;
  column-gap:clamp(42px,7vw,130px);
  align-content:center;
  min-width:0;
}
.overview-system-row{
  grid-column:1/-1;
  display:flex;
  justify-content:space-between;
  gap:18px;
  color:#8f8f89;
  font-size:9px;
  margin-bottom:18px;
}
.overview-system-row strong{color:var(--yellow);font-weight:400}
.overview-left h1{
  grid-column:1/-1;
  font:clamp(104px,12.2vw,220px)/.9 var(--font-impact);
  letter-spacing:-.01em;
  margin:0 0 clamp(30px,4vh,54px);
  color:#efeee8;
}
.overview-left h1 span{display:block}
.overview-left h1 span + span{margin-top:.045em}
.overview-access{
  grid-column:1;
  grid-row:3;
  border:1px solid var(--yellow);
  width:100%;
  max-width:none;
  padding:12px 18px;
  text-align:center;
  align-self:start;
}
.overview-access strong{
  display:block;
  font:clamp(22px,2vw,32px) var(--font-institutional);
  color:var(--yellow);
}
.overview-access span{
  display:block;
  margin-top:5px;
  font:10px var(--font-system);
  color:#c9c8c2;
  letter-spacing:.08em;
}
.overview-definition{
  grid-column:2;
  grid-row:3;
  max-width:640px;
  margin:0;
  color:#aaa;
  font-size:clamp(16px,1.25vw,20px);
  line-height:1.6;
  align-self:center;
}
.overview-field{
  grid-column:1/-1;
  grid-row:4;
  margin-top:clamp(26px,4vh,46px);
  max-width:none;
  border:1px solid #5c4d00;
  display:grid;
  grid-template-columns:minmax(280px,.72fr) minmax(180px,1fr) auto;
  gap:24px;
  align-items:end;
  padding:13px 16px;
}
.overview-field small{font:9px var(--font-system);color:#999}
.overview-field strong{
  display:block;
  margin-top:4px;
  color:var(--yellow);
  font:clamp(21px,2vw,30px) var(--font-system);
}
.entities{border-top:0}
.entities .section-heading{min-height:50px}
.entity-grid{padding-top:12px}
.entity-reveal{height:270px}
.intake-open{min-height:350px}

/* =========================================================
   V8 — ABOUT / MEMBER REGISTRY
   ========================================================= */
.about-record{
  grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);
  gap:0;
  padding:0;
  border-top:1px solid var(--line);
}
.about-record-head{
  padding:72px 42px 54px 58px;
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  min-width:0;
}
.about-kicker{
  margin:18px 0 0;
  color:var(--yellow);
  font-size:10px;
  letter-spacing:.09em;
}
.about-record h2{
  font:clamp(66px,6.2vw,108px)/.86 var(--font-impact);
  letter-spacing:-.015em;
  margin:18px 0 36px;
  color:#efeee8;
}
.about-status{
  margin-top:auto;
  display:grid;
  gap:8px;
  padding-top:18px;
  border-top:1px solid var(--line);
  color:#777;
  font-size:9px;
}
.about-status strong{
  color:var(--yellow);
  font-weight:400;
}
.about-record-body{
  min-width:0;
  padding:66px 42px 42px;
}
.about-copy{
  max-width:920px;
  font-size:18px;
  line-height:1.58;
}
.about-copy p:first-child{
  font-size:23px;
  line-height:1.45;
  color:#efeee8;
}
.about-divider{
  margin-top:48px;
  min-height:42px;
  padding:0 12px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  color:#8c8c86;
  font-size:9px;
}
.member-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  padding-top:12px;
}
.member-card{
  min-height:250px;
  border:1px solid var(--line);
  background:#050505;
  display:grid;
  grid-template-rows:40px 1fr;
  overflow:hidden;
}
.member-card-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:0 14px;
  border-bottom:1px solid var(--line);
  color:var(--yellow);
  font-size:9px;
}
.member-card-top span:last-child{
  border-left:1px solid #5b4d06;
  padding-left:14px;
  font-size:12px;
}
.member-card-body{
  padding:20px 18px 16px;
  display:flex;
  flex-direction:column;
}
.member-class{
  margin:0 0 10px;
  color:#777;
  font-size:9px;
}
.member-card h3{
  margin:0;
  font:42px/.92 var(--font-impact);
  color:#efeee8;
  letter-spacing:.01em;
}
.member-meta{
  margin-top:auto;
  padding-top:18px;
}
.member-meta div{
  display:flex;
  justify-content:space-between;
  gap:18px;
  padding:7px 0;
  border-top:1px solid var(--line);
  font-size:8px;
}
.member-meta dt{color:#777}
.member-meta dd{margin:0;color:var(--yellow)}
.about-note{
  margin:12px 0 0;
  padding:12px 14px;
  border:1px dashed #4a410d;
  color:#756b2c;
  font-size:8px;
  letter-spacing:.06em;
}


/* =========================================================
   V9 — MEMBER PHOTOS / OPERATIONS INDEX
   ========================================================= */
.member-card{overflow:hidden;padding:0!important;display:flex;flex-direction:column}
.member-photo{height:400px;border-bottom:1px solid var(--line);overflow:hidden;background:#030303}
.member-photo img{width:100%;height:100%;object-fit:cover;object-position:center 100%;filter:grayscale(1) contrast(1.08) brightness(.78);transition:filter .2s ease,transform .25s ease}
.member-card:hover .member-photo img{filter:grayscale(.2) contrast(1.04) brightness(.88);transform:scale(1.015)}
.member-card-top{padding:10px 14px;border-bottom:1px solid var(--line)}
.member-card-body{padding:18px 14px 16px;display:flex;flex-direction:column;flex:1}

.operations-index{min-height:100vh}
.operations-hero{display:grid;grid-template-columns:54px minmax(0,1.35fr) minmax(300px,.65fr);min-height:430px}
.operations-rail{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;justify-content:center;align-items:center;gap:28px;border-right:1px solid var(--line);color:#777;font-size:9px}
.operations-hero-copy{padding:70px 58px;display:flex;flex-direction:column;justify-content:center}
.operations-hero-copy h1{font:clamp(74px,9vw,150px)/.85 var(--font-impact);margin:12px 0 28px;color:#efeee8}
.operations-hero-copy p.document-copy{max-width:780px;font-size:18px;line-height:1.6;color:#aaa}
.operations-hero-status{border-left:1px solid var(--line);display:grid;grid-template-rows:repeat(3,1fr)}
.operations-hero-status div{padding:28px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:flex-end}
.operations-hero-status div:last-child{border-bottom:0}
.operations-hero-status span{color:#858580}
.operations-hero-status strong{display:block;margin-top:8px;color:var(--yellow);font:28px var(--font-system);font-weight:400}
.operations-ledger{padding-bottom:34px}
.ops-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:18px 28px 30px}
.ops-card{border:1px solid var(--line);background:#030303;display:grid;grid-template-columns:minmax(220px,.72fr) 1.28fr;min-height:360px}
.ops-card-visual{border-right:1px solid var(--line)}
.ops-visual-code{display:flex;flex-direction:column;align-items:center;justify-content:center;background:repeating-linear-gradient(-45deg,#050505 0,#050505 22px,#0b0b0b 22px,#0b0b0b 44px);color:var(--yellow)}
.ops-visual-code span{font:72px/.9 var(--font-impact)}
.ops-visual-code small{font:12px var(--font-system);margin-top:12px;letter-spacing:.08em}
.ops-card-body{padding:30px;min-width:0}
.ops-card-top{display:flex;justify-content:space-between;gap:16px;color:#777;border-bottom:1px solid var(--line);padding-bottom:10px}
.ops-card-top span:last-child{color:var(--yellow)}
.ops-card h3{font:48px/.95 var(--font-impact);margin:22px 0 26px}
.ops-card .file-meta dd{text-align:right;max-width:62%}
.ops-card.tentative .ops-card-top span:last-child{color:#a58d18}
.previous-feature{margin:18px 28px 30px;grid-template-columns:1.05fr .95fr;min-height:500px}
.ops-card-image{overflow:hidden;border-right:1px solid var(--line)}
.ops-card-image img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.12) brightness(.68)}
.ops-note{padding:22px 28px 38px;color:#777}
.ops-note span{color:var(--yellow)}
.ops-note p{margin:8px 0 0}

/* =========================================================
   V10 — MEMBER PHOTO REDACTION / REVEAL
   ========================================================= */
.member-card{outline:none}
.member-card:focus-visible{border-color:#66580a}
.member-photo-censored{position:relative;isolation:isolate}
.member-photo-censored img{
  filter:grayscale(1) contrast(1.12) brightness(.56) blur(1.2px);
  transform:scale(1.01);
  transition:filter .22s ease,transform .28s ease,opacity .22s ease;
}
.member-redaction{
  position:absolute;
  z-index:2;
  left:8%;
  right:8%;
  top:34%;
  height:24%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  background:#000;
  border-top:1px solid #242424;
  border-bottom:1px solid #242424;
  color:#d6b600;
  font:9px var(--font-system);
  letter-spacing:.18em;
  opacity:.98;
  pointer-events:none;
  transition:opacity .18s ease,transform .22s ease;
}
.member-redaction::before,
.member-redaction::after{
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  width:54px;
  opacity:.34;
  background:repeating-linear-gradient(-45deg,#d6b600 0,#d6b600 5px,#000 5px,#000 10px);
}
.member-redaction::before{left:0}
.member-redaction::after{right:0}
.member-card:hover .member-photo-censored img,
.member-card:focus .member-photo-censored img,
.member-card:focus-within .member-photo-censored img{
  filter:grayscale(.15) contrast(1.04) brightness(.9) blur(0);
  transform:scale(1.02);
}
.member-card:hover .member-redaction,
.member-card:focus .member-redaction,
.member-card:focus-within .member-redaction{
  opacity:0;
  transform:scaleX(.92);
}
@media (hover:none){
  .member-card:active .member-photo-censored img{filter:grayscale(.15) contrast(1.04) brightness(.9) blur(0)}
  .member-card:active .member-redaction{opacity:0}
}

/* =========================================================
   V11 — ABOUT: TITLE ABOVE / CONTENT BELOW
   Hover reveals only the member photograph.
   ========================================================= */
.about-record{
  display:block;
  padding:0;
  border-top:1px solid var(--line);
}
.about-record-head{
  padding:58px 58px 42px;
  border-right:0;
  border-bottom:1px solid var(--line);
  display:block;
}
.about-record h2{
  margin:18px 0 24px;
  font:clamp(70px,8.5vw,150px)/.84 var(--font-impact);
  letter-spacing:-.015em;
  color:#efeee8;
}
.about-status{
  margin-top:28px;
  max-width:520px;
  padding-top:14px;
}
.about-record-body{
  padding:48px 58px 42px;
}
.about-copy{
  max-width:1080px;
}

/* Member photo is the only element that changes on hover/focus. */
.member-card{
  transition:none!important;
}
.member-card:hover,
.member-card:focus,
.member-card:focus-within,
.member-card:focus-visible{
  border-color:var(--line)!important;
  background:#050505!important;
  transform:none!important;
  box-shadow:none!important;
}
.member-photo{
  position:relative;
  isolation:isolate;
}
.member-photo > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 22%;
}
.member-photo-censored{
  z-index:1;
  opacity:1;
  filter:grayscale(1) contrast(1.12) brightness(.56) blur(1.2px)!important;
  transform:scale(1.01)!important;
  transition:opacity .18s ease!important;
}
.member-photo-clear{
  z-index:0;
  opacity:0;
  filter:grayscale(.1) contrast(1.04) brightness(.9)!important;
  transform:none!important;
  transition:opacity .18s ease!important;
}
.member-redaction{
  z-index:3;
  transition:opacity .18s ease!important;
}
.member-card:hover .member-photo-censored,
.member-card:focus .member-photo-censored,
.member-card:focus-within .member-photo-censored{
  opacity:0;
}
.member-card:hover .member-photo-clear,
.member-card:focus .member-photo-clear,
.member-card:focus-within .member-photo-clear{
  opacity:1;
}
.member-card:hover .member-redaction,
.member-card:focus .member-redaction,
.member-card:focus-within .member-redaction{
  opacity:0;
  transform:none;
}

@media (max-width:900px){
  .about-record-head{padding:42px 24px 30px}
  .about-record-body{padding:36px 24px 38px}
}
@media (max-width:640px){
  .about-record-head{padding:34px 14px 26px}
  .about-record-body{padding:28px 14px 34px}
  .about-record h2{font-size:clamp(58px,20vw,92px)}
}

/* =========================================================
   V12 — ABOUT COMPACT COPY / TRUE PHOTO SWAP
   ========================================================= */
.about-record-body{
  padding-top:34px;
}
.about-copy{
  width:100%;
  max-width:none!important;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 64px;
  font-size:16px;
  line-height:1.62;
  text-align:justify;
  text-align-last:left;
}
.about-copy-column{
  min-width:0;
}
.about-copy-column + .about-copy-column{
  border-left:1px solid var(--line);
  padding-left:64px;
}
.about-copy p{
  margin:0 0 22px;
}
.about-copy p:last-child{
  margin-bottom:0;
}
.about-copy p:first-child{
  font-size:18px;
  line-height:1.55;
}
.about-divider{
  margin-top:34px;
}

/* The card never changes. Only the bitmap inside .member-photo swaps. */
.member-photo{
  position:relative;
  isolation:isolate;
}
.member-photo > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 22%;
  transform:none!important;
  transition:opacity .16s ease!important;
}
.member-photo-censored{
  z-index:2;
  opacity:1;
  filter:none!important;
}
.member-photo-clear{
  z-index:1;
  opacity:0;
  filter:none!important;
}
.member-card:hover .member-photo-censored,
.member-card:focus-visible .member-photo-censored,
.member-card:focus-within .member-photo-censored{
  opacity:0;
}
.member-card:hover .member-photo-clear,
.member-card:focus-visible .member-photo-clear,
.member-card:focus-within .member-photo-clear{
  opacity:1;
}
.member-redaction{display:none!important}

@media (max-width:900px){
  .about-copy{grid-template-columns:1fr;gap:0;text-align:left}
  .about-copy-column + .about-copy-column{border-left:0;padding-left:0}
  .about-copy-column:first-child{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}
}

/* =========================================================
   V12 — PUBLIC CONTACT CHANNEL
   ========================================================= */
.contact-section{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:0;
  background:#000;
  color:#fff;
}
.contact-header{
  min-height:170px;
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:40px;
  padding:42px 58px 34px;
}
.contact-header h2{
  margin:14px 0 0;
  font:clamp(64px,8vw,138px)/.82 var(--font-impact);
  letter-spacing:-.015em;
  color:#efeee8;
}
.contact-code{
  display:block;
  color:var(--yellow);
  font-size:9px;
  letter-spacing:.12em;
}
.contact-channel-meta{
  min-width:230px;
  display:grid;
  gap:8px;
  padding-top:12px;
  border-top:1px solid var(--line);
  color:#777;
  font-size:8px;
  text-align:right;
}
.contact-channel-meta strong{
  color:var(--yellow);
  font-weight:400;
}
.contact-grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);
  border-top:1px solid var(--line);
}
.contact-copy{
  min-height:220px;
  padding:34px 58px 38px;
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.contact-copy p{
  max-width:760px;
  margin:0;
  color:#aaa;
  font-size:18px;
  line-height:1.58;
}
.contact-copy .contact-note{
  max-width:620px;
  margin-top:38px;
  color:#666;
  font-size:8px;
  line-height:1.5;
  letter-spacing:.06em;
}
.contact-links{
  display:flex;
  flex-direction:column;
}
.contact-links a{
  flex:1;
  min-height:110px;
  display:grid;
  grid-template-columns:120px 1fr;
  align-items:center;
  gap:28px;
  padding:24px 34px;
  border-bottom:1px solid var(--line);
  color:#efeee8;
  transition:background .18s ease,color .18s ease;
}
.contact-links a:last-child{border-bottom:0}
.contact-links a span{
  color:#777;
  font:8px var(--font-system);
  letter-spacing:.12em;
}
.contact-links a strong{
  min-width:0;
  overflow-wrap:anywhere;
  font:500 13px var(--font-system);
  color:#efeee8;
}
.contact-links a:hover,
.contact-links a:focus-visible{
  background:var(--yellow);
  color:#000;
  outline:none;
}
.contact-links a:hover span,
.contact-links a:hover strong,
.contact-links a:focus-visible span,
.contact-links a:focus-visible strong{color:#000}
.contact-status{
  min-height:38px;
  display:flex;
  align-items:center;
  padding:0 58px;
  border-top:1px solid var(--line);
  color:#555;
  font-size:8px;
  letter-spacing:.12em;
}
.status-dot{
  display:inline-block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--yellow);
  margin-right:8px;
  box-shadow:0 0 10px rgba(255,212,0,.22);
}

@media(max-width:900px){
  .contact-header{padding:38px 24px 28px;align-items:flex-start}
  .contact-grid{grid-template-columns:1fr}
  .contact-copy{min-height:0;padding:30px 24px;border-right:0;border-bottom:1px solid var(--line)}
  .contact-links a{padding:22px 24px}
  .contact-status{padding:0 24px}
}
@media(max-width:620px){
  .contact-header{display:block;padding:34px 14px 26px}
  .contact-header h2{font-size:clamp(64px,22vw,96px)}
  .contact-channel-meta{margin-top:26px;min-width:0;text-align:left}
  .contact-copy{padding:26px 14px}
  .contact-copy p{font-size:16px}
  .contact-links a{grid-template-columns:1fr;gap:8px;min-height:92px;padding:20px 14px}
  .contact-status{padding:0 14px}
}

/* =========================================================
   V16 — OPERATIONS / 9:16 FLYER CARDS
   Upcoming operations use vertical Instagram-story artwork.
   The media area contains image only: no date, labels or overlays.
   ========================================================= */
.ops-card.upcoming{
  display:grid;
  grid-template-columns:minmax(190px,.62fr) minmax(0,1.38fr);
  align-items:stretch;
  min-height:0;
}

.ops-card.upcoming .ops-card-media{
  width:100%;
  aspect-ratio:9 / 16;
  align-self:start;
  overflow:hidden;
  background:#050505;
  border-right:1px solid var(--line);
  border-bottom:0;
}

.ops-card.upcoming .ops-card-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}

/* Explicitly prevent decorative or textual overlays on flyer media. */
.ops-card.upcoming .ops-card-media::before,
.ops-card.upcoming .ops-card-media::after{
  content:none!important;
  display:none!important;
}

/* The information column keeps all dates/status text outside the artwork. */
.ops-card.upcoming .ops-card-body{
  min-width:0;
  align-self:stretch;
}

/* Previous operation keeps its existing landscape archive artwork. */
.previous-feature .ops-card-image{
  align-self:stretch;
  min-height:0;
}
.previous-feature .ops-card-image img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}


/* =========================================================
   V17 — OPERATIONS FINAL / WIDER 9:16 FLYERS + META ALIGNMENT
   Final override: vertical flyer gets more horizontal presence;
   all yellow metadata shares one clean right edge.
   ========================================================= */
.ops-card.upcoming{
  grid-template-columns:minmax(280px,.88fr) minmax(0,1.12fr);
}

.ops-card.upcoming .ops-card-media{
  aspect-ratio:9 / 16;
}

.ops-card.upcoming .file-meta div{
  grid-template-columns:minmax(150px,.72fr) minmax(0,1.28fr);
  align-items:start;
  gap:24px;
}

.ops-card.upcoming .file-meta dd{
  width:100%;
  max-width:none;
  justify-self:stretch;
  text-align:right;
  line-height:1.35;
  overflow-wrap:normal;
  word-break:normal;
}

/* Contact is a global closing section and therefore works unchanged
   on archive, operations and every entity file. */


/* =========================================================
   V18 — DECLASSIFICATION BEHAVIOR / MOBILE + DIRECTOR RESTRICTION
   Desktop: entity/member photos reveal on hover.
   Mobile: reveal is staged automatically when a card enters viewport;
   the first tap on an entity still opens its file immediately.
   Direction is never declassified: the system returns ACCESS DENIED.
   ========================================================= */

/* Entity swap stays visually subtle while JS changes the bitmap. */
.entity-reveal.is-mobile-declassified img{
  transform:scale(1.012);
}

/* Regular team members: photo only, never the card itself. */
.member-card-reveal .member-photo-censored,
.member-card-reveal .member-photo-clear{
  transition:opacity .20s ease!important;
}

/* Direction is a restricted record: the clear bitmap is never exposed. */
.member-card-director .member-photo-clear{
  display:none!important;
  opacity:0!important;
}
.member-card-director .member-photo-censored{
  opacity:1!important;
}

.director-access-response{
  position:absolute;
  inset:0;
  z-index:5;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:28px;
  background:rgba(0,0,0,.86);
  border:1px solid rgba(226,193,52,.18);
  color:#777;
  text-align:center;
  letter-spacing:.10em;
  opacity:0;
  visibility:hidden;
  transform:translateY(4px);
  pointer-events:none;
  transition:opacity .18s ease,visibility .18s ease,transform .22s ease;
}
.director-access-response::before{
  content:"";
  position:absolute;
  left:12%;
  right:12%;
  top:50%;
  height:1px;
  background:rgba(226,193,52,.18);
  transform:translateY(-50%);
}
.director-access-response > *{
  position:relative;
  z-index:1;
  background:#000;
  padding:0 8px;
}
.director-access-response strong{
  color:var(--yellow);
  font-weight:400;
  font-size:11px;
}
.director-access-response b{
  margin-top:8px;
  color:var(--yellow);
  font-weight:700;
  font-size:13px;
  letter-spacing:.16em;
}
.director-access-response small{
  color:#aaa;
  font-size:8px;
}
.director-access-check{
  color:#666;
}

@media (hover:hover) and (pointer:fine){
  /* Only normal members reveal. */
  .member-card-reveal:hover .member-photo-censored,
  .member-card-reveal:focus-visible .member-photo-censored,
  .member-card-reveal:focus-within .member-photo-censored{
    opacity:0!important;
  }
  .member-card-reveal:hover .member-photo-clear,
  .member-card-reveal:focus-visible .member-photo-clear,
  .member-card-reveal:focus-within .member-photo-clear{
    opacity:1!important;
  }

  /* Direction remains classified; hover is treated as an access request. */
  .member-card-director:hover .member-photo-censored,
  .member-card-director:focus-visible .member-photo-censored,
  .member-card-director:focus-within .member-photo-censored{
    opacity:.28!important;
  }
  .member-card-director:hover .director-access-response,
  .member-card-director:focus-visible .director-access-response,
  .member-card-director:focus-within .director-access-response{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
  }
}

/* Coarse pointer: prevent :focus from behaving like a permanent hover.
   JS owns the reveal timing on mobile. */
@media (hover:none), (pointer:coarse){
  .member-card-reveal .member-photo-censored,
  .member-card-reveal:focus .member-photo-censored,
  .member-card-reveal:focus-within .member-photo-censored{
    opacity:1!important;
  }
  .member-card-reveal .member-photo-clear,
  .member-card-reveal:focus .member-photo-clear,
  .member-card-reveal:focus-within .member-photo-clear{
    opacity:0!important;
  }
  .member-card-reveal.is-mobile-revealed .member-photo-censored{
    opacity:0!important;
  }
  .member-card-reveal.is-mobile-revealed .member-photo-clear{
    opacity:1!important;
  }

  .member-card-director .director-access-response{
    opacity:0;
    visibility:hidden;
  }
  .member-card-director.is-access-denied .member-photo-censored{
    opacity:.25!important;
  }
  .member-card-director.is-access-denied .director-access-response{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
  }
}

/* =========================================================
   V21 — OPERATIONS REBUILD
   Upcoming operations = full-width feature records.
   Previous operations = compact two-column archive cards.
   ========================================================= */

/* --- Upcoming / full-width records --- */
.ops-feature-list{
  display:grid;
  gap:18px;
  padding:18px 28px 34px;
}

.ops-feature{
  display:grid;
  grid-template-columns:minmax(360px,.92fr) minmax(0,1.08fr);
  min-height:610px;
  border:1px solid var(--line);
  background:#030303;
}

.ops-feature-media{
  position:relative;
  overflow:hidden;
  border-right:1px solid var(--line);
  background:#060606 url("../images/ui/grunge-texture.jpg") center / cover no-repeat;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:0;
}

.ops-feature-media::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.18));
  pointer-events:none;
}

.ops-feature-media img{
  position:relative;
  z-index:1;
  display:block;
  height:min(86%,560px);
  width:auto;
  max-width:88%;
  aspect-ratio:9 / 16;
  object-fit:cover;
  box-shadow:0 0 0 1px rgba(255,255,255,.05);
}

.ops-feature-body{
  padding:48px 54px;
  min-width:0;
  display:flex;
  flex-direction:column;
}

.ops-feature .ops-card-top{
  font-size:13px;
  padding-bottom:15px;
}

.ops-feature h3{
  font:clamp(54px,5.6vw,94px)/.92 var(--font-impact);
  margin:34px 0 38px;
  color:#efeee8;
}

.ops-feature .file-meta{
  margin:0;
}

.ops-feature .file-meta div{
  grid-template-columns:minmax(150px,.64fr) minmax(0,1.36fr);
  gap:30px;
  align-items:center;
  min-height:72px;
}

.ops-feature .file-meta dd{
  width:100%;
  max-width:none;
  text-align:right;
  line-height:1.35;
}

.ops-feature.tentative .ops-card-top span:last-child{
  color:#a58d18;
}

.ops-action{
  margin-top:auto;
  min-height:58px;
  border:1px solid var(--yellow);
  padding:0 22px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  color:var(--yellow);
  text-decoration:none;
  transition:background .18s ease,color .18s ease;
}

.ops-action:hover{
  background:var(--yellow);
  color:#050505;
}

/* --- Previous / compact archive grid --- */
.ops-archive-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  padding:18px 28px 34px;
}

.ops-archive-card{
  display:grid;
  grid-template-columns:minmax(190px,.76fr) minmax(0,1.24fr);
  min-height:430px;
  border:1px solid var(--line);
  background:#030303;
}

.ops-archive-media{
  overflow:hidden;
  border-right:1px solid var(--line);
  background:#050505;
}

.ops-archive-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(1) contrast(1.08) brightness(.7);
}

.ops-archive-body{
  padding:30px;
  min-width:0;
}

.ops-archive-card .ops-card-top{
  padding-bottom:10px;
}

.ops-archive-card .file-label{
  margin:10px 0 0;
}

.ops-archive-card h3{
  font:46px/.94 var(--font-impact);
  margin:24px 0 26px;
  color:#efeee8;
}

.ops-archive-card .file-meta div{
  grid-template-columns:minmax(118px,.72fr) minmax(0,1.28fr);
  gap:18px;
  align-items:start;
}

.ops-archive-card .file-meta dd{
  width:100%;
  max-width:none;
  text-align:right;
  line-height:1.35;
}

/* =========================================================
   V22 — OPERATIONS / COMPACT FEATURE RECORDS
   Keeps 9:16 artwork, but prevents the poster from dictating
   the height of the whole operation record on desktop.
   ========================================================= */
@media (min-width:1181px){
  .ops-feature{
    grid-template-columns:420px minmax(0,1fr);
    min-height:560px;
  }

  .ops-feature-media{
    min-height:0;
    padding:24px;
  }

  .ops-feature-media img{
    width:min(300px,100%);
    max-width:100%;
    height:auto;
    aspect-ratio:9 / 16;
    object-fit:cover;
  }

  .ops-feature-body{
    padding:38px 44px;
  }

  .ops-feature h3{
    font-size:clamp(52px,4.8vw,78px);
    margin:26px 0 30px;
  }

  .ops-feature .file-meta div{
    min-height:62px;
  }
}


/* =========================================================
   V23 — OPERATIONS / FULL-BLEED FEATURE ARTWORK
   The operation artwork now fills the entire media column.
   No inset poster, no internal padding, no empty texture frame.
   ========================================================= */
@media (min-width:1181px){
  .ops-feature-media{
    padding:0;
    overflow:hidden;
  }

  .ops-feature-media img{
    width:100%;
    max-width:none;
    height:100%;
    aspect-ratio:auto;
    object-fit:cover;
    object-position:center;
    box-shadow:none;
  }
}

/* =========================================================
   V24 — OPERATIONS / SHORTER FEATURE RECORD + CROPPED ARTWORK
   Desktop operation cards are intentionally shorter. The media
   column is wider and the 9:16 source artwork is cropped with
   object-fit: cover so the empty top/bottom texture is removed.
   ========================================================= */
@media (min-width:1181px){
  .ops-feature{
    grid-template-columns:500px minmax(0,1fr);
    height:625px;
    min-height:0;
    align-items:stretch;
  }

  .ops-feature-media{
    width:100%;
    height:100%;
    min-height:0;
    padding:0;
    overflow:hidden;
  }

  .ops-feature-media img{
    width:100%;
    height:100%;
    max-width:none;
    aspect-ratio:auto;
    object-fit:cover;
    object-position:center;
    box-shadow:none;
  }

  .ops-feature-body{
    height:100%;
    box-sizing:border-box;
    padding:34px 42px;
  }

  .ops-feature h3{
    font-size:clamp(52px,4.5vw,76px);
    margin:24px 0 26px;
  }

  .ops-feature .file-meta div{
    min-height:58px;
  }

  .ops-action{
    margin-top:28px;
  }
}
