/* 사운드북 여섯 권이 같이 쓰는 틀. 위(머리)·아래(꼬리)는 예박샘 놀이 편(site-ko)과 같은 값이다.
   권마다 다른 것(그림 색·바닥·움직임)은 각 페이지의 <style> 에 둔다. */
:root{
  --bg:#FCFCFB; --ink:#0B0B0B; --ink-soft:#52514E; --sub:#6D6B67; --line:#E7E6E1; --said:#C25124; --said-ink:#FFFFFF; --said-text:#B3481F;
  --edge:color-mix(in srgb, var(--ink) 11%, transparent);
  --tint-sky:#E4EEF5; --tint-leaf:#E3EFE6; --tint-clay:#F5E7E2; --tint-sun:#F5EEDA;
  --tint-ochre:#EEDDC7; --tint-berry:#F2E7F0; --tint-stone:#F1F0EE;
  --serif:"Noto Serif KR","Nanum Myeongjo",Georgia,serif;
  --sans:"Pretendard","Apple SD Gothic Neo","Malgun Gothic",ui-sans-serif,system-ui,sans-serif;
  --measure:34rem;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#151515; --ink:#F0EFEC; --ink-soft:#C3C2B7; --sub:#898781; --line:#2A2A28; --said:#F09978; --said-ink:#1A1A19; --said-text:#F09978;
    --edge:color-mix(in srgb, var(--ink) 16%, transparent);
    --tint-sky:#1B2833; --tint-leaf:#1B2A20; --tint-clay:#2E211D; --tint-sun:#2E2A18;
    --tint-ochre:#2D2316; --tint-berry:#2B1E2A; --tint-stone:#2B2416; }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  line-height:1.6;word-break:keep-all;letter-spacing:-.012em;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--measure);margin:0 auto;padding:2.191rem 1.1rem 3.505rem}

/* 머리 — 놀이 편 .masthead 와 같다 */
.masthead{display:flex;flex-direction:column;gap:.25rem;margin:0 0 1.752rem}
.brand{font-family:var(--serif);font-size:1.125rem;font-weight:500;letter-spacing:-.01em;
  color:var(--ink);text-decoration:none;align-self:flex-start}
.whoweare{font-size:.812rem;color:var(--sub);margin:.1rem 0 0}
.bookhead{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 0 .9rem}
.bookhead h1{font-family:var(--serif);font-weight:400;font-size:2rem;line-height:1.3;letter-spacing:-.02em;margin:0;text-wrap:balance}
.bookhead h1 .sound{color:var(--said)}
.vol{flex:none;font:inherit;font-size:13px;color:var(--sub);background:transparent;border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer}
.guide{margin:0 0 1.752rem;color:var(--ink-soft);font-size:1rem;line-height:1.6}
.guide b{color:var(--ink);font-weight:600}

/* 한 장 = 보드북 한 면 */
.page{position:relative;aspect-ratio:5/4;margin:0 0 16px;scroll-margin-top:24px;background:var(--tint);border-radius:.5rem;overflow:hidden;
  user-select:none;
  transition:background-color .35s}
/* 아이폰 길게 누르기 메뉴(미리보기·복사)를 막는다 — 1~2세는 꾹 누른다 */
.page,.page *{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.text{position:absolute;left:6%;top:7%;font-family:var(--serif);font-size:20px;font-weight:700;line-height:1.3;letter-spacing:0;pointer-events:none}
.text .sound{color:var(--said)}
.text .en{display:block;font-family:var(--sans);font-weight:400;font-size:13px;color:var(--ink-soft);margin-top:2px;letter-spacing:.02em}
.ground{position:absolute;left:0;right:0;bottom:0;pointer-events:none}
canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.veh{position:absolute;cursor:grab;will-change:transform;touch-action:pan-y}
.veh svg{display:block;width:100%;height:auto;overflow:visible}
.veh.bob{animation:bob 2.6s ease-in-out infinite alternate}
@keyframes bob{from{margin-top:0}to{margin-top:-4px}}

.say{position:absolute;font-family:var(--serif);font-weight:700;color:var(--said);letter-spacing:0;
  font-size:clamp(28px,9vw,44px);pointer-events:none;opacity:0;white-space:nowrap}
.say.show{animation:say 1.1s ease-out forwards}
@keyframes say{0%{opacity:0;transform:scale(.6)}20%{opacity:1;transform:scale(1.08)}35%{transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:translateY(-10px)}}
.hint{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;
  background:radial-gradient(var(--said),transparent 68%);opacity:0;pointer-events:none}
.hint.show{animation:hint 1.6s ease-in-out 2}
@keyframes hint{0%,100%{opacity:0;transform:scale(.7)}50%{opacity:.35;transform:scale(1.1)}}

/* 누구 소리일까 */
.quiz{position:relative;scroll-margin-top:24px;background:var(--tint-stone);border-radius:.5rem;padding:22px 18px 20px;margin:1.752rem 0 0;text-align:center}
.quiz h2{font-family:var(--serif);font-weight:500;font-size:1.375rem;line-height:1.4;margin:0 0 4px}
.quiz p{margin:0 0 14px;color:var(--ink-soft);font-size:14px}
.quiz .listen{font:inherit;font-size:17px;font-weight:600;padding:12px 22px;border-radius:999px;border:0;background:var(--said);color:var(--said-ink);cursor:pointer}
.quiz .pick{display:flex;gap:14px;justify-content:center;margin-top:16px}
.quiz .pick button{flex:1;max-width:150px;aspect-ratio:1/1;border-radius:18px;border:1px solid var(--line);background:var(--bg);cursor:pointer;padding:8px}
.quiz .pick svg{display:block;width:100%;height:100%}
.quiz .pick button.yes{animation:yes .6s ease-in-out 2}
.quiz .pick button.no{animation:no .35s ease-in-out}
@keyframes yes{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes no{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.quiz .said{font-family:var(--serif);font-weight:700;color:var(--said);font-size:22px;min-height:1.4em;margin-top:10px}

/* 끝 자리 — 보내기 줄은 키 재기(growth) 의 .spread·.btns 와 같은 꼴, 다른 권은 놀이 편 .toc 와 같은 꼴 */
.spread{padding-top:1.4rem;border-top:1px solid var(--line);margin:1.752rem 0 0}
.spread p{margin:0 0 1.15rem;font-size:1.062rem;color:var(--ink-soft)}
.btns{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}
.btns button{font:inherit;font-size:.938rem;padding:.65rem .5rem;border:1px solid var(--said);border-radius:.5rem;background:transparent;color:var(--said);cursor:pointer}
.btns button.on{background:var(--said);color:var(--said-ink)}
.btns .again{border-color:var(--edge);color:var(--ink-soft)}
.btns .again:hover{border-color:var(--sub);color:var(--ink)}
.btns button:focus-visible{outline:2px solid var(--said);outline-offset:2px}
.quiz button:focus-visible{outline:3px solid var(--said);outline-offset:3px}
.shelf{background:var(--tint-stone);border-radius:.5rem;padding:1.314rem 1.314rem 1.402rem;margin:1.752rem 0 0}
.shelf .toch{font-size:.812rem;font-weight:600;color:var(--ink-soft);margin:0 0 .876rem}
.shelf ol{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.613rem .9rem}
.shelf a{font-size:.938rem;color:var(--ink-soft);text-decoration:none;letter-spacing:-.02em}
.shelf a b{color:var(--said-text);font-weight:500;font-family:var(--serif)}
.shelf a:hover{color:var(--ink)}

/* 꼬리 — 놀이 편 .foot 와 같다 */
.foot{font-size:.812rem;color:var(--sub);border-top:1px solid var(--edge);padding-top:1.314rem;margin:1.752rem 0 0;line-height:1.9}
.homelink{font-size:.938rem;color:var(--said);text-decoration:none;font-weight:500}
.homelink:hover{text-decoration:underline}
.arw{width:1em;height:1em;vertical-align:-.12em;margin-left:.15em}
.footlink{font:inherit;color:inherit;text-decoration:none;border-bottom:1px solid var(--edge)}
.footlink:hover{color:var(--ink-soft);border-bottom-color:currentColor}
/* 누름 — 놀이 편 a:active 와 같은 결. 아이폰 탭은 0.1초 안팎이라 전환 없이 즉시 */
.vol:active,.quiz .listen:active,.quiz .pick button:active,.btns button:active,.shelf a:active,.masthead .brand:active,.homelink:active,.footlink:active{opacity:.6;transition:none}

@media (prefers-reduced-motion: reduce){
  .quiz .pick button{animation:none!important}
  .veh *,.veh,.say.show,.hint.show{animation:none!important;transition:none!important}
  .say.show{opacity:1}
}
.veh:focus-visible{outline:3px solid var(--said);outline-offset:4px;border-radius:12px}
