html{scroll-behavior:smooth;scroll-padding-top:90px}
#prog{position:fixed;top:0;left:0;height:6px;width:0;background:linear-gradient(90deg,var(--coral),var(--sun),var(--mint));z-index:100;border-radius:0 6px 6px 0}

.hero{position:relative;background:var(--sun);padding:56px 0 110px;overflow:hidden;text-align:center}
.hero h1{font-size:clamp(2.8rem,8vw,5.6rem);font-weight:800;margin:14px 0 14px}
.hero h1 em{font-style:normal;background:var(--coral);color:#fff;padding:0 .2em;border-radius:.3em;display:inline-block;transform:rotate(-3deg)}
.hero p{font-size:1.15rem;max-width:34em;margin:0 auto}
.by{display:inline-flex;align-items:center;gap:10px;margin-top:22px;background:#fff;border:2px solid var(--ink);border-radius:999px;padding:6px 18px 6px 8px;font-weight:800;box-shadow:0 4px 0 var(--ink)}
.by span{width:34px;height:34px;border-radius:50%;background:var(--grape);color:#fff;display:grid;place-items:center}
.deco{position:absolute;font-size:4rem;opacity:.9;animation:float 6s ease-in-out infinite}
.deco.d1{left:4%;bottom:20%;font-size:3.2rem}.deco.d2{right:5%;bottom:22%;animation-delay:-2s;font-size:3.4rem}.deco.d3{right:20%;bottom:14%;animation-delay:-4s;font-size:2.4rem}.deco.d4{left:20%;bottom:12%;animation-delay:-1s;font-size:2.6rem}
@keyframes float{50%{transform:translateY(-14px) rotate(6deg)}}
.wave{position:absolute;bottom:-1px;left:0;width:100%;height:70px}

.layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:50px;padding:20px 0 40px;align-items:start}
aside{position:sticky;top:96px;margin-top:20px;min-width:0}
.layout>*{min-width:0}
aside h2{font-size:1.1rem;font-weight:800;margin-bottom:10px;color:var(--grape);letter-spacing:.08em;text-transform:uppercase;font-size:.8rem}
aside ol{list-style:none;padding:0;display:grid;gap:6px;counter-reset:t}
aside a{display:flex;gap:10px;align-items:center;padding:8px 12px;border-radius:14px;font-weight:700;font-size:.92rem;border:2px solid transparent;transition:.15s}
aside a::before{counter-increment:t;content:counter(t);flex:0 0 auto;width:26px;height:26px;border-radius:9px;background:#fff;border:2px solid var(--ink);display:grid;place-items:center;font-family:var(--font-display);font-size:.9rem}
aside a:hover{background:#fff3d6}
aside a.on{background:#fff;border-color:var(--ink);box-shadow:0 4px 0 var(--ink)}
aside a.on::before{background:var(--sun)}

article{max-width:720px}
.part{position:relative;margin-top:52px}
.part:first-child{margin-top:34px}
.part .tagrow{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.part .num{width:46px;height:46px;border-radius:16px;border:3px solid var(--ink);display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:1.4rem;box-shadow:0 4px 0 var(--ink)}
.part h2{font-size:clamp(1.6rem,3vw,2.1rem);font-weight:800}
.part p{font-size:1.14rem;line-height:1.85;color:#322b5e}
.part p+p{margin-top:16px}
.part:nth-of-type(7n+1) .num{background:var(--sun)}.part:nth-of-type(7n+2) .num{background:var(--mint)}.part:nth-of-type(7n+3) .num{background:var(--sky)}
.part:nth-of-type(7n+4) .num{background:var(--coral);color:#fff}.part:nth-of-type(7n+5) .num{background:var(--peach)}.part:nth-of-type(7n+6) .num{background:#d4c8ff}.part:nth-of-type(7n+7) .num{background:var(--sun)}
.drop::first-letter{font-family:var(--font-display);font-weight:800;font-size:4.4rem;float:left;line-height:.8;margin:8px 12px 0 0;color:var(--coral)}
em.book{font-style:italic;font-weight:700;background:linear-gradient(transparent 62%,#ffe9a8 62%)}

.levels,.lines{display:grid;gap:14px;margin-top:22px}
.levels{grid-template-columns:repeat(var(--n,3),1fr)}
.lines{grid-template-columns:repeat(3,1fr)}
.pill{background:#fff;border:3px solid var(--ink);border-radius:22px;padding:16px;box-shadow:0 6px 0 var(--ink);text-align:center;font-weight:800;transition:.18s}
.pill:hover{transform:translateY(3px) rotate(-.6deg);box-shadow:0 3px 0 var(--ink)}
.pill b{display:block;font-size:2rem;margin-bottom:2px}
.lines .pill{text-align:left}
.lines .pill small{display:block;color:var(--grape);letter-spacing:.1em;font-size:.72rem}
.lines .pill span{font-size:1rem;line-height:1.3;display:block;margin-top:4px}

.quote{margin:26px 0 0;background:var(--ink);color:#fff;border-radius:28px;padding:28px 28px 24px 34px;position:relative;font-family:var(--font-display);font-size:1.45rem;line-height:1.25;box-shadow:0 8px 0 rgba(39,33,77,.25)}
.quote::before{content:"“";font-family:var(--font-body);position:absolute;left:12px;top:-6px;font-size:4.4rem;color:var(--sun);line-height:1}
.quote.mint{background:var(--mint);color:var(--ink)}.quote.mint::before{color:var(--ink)}

.callout{margin-top:24px;background:#fff;border:3px solid var(--ink);border-radius:26px;padding:22px 24px;box-shadow:0 8px 0 var(--ink);display:flex;gap:16px;align-items:flex-start}
.callout .ic{flex:0 0 auto;width:56px;height:56px;border-radius:18px;background:var(--sun);border:3px solid var(--ink);display:grid;place-items:center;font-size:1.8rem;transform:rotate(-5deg)}
.callout h3{font-size:1.3rem;font-weight:800;margin-bottom:2px}
.callout p{font-size:1rem;color:var(--muted);line-height:1.6}
.btn{display:inline-flex;gap:8px;align-items:center;padding:11px 20px;border-radius:999px;font-weight:800;border:2px solid var(--ink);background:var(--sun);box-shadow:0 5px 0 var(--ink);transition:.15s;font-size:.92rem;margin-top:12px}
.btn:hover{transform:translateY(3px);box-shadow:0 2px 0 var(--ink)}
.btn.w{background:#fff}

.sign{margin-top:56px;text-align:center;background:var(--grape);color:#fff;border:3px solid var(--ink);border-radius:34px;box-shadow:0 10px 0 var(--ink);padding:36px 24px}
.sign p{font-family:var(--font-display);font-size:1.1rem;opacity:.9}
.sign h2{font-size:2.2rem;font-weight:800;margin:4px 0 16px}
.sign .row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
footer{background:var(--ink);color:#d9d4ff;padding:36px 0;text-align:center;font-size:.9rem;margin-top:80px}
[hidden]{display:none!important}
.err{margin-top:34px;background:#fff3d6;border:2px dashed var(--ink);border-radius:20px;padding:12px 18px;font-weight:700}
.part .quote .book{font-style:italic}
@media(max-width:900px){
  .layout{grid-template-columns:1fr;gap:0}
  aside{position:static;margin:10px 0 0}
  aside ol{display:flex;overflow-x:auto;gap:8px;padding-bottom:10px;scrollbar-width:none}
  aside li{flex:0 0 auto}
  aside a{white-space:nowrap}
  .deco{display:none}.back span{display:none}
  .levels,.lines{grid-template-columns:1fr}
  .callout{flex-direction:column}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}

/* backgrounds set in the Admin UI: a section's (--sbg / --sfg) and a quote's (--qbg / --qfg) */
.part.has-bg{background:var(--sbg);color:var(--sfg);padding:22px 26px 28px;border-radius:26px;border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink)}
.part.has-bg p,.part.has-bg h2{color:inherit}
.quote.has-bg{background:var(--qbg);color:var(--qfg)}
.quote.has-bg::before{color:currentColor;opacity:.55}
