/* rfb.css — GENERATED by build_css.py. DO NOT EDIT. Parts, in cascade order:
 *   00-mockup.css
 *   10-bridge.css
 *   20-nav.css
 *   30-form.css
 *   40-utils.css
 *   50-elementor.css
 *   60-elementor-map.css
 *   65-widgets.css
 *   70-prose.css
 */

/* ==================== 00-mockup.css ==================== */
:root{--cream:#F8F3E9; --cream-soft:#F1E9DA; --cream-deep:#E6DBC6; --paper:#FFFDF8; --ink:#161514; --ink-soft:#3B3835; --body:#5C5751; --muted:#8E877D; --line:#E3DACA; --wash-a:#DED3BE; --wash-b:#CFC3AA; --glow:#F3E3B4; --rad:18px;}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Nunito',system-ui,sans-serif;color:var(--body);background:#DDD3C0;line-height:1.75;font-size:16.5px;}
.wrap{max-width:1200px;margin:0 auto;}
h1,h2,h3,h4{font-family:'Fraunces',Georgia,serif;color:var(--ink);line-height:1.12;letter-spacing:-.01em;font-weight:600;}
h1{font-size:60px;font-weight:600;}
h2{font-size:40px;}
h3{font-size:22px;}
h4{font-size:16px;}
a{color:inherit;text-decoration:none;}
section{position:relative;padding:96px 56px;}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;display:flex;align-items:center;gap:10px;}
.eyebrow::before{content:'';width:22px;height:1px;background:var(--ink);opacity:.5;}
.center .eyebrow{justify-content:center;}
.center .eyebrow::before{display:none;}
.lead{font-size:18px;max-width:620px;}
.center{text-align:center;}
.center .lead{margin-left:auto;margin-right:auto;}
.soft{background:var(--cream-soft);}
.paper{background:var(--paper);}
.dark{background:var(--ink);color:#CFC7B8;}
.dark h2,.dark h3,.dark h4{color:var(--cream);}
.dark .eyebrow{color:#A79E8E;}
.dark .eyebrow::before{background:var(--cream);}
.dropcap::first-letter{font-family:'Fraunces',Georgia,serif;font-weight:700;font-style:italic; float:left;font-size:4.6em;line-height:.78;padding:.08em .12em 0 0;color:var(--ink);}
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:14.5px;white-space:nowrap; padding:15px 28px;border-radius:100px;border:2px solid var(--ink);cursor:pointer;transition:.18s;font-family:'Nunito',sans-serif;}
.btn-ink{background:var(--ink);color:var(--cream);}
.btn-ink:hover{background:transparent;color:var(--ink);}
.btn-outline{background:transparent;color:var(--ink);}
.btn-outline:hover{background:var(--ink);color:var(--cream);}
.btn-cream{background:var(--cream);color:var(--ink);border-color:var(--cream);}
.btn-cream:hover{background:transparent;color:var(--cream);}
.btn-sm{padding:11px 20px;font-size:13.5px;}
.row-btn{display:flex;gap:14px;flex-wrap:wrap;}
.wc-tree{position:absolute;bottom:60px;left:40px;width:420px;height:auto;z-index:0;pointer-events:none;}
.wc-grass{position:absolute;left:0;right:0;bottom:-6px;height:135px;z-index:1;pointer-events:none;background-repeat:no-repeat;background-position:center bottom;background-size:100% 100%;}
#reviews{padding-bottom:380px;}
@keyframes drift{0%,100%{transform:translate(0,0);opacity:.55;}50%{transform:translate(8px,-14px);opacity:1;}}
.firefly-art{position:absolute;width:70px;height:auto;z-index:5;pointer-events:none;animation:drift 6s ease-in-out infinite;}
.firefly-art.s{width:48px;}
.firefly-art:nth-of-type(2n){animation-duration:8s;animation-delay:-2s;}
.firefly-art:nth-of-type(3n){animation-duration:7s;animation-delay:-4s;}
header.nav{display:flex;align-items:center;justify-content:space-between;padding:8px 48px;position:sticky;top:0;background:rgba(248,243,233,.92);backdrop-filter:blur(8px);z-index:20;gap:20px;border-bottom:1px solid var(--line);}
.logo{display:flex;align-items:center;gap:12px;}
nav ul{display:flex;gap:30px;list-style:none;font-size:14.5px;font-weight:700;color:var(--ink);}
nav li{white-space:nowrap;cursor:pointer;position:relative;}
nav li::after{content:'';position:absolute;left:0;right:100%;bottom:-6px;height:2px;background:var(--ink);transition:.2s;}
nav li:hover::after,nav li.active::after{right:0;}
.hero{padding:0;overflow:hidden;background:var(--cream);}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:40px;padding:96px 56px 80px;position:relative;z-index:2;}
.hero h1{margin-bottom:20px;}
.hero h1 em{font-family:'Caveat','Segoe Script',cursive;font-style:normal;font-weight:600;font-size:1.22em;line-height:1;letter-spacing:0;}
.hero p{font-size:19px;max-width:520px;margin-bottom:34px;}
.hero-art{position:relative;min-height:520px;}
.hero-art{position:relative;}
.hero-books{position:absolute;inset:0;z-index:2;pointer-events:none;}
.hb{position:absolute;height:auto;filter:drop-shadow(0 22px 26px rgba(22,21,20,.28));transition:.3s;}
.hb-2{width:50%;left:14%;top:15%;z-index:2;transform:rotate(-4deg);}
.hb-3{width:46%;right:-8%;top:30%;transform:rotate(7deg);}
.hero-art:hover .hb-3{transform:rotate(10deg) translateY(-8px);}
.hero-art:hover .hb-2{transform:rotate(-4deg) translateY(-10px);}
.hero-wc{width:158%;max-width:none;height:auto;display:block;margin:-110px 0 -60px -26%;}
.mabout{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:center;position:relative;z-index:2;}
.headshot{position:relative;z-index:2;}
.head-main{border-radius:200px 200px 24px 24px;overflow:hidden;aspect-ratio:4/5;box-shadow:0 22px 50px rgba(22,21,20,.12);}
.head-main img{width:100%;height:100%;object-fit:cover;display:block;}
.head-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;}
.head-sm{border-radius:18px;overflow:hidden;aspect-ratio:1/1;box-shadow:0 14px 30px rgba(22,21,20,.10);}
.head-sm img{width:100%;height:100%;object-fit:cover;display:block;}
.headshot .stamp{position:absolute;right:-18px;top:34%;width:112px;height:112px;border-radius:50%;background:var(--ink);color:var(--cream);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Fraunces',serif;font-style:italic;font-size:14px;line-height:1.2;padding:14px;transform:rotate(-8deg);box-shadow:0 14px 30px rgba(22,21,20,.18);}
.bio-wrap{position:relative;}
.splash-behind{position:absolute;left:-38%;top:-75%;width:185%;height:250%;object-fit:contain;z-index:0;pointer-events:none;opacity:.95;transform:rotate(-6deg);}
.bio-card{position:relative;z-index:1;background:var(--paper);border:1px solid var(--line);border-radius:var(--rad);padding:40px 42px 36px;cursor:pointer;min-height:360px;transition:.25s;box-shadow:0 18px 44px rgba(22,21,20,.06);}
.bio-card:hover,.bio-card.flipped{background:var(--ink);border-color:var(--ink);color:#D9D1C2;transform:translateY(-4px);}
.bio-card .bio{transition:opacity .25s;}
.bio-card .bio-long{position:absolute;inset:0;padding:40px 42px 36px;opacity:0;transition:opacity .3s .05s;pointer-events:none;}
.bio-card:hover .bio,.bio-card.flipped .bio{opacity:0;}
.bio-card:hover .bio-long,.bio-card.flipped .bio-long{opacity:1;pointer-events:auto;}
.bio-card:hover h2,.bio-card.flipped h2,.bio-card:hover h3,.bio-card.flipped h3{color:var(--cream);}
.bio-card:hover .dropcap::first-letter,.bio-card.flipped .dropcap::first-letter{color:var(--glow);}
.bio-hint{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:22px;}
.bio-hint i{width:8px;height:8px;border-radius:50%;background:var(--glow);box-shadow:0 0 10px 3px rgba(243,227,180,.8);display:inline-block;}
.bio-long .eyebrow{color:var(--glow);}
.bio-long .eyebrow::before{background:var(--glow);}
.bio-long p{font-size:15.5px;line-height:1.7;}
#about{overflow:hidden;}
#about .mabout{z-index:2;}
.books-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px 28px;margin-top:54px;}
.book{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:26px 26px 30px;display:flex;flex-direction:column;transition:.2s;}
.book:hover{transform:translateY(-6px);box-shadow:0 26px 50px rgba(22,21,20,.10);}
.cover-img{height:270px;margin:0 auto 20px;width:100%;display:flex;align-items:center;justify-content:center;padding:6px;}
.cover-img img{max-width:100%;max-height:100%;height:100%;width:auto;object-fit:contain;display:block;filter:drop-shadow(0 18px 22px rgba(22,21,20,.18));transition:.25s;}
.book:hover .cover-img img{transform:translateY(-4px) scale(1.02);}
.book .num{font-family:'Fraunces',serif;font-style:italic;font-size:13px;color:var(--muted);margin-bottom:4px;}
.book h3{font-size:20px;margin-bottom:8px;line-height:1.2;}
.book p{font-size:14.5px;line-height:1.7;flex:1;}
.book .btn{margin-top:20px;align-self:flex-start;}
.amz{display:inline-block;width:14px;height:14px;border-radius:3px;background:currentColor;opacity:.85;mask:radial-gradient(circle at 50% 40%,transparent 30%,#000 32%);}
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px 26px;margin-top:50px;}
.rev{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:var(--rad);padding:40px 30px 30px;display:flex;flex-direction:column;}
.rev .q{position:absolute;top:-22px;left:26px;width:48px;height:48px;border-radius:50%;background:var(--ink);color:var(--cream);display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-size:34px;line-height:1;padding-top:10px;}
.rev p{font-size:15.5px;line-height:1.75;flex:1;font-style:italic;color:var(--ink-soft);}
.rev .who{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);display:flex;gap:14px;align-items:center;}
.rev .av{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none;border:2px solid var(--cream-deep);box-shadow:0 4px 10px rgba(22,21,20,.12);}
.rev .who span{display:block;font-size:12.5px;color:var(--muted);margin-bottom:3px;}
.rev .who b{display:block;font-weight:700;font-size:14.5px;color:var(--ink);}
.rev .who a{font-size:13px;color:var(--muted);text-decoration:underline;text-decoration-color:var(--cream-deep);text-underline-offset:3px;}
.rev .who a:hover{color:var(--ink);text-decoration-color:var(--ink);}
.social-band{padding:0;}
.social-inner{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;padding:88px 56px;position:relative;z-index:2;}
.social-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.soc{background:rgba(248,243,233,.06);border:1px solid rgba(248,243,233,.18);border-radius:18px;padding:28px 24px;transition:.2s;}
.soc:hover{background:var(--cream);color:var(--ink);}
.soc:hover h4,.soc:hover .h{color:var(--ink);}
.soc .ic{width:44px;height:44px;border-radius:12px;border:1.5px solid currentColor;display:flex;align-items:center;justify-content:center;margin-bottom:18px;}
.soc h4{font-size:15px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;}
.soc .h{font-family:'Fraunces',serif;font-style:italic;font-size:17px;color:var(--cream);}
.soc span{display:block;font-size:13px;margin-top:8px;opacity:.75;}
.contact-grid{display:grid;grid-template-columns:1fr .85fr;gap:56px;align-items:start;}
.cform{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:38px 36px;box-shadow:0 22px 50px rgba(22,21,20,.07);}
.cform h3{margin-bottom:6px;}
.cform .sub{font-size:14px;margin-bottom:24px;color:var(--muted);}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.fld{margin-bottom:16px;}
.fld label{display:block;font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:6px;}
.fld label i{color:#B04A3A;font-style:normal;margin-left:2px;}
.fld input,.fld textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:13px 14px;font-family:'Nunito',sans-serif;font-size:14.5px;color:var(--ink);background:var(--cream-soft);}
.fld input:focus,.fld textarea:focus{outline:2px solid var(--ink);outline-offset:1px;background:#fff;}
.fld textarea{min-height:130px;resize:vertical;}
.cform .btn{width:100%;justify-content:center;margin-top:6px;}
.cform .req{font-size:12px;color:var(--muted);margin-top:12px;text-align:center;}
.cinfo{padding-top:8px;}
.cinfo h2{margin-bottom:16px;}
.cinfo .lead{margin-bottom:30px;}
.info-list{list-style:none;}
.info-list li{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-top:1px solid var(--line);}
.info-list li:last-child{border-bottom:1px solid var(--line);}
.info-list .ic{width:42px;height:42px;border-radius:50%;background:var(--ink);color:var(--cream);display:flex;align-items:center;justify-content:center;flex:none;}
.info-list b{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;}
.info-list span{font-size:16.5px;color:var(--ink);font-weight:600;}
.bird{position:absolute;left:clamp(60px,10vw,170px);bottom:-6px;height:290px;width:auto;z-index:4;pointer-events:none; filter:drop-shadow(0 8px 10px rgba(22,21,20,.12));}
#contact{padding-bottom:210px;}
footer.base{position:relative;z-index:1;}
footer.base{background:var(--ink);color:#A79E8E;padding:60px 56px 30px;}
.f-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;}
footer h4{color:var(--cream);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:16px;}
footer ul{list-style:none;font-size:14px;line-height:2.1;}
footer a{color:#C2B9A8;}
footer a:hover{color:var(--cream);}
.f-bot{margin-top:40px;padding-top:20px;border-top:1px solid rgba(248,243,233,.12);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:12.5px;}
@media(max-width:980px){
  section{padding:64px 24px;}
  header.nav,footer.base,.notes{padding-left:24px;padding-right:24px;}
  h1{font-size:38px;}
  h2{font-size:29px;}
  .hero-grid{padding:56px 24px 60px;grid-template-columns:1fr;gap:34px;}
  .hero-art{min-height:320px;}
  .hero-wc{width:100%;margin:0;}
  nav ul{display:none;}
  .mabout{grid-template-columns:1fr;gap:34px;}
  .head-main{aspect-ratio:4/4.6;}
  .bio-card{min-height:0;padding:30px 26px;}
  .splash-behind{left:-22%;top:-30%;width:145%;height:160%;}
  .bio-card .bio-long{position:relative;inset:auto;padding:0;display:none;}
  .bio-card.flipped .bio{display:none;}
  .bio-card.flipped .bio-long{display:block;opacity:1;}
  .books-grid{grid-template-columns:1fr 1fr;gap:22px 16px;}
  .book{padding:18px 18px 22px;}
  .cover-img{height:210px;}
  .rev-grid{grid-template-columns:1fr;}
  .social-inner{grid-template-columns:1fr;padding:64px 24px;}
  .contact-grid{grid-template-columns:1fr;gap:36px;}
  #contact{padding-bottom:230px;}
  .bird{height:210px;left:24px;}
  .two{grid-template-columns:1fr;gap:0;}
  .f-grid{grid-template-columns:1fr 1fr;}
  .wc-tree{width:300px;left:-10px;}
  .wc-grass{height:70px;background-size:auto 70px;background-repeat:repeat-x;}
  #reviews{padding-bottom:200px;}
}
@media(max-width:560px){
  .books-grid{grid-template-columns:1fr;}
  .social-cards{grid-template-columns:1fr;}
}

/* ==================== 10-bridge.css ==================== */
/* ============================================================================
   10-bridge.css — mockup <-> WordPress + Elementor reconciliation.
   Every rule here exists because something in WordPress, Hello Elementor or
   Elementor collides with something the mockup assumes.
   ========================================================================== */

/* -- 1. WORDPRESS BODY CLASSES. The mockup's `.page` wrapper rule was dropped at
   generation time (WordPress puts class="page" on <body>; on an earlier build that rule
   killed scrolling sitewide). Whatever happens, the body scrolls. The mockup's body is
   the dark desk colour behind a cream page frame; here the page IS the viewport. */
body { overflow: visible !important; width: auto !important; max-width: none !important; box-shadow: none !important; background: var(--cream); }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .firefly-art { animation: none; } }

/* -- 2. THE GLOBAL RESET. The mockup ships `*{margin:0;padding:0}`. Editor prose needs
   its spacing back. */
.elementor-widget-text-editor p + p, .rfb-prose .elementor-widget-text-editor p + p { margin-top: 1.1em; }
.elementor-widget-text-editor ul, .elementor-widget-text-editor ol, .rfb-article ul, .rfb-article ol { margin: 0 0 1.1em; padding-left: 1.3em; }
.elementor-widget-text-editor li, .rfb-article li { margin: 0 0 .4em; }

/* -- 3. THE PAGE WRAPPER: cream ground, footer at the bottom of a short page. */
.rfb-page { min-height: 100vh; display: flex; flex-direction: column; background: var(--cream); position: relative; overflow: clip; }
#main { flex: 1 0 auto; }
.admin-bar .rfb-page { min-height: calc(100vh - 32px); }

/* -- 4. MOCKUP SECTIONS vs ELEMENTOR SECTIONS. `section{padding:96px 56px}` lands on every
   Elementor section that was a band (right) and on every INNER section (wrong). */
.elementor-section.elementor-inner-section.rfb-sec { padding: 0; position: static; margin: 0; }

/* -- 5. LINKS. The mockup's global `a{color:inherit}` is right for chrome and cards but
   wrong for prose, where a link has to look like one. */
.rfb-article a, .rfb-prose .elementor-widget-text-editor a,
.elementor-widget-text-editor a:not(.btn):not(.elementor-button) { color: var(--ink); text-decoration: underline; text-decoration-color: var(--cream-deep); text-underline-offset: 3px; text-decoration-thickness: 2px; }
.rfb-article a:hover, .rfb-prose .elementor-widget-text-editor a:hover, .elementor-widget-text-editor a:not(.btn):hover { text-decoration-color: var(--ink); }
.dark .elementor-widget-text-editor a:not(.btn) { color: var(--cream); text-decoration-color: rgba(248,243,233,.4); }

/* -- 6. CONTRAST, measured not eyeballed. The mockup's `--muted #8E877D` on cream #F8F3E9
   is 3.2:1 and FAILS for the 12px eyebrows and the small meta lines that use it. Darkened
   to #6B655B, which is 5.3:1 on cream, 4.9:1 on the soft cream and 4.6:1 on the paper
   card. `--body #5C5751` on cream is 6.6:1 (passes). Footer `#A79E8E` on ink is 6.0:1. */
:root { --muted: #6B655B; }
.dark .eyebrow { color: #B9B0A0; }   /* was #A79E8E at 5.7:1 on ink; lifted for the 12px size */

/* -- 7. FOCUS. Nothing in the mockup has a focus state. */
.rfb-page a:focus-visible, .rfb-page button:focus-visible, .rfb-page input:focus-visible, .rfb-page textarea:focus-visible,
.rfb-page [tabindex]:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; border-radius: 4px; }
.dark a:focus-visible, .dark button:focus-visible { outline-color: var(--cream); }

/* -- 8. BUTTONS ARE REAL ANCHORS HERE. Restate colours so inherited link colour never wins,
   and add the one variant the dark CTA band needs (an outline that reads on ink). */
a.btn-ink, a.btn-ink:hover { color: var(--cream); } a.btn-ink:hover { color: var(--ink); }
a.btn-outline { color: var(--ink); } a.btn-outline:hover { color: var(--cream); }
a.btn-cream { color: var(--ink); } a.btn-cream:hover { color: var(--cream); }
.btn-outline-cream { background: transparent; color: var(--cream); border-color: var(--cream); }
.btn-outline-cream:hover { background: var(--cream); color: var(--ink); }

/* -- 9. PRINT. */
@media print { .rfb-nav, .rfb-nav-toggle, .rfb-foot, .firefly-art, .wc-tree, .wc-grass, .bird { display: none !important; } .rfb-page { min-height: 0; } }

/* -- 10. THE SKIP LINK (WCAG 2.4.1). Clipped until focused, never deleted. */
.rfb-skip { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.rfb-skip:focus { position: fixed; top: 8px; left: 8px; z-index: 1000; width: auto; height: auto; margin: 0; padding: 12px 20px; clip: auto; clip-path: none; background: var(--ink); color: var(--cream); border-radius: 100px; font-family: 'Nunito', sans-serif; font-weight: 700; }

/* -- 11. HEADING ALIASES. The mockup uses <h4> for the social card titles under an <h2>,
   which is a heading skip (spec 5.4). The bands emit <h3 class="h4"> and this keeps the look. */
.soc h3.h4 { font-size: 15px; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 4px; font-weight: 600; }
.soc:hover h3.h4 { color: var(--ink); }

/* -- 12. THE ID-BASED RULES. The mockup pads its sections by id (#reviews, #contact, #about);
   Elementor sections carry their own ids, so the same rules ride on the band markers. */
.rfb-band-kind { padding-bottom: 380px; }
.rfb-band-contact { padding-bottom: 210px; }
.rfb-band-about, .hero, .rfb-band-kind, .rfb-band-pghead { overflow: hidden; }
.rfb-band-contact { overflow: visible; }   /* the bird stands ON the footer line, below the band's edge */
@media (max-width: 980px) { .rfb-band-kind { padding-bottom: 200px; } .rfb-band-contact { padding-bottom: 230px; } }

/* -- 13. DECORATIVE ART AS IMAGE WIDGETS. The fireflies, tree, bird and the hero wash are
   native Image widgets in a display:contents ground column, so each <img> is still an
   absolutely positioned child of the section as the mockup drew it. The generic image
   rule (`> img { width: 100% }`) is scoped away from them in 50-elementor; the mockup's own
   rules then size them. The hero wash lives inside the kept .hero-art block. */
.rfb-sec .elementor-widget-image.rfb-w[class*="rfb-w-firefly-art"] > img,
.rfb-sec .elementor-widget-image.rfb-w.rfb-w-wc-tree > img,
.rfb-sec .elementor-widget-image.rfb-w.rfb-w-bird > img { width: auto; max-width: none; }
.rfb-sec .elementor-widget-image.rfb-w.rfb-w-wc-tree > img { width: 420px; }
.rfb-sec .elementor-widget-image.rfb-w[class*="rfb-w-firefly-art"] > img { width: 70px; }
.rfb-sec .elementor-widget-image.rfb-w.rfb-w-firefly-art.rfb-w-s > img { width: 48px; }
/* the HTML widget holding the empty grass div must add no box of its own */
.rfb-sec .elementor-widget-html.rfb-w-wc-grass { position: static; line-height: 0; }
.elementor .hero-art img.hero-wc { width: 158%; max-width: none; height: auto; }
.elementor .hero-art img.hb { height: auto; }
@media (max-width: 980px) { .elementor .hero-art img.hero-wc { width: 100%; margin: 0; } .rfb-sec .elementor-widget-image.rfb-w.rfb-w-wc-tree > img { width: 300px; } }

/* -- 14. THE HEADSHOT STACK. The two small photos are square cards; the column carries the
   card box (radius, shadow, aspect-ratio) and the image fills it. */
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-head-sm > .elementor-widget-wrap,
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-head-sm .elementor-widget { height: 100%; }
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-head-sm img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rfb-sec .elementor-widget.rfb-wrap-head-main > img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* the stamp is a verbatim <div class="stamp"> inside a Text Editor; the mockup rule is
   re-pointed by the map, this just makes sure the editor wrapper adds nothing */
.rfb-sec .elementor-widget.rfb-w-stamp { position: static; line-height: 1.2; }

/* -- 15. THE BOOK CARD. `.book p { flex: 1 }` lands on the <p>; the WIDGET is the flex item. */
.elementor-column.rfb-col-book > .elementor-widget-wrap > .elementor-widget-text-editor.rfb-w:not(.rfb-w-num) { flex: 1 1 auto; }
.elementor-column.rfb-col-book > .elementor-widget-wrap > .elementor-widget-text-editor.rfb-w:not(.rfb-w-num) > p { flex: none; }
.elementor-column.rfb-col-book > .elementor-widget-wrap > .elementor-widget-button.rfb-w { margin-top: 20px; }
.elementor-column.rfb-col-book > .elementor-widget-wrap > .elementor-widget-button.rfb-w .elementor-button-wrapper { margin-top: 0; }
.rfb-sec .elementor-widget.rfb-wrap-cover-img > img { width: auto; max-width: 100%; max-height: 100%; height: 100%; object-fit: contain; display: block; margin: 0 auto; filter: drop-shadow(0 18px 22px rgba(22,21,20,.18)); transition: .25s; }
.elementor-column.rfb-col-book:hover .elementor-widget.rfb-wrap-cover-img > img { transform: translateY(-4px) scale(1.02); }

/* -- 16. THE KIND WORDS INVITATION (no real reviews yet, spec 12.1). */
.kind-invite { margin-top: 34px; }

/* -- 17. THE STATIC BIO CARD (longer bio not yet supplied): no hover flip, no pointer. */
.bio-card.bio-static, .bio-card.bio-static:hover { cursor: default; background: var(--paper); border-color: var(--line); color: inherit; transform: none; }
.bio-card.bio-static:hover h2, .bio-card.bio-static:hover h3 { color: var(--ink); }
.bio-card.bio-static:hover .dropcap::first-letter { color: var(--ink); }
.bio-card.bio-static:hover .bio { opacity: 1; }
.bio-card.bio-static { min-height: 0; }

/* -- 18. THE PAGE HEAD on the inner pages, drawn in the hero's language. */
.pg-head { padding: 72px 56px 56px; }
.pg-head h1 { font-size: 54px; max-width: 900px; margin: 0 auto; }
.pg-head .lead { font-size: 18.5px; }
.crumbs { font-size: 12.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 18px; display: block; }
.crumbs a { color: inherit; } .crumbs a:hover { color: var(--ink); }
.pg-head .firefly-art.ff-1 { right: 12%; top: 40px; } .pg-head .firefly-art.ff-3 { right: 24%; top: 120px; }
@media (max-width: 980px) { .pg-head { padding: 48px 24px 40px; } .pg-head h1 { font-size: 36px; } }

/* -- 19. THE BOOK SPLITS on the Books page. */
.book-split { padding: 72px 56px; }
.split-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 64px; align-items: center; }
.split-grid.flip .split-cover { order: 2; }
.split-cover img { display: block; width: auto; max-width: 100%; max-height: 440px; margin: 0 auto; filter: drop-shadow(0 22px 26px rgba(22,21,20,.22)); }
.split-copy .lead { max-width: 560px; }
.book-meta { margin-top: 18px; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 15px; color: var(--muted); }
.book-split:not(.soft) + .book-split:not(.soft), .book-split.soft + .book-split.soft { padding-top: 0; }
@media (max-width: 980px) { .book-split { padding: 56px 24px; } .split-grid { grid-template-columns: 1fr; gap: 28px; } .split-grid.flip .split-cover { order: 0; } .split-cover img { max-height: 300px; } }

/* -- 20. THE CTA BAND. */
.cta-band .lead { max-width: 640px; }
.cta-band .row-btn { margin-top: 28px; }

/* -- 21. THE EYEBROW RULE on the centred heads: the mockup hides the little line when
   centred. The map handles `.center .eyebrow::before`; this covers the carried column. */
.rfb-col-center .eyebrow::before, .rfb-carry-center .eyebrow::before { display: none; }
.rfb-col-center .eyebrow, .rfb-carry-center .eyebrow { justify-content: center; }

/* -- 22. THE INFO LIST stays raw markup (icons + two-line items). Links inside it inherit. */
.info-list a { color: inherit; } .info-list a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* -- 23. MEASURED AFTER THE FIRST BUILD (2026-10-01). Elementor's own `.elementor-heading-title
   { margin: 0 }` is (0,2,0) and loads after rfb.css, so the mockup's `.hero h1 { margin-bottom }`
   (0,1,1) lost and the lead sat flush under the headline. Restated at (0,3,1). */
.hero .elementor-widget-heading h1.elementor-heading-title { margin-bottom: 20px; }
.hero .elementor-widget-text-editor.rfb-w-dropcap > p { margin-bottom: 34px; }
/* the footer has three columns while the social profiles are unconfirmed; fill the row */
.f-grid:has(> :nth-child(3):last-child) { grid-template-columns: 1.4fr 1fr 1fr; }
/* Kind Words on a phone: with no reader cards yet the band is short, so the tree and the
   fireflies sat on the heading. More room below the copy, fireflies down by the tree. */
@media (max-width: 980px) {
  .rfb-band-kind { padding-bottom: 340px; }
  .rfb-band-kind .ff-4 { top: auto; bottom: 300px; left: 12px; }
  .rfb-band-kind .ff-5 { top: auto; bottom: 150px; left: 310px; }   /* measured: at left 120 it sat on the invite button */
  .rfb-band-kind .ff-6 { top: auto; bottom: 250px; left: 60px; }
}

/* ==================== 20-nav.css ==================== */
/* ============================================================================
   20-nav.css — header, mobile drawer, footer.
   The mockup draws the nav as a flat <li> list with hover underlines, a sticky
   translucent cream bar, and the logo at 92px. Everything else is what a real site
   needs (drawer, current state, admin bar, the real footer columns).
   ========================================================================== */
.admin-bar header.nav { top: 32px; }
.rfb-nav { gap: 20px; }
.rfb-logo img { height: 92px; width: auto; display: block; }
.rfb-logo .lt { font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: 20px; color: var(--ink); }
.rfb-menu { flex: 1 1 auto; display: flex; justify-content: center; }
.rfb-menu-list { display: flex; gap: 30px; list-style: none; margin: 0; padding: 0; font-size: 14.5px; font-weight: 700; color: var(--ink); }
.rfb-menu-list li { position: relative; white-space: nowrap; }
.rfb-menu-list a { color: inherit; display: inline-block; padding: 6px 0; }
.rfb-menu-list li::after { content: ''; position: absolute; left: 0; right: 100%; bottom: -2px; height: 2px; background: var(--ink); transition: .2s; }
.rfb-menu-list li:hover::after, .rfb-menu-list li.current-menu-item::after, .rfb-menu-list li.current_page_parent::after { right: 0; }
.rfb-nav-cta { flex-shrink: 0; }

/* toggle + drawer, at the mockup's own 980px collapse */
.rfb-nav-toggle { display: none; flex-direction: column; justify-content: center; gap: 5px; width: 46px; height: 42px; padding: 0 9px; background: var(--ink); border: 0; border-radius: 100px; cursor: pointer; }
.rfb-nav-toggle span { display: block; height: 2px; background: var(--cream); border-radius: 2px; transition: transform .18s ease, opacity .18s ease; }
.rfb-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.rfb-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.rfb-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
@media (max-width: 980px) {
  header.nav { padding: 8px 24px; }
  .rfb-logo img { height: 64px; }
  .rfb-nav-toggle { display: flex; }
  .rfb-menu { position: absolute; top: 100%; left: 0; right: 0; z-index: 65; display: none; flex-direction: column; align-items: stretch; padding: 8px 24px 20px; background: var(--cream); border-bottom: 1px solid var(--line); box-shadow: 0 20px 40px rgba(22,21,20,.12); }
  .rfb-nav.is-open .rfb-menu { display: flex; }
  .rfb-menu-list { display: flex; flex-direction: column; align-items: stretch; gap: 0; width: 100%; font-size: 17px; }
  .rfb-menu-list li { border-bottom: 1px solid var(--line); white-space: normal; }
  .rfb-menu-list li::after { display: none; }
  .rfb-menu-list a { display: block; padding: 14px 0; }
}
@media (max-width: 640px) { .rfb-nav-cta { display: none; } .rfb-logo img { height: 56px; } }

/* footer: the mockup's footer.base, .f-grid, footer h4/ul/a rules apply directly */
.f-h { color: var(--cream); font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 16px; font-family: 'Fraunces', Georgia, serif; font-weight: 600; }
.f-menu { list-style: none; font-size: 14px; line-height: 2.1; margin: 0; padding: 0; }
.f-menu a { color: #C2B9A8; } .f-menu a:hover { color: var(--cream); }
.f-logo { height: 120px; width: auto; display: block; margin-bottom: 18px; }
.f-logo-txt { color: var(--cream); font-family: 'Fraunces', Georgia, serif; font-size: 20px; display: block; margin-bottom: 18px; }
.f-tag { font-size: 14px; max-width: 300px; }
.f-bot a { color: #C2B9A8; } .f-bot a:hover { color: var(--cream); }
@media (max-width: 640px) { .f-grid { grid-template-columns: 1fr; } }

/* ==================== 30-form.css ==================== */
/* ============================================================================
   30-form.css — the MCW contact form, dressed as the mockup's .cform. The mockup's own
   .cform / .two / .fld rules carry the look; this adds the states the mockup has none of.
   ========================================================================== */
.rfb-form .fld label { cursor: pointer; }
.rfb-form .fld input::placeholder, .rfb-form .fld textarea::placeholder { color: var(--muted); }   /* #6B655B: 4.8:1 on the field ground (measured) */
.rfb-form button.btn { width: 100%; justify-content: center; margin-top: 6px; }
.rfb-form button.btn.btn-ink { color: var(--cream); }
.rfb-form button.btn.btn-ink:hover { color: var(--ink); }
.cform .req { color: var(--muted); }
.form-notice { border-left: 3px solid var(--ink); background: var(--cream-soft); padding: 14px 16px; border-radius: 0 10px 10px 0; margin-bottom: 18px; font-size: 14px; }
.form-notice strong { display: block; color: var(--ink); margin-bottom: 4px; }
/* the form column is a Shortcode widget; it adds no box of its own */
.rfb-sec .elementor-widget-shortcode.rfb-w { width: 100%; }
/* the info list keeps its mockup markup; its icons are inline SVG strokes */
.info-list .ic svg { width: 18px; height: 18px; }
@media (max-width: 980px) { .cform { padding: 28px 22px; } }

/* ==================== 40-utils.css ==================== */
/* 40-utils.css — the mockup's inline style="" attributes as classes, so the band functions
   can carry them and gen_map can re-point them onto Elementor nodes. */
.mt14{margin-top:14px}.mt24{margin-top:24px}
.jc{justify-content:center}
.rel-z2{position:relative;z-index:2}
.on-dark{color:#CFC7B8}
.h2-34{font-size:34px;margin-bottom:16px}
.h3-26{font-size:26px;margin-bottom:14px}
.fs17{font-size:17px}
/* the six firefly positions from the mockup's inline styles; the mockup's nth-of-type
   phase offsets cannot match one image per widget, so the phases are explicit too */
.ff-1{top:60px;right:220px;transform:rotate(-6deg)}
.ff-2{top:190px;right:150px;transform:scaleX(-1) rotate(6deg);animation-duration:8s;animation-delay:-2s}
.ff-3{top:30px;right:380px;transform:rotate(8deg);animation-duration:7s;animation-delay:-4s}
.ff-4{top:120px;left:80px}
.ff-5{top:180px;left:220px;transform:scaleX(-1);animation-duration:8s;animation-delay:-2s}
.ff-6{top:250px;left:10px;animation-duration:7s;animation-delay:-4s}
@media (max-width:980px){.ff-1{right:24px;top:30px}.ff-2{right:70px;top:120px}.ff-3{right:150px;top:16px}.ff-4{left:12px}.ff-5{left:120px}.ff-6{left:40px;top:220px}}

/* ==================== 50-elementor.css ==================== */
/* ============================================================================
   50-elementor.css — the generic structure of a widgetized band.

   A band is `section.rfb-sec > .elementor-container > .elementor-column.rfb-col >
   .elementor-widget-wrap > .elementor-widget.rfb-w > (h2|p|img|a)`. The mockup's own
   rules describe a plain nested div tree, so this file makes Elementor's tree behave
   like one: the container stacks its columns (block flow), a column takes the full
   width, widget wraps add nothing, and widgets are the leaf they hold.

   Specificity: Elementor's frontend stylesheet loads AFTER rfb.css and sits at
   (0,2,0) for `.elementor-section .elementor-container`, so structure rules here are
   (0,3,0) or better.
   ========================================================================== */

/* the container is the band's content box: the mockup's .wrap is 1200px and the section
   padding (`section{padding:96px 56px}`) already supplies the gutter. */
.elementor-section.rfb-sec > .elementor-container {
  display: flex; flex-direction: column; align-items: stretch; flex-wrap: nowrap;
  max-width: 1200px; width: 100%; margin: 0 auto; position: static;
}
.elementor-section.elementor-inner-section.rfb-sec > .elementor-container { max-width: none; }
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col { width: 100%; flex: 0 0 auto; min-height: 0; position: relative; }
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col > .elementor-widget-wrap {
  padding: 0; display: flex; flex-direction: column; align-items: stretch; align-content: normal; width: 100%;
}
.rfb-sec .elementor-widget.rfb-w { width: auto; margin-block-end: 0; position: static; }
.rfb-sec .elementor-widget.rfb-w > * { box-sizing: border-box; }
.elementor-widget:not(:last-child) { margin-bottom: 0; }

/* the ground column (decorative art peeled off the front of a band) takes no space */
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-ground,
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-ground > .elementor-widget-wrap,
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-ground .rfb-w { display: contents; }

/* a grid / row inner section: its container is the grid, its columns are the cells */
.elementor-section.rfb-sec.rfb-grid > .elementor-container > .elementor-column.rfb-col { width: auto; flex: 0 1 auto; min-width: 0; }
.elementor-section.rfb-sec.rfb-grid > .elementor-container > .elementor-column.rfb-col > .elementor-widget-wrap { height: 100%; }
.elementor-section.rfb-sec.rfb-grid > .elementor-container > .elementor-column.rfb-col > .elementor-widget-wrap > .elementor-section.rfb-sec:only-child { flex: 1 1 auto; display: flex; flex-direction: column; }
.elementor-section.rfb-sec.rfb-grid > .elementor-container > .elementor-column.rfb-col > .elementor-widget-wrap > .elementor-section.rfb-sec:only-child > .elementor-container { flex: 1 1 auto; min-height: 100%; }

/* leaf widgets render the leaf, nothing else. (0,1,0) so a mockup rule such as
   `.hero p { margin-bottom: 34px }` (0,1,1) and every mapped `.rfb-w-X > *` (0,3,0) win. */
:where(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-image, .elementor-widget-button).rfb-w > * { margin: 0; }
.rfb-sec .elementor-widget-heading .elementor-heading-title { font-family: 'Fraunces', Georgia, serif; color: var(--ink); line-height: 1.12; letter-spacing: -.01em; font-weight: 600; padding: 0; margin: 0; }
.rfb-sec .elementor-widget-heading h1.elementor-heading-title { font-size: 60px; }
.rfb-sec .elementor-widget-heading h2.elementor-heading-title { font-size: 40px; }
.rfb-sec .elementor-widget-heading h3.elementor-heading-title { font-size: 22px; }
.rfb-sec .elementor-widget-heading h4.elementor-heading-title { font-size: 16px; }
.dark .elementor-widget-heading .elementor-heading-title { color: var(--cream); }
@media (max-width: 980px) { .rfb-sec .elementor-widget-heading h1.elementor-heading-title { font-size: 38px; } .rfb-sec .elementor-widget-heading h2.elementor-heading-title { font-size: 29px; } }
.rfb-sec .elementor-widget-text-editor { font-size: inherit; line-height: inherit; color: inherit; }
.rfb-sec .elementor-widget-image { line-height: 0; text-align: inherit; }
.rfb-sec .elementor-widget-image img { display: block; height: auto; }
/* content photographs fill their widget; decorative art (fireflies, tree, bird) sizes itself */
.rfb-sec .elementor-widget-image.rfb-w:not([class*="rfb-w-firefly-art"]):not(.rfb-w-wc-tree):not(.rfb-w-bird) > img,
.rfb-sec .elementor-widget-image.rfb-w:not([class*="rfb-w-firefly-art"]):not(.rfb-w-wc-tree):not(.rfb-w-bird) > a > img { width: 100%; }
.rfb-sec .elementor-widget-image.rfb-w:not([class*="rfb-wrap-"]) { flex: 0 0 auto; }

/* Elementor's button chrome is replaced by the mockup's .btn language. The anchor carries
   the mockup classes through the widget wrapper (rfb-w-btn, rfb-w-btn-ink...). (0,3,0)
   beats the kit's (0,2,0). */
.rfb-sec .elementor-widget-button .elementor-button-wrapper { display: block; }
.rfb-sec .elementor-widget.rfb-w:not(.rfb-b) .elementor-button {
  display: inline-flex; align-items: center; gap: 9px; line-height: normal; background: none; border: 2px solid var(--ink); border-radius: 100px;
  padding: 15px 28px; color: var(--ink); font-family: 'Nunito', sans-serif; font-weight: 700; font-size: 14.5px; letter-spacing: normal; text-transform: none; white-space: nowrap; transition: .18s; box-shadow: none;
}
.rfb-sec .elementor-widget.rfb-w .elementor-button .elementor-button-content-wrapper { display: inline; }
.rfb-sec .elementor-widget.rfb-w .elementor-button .elementor-button-text { display: inline; }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-ink .elementor-button { background: var(--ink); color: var(--cream); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-ink .elementor-button:hover { background: transparent; color: var(--ink); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-outline .elementor-button { background: transparent; color: var(--ink); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-outline .elementor-button:hover { background: var(--ink); color: var(--cream); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-cream .elementor-button { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-cream .elementor-button:hover { background: transparent; color: var(--cream); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-outline-cream .elementor-button { background: transparent; color: var(--cream); border-color: var(--cream); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-outline-cream .elementor-button:hover { background: var(--cream); color: var(--ink); }
.rfb-sec .elementor-widget.rfb-w.rfb-w-btn-sm .elementor-button { padding: 11px 20px; font-size: 13.5px; }
/* A PLAIN mockup link became a Button widget marked rfb-b: Elementor's chrome is unset at
   (0,3,0), under every mapped link rule, which then styles the <a> as the mockup did. */
:where(.rfb-sec .elementor-widget.rfb-b) .elementor-button.elementor-button.elementor-button { all: unset; display: inline-block; cursor: pointer; box-sizing: border-box; }
:where(.rfb-sec .elementor-widget.rfb-b) .elementor-button.elementor-button.elementor-button:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; }
.rfb-sec .elementor-widget.rfb-b .elementor-button-content-wrapper, .rfb-sec .elementor-widget.rfb-b .elementor-button-text { display: inline; }
/* a row-root band: the map re-points the root's row layout at the container */
.elementor-section.rfb-sec.rfb-rowband { display: block; }
.elementor-section.rfb-sec.rfb-rowband > .elementor-container { width: 100%; }
/* a .row-btn inner section: buttons side by side on one baseline, wrapping */
.elementor-section.rfb-grid-row-btn > .elementor-container { align-items: center; flex-wrap: wrap; }
.rfb-sec .elementor-widget-button.rfb-w { width: auto; align-self: flex-start; }
.center .elementor-widget-button.rfb-w, .rfb-carry-center .elementor-widget-button.rfb-w, .rfb-col-center .elementor-widget-button.rfb-w { align-self: center; }
.rfb-grid-row-btn > .elementor-container > .elementor-column.rfb-col { width: auto; }
.rfb-grid-row-btn.rfb-grid-jc > .elementor-container { justify-content: center; }

/* text-only spans became a Text Editor whose <p> wraps a <span>; the span rule
   (.eyebrow etc.) is re-pointed by the map at `> *`, i.e. the <p>. */
.rfb-sec .elementor-widget-text-editor.rfb-w > p > span:only-child { display: inline; }
/* the HTML widget is a leaf too */
.rfb-sec .elementor-widget-html.rfb-w { line-height: inherit; }
/* dark bands set a light body colour; Elementor's text widget inherits it */
.dark .elementor-widget-text-editor { color: inherit; }

/* a .center column: centre every widget in it */
.rfb-sec > .elementor-container > .elementor-column.rfb-col-center > .elementor-widget-wrap { align-items: center; text-align: center; }
.rfb-sec > .elementor-container > .elementor-column.rfb-col-center .elementor-widget.rfb-w { width: 100%; }
.elementor-section.rfb-carry-center > .elementor-container { align-items: center; text-align: center; }
.elementor-section.rfb-carry-center > .elementor-container .elementor-widget.rfb-w { width: 100%; }
.rfb-sec .elementor-widget.rfb-w-lead > * { max-width: 620px; }
.rfb-col-center .elementor-widget.rfb-w-lead > *, .rfb-carry-center .elementor-widget.rfb-w-lead > * { margin-left: auto; margin-right: auto; }
.rfb-col-center .elementor-widget.rfb-w-eyebrow > *, .rfb-carry-center .elementor-widget.rfb-w-eyebrow > * { justify-content: center; }

/* The [VERIFY] notice on a draft page: deliberately loud. */
.rfb-verify-note { background: #FBEFE6; border-top: 4px solid #B04A3A; border-bottom: 1px solid var(--line); }
.rfb-verify-note p { max-width: 900px; margin: 0 auto; padding: 22px 56px; font-size: 15px; line-height: 1.6; color: #7A2E22; }

/* a whole band: the mockup markup is intact inside one HTML widget */
.elementor-section.rfb-sec.rfb-whole { padding: 0; }
.elementor-section.rfb-sec.rfb-whole > .elementor-container { max-width: none; display: block; }
.elementor-section.rfb-sec.rfb-whole .elementor-widget-html.rfb-w { width: 100%; }

/* ==================== 60-elementor-map.css ==================== */
/* GENERATED by gen_map.py from 00-mockup.css + 10-bridge.css + 40-utils.css + class-usage.json. Do not edit. */

.elementor-section.rfb-carry-wrap > .elementor-container{max-width:1200px; margin:0 auto}
.elementor-section.rfb-grid-wrap > .elementor-container{max-width:1200px; margin:0 auto}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-wrap{max-width:1200px; margin:0 auto}
.rfb-sec .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;display:flex;align-items:center;gap:10px;}
.rfb-sec .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{content:'';width:22px;height:1px;background:var(--ink);opacity:.5;}
.elementor-section.rfb-grid-center > .elementor-container .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){justify-content:center;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){justify-content:center;}
.elementor-section.rfb-grid-center > .elementor-container .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{display:none;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{display:none;}
.rfb-sec .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){font-size:18px;max-width:620px;}
.elementor-section.rfb-grid-center > .elementor-container{text-align:center}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-center > .elementor-widget-wrap{text-align:center}
.elementor-section.rfb-grid-center > .elementor-container .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){margin-left:auto;margin-right:auto;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-center .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){margin-left:auto;margin-right:auto;}
.dark .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){color:#A79E8E;}
.dark .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{background:var(--cream);}
.rfb-sec .elementor-widget.rfb-w-dropcap > :not(.elementor-element-overlay)::first-letter{font-family:'Fraunces',Georgia,serif;font-weight:700;font-style:italic; float:left;font-size:4.6em;line-height:.78;padding:.08em .12em 0 0;color:var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn > :not(.elementor-element-overlay){display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:14.5px;white-space:nowrap; padding:15px 28px;border-radius:100px;border:2px solid var(--ink);cursor:pointer;transition:.18s;font-family:'Nunito',sans-serif;}
.rfb-sec .elementor-widget.rfb-w-btn-ink > :not(.elementor-element-overlay){background:var(--ink);color:var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-ink > :not(.elementor-element-overlay):hover{background:transparent;color:var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn-outline > :not(.elementor-element-overlay){background:transparent;color:var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn-outline > :not(.elementor-element-overlay):hover{background:var(--ink);color:var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-cream > :not(.elementor-element-overlay){background:var(--cream);color:var(--ink);border-color:var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-cream > :not(.elementor-element-overlay):hover{background:transparent;color:var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-sm > :not(.elementor-element-overlay){padding:11px 20px;font-size:13.5px;}
.elementor-section.rfb-carry-row-btn > .elementor-container{display:flex; gap:14px; flex-wrap:wrap; flex-direction: row}
.elementor-section.rfb-grid-row-btn > .elementor-container{display:flex; gap:14px; flex-wrap:wrap; flex-direction: row}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-row-btn > .elementor-widget-wrap{display:flex; gap:14px; flex-wrap:wrap; flex-direction: row}
.rfb-sec .elementor-widget.rfb-w-wc-tree > :not(.elementor-element-overlay){position:absolute;bottom:60px;left:40px;width:420px;height:auto;z-index:0;pointer-events:none;}
.rfb-sec .elementor-widget.rfb-w-firefly-art > :not(.elementor-element-overlay){position:absolute;width:70px;height:auto;z-index:5;pointer-events:none;animation:drift 6s ease-in-out infinite;}
.rfb-sec .elementor-widget.rfb-w-firefly-art.rfb-w-s > :not(.elementor-element-overlay){width:48px;}
.rfb-sec .elementor-widget.rfb-w-firefly-art > :not(.elementor-element-overlay):nth-of-type(2n){animation-duration:8s;animation-delay:-2s;}
.rfb-sec .elementor-widget.rfb-w-firefly-art > :not(.elementor-element-overlay):nth-of-type(3n){animation-duration:7s;animation-delay:-4s;}
.elementor-section.rfb-carry-hero-grid > .elementor-container{display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:40px; padding:96px 56px 80px; z-index:2}
.elementor-section.rfb-carry-mabout > .elementor-container{display:grid; grid-template-columns:.8fr 1.2fr; gap:64px; align-items:center; z-index:2}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-headshot{position:relative; z-index:2}
.rfb-sec .elementor-widget.rfb-wrap-head-main{border-radius:200px 200px 24px 24px;overflow:hidden;aspect-ratio:4/5;box-shadow:0 22px 50px rgba(22,21,20,.12);}
.rfb-sec .elementor-widget.rfb-wrap-head-main img{width:100%;height:100%;object-fit:cover;display:block;}
.elementor-section.rfb-grid-head-row > .elementor-container{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px}
.rfb-sec .elementor-widget.rfb-wrap-head-sm{border-radius:18px;overflow:hidden;aspect-ratio:1/1;box-shadow:0 14px 30px rgba(22,21,20,.10);}
.rfb-sec .elementor-widget.rfb-wrap-head-sm img{width:100%;height:100%;object-fit:cover;display:block;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-headshot .stamp{position:absolute;right:-18px;top:34%;width:112px;height:112px;border-radius:50%;background:var(--ink);color:var(--cream);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Fraunces',serif;font-style:italic;font-size:14px;line-height:1.2;padding:14px;transform:rotate(-8deg);box-shadow:0 14px 30px rgba(22,21,20,.18);}
.bio-card:hover .elementor-widget.rfb-w-dropcap > :not(.elementor-element-overlay)::first-letter{color:var(--glow);}
.bio-card.flipped .elementor-widget.rfb-w-dropcap > :not(.elementor-element-overlay)::first-letter{color:var(--glow);}
.bio-long .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){color:var(--glow);}
.bio-long .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{background:var(--glow);}
#about .elementor-section.rfb-carry-mabout > .elementor-container{z-index:2}
.elementor-section.rfb-grid-books-grid > .elementor-container{display:grid; grid-template-columns:repeat(4,1fr); gap:32px 28px; margin-top:54px}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book{background:var(--paper); border:1px solid var(--line); border-radius:22px; transition:.2s}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book > .elementor-widget-wrap{padding:26px 26px 30px; display:flex; flex-direction:column}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book:hover{transform:translateY(-6px); box-shadow:0 26px 50px rgba(22,21,20,.10)}
.rfb-sec .elementor-widget.rfb-wrap-cover-img{height:270px;margin:0 auto 20px;width:100%;display:flex;align-items:center;justify-content:center;padding:6px;}
.rfb-sec .elementor-widget.rfb-wrap-cover-img img{max-width:100%;max-height:100%;height:100%;width:auto;object-fit:contain;display:block;filter:drop-shadow(0 18px 22px rgba(22,21,20,.18));transition:.25s;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book:hover .elementor-widget.rfb-wrap-cover-img img{transform:translateY(-4px) scale(1.02);}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book .elementor-widget.rfb-w-num > :not(.elementor-element-overlay){font-family:'Fraunces',serif;font-style:italic;font-size:13px;color:var(--muted);margin-bottom:4px;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book h3{font-size:20px;margin-bottom:8px;line-height:1.2;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book p{font-size:14.5px;line-height:1.7;flex:1;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book .elementor-widget.rfb-w-btn > :not(.elementor-element-overlay){margin-top:20px;align-self:flex-start;}
.elementor-section.rfb-carry-contact-grid > .elementor-container{display:grid; grid-template-columns:1fr .85fr; gap:56px; align-items:start}
.cform .elementor-widget.rfb-w-btn > :not(.elementor-element-overlay){width:100%;justify-content:center;margin-top:6px;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-cinfo > .elementor-widget-wrap{padding-top:8px}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-cinfo h2{margin-bottom:16px;}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-cinfo .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){margin-bottom:30px;}
.rfb-sec .elementor-widget.rfb-w-bird > :not(.elementor-element-overlay){position:absolute;left:clamp(60px,10vw,170px);bottom:-6px;height:290px;width:auto;z-index:4;pointer-events:none; filter:drop-shadow(0 8px 10px rgba(22,21,20,.12));}
@media(max-width:980px){
  .elementor-section.rfb-carry-hero-grid > .elementor-container{padding:56px 24px 60px; grid-template-columns:1fr; gap:34px}
  .elementor-section.rfb-carry-mabout > .elementor-container{grid-template-columns:1fr; gap:34px}
  .rfb-sec .elementor-widget.rfb-wrap-head-main{aspect-ratio:4/4.6;}
  .elementor-section.rfb-grid-books-grid > .elementor-container{grid-template-columns:1fr 1fr; gap:22px 16px}
  .elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-book > .elementor-widget-wrap{padding:18px 18px 22px}
  .rfb-sec .elementor-widget.rfb-wrap-cover-img{height:210px;}
  .elementor-section.rfb-carry-contact-grid > .elementor-container{grid-template-columns:1fr; gap:36px}
  .rfb-sec .elementor-widget.rfb-w-bird > :not(.elementor-element-overlay){height:210px;left:24px;}
  .rfb-sec .elementor-widget.rfb-w-wc-tree > :not(.elementor-element-overlay){width:300px;left:-10px;}
}
@media(max-width:560px){
  .elementor-section.rfb-grid-books-grid > .elementor-container{grid-template-columns:1fr}
}
@media (prefers-reduced-motion: reduce){
  .rfb-sec .elementor-widget.rfb-w-firefly-art > :not(.elementor-element-overlay){animation: none;}
}
.elementor-widget-text-editor .elementor-widget.rfb-w-btn.rfb-w-elementor-button > :not(.elementor-element-overlay):not(.btn):not(.elementor-button){color: var(--ink); text-decoration: underline; text-decoration-color: var(--cream-deep); text-underline-offset: 3px; text-decoration-thickness: 2px;}
.elementor-widget-text-editor .elementor-widget.rfb-w-btn > :not(.elementor-element-overlay):not(.btn):hover{text-decoration-color: var(--ink);}
.dark .elementor-widget-text-editor .elementor-widget.rfb-w-btn > :not(.elementor-element-overlay):not(.btn){color: var(--cream); text-decoration-color: rgba(248,243,233,.4);}
.dark .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){color: #B9B0A0;}
.rfb-sec .elementor-widget.rfb-w-btn-ink > :not(.elementor-element-overlay){color: var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-ink > :not(.elementor-element-overlay):hover{color: var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-ink > :not(.elementor-element-overlay):hover{color: var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn-outline > :not(.elementor-element-overlay){color: var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn-outline > :not(.elementor-element-overlay):hover{color: var(--cream);}
.rfb-sec .elementor-widget.rfb-w-btn-cream > :not(.elementor-element-overlay){color: var(--ink);}
.rfb-sec .elementor-widget.rfb-w-btn-cream > :not(.elementor-element-overlay):hover{color: var(--cream);}
@media print{
  .rfb-sec .elementor-widget.rfb-w-firefly-art > :not(.elementor-element-overlay){display: none !important;}
  .rfb-sec .elementor-widget.rfb-w-wc-tree > :not(.elementor-element-overlay){display: none !important;}
  .rfb-sec .elementor-widget.rfb-w-bird > :not(.elementor-element-overlay){display: none !important;}
}
.bio-card.bio-static:hover .elementor-widget.rfb-w-dropcap > :not(.elementor-element-overlay)::first-letter{color: var(--ink);}
.pg-head .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){font-size: 18.5px;}
.rfb-sec .elementor-widget.rfb-w-crumbs > :not(.elementor-element-overlay){font-size: 12.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 18px; display: block;}
.rfb-sec .elementor-widget.rfb-w-crumbs a{color: inherit;}
.rfb-sec .elementor-widget.rfb-w-crumbs a:hover{color: var(--ink);}
.pg-head .elementor-widget.rfb-w-firefly-art.rfb-w-ff-1 > :not(.elementor-element-overlay){right: 12%; top: 40px;}
.pg-head .elementor-widget.rfb-w-firefly-art.rfb-w-ff-3 > :not(.elementor-element-overlay){right: 24%; top: 120px;}
.elementor-section.rfb-carry-split-grid > .elementor-container{display: grid; grid-template-columns: .8fr 1.2fr; gap: 64px; align-items: center}
.elementor-section.rfb-carry-split-grid.rfb-carry-flip > .elementor-container .elementor-widget.rfb-wrap-split-cover{order: 2;}
.rfb-sec .elementor-widget.rfb-wrap-split-cover img{display: block; width: auto; max-width: 100%; max-height: 440px; margin: 0 auto; filter: drop-shadow(0 22px 26px rgba(22,21,20,.22));}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-split-copy .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){max-width: 560px;}
.rfb-sec .elementor-widget.rfb-w-book-meta > :not(.elementor-element-overlay){margin-top: 18px; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 15px; color: var(--muted);}
@media (max-width: 980px){
  .elementor-section.rfb-carry-split-grid > .elementor-container{grid-template-columns: 1fr; gap: 28px}
  .elementor-section.rfb-carry-split-grid.rfb-carry-flip > .elementor-container .elementor-widget.rfb-wrap-split-cover{order: 0;}
  .rfb-sec .elementor-widget.rfb-wrap-split-cover img{max-height: 300px;}
}
.cta-band .elementor-widget.rfb-w-lead > :not(.elementor-element-overlay){max-width: 640px;}
.cta-band .elementor-section.rfb-carry-row-btn > .elementor-container, .cta-band.elementor-section.rfb-carry-row-btn > .elementor-container{margin-top: 28px}
.cta-band .elementor-section.rfb-grid-row-btn > .elementor-container, .cta-band.elementor-section.rfb-grid-row-btn > .elementor-container{margin-top: 28px}
.cta-band .elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-row-btn, .cta-band.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-row-btn{margin-top: 28px}
.rfb-col-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{display: none;}
.rfb-carry-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay)::before{display: none;}
.rfb-col-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){justify-content: center;}
.rfb-carry-center .elementor-widget.rfb-w-eyebrow > :not(.elementor-element-overlay){justify-content: center;}
@media (max-width: 980px){
  .rfb-band-kind .elementor-widget.rfb-w-ff-4 > :not(.elementor-element-overlay){top: auto; bottom: 300px; left: 12px;}
  .rfb-band-kind .elementor-widget.rfb-w-ff-5 > :not(.elementor-element-overlay){top: auto; bottom: 150px; left: 310px;}
  .rfb-band-kind .elementor-widget.rfb-w-ff-6 > :not(.elementor-element-overlay){top: auto; bottom: 250px; left: 60px;}
}
.rfb-sec .elementor-widget.rfb-w-mt14 > :not(.elementor-element-overlay){margin-top:14px}
.elementor-section.rfb-carry-mt24 > .elementor-container{margin-top:24px}
.elementor-section.rfb-grid-mt24 > .elementor-container{margin-top:24px}
.elementor-section.rfb-carry-jc > .elementor-container{justify-content:center}
.elementor-section.rfb-sec > .elementor-container > .elementor-column.rfb-col-jc > .elementor-widget-wrap{justify-content:center}
.elementor-section.rfb-grid-rel-z2 > .elementor-container{z-index:2}
.rfb-sec .elementor-widget.rfb-w-on-dark > :not(.elementor-element-overlay){color:#CFC7B8}
.rfb-sec .elementor-widget.rfb-w-ff-1 > :not(.elementor-element-overlay){top:60px;right:220px;transform:rotate(-6deg)}
.rfb-sec .elementor-widget.rfb-w-ff-2 > :not(.elementor-element-overlay){top:190px;right:150px;transform:scaleX(-1) rotate(6deg);animation-duration:8s;animation-delay:-2s}
.rfb-sec .elementor-widget.rfb-w-ff-3 > :not(.elementor-element-overlay){top:30px;right:380px;transform:rotate(8deg);animation-duration:7s;animation-delay:-4s}
.rfb-sec .elementor-widget.rfb-w-ff-4 > :not(.elementor-element-overlay){top:120px;left:80px}
.rfb-sec .elementor-widget.rfb-w-ff-5 > :not(.elementor-element-overlay){top:180px;left:220px;transform:scaleX(-1);animation-duration:8s;animation-delay:-2s}
.rfb-sec .elementor-widget.rfb-w-ff-6 > :not(.elementor-element-overlay){top:250px;left:10px;animation-duration:7s;animation-delay:-4s}
@media (max-width:980px){
  .rfb-sec .elementor-widget.rfb-w-ff-1 > :not(.elementor-element-overlay){right:24px;top:30px}
  .rfb-sec .elementor-widget.rfb-w-ff-2 > :not(.elementor-element-overlay){right:70px;top:120px}
  .rfb-sec .elementor-widget.rfb-w-ff-3 > :not(.elementor-element-overlay){right:150px;top:16px}
  .rfb-sec .elementor-widget.rfb-w-ff-4 > :not(.elementor-element-overlay){left:12px}
  .rfb-sec .elementor-widget.rfb-w-ff-5 > :not(.elementor-element-overlay){left:120px}
  .rfb-sec .elementor-widget.rfb-w-ff-6 > :not(.elementor-element-overlay){left:40px;top:220px}
}

/* ==================== 65-widgets.css ==================== */
/* ============================================================================
   65-widgets.css — native Elementor widgets beyond heading/text/image/button.
   This build uses none yet (no accordion, no testimonial: there are no real reviews to
   show, spec 12.1). When reader words arrive they render as the mockup's .rev cards.
   ========================================================================== */
.rfb-sec .elementor-widget-shortcode.rfb-w .cform { width: 100%; }

/* ==================== 70-prose.css ==================== */
/* ============================================================================
   70-prose.css — the native prose bands on the inner pages (about, privacy). Heading,
   Text Editor and Button widgets in a single measured column, in the mockup's own type.
   ========================================================================== */
.elementor-section.rfb-band-prose { display: block; }
.elementor-section.rfb-band-prose.rfb-prose-cream { background: var(--cream); }
.elementor-section.rfb-band-prose.rfb-prose-soft { background: var(--cream-soft); }
.elementor-section.rfb-band-prose.rfb-prose-paper { background: var(--paper); }
.elementor-section.rfb-band-prose.rfb-prose-dark { background: var(--ink); color: #CFC7B8; }
.elementor-section.rfb-band-prose > .elementor-container { max-width: 1200px; }
.elementor-section.rfb-band-prose > .elementor-container > .elementor-column.rfb-prose { max-width: 780px; width: 100%; margin: 0 auto; }
.elementor-section.rfb-band-prose > .elementor-container > .elementor-column.rfb-prose > .elementor-widget-wrap { display: block; }
/* consecutive prose bands of the same ground tighten so the page does not read as slabs */
.elementor-section.rfb-band-prose.rfb-prose-cream + .elementor-section.rfb-band-prose.rfb-prose-cream { padding-top: 0; margin-top: -24px; }

.rfb-prose .elementor-widget-heading .elementor-heading-title { color: var(--ink); }
.rfb-prose .elementor-widget-heading h2.elementor-heading-title { font-size: 36px; margin: 0 0 20px; }
.rfb-prose .elementor-widget-heading h3.elementor-heading-title { font-size: 22px; margin: 34px 0 10px; }
.rfb-prose .elementor-widget-text-editor { font-size: 17px; line-height: 1.8; color: var(--body); }
.rfb-prose .elementor-widget-text-editor p { margin: 0 0 1.1em; }
.rfb-prose .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.rfb-prose .elementor-widget-text-editor strong { color: var(--ink); font-weight: 700; }
.rfb-prose .elementor-widget-text-editor ul { list-style: none; padding: 0; margin: 0 0 1.1em; }
.rfb-prose .elementor-widget-text-editor ul li { position: relative; padding-left: 26px; margin: 0 0 10px; }
.rfb-prose .elementor-widget-text-editor ul li::before { content: ''; position: absolute; left: 0; top: 12px; width: 10px; height: 10px; border-radius: 50%; background: var(--ink); }
.rfb-prose .elementor-widget-text-editor ol { padding-left: 1.3em; }
.rfb-prose .elementor-widget-text-editor + .elementor-widget-heading { margin-top: 8px; }
.rfb-prose .elementor-widget-button { margin-top: 26px; }
.rfb-prose-dark .rfb-prose .elementor-widget-heading .elementor-heading-title { color: var(--cream); }
.rfb-prose-dark .rfb-prose .elementor-widget-text-editor { color: #CFC7B8; }
/* the mid-page CTA inside prose: the mockup's ink pill */
.rfb-prose .elementor-widget-button .elementor-button { background: var(--ink); color: var(--cream); border: 2px solid var(--ink); border-radius: 100px; padding: 15px 28px; font-family: 'Nunito', sans-serif; font-weight: 700; font-size: 14.5px; }
.rfb-prose .elementor-widget-button .elementor-button:hover { background: transparent; color: var(--ink); }
@media (max-width: 980px) { .rfb-prose .elementor-widget-heading h2.elementor-heading-title { font-size: 29px; } }

/* the long article (legacy content, if any): plain measured prose */
.rfb-article { max-width: 780px; margin: 0 auto; font-size: 17px; line-height: 1.8; }
.rfb-article h2 { font-size: 30px; margin: 36px 0 12px; } .rfb-article h3 { font-size: 22px; margin: 28px 0 10px; }
.rfb-article p { margin: 0 0 1.1em; } .rfb-article img { max-width: 100%; height: auto; border-radius: 12px; }

/* sitemap */
.rfb-sitemap { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 36px 40px; }
.rfb-sitemap h2 { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; margin: 0 0 12px; font-family: 'Nunito', sans-serif; font-weight: 700; color: var(--muted); }
.rfb-sitemap ul { list-style: none; margin: 0; padding: 0; } .rfb-sitemap li { margin: 0 0 8px; font-size: 16px; }
.rfb-sitemap a { color: var(--ink); } .rfb-sitemap a:hover { text-decoration: underline; text-underline-offset: 3px; }
.rfb-sitemap:has(> :nth-child(2):last-child) { grid-template-columns: repeat(2, minmax(0,1fr)); }
@media (max-width: 980px) { .rfb-sitemap { grid-template-columns: 1fr; } }

/* THREE BOXES GO IN ONE ROW (Chloe's standing rule), and no orphan cards. The books
   grid is four across by design; two across under 980 and one under 560 are the
   mockup's own breakpoints. If the catalogue grows to five or six, this keeps rows full. */
@media (min-width: 981px) {
  .elementor-section.rfb-grid-books-grid > .elementor-container:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, 1fr); }
  .elementor-section.rfb-grid-books-grid > .elementor-container:has(> :nth-child(5):last-child),
  .elementor-section.rfb-grid-books-grid > .elementor-container:has(> :nth-child(6):last-child) { grid-template-columns: repeat(3, 1fr); }
}

/* Books with no Amazon listing yet: a quiet, non-clickable "Coming Soon" pill. */
.rfb-sec .elementor-widget.rfb-w.rfb-coming-soon .elementor-button,
.btn.btn-soon { background: transparent; color: var(--ink); border-style: dashed; opacity: .75; cursor: default; pointer-events: none; }
.rfb-sec .elementor-widget.rfb-w.rfb-coming-soon .elementor-button:hover { background: transparent; color: var(--ink); }

/* About: bring the pink watercolor splash out from behind the card so it reads. */
.splash-behind{left:3%;top:28%;width:165%;height:86%;transform:rotate(-8deg);opacity:1;}
.bio-wrap::before{content:"";position:absolute;z-index:0;pointer-events:none;left:-60%;top:-10%;width:66%;aspect-ratio:733/442;background:url(/wp-content/uploads/2026/10/splash-pink.webp) center/contain no-repeat;transform:rotate(14deg) scaleX(-1);opacity:.9;}
@media(max-width:980px){
  html #about .bio-wrap img.splash-behind{left:-120px;top:-190px;width:640px;height:386px;}
  .bio-wrap::before{left:auto;top:auto;right:-90px;bottom:-80px;width:300px;transform:rotate(-12deg);}
}

/* NAP top bar + footer address */
.rfb-topbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 22px;padding:8px 24px;background:var(--ink);color:var(--cream);font-size:13.5px;line-height:1.4;}
.rfb-topbar a{color:var(--cream);text-decoration:none;} .rfb-topbar a:hover{text-decoration:underline;}
.rfb-topbar svg{vertical-align:-2px;margin-right:2px;}
.rfb-topbar-name{font-family:'Fraunces',Georgia,serif;font-weight:600;letter-spacing:.02em;}
.f-nap{font-style:normal;line-height:1.9;} .f-nap strong{color:var(--cream);font-weight:600;}
@media (max-width:640px){.rfb-topbar{flex-direction:column;gap:2px;padding:8px 16px;font-size:13px;}}
/* 2026-10-15: at <=980 the grass strip drops to 70px (its solid ground starts ~26px up), so the
   tree at the desktop bottom:60px floated above it. Seat the trunk in the grass. */
@media (max-width: 980px) {
  .wc-tree,
  .rfb-sec .elementor-widget.rfb-w-wc-tree > :not(.elementor-element-overlay) { bottom: 20px; }
}
