:root{
  --midnight:#0f1424; --moon:#f3e9e4; --rose:#d9a7a0; --rose-deep:#b97d77;
  --lilac:#b9a8e8; --violet:#221b3a; --storm:#0e3a4a; --tide:#7fc4d6;
  --oxblood:#2a0f12; --ember:#e0703a; --gilt:#c9a25e; --crimson:#a3192d; --ink:#07090f;
  --display:'Bodoni Moda',Didot,'Bodoni 72',serif; --body:'Karla',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--midnight);color:var(--moon);font-family:var(--body);font-weight:300;font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
:focus-visible{outline:2px solid var(--rose);outline-offset:4px}
.wrap{width:min(1120px,100% - 3rem);margin-inline:auto}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.05}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:.9rem 1.5rem;
  background:rgba(15,20,36,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(217,167,160,.12);}
.nav .mark{font-family:var(--display);font-style:italic;font-size:1.25rem;text-decoration:none;color:var(--moon)}
.nav ul{display:flex;gap:1.6rem;list-style:none}
.nav ul a{text-decoration:none;font-size:.95rem;color:#c9c2cc}
.nav ul a:hover{color:var(--rose)}
.nav .cta{text-decoration:none;font-size:.9rem;padding:.45rem 1rem;border:1px solid var(--rose);border-radius:999px;color:var(--rose)}
@media(max-width:760px){.nav{flex-wrap:wrap;row-gap:.5rem;padding-bottom:.8rem;background:rgba(15,20,36,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav ul{order:3;width:100%;overflow-x:auto;gap:1.2rem;scrollbar-width:none;white-space:nowrap;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent)}.nav ul::-webkit-scrollbar{display:none}.nav ul a{font-size:.9rem}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;text-align:center;padding:6.5rem 1.5rem 4rem;overflow:hidden;
  background:radial-gradient(60% 45% at 50% 38%,#26304f 0%,transparent 70%),radial-gradient(80% 60% at 50% 110%,#3a2440 0%,transparent 70%),var(--midnight)}
.sky{position:absolute;inset:0;width:100%;height:100%;fill:#fff;pointer-events:none}
.hero-inner{position:relative;z-index:1;width:100%}
.moon{width:clamp(130px,22vw,190px);margin:0 auto .6rem;mix-blend-mode:screen}
.hero h1{font-style:italic;font-weight:400;font-size:clamp(3.4rem,13vw,9.5rem);letter-spacing:-.02em;line-height:.88;
  background:linear-gradient(175deg,#fff 10%,var(--moon) 40%,var(--rose) 95%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero h1 span{display:block}
.hero h1 span+span{padding-left:.9em}
.fan{position:relative;height:clamp(220px,46vw,340px);margin:2.2rem auto 1.6rem;max-width:620px}
.fan img{position:absolute;left:50%;bottom:0;width:clamp(110px,24vw,170px);border-radius:3px;
  box-shadow:0 22px 40px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.06);transform-origin:50% 120%;
  transform:translateX(-50%) rotate(0deg);animation:unfurl 1.4s cubic-bezier(.2,.8,.2,1) .3s both}
.fan img:nth-child(1){--r:-26deg;--x:-118%} .fan img:nth-child(2){--r:-13deg;--x:-84%}
.fan img:nth-child(3){--r:0deg;--x:-50%;z-index:3}
.fan img:nth-child(4){--r:13deg;--x:-16%} .fan img:nth-child(5){--r:26deg;--x:18%}
.fan img:nth-child(2),.fan img:nth-child(4){z-index:2}
@media(max-width:520px){.fan img{width:92px}.fan{height:200px}.fan img:nth-child(1){--r:-22deg;--x:-128%}.fan img:nth-child(2){--r:-11deg;--x:-89%}.fan img:nth-child(4){--r:11deg;--x:-11%}.fan img:nth-child(5){--r:22deg;--x:28%}}
@keyframes unfurl{from{transform:translateX(-50%) rotate(0) translateY(30px);opacity:0}to{transform:translateX(var(--x)) rotate(var(--r));opacity:1}}
.hero .vow{font-family:var(--display);font-style:italic;font-size:clamp(1.25rem,3.6vw,1.75rem);line-height:1.35;max-width:30ch;margin:0 auto;color:#e6dbe0}
.hero .sub{margin:.9rem auto 2rem;max-width:44ch;color:#aaa3b3;font-size:1rem}
.actions{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}
.btn{display:inline-block;text-decoration:none;font-family:var(--body);font-weight:500;font-size:1rem;padding:.95rem 1.7rem;border-radius:999px;border:1px solid var(--rose);color:var(--rose);transition:background .25s,color .25s}
.btn:hover{background:var(--rose);color:var(--midnight)}
.btn.fill{background:var(--rose);color:var(--midnight)}
.btn.fill:hover{background:var(--moon);border-color:var(--moon)}

/* ---------- worlds ---------- */
.world{position:relative;padding:clamp(5rem,10vw,8rem) 0;overflow:hidden}
.world-head{display:grid;grid-template-columns:minmax(0,1fr);max-width:820px;gap:clamp(2rem,5vw,4.5rem);align-items:center}
@media(max-width:820px){.world-head{grid-template-columns:1fr}}
.world h2{font-size:clamp(2.8rem,8vw,5.6rem);letter-spacing:-.015em}
.world h2 em{display:block;font-size:.42em;letter-spacing:0;margin-bottom:.4rem;opacity:.8}
.world .intro{font-size:1.1rem;max-width:52ch;margin-top:1.3rem}
.world .facts{margin-top:1rem;font-size:.95rem;opacity:.75;max-width:52ch}
.hero-cover{justify-self:center;width:min(78%,340px);position:relative}
.hero-cover img{border-radius:3px;box-shadow:0 40px 80px rgba(0,0,0,.6)}

.shelf{list-style:none;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(180px,250px);justify-content:start;gap:clamp(1.2rem,3vw,2.2rem);
  margin-top:clamp(3rem,7vw,5rem);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 0 1.5rem;scrollbar-width:thin}
.shelf li{scroll-snap-align:start;display:flex;flex-direction:column}
@media(max-width:620px){.shelf{grid-auto-columns:62%}}
.book{aspect-ratio:600/940;position:relative}
.book img{width:100%;height:100%;object-fit:cover;border-radius:2px;box-shadow:0 18px 36px rgba(0,0,0,.5);transition:transform .35s}
.shelf li:hover .book img{transform:translateY(-6px)}
.cover-blank{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;border:1px dashed currentColor;opacity:.6;border-radius:2px;font-family:var(--display);font-style:italic;font-size:1.4rem}
.cover-blank small{font-family:var(--body);font-style:normal;font-size:.85rem}
.num{margin-top:1.1rem;font-size:.9rem;opacity:.7}
.shelf h3{font-size:1.45rem;margin-top:.15rem}
.shelf .line{font-size:.95rem;opacity:.8;margin-top:.35rem;flex:1}
.read{display:inline-block;margin-top:.8rem;font-size:.95rem;font-weight:500;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;align-self:flex-start}

/* Season of Scandal: violet masquerade */
.scandal{background:radial-gradient(70% 60% at 85% 20%,#3b2d66 0%,transparent 70%),linear-gradient(180deg,var(--midnight),var(--violet) 18%,#1a1530)}
.scandal h2,.scandal .read{color:var(--lilac)}
.scandal h2{background:linear-gradient(180deg,#efe8ff,var(--lilac));-webkit-background-clip:text;background-clip:text;color:transparent}
.scandal::before{content:"";position:absolute;right:-6rem;top:3rem;width:22rem;height:22rem;border-radius:50%;border:1px solid rgba(185,168,232,.15);box-shadow:0 0 0 2.5rem rgba(185,168,232,.04),0 0 0 5rem rgba(185,168,232,.025)}

.scandal .book img{box-shadow:0 18px 36px rgba(0,0,0,.5),0 0 0 1px rgba(220,215,240,.35),0 0 30px rgba(185,168,232,.18)}

/* A Kiss of Salt: storm band */
.salt{padding:clamp(4rem,8vw,6rem) 0;background:linear-gradient(160deg,#071c26,var(--storm) 55%,#0a2733);color:#e2f2f6}
.salt .world-head{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);max-width:none}
@media(max-width:820px){.salt .world-head{grid-template-columns:1fr}}
.salt h2{color:#fff;font-size:clamp(2.6rem,7vw,4.6rem)}
.salt .tagline{font-family:var(--display);font-style:italic;font-size:clamp(1.3rem,3vw,1.7rem);color:var(--tide);margin-top:1rem;line-height:1.3}
.salt .btn{border-color:var(--tide);color:var(--tide);margin-top:2rem}
.salt .btn:hover{background:var(--tide);color:#05202a}
.salt .waves{position:absolute;inset:auto 0 0;height:90px;width:100%;opacity:.25}

/* Aeryndor: ember and gilt */
.aeryndor{background:radial-gradient(60% 50% at 20% 15%,#5a1a12 0%,transparent 70%),radial-gradient(50% 40% at 90% 90%,#3d1410 0%,transparent 70%),var(--oxblood);color:#f4e4d6}
.aeryndor h2{background:linear-gradient(180deg,#f7e3b5,var(--gilt) 70%,#8a6a35);-webkit-background-clip:text;background-clip:text;color:transparent}
.aeryndor .read{color:var(--gilt)}
.aeryndor .book{padding:7px;background:linear-gradient(135deg,#f3d99b,var(--gilt) 35%,#7d5a26 60%,#e7c77e);border-radius:3px;box-shadow:0 24px 44px rgba(0,0,0,.55)}
.aeryndor .book img{box-shadow:none;border-radius:1px}
.gilt-frame{position:relative;padding:14px;background:linear-gradient(135deg,#f3d99b,var(--gilt) 35%,#7d5a26 60%,#e7c77e);border-radius:4px;box-shadow:0 40px 80px rgba(0,0,0,.6)}
.gilt-frame img{border-radius:1px;box-shadow:none}
.gilt-frame::after{content:"";position:absolute;inset:6px;border:1px solid rgba(60,35,10,.5);pointer-events:none}
.embers{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(2px 2px at 12% 30%,var(--ember),transparent),radial-gradient(1.5px 1.5px at 78% 22%,#ffb37a,transparent),radial-gradient(2px 2px at 64% 70%,var(--ember),transparent),radial-gradient(1px 1px at 30% 82%,#ffcf9a,transparent),radial-gradient(1.5px 1.5px at 90% 55%,var(--ember),transparent);opacity:.7}
.blurb{margin-top:1.4rem;max-width:52ch;font-size:1.05rem;opacity:.9}
.comps{margin-top:1.2rem;font-family:var(--display);font-style:italic;font-size:1.2rem;color:var(--gilt)}

/* A Kiss Before Midnight: moon and ribbon */
.midnight{background:radial-gradient(40% 40% at 78% 30%,rgba(232,206,160,.22),transparent 70%),var(--ink);text-align:center}
.midnight .wrap{display:flex;flex-direction:column;align-items:center}
.midnight h2{font-style:italic;font-size:clamp(2.8rem,9vw,6rem)}
.midnight .standalone{margin-top:1rem;color:#cfc4b0}
.ribbon{width:min(100%,520px);height:auto;margin:-1rem auto -1.5rem;position:relative;z-index:0}
.midnight .hero-cover{z-index:1;width:min(64%,280px);margin-top:1rem}
.midnight .btn{margin-top:2.2rem;border-color:#e8cea0;color:#e8cea0}
.midnight .btn:hover{background:#e8cea0;color:var(--ink)}

/* ---------- praise ---------- */
.praise{padding:clamp(5rem,10vw,8rem) 0;background:var(--midnight)}
.praise h2{font-size:clamp(2.2rem,6vw,3.6rem);text-align:center;font-style:italic}
.quotes{margin-top:3.5rem;display:grid;gap:3rem}
.quotes figure{max-width:34ch;}
.quotes figure:nth-child(even){justify-self:end;text-align:right}
.quotes blockquote{font-family:var(--display);font-size:clamp(1.6rem,4.4vw,2.6rem);line-height:1.15;color:var(--moon)}
.quotes figcaption{margin-top:.7rem;font-size:.95rem;color:var(--rose)}
.quotes figcaption cite{font-style:italic}

/* ---------- letter ---------- */
.letter-sec{padding:clamp(5rem,10vw,8rem) 1.5rem;background:radial-gradient(60% 50% at 50% 50%,#2a2240,transparent 75%),var(--midnight)}
.letter{position:relative;max-width:620px;margin:0 auto;background:linear-gradient(170deg,#f6ece8,#ead9d5);color:#2b2230;padding:clamp(2.6rem,6vw,4rem) clamp(1.6rem,6vw,3.6rem) clamp(2.4rem,5vw,3.2rem);
  border-radius:2px;box-shadow:0 50px 90px rgba(0,0,0,.55)}

.seal{position:absolute;top:-38px;right:clamp(1.2rem,6vw,3rem);width:84px;height:84px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%,#efc3bb,var(--rose-deep) 55%,#8a524d);box-shadow:inset 0 0 0 6px rgba(255,255,255,.12),inset 0 -6px 12px rgba(0,0,0,.25),0 8px 18px rgba(0,0,0,.35);
  font-family:var(--display);font-style:italic;font-size:1.7rem;color:#5c2f2b;text-shadow:0 1px 0 rgba(255,255,255,.35)}
.letter .salut{font-family:var(--display);font-style:italic;font-size:1.3rem;color:#7a5560}
.letter h2{font-size:clamp(2rem,6vw,3rem);margin:.5rem 0 1rem;color:#241b2a}
.letter p{max-width:48ch}
.letter ul{margin:1.2rem 0 1.8rem;padding-left:1.1rem}
.letter li{margin:.3rem 0}
.letter li::marker{content:"\263E  ";color:var(--rose-deep)}
.ml-slot form{display:flex;gap:.6rem;flex-wrap:wrap}
.ml-slot input[type=email]{flex:1 1 220px;padding:.95rem 1.1rem;border:1px solid #c9b3b0;background:#fffaf8;border-radius:999px;font:inherit;color:#2b2230}
.ml-slot button{padding:.95rem 1.6rem;border-radius:999px;border:0;background:#2b2230;color:#f6ece8;font:500 1rem var(--body);cursor:pointer}
.ml-slot button:hover{background:#4a3a52}
.letter .sign{margin-top:1.8rem;font-family:var(--display);font-style:italic;font-size:1.5rem;color:#7a5560}
.fine{font-size:.85rem;color:#7a6c74;margin-top:.8rem}

/* ---------- about ---------- */
.about{padding:clamp(5rem,10vw,7rem) 0}
.about .wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,5rem);align-items:center}
@media(max-width:820px){.about .wrap{grid-template-columns:1fr}}
.about img{width:min(100%,360px);margin-inline:auto}
.about h2{font-size:clamp(2.2rem,6vw,3.6rem);margin-bottom:1.2rem}
.about p{max-width:56ch;margin-bottom:1rem;color:#d2cad3}
.about .closing{font-family:var(--display);font-style:italic;font-size:1.35rem;line-height:1.35;color:var(--rose)}

/* ---------- faq ---------- */
.faq{padding:clamp(4rem,8vw,6rem) 0 clamp(5rem,9vw,7rem);border-top:1px solid rgba(217,167,160,.15)}
.faq .wrap{max-width:760px}
.faq h2{font-size:clamp(2rem,5vw,3rem);margin-bottom:2rem}
.faq details{border-bottom:1px solid rgba(217,167,160,.18)}
.faq summary{cursor:pointer;list-style:none;padding:1.15rem 2rem 1.15rem 0;position:relative;font-family:var(--display);font-size:1.3rem;line-height:1.3}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:.3rem;top:50%;width:10px;height:10px;border-right:1.5px solid var(--rose);border-bottom:1.5px solid var(--rose);transform:translateY(-70%) rotate(45deg);transition:transform .25s}
.faq details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.faq details p{padding:0 0 1.3rem;color:#c9c2cc;max-width:62ch}

footer{padding:3rem 1.5rem 3.5rem;text-align:center;background:var(--ink);font-size:.95rem;color:#8f879a}
footer nav{display:flex;flex-wrap:wrap;row-gap:.6rem;gap:1.6rem;justify-content:center;margin-bottom:1.2rem}
footer nav a{text-decoration:none;color:#d2cad3}
footer nav a:hover{color:var(--rose)}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.fan img{transform:translateX(var(--x)) rotate(var(--r))}html{scroll-behavior:auto}}

.salt .kicker-line{font-family:var(--display);font-style:italic;font-size:1.15rem;color:#bfe3ec;margin-top:.8rem;line-height:1.35}
.salt .intro{margin-top:1rem}
.salt .tropes{margin-top:1.2rem;font-size:.95rem;color:var(--tide);max-width:52ch}
.rules{list-style:none;margin:2.4rem auto .6rem;max-width:30rem;padding:1.8rem 1.6rem;border-top:1px solid rgba(232,206,160,.35);border-bottom:1px solid rgba(232,206,160,.35);counter-reset:r}
.rules li{font-family:var(--display);font-size:clamp(1.25rem,3.6vw,1.6rem);line-height:1.3;color:#efe3cc;padding:.45rem 0}
.rules li:last-child{color:#e2394f;font-style:italic;margin-top:.4rem}
.mid-blurb{max-width:52ch;margin:2rem auto 0;color:#d8cfc0}
.mid-comps{max-width:52ch;margin:1rem auto 0;font-size:.95rem;color:#a99f8e}

/* ---------- inner pages ---------- */
.page-hero{position:relative;padding:8.5rem 0 3.5rem;text-align:center;overflow:hidden;
  background:radial-gradient(60% 70% at 50% 0%,#2a3050 0%,transparent 70%),var(--midnight)}
.page-hero .sky{opacity:.7}
.page-hero h1{position:relative;font-style:italic;font-size:clamp(2.8rem,9vw,5.4rem);letter-spacing:-.015em;
  background:linear-gradient(175deg,#fff 10%,var(--moon) 45%,var(--rose) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.page-hero .lede{position:relative;max-width:48ch;margin:1.2rem auto 0;font-size:1.1rem;color:#cfc6d2}
.prose{max-width:62ch;margin-inline:auto}
.prose h2{font-size:clamp(1.8rem,4.6vw,2.6rem);margin:3rem 0 1rem}
.prose p,.prose li{color:#d2cad3}
.prose ul{padding-left:1.2rem;margin:.8rem 0}
.prose li{margin:.4rem 0}
.prose li::marker{content:"\263E  ";color:var(--rose)}
.section-pad{padding:clamp(3rem,7vw,5rem) 0 clamp(5rem,9vw,7rem)}
.nav ul a[aria-current]{color:var(--rose)}

.countdown{display:grid;grid-template-columns:auto auto;gap:.1rem .5rem;align-items:baseline;margin-top:1rem;font-family:var(--body);font-style:normal}
.countdown b{font-family:var(--display);font-size:2.2rem;font-weight:400;text-align:right;line-height:1}
.countdown i{font-style:normal;font-size:.85rem;opacity:.8}
.countdown-card{opacity:1!important;border-style:solid!important;border-color:rgba(185,168,232,.45)!important;background:radial-gradient(circle at 50% 30%,rgba(185,168,232,.16),transparent 70%)}
.countdown-card span{color:#e4dbff}

.aer-links{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem}
.aer-links a{color:inherit;text-underline-offset:4px}

/* ---------- MailerLite form, restyled to sit inside the letter ---------- */
.ml-block-form{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-start}
.ml-form-formContent{flex:1 1 100%}
.ml-block-form input.form-control{width:100%;padding:.95rem 1.1rem;border:1px solid #c9b3b0;background:#fffaf8;border-radius:999px;font:inherit;color:#2b2230}
.ml-block-form input.form-control:focus{outline:2px solid var(--rose-deep);outline-offset:2px}
.ml-error input.form-control{border-color:#b3261e}
.ml-form-recaptcha{flex:1 1 100%}
.ml-form-recaptcha.ml-error iframe{outline:1px solid #b3261e}
@media(max-width:400px){.g-recaptcha{transform:scale(.86);transform-origin:0 0}}
.ml-form-embedSubmit{flex:1 1 100%}
.ml-form-embedSubmit button{padding:.95rem 1.8rem;border-radius:999px;border:0;background:#2b2230;color:#f6ece8;font:500 1rem var(--body);cursor:pointer}
.ml-form-embedSubmit button:hover{background:#4a3a52}
.ml-form-embedSubmitLoad{display:inline-block;width:18px;height:18px;border-radius:50%;border:3px solid #f6ece8;border-right-color:transparent;animation:mlspin 1s linear infinite;vertical-align:middle}
@keyframes mlspin{to{transform:rotate(360deg)}}
.ml-form-successContent h4{font-family:var(--display);font-weight:400;font-size:clamp(1.6rem,5vw,2.2rem);color:#241b2a;margin:.4rem 0 .6rem}
.ml-form-successContent p{color:#4a3d48}
