/* Neurohaven reusable image zoom, document cards and video playlist modules. */

.article-visual-card .article-figure img,
[data-zoomable-image] {
  cursor: zoom-in;
}

.article-visual-card .article-figure img:focus-visible,
[data-zoomable-image]:focus-visible {
  outline: .1875rem solid color-mix(in srgb, var(--accent) 78%, white 8%);
  outline-offset: -.1875rem;
}

.article-visual-card--thumbnails .article-figure-stack {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
}
.article-visual-card--thumbnails .article-figure {
  display: grid;
  grid-template-rows: minmax(9.375rem, 11.875rem) auto;
  min-width: 0;
}
.article-visual-card--thumbnails .article-figure img {
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: contain;
  background: rgba(3, 7, 18, .58);
}
.article-visual-card:not(.article-visual-card--thumbnails) .article-figure img {
  width: 100%;
  height: auto;
  object-fit: contain;
  background: rgba(3, 7, 18, .58);
}

.nh-image-modal {
  position: fixed;
  inset: 0;
  z-index: 420;
  display: grid;
  place-items: center;
  padding: 5vh 5vw;
  background: rgba(2, 5, 15, .88);
  backdrop-filter: blur(.75rem);
}
.nh-image-modal[hidden] { display: none !important; }
.nh-image-modal__dialog {
  position: relative;
  width: 90vw;
  height: 90vh;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
  border: .0625rem solid var(--line-strong);
  border-radius: var(--radius-lg);
  background: rgba(5, 9, 23, .985);
  box-shadow: 0 1.75rem 5.625rem rgba(0, 0, 0, .58);
}
.nh-image-modal__header {
  padding: 1.25rem 4.375rem 1.125rem 1.5rem;
  border-bottom: .0625rem solid var(--line);
  background: linear-gradient(135deg, rgba(52, 215, 238, .08), rgba(139, 156, 255, .06));
}
.nh-image-modal__header[hidden] { display: none; }
.nh-image-modal__title {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2.2vw, 1.875rem);
  line-height: 1.12;
}
.nh-image-modal__body {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  overflow: hidden;
}
.nh-image-modal--has-details .nh-image-modal__body {
  grid-template-columns: minmax(0, 1.25fr) minmax(18.75rem, .75fr);
}
.nh-image-modal__stage {
  min-width: 0;
  min-height: 0;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 2.5vw, 2.125rem);
  overflow: hidden;
}
.nh-image-modal__image {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.nh-image-modal__details {
  min-width: 0;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding: clamp(1.375rem, 3vw, 2.375rem);
  border-left: .0625rem solid var(--line);
  background: linear-gradient(180deg, rgba(255, 255, 255, .045), rgba(255, 255, 255, .018));
  color: var(--ink-dim);
  font-size: .9375rem;
  line-height: 1.65;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--accent) 62%, transparent) rgba(255, 255, 255, .035);
}
.nh-image-modal__details[hidden] { display: none; }
.nh-image-modal__details::-webkit-scrollbar,
.nh-image-modal__body::-webkit-scrollbar {
  width: .625rem;
}
.nh-image-modal__details::-webkit-scrollbar-track,
.nh-image-modal__body::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, .025);
  border-radius: 62.4375rem;
}
.nh-image-modal__details::-webkit-scrollbar-thumb,
.nh-image-modal__body::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--accent), var(--accent-2));
  border: .125rem solid rgba(5, 9, 23, .96);
  border-radius: 62.4375rem;
}
.nh-image-modal__details > :first-child { margin-top: 0; }
.nh-image-modal__details > :last-child { margin-bottom: 0; }
.nh-image-modal__details h3,
.nh-image-modal__details h4 {
  margin: 1.35em 0 .55em;
  color: var(--ink);
  font-family: var(--font-display);
  line-height: 1.2;
}
.nh-image-modal__details p { margin: 0 0 1em; }
.nh-image-modal__details ul,
.nh-image-modal__details ol {
  margin: .5em 0 0;
  padding-left: 1.25rem;
}
.nh-image-modal__details li + li { margin-top: .72em; }
.nh-image-modal__details-lead {
  padding-bottom: 1rem;
  border-bottom: .0625rem solid var(--line);
  color: var(--ink);
  font-size: 1rem;
}
.nh-image-modal__caption {
  margin: 0;
  padding: .8125rem 3.625rem .9375rem 1.125rem;
  border-top: .0625rem solid var(--line);
  color: var(--ink-dim);
  font-size: .8125rem;
  line-height: 1.45;
}
.nh-image-modal__caption:empty { display: none; }
.nh-image-modal__close {
  position: absolute;
  top: .75rem;
  right: .75rem;
  z-index: 2;
  width: 2.625rem;
  height: 2.625rem;
  display: grid;
  place-items: center;
  border: .0625rem solid rgba(255, 255, 255, .22);
  border-radius: 62.4375rem;
  background: rgba(3, 7, 18, .82);
  color: white;
  font: 500 1.625rem/1 var(--font-display);
  cursor: pointer;
}
.nh-image-modal__close:hover,
.nh-image-modal__close:focus-visible {
  border-color: var(--accent);
  color: var(--accent);
  outline: none;
}
body.nh-media-modal-open { overflow: hidden; }

.article-video-playlist {
  display: grid;
  gap: .75rem;
}
.article-video-playlist-frame { margin: 0; }
.article-video-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .625rem;
}
.article-video-control {
  width: 2.75rem;
  min-width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  flex: 0 0 2.75rem;
  display: inline-grid;
  place-items: center;
  border: .0625rem solid var(--line);
  border-radius: 50%;
  background: rgba(255, 255, 255, .055);
  color: var(--ink-dim);
  font: 700 .8125rem/1 var(--font-mono);
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, color .18s ease, transform .18s ease;
}
.article-video-control:hover {
  transform: translateY(-.0625rem);
  border-color: var(--line-strong);
  color: var(--ink);
}
.article-video-control.is-active,
.article-video-control[aria-selected="true"] {
  border-color: color-mix(in srgb, var(--accent) 72%, transparent);
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent);
}
.article-video-control:focus-visible {
  outline: .125rem solid var(--accent);
  outline-offset: .1875rem;
}
.article-video-current-title {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1rem;
  line-height: 1.3;
}
.article-video-current-description {
  margin: -.3125rem 0 0;
  color: var(--muted);
  font-size: .8125rem;
  line-height: 1.5;
}

.article-youtube-card--full {
  width: 100%;
  margin: clamp(1.25rem, 3vw, 2rem) 0 0;
  padding: clamp(1rem, 2.5vw, 1.5rem);
  border: .0625rem solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg, rgba(52, 215, 238, .055), rgba(139, 156, 255, .04));
  box-shadow: 0 1.125rem 2.875rem rgba(0, 0, 0, .16);
}
.article-youtube-card--full .article-video-playlist-frame {
  width: 100%;
}
.article-youtube-topic-filter {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  padding: .875rem 1rem;
  border: .0625rem solid var(--line);
  border-radius: var(--radius);
  background: rgba(255,255,255,.035);
}
.article-youtube-topic-filter label {
  display: grid;
  gap: .4rem;
  min-width: min(100%, 24rem);
}
.article-youtube-topic-filter label > span {
  color: var(--ink-dim);
  font: 700 .6875rem/1.2 var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.article-youtube-topic-filter select {
  width: 100%;
  min-height: 2.875rem;
  border: .0625rem solid var(--line-strong);
  border-radius: .75rem;
  background: rgba(3, 7, 18, .82);
  color: var(--ink);
  padding: .65rem 2.25rem .65rem .8rem;
  font: 600 .9rem/1.2 var(--font-display);
}
.article-youtube-topic-count {
  color: var(--muted);
  font: 600 .72rem/1.35 var(--font-mono);
  white-space: nowrap;
}
.article-video-controls--topics {
  align-items: stretch;
}
.article-video-controls--topics > [hidden] {
  display: none !important;
}
.article-youtube-source-link {
  min-height: 2.75rem;
  display: inline-flex;
  align-items: center;
  gap: .625rem;
  padding: .45rem .75rem .45rem .45rem;
  border: .0625rem solid var(--line);
  border-radius: 62.4375rem;
  background: rgba(255,255,255,.045);
  color: var(--ink);
  text-decoration: none;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.article-youtube-source-link:hover,
.article-youtube-source-link:focus-visible {
  transform: translateY(-.0625rem);
  border-color: color-mix(in srgb, var(--accent) 60%, var(--line));
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  outline: none;
}
.article-youtube-source-link__number {
  width: 1.9rem;
  height: 1.9rem;
  flex: 0 0 1.9rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(255,255,255,.065);
  color: var(--accent);
  font: 700 .6875rem/1 var(--font-mono);
}
.article-youtube-source-link > span:last-child {
  display: grid;
  gap: .08rem;
}
.article-youtube-source-link strong {
  font: 650 .78rem/1.2 var(--font-display);
}
.article-youtube-source-link small {
  color: var(--muted);
  font: 600 .65rem/1.2 var(--font-mono);
}
.article-youtube-empty-state {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  align-content: center;
  gap: .5rem;
  padding: 1.5rem;
  text-align: center;
  background: linear-gradient(145deg, rgba(3,7,18,.94), rgba(10,15,31,.96));
  color: var(--ink);
}
.article-youtube-empty-state[hidden] {
  display: none !important;
}
.article-youtube-empty-state strong {
  font: 700 clamp(1rem, 2vw, 1.35rem)/1.2 var(--font-display);
}
.article-youtube-empty-state span {
  max-width: 42rem;
  color: var(--muted);
  line-height: 1.5;
}
@media (max-width: 45rem) {
  .article-youtube-topic-filter {
    align-items: stretch;
    flex-direction: column;
  }
  .article-youtube-topic-count {
    white-space: normal;
  }
  .article-youtube-source-link {
    width: 100%;
    border-radius: .9rem;
  }
}

.article-document-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .875rem;
  margin: 1.125rem 0 .625rem;
}
.article-document-card {
  min-width: 0;
  display: grid;
  gap: .5625rem;
  padding: 1.125rem;
  border: .0625rem solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg, rgba(52, 215, 238, .08), rgba(139, 156, 255, .055));
  color: var(--ink-dim);
  text-decoration: none;
  box-shadow: 0 .875rem 2.125rem rgba(0, 0, 0, .16);
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.article-document-card:hover,
.article-document-card:focus-visible {
  transform: translateY(-.125rem);
  border-color: color-mix(in srgb, var(--accent) 68%, transparent);
  background: linear-gradient(145deg, rgba(52, 215, 238, .13), rgba(139, 156, 255, .08));
  outline: none;
}
.article-document-card__meta {
  color: var(--accent);
  font: 700 .6875rem/1.3 var(--font-mono);
  letter-spacing: .11em;
  text-transform: uppercase;
}
.article-document-card strong {
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.125rem;
  line-height: 1.25;
}
.article-document-card__detail {
  color: var(--muted);
  font-size: .8125rem;
}

@media (max-width: 51.25rem) {
  .nh-image-modal--has-details .nh-image-modal__body {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(52vh, 1fr) auto;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--accent) 62%, transparent) rgba(255, 255, 255, .035);
  }
  .nh-image-modal--has-details .nh-image-modal__stage {
    min-height: 52vh;
  }
  .nh-image-modal__details {
    overflow: visible;
    border-left: 0;
    border-top: .0625rem solid var(--line);
  }
}

@media (max-width: 40rem) {
  .article-visual-card--thumbnails .article-figure-stack {
    grid-template-columns: 1fr;
  }
  .article-visual-card--thumbnails .article-figure {
    grid-template-rows: minmax(13.125rem, 18.75rem) auto;
  }
  .nh-image-modal {
    padding: 3vh 3vw;
  }
  .nh-image-modal__dialog {
    width: 94vw;
    height: 94vh;
  }
  .nh-image-modal__stage { padding: .75rem; }
  .nh-image-modal__header { padding: 1.0625rem 3.875rem .9375rem 1.0625rem; }
  .nh-image-modal__details { padding: 1.25rem 1.125rem 1.625rem; }
  .article-document-grid { grid-template-columns: 1fr; }
}

/* Reusable lead visuals placed inside the main reading column. */
.article-body-lead-visuals {
  display: grid;
  gap: 1rem;
  margin: 0 0 clamp(1.625rem, 4vw, 2.75rem);
}
.article-body-lead-visuals .article-figure {
  margin: 0;
}
.article-body-lead-visuals .article-figure img {
  display: block;
  width: 100%;
  height: auto;
  max-height: min(78vh, 61.25rem);
  object-fit: contain;
  background: rgba(3, 7, 18, .58);
}

/* A linked visual is a destination, not an image-viewer trigger. */
.article-figure__direct-link {
  display: block;
  color: inherit;
  text-decoration: none;
}
.article-figure__direct-link img,
.article-visual-card .article-figure__direct-link img {
  cursor: pointer;
}
.article-figure__direct-link:focus-visible {
  outline: .1875rem solid color-mix(in srgb, var(--accent) 78%, white 8%);
  outline-offset: -.1875rem;
}

/* YouTube and recovered local files use separate modules. */
.article-youtube-card .article-video-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .625rem;
  max-height: none;
  overflow: visible;
  padding: .125rem;
}
.article-youtube-card .article-video-control {
  width: 2.75rem;
  min-width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  flex: 0 0 2.75rem;
  border-radius: 50%;
}
.article-video-control__number {
  display: block;
  line-height: 1;
}
.article-video-status {
  margin: -.125rem 0 0;
  color: var(--ink-dim);
  font: 600 .6875rem/1.35 var(--font-mono);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.article-local-video-library {
  display: grid;
  gap: .75rem;
}
.article-local-video-frame {
  overflow: hidden;
  aspect-ratio: 16 / 9;
  border: .0625rem solid var(--line);
  border-radius: var(--radius);
  background: #030711;
}
.article-local-video-frame video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #030711;
}
.article-local-video-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .5625rem;
  max-height: 26.875rem;
  overflow: auto;
  padding: .125rem;
}
.article-local-video-item {
  min-width: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 5.25rem minmax(0, 1fr);
  overflow: hidden;
  border: .0625rem solid var(--line);
  border-radius: .6875rem;
  background: rgba(255,255,255,.045);
  color: var(--ink-dim);
  text-align: left;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.article-local-video-item:hover,
.article-local-video-item:focus-visible {
  transform: translateY(-.0625rem);
  border-color: var(--line-strong);
  outline: none;
}
.article-local-video-item.is-active,
.article-local-video-item[aria-pressed="true"] {
  border-color: color-mix(in srgb, var(--accent) 72%, transparent);
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}
.article-local-video-item__thumb {
  position: relative;
  min-height: 3.875rem;
  background: #050b15;
  overflow: hidden;
}
.article-local-video-item__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.article-local-video-item__fallback {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  color: var(--muted);
}
.article-local-video-item__play {
  position: absolute;
  inset: 50% auto auto 50%;
  transform: translate(-50%, -50%);
  width: 1.75rem;
  height: 1.75rem;
  display: grid;
  place-items: center;
  border-radius: 62.4375rem;
  background: rgba(4,10,20,.82);
  color: #fff;
  font-size: .6875rem;
}
.article-local-video-item__copy {
  min-width: 0;
  display: grid;
  align-content: center;
  gap: .3125rem;
  padding: .5625rem;
}
.article-local-video-item__copy > span {
  color: var(--accent);
  font: 800 .5625rem/1 var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.article-local-video-item__copy strong {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  color: var(--ink);
  font: 700 .6875rem/1.3 var(--font-display);
}
@media (max-width: 45rem) {
  .article-local-video-list { grid-template-columns: 1fr; max-height: none; }
  .article-local-video-item { grid-template-columns: 7rem minmax(0, 1fr); }
}

.article-figure { position: relative; }
.article-figure__resource-badge {
  position: absolute;
  top: .625rem;
  left: .625rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  min-height: 1.75rem;
  padding: .375rem .5625rem;
  border: .0625rem solid rgba(255,255,255,.24);
  border-radius: 62.4375rem;
  background: rgba(6,13,24,.9);
  color: white;
  box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.28);
  font: 800 .625rem/1 var(--font-mono);
  letter-spacing: .06em;
  text-transform: uppercase;
  pointer-events: none;
}
.article-figure__resource-badge--link { left: auto; right: .625rem; }
.article-figure--document .article-figure__direct-link {
  display: block;
  border-radius: .75rem;
  overflow: hidden;
  border: .0625rem solid var(--line);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.article-figure--document .article-figure__direct-link:hover,
.article-figure--document .article-figure__direct-link:focus-visible {
  transform: translateY(-.125rem);
  border-color: color-mix(in srgb, var(--accent) 66%, transparent);
  box-shadow: 0 .875rem 2.125rem rgba(0,0,0,.24);
  outline: none;
}
.article-document-visual-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}
.article-document-visual-grid .article-figure { margin: 0; }
.article-document-visual-grid .article-figure img {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: top;
}
.article-document-visual-grid figcaption {
  font-size: .6875rem;
  line-height: 1.45;
}
@media (max-width: 45rem) {
  .article-video-controls { max-height: none; }
  .article-document-visual-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* v006 full-text document search. */
.document-search__sr {
  position: absolute !important;
  width: .0625rem !important;
  height: .0625rem !important;
  padding: 0 !important;
  margin: -.0625rem !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.article-document-search {
  display: grid;
  gap: 1rem;
  margin: 0 0 clamp(1.75rem, 4vw, 3rem);
  padding: clamp(1.25rem, 3vw, 2rem);
  border: .0625rem solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg, rgba(52, 215, 238, .08), rgba(139, 156, 255, .055));
  box-shadow: 0 1.125rem 2.875rem rgba(0, 0, 0, .18);
}
.article-document-search__head h2 {
  margin: .5rem 0 .5rem;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3vw, 2.375rem);
  line-height: 1.08;
}
.article-document-search__head p,
.article-document-search__status {
  margin: 0;
  color: var(--muted);
}
.article-document-search__form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: .625rem;
}
.article-document-search__form input {
  min-width: 0;
  min-height: 3rem;
  padding: 0 .9375rem;
  border: .0625rem solid var(--line-strong);
  border-radius: .75rem;
  background: rgba(3, 7, 18, .72);
  color: var(--ink);
  font: 600 .9375rem/1.2 var(--font-body);
}
.article-document-search__form input:focus {
  border-color: var(--accent);
  outline: .125rem solid color-mix(in srgb, var(--accent) 35%, transparent);
  outline-offset: .125rem;
}
.article-document-search__form button {
  min-height: 3rem;
  padding: 0 1rem;
  border: .0625rem solid color-mix(in srgb, var(--accent) 58%, transparent);
  border-radius: .75rem;
  background: color-mix(in srgb, var(--accent) 17%, transparent);
  color: var(--ink);
  font: 800 .75rem/1 var(--font-mono);
  cursor: pointer;
}
.article-document-search__clear { background: transparent !important; }
.article-document-search__results {
  display: grid;
  gap: .75rem;
}
.article-document-search__results[aria-busy="true"] { opacity: .65; }
.article-document-result {
  min-width: 0;
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr);
  gap: .9375rem;
  padding: .75rem;
  border: .0625rem solid var(--line);
  border-radius: .8125rem;
  background: rgba(3, 7, 18, .54);
}
.article-document-result__preview {
  display: block;
  overflow: hidden;
  border-radius: .5rem;
  border: .0625rem solid var(--line);
  background: #fff;
}
.article-document-result__preview img {
  display: block;
  width: 100%;
  height: 8.625rem;
  object-fit: cover;
  object-position: top;
}
.article-document-result__copy { min-width: 0; }
.article-document-result__copy h3 {
  margin: .3125rem 0 .5rem;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.125rem;
  line-height: 1.25;
}
.article-document-result__meta {
  color: var(--accent);
  font: 800 .625rem/1.3 var(--font-mono);
  letter-spacing: .07em;
  text-transform: uppercase;
}
.article-document-result__snippet {
  margin: 0;
  color: var(--ink-dim);
  font-size: .8125rem;
  line-height: 1.55;
}
.article-document-result__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: .6875rem;
}
.article-document-result__actions a {
  color: var(--accent);
  font: 800 .6875rem/1.2 var(--font-mono);
  text-decoration: none;
}
.article-document-result__actions a:hover { text-decoration: underline; }
.article-document-search__empty {
  margin: 0;
  padding: 1rem;
  border: .0625rem dashed var(--line-strong);
  border-radius: .75rem;
  color: var(--muted);
}
@media (max-width: 42.5rem) {
  .article-document-search__form { grid-template-columns: 1fr 1fr; }
  .article-document-search__form input { grid-column: 1 / -1; }
  .article-document-result { grid-template-columns: 4.875rem minmax(0, 1fr); }
  .article-document-result__preview img { height: 6.625rem; }
}


/* In-page PDF reader opened by document preview images. */
.nh-pdf-modal {
  position: fixed;
  inset: 0;
  z-index: 430;
  display: grid;
  place-items: center;
  padding: 5vh 5vw;
  background: rgba(2, 5, 15, .9);
  backdrop-filter: blur(.75rem);
}
.nh-pdf-modal[hidden] { display: none !important; }
.nh-pdf-modal__dialog {
  width: min(94vw, 93.75rem);
  height: 90vh;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
  border: .0625rem solid var(--line-strong);
  border-radius: var(--radius-lg);
  background: rgba(5, 9, 23, .99);
  box-shadow: 0 1.75rem 5.625rem rgba(0, 0, 0, .62);
}
.nh-pdf-modal__header {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 2.75rem;
  align-items: center;
  gap: .875rem;
  padding: .75rem .875rem .75rem 1.25rem;
  border-bottom: .0625rem solid var(--line);
  background: linear-gradient(135deg, rgba(52, 215, 238, .09), rgba(139, 156, 255, .07));
}
.nh-pdf-modal__title {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: clamp(1rem, 1.7vw, 1.5rem);
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nh-pdf-modal__actions { display: flex; align-items: center; gap: .5rem; }
.nh-pdf-modal__actions a {
  padding: .5rem .6875rem;
  border: .0625rem solid var(--line);
  border-radius: 62.4375rem;
  color: var(--ink-dim);
  font-size: .75rem;
  font-weight: 750;
  text-decoration: none;
}
.nh-pdf-modal__actions a:hover,
.nh-pdf-modal__actions a:focus-visible { border-color: var(--accent); color: var(--accent); outline: none; }
.nh-pdf-modal__close {
  width: 2.625rem;
  height: 2.625rem;
  display: grid;
  place-items: center;
  padding: 0;
  border: .0625rem solid rgba(255,255,255,.22);
  border-radius: 50%;
  background: rgba(3,7,18,.82);
  color: #fff;
  font: 500 1.625rem/1 var(--font-display);
  cursor: pointer;
}
.nh-pdf-modal__close:hover,
.nh-pdf-modal__close:focus-visible { border-color: var(--accent); color: var(--accent); outline: none; }
.nh-pdf-modal__reader { min-width: 0; min-height: 0; background: #252525; }
.nh-pdf-modal__reader iframe { width: 100%; height: 100%; display: block; border: 0; background: #fff; }
.nh-pdf-modal__fallback { margin: 0; padding: .5rem 1rem .625rem; border-top: .0625rem solid var(--line); color: var(--muted); font-size: .75rem; text-align: center; }
.nh-pdf-modal__fallback a { color: var(--accent); }
.article-figure__direct-link--pdf { position: relative; }
.article-figure__direct-link--pdf::after {
  content: 'Read PDF';
  position: absolute;
  right: .625rem;
  bottom: .625rem;
  padding: .375rem .5625rem;
  border: .0625rem solid rgba(255,255,255,.24);
  border-radius: 62.4375rem;
  background: rgba(3,7,18,.84);
  color: #fff;
  font: 700 .625rem/1 var(--font-mono);
  letter-spacing: .06em;
  text-transform: uppercase;
  pointer-events: none;
}
@media (max-width: 40rem) {
  .nh-pdf-modal { padding: 3vh 3vw; }
  .nh-pdf-modal__dialog { width: 94vw; height: 94vh; }
  .nh-pdf-modal__header { grid-template-columns: minmax(0,1fr) 2.625rem; padding-left: .875rem; }
  .nh-pdf-modal__actions { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; }
  .nh-pdf-modal__close { grid-column: 2; grid-row: 1; }
}

/* ---------- v032 external interactive-app modal ---------- */
.nh-app-modal {
  position: fixed;
  inset: 0;
  z-index: 440;
  display: grid;
  place-items: center;
  padding: 5vh 5vw;
  background: rgba(2,5,15,.92);
  backdrop-filter: blur(.875rem);
}
.nh-app-modal[hidden] { display: none !important; }
.nh-app-modal__dialog {
  width: 90vw;
  height: 90dvh;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
  border: .0625rem solid color-mix(in srgb, var(--accent) 44%, var(--line-strong));
  border-radius: var(--radius-lg);
  background: #050917;
  box-shadow: 0 2rem 6.875rem rgba(0,0,0,.72), 0 0 3.375rem rgba(52,215,238,.14);
}
.nh-app-modal__header {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 2.75rem;
  align-items: center;
  gap: .875rem;
  padding: .6875rem .8125rem .6875rem 1.125rem;
  border-bottom: .0625rem solid rgba(255,255,255,.12);
  background: linear-gradient(135deg, rgba(52,215,238,.13), rgba(139,156,255,.10));
}
.nh-app-modal__heading {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .625rem;
}
.nh-app-modal__signal {
  width: .5625rem;
  height: .5625rem;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 1rem var(--accent);
}
.nh-app-modal__title {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: #f4f8ff;
  font: 750 clamp(.9375rem, 1.5vw, 1.3125rem)/1.15 var(--font-display);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nh-app-modal__external {
  padding: .5rem .75rem;
  border: .0625rem solid rgba(255,255,255,.18);
  border-radius: 62.4375rem;
  color: #dce8f7 !important;
  font-size: .75rem;
  font-weight: 750;
  text-decoration: none;
}
.nh-app-modal__external:hover,
.nh-app-modal__external:focus-visible {
  border-color: var(--accent);
  color: #fff !important;
  outline: none;
}
.nh-app-modal__close {
  width: 2.625rem;
  height: 2.625rem;
  display: grid;
  place-items: center;
  padding: 0;
  border: .0625rem solid rgba(255,255,255,.22);
  border-radius: 50%;
  background: rgba(3,7,18,.82);
  color: #fff;
  font: 500 1.625rem/1 var(--font-display);
  cursor: pointer;
}
.nh-app-modal__close:hover,
.nh-app-modal__close:focus-visible {
  border-color: var(--accent);
  color: var(--accent);
  outline: none;
}
.nh-app-modal__stage {
  position: relative;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: #02050f;
}
.nh-app-modal__stage iframe {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
  background: #02050f;
}
.nh-app-modal__status {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .625rem;
  background: #050917;
  color: #c9d9ea;
  font: 650 .75rem/1.3 var(--font-mono);
  letter-spacing: .04em;
  pointer-events: none;
}
.nh-app-modal__status[hidden] { display: none !important; }
.nh-app-modal__status span {
  width: .625rem;
  height: .625rem;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 1.125rem var(--accent);
  animation: nh-app-status-pulse 1.1s ease-in-out infinite alternate;
}
@keyframes nh-app-status-pulse {
  from { opacity: .35; transform: scale(.8); }
  to { opacity: 1; transform: scale(1.15); }
}
@media (max-width: 40rem) {
  .nh-app-modal { padding: 5vh 5vw; }
  .nh-app-modal__dialog { width: 90vw; height: 90dvh; }
  .nh-app-modal__header { grid-template-columns: minmax(0, 1fr) 2.625rem; gap: .625rem; padding-left: .8125rem; }
  .nh-app-modal__external { grid-column: 1 / -1; grid-row: 2; justify-self: start; }
  .nh-app-modal__close { grid-column: 2; grid-row: 1; }
}
