/* ==========================================================================
   Let's Talk — site stylesheet
   ========================================================================== */

:root{
  --navy:#1E2C49;
  --navy-90:rgba(30,44,73,.9);
  --ink:#1E2C49;
  --body:#4A5568;
  --muted:#71809B;
  --paper:#FFFFFF;
  --sand:#EDF7F6;
  --sand-2:#DFF0EE;
  --line:#D9E7E5;
  --teal:#00A6A2;
  --teal-d:#00807D;
  --rust:#EF5B45;
  --rust-d:#D9432E;
  --amber:#F2A93B;
  --green:#00A6A2;
  --plum:#00807D;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --r:6px;
  --w:1260px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--body);font-family:var(--sans);
  font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:var(--teal-d);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4,h5{margin:0;font-family:var(--serif);color:var(--ink);font-weight:600;
  line-height:1.14;letter-spacing:-.018em;font-variation-settings:"SOFT" 0,"WONK" 0}
p{margin:0 0 1.1em}
p:last-child{margin-bottom:0}
ul,ol{margin:0 0 1.1em;padding-left:1.15em}
li{margin-bottom:.45em}
hr{border:0;border-top:1px solid var(--line);margin:0}
::selection{background:var(--teal);color:#fff}
:focus-visible{outline:2px solid var(--teal);outline-offset:3px}

.container{max-width:var(--w);margin:0 auto;padding:0 24px}
.narrow{max-width:760px}
.measure{max-width:34em}
.center{text-align:center}
.center .measure{margin-left:auto;margin-right:auto}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- type scale ---------- */
.h-xl{font-size:clamp(2.35rem,5.1vw,4.15rem);letter-spacing:-.028em}
.h-lg{font-size:clamp(1.95rem,3.5vw,3rem)}
.h-md{font-size:clamp(1.5rem,2.3vw,2.05rem)}
.h-sm{font-size:1.28rem}
.lede{font-size:clamp(1.06rem,1.35vw,1.22rem);color:var(--body)}
.kicker{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--teal);margin:0 0 14px}
.kicker.q{color:var(--amber)}
.small{font-size:.875rem}
.tiny{font-size:.78rem;color:var(--muted)}
.serif-q{font-family:var(--serif);font-size:clamp(1.4rem,2.5vw,2.15rem);line-height:1.28;
  color:var(--ink);letter-spacing:-.02em}

h1 em,h2 em{font-style:italic;font-weight:400;color:var(--amber)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.5em;font-family:var(--sans);font-size:.95rem;
  font-weight:600;padding:.82em 1.6em;border-radius:999px;border:1px solid transparent;
  cursor:pointer;transition:background .15s,color .15s,border-color .15s;text-decoration:none;line-height:1.2}
.btn:hover{text-decoration:none}
.btn-primary{background:var(--rust);color:#fff;box-shadow:0 8px 22px rgba(239,91,69,.28)}
.btn-primary:hover{background:var(--rust-d);color:#fff}
.btn-dark{background:var(--navy);color:#fff}
.btn-dark:hover{background:#0C1A2C;color:#fff}
.btn-outline{border-color:var(--line);color:var(--ink);background:transparent}
.btn-outline:hover{border-color:var(--teal);color:var(--teal-d);background:var(--sand)}
.btn-ghost-light{border-color:rgba(255,255,255,.55);color:#fff;
  background:rgba(16,29,48,.35);backdrop-filter:blur(4px)}
.btn-ghost-light:hover{background:rgba(255,255,255,.12);color:#fff}
.btn-light{background:#fff;color:var(--navy)}
.btn-light:hover{background:var(--sand);color:var(--navy)}
.btn-sm{font-size:.85rem;padding:.6em 1.1em}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* ---------- header ---------- */
.topbar{background:var(--navy);color:rgba(255,255,255,.72);font-size:.8rem}
.topbar .container{display:flex;align-items:center;gap:18px;min-height:38px;flex-wrap:wrap}
.topbar a{color:rgba(255,255,255,.82)}
.topbar .spacer{margin-left:auto}
.lang{display:inline-flex;border:1px solid rgba(255,255,255,.28);border-radius:var(--r);overflow:hidden}
.lang button{appearance:none;border:0;background:transparent;color:rgba(255,255,255,.72);
  font:700 .72rem/1 var(--sans);letter-spacing:.06em;padding:6px 10px;cursor:pointer}
.lang button[aria-pressed="true"]{background:#fff;color:var(--navy)}
.exitlink{font-weight:600}

.masthead{position:sticky;top:0;z-index:50;background:rgba(255,253,249,.95);
  backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--line)}
.masthead .container{display:flex;align-items:center;gap:18px;min-height:74px}
.brand{display:flex;align-items:center;gap:11px;color:var(--navy);text-decoration:none;flex:none}
.brand:hover{text-decoration:none}
.brand-name{font-family:var(--serif);font-size:1.32rem;font-weight:600;letter-spacing:-.03em;line-height:1}
.brand-sub{display:block;font-family:var(--sans);font-size:.58rem;letter-spacing:.19em;
  text-transform:uppercase;color:var(--muted);font-weight:600;margin-top:3px}
.nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.nav a{color:var(--ink);font-size:.88rem;font-weight:500;padding:8px 10px;border-radius:var(--r);white-space:nowrap}
.nav a:hover{background:var(--sand);color:var(--teal-d);text-decoration:none}
.nav a[aria-current="page"]{color:var(--teal-d);font-weight:600}
.nav-cta{margin-left:6px;white-space:nowrap}
.burger{display:none;margin-left:auto;appearance:none;background:transparent;border:1px solid var(--line);
  border-radius:var(--r);width:44px;height:40px;cursor:pointer;align-items:center;justify-content:center}
.burger span{display:block;width:18px;height:1.5px;background:var(--ink);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink)}
.burger span::before{top:-5px}.burger span::after{top:5px}
@media(max-width:1080px){
  .nav{position:fixed;inset:112px 0 auto;background:var(--paper);border-bottom:1px solid var(--line);
    flex-direction:column;align-items:stretch;gap:0;padding:8px 24px 20px;display:none}
  .nav.open{display:flex}
  .nav a{padding:13px 4px;border-bottom:1px solid var(--line);border-radius:0}
  .nav-cta{margin:14px 0 0}
  .burger{display:flex}
}

/* ---------- media panels ---------- */
/* A .media block shows a photograph when one exists at the given path, and a
   designed navy panel with the door motif when it does not. Never a placeholder. */
.media{position:relative;overflow:hidden;background:var(--navy);border-radius:var(--r)}
.media::before{content:"";position:absolute;inset:0;
  background-image:radial-gradient(130% 110% at 22% -10%,rgba(255,255,255,.13),transparent 62%),
  url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='128' viewBox='0 0 96 128'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.16' stroke-width='1.1'%3E%3Cpath d='M48 127V44a24 24 0 0 1 48 0v83'/%3E%3Cpath d='M0 127V44a24 24 0 0 1 48 0v83'/%3E%3Cpath d='M48 127V60a24 24 0 0 1 24-16'/%3E%3C/g%3E%3C/svg%3E");
  background-size:cover,96px 128px;background-position:center,center bottom}
.media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 40%,rgba(9,18,31,.55))}
.media > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}
.media-4x5{aspect-ratio:4/5}
.media-3x2{aspect-ratio:3/2}
.media-1x1{aspect-ratio:1/1}
.media-cap{position:absolute;bottom:0;left:0;right:0;z-index:3;padding:20px 22px;color:#fff;
  font-size:.82rem;background:linear-gradient(transparent,rgba(10,20,34,.85))}

/* ---------- hero ---------- */
.hero{position:relative;background:var(--navy);color:#fff;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;
  background-image:var(--hero-img,url("../images/hero.webp")),url("../images/hero-art.svg");
  background-size:cover,cover;background-position:var(--hero-pos,58% 42%),center;opacity:1}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(96deg,rgba(16,29,48,.94) 0%,rgba(16,29,48,.86) 30%,rgba(16,29,48,.55) 55%,rgba(16,29,48,.18) 80%,rgba(16,29,48,.28) 100%),
  linear-gradient(180deg,rgba(16,29,48,.55) 0%,rgba(16,29,48,.10) 26%,rgba(16,29,48,.10) 62%,rgba(16,29,48,.60) 100%)}
.hero .container{position:relative;z-index:3;padding-top:150px;padding-bottom:140px;min-height:78vh;
  display:flex;flex-direction:column;justify-content:center}
.hero h1{color:#fff;max-width:19ch}
.hero .h-xl{max-width:21ch;text-shadow:0 2px 24px rgba(10,20,34,.5)}
.hero .lede{color:rgba(255,255,255,.9);max-width:34ch;margin-top:22px;text-shadow:0 1px 14px rgba(10,20,34,.55)}
.hero .kicker{color:#4FD1CC;display:flex;gap:13px;flex-wrap:wrap;align-items:center}
.hero .kicker s{text-decoration:none;opacity:.4}
.hero .btn-row{margin-top:32px}
.hero-facts{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:36px;padding-top:20px;max-width:470px;
  border-top:1px solid rgba(255,255,255,.22);font-size:.82rem;color:rgba(255,255,255,.8)}
.hero-sm .container{padding-top:76px;padding-bottom:72px}
.hero-sm::before{background-position:center 40%;opacity:.5}

/* ---------- sections ---------- */
.section{padding:96px 0}
.section-sm{padding:64px 0}
.bg-sand{background:var(--sand)}
.bg-navy{background:var(--navy);color:rgba(255,255,255,.82)}
.bg-navy h1,.bg-navy h2,.bg-navy h3{color:#fff}
.bg-navy .kicker{color:#4FD1CC}
.bg-white{background:#fff}
.rule-top{border-top:1px solid var(--line)}
.sec-head{margin-bottom:52px}
.sec-head .lede{margin-top:16px}

.grid{display:grid;gap:28px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split-40{grid-template-columns:.8fr 1.2fr}
@media(max-width:1000px){.g4,.g5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.split,.split-40{grid-template-columns:1fr;gap:34px}
  .g2,.g3,.g4,.g5{grid-template-columns:1fr}.section{padding:68px 0}}
.order-first{order:-1}

/* ---------- cards ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px}
.card h3{margin-bottom:10px}
.card p{color:var(--body);font-size:.97rem}
.card-link{display:block;color:inherit;transition:border-color .15s,transform .15s}
.card-link:hover{text-decoration:none;border-color:var(--ink)}

/* route cards on the home page */
.route{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:0;overflow:hidden;color:inherit}
.route:hover{text-decoration:none;border-color:var(--navy)}
.route .bar{height:4px;background:var(--c,var(--rust))}
.route .inner{padding:26px 24px 24px;display:flex;flex-direction:column;flex:1}
.route .stage{font-size:.7rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--c,var(--rust))}
.route h3{font-size:1.42rem;margin:9px 0 8px}
.route .ask{font-family:var(--serif);font-size:1.02rem;color:var(--body);line-height:1.35;margin-bottom:18px}
.route dl{margin:auto 0 0;padding-top:16px;border-top:1px solid var(--line);font-size:.85rem}
.route dt{font-weight:600;color:var(--ink)}
.route dd{margin:2px 0 0;color:var(--muted)}
.route .more{margin-top:16px;font-size:.88rem;font-weight:600;color:var(--c,var(--rust))}

/* numbered steps */
.steps{counter-reset:s;display:grid;gap:0}
.step{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:26px 0;border-top:1px solid var(--line)}
.step:last-child{border-bottom:1px solid var(--line)}
.step .n{font-family:var(--serif);font-size:1.6rem;color:var(--teal);font-weight:600;line-height:1.1}
.step h3{font-size:1.16rem;margin-bottom:6px}
.step p{font-size:.97rem;margin:0}
@media(max-width:600px){.step{grid-template-columns:44px 1fr;gap:14px}}

/* the eight doors */
.doors{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:900px){.doors{grid-template-columns:repeat(2,minmax(0,1fr))}}
.door{background:#fff;border:1px solid var(--line);border-radius:110px 110px var(--r) var(--r);
  padding:26px 20px 24px;text-align:center;min-height:236px;display:flex;flex-direction:column;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.door:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(30,44,73,.09);border-color:#A8DCDA}
.door-arch{display:flex;align-items:center;justify-content:center;height:46px;color:var(--teal-d)}
.door-icon{width:28px;height:28px}
.door:hover .door-icon{color:var(--rust)}
.door .n{font-family:var(--serif);font-size:.78rem;color:var(--teal);font-weight:700;letter-spacing:.1em}
.door h3{font-size:1.02rem;margin:8px 0 8px}
.door p{font-size:.83rem;color:var(--muted);margin:0;line-height:1.5}
.door::after{content:"";position:relative;display:block;width:6px;height:6px;border-radius:50%;
  background:var(--teal);align-self:flex-end;margin-top:auto;right:2px}

/* status legend */
.legend{display:flex;gap:24px;flex-wrap:wrap;font-size:.85rem;color:var(--body)}
.swatch{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:8px;vertical-align:-1px}
.sw-open{background:var(--green)}.sw-half{background:var(--amber)}.sw-shut{background:var(--rust)}

/* books */
/* A cover is drawn the same way wherever it appears — inside a .book card, in a
   hero, or on its own. It used to size only inside .book, so a cover placed
   anywhere else collapsed to zero by zero and silently vanished: the Let's Talk
   About Sex page had an invisible book on it for weeks. Base rules first. */
.cover{display:flex;flex-direction:column;justify-content:flex-end;position:relative;
  aspect-ratio:2/3;width:100%;padding:22px;color:#fff;border-radius:6px;overflow:hidden;
  box-shadow:0 14px 34px rgba(30,44,73,.22)}
.cover-img{background-size:cover;background-position:center;padding:0}
.book{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;color:inherit;display:block}
.book:hover{text-decoration:none;border-color:var(--navy)}
.book .cover{border-radius:0;box-shadow:none}
.book .cover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:8px;background:rgba(0,0,0,.2)}
.book .cover span{position:relative;font-family:var(--serif);font-size:1.28rem;line-height:1.1;letter-spacing:-.02em}
.book .cover small{position:relative;font-size:.63rem;letter-spacing:.16em;text-transform:uppercase;
  font-weight:700;opacity:.85;margin-bottom:8px}
.book .body{padding:18px 20px 22px}
.book .body h4{font-size:.98rem;margin-bottom:6px}
.book .body p{font-size:.86rem;color:var(--muted);margin:0}
.cv-1{background:#1E2C49}.cv-2{background:#00807D}.cv-3{background:#EF5B45}
.cv-4{background:#C2334D}.cv-5{background:#00A6A2}

/* table */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
table.t{width:100%;border-collapse:collapse;font-size:.94rem;min-width:620px}
table.t th{text-align:left;font-size:.7rem;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);
  font-weight:700;padding:14px 18px;background:var(--sand);border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:15px 18px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--body)}
table.t tr:last-child td{border-bottom:0}
table.t td strong{color:var(--ink);font-family:var(--serif);font-weight:600;font-size:1rem}

/* pricing */
.price{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px;display:flex;flex-direction:column}
.price.featured{border-color:var(--teal);border-width:2px}
.price .tag{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--teal-d)}
.price h3{font-size:1.3rem;margin:10px 0 4px}
.price .amt{font-family:var(--serif);font-size:2.1rem;color:var(--ink);font-weight:600;margin:14px 0 2px}
.price .alt{font-size:.85rem;color:var(--muted);margin-bottom:18px}
.price ul{list-style:none;padding:0;margin:0 0 24px;font-size:.92rem}
.price li{padding:9px 0 9px 22px;border-bottom:1px solid var(--line);position:relative;margin:0}
.price li::before{content:"";position:absolute;left:0;top:16px;width:9px;height:9px;border-radius:2px;background:var(--green)}
.price .btn{margin-top:auto}

/* quotes */
.quote{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:28px}
.quote blockquote{margin:0 0 16px;font-family:var(--serif);font-size:1.08rem;line-height:1.42;color:var(--ink)}
.quote cite{font-style:normal;font-size:.84rem;color:var(--muted);font-weight:600}

/* faq */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;padding:22px 40px 22px 0;font-family:var(--serif);font-size:1.1rem;
  color:var(--ink);position:relative;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:6px;top:20px;font-size:1.35rem;color:var(--teal);font-family:var(--sans)}
.faq details[open] summary::after{content:"–"}
.faq .a{padding:0 40px 24px 0;font-size:.98rem}

/* notice */
.notice{background:#fff;border:1px solid var(--line);border-left:4px solid var(--plum);
  border-radius:0 var(--r) var(--r) 0;padding:26px 30px}
.notice h3{font-size:1.15rem;margin-bottom:8px}
.notice p{font-size:.95rem;margin:0}

/* stats */
.stat{text-align:center}
.stat .v{font-family:var(--serif);font-size:clamp(2.1rem,3.6vw,3.1rem);color:var(--teal);font-weight:600;line-height:1}
.stat .l{font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-top:10px}

/* cta strip */
.cta{background:var(--navy);color:#fff;border-radius:var(--r);padding:64px 48px;text-align:center}
.cta h2{color:#fff;max-width:22ch;margin:0 auto 14px}
.cta p{color:rgba(255,255,255,.8);max-width:46ch;margin:0 auto 28px}
.cta .btn-row{justify-content:center}
@media(max-width:600px){.cta{padding:44px 24px}}

/* footer */
.footer{background:var(--navy);color:rgba(255,255,255,.68);font-size:.92rem;padding:66px 0 30px}
.footer a{color:rgba(255,255,255,.78)}
.footer a:hover{color:#fff}
.footer .cols{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:34px;margin-bottom:46px}
@media(max-width:880px){.footer .cols{grid-template-columns:1fr 1fr}}
.footer h5{font-family:var(--sans);font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;
  color:#4FD1CC;font-weight:700;margin-bottom:14px}
.footer ul{list-style:none;padding:0;margin:0}
.footer li{margin-bottom:9px}
.footer .brand{color:#fff;margin-bottom:14px}
.footer .brand-sub{color:rgba(255,255,255,.5)}
.footer .base{border-top:1px solid rgba(255,255,255,.14);padding-top:22px;display:flex;
  justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.8rem;color:rgba(255,255,255,.45)}

/* breadcrumb */
.crumb{font-size:.82rem;color:rgba(255,255,255,.6);margin-bottom:20px}
.crumb a{color:rgba(255,255,255,.75)}

/* assessment app */
.app{max-width:720px;margin:0 auto}
.progress{height:4px;background:var(--sand-2);border-radius:99px;overflow:hidden;margin-bottom:10px}
.progress i{display:block;height:100%;background:var(--teal);width:0;transition:width .28s}
.qmeta{display:flex;justify-content:space-between;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);font-weight:700;margin-bottom:28px}
.qcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:34px 30px}
.qdomain{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--teal);margin-bottom:12px}
.qtext{font-family:var(--serif);font-size:clamp(1.3rem,2.4vw,1.7rem);color:var(--ink);line-height:1.24;margin-bottom:8px}
.qhelp{font-size:.9rem;color:var(--muted);margin-bottom:24px}
.opts{display:flex;flex-direction:column;gap:9px}
.opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;cursor:pointer;font-size:.98rem;background:var(--paper);transition:border-color .13s,background .13s}
.opt:hover{border-color:var(--teal);background:#fff}
.opt[aria-checked="true"]{border-color:var(--teal);background:#F0FAF9;font-weight:500}
.opt .r{flex:none;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--muted);margin-top:3px}
.opt[aria-checked="true"] .r{border-color:var(--teal);background:var(--teal);box-shadow:inset 0 0 0 3px #fff}
.qnav{display:flex;justify-content:space-between;gap:12px;margin-top:26px}

.map{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media(max-width:820px){.map{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mdoor{border-radius:100px 100px var(--r) var(--r);padding:26px 14px 20px;text-align:center;color:#fff;
  min-height:172px;display:flex;flex-direction:column;justify-content:center}
.mdoor .n{font-size:.66rem;letter-spacing:.13em;font-weight:700;opacity:.8}
.mdoor h3{font-size:.95rem;color:#fff;margin:7px 0 8px}
.mdoor .s{font-size:.64rem;letter-spacing:.11em;text-transform:uppercase;font-weight:700;opacity:.92}
.mdoor.open{background:var(--green)}
.mdoor.half{background:var(--amber);color:#3A2705}
.mdoor.half h3{color:#3A2705}
.mdoor.shut{background:var(--rust)}
.prio{border:1px solid var(--line);border-left:4px solid var(--rust);border-radius:0 var(--r) var(--r) 0;
  background:#fff;padding:24px 26px;margin-bottom:14px}
.prio .rank{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--rust)}
.prio h3{font-size:1.2rem;margin:5px 0 8px}
.prio .why{font-size:.94rem;color:var(--body);margin-bottom:16px}
.scores{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}
.sc{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;font-size:.66rem;letter-spacing:.1em;
  text-transform:uppercase;font-weight:700;color:var(--muted)}
.sc b{display:block;font-family:var(--serif);font-size:1.28rem;letter-spacing:0;text-transform:none;color:var(--ink);margin-top:2px}
.pill{display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  padding:4px 9px;border-radius:99px;color:#fff}
.pill.open{background:var(--green)}.pill.half{background:var(--amber);color:#3A2705}.pill.shut{background:var(--rust)}
.hidden{display:none}

/* forms */
.field{margin-bottom:18px}
.field label{display:block;font-size:.84rem;font-weight:600;color:var(--ink);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;font:400 1rem/1.5 var(--sans);color:var(--ink);
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--teal);outline:none}
.form-note{font-size:.82rem;color:var(--muted)}

/* prose pages */
.prose h2{font-size:1.5rem;margin:38px 0 12px}
.prose h3{font-size:1.15rem;margin:28px 0 8px}
.prose p,.prose li{font-size:1rem}
.prose>:first-child{margin-top:0}

@media print{.masthead,.topbar,.footer,.btn{display:none}}

@media(max-width:820px){
  .hero .container{padding-top:96px;padding-bottom:96px;min-height:0}
  .hero::before{background-image:var(--hero-img,url("../images/hero-mobile.webp")),url("../images/hero-art.svg");
    background-position:50% 34%,center}
  /* Lighter than it was: the old .86/.72/.92 was tuned while the photograph was
     404ing, so it was really hiding a flat navy panel. With the couple back the
     same veil buries them. White type still clears AA against .62 navy over this
     photograph, and the headline carries a text-shadow besides. */
  .hero::after{background:linear-gradient(180deg,rgba(16,29,48,.80) 0%,rgba(16,29,48,.62) 45%,rgba(16,29,48,.90) 100%)}
  .hero .h-xl,.hero .lede{max-width:none}
}

/* ==========================================================================
   Home page structure — ticker, stage picker, feature rows, bands, seasons
   ========================================================================== */

/* scrolling ticker of the eight conversations */
.ticker{background:var(--navy);color:rgba(255,255,255,.7);overflow:hidden;white-space:nowrap;
  padding:16px 0 74px;border-top:1px solid rgba(255,255,255,.08);position:relative;z-index:1}
.ticker div{display:inline-block;animation:tick 46s linear infinite;
  font-family:var(--serif);font-size:1.05rem;letter-spacing:-.01em}
.ticker b{font-weight:400;color:#4FD1CC;margin:0 18px}
.ticker span{opacity:.4}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ticker div{animation:none}}

/* the raised "where are you" card, overlapping the ticker */
.picker{margin-top:-52px;position:relative;z-index:10;padding-bottom:96px}
.picker-card{background:#fff;border:1px solid var(--line);border-radius:10px;
  padding:36px 32px 32px;box-shadow:0 24px 60px rgba(30,44,73,.13)}
.picker-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;margin-bottom:26px}
.picker-head h2{font-size:clamp(1.6rem,2.6vw,2.15rem)}
.picker-head p{font-size:.95rem;color:var(--muted);margin:0}
@media(max-width:820px){.picker{margin-top:-36px;padding-bottom:64px}.picker-card{padding:26px 20px 22px}}

/* alternating feature rows */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;padding:88px 0;
  border-top:1px solid var(--line)}
.feature:first-of-type{border-top:0;padding-top:96px}
.feature.flip .feature-media{order:2}
@media(max-width:940px){.feature{grid-template-columns:1fr;gap:34px;padding:60px 0}
  .feature.flip .feature-media{order:0}}
.feature-media .media{aspect-ratio:4/5;border-radius:10px}
.feature-media .media-3x2{aspect-ratio:3/2}
.feature .num{font-family:var(--serif);font-size:3.6rem;line-height:.8;color:var(--c,var(--teal));
  opacity:.22;font-weight:600;margin-bottom:6px}
.feature .tagpill{display:inline-block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:700;color:#fff;background:var(--c,var(--teal));padding:6px 12px;border-radius:99px;margin-bottom:14px}
.feature h2{font-size:clamp(1.7rem,2.8vw,2.5rem);margin-bottom:16px}
.feature .lede{margin-bottom:20px}
.feature ul.checks{list-style:none;padding:0;margin:22px 0 24px}
.feature ul.checks li{position:relative;padding:11px 0 11px 28px;border-bottom:1px solid var(--line);
  font-size:.97rem;color:var(--ink);margin:0}
.feature ul.checks li::before{content:"";position:absolute;left:0;top:19px;width:10px;height:10px;
  border-radius:2px;background:var(--c,var(--teal))}
.feature .outcome{font-size:.93rem;color:var(--muted);margin-bottom:22px}
.feature .outcome strong{color:var(--ink)}

/* full-bleed image band with a statement over it */
.band{position:relative;background:var(--navy);color:#fff;overflow:hidden}
.band::before{content:"";position:absolute;inset:0;background-image:var(--band-img);
  background-size:cover;background-position:center;opacity:.55}
.band::after{content:"";position:absolute;inset:0;
  background:linear-gradient(96deg,rgba(16,29,48,.93) 0%,rgba(16,29,48,.78) 42%,rgba(16,29,48,.38) 100%)}
.band .container{position:relative;z-index:3;padding:104px 24px}
.band h2{color:#fff;max-width:19ch}
.band p{color:rgba(255,255,255,.85)}
.band .kicker{color:#4FD1CC}
.band cite{display:block;margin-top:24px;font-style:normal;font-size:.78rem;letter-spacing:.13em;
  text-transform:uppercase;color:rgba(255,255,255,.55);font-weight:700}
@media(max-width:820px){.band .container{padding:68px 24px}}

/* seasons strip */
.seasons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);
  border-radius:10px;overflow:hidden;background:#fff}
@media(max-width:900px){.seasons{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.seasons{grid-template-columns:1fr}}
.season{padding:30px 24px;border-right:1px solid var(--line)}
.season:last-child{border-right:0}
.season .k{font-family:var(--serif);font-size:2rem;color:var(--line);font-weight:600;line-height:1}
.season h3{font-size:1.18rem;margin:8px 0 9px}
.season p{font-size:.9rem;color:var(--muted);margin:0}
.season .tag{display:inline-block;margin-top:14px;font-size:.63rem;letter-spacing:.12em;
  text-transform:uppercase;font-weight:700;color:var(--teal-d);background:var(--sand);
  padding:5px 10px;border-radius:99px}

/* statement band — v3 style: plum-to-ember gradient, two-line white/amber heading */
.band-state::before{background-image:linear-gradient(135deg,#241430 0%,#3A1D3E 34%,#6B2F52 62%,#A34E44 86%,#C8842F 112%);opacity:1}
.band-state::after{background:radial-gradient(120% 130% at 82% 108%,rgba(233,163,59,.28),transparent 55%),
  linear-gradient(180deg,rgba(16,20,38,.42),rgba(16,20,38,.18) 45%,rgba(16,20,38,.4))}
.band-state .container{padding:128px 24px 122px}
.band-state h2{font-size:clamp(2.15rem,4.9vw,4.2rem);line-height:1.12;max-width:none;letter-spacing:-.025em}
.band-state h2 em{font-weight:300}
.band-state cite{margin-top:34px}
@media(max-width:820px){.band-state .container{padding:84px 24px}}

/* forced line breaks in display headings collapse on small screens */
@media(max-width:680px){br.lb{display:none}}

/* the two colour panels: Guides (navy) and Church (green) */
.panel{border-radius:24px;padding:clamp(36px,4.5vw,64px) clamp(28px,3.6vw,52px);
  color:rgba(255,255,255,.87);display:flex;flex-direction:column;align-items:flex-start}
.panel .kicker{color:#F2C063}
.panel h3{color:#fff;font-size:clamp(1.6rem,2.4vw,2.15rem);margin:4px 0 14px;letter-spacing:-.02em}
.panel p{font-size:1rem;margin-bottom:26px}
.panel .btn{margin-top:auto}
.panel-navy{background:linear-gradient(150deg,#1B2A47 0%,#26395F 55%,#33456F 100%)}
.panel-green{background:linear-gradient(150deg,#0C4A3E 0%,#166B52 60%,#1F7A5B 100%)}

/* the stage index — editorial rows, no boxes */
.stagelist{display:flex;flex-direction:column}
.srow{display:grid;grid-template-columns:64px 190px 1fr auto 34px;gap:22px;align-items:center;
  padding:27px 14px 27px 18px;border-top:1px solid var(--line);color:inherit;position:relative;
  transition:background .16s}
.srow:last-child{border-bottom:1px solid var(--line)}
.srow:hover{background:var(--sand);text-decoration:none}
.srow::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c);
  transform:scaleY(0);transform-origin:top;transition:transform .2s}
.srow:hover::before{transform:scaleY(1)}
.sn{font-family:var(--serif);font-weight:400;font-size:1.35rem;color:var(--muted);opacity:.55;
  transition:color .16s,opacity .16s}
.srow:hover .sn{color:var(--c);opacity:1}
.sname{font-family:var(--serif);font-weight:600;font-size:1.5rem;color:var(--ink);letter-spacing:-.02em;
  line-height:1.1}
.sq{font-family:var(--serif);font-style:italic;font-weight:400;font-size:1.06rem;color:var(--body);
  line-height:1.35}
.smeta{font-size:.8rem;color:var(--muted);white-space:nowrap;text-align:right}
.sarr{font-size:1.25rem;color:var(--c);transition:transform .18s}
.srow:hover .sarr{transform:translateX(6px)}
@media(max-width:960px){
  .srow{grid-template-columns:44px 1fr 30px;grid-template-areas:"n name arr" ". q arr" ". meta arr";
    gap:4px 16px;padding:22px 8px}
  .sn{grid-area:n;font-size:1.1rem}
  .sname{grid-area:name;font-size:1.3rem}
  .sq{grid-area:q}
  .smeta{grid-area:meta;text-align:left;white-space:normal;margin-top:4px}
  .sarr{grid-area:arr;align-self:center}
}

/* anchored sections clear the sticky header */
.feature{scroll-margin-top:96px}

/* the Sex band: built from the cover itself — sheet texture, white and crimson */
.band-sex{position:relative;background:#F7F5F1;overflow:hidden}
.band-sex::before{content:"";position:absolute;inset:0;background-image:url("../images/sheets.webp");
  background-size:cover;background-position:center 30%;opacity:.55}
.band-sex::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(250,248,245,.95) 0%,rgba(250,248,245,.82) 52%,rgba(250,248,245,.4) 100%)}
.band-sex .container{position:relative;z-index:3;padding:96px 24px;display:grid;
  grid-template-columns:1.15fr .85fr;gap:64px;align-items:center}
.band-sex .kicker{color:#A31F24}
.band-sex h2{color:var(--ink)}
.band-sex h2 em{color:#A31F24;font-weight:400}
.band-sex .lede{color:var(--body);max-width:36em}
.band-sex .btn-primary{background:#A31F24;box-shadow:0 8px 22px rgba(163,31,36,.3)}
.band-sex .btn-primary:hover{background:#821419}
.band-sex .btn-outline:hover{border-color:#A31F24;color:#A31F24;background:#FBF1F0}
.bookshot{width:min(320px,80%);justify-self:center;border-radius:6px;
  box-shadow:0 18px 28px rgba(40,20,18,.18),0 44px 80px rgba(40,20,18,.28);
  transform:rotate(1.5deg)}
@media(max-width:880px){.band-sex .container{grid-template-columns:1fr;gap:40px;padding:64px 24px}
  .bookshot{width:min(260px,70%)}}
/* book cards that carry real cover art */
.book .cover-img{background-size:cover;background-position:center}
.book .cover-img::before{display:none}

/* the maps-fit-together strip */
.mapflow{text-align:center;max-width:46em;margin:64px auto 0}
.mapflow .serif-q{margin-bottom:14px}
.mapflow p{color:var(--body)}
.maps{display:flex;flex-wrap:wrap;gap:10px 14px;justify-content:center;align-items:center;margin-top:22px}
.maps span{font-size:.8rem;font-weight:700;letter-spacing:.04em;color:var(--c);
  border:1.5px solid var(--c);border-radius:999px;padding:7px 16px;white-space:nowrap}
.maps i{font-style:normal;color:var(--muted);font-size:.95rem}

/* Hero photograph as a real element. A url() inside a CSS custom property
   resolves against the stylesheet, not the page, which silently broke every
   hero photo — this cannot happen to an <img src>. */
.hero .hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:58% 42%;z-index:1}
.hero::after{z-index:2}

/* The wordmark carries the logo's two colours: navy, then coral. */
.brand-name em{font-style:normal;color:var(--rust)}
.footer .brand-name em{color:var(--rust)}

/* ==========================================================================
   Conversation cards. The arch was a nice idea that stopped scaling: at eight
   across it wasted the top third of every card on empty curve. These carry
   the same information in the space it actually needs — number, how charged
   the subject runs, how long it takes, and the icon as a watermark rather
   than a photograph, because eight photographs is a slow page in Douala.
   ========================================================================== */
.doors{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:1000px){.doors{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.doors{grid-template-columns:1fr}}

.dcard{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:18px 18px 14px;display:flex;flex-direction:column;min-height:214px;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.dcard:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(30,44,73,.10)}
.dcard-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.dcard-n{font:700 15px/1 var(--serif);letter-spacing:.02em;color:var(--accent)}
.dcard-badge{font:700 9.5px/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;
  padding:5px 9px;border-radius:999px;white-space:nowrap}
.dcard-badge.calm{background:#EAF6F5;color:var(--teal-d)}
.dcard-badge.warm{background:#FDF1E4;color:#B57A00}
.dcard-badge.hot{background:#FDE9E4;color:var(--rust-d)}
.dcard-body{position:relative;z-index:2}
.dcard h3{font:400 1.16rem/1.2 var(--serif);color:var(--ink);margin:0 0 8px;max-width:11ch}
.dcard p{font:400 .86rem/1.5 var(--sans);color:var(--muted);margin:0;max-width:30ch}
.dcard-mark{position:absolute;right:-14px;top:44px;color:var(--accent);opacity:.13;
  pointer-events:none;z-index:1}
.dcard-mark svg{width:104px;height:104px;stroke-width:1.1}
.dcard:hover .dcard-mark{opacity:.2}
.dcard-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:14px;
  border-top:1px solid var(--line);position:relative;z-index:2}
.dcard-time{font:600 11.5px/1 var(--sans);color:var(--muted)}
.dcard-time::before{content:"◷ ";opacity:.7}
.dcard-dots{display:flex;gap:4px;margin-left:auto}
.dcard-dots i{width:7px;height:7px;border-radius:50%;background:rgba(30,44,73,.13)}
.dcard-dots i.on{background:var(--accent)}
.dcard-go{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--accent);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1;
  transition:background .18s ease,color .18s ease}
.dcard:hover .dcard-go{background:var(--accent);color:#fff}
.dcard.amber{--accent:#E39B1F}
.dcard.green{--accent:#2E8B57}
.dcard.navy{--accent:#3B5EA8}
.dcard.rose{--accent:#D4356B}
.dcard.rust{--accent:#E0572F}
.dcard.violet{--accent:#7A5AC7}
.dcard.teal{--accent:#00807D}

/* A card that leads with a cover. Used on the Pre-Marriage page so the book and
   the Course are seen, not merely named — a workbook nobody has seen the front
   of does not read as a real thing you can hold. */
.card-cover{display:block;width:112px;margin:0 0 16px;border-radius:6px;overflow:hidden;
  box-shadow:0 6px 18px rgba(30,44,73,.18)}
.card-cover .cover{aspect-ratio:2/3;display:block;background-size:cover;background-position:center}

/* Three numbered steps. Used where the order matters more than the parity —
   what the member does, what they bring, what the church teaches. */
.flow-3{display:grid;gap:26px 40px;grid-template-columns:repeat(3,1fr);margin-top:34px}
.flow-3>div{position:relative;padding-left:56px}
.flow-n{position:absolute;left:0;top:-2px;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;background:var(--navy);color:#fff;
  font:600 16px/1 var(--sans)}
.flow-3 p{font-size:.92rem;color:var(--muted);margin:8px 0 0}
@media(max-width:820px){.flow-3{grid-template-columns:1fr;gap:22px}}

/* A hero that leads with the book. The cover is the argument on a page about a
   book, so it is not tucked at the bottom where only a scroller finds it. */
.hero-book .container{display:grid;grid-template-columns:1fr 260px;gap:56px;align-items:center}
.hero-book .hero-cover{width:100%;transform:rotate(-3deg)}
.hero-book .hero-cover .cover{box-shadow:0 26px 60px rgba(0,0,0,.42)}
@media(max-width:900px){
  .hero-book .container{grid-template-columns:1fr}
  .hero-book .hero-cover{max-width:180px;margin-top:26px;transform:none}
}
