/* ==========================================================================
   Commerce family — ecommerce, gift-cards, card-issuing, download
   Every colour comes from a base.css token. No page invents a palette.
   ========================================================================== */

/* ---------- Section shells ---------- */
.cm-section { position: relative; padding: var(--space-small) 0; background-color: var(--white); overflow: hidden; }
.cm-section.is-dark { background-color: var(--dark-green); }
/* White strip carrying the vertical hairlines between two sections */
.cm-spacer { background-color: var(--white); }

.cm-banner { position: relative; background-color: var(--white); overflow: hidden; }

/* ---------- Banner ---------- */
.cm-banner-head {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 20px; width: 100%; max-width: 880px; margin: 0 auto;
}
.cm-banner-head .paragraph-large { max-width: 720px; }
.cm-eyebrow-row { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; }
.cm-banner-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; margin-top: 8px; }
.cm-banner-note {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: var(--fs-p-small); color: var(--gray-color);
}
.cm-banner-note svg { flex: none; width: 18px; height: 18px; color: var(--blue-600); }

/* Coming-soon marker */
.cm-soon {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px; border-radius: 999px;
  background-color: var(--paste-color); color: var(--blue-700);
  font-size: var(--fs-p-small); font-weight: var(--fw-semi-bold); line-height: 20px;
}
.cm-soon.is-light { background-color: rgba(255,255,255,.16); color: var(--white); }
.cm-soon.is-small { padding: 2px 8px; font-size: 12px; line-height: 18px; }

/* ---------- Product stage ---------- */
.cm-stage { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; margin-top: 64px; }
.cm-stage-col {
  display: flex; flex-direction: column; gap: 16px;
  padding: 24px; border-radius: 16px; background-color: var(--card-bg);
}
.cm-stage-cap {
  display: flex; align-items: center; gap: 8px;
  font-size: var(--fs-p-small); font-weight: var(--fw-semi-bold); color: var(--dark-green);
}
.cm-stage-cap svg { flex: none; width: 16px; height: 16px; color: var(--blue-600); }

/* ---------- Mock panels ---------- */
.cm-mock {
  width: 100%; border: 1px solid var(--stroke-color); border-radius: 12px;
  background-color: var(--white); box-shadow: var(--shadow-skeu-soft); overflow: hidden;
}
.cm-mock-head {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 13px 16px; border-bottom: 1px solid var(--stroke-color);
}
.cm-mock-body { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--stroke-color); }
.cm-mock-body:last-child { border-bottom: 0; }
.cm-mock-row {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 11px 16px; border-bottom: 1px solid var(--stroke-color);
}
.cm-mock-row:last-child { border-bottom: 0; }
.cm-mock-label { font-size: 13px; line-height: 20px; color: var(--gray-color); }
.cm-mock-value { font-size: 13px; line-height: 20px; font-weight: var(--fw-medium); color: var(--dark-green); text-align: right; }
.cm-mock-chip {
  display: inline-flex; align-items: center; flex: none; padding: 3px 10px; border-radius: 999px;
  background-color: var(--paste-color); color: var(--blue-700);
  font-size: 12px; line-height: 18px; font-weight: var(--fw-semi-bold); white-space: nowrap;
}
.cm-mock-btn {
  padding: 10px 12px; border-radius: 10px; background-color: var(--blue-600); color: var(--white);
  font-size: 13px; line-height: 20px; font-weight: var(--fw-semi-bold); text-align: center;
  box-shadow: var(--shadow-skeu);
}
.cm-mock-avatar {
  display: flex; align-items: center; justify-content: center; flex: none; width: 30px; height: 30px;
  border-radius: 50%; background-color: var(--paste-color); color: var(--dark-green);
  font-size: 11px; font-weight: var(--fw-semi-bold); line-height: 1;
}
.cm-line { height: 10px; border-radius: 5px; background-color: var(--bg-color); }
.cm-lines { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }

/* Catalogue table */
.cm-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cm-table th {
  padding: 10px 16px; text-align: left; font-weight: var(--fw-medium);
  color: var(--gray-color); border-bottom: 1px solid var(--stroke-color); white-space: nowrap;
}
.cm-table td { padding: 10px 16px; color: var(--gray-color); vertical-align: middle; }
.cm-table tbody tr + tr td { border-top: 1px solid var(--stroke-color); }
.cm-table .num { text-align: right; font-weight: var(--fw-medium); color: var(--dark-green); white-space: nowrap; }
.cm-prod { display: inline-flex; align-items: center; gap: 10px; }
.cm-thumb { flex: none; width: 24px; height: 24px; border-radius: 7px; background-image: linear-gradient(140deg, var(--blue-400), var(--blue-600)); }
.cm-thumb.alt { background-image: linear-gradient(140deg, var(--paste-color), var(--blue-400)); }

/* Checkout preview */
.cm-co-brand { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--stroke-color); }
.cm-co-name { display: block; font-size: 13px; font-weight: var(--fw-semi-bold); color: var(--dark-green); }
.cm-co-sub { display: block; font-size: 11px; color: var(--gray-color); }
.cm-co-item { display: flex; align-items: center; gap: 10px; }
.cm-co-item-name { display: block; font-size: 13px; font-weight: var(--fw-medium); color: var(--dark-green); }
.cm-co-item-qty { display: block; font-size: 11px; color: var(--gray-color); }
.cm-co-tot { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding-top: 10px; border-top: 1px solid var(--stroke-color); }
.cm-co-tot b { font-size: 15px; color: var(--dark-green); }
.cm-co-secure { display: flex; align-items: center; gap: 8px; font-size: 11px; line-height: 16px; color: var(--gray-color); }
.cm-co-secure svg { flex: none; width: 15px; height: 15px; color: var(--blue-600); }

/* KPIs and chart */
.cm-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cm-kpi { padding: 10px 12px; border-radius: 10px; background-color: var(--card-bg); }
.cm-kpi b { display: block; margin-top: 2px; font-size: 16px; line-height: 22px; color: var(--dark-green); }
.cm-chart { display: flex; align-items: flex-end; gap: 8px; height: 96px; }
.cm-chart-col { display: flex; align-items: flex-end; flex: 1; height: 100%; }
.cm-chart-bar { width: 100%; border-radius: 6px 6px 0 0; background-color: var(--off-white); }
.cm-chart-bar.on { background-image: linear-gradient(180deg, var(--blue-400), var(--blue-600)); }
.cm-chart-x { display: flex; gap: 8px; }
.cm-chart-x span { flex: 1; text-align: center; font-size: 10px; line-height: 16px; color: var(--gray-light); }

/* ---------- Feature cards ---------- */
.cm-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cm-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: 28px; border: 1px solid var(--stroke-color); border-radius: 16px; background-color: var(--white);
}
.cm-card p { color: var(--gray-color); }
.cm-card-title { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; color: var(--dark-green); }
.cm-icon-tile {
  display: flex; align-items: center; justify-content: center; flex: none; width: 44px; height: 44px;
  border-radius: 10px; background-color: var(--paste-color); color: var(--blue-700);
}
.cm-icon-tile svg { width: 22px; height: 22px; }

/* ---------- Split ---------- */
.cm-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 60px; align-items: center; }
.cm-split.flip .cm-split-media { order: -1; }
.cm-split-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.cm-split-copy .button-secondary { margin-top: 8px; }
.cm-list { display: flex; flex-direction: column; gap: 16px; width: 100%; margin-top: 4px; }
.cm-list li { display: flex; align-items: flex-start; gap: 12px; font-size: var(--fs-p-small); line-height: 1.5; }
.cm-list svg { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--blue-600); }
.cm-list b { display: block; font-weight: var(--fw-semi-bold); color: var(--dark-green); }
.is-dark .cm-list li { color: var(--green-dark); }
.is-dark .cm-list b { color: var(--white); }
.is-dark .cm-list svg { color: var(--blue-400); }
.is-dark .cm-split-copy p { color: var(--green-dark); }

/* ---------- Flow / steps ---------- */
.cm-flow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
.cm-flow-step {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: 28px; border-radius: 16px; background-color: var(--card-bg);
}
.cm-flow-step p { color: var(--gray-color); }
.cm-flow-num {
  display: flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px;
  border-radius: 50%; background-color: var(--blue-600); color: var(--white);
  font-weight: var(--fw-semi-bold); line-height: 1;
}
.cm-flow-media { width: 100%; margin-top: auto; }

/* ---------- Audience cards (card issuing) ---------- */
.cm-aud { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cm-aud-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: 28px; border-radius: 16px; background-color: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
}
.cm-aud-card .cm-icon-tile { background-color: rgba(255,255,255,.12); color: var(--white); }
.cm-aud-card p { color: var(--green-dark); }

/* ---------- Waitlist ---------- */
.cm-waitlist { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 500px); gap: 60px; align-items: start; }
.cm-waitlist-card {
  display: flex; flex-direction: column; gap: 10px; padding: 36px; border-radius: 20px;
  background-color: var(--dark-green); color: var(--white);
}
.cm-waitlist-card > p { color: var(--green-dark); font-size: var(--fs-p-small); }
.cm-waitlist-card .form-block { margin-top: 14px; }
.form.cm-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.cm-field { display: flex; flex-direction: column; gap: 6px; }
.cm-field.span-2 { grid-column: 1 / -1; }
.cm-field label { font-size: 13px; color: var(--green-dark); }
.cm-form select.text-field {
  appearance: none; -webkit-appearance: none; color: var(--white); padding-right: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6.5 8 10.5l4-4' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 16px 16px;
}
.cm-form select.text-field option { color: var(--dark-green); background-color: var(--white); }
.cm-form textarea.text-field { min-height: 84px; resize: vertical; }
.cm-form-foot { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 10px; }
.cm-form-foot .submit-button { align-self: flex-start; }
.cm-form-foot p { font-size: 12px; line-height: 18px; color: var(--green-dark); }
.cm-waitlist-card .form-message { text-align: left; }

/* ---------- Cross links ---------- */
.cm-xlinks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cm-xlink {
  display: flex; flex-direction: column; gap: 10px; padding: 26px;
  border: 1px solid var(--stroke-color); border-radius: 16px; background-color: var(--white);
  color: var(--gray-color); transition: border-color .25s ease, transform .25s ease;
}
.cm-xlink:hover { border-color: var(--blue-400); transform: translateY(-3px); }
.cm-xlink-top { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.cm-icon-btn {
  display: flex; align-items: center; justify-content: center; flex: none; width: 34px; height: 34px;
  border-radius: 50%; background-color: var(--paste-color); color: var(--blue-700); transition: transform .25s ease;
}
.cm-icon-btn svg { width: 14px; height: 14px; }
.cm-xlink:hover .cm-icon-btn { transform: translate(2px, -2px); }

.cm-note { max-width: 700px; margin: 32px auto 0; text-align: center; font-size: var(--fs-p-small); color: var(--gray-color); }
.cm-note a { color: var(--blue-600); text-decoration: underline; }

/* ---------- Gift card art ---------- */
.gc-face {
  display: flex; flex-direction: column; padding: 24px; border-radius: 16px; color: var(--white);
  background-image: linear-gradient(140deg, var(--dark-green) 0%, var(--blue-600) 58%, var(--blue-400) 100%);
}
.gc-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.gc-brand { display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-p-small); font-weight: var(--fw-semi-bold); }
.gc-brand svg { width: 16px; height: 18px; flex: none; }
.gc-kind { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--paste-color); }
.gc-value { margin-top: 26px; font-size: 40px; line-height: 1.1; font-weight: var(--fw-semi-bold); letter-spacing: -0.03em; }
.gc-for { margin-top: 8px; font-size: 13px; line-height: 20px; color: var(--paste-color); }
.gc-code {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  margin-top: 24px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.28); font-size: 12px;
}
.gc-code b { letter-spacing: .1em; }
.gc-bar { height: 8px; border-radius: 999px; background-color: var(--off-white); overflow: hidden; }
.gc-bar i { display: block; height: 100%; border-radius: 999px; background-color: var(--blue-600); }
.gc-amts { display: flex; flex-wrap: wrap; gap: 8px; }
.gc-amt { padding: 7px 12px; border-radius: 10px; border: 1px solid var(--stroke-color); font-size: 13px; color: var(--gray-color); }
.gc-amt.on { background-color: var(--blue-600); border-color: transparent; color: var(--white); font-weight: var(--fw-semi-bold); }
.gc-open { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 13px; color: var(--gray-color); }
.gc-input {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 10px 12px; border-radius: 10px; border: 1px solid var(--stroke-color); background-color: var(--card-bg);
  font-size: 13px; font-weight: var(--fw-semi-bold); letter-spacing: .08em; color: var(--dark-green);
}
.gc-input svg { flex: none; width: 16px; height: 16px; color: var(--blue-600); }
.cm-rowline { display: flex; justify-content: space-between; align-items: center; gap: 12px; }

/* ---------- Card issuing: concept card face ---------- */
.ci-face {
  display: flex; flex-direction: column; justify-content: space-between; gap: 26px;
  padding: 24px; border-radius: 16px; color: var(--white); aspect-ratio: 8 / 5;
  background-image: linear-gradient(140deg, var(--dark-green-2) 0%, var(--dark-green) 45%, var(--blue-600) 100%);
}
.ci-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.ci-chip { display: block; flex: none; width: 36px; height: 27px; border-radius: 6px; background-image: linear-gradient(140deg, var(--blue-400), var(--paste-color)); }
.ci-kind { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--paste-color); }
.ci-num { font-size: 20px; letter-spacing: .16em; font-weight: var(--fw-medium); }
.ci-foot { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; }
.ci-holder { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--paste-color); }
.ci-holder b { display: block; margin-top: 4px; font-size: 14px; letter-spacing: 0; text-transform: none; color: var(--white); }
.ci-mark { display: inline-flex; flex: none; }
.ci-mark i { display: block; width: 24px; height: 24px; border-radius: 50%; background-color: rgba(255,255,255,.38); }
.ci-mark i + i { margin-left: -10px; background-color: rgba(255,255,255,.72); }

/* ---------- Card issuing controls ---------- */
.ci-ctl { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--stroke-color); }
.ci-ctl-main { display: flex; align-items: center; gap: 12px; }
.ci-ctl-main > svg { flex: none; width: 20px; height: 20px; color: var(--blue-600); }
.ci-ctl-name { display: block; font-size: 13px; font-weight: var(--fw-medium); color: var(--dark-green); }
.ci-ctl-sub { display: block; font-size: 11px; line-height: 16px; color: var(--gray-color); }
.ci-toggle { position: relative; flex: none; width: 36px; height: 20px; border-radius: 999px; background-color: var(--blue-600); }
.ci-toggle::after { content: ""; position: absolute; top: 3px; right: 3px; width: 14px; height: 14px; border-radius: 50%; background-color: var(--white); }
.ci-toggle.off { background-color: var(--off-white); }
.ci-toggle.off::after { left: 3px; right: auto; }

/* ---------- Download: devices ---------- */
.dl-phone { width: 100%; max-width: 258px; margin: 0 auto; padding: 8px; border-radius: 34px; background-color: var(--dark-green); }
.dl-screen { position: relative; padding: 14px 12px 16px; border-radius: 27px; background-color: var(--white); overflow: hidden; }
.dl-notch { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); width: 74px; height: 16px; border-radius: 999px; background-color: var(--dark-green); }
.dl-status { display: flex; justify-content: space-between; align-items: center; margin-top: 22px; font-size: 11px; font-weight: var(--fw-semi-bold); color: var(--dark-green); }
.dl-daylabel { margin-top: 14px; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--gray-light); }
.dl-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--stroke-color); }
.dl-row:last-child { border-bottom: 0; }
.dl-row-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
.dl-row-title { display: block; font-size: 12px; font-weight: var(--fw-medium); color: var(--dark-green); }
.dl-row-date { display: block; font-size: 10px; color: var(--gray-color); }
.dl-row-amt { flex: none; font-size: 12px; font-weight: var(--fw-semi-bold); color: var(--blue-700); }
.dl-win-bar { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--stroke-color); background-color: var(--card-bg); }
.dl-dots { display: inline-flex; gap: 5px; margin-right: 6px; }
.dl-dots i { width: 9px; height: 9px; border-radius: 50%; background-color: var(--off-white); }
.dl-tab { padding: 4px 10px; border-radius: 7px; font-size: 11px; color: var(--gray-color); }
.dl-tab.on { background-color: var(--white); color: var(--dark-green); font-weight: var(--fw-semi-bold); box-shadow: var(--shadow-skeu-soft); }

/* Store buttons, drawn in CSS — no third-party badge artwork */
.store-btns { display: flex; flex-wrap: wrap; gap: 10px; width: 100%; margin-top: auto; padding-top: 6px; }
.store-btn {
  display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px;
  border: 1px solid var(--stroke-color); border-radius: var(--btn-radius);
  background-color: var(--white); box-shadow: var(--shadow-skeu-soft);
  transition: background-color .2s ease, border-color .2s ease, transform .2s ease;
}
.store-btn:hover { background-color: #fafafa; border-color: #a3a3a3; }
.store-btn:active { transform: translateY(1px); }
.store-btn svg { flex: none; width: 22px; height: 22px; color: var(--dark-green); }
.store-btn-top { display: block; font-size: 10px; letter-spacing: .07em; text-transform: uppercase; line-height: 14px; color: var(--gray-color); }
.store-btn-main { display: block; font-size: 15px; line-height: 20px; font-weight: var(--fw-semi-bold); color: var(--dark-green); }
.store-btn.is-soon { opacity: .7; pointer-events: none; }
.cm-plat { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.cm-plat-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: 30px; border: 1px solid var(--stroke-color); border-radius: 16px; background-color: var(--white);
}
.cm-plat-head { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.cm-plat-head h3 { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; color: var(--dark-green); }
.cm-plat-card > p { color: var(--gray-color); }

/* ---------- Closing CTA (rules copied from css/pages/home.css) ---------- */

/* ---------- Responsive ---------- */
@media (max-width: 991px) {
  .cm-stage { grid-template-columns: 1fr; margin-top: 48px; }
  .cm-grid, .cm-flow, .cm-xlinks, .cm-aud { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cm-split, .cm-waitlist { grid-template-columns: 1fr; gap: 40px; }
  .cm-split.flip .cm-split-media { order: 0; }
  .cm-card, .cm-flow-step, .cm-plat-card, .cm-aud-card { padding: 24px; }
  .cm-waitlist-card { padding: 28px; }
  .cm-banner-head { max-width: 640px; }
}
@media (max-width: 767px) {
  .cm-grid, .cm-flow, .cm-xlinks, .cm-aud, .cm-plat { grid-template-columns: 1fr; }
  .cm-stage-col { padding: 18px; }
  .cm-banner-cta { width: 100%; }
  .cm-banner-cta > a { flex: 1 1 auto; justify-content: center; }
  .form.cm-form { grid-template-columns: 1fr; }
  .cm-note { margin-top: 24px; }
}
@media (max-width: 479px) {
  .cm-card, .cm-flow-step, .cm-plat-card, .cm-aud-card, .cm-xlink { padding: 20px; }
  .cm-waitlist-card { padding: 22px; }
  .cm-kpis { grid-template-columns: 1fr; }
  .gc-value { font-size: 32px; }
  .cm-table th, .cm-table td { padding: 9px 12px; }
  .cm-mock-head, .cm-mock-row, .cm-mock-body, .ci-ctl { padding-left: 12px; padding-right: 12px; }
  .store-btns { flex-direction: column; }
  .store-btn { width: 100%; }
}
