/* =====================================================================
   Night Library — LARGE, "the cinema".

   One artifact as big as the viewport allows, with everything needed to
   judge it arranged around it and the queue behind it always in sight.

   The two rules carried in from the Library's rendering pass hold here
   the same as everywhere else, and they are not stylistic:

     · NO backdrop-filter. Under these panes are a live artifact viewer
       and a strip of lazy thumbnails; a blurred surface re-rasterises
       all of it every frame the strip moves.

     · `contain: layout paint style` on the card-like leaves (the queue
       rows, the filmstrip cells) and NEVER `contain: size` or
       `content-visibility` — sizing containment makes the engine guess
       heights it can measure, which is what turns a scroll into a
       jitter.

   The layout is one grid over a full-width filmstrip:

     +-----------------------+----------+----------+
     |  STAGE                |  RAIL    |  UP NEXT |
     +-----------+-----------+  (tabs,  |  (queue) |
     | PROMPT    | PROVENANCE|  actions,|          |
     | (excerpt) | (kv)      |  metrics)|          |
     +-----------+-----------+----------+----------+
     |  FILMSTRIP  ‹ [..][CURRENT][..] ›            |
     +----------------------------------------------+

   Every box between the mode root and an inner scroller carries
   `min-height: 0`. A flex or grid item defaults to "never shrink below
   my content", and without the override the panes hand their height
   back to the page — which is the one thing a framed mode may not do.
   ===================================================================== */

.nslm-large {
  gap: 10px;
}
/* The shared modebar carries its own bottom margin for the unframed
   modes; here the column gap does that job, so the margin would be
   double spacing. */
.nslm-large > .nsl-modebar {
  flex: none;
  margin: 0;
}

/* ---------------------------------------------------------------------
   The grid.

   Three columns, two rows, and the rail and the queue span both rows so
   they read as full-height columns rather than as boxes stacked beside
   the stage. `minmax(0, …)` on every track is the grid twin of
   `min-height: 0`: a grid track's default minimum is `auto`, which
   means "as tall/wide as my content", and a <pre> of an 8000-character
   artifact would otherwise widen the stage column until the rail was
   pushed off the screen.
--------------------------------------------------------------------- */
.nslm-large-grid {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--nsl-rail-w) var(--nsl-rail-w);
  grid-template-rows: minmax(0, 1fr) minmax(104px, 0.34fr);
  gap: 10px;
}
.nslm-large-stage { grid-area: 1 / 1 / 2 / 2; }
.nslm-large-under { grid-area: 2 / 1 / 3 / 2; }
.nslm-large-rail  { grid-area: 1 / 2 / 3 / 3; }
.nslm-large-next  { grid-area: 1 / 3 / 3 / 4; }

.nslm-large-under {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  min-height: 0;
  min-width: 0;
}
/* Both halves of the strip are ordinary panes; they only need to be
   told, like every other box in this mode, that they may shrink. */
.nslm-large-underpane { min-width: 0; min-height: 0; }
.nslm-large-underbody { padding: 9px 12px 12px; }

/* ---------------------------------------------------------------------
   The stage.

   The pane body is the scroller AND a flex column, because the artifact
   card inside it has to be able to grow to fill a short artifact's box
   and to overflow a long one into this scrollbar. Below, the same
   overrides the lightbox applies: the global stylesheet caps .nsa-code
   at 420px with its own scrollbar, which on a full-height stage means a
   small letterbox of code inside a mostly empty pane.
--------------------------------------------------------------------- */
.nslm-large-stagebody {
  display: flex;
  flex-direction: column;
  padding: 10px 12px 12px;
}
.nslm-large .nsa-artifact {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
}
.nslm-large .nsa-actionbar { flex: none; }
.nslm-large .nsa-code {
  flex: 1;
  max-height: none;
  overflow: visible;
  /* Long lines wrap instead of running off the right edge: this is a
     reading surface, not a horizontal pan. */
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.nslm-large .nsa-code code { white-space: inherit; overflow-wrap: inherit; }
/* A still or a clip is framed rather than scrolled: the whole point of
   this mode is seeing the thing at once. The cap is viewport-relative
   so it holds at any window height. */
.nslm-large .nsa-media img,
.nslm-large .nsa-media video,
.nslm-large .nsa-frame-player img {
  max-height: 58vh;
  width: auto;
  margin: 0 auto;
}

.nslm-large-stagesub {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
  font: 10px var(--nsf-mono);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nsf-amber);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.nslm-large-stagesep { opacity: 0.45; letter-spacing: 0; }
.nslm-large-headflags {
  display: flex;
  gap: 4px;
  flex-wrap: nowrap;
  overflow: hidden;
}
.nslm-large-pos {
  font: 10px var(--nsf-mono);
  color: var(--nsf-bone);
  letter-spacing: 0.06em;
}

/* ---------------------------------------------------------------------
   The rail.
--------------------------------------------------------------------- */
.nslm-large-railbody { padding: 0 0 12px; }
/* Two structural boxes with no look of their own. They exist so that
   the element carrying role="tabpanel" wraps ONLY the switched tab
   body: the actions and the metrics below it are the same on every tab,
   and inside the panel they would be announced as part of whichever tab
   happens to be open. The padding and the rules still belong to
   .nslm-large-tabbody and .nslm-large-block, so splitting the subtree
   changes nothing that is visible. */
.nslm-large-tabpanel,
.nslm-large-railfoot { min-width: 0; }
.nslm-large-tabbody { padding: 11px 12px 4px; }
.nslm-large-kv { margin: 0; }
/* A recorded contradiction — a model pin the router did not honor —
   is a finding, and it is coloured like one. */
.nslm-large-kv .v.nslm-large-bad { color: var(--nsf-contradicted); }

.nslm-large-prompt {
  margin: 6px 0 0;
  padding: 9px 10px;
  border: 1px solid var(--nsf-glass-border);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.025);
  font: 11px/1.6 var(--nsf-mono);
  color: var(--nsf-bone);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
/* Every caveat in this mode wears the same dim italic, because they all
   say the same kind of thing: here is the edge of what is known. */
.nslm-large-caveat {
  margin: 7px 0 0;
  font: italic 10px/1.6 var(--nsf-mono);
  color: rgba(var(--nsl-haze-rgb), 0.72);
}
.nslm-large-caveat b { font-style: normal; color: rgba(232, 228, 218, 0.8); }
.nslm-large-quote {
  margin: 6px 0 0;
  padding: 0 0 0 9px;
  border-left: 2px solid rgba(224, 180, 80, 0.5);
  font: 11.5px/1.6 var(--nsf-sans);
  color: var(--nsf-bone);
}
.nslm-large-summary {
  margin: 6px 0 0;
  font: 11px/1.65 var(--nsf-sans);
  color: rgba(232, 228, 218, 0.85);
}
.nslm-large-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 8px;
}
.nslm-large-tabbody .nsf-eyebrow { margin-top: 12px; }
.nslm-large-tabbody > .nsf-eyebrow:first-child { margin-top: 0; }

.nslm-large-note {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 8px 9px;
  border: 1px solid var(--nsf-glass-border);
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.35);
  color: var(--nsf-bone);
  font: 11.5px/1.6 var(--nsf-mono);
  resize: vertical;
}
.nslm-large-note::placeholder { color: rgba(var(--nsl-haze-rgb), 0.5); }
.nslm-large-noteacts {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 7px;
}
.nslm-large-noteacts .nslm-large-caveat { margin: 0; flex: 1 1 auto; }

/* Actions and verification hang below whichever tab is open — they are
   about the artifact, not about the reading, so switching tabs must not
   move them. */
.nslm-large-block {
  padding: 12px;
  margin-top: 4px;
  border-top: 1px solid var(--nsf-glass-border);
}
.nslm-large-block .nsf-eyebrow { margin-bottom: 7px; }
.nslm-large-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
}
.nslm-large-acts .nsa-act-btn { padding: 4px 8px; }
.nsa-act-btn.nslm-large-on {
  color: #fff;
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.3);
}
.nslm-large-block .nsl-metrics { margin-top: 2px; }
.nslm-large-verdict {
  margin-top: 8px;
  padding: 5px 8px;
  border-radius: 5px;
  font: 10.5px/1.5 var(--nsf-mono);
  border: 1px solid var(--nsf-glass-border);
}
.nslm-large-verdict.good {
  color: var(--nsf-supported);
  border-color: rgba(var(--nsl-ok-rgb), 0.4);
  background: rgba(var(--nsl-ok-rgb), 0.07);
}
.nslm-large-verdict.bad {
  color: var(--nsf-contradicted);
  border-color: rgba(212, 87, 107, 0.4);
  background: rgba(212, 87, 107, 0.07);
}

/* ---------------------------------------------------------------------
   UP NEXT — the queue.

   Rows are a FIXED height, handed to this stylesheet by the component
   as --nslm-large-row-h so the virtualizer's arithmetic and the DOM can
   never disagree. A windowed list whose rows are a different height
   than the maths assumes drifts a little further out of place with
   every screenful.
--------------------------------------------------------------------- */
.nslm-large-nextbody { padding: 0; }
.nslm-large-nextlist {
  display: flex;
  flex-direction: column;
}
.nslm-large-nextrow {
  position: relative;
  flex: none;
  height: var(--nslm-large-row-h, 72px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  contain: layout paint style;
}
.nslm-large-nextrow.is-selected { box-shadow: inset 2px 0 0 rgba(var(--nsl-amber-rgb), 0.75); }
.nslm-large-nexthit {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  height: 100%;
  padding: 0 30px 0 8px;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.nslm-large-nexthit:hover { background: rgba(255, 255, 255, 0.045); }
.nslm-large-nextthumb {
  width: 96px;
  height: 54px;
}
.nslm-large-nextmeta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 auto;
  min-width: 0;
}
.nslm-large-nextname {
  font: 11.5px var(--nsf-mono);
  color: var(--nsf-bone);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nslm-large-nextsub {
  font: 10px var(--nsf-mono);
  color: rgba(var(--nsl-haze-rgb), 0.8);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nslm-large-nextkind { text-transform: uppercase; letter-spacing: 0.08em; }
.nslm-large-nextflags { display: flex; gap: 4px; overflow: hidden; }
/* The preview verb is a SIBLING of the row's hit target, never a child
   of it: a button inside a button has no accessible description. */
.nslm-large-nextpeek {
  position: absolute;
  top: 6px;
  right: 6px;
  z-index: 2;
  width: 20px;
  height: 20px;
  border: 1px solid var(--nsf-glass-border);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.5);
  color: rgba(232, 228, 218, 0.75);
  font: 11px var(--nsf-mono);
  line-height: 1;
  cursor: pointer;
}
.nslm-large-nextpeek:hover { color: var(--nsf-amber); border-color: rgba(var(--nsl-amber-rgb), 0.5); }
.nslm-large-emptyact { margin-top: 10px; }

/* ---------------------------------------------------------------------
   The filmstrip.

   Its own horizontal scroller, because the mode shell clips overflow
   and a strip that cannot scroll is a strip whose ends are unreachable
   at narrow widths. `overflow: auto` rather than `overflow-x: auto`
   deliberately: the shared lazy-thumbnail hook resolves a card's
   scroller by walking up for a computed `overflow-y` of auto/scroll, so
   a strip that declared only overflow-x would have its observers rooted
   at the app shell instead of at itself.
--------------------------------------------------------------------- */
.nslm-large-strip {
  flex: none;
  display: flex;
  align-items: stretch;
  gap: 6px;
  padding-top: 2px;
  border-top: 1px solid var(--nsf-glass-border);
}
.nslm-large-strip-track {
  flex: 1 1 auto;
  min-width: 0;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.16) transparent;
  padding: 6px 2px 2px;
}
.nslm-large-strip-track::-webkit-scrollbar { width: 8px; height: 8px; }
.nslm-large-strip-track::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.14); border-radius: 999px; }
.nslm-large-strip-track::-webkit-scrollbar-track { background: transparent; }
.nslm-large-strip-cells {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  width: max-content;
}
.nslm-large-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: none;
  width: 122px;
  padding: 3px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
  contain: layout paint style;
}
.nslm-large-cell:hover { border-color: var(--nsf-glass-border); background: rgba(255, 255, 255, 0.04); }
/* The current cell is marked by a ring AND a lifted caption, not by
   colour alone — the strip is often a row of near-identical stills. */
.nslm-large-cell.is-current {
  border-color: rgba(232, 228, 218, 0.75);
  background: rgba(255, 255, 255, 0.08);
}
.nslm-large-cell.is-current .nslm-large-cellname { color: var(--nsf-bone); }
.nslm-large-cellthumb {
  width: 114px;
  height: 64px;
}
.nslm-large-cellcap {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  min-width: 0;
  font: 9px var(--nsf-mono);
  color: rgba(var(--nsl-haze-rgb), 0.8);
}
.nslm-large-celldot {
  flex: none;
  width: 5px;
  height: 5px;
  border-radius: 999px;
}
.nslm-large-cellseq { flex: none; }
.nslm-large-cellname {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
}
.nslm-large-arrow {
  flex: none;
  align-self: center;
  width: 26px;
  height: 52px;
  border: 1px solid var(--nsf-glass-border);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  color: var(--nsf-bone);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.nslm-large-arrow:hover:not(:disabled) { background: rgba(255, 255, 255, 0.08); }
.nslm-large-arrow:disabled { opacity: 0.3; cursor: default; }

.nslm-large-footnote { flex: none; padding-top: 2px; }

/* ---------------------------------------------------------------------
   Focus. Every interactive element in this mode gets a visible ring —
   the stage is a keyboard surface (← / → step it), so a reader has to
   be able to see where the focus actually is.
--------------------------------------------------------------------- */
.nslm-large button:focus-visible,
.nslm-large textarea:focus-visible {
  outline: 2px solid var(--nsf-haze);
  outline-offset: -2px;
}

/* ---------------------------------------------------------------------
   Narrower windows.

   At two columns the PROMPT / PROVENANCE strip under the stage goes.
   It is not a loss: both are readings the rail already holds under its
   own tabs, and the strip exists only so that a wide screen does not
   make you click for them. Dropping a duplicate is always better than
   shrinking two panes past legibility.
--------------------------------------------------------------------- */
@media (max-width: 1560px) {
  .nslm-large-grid {
    grid-template-columns: minmax(0, 1fr) var(--nsl-rail-w);
    grid-template-rows: minmax(0, 1fr) minmax(0, 0.85fr);
  }
  .nslm-large-stage { grid-area: 1 / 1 / 3 / 2; }
  .nslm-large-under { display: none; }
  .nslm-large-rail  { grid-area: 1 / 2 / 2 / 3; }
  .nslm-large-next  { grid-area: 2 / 2 / 3 / 3; }
}

/* One column, and the grid itself becomes the scroller. The panes keep
   a max-height on purpose: a pane that grows to its content has no
   viewport of its own, and the queue's virtualizer would then be told
   its viewport is four hundred rows tall and render all of them. */
@media (max-width: 1100px) {
  .nslm-large-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    grid-auto-rows: auto;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .nslm-large-stage,
  .nslm-large-rail,
  .nslm-large-next { grid-area: auto; }
  .nslm-large-stage { min-height: 320px; max-height: 74vh; }
  .nslm-large-rail { max-height: 60vh; }
  .nslm-large-next { max-height: 52vh; }
  .nslm-large-stagetitle { font-size: 22px; }
  .nslm-large .nslm-large-rail,
  .nslm-large .nslm-large-next { border-left: 0; padding-left: 0; }
  .nslm-large .nslm-large-next { border-top: 1px solid var(--nsl-rule); padding-top: 14px; }
  .nslm-large .nslm-large-underpane + .nslm-large-underpane { border-left: 0; padding-left: 0; }
}

/* ---------------------------------------------------------------------
   Folio plate.

   The large reading keeps every pane it had. What changes is the
   frame: no filled boxes, no pill tabs, no second filename over the
   picture. Hairlines, an underlined word for the open tab, and the
   caption set under the work the way the folio stage does.
--------------------------------------------------------------------- */
.nslm-large .nsl-pane {
  border: 0;
  border-radius: 0;
  background: transparent;
}
.nslm-large > .nsl-modebar {
  border-bottom: 0;
  padding-bottom: 2px;
}
.nslm-large .nsl-pane-head {
  padding: 0 0 8px;
  border-bottom: 1px solid var(--nsl-rule);
  background: transparent;
}
.nslm-large .nsl-pane-title {
  font-weight: 400;
  letter-spacing: 0.18em;
  color: var(--nsf-haze);
}
.nslm-large .nsl-pane-count {
  background: none;
  border-radius: 0;
  padding: 0;
}

.nslm-large .nsa-act-btn {
  font: 12.5px var(--nsf-sans);
  text-transform: none;
  letter-spacing: 0;
  color: var(--nsf-bone);
  background: transparent;
  border: 1px solid var(--nsl-rule);
  border-radius: 3px;
  padding: 5px 11px;
}
.nslm-large .nsa-act-btn:hover:not(:disabled) {
  color: #fff;
  background: rgba(232, 228, 218, 0.06);
  border-color: rgba(232, 228, 218, 0.28);
}
.nsa-act-btn.nslm-large-on {
  color: var(--nsf-amber);
  background: transparent;
  border-color: rgba(var(--nsl-amber-rgb), 0.55);
}

/* The viewer's own filename repeats the caption under the picture. */
.nslm-large .nsa-title {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.nslm-large .nsa-actionbar {
  background: transparent;
  border-bottom: 1px solid var(--nsl-rule-soft);
  padding: 0 0 8px;
}
.nslm-large-stagebody { padding: 0 0 10px; }

.nslm-large-stagemeta {
  flex: none;
  display: block;
  min-width: 0;
  padding-top: 12px;
  border-top: 1px solid var(--nsl-rule);
}
.nslm-large-stagecopy { min-width: 0; flex: 1 1 auto; }
.nslm-large-stagetitle {
  margin: 5px 0 0;
  font-family: var(--nsl-serif, Georgia, serif);
  font-weight: 400;
  font-size: clamp(22px, 2vw, 30px);
  line-height: 1.12;
  letter-spacing: -0.025em;
  color: var(--nsf-bone);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.nslm-large-stagesum {
  margin: 6px 0 0;
  font: 12px/1.5 var(--nsf-sans);
  color: var(--nsf-haze);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nslm-large-stagesummary {
  margin: 4px 0 0;
  max-width: 68ch;
  font: 12.5px/1.55 var(--nsf-sans);
  color: rgba(232, 228, 218, 0.78);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.nslm-large-headflags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  max-width: none;
  margin-top: 8px;
  justify-content: flex-start;
  overflow: visible;
  max-height: none;
}
.nslm-large .nsf-eyebrow {
  font-weight: 400;
  font-size: 10px;
  letter-spacing: 0.16em;
  color: var(--nsf-haze);
}
.nslm-large-headflags .nsl-flag,
.nslm-large-tags .nsl-flag,
.nslm-large-acts .nsl-flag,
.nslm-large-nextflags .nsl-flag {
  border: 0;
  border-radius: 0;
  background: none;
  padding: 0;
}

/* Tabs: the folio's underlined words, not filled pills. */
.nslm-large .nsl-tabs {
  gap: 0;
  padding: 0;
  border-bottom: 1px solid var(--nsl-rule);
  overflow-x: auto;
  scrollbar-width: none;
}
.nslm-large .nsl-tabs::-webkit-scrollbar { display: none; height: 0; }
.nslm-large .nsl-tab {
  border-radius: 0;
  background: transparent;
  font: 13px var(--nsf-sans);
  letter-spacing: 0;
  text-transform: none;
  padding: 11px 12px 10px;
  color: var(--nsf-haze);
}
.nslm-large .nsl-tab:hover { color: var(--nsf-bone); background: transparent; }
.nslm-large .nsl-tab.on {
  color: var(--nsf-bone);
  background: transparent;
  box-shadow: inset 0 -2px var(--nsf-amber);
}

/* Facts read as ruled rows: label left, value right, a hairline under. */
.nslm-large .nsl-kv {
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 16px;
  row-gap: 0;
  align-items: stretch;
  font: 12px var(--nsf-sans);
}
.nslm-large .nsl-kv dt,
.nslm-large .nsl-kv dd {
  display: flex;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--nsl-rule);
}
.nslm-large .nsl-kv dt {
  font-size: 11px;
  letter-spacing: 0.02em;
  text-transform: none;
}
.nslm-large .nsl-kv dd { justify-content: flex-end; text-align: right; }

.nslm-large .nsl-metrics {
  flex-direction: column;
  gap: 0;
}
.nslm-large .nsl-metric {
  flex: none;
  width: 100%;
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
  padding: 8px 0;
  border: 0;
  border-bottom: 1px solid var(--nsl-rule);
  border-radius: 0;
  background: none;
}
.nslm-large .nsl-metric.good,
.nslm-large .nsl-metric.mid,
.nslm-large .nsl-metric.bad { border-color: transparent; border-bottom-color: var(--nsl-rule); }
.nslm-large .nsl-metric-v { font-weight: 400; font-size: 12px; }
.nslm-large-verdict {
  padding: 8px 0 0;
  border: 0;
  border-radius: 0;
  background: none;
}
.nslm-large-verdict.good,
.nslm-large-verdict.bad { background: none; border: 0; }

.nslm-large-prompt {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font: 12.5px/1.65 var(--nsf-sans);
}
.nslm-large-note {
  border-radius: 3px;
  background: transparent;
  border-color: var(--nsl-rule);
}
.nslm-large-block { border-top-color: var(--nsl-rule); }
.nslm-large-under { gap: 0 22px; }
.nslm-large .nslm-large-underpane + .nslm-large-underpane {
  border-left: 1px solid var(--nsl-rule);
  padding-left: 18px;
}
.nslm-large-underbody { padding: 10px 0 0; }
.nslm-large .nsl-pane-empty { text-align: left; padding-left: 0; padding-right: 0; }

@media (min-width: 1101px) {
  .nslm-large .nslm-large-rail {
    border-left: 1px solid var(--nsl-rule);
    padding-left: 16px;
  }
}
@media (min-width: 1561px) {
  .nslm-large .nslm-large-next {
    border-left: 1px solid var(--nsl-rule);
    padding-left: 16px;
  }
}
@media (max-width: 1560px) and (min-width: 1101px) {
  .nslm-large .nslm-large-next {
    border-top: 1px solid var(--nsl-rule);
    padding-top: 12px;
  }
}

/* Filmstrip: a row of plates. The current one is a hairline in the
   accent, the way folio marks the active frame. */
.nslm-large-strip {
  gap: 8px;
  padding-top: 10px;
  border-top-color: var(--nsl-rule);
}
.nslm-large-arrow {
  width: 28px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--nsf-haze);
}
.nslm-large-arrow:hover:not(:disabled) { background: transparent; color: #fff; }
.nslm-large-cell {
  width: 112px;
  gap: 0;
  padding: 0;
  border: 1px solid var(--nsl-rule);
  border-radius: 3px;
  overflow: hidden;
  background: #0B0C0A;
}
.nslm-large-cell:hover {
  border-color: rgba(232, 228, 218, 0.28);
  background: #0B0C0A;
}
.nslm-large-cell.is-current {
  border-color: var(--nsf-amber);
  background: #0B0C0A;
}
.nslm-large-cellthumb {
  width: 100%;
  height: 64px;
  border-radius: 0;
}
.nslm-large-cellcap { padding: 4px 6px 5px; }
.nslm-large-celldot,
.nslm-large-cellseq { display: none; }

.nslm-large-nextrow { border-bottom-color: var(--nsl-rule-soft); }
.nslm-large-nextname {
  font: 13px var(--nsf-sans);
  letter-spacing: -0.005em;
}
.nslm-large-nextsub { font: 11.5px var(--nsf-sans); }
.nslm-large-nextthumb {
  border-radius: 3px;
  border: 1px solid var(--nsl-rule-soft);
}
.nslm-large-nextpeek {
  border: 0;
  border-radius: 0;
  background: transparent;
}
