/* =========================================================
   STEPHFORWARD — main.css (Clean System)
   - One :root
   - One base
   - Components once
   - Page sections
   - Utilities last
   ========================================================= */

/* -------------------------
   1) TOKENS / THEME
   ------------------------- */
:root{
  /* Brand */
  --ink: #525894;
  --cream: #FFFAF8;
  --yellow: #FFFFA2;
  --lav: #BDBFFF;

  /* Neutrals */
  --bg: var(--yellow);
  --text: var(--ink);

  /* UI surfaces */
  --stroke: rgba(82,88,148,.22);
  --hair: rgba(0,0,0,.06);
  --shadow: 0 18px 55px rgba(82,88,148,.16);

  /* Radius */
  --r-xl: 28px;
  --r-lg: 22px;
  --r-md: 18px;
  --r-sm: 14px;

  /* Layout */
  --wrap: 980px;

  /* Typography */
  --font-head: "SF-FatFrank", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  --font-body: "SF-Nimbus", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}

/* -------------------------
   2) FONTS
   ------------------------- */
@font-face{
  font-family:"SF-FatFrank";
  src:url("/assets/fonts/fonnts.com-FatFrank_Heavy.woff") format("woff");
  font-weight:800;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"SF-Nimbus";
  src:url("/assets/fonts/fonnts.com-Nimbus_Sans.woff2") format("woff2"),
      url("/assets/fonts/fonnts.com-Nimbus_Sans.woff") format("woff");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"SF-Nimbus";
  src:url("/assets/fonts/fonnts.com-Nimbus_Sans_Bold.woff2") format("woff2"),
      url("/assets/fonts/fonnts.com-Nimbus_Sans_Bold.woff") format("woff");
  font-weight:700;
  font-style:normal;
  font-display:swap;
}

/* -------------------------
   3) BASE / RESET
   ------------------------- */
*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
button, input, select, textarea{ font: inherit; }
:focus-visible{ outline: 2px solid rgba(82,88,148,.25); outline-offset:2px; }

.wrap{ width:min(var(--wrap), calc(100% - 42px)); margin:0 auto; }
.section-pad{ padding:22px 0; }

/* Headlines */
h1,h2,h3,.sf-brand,.badge,.kicker,.hero-title,.t-title{ font-family: var(--font-head); }

/* -------------------------
   4) PRIMITIVES (Reusable UI)
   ------------------------- */
.badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(82,88,148,.14);
  background: rgba(255,250,248,.70);
  font-weight:900;
  font-size:12px;
  letter-spacing:.35px;
  text-transform:uppercase;
  color: rgba(82,88,148,.92);
}

.pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 12px;
  border-radius:999px;
  border:1px solid rgba(0,0,0,.10);
  background: rgba(255,255,255,.55);
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}

.card-glass{
  border-radius: var(--r-lg);
  border: 1px solid var(--hair);
  background: rgba(255,255,255,.58);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: var(--shadow);
}

/* Buttons */
.btn-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;

  padding: 10px 14px;
  border-radius: 999px;

  border:1px solid var(--stroke);
  background: rgba(255,250,248,.90);

  font-weight:900;
  font-size:11px;
  letter-spacing:.28px;
  text-transform:uppercase;

  box-shadow: 0 10px 28px rgba(82,88,148,.12);
  cursor:pointer;

  transition: transform .14s ease, box-shadow .14s ease;
}
.btn-pill:hover{ transform: translateY(-1px); box-shadow: 0 14px 34px rgba(82,88,148,.16); }
.btn-pill:active{ transform: translateY(0); }

.btn-pill.is-purple{
  background: rgba(189,191,255,.92);
  border-color: rgba(82,88,148,.18);
}

.btn-pill.is-yellow{
  background: var(--yellow);
  color:#2E2E1A;
  border-color: rgba(82,88,148,.18);
  box-shadow: 0 10px 30px rgba(255,255,162,.45), 0 2px 6px rgba(0,0,0,.06);
}

/* Inputs */
.sf-label{
  display:block;
  font-size:11px;
  letter-spacing:.30px;
  text-transform:uppercase;
  font-weight:900;
  color: rgba(82,88,148,.78);
  margin:0 0 6px;
}
.sf-input, .sf-select{
  width:100%;
  padding: 14px 16px;
  border-radius: 18px;
  border:1px solid rgba(82,88,148,.16);
  background: rgba(255,250,248,.92);
  color: var(--ink);
  outline:none;
  box-shadow: 0 12px 28px rgba(82,88,148,.08);
}
.sf-input::placeholder{ color: rgba(82,88,148,.45); }
.sf-input:focus, .sf-select:focus{
  box-shadow: 0 0 0 4px rgba(255,255,162,.45), 0 18px 40px rgba(82,88,148,.12);
  border-color: rgba(82,88,148,.24);
}

/* Tables (admin-friendly) */
.sf-table{
  width:100%;
  border-collapse: collapse;
}
.sf-table th{
  padding:12px 10px;
  font-size:12px;
  letter-spacing:.32px;
  text-transform:uppercase;
  opacity:.7;
  text-align:left;
  white-space:nowrap;
}
.sf-table td{
  padding:12px 10px;
  border-top: 1px solid var(--hair);
  vertical-align:middle;
}
.sf-table tr:hover{ background: rgba(255,255,255,.18); }

/* -------------------------
   5) TOP NAV (Desktop + Mobile)
   ------------------------- */
.sf-top{
  position: sticky;
  top: 0;
  z-index: 50;
  padding: 18px 0 10px;
  background: rgba(255,255,162,.35);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.sf-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}

.sf-brand{
  display:flex;
  align-items:center;
  gap:10px;
}
.sf-brand img{
  height: 76px;
  width:auto;
  display:block;
}
@media (max-width: 720px){
  .sf-brand img{ height: 56px; }
}

/* Desktop links */
.sf-links{
  display:flex;
  gap:22px;
  align-items:center;
  font-weight:900;
  font-size:12px;
  letter-spacing:.3px;
  text-transform:uppercase;
}
.sf-links a{ opacity:.95; position:relative; padding-bottom:10px; }
.sf-links a:hover{ text-decoration:underline; text-underline-offset:4px; }

/* Underline asset */
.sf-links a::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-2px;
  width:42px;
  height:10px;
  transform:translateX(-50%);
  background: url("/assets/img/otros/lineas/linea corta-26.png") center/contain no-repeat;
  opacity:0;
  pointer-events:none;
}
.sf-links a:hover::after{ opacity:1; }
.sf-links a.is-active::after{ opacity:1; }

.sf-pill{
  padding:7px 12px;
  border-radius:999px;
  background: rgba(82,88,148,.92);
  color: var(--cream);
  font-size:12px;
  font-weight:900;
  letter-spacing:.3px;
  text-transform:uppercase;
}

/* Burger */
.sf-burger{
  display:none;
  background: transparent;
  border: 0;
  padding: 10px;
  line-height: 1;
  color: var(--ink);
  cursor:pointer;
  -webkit-tap-highlight-color: transparent;
}
.sf-burger i{ font-size: 30px; opacity:.92; }

@media (max-width: 860px){
  .sf-links{ display:none; }
  .sf-burger{ display:inline-flex; align-items:center; justify-content:center; }
}

/* Avatar (one definition only) */
.sf-avatar{
  width: 40px;
  height: 40px;
  border-radius: 14px;
  overflow:hidden;
  border:1px solid rgba(0,0,0,.10);
  background: rgba(255,255,255,.55);
  display:grid;
  place-items:center;
}
.sf-avatar img{ width:100%; height:100%; object-fit:cover; }
.sf-avatar-fallback{ font-weight:900; font-size:14px; opacity:.85; }

/* Breadcrumbs (one definition only) */
.sf-breadcrumbs{
  margin-top:10px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  opacity:.9;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.25px;
}
.sf-bc:hover{ text-decoration:underline; text-underline-offset:4px; }
.sf-bc-current{ opacity:.75; }
.sf-bc-sep{ opacity:.45; }

/* -------------------------
   6) MOBILE MENU (Readable)
   Matches your HTML:
   #sfMobile.sf-mobile > .sf-mobile-panel > .sf-mobile-top + .sf-mobile-list
   ------------------------- */
.sf-mobile{
  position: fixed;
  inset: 0;
  z-index: 9999;

  background: rgba(12,14,22,.58);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);

  display: grid;
  place-items: start center;
  padding: 72px 16px 24px;

  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
}
.sf-mobile.is-open{
  opacity: 1;
  pointer-events: auto;
}
.sf-mobile-panel{
  width: min(520px, 100%);
  border-radius: 26px;
  background: linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,255,255,.84));
  border: 1px solid rgba(255,255,255,.70);
  box-shadow: 0 30px 90px rgba(0,0,0,.35), 0 2px 0 rgba(255,255,255,.40) inset;
  padding: 16px;
  overflow: hidden;
  transform: translateY(10px);
  transition: transform .18s ease;
}
.sf-mobile.is-open .sf-mobile-panel{ transform: translateY(0); }

.sf-mobile-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom: 10px;
}

.sf-mobile-close{
  width: 44px;
  height: 44px;
  border-radius: 16px;
  border: 1px solid rgba(0,0,0,.10);
  background: rgba(255,255,255,.92);
  box-shadow: 0 10px 30px rgba(0,0,0,.18);
  display:grid;
  place-items:center;
  cursor:pointer;
  color: rgba(18,22,28,.82);
}
.sf-mobile-close i{ font-size: 18px; }

.sf-mobile-list{
  display:grid;
  gap: 10px;
  margin-top: 8px;
}
.sf-mobile-list a{
  display:flex;
  align-items:center;
  gap: 12px;
  padding: 14px 14px;
  border-radius: 18px;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 14px 40px rgba(0,0,0,.12);
  color: rgba(18,22,28,.90);
  font-weight: 900;
  letter-spacing: .2px;
  text-transform:uppercase;
  transition: transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.sf-mobile-list a:hover{
  transform: translateY(-1px);
  box-shadow: 0 18px 55px rgba(0,0,0,.16);
  background: rgba(255,255,255,.98);
}
.sf-mobile-list a i{ font-size: 18px; opacity: .82; }

body.sf-menu-open{ overflow:hidden; }

/* -------------------------
   7) HERO
   ------------------------- */
.hero-card{
  margin-top:10px;
  border-radius: var(--r-xl);
  overflow:hidden;
  background: rgba(255,250,248,.35);
  box-shadow: var(--shadow);
  border:1px solid rgba(82,88,148,.12);
  position:relative;
}
@media (min-width: 861px){
  .hero-card{
    width: min(1320px, calc(100vw - 80px));
    margin-left: 50%;
    transform: translateX(-50%);
  }
}
.hero-media{
  height: calc(100vh - 170px);
  min-height: 420px;
  max-height: 720px;
  background: #c7c7c7;
  position:relative;
}
.hero-media video,
.hero-media img{ width:100%; height:100%; object-fit:cover; }
.hero-media::after{
  content:"";
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.22));
  pointer-events:none;
}
.hero-title{
  position:absolute;
  left: clamp(28px, 4vw, 56px);
  top: 52%;
  transform: translateY(-55%);
  max-width: min(72%, 22ch);
  color: var(--yellow);
  font-weight: 900;
  letter-spacing: clamp(-0.6px, -0.08vw, -0.2px);
  text-transform: uppercase;
  line-height: 1.02;
  font-size: clamp(44px, 4.0vw, 70px);
  text-shadow: 0 10px 30px rgba(0,0,0,.24);
  user-select:none;
}
.hero-cta{ position:absolute; right:22px; bottom:22px; }

@media (max-width: 860px){
  .hero-media{ height:270px; min-height:270px; max-height:270px; }
  .hero-title{ font-size:38px; max-width:86%; left:22px; }
}

/* -------------------------
   8) COURSES ROW
   ------------------------- */
.courses{ padding:18px 0 12px; }
.course-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:16px;
}
.course-card{
  background: rgba(189,191,255,.88);
  border:1px solid rgba(82,88,148,.18);
  border-radius: 18px;
  padding:14px 14px 12px;
  box-shadow: 0 14px 34px rgba(82,88,148,.10);
  min-height: 140px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.course-card h3{
  margin:0 0 6px;
  font-weight:1000;
  text-transform:uppercase;
  letter-spacing:-.2px;
  line-height:1.0;
  font-size:20px;
}
.course-card .meta{
  font-size:10px;
  font-weight:900;
  opacity:.95;
  text-transform:uppercase;
  letter-spacing:.25px;
  margin-bottom:8px;
}
.course-card p{
  margin:0;
  font-size:16px;
  line-height:1.35;
  opacity:.95;
}
.course-card .cta-row{ display:flex; justify-content:flex-end; margin-top:10px; }

@media (max-width: 860px){
  .course-grid{ grid-template-columns: 1fr; }
}

/* -------------------------
   9) CONTACT / FORMS
   ------------------------- */
.contact-hero{
  background: rgba(189,191,255,.82);
  border: 1px solid rgba(82,88,148,.18);
  border-radius: 20px;
  padding: 18px;
  box-shadow: 0 18px 44px rgba(82,88,148,.10);
}
.contact-hero h1{
  margin: 10px 0 6px;
  font-size: 30px;
  line-height: 1.02;
  letter-spacing: -0.6px;
  text-transform: uppercase;
  color: rgba(82,88,148,.96);
}
.contact-hero p{
  margin:0;
  font-size: 16px;
  line-height: 1.35;
  color: rgba(82,88,148,.90);
  max-width: 46ch;
}

.contact-grid{
  display:grid;
  grid-template-columns: 1.25fr .95fr;
  gap: 18px;
  align-items:start;
  margin-top: 18px;
}
@media (max-width: 860px){
  .contact-grid{ grid-template-columns: 1fr; gap:14px; }
}

.contact-card,
.sf-subscribe{
  background: rgba(189,191,255,.82);
  border: 1px solid rgba(82,88,148,.18);
  border-radius: 26px;
  padding: 18px;
  box-shadow: 0 22px 60px rgba(82,88,148,.14);
}

.sf-form-msg{
  margin:12px 0 0;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(82,88,148,.18);
  background: rgba(255,250,248,.78);
  font-weight:800;
  font-size:16px;
}
.sf-form-msg.ok{ background: rgba(255,255,162,.65); }
.sf-form-msg.err{ background: rgba(189,191,255,.55); }

/* -------------------------
   10) MARQUEE
   ------------------------- */
.marquee{
  margin: 10px 0 0;
  background: rgba(255,250,248,.9);
  border-top:1px solid rgba(82,88,148,.10);
  border-bottom:1px solid rgba(82,88,148,.10);
  overflow:hidden;
}
.marquee-track{
  display:flex;
  gap:34px;
  padding:10px 0;
  white-space:nowrap;
  font-weight:1000;
  font-size:10px;
  letter-spacing:.35px;
  text-transform:uppercase;
  animation: marquee 10s linear infinite;
}
@keyframes marquee{ from{ transform: translateX(0); } to{ transform: translateX(-50%); } }

/* -------------------------
   11) LAVENDER SECTION
   ------------------------- */
.lav{
  background: var(--lav);
  padding: 26px 0 24px;
}
.lav h2{
  text-align:center;
  margin:0 0 12px;
  font-weight:1000;
  text-transform:uppercase;
  letter-spacing:-.3px;
  color: var(--yellow);
  font-size:20px;
}
.steps{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:18px;
  align-items:start;
  margin: 12px 0 14px;
}
.step{ display:grid; grid-template-columns: 34px 1fr; gap:10px; }
.step .n{ font-weight:1000; font-size:44px; line-height:1; color: var(--yellow); }
.step p{ margin:6px 0 0; font-size:16px; line-height:1.25; opacity:.95; }

@media (max-width: 860px){ .steps{ grid-template-columns: 1fr; } }

/* Big statement */
.big-statement{
  text-align:center;
  color: rgba(255,250,248,.92);
  font-weight:1000;
  letter-spacing:-.8px;
  line-height: .92;
  font-size: 44px;
  margin: 10px auto 8px;
  max-width: 780px;
}

/* Characters */
.characters{
  display:flex;
  justify-content:center;
  gap:24px;
  margin: 10px 0 22px;
  align-items:flex-end;
}
.character{
  width:98px;
  height:90px;
  border-radius: 22px;
  display:grid;
  place-items:center;
  background: transparent;
}
.character img{ width:100%; height:auto; object-fit:contain; }
@media (min-width: 861px){
  .character{ width:120px; height:110px; }
}

/* Testimonials */
.t-title{
  text-align:center;
  margin: 8px 0 12px;
  font-weight:1000;
  text-transform:uppercase;
  letter-spacing:.3px;
  color: rgba(82,88,148,.92);
  font-size:16px;
}
.t-row{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap:14px;
}
.t-card{
  background: rgba(82,88,148,.92);
  color: var(--cream);
  border-radius: 14px;
  overflow:hidden;
  border:1px solid rgba(255,250,248,.25);
}
.t-card .img{ height:72px; background: rgba(255,250,248,.18); }
.t-card .img img{ width:100%; height:100%; object-fit:cover; }
.t-card .body{ padding:10px 10px 12px; font-size:10px; line-height:1.25; }
.t-card .handle{ font-weight:1000; margin-bottom:6px; opacity:.95; }
@media (max-width: 860px){ .t-row{ grid-template-columns: 1fr 1fr; } }

/* -------------------------
   12) FOOTER
   ------------------------- */
.sf-footer{
  background: rgba(255,250,248,.92);
  padding: 18px 0;
}
.footer-grid{
  display:grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap:18px;
  align-items:start;
}
.footer-mini{
  font-weight:1000;
  font-size:12px;
  text-transform:uppercase;
}
.footer-text{
  font-size:12px;
  line-height:1.45;
  opacity:.9;
}
.social{
  display:flex;
  gap:12px;
  align-items:center;
  margin-top:10px;
}
.social a{
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
  border-radius:999px;
  border:1px solid rgba(82,88,148,.18);
}
@media (max-width: 860px){ .footer-grid{ grid-template-columns: 1fr; } }

/* -------------------------
   13) UTILITIES
   ------------------------- */
.u-right{ text-align:right; }
.u-muted{ opacity:.75; }
.u-num{ font-variant-numeric: tabular-nums; }

/* -------------------------
   HEADER ACCOUNT DROPDOWN (DESKTOP) — readable glass
   ------------------------- */
.sf-dd{ position:relative; display:inline-block; }

.sf-dd-menu{
  position:absolute;
  right:0;
  top: calc(100% + 12px);
  min-width: 240px;
  padding: 12px;
  border-radius: 20px;

  background: rgba(255,255,255,.92);
  border: 1px solid rgba(0,0,0,.10);
  box-shadow: 0 24px 70px rgba(0,0,0,.18);

  display:none;
  z-index: 1000;
}

.sf-dd.is-open .sf-dd-menu{ display:block; }

.sf-dd-item{
  display:flex;
  align-items:center;
  gap:12px;

  padding: 12px 14px;
  border-radius: 16px;

  background: rgba(255,255,255,.95);
  border: 1px solid rgba(0,0,0,.08);

  color: rgba(18,22,28,.92);
  font-weight: 900;
  letter-spacing: .2px;
  text-transform: uppercase;

  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}

.sf-dd-item:hover{
  transform: translateY(-1px);
  background: rgba(255,255,255,.99);
  box-shadow: 0 14px 40px rgba(0,0,0,.12);
}

.sf-dd-item i{ font-size: 18px; opacity:.85; }