/* ============================================================
   SudsBot — shared styles
   Loaded by every page. Page-specific rules stay in each page's
   own <style> block, which is placed AFTER this file so it wins.
   ============================================================ */

:root{
  --navy:#0a2733;
  --text:#1c3a47;
  --muted:#5c7c8a;
  --aqua:#12a5cf;
  --aqua-deep:#0b7fa3;
  --aqua-soft:#e3f6fc;
  --mint:#7fd6ae;
  --mint-soft:#e8f8f0;
  --page:#f7fbfd;
  --card:#ffffff;
  --line:#dce9ef;
  --shadow:0 18px 50px -20px rgba(10,60,80,.35);
  --radius:20px;
  --max:1140px;
}

/* ---------- base ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--text);
  background:var(--page);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
h1,h2,h3{color:var(--navy);letter-spacing:-.02em}
a{color:var(--aqua-deep)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.sr,.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--aqua-deep);background:var(--aqua-soft);
  padding:7px 14px;border-radius:999px;margin-bottom:18px;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font:inherit;font-weight:700;cursor:pointer;border:0;
  padding:15px 30px;border-radius:999px;text-decoration:none;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.btn-primary{
  background:linear-gradient(135deg,var(--aqua) 0%,var(--aqua-deep) 100%);
  color:#fff;box-shadow:0 12px 26px -10px rgba(11,127,163,.75);
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 18px 34px -12px rgba(11,127,163,.8)}
.btn-ghost{background:#fff;color:var(--navy);border:1.5px solid var(--line)}
.btn-ghost:hover{border-color:var(--aqua);color:var(--aqua-deep)}
.btn-sm{padding:11px 22px;font-size:.92rem}
.btn-block{width:100%}
.btn:disabled{opacity:.72;cursor:progress;transform:none;box-shadow:none}

/* ---------- header / nav ---------- */
header{
  position:sticky;top:0;z-index:40;
  background:rgba(247,251,253,.86);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.nav{display:flex;align-items:center;justify-content:space-between;height:70px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--navy);font-size:1.12rem;letter-spacing:-.02em;text-decoration:none}
.logo-mark{
  width:32px;height:32px;border-radius:10px;flex:none;
  background:linear-gradient(135deg,var(--aqua),var(--mint));
  display:grid;place-items:center;color:#fff;font-size:1rem;
}
/* one flex item, so the brand always reads as a single word */
.logo-text{white-space:nowrap}
.logo-accent{color:var(--aqua);font-weight:800}
.nav-links{display:flex;align-items:center;gap:28px}
.nav-links a:not(.btn){color:var(--muted);text-decoration:none;font-weight:600;font-size:.94rem}
.nav-links a:not(.btn):hover{color:var(--aqua-deep)}
.nav-links a.btn-primary{color:#fff;text-decoration:none}
@media(max-width:820px){.nav-links a:not(.btn){display:none}}

/* ---------- breadcrumb ---------- */
.crumb{font-size:.85rem;color:var(--muted);margin:0 0 20px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--aqua-deep)}
.crumb span{margin:0 8px;opacity:.5}

/* ---------- footer ---------- */
footer{padding:44px 0 60px;color:var(--muted);font-size:.88rem}
.foot{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:28px}
.foot nav{display:flex;gap:22px;flex-wrap:wrap}
.foot a{color:var(--muted);text-decoration:none}
.foot a:hover{color:var(--aqua-deep)}

/* ---------- notify modal (markup lives in every page; see modal.js) ---------- */
.overlay{
  position:fixed;inset:0;z-index:100;display:none;
  background:rgba(8,38,50,.55);backdrop-filter:blur(4px);
  padding:24px;overflow-y:auto;
}
.overlay.open{display:grid;place-items:center}
.modal{
  background:#fff;border-radius:24px;max-width:470px;width:100%;
  padding:38px 34px 32px;box-shadow:0 30px 80px -20px rgba(0,0,0,.5);
  position:relative;animation:pop .22s ease-out;
}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.close{
  position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;
  border:0;background:#f0f6f9;color:var(--muted);font-size:1.2rem;cursor:pointer;line-height:1;
}
.close:hover{background:#e2eef3;color:var(--navy)}
.modal-badge{
  width:56px;height:56px;border-radius:18px;display:grid;place-items:center;margin-bottom:18px;
  background:var(--mint-soft);color:#2f9c74;
}
.modal-badge svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.modal h2{font-size:1.5rem;line-height:1.15;margin:0 0 .5em}
.modal p{color:var(--muted);font-size:.96rem;margin:0 0 1em}
.field{display:grid;gap:8px;margin:22px 0 14px}
.field label{font-size:.82rem;font-weight:700;color:var(--navy)}
.field input{
  font:inherit;padding:14px 16px;border-radius:12px;border:1.5px solid var(--line);
  background:#fbfdfe;color:var(--text);width:100%;
}
.field input:focus{outline:0;border-color:var(--aqua);box-shadow:0 0 0 4px rgba(18,165,207,.15)}
.field input[aria-invalid="true"]{border-color:#e0776b;background:#fef6f5}
.err{color:#c8503f;font-size:.83rem;min-height:1.1em;margin:0}
.fineprint{font-size:.8rem;color:var(--muted);margin:14px 0 0;text-align:center}

/* ------------------------------------------------------------------
   MailerLite embedded form, restyled to match this site.

   Their injected stylesheet targets an ID (#mlb2-<formId>), so plain
   class selectors lose on specificity even with !important. Every rule
   below therefore leads with #modal and carries one more class than
   theirs. Their generated ID is deliberately NOT hard-coded, since it
   changes if the form is recreated.

   This is the brittle seam: if MailerLite rename their classes, the
   form still works, it just stops matching the site design.
   ------------------------------------------------------------------ */
#modal .ml-embedded{margin-top:22px}

#modal .ml-embedded .ml-form-embedContainer,
#modal .ml-embedded .ml-form-embedContainer .ml-form-align-center,
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper,
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody{
  background:transparent !important;border:0 !important;box-shadow:none !important;
  padding:0 !important;margin:0 !important;width:100% !important;max-width:none !important;
}

/* their heading/description - ours already sits above the form */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedContent{display:none !important}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-formContent{margin:0 !important;padding:0 !important}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-fieldRow{margin:0 !important;padding:0 !important}

/* email field */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-fieldRow input,
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody input.form-control{
  font:inherit !important;width:100% !important;box-sizing:border-box !important;
  padding:14px 16px !important;border-radius:12px !important;
  border:1.5px solid var(--line) !important;background:#fbfdfe !important;
  color:var(--text) !important;height:auto !important;margin:0 !important;
}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-fieldRow input:focus{
  outline:0 !important;border-color:var(--aqua) !important;
  box-shadow:0 0 0 4px rgba(18,165,207,.15) !important;
}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-fieldRow.ml-error input{
  border-color:#e0776b !important;background:#fef6f5 !important;
}

/* reCAPTCHA - centred under the field */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-recaptcha{
  float:none !important;display:flex !important;justify-content:center !important;
  margin:16px 0 0 !important;transform-origin:center;
}
@media(max-width:400px){
  #modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-recaptcha{transform:scale(.86)}
}

/* submit button */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedSubmit{
  margin:16px 0 0 !important;width:100% !important;
}
/* Style BOTH the primary and the loading button, but never touch `display` here:
   MailerLite toggles the two, and forcing display made the spinner permanently
   visible underneath the real button. */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedSubmit button{
  align-items:center !important;justify-content:center !important;
  font:inherit !important;font-weight:700 !important;cursor:pointer !important;
  width:100% !important;border:0 !important;padding:15px 30px !important;
  border-radius:999px !important;height:auto !important;
  background:linear-gradient(135deg,var(--aqua) 0%,var(--aqua-deep) 100%) !important;
  color:#fff !important;box-shadow:0 12px 26px -10px rgba(11,127,163,.75) !important;
  transition:transform .15s ease, box-shadow .15s ease !important;
}
/* only the real button gets laid out; the spinner keeps MailerLite's own
   show/hide behaviour */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedSubmit button.primary{
  display:inline-flex !important;
}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedSubmit button.primary:hover{
  transform:translateY(-2px) !important;
}
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-form-embedSubmit button.loading{
  opacity:.72 !important;cursor:progress !important;
}

/* validation + success */
#modal .ml-embedded .ml-form-embedContainer .ml-form-embedWrapper .ml-form-embedBody .ml-validate-error{color:#c8503f !important;font-size:.83rem !important}
#modal .ml-embedded .ml-form-embedContainer .ml-form-successBody{padding:0 !important;background:transparent !important}
#modal .ml-embedded .ml-form-embedContainer .ml-form-successBody .ml-form-successContent{text-align:center}
#modal .ml-embedded .ml-form-embedContainer .ml-form-successBody .ml-form-successContent h4{color:var(--navy) !important;font-size:1.25rem !important;margin:0 0 .4em !important}
#modal .ml-embedded .ml-form-embedContainer .ml-form-successBody .ml-form-successContent p{color:var(--muted) !important;font-size:.96rem !important;margin:0 !important}
