/* Moss & Fog Media Signup
   One card, four skins. Each theme sets tokens; the layout is shared.
   Every card carries its own background and text colour so it survives any host theme. */

.mfms-card,
.mfms-overlay {
  --mf-bg: #0a1628;
  --mf-bg2: #0f2044;
  --mf-ink: #f2f2f2;
  --mf-ink2: rgba(255,255,255,.72);
  --mf-ink3: rgba(255,255,255,.56);
  --mf-kicker: #60a5fa;
  --mf-accent: #3b82f6;
  --mf-accent-hover: #2563eb;
  --mf-accent-ink: #ffffff;
  --mf-line: rgba(255,255,255,.10);
  --mf-input-bg: #060f22;
  --mf-input-line: rgba(255,255,255,.14);
  --mf-rule: linear-gradient(90deg,#1d4ed8,#3b82f6,#60a5fa);
  --mf-radius: 12px;
  --mf-font: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mf-head: var(--mf-font);
  --mf-label: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --mf-head-weight: 800;
  --mf-head-track: -.03em;
  --mf-kicker-track: .16em;
  --mf-btn-radius: 6px;
  --mf-scrim: rgba(4,8,20,.72);
}

/* Electric Future: navy newsletter band, blue rule, gold reserved for tools. */
.mfms-theme-ef { }

/* The Window Seat: dark olive panel, cream text, yellow kicker and button. */
.mfms-theme-ws {
  --mf-bg: #353018; --mf-bg2: #353018;
  --mf-ink: #f8f6ec; --mf-ink2: rgba(248,246,236,.80); --mf-ink3: rgba(248,246,236,.62);
  --mf-kicker: #f5d63d;
  --mf-accent: #f5d63d; --mf-accent-hover: #ffe45c; --mf-accent-ink: #353018;
  --mf-line: rgba(248,246,236,.20);
  --mf-input-bg: #2a2612; --mf-input-line: rgba(248,246,236,.28);
  --mf-rule: linear-gradient(90deg,#f5d63d,#f5d63d);
  --mf-radius: 4px;
  --mf-font: "Chakra Petch", system-ui, sans-serif;
  --mf-head: "Formera", Georgia, serif;
  --mf-label: "Chakra Petch", system-ui, sans-serif;
  --mf-head-weight: 400; --mf-head-track: -.01em; --mf-kicker-track: .16em;
  --mf-btn-radius: 2px;
  --mf-scrim: rgba(53,48,24,.70);
}

/* Whole Earth Home: warm paper, deep teal ink, DM Sans. */
.mfms-theme-weh {
  --mf-bg: #F6F4ED; --mf-bg2: #F6F4ED;
  --mf-ink: #002A32; --mf-ink2: rgba(0,42,50,.80); --mf-ink3: rgba(0,42,50,.62);
  --mf-kicker: #002A32;
  --mf-accent: #002A32; --mf-accent-hover: #0b3d46; --mf-accent-ink: #F6F4ED;
  --mf-line: rgba(0,42,50,.16);
  --mf-input-bg: #ffffff; --mf-input-line: rgba(0,42,50,.28);
  --mf-rule: linear-gradient(90deg,#002A32,#002A32);
  --mf-radius: 8px;
  --mf-font: "DM Sans", system-ui, sans-serif;
  --mf-head: "DM Sans", system-ui, sans-serif;
  --mf-label: "DM Sans", system-ui, sans-serif;
  --mf-head-weight: 500; --mf-head-track: -.02em; --mf-kicker-track: .14em;
  --mf-btn-radius: 999px;
  --mf-scrim: rgba(0,42,50,.55);
}

/* Solarly (Photon): paper, graphite, the gold rule. */
.mfms-theme-sol {
  --mf-bg: #FCFCFB; --mf-bg2: #FCFCFB;
  --mf-ink: #1B1E19; --mf-ink2: #40463C; --mf-ink3: #5B6356;
  --mf-kicker: #1B1E19;
  --mf-accent: #F5BE0B; --mf-accent-hover: #FFC83D; --mf-accent-ink: #1B1E19;
  --mf-line: #D3D7CB;
  --mf-input-bg: #F1F2ED; --mf-input-line: #1B1E19;
  --mf-rule: linear-gradient(90deg,#F5BE0B,#F5BE0B);
  --mf-radius: 6px;
  --mf-font: "Newsreader", Georgia, serif;
  --mf-head: "Bricolage Grotesque", "Helvetica Neue", Arial, sans-serif;
  --mf-label: "Bricolage Grotesque", "Helvetica Neue", Arial, sans-serif;
  --mf-head-weight: 700; --mf-head-track: -.02em; --mf-kicker-track: .12em;
  --mf-btn-radius: 4px;
  --mf-scrim: rgba(27,30,25,.60);
}

/* ---------- overlay: the entrance and the exit ----------
   The same easing the sites use for hovers, so the modal feels like the page itself moving.
   Enter: scrim fades in, the card rises and settles, the accent rule draws across the top,
   then the contents step in one after another. Exit: contents fade, the card sinks, the scrim lifts. */
.mfms-overlay {
  --mf-ease: cubic-bezier(.4,0,.2,1);
  --mf-ease-out: cubic-bezier(.16,1,.3,1);
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: flex-end; justify-content: center;
  padding: 0; background: var(--mf-scrim);
  opacity: 0; transition: opacity .32s var(--mf-ease);
  -webkit-backdrop-filter: blur(0px); backdrop-filter: blur(0px);
}
.mfms-overlay.is-open { opacity: 1; -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); transition: opacity .32s var(--mf-ease), backdrop-filter .5s var(--mf-ease), -webkit-backdrop-filter .5s var(--mf-ease); }
.mfms-overlay.is-closing { opacity: 0; transition: opacity .26s var(--mf-ease) .08s; -webkit-backdrop-filter: blur(0px); backdrop-filter: blur(0px); }
.mfms-overlay[hidden] { display: none; }
@media (min-width: 640px) { .mfms-overlay { align-items: center; padding: 24px; } }

.mfms-dialog {
  position: relative; width: 100%; max-width: 560px;
  opacity: 0; transform: translateY(40px) scale(.98);
  transition: transform .55s var(--mf-ease-out), opacity .3s var(--mf-ease);
  will-change: transform, opacity;
}
.mfms-overlay.is-open .mfms-dialog { opacity: 1; transform: none; }
.mfms-overlay.is-closing .mfms-dialog { opacity: 0; transform: translateY(18px) scale(.985); transition: transform .26s var(--mf-ease), opacity .2s var(--mf-ease); }

/* The accent rule draws in from the left once the card has landed. */
.mfms-overlay .mfms-card::before { transform: scaleX(0); transform-origin: left center; transition: transform .6s var(--mf-ease) .18s; }
.mfms-overlay.is-open .mfms-card::before { transform: scaleX(1); }

/* Contents step in: each child a beat after the last. */
.mfms-overlay .mfms-card > * { opacity: 0; transform: translateY(10px); transition: opacity .4s var(--mf-ease), transform .5s var(--mf-ease-out); }
.mfms-overlay.is-open .mfms-card > * { opacity: 1; transform: none; }
.mfms-overlay.is-open .mfms-card > :nth-child(1) { transition-delay: .16s }
.mfms-overlay.is-open .mfms-card > :nth-child(2) { transition-delay: .21s }
.mfms-overlay.is-open .mfms-card > :nth-child(3) { transition-delay: .26s }
.mfms-overlay.is-open .mfms-card > :nth-child(4) { transition-delay: .31s }
.mfms-overlay.is-open .mfms-card > :nth-child(5) { transition-delay: .36s }
.mfms-overlay.is-open .mfms-card > :nth-child(6) { transition-delay: .41s }
.mfms-overlay.is-open .mfms-card > :nth-child(7) { transition-delay: .46s }
.mfms-overlay.is-closing .mfms-card > * { opacity: 0; transform: translateY(6px); transition: opacity .16s var(--mf-ease), transform .2s var(--mf-ease); transition-delay: 0s !important; }
/* Hidden blocks (the success panel before it is needed) stay hidden regardless. */
.mfms-overlay .mfms-card > [hidden] { display: none !important; }

.mfms-close {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 40px; height: 40px; border: 0; border-radius: 999px;
  background: transparent; color: var(--mf-ink2);
  font: 400 26px/1 var(--mf-font); cursor: pointer;
  transition: background .18s var(--mf-ease), color .18s var(--mf-ease), transform .28s var(--mf-ease);
}
.mfms-close:hover, .mfms-close:focus-visible { color: var(--mf-ink); background: var(--mf-line); outline: none; transform: rotate(90deg); }
html.mfms-lock { overflow: hidden; }

/* ---------- card ---------- */
.mfms-card {
  position: relative; box-sizing: border-box;
  background: linear-gradient(135deg, var(--mf-bg), var(--mf-bg2));
  color: var(--mf-ink) !important;
  border: 1px solid var(--mf-line);
  border-radius: var(--mf-radius);
  padding: 30px 28px 26px;
  font-family: var(--mf-font);
  text-align: left;
  overflow: hidden;
}
.mfms-card::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: var(--mf-rule);
}
.mfms-v-modal { border-radius: var(--mf-radius) var(--mf-radius) 0 0; padding-top: 34px; }
@media (min-width: 640px) { .mfms-v-modal { border-radius: var(--mf-radius); padding: 38px 40px 32px; } }
.mfms-card * { box-sizing: border-box; }
.mfms-card .mfms-logo {
  display: block; height: 44px; width: auto; max-width: 220px; object-fit: contain;
  margin: 0 0 14px; border-radius: 9px;
}
.mfms-theme-weh .mfms-logo { height: 84px; margin: -14px 0 4px -10px; border-radius: 0; }
.mfms-theme-sol .mfms-logo { height: 44px; border-radius: 0; }
.mfms-theme-ws .mfms-logo { border-radius: 0; }
.mfms-card .mfms-kicker {
  font-family: var(--mf-label); font-weight: 700; font-size: 12px;
  text-transform: uppercase; letter-spacing: var(--mf-kicker-track);
  color: var(--mf-kicker) !important; margin: 0 0 10px;
}
.mfms-card .mfms-h {
  font-family: var(--mf-head); font-weight: var(--mf-head-weight);
  font-size: clamp(24px, 4.6vw, 32px); line-height: 1.12; letter-spacing: var(--mf-head-track);
  color: var(--mf-ink) !important; margin: 0 0 12px; padding: 0;
}
.mfms-card .mfms-body {
  font-size: 16px; line-height: 1.55; color: var(--mf-ink2) !important; margin: 0 0 10px;
}
.mfms-card .mfms-offer {
  font-size: 14px; line-height: 1.5; color: var(--mf-ink3) !important;
  margin: 0 0 18px; padding-top: 12px; border-top: 1px solid var(--mf-line);
}
.mfms-form { margin: 0; }
.mfms-row { display: flex; gap: 8px; flex-wrap: wrap; }
.mfms-input {
  flex: 1 1 200px; min-width: 0; height: 48px; padding: 0 14px;
  font: 500 16px/1 var(--mf-font); color: var(--mf-ink);
  background: var(--mf-input-bg); border: 1px solid var(--mf-input-line);
  border-radius: var(--mf-btn-radius); outline: none;
  -webkit-appearance: none; appearance: none;
}
.mfms-input::placeholder { color: var(--mf-ink3); }
.mfms-input:focus { border-color: var(--mf-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--mf-accent) 28%, transparent); }
.mfms-btn {
  flex: 0 0 auto; height: 48px; padding: 0 20px; border: 0; cursor: pointer;
  font: 700 15px/1 var(--mf-font); color: var(--mf-accent-ink) !important;
  background: var(--mf-accent); border-radius: var(--mf-btn-radius);
  display: inline-flex; align-items: center; justify-content: center; text-decoration: none;
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
  white-space: nowrap;
}
.mfms-btn:hover, .mfms-btn:focus-visible {
  background: var(--mf-accent-hover); transform: translateY(-1px);
  box-shadow: 0 0 0 1px var(--mf-accent), 0 6px 18px color-mix(in srgb, var(--mf-accent) 35%, transparent);
  outline: none;
}
.mfms-btn[disabled] { opacity: .7; cursor: default; transform: none; }
.mfms-btn-link { margin-top: 4px; }
@media (max-width: 480px) { .mfms-row .mfms-btn { flex: 1 1 100%; } }
.mfms-fine { font-size: 12.5px; color: var(--mf-ink3) !important; margin-top: 10px; }
.mfms-msg { font-size: 13.5px; color: var(--mf-ink); margin-top: 8px; min-height: 0; }
.mfms-msg:empty { display: none; }
.mfms-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.mfms-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.mfms-success[hidden] { display: none; }
.mfms-card.is-done > :not(.mfms-success) { display: none; }

/* ---------- inline and gate placements ---------- */
.mfms-inline-wrap, .mfms-gate { margin: 32px 0; }
.mfms-gate .mfms-card { padding: 34px 32px 30px; }

/* ---------- motion respect ---------- */
@media (prefers-reduced-motion: reduce) {
  .mfms-overlay, .mfms-dialog, .mfms-btn, .mfms-close,
  .mfms-overlay .mfms-card::before, .mfms-overlay .mfms-card > * { transition: none !important; }
  .mfms-dialog, .mfms-overlay .mfms-card > * { transform: none; }
  .mfms-overlay.is-open .mfms-card::before { transform: none; }
}
