@keyframes pet-happy{0%{transform:translateY(0) scaleX(1) scaleY(1)}5%{transform:translateY(-26px) scaleX(.88) scaleY(1.18)}10%{transform:translateY(0) scaleX(1.1) scaleY(.92)}15%{transform:translateY(-16px) scaleX(.92) scaleY(1.1)}20%{transform:translateY(0) scaleX(1.04) scaleY(.97)}26%{transform:translateY(0) scale(1)}31%{transform:translate(-11px) rotate(-7deg) scale(1.06)}37%{transform:translate(11px) rotate(7deg) scale(1.06)}43%{transform:translate(-6px) rotate(-3deg) scale(1.02)}47%{transform:translate(0) rotate(0) scale(1)}54%{transform:translateY(-8px) scale(1.02)}61%{transform:translateY(0) scale(1)}67%{transform:translateY(-5px) scale(1.01)}73%{transform:translateY(0) scale(1)}84%{transform:translateY(0) scale(1)}91%{transform:translateY(-3px) scale(1.005)}to{transform:translateY(0) scaleX(1) scaleY(1)}}@keyframes pet-float{0%{transform:translateY(0) rotate(0) scale(1)}12%{transform:translateY(-9px) rotate(1.5deg) scale(1.015)}24%{transform:translateY(0) rotate(0) scale(1)}42%{transform:translateY(0) rotate(0) scale(1)}53%{transform:translateY(-7px) rotate(-1.5deg) scale(1.01)}63%{transform:translateY(-2px) rotate(.5deg) scale(1.005)}74%{transform:translateY(0) rotate(0) scale(1)}to{transform:translateY(0) rotate(0) scale(1)}}@keyframes pet-shake{0%{transform:rotate(0) translate(0)}5%{transform:rotate(-11deg) translate(-5px)}10%{transform:rotate(11deg) translate(5px)}15%{transform:rotate(-8deg) translate(-3px)}20%{transform:rotate(8deg) translate(3px)}25%{transform:rotate(-3deg) translate(-1px)}30%{transform:rotate(0) translate(0)}68%{transform:rotate(0) translate(0)}73%{transform:rotate(-5deg) translate(-2px)}78%{transform:rotate(5deg) translate(2px)}83%{transform:rotate(0) translate(0)}to{transform:rotate(0) translate(0)}}@keyframes pet-pulse{0%{transform:scale(1) translateY(0);opacity:1}14%{transform:scale(.9) translateY(4px);opacity:.78}28%{transform:scale(.93) translateY(3px);opacity:.82}50%{transform:scale(.93) translateY(3px);opacity:.82}64%{transform:scale(1) translateY(0);opacity:1}78%{transform:scale(1) translateY(0);opacity:1}88%{transform:scale(.97) translateY(2px);opacity:.9}to{transform:scale(1) translateY(0);opacity:1}}@keyframes pet-wobble{0%{transform:rotate(0) scale(1) translateY(0)}10%{transform:rotate(-5deg) scale(.96) translateY(2px)}20%{transform:rotate(4deg) scale(.97) translateY(1px)}30%{transform:rotate(-3deg) scale(.96) translateY(2px)}38%{transform:rotate(0) scale(.97) translateY(1px)}54%{transform:rotate(0) scale(.96) translateY(3px)}59%{transform:rotate(-2deg) scale(.96) translateY(2px)}64%{transform:rotate(2deg) scale(.96) translateY(2px)}69%{transform:rotate(0) scale(.97) translateY(1px)}84%{transform:rotate(0) scale(1) translateY(0)}to{transform:rotate(0) scale(1) translateY(0)}}.pet-anim-happy{animation:pet-happy 12s cubic-bezier(.36,.07,.19,.97) infinite;transform-origin:center bottom}.pet-anim-content{animation:pet-float 10s ease-in-out infinite;transform-origin:center bottom}.pet-anim-hungry{animation:pet-shake 5s cubic-bezier(.36,.07,.19,.97) infinite;transform-origin:center bottom}.pet-anim-sad{animation:pet-pulse 8s ease-in-out infinite;transform-origin:center bottom}.pet-anim-sick{animation:pet-wobble 9s ease-in-out infinite;transform-origin:center bottom}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh;min-height:100dvh}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:linear-gradient(160deg,#e8f5f4,#f0e8fa);color:#1e1e2e;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}input,textarea{font:inherit}.app-shell{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.app-header{padding:env(safe-area-inset-top,12px) 16px 12px;background:#fff9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(26,143,122,.12);position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px}.app-header .logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#1a8f7a,#2eaa8f);display:grid;place-items:center;font-size:20px}.app-header h1{margin:0;font-size:18px;color:#0d477a}.app-header .sub{margin:0;font-size:11px;color:#66798c}.app-main{flex:1;padding:16px 16px 96px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid rgba(26,143,122,.15);padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.nav-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:12px;color:#66798c;font-size:11px;font-weight:600;transition:all .2s}.nav-btn.active{background:linear-gradient(135deg,#1a8f7a1f,#2eaa8f1f);color:#0d477a}.card{background:#fff;border-radius:18px;padding:16px;box-shadow:0 2px 10px #0d477a14;margin-bottom:12px}.card.gradient{background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;box-shadow:0 6px 20px #1a8f7a4d}.btn-primary{width:100%;padding:16px;border-radius:14px;background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;font-size:16px;font-weight:700;box-shadow:0 4px 14px #1a8f7a59;display:flex;align-items:center;justify-content:center;gap:8px}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.5}.btn-ghost{width:100%;padding:14px;border-radius:14px;background:#fff;color:#0d477a;font-weight:600;border:2px solid #E8F5F4}.avatar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.avatar-tile{aspect-ratio:1;border-radius:18px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:48px;border:3px solid transparent;transition:all .2s;box-shadow:0 2px 8px #0d477a0f}.avatar-tile .label{font-size:11px;color:#66798c;font-weight:600;margin-top:4px}.avatar-tile.selected{border-color:#1a8f7a;background:linear-gradient(135deg,#e8f5f4,#fff);transform:scale(1.05)}.pill-row{display:flex;flex-wrap:wrap;gap:8px}.pill{padding:10px 16px;border-radius:999px;background:#fff;font-size:14px;font-weight:600;color:#66798c;border:2px solid #E8F5F4}.pill.selected{background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;border-color:transparent}.text-input{width:100%;padding:14px 16px;border-radius:14px;border:2px solid #E8F5F4;background:#fff;font-size:16px;color:#1e1e2e}.text-input:focus{outline:none;border-color:#1a8f7a}.chat-list{display:flex;flex-direction:column;gap:10px}.bubble{max-width:80%;padding:12px 14px;border-radius:16px;font-size:15px;line-height:1.4;word-break:break-word}.bubble.user{align-self:flex-end;background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;border-bottom-right-radius:4px}.bubble.pet{align-self:flex-start;background:#fff;color:#1e1e2e;border-bottom-left-radius:4px;box-shadow:0 1px 4px #0d477a0f}.mic-btn{width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;display:grid;place-items:center;box-shadow:0 6px 20px #1a8f7a73}.mic-btn.recording{background:linear-gradient(135deg,#e83e3e,#f26b6b);box-shadow:0 6px 24px #e83e3e80;animation:pulse 1.2s infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.lesson{background:#fff;border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:0 2px 8px #0d477a12}.lesson .icon{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,#e8f5f4,#f0e8fa);display:grid;place-items:center;font-size:28px}.lesson .body{flex:1}.lesson .title{font-weight:700;color:#0d477a;font-size:15px}.lesson .meta{font-size:12px;color:#66798c;margin-top:2px}.lesson .badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;background:#e8f5f4;color:#1a8f7a}.lesson .badge.done{background:#1a8f7a;color:#fff}.progress-track{height:8px;background:#e8f5f4;border-radius:999px;overflow:hidden;margin-top:8px}.progress-fill{height:100%;background:linear-gradient(90deg,#1a8f7a,#2eaa8f);border-radius:999px;transition:width .4s}.quiz-option{width:100%;padding:14px;border-radius:14px;background:#fff;text-align:left;font-weight:600;color:#1e1e2e;border:2px solid #E8F5F4;margin-bottom:8px}.quiz-option.correct{background:linear-gradient(135deg,#1a8f7a,#2eaa8f);color:#fff;border-color:transparent}.quiz-option.wrong{background:#fee8e8;border-color:#e83e3e;color:#b82828}.section-title{font-size:13px;font-weight:700;color:#66798c;text-transform:uppercase;letter-spacing:.06em;margin:20px 4px 10px}.pet-preview{text-align:center;padding:20px 12px;background:linear-gradient(135deg,#1a8f7a14,#2eaa8f14);border-radius:20px;margin-bottom:16px}.pet-preview .emoji{font-size:72px;line-height:1}.pet-preview .name{font-size:22px;font-weight:800;color:#0d477a;margin-top:8px}.pet-preview .traits{font-size:13px;color:#66798c;margin-top:4px}.landing-hero{text-align:center;padding:32px 20px 24px}.landing-paw{font-size:80px;display:inline-block;filter:drop-shadow(0 4px 12px rgba(13,71,122,.15))}.landing-hero h1{font-size:42px;font-weight:900;background:linear-gradient(135deg,#0d477a,#1a8f7a);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin:8px 0 4px;letter-spacing:-.02em}.landing-hero .lead{font-size:16px;color:#1e1e2e;line-height:1.45;margin:8px auto 20px;max-width:320px;font-weight:500}.landing-cta{display:flex;flex-direction:column;gap:8px;max-width:280px;margin:0 auto}.landing-trust{font-size:11.5px;color:#66798c;margin-top:14px;font-weight:600;letter-spacing:.02em}.landing-section{padding:20px}.portrait-wrap{width:220px;height:220px;margin:0 auto 16px;border-radius:24px;overflow:hidden;background:linear-gradient(135deg,#e8f5f4,#f0e8fa);display:grid;place-items:center;box-shadow:0 8px 24px #0d477a1f}.portrait-wrap img{width:100%;height:100%;object-fit:cover}.portrait-wrap .placeholder{font-size:80px}.portrait-loading{width:32px;height:32px;border:3px solid rgba(26,143,122,.2);border-top-color:#1a8f7a;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.typing-bubble{display:inline-flex;gap:4px;padding:12px 16px;background:#fff;border-radius:18px;box-shadow:0 2px 8px #0d477a0f;align-self:flex-start}.typing-bubble span{width:8px;height:8px;border-radius:50%;background:#1a8f7a;animation:typing 1.2s infinite ease-in-out}.typing-bubble span:nth-child(2){animation-delay:.15s}.typing-bubble span:nth-child(3){animation-delay:.3s}@keyframes typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
