/*
 * copax.app — home page and 404 (D86). Linked after /assets/site.css.
 * Uses only the brand tokens defined in site.css (light and dark).
 */

/* ---------- shared bits ---------- */
.pill-soon {
  display: inline-flex; align-items: center; gap: 0.55rem;
  min-height: 3rem; padding: 0 1.25rem; border-radius: var(--radius-pill);
  background: var(--blue-pale); color: var(--blue-deep);
  font-weight: 700; font-size: 1rem; line-height: 1.2;
}
.pill-soon::before {
  content: ""; width: 0.55rem; height: 0.55rem; border-radius: 50%;
  background: var(--blue); flex: none;
}

/* ---------- hero ---------- */
.hero { padding-top: clamp(1.5rem, 5vw, 4rem); padding-bottom: clamp(2.5rem, 6vw, 5rem); }
.hero-grid {
  display: grid; gap: clamp(2rem, 5vw, 4rem);
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
}
.hero h1 { max-width: 17ch; margin-bottom: 0.45em; text-wrap: balance; }
.hero-lede { font-size: clamp(1.0625rem, 1rem + 0.35vw, 1.25rem); color: var(--muted); max-width: 40ch; margin-bottom: 1.75rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; align-items: center; }

@media (min-width: 900px) {
  .hero-grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
}

/* cabin illustration */
.cabin { position: relative; margin: 0; max-width: 30rem; width: 100%; justify-self: center; }
.cabin-map { width: 100%; }
.cabin-body { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }
.cabin-cols text, .cabin-rows text {
  font-family: var(--mono); font-weight: 500; font-size: 13px; fill: var(--muted); text-anchor: middle;
}
.seats rect, .seat-plain { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }
.seat-you { fill: var(--blue); }
.seat-you-label { font-family: var(--font); font-weight: 800; font-size: 13px; fill: var(--surface); text-anchor: middle; }
.seat-halo { fill: var(--blue-pale); }
.avatar { fill: var(--blue-pale); }
.ring { stroke: var(--muted); stroke-width: 1.5; }
.ring-verified { stroke: var(--teal); stroke-width: 2.5; }
.initials { font-family: var(--font); font-weight: 800; font-size: 12px; fill: var(--blue-deep); text-anchor: middle; }

/* profile peek card, overlapping the map */
.peek {
  display: flex; align-items: center; gap: 0.8rem;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-l);
  padding: 0.85rem 1rem; margin: -2.5rem 0.75rem 0; position: relative;
}
.peek-avatar {
  flex: none; width: 2.75rem; height: 2.75rem; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--blue-pale); color: var(--blue-deep); border: 2.5px solid var(--teal);
  font-weight: 800; font-size: 0.9375rem;
}
.peek-body { display: grid; gap: 0.1rem; min-width: 0; flex: 1; }
.peek-name { font-weight: 800; display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; line-height: 1.3; }
.peek-chip { min-height: 1.5rem; font-size: 0.8125rem; padding: 0 0.55rem; }
.peek-role, .peek-seat { font-size: 0.875rem; color: var(--muted); line-height: 1.35; }
.peek-hi {
  flex: none; align-self: center; padding: 0.55rem 1rem; border-radius: var(--radius-pill);
  background: var(--blue-pale); color: var(--blue-deep); font-weight: 700; font-size: 0.875rem;
}

@media (min-width: 900px) {
  .peek { position: absolute; left: -2rem; bottom: -2.75rem; margin: 0; width: 23rem; }
  .cabin { margin-bottom: 2.75rem; }
}
@media (max-width: 420px) {
  .peek { margin-left: 0; margin-right: 0; }
  .peek-hi { display: none; }
}

/* ---------- benefits ---------- */
.benefits { padding-top: clamp(2rem, 5vw, 4rem); }
.benefits-head { display: grid; gap: 0.5rem 3rem; margin-bottom: 2rem; }
.benefits-head h2 { max-width: 16ch; }
.benefits-head p { font-size: 1.125rem; margin: 0; }
@media (min-width: 900px) {
  .benefits-head { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); align-items: end; margin-bottom: 2.5rem; }
}

.bento { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); }
.tile h3 { margin-bottom: 0.5rem; }
.tile p { margin-bottom: 0; }
.tile-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 1.25rem; }
.tile-verified .chip { margin-bottom: 1rem; }

.tile-around { background: var(--blue-pale); border-color: transparent; }
.tile-around p { color: var(--ink); }
.tile-around .chip-tonal { background: var(--surface); }

.bubbles { display: grid; gap: 0.5rem; margin-top: 1.25rem; }
.bubble {
  margin: 0; padding: 0.6rem 0.95rem; border-radius: 18px; font-size: 0.9375rem; line-height: 1.4;
  max-width: 85%; width: fit-content;
}
.bubble-out { background: var(--blue-pale); color: var(--blue-deep); justify-self: end; border-bottom-right-radius: 6px; }
.bubble-in { background: var(--ground); border: 1px solid var(--line); border-bottom-left-radius: 6px; }

.status-lines { list-style: none; padding: 0; margin: 1.25rem 0 0; display: grid; gap: 0.5rem; }
.status-lines li {
  display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: baseline;
  padding: 0.6rem 0.9rem; border-radius: var(--radius-m); background: var(--ground);
  font-size: 0.9375rem;
}
.status-lines .code { font-weight: 500; }

@media (min-width: 760px) {
  .bento { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.25rem; }
  .tile-around { grid-column: span 7; }
  .tile-verified { grid-column: span 5; }
  .tile-talk { grid-column: span 5; }
  .tile-companion { grid-column: span 7; }
  .tile-around h3 { font-size: 1.625rem; }
}

/* ---------- how it works ---------- */
.how { padding-top: clamp(1rem, 3vw, 2rem); }
.steps { list-style: none; counter-reset: step; padding: 0; margin: 1.75rem 0 0; display: grid; gap: 1.75rem; }
.step { counter-increment: step; position: relative; padding-left: 3.5rem; }
.step::before {
  content: counter(step);
  position: absolute; left: 0; top: -0.2rem;
  width: 2.5rem; height: 2.5rem; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--surface); border: 2px solid var(--blue); color: var(--blue);
  font-weight: 800; font-size: 1rem;
}
.step h3 { font-size: 1.1875rem; margin-bottom: 0.3rem; }
.step p { margin: 0; color: var(--muted); }

@media (min-width: 900px) {
  .steps { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
  .step { padding-left: 0; padding-top: 3.75rem; }
  .step::before { top: 0; }
  .step:not(:last-child)::after {
    content: ""; position: absolute; top: 1.25rem; left: 3.25rem; right: -1.25rem;
    border-top: 2px dashed var(--line);
  }
}

/* ---------- trust strip ---------- */
.trust { background: var(--surface); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: clamp(2.5rem, 6vw, 4.5rem) 0; margin-top: clamp(2rem, 5vw, 4rem); }
.trust-grid { display: grid; gap: 1.5rem 4rem; }
.trust-head p { color: var(--muted); }
.trust-link { font-weight: 700; }
.trust-points { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.9rem; }
.trust-points li { position: relative; padding-left: 2.1rem; max-width: 52ch; }
.trust-points li::before {
  content: ""; position: absolute; left: 0; top: 0.2rem;
  width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--blue-pale);
}
.trust-points li::after {
  content: ""; position: absolute; left: 0.42rem; top: 0.48rem;
  width: 0.38rem; height: 0.62rem; border: solid var(--blue); border-width: 0 2px 2px 0; transform: rotate(45deg);
}
@media (min-width: 900px) {
  .trust-grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); align-items: start; }
}

/* ---------- closing ---------- */
.closing-card { display: grid; gap: 1.5rem; align-items: center; }
.closing-card h2 { margin-bottom: 0.35em; }
.closing-card p { margin: 0; }
.closing-actions { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; }
.closing-mail { font-weight: 700; }
@media (min-width: 900px) {
  .closing-card { grid-template-columns: minmax(0, 1fr) auto; padding: 2.5rem 3rem; }
}

/* ---------- 404 ---------- */
.lost { padding-top: clamp(2.5rem, 8vw, 6rem); padding-bottom: clamp(1rem, 4vw, 3rem); }
.lost-grid { display: grid; gap: 2rem; align-items: center; }
.lost h1 { font-size: clamp(2rem, 1.4rem + 2.6vw, 3rem); max-width: 16ch; text-wrap: balance; }
.lost p { color: var(--muted); font-size: 1.125rem; }
.lost-actions { display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem; align-items: center; margin-top: 1.5rem; }
.lost-actions a:not(.btn) { font-weight: 700; }
.lost-art { width: 100%; max-width: 18rem; }
.lost-art .seat-empty { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }
.lost-art .seat-missing { fill: none; stroke: var(--muted); stroke-width: 1.5; stroke-dasharray: 5 4; }
.lost-art .lost-code { font-family: var(--font); font-weight: 700; font-size: 14px; fill: var(--muted); text-anchor: middle; }
@media (min-width: 760px) {
  .lost-grid { grid-template-columns: minmax(0, 1fr) auto; }
}
