/* The upgrade pop-up (src/studio/upgrade-prompt/, D191), design/chordlens.pen "Free plan · 2-minute split window", dark and light.
   Loaded by every page with the rail. Pink is only on the upgrade actions. */

/* Billing closed (its 404 before launch): no upgrade entry point shows anywhere. */
html:not([data-upgrade='open']) .st-upgrade-entry { display: none !important; }
/* The plan doesn't apply to this caller yet (not enforced, billing closed, D197): no plan badge or "Your plan" block. */
html:not([data-plans='on']) :is([data-plan-badge], .db-plan, .account__card) { display: none !important; }

.upp-dialog {
  --upp-ink: light-dark(#d41843, #ff6b85);
  --upp-tile-pro: light-dark(#ffe4ea, #2a0d16);
  --upp-tile-pro-foot: light-dark(#fff, #141014);
  --upp-radio: light-dark(#a1a1aa, #52525b);
  position: fixed;
  width: min(520px, calc(100vw - 24px));
  max-height: calc(100dvh - 24px);
  padding: 0;
  border: 1px solid transparent;
  border-radius: 20px;
  overflow: auto;
  background:
    linear-gradient(180deg, light-dark(#fff0f3, #22101a) 0%, var(--st-surface) 42%) padding-box,
    linear-gradient(180deg, light-dark(rgb(212 24 67 / 0.4), rgb(255 107 133 / 0.63)) 0%, var(--st-line) 60%) border-box;
  box-shadow:
    0 32px 80px color-mix(in srgb, var(--st-shadow) 70%, transparent),
    0 0 48px light-dark(rgb(212 24 67 / 0.15), rgb(255 45 85 / 0.35)),
    inset 0 1px 0 rgb(255 255 255 / 0.08);
  color: var(--st-text);
  font: 400 13px/1.45 var(--st-font);
}
.upp-dialog::backdrop { background: color-mix(in srgb, #050507 70%, transparent); }

.upp-close { position: absolute; top: 20px; right: 20px; background: var(--st-surface-2); color: var(--st-text-faint); }
.upp-close .st-icon { width: 16px; height: 16px; }

.upp-intro { display: flex; flex-direction: column; gap: 14px; padding: 28px 32px 26px; }
.upp-eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding-right: 40px;
  color: var(--upp-ink);
  font: 700 12px/16px var(--st-font);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.upp-eyebrow .st-icon { flex: none; width: 14px; height: 14px; }
.upp-title { margin: 0; padding-right: 40px; font: 700 30px/1.3 var(--st-font); letter-spacing: -0.01em; }
.upp-body { margin: 0; color: var(--st-text-dim); font: 400 15px/23px var(--st-font); }

.upp-benefits {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin: 0;
  padding: 24px 32px;
  border-top: 1px solid var(--st-line);
  list-style: none;
}
.upp-benefit { display: flex; flex-direction: column; gap: 8px; }
.upp-benefit__tile {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 9px;
  background: light-dark(rgb(212 24 67 / 0.1), rgb(255 45 85 / 0.12));
  color: var(--upp-ink);
}
.upp-benefit__tile .st-icon { width: 16px; height: 16px; }
.upp-benefit__title { font: 600 14px/18px var(--st-font); }
.upp-benefit__text { color: var(--st-text-faint); font: 400 12.5px/18px var(--st-font); }

.upp-plans { display: flex; flex-direction: column; gap: 14px; padding: 0 32px 28px; }
.upp-billing { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.upp-billing .st-seg { padding: 3px; border-radius: 10px; }
.upp-billing .st-seg__item { padding: 6px 14px; border-radius: 8px; font-size: 13px; }
.upp-yearly { display: inline-flex; align-items: center; gap: 6px; color: var(--st-ok); font: 500 13px/17px var(--st-font); }
.upp-yearly .st-icon { width: 14px; height: 14px; }

.upp-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 12px; padding-top: 24px; }
.upp-tile {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 16px 16px;
  border: 1px solid var(--st-line);
  border-radius: 14px;
  background: light-dark(var(--st-panel), var(--st-surface-2));
  cursor: pointer;
}
.upp-tile:has(.upp-tile__input:checked) {
  border-color: var(--st-accent);
  background: linear-gradient(180deg, var(--upp-tile-pro), var(--upp-tile-pro-foot));
  box-shadow: 0 8px 28px light-dark(rgb(212 24 67 / 0.2), rgb(255 45 85 / 0.35));
}
.upp-tile:has(.upp-tile__input:focus-visible) { outline: var(--st-focus-width) solid var(--st-focus-ring); outline-offset: 2px; }
.upp-tile__input { position: absolute; opacity: 0; pointer-events: none; }
.upp-tile__name { display: flex; align-items: center; gap: 8px; font: 600 14px/18px var(--st-font); }
.upp-tile:has(.upp-tile__input:checked) .upp-tile__name { color: var(--upp-ink); }
.upp-tile__radio { flex: none; width: 16px; height: 16px; border: 1px solid var(--upp-radio); border-radius: 50%; }
.upp-tile:has(.upp-tile__input:checked) .upp-tile__radio {
  border-color: var(--st-accent);
  background: radial-gradient(circle, #fff 0 3px, var(--st-accent) 3.5px);
}
.upp-tile__badge {
  padding: 2px 6px;
  border-radius: 5px;
  background: var(--st-accent);
  color: var(--st-on-accent);
  font: 700 10px/13px var(--st-font);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
}
.upp-tile__price { display: flex; align-items: baseline; gap: 4px; }
.upp-tile__was { margin-right: 2px; color: var(--st-text-faint); font: 500 14px/18px var(--st-font); }
.upp-tile__amount { font: 600 26px/26px var(--st-font); }
.upp-tile__unit { color: var(--st-text-faint); font: 400 13px/17px var(--st-font); }
.upp-tile__note { color: var(--st-text-faint); font: 400 12px/16px var(--st-font); }
.upp-tile:has(.upp-tile__input:checked) .upp-tile__note { color: var(--st-text-dim); }
.upp-tile__ribbon { position: absolute; top: -24px; right: 0; }

.upp-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 52px;
  padding: 0 16px;
  border: 1px solid var(--st-accent-edge);
  border-radius: 12px;
  background:
    linear-gradient(118deg, transparent 30%, rgb(255 255 255 / 0.35) 42%, transparent 50%, rgb(255 255 255 / 0.12) 56%, transparent 62%),
    linear-gradient(180deg, light-dark(#f0285a, var(--st-accent-hi)), light-dark(#be123c, var(--st-accent-strong)));
  box-shadow: 0 10px 30px rgb(255 45 85 / 0.4), inset 0 1px 0 rgb(255 255 255 / 0.25);
  color: var(--st-on-accent);
  font: 600 15px/19px var(--st-font);
  text-align: center;
  text-decoration: none;
}
.upp-cta:hover { box-shadow: 0 12px 34px rgb(255 45 85 / 0.55), inset 0 1px 0 rgb(255 255 255 / 0.25); }
.upp-cta .st-icon { flex: none; width: 16px; height: 16px; }
/* A failing renewal's Update card (P284): the plan card's rose outline (plan-card.css `.pc-btn--fix`), not the pink. */
.upp-cta--fix { border-color: #f8717180; background: #f871711a; box-shadow: none; color: var(--st-text); }
.upp-cta--fix:hover { border-color: #f87171; box-shadow: none; }
.upp-cta--fix .st-icon { color: #fecaca; }

.upp-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.upp-footnote { color: var(--st-text-faint); font: 400 12px/16px var(--st-font); }
.upp-foot .st-btn--ghost { font-size: 13px; font-weight: 600; }
.upp-foot--plain { justify-content: flex-end; padding: 0 32px 28px; }
.upp-sign-in { text-decoration: none; }

@media (max-width: 520px) {
  .upp-intro { padding: 24px 20px 22px; }
  .upp-title { font-size: 24px; }
  .upp-benefits { grid-template-columns: 1fr; gap: 14px; padding: 20px; }
  .upp-benefit { display: grid; grid-template-columns: 32px 1fr; column-gap: 12px; row-gap: 2px; }
  .upp-benefit__tile { grid-row: span 2; }
  .upp-plans { padding: 0 20px 22px; }
  .upp-tiles { grid-template-columns: 1fr; gap: 28px; } /* room for the Pro ribbon over the tile above */
  /* Top room only for a first tile's ribbon. */
  .upp-tiles:not(:has(> :first-child > .upp-tile__ribbon)) { padding-top: 0; }
  .upp-foot--plain { padding: 0 20px 22px; }
}

/* A lower ribbon lets the tallest pop-up fit 390×844 (D223). Narrower, it would sit on the badge,
   and those widths scroll anyway. */
@media (min-width: 388px) and (max-width: 520px) {
  .upp-tiles { gap: 20px; padding-top: 16px; }
  .upp-tile__ribbon { top: -16px; }
}

/* The loop limit's Upgrade, under "3/3 · Unlimited with Premium". */
.pl-loops__upgrade {
  margin: 2px 4px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--st-accent-ink);
  font: 600 11px/normal var(--st-font);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

/* The loop limit's own pop-up (D203): the song's loops as the shelf the user filled, in the loop's colour. */
.upp-dialog--loops {
  width: min(400px, calc(100vw - 24px));
  background:
    radial-gradient(100% 60% at 50% 0%, color-mix(in srgb, var(--st-loop) 15%, transparent), transparent) padding-box,
    linear-gradient(180deg, color-mix(in srgb, var(--st-loop) 8%, var(--st-surface)) 0%, var(--st-surface) 55%) padding-box,
    linear-gradient(180deg, color-mix(in srgb, var(--st-loop) 45%, transparent) 0%, var(--st-line) 60%) border-box;
}
.upp-loops { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 28px 28px 22px; text-align: center; }
.upp-loops .upp-title { padding: 0; font-size: 22px; }
.upp-loops .upp-body { font-size: 14px; line-height: 1.5; }
.upp-mark { position: relative; width: 64px; height: 64px; }
.upp-mark__icon { display: block; width: 56px; height: 56px; border-radius: 13px; box-shadow: 0 8px 22px color-mix(in srgb, var(--st-accent) 40%, transparent); }
.upp-mark__badge {
  position: absolute;
  right: 0;
  bottom: 0;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 3px solid var(--st-surface);
  border-radius: 50%;
  background: var(--st-loop);
  color: var(--st-on-accent);
}
.upp-mark__badge .st-icon { width: 13px; height: 13px; stroke-width: 2.5; }
.upp-shelf {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  padding: 12px;
  border: 1px solid var(--st-line);
  border-radius: 12px;
  background: var(--st-bg);
}
.upp-shelf__list { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.upp-shelf__loop {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border: 1px solid color-mix(in srgb, var(--st-loop) 20%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--st-loop) 8%, transparent);
}
.upp-shelf__dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--dot, var(--st-loop)); }
.upp-shelf__name { flex: 1; min-width: 0; overflow: hidden; font: 600 12.5px/16px var(--st-font); text-align: start; text-overflow: ellipsis; white-space: nowrap; }
.upp-shelf__range,
.upp-shelf__count { color: var(--st-loop-ink); font: 400 11px/14px var(--st-font-mono); }
.upp-shelf__quota { display: flex; align-items: center; gap: 6px; padding: 4px 2px 0; }
.upp-shelf__slot { flex: 1; height: 5px; border-radius: 3px; background: linear-gradient(90deg, var(--st-loop), var(--st-loop-ink)); }
.upp-shelf__count { font-weight: 700; }
.upp-loops__actions { display: flex; gap: 10px; padding: 0 28px 26px; }
.upp-loops__actions > * { flex: 1; justify-content: center; min-height: 44px; border-radius: 12px; }
.upp-cta--compact { min-height: 44px; gap: 7px; padding: 0 12px; font-size: 14px; }
.upp-cta--compact .st-icon { width: 15px; height: 15px; }
.upp-loops__foot { margin: 0; padding: 0 28px 22px; color: var(--st-text-faint); font: 400 11.5px/16px var(--st-font); text-align: center; }

@media (max-width: 520px) {
  .upp-loops { padding: 24px 20px 20px; }
  .upp-loops__actions { padding: 0 20px 22px; }
  .upp-loops__foot { padding: 0 20px 20px; }
}

/* A print from the browser's own menu on a plan without Print: the page says why instead. */
@media print {
  html[data-print-locked] .sheet { display: none !important; }
  html[data-print-locked] body:has(.sheet)::after {
    content: 'Printing chord sheets is part of Chord Lens Premium and Pro.';
    display: block;
    color: #000;
    font: 600 16px/1.5 sans-serif;
  }
  .upp-dialog { display: none !important; }
}
