@import url("https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap");

:root {
  --ink: #143437;
  --paper: #f2e8cf;
  --paper-deep: #e2d3af;
  --coral: #c94d35;
  --gold: #c89535;
  --foam: #fff9e9;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 8%, rgba(255, 255, 255, .65), transparent 28rem),
    linear-gradient(135deg, var(--paper), var(--paper-deep));
  font-family: "DM Mono", monospace;
  min-height: 100vh;
}

.grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: .16;
  z-index: 10;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}

.masthead, main, footer {
  width: min(1180px, calc(100% - 40px));
  margin-inline: auto;
}

.masthead {
  padding: clamp(70px, 12vw, 150px) 0 58px;
  border-bottom: 1px solid rgba(20, 52, 55, .28);
}

.eyebrow {
  margin: 0 0 18px;
  color: var(--coral);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
}

h1, h2, h3 { font-family: "Fraunces", serif; }

h1 {
  margin: 0;
  max-width: 900px;
  font-size: clamp(58px, 10vw, 132px);
  line-height: .85;
  letter-spacing: -.055em;
}

.lede {
  max-width: 650px;
  margin: 40px 0 36px;
  font-size: clamp(15px, 2vw, 19px);
  line-height: 1.75;
}

.status-row {
  display: flex;
  gap: 28px;
  align-items: center;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.status { display: flex; align-items: center; gap: 9px; }
.status i { width: 9px; height: 9px; background: #388d67; border-radius: 50%; }

main { padding: 90px 0 120px; }
section + section { margin-top: 120px; }

.section-heading {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  align-items: end;
  gap: 60px;
  margin-bottom: 34px;
}

.section-heading.compact { grid-template-columns: 1fr; }
.section-heading h2, .review h2 {
  margin: 0;
  font-size: clamp(36px, 5vw, 68px);
  line-height: .98;
  letter-spacing: -.035em;
}

.section-heading > p, .review > p {
  margin: 0;
  line-height: 1.7;
  font-size: 13px;
}

.concept-sheet {
  margin: 0;
  padding: 14px;
  background: var(--ink);
  border-radius: 8px;
  box-shadow: 0 24px 70px rgba(49, 38, 17, .22);
}

.concept-sheet img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 3px;
}

.concept-sheet figcaption {
  display: flex;
  justify-content: space-between;
  padding: 15px 5px 2px;
  color: var(--paper);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .09em;
}

.concept-sheet a { color: #f3be55; text-underline-offset: 4px; }

.concept-sheet.muted { filter: saturate(.7); opacity: .76; }

.board-sheet {
  width: min(860px, 100%);
  margin-inline: auto;
}

.accuracy-note {
  width: min(860px, 100%);
  margin: 16px auto 0;
  color: rgba(20, 52, 55, .7);
  font-size: 10px;
  line-height: 1.6;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.scale-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.scale-grid article {
  min-height: 250px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 28px;
  align-items: flex-start;
  justify-content: space-between;
  overflow: hidden;
  border: 1px solid rgba(20, 52, 55, .3);
  border-radius: 8px;
  background: rgba(255, 249, 233, .32);
}

.scale-grid span {
  color: var(--coral);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .1em;
}

.scale-grid img {
  display: block;
  height: auto;
  box-shadow: 0 8px 22px rgba(49, 38, 17, .16);
}

.scale-desktop { width: 248px; }
.scale-mobile { width: 128px; }

.production-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
}

.production-grid figure,
.cannon-directions figure {
  margin: 0;
  padding: 8px;
  overflow: hidden;
  background: rgba(255, 249, 233, .48);
  border: 1px solid rgba(20, 52, 55, .25);
  border-radius: 7px;
}

.production-grid img,
.cannon-directions img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

.production-grid figcaption,
.cannon-directions figcaption {
  padding: 8px 2px 1px;
  color: rgba(20, 52, 55, .78);
  font-size: 9px;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.direction-review {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 40px;
  align-items: center;
  margin: 70px 0 22px;
}

.direction-review h3 {
  margin: 0;
  font-size: clamp(28px, 4vw, 48px);
  letter-spacing: -.03em;
}

.cannon-directions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.east { transform: rotate(90deg); }
.south { transform: rotate(180deg); }
.west { transform: rotate(270deg); }
.ships-grid { grid-template-columns: repeat(4, 1fr); }
.arrows-grid { grid-template-columns: repeat(4, 1fr); }
.arrows-grid figure { background: #f3dfac; }
.arrow-review { grid-template-columns: 1fr 3fr; }

.principle-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid rgba(20, 52, 55, .35);
  border-bottom: 1px solid rgba(20, 52, 55, .35);
}

.principle-grid article { padding: 28px 24px 34px 0; }
.principle-grid article + article { border-left: 1px solid rgba(20, 52, 55, .22); padding-left: 24px; }
.principle-grid span { color: var(--coral); font-size: 11px; }
.principle-grid h3 { margin: 38px 0 10px; font-size: 24px; }
.principle-grid p { margin: 0; font-size: 12px; line-height: 1.6; }

.review {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  padding: 50px;
  color: var(--foam);
  background: var(--ink);
  border-radius: 8px;
  position: relative;
  overflow: hidden;
}

.review::after {
  content: "";
  width: 300px;
  height: 300px;
  position: absolute;
  right: -130px;
  bottom: -190px;
  border: 44px solid var(--gold);
  border-radius: 50%;
  opacity: .65;
}

.review q { color: #f3be55; }
.asset-tags { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; z-index: 1; }
.asset-tags span { border: 1px solid rgba(255, 249, 233, .35); padding: 9px 12px; border-radius: 100px; font-size: 11px; }

footer {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid rgba(20, 52, 55, .28);
  padding: 28px 0 45px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .1em;
}

@media (max-width: 760px) {
  .masthead, main, footer { width: min(100% - 24px, 1180px); }
  .masthead { padding-top: 65px; }
  h1 { font-size: clamp(50px, 18vw, 86px); }
  .status-row { align-items: flex-start; flex-direction: column; gap: 9px; }
  main { padding-top: 65px; }
  section + section { margin-top: 85px; }
  .section-heading, .review { grid-template-columns: 1fr; gap: 24px; }
  .scale-grid { grid-template-columns: 1fr; }
  .production-grid { grid-template-columns: repeat(3, 1fr); }
  .direction-review { grid-template-columns: 1fr; gap: 20px; }
  .arrow-review { grid-template-columns: 1fr; }
  .cannon-directions { grid-template-columns: repeat(2, 1fr); }
  .ships-grid { grid-template-columns: repeat(2, 1fr); }
  .concept-sheet { padding: 7px; }
  .concept-sheet figcaption { align-items: flex-start; flex-direction: column; gap: 8px; }
  .principle-grid { grid-template-columns: 1fr 1fr; }
  .principle-grid article:nth-child(3) { border-left: 0; border-top: 1px solid rgba(20, 52, 55, .22); }
  .principle-grid article:nth-child(4) { border-top: 1px solid rgba(20, 52, 55, .22); }
  .review { padding: 30px 24px; }
  footer { align-items: flex-start; flex-direction: column; gap: 8px; }
}

@media (prefers-reduced-motion: no-preference) {
  .masthead > *, .hero, .principles, .review {
    animation: rise .7s both;
  }
  .masthead > :nth-child(2) { animation-delay: .08s; }
  .masthead > :nth-child(3) { animation-delay: .16s; }
  .masthead > :nth-child(4) { animation-delay: .24s; }
  .hero { animation-delay: .3s; }
  @keyframes rise {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
  }
}
