/* Felicia Edmond, one page site (2026-11-10 rebuild).
   Hero from Raiona's Sample 01 (hero test v7): her cutout on the leaf shadow wall, words on wine,
   her name faint behind her and sharpening under the mouse. The rest of the page carries the same
   wine, cream and rose, the same serif, and the same calm motion: words rise, photos are revealed
   by a curtain, nothing loops. */

/* ---------- Header ---------- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 50; transition: background-color .5s var(--ease-soft), box-shadow .5s var(--ease-soft); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: 84px; width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; transition: min-height .5s var(--ease-soft); }
.brand { position: relative; display: block; width: 118px; }
.brand img { width: 118px; transition: opacity .4s var(--ease-soft); }
.brand__light { position: absolute; inset: 0; opacity: 0; }
.nav-toggle { display: inline-flex; align-items: center; gap: .6em; min-height: 44px; padding: 0 1.1rem; border-radius: 999px; font: 500 1rem var(--font); cursor: pointer; color: var(--wine-800); border: 1px solid rgb(61 21 48 / .45); background: rgb(246 239 230 / .55); }
.nav-toggle__bars, .nav-toggle__bars::before, .nav-toggle__bars::after { display: block; width: 16px; height: 1.5px; background: currentColor; position: relative; }
.nav-toggle__bars::before, .nav-toggle__bars::after { content: ""; position: absolute; left: 0; }
.nav-toggle__bars::before { top: -5px; }
.nav-toggle__bars::after { top: 5px; }
.site-nav { display: none; color: var(--cream); }
.site-nav.is-open { display: block; position: absolute; inset: 100% 0 auto 0; padding: 1rem var(--gutter) 2rem; background: var(--wine-950); }
.site-nav ul { list-style: none; margin: 0 0 1.5rem; padding: 0; }
.site-nav li a { display: flex; align-items: center; min-height: 48px; text-decoration: none; font-size: 1.25rem; }
.site-nav a[aria-current] { color: var(--rose); }
/* After scrolling past the top: a wine bar, white logo */
.site-header.is-scrolled { background: rgb(31 10 23 / .92); box-shadow: 0 1px 0 var(--rule-dark); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.site-header.is-scrolled .site-header__inner { min-height: 68px; }
.site-header.is-scrolled .brand__dark { opacity: 0; }
.site-header.is-scrolled .brand__light { opacity: 1; }
.site-header.is-scrolled .nav-toggle { color: var(--cream); border-color: rgb(246 239 230 / .45); background: transparent; }
@media (min-width: 960px) {
  .nav-toggle { display: none; }
  .site-nav, .site-nav.is-open { display: flex; align-items: center; gap: 2.5rem; position: static; padding: 0; background: none; }
  .site-nav ul { display: flex; gap: 2rem; margin: 0; }
  .site-nav li a { position: relative; min-height: 44px; font-size: 1.0625rem; }
  .site-nav li a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 10px; height: 1px; background: var(--rose); transform: scaleX(0); transform-origin: right; transition: transform .5s var(--ease-out); }
  .site-nav li a:hover::after, .site-nav li a[aria-current]::after { transform: scaleX(1); transform-origin: left; }
}

/* ---------- Hero ---------- */
.hero { --lx: 75%; --ly: 40%; --fade: 1; position: relative; overflow: hidden; isolation: isolate; display: grid; grid-template-columns: 1fr;
  background: radial-gradient(60rem 44rem at 80% 30%, rgb(138 79 114 / .5), transparent 62%), linear-gradient(160deg, var(--wine-800) 0%, var(--wine-900) 55%, var(--wine-950) 100%); }
.hero__light { position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(34rem 34rem at var(--lx) var(--ly), rgb(226 172 163 / .13), transparent 70%); }
.hero__stage { position: relative; height: clamp(360px, 50svh, 470px); overflow: hidden; }
.hero__wall { position: absolute; inset: 0; background: url("../images/beige-wall.webp") 20% 50% / cover no-repeat;
  -webkit-mask-image: linear-gradient(to bottom, black 68%, transparent 100%); mask-image: linear-gradient(to bottom, black 68%, transparent 100%); }
.hero__cutout { position: absolute; z-index: 2; bottom: 0; left: 50%; translate: -50% 0; height: 88%; width: auto; max-width: none; }
.hero__copy-wrap { position: relative; z-index: 3; padding: .5rem var(--gutter) 3rem; }
.hero__copy { opacity: var(--fade); }
.hero h1 { margin: 0; font-size: var(--text-hero); line-height: .98; letter-spacing: -.025em; color: var(--cream); }
.line { display: block; overflow: hidden; padding-bottom: .08em; margin-bottom: -.08em; }
.line__in { display: inline-block; }
.hero h1 em { font-style: italic; color: var(--rose); letter-spacing: -.035em; padding-right: .06em; }
.hero__lede { margin: 1.5rem 0 0; max-width: 34ch; font-size: var(--text-lg); line-height: 1.45; color: var(--cream); }
.hero__actions { margin-top: 2rem; }
.hero__note { margin: 1rem 0 0; font-style: italic; color: var(--on-wine-muted); }

/* Her name on the wall */
.name { position: absolute; z-index: 1; left: 3%; right: 3%; top: 15%; height: 30%; pointer-events: none; }
.name canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.name__fallback { position: absolute; inset: 0; display: grid; place-items: center; font-weight: 600; font-size: clamp(5rem, 24vw, 16rem); line-height: 1; color: rgb(var(--name-ink) / .16); filter: blur(8px); white-space: nowrap; }
.name.is-canvas .name__fallback { display: none; }

@media (min-width: 1000px) {
  .hero { grid-template-columns: 52% 48%; min-height: min(100svh, 980px); }
  .hero__stage { height: auto; overflow: visible; }
  .hero__wall { inset: 0 -16% 0 0; background-image: url("../images/beige-wall.webp"); background-position: 0% 50%;
    -webkit-mask-image: linear-gradient(to right, black 58%, rgb(0 0 0 / .55) 78%, transparent 100%); mask-image: linear-gradient(to right, black 58%, rgb(0 0 0 / .55) 78%, transparent 100%); }
  .hero__cutout { height: 78%; left: 48%; }
  .name { left: 2%; right: -4%; top: 13%; height: 34%; }
  .hero__copy-wrap { display: flex; align-items: center; padding: 7rem clamp(2rem, 5vw, 5.5rem) 4rem clamp(1rem, 2vw, 2rem); }
  .hero h1 { font-size: clamp(3.2rem, .6rem + 4.3vw, 5.6rem); }
  .hero h1 .line { white-space: nowrap; }
  .hero__lede { max-width: 30ch; }
}

/* ---------- Credentials band ---------- */
.proof { background: var(--cream); padding-block: 2.25rem; border-bottom: 1px solid var(--rule-light); }
.proof__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; }
.proof__item { font-size: 1.3125rem; line-height: 1.3; }
.proof__item span { display: block; margin-bottom: .3rem; font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--plum-text); }
@media (min-width: 760px) {
  .proof { padding-block: 2.75rem; }
  .proof__list { grid-template-columns: repeat(3, 1fr); gap: 3rem; }
  .proof__item + .proof__item { border-left: 1px solid var(--rule-light); padding-left: 3rem; }
}

/* ---------- Shared section parts ---------- */
.section-head { max-width: 46rem; margin-bottom: clamp(2.5rem, 4vw, 4rem); }
.section-head h2, .h2 { font-size: var(--text-2xl); letter-spacing: -.02em; }
.h2 em, .section-head h2 em { font-style: italic; color: var(--plum-text); }
.on-dark .section-head h2 em, .on-dark .h2 em { color: var(--rose); }
.lede { font-size: var(--text-lg); line-height: 1.5; }
.on-dark .lede { color: var(--cream); }
.measure { max-width: 40ch; }

/* Photo plate: a crisp rectangle, revealed by a curtain when it scrolls into view */
.plate { position: relative; margin: 0; }
.plate__frame { position: relative; overflow: hidden; aspect-ratio: 4 / 5; background: var(--wine-900); }
.plate__frame img { width: 100%; height: 100%; object-fit: cover; }
.plate figcaption { display: flex; justify-content: space-between; gap: 1rem; margin-top: .85rem; padding-top: .75rem; border-top: 1px solid var(--rule-light); font-size: .8125rem; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); }
.on-dark .plate figcaption { border-color: var(--rule-dark); color: var(--on-wine-muted); }
.plate figcaption span:first-child { color: var(--ink); }
.on-dark .plate figcaption span:first-child { color: var(--cream); }

/* ---------- Welcome: full width, light through leaves behind the words ---------- */
.welcome { position: relative; overflow: hidden; isolation: isolate; background: var(--ivory); }
.welcome__bg { position: absolute; inset: 0; z-index: -1; background: url("../images/welcome-patio-poster.webp") 50% 50% / cover no-repeat; }
/* Sunny room video: softened so the floor and light read as warm cream, not orange */
.welcome__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.85) contrast(.95); }
/* An even cream wash behind the words so the moving light never competes with them; the video stays lively on the right */
.welcome__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(251 246 238 / .9) 0%, rgb(251 246 238 / .86) 42%, rgb(251 246 238 / .45) 62%, rgb(251 246 238 / .12) 100%); }
@media (max-width: 899px) { .welcome__bg::after { background: rgb(251 246 238 / .84); } }
.welcome__grid { display: grid; gap: 3rem; align-items: center; }
.welcome__name { margin: 0 0 .25rem; font-size: var(--text-2xl); letter-spacing: -.02em; }
.welcome__role { margin: 0 0 2rem; font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--plum-text); }
.welcome__text { font-size: clamp(1.25rem, 1.1rem + .5vw, 1.5rem); line-height: 1.7; max-width: 44ch; margin: 0; }
.scripture { margin: 0; padding: clamp(2rem, 4vw, 3.25rem); background: var(--wine-900); color: var(--cream); box-shadow: 0 40px 80px -40px rgb(43 15 32 / .55); }
.scripture p { margin: 0 0 1.25rem; font-style: italic; font-size: clamp(1.3125rem, 1.1rem + .7vw, 1.75rem); line-height: 1.45; }
.scripture cite { font-style: normal; font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--rose); }
@media (min-width: 900px) { .welcome { padding-block: clamp(7rem, 10vw, 10rem); } .welcome__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(3rem, 7vw, 7rem); } }

/* ---------- Coaching ---------- */
.coaching { background: var(--wine-900); }
.coaching__top { display: grid; gap: 3rem; align-items: center; margin-bottom: clamp(3rem, 5vw, 5rem); }
.coaching__photo { width: min(100%, 440px); }
.offers { display: grid; gap: 2.5rem; }
.offer { border-top: 1px solid var(--rule-dark); padding-top: 1.5rem; }
.offer__who { margin: 0 0 .5rem; font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--gold); }
.offer h3 { font-size: var(--text-xl); }
.offer p { margin: 0; color: var(--on-wine-muted); }
.services { display: grid; gap: 2rem; padding: clamp(1.75rem, 3vw, 2.75rem); background: var(--wine-800); }
.services h3 { margin: 0; font-size: var(--text-xl); }
.services ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem 2.5rem; }
.services li { padding: .7rem 0 .7rem 1.6rem; border-bottom: 1px solid var(--rule-dark); position: relative; }
.services li::before { content: ""; position: absolute; left: 0; top: 1.35rem; width: .7rem; height: 1px; background: var(--rose); }
.coaching__close { display: grid; gap: 1.25rem; margin-top: clamp(2.5rem, 4vw, 3.5rem); }
.coaching__close p { margin: 0; max-width: 48ch; color: var(--on-wine-muted); }
.therapy { margin-top: clamp(3rem, 5vw, 4.5rem); padding-top: 2rem; border-top: 1px solid var(--rule-dark); display: grid; gap: 1rem; }
.therapy h3 { margin: 0; font-size: var(--text-xl); }
.therapy p { margin: 0; max-width: 62ch; color: var(--on-wine-muted); }
@media (min-width: 900px) {
  .coaching__top { grid-template-columns: 440px minmax(0, 1fr); gap: clamp(3rem, 7vw, 7rem); }
  .services { grid-template-columns: 16rem minmax(0, 1fr); align-items: start; }
  .services ul { grid-template-columns: 1fr 1fr; }
  .coaching__close { grid-template-columns: auto 1fr; align-items: center; gap: 2.5rem; }
  .therapy { grid-template-columns: 16rem minmax(0, 1fr) auto; align-items: center; gap: 2.5rem; }
}

/* ---------- New books band, right under the hero ----------
   After Raiona's reference (an author site where the book cover breaks out of a dark band):
   her two new anthologies fan out on the right and rise into the hero above. */
.newbooks { position: relative; background: var(--wine-950); }
.newbooks__grid { display: grid; gap: 2.5rem; }
.newbooks__covers { position: relative; height: 260px; display: flex; justify-content: center; }
.newbooks__cover { position: absolute; top: 0; width: 160px; height: auto; box-shadow: 0 30px 60px -20px rgb(0 0 0 / .7); transition: transform .9s var(--ease-out); }
.newbooks__cover--front { z-index: 2; left: calc(50% - 150px); transform: rotate(-4deg); }
.newbooks__cover--back { z-index: 1; left: calc(50% - 10px); top: 14px; transform: rotate(5deg); }
.newbooks__title { margin: 0 0 2rem; font-weight: 300; font-size: clamp(3.2rem, 1.4rem + 6.4vw, 7.4rem); line-height: .92; letter-spacing: -.035em; }
.newbooks__title em { font-style: italic; color: var(--rose); }
.newbooks__list { display: grid; gap: 2.25rem; }
.nb { padding-top: 1.25rem; border-top: 1px solid var(--rule-dark); display: flex; flex-direction: column; align-items: flex-start; }
.nb__title { margin: 0 0 .6rem; font-size: var(--text-xl); }
.nb__title span { display: block; margin-top: .3rem; font-style: italic; font-size: 1.0625rem; color: var(--rose); }
.nb__chapter { margin: 0 0 .5rem; font-size: .8125rem; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); }
.nb__text { margin: 0 0 1.25rem; color: var(--on-wine-muted); }
.nb__price { margin: auto 0 1rem; font-size: 1.375rem; }
.nb__flag + .nb__price { margin-top: 0; }
.item__flag { margin: -.25rem 0 .5rem; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: var(--plum-text); }
.nb__flag { align-self: flex-start; margin: auto 0 .75rem; padding: .3rem .7rem; background: var(--gold); color: var(--wine-950); font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; }
.nb__ship, .item__ship { font-size: .9375rem; color: var(--on-wine-muted); }
.item__ship { color: var(--ink-muted); font-weight: 400; }
.nb__actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.item__actions { display: flex; flex-wrap: wrap; column-gap: 1.5rem; margin-top: auto; }
.newbooks__credit { margin: 2rem 0 0; font-style: italic; color: var(--on-wine-muted); }
@media (min-width: 1000px) {
  .newbooks { padding-top: clamp(4rem, 6vw, 6rem); }
  /* Title on the left, covers on the right; the two books then run the full width below */
  .newbooks__grid { grid-template-columns: minmax(0, 1fr) 400px; column-gap: clamp(3rem, 6vw, 6rem); row-gap: 0; align-items: start; }
  .newbooks__copy { display: contents; }
  .newbooks__copy > .eyebrow, .newbooks__title { grid-column: 1; }
  .newbooks__covers { grid-column: 2; grid-row: 1 / span 2; }
  .newbooks__list, .newbooks__credit { grid-column: 1 / -1; }
  .newbooks__list { margin-top: .5rem; }
  /* The covers rise out of the band into the hero above */
  .newbooks__covers { height: 460px; margin-top: calc(-1 * clamp(4rem, 6vw, 6rem) - var(--nb-rise, 120px)); }
  .newbooks__cover { width: 216px; }
  .newbooks__cover--front { left: 10px; }
  .newbooks__cover--back { left: 170px; top: 26px; }
  .newbooks__covers:hover .newbooks__cover--front { transform: rotate(-6deg) translateY(-8px); }
  .newbooks__covers:hover .newbooks__cover--back { transform: rotate(7deg) translateX(6px); }
  .newbooks__list { grid-template-columns: 1fr 1fr; gap: 2.5rem clamp(3rem, 6vw, 6rem); }
  .nb__text { max-width: 44ch; }
}
@media (prefers-reduced-motion: no-preference) {
  .js .newbooks__covers.reveal .newbooks__cover--front { transform: rotate(0deg) translateY(30px); opacity: 0; }
  .js .newbooks__covers.reveal .newbooks__cover--back { transform: rotate(0deg) translateY(30px); opacity: 0; }
  .js .newbooks__covers.reveal { opacity: 1; transform: none; }
  .js .newbooks__covers.reveal.is-in .newbooks__cover--front { transform: rotate(-4deg); opacity: 1; transition: transform 1.3s var(--ease-out) .1s, opacity .9s var(--ease-soft) .1s; }
  .js .newbooks__covers.reveal.is-in .newbooks__cover--back { transform: rotate(5deg); opacity: 1; transition: transform 1.3s var(--ease-out) .3s, opacity .9s var(--ease-soft) .3s; }
}

/* ---------- Shop: open product grid, image first, no boxes ---------- */
.shop { background: var(--cream); }
.shop__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem 3rem; margin-bottom: clamp(2.5rem, 4vw, 3.5rem); padding-bottom: 1.5rem; border-bottom: 1px solid var(--rule-light); }
.shop__head .h2 { margin: 0; }
.shop__note { margin: 0; color: var(--ink-muted); }
.products { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem 1.25rem; }
.item { display: flex; flex-direction: column; }
.item__media { text-decoration: none; position: relative; display: grid; place-items: center; aspect-ratio: 1; margin-bottom: 1rem; background: var(--ivory); overflow: hidden; }
.item__media img { width: 66%; height: auto; mix-blend-mode: multiply; transition: transform .9s var(--ease-out); }
.item__media--cover img { width: 52%; height: auto; mix-blend-mode: normal; box-shadow: 0 18px 32px -16px rgb(43 15 32 / .55); }
.item__media:hover img, .item__media:focus-visible img { transform: scale(1.05); }
.item__tile { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: .3rem; width: 62%; aspect-ratio: 2 / 3; padding: 1rem; background: var(--wine-700); color: var(--cream); text-align: center; box-shadow: 14px 18px 30px -14px rgb(43 15 32 / .5); transition: transform .9s var(--ease-out); }
.item__media:hover .item__tile { transform: translateY(-4px) rotate(-1.5deg); }
.item__tile-title { font-size: clamp(1.1rem, .9rem + .8vw, 1.5rem); line-height: 1.05; }
.item__badge { position: absolute; top: .75rem; left: .75rem; padding: .3rem .65rem; background: var(--gold); color: var(--wine-950); font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; }
.item__title { margin: 0 0 .2rem; font-size: 1.1875rem; line-height: 1.25; }
.item__meta { margin: 0 0 .5rem; font-size: .9375rem; color: var(--ink-muted); }
.item__price { margin: 0 0 .35rem; font-weight: 600; font-size: 1.0625rem; }
.item__buy { display: inline-flex; align-items: center; gap: .4rem; min-height: 44px; margin-top: auto; font-size: .8125rem; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; color: var(--plum-text); }
.item__buy span[aria-hidden] { transition: transform .45s var(--ease-out); }
.item__buy:hover span[aria-hidden] { transform: translateX(5px); }
.retail { margin: clamp(2.5rem, 4vw, 3.5rem) 0 0; padding-top: 1.5rem; border-top: 1px solid var(--rule-light); color: var(--ink-muted); }
.retail a { color: var(--plum-text); }
@media (max-width: 599px) {
  .item__tile { width: 60%; padding: .6rem; }
  .item__tile .tile__kicker, .item__tile .tile__sub { display: none; }
  .item__badge { top: .5rem; left: .5rem; font-size: .5625rem; padding: .2rem .45rem; }
  .item__title { font-size: 1.0625rem; }
  .item__meta { font-size: .875rem; }
  .item__buy { font-size: .6875rem; letter-spacing: .14em; }
}
@media (min-width: 900px) { .products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4rem 2.5rem; } }

.tile__kicker { font-size: .6875rem; letter-spacing: .24em; text-transform: uppercase; color: var(--gold); }
.tile__sub { font-style: italic; color: var(--rose); }

/* ---------- About ---------- */
.about { background: var(--ivory); }
.about__grid { display: grid; gap: 3rem; align-items: start; }
.about__photo { width: min(100%, 400px); }
.about__copy p { max-width: 62ch; }
.creds { list-style: none; margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--rule-light); }
.creds li { padding: .85rem 0; border-bottom: 1px solid var(--rule-light); }
@media (min-width: 900px) { .about__grid { grid-template-columns: minmax(0, 1fr) 400px; gap: clamp(3rem, 7vw, 7rem); } .about__photo { position: sticky; top: 110px; } }

/* ---------- Speaking ---------- */
.speaking { background: var(--wine-800); }
.themes { list-style: none; margin: 0 0 3rem; padding: 0; display: grid; gap: 2rem; counter-reset: theme; }
.themes li { counter-increment: theme; padding-top: 1.25rem; border-top: 1px solid var(--rule-dark); }
.themes li::before { content: "0" counter(theme); display: block; margin-bottom: .75rem; font-style: italic; font-size: 1.75rem; line-height: 1; color: var(--rose); }
.themes h3 { font-size: var(--text-xl); margin-bottom: .35rem; }
.themes p { margin: 0; color: var(--on-wine-muted); }
@media (min-width: 760px) { .themes { grid-template-columns: 1fr 1fr; gap: 2.5rem 4rem; } }

/* ---------- Contact ---------- */
.contact { background: var(--cream); }
.contact__grid { display: grid; gap: 3rem; align-items: start; }
.contact__copy .actions { margin-top: 1.75rem; }
.socials { margin-top: .5rem; }
.form-card { padding: clamp(1.5rem, 3vw, 2.5rem); background: var(--ivory); border: 1px solid var(--rule-light); }
.field { display: grid; gap: .4rem; margin-bottom: 1.1rem; }
.field label { font-size: .9375rem; color: var(--ink); }
.field input, .field select, .field textarea { width: 100%; min-height: 48px; padding: .7rem .9rem; font: inherit; color: var(--ink); background: var(--cream); border: 1px solid var(--rule-light); border-radius: 0; }
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline: 2px solid var(--focus); outline-offset: 0; border-color: var(--focus); }
.form-card .btn { width: 100%; }
.helper { margin: 1rem 0 0; font-size: var(--text-sm); color: var(--ink-muted); }
.form-status { margin: .5rem 0 0; color: var(--plum-text); }
.form-status:empty { display: none; }
@media (min-width: 900px) { .contact__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 480px); gap: clamp(3rem, 7vw, 7rem); } }

/* ---------- Footer ---------- */
.site-footer { background: var(--wine-950); color: var(--cream); padding-block: clamp(3.5rem, 6vw, 5rem) 2rem; }
.site-footer__grid { display: grid; gap: 2.5rem; padding-bottom: 2.5rem; border-bottom: 1px solid var(--rule-dark); }
.site-footer img { width: 140px; margin-bottom: 1.25rem; }
.site-footer__quote { margin: 0; font-style: italic; font-size: var(--text-xl); line-height: 1.3; max-width: 22ch; }
.site-footer__by { margin: .5rem 0 0; font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--rose); }
.site-footer nav ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; }
.site-footer nav a { display: flex; align-items: center; min-height: 44px; text-decoration: none; }
.site-footer nav a:hover { color: var(--rose); }
.site-footer__small { margin: 1.5rem 0 0; font-size: var(--text-sm); color: var(--on-wine-muted); }
@media (min-width: 760px) { .site-footer__grid { grid-template-columns: 1fr auto; align-items: end; } }

/* ---------- Phone action bar (after the hero scrolls away) ---------- */
.sticky-cta { position: fixed; z-index: 45; left: 0; right: 0; bottom: 0; padding: .75rem var(--gutter) calc(.75rem + env(safe-area-inset-bottom)); background: rgb(31 10 23 / .94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); transform: translateY(110%); transition: transform .45s var(--ease-out); }
.sticky-cta .btn { width: 100%; }
.sticky-cta.is-visible { transform: none; }
@media (min-width: 768px) { .sticky-cta { display: none; } }

/* ---------- Motion (only when the visitor has not asked for less; content shows without JavaScript) ---------- */
@media (prefers-reduced-motion: no-preference) {
  /* Hero entrance */
  .js .line__in { transform: translateY(108%); }
  .js .line--italic .line__in em { display: inline-block; filter: blur(6px); }
  .js .rise { opacity: 0; transform: translateY(18px); }
  .js .fade { opacity: 0; }
  .js .hero__wall { opacity: 0; }
  .js .hero__cutout { opacity: 0; translate: -50% 40px; }
  .js .name { opacity: 0; }
  .js.is-ready .line__in { transform: none; transition: transform 1.25s var(--ease-out) var(--d, 0s); }
  .js.is-ready .line--italic .line__in em { filter: none; transition: filter 1.4s var(--ease-soft) var(--d, 0s); }
  .js.is-ready .rise { opacity: 1; transform: none; transition: opacity 1s var(--ease-soft) var(--d, 0s), transform 1.1s var(--ease-out) var(--d, 0s); }
  .js.is-ready .fade { opacity: 1; transition: opacity 1.2s var(--ease-soft) var(--d, 0s); }
  .js.is-ready .hero__wall { opacity: 1; transition: opacity 1.2s var(--ease-soft); }
  .js.is-ready .hero__cutout { opacity: 1; translate: -50% 0; transition: opacity 1.3s var(--ease-soft) .25s, translate 1.7s var(--ease-out) .25s; }
  .js.is-ready .name { opacity: 1; transition: opacity 1.8s var(--ease-soft) .6s; }

  /* Sections: words rise as they come into view, photos are revealed by a curtain */
  .js .reveal { opacity: 0; transform: translateY(24px); }
  .js .reveal.is-in { opacity: 1; transform: none; transition: opacity 1s var(--ease-soft) var(--d, 0s), transform 1.1s var(--ease-out) var(--d, 0s); }
  .js .plate.reveal { opacity: 1; transform: none; }
  .js .plate.reveal .plate__frame { clip-path: inset(100% 0 0 0); }
  .js .plate.reveal .plate__frame img { scale: 1.18; }
  .js .plate.reveal.is-in .plate__frame { clip-path: inset(0 0 0 0); transition: clip-path 1.4s var(--ease-curtain) var(--d, 0s); }
  .js .plate.reveal.is-in .plate__frame img { scale: 1; transition: scale 2.4s var(--ease-out) var(--d, 0s); }
}

/* Phones: tighter spacing so the page stays a comfortable length */
@media (max-width: 699px) {
  .about__photo { width: min(100%, 300px); }
  .services li { padding-block: .55rem; }
  .section-head { margin-bottom: 2rem; }
}

/* ---------- Stacking scroll: each section slides up over the one before ----------
   Each section sticks once its bottom reaches the bottom of the screen (site.js sets --stick),
   so tall sections are always read in full before the next one covers them. Off with reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  .stack > section { position: sticky; top: var(--stick, 0px); }
  /* The hero scrolls normally so the book covers that rise into it stay put */
  .stack > .hero { position: relative; top: 0; }
  .stack > section + section, .stack + .site-footer { box-shadow: 0 -30px 60px -30px rgb(31 10 23 / .45); }
  .stack + .site-footer { position: relative; z-index: 2; }
}

/* ---------- Welcome test: what Felicia does, beside a video of someone at rest ---------- */
.welcome__title { margin: 0 0 1.5rem; font-weight: 400; font-size: var(--text-2xl); line-height: 1.08; letter-spacing: -.02em; max-width: 16ch; }
.welcome__title em { font-style: italic; color: var(--plum-text); }
.welcome__ways { list-style: none; margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--rule-light); max-width: 40rem; }
.welcome__ways a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .2rem 1.25rem; align-items: center; padding: .9rem 0; border-bottom: 1px solid var(--rule-light); color: inherit; text-decoration: none; }
.welcome__way { font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--plum-text); }
.welcome__what { grid-column: 1; color: var(--ink-muted); }
.welcome__way { grid-column: 1; }
.welcome__arrow { grid-column: 2; grid-row: 1 / span 2; }
.welcome__arrow { color: var(--plum-text); transition: transform .45s var(--ease-out); }
.welcome__ways a:hover .welcome__arrow, .welcome__ways a:focus-visible .welcome__arrow { transform: translateX(5px); }
.welcome__text { font-size: var(--text-lg); line-height: 1.65; }
.welcome__bg::after { background: linear-gradient(0deg, rgb(43 15 32 / .18), transparent 40%); }
@media (max-width: 899px) {
  .welcome { padding-top: calc(62vw + 2.5rem); }
  .welcome__bg { bottom: auto; height: 62vw; }
  .welcome__bg::after { background: linear-gradient(0deg, rgb(43 15 32 / .15), transparent 50%); }
  .welcome__video { object-position: 45% 30%; }
}
@media (min-width: 900px) {
  .welcome__bg { left: auto; right: 0; width: 44%; }
  .welcome__video { object-position: 42% 30%; }
  .welcome__grid { grid-template-columns: minmax(0, 1fr) minmax(0, .8fr); }
  .welcome { padding-block: clamp(5rem, 7vw, 7rem); }
  /* The scripture box reaches back into the cream side so it overlaps the video only partly;
     the Coaching, Books, Speaking list stops short of it */
  .welcome__grid { --wgap: clamp(3rem, 7vw, 7rem); --wpull: clamp(9rem, 17vw, 15rem); column-gap: var(--wgap); }
  .welcome .scripture { align-self: end; justify-self: start; margin-left: calc(-1 * var(--wpull)); margin-bottom: -1rem; max-width: 27rem; padding: 2.25rem 2.5rem; }
  .welcome__ways { max-width: calc(100% - (var(--wpull) - var(--wgap)) - 2.5rem); }
  .welcome .scripture p { font-size: 1.3rem; }
}

/* ---------- Speaking: a short clip of Felicia, so planners can hear her before they invite her ---------- */
.speaking__intro { display: grid; gap: 2.5rem; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.speaking__intro .section-head { margin-bottom: 0; }
.speak-video { margin: 0; }
.speak-video__play { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 16 / 9; padding: 0; border: 0; overflow: hidden; cursor: pointer; background: radial-gradient(60% 80% at 30% 40%, var(--wine-700), var(--wine-950)); box-shadow: 0 40px 80px -40px rgb(0 0 0 / .6); }
.speak-video__play { font-family: var(--font); }
/* Cover photo: a clean frame from the video (Raiona's screenshot).
   The wine card underneath only shows if the photo cannot load. */
.speak-video__thumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-out); }
.speak-video__play::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgb(31 10 23 / .55) 0%, transparent 32%); pointer-events: none; }
/* With her photo showing, her face carries the cover; the quote only shows on the wine card if the photo is missing */
.speak-video__thumb ~ .speak-video__quote { display: none; }
.speak-video__play:hover .speak-video__thumb, .speak-video__play:focus-visible .speak-video__thumb { transform: scale(1.03); }
.speak-video__quote, .speak-video__icon { z-index: 1; }
.speak-video__quote { position: absolute; left: 7%; bottom: 9%; max-width: 60%; font-style: italic; font-weight: 300; font-size: clamp(1.2rem, .9rem + 1vw, 1.75rem); line-height: 1.2; color: var(--cream); text-align: left; }
.speak-video__quote::before { content: "Felicia Edmond"; display: block; margin-bottom: .6rem; font-style: normal; font-weight: 400; font-size: .75rem; letter-spacing: .24em; text-transform: uppercase; color: var(--rose); }
.speak-video__icon { position: absolute; right: 4.5%; bottom: 7%; display: grid; place-items: center; width: clamp(3.5rem, 2.8rem + 2vw, 4.75rem); height: clamp(3.5rem, 2.8rem + 2vw, 4.75rem); border-radius: 50%; background: var(--cream); color: var(--wine-800); box-shadow: 0 14px 30px -10px rgb(0 0 0 / .55); transition: transform .5s var(--ease-out), background-color .4s var(--ease-soft); }
.speak-video__icon svg { width: 1.9rem; height: 1.9rem; margin-left: .2rem; fill: currentColor; }
.speak-video__play:hover .speak-video__icon, .speak-video__play:focus-visible .speak-video__icon { transform: scale(1.08); background: var(--rose); }
.speak-video__play iframe, .speak-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.speak-video__frame { position: relative; aspect-ratio: 16 / 9; background: #000; }
.speak-video figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem 1rem; margin-top: 1rem; color: var(--on-wine-muted); }
.speak-video__label { font-size: .8125rem; letter-spacing: .22em; text-transform: uppercase; color: var(--rose); }
.speak-video__time { font-style: italic; }
@media (min-width: 900px) { .speaking__intro { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(3rem, 6vw, 6rem); align-items: center; } }

/* Spam trap for the contact form: hidden from people, filled in only by bots */
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
