*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  background: var(--olive);
  background-color: var(--olive);
}

body {
  margin: 0;
  background: var(--olive);
  background-color: var(--olive);
  color: var(--ivory);
  font-family: var(--font-body);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  cursor: none;
}

body.is-loading {
  overflow: hidden;
}

img {
  max-width: 100%;
  display: block;
  border: none;
  outline: none;
  box-shadow: none;
}

.hero-plate img,
.gazette-fig img,
.work-plate img,
.visit-cut img,
.hour-cut img,
.grounds-cut img,
.folio-stage img,
.folio-proof-stage img,
.issue-cut img,
.wanting-plate img {
  filter: var(--filter-print-ink) grayscale(0.2) sepia(0.38) contrast(1.14) saturate(0.76) brightness(1.05);
  mix-blend-mode: multiply;
}

.hero-plate,
.gazette-fig,
.work-plate,
.visit-cut,
.hour-cut,
.grounds-cut,
.issue-cut,
.wanting-plate {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "photo" "cap";
}

.hero-plate {
  grid-template-areas: "photo";
  grid-template-rows: minmax(0, 1fr);
}

.visit-cut,
.hour-cut {
  grid-template-rows: minmax(0, 1fr) auto;
}

.hero-plate > img,
.gazette-fig > img,
.work-plate > img,
.visit-cut > img,
.hour-cut > img,
.grounds-cut > img,
.issue-cut > img,
.wanting-plate > img {
  grid-area: photo;
}

.hero-plate > figcaption,
.gazette-fig > figcaption,
.work-plate > figcaption,
.visit-cut > figcaption,
.hour-cut > figcaption,
.grounds-cut > figcaption,
.issue-cut > figcaption,
.wanting-plate > figcaption {
  grid-area: cap;
}

.hero-plate::after,
.gazette-fig::after,
.work-plate::after,
.visit-cut::after,
.hour-cut::after,
.grounds-cut::after,
.issue-cut::after,
.wanting-plate::after,
.folio-stage::after,
.folio-proof-stage::after {
  content: "";
  pointer-events: none;
  background-image: var(--paper-tooth);
  background-size: var(--paper-grain) auto;
  mix-blend-mode: multiply;
  opacity: 0.52;
}

.hero-plate::after,
.gazette-fig::after,
.work-plate::after,
.visit-cut::after,
.hour-cut::after,
.grounds-cut::after,
.issue-cut::after,
.wanting-plate::after {
  grid-area: photo;
  z-index: 1;
}

.folio-stage::after,
.folio-proof-stage::after {
  position: absolute;
  inset: 0;
  z-index: 2;
}

a {
  color: inherit;
  text-decoration: none;
}

p {
  margin: 0 0 1rem;
}

.logo {
  text-align: center;
  color: var(--ivory);
  line-height: 1.05;
}

.logo span {
  display: block;
  font-family: var(--font-display);
  font-size: 0.52rem;
  letter-spacing: 0.38em;
  text-transform: uppercase;
  color: var(--ivory-muted);
}

.logo strong {
  display: block;
  font-family: var(--font-news);
  font-weight: 700;
  font-size: clamp(0.92rem, 1.55vw, 1.22rem);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin: 0.12rem 0;
}

.svg-filters {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.grain {
  position: fixed;
  inset: 0;
  z-index: 80;
  pointer-events: none;
  opacity: 0.11;
  mix-blend-mode: multiply;
  background-image: var(--paper-tooth);
  background-size: var(--paper-grain) auto;
}

/* Touch: a fixed, full-screen blend layer has to be re-blended with the whole
   page on every scroll frame, and mobile Safari flickers the page under it.
   The sheets and plates carry their own paper tooth. */
html.is-touch .grain {
  display: none;
}

.cursor {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 90;
  pointer-events: none;
  mix-blend-mode: difference;
  color: #f6e2c8;
  transition: opacity 0.22s var(--ease), visibility 0.22s var(--ease);
}

body.is-link-hover .cursor {
  opacity: 0 !important;
  visibility: hidden !important;
  mix-blend-mode: normal;
  display: none;
}

.cursor-mark {
  position: absolute;
  top: 0;
  left: 0;
  width: 36px;
  height: 36px;
  margin: -18px 0 0 -18px;
  transition: width 0.45s var(--ease), height 0.45s var(--ease), margin 0.45s var(--ease);
}

.cursor-mark span {
  position: absolute;
  width: 8px;
  height: 8px;
  box-sizing: border-box;
}

.cursor-mark span:nth-child(1) {
  top: 0;
  left: 0;
  border-top: 1px solid currentColor;
  border-left: 1px solid currentColor;
}

.cursor-mark span:nth-child(2) {
  top: 0;
  right: 0;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
}

.cursor-mark span:nth-child(3) {
  right: 0;
  bottom: 0;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
}

.cursor-mark span:nth-child(4) {
  bottom: 0;
  left: 0;
  border-bottom: 1px solid currentColor;
  border-left: 1px solid currentColor;
}

body.is-hover .cursor-mark {
  width: 56px;
  height: 56px;
  margin: -28px 0 0 -28px;
}

body.is-hover .cursor-mark span {
  width: 11px;
  height: 11px;
}

@media (hover: none), (pointer: coarse) {
  .cursor { display: none; }
  body { cursor: auto; }
}
