*{box-sizing:border-box}body{margin:0;color:#26494b;background:#dff4f7;background-image:radial-gradient(#fff9 2px,transparent 2px);background-size:26px 26px;font-family:'Hiragino Maru Gothic ProN','Yu Gothic',sans-serif;font-weight:700}header{max-width:1000px;margin:auto;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;font-size:1.4rem;letter-spacing:.04em}.logo{display:grid;place-items:center;width:48px;height:48px;background:#ffd458;color:#66470f;border:3px solid white;border-radius:17px;transform:rotate(-7deg);font-size:1.9rem;box-shadow:0 3px 0 #e3ad31}.age{font-size:.875rem;background:white;padding:8px 14px;border-radius:30px}main{max-width:820px;margin:4px auto;padding:0 24px}nav{display:flex;gap:12px;margin-bottom:20px}button,select{font:inherit;cursor:pointer}button{border:0;border-radius:18px;transition:transform .15s,background .15s}button:hover{transform:translateY(-3px)}button:active{transform:translateY(3px)}button:focus-visible,select:focus-visible,summary:focus-visible{outline:4px solid #154fa4;outline-offset:4px}.tab{flex:1;padding:13px 8px;background:#fff9;color:#426366;font-size:1rem;border:2px solid #fff;box-shadow:0 4px 0 #bcdde0;display:flex;align-items:center;justify-content:center;gap:8px}.tab span{font-size:1.5rem;line-height:1}.tab.active{background:#167b82;color:white;border-color:#167b82;box-shadow:0 4px 0 #09555c}section{background:#fffefa;border:3px solid white;border-radius:36px;padding:25px 38px 32px;text-align:center;box-shadow:0 8px 0 #b9dfe2,0 20px 50px #1761680b;position:relative;overflow:hidden}.section-top{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:1rem}.eyebrow{color:#517476;font-size:.95rem;letter-spacing:.08em}#count{background:#edf6f4;border-radius:30px;padding:7px 16px;color:#346768}.star-trail{display:flex;justify-content:center;gap:14px;margin:20px auto 2px;position:relative}.star-trail:before{content:'';position:absolute;height:4px;background:#efe5cc;top:25px;left:15%;right:15%}.star-stop{z-index:1;width:52px;height:52px;display:grid;place-items:center;background:#faf4e5;color:#c3bba8;border:3px solid #efe5cc;border-radius:50%;font-size:1.7rem}.star-stop.current{border-color:#f5b536;background:#fff6d8}.star-stop.earned{background:#ffd458;border-color:#edae23;color:#6c4709;box-shadow:0 3px 0 #edb333;animation:pop .35s ease}.buddy{display:flex;align-items:center;justify-content:center;margin:6px auto -6px;gap:0;min-height:150px}.buddy img{width:150px;height:150px;object-fit:contain;transform:rotate(-3deg)}.speech{background:#fff0bf;border:2px solid #f4d685;border-radius:22px 22px 22px 4px;text-align:left;padding:14px 20px;max-width:280px}.buddy-name{font-size:.875rem;color:#76571c}.speech p{font-size:1.15rem;margin:5px 0 0;line-height:1.5}h1{font-size:2.15rem;margin:16px 0 8px;letter-spacing:.05em}.instruction{font-size:1.125rem;color:#5d7778;margin:0 0 22px}.listen{padding:17px 36px;background:#167b82;color:white;box-shadow:0 6px 0 #09555c;font-size:1.25rem;border-radius:50px}.listen span{margin-right:8px;font-size:1.5rem}.choices{display:flex;gap:22px;margin:28px auto 22px;justify-content:center}.choice{width:146px;min-height:140px;font-size:4.4rem;line-height:1.2;background:#fff0bd;border:3px solid #f0cd65;color:#5d460d;box-shadow:0 7px 0 #dbb554;border-radius:24px;position:relative}.choice:nth-child(2){background:#ffdce5;border-color:#f2a8bd;color:#8a344c;box-shadow:0 7px 0 #de8ea5}.choice:nth-child(3){background:#dceafb;border-color:#a3c2ed;color:#355b8e;box-shadow:0 7px 0 #86a9d8}.choice.correct{background:#d9f3df;border-color:#66b97d;color:#267440;box-shadow:0 7px 0 #4a9c60;animation:pop .35s ease}.choice.correct:after{content:'★';position:absolute;top:-14px;right:-9px;font-size:2rem;line-height:1.2;color:#b87500;background:#ffe27b;width:38px;border-radius:50%;border:2px solid white}.choice.retry{border-style:dashed}.feedback{min-height:30px;color:#497172;font-size:1.1rem}.primary,.secondary{padding:16px 28px;font-size:1.1rem;margin-top:18px;background:#167b82;color:white;box-shadow:0 4px 0 #09555c;border-radius:50px}.secondary{background:#e6f1ef;color:#345f60;box-shadow:0 4px 0 #c6ded8}.small{font-size:.875rem;color:#607979;line-height:1.7}.small:empty{display:none}.award{color:#b97908;text-shadow:0 3px 0 #ffe393;font-size:2.9rem;margin-top:16px;letter-spacing:6px}h2{font-size:1.8rem}#finish p{line-height:1.8;color:#547573}.trace-actions{display:flex;justify-content:center;gap:12px}canvas{display:block;width:min(100%,360px);aspect-ratio:1;margin:18px auto 0;border:4px solid #e5c977;border-radius:24px;background:#fffefa;touch-action:none;box-shadow:0 5px 0 #e3c473}.crayons{display:flex;gap:14px;justify-content:center;margin:18px 0}.crayon{width:44px;height:44px;background:var(--ink);border:4px solid white;border-radius:50%;box-shadow:0 0 0 2px #d9e4e3}.crayon.selected{box-shadow:0 0 0 3px var(--ink);transform:scale(1.1)}select{padding:10px 14px;border:2px solid #d5e4df;border-radius:12px;background:white;color:#26494b;font-size:1rem;max-width:100%}.letters{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:28px}.letters button{font-size:2rem;padding:12px;background:#fff0bd;color:#5d460d;border:2px solid #f0d379;box-shadow:0 4px 0 #e1c468;border-radius:18px}.letters button:nth-child(5n+2){background:#ffdfe8;color:#88344d;border-color:#f1b3c5;box-shadow:0 4px 0 #dfa0b3}.letters button:nth-child(5n+3){background:#dfebfa;color:#355b8e;border-color:#aec8eb;box-shadow:0 4px 0 #9eb7d9}.letters button:nth-child(5n+4){background:#e3f0d9;color:#4a6630;border-color:#bcd3a7;box-shadow:0 4px 0 #a9c090}.letters button:nth-child(5n){background:#eee3fa;color:#674386;border-color:#d1b9e8;box-shadow:0 4px 0 #bea3d8}.letters button.selected{outline:3px solid #167b82;outline-offset:2px;transform:translateY(-3px)}.word{font-size:1.6rem;color:#167b82}footer{margin:24px 0 36px;color:#4b7174;font-size:.875rem;text-align:center}details{margin-top:18px;text-align:left;line-height:1.8;background:#ffffff8c;border-radius:18px;padding:14px 20px}summary{cursor:pointer;text-align:center}details p{font-weight:400}details label{display:flex;gap:12px;align-items:center;flex-wrap:wrap}#confetti{position:fixed;inset:0;pointer-events:none;z-index:10;overflow:hidden}.confetti-piece{position:absolute;top:15%;width:10px;height:14px;border-radius:2px;background:var(--color);left:var(--left);animation:fall 1.2s ease-out forwards}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.13)}100%{transform:scale(1)}}@keyframes fall{0%{transform:translateY(-20px) rotate(0);opacity:0}15%{opacity:1}100%{transform:translateY(65vh) rotate(400deg);opacity:0}}.celebrate .buddy img{animation:pop .5s ease}[hidden]{display:none!important}@media(max-width:600px){header{padding:18px 16px}.brand{font-size:1.05rem;gap:9px}.logo{width:40px;height:40px;font-size:1.6rem}.age{font-size:.875rem;padding:7px 10px}main{padding:0 12px;margin-top:0}nav{gap:8px;margin-bottom:17px}.tab{font-size:.875rem;padding:12px 4px;flex-direction:column;gap:5px;border-radius:16px}.tab span{font-size:1.6rem}section{padding:20px 17px 26px;border-radius:28px}h1{font-size:1.7rem;margin-top:8px}.choices{gap:12px;margin-top:24px}.choice{width:30%;min-height:105px;font-size:3.3rem;border-radius:19px}.letters{gap:8px}.letters button{font-size:1.7rem;padding:10px 4px;border-radius:14px}.instruction{font-size:1rem}.section-top{flex-wrap:wrap}.buddy{min-height:128px;margin-top:8px}.buddy img{width:122px;height:128px}.speech{padding:11px 13px}.speech p{font-size:1rem}.star-trail{gap:12px;margin-top:18px}.star-stop{width:43px;height:43px;font-size:1.45rem}.star-trail:before{top:21px}.listen{padding:15px 28px}.award{font-size:2rem;letter-spacing:3px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.confetti-piece{display:none}}

.install-area{margin-top:24px;padding-top:18px;border-top:2px dashed #bcd9d5}.install-area h2{font-size:1.2rem;margin:0 0 8px}.install-area p{font-size:1rem;line-height:1.9}.install-area .small{font-size:.875rem}.install-area button{margin:8px 0}

.install-link{display:block;width:fit-content;margin:18px auto;color:#167b82;font-size:1rem;text-underline-offset:4px}#install{scroll-margin-top:20px}#install-title:focus{outline:none}

.writing-steps{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;font-size:1rem}.writing-steps span{padding:9px 14px;border-radius:30px;background:#edf1ed;color:#657c76}.writing-steps span.active{background:#fff0bd;color:#694d13;box-shadow:inset 0 0 0 2px #efcf77}.stroke-status{font-size:1.1rem;color:#167b82;min-height:1.8em;margin:20px 0 4px}#trace canvas[data-demo="true"]{border-color:#7bbabc;cursor:wait}#demo-writing{min-width:220px}#trace .crayons{margin-top:14px}

.voice-toolbar{display:flex;justify-content:flex-end;margin:0 0 14px}.voice-button{font-size:1rem;padding:10px 17px;background:#fff0bd;color:#694d13;border:2px solid #edcc72;box-shadow:0 3px 0 #dfbc60;border-radius:30px}.voice-button span{font-size:1.5rem;vertical-align:middle}#voice-note{text-align:center}

.voice-check{margin:16px 0;padding:16px;background:#fff;border-radius:14px}.voice-check label{display:block;margin-top:12px;font-size:.95rem}.voice-check audio{display:block;width:100%;max-width:360px;margin:8px 0 16px}.voice-check a{color:#167b82;text-underline-offset:4px}

.svg-library{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.tab[data-mode="dinosaurs"]{background:#fff0bd;color:#77520e;border-color:#efd085;box-shadow:0 4px 0 #dfbd68}
.tab[data-mode="dinosaurs"].active{background:#bb702b;border-color:#bb702b;color:white;box-shadow:0 4px 0 #895019}
.egg-progress{display:flex;align-items:center;justify-content:center;gap:16px;background:linear-gradient(110deg,#e3f4eb,#fff1cf);border-radius:22px;padding:10px 18px;margin-top:18px;text-align:left;border:2px solid #d4e8cf}
.progress-egg{width:58px;height:70px;flex-shrink:0;transform:rotate(calc(-7deg + 14deg * var(--egg-progress,0)))}
.egg-label{font-size:.8rem;letter-spacing:.08em;color:#65814f}.egg-progress p{margin:3px 0;font-size:1.08rem;color:#496334}.egg-hint{font-size:.8rem;color:#6c795a}
.dinosaur-picture{display:block;background-image:url('dinosaurs.png');background-size:300% 200%;background-repeat:no-repeat;width:100%;aspect-ratio:1;background-position:0% 0%}
.buddy .buddy-dinosaur{width:150px;flex-shrink:0;transform:rotate(-3deg)}
.celebrate .buddy-dinosaur{animation:pop .5s ease}
.hatch-area{margin-top:18px;border:2px dashed #edcb7c;background:#fff9e8;border-radius:28px;padding:20px 14px}
.hatch-area h2{font-size:1.25rem;margin:4px 0 8px}
.hatch-button{background:transparent;color:#73521c;display:flex;flex-direction:column;align-items:center;margin:auto;padding:10px 30px 14px;border:3px solid #edce7f;border-radius:30px;background:#fff1c9;box-shadow:0 5px 0 #dfbd68;max-width:100%}
.hatch-button svg{display:block;width:140px;height:171px;animation:egg-rock 2.7s ease-in-out infinite}
.hatch-button span{font-size:1.1rem}.hatch-label{display:inline-block;color:#7e5716;font-size:.95rem;padding:5px 14px;background:#ffe4a0;border-radius:30px}
#hatch-portrait{max-width:240px;margin:2px auto}.hatched-dinosaur .dinosaur-picture{animation:hatch-appear .7s ease-out}.hatched-dinosaur h3{font-size:1.35rem;margin:0 0 12px;color:#486037}.hatched-dinosaur p{font-size:.9rem}
.book-button{background:#b56a29;box-shadow:0 4px 0 #8d4d16;margin-top:16px}
.collection-total{background:#fff0bd;color:#7b591b;border-radius:30px;padding:7px 16px}.dino-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:24px 0}
.dino-card{display:flex;flex-direction:column;align-items:center;background:var(--dino-color);border:2px solid #ffffff;box-shadow:0 5px 0 #d7ddc9;border-radius:24px;padding:7px 7px 12px;color:#3d5950;min-width:0}
.dino-card[aria-pressed="true"]{outline:3px solid #167b82;outline-offset:2px}.dino-card-name{font-size:.83rem;margin:0 0 6px;overflow-wrap:anywhere}.dino-card-hint{font-size:.78rem;padding:5px 9px;background:#fff9;border-radius:30px}
.dino-card.locked{background:#f4f1e8;border:2px dashed #d9ceac;color:#8a7c58;box-shadow:none}.mini-egg{display:grid;place-items:center;width:64px;height:82px;border:3px solid #decea2;background:radial-gradient(ellipse at 27% 40%,#c7d5b1 0 10%,transparent 11%),radial-gradient(ellipse at 72% 64%,#eac59f 0 12%,transparent 13%),#fff3d6;border-radius:50% 50% 46% 46% / 63% 63% 38% 38%;font-size:1.6rem;color:#9c8a5a;margin:20px auto}
.dino-empty{background:#fff7e1;border-radius:24px;padding:20px 15px}.dino-empty svg{width:70px;height:86px}.dino-empty p{font-size:1rem;line-height:1.8;margin:8px 0}
.dino-detail{background:var(--dino-color,#e5f0d8);border:3px solid white;border-radius:28px;padding:18px}.dino-detail #dino-portrait{max-width:235px;margin:auto}.dino-detail h2{font-size:1.5rem;margin:0 0 12px;overflow-wrap:anywhere}.food-tag{display:inline-block;background:#fffc;border-radius:30px;padding:7px 16px;font-size:.9rem;margin:0}.dino-detail #dino-fact{font-size:1rem;line-height:1.8;margin:15px 0 0}.dino-detail button{margin-top:16px}
.dino-complete{background:#fff0bd;color:#7c5717;border-radius:20px;padding:12px;font-size:1rem}
@keyframes egg-rock{0%,70%,100%{transform:rotate(-5deg)}78%{transform:rotate(7deg)}86%{transform:rotate(-8deg)}94%{transform:rotate(5deg)}}
@keyframes hatch-appear{0%{transform:translateY(18px) scale(.6);opacity:0}65%{transform:translateY(-5px) scale(1.07)}100%{transform:translateY(0) scale(1);opacity:1}}
@media(max-width:600px){nav{grid-template-columns:repeat(2,minmax(0,1fr))}.tab{flex-direction:row;padding:12px 8px;font-size:.9rem}.tab span{font-size:1.4rem}.egg-progress{padding:9px 12px;gap:10px}.egg-progress p{font-size:.95rem}.buddy .buddy-dinosaur{width:122px}.dino-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dino-card-name{font-size:.78rem}.dino-detail h2{font-size:1.3rem}.mini-egg{margin:18px auto}.hatch-area{padding:18px 10px}}

.trace-progress{display:flex;justify-content:center;gap:12px;margin:22px 0 8px}.trace-stroke-mark{display:grid;place-items:center;width:42px;height:42px;border:2px solid #e1dccb;border-radius:50%;color:#8e876d;background:#f6f3e9;font-size:1.1rem}.trace-stroke-mark.current{background:#fff0bd;border-color:#e6c267;color:#725416}.trace-stroke-mark.earned{background:#dbf1dc;border-color:#8ac39a;color:#397445}.trace-success{background:#e2f4db;color:#376b39;border:2px solid #a3cf94;border-radius:22px;padding:15px 12px;margin:18px 0 8px;font-size:1.2rem;animation:pop .4s ease}#canvas[data-completed="true"]{border-color:#8ac39a;background:#f8fff4}
