/* Home screen. Shared header, buttons and toast live in base.css; every value comes from tokens.css. */
button { border: 0; }
.home {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 var(--gutter) max(var(--space-6), env(safe-area-inset-bottom));
}
/* The header spans the page gutter itself, so it sits flush with the padding of .home. */
.home > .sub-top { margin: 0 calc(-1 * var(--gutter)); }

/* Hero card: art background, moving character, greeting, call to action */
.hero {
  position: relative;
  aspect-ratio: 320 / 412;
  overflow: hidden;
  border-radius: var(--radius-xl);
  background:
    var(--hero-art, none) center / cover no-repeat,
    var(--hero-fallback);
  isolation: isolate;
}
.hero-media {
  position: absolute;
  left: 5.6%;
  top: 3.4%;
  width: 126.9%;
  aspect-ratio: 1;
  z-index: 0;
}
.hero-media video, .hero-media img {
  display: block;
  width: 100%;
  height: 100%;
  /* Soften the clip's top and bottom edges, where a zooming character can be cut off */
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 6%, #000 88%, transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0, #000 6%, #000 88%, transparent 100%);
}
.hero-greeting {
  position: relative;
  z-index: 1;
  margin: 0;
  padding: 56px var(--space-4) 0;
  font-size: var(--text-display);
  line-height: var(--leading-display);
  font-weight: var(--weight-bold);
  white-space: pre-line;
}
.cta {
  position: absolute;
  left: var(--space-4);
  right: var(--space-4);
  bottom: 23px;
  z-index: 1;
  height: var(--button-height);
  border-radius: var(--radius-sm);
  background: var(--color-button);
  color: var(--color-on-dark);
  font-size: var(--text-body);
  font-weight: var(--weight-bold);
}

/* Feature cards */
.cards {
  display: grid;
  grid-template-columns: 133fr 174fr;
  grid-template-rows: 83px 83px;
  gap: var(--space-3) 13px;
  margin-top: 13px;
}
.card {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-radius: var(--radius-lg);
  text-align: left;
  box-shadow: var(--shadow-card);
}
.card-title { position: relative; z-index: 1; font-size: var(--text-title-2); line-height: var(--leading-title-2); font-weight: var(--weight-medium); }
.card-icon { position: absolute; background: var(--icon-art, none) center / contain no-repeat; }
/* Soft round glow behind each icon, tinted to its card */
.card-icon::before {
  content: "";
  position: absolute;
  inset: -35px;
  z-index: -1;
  border-radius: 50%;
  background: radial-gradient(closest-side, var(--glow) 0, var(--glow) 45%, transparent 100%);
}
.card-today {
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding-top: 28px;
  background: linear-gradient(180deg, var(--feature-today), var(--feature-today-end));
}
.card-today .card-icon { left: 50%; bottom: var(--space-3); width: 100px; height: 100px; margin-left: -50px; --icon-art: url("./assets/home/icon-today.png"); --glow: var(--feature-today-glow); }
.card-map, .card-compat { display: flex; align-items: center; padding: 0 14px; }
.card-map { background: linear-gradient(180deg, var(--feature-map), var(--feature-map-end)); }
.card-map .card-icon { right: var(--space-3); top: 10px; width: 64px; height: 64px; --icon-art: url("./assets/home/icon-map.png"); --glow: var(--feature-map-glow); }
.card-compat { background: linear-gradient(180deg, var(--feature-compat), var(--feature-compat-end)); }
.card-compat .card-icon { right: var(--space-3); top: 10px; width: 64px; height: 64px; --icon-art: url("./assets/home/icon-compat.png"); --glow: var(--feature-compat-glow); }
/* The short cards would clip a big glow into a band, so theirs stays a full circle inside the card. */
.card-map .card-icon::before, .card-compat .card-icon::before {
  inset: -8px;
  background: radial-gradient(closest-side, var(--glow) 0, var(--glow) 30%, transparent 100%);
}
