:root{
  --blush:#F4EDE7; --blush-dp:#EDE2D9; --cream:#FCF9F6;
  --lav:#DDD4EC; --lav-lt:#EFEBF7; --lav-md:#E5DDF1;
  --plum:#2E2140; --plum-lt:#4A3563;
  --violet:#5C3D73; --violet-dk:#472C5B;
  --rose:#A93B5B; --rose-lt:#F0D8DF;
  --ink:#3A3145; --muted:#6B5F78; --line:#DCD2CB; --white:#FDFBF9;
  --measure:40rem; --wide:74rem;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--blush);color:var(--ink);
  font-family:"Karla",-apple-system,Helvetica,Arial,sans-serif;
  font-size:1.125rem;line-height:1.75;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Fraunces",Georgia,serif;color:var(--plum);
  font-weight:400;line-height:1.12;letter-spacing:-.014em;margin:0 0 .6em;text-wrap:balance}
h1{font-size:clamp(2.5rem,5.6vw,4.25rem)}
h1.h1--tight{font-size:clamp(1.9rem,3.2vw,2.6rem)}
h2{font-size:clamp(2rem,4.2vw,3.1rem)}
h3{font-size:1.3125rem;line-height:1.3}
p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}
a{color:var(--violet-dk)}
img{max-width:100%;display:block}
:focus-visible{outline:2.5px solid var(--violet);outline-offset:3px}

.wrap{width:100%;max-width:var(--wide);margin-inline:auto;padding-inline:1.5rem}
.band{padding-block:clamp(3.5rem,7.5vw,6.5rem)}
.band--blush{background:var(--blush)}
.band--deep{background:var(--blush-dp)}
.band--cream{background:var(--cream)}
.band--lav{background:var(--lav-lt)}
.band--lavmd{background:var(--lav-md)}
.band--plum{background:var(--plum);color:#D8CEE6}
.band--plum h2,.band--plum h3{color:#F4EFF9}
.band--white{background:var(--white)}
.prose{max-width:var(--measure)}
.center{text-align:center}
.center .prose{margin-inline:auto}

.eyebrow{font-size:1.0625rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;
  color:var(--rose);margin:0 0 1.15rem;line-height:1.4}
.band--plum .eyebrow{color:#E5A9BB}

/* ---------- header ---------- */
.masthead{background:var(--rose)}
.mast{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding-block:1.5rem}
.logotype{font-family:"Fraunces",Georgia,serif;font-size:1.5rem;color:#FFF6F8;
  text-decoration:none;line-height:1.15}
.logotype span{display:block;font-family:"Karla",sans-serif;font-size:.7rem;font-weight:700;
  letter-spacing:.17em;text-transform:uppercase;color:#F3CBD6;margin-top:.3rem}
.nav-toggle{display:none;background:none;border:1px solid rgba(255,255,255,.55);border-radius:999px;
  padding:.55rem 1.1rem;font:inherit;font-size:.9375rem;color:#fff;cursor:pointer}
.nav{display:flex;align-items:center;gap:1.6rem}
.nav a{color:#FBEAEF;text-decoration:none;font-size:1rem;font-weight:600;
  border-bottom:2px solid transparent;padding-bottom:3px}
.nav a:hover{color:#fff;border-bottom-color:#fff}
.nav a[aria-current=page]{color:#fff;border-bottom-color:#fff}
.nav__pt{font-style:italic}
.socials{display:flex;gap:.85rem;align-items:center}
.socials a{color:#F3CBD6;display:inline-flex}
.socials a:hover{color:#fff}
.socials svg{width:21px;height:21px}
@media(max-width:1020px){
  .nav-toggle{display:inline-block}
  .mast{flex-wrap:wrap}
  .nav{display:none;flex-direction:column;align-items:flex-start;gap:1.1rem;width:100%;padding-block:1.3rem .5rem}
  .nav.is-open{display:flex}
}

/* ---------- hero ---------- */
.hero{background:var(--blush);padding-block:clamp(3rem,7vw,5.5rem)}
.hero__grid{display:grid;gap:clamp(2rem,4.5vw,3.5rem);align-items:center}
@media(min-width:940px){.hero__grid{grid-template-columns:1fr 1fr}}
.hero h1{max-width:16ch;margin-bottom:1.3rem}
.hero .stack-head h1{max-width:none}
.hero__lede{font-size:1.25rem;max-width:44ch;color:var(--ink)}

/* portrait fades into the background, no frame */
.portrait{max-width:34rem;margin-inline:auto}
.portrait img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center 16%}

.hero__social{display:flex;align-items:center;flex-wrap:wrap;gap:.9rem;margin-top:1.9rem;
  font-size:1rem;font-weight:600;color:var(--muted)}
.hero__social .socials svg{width:32px;height:32px}
.hero__social .socials a{color:var(--violet)}
.hero__social .socials a:hover{color:var(--plum)}

/* ---------- buttons ---------- */
.btn{display:inline-block;background:var(--rose);color:#fff;text-decoration:none;font-weight:700;
  font-size:.9375rem;letter-spacing:.08em;text-transform:uppercase;padding:1.1rem 2rem;
  border:none;cursor:pointer;transition:background 160ms ease,color 160ms ease}
.btn:hover{background:#8E2F4B;color:#fff}
.btn--plum{background:var(--plum)}
.btn--plum:hover{background:var(--plum-lt)}
.btn--soft{background:var(--lav);color:var(--plum)}
.btn--soft:hover{background:var(--lav-md);color:var(--plum)}
.btn--ghost{background:transparent;color:var(--plum);border:2px solid var(--rose)}
.btn--ghost:hover{background:var(--rose);color:#fff}
.band--plum .btn--ghost{color:#fff;border-color:#E5A9BB}
.band--plum .btn--ghost:hover{background:var(--rose);border-color:var(--rose);color:#fff}
.actions{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-top:2.25rem}
.center .actions{justify-content:center}

/* ---------- trust strip ---------- */
.strip{background:var(--plum)}
.strip ul{list-style:none;margin:0;padding-block:1.1rem;display:flex;flex-wrap:wrap;justify-content:center;
  gap:.4rem 2.25rem;font-size:.875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:#EFE6F3;text-align:center}

/* ---------- map ---------- */
.mapfig{margin:2.75rem auto 0;max-width:42rem}
.mapfig img{width:100%}

/* ---------- tags ---------- */
.taggroup{margin-top:2.75rem}
.taggroup:first-child{margin-top:0}
.taggroup h3{font-family:"Karla",sans-serif;font-size:.9375rem;font-weight:700;letter-spacing:.15em;
  text-transform:uppercase;color:var(--rose);margin:0 0 1rem}
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.center .tags{justify-content:center}
.tags li{color:var(--plum);padding:.65rem 1.2rem;font-size:1rem;line-height:1.3;
  background:var(--lav);border:1px solid transparent}
.tags--a li{background:var(--lav)}
.tags--b li{background:var(--blush-dp)}
.tags--c li{background:var(--rose-lt)}
.tags--d li{background:#E0EAE6}
.tags--rose li{background:var(--rose);color:#fff}

/* stacked list, one per line */
.stacklist{list-style:none;margin:1.75rem 0 0;padding:0;max-width:26rem}
.stacklist li{padding:.7rem 0;border-bottom:1px solid var(--line);font-size:1.0625rem;color:var(--plum)}
.stacklist li:last-child{border-bottom:none}


/* ---------- layout blocks ---------- */
.duo{display:grid;gap:clamp(2rem,4vw,3.5rem)}
@media(min-width:880px){.duo{grid-template-columns:.9fr 1.1fr;align-items:start}}
.duo h2{max-width:15ch}

.media{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:center}
@media(min-width:880px){.media{grid-template-columns:1fr 1fr}}
.media__img img{width:100%}
.media__img--photo img{aspect-ratio:4/3;object-fit:cover}
.media__img--sm{max-width:26rem;margin-inline:auto}

/* headline spans full width, then two columns beneath */
.stack-head{margin-bottom:clamp(2rem,4vw,3rem)}
.cols2{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:start}
@media(min-width:880px){.cols2{grid-template-columns:1.05fr .95fr}}

.bullets{margin:0 0 1.25em;padding-left:1.2rem}
.bullets li{margin-bottom:.5rem}

.fee{font-family:"Fraunces",Georgia,serif;font-size:clamp(3rem,7vw,5rem);color:var(--plum);line-height:1;margin:0 0 .5rem}
.fee small{display:block;font-family:"Karla",sans-serif;font-size:1rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--rose);margin-top:.9rem}

.sub h2{font-size:clamp(1.7rem,3vw,2.3rem);margin-bottom:.7rem}
.sub h3{margin-top:1.9rem;color:var(--plum)}

/* ---------- form ---------- */
.form{max-width:36rem}
.field{margin-bottom:1.5rem}
.field-row{display:grid;gap:0 1.25rem}
@media(min-width:560px){.field-row{grid-template-columns:1fr 1fr}}
.field>label{display:block;font-weight:700;color:var(--plum);font-size:1rem;margin-bottom:.45rem}
.field__help{font-size:.9375rem;color:var(--muted);margin:.55rem 0 0;line-height:1.55}
.field input,.field textarea{width:100%;font:inherit;font-size:1.0625rem;color:var(--ink);
  background:var(--white);border:1px solid var(--line);border-radius:2px;padding:.8rem .95rem}
.field textarea{min-height:9rem;resize:vertical}
.field input:focus,.field textarea:focus{border-color:var(--violet);outline:none;box-shadow:0 0 0 3px rgba(92,61,115,.15)}
.req{color:var(--rose)}
.form-note{font-size:.9375rem;color:var(--muted);margin-top:1.1rem}
.contact-details{margin-top:2.5rem;padding-top:1.6rem;border-top:1px solid var(--line)}

.creds{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);
  font-size:.9375rem;color:var(--muted);line-height:1.65}
.creds strong{color:var(--plum)}

/* ---------- footer ---------- */
.foot{background:var(--plum);color:#B9AAC6;padding-block:3.25rem;font-size:1rem}
.foot__grid{display:grid;gap:1.75rem}
@media(min-width:760px){.foot__grid{grid-template-columns:1.3fr 1fr 1fr}}
.foot__name{font-family:"Fraunces",Georgia,serif;color:#F3EDF7;font-size:1.25rem;margin-bottom:.6rem}
.foot a{color:#DDD1E6;text-decoration:none}
.foot a:hover{text-decoration:underline}
.foot h4{font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:#A794B4;margin:0 0 .85rem;font-family:"Karla",sans-serif}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin-bottom:.5rem}
.foot .socials a{color:#C4B4CF}
.foot .socials a:hover{color:#fff}
.foot__legal{margin-top:2rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.13);
  font-size:.875rem;color:#8E7E9C}

@media(prefers-reduced-motion:no-preference){
  .reveal{animation:rise 600ms cubic-bezier(.22,.8,.3,1) both}
  .reveal--2{animation-delay:110ms}
  @keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
}

/* About hero headline: allow the full name on one line */
.hero h1.h1--tight{max-width:24ch}


/* stack-head headlines span the full width */
.stack-head h1,.stack-head h2{max-width:26ch}
.hero .stack-head h1{max-width:26ch}

/* centered form */
.form--center{margin-inline:auto}

/* fee centered */
.fee--center{text-align:center}

/* two-column insurance layout */
.split{display:grid;gap:clamp(2rem,4vw,3.5rem)}
@media(min-width:760px){.split{grid-template-columns:1fr 1fr}}
.split h2{font-size:clamp(1.6rem,2.6vw,2.1rem)}

/* communities photo larger */
.media__img--lg{max-width:none}

/* ---- section labels: noticeably larger ---- */
.eyebrow{font-size:1.25rem;letter-spacing:.13em}
@media(max-width:640px){.eyebrow{font-size:1.0625rem}}

/* avoid single-word orphans on the last line */
p,.hero__lede{text-wrap:pretty}

/* slightly larger heading variant */
.h2--lg{font-size:clamp(2.2rem,4.8vw,3.5rem)}

/* insurance names larger */
.stacklist li{font-size:1.1875rem}

/* keep tag groups readable on tinted bands */
.tags--c li{background:var(--rose-lt)}

/* ---- section labels larger still ---- */
.eyebrow{font-size:1.375rem;letter-spacing:.12em}
@media(max-width:640px){.eyebrow{font-size:1.0625rem}}

/* About hero: text and photo start level */
.hero__grid--top{align-items:start}

/* tighter bottom on selected bands */
.band--tight{padding-bottom:clamp(2.5rem,4.5vw,3.5rem)}

/* Brasileiros hero: close the gap between text and image */
.cols2{gap:clamp(1.5rem,3vw,2.5rem);align-items:center}

/* richer specialty tag colours */
.tags--a li{background:#CDBBE4}
.tags--b li{background:#E7CDB2}
.tags--c li{background:#EFBFCD}
.tags--d li{background:#BDD4C7}

/* footer legal aligned right on wide screens */
@media(min-width:760px){.foot__legal--right{text-align:right}}

/* let text fill its column so it sits closer to the image */
.cols2 .hero__lede{max-width:none}
@media(min-width:880px){.cols2{grid-template-columns:1.15fr .85fr}}

/* ---- header in plum ---- */
.masthead{background:var(--plum)}
.logotype{color:#F4EFF9}
.logotype span{color:#C2A6D6}
.nav a{color:#E6DCEF}
.nav a:hover{color:#fff;border-bottom-color:#C2A6D6}
.nav a[aria-current=page]{color:#fff;border-bottom-color:#C2A6D6}
.socials a{color:#C6B4D6}
.socials a:hover{color:#fff}

/* ---- rounded portrait ---- */
.portrait img{border-radius:18px}

/* ---- Brasileiros: text and image start level ---- */
.cols2{align-items:start}

/* ---- map sits beside the text ---- */
.mapfig{margin:0;max-width:none}

/* ---- contact: two columns with a rounded form card ---- */
.contactgrid{display:grid;gap:clamp(2rem,4vw,3.5rem);align-items:center}
@media(min-width:940px){.contactgrid{grid-template-columns:.85fr 1.15fr}}
.contactgrid__intro h1{margin-bottom:.5em}
.contactgrid__intro p{max-width:38ch;margin-inline:auto}
.contactgrid__intro .contact-details{border-top:1px solid var(--line);padding-top:1.4rem;margin-top:2rem}
.formcard{background:var(--white);border:1px solid var(--line);border-radius:22px;
  padding:clamp(1.75rem,3.5vw,2.75rem);box-shadow:0 18px 40px -28px rgba(46,33,64,.35)}
.formcard .form{max-width:none}
.formcard .field input,.formcard .field textarea{border-radius:12px;background:#FBF8F5}

/* ---- light pink band ---- */
:root{--pink-lt:#F7E4EA}
.band--pink{background:var(--pink-lt)}

/* ---- content images rounded like the headshot ---- */
.media__img img{border-radius:18px}
.mapfig img{border-radius:0}

/* ---- About hero: shorter photo, no dead space ---- */
.portrait--sm{max-width:25rem}
.portrait--sm img{aspect-ratio:1/1;object-position:center 18%}

/* ---- centred blocks keep their text tidy ---- */
.center .hero__lede,.center p{margin-inline:auto}

/* ---- specialty tags: all pastel, on-palette ---- */
.tags--a li{background:#D5C6E8}
.tags--b li{background:#EBD5BE}
.tags--c li{background:#F1CBD6}
.tags--d li{background:#DFD2DF}
.tags--rose li{background:#E7B3C2;color:var(--plum)}

/* ---- contact: intro aligned to top of the form card, send centred ---- */
.contactgrid{align-items:start}
.formcard .btn{display:block;margin-inline:auto}

/* ---- tighter vertical rhythm ---- */
.band{padding-block:clamp(2.75rem,5.5vw,4.75rem)}
.band--tight{padding-bottom:clamp(2rem,3.5vw,3rem)}

/* ---- narrower container pulls columns together ---- */
.wrap--narrow{max-width:62rem}
.media--tight{gap:clamp(1.25rem,2.5vw,2.25rem)}

/* ---- About: headline across the page ---- */
h1.h1--wide{font-size:clamp(2rem,4.2vw,3.2rem);max-width:none}

/* ---- keep the Brasileiros hero image level with the text ---- */
.portrait--sm{max-width:23rem}

/* About headline stays on one line, column vertically centred */
h1.h1--wide{text-wrap:normal}
.hero .cols2.media--tight{align-items:center}
.stack-head h1.h1--wide{max-width:none}

/* ---- video embed (vertical Short) ---- */
.video{max-width:19rem;margin:2rem auto 2.25rem;border-radius:18px;overflow:hidden;
  box-shadow:0 18px 40px -28px rgba(46,33,64,.45)}
.video iframe{display:block;width:100%;aspect-ratio:9/16;border:0}

/* ---- Brasileiros page: narrower text so lines break evenly ---- */
.cols2 .center .hero__lede,.cols2 .center p{max-width:34ch;margin-inline:auto}

/* ---- small square portrait for the contact page ---- */
.portrait--xs{max-width:15rem;margin:2rem auto 0}
.portrait--xs img{aspect-ratio:1/1;object-position:center 18%;border-radius:16px}

/* ---- calmer "accepting soon" tags ---- */
.tags--soon li{background:transparent;border:1px solid var(--line);color:var(--plum)}

/* ---- avoid single-word last lines ---- */
p,.hero__lede,.tags li{text-wrap:balance}

/* ---- About: centred photo in the stacked hero ---- */
.center .portrait--sm{margin:2rem auto 2.25rem}

/* ---- Brasileiros hero banner image ---- */
.media__img--banner{max-width:34rem;margin:2.5rem auto 0}
.media__img--banner img{aspect-ratio:16/10;object-fit:cover}

/* ---- Brasileiros hero: text left, photo right, tight ---- */
.brgrid{display:grid;gap:clamp(1.5rem,3vw,2.5rem);align-items:start}
@media(min-width:860px){.brgrid{grid-template-columns:1fr 1fr}}
.brgrid p{text-align:left;max-width:none;margin-inline:0;text-wrap:pretty}
.brgrid .hero__lede{max-width:none}
.brgrid .actions{justify-content:flex-start}
