/* ==========================================================================
   DEPLOY (checkout) — the four-step wizard from Deploy.dc.html, on top of
   css/ds.css. Chromeless dark app well; the order card sticks on the right
   and takes over alone on the final step.
   ========================================================================== */

/* Page reset — this page doesn't load main.css, so the UA's body margin
   would frame the well with the html background. Paint both to the theme. */
*, *::before, *::after { box-sizing: border-box; }
html { background: #f6f6f6; }
html.dark { background: var(--pc-app-dark); }
body { margin: 0; }

.dp-page {
  /* Theme-aware: a light "app well" + white cards by default, the design's
     dark well + #252525 cards under html.dark. */
  --dp-well: #f6f6f6;
  --dp-card: #ffffff;
  background: var(--dp-well);
  color: var(--pc-ink);
  min-height: 100vh;
  overflow-x: clip;
}
html.dark .dp-page {
  --dp-well: var(--pc-app-dark);
  --dp-card: var(--pc-card-dark);
}
.dp-page a { color: inherit; text-decoration: none; }
.dp-page a:hover { color: var(--pc-accent-mint); }

/* top bar — the shared .ds-appbar (same height/typography as every page);
   only the step counter is page-specific. */
.dp-step-counter {
  font-family: var(--font-display);
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  opacity: var(--dim-6);
  white-space: nowrap;
}

/* the collapsing grid */
.dp-grid {
  display: grid;
  grid-template-columns: 1.12fr 0.88fr;
  gap: 56px;
  align-items: start;
  max-width: 1240px;
  margin: 0 auto;
  padding: 40px 24px 72px;
  transition: grid-template-columns 0.55s var(--ease-out-expo),
              max-width 0.55s var(--ease-out-expo),
              gap 0.55s var(--ease-out-expo);
}
.dp-grid[data-final="1"] { grid-template-columns: 0fr 1fr; max-width: 560px; gap: 0; }
.dp-grid[data-final="1"] .dp-left { opacity: 0; pointer-events: none; overflow: hidden; transition: opacity 0.3s ease; }
.dp-grid > * { min-width: 0; }

.dp-eyebrow { font-family: var(--font-display); font-size: 0.62rem; font-weight: var(--fw-medium); letter-spacing: 0.25em; text-transform: uppercase; color: var(--pc-accent-mint); }

/* spec strip */
.dp-specs {
  display: flex;
  justify-content: space-between;
  border-top: var(--bw-hairline) solid var(--pc-border);
  border-bottom: var(--bw-hairline) solid var(--pc-border);
  margin-top: 18px;
}
.dp-specs > div {
  flex: 1;
  padding: 16px 8px;
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.55;
}
.dp-specs > div + div { border-left: var(--bw-hairline) solid var(--pc-border); }

/* step indicator */
.dp-steps { display: flex; align-items: center; gap: 10px; margin-top: 22px; flex-wrap: wrap; }
.dp-wstep {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-display);
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: 0.3;
  transition: opacity var(--dur-base) var(--ease-out-expo);
}
.dp-wstep[data-done="1"] { opacity: 0.6; }
.dp-wstep[data-on="1"] { opacity: 1; }
.dp-wdot { width: 7px; height: 7px; border: 1px solid currentColor; display: inline-block; }
.dp-wstep[data-on="1"] .dp-wdot { background: var(--pc-accent-mint); border-color: var(--pc-accent-mint); }
.dp-wstep[data-done="1"] .dp-wdot { background: currentColor; }
.dp-wsep { width: 24px; height: 1px; background: var(--pc-border-strong); }

/* step panes */
.dp-pane { margin-top: 34px; }
.dp-pane-title { font-family: var(--font-display); font-size: 0.62rem; font-weight: var(--fw-medium); letter-spacing: 0.2em; text-transform: uppercase; opacity: 0.55; }

/* tier / toggle cards */
/* Billing interval toggle */
.dp-interval { display: inline-flex; border: var(--bw-structural) solid var(--pc-border); background: var(--dp-card); margin-top: 16px; }
.dp-interval-opt {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--font-display); font-size: var(--fs-xs); font-weight: var(--fw-medium);
  letter-spacing: 0.2em; text-transform: uppercase;
  padding: 11px 20px; border: 0; background: transparent; color: inherit; cursor: pointer;
  opacity: var(--dim-5);
  transition: background var(--dur-base) var(--ease-out-expo), opacity var(--dur-base) var(--ease-out-expo);
}
.dp-interval-opt:hover { opacity: 0.85; }
.dp-interval-opt[data-on="1"] { background: var(--pc-bg-hover); opacity: 1; }
.dp-interval-save {
  font-family: var(--font-body); font-size: 0.62rem; letter-spacing: 0.1em;
  color: var(--pc-accent-mint); opacity: 1;
}

/* Three tiers; minmax(0,…) so a long price can't push a track past its share. */
.dp-tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.dp-pick {
  border: var(--bw-structural) solid var(--pc-border);
  background: var(--dp-card);
  cursor: pointer;
  padding: 24px;
  transition: border-color var(--dur-base) var(--ease-out-expo),
              background var(--dur-base) var(--ease-out-expo);
}
.dp-pick:hover { border-color: var(--pc-border-hover); }
.dp-pick[data-on="1"] { border-color: var(--pc-ink); background: var(--pc-bg-hover); }
.dp-pick-head { display: flex; justify-content: space-between; align-items: center; }
.dp-pick-name { font-family: var(--font-display); font-size: var(--fs-xs); font-weight: var(--fw-medium); letter-spacing: 0.2em; text-transform: uppercase; }
.dp-pick-mark { opacity: 0; color: var(--pc-accent-mint); font-family: var(--font-body); font-size: var(--fs-md); transition: opacity var(--dur-base) var(--ease-out-expo); }
.dp-pick[data-on="1"] .dp-pick-mark { opacity: 1; }
.dp-price { display: flex; align-items: baseline; gap: 5px; margin-top: 14px; }
.dp-price-cur { font-family: var(--font-display); font-size: 1rem; font-weight: var(--fw-medium); }
.dp-price-num { font-family: var(--font-display); font-size: 2rem; font-weight: var(--fw-medium); letter-spacing: 0.02em; line-height: 1; }
.dp-price-per { font-family: var(--font-body); font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; opacity: var(--dim-5); }
.dp-price-was {
  font-family: var(--font-display); font-size: 1rem; font-weight: var(--fw-medium);
  text-decoration: line-through; opacity: var(--dim-7); margin-right: 2px;
}
.dp-price-was[hidden] { display: none; }
.dp-price-note {
  font-family: var(--font-body); font-size: 0.68rem; line-height: 1.6;
  color: var(--pc-accent-mint); margin-top: 6px;
}
.dp-price-note[hidden] { display: none; }
.dp-pick-desc { font-family: var(--font-body); font-size: var(--fs-sm); line-height: 1.8; opacity: 0.55; margin-top: 12px; }

/* storage */
.dp-storage { border: var(--bw-structural) solid var(--pc-border); background: var(--dp-card); padding: 26px 28px; margin-top: 16px; }
.dp-storage-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.dp-optional { font-family: var(--font-body); font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; opacity: var(--dim-5); }
.dp-storage-figure { display: flex; align-items: baseline; gap: 8px; margin-top: 16px; }
.dp-range { width: 100%; margin-top: 18px; accent-color: var(--pc-accent-mint); }
.dp-scale { display: flex; justify-content: space-between; font-family: var(--font-body); font-size: var(--fs-2xs); letter-spacing: 0.14em; text-transform: uppercase; opacity: var(--dim-7); margin-top: 6px; }

.dp-backups { padding: 22px 26px; margin-top: 16px; display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.dp-backups .dp-pick-desc { margin-top: 8px; }
.dp-backups-right { display: flex; align-items: center; gap: 14px; white-space: nowrap; }
.dp-backups-rate { font-family: var(--font-body); font-size: var(--fs-sm); opacity: 0.55; }

/* account */
.dp-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 18px; }
.dp-account-note { font-family: var(--font-body); font-size: 0.68rem; line-height: 1.9; opacity: var(--dim-6); margin: 16px 0 0; max-width: 520px; }
.dp-account-hint { font-family: var(--font-body); font-size: 0.68rem; line-height: 1.9; color: var(--pc-accent-mint); margin: 16px 0 0; }
.dp-agree {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 18px;
  font-family: var(--font-body);
  font-size: 0.68rem;
  line-height: 1.7;
  opacity: 0.75;
  cursor: pointer;
  max-width: 520px;
}
.dp-agree input { accent-color: var(--pc-accent-mint); margin-top: 2px; }
.dp-agree a { text-decoration: underline; text-underline-offset: 3px; }
.dp-error { font-family: var(--font-body); font-size: 0.68rem; color: var(--pc-danger); margin: 14px 0 0; }

/* wizard nav */
.dp-nav { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; white-space: nowrap; }
/* On the review step the primary button goes mint: the filled button derives
   from --pc-ink/--pc-surface, so remapping the two vars flips it. */
.dp-next[data-on="1"] { --pc-ink: var(--pc-accent-mint); --pc-surface: var(--pc-accent-mint-deep); }

/* order card */
.dp-order {
  position: sticky;
  top: 24px;
  border: var(--bw-structural) solid var(--pc-border-strong);
  padding: 32px 30px;
  background: var(--dp-card);
  transition: transform 0.55s var(--ease-out-expo), border-color 0.4s ease;
}
.dp-grid[data-final="1"] .dp-order { animation: dpOrderIn 0.6s var(--ease-out-expo) both; }
@keyframes dpOrderIn {
  from { transform: scale(0.96); opacity: 0.4; filter: blur(6px); }
  to { transform: none; opacity: 1; filter: blur(0); }
}
.dp-order-row { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-top: 12px; font-family: var(--font-body); font-size: var(--fs-md); }
.dp-order-row span:first-child { opacity: 0.55; }
.dp-order-row .is-mint { color: var(--pc-accent-mint); }
.dp-order-hr { height: 1px; background: var(--pc-border); margin: 22px 0; }
.dp-order-total { display: flex; justify-content: space-between; align-items: baseline; }
.dp-total-num { font-family: var(--font-display); font-size: 1.9rem; font-weight: var(--fw-medium); letter-spacing: 0.02em; }
.dp-order-billed { font-family: var(--font-body); font-size: 0.72rem; line-height: 1.8; color: var(--pc-accent-mint); margin-top: 8px; }
.dp-order-billed[hidden] { display: none; }
.dp-order-note { font-family: var(--font-body); font-size: 0.68rem; line-height: 1.8; opacity: var(--dim-6); margin-top: 10px; }

.dp-cta-wrap { margin-top: 24px; white-space: nowrap; --pc-ink: var(--pc-accent-mint); --pc-surface: var(--pc-accent-mint-deep); }
.dp-cta-wrap .ds-btn:active { transform: scale(0.98); }
.dp-stripe-note { font-family: var(--font-body); font-size: var(--fs-xs); line-height: 1.7; opacity: var(--dim-6); margin-top: 12px; text-align: center; }
.dp-change { display: flex; justify-content: center; margin-top: 14px; white-space: nowrap; }

.dp-hint { margin-top: 22px; padding-top: 18px; border-top: var(--bw-hairline) solid var(--pc-border); font-family: var(--font-body); font-size: 0.68rem; letter-spacing: 0.06em; opacity: var(--dim-5); }
.dp-hint[hidden] { display: none; }
.dp-bullets { display: flex; flex-direction: column; gap: 9px; margin-top: 20px; }
.dp-bullets div { font-family: var(--font-body); font-size: 0.68rem; opacity: var(--dim-5); }

@media (max-width: 960px) {
  .dp-grid { grid-template-columns: 1fr; gap: 28px; padding: 24px 20px 56px; }
  .dp-grid[data-final="1"] { grid-template-columns: 1fr; }
  .dp-grid[data-final="1"] .dp-left { display: none; }
  .dp-order { position: static; }
  .dp-tiers { grid-template-columns: 1fr; }
  .dp-interval { width: 100%; }
  .dp-interval-opt { flex: 1; justify-content: center; }
  .dp-fields { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .dp-grid, .dp-order { transition: none; }
  .dp-grid[data-final="1"] .dp-order { animation: none; }
}
