/* Brightwit Books: shared styles for every page */
/* Fonts are self-hosted (latin subset from Google Fonts, SIL Open Font License) */
@font-face{font-family:"Nunito";font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/nunito-var.woff2) format("woff2")}
@font-face{font-family:"Fredoka";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/fredoka-600.woff2) format("woff2")}
@font-face{font-family:"DM Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/dm-mono-500.woff2) format("woff2")}
:root{
  --canvas:#F8F3E6;
  --panel:#FFFBF1;
  --sky:#7FC1E3;
  --sky-soft:#D8ECF6;
  --grass:#A3B384;
  --coral:#EC917F;
  --sun:#F6D46B;
  --sun-soft:#F6E7C2;
  --accent:#BB4C39;
  --accent-hover:#A8412F;
  --text-primary:#1B2A4A;
  --text-secondary:#4A5878;
  --line:#8C97AE;
  --ease-out:cubic-bezier(.22,.8,.26,1);
  --ease-soft:cubic-bezier(.45,.05,.25,1);
  --radius:18px;
  --shadow:0 1px 2px color-mix(in srgb,var(--text-primary) 6%,transparent),0 10px 30px color-mix(in srgb,var(--text-primary) 8%,transparent);
}
*,*::before,*::after{box-sizing:border-box}
html{overflow-x:hidden;overflow-x:clip;scroll-behavior:smooth}
body{margin:0;overflow-x:hidden;overflow-x:clip;background:var(--canvas);color:var(--text-primary);
  font:400 18px/1.6 "Nunito",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Fredoka","Nunito",sans-serif;font-weight:600;line-height:1.1;margin:0 0 .4em;letter-spacing:-.01em}
h2{font-size:clamp(2rem,4vw,3rem)}
h3{font-size:1.35rem}
p{margin:0 0 1em}
a{color:inherit}
img{max-width:100%;display:block}
.mono{font:500 .78rem/1.2 "DM Mono",ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}
.skip{position:absolute;left:-999px;top:8px;background:var(--panel);padding:10px 14px;border-radius:10px;z-index:100}
.skip:focus{left:16px}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.stage :focus-visible{outline-color:var(--text-primary)}

/* One environment: a slow soft drift of light behind everything */
.env{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.env::before{content:"";position:absolute;inset:-20%;
  background:radial-gradient(40% 35% at 20% 15%,color-mix(in srgb,var(--sun) 18%,transparent),transparent 70%),
             radial-gradient(45% 40% at 85% 70%,color-mix(in srgb,var(--sky) 16%,transparent),transparent 70%);
  animation:drift 90s ease-in-out -30s infinite alternate}
@keyframes drift{to{transform:translate3d(4%,-3%,0) scale(1.05)}}

/* Nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:14px clamp(16px,4vw,40px);transition:background .4s var(--ease-soft),box-shadow .4s var(--ease-soft)}
.nav.solid{background:color-mix(in srgb,var(--canvas) 92%,transparent);backdrop-filter:blur(10px);box-shadow:0 1px 0 color-mix(in srgb,var(--text-primary) 8%,transparent)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:600 1.3rem/1 "Fredoka",sans-serif}
.brand img{width:34px;height:34px;border-radius:6px}
.nav ul{display:flex;gap:clamp(12px,2.5vw,28px);list-style:none;margin:0;padding:0}
.nav ul a{text-decoration:none;font-weight:700;font-size:.98rem;position:relative;display:inline-block;padding:12px 0;margin:-12px 0}
.nav ul a::after{content:"";position:absolute;left:0;right:0;bottom:8px;height:2px;background:var(--accent);
  transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.nav ul a:hover::after{transform:scaleX(1)}
@media (max-width:560px){.nav ul li.opt{display:none}.brand{font-size:1.08rem;gap:8px}.brand img{width:30px;height:30px;border-radius:5px}.nav ul{gap:14px}.nav ul a{font-size:.9rem}}
.nav ul a,.brand{white-space:nowrap}
@media (max-width:360px){.nav{padding-inline:12px}.brand{flex:none;font-size:.92rem;gap:6px}.brand img{width:26px;height:26px}.nav ul{gap:10px}.nav ul a{font-size:.84rem}}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;background:var(--accent);color:var(--panel);
  font:600 1.08rem/1 "Fredoka",sans-serif;padding:16px 26px;border-radius:999px;text-decoration:none;border:0;cursor:pointer;
  box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 28%,transparent);transition:transform .3s var(--ease-out),background .3s var(--ease-soft),box-shadow .3s var(--ease-soft)}
.btn:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb,var(--accent) 32%,transparent)}
.btn.ghost{background:transparent;color:var(--text-primary);box-shadow:inset 0 0 0 2px var(--text-primary)}
.btn.ghost:hover{background:var(--text-primary);color:var(--panel)}
@media (pointer:coarse){.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}}

/* Layout */
main{display:block}
.wrap{width:min(1080px,100% - 32px);margin-inline:auto}
.section{padding:clamp(72px,11vw,140px) 0;position:relative;scroll-margin-top:40px}
.lede{font-size:1.2rem;color:var(--text-secondary);max-width:46ch}

/* Entrances */
.rise{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
.in .rise,.rise.in{opacity:1;transform:none}
.in .rise:nth-child(2){transition-delay:.09s}
.in .rise:nth-child(3){transition-delay:.18s}
.in .rise:nth-child(4){transition-delay:.27s}
.in.settled .rise:nth-child(n){transition-delay:0s}

/* Cards */
.card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow)}
.cover{aspect-ratio:8.5/11;border-radius:10px;overflow:hidden;background:var(--sky-soft);position:relative}
.cover img{width:100%;height:100%;object-fit:cover}
.cover.blank{max-width:260px;display:grid;place-items:center;background:linear-gradient(160deg,var(--sky-soft),var(--panel))}
.cover.blank svg{width:40%;opacity:.55}
.badge{display:inline-block;font:500 .72rem/1 "DM Mono",monospace;letter-spacing:.06em;text-transform:uppercase;
  padding:6px 9px;border-radius:999px;background:var(--sky-soft);color:var(--text-primary)}
.badge.soon{background:var(--sun-soft)}

/* Book grid (series + book pages) */
.page-head{padding:clamp(120px,16vw,170px) 0 30px}
.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:28px;list-style:none;margin:0;padding:0}
.book a{text-decoration:none;display:block}
.book .cover{transition:transform .45s var(--ease-out),box-shadow .45s var(--ease-out);box-shadow:var(--shadow)}
.book a:hover .cover{transform:translateY(-6px) rotate(-1deg);box-shadow:0 18px 40px color-mix(in srgb,var(--text-primary) 16%,transparent)}
.book h3{margin:14px 0 6px}
.book-meta{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}

/* Generated pages: series, book, grown-ups */
.back{display:inline-block;margin-bottom:18px;text-decoration:none;font-weight:700}
.page-head h1{font-size:clamp(2.4rem,5.5vw,4.2rem)}
.meta{color:var(--text-secondary);font-weight:700;margin:-.1em 0 .9em}
.badge.big{font-size:.9rem;padding:8px 12px}
.badge.guide{background:color-mix(in srgb,var(--grass) 40%,var(--panel))}
.books{margin-top:40px}
.book-page{display:grid;grid-template-columns:minmax(220px,380px) 1fr;gap:clamp(28px,6vw,72px);align-items:start}
.book-page .cover{box-shadow:0 20px 50px color-mix(in srgb,var(--text-primary) 18%,transparent);transform:rotate(-1.5deg)}
.facts{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:6px 0 22px}
.buy{display:flex;gap:14px;flex-wrap:wrap;margin:26px 0 30px}
.soon-note{color:var(--text-secondary);font-weight:700}
.side{padding:24px 26px;margin-top:10px}
.side h2{font-size:1.4rem;margin-bottom:.3em}
.side p{color:var(--text-secondary);margin-bottom:.8em}
.samples{margin-top:clamp(56px,8vw,96px)}
.samples ul{list-style:none;padding:0;margin:24px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:22px}
.samples img{border-radius:10px;box-shadow:var(--shadow)}
.more-books{margin-top:clamp(60px,9vw,110px)}
.more-books .books{margin-top:26px}
@media (max-width:720px){.book-page{grid-template-columns:1fr}.book-page .cover{max-width:280px}}
.gu{max-width:780px}
.gu-head{display:flex;gap:22px;align-items:center;margin-bottom:10px}
.gu-head .cover{width:96px;flex:none;box-shadow:var(--shadow)}
.gu-head h1{margin-bottom:.15em}
.gu-head .meta{margin:0}
.extras{margin-top:30px;padding:26px}
.extras h2{font-size:1.5rem}
.extras p{color:var(--text-secondary);margin:0}
.hints{margin-top:40px}
.hints details{margin-top:10px;padding:16px 20px}
.hints summary{cursor:pointer;font-weight:700}
.hints details p{margin:.6em 0 0;color:var(--text-secondary)}
.tips-h{margin-top:48px}
.tips{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:14px}
.tips li{padding:20px 22px}
.tips h3{font-size:1.15rem;margin-bottom:.25em}
.tips p{margin:0;color:var(--text-secondary)}
.find{margin-top:36px}
.find h3{margin:26px 0 10px}
.picks{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.picks a{display:flex;gap:16px;align-items:center;padding:12px 18px 12px 12px;text-decoration:none}
.picks .cover{width:52px;flex:none}
.picks strong{display:block;font:600 1.12rem/1.25 "Fredoka",sans-serif;margin-bottom:4px}
.picks .go{margin-left:auto;font-weight:700;color:var(--accent)}
.hub-tips{margin-top:44px}

/* Footer */
.foot{padding:56px 0 40px;border-top:1px solid color-mix(in srgb,var(--text-primary) 10%,transparent);color:var(--text-secondary);font-size:.95rem}
.foot .wrap{display:flex;flex-wrap:wrap;gap:20px 40px;justify-content:space-between;align-items:baseline}
.foot ul{display:flex;gap:22px;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.foot a{text-decoration:none;display:inline-block;padding:12px 0;margin:-12px 0}
.foot a:hover{text-decoration:underline}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;transition-delay:0s!important;scroll-behavior:auto!important}
  .rise{opacity:1;transform:none}
}
body.paused *,body.paused *::before,body.paused *::after{animation-play-state:paused!important}
