:root{
  --cream:#f4ecdf; --cream2:#efe6d6; --ink:#3b302a; --soft:#6f6055;
  --terra:#a9736a; --gold:#c7a58e; --line:#e6d9ca; --card:#fffdf8;
  --blush:#f4ddd7; --beige:#fbf6ec; --accent:#b5847c; --rose:#f6e2dc;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{overflow-x:hidden}
body{margin:0;background:var(--cream);color:var(--ink);
  font-family:"EB Garamond",Georgia,serif;font-size:19px;line-height:1.72;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.disp{font-family:"Fraunces","Cormorant Garamond",Georgia,serif;font-weight:500;letter-spacing:-.01em}
em{font-family:"Fraunces";font-style:italic;font-weight:500;color:var(--accent)}
a{color:var(--terra);text-decoration:none}
img{max-width:100%}
.wrap{max-width:1140px;margin:0 auto;padding:0 30px}
.eyebrow{font-family:"EB Garamond",serif;text-transform:uppercase;letter-spacing:.3em;font-size:12px;color:var(--accent);font-weight:600}
.btn{display:inline-block;background:var(--ink);color:#f8f1e6;padding:15px 30px;border-radius:40px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;transition:transform .3s ease,background .3s ease;margin:4px 6px 4px 0}
.btn:hover{background:var(--accent);color:#fff;transform:translateY(-3px)}
.btn.ghost{background:transparent;border:1px solid var(--accent);color:var(--accent)}
.btn.ghost:hover{background:var(--accent);color:#fff}
.btn.light{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.light:hover{background:var(--ink);color:#f8f1e6}
.center{text-align:center}
.blob{border-radius:63% 37% 54% 46% / 55% 48% 52% 45%}

/* NAV */
nav{position:sticky;top:0;z-index:20;background:rgba(244,236,223,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;align-items:center;justify-content:space-between;height:66px}
nav .brand{font-family:"Fraunces";font-size:23px;font-weight:600;letter-spacing:0}
nav .links a{margin-left:24px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
nav .links a:hover{color:var(--accent)}
@media(max-width:820px){nav .links{display:none}}

/* HERO */
.hero{background:var(--blush);padding:80px 0 92px;position:relative;overflow:hidden}
.hero .wrap{position:relative;z-index:1}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:46px;align-items:center}
.hero h1{font-size:64px;line-height:1.03;margin:14px 0 18px}
.hero p{font-size:21px;color:#5a4a40;max-width:42ch}
.hero .ph{overflow:hidden;border:8px solid #fff;box-shadow:0 30px 60px -34px rgba(60,45,40,.5);animation:morph 14s ease-in-out infinite}
.hero .ph img{display:block;width:100%;height:600px;object-fit:cover;object-position:50% 8%;transition:transform 1.2s ease}
.hero .ph:hover img{transform:scale(1.05)}
@media(max-width:820px){.hero-grid{grid-template-columns:1fr;gap:30px}.hero h1{font-size:44px}.hero .ph img{height:500px}}
@keyframes morph{0%{border-radius:63% 37% 54% 46%/55% 48% 52% 45%}50%{border-radius:44% 56% 43% 57%/52% 41% 59% 48%}100%{border-radius:63% 37% 54% 46%/55% 48% 52% 45%}}
.bg-blob{position:absolute;border-radius:50%;filter:blur(8px);opacity:.5;z-index:0;pointer-events:none}
.b1{width:280px;height:280px;background:#f6e0d9;top:-70px;left:-80px;animation:drift 18s ease-in-out infinite}
.b2{width:190px;height:190px;background:#efe6d6;bottom:-50px;right:6%;animation:drift 22s ease-in-out infinite reverse}
@keyframes drift{0%{transform:translate(0,0)}50%{transform:translate(26px,-22px)}100%{transform:translate(0,0)}}
.wave{display:block;width:100%;height:60px;margin-top:-1px}
.wave path{animation:waveflow 9s ease-in-out infinite}
@keyframes waveflow{0%,100%{d:path("M0,30 C240,60 480,0 720,20 C960,40 1200,55 1440,25 L1440,60 L0,60 Z")}50%{d:path("M0,24 C240,4 480,58 720,34 C960,10 1200,30 1440,40 L1440,60 L0,60 Z")}}

/* RIBBON */
.ribbon{background:var(--blush);overflow:hidden;white-space:nowrap;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ribbon .track{display:inline-block;animation:slide 28s linear infinite;font-family:"Fraunces";font-style:italic;font-size:22px;color:var(--terra)}
.ribbon span{margin:0 24px}.ribbon .dot{color:var(--accent)}
@keyframes slide{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

section{padding:82px 0;position:relative}
section h2{font-size:44px;line-height:1.1;margin:8px 0 14px}
.lead{font-size:21px;color:var(--soft);max-width:60ch}
.two{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:center}
@media(max-width:860px){.two{grid-template-columns:1fr;gap:34px}}
.portrait{overflow:hidden;border:8px solid #fff;background:var(--card);box-shadow:0 30px 60px -40px rgba(60,45,40,.5);animation:morph 16s ease-in-out infinite}
.portrait img{display:block;width:100%;border-radius:1px}

/* FOUR LEVELS */
.levels{background:var(--cream2)}
.levgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:36px}
.lev{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:28px 22px;transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease}
.lev:hover{transform:translateY(-6px);box-shadow:0 26px 44px -30px rgba(60,45,40,.5)}
.lev .k{display:inline-block;font-family:"Fraunces";font-size:40px;color:var(--accent);animation:bob 5s ease-in-out infinite}
.lev:nth-child(2) .k{animation-delay:.6s}.lev:nth-child(3) .k{animation-delay:1.2s}.lev:nth-child(4) .k{animation-delay:1.8s}
.lev h4{font-size:22px;font-weight:600;margin:6px 0 6px}
.lev p{font-size:15px;color:var(--soft);margin:0;line-height:1.5}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@media(max-width:820px){.levgrid{grid-template-columns:repeat(2,1fr)}}

/* BODY MAP SERIES */
.series{background:var(--beige)}
.maps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:38px}
@media(max-width:860px){.maps{grid-template-columns:repeat(2,1fr)}}
.map{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px 20px;position:relative;transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease}
.map:hover{transform:translateY(-6px);box-shadow:0 26px 44px -30px rgba(60,45,40,.5)}
.map .n{font-family:"Fraunces";font-size:15px;color:var(--gold);letter-spacing:.16em}
.map h4{font-family:"Fraunces";font-weight:600;font-size:22px;margin:6px 0 6px}
.map p{margin:0;font-size:15px;color:var(--soft);line-height:1.5}
.map.ready{outline:2px solid var(--accent);outline-offset:-2px}
.map.dash{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:transparent;border:1px dashed var(--gold)}
.tag{position:absolute;top:-11px;right:14px;background:var(--accent);color:#fff;font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding:3px 10px;border-radius:20px}
/* clickable card overlay */
.stretch{position:absolute;inset:0;z-index:3;border-radius:inherit}
.map:has(.stretch),.prod:has(.stretch){cursor:pointer}
.map .readmore{display:inline-block;margin-top:12px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}

/* QUOTE */
.quote{background:var(--blush);padding:64px 0}
blockquote{font-family:"Fraunces";font-style:italic;font-size:34px;line-height:1.3;color:var(--ink);max-width:26ch;margin:0 auto;text-align:center}

/* FREE LIBRARY */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:44px}
@media(max-width:980px){.grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.grid{grid-template-columns:repeat(2,1fr)}}
.book{text-align:center}
.book a.cov{display:block;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff;box-shadow:0 22px 40px -32px rgba(60,45,40,.6);transition:transform .3s ease,box-shadow .3s ease}
.book a.cov:hover{transform:translateY(-6px) rotate(-1deg);box-shadow:0 34px 54px -30px rgba(60,45,40,.6)}
.book img{display:block;width:100%}
.book h4{font-family:"Fraunces";font-weight:600;font-size:18px;margin:14px 0 2px;line-height:1.2}
.book p{margin:0 0 8px;font-size:14px;color:var(--soft)}
.book .dl{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}

/* COURSE BAND */
.band{background:#ece0d2;text-align:center}
.band h2{color:var(--ink)}
.band .lead{color:var(--soft);margin:0 auto}
.kicker{font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:var(--terra);margin-bottom:4px}

/* SOUL */
.soul{background:var(--beige)}
.cards2{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:36px}
@media(max-width:760px){.cards2{grid-template-columns:1fr}}
.mini{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:30px 28px;transition:transform .4s ease,box-shadow .4s ease}
.mini:hover{transform:translateY(-5px);box-shadow:0 26px 44px -30px rgba(60,45,40,.5)}
.mini h3{font-family:"Fraunces";font-size:28px;margin:0 0 8px}

/* SHOP */
.shop{background:var(--cream2)}
.shop-feature{background:var(--card);border:1px solid var(--line);border-radius:18px;display:grid;grid-template-columns:1fr 1.2fr;gap:0;overflow:hidden;margin-top:40px}
@media(max-width:760px){.shop-feature{grid-template-columns:1fr}}
.shop-feature .pic{background:#efe6d6 center/cover no-repeat;min-height:320px}
.shop-feature .txt{padding:40px 42px}
.shop-feature .txt h3{font-family:"Fraunces";font-size:34px;margin:2px 0 10px;line-height:1.1}
.shop-feature .txt p{color:var(--soft);margin:0 0 18px}
.price{font-family:"Fraunces";font-size:28px;color:var(--accent);margin-right:14px}
.paidgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:26px}
@media(max-width:860px){.paidgrid{grid-template-columns:repeat(2,1fr)}}
.prod{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 18px;position:relative;display:flex;flex-direction:column;transition:transform .4s ease,box-shadow .4s ease}
.prod:hover{transform:translateY(-5px);box-shadow:0 26px 44px -30px rgba(60,45,40,.5)}
.prod .n{font-family:"Fraunces";font-size:14px;color:var(--gold);letter-spacing:.16em}
.prod h4{font-family:"Fraunces";font-weight:600;font-size:20px;margin:5px 0 6px;line-height:1.15}
.prod p{margin:0 0 14px;font-size:14.5px;color:var(--soft);line-height:1.45;flex:1}
.prod a.buy{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.prod .soon{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.prod.rdy{outline:2px solid var(--accent);outline-offset:-2px}
.prod.dash{justify-content:center;align-items:center;text-align:center;background:transparent;border:1px dashed var(--gold)}
.prod .tag{top:-11px;right:12px}

/* JOURNAL cards */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-top:44px}
@media(max-width:900px){.posts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.posts{grid-template-columns:1fr}}
.post-card{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:transform .4s ease,box-shadow .4s ease}
.post-card:hover{transform:translateY(-6px);box-shadow:0 30px 50px -34px rgba(60,45,40,.55)}
.post-card .thumb{aspect-ratio:1.5/1;background:#efe6d6 center/cover no-repeat;border-bottom:1px solid var(--line)}
.post-card .body{padding:22px 24px 26px}
.post-card .cat{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.post-card h3{font-family:"Fraunces";font-size:24px;line-height:1.18;margin:8px 0 8px}
.post-card p{margin:0 0 14px;font-size:16px;color:var(--soft);line-height:1.5}
.post-card .more{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}

/* FOOTER */
footer{background:var(--ink);color:#ecdfd0;padding:56px 0 44px;text-align:center}
footer .brand{font-family:"Fraunces";font-size:25px;color:#f6efe2}
footer .row{margin:16px 0;font-size:14px;letter-spacing:.04em;color:#cdbda4}
footer .row a{color:#e6d4bf;margin:0 8px}
.fine{font-size:12.5px;color:#a2917d;max-width:64ch;margin:20px auto 0;line-height:1.6}

/* ARTICLE (blog) */
.article-hero{background:var(--blush);padding:72px 0 34px;text-align:center;position:relative;overflow:hidden}
.article-hero .cat{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-weight:600}
.article-hero h1{font-family:"Fraunces";font-size:50px;line-height:1.08;max-width:22ch;margin:14px auto 0}
@media(max-width:760px){.article-hero h1{font-size:34px}}
article{max-width:720px;margin:0 auto;padding:24px 28px 20px}
article h2{font-family:"Fraunces";font-size:32px;line-height:1.18;margin:38px 0 10px}
article p{margin:0 0 20px}
article em{color:var(--accent)}
article ul{margin:0 0 22px;padding-left:0;list-style:none}
article ul li{position:relative;padding:0 0 10px 26px}
article ul li:before{content:"\2748";position:absolute;left:0;top:2px;color:var(--gold);font-size:13px}
.article-lead{font-size:23px;line-height:1.55;color:var(--ink)}
.cta-box{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:34px 30px;text-align:center;margin:36px 0 10px}
.cta-box img{width:150px;border-radius:6px;box-shadow:0 20px 34px -24px rgba(60,45,40,.6);border:1px solid var(--line);margin-bottom:16px}
.cta-box p{max-width:44ch;margin:0 auto 18px;color:var(--soft)}
.disclaimer{font-size:13px;color:#9d8e7d;line-height:1.6;max-width:720px;margin:22px auto 0;padding:0 28px}
.backlink{display:inline-block;margin:30px 0 0;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}

/* article images: large, contained, never broken */
.bleed{margin:40px auto;max-width:900px;padding:0 28px}
.bleed img{display:block;width:100%;height:auto;max-height:60vh;object-fit:cover;border-radius:10px;box-shadow:0 30px 60px -40px rgba(60,45,40,.55)}
.bleed .cap{max-width:640px;margin:12px auto 0;font-size:14px;color:var(--soft);font-style:italic;text-align:center}
.pull{font-family:"Fraunces";font-style:italic;font-size:30px;line-height:1.3;color:var(--accent);text-align:center;max-width:20ch;margin:44px auto}
@media(max-width:760px){.pull{font-size:24px}}

/* ===== MOTION ===== */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}
.petal{position:fixed;top:-40px;color:var(--accent);opacity:.5;z-index:5;pointer-events:none;animation:fall linear infinite}
@keyframes fall{0%{transform:translateY(-40px) rotate(0)}100%{transform:translateY(105vh) rotate(320deg)}}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
}
