/* Modern Wealth checkout — WHITE CARD on the dark page backdrop.
   Palette: card #FFFFFF, near-black text #16181B, muted grey #6B7076,
   light grey borders #E3E6E9 (#D6DADF on fields), summary tint #F4F5F7.
   Lime #9CFE00 appears ONLY on: the pay button, the active step pill,
   the bump cards' dotted borders/pills/arrows, the summary card border,
   the total row's dotted rule, the testimonial stars, and the Edit
   underline. Lime always carries near-black text — never white. */

.mw-overlay{
  position:fixed; inset:0; z-index:99999;
  display:none; align-items:center; justify-content:center;
  background:rgba(0,0,0,.78);
  -webkit-overflow-scrolling:touch;
}
.mw-overlay.mw-open{ display:flex; }

.mw-modal{
  position:relative;
  width:900px; max-width:calc(100vw - 2rem);
  max-height:92dvh; overflow-y:auto; overscroll-behavior:contain;
  background:#FFFFFF; color:#16181B;
  border:1px solid rgba(0,0,0,.06); border-radius:20px;
  box-shadow:0 24px 80px rgba(0,0,0,.55), 0 6px 24px rgba(0,0,0,.35);
  padding:1.9rem 2.1rem 2.4rem;
  font-family:'Proxima Nova','Proxima Nova Rg',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif;
}
/* Mobile: inset card framed by the dark backdrop — no longer edge-to-edge.
   The card scrolls inside the frame. 100dvh, never 100vh. */
@media (max-width:640px){
  .mw-overlay.mw-open{ align-items:center; padding:.9rem; }
  .mw-modal{
    width:100%; max-width:none;
    max-height:calc(100dvh - 1.8rem);
    border-radius:16px;
    padding:1.4rem 1.15rem 4.5rem; /* bottom room so the pay button clears the keyboard */
  }
}
.mw-hidden{ display:none !important; }

/* ---- card header: wordmark + secure line, on white ---- */
.mw-card-head{
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; padding-right:2.4rem; /* clear of the modal close button */
  margin-bottom:1.5rem;
}
.mw-card-logo{ display:inline-flex; align-items:center; gap:.4rem; }
/* TMR Black wordmark (621x160 native; ink ~22.6px tall at 2rem — the
   size of the retired live-text lockup; 2x screens use 64 of 160 native
   px, no upscale) */
.mw-card-logo img{ height:2rem; width:auto; display:block; }
.mw-card-secure{
  display:inline-flex; align-items:center; gap:.4rem;
  color:#6B7076; font-size:.8rem; font-weight:600;
}

.mw-close{
  position:absolute; top:.9rem; right:.9rem;
  width:2.2rem; height:2.2rem; border:none; border-radius:50%;
  background:#EEF0F2; color:#16181B; font-size:1.1rem; line-height:1;
  cursor:pointer;
}
.mw-close:hover{ background:#E3E6E9; }

/* step 1 stays a narrow centered column inside the wide card */
.mw-step1{ max-width:26.5rem; margin:0 auto; }

.mw-title{ font-weight:800; font-size:1.35rem; text-transform:uppercase; text-align:center; margin:0 0 .4rem; color:#16181B; }
.mw-sub{ text-align:center; color:#6B7076; font-size:.9rem; margin:0 0 1.6rem; }

/* ---- step indicator: active step is the lime pill ---- */
.mw-stepper{
  display:flex; align-items:center; gap:.5rem; margin-bottom:1.5rem;
}
.mw-step-dot{
  width:1.5rem; height:1.5rem; border-radius:50%; flex:none;
  display:flex; align-items:center; justify-content:center;
  border:1.5px solid #C6CBD1; color:#6B7076;
  font-size:.72rem; font-weight:700;
}
.mw-step-lbl{
  color:#6B7076; font-size:.72rem; font-weight:700;
  letter-spacing:.09em; text-transform:uppercase;
}
.mw-step-dot.mw-here{ background:#9CFE00; border-color:#9CFE00; color:#000; }
.mw-step-lbl.mw-here{ color:#16181B; }
.mw-step-dot.mw-done{ background:#16181B; border-color:#16181B; color:#fff; }
.mw-step-lbl.mw-done{ color:#6B7076; }
.mw-step-line{ flex:1; height:1px; background:#E3E6E9; }

/* ---- collapsed contact summary ---- */
.mw-contact-sum{
  display:flex; align-items:center; gap:.7rem;
  background:#F4F5F7; border:1px solid #E3E6E9; border-radius:10px;
  padding:.65rem .85rem; margin-bottom:1.1rem;
}
.mw-contact-line{
  flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:#16181B; font-size:.88rem;
}
.mw-contact-sum button{
  background:none; border:none; padding:0; cursor:pointer;
  color:#16181B; font-family:inherit; font-size:.82rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em;
  text-decoration:underline; text-decoration-color:#9CFE00; text-decoration-thickness:2px;
  text-underline-offset:3px;
}
.mw-contact-sum button:hover{ text-decoration-thickness:3px; }

/* ---- step 2 layout: summary is first in the DOM (historical), but
        mobile shows the PAYMENT column first via flex order; desktop
        places columns by grid area (pay LEFT, summary right) ---- */
.mw-step2{ display:none; }
/* Mobile stacking flipped (owner, 2026-08-18): PAYMENT column first,
   summary below. CSS order only, so the desktop grid (area-based,
   unaffected by DOM order) cannot change. The summary has no focusable
   elements, so visual-vs-DOM order costs nothing for tab order. */
.mw-step2.mw-active{ display:flex; flex-direction:column; }
.mw-col-pay{ order:1; }
.mw-col-summary{ order:2; }
@media (min-width:760px){
  .mw-step2.mw-active{
    display:grid;
    grid-template-areas: "pay summary";
    grid-template-columns: 1.05fr .95fr;
    gap:2rem; align-items:start;
  }
  .mw-col-pay{ grid-area:pay; }
  .mw-col-summary{ grid-area:summary; position:sticky; top:0; }
}

/* ---- order summary column: light grey tint panel ---- */
.mw-col-summary{
  background:#F4F5F7; border:1px solid #E3E6E9; border-radius:14px;
  padding:1.15rem 1.15rem 1.25rem;
  margin-top:1.6rem; /* below the payment column on mobile */
}
@media (min-width:760px){ .mw-col-summary{ margin-top:0; } }
/* TMR Checkout.psd summary (owner, 2026-08-18). All design-mapped
   values are PX (PSD ÷ 2.053) so the modal (rem 20.74) and standalone
   (rem 16) mounts render the design identically. */
.mw-sum-card{
  background:#FFFFFF; border:2px solid #9CFE00; border-radius:12px;
  padding:22px 30px 26px;
}
.mw-sum-brand{
  margin:0 0 14px; text-align:center; color:#000;
  font-weight:700; font-size:15px;
}
.mw-sum-collage{ display:block; margin:0 auto 6px; width:243px; max-width:100%; height:auto; }
.mw-sum-includes{ list-style:none; margin:16px 0 0; padding:0; }
.mw-sum-includes li{ margin-bottom:13px; }
.mw-sum-includes li:last-child{ margin-bottom:0; }
.mw-inc-t{ display:block; font-weight:700; font-size:12px; color:#000; }
.mw-inc-d{ margin:2px 0 0; font-weight:400; font-size:10px; line-height:1.35; color:#000; }
/* testimonial cards (PSD): reviews-slider tone on the summary rail */
.mw-sum-testi{
  background:#222223; border-radius:12px; color:#FFF;
  padding:13px 16px 15px; margin-top:25px;
}
.mw-testi-row{ display:flex; justify-content:space-between; align-items:baseline; }
.mw-testi-row b{ font-weight:700; font-size:12px; }
.mw-testi-row i{ font-style:normal; font-weight:500; font-size:12px; }
.mw-testi-stars{ display:block; width:93px; height:auto; margin:8px 0 10px; }
.mw-sum-testi p{ margin:0 0 10px; font-weight:700; font-size:12px; line-height:1.45; }
.mw-sum-testi p:last-child{ margin-bottom:0; }

/* ---- bump cards: TMR Checkout.psd template (owner, 2026-08-18) ----
   In the PAYMENT column between the fields and the CTA. Both bumps get
   the identical pill — the "Recommended add-on" variant is retired.
   PX values = PSD ÷ 2.053. Checked state (not drawn in the PSD — the
   design's own vocabulary): dotted border goes solid lime, the YES row
   border goes lime, the native checkbox fills lime (accent-color). */
.mw-bump{
  position:relative; display:block;
  background:#F4F5F7; border:2px dotted #9CFE00; border-radius:12px;
  padding:24px 26px 18px; margin-top:34px; cursor:pointer;
}
#mw-bumps{ margin-top:28px; }
.mw-bump-pill{
  position:absolute; top:-11px; left:33px;
  background:#9CFE00; color:#000; border-radius:999px;
  padding:2px 21px; font-size:15px; font-weight:800; letter-spacing:.01em;
}
.mw-bump-row{ display:flex; justify-content:space-between; align-items:baseline; gap:.8rem; }
.mw-bump-name{ font-weight:700; font-size:17px; color:#000; }
.mw-bump-prices{ white-space:nowrap; font-size:17px; }
.mw-bump-prices s{ color:#9BA1A8; margin-right:.25rem; font-weight:500; }
.mw-bump-prices b{ color:#000; font-weight:700; }
.mw-bump-benefit{
  display:block; margin-top:10px; color:#000; font-weight:500;
  font-size:14px; line-height:1.4;
}
.mw-bump-add{
  display:flex; align-items:center; gap:10px; margin-top:14px;
  background:#FFFFFF; border:1px solid #D9DDE2; border-radius:10px;
  padding:8px 14px; font-size:13px; font-weight:700; color:#000;
}
.mw-bump-arrow{
  flex:none; width:17px; height:13px; background:#9CFE00;
  clip-path:polygon(0 33%, 52% 33%, 52% 8%, 100% 50%, 52% 92%, 52% 67%, 0 67%);
}
.mw-bump-add input{
  width:15px; height:15px; accent-color:#9CFE00; flex:none; margin:0;
}
.mw-bump.mw-on{ border-style:solid; }
.mw-bump.mw-on .mw-bump-add{ border-color:#9CFE00; }

/* ---- Apple Pay / Google Pay (Express Checkout) ---- */
.mw-wallet-zone[hidden]{ display:none; }
.mw-wallet-wrap{ position:relative; margin-bottom:.35rem; }
.mw-or-divider{
  display:flex; align-items:center; gap:.8rem;
  margin:.9rem 0 1rem; color:#6B7076;
  font-size:.8rem; letter-spacing:.04em; text-transform:uppercase;
}
.mw-or-divider::before, .mw-or-divider::after{
  content:''; flex:1; height:1px; background:#E3E6E9;
}

/* ---- tabs: near-black active border, no lime ---- */
.mw-tabs{ display:flex; gap:.6rem; margin:0 0 1rem; }
.mw-tab{
  flex:1; padding:.7rem; border-radius:var(--btn-r);
  background:#FFFFFF; color:#6B7076; border:1.5px solid #D6DADF;
  font-family:inherit; font-weight:700; font-size:.95rem; cursor:pointer;
}
.mw-tab:hover{ border-color:#9BA1A8; }
.mw-tab.mw-active{ border-color:#16181B; color:#16181B; }

/* ---- form fields: white, light grey borders, near-black focus ring ---- */
.mw-field{ margin-bottom:.95rem; }
.mw-field label{ display:block; font-size:.8rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#6B7076; margin-bottom:.35rem; }
.mw-field input{
  width:100%; box-sizing:border-box;
  background:#FFFFFF; color:#16181B;
  border:1px solid #D6DADF; border-radius:10px;
  padding:.85rem .9rem;
  font-size:16px; /* ≥16px prevents iOS focus zoom */
  font-family:inherit;
}
.mw-field input:focus{
  outline:none; border-color:#16181B;
  box-shadow:0 0 0 3px rgba(22,24,27,.12);
}
.mw-field .mw-field-err{ color:#B3261E; font-size:.8rem; margin-top:.3rem; display:none; }
.mw-field.mw-invalid input{ border-color:#E5484D; }
.mw-field.mw-invalid .mw-field-err{ display:block; }

.mw-row{ display:flex; gap:.8rem; }
.mw-row .mw-field{ flex:1; }

/* ---- buttons: lime with near-black text (never white on lime) ---- */
.mw-btn{
  display:flex; align-items:center; justify-content:center; gap:.6rem;
  width:100%; min-height:3.2rem;
  background:var(--btn-grad, #9CFE00); color:#000;
  border:none; border-radius:var(--btn-r);
  box-shadow:var(--btn-fx-card);
  font-family:inherit; font-weight:700; font-size:1rem; letter-spacing:.02em; text-transform:uppercase;
  cursor:pointer; transition:transform .15s ease, filter .15s ease;
}
.mw-btn:hover{ transform:translateY(-1px); filter:brightness(1.03); }
.mw-btn[disabled]{ opacity:.5; cursor:not-allowed; transform:none; }
.mw-btn .mw-tri{
  width:0; height:0; border-top:.5rem solid transparent;
  border-bottom:.5rem solid transparent; border-left:.85rem solid #000;
}
.mw-guarantee{ text-align:center; color:#6B7076; font-size:.8rem; font-weight:500; margin-top:.9rem; }

.mw-error{
  display:none; background:#FDECEC; border:1px solid #E5484D; color:#B3261E;
  border-radius:10px; padding:.8rem .9rem; font-size:.9rem; margin:.9rem 0 0;
  word-break:break-word;
}
.mw-error.mw-show{ display:block; }

/* passive consent line (owner, 2026-08-18): small, muted, non-blocking,
   beneath the pay button. The required checkbox + covers are gone; the
   server-side consent record is unchanged. */
.mw-agree{
  margin:.65rem 0 0; text-align:center;
  font-size:.72rem; line-height:1.45; color:#9AA0A6;
}
.mw-agree a{ color:#6B7076; text-decoration:underline; }
.mw-agree a:hover{ color:#16181B; }

.mw-paypal-wrap{ position:relative; }

.mw-pane{ display:none; }
.mw-pane.mw-active{ display:block; }
#mw-payment-element{ min-height:120px; }
#mw-paypal-buttons{ min-height:120px; color-scheme:none; }

 /* live total (owner addition 2026-08-18): payment column, directly
   above the CTA; dotted lime top rule = the bump cards' vocabulary */
.mw-total{
  display:flex; justify-content:space-between; align-items:baseline;
  border-top:2px dotted #9CFE00; margin:28px 0 0; padding-top:13px;
  font-weight:700; font-size:17px; color:#000;
}
.mw-total .mw-total-num{ color:#000; font-size:21px; font-weight:700; }

.mw-pay-btn{
  margin-top:16px; min-height:68px; font-size:21px;
}
/* what the card form still needs (2026-09-28): shown only while the pay
   button is dimmed for an incomplete card form */
.mw-pay-hint{ margin:.55rem 0 0; text-align:center; font-size:.8rem; line-height:1.4; color:#6B7076; }
.mw-pay-hint[hidden]{ display:none; }

/* trust-badge row (PSD Layer 6, exported checkout-trust.png) */
.mw-trust{ display:block; margin:14px auto 0; width:214px; height:auto; }

.mw-loading{ text-align:center; color:#6B7076; padding:1rem 0; font-size:.9rem; }

/* Standalone page shell (checkout/index.html): dark page, white card centered */
.mw-standalone-wrap{ min-height:100dvh; background:#000; padding:2.5rem 1rem 4rem; box-sizing:border-box; }
.mw-standalone-wrap .mw-modal{ margin:0 auto; }
@media (max-width:640px){
  .mw-standalone-wrap{ padding:.9rem; }
}

body.mw-locked{ position:fixed; left:0; right:0; width:100%; overflow:hidden; }
