/*
  @file        thrive.css
  @project     Maureen Ennis / Thrive Digital Era — website refresh
  @created     2026-08-29
  @author      Maxine (Air)
  @description The one stylesheet for every page. Palette values are HERS — read from the
               live thrivedigitalera.com stylesheets on 2026-08-29, not chosen by us.
               purple #330883 · mint #00C6AB · cream #FFF9E3 · navy #00326D all appear there.
*/

:root{
  --purple:#330883; --purple-deep:#280663; --purple-soft:#5B3AA8;
  --mint:#00C6AB; --mint-deep:#009E83;
  --cream:#FFF9E3; --navy:#00326D;
  --ink:#231A38; --muted:#645C76; --line:#E7E1F0; --paper:#FFFFFF; --wash:#F8F5FF;
  --serif:'Fraunces',Georgia,serif; --sans:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  --wrap:1140px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.wrap.narrow{max-width:780px}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.14;margin:0}
img{max-width:100%;display:block}

/* ── header ────────────────────────────────────────────── */
header{position:sticky;top:0;z-index:30;background:var(--purple);border-bottom:1px solid rgba(255,255,255,.12)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:16px 28px;max-width:var(--wrap);margin:0 auto}
.nav ul{display:flex;gap:24px;list-style:none;margin:0;padding:0;font-size:.9rem;align-items:center}
.nav a{text-decoration:none;color:rgba(255,255,255,.88);transition:color .2s}
.nav a:hover{color:var(--mint)}
.logo-img{height:34px;width:auto}
.navtoggle{display:none;background:none;border:0;font-size:1.5rem;color:#fff;cursor:pointer}

.btn{display:inline-block;background:var(--purple);color:#fff;padding:13px 26px;border:1px solid var(--purple);border-radius:3px;text-decoration:none;font-size:.9rem;font-weight:600;transition:all .2s;cursor:pointer;font-family:var(--sans)}
.btn:hover{background:var(--purple-deep);border-color:var(--purple-deep)}
.btn.mint{background:var(--mint);border-color:var(--mint);color:var(--purple-deep)}
.btn.mint:hover{background:var(--mint-deep);border-color:var(--mint-deep);color:#fff}
.btn.ghost{background:transparent;color:var(--purple);border:1px solid var(--purple)}
.btn.ghost:hover{background:var(--purple);color:#fff}

/* Programs dropdown — generated from ONE constant so it cannot drift between pages,
   which is the exact defect found on her live site (4 items on home, 7 on contact). */
.has-drop{position:relative}
.has-drop>a::after{content:" \25BE";font-size:.7em;opacity:.6}
.drop{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(-6px);
      background:var(--purple-deep);min-width:330px;padding:14px 0;border-radius:4px;
      box-shadow:0 22px 54px rgba(20,4,54,.34);opacity:0;visibility:hidden;transition:all .2s;
      display:flex;flex-direction:column}
.has-drop:hover .drop,.has-drop:focus-within .drop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.drop::before{content:"";position:absolute;top:-14px;left:0;right:0;height:14px}
.drop a{color:#fff;padding:12px 26px;font-size:.95rem;font-weight:500;white-space:nowrap;transition:background .18s,color .18s}
.drop a:hover{background:rgba(0,198,171,.16);color:var(--mint)}

/* ── hero ──────────────────────────────────────────────── */
.hero{background:linear-gradient(155deg,var(--purple) 0%,var(--purple-deep) 55%,#1B0446 100%);color:#fff;padding:92px 0 84px;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(0,198,171,.28) 0%,transparent 68%);top:-160px;right:-120px}
.hero-inner{padding:76px 0 68px;text-align:left}
.hero-inner .wrap{max-width:860px;position:relative;z-index:2}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:60px;align-items:center;position:relative;z-index:2}
.eyebrow{font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mint);font-weight:600;margin-bottom:20px}
.hero h1{font-size:clamp(2.3rem,4.6vw,3.6rem);margin-bottom:22px;color:#fff}
.hero h1 em{font-style:italic;color:var(--mint)}
.lede{font-size:1.14rem;color:rgba(255,255,255,.84);max-width:36em;margin-bottom:34px}
.cta-row{display:flex;gap:13px;flex-wrap:wrap}
.hero .btn.ghost{color:#fff;border-color:rgba(255,255,255,.55)}
.hero .btn.ghost:hover{background:#fff;color:var(--purple)}
.portrait{border-radius:4px;overflow:hidden;box-shadow:0 26px 70px rgba(20,4,54,.4)}
.portrait .ph{aspect-ratio:4/5;background:linear-gradient(140deg,var(--cream) 0%,#F0E7D2 100%);display:flex;align-items:center;justify-content:center;text-align:center;padding:32px}
.portrait .ph span{font-size:.8rem;color:#7A6E55;max-width:24ch}

/* ── sections ──────────────────────────────────────────── */
.mission{padding:74px 0;text-align:center;background:var(--cream)}
.mission p{font-family:var(--serif);font-size:clamp(1.4rem,2.7vw,2rem);line-height:1.4;max-width:23em;margin:0 auto;color:var(--purple-deep)}
.mission p em{font-style:italic;color:var(--mint-deep)}
.section{padding:86px 0}
.section.wash{background:var(--wash)}
.sec-head{max-width:40em;margin-bottom:48px}
.sec-head h2{font-size:clamp(1.9rem,3.5vw,2.65rem);margin-bottom:16px;color:var(--purple-deep)}
.sec-head p{color:var(--muted);margin:0}
.rule{width:56px;height:3px;background:var(--mint);margin-bottom:22px}
.block{margin-bottom:44px}
.block h2{font-size:1.62rem;color:var(--purple-deep);margin-bottom:12px}
.block p{color:var(--muted);margin:0}
.closer{margin-top:56px;padding-top:40px;border-top:1px solid var(--line)}
.closer p{font-family:var(--serif);font-size:1.34rem;line-height:1.48;color:var(--purple-deep);margin:0 0 28px}

/* ── offers ────────────────────────────────────────────── */
.offers{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.offer{background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:38px 34px;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s,border-color .25s;border-top:3px solid var(--purple)}
.offer:nth-child(2),.offer:nth-child(3){border-top-color:var(--mint)}
.offer:hover{transform:translateY(-5px);box-shadow:0 18px 46px rgba(51,8,131,.11);border-color:var(--purple-soft);border-top-color:var(--purple)}
.offer .num{font-family:var(--serif);font-size:.86rem;color:var(--mint-deep);letter-spacing:.16em;font-weight:600;margin-bottom:14px}
.offer h3{font-size:1.52rem;margin-bottom:14px;color:var(--purple-deep)}
.offer p{color:var(--muted);font-size:.98rem;margin:0 0 26px}
.offer .more{margin-top:auto;text-decoration:none;font-size:.9rem;font-weight:600;color:var(--purple);border-bottom:2px solid var(--mint);padding-bottom:3px;align-self:flex-start;transition:color .2s}
.offer .more:hover{color:var(--mint-deep)}

.more-progs{margin-top:44px;padding-top:32px;border-top:1px solid var(--line);display:flex;gap:28px;align-items:baseline;flex-wrap:wrap}
.more-progs h3{font-family:var(--sans);font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mint-deep);font-weight:600;margin:0;flex:0 0 auto}
.more-progs ul{display:flex;gap:10px 28px;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.more-progs a{color:var(--muted);text-decoration:none;font-size:.95rem;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.more-progs a:hover{color:var(--purple);border-bottom-color:var(--mint)}

/* ── testimonials ──────────────────────────────────────── */
.qgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:44px}
.q{background:var(--paper);border-radius:4px;padding:34px 30px;border:1px solid var(--line);border-left:3px solid var(--mint)}
.q blockquote{margin:0 0 22px;font-family:var(--serif);font-size:1.02rem;line-height:1.6;color:var(--ink)}
.q .who{font-size:.88rem;font-weight:700;color:var(--purple)}
.q .role{font-size:.82rem;color:var(--muted)}

/* ── signup ────────────────────────────────────────────── */
.signup{padding:86px 0;text-align:center;background:linear-gradient(150deg,var(--purple) 0%,var(--purple-deep) 100%);color:#fff}
.signup h2{font-size:clamp(1.8rem,3.3vw,2.45rem);margin-bottom:14px;color:#fff}
.signup h2 em{font-style:italic;color:var(--mint)}
.signup p{color:rgba(255,255,255,.82);max-width:31em;margin:0 auto 32px}
.form{display:flex;gap:10px;max-width:470px;margin:0 auto;flex-wrap:wrap;justify-content:center}
.form input{flex:1 1 250px;padding:14px 16px;border:1px solid rgba(255,255,255,.32);border-radius:3px;font-family:var(--sans);font-size:.95rem;background:rgba(255,255,255,.1);color:#fff}
.form input::placeholder{color:rgba(255,255,255,.6)}
.form input:focus{outline:2px solid var(--mint);outline-offset:1px}

/* ── footer ────────────────────────────────────────────── */
footer{background:var(--ink);color:#CFC7DE;padding:58px 0 36px;font-size:.9rem}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:34px;align-items:start}
footer h4{font-family:var(--sans);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;margin:0 0 14px;font-weight:600}
footer a{color:#CFC7DE;text-decoration:none;transition:color .2s}
footer a:hover{color:var(--mint)}
footer li{list-style:none;margin-bottom:8px}
footer ul{padding:0;margin:0}
.social{display:flex;gap:12px;margin-top:18px}
.social a{width:38px;height:38px;border:1px solid rgba(207,199,222,.3);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600}
.social a:hover{border-color:var(--mint);color:var(--mint)}
.badges{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.badge{border:1px solid rgba(207,199,222,.3);border-radius:3px;padding:9px 13px;font-size:.68rem;line-height:1.3;max-width:150px}
.badge:hover{border-color:var(--mint)}
.fnote{margin-top:38px;padding-top:22px;border-top:1px solid rgba(207,199,222,.16);color:#8B819E;font-size:.8rem;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}

/* ── responsive ────────────────────────────────────────── */
@media (max-width:980px){ .fgrid{grid-template-columns:1fr 1fr} }
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:44px}
  .portrait{max-width:400px}
  .qgrid{grid-template-columns:1fr}
}
@media (max-width:720px){
  .nav ul{display:none}
  .navtoggle{display:block}
  .nav ul.open{display:flex;position:absolute;top:100%;left:0;right:0;background:var(--purple-deep);flex-direction:column;align-items:flex-start;padding:22px 28px;gap:16px}
  .nav ul.open .drop{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;background:transparent;padding:8px 0 0;min-width:0}
  .nav ul.open .drop a{padding:8px 0 8px 16px;font-size:.9rem}
  .offers{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
  .section,.signup,.mission,.hero{padding:60px 0}
}

/* ── real photography ──────────────────────────────────── */
.portrait img{width:100%;height:auto;display:block}
/* NO CROP AT ALL — and that is the point.
   Every photo from her shoot is 4898x3265, which is exactly 3:2. Give the box the SAME
   3:2 ratio and object-fit:cover has nothing to remove: the frame the photographer
   composed is the frame that renders. Three rounds of "her head is cut off" were all the
   same mistake — forcing a fixed pixel height onto a fixed-ratio photo. Do not put a
   height back on this rule. */
.offer-img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:3px;margin-bottom:22px}
.page-img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:4px;margin:0 0 44px}

/* ── photo carousel ────────────────────────────────────── */
.carousel{position:relative;display:flex;align-items:center;gap:12px;padding:0 28px;max-width:1400px;margin:0 auto}
.ctrack{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
        padding:6px 2px 18px;flex:1;scrollbar-width:none}
.ctrack::-webkit-scrollbar{display:none}
.ctrack figure{flex:0 0 clamp(280px,42vw,520px);scroll-snap-align:center;margin:0}
/* CONTAIN, not cover. The shoot mixes portrait and landscape framings, so any fixed
   crop beheads someone in at least one photo — it did. A gallery should show the
   photograph the photographer composed, on a soft ground. */
.ctrack figure{background:var(--cream);border-radius:4px;padding:0;overflow:hidden;
               box-shadow:0 14px 40px rgba(51,8,131,.13)}
.ctrack img{width:100%;height:360px;object-fit:contain;background:var(--cream);border-radius:4px}
.ctrack figcaption{padding:0 16px 14px}
.ctrack figcaption{margin-top:12px;font-size:.86rem;color:var(--muted);font-style:italic;padding:0 16px 14px}
.cbtn{flex:0 0 auto;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:#fff;
      color:var(--purple);font-size:1.5rem;line-height:1;cursor:pointer;transition:all .2s}
.cbtn:hover{background:var(--purple);color:#fff;border-color:var(--purple)}
.cdots{display:flex;gap:9px;justify-content:center;margin-top:22px}
.cdots button{width:9px;height:9px;padding:0;border-radius:50%;border:0;background:var(--line);cursor:pointer;transition:all .2s}
.cdots button.on{background:var(--mint);width:26px;border-radius:5px}
@media (max-width:720px){ .cbtn{display:none} .carousel{padding:0 20px} }

/* real badge artwork rather than text boxes */
/* The two badges need OPPOSITE treatment and that is not a style preference:
   Women Owned ships as WHITE artwork on transparent (built for a dark footer) — a white
   box makes its wordmark invisible, which is exactly what happened. Goldman Sachs ships as
   dark artwork and needs a light ground. Same class, different backgrounds. */
.badge.img{border:0;max-width:none;border-radius:3px;display:inline-flex;align-items:center;
           padding:10px 12px;transition:opacity .2s}
.badge.img:hover{opacity:.8}
.badge.img.on-dark{background:transparent;padding:6px 0}      /* white artwork */
.badge.img.on-light{background:#fff}                          /* dark artwork  */
.badge.img img{height:46px;width:auto}

/* testimonial headshots — her own, from the live site */
.qwho{display:flex;align-items:center;gap:14px}
.qwho img{width:54px;height:54px;border-radius:50%;object-fit:cover;flex:0 0 auto}

/* ── About / Resources / Blog / Contact ────────────────── */
.nav a.cur{color:var(--mint)}
.asks{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;max-width:none}
.asks p{font-family:var(--serif);font-size:1.12rem;line-height:1.45;color:var(--purple-deep);margin:0;
        text-align:left;padding-left:18px;border-left:3px solid var(--mint)}
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.member{background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:32px 28px;border-top:3px solid var(--purple)}
.member img{width:88px;height:88px;border-radius:50%;object-fit:cover;margin-bottom:18px}
.member h3{font-size:1.3rem;color:var(--purple-deep);margin-bottom:4px}
.member .trole{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mint-deep);font-weight:600;margin-bottom:12px}
.member p{color:var(--muted);font-size:.95rem;margin:0}
.contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:36px}
.ccard{display:block;text-decoration:none;background:var(--paper);border:1px solid var(--line);
       border-radius:4px;padding:30px 28px;border-top:3px solid var(--mint);transition:all .2s}
.ccard:hover{transform:translateY(-4px);box-shadow:0 16px 42px rgba(51,8,131,.1);border-color:var(--purple-soft)}
.ccard h3{font-size:1.28rem;color:var(--purple-deep);margin-bottom:8px}
.ccard p{color:var(--muted);margin:0;font-size:.95rem}
@media (max-width:900px){ .asks,.team,.contact-grid{grid-template-columns:1fr} }

/* FAQ — the headings are questions on purpose; that is what an assistant matches. */
.block h3.q{font-family:var(--serif);font-size:1.3rem;color:var(--purple-deep);margin-bottom:10px}

/* "What we changed, and why" — commentary under each comparison */
.whatwedid{margin-top:18px;background:#fff;border:1px solid var(--line);border-left:3px solid var(--purple);
           border-radius:6px;padding:20px 22px}
.whatwedid h3{font-family:var(--sans);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
              color:var(--purple);font-weight:700;margin:0 0 14px}
.wc{display:flex;gap:14px;align-items:flex-start;margin-bottom:11px}
.wc .wtag{flex:0 0 128px;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
          color:var(--mint-deep);padding-top:3px}
.wc p{margin:0;color:var(--muted);font-size:.93rem;line-height:1.55}
@media(max-width:700px){ .wc{flex-direction:column;gap:3px} .wc .wtag{flex:none} }

/* header CTAs — Client Login beside Schedule time */
.navcta{display:flex;gap:9px;align-items:center;flex:0 0 auto}
.btn.ghost.light{color:#fff;border-color:rgba(255,255,255,.5);background:transparent}
.btn.ghost.light:hover{background:#fff;color:var(--purple)}
@media(max-width:820px){ .navcta .btn.ghost.light{display:none} }

/* plain-language callout on the comparison cover */
.explain{background:#fff;border:1px solid var(--line);border-left:3px solid var(--mint);
         border-radius:6px;padding:22px 26px;margin-top:20px;max-width:88ch}
.explain h3{font-family:var(--sans);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
            color:var(--purple);font-weight:700;margin:0 0 12px}
.explain p{color:var(--muted);font-size:.95rem;line-height:1.6;margin:0 0 12px}
.explain p:last-child{margin-bottom:0}
.explain strong{color:var(--purple-deep)}

/* Blog covers are DESIGNED GRAPHICS with headline text baked in — several are ~1.9:1
   LinkedIn article covers. Cropping them to a fixed ratio cut the words off ("LEADING
   CHANGE" became "LEADING CHANGI"). Never crop these: full width, natural height. */
/* NO object-fit. `none` renders the image at its natural 1920px inside a narrower box,
   which overflows and crops it far worse than the 3:2 box did. width:100% + height:auto
   scales the whole graphic proportionally — the only correct treatment for a designed
   cover with text baked into it. */
.post-img{width:100%;height:auto;border-radius:4px;margin:0 0 36px;display:block}
