:root{--bg: #100e1a;--bg-2: #181527;--panel: #1d1930;--panel-2: #241f38;--border: #322c4d;--gold: #f0b542;--gold-soft: #ffcf6e;--cream: #f3ead6;--cream-dim: #cabfa3;--muted: #a99a7e;--muted-2: #8a7fa0;--ink: #1a1408;--awn: var(--gold);--serif: "Cormorant Garamond", Georgia, serif;--sans: "Inter", system-ui, -apple-system, sans-serif;--wrap: 1140px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--cream);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}.nav{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:15px 26px;background:#100e1ac7;backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.brand{font-family:var(--serif);font-size:25px;font-weight:600;letter-spacing:5px;color:var(--cream)}.brand .dot{color:var(--gold)}.nav-links{display:flex;align-items:center;gap:24px}.nav-links a{color:var(--cream-dim);font-size:14px;transition:color .2s}.nav-links a:hover{color:var(--gold)}.lang{position:relative}.lang summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:7px;background:var(--panel-2);color:var(--gold);border:1px solid var(--border);border-radius:20px;font-size:13px;padding:6px 13px}.lang summary::-webkit-details-marker{display:none}.lang[open] summary{border-color:var(--gold)}.lang-menu{position:absolute;right:0;top:calc(100% + 8px);background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:6px;min-width:168px;box-shadow:0 14px 40px #00000080;z-index:50}.lang-opt{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:8px;font-size:14px;color:var(--cream)}.lang-opt.active{color:var(--gold)}.lang-opt.soon{color:var(--muted-2)}.lang-opt .tag{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted-2)}.lang-opt.active .tag{color:var(--gold)}a.lang-opt:hover{background:var(--panel-2)}.hero-stage{position:relative;overflow:hidden;min-height:78vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px 0;background-image:radial-gradient(120% 70% at 50% -10%,rgba(60,52,90,.4) 0%,transparent 55%),linear-gradient(to bottom,#100e1a80,#100e1a52 40%,#100e1af7),url(/images/hero-street.webp);background-size:cover,cover,cover;background-position:center,center,center bottom;background-repeat:no-repeat}.hero-stage:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -120px 160px -60px var(--bg),inset 0 60px 120px -60px #00000080}.lanterns{display:flex;justify-content:center;gap:40px;padding:8px 0 22px;position:relative;z-index:3}.lantern{width:13px;height:18px;border-radius:5px 5px 8px 8px;background:var(--gold);box-shadow:0 0 20px 6px #f0b54273;animation:flicker 2.4s ease-in-out infinite alternate}.lantern:nth-child(2n){animation-duration:3.2s}.lantern:nth-child(3n){animation-duration:2.7s}@keyframes flicker{0%{opacity:.6}to{opacity:1}}.embers{position:absolute;inset:0;pointer-events:none;z-index:2}.ember{position:absolute;bottom:-10px;width:3px;height:3px;border-radius:50%;background:var(--gold-soft);opacity:0;box-shadow:0 0 6px 1px #ffcf6eb3;animation:rise linear infinite}@keyframes rise{0%{transform:translateY(0) translate(0);opacity:0}12%{opacity:.9}to{transform:translateY(-86vh) translate(18px);opacity:0}}.skyline{position:absolute;left:0;right:0;bottom:0;width:100%;z-index:2;display:block}.hero-content{position:relative;z-index:4}.hero-content h1{font-family:var(--serif);font-weight:600;font-size:clamp(38px,6.5vw,70px);line-height:1.05;color:#f8f0dc;margin:0 0 16px;text-shadow:0 2px 30px rgba(0,0,0,.4)}.hero-content p{color:var(--cream-dim);max-width:580px;margin:0 auto 26px;font-size:17px}.btn{display:inline-block;background:var(--gold);color:var(--ink);font-weight:600;font-size:15px;padding:12px 28px;border-radius:24px;border:0;cursor:pointer;transition:transform .15s,background .2s,box-shadow .2s;box-shadow:0 0 #f0b54280}.btn:hover{background:var(--gold-soft);transform:translateY(-2px);box-shadow:0 10px 30px -8px #f0b54280}.btn-ghost{background:transparent;color:var(--gold);border:1px solid var(--gold);box-shadow:none}.btn-ghost:hover{background:#f0b5421a}.section-label{text-align:center;text-transform:uppercase;letter-spacing:3px;font-size:12px;color:var(--muted-2);margin:0 0 6px}.section-title{text-align:center;font-family:var(--serif);font-size:clamp(26px,4vw,38px);color:var(--cream);margin:0 0 26px}.shelf-section{padding:56px 0 8px}.shelf{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(120px,1fr);gap:18px;overflow-x:auto;padding:8px 2px 22px;scrollbar-width:thin}.shelf-item{text-align:left}.shelf-item img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:6px;box-shadow:0 10px 26px #00000073;transition:transform .18s;background:var(--panel-2)}.shelf-item:hover img{transform:translateY(-4px)}.shelf-item .t{font-family:var(--serif);font-size:15px;color:var(--cream);margin-top:8px;line-height:1.15}.shelf-item .a{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.stalls{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:26px;padding:8px 0 40px}.stall{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:visible;transition:transform .2s,border-color .2s,box-shadow .2s}.stall:before{content:"";position:absolute;top:-7px;right:20px;width:10px;height:14px;border-radius:4px 4px 6px 6px;background:var(--gold);box-shadow:0 0 16px 5px #f0b54280;z-index:5;opacity:.8}.stall:hover{transform:translateY(-6px);border-color:var(--awn);box-shadow:0 22px 50px -20px color-mix(in srgb,var(--awn) 60%,black)}.stall:hover:before{opacity:1}.stall-inner{border-radius:12px;overflow:hidden}.awning{height:17px;position:relative;background-image:repeating-linear-gradient(90deg,var(--awn) 0 14px,var(--bg-2) 14px 28px)}.awning:after{content:"";position:absolute;left:0;right:0;bottom:-9px;height:11px;background:var(--awn);-webkit-mask:radial-gradient(circle 8px at 9px -3px,transparent 8px,#000 8.5px);mask:radial-gradient(circle 8px at 9px -3px,transparent 8px,#000 8.5px);-webkit-mask-size:18px 11px;mask-size:18px 11px}.stall-body{padding:22px 20px}.stall-district{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted-2)}.stall-name{font-family:var(--serif);font-size:26px;color:var(--cream);line-height:1.05;margin-top:2px}.stall-genre{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--awn);margin-top:4px}.stall-voice{font-size:13.5px;color:var(--muted);margin:12px 0 16px;line-height:1.5}.stall-covers{display:flex;gap:9px;margin-bottom:16px}.stall-covers img{width:33%;aspect-ratio:2/3;object-fit:cover;border-radius:4px;background:var(--panel-2);box-shadow:0 6px 16px #0006}.step{display:inline-flex;align-items:center;gap:7px;color:var(--gold);font-size:14px;font-weight:500}.stall:hover .step{gap:11px}.footer{padding:40px 24px;text-align:center;color:var(--muted-2);font-size:13px;border-top:1px solid var(--border);margin-top:30px}.footer-globe{margin-bottom:14px;font-size:13px;color:var(--muted-2)}.footer-links{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-bottom:16px}.footer-links a{color:var(--cream-dim)}.footer-links a:hover{color:var(--gold)}.stall-hero{position:relative;padding:64px 24px 48px;text-align:center;overflow:hidden;border-bottom:1px solid var(--border);background-color:var(--stall-bg, var(--bg));background-image:radial-gradient(1200px 360px at 50% -30%,color-mix(in srgb,var(--awn) 28%,transparent),transparent 70%),linear-gradient(to bottom,rgba(8,6,12,.5) 0%,rgba(8,6,12,.3) 45%,var(--stall-bg, var(--bg)) 93%),var(--banner, none);background-size:cover,cover,cover;background-position:center,center,center;background-repeat:no-repeat}.stall-hero .mood{font-family:var(--stall-font, var(--serif));font-size:18px;color:var(--awn);margin:14px auto 2px;letter-spacing:.3px}.stall-hero .eyebrow{text-transform:uppercase;letter-spacing:3px;font-size:12px;color:var(--awn)}.stall-hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(38px,6vw,62px);margin:8px 0 12px;color:#f8f0dc}.stall-hero .tagline{color:var(--cream-dim);max-width:640px;margin:0 auto;font-size:19px;font-style:italic;font-family:var(--serif)}.stall-hero .voice{color:var(--muted);max-width:560px;margin:16px auto 0;font-size:14.5px}.free-banner{max-width:780px;margin:30px auto;padding:22px 24px;background:var(--panel);border:1px solid var(--awn);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}.free-banner h3{margin:0 0 4px;font-family:var(--serif);font-size:23px;color:var(--cream)}.free-banner p{margin:0;color:var(--muted);font-size:14px}.series-block{padding:8px 0 12px}.series-title{font-family:var(--serif);font-size:30px;color:var(--cream);margin:30px 0 4px}.series-rule{height:2px;background:linear-gradient(90deg,var(--awn),transparent);margin-bottom:24px;border-radius:2px}.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:26px}.book{display:flex;flex-direction:column}.book-cover{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:6px;background:var(--panel-2);box-shadow:0 10px 26px #0006;transition:transform .18s}.book a:hover .book-cover{transform:translateY(-4px)}.book-num{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--awn);margin:13px 0 2px}.book-title{font-family:var(--serif);font-size:20px;color:var(--cream);line-height:1.15}.book-blurb{font-size:13px;color:var(--muted);margin:6px 0 13px;flex:1;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.book-actions{display:flex;flex-direction:column;gap:8px}.buy{text-align:center;background:var(--gold);color:var(--ink);font-weight:600;font-size:13px;padding:10px;border-radius:8px;transition:background .2s}.buy:hover{background:var(--gold-soft)}.free-link{text-align:center;color:var(--gold);font-size:13px;border:1px solid var(--border);border-radius:8px;padding:9px}.free-link:hover{border-color:var(--gold)}.newsletter{max-width:560px;margin:50px auto 8px;text-align:center}.newsletter h3{font-family:var(--serif);font-size:27px;color:var(--cream);margin:0 0 6px}.newsletter p{color:var(--muted);font-size:14px;margin:0 0 16px}.news-form{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.news-form input{flex:1;min-width:220px;background:var(--panel);color:var(--cream);border:1px solid var(--border);border-radius:24px;padding:12px 18px;font-size:14px}.news-form input::placeholder{color:var(--muted-2)}.newsletter .form-msg{font-size:13.5px;margin:14px 0 0;min-height:1.2em}.back-link{display:inline-flex;align-items:center;gap:7px;color:var(--muted-2);font-size:14px;margin:26px 0}.back-link:hover{color:var(--gold)}.book-page{min-height:80vh;padding-top:28px}.crumbs{font-size:13px;color:var(--muted-2);margin:8px 0 26px}.crumbs a{color:var(--cream-dim)}.crumbs a:hover{color:var(--awn)}.crumbs span{margin:0 4px}.crumbs .here{color:var(--muted)}.book-detail{display:grid;grid-template-columns:280px 1fr;gap:38px;align-items:start}.book-detail-cover img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:8px;box-shadow:0 18px 44px #00000080;background:var(--panel-2)}.book-detail-info .eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:12px;color:var(--awn)}.book-detail-info h1{font-size:clamp(30px,4.5vw,46px);margin:8px 0 6px;color:#f7efdc}.book-detail-info .by{color:var(--muted);font-size:15px;margin:0 0 18px}.book-detail-info .by a{color:var(--cream-dim)}.book-detail-info .by a:hover{color:var(--awn)}.book-detail-blurb{color:var(--cream-dim);font-size:16px;line-height:1.75;margin:0 0 24px}.book-detail-actions{display:flex;gap:12px;flex-wrap:wrap}.editions{margin-top:26px;padding-top:18px;border-top:1px solid var(--border)}.editions-label{font-size:12px;text-transform:uppercase;letter-spacing:2px;color:var(--muted-2);margin-bottom:10px}.editions-list{display:flex;flex-wrap:wrap;gap:9px}.more-series{margin:52px 0 8px}.more-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:18px}.more-item{text-align:left}.more-item img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:5px;box-shadow:0 8px 20px #0006;transition:transform .18s;background:var(--panel-2)}.more-item:hover img{transform:translateY(-4px)}.more-item span{display:block;font-family:var(--stall-font, var(--serif));font-size:13.5px;color:var(--cream-dim);margin-top:7px;line-height:1.2}@media(max-width:640px){.book-detail{grid-template-columns:1fr;gap:22px}.book-detail-cover{max-width:220px;margin:0 auto}}.stall-world{background:var(--stall-bg, var(--bg));--panel: var(--stall-surface, #1d1930);--panel-2: var(--stall-surface, #241f38)}.stall-world :is(h1,.stall-name,.series-title,.book-title,.free-banner h3,.newsletter h3){font-family:var(--stall-font, var(--serif))}.stall-amb{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}.stall-hero>*:not(.stall-amb){position:relative;z-index:2}.amb-p{position:absolute;border-radius:50%;background:var(--acc);opacity:0}.amb-embers .amb-p{background:#ffcf6e;box-shadow:0 0 6px 1px #ffcf6ea6;animation:ambRise linear infinite}@keyframes ambRise{0%{transform:translateY(24px);opacity:0}15%{opacity:.9}to{transform:translateY(-200px);opacity:0}}.amb-sparkle .amb-p{box-shadow:0 0 7px 1px var(--acc);animation:ambTwinkle ease-in-out infinite}@keyframes ambTwinkle{0%,to{opacity:.12;transform:scale(.6)}50%{opacity:1;transform:scale(1.1)}}.amb-leaves .amb-p{border-radius:50% 0;background:color-mix(in srgb,var(--acc) 65%,#d39a3c);animation:ambFall linear infinite}@keyframes ambFall{0%{transform:translateY(-30px) rotate(0);opacity:0}12%{opacity:.8}to{transform:translateY(240px) rotate(220deg);opacity:0}}.amb-motes .amb-p{box-shadow:0 0 9px 2px var(--acc);animation:ambDrift ease-in-out infinite}@keyframes ambDrift{0%{transform:translate(0);opacity:0}20%{opacity:.85}55%{transform:translate(22px,-26px);opacity:.55}to{transform:translate(-12px,-54px);opacity:0}}.amb-glow .amb-p{background:#ffe6a8;box-shadow:0 0 11px 3px #ffdd8c80;animation:ambRise linear infinite;animation-duration:16s}.amb-flicker .amb-veil{position:absolute;inset:0;background:radial-gradient(62% 50% at 50% 28%,color-mix(in srgb,var(--acc) 22%,transparent),transparent 75%);animation:ambFlick 3.6s ease-in-out infinite}@keyframes ambFlick{0%,to{opacity:.45}25%{opacity:.85}42%{opacity:.55}70%{opacity:.95}}.amb-flicker .amb-p{background:#d9b48a;box-shadow:none;animation:ambDrift ease-in-out infinite}@media(prefers-reduced-motion:reduce){.amb-p,.amb-veil,.lantern,.ember{animation:none!important}}.consent-row{flex:1 1 100%;display:flex;align-items:flex-start;gap:9px;margin-top:4px;text-align:left}.consent-row input{margin-top:3px;accent-color:var(--gold);flex:0 0 auto}.consent-row span{font-size:12.5px;color:var(--muted);line-height:1.45}.consent-row a{color:var(--gold)}.footer-meta{line-height:1.8}.footer-addr{color:var(--muted);font-size:12px}.prose{max-width:760px;margin:0 auto;padding:40px 0 8px}.prose h2{font-family:var(--serif);font-size:28px;color:var(--cream);margin:32px 0 10px}.prose h3{font-family:var(--serif);font-size:21px;color:var(--cream);margin:24px 0 6px}.prose p,.prose li{color:var(--cream-dim);font-size:15px;line-height:1.7}.prose ul{padding-left:20px}.prose li{margin:5px 0}.prose a{color:var(--gold)}.prose .updated{color:var(--muted-2);font-size:13px}.prose .ph{color:var(--gold);background:#f0b54214;border:1px dashed #5a4d2a;border-radius:5px;padding:0 5px}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;max-width:760px;margin:28px auto}.contact-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.contact-card .n{font-family:var(--serif);font-size:19px;color:var(--cream)}.contact-card .g{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--muted-2);margin:2px 0 8px}.contact-card a{color:var(--gold);font-size:14px}@media(max-width:560px){.nav{padding:13px 18px}.nav-links{gap:14px}.nav-links .hide-sm{display:none}.hero-stage{min-height:70vh}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
