body { height: auto; min-height: 100%; overflow-y: auto; overflow-x: hidden; }

.hub-art { height: min(78vh, 720px); }

.hub {
  position: relative;
  min-height: 100dvh;
  max-width: 1080px;
  margin: 0 auto;
  padding: calc(env(safe-area-inset-top) + 18vh) calc(env(safe-area-inset-right) + 16px) calc(env(safe-area-inset-bottom) + 28px) calc(env(safe-area-inset-left) + 16px);
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.hub-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  text-align: center;
  animation: rise .9s var(--ease) both;
}
.hub-head h1 {
  margin: -4px 0 0;
  font: 900 clamp(110px, 38vw, 200px)/.8 var(--stencil);
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--sodium);
  text-shadow: 0 3px 0 rgba(0, 0, 0, .6), 0 0 60px rgba(242, 169, 59, .35);
}
.tagline { margin: 0 auto; max-width: 34ch; font-size: 18px; line-height: 1.45; color: var(--paper-2); text-wrap: balance; }
.cutoff {
  margin: 4px 0 0;
  padding: 5px 9px 4px;
  font: 700 13px var(--cond);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #ff8b7e;
  border: 1.5px solid currentColor;
  border-radius: 2px;
  transform: rotate(-2deg);
}

.tiles { display: grid; gap: 14px; }
.tile {
  position: relative;
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: 16px;
  align-items: center;
  padding: 16px 14px;
  color: var(--ink);
  text-decoration: none;
  border-radius: 3px;
  background:
    radial-gradient(ellipse at 85% 0%, rgba(255, 255, 255, .35), transparent 55%),
    linear-gradient(var(--paper), var(--paper-2));
  box-shadow: 0 2px 0 var(--paper-3), 0 18px 40px rgba(0, 0, 0, .55);
  animation: rise .6s var(--ease) backwards;
  animation-delay: calc(var(--i) * 90ms + 200ms);
  transition: transform .25s var(--ease), box-shadow .25s;
}
.tile::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 6px;
  background: repeating-linear-gradient(-45deg, var(--sodium) 0 10px, var(--ink) 10px 20px);
  border-radius: 3px 3px 0 0;
}
a.tile[href]:hover { transform: translateY(-3px); box-shadow: 0 2px 0 var(--paper-3), 0 26px 50px rgba(0, 0, 0, .6); }
a.tile[href]:focus-visible { outline: 2px solid var(--sodium-hi); outline-offset: 3px; }
@keyframes rise { from { opacity: 0; transform: translateY(18px); } }

.tile-art { height: 112px; display: flex; justify-content: center; align-items: center; }
.tile-art > svg { height: 100%; width: auto; max-width: 100%; filter: drop-shadow(0 4px 6px rgba(0, 0, 0, .3)); }
.fan { position: relative; width: 66px; height: 108px; }
.fan > div {
  position: absolute;
  inset: 0;
  transform: rotate(var(--r));
  transform-origin: 50% 100%;
  filter: drop-shadow(0 3px 5px rgba(0, 0, 0, .35));
}
.fan svg { display: block; width: 100%; }

.tile-form { margin: 0 0 4px; font: 500 11px var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.tile-text h2 { margin: 0 0 6px; font: 900 26px/.95 var(--stencil); text-transform: uppercase; color: var(--ink); }
.tile-text p:not(.tile-form) { margin: 0 0 10px; font-size: 15px; line-height: 1.45; color: var(--ink-2); }
.tile-go {
  display: inline-block;
  font: 700 13px var(--cond);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--rust);
}
.tile-go::after { content: " \2192"; font-family: var(--body); }

.tile.soon { cursor: default; }
.tile.soon .tile-art, .tile.soon .tile-text p:not(.tile-form) { opacity: .5; filter: grayscale(.6); }
.tile.soon .tile-go {
  padding: 3px 7px 2px;
  color: var(--red);
  border: 1.5px solid currentColor;
  transform: rotate(-3deg);
}
.tile.soon .tile-go::after { content: none; }

.hub-foot { margin-top: auto; text-align: center; display: flex; flex-direction: column; gap: 10px; }
.siblings { margin: 0; font: 600 13px/1.7 var(--cond); letter-spacing: .14em; text-transform: uppercase; color: var(--paper-3); }
.siblings b { color: var(--sodium); }
.siblings a { color: var(--paper-2); text-underline-offset: 3px; }
.siblings a:hover { color: var(--sodium-hi); }

@media (min-width: 760px) {
  .hub { gap: 44px; padding-top: calc(env(safe-area-inset-top) + 20vh); }
  .tiles { grid-template-columns: repeat(3, 1fr); gap: 22px; }
  .tile { grid-template-columns: 1fr; text-align: center; padding: 30px 22px 24px; align-content: start; }
  .tile-art { height: 150px; }
  .fan { width: 92px; height: 150px; }
}
