/* The platform picker.
 *
 * Rides entirely on app.css's :root tokens — same palette, same spacing ladder,
 * same easing — so the two apps read as one product with two doors rather than
 * two apps that happen to share a server. app.css itself is untouched.
 *
 * The brand marks are drawn in the app's own foreground colour rather than in
 * Instagram's gradient and X's black. Two reasons: the design direction here is
 * a warm, soft, self-owned surface, and dropping two loud brand blocks onto it
 * would make the screen look like a login page for somebody else's product.
 * They are still instantly recognisable as shapes.
 */

.launch-body {
  min-height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--s6) var(--s5) calc(var(--s8) + env(safe-area-inset-bottom));
}

.launch {
  width: 100%;
  max-width: 460px;
  display: flex;
  flex-direction: column;
  gap: var(--s7);
}

.launch__head { text-align: center; }

.launch__title {
  font-size: var(--t7);
  font-weight: 600;
  letter-spacing: .02em;
  margin: 0 0 var(--s1);
}

.launch__sub {
  margin: 0;
  color: var(--fg-dim);
  font-size: var(--t4);
}

/* Two equal cards, side by side on anything wider than a narrow phone and
   stacked below that. Stacked is not a fallback — on a 360px screen two 150px
   cards are smaller than a comfortable thumb target. */
.launch__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s4);
}

@media (min-width: 380px) {
  .launch__grid { grid-template-columns: 1fr 1fr; }
}

.plat {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 168px;
  padding: var(--s6) var(--s4);
  border-radius: var(--r-2xl);
  background: var(--bg-soft);
  box-shadow: var(--e1), var(--lift);
  color: inherit;
  text-decoration: none;
  transition: transform var(--fast) var(--ease),
              box-shadow var(--fast) var(--ease);
}

.plat:active {
  transform: scale(.975);
  box-shadow: var(--e0), var(--lift);
}

.plat__mark {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: var(--r-xl);
  background: var(--raise);
  color: var(--fg);
}

.plat__mark svg { width: 30px; height: 30px; }

/* One warm tint each, just enough to tell them apart at a glance without
   importing either brand's palette wholesale. */
.plat--ig .plat__mark { color: #e6a3b8; }
.plat--x  .plat__mark { color: var(--fg); }

@media (prefers-color-scheme: light) {
  .plat--ig .plat__mark { color: #c2557a; }
}

.plat__name {
  font-size: var(--t5);
  font-weight: 600;
}

.plat__meta {
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  font-size: var(--t2);
  color: var(--fg-dim);
}

/* The count, as a pill on the corner. Hidden at zero rather than showing "0":
   an empty queue is not news, and a permanent zero trains you to ignore the
   spot where the number appears. */
.plat__badge {
  position: absolute;
  top: var(--s4);
  inset-inline-end: var(--s4);
  min-width: 24px;
  padding: 0 var(--s2);
  border-radius: var(--r-full);
  background: var(--accent);
  color: var(--accent-fg);
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  font-size: var(--t2);
  font-weight: 600;
  line-height: 22px;
  text-align: center;
}

/* Paused, or not configured: the card stays reachable (you may want to look at
   the history) but stops advertising itself. */
.plat--muted { opacity: .55; }
.plat--muted .plat__badge { background: var(--signal); color: var(--chip-on-fg); }

.launch__note {
  margin: 0;
  text-align: center;
  font-size: var(--t2);
  color: var(--fg-dim);
}
