@font-face{font-family:Quicksand;src:url('/fonts/Quicksand.ttf') format('truetype');font-weight:300 700;font-display:swap}
:root{color-scheme:light;--ink:#383c36;--muted:#63675e;--purple:#615375;--green:#3d654b;--line:#dfdfd3;--paper:#faf7f2}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Quicksand,"Avenir Next",sans-serif;font-weight:600;line-height:1.5}
button,textarea{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation;border:0;color:inherit;min-height:48px}button:disabled{cursor:default;opacity:.53}button:not(:disabled):active{transform:translateY(2px)}button:focus-visible,a:focus-visible,summary:focus-visible,textarea:focus-visible{outline:3px solid #795baa;outline-offset:4px}
[hidden]{display:none!important}h1,h2,p{margin:0}h2{font-size:1.18rem;line-height:1.35}small{font-size:.75rem}a{color:inherit}.rainbow{height:7px;background:linear-gradient(90deg,#dbaaaa 0 17%,#e4c49b 17% 34%,#e3d79e 34% 50%,#bed1b7 50% 67%,#b8ced7 67% 83%,#c9bbd8 83%)}
.shell{max-width:1040px;margin:auto;padding:0 max(22px,env(safe-area-inset-right)) max(22px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left))}
.header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:25px 0;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font-size:1.14rem;font-weight:700;line-height:1.2;min-width:0}.brand small{display:block;font-size:.57rem;letter-spacing:.15em;margin-top:7px;color:var(--muted)}.brand img{flex:none}
.quiet{background:#efede6;border:1px solid #d9d8cc;border-radius:13px;padding:10px 15px;font-size:.85rem;font-weight:700}.intro{padding:28px 0 25px;display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:.67rem;letter-spacing:.14em;color:var(--muted);font-weight:700}.intro h1{font-size:clamp(1.7rem,4vw,2.5rem);font-weight:600;line-height:1.14;letter-spacing:-.05em;margin-top:10px}.intro-star{font-size:66px;color:#aa7955;margin-right:24px;font-weight:400}
.app-grid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:24px;align-items:start}.cat-card{background:#eef0e5;border:1px solid #dfe2d4;border-radius:28px;padding:22px;position:relative;overflow:hidden}.cat-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.pill{background:#fff8e9;border:1px solid #e6d7b7;border-radius:30px;padding:6px 12px;font-size:.85rem;white-space:nowrap}.pill span:first-child{color:#8c622c}.cat-scene{max-width:330px;margin:25px auto 14px}.cat-scene svg{display:block;width:100%;overflow:visible}.cat-bottom{text-align:center}.cat-mood{font-size:.9rem}.muted{color:var(--muted);font-size:.84rem}.cat-bottom .muted{font-size:.72rem;margin-top:3px}.feed{margin-top:20px;background:#fffdf5;border:1px solid #d4d5c4;border-radius:16px;padding:10px 22px;font-weight:700;font-size:1rem;min-width:170px}.feed small{display:block;font-size:.66rem;color:var(--muted)}.feed>span{margin-right:5px}
#cat-body{transform-box:view-box;transform-origin:159px 195px;transition:transform .5s ease}.happy-eyes,.hearts,.treat{opacity:0}.happy .happy-eyes,.happy .hearts{opacity:1}.happy .eye{opacity:0}.eating .mouth{transform-box:fill-box;transform-origin:center;animation:chew .25s 5}.eating .treat{animation:nibble 1.1s ease-in-out}.eating .tail{transform-origin:210px 178px;animation:tail .35s 3 alternate}
.practice-card{border:1px solid var(--line);border-radius:28px;background:#fffefa;box-shadow:0 8px 30px #40352305;overflow:hidden}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:#eeeaeF;padding:6px;margin:13px;border-radius:17px}.mode-switch button{border-radius:12px;background:transparent;font-size:.82rem;padding:10px 5px;line-height:1.35;font-weight:700;color:#665e72}.mode-switch button[aria-pressed=true]{background:#fffefa;box-shadow:0 2px 5px #51426212;color:#40334f}.mode-switch span{margin-right:3px}.practice-content{text-align:center;padding:15px 25px 22px}.practice-content h2{margin:8px 0 4px;font-size:1.32rem;letter-spacing:-.035em}.talk-button{display:flex;flex-direction:column;align-items:center;margin:19px auto 22px;background:#e9e2f0;border:1px solid #cec0dd;border-radius:24px;width:180px;min-height:140px;padding:7px 8px 12px;color:#4f4363;font-weight:700}.talk-button svg{width:85px;height:68px}.talk-button small{font-size:.65rem;margin-top:3px;font-weight:600}.choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.choice{min-width:0;min-height:72px;border:2px solid #d9d8c9;border-radius:17px;background:#f4f0df;padding:12px 7px;font-size:clamp(1.2rem,3vw,1.65rem);font-weight:600;overflow-wrap:anywhere;line-height:1.3}.choice:nth-child(2){background:#e9eff3;border-color:#ccd9e0}.choice:nth-child(3){background:#f5e8e5;border-color:#e6cfc9}.word-font{font-family:"Century Gothic",Quicksand,"Avenir Next",Futura,sans-serif}.choice[aria-pressed=true]{border-color:#615375;box-shadow:0 0 0 3px #d6c6e6;background:#eee5f6;color:#483158}.choice.correct{border-color:#568265;background:#e0eedf;opacity:1}.choice .sound-icon{display:block;font-size:1.5rem}.choice .sound-label{display:block;font-size:.78rem}.choice .selected-label{display:block;font-size:.64rem;min-height:1em;margin-top:5px}.read-word{font-size:clamp(2rem,6vw,3rem);line-height:1.25;overflow-wrap:anywhere;padding:25px 5px 30px;color:#4f4363}.check{background:var(--green);color:#fffef5;border-radius:14px;padding:12px 20px;font-weight:700}.practice-content>.check{width:100%;margin-top:17px}.check span{margin-right:7px}.check:disabled{opacity:1;background:#e0e5dc;color:#70776d}.feedback{margin-top:22px;font-size:.85rem;min-height:48px;display:flex;flex-direction:column;justify-content:center;gap:3px}.feedback small{color:var(--muted);font-size:.71rem;font-weight:500}.feedback.success{color:var(--green);font-size:1.3rem;font-weight:700}.feedback.wrong{color:#8b4e43;font-size:1.1rem}.next{width:100%;background:#e2eddf;color:#31593c;border:1px solid #bacfb5;padding:12px 18px;border-radius:14px;font-weight:700;margin-top:12px}.next span{margin-left:8px}
.notice{background:#fff0d7;color:#724c26;border:1px solid #e0c8a2;border-radius:12px;padding:12px;margin:12px 0;font-size:.8rem;text-align:left;overflow-wrap:anywhere}
footer{text-align:center;color:var(--muted);font-size:.76rem;margin:25px 0 12px}footer>span{padding:0 10px;color:#9c7057}details{max-width:540px;margin:17px auto 0}summary{cursor:pointer;min-height:44px;padding:10px;text-decoration:underline;text-underline-offset:4px}details p{text-align:left;margin:10px 0;font-size:.8rem;font-weight:500}
dialog{border:1px solid var(--line);border-radius:24px;width:calc(100% - 24px);max-width:540px;max-height:calc(100dvh - 32px);padding:24px;background:var(--paper);color:var(--ink);overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#31352e70;backdrop-filter:blur(4px)}body:has(dialog[open]){overflow:hidden}.editor-head{display:flex;align-items:start;gap:10px;justify-content:space-between;margin-bottom:14px}.editor-head h2{margin-top:7px}.close{border-radius:50%;background:#e9e5dc;font-size:1.5rem;min-width:48px}label{display:block;margin-top:20px;font-weight:700}#word-help{margin:6px 0 12px;font-weight:500}textarea{resize:vertical;display:block;width:100%;min-height:160px;border:1px solid #bfbcb0;border-radius:13px;padding:14px;background:#fffefa;color:var(--ink);font-size:1rem;line-height:1.5}#word-count{margin-top:8px}.error{color:#8e352f;margin:8px 0;font-size:.85rem}.editor-actions{display:flex;justify-content:space-between;gap:10px;margin:18px 0}.fine{font-size:.74rem;font-weight:500}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:10}.confetti i{position:absolute;top:-20px;width:9px;height:15px;left:calc(var(--i)*5%);background:#bba5d3;animation:fall 1.7s ease-in forwards;animation-delay:calc(var(--i)*18ms)}.confetti i:nth-child(3n){background:#a2bd95}.confetti i:nth-child(3n+1){background:#d7a391}.confetti i:nth-child(4n){background:#d5c483;border-radius:50%}
@keyframes fall{to{transform:translate(30px,100vh) rotate(480deg);opacity:0}}@keyframes nibble{0%{opacity:1;transform:translateY(10px)}75%{opacity:1;transform:translateY(-48px)}100%{opacity:0;transform:translateY(-48px)}}@keyframes chew{50%{transform:scaleY(.5)}}@keyframes tail{to{transform:rotate(-8deg)}}
@media(min-width:760px){.cat-card{margin-top:20px}.cat-scene{margin-top:38px;margin-bottom:25px}.cat-bottom{padding-bottom:9px}}
@media(max-width:700px){.shell{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.header{padding:17px 0}.brand{font-size:1rem;gap:8px}.brand img{width:35px;height:35px}.brand small{font-size:.49rem;letter-spacing:.11em}.header .quiet{padding:8px 11px;font-size:.76rem}.intro{padding:21px 2px 19px}.intro h1{font-size:1.65rem}.intro .eyebrow{font-size:.59rem}.intro-star{font-size:46px;margin-right:14px}.app-grid{grid-template-columns:minmax(0,1fr);gap:16px}.cat-card{padding:15px 17px;border-radius:23px;display:grid;grid-template-columns:1fr 1fr;align-items:center;column-gap:12px}.cat-top{grid-column:1/-1}.cat-top h2{font-size:1rem}.pill{font-size:.77rem;padding:4px 10px}.cat-scene{width:100%;max-width:175px;margin:8px 0 0}.cat-bottom{text-align:left;padding-top:12px}.cat-mood{font-size:.75rem;line-height:1.4}.cat-bottom .muted{font-size:.62rem}.feed{margin-top:10px;padding:7px 10px;min-width:0;width:100%;font-size:.85rem;border-radius:13px}.feed small{font-size:.58rem}.practice-card{border-radius:23px}.practice-content{padding:9px 17px 18px}.mode-switch{margin:10px}.mode-switch button{font-size:.76rem}.practice-content h2{font-size:1.15rem}.practice-content>.muted{font-size:.76rem}.talk-button{min-height:128px;width:163px;margin:17px auto}.talk-button svg{height:60px}.choices{gap:8px}.choice{min-height:65px;padding:10px 5px;font-size:1.35rem}.feedback{margin-top:17px;font-size:.76rem}.feedback small{font-size:.66rem}footer{font-size:.67rem}.editor-actions button{padding:11px 13px}}
@media(max-width:350px){.shell{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.brand{font-size:.88rem}.brand small{font-size:.43rem}.brand img{width:30px;height:30px}.header .quiet{font-size:.72rem;padding:8px}.cat-card{padding:13px;column-gap:8px}.practice-content{padding-left:13px;padding-right:13px}.mode-switch button{font-size:.69rem}.choice .sound-label{font-size:.7rem}.cat-mood{font-size:.7rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}.eating .treat{opacity:0}}

.voice-settings{text-align:left;background:#eee8f3;border:1px solid #d8cce2;border-radius:20px;margin:18px 0;padding:18px;color:var(--ink);min-width:0}
.voice-settings h2{font-size:1.1rem}.voice-settings label{font-size:.9rem;margin-top:16px}.voice-settings p{overflow-wrap:anywhere}.voice-settings select{display:block;font:inherit;font-size:1rem;width:100%;min-width:0;max-width:100%;min-height:48px;background:#fffefa;color:var(--ink);border:1px solid #bfb3cc;border-radius:12px;padding:10px;margin-top:8px}
.voice-settings input{display:block;width:100%;min-width:0;min-height:48px;margin:0;accent-color:#615375}.voice-settings select:focus-visible,.voice-settings input:focus-visible{outline:3px solid #795baa;outline-offset:3px}
#voice-speed{float:right;font-variant-numeric:tabular-nums}.speed-help{display:flex;justify-content:space-between;gap:12px;font-size:.75rem;color:var(--muted)}#preview-voice{margin-top:18px;background:#fffefa;width:100%}

.recording-settings{text-align:left;background:#eef0e5;border:1px solid #d2d9c7;border-radius:20px;padding:18px;color:var(--ink)}
.recording-settings p{overflow-wrap:anywhere}.recording-list{max-height:420px;overflow:auto;overscroll-behavior:contain;padding:4px}
.recording-row{padding:14px 0;border-top:1px solid #cbd2c1}.recording-label{overflow-wrap:anywhere}.recording-label strong{font-size:1rem}.recording-label small{display:block;font-size:.72rem;margin:3px 0 10px;color:var(--muted)}
.recording-actions{display:flex;flex-wrap:wrap;gap:7px}.recording-actions button{flex:1;padding:10px;font-size:.78rem;background:#fffefa}
#record-title{margin:10px 0 18px;overflow-wrap:anywhere}#record-status{font-size:.9rem;margin:12px 0}.is-recording{background:#f8dfdc;color:#823f39;border:1px solid #bc7369;border-radius:12px;padding:12px;font-weight:700}
.recorder-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.recorder-controls button{padding:12px 8px}.stop-recording{background:#863e38;color:white;border-radius:14px}#record-save,#record-cancel{grid-column:1/-1}#recordings-heading:focus-visible{outline:3px solid #795baa;outline-offset:4px}
