:root{--color-primary: #FF6B35;--color-primary-light: #FFE8D6;--color-secondary: #6B9FFF;--color-secondary-light: #E0EAFF;--color-reward: #FFB800;--color-reward-light: #FFF6D6;--color-success: #4CAF50;--color-success-light: #E0F5E1;--color-warning: #FFB800;--color-wrong: #FF9800;--color-wrong-light: #FFF3E0;--bg-app: #FFF8F0;--bg-card: #FFFFFF;--bg-shadow: rgba(0, 0, 0, .08);--text-dark: #2D2D2D;--text-medium: #5A5A5A;--text-light: #999999;--sound-mm: #FF6B9D;--sound-mm-light: #FFE4F0;--sound-ah: #FF8C42;--sound-ah-light: #FFE8D6;--sound-oo: #6B9FFF;--sound-oo-light: #E0EAFF;--sound-ee: #4CAF50;--sound-ee-light: #E0F5E1;--sound-sh: #9C27B0;--sound-sh-light: #F0E0F8;--sound-s: #FFB800;--sound-s-light: #FFF6D6;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--radius-xl: 32px;--radius-full: 999px;--font-body: "Nunito", "Fredoka One", system-ui, sans-serif;--font-display: "Fredoka One", "Nunito", system-ui, sans-serif;--font-size-child: 28px;--font-size-teacher: 16px;--font-size-label: 24px;--touch-min: 64px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;overflow:auto}body{height:100%;min-height:480px;min-width:360px}@supports (height: 100dvh){html,body,#root{height:100dvh}}body{font-family:var(--font-body);background:var(--bg-app);color:var(--text-dark);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-top:var(--safe-top);padding-right:var(--safe-right);padding-bottom:var(--safe-bottom);padding-left:var(--safe-left)}#root{height:100%;min-height:480px;min-width:360px;display:flex;flex-direction:column}.app-container{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}.app-body{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.app-body>.screen{flex:1;height:auto;min-height:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:var(--touch-min);min-width:var(--touch-min);padding:var(--space-md) var(--space-xl);border:none;border-radius:var(--radius-lg);font-family:var(--font-body);font-weight:800;font-size:22px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;text-decoration:none}.btn:active{transform:scale(.95)}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 4px 16px #ff6b3566}.btn-primary:hover{box-shadow:0 6px 20px #ff6b3580}.btn-secondary{background:var(--color-secondary);color:#fff;box-shadow:0 4px 16px #6b9fff4d}.btn-success{background:var(--color-success);color:#fff;box-shadow:0 4px 16px #4caf504d}.btn-reward{background:var(--color-reward);color:#fff;box-shadow:0 4px 16px #ffb8004d}.btn-ghost{background:transparent;color:var(--text-medium);box-shadow:0 2px 8px var(--bg-shadow);border:2px solid rgba(0,0,0,.1)}.btn-large{font-size:28px;min-height:80px;padding:var(--space-lg) var(--space-2xl)}.btn-icon{padding:var(--space-md);border-radius:var(--radius-full);width:var(--touch-min);height:var(--touch-min);font-size:28px}.card{background:var(--bg-card);border-radius:var(--radius-xl);box-shadow:0 4px 20px var(--bg-shadow);padding:var(--space-lg)}.screen{display:flex;flex-direction:column;height:100%;overflow:hidden}.screen-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:#ffffffe6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid rgba(0,0,0,.06);gap:var(--space-md);flex-shrink:0}.screen-content{flex:1;overflow-y:auto;padding:var(--space-lg);-webkit-overflow-scrolling:touch}.text-child{font-size:var(--font-size-child);font-weight:800;line-height:1.3}.text-display{font-family:var(--font-display);font-size:48px;line-height:1.1}.text-huge{font-family:var(--font-display);font-size:72px;line-height:1}.text-teacher{font-size:var(--font-size-teacher)}@keyframes bounce{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}80%{transform:rotate(6deg)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes popIn{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}@keyframes starFly{0%{transform:translateY(0) scale(0);opacity:0}50%{transform:translateY(-80px) scale(1.5);opacity:1}to{transform:translateY(-160px) scale(.5);opacity:0}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes soundBarPlay{0%,to{transform:scaleY(.15);opacity:.5}50%{transform:scaleY(1);opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes avatarDance{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-20px) rotate(-10deg)}75%{transform:translateY(-10px) rotate(10deg)}}@keyframes floatBubble{0%,to{transform:translateY(0) translate(0)}33%{transform:translateY(-14px) translate(4px)}66%{transform:translateY(6px) translate(-3px)}}@keyframes floatBubble2{0%,to{transform:translate(0) translateY(0)}30%{transform:translate(12px) translateY(-9px)}70%{transform:translate(-9px) translateY(7px)}}@keyframes floatBubble3{0%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-18px) scale(1.04)}80%{transform:translateY(7px) scale(.97)}}@keyframes bigBubblePulse{0%,to{box-shadow:0 12px 60px #64a0ff40,inset 0 -12px 35px #ffffff47,inset 0 12px 22px #ffffff8c}50%{box-shadow:0 18px 80px #64a0ff61,inset 0 -12px 35px #ffffff52,inset 0 12px 22px #ffffffa6}}@keyframes bubblePop{0%{transform:scale(1);opacity:1}40%{transform:scale(1.55);opacity:.85}to{transform:scale(.05);opacity:0}}.animate-bounce{animation:bounce .6s ease}.animate-wobble{animation:wobble .5s ease}.animate-shake{animation:shake .4s ease}.animate-pop{animation:popIn .4s cubic-bezier(.175,.885,.32,1.275)}.animate-slide-up{animation:slideUp .3s ease}.animate-pulse{animation:pulse 1s ease infinite}.animate-dance{animation:avatarDance .8s ease infinite}@media (prefers-reduced-motion: reduce){.animate-bounce,.animate-wobble,.animate-shake,.animate-pop,.animate-slide-up{animation-duration:.001ms!important}.animate-pulse,.animate-dance{animation-iteration-count:1!important}}.sound-mm{background-color:var(--sound-mm)}.sound-ah{background-color:var(--sound-ah)}.sound-oo{background-color:var(--sound-oo)}.sound-ee{background-color:var(--sound-ee)}.sound-sh{background-color:var(--sound-sh)}.sound-s{background-color:var(--sound-s)}.sound-mm-text{color:var(--sound-mm)}.sound-ah-text{color:var(--sound-ah)}.sound-oo-text{color:var(--sound-oo)}.sound-ee-text{color:var(--sound-ee)}.sound-sh-text{color:var(--sound-sh)}.sound-s-text{color:var(--sound-s)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:#00000073}.modal-card{width:100%;max-height:90vh;overflow:auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 12px 40px #00000040}.btn-danger{background:#c62828;color:#fff}input,select,textarea{font-family:var(--font-body);font-size:var(--font-size-teacher);padding:var(--space-sm) var(--space-md);border:2px solid rgba(0,0,0,.12);border-radius:var(--radius-md);background:#fff;color:var(--text-dark);min-height:44px;outline:none;transition:border-color .2s;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--color-primary)}label{font-weight:700;font-size:14px;color:var(--text-medium);display:block;margin-bottom:var(--space-xs)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-lg)}.modal{background:#fff;border-radius:var(--radius-xl);padding:var(--space-xl);max-width:480px;width:100%;box-shadow:0 20px 60px #0000004d}.pin-display{display:flex;gap:var(--space-sm);justify-content:center;margin:var(--space-md) 0}.pin-dot{width:20px;height:20px;border-radius:50%;background:#ddd;transition:background .2s}.pin-dot.filled{background:var(--color-primary)}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm);max-width:280px;margin:0 auto}.pin-key{aspect-ratio:1;font-size:28px;font-weight:800;border-radius:var(--radius-md);background:var(--bg-app);border:2px solid rgba(0,0,0,.08);cursor:pointer;transition:transform .1s,background .1s}.pin-key:active{transform:scale(.9);background:var(--color-primary-light)}.feedback-banner{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:var(--radius-xl);padding:var(--space-xl) var(--space-2xl);box-shadow:0 20px 60px #0003;text-align:center;z-index:500;animation:popIn .4s cubic-bezier(.175,.885,.32,1.275)}.feedback-correct{border:4px solid var(--color-success)}.feedback-wrong{border:4px solid var(--color-wrong)}.star-reward{position:fixed;font-size:64px;pointer-events:none;z-index:600;animation:starFly 1s ease forwards}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#00000026;border-radius:3px}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{align-items:center;justify-content:center}.screen-content.flex-center,.screen.flex-center{justify-content:flex-start}.screen-content.flex-center>:first-child,.screen.flex-center>:first-child{margin-top:auto}.screen-content.flex-center>:last-child,.screen.flex-center>:last-child{margin-bottom:auto}.screen-content.flex-center,.screen.flex-center{-ms-overflow-style:none;scrollbar-width:none}.screen-content.flex-center::-webkit-scrollbar,.screen.flex-center::-webkit-scrollbar{display:none}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.text-center{text-align:center}.w-full{width:100%}.mt-auto{margin-top:auto}@media (max-width: 480px){:root{--font-size-child: 18px;--font-size-label: 18px;--space-md: 12px;--space-lg: 16px}.text-display{font-size:32px}.text-huge{font-size:48px}.text-child{font-size:18px}.screen-header{padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.screen-content{padding:var(--space-md)}.btn{font-size:16px;padding:var(--space-sm) var(--space-md);min-height:48px;min-width:48px}.btn-large{font-size:18px;min-height:56px;padding:var(--space-md) var(--space-lg)}.modal{min-width:calc(100% - 24px);max-width:min(480px,95vw);padding:var(--space-lg)}.pin-pad{max-width:min(260px,90vw)}}@media (min-width: 481px) and (max-width: 768px){:root{--font-size-label: 22px;--space-lg: 20px}.text-display{font-size:40px}.text-huge{font-size:56px}.modal{min-width:calc(100% - 32px);max-width:min(480px,90vw)}}@media (min-width: 769px){:root{--space-lg: 28px;--space-xl: 40px}.text-display{font-size:48px}.text-huge{font-size:72px}.modal{min-width:480px}}@media (min-width: 1024px){:root{--font-size-child: 32px;--space-lg: 32px;--space-xl: 48px}.text-display{font-size:56px}.text-huge{font-size:80px}.screen-content{padding:var(--space-xl);max-width:1200px;margin:0 auto}}@media (min-width: 1440px){.screen-content{max-width:1400px}}.scrollbar-hidden{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hidden::-webkit-scrollbar{display:none}.tile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,3vw,20px);flex:1;min-height:0;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;align-content:start;padding:8px 8px 12px}@media (hover: none) and (pointer: coarse){.btn:active{transform:scale(.95)}.btn:hover{box-shadow:initial}}@media (max-height: 500px) and (orientation: landscape){.screen-header{padding:8px var(--space-lg)}.screen-content{padding:8px var(--space-md)}.btn{padding:6px var(--space-md);min-height:40px}}@media (max-width: 320px){.modal{padding:16px 12px}.btn{font-size:14px}}@media (max-width: 768px){input,select,textarea{font-size:16px}}:root{--u: max(min(1vw, 1vh, 10px), 4.2px);--fit-gap: calc(var(--u) * 2);--fit-pad: calc(var(--u) * 2)}@supports (height: 1dvh){:root{--u: max(min(1vw, 1dvh, 10px), 4.2px)}}.fit-stage{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--fit-gap);padding:var(--fit-pad);overflow:hidden}.fit-stage>*{min-height:0;max-width:100%}.fit-split{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;gap:var(--fit-gap);padding:var(--fit-pad);overflow:hidden}.fit-side{flex:0 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--fit-gap)}.fit-main{flex:1 1 0;min-height:0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--fit-gap)}@media (min-aspect-ratio: 5/4){.fit-split{flex-direction:row;align-items:stretch}.fit-side{flex:0 0 36%}}.fit-picture{width:min(100%,var(--fit-picture, 28dvh),calc(var(--u) * 42));aspect-ratio:1;flex:none;background:#fff;border:4px solid #E0D5C8;border-radius:20px;overflow:hidden;box-shadow:0 4px 16px #00000014}.fit-picture>img{width:100%;height:100%;object-fit:contain;display:block}@media (min-aspect-ratio: 5/4){.fit-picture{--fit-picture: 44dvh}}.fit-keyboard{width:100%;height:100%;max-width:calc(var(--u) * 110);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:calc(var(--u) * 1)}@media (min-aspect-ratio: 5/4){.fit-keyboard{grid-template-columns:repeat(6,minmax(0,1fr))}}.fit-key{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:0;padding:calc(var(--u) * .6);background:#fff;border:3px solid #E0D5C8;border-radius:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}.fit-key>img{flex:1 1 0;min-height:0;width:100%;object-fit:contain;display:block}.fit-key>span{flex:none;font-family:var(--font-display);font-size:clamp(14px,calc(var(--u) * 3),26px);color:#2d2d2d;line-height:1}.fit-key--hands{padding:calc(var(--u) * .3);gap:0}.fit-key--hands>span{font-size:clamp(9px,calc(var(--u) * 1.6),14px);color:#777}.menu{justify-content:flex-start}.menu>*{flex:none}.menu-title{margin:0;font-family:var(--font-display);font-size:clamp(22px,calc(var(--u) * 4.6),38px);text-align:center;color:#2d2d2d}.menu-groups{flex:1 1 0!important;min-height:0;width:100%;max-width:min(100%,calc(var(--u) * 140));display:grid;gap:var(--fit-gap);grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.menu-group{min-width:0;min-height:0;display:flex;flex-direction:column;gap:calc(var(--u) * 1);padding:calc(var(--u) * 1.6);border:2px solid #E8D9C4;border-radius:clamp(16px,3vw,24px);background:#fff9}.menu-group>h3{flex:none;margin:0;font-family:var(--font-display);font-size:clamp(15px,calc(var(--u) * 2.6),20px);font-weight:400;text-align:center;color:#8a6d3b}.menu-tiles{flex:1 1 0;min-height:0;display:flex;flex-direction:row;justify-content:center;align-items:stretch;gap:calc(var(--u) * 1.4)}.menu-tiles--two-lines{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));justify-items:center}.menu-tiles--two-lines .menu-tile{width:100%;max-width:calc(var(--u) * 38)}.menu-tile{flex:1 1 0;min-width:0;min-height:0;max-height:calc(var(--u) * 21);max-width:calc(var(--u) * 38);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:calc(var(--u) * 1);text-align:center;background:var(--tile-light);border:clamp(2px,.5vw,4px) solid var(--tile);border-radius:clamp(14px,2.4vw,22px);box-shadow:0 4px 12px color-mix(in srgb,var(--tile) 20%,transparent);cursor:pointer;transition:transform .15s;-webkit-tap-highlight-color:transparent}.menu-tile:hover:not(:disabled){transform:scale(1.03)}.menu-tile:disabled{background:#f3f3f3;border-color:#d0d0d0;box-shadow:none;cursor:not-allowed;opacity:.6}.menu-tile__icon{flex:none;font-size:clamp(28px,calc(var(--u) * 6),52px);line-height:1}.menu-tile__text{min-width:0;display:flex;flex-direction:column;gap:2px}.menu-tile__title{font-family:var(--font-display);font-size:clamp(16px,calc(var(--u) * 3),24px);color:#2d2d2d;line-height:1.15}.menu-tile__sub{font-size:clamp(11px,calc(var(--u) * 1.9),14px);color:#666;line-height:1.3}@media (max-height: 819px) and (min-width: 700px){.menu-tile{flex-direction:row;justify-content:flex-start;text-align:left;gap:calc(var(--u) * 1.4);padding:calc(var(--u) * 1) calc(var(--u) * 1.6);max-width:calc(var(--u) * 52)}}@media (max-height: 560px){.menu-tile__sub{display:none}}.spell-letters{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:calc(var(--u) * 1.2) calc(var(--u) * 2.4);max-width:100%}.spell-word{display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;gap:calc(var(--u) * .8)}.spell-slot{flex:none;width:clamp(24px,calc(var(--u) * 6.4),60px);height:clamp(32px,calc(var(--u) * 8.4),76px);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:clamp(20px,calc(var(--u) * 5),44px);color:#2d2d2d;background:#fff;border:3px solid #E0D5C8;border-radius:10px}.spell-slot--filled{background:#e8f5e9;border-color:#4caf50}.spell-slot--next{border-color:#9b6bff}@media (min-aspect-ratio: 5/4){.spell-slot{width:min(clamp(24px,calc(var(--u) * 6.4),60px),2.5vw)}}.spell-letters--hands{gap:calc(var(--u) * .8) calc(var(--u) * 2)}@keyframes lounge-rise{0%{transform:translateY(0)}to{transform:translateY(-135vh)}}@keyframes lounge-sway{0%,to{transform:translate(-8px)}50%{transform:translate(8px)}}@keyframes lounge-pop{0%{transform:scale(1);opacity:1}to{transform:scale(1.6);opacity:0}}.lounge-rise{animation-name:lounge-rise;animation-timing-function:linear;animation-fill-mode:forwards}.lounge-sway{animation:lounge-sway 2.4s ease-in-out infinite}.lounge-pop{animation:lounge-pop .3s ease-out forwards}@media print{@page{margin:14mm}html,body,#root{height:auto!important;min-height:0!important;overflow:visible!important;background:#fff!important}:has(.print-report){display:block!important;position:static!important;transform:none!important;height:auto!important;min-height:0!important;max-height:none!important;max-width:none!important;overflow:visible!important;padding:0!important;margin:0!important;border:none!important;box-shadow:none!important;background:#fff!important}:has(.print-report)>:not(:has(.print-report)):not(.print-report){display:none!important}.print-report{display:block!important;position:static!important;width:100%!important;max-width:none!important;border:none!important;border-radius:0!important;padding:0!important;box-shadow:none!important}.no-print{display:none!important}.print-report section{break-inside:avoid}.print-report h2,.print-report h3,.print-report h4{break-after:avoid}}
