/* kaelyn. waitlist: tokens, base, components, sections */

:root {
  --pink: oklch(0.765 0.093 3);
  --pink-soft: oklch(0.91 0.05 357);
  --blue: oklch(0.837 0.042 246);
  --blue-soft: oklch(0.94 0.028 246);
  --mint: oklch(0.85 0.08 178);
  --coral: oklch(0.75 0.13 36);
  --blush: oklch(0.89 0.05 350);
  --ink: oklch(0.2 0.012 320);
  --cream: oklch(0.96 0.02 85);
  --gold: oklch(0.76 0.1 82);
  --live: oklch(0.5 0.18 30);
  --ink-soft: oklch(0.36 0.03 340);
  --focus: oklch(0.45 0.16 250);
  --focus-dark: oklch(0.88 0.1 230);
  --error: oklch(0.48 0.17 25);
  --rule: oklch(0.2 0.012 320 / 0.45);

  --f-display: "Archivo", "Arial Narrow", sans-serif;
  --f-body: "Jost", "Helvetica Neue", Arial, sans-serif;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --max: 1240px;
  --section-pad: clamp(4rem, 3rem + 5vw, 8rem);
  --bleed: calc((100vw - min(100vw - 2 * var(--gutter), var(--max))) / 2);
  --header-h: 4.75rem;
  --shadow-pink: 0 1.25rem 2.5rem -1.25rem oklch(0.35 0.08 350 / 0.35);
  --shadow-blue: 0 1.25rem 2.5rem -1.25rem oklch(0.35 0.06 246 / 0.35);
  --shadow: var(--shadow-pink);
  --ring: var(--focus);

  /* Waitlist tag stock, driven by the visitor's brush color */
  --stock: var(--mint);
  --stock-ink: var(--ink);
  --stock-tone: oklch(0.2 0.012 320 / 0.16);
  --btn-bg: var(--ink);
  --btn-fg: var(--cream);
  --brush: var(--mint);
}

html[data-color="coral"] {
  --stock: var(--coral);
  --brush: var(--coral);
}
html[data-color="blush"] {
  --stock: var(--blush);
  --brush: var(--blush);
}
html[data-color="black"] {
  --stock: var(--ink);
  --stock-ink: var(--cream);
  --stock-tone: oklch(1 0 0 / 0.2);
  --btn-bg: var(--cream);
  --btn-fg: var(--ink);
  --brush: var(--ink);
}

/* Field colors: whole sections */
.f-pink {
  background: var(--pink);
  --field: var(--pink);
  --ink-soft: oklch(0.36 0.03 340);
  --shadow: var(--shadow-pink);
}
.f-pink-soft {
  background: var(--pink-soft);
  --field: var(--pink-soft);
  --shadow: var(--shadow-pink);
}
.f-blue {
  background: var(--blue);
  --field: var(--blue);
  --ink-soft: oklch(0.36 0.03 246);
  --shadow: var(--shadow-blue);
}
.f-blue-soft {
  background: var(--blue-soft);
  --field: var(--blue-soft);
  --ink-soft: oklch(0.36 0.03 246);
  --shadow: var(--shadow-blue);
}
.f-mint {
  background: var(--mint);
  --field: var(--mint);
  --ink-soft: oklch(0.34 0.04 190);
}

/* Base */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  color-scheme: light;
  accent-color: var(--ink);
  scroll-padding-top: 1rem;
  -webkit-tap-highlight-color: transparent;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

body {
  margin: 0;
  min-width: 20rem;
  overflow-x: clip;
  background: var(--pink);
  color: var(--ink);
  caret-color: var(--ink);
  font-family: var(--f-body);
  font-size: 1.0625rem;
  line-height: 1.5;
  font-weight: 400;
  text-rendering: optimizeLegibility;
}

::selection {
  background: var(--blush);
  color: var(--ink);
}

[hidden] {
  display: none !important;
}

img,
svg,
picture {
  display: block;
  max-width: 100%;
}

.sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

a {
  color: inherit;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
}

:where(a, button, input, select, summary, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--ring);
  outline-offset: 3px;
}

.skip {
  position: absolute;
  left: 1rem;
  top: 0.5rem;
  z-index: 100;
  padding: 0.75rem 1rem;
  border-radius: 14px;
  background: var(--ink);
  color: var(--cream);
  font-weight: 600;
  transform: translateY(-200%);
}
.skip:focus-visible {
  transform: none;
  outline-color: var(--focus-dark);
}

.wrap {
  width: 100%;
  max-width: calc(var(--max) + 2 * var(--gutter));
  margin-inline: auto;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-left: max(var(--gutter), env(safe-area-inset-left));
  padding-right: max(var(--gutter), env(safe-area-inset-right));
}

/* Type */
.display,
.h2 {
  margin: 0;
  font-family: var(--f-display);
  font-weight: 900;
  letter-spacing: -0.015em;
  text-wrap: balance;
}
.display {
  font-stretch: 62%;
  font-size: clamp(2.75rem, 1.6rem + 5.2vw, 6rem);
  line-height: 0.92;
}
.h2 {
  font-stretch: 66%;
  font-size: clamp(2.1rem, 1.4rem + 3.2vw, 4rem);
  line-height: 0.96;
  margin-bottom: 1.25rem;
}
.h2--xl {
  font-stretch: 62%;
  font-size: clamp(2.6rem, 1.6rem + 4.4vw, 5.25rem);
}
.body {
  margin: 0 0 1rem;
  max-width: 36rem;
  text-wrap: pretty;
}
.body--quiet {
  color: var(--ink-soft);
  font-weight: 500;
}
.wide-only {
  display: none;
}
p,
li {
  text-wrap: pretty;
}
.lede {
  margin: 0.875rem 0 0;
  max-width: 30rem;
  text-wrap: pretty;
}
.label,
.comb__label {
  display: block;
  margin: 0 0 0.375rem;
  font-family: var(--f-body);
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.live {
  font-family: var(--f-display);
  font-weight: 900;
  font-stretch: 62%;
  font-variant-numeric: tabular-nums lining-nums;
  color: var(--live);
  letter-spacing: 0;
}

.sec {
  padding-top: 5rem;
  padding-bottom: 5rem;
  padding-top: var(--section-pad);
  padding-bottom: var(--section-pad);
}

.split {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
}
.split > * {
  min-width: 0;
}

/* Header */
.site-header {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-top: max(0.5rem, env(safe-area-inset-top));
}
.site-header__in {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.brand {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  color: var(--ink);
  border-radius: 6px;
}
.lockup {
  width: 5.25rem;
  height: auto;
  aspect-ratio: 300 / 150.4;
  fill: currentColor;
}
.text-link {
  display: inline-block;
  min-height: 2.75rem;
  line-height: 2.75rem;
  font-weight: 600;
  font-size: 1rem;
}
@media (hover: hover) {
  .text-link:hover {
    text-decoration-thickness: 3px;
  }
}

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  width: 100%;
  min-height: 3.5rem;
  padding: 0 1.5rem;
  border: 0;
  border-radius: 14px;
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--f-display);
  font-weight: 800;
  font-stretch: 75%;
  font-size: 1.125rem;
  line-height: 1;
  letter-spacing: 0.01em;
  text-decoration: none;
  cursor: pointer;
  transition: transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out), opacity 180ms var(--ease-out);
}
@media (hover: hover) {
  .btn:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: var(--shadow);
  }
}
.btn:active:not(:disabled) {
  transform: translateY(1px);
  box-shadow: none;
}
.btn:disabled {
  opacity: 0.5;
  cursor: default;
}
.btn--lg {
  width: auto;
  min-height: 4rem;
  padding-inline: 2.25rem;
  font-size: 1.375rem;
  background: var(--ink);
  color: var(--cream);
}
.btn--sm {
  width: auto;
  min-height: 3rem;
  padding-inline: 1rem;
  font-size: 1rem;
  font-family: var(--f-body);
  font-stretch: 100%;
  font-weight: 600;
}
.btn--ghost {
  background: transparent;
  color: var(--stock-ink);
  box-shadow: inset 0 0 0 2px currentColor;
  min-height: 3rem;
  font-size: 1rem;
}
@media (hover: hover) {
  .btn--ghost:hover:not(:disabled) {
    background: var(--btn-bg);
    color: var(--btn-fg);
    box-shadow: none;
  }
}
.spinner {
  display: none;
  width: 1.125rem;
  height: 1.125rem;
  border: 2.5px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: spin 800ms linear infinite;
}
.btn[aria-busy="true"] .spinner {
  display: block;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.icon {
  width: 1.25rem;
  height: 1.25rem;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.pm {
  width: 1.5rem;
  height: 1.5rem;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.25;
  stroke-linecap: round;
}
.pm__v {
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 180ms var(--ease-out), opacity 180ms var(--ease-out);
}
details[open] > summary .pm__v {
  transform: scaleY(0);
  opacity: 0;
}

/* Frames and photos */
.frame {
  position: relative;
  margin: 0;
  overflow: hidden;
  border-radius: 28px;
  background-size: cover;
  background-position: center;
}
.frame picture,
.frame img {
  display: block;
  width: 100%;
}
.frame img {
  height: auto;
}

/* Webbing straps */
.strap {
  --strap-bg: var(--ink);
  --strap-fg: var(--cream);
  position: relative;
  height: 3rem;
  overflow: hidden;
  background-color: var(--strap-bg);
  color: var(--strap-fg);
}
.strap--blush {
  --strap-bg: var(--blush);
  --strap-fg: var(--ink);
}
.strap__track {
  display: flex;
  align-items: center;
  height: 100%;
  width: max-content;
  will-change: transform;
}
.strap__unit {
  flex: 0 0 22rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.125rem;
}
.strap__mark {
  width: 3.5rem;
  height: auto;
  aspect-ratio: 300 / 111.1;
  fill: currentColor;
}
.strap__dot {
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  background: currentColor;
}
.strap__sf {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  white-space: nowrap;
}

/* Hero */
.hero {
  --hero-pt: 0.5rem;
  --hero-pb: 3.5rem;
  position: relative;
  overflow-x: clip;
  padding-top: var(--hero-pt);
  padding-bottom: var(--hero-pb);
}
.hero__copy {
  min-width: 0;
}
.hero__title {
  margin: 0;
}
.hero__title span {
  display: block;
}
.hero__photo {
  margin-top: 2.5rem;
  background-color: var(--pink);
}
.hero__lead {
  margin-top: 0.875rem;
}
.hero__lead .lede {
  margin: 0;
  font-size: 1rem;
  line-height: 1.45;
}

/* Phone: the girl photo leads. The copy wrapper dissolves so the grid can order
   title, photo, lede, tag without moving markup (the desktop grid keys off the DOM order). */
@media (max-width: 43.99rem) {
  .hero__grid {
    display: flex;
    flex-direction: column;
  }
  .hero__copy {
    display: contents;
  }
  .hero__photo {
    order: 1;
    width: 100%;
    max-width: 28.75rem;
    max-height: 75svh;
    margin-top: 1rem;
    aspect-ratio: 4 / 5;
  }
  .hero__photo picture,
  .hero__photo img {
    position: absolute;
    inset: 0;
    height: 100%;
    object-fit: cover;
    object-position: 50% 10%;
  }
  .hero__lead {
    order: 2;
    margin-top: 1rem;
  }
  .tag-wrap {
    order: 3;
  }
}

/* The hang tag */
.tag-wrap {
  position: relative;
  width: 100%;
  max-width: 28.75rem;
  margin-top: 3.25rem;
  scroll-margin-top: 0.5rem;
}
.strap--hero {
  display: none;
}
.tag {
  --gx: 50%;
  --gy: 1.625rem;
  --pad: 1.25rem;
  --cord-h: 4.25rem;
  position: relative;
  perspective: 1800px;
}
.tag__flip {
  position: relative;
  display: grid;
  transform-style: preserve-3d;
  transition: transform 700ms var(--ease-out);
}
.tag[data-side="back"] .tag__flip {
  transform: rotateY(180deg);
}
.tag__face {
  grid-area: 1 / 1;
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 4.25rem var(--pad) 0;
  border-radius: 0 0 22px 22px;
  background-color: var(--stock);
  background-image: radial-gradient(circle at var(--gx) var(--gy), transparent 0 11px, var(--stock-tone) 11px 17px, transparent 17.5px);
  color: var(--stock-ink);
  clip-path: polygon(0 2rem, 2rem 0, calc(100% - 2rem) 0, 100% 2rem, 100% 100%, 0 100%);
  -webkit-mask-image: radial-gradient(circle at var(--gx) var(--gy), transparent 0 11px, #000 11.5px);
  mask-image: radial-gradient(circle at var(--gx) var(--gy), transparent 0 11px, #000 11.5px);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transition: background-color 420ms var(--ease-out), color 420ms var(--ease-out), visibility 0s linear 350ms;
}
.tag__back {
  transform: rotateY(180deg);
}
.tag[data-side="front"] .tag__back,
.tag[data-side="back"] .tag__front {
  position: absolute;
  inset: 0 0 auto 0;
  visibility: hidden;
}
html.has-me:not(.me-ready) .tag .tag__flip {
  transform: rotateY(180deg);
  transition: none;
}
html.has-me:not(.me-ready) .tag .tag__front {
  position: absolute;
  inset: 0 0 auto 0;
  visibility: hidden;
  transition: none;
}
html.has-me:not(.me-ready) .tag .tag__back {
  position: relative;
  visibility: visible;
  transition: none;
}
html.has-me:not(.me-ready) .tag__back :is(.tier, .nudge, .refs, .linkbox, .share, .back-links) {
  visibility: hidden;
}
html.has-me:not(.me-ready) .tag__back .rank {
  color: transparent;
  background: oklch(0.2 0.012 320 / 0.1);
  border-radius: 10px;
}
.tag.is-instant *,
.tag.is-instant {
  transition-duration: 0s !important;
  transition-delay: 0s !important;
}

.tag__chev {
  position: absolute;
  left: 0;
  top: 2.875rem;
  width: 100%;
  height: 1rem;
  fill: none;
  stroke: var(--gold);
  stroke-width: 1.5px;
  pointer-events: none;
}
.tag__chev polyline {
  vector-effect: non-scaling-stroke;
}
.tag__body {
  flex: 1 0 auto;
  padding-bottom: 1.25rem;
}
.tag__body--back {
  padding-bottom: 1.5rem;
}
.tag__title {
  margin: 0 0 1rem;
  font-family: var(--f-display);
  font-weight: 900;
  font-stretch: 62%;
  font-size: clamp(2.25rem, 1.8rem + 2vw, 2.75rem);
  line-height: 0.95;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.tag__title--sm {
  font-size: 2rem;
  margin-bottom: 0.75rem;
}
.tag__title:focus {
  outline: none;
}
.tag__title:focus-visible {
  outline: 3px solid var(--ring);
  outline-offset: 4px;
  border-radius: 4px;
}

/* Cord: a slack elastic loop rising from the grommet */
.cord {
  position: absolute;
  z-index: 3;
  left: var(--gx);
  bottom: calc(100% - var(--gy));
  width: 1.5rem;
  height: var(--cord-h);
  transform: translateX(-50%);
  pointer-events: none;
}
.cord__loop {
  display: block;
  width: 100%;
  height: 100%;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.cord__under,
.cord__core {
  fill: none;
  vector-effect: non-scaling-stroke;
}
.cord__under {
  stroke: var(--ink);
  stroke-width: 5px;
}
.cord__core {
  stroke: var(--cream);
  stroke-width: 1.5px;
}

/* Fields on the tag */
.panel {
  display: grid;
  gap: 0.875rem;
}
.join {
  display: grid;
  gap: 0.875rem;
}
.field {
  min-width: 0;
}
input[type="text"],
input[type="email"],
input[type="tel"],
select {
  display: block;
  width: 100%;
  min-height: 3.25rem;
  padding: 0 1rem;
  border: 2px solid oklch(0.2 0.012 320 / 0.25);
  border-radius: 14px;
  background-color: var(--cream);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 1.0625rem;
  line-height: 1.2;
  caret-color: var(--ink);
  transition: border-color 180ms var(--ease-out);
  -webkit-appearance: none;
  appearance: none;
}
input::placeholder {
  color: oklch(0.45 0.03 340);
  opacity: 1;
}
select {
  padding-right: 2.75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23231c20' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.875rem center;
  background-size: 1.25rem;
  cursor: pointer;
}
input:hover,
select:hover {
  border-color: oklch(0.2 0.012 320 / 0.5);
}
input:focus-visible,
select:focus-visible {
  border-color: var(--ink);
  outline-offset: 2px;
}
input[readonly] {
  cursor: text;
}
input[aria-invalid="true"],
input[aria-invalid="true"]:hover,
input[aria-invalid="true"]:focus-visible,
select[aria-invalid="true"],
select[aria-invalid="true"]:hover,
select[aria-invalid="true"]:focus-visible {
  border-color: var(--error);
}
.suggest {
  --ring: var(--focus);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 0.375rem;
  margin: 0.5rem 0 0;
  padding: 0 0.625rem;
  border-radius: 8px;
  background: var(--cream);
  color: var(--ink);
  font-size: 0.9375rem;
  font-weight: 500;
}
.suggest__btn {
  min-height: 2.75rem;
  padding: 0 0.125rem;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
  overflow-wrap: anywhere;
  text-align: left;
  cursor: pointer;
}
.suggest__btn:focus-visible {
  outline-offset: -2px;
  border-radius: 6px;
}
.field__error,
.form-error {
  display: flex;
  align-items: flex-start;
  gap: 0.375rem;
  margin: 0;
  padding: 0.4375rem 0.625rem;
  border-radius: 8px;
  background: var(--cream);
  color: var(--error);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.3;
}
.field__error {
  margin-top: 0.5rem;
}
.form-error:empty {
  height: 0;
  padding: 0;
  margin: -0.875rem 0 0;
  overflow: hidden;
}
.field__error .icon,
.form-error .icon {
  width: 1.125rem;
  height: 1.125rem;
  margin-top: 0.0625rem;
}
.hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.notice {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0;
  padding: 0.625rem 0.75rem;
  border-radius: 10px;
  background: var(--cream);
  color: var(--ink);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.35;
}
.notice .icon {
  margin-top: 0.125rem;
}
.notice--plain {
  display: block;
}

/* Optional details disclosure */
.more summary {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  color: var(--stock-ink);
  font-size: 1rem;
  font-weight: 600;
  list-style: none;
  cursor: pointer;
}
.more summary::-webkit-details-marker {
  display: none;
}
.more summary span {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
}
.more__fields {
  display: grid;
  gap: 0.875rem;
  padding-top: 0.5rem;
}
.more .pm {
  width: 1.25rem;
  height: 1.25rem;
}

/* Stubs */
.stub {
  position: relative;
  margin: auto calc(-1 * var(--pad)) 0;
  padding: 1rem var(--pad) 1.125rem;
  background: var(--cream);
  color: var(--ink);
  border-top: 2px dashed oklch(0.2 0.012 320 / 0.4);
}
.stub::before,
.stub::after,
.notch {
  content: "";
  position: absolute;
  width: 1.125rem;
  height: 1.125rem;
  border-radius: 50%;
  background: var(--field, var(--pink));
  pointer-events: none;
}
.stub::before {
  left: -0.5625rem;
  top: -10px;
}
.stub::after {
  right: -0.5625rem;
  top: -10px;
}
.notch--l {
  left: -0.5625rem;
  bottom: -10px;
}
.notch--r {
  right: -0.5625rem;
  bottom: -10px;
}
.fine--trust {
  margin-top: 0.375rem;
  color: var(--ink-soft);
}
.fine {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.4;
  text-wrap: pretty;
}
.count {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin: 0.625rem 0 0;
  font-weight: 500;
}
.count .live {
  font-size: 1.75rem;
  line-height: 1;
}

/* Tag back */
.stub--rank {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 1.25rem;
  margin: 0 calc(-1 * var(--pad)) 1.125rem;
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
  border-block: 2px dashed oklch(0.2 0.012 320 / 0.4);
}
.stub__spot .label {
  margin: 0;
}
.rank {
  margin: 0;
  font-size: clamp(3.5rem, 2.8rem + 3vw, 4.5rem);
  line-height: 0.95;
}
.rank--long {
  font-size: clamp(2.75rem, 2.2rem + 2.6vw, 3.5rem);
}
.tier {
  flex: 1 1 8.5rem;
  min-width: 0;
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.3;
  text-wrap: balance;
}
.nudge {
  display: grid;
  gap: 0.25rem;
}
.nudge p,
.refs {
  margin: 0;
  font-weight: 500;
  text-wrap: pretty;
}
.nudge p {
  text-wrap: balance;
}
.nudge__gain {
  font-weight: 700;
}
.refs {
  margin-top: 0.625rem;
}
.linkbox {
  margin-top: 2.5rem;
}
.minitag {
  --btn-bg: var(--ink);
  --btn-fg: var(--cream);
  --ring: var(--focus);
  position: relative;
}
.minitag__cord {
  position: absolute;
  z-index: 2;
  bottom: calc(100% - 1.125rem);
  left: 50%;
  width: 1rem;
  height: 2.5rem;
  transform: translateX(-50%);
  pointer-events: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.minitag__cord .cord__under {
  stroke-width: 3.5px;
}
.minitag__cord .cord__core {
  stroke-width: 1.25px;
}
.minitag__stock {
  padding: 2.25rem 1rem 1rem;
  border-radius: 0 0 14px 14px;
  background: var(--cream);
  color: var(--ink);
  clip-path: polygon(0 0.875rem, 0.875rem 0, calc(100% - 0.875rem) 0, 100% 0.875rem, 100% 100%, 0 100%);
  -webkit-mask-image: radial-gradient(circle at 50% 1.125rem, transparent 0 5px, #000 5.5px);
  mask-image: radial-gradient(circle at 50% 1.125rem, transparent 0 5px, #000 5.5px);
}
.minitag__stock .label {
  margin-bottom: 0.5rem;
}
.minitag input {
  background-color: oklch(0.99 0.008 85);
}
.linkrow {
  display: flex;
  gap: 0.5rem;
}
.linkrow input {
  flex: 1 1 auto;
  min-width: 0;
  text-overflow: ellipsis;
  min-height: 3rem;
  font-size: 1rem;
}
@media (max-width: 43.99rem) {
  .linkrow {
    flex-direction: column;
  }
  .linkrow input {
    flex: none;
  }
  .linkrow .btn {
    width: 100%;
  }
}
.linkrow .btn {
  flex: none;
  background: var(--btn-bg);
  color: var(--btn-fg);
}
.share {
  margin-top: 1.25rem;
}
.share .label {
  margin-bottom: 0.5rem;
}
.share > .btn {
  margin-bottom: 0.5rem;
}
.share__grid:empty {
  display: none;
}
.more--share {
  margin-top: 0.25rem;
}
.more--share .share__grid {
  padding-top: 0.25rem;
}
.share__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}
.chip-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0.5rem 0.75rem;
  border: 0;
  border-radius: 12px;
  background: var(--cream);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 180ms var(--ease-out), color 180ms var(--ease-out), transform 180ms var(--ease-out);
}
@media (hover: hover) {
  .chip-btn:hover {
    background: var(--ink);
    color: var(--cream);
  }
}
.chip-btn:active {
  transform: translateY(1px);
}
.share__grid > :last-child:nth-child(odd) {
  grid-column: 1 / -1;
}
.ig-note {
  margin: 0.625rem 0 0;
  font-weight: 500;
}
.back-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.25rem;
  margin: 1rem 0 0;
  font-size: 0.9375rem;
  font-weight: 500;
}
.back-links a,
.linklike {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
  cursor: pointer;
}

/* Black stock: light focus ring on dark surfaces */
html[data-color="black"] .tag {
  --ring: var(--focus-dark);
}
html[data-color="black"] .tag input:focus-visible,
html[data-color="black"] .tag select:focus-visible {
  outline-color: var(--focus-dark);
}

/* Knots */
.knots__text {
  display: contents;
}
.knots .split {
  gap: 0;
}
.knots__text > .h2 {
  order: 1;
}
.knots__text > .body {
  order: 2;
}
.knots__comb {
  order: 3;
  max-width: 34rem;
  margin: 1.5rem 0 2rem;
}
.knots__text > .points {
  order: 4;
}
.rules {
  list-style: none;
  margin: 0;
  padding: 0;
  border-bottom: 1.5px solid var(--rule);
}
.rules li {
  padding-top: 1rem;
  padding-bottom: 1rem;
  border-top: 1.5px solid var(--rule);
}
.points li {
  display: grid;
  gap: 0.125rem 1.5rem;
}
.points strong {
  font-family: var(--f-display);
  font-weight: 800;
  font-stretch: 75%;
  font-size: 1.375rem;
  line-height: 1.1;
}
.points span {
  color: var(--ink-soft);
  font-weight: 500;
}
.comb {
  display: grid;
  gap: 0.75rem;
}
.comb__panel {
  position: relative;
  overflow: hidden;
  border-radius: 28px;
  background: var(--pink-soft);
  box-shadow: var(--shadow-blue);
  touch-action: pan-y;
  cursor: ew-resize;
  -webkit-user-select: none;
  user-select: none;
}
html:not(.js) .comb {
  display: none;
}
.comb__svg {
  width: 100%;
  height: auto;
  aspect-ratio: 600 / 560;
}
.brush__head {
  fill: var(--brush);
  stroke: oklch(0.2 0.012 320 / 0.7);
  stroke-width: 2.5;
}
.brush__handle {
  fill: var(--brush);
  stroke: oklch(0.2 0.012 320 / 0.7);
  stroke-width: 2.5;
  stroke-linejoin: round;
}
.brush__groove {
  fill: none;
  stroke: oklch(0.2 0.012 320 / 0.38);
  stroke-width: 6;
  stroke-linecap: round;
}
.brush__hole {
  fill: var(--pink-soft);
  stroke: oklch(0.2 0.012 320 / 0.7);
  stroke-width: 2.5;
}
.strand {
  fill: none;
  stroke: oklch(0.3 0.05 45);
  stroke-linecap: round;
  stroke-linejoin: round;
}
.comb__done {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  display: grid;
  justify-items: start;
  padding: 0.75rem 1.125rem 0.25rem;
  border-radius: 18px;
  background: var(--pink-soft);
  color: var(--ink);
  cursor: default;
}
.comb__win {
  margin: 0;
  font-family: var(--f-display);
  font-weight: 900;
  font-stretch: 62%;
  font-size: clamp(2.5rem, 2rem + 2.4vw, 3.5rem);
  line-height: 0.95;
  letter-spacing: -0.01em;
}
.comb__reset {
  min-height: 2.75rem;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
  cursor: pointer;
}
.comb__ctrl {
  display: grid;
  gap: 0.125rem;
}
.comb__range {
  width: 100%;
  height: 2.75rem;
  margin: 0;
  background: transparent;
  cursor: grab;
  -webkit-appearance: none;
  appearance: none;
}
.comb__range:active {
  cursor: grabbing;
}
.comb__range::-webkit-slider-runnable-track {
  height: 6px;
  border-radius: 3px;
  background: var(--ink);
}
.comb__range::-moz-range-track {
  height: 6px;
  border-radius: 3px;
  background: var(--ink);
}
.comb__range::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 1.75rem;
  height: 2.75rem;
  margin-top: calc((6px - 2.75rem) / 2);
  border: 2.5px solid var(--ink);
  border-radius: 10px;
  background: var(--brush);
}
.comb__range::-moz-range-thumb {
  width: 1.75rem;
  height: 2.75rem;
  box-sizing: border-box;
  border: 2.5px solid var(--ink);
  border-radius: 10px;
  background: var(--brush);
}
.comb__range:focus-visible {
  outline-offset: 0;
  border-radius: 12px;
}
.comb__hint {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.9375rem;
  font-weight: 500;
}
.hint--coarse {
  display: none;
}
@media (pointer: coarse) {
  .hint--coarse {
    display: inline;
  }
  .hint--fine {
    display: none;
  }
}

/* Colors */
.colors__text .h2 {
  margin-bottom: 1.5rem;
}
.tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  border: 0;
  min-width: 0;
}
.tab {
  position: relative;
  display: block;
  cursor: pointer;
}
.tab input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.tab__face {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.625rem;
  min-height: 3.25rem;
  padding: 0.5rem 0.875rem;
  border: 1.5px solid oklch(0.2 0.012 320 / 0.35);
  border-radius: 10px;
  background: var(--cream);
  color: var(--ink);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  transition: background-color 180ms var(--ease-out), color 180ms var(--ease-out), transform 180ms var(--ease-out);
}
.tab__dot {
  width: 1.125rem;
  height: 1.125rem;
  flex: none;
  border: 2px solid currentColor;
  border-radius: 50%;
  background: var(--c);
}
.tab__check {
  margin-left: auto;
  width: 1.125rem;
  height: 1.125rem;
  opacity: 0;
  transition: opacity 180ms var(--ease-out);
}
.tab input:checked + .tab__face {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--cream);
}
.tab input:checked + .tab__face .tab__check {
  opacity: 1;
}
.tab input:checked + .tab__face .tab__dot {
  border-color: var(--cream);
}
@media (hover: hover) {
  .tab input:not(:checked):hover + .tab__face {
    transform: translateY(-1px);
    box-shadow: var(--shadow);
  }
}
.tab input:active + .tab__face {
  transform: translateY(1px);
}
.tab input:focus-visible + .tab__face {
  outline: 3px solid var(--ring);
  outline-offset: 3px;
}
.color-line {
  margin: 1.5rem 0 0;
  font-family: var(--f-display);
  font-weight: 800;
  font-stretch: 70%;
  font-size: clamp(1.625rem, 1.3rem + 1.4vw, 2.25rem);
  line-height: 1.05;
  display: grid;
  text-wrap: balance;
}
.color-line span {
  grid-area: 1 / 1;
  visibility: hidden;
}
html[data-color="black"] .color-line [data-color="black"],
html[data-color="mint"] .color-line [data-color="mint"],
html[data-color="coral"] .color-line [data-color="coral"],
html[data-color="blush"] .color-line [data-color="blush"] {
  visibility: visible;
}
.color-note {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0.75rem 0 0;
  color: var(--ink-soft);
  font-weight: 500;
}
.mini-tag {
  position: relative;
  flex: none;
  width: 1.5rem;
  height: 2rem;
  background: var(--ink);
  border-radius: 0 0 6px 6px;
  clip-path: polygon(0 0.5rem, 0.5rem 0, calc(100% - 0.5rem) 0, 100% 0.5rem, 100% 100%, 0 100%);
  -webkit-mask-image: radial-gradient(circle at 50% 0.625rem, transparent 0 0.1875rem, #000 0.25rem);
  mask-image: radial-gradient(circle at 50% 0.625rem, transparent 0 0.1875rem, #000 0.25rem);
}
.mini-tag::after {
  content: "";
  position: absolute;
  inset: 2px;
  background: var(--stock);
  border-radius: 0 0 4px 4px;
  clip-path: polygon(0 0.4375rem, 0.4375rem 0, calc(100% - 0.4375rem) 0, 100% 0.4375rem, 100% 100%, 0 100%);
  transition: background-color 420ms var(--ease-out);
}
html:not(.js) .tabs {
  display: none;
}
.stage {
  position: relative;
  width: 100%;
  max-width: 30rem;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 28px;
  background-color: oklch(0.88 0.005 300);
}
.stage__item {
  position: absolute;
  inset: 0;
  background-size: cover;
  opacity: 0;
  transition: opacity 420ms var(--ease-out);
}
.stage__item picture,
.stage__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
html[data-color="black"] .stage__item[data-color="black"],
html[data-color="mint"] .stage__item[data-color="mint"],
html[data-color="coral"] .stage__item[data-color="coral"],
html[data-color="blush"] .stage__item[data-color="blush"] {
  opacity: 1;
}

/* Gifting */
.gift__photos {
  position: relative;
  padding-bottom: 16%;
}
.gift__a {
  width: 76%;
}
.gift__b {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 46%;
  border: 0.5rem solid var(--blue);
  background-clip: padding-box;
}

/* Gallery: photos hang from a flat strap */
.gallery__title {
  margin-bottom: 2rem;
}
.hang {
  position: relative;
}
.strap--hang {
  position: absolute;
  z-index: 3;
  top: 0;
  right: 0;
  left: 0;
  pointer-events: none;
}
.strip {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  overflow-x: auto;
  padding-top: 5.25rem;
  padding-right: max(var(--gutter), env(safe-area-inset-right));
  padding-bottom: 1.5rem;
  padding-left: max(var(--gutter), env(safe-area-inset-left));
  scroll-snap-type: x mandatory;
  scroll-padding-left: var(--gutter);
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--ink) transparent;
}
.strip::-webkit-scrollbar {
  height: 8px;
}
.strip::-webkit-scrollbar-thumb {
  border-radius: 4px;
  background: var(--ink);
}
.strip::-webkit-scrollbar-track {
  background: transparent;
}
.strip:focus-visible {
  outline-offset: -3px;
  border-radius: 14px;
}
.strap--hang2 {
  display: none;
}
.gal-hung {
  position: relative;
  flex: 0 0 min(72vw, 20rem);
  scroll-snap-align: start;
}
.gal-cord {
  position: absolute;
  z-index: 2;
  top: -3.75rem;
  left: 50%;
  width: 1.25rem;
  height: 4.625rem;
  transform: translateX(-50%);
  pointer-events: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.gal-cord .cord__under {
  stroke-width: 4px;
}
.gal-cord .cord__core {
  stroke-width: 1.25px;
}
.gal-photo {
  border-radius: 14px;
  -webkit-mask-image: radial-gradient(circle at 50% 14px, transparent 0 5px, #000 5.5px);
  mask-image: radial-gradient(circle at 50% 14px, transparent 0 5px, #000 5.5px);
}

/* Rewards */
.rewards .split {
  gap: 1.75rem;
}
.rewards__head {
  display: contents;
}
.rewards__title {
  order: 1;
  margin-bottom: 0;
}
.ladder {
  order: 2;
}
.steps {
  order: 3;
}
.steps li {
  font-weight: 500;
  text-wrap: pretty;
}
.ladder {
  list-style: none;
  margin: 0;
  padding: 0;
  border-bottom: 2px solid var(--ink);
}
.ladder__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: last baseline;
  gap: 0.25rem 1.5rem;
  padding: 1rem 0 1.125rem;
  border-top: 2px solid var(--ink);
}
.ladder__row p {
  margin: 0;
}
.ladder__range,
.ladder__reward {
  font-family: var(--f-display);
  font-weight: 800;
  font-stretch: 75%;
  font-size: clamp(1.5rem, 1.35rem + 0.5vw, 1.75rem);
  line-height: 1.1;
  letter-spacing: -0.005em;
  color: var(--ink);
}
.ladder__line,
.ladder__row .chip {
  grid-column: 1 / -1;
}
.ladder__line {
  font-weight: 500;
  color: var(--ink-soft);
}
.chip {
  display: inline-flex;
  align-items: baseline;
  justify-self: start;
  gap: 0.375rem;
  margin-top: 0.625rem;
  padding: 0.3125rem 0.75rem;
  border-radius: 10px;
  background: var(--cream);
  color: var(--ink);
  font-size: 0.9375rem;
  font-weight: 600;
}
.chip .live {
  font-size: 1.5rem;
  line-height: 1;
}

/* FAQ */
.faq__list {
  border-bottom: 1.5px solid var(--rule);
}
.faq__item {
  border-top: 1.5px solid var(--rule);
}
.faq__item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 3.75rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  list-style: none;
  cursor: pointer;
}
.faq__item summary::-webkit-details-marker {
  display: none;
}
.faq__item summary:focus-visible {
  outline-offset: -3px;
  border-radius: 8px;
}
.faq__q {
  font-family: var(--f-display);
  font-weight: 800;
  font-stretch: 75%;
  font-size: clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem);
  line-height: 1.1;
  text-wrap: balance;
}
.faq__a {
  max-width: 40rem;
  margin: 0;
  padding: 0 3rem 1.25rem 0;
  text-wrap: pretty;
}
@media (hover: hover) {
  .faq__item summary:hover .faq__q {
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 0.18em;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .faq__item {
    interpolate-size: allow-keywords;
  }
  .faq__item::details-content {
    block-size: 0;
    overflow: clip;
    transition: block-size 420ms var(--ease-out), content-visibility 420ms allow-discrete;
  }
  .faq__item[open]::details-content {
    block-size: auto;
  }
}

/* Final call */
.final__text .btn {
  margin-top: 2rem;
}
.final__photo {
  /* Transparent cutout: no frame, backdrop or blend hack, so the subject sits straight on the pink. */
  position: relative;
  width: min(78%, 24rem);
  margin: 2.5rem calc(-1 * var(--bleed)) calc(-1 * var(--section-pad)) auto;
}
.final__photo picture,
.final__photo img {
  display: block;
  width: 100%;
}
.final__photo img {
  height: auto;
}

/* Footer */
.foot {
  --rule: oklch(0.96 0.02 85 / 0.3);
  --ring: var(--focus-dark);
  padding-top: 3rem;
  padding-bottom: calc(2rem + env(safe-area-inset-bottom));
  background: var(--ink);
  color: var(--cream);
}
.foot .lockup {
  width: 9rem;
}
.foot__brand {
  display: block;
  color: var(--cream);
  width: max-content;
}
.foot__ledger {
  margin-top: 1.5rem;
  padding-top: 1rem;
  padding-bottom: 1rem;
  border-top: 1.5px solid var(--rule);
  border-bottom: 1.5px solid var(--rule);
}
.foot__credit {
  margin: 0;
  font-family: var(--f-display);
  font-weight: 700;
  font-stretch: 62%;
  font-size: 1.0625rem;
  line-height: 1.6;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-wrap: balance;
}
.foot__name {
  text-transform: none;
}
.nb {
  white-space: nowrap;
}
.foot__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
  padding-top: 0.5rem;
}
.foot__nav a {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  font-weight: 500;
}

/* 404 */
.lost {
  display: flex;
  align-items: center;
  min-height: 100svh;
}
.lost__in {
  display: grid;
  justify-items: start;
  gap: 1.25rem;
  padding-top: 3rem;
  padding-bottom: 3rem;
}
.lost__in .lockup {
  width: 7rem;
}
.lost__in .btn {
  margin-top: 0.75rem;
}

/* Wider screens */
@media (min-width: 30rem) {
  .tabs {
    grid-template-columns: repeat(4, auto);
    justify-content: start;
  }
  .share__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .share__grid > :last-child:nth-child(odd) {
    grid-column: auto;
  }
  .lockup {
    width: 5.75rem;
  }
}

@media (min-width: 40rem) {
  .points li {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    align-items: baseline;
  }
}

@media (min-width: 44rem) {
  .hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(1.5rem, 3vw, 4rem);
    align-items: stretch;
  }
  .hero__lead .lede {
    font-size: 1.0625rem;
    line-height: 1.5;
    max-width: 30rem;
  }
  .site-header {
    position: relative;
    z-index: 6;
    display: flex;
    align-items: center;
    min-height: var(--header-h);
    background: transparent;
  }
  .site-header .text-link {
    padding: 0 1rem;
    border-radius: 10px;
    background: var(--cream);
  }
  .hero__photo {
    position: relative;
    z-index: 5;
    isolation: isolate;
    min-height: 34rem;
    margin: calc(-1 * (var(--header-h) + var(--hero-pt))) calc(-1 * var(--bleed)) calc(-1 * var(--hero-pb)) 0;
    border-radius: 0;
    background-color: transparent !important;
    background-image: none !important;
  }
  .hero__photo::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    mix-blend-mode: lighten;
    background: linear-gradient(to right, var(--pink) 0, var(--pink) 5%, transparent 24%);
  }
  .hero__photo picture,
  .hero__photo img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 25% 24%;
  }
}

@media (min-width: 60rem) {
  .split--5-7 {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  }
  .split--7-5 {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  }
  .lockup {
    width: 6.5rem;
  }
  .site-header {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
  }

  .hero {
    --hero-pt: 1.5rem;
    --hero-pb: 4.5rem;
  }
  .hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    column-gap: clamp(2rem, 4vw, 4rem);
    align-items: stretch;
  }
  .hero__title {
    font-size: clamp(3.5rem, 1.1rem + 4.6vw, 5.5rem);
  }
  .hero__lead .lede {
    font-size: 1.25rem;
    line-height: 1.45;
    max-width: 27rem;
  }
  .wide-only {
    display: inline;
  }
  .hero__photo {
    min-height: 38rem;
  }
  .hero__photo img {
    object-position: 0% 24%;
  }
  .hero__copy {
    container-type: inline-size;
  }
  .tag-wrap {
    margin-top: 7.5rem;
  }
  .tag {
    --cord-h: 5.875rem;
  }
  .strap--hero {
    display: block;
    position: absolute;
    z-index: 4;
    right: calc(100% - 100cqw);
    width: 220rem;
    bottom: calc(100% + 2.75rem);
  }
  .tag__title {
    font-size: 2.75rem;
  }

  .knots .split {
    column-gap: clamp(2rem, 5vw, 4rem);
    align-items: center;
  }
  .knots__text {
    display: block;
  }
  .knots__text > .points {
    margin-top: 2rem;
  }
  .knots__comb {
    order: -1;
    max-width: none;
    margin: 0;
  }
  .colors .split {
    align-items: center;
  }
  .colors {
    padding-top: clamp(3rem, 2rem + 3vw, 5rem);
    padding-bottom: clamp(3rem, 2rem + 3vw, 5rem);
  }
  .stage {
    max-width: 37.5rem;
    margin-inline: auto;
  }
  .gift__photos {
    order: -1;
  }
  .tabs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .colors__stage {
    justify-self: center;
    width: 100%;
  }
  .gift__text {
    align-self: center;
  }
  .rewards .split {
    column-gap: clamp(2rem, 5vw, 4rem);
    row-gap: 0;
    grid-template-rows: auto 1fr;
  }
  .rewards__title {
    grid-column: 1;
    grid-row: 1;
    order: 0;
    margin-bottom: 1.5rem;
  }
  .steps {
    grid-column: 1;
    grid-row: 2;
    align-self: start;
    order: 0;
  }
  .ladder {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: start;
    order: 0;
  }
  .final__text {
    align-self: center;
  }
  .final__photo {
    width: calc(100% + var(--bleed));
    max-width: none;
    margin: 0 calc(-1 * var(--bleed)) calc(-1 * var(--section-pad)) 0;
  }

  .strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: clamp(1rem, 2vw, 1.75rem);
    row-gap: 0;
    width: 100%;
    max-width: calc(var(--max) + 2 * var(--gutter));
    margin-inline: auto;
    padding-top: 5.25rem;
    padding-right: var(--gutter);
    padding-bottom: 1rem;
    padding-left: var(--gutter);
    overflow: visible;
    scroll-snap-type: none;
  }
  .strap--hang2 {
    display: block;
    position: relative;
    z-index: 3;
    grid-column: 1 / -1;
    margin: 2.5rem calc(-1 * var(--bleed)) 2.25rem;
    pointer-events: none;
  }
  .gal-hung {
    flex: none;
  }

  .faq__title {
    position: sticky;
    top: 2rem;
    align-self: start;
  }
}

/* Motion (mobile) */
/* Small screens, motion welcome. Only transform-family properties and opacity move, and every element ends in its
   plain style, so nothing depends on an animation finishing. */
@media (max-width: 43.99rem) and (prefers-reduced-motion: no-preference) {
  @keyframes rise {
    from {
      translate: 0 var(--rise, 0.75rem);
    }
  }
  @keyframes fade-in {
    from {
      opacity: 0;
    }
  }
  @keyframes drop {
    from {
      translate: 0 -1.25rem;
    }
  }
  @keyframes settle {
    from {
      scale: 1.05;
    }
  }
  @keyframes swing {
    0% {
      rotate: var(--swing, 2deg);
    }
    24% {
      rotate: calc(var(--swing, 2deg) * -0.6);
    }
    48% {
      rotate: calc(var(--swing, 2deg) * 0.32);
    }
    72% {
      rotate: calc(var(--swing, 2deg) * -0.13);
    }
    100% {
      rotate: 0deg;
    }
  }

  /* Hero on load: pure CSS. The photo is never hidden (it is the LCP), it only settles from a slight zoom. */
  .hero__title span {
    --rise: 1.125rem;
    animation: rise 680ms var(--ease-out) backwards, fade-in 480ms ease-out backwards;
  }
  .hero__title span + span {
    animation-delay: 90ms;
  }
  .hero__lead {
    animation: rise 640ms var(--ease-out) 200ms backwards, fade-in 460ms ease-out 200ms backwards;
  }
  .hero__photo img {
    animation: settle 1100ms var(--ease-out) backwards;
  }

  /* The tag drops onto its cord and swings to rest about the top of the loop. */
  .tag {
    --swing: 2deg;
    transform-origin: var(--gx) calc(var(--gy) - var(--cord-h));
    animation: drop 700ms var(--ease-out) 240ms backwards, fade-in 360ms ease-out 240ms backwards,
      swing 1800ms ease-in-out 240ms backwards;
  }

  /* Scroll reveals: motion.js hides what starts below the fold and adds .is-in on first sight. */
  html.js .reveal:not(.is-in) {
    opacity: 0;
  }
  .btn.reveal:not(.is-in) {
    transition: none;
  }
  .reveal.is-in {
    animation: rise 600ms var(--ease-out) backwards, fade-in 420ms ease-out backwards;
  }
  .frame.reveal,
  .stage.reveal,
  .final__photo.reveal,
  .comb__panel.reveal {
    --rise: 1rem;
  }

  /* Gallery photos swing in from the strap, pivoting at the top of their cord. */
  .gal-hung.reveal {
    --swing: 2.4deg;
    transform-origin: 50% -3.75rem;
  }
  .gal-hung.reveal.is-in {
    animation: fade-in 420ms ease-out backwards, swing 1600ms ease-in-out backwards;
  }

  /* Success: the rank and its tier line settle in as the back of the tag comes into view (its visibility flips
     350ms into the turn). The instant restore for returning visitors is spared because .is-instant zeroes every
     transition on the tag. */
  .rank,
  .tier {
    transition: opacity 400ms ease-out 340ms, scale 560ms var(--ease-out) 340ms;
  }
  .rank {
    transform-origin: 0 50%;
  }
  .tier {
    transition-delay: 440ms;
  }
  html.js:not(.has-me:not(.me-ready)) .tag[data-side="front"] .rank {
    opacity: 0;
    scale: 0.8;
  }
  html.js:not(.has-me:not(.me-ready)) .tag[data-side="front"] .tier {
    opacity: 0;
  }
  html.js .tag[data-side="front"] :is(.rank, .tier) {
    transition: opacity 0s linear 700ms, scale 0s linear 700ms;
  }

  /* The optional details and the extra share links ease open where ::details-content is supported. Opening leaves
     content-visibility out of the transition so a field can take focus the moment the details open (error path). */
  @supports selector(::details-content) {
    .more {
      interpolate-size: allow-keywords;
    }
    .more::details-content {
      block-size: 0;
      overflow: clip;
      transition: block-size 420ms var(--ease-out), content-visibility 420ms allow-discrete;
    }
    .more[open]::details-content {
      block-size: auto;
      transition: block-size 420ms var(--ease-out);
    }
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
  }
  .tag__flip {
    transform: none !important;
    transform-style: flat;
    transition: none;
  }
  .tag__back {
    transform: none;
  }
  .tag__face {
    -webkit-backface-visibility: visible;
    backface-visibility: visible;
    opacity: 1;
    transition: opacity 200ms linear, visibility 0s linear 0s, background-color 200ms linear;
  }
  .tag[data-side="front"] .tag__back,
  .tag[data-side="back"] .tag__front {
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms linear, visibility 0s linear 200ms, background-color 200ms linear;
  }
  html.has-me:not(.me-ready) .tag .tag__front {
    opacity: 0;
    pointer-events: none;
  }
  html.has-me:not(.me-ready) .tag .tag__back {
    opacity: 1;
  }
  .stage__item {
    transition-duration: 200ms;
    transition-timing-function: linear;
  }
  .spinner {
    display: none !important;
  }
  .btn,
  .chip-btn,
  .tab__face {
    transition: none;
  }
  .btn:hover,
  .btn:active,
  .chip-btn:active,
  .tab__face {
    transform: none !important;
  }
  .strap__track {
    transform: none !important;
    will-change: auto;
  }
  .pm__v {
    transition: none;
  }
}

/* Spacing pass (visual review, 2026-10-18) */
.final__text .h2 {
  margin-bottom: 0;
}
@media (max-width: 43.99rem) {
  .tag-wrap {
    margin-top: 3.5rem;
  }
}
@media (max-width: 39.99rem) {
  .points li {
    padding-block: 0.75rem;
  }
}
@media (max-width: 59.99rem) {
  .final .split,
  .faq .split {
    gap: 1.5rem;
  }
  .final__photo {
    margin-top: 0;
  }
  .faq__title {
    margin-bottom: 0;
  }
}
@media (min-width: 60rem) {
  .gallery {
    padding-bottom: 4rem;
  }
}

/* Mobile polish (audit 2026-10-26) */
@media (max-width: 43.99rem) {
  /* Colors: the photo sits under the heading, so a tap on a swatch shows its brush in the same view */
  .colors__text {
    display: contents;
  }
  .colors .split {
    gap: 0;
  }
  .colors__text > .h2 {
    order: 1;
  }
  .colors__stage {
    order: 2;
    margin-bottom: 1.25rem;
  }
  .stage {
    /* On short phones the photo gives up height so the tabs below it stay on screen */
    max-height: max(18rem, calc(100svh - 11rem));
  }
  .tabs {
    order: 3;
  }
  .color-line {
    order: 4;
  }
  .color-note {
    order: 5;
  }

  /* Rewards: the ladder's ink rule closes it; the steps start below it without a second rule */
  .steps li:first-child {
    padding-top: 0;
    border-top: 0;
  }

  /* Final call: the cutout spans the screen (capped on wide phones) so the brushes fill the left instead of bare pink */
  .final__photo {
    --photo-w: min(100% + 2 * var(--bleed), 30rem);
    width: var(--photo-w);
    margin-left: calc(100% + var(--bleed) - var(--photo-w));
  }

  /* Share link: on the narrowest phones the mini tag and field give up side padding so the whole link shows */
  @media (max-width: 24rem) {
    .minitag__stock {
      padding-inline: 0.75rem;
    }
    .linkrow input {
      padding-inline: 0.625rem;
    }
  }

  /* Loose bottoms: gifting and the gallery */
  .gift {
    padding-bottom: 3rem;
  }
  .gallery {
    padding-bottom: 3rem;
  }
  .strip {
    padding-bottom: 1rem;
  }
}
