/* Woordstroom: a folded-card platen press, not two stretched cylinders.
   Photographed end sleeves retain their proportions. Only uninterrupted
   material repeats. Reading tracks, fitter, inputs and deadlines stay owned
   by the existing game. Load after press-director. */
@media (min-width: 901px) and (min-height: 561px) {
  #zineApp[data-word-press] .press-roller-top {
    height: var(--roller-height);
    filter: drop-shadow(0 2px 1px #170f2390) drop-shadow(2px 5px 3px #170f2345);
  }
  html #zineApp[data-word-press] .press-roller-top span {
    flex: 0 0 calc(var(--roller-height) * 1.02);
    background: url("assets/nachtzine/shipping/press/platen-v1.webp") left center / auto 100% no-repeat;
  }
  html #zineApp[data-word-press] .press-roller-top span:nth-child(2) {
    flex: 1 1 auto;
    /* A one-CSS-pixel photographic overlap covers fractional raster seams
       between independently sampled flex pieces (not a stretched end cap). */
    margin-inline: -1px;
    background-image: url("assets/nachtzine/shipping/press/platen-middle-v1.webp");
    background-position: left center;
    background-repeat: repeat-x;
  }
  html #zineApp[data-word-press] .press-roller-top span:last-child { background-position: right center; }
  #zineApp[data-word-press] .press-roller-top::after { display: none; }
  #zineApp[data-word-press] .press-roller-top::before {
    right: 98%; top: 28%; width: calc(var(--roller-height) * 1.08); height: 46%;
    background: url("assets/nachtzine/shipping/press/platen-middle-v1.webp") center / auto 100% repeat-x;
    border: 0; box-shadow: none; clip-path: none;
  }
  #zineApp[data-word-press] .zine-poster::before {
    top: 20px;
    width: clamp(48px, 4vw, 68px);
    border: 0; box-shadow: none; clip-path: none;
    background: url("assets/nachtzine/shipping/press/upright-middle-v1.webp") center top / 100% auto repeat-y;
    filter: drop-shadow(1px 2px 1px #170f2370) drop-shadow(3px 5px 3px #170f232b);
  }
  /* The distant bearing needs an actual support, not a rivet hanging in air.
     Most of this slim back rail is behind the stock; just its physical edge
     connects the far sleeve to the receiving lip. It does not frame the ink. */
  #zineApp[data-word-press] .press-assembly::before {
    content: "";
    position: absolute; z-index: -1; pointer-events: none;
    top: 12px; bottom: 6px; right: -4px; width: 22px;
    background: url("assets/nachtzine/shipping/press/upright-middle-v1.webp") center top / 100% auto repeat-y;
    filter: drop-shadow(1px 2px 1px #170f2360);
  }
  /* The output is a thin folded receiving lip, not another solid cylinder.
     Its upper paper face tucks behind the moving stock by at least six px. */
  #zineApp[data-word-press] .press-roller-bottom {
    height: calc(var(--feed-height) * .73);
    filter: drop-shadow(0 2px 1px #170f2370) drop-shadow(2px 5px 3px #170f2330);
  }
  html #zineApp[data-word-press] .press-roller-bottom span {
    flex: 0 0 calc(var(--feed-height) * .45);
    background: url("assets/nachtzine/shipping/press/output-lip-v1.webp") left center / auto 100% no-repeat;
  }
  html #zineApp[data-word-press] .press-roller-bottom span:nth-child(2) {
    flex: 1 1 auto;
    margin-inline: -1px;
    background-image: url("assets/nachtzine/shipping/press/output-lip-middle-v1.webp");
    background-position: left center;
    background-repeat: repeat-x;
  }
  html #zineApp[data-word-press] .press-roller-bottom span:last-child { background-position: right center; }
  /* The generated sleeve and real housing share the same exposed tan edge;
     do not recolour their photographed faces or give them a plastic glow. */
  #zineApp[data-word-press] .press-housing {
    filter: brightness(.78) drop-shadow(1px 3px 1px #1c142b8c) drop-shadow(4px 8px 5px #1c142b48);
  }
}

/* Bounded material recovery must remain playable and recognisable even when
   the optional new photographs are absent. Existing delivery art is retained
   on disk and serves as the explicit visual fallback, never a blank frame. */
@media (min-width: 901px) and (min-height: 561px) {
  html #zineApp[data-word-press][data-material-state="fallback"] .press-roller-top span {
    background-image: url("assets/nachtzine/release/roller-v1.webp");
  }
  html #zineApp[data-word-press][data-material-state="fallback"] .press-roller-top span:nth-child(2) {
    background-image: url("assets/nachtzine/release/roller-middle-v1.webp");
  }
  html #zineApp[data-word-press][data-material-state="fallback"] .press-roller-bottom span {
    background-image: url("assets/nachtzine/release/feed-roll-v1.webp");
  }
  html #zineApp[data-word-press][data-material-state="fallback"] .press-roller-bottom span:nth-child(2) {
    background-image: url("assets/nachtzine/release/feed-roll-middle-v1.webp");
  }
  #zineApp[data-word-press][data-material-state="fallback"] .zine-poster::before,
  #zineApp[data-word-press][data-material-state="fallback"] .press-roller-top::before {
    background: var(--dark) var(--xerox) center / 360px;
  }
  #zineApp[data-word-press][data-material-state="fallback"] .press-assembly::before { display: none; }
}

@media (forced-colors: active) {
  #zineApp[data-word-press] .press-roller,
  #zineApp[data-word-press] .zine-poster::before { filter: none; }
  #zineApp[data-word-press] .press-assembly::before { display: none; }
}
