/* collyvale.css — shared layout for simplified Collyvale pages.
   Everything starts with "cv-" so it can't clash with the older stylesheets. */

:root{
  --cv-purple:#4e2d67;
  --cv-purple-soft:#5f3a7d;
  --cv-lavender:#f6f0fb;
  --cv-lavender-line:#d9c7e7;
  --cv-gold:#f6d36b;
  --cv-gold-deep:#e9b93c;
  --cv-green:#3f744d;
}

/* One centred column, same rhythm for every section */
.cv-page{padding-bottom:1rem}
.cv-section{max-width:900px;margin:0 auto;padding:3.25rem 1.25rem;text-align:center;box-sizing:border-box}
.cv-section .shop-chapter,.cv-section .eyebrow{display:block;margin-bottom:.45rem}
.cv-section h1,.cv-section h2{margin:.15rem auto .55rem}
.cv-section>p{max-width:700px;margin:.2rem auto .9rem}
.cv-subtitle{font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.3rem;color:var(--cv-purple)}

/* Listen button */
.cv-listen{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-width:150px;min-height:44px;margin:.15rem auto 1.35rem;padding:.55rem 1.1rem;border:2px solid var(--cv-purple);border-radius:999px;background:#fff;color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer}
.cv-listen:hover{background:var(--cv-lavender)}
.cv-listen.is-speaking{background:var(--cv-purple);color:#fff}
.cv-listen:focus-visible,.cv-button:focus-visible,.cv-spot:focus-visible,.cv-choice button:focus-visible{outline:3px solid var(--cv-purple);outline-offset:3px}

/* Pictures */
.cv-picture{margin:0 auto;max-width:900px}
.cv-picture img{display:block;width:100%;height:auto;border-radius:22px}

/* Activity box: one style everywhere */
.cv-activity{box-sizing:border-box;width:100%;max-width:760px;margin:0 auto 1.25rem;padding:1.35rem 1.5rem;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);border-radius:18px;text-align:center}
.cv-activity-question{margin:0 0 1rem;font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.25rem;color:var(--cv-purple)}
.cv-live{min-height:1.5em;margin:.9rem 0 0;font-weight:800;color:var(--cv-purple)}

/* Buttons inside activities */
.cv-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1rem}
.cv-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.55rem 1.1rem;border:2px solid var(--cv-purple);border-radius:999px;background:#fff;color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer}
.cv-button:hover{background:var(--cv-lavender)}
.cv-button[hidden]{display:none}
.cv-tools .cv-listen{margin:0}

/* Finding game */
.cv-find-items{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin:0;padding:0;list-style:none}
.cv-find-items li{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border:1px solid var(--cv-lavender-line);border-radius:999px;background:#fff;font-weight:700;color:var(--cv-purple)}
.cv-find-items li::after{content:"☆";color:var(--cv-gold-deep)}
.cv-find-items li.found{background:var(--cv-purple);border-color:var(--cv-purple);color:#fff}
.cv-find-items li.found::after{content:"✓";color:#fff}
.cv-find-count{margin:.9rem 0 0;font-weight:800;color:var(--cv-purple)}
.cv-find-picture{position:relative;max-width:900px;margin:0 auto}
.cv-find-picture img{display:block;width:100%;height:auto;border-radius:22px}
.cv-spot{position:absolute;width:12%;min-width:48px;aspect-ratio:1;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cv-spot.found{border:4px solid #fff;background:rgba(246,211,107,.28);box-shadow:0 0 0 4px var(--cv-gold),0 0 22px 6px rgba(246,211,107,.75);animation:cv-spot-pop .45s ease-out}
.cv-spot.found::after{content:"✓";position:absolute;top:-.55rem;right:-.55rem;display:grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--cv-purple);color:#fff;font-weight:800;font-size:.95rem}
@keyframes cv-spot-pop{from{transform:translate(-50%,-50%) scale(.6);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.cv-find-complete .cv-find-count{color:var(--cv-green)}

/* Choose one */
.cv-choice{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}
.cv-choice button{display:inline-flex;align-items:center;gap:.4rem;min-height:48px;padding:.6rem 1.1rem;border:1px solid var(--cv-lavender-line);border-radius:14px;background:#fff;color:var(--cv-purple);font:700 1rem "Nunito",sans-serif;cursor:pointer}
.cv-choice button[aria-pressed="true"]{background:var(--cv-purple);border-color:var(--cv-purple);color:#fff}

/* "Did you notice?" cards */
.cv-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:0 auto;max-width:900px;text-align:left}
.cv-cards article{padding:1.1rem 1.2rem;background:#fff;border:1px solid var(--cv-lavender-line);border-radius:16px}
.cv-cards h3{margin:0 0 .35rem;font-size:1.1rem;color:var(--cv-purple)}
.cv-cards p{margin:0}

/* Lantern Trail reward */
.cv-lantern{box-sizing:border-box;max-width:560px;margin:0 auto;padding:1.6rem 1.5rem;text-align:center;background:#fff8dc;border:1px solid #f0dc9a;border-radius:20px}
.cv-lantern h2{margin:.2rem 0 .4rem}
.cv-lantern-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:48px;margin:.6rem 0;padding:.6rem 1.3rem;border:0;border-radius:999px;background:var(--cv-gold);color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer;box-shadow:0 3px 0 var(--cv-gold-deep)}
.cv-lantern-button.is-found{background:var(--cv-purple);color:#fff;box-shadow:0 0 18px 4px rgba(246,211,107,.8)}

/* Where next */
.cv-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem}

/* Sticker popup */
.sticker-celebration{position:fixed;left:50%;bottom:1.25rem;z-index:1000;width:min(92vw,380px);transform:translate(-50%,20px);opacity:0;transition:opacity .25s,transform .25s}
.sticker-celebration.is-showing{opacity:1;transform:translate(-50%,0)}
.sticker-celebration-card{padding:1.1rem 1.25rem;text-align:center;background:#fff;border:2px solid var(--cv-gold);border-radius:18px;box-shadow:0 10px 30px rgba(78,45,103,.2)}
.sticker-sparkles{color:var(--cv-gold-deep);letter-spacing:.3em}
.sticker-celebration-title{display:block;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.35rem;color:var(--cv-purple)}
.sticker-celebration-copy{margin:.2rem 0 .5rem}
.sticker-celebration-link{font-weight:800;color:var(--cv-purple)}

@media(max-width:700px){
  .cv-cards{grid-template-columns:1fr}
}
@media(max-width:620px){
  .cv-section{padding:2.25rem 1rem}
  .cv-activity{padding:1.2rem 1rem}
  .cv-spot{width:16%}
}
@media(prefers-reduced-motion:reduce){
  .cv-spot.found{animation:none}
  .sticker-celebration{transition:none}
}

/* ---- Added for Collywobble Cottage (v2) ---- */
/* A single line of story between sections */
.cv-story-line{max-width:700px;margin:0 auto;padding:.5rem 1.25rem;text-align:center;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.35rem;font-weight:700;color:var(--cv-purple)}

/* Rewards side by side (stack on phones) */
.cv-rewards{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;max-width:900px;margin:0 auto;align-items:stretch}
.cv-rewards .cv-lantern{max-width:none;height:100%}
.cv-pottle{box-sizing:border-box;padding:1.6rem 1.5rem;text-align:center;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);border-radius:20px}
.cv-pottle img{display:block;width:96px;height:auto;margin:0 auto .5rem}
.cv-pottle h2{margin:.2rem 0 .4rem;font-size:1.45rem}
.cv-pottle button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin:.6rem 0;padding:.6rem 1.3rem;border:0;border-radius:999px;background:var(--cv-purple);color:#fff;font:800 1rem "Nunito",sans-serif;cursor:pointer}
.cv-pottle button:disabled{background:var(--cv-green);cursor:default}
.cv-pottle button:focus-visible,.cv-lantern-button:focus-visible{outline:3px solid var(--cv-purple);outline-offset:3px}

/* "Where next?" choices */
.cv-next{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;max-width:760px;margin:0 auto}
.cv-next a{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:1rem;background:#fff;border:1px solid var(--cv-lavender-line);border-radius:16px;font-weight:800;color:var(--cv-purple);text-decoration:none}
.cv-next a span{font-size:1.8rem}
.cv-next a:hover{background:var(--cv-lavender)}

@media(max-width:700px){
  .cv-rewards{grid-template-columns:1fr}
  .cv-next{grid-template-columns:1fr}
  .cv-next a{flex-direction:row;justify-content:center}
}

/* ---- Fonts (v3) ----
   Some older page stylesheets set the fonts; rebuilt pages don't load them,
   so set Collyvale's fonts here. */
body{font-family:"Nunito",system-ui,sans-serif}
h1,h2,h3,.cv-subtitle,.wordmark-copy strong,.cv-activity-question,.cv-story-line{font-family:"Baloo 2","Nunito",system-ui,sans-serif}

/* ---- Added for the Professors' Workshop (v4) ---- */
.cv-feeling{max-width:640px;margin:.4rem auto 1rem;padding:1rem 1.2rem;background:#fff8dc;border:1px solid #f0dc9a;border-radius:18px;color:var(--cv-purple)}
.cv-feeling strong,.cv-feeling span{display:block}
.cv-feeling span{margin-top:.25rem}

/* Character cards with a face cut from a scene picture */
.cv-profs{display:grid;grid-template-columns:1fr 1fr;gap:1rem;max-width:760px;margin:0 auto;text-align:left}
.cv-profs article{display:flex;gap:.9rem;align-items:center;padding:1rem;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);border-radius:18px}
.cv-profs h3{margin:0 0 .2rem;font-size:1.15rem;font-weight:700;color:var(--cv-purple)}
.cv-profs p{margin:0 0 .3rem}
.cv-profs a{font-weight:800;color:var(--cv-purple)}
.cv-face{flex:none;width:80px;height:80px;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 8px rgba(43,35,70,.18);background-repeat:no-repeat;background-size:500% auto}

/* Invention machine */
.cv-invent-step{margin:0 0 1.1rem}
.cv-invent-step h3{margin:0 0 .55rem;font-size:1.05rem;color:var(--cv-purple)}
.cv-invent-step h3 span{display:inline-grid;place-items:center;width:1.6rem;height:1.6rem;margin-right:.35rem;border-radius:50%;background:var(--cv-purple);color:#fff;font-size:.85rem}
.cv-lever{display:inline-flex;align-items:center;gap:.6rem;min-height:56px;padding:.7rem 1.4rem;border:0;border-radius:999px;background:var(--cv-purple);color:#fff;font:800 1.05rem "Nunito",sans-serif;cursor:pointer;box-shadow:0 4px 0 #2f1a40}
.cv-lever:disabled{opacity:.45;cursor:not-allowed}
.cv-lever .cv-lever-arm{display:inline-block;font-size:1.4rem;transform-origin:50% 90%}
.cv-lever.cv-pulling .cv-lever-arm{animation:cv-pull .55s ease}
.cv-lever:focus-visible,.cv-tried-sticker:focus-visible{outline:3px solid var(--cv-purple);outline-offset:4px}
.cv-invent-result{margin-top:1rem;padding:1rem;background:#fff;border:2px solid var(--cv-lavender-line);border-radius:18px}
.cv-invent-result.cv-not-yet{background:#fff8dc;border-color:#f0dc9a}
.cv-invent-title{margin:.1rem 0 .3rem;font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.5rem;color:var(--cv-purple)}
.cv-invent-text{margin:0 0 .8rem;font-weight:700}
.cv-tried-sticker{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:132px;height:132px;margin-top:.9rem;border:5px solid var(--cv-purple);border-radius:50%;background:#fff2a8;color:var(--cv-purple);font:inherit;cursor:pointer;box-shadow:0 4px 0 #d5b951;animation:cv-pop .6s cubic-bezier(.2,.9,.25,1.25)}
.cv-tried-sticker[hidden]{display:none}
.cv-tried-sticker>span{font-size:1.9rem}
.cv-tried-sticker strong{font-size:.85rem;line-height:1.05}
.cv-tried-sticker small{margin-top:.2rem;font-size:.7rem;font-weight:800}
.cv-tried-sticker.collected{cursor:default;box-shadow:0 0 0 6px rgba(78,45,103,.15),0 4px 0 #d5b951}
.cv-wobbling{animation:cv-wobble .6s ease}
.cv-success{animation:cv-bounce .6s ease}
@keyframes cv-pull{45%{transform:rotate(40deg) translateY(2px)}}
@keyframes cv-wobble{18%{transform:translateX(-6px) rotate(-.5deg)}36%{transform:translateX(6px) rotate(.5deg)}54%{transform:translateX(-3px)}72%{transform:translateX(2px)}}
@keyframes cv-bounce{45%{transform:scale(1.015)}}
@keyframes cv-pop{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.08)}100%{transform:scale(1)}}

/* Today's question */
.cv-question-text{font-family:"Baloo 2","Nunito",sans-serif;font-size:1.3rem;font-weight:700;color:var(--cv-purple);margin:0 0 1rem}
.cv-note{margin:.8rem 0 0;font-size:.92rem;opacity:.8}

/* For grown-ups note */
.cv-grown{max-width:760px;margin:0 auto 2.5rem;padding:1.2rem 1.4rem;background:var(--cv-lavender);border-radius:18px;text-align:left}
.cv-grown h2{margin:.2rem 0 .5rem;font-size:1.4rem}
.cv-grown p{margin:.4rem 0}

@media(max-width:700px){.cv-profs{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.cv-lever.cv-pulling .cv-lever-arm,.cv-wobbling,.cv-success,.cv-tried-sticker{animation:none}}

/* ---- Added for Riverbrook (v7) ---- */
.cv-breath-start{display:inline-flex;flex-direction:column;align-items:center;gap:.5rem;border:0;background:none;color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer}
.cv-breath-start:focus-visible{outline:3px solid var(--cv-purple);outline-offset:6px;border-radius:18px}
.cv-drop{display:grid;place-items:center;width:104px;height:104px;border-radius:50%;background:#dff3f4;border:3px solid #8fc5c8;font-size:2.8rem;box-shadow:0 7px 18px rgba(78,135,140,.15);transform:scale(.85);transition:transform 4s ease-in-out,box-shadow 4s ease-in-out}
.cv-breath[data-state="in"] .cv-drop{transform:scale(1.3);box-shadow:0 0 0 16px rgba(143,197,200,.15)}
.cv-breath[data-state="out"] .cv-drop{transform:scale(.75)}
.cv-breath[data-state="done"] .cv-drop{transform:scale(1);transition-duration:1s}
.cv-breath-guide{font-family:"Baloo 2","Nunito",sans-serif;font-size:1.25rem}
@media(prefers-reduced-motion:reduce){.cv-drop{transition:none}}

/* ---- Added for Dr Tillywell's Surgery (v8) ---- */
.cv-team{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;max-width:900px;margin:0 auto;text-align:left}
.cv-team article{display:flex;flex-direction:column;background:#fff;border:1px solid var(--cv-lavender-line);border-radius:20px;overflow:hidden}
.cv-team-art{background:linear-gradient(#f6f0fb,#eef8f5);height:210px;display:flex;justify-content:center;align-items:flex-end}
.cv-team-art img{height:200px;width:auto}
.cv-team-copy{display:flex;flex-direction:column;flex:1;padding:1rem 1.15rem 1.2rem}
.cv-team-copy .cv-listen{align-self:flex-start}
.cv-team-copy .cv-mini{flex:1}
.cv-team-copy h3{margin:0 0 .3rem;font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.4rem;color:var(--cv-purple)}
.cv-team-copy .cv-listen{margin:.3rem 0 .8rem}
.cv-team-copy>a{font-weight:800;color:var(--cv-purple)}
.cv-mini{margin:.4rem 0 1rem;padding:.9rem;background:var(--cv-lavender);border-radius:14px;text-align:center}
.cv-mini h4{margin:0 0 .6rem;color:var(--cv-purple);font-size:1rem}

/* Little steps */
.cv-step-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.6rem}
.cv-step{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-height:120px;padding:.8rem .5rem;background:#fff;border:2px solid var(--cv-lavender-line);border-radius:16px;color:var(--cv-purple);font:700 .95rem "Nunito",sans-serif;cursor:pointer;position:relative}
.cv-step>span:first-child{font-size:1.8rem}
.cv-step small{font-weight:600;opacity:.85;line-height:1.3}
.cv-step.done{border-color:#9cc59a;background:#f2faf0}
.cv-step.done::after{content:"✓";position:absolute;top:-.55rem;right:-.45rem;display:grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--cv-green);color:#fff;font-size:.9rem}
.cv-step.current{outline:3px solid var(--cv-purple);outline-offset:2px}
.cv-step:focus-visible{outline:3px solid var(--cv-purple);outline-offset:3px}
.cv-step-panel{display:grid;grid-template-columns:150px 1fr;gap:1rem;align-items:end;margin-top:1rem;background:#fff;border:1px solid var(--cv-lavender-line);border-radius:18px;overflow:hidden;text-align:left}
.cv-step-panel[hidden]{display:none}
.cv-step-panel img{width:150px;height:180px;object-fit:contain;object-position:center bottom;background:linear-gradient(#eaf7f5 0 66%,#e7d2aa 66%)}
.cv-step-panel>div{padding:1rem 1rem 1rem 0}
.cv-step-panel .shop-chapter{display:block;margin-bottom:.3rem}
.cv-step-panel p{margin:.3rem 0}
.cv-waiting-names{font-size:1.15rem}
.cv-waiting-names span{margin-right:.5rem}
.cv-step-panel .cv-choice{justify-content:flex-start}
.cv-badge-wrap{margin-top:1.1rem;padding:1rem;background:linear-gradient(90deg,#eef8e7,#fff9dc);border-radius:18px}
.cv-badge-wrap[hidden]{display:none}
.cv-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:120px;height:120px;border:5px solid var(--cv-purple);border-radius:50%;background:#fff2a8;color:var(--cv-purple);box-shadow:0 4px 0 #d5b951;animation:cv-pop .6s cubic-bezier(.2,.9,.25,1.25)}
.cv-badge span{font-size:1.9rem}
.cv-badge strong{font-size:.85rem;line-height:1.05}
.cv-badge-wrap h3{margin:.6rem 0 .2rem;font-size:1.4rem;color:var(--cv-purple)}
.cv-shortcut{display:inline-block;margin-top:.2rem;padding:.5rem .9rem;border-radius:999px;background:#eef8f5;border:1px solid #c9e1d8;color:var(--cv-purple);font-weight:700;text-decoration:none}
.cv-grown details{margin:.8rem 0;padding:.6rem .9rem;background:#fff;border-radius:12px}
.cv-grown summary{font-weight:800;color:var(--cv-purple);cursor:pointer}
.cv-grown details a{display:inline-block;margin:.35rem .5rem 0 0;font-weight:700;color:var(--cv-purple)}

@media(max-width:900px){.cv-step-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.cv-team{grid-template-columns:1fr}.cv-step-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cv-step-panel{grid-template-columns:1fr}.cv-step-panel img{width:100%;height:150px}.cv-step-panel>div{padding:0 1rem 1rem}}
@media(prefers-reduced-motion:reduce){.cv-badge{animation:none}}

/* ---- Added for the Wobble Shop (v11) ---- */
.cv-door{position:absolute;transform:translate(-50%,-50%);aspect-ratio:.6;border:0;border-radius:46% 46% 14% 14%;background:transparent;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cv-door:focus-visible{outline:3px solid #fff3a6;box-shadow:0 0 0 6px var(--cv-purple)}
.cv-cheer{display:flex;align-items:center;justify-content:center;gap:.6rem;margin-top:.9rem}
.cv-cheer img{width:56px;height:60px;object-fit:contain;flex:none}
.cv-cheer .cv-live{margin:0;text-align:left}
.cv-character{display:block;width:auto;height:220px;margin:0 auto .5rem}

/* ---------- The Postbox ---------- */
.cv-postbox{box-sizing:border-box;width:100%;max-width:820px;margin:0 auto;padding:1.35rem 1.25rem 1.5rem;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);border-radius:22px;text-align:center}
.cv-pb-dots{display:flex;justify-content:center;gap:.45rem;margin:0 auto 1rem;max-width:260px}
.cv-pb-dots i{flex:1;height:8px;border-radius:99px;background:#e6dcef}
.cv-pb-dots i.on{background:var(--cv-gold-deep)}
.cv-pb-step h3{margin:.1rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:clamp(1.3rem,3.5vw,1.7rem);color:var(--cv-purple)}
.cv-pb-step h3:focus{outline:none}
.cv-pb-friends{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.7rem;margin:.2rem 0 .8rem}
.cv-pb-friends button,.cv-pb-topics button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;min-height:56px;padding:.6rem .5rem;border:2px solid var(--cv-lavender-line);border-radius:16px;background:#fff;color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer;transition:transform .15s ease,border-color .15s ease}
.cv-pb-friends button:hover,.cv-pb-topics button:hover{transform:translateY(-2px);border-color:var(--cv-gold-deep)}
.cv-pb-friends button[aria-pressed="true"],.cv-pb-topics button[aria-pressed="true"]{border-color:var(--cv-purple);background:#fffaf0}
.cv-pb-friends img{width:84px;height:84px;object-fit:contain}
.cv-pb-topics{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin:.2rem 0 .8rem}
.cv-pb-topics span{font-size:1.8rem;line-height:1}
.cv-pb-friends button:focus-visible,.cv-pb-topics button:focus-visible{outline:3px solid var(--cv-purple);outline-offset:3px}
.cv-pb-to{display:inline-flex;align-items:center;gap:.4rem;margin:0 0 .3rem;font-weight:800;color:var(--cv-purple)}
.cv-pb-road{position:relative;height:190px;max-width:520px;margin:.3rem auto .8rem;overflow:hidden;border-radius:18px;background:linear-gradient(#fdf6e3 0 72%,#cfe6b8 72% 100%)}
.cv-pb-road::after{content:"";position:absolute;left:0;right:0;bottom:12%;height:6px;background:repeating-linear-gradient(90deg,#e8d6a6 0 22px,transparent 22px 36px)}
.cv-pb-walker{position:absolute;bottom:8%;left:50%;width:110px;transform:translateX(-50%)}
.cv-pb-walker img{display:block;width:100%;height:auto}
.cv-pb-letter{position:absolute;left:60%;top:8%;font-size:2rem}
.cv-pb-travelling .cv-pb-walker{animation:cv-pb-walk 14s ease-in-out infinite}
.cv-pb-travelling .cv-pb-walker img{animation:cv-pb-bob 1.1s ease-in-out infinite}
.cv-pb-travelling .cv-pb-letter{animation:cv-pb-tuck 2.6s ease-in-out forwards}
@keyframes cv-pb-walk{0%{left:25%}50%{left:75%}100%{left:25%}}
@keyframes cv-pb-bob{50%{transform:translateY(-4px) rotate(1.5deg)}}
@keyframes cv-pb-tuck{0%{transform:translate(0,0) rotate(-10deg);opacity:1}80%{opacity:1}100%{transform:translate(-90px,95px) scale(.4);opacity:0}}
.cv-pb-title{margin:.2rem 0;font-family:"Baloo 2","Nunito",sans-serif;font-weight:800;font-size:1.45rem;color:var(--cv-purple)}
.cv-pb-detail{min-height:3em;margin:0;font-weight:700;color:#51465f}
.cv-pb-reply img{display:block;width:140px;height:140px;object-fit:contain;margin:0 auto .3rem}
.cv-pb-letterpaper{max-width:600px;margin:.6rem auto 1rem;padding:1.2rem 1.4rem;background:#fff;border-radius:16px;box-shadow:0 8px 24px rgba(45,28,84,.08);font-size:1.15rem;line-height:1.6;color:#2d1c54;overflow-wrap:anywhere}
.cv-pb-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}
.cv-pb-back{margin-top:.4rem;border:0;background:none;color:var(--cv-purple-soft);font:700 .95rem "Nunito",sans-serif;text-decoration:underline;cursor:pointer}
@media(max-width:560px){.cv-pb-topics{grid-template-columns:1fr 1fr}.cv-pb-friends{grid-template-columns:repeat(3,1fr);gap:.5rem}.cv-pb-friends img{width:64px;height:64px}.cv-pb-friends button{font-size:.88rem;padding:.5rem .25rem}}
@media(prefers-reduced-motion:reduce){.cv-pb-travelling .cv-pb-walker,.cv-pb-travelling .cv-pb-walker img,.cv-pb-travelling .cv-pb-letter{animation:none}.cv-pb-travelling .cv-pb-letter{opacity:0}}
.cv-pb-note{max-width:760px;margin:1rem auto 0;font-size:.92rem;color:#665d72}

.cv-postbox{scroll-margin-top:1rem}.cv-pb-step[data-step="journey"],.cv-pb-step[data-step="reply"]{min-height:440px}.cv-pb-title{min-height:2.6em;display:flex;align-items:center;justify-content:center}.cv-pb-reply h3{font-weight:800}

/* ---------- Lantern Lane ---------- */
.cv-lane{box-sizing:border-box;max-width:900px;margin:0 auto;padding:1.4rem 1rem 1.2rem;border-radius:24px;background:linear-gradient(180deg,#2f2350 0%,#4a3670 55%,#6b5a3a 100%);color:#fff;text-align:center;position:relative;overflow:hidden}
.cv-lane::before{content:"";position:absolute;left:-5%;right:-5%;bottom:22%;height:46px;border-radius:50%;background:#c9a96a;opacity:.35;transform:rotate(-2deg)}
.cv-lane-row{position:relative;display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem .2rem;margin:.6rem 0 .4rem}
.cv-lane-row button,.cv-my-lantern{position:relative;display:flex;flex-direction:column;align-items:center;width:92px;padding:.3rem .1rem;border:0;border-radius:14px;background:none;color:#f3eadb;font:700 .78rem/1.2 "Nunito",sans-serif;cursor:pointer}
.cv-lane-row button:nth-child(even){margin-top:1.6rem}
.cv-lane-row img{width:62px;height:62px;filter:grayscale(1) brightness(.7);opacity:.55;transition:filter .5s ease,opacity .5s ease}
.cv-lane-row button.is-lit img{filter:drop-shadow(0 0 10px rgba(255,214,110,.95)) drop-shadow(0 0 22px rgba(255,190,80,.6));opacity:1;animation:cv-flicker 3.2s ease-in-out infinite}
.cv-lane-row button.is-chosen{background:rgba(255,255,255,.12)}
.cv-lane-row button:focus-visible{outline:3px solid #ffd76a;outline-offset:2px}
.cv-lane-row span{margin-top:.25rem}
.cv-lane-row button.is-lit span::after{content:" ✓";color:#ffd76a}
@keyframes cv-flicker{0%,100%{transform:scale(1)}45%{transform:scale(1.03)}55%{transform:scale(.99)}}
.cv-lane-count{position:relative;margin:.2rem 0;font-family:"Baloo 2","Nunito",sans-serif;font-weight:800;font-size:1.25rem;color:#ffd76a}
.cv-lane .cv-live{position:relative;color:#fff;min-height:2.8em}
.cv-lane a[data-lane-go]{position:relative;display:inline-block;margin-top:.4rem;padding:.5rem 1rem;border-radius:999px;background:#ffd76a;color:#2f2350;font-weight:800;text-decoration:none}
.cv-lane .cv-listen{position:relative;background:transparent;border-color:#ffd76a;color:#ffd76a}
.cv-lane .cv-listen.is-speaking{background:#ffd76a;color:#2f2350}
.cv-my-lantern{cursor:default}
.cv-my-lantern img{width:62px;height:62px;animation:cv-flicker 3.2s ease-in-out infinite}
[data-light="brave"] .cv-hang-lantern,.cv-my-lantern[data-light="brave"] img{filter:drop-shadow(0 0 12px #ff9a3c) drop-shadow(0 0 24px rgba(255,154,60,.6))}
[data-light="calm"] .cv-hang-lantern,.cv-my-lantern[data-light="calm"] img{filter:drop-shadow(0 0 12px #7fc3ff) drop-shadow(0 0 24px rgba(127,195,255,.6))}
[data-light="kind"] .cv-hang-lantern,.cv-my-lantern[data-light="kind"] img{filter:drop-shadow(0 0 12px #ff8fc0) drop-shadow(0 0 24px rgba(255,143,192,.6))}
[data-light="happy"] .cv-hang-lantern,.cv-my-lantern[data-light="happy"] img{filter:drop-shadow(0 0 12px #ffd84a) drop-shadow(0 0 24px rgba(255,216,74,.6))}
.cv-hang{box-sizing:border-box;max-width:760px;margin:0 auto;padding:1.4rem 1.2rem;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);border-radius:22px;text-align:center}
.cv-hang-bella{display:block;width:120px;height:auto;margin:0 auto .4rem}
.cv-hang h3{margin:.1rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.4rem;color:var(--cv-purple)}
.cv-hang-lantern{display:block;width:110px;height:110px;margin:.4rem auto;animation:cv-hang-in 1.4s ease-out both, cv-flicker 3.2s ease-in-out 1.4s infinite}
@keyframes cv-hang-in{0%{transform:translateY(-40px);opacity:0}70%{transform:translateY(4px);opacity:1}100%{transform:translateY(0)}}
.cv-hang-text{max-width:560px;margin:.4rem auto 1rem;font-size:1.12rem;line-height:1.6;font-weight:700;color:var(--cv-purple)}
.cv-hang .cv-choice button span{font-size:1.3rem}
@media(max-width:560px){.cv-lane-row button,.cv-my-lantern{width:72px;font-size:.72rem}.cv-lane-row img,.cv-my-lantern img{width:50px;height:50px}}
@media(prefers-reduced-motion:reduce){.cv-lane-row button.is-lit img,.cv-my-lantern img,.cv-hang-lantern{animation:none}}
.cv-lane a[data-lane-go][hidden]{display:none}
.cv-lane-row .cv-my-lantern img{opacity:1}
.cv-my-lantern span{color:#fff}
.cv-hang a.cv-button{text-decoration:none}

/* ---------- The Collyvale map ---------- */
.cv-map-scroll{max-width:1200px;margin:0 auto;overflow-x:auto;border-radius:22px;box-shadow:0 14px 34px rgba(43,35,70,.14);-webkit-overflow-scrolling:touch}
.cv-map{position:relative;min-width:880px}
.cv-map>img{display:block;width:100%;height:auto}
.cv-place{position:absolute;transform:translate(-50%,-50%);padding:0;border:0;border-radius:24px;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cv-place::before{content:"";position:absolute;inset:8%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,236,150,.55),rgba(255,236,150,0));opacity:0;animation:cv-place-glow 3.6s ease-in-out infinite}
.cv-place:nth-child(3n)::before{animation-delay:1.2s}.cv-place:nth-child(3n+1)::before{animation-delay:2.4s}
.cv-place.is-explored::before{animation:none}
@keyframes cv-place-glow{0%,100%{opacity:0}50%{opacity:1}}
.cv-place:hover,.cv-place:focus-visible{box-shadow:0 0 0 4px rgba(255,215,106,.85);outline:none;background:rgba(255,255,255,.12)}
.cv-place-name{position:absolute;left:50%;top:100%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap;padding:.28rem .7rem;border:2px solid #fff;border-radius:999px;background:rgba(255,250,238,.96);box-shadow:0 3px 10px rgba(43,35,70,.22);color:var(--cv-purple);font:800 .82rem/1.15 "Nunito",sans-serif}
.cv-place.is-explored .cv-place-name{background:#e9f6ec;border-color:#bfe3c8}
.cv-place.is-explored .cv-place-name::after{content:"✓";color:var(--cv-green);font-weight:900}
.cv-place.is-lit .cv-place-name::before{content:"🏮";font-size:.85rem}
.cv-place--left .cv-place-name{left:auto;right:0;transform:translate(0,-50%)}
.cv-place[data-soon] .cv-place-name{background:rgba(255,250,238,.85);font-style:italic}
.cv-map-key{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.2rem;margin:.9rem auto 0;font-size:.9rem;color:#5a4c68}
.cv-map-key b{display:inline-block;padding:.05rem .45rem;border-radius:999px;background:#e9f6ec;color:var(--cv-green)}
.cv-map-hint{display:none;margin:.5rem 0 0;font-size:.88rem;color:#5a4c68}
@media(max-width:760px){.cv-map-hint{display:block}}
.cv-map-card{max-width:440px;width:calc(100% - 32px);padding:1.5rem 1.4rem;border:0;border-radius:22px;background:#fffaf0;text-align:center;box-shadow:0 20px 60px rgba(43,35,70,.35)}
.cv-map-card::backdrop{background:rgba(40,28,60,.45)}
.cv-map-card h3{margin:.1rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.6rem;color:var(--cv-purple)}
.cv-map-card p{margin:0 0 .6rem;font-size:1.08rem;line-height:1.5}
.cv-map-card .cv-actions{gap:.6rem;margin-top:.4rem}
.cv-map-card a.cv-button{text-decoration:none;background:var(--cv-gold);border-color:var(--cv-gold-deep)}
.cv-places-list{max-width:900px;margin:1.6rem auto 0;text-align:center}
.cv-places-list summary{cursor:pointer;font-weight:800;color:var(--cv-purple)}
.cv-places-list div{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.8rem}
.cv-places-list a{padding:.4rem .8rem;border:1px solid var(--cv-lavender-line);border-radius:999px;background:#fff;color:var(--cv-purple);font-weight:700;text-decoration:none}
@media(prefers-reduced-motion:reduce){.cv-place::before{animation:none;opacity:.5}}
.cv-place-name{max-width:10.5em;white-space:normal;text-align:center;justify-content:center}
.cv-place-name{width:max-content}
.cv-place-name{max-width:12.5em}
.cv-place--start .cv-place-name{left:6%;transform:translate(0,-50%)}
/* Fit the page on computers; only phones and small tablets scroll sideways. */
.cv-map{min-width:0}
@media(max-width:760px){.cv-map{min-width:760px}}

/* ---------- Hide and seek (Lantern Lane) ---------- */
.cv-hide{box-sizing:border-box;max-width:900px;margin:0 auto;padding:1.2rem 1rem 1.3rem;border-radius:24px;background:linear-gradient(180deg,#26203f 0%,#3d2f63 60%,#4f5a3a 100%);color:#fff;text-align:center}
.cv-hide-scene{position:relative;height:300px;margin:.4rem auto .6rem;max-width:760px;border-radius:18px;overflow:hidden;background:radial-gradient(circle at 82% 18%,rgba(255,244,200,.9) 0 18px,rgba(255,244,200,.15) 19px 42px,transparent 43px),linear-gradient(180deg,#2b2450 0 62%,#4c6b3d 62% 100%)}
.cv-hide-scene::after{content:"";position:absolute;left:-5%;right:-5%;bottom:10%;height:30px;border-radius:50%;background:#c9a96a;opacity:.45}
.cv-hide-spot{position:absolute;z-index:2;display:block;padding:0;border:0;background:none;cursor:pointer;transform:translateX(-50%);-webkit-tap-highlight-color:transparent}
.cv-hide-spot .cv-hide-thing{position:relative;z-index:2;display:block;width:100%;height:auto;font-size:4.2rem;line-height:1;filter:drop-shadow(0 0 10px rgba(255,214,110,.55))}
.cv-hide-spot img.cv-hide-thing{filter:drop-shadow(0 0 10px rgba(255,214,110,.85))}
.cv-hide-spot:focus-visible{outline:3px solid #ffd76a;outline-offset:4px;border-radius:12px}
.cv-hide-creature{position:absolute;z-index:1;right:-30%;bottom:2%;width:58%;height:auto;transform:rotate(10deg);transition:transform .6s cubic-bezier(.3,1.6,.5,1)}
.cv-hide-spot.is-home .cv-hide-creature{z-index:3;transform:translate(-55%,-60%) scale(1.5) rotate(0)}
.cv-hide-spot.is-shimmer::before{content:"";position:absolute;inset:-18%;z-index:0;border-radius:50%;background:radial-gradient(closest-side,rgba(255,230,140,.75),transparent);animation:cv-place-glow 1.6s ease-in-out infinite}
.cv-wiggle{animation:cv-wiggle .5s ease}
@keyframes cv-wiggle{20%{transform:translateX(-50%) rotate(-6deg)}50%{transform:translateX(-50%) rotate(5deg)}80%{transform:translateX(-50%) rotate(-3deg)}}
.cv-hide .cv-live{color:#fff;min-height:2.8em}
.cv-hide .cv-listen,.cv-hide .cv-button{background:transparent;border-color:#ffd76a;color:#ffd76a}
.cv-hide .cv-listen.is-speaking{background:#ffd76a;color:#2f2350}
@media(max-width:560px){.cv-hide-scene{height:240px}.cv-hide-spot .cv-hide-thing{font-size:3rem}}
@media(prefers-reduced-motion:reduce){.cv-hide-creature,.cv-wiggle,.cv-hide-spot.is-shimmer::before{transition:none;animation:none}}
.cv-hide-creature{width:44%;right:-24%;bottom:-2%}

/* ---------- A little help ---------- */
.cv-reassure{max-width:620px;margin:1rem auto 0;padding:.9rem 1.2rem;border-radius:18px;background:#fff5d9;border:1px solid #f0dc9c;font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.2rem;color:var(--cv-purple);text-align:center}
.cv-howto{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;max-width:860px;margin:0 auto 1rem}
.cv-howto div{padding:1rem .9rem;border:1px solid var(--cv-lavender-line);border-radius:16px;background:#fff;text-align:center}
.cv-howto b{display:block;margin-bottom:.25rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.15rem;color:var(--cv-purple)}
.cv-howto span{display:block;font-size:1.6rem;line-height:1.2}
.cv-howto p{margin:.2rem 0 0;font-size:.98rem;line-height:1.45}
.cv-ask{display:grid;grid-template-columns:170px 1fr;gap:1.2rem;align-items:center;max-width:860px;margin:0 auto;padding:1.3rem;border-radius:22px;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line)}
.cv-ask img{width:100%;height:auto}
.cv-ask-bubble{position:relative;margin:0 0 1rem;padding:1rem 1.2rem;border-radius:18px;background:#fff;box-shadow:0 6px 18px rgba(43,35,70,.08);font-size:1.12rem;line-height:1.55;font-weight:700;color:var(--cv-purple);min-height:3.2em}
.cv-ask-bubble::before{content:"";position:absolute;left:-10px;top:24px;border:10px solid transparent;border-left:0;border-right-color:#fff}
.cv-ask .cv-choice{justify-content:flex-start}
.cv-trouble{max-width:820px;margin:0 auto;border-collapse:separate;border-spacing:0;width:100%;background:#fff;border:1px solid var(--cv-lavender-line);border-radius:16px;overflow:hidden;text-align:left}
.cv-trouble th,.cv-trouble td{padding:.8rem 1rem;vertical-align:top;border-bottom:1px solid #efe7f5;line-height:1.5}
.cv-trouble tr:last-child th,.cv-trouble tr:last-child td{border-bottom:0}
.cv-trouble th{width:34%;font-weight:800;color:var(--cv-purple)}
.cv-grownup-panel{max-width:760px;margin:0 auto;padding:1.4rem 1.5rem;border-radius:20px;background:#fbf6ea;border:1px solid #ecdcb8;text-align:left}
.cv-grownup-panel p{line-height:1.65;margin:.5rem 0}
.cv-grownup-panel .cv-next{margin-top:1rem}
@media(max-width:700px){.cv-howto{grid-template-columns:1fr 1fr}.cv-ask{grid-template-columns:1fr;text-align:center}.cv-ask img{width:130px;margin:0 auto}.cv-ask-bubble::before{display:none}.cv-ask .cv-choice{justify-content:center}.cv-trouble th{width:auto;display:block;border-bottom:0;padding-bottom:0}.cv-trouble td{display:block}}

/* ---------- Homepage ---------- */
.cv-home{max-width:1120px;margin:0 auto;padding:0 20px}
.cv-home-hero{display:grid;grid-template-columns:1fr 1.05fr;gap:2.2rem;align-items:center;padding:2.2rem 0 1.6rem}
.cv-home-hero h1{margin:.2rem 0 .6rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:clamp(2.4rem,5.5vw,3.9rem);line-height:1.02;color:var(--cv-purple)}
.cv-home-hero h1 em{font-style:normal;color:#e4673f}
.cv-home-lead{margin:0 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-weight:700;font-size:1.3rem;color:var(--cv-purple)}
.cv-home-hero p{line-height:1.6}
.cv-home-hero figure{margin:0}
.cv-home-hero figure img{display:block;width:100%;height:auto;border-radius:26px;box-shadow:0 16px 40px rgba(43,35,70,.16)}
.cv-home-hero figcaption{margin-top:.5rem;font-size:.9rem;color:#6b6075;text-align:center}
.cv-home-buttons{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.1rem 0 .4rem}
.cv-home-buttons a{display:inline-flex;align-items:center;gap:.4rem;min-height:48px;padding:.65rem 1.25rem;border-radius:999px;background:var(--cv-gold);border:2px solid var(--cv-gold-deep);color:#3b2350;font-weight:800;text-decoration:none}
.cv-home-buttons a.alt{background:#fff;border-color:var(--cv-purple);color:var(--cv-purple)}
.cv-home-buttons a:hover{transform:translateY(-2px)}
.cv-home-row{display:grid;grid-template-columns:1.25fr 1fr;gap:1.2rem;margin:1rem 0 2.4rem}
.cv-home-box{padding:1.4rem 1.5rem;border-radius:24px;border:1px solid var(--cv-lavender-line);background:#fff}
.cv-home-box.adventure{background:#fff8e2;border-color:#f0dc9c}
.cv-home-box.today{display:grid;grid-template-columns:1fr 120px;gap:.8rem;align-items:center;background:var(--cv-lavender)}
.cv-home-box h2{margin:.1rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.6rem;color:var(--cv-purple)}
.cv-home-box p{margin:.2rem 0 .6rem;line-height:1.5}
.cv-home-box .today-img{width:120px;height:120px;object-fit:contain}
.cv-counters{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:.8rem 0 .6rem}
.cv-counters a{display:flex;flex-direction:column;align-items:center;padding:.7rem .4rem;border-radius:16px;background:#fff;border:1px solid #f0dc9c;color:var(--cv-purple);text-decoration:none}
.cv-counters a span{font-size:1.4rem}
.cv-counters strong{font-family:"Baloo 2","Nunito",sans-serif;font-size:1.35rem}
.cv-counters small{font-size:.85rem;color:#6b6075}
.cv-home-reset{border:0;background:none;padding:0;color:#7a6a86;font:700 .85rem "Nunito",sans-serif;text-decoration:underline;cursor:pointer}
.cv-home-reset-status{font-size:.85rem;color:var(--cv-green);margin:.3rem 0 0}
.cv-home-explore{position:relative;display:flex;align-items:flex-end;min-height:330px;margin:0 0 2.6rem;padding:22px;border-radius:28px;overflow:hidden;text-decoration:none;color:var(--cv-purple);background:#eaf8ef url('assets/home-preview/village-map.webp') center/cover no-repeat;box-shadow:0 14px 34px rgba(43,35,70,.14)}
.cv-home-explore span.copy{display:block;max-width:440px;padding:1.1rem 1.3rem;border-radius:20px;background:rgba(255,255,255,.96);box-shadow:0 8px 24px rgba(50,35,60,.12)}
.cv-home-explore strong{display:block;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.7rem}
.cv-home-explore em{font-style:normal;font-weight:800;color:#b5651d}
.cv-home-explore:hover{transform:translateY(-3px)}
.cv-home-section{margin:0 0 2.6rem;text-align:center}
.cv-home-section h2{margin:.2rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:clamp(1.8rem,3.5vw,2.4rem);color:var(--cv-purple)}
.cv-home-section>p{max-width:620px;margin:0 auto 1.2rem;line-height:1.6}
.cv-faces{display:grid;grid-template-columns:repeat(5,1fr);gap:.9rem;margin:0 0 1.2rem}
.cv-faces a{display:flex;flex-direction:column;align-items:center;padding:.9rem .5rem 1rem;border-radius:22px;background:linear-gradient(180deg,#f6f0fb,#fff8ec);border:1px solid var(--cv-lavender-line);color:var(--cv-purple);text-decoration:none}
.cv-faces img{width:100%;max-width:140px;height:150px;object-fit:contain}
.cv-faces strong{margin-top:.4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.15rem}
.cv-faces small{color:#6b6075;font-size:.85rem}
.cv-faces a:hover{transform:translateY(-3px)}
.cv-home-pair{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin:0 0 2.6rem}
.cv-home-card{display:flex;flex-direction:column;padding:1.4rem 1.5rem;border-radius:26px;border:1px solid var(--cv-lavender-line);text-align:left}
.cv-home-card.books{background:#eaf6fd}
.cv-home-card.make{background:#fff6dc}
.cv-home-card h2{margin:.1rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.7rem;color:var(--cv-purple)}
.cv-home-card p{line-height:1.55}
.cv-home-card .pics{display:flex;gap:.6rem;align-items:flex-end;justify-content:center;margin:auto 0 1rem;min-height:170px}
.cv-home-card .pics img{height:165px;width:auto;border-radius:10px;box-shadow:0 8px 18px rgba(43,35,70,.15)}
.cv-home-card .pics img.colour{border-radius:12px;background:#fff}
.cv-home-card .cv-home-buttons{margin:0}
.cv-home-grown{margin:0 0 1.6rem;padding:1.6rem 1.7rem;border-radius:26px;background:#fbf6ea;border:1px solid #ecdcb8}
.cv-home-grown h2{margin:.2rem 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.8rem;color:var(--cv-purple)}
.cv-home-grown p{line-height:1.6;max-width:700px}
.cv-home-grown .links{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:.8rem;align-items:center}
.cv-home-grown .links a{font-weight:800;color:var(--cv-purple)}
.cv-home-grown .links a.cv-button{text-decoration:none;background:var(--cv-gold);border-color:var(--cv-gold-deep);color:#3b2350}
.cv-home-made{text-align:center;font-size:.92rem;color:#6b6075;margin:0 0 1rem}
.collyvale-song-player{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;width:fit-content;max-width:100%;border-radius:18px;background:#fff8dc;box-shadow:0 6px 18px rgba(68,41,99,.10);border:1px solid rgba(68,41,99,.10)}
.collyvale-song-button{appearance:none;border:0;border-radius:999px;padding:11px 17px;font:inherit;font-weight:800;cursor:pointer;background:#5b3b76;color:#fff}
.collyvale-song-button:focus-visible{outline:3px solid #f2c94c;outline-offset:3px}
.collyvale-song-note{font-size:.9rem;color:#5b4b62}
.adventure-reset-dialog{max-width:420px;width:calc(100% - 32px);padding:1.5rem;border:0;border-radius:22px;background:#fffaf0;text-align:center;box-shadow:0 20px 60px rgba(43,35,70,.35)}
.adventure-reset-dialog::backdrop{background:rgba(40,28,60,.45)}
.adventure-reset-dialog h2{margin:0 0 .4rem;font-family:"Baloo 2","Nunito",sans-serif;color:var(--cv-purple)}
.adventure-reset-actions{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap;margin-top:1rem}
.adventure-reset-actions button{min-height:44px;padding:.55rem 1.1rem;border-radius:999px;border:2px solid var(--cv-purple);background:#fff;color:var(--cv-purple);font:800 1rem "Nunito",sans-serif;cursor:pointer}
.adventure-reset-actions button[data-reset-adventure-confirm]{background:var(--cv-purple);color:#fff}
@media(max-width:860px){.cv-home-hero,.cv-home-row,.cv-home-pair{grid-template-columns:1fr}.cv-faces{grid-template-columns:repeat(3,1fr)}.cv-home-hero{padding-top:1.2rem}}
@media(max-width:520px){.cv-faces{grid-template-columns:repeat(2,1fr)}.cv-faces a:last-child{grid-column:1/-1}.cv-home-box.today{grid-template-columns:1fr 90px}.cv-home-box .today-img{width:90px;height:90px}.cv-home-explore{min-height:260px;padding:14px}.collyvale-song-player{width:100%;box-sizing:border-box}.collyvale-song-button{width:100%}}
.cv-home a.cv-button{text-decoration:none}.cv-home-explore,.cv-faces a,.cv-counters a{transition:transform .15s ease}

/* ---------- Who can help with my wobble? ---------- */
.cv-wobble{max-width:900px;margin:0 auto}
.cv-wobble-feelings{display:grid;grid-template-columns:repeat(5,1fr);gap:.7rem}
.cv-wobble-feelings button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;min-height:104px;padding:.7rem .4rem;border:2px solid var(--cv-lavender-line);border-radius:20px;background:#fff;color:var(--cv-purple);font:800 1rem/1.2 "Nunito",sans-serif;cursor:pointer;transition:transform .15s ease,border-color .15s ease}
.cv-wobble-feelings button span{font-size:2rem;line-height:1}
.cv-wobble-feelings button:hover{transform:translateY(-2px);border-color:var(--cv-gold-deep)}
.cv-wobble-feelings button[aria-pressed="true"]{border-color:var(--cv-purple);background:#fff8ec}
.cv-wobble-feelings button:focus-visible{outline:3px solid var(--cv-purple);outline-offset:3px}
.cv-wobble-friend{display:grid;grid-template-columns:200px 1fr;gap:1.4rem;align-items:center;margin:1.4rem 0 0;padding:1.4rem 1.5rem;border-radius:26px;background:var(--cv-lavender);border:1px solid var(--cv-lavender-line);text-align:left}
.cv-wobble-friend img{width:100%;height:230px;object-fit:contain}
.cv-wobble-friend h3{margin:0 0 .3rem;font-family:"Baloo 2","Nunito",sans-serif;font-size:1.7rem;color:var(--cv-purple)}
.cv-wobble-line{margin:0 0 .8rem;padding:.9rem 1.1rem;border-radius:18px;background:#fff;font-size:1.15rem;line-height:1.55;font-weight:700;color:var(--cv-purple)}
.cv-wobble-friend .cv-listen{margin:0 0 .8rem}
.cv-wobble-friend .cv-actions{justify-content:flex-start;gap:.6rem}
.cv-wobble-friend a.cv-button{text-decoration:none}
.cv-wobble-friend a.cv-button.post{background:var(--cv-gold);border-color:var(--cv-gold-deep);color:#3b2350}
.cv-wobble-print{display:block;margin-top:.7rem;font-size:.92rem;color:#6b6075}
.cv-pop{animation:cv-pop-in .45s ease-out}
@keyframes cv-pop-in{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:none}}
.cv-wilf{display:block;width:140px;height:auto;margin:0 auto .4rem}
@media(max-width:820px){.cv-wobble-feelings{grid-template-columns:repeat(2,1fr)}.cv-wobble-friend{grid-template-columns:1fr;text-align:center}.cv-wobble-friend img{height:180px}.cv-wobble-friend .cv-actions{justify-content:center}}
@media(prefers-reduced-motion:reduce){.cv-pop{animation:none}}
.cv-wobble-print[hidden]{display:none}
.cv-wobble-friend .cv-actions a{white-space:nowrap}
.cv-wobble-friend a.cv-button.print{background:#fff;border-color:var(--cv-green);color:var(--cv-green)}
.cv-wobble-friend a.cv-button[hidden]{display:none}
.cv-printables{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;max-width:900px;margin:0 auto 1rem}
.cv-printables a{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:1rem .8rem;border:1px solid var(--cv-lavender-line);border-radius:18px;background:#fff;color:var(--cv-purple);text-decoration:none;text-align:center}
.cv-printables a span{font-size:1.8rem}
.cv-printables strong{font-family:"Baloo 2","Nunito",sans-serif;font-size:1.1rem}
.cv-printables small{color:#6b6075}
.cv-printables a:hover{transform:translateY(-2px);border-color:var(--cv-gold-deep)}
@media(max-width:700px){.cv-printables{grid-template-columns:1fr 1fr}}
