@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@600;700;800;900&display=swap');:root{--navy:#10275d;--blue:#1667e8;--sky:#66d8ff;--lime:#b8f238;--green:#2dcc63;--red:#f35c72;--muted:#7180a2;--bg:#f5f9ff}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(145deg,#dff7ff,#fff4d9);font-family:Nunito,system-ui,sans-serif;color:var(--navy);display:grid;place-items:center}button{font:inherit}.app{width:min(430px,100vw);min-height:100dvh;background:var(--bg);position:relative;overflow:hidden;padding-bottom:92px;box-shadow:0 20px 80px #1c5c9c22}.hero{height:252px;padding:20px 20px 0;background:linear-gradient(145deg,#5bd3ff,#a5ebff 64%,#dcf9ff);position:relative;overflow:hidden}.orb{position:absolute;border-radius:50%;background:#fff5}.o1{width:180px;height:180px;right:-75px;top:-75px}.o2{width:110px;height:110px;left:-55px;bottom:-25px}.top,.brand,.welcome,.session,.attendance,.confirmed,.stats button,.section-title,.message{display:flex;align-items:center}.top{justify-content:space-between;position:relative;z-index:2}.brand{gap:9px}.logo{width:38px;height:38px;border-radius:13px;background:var(--navy);color:var(--lime);display:grid;place-items:center;font-size:23px;font-weight:900;transform:rotate(-5deg);box-shadow:4px 5px 0 #ffffffaa}.brand b{display:block;font-size:22px;line-height:18px;letter-spacing:-1px}.brand small{font-size:8px;letter-spacing:1.4px;font-weight:900}.icon-btn{width:42px;height:42px;border:0;border-radius:14px;background:#fff;color:var(--navy);position:relative;box-shadow:0 7px 20px #276da922}.icon-btn i,nav i{position:absolute;background:#ff4964;color:#fff;font-style:normal;font-size:10px;font-weight:900;border-radius:20px;min-width:17px;height:17px;display:grid;place-items:center}.icon-btn i{right:-3px;top:-4px}.welcome{justify-content:space-between;margin-top:29px;position:relative;z-index:2}.pill{display:inline-block;background:#ffffffa8;color:#2460aa;border-radius:20px;padding:5px 9px;font-size:9px;font-weight:900;letter-spacing:.7px}.welcome h1{margin:7px 0 1px;font-size:31px;line-height:1;letter-spacing:-1.3px}.welcome p{margin:6px 0;font-size:13px;font-weight:800;color:#315c8d}.hero-art{width:112px;height:105px;position:relative}.kid{font-size:64px;position:absolute;right:21px;top:8px;filter:drop-shadow(0 8px 5px #1974a322);animation:bob 3s ease-in-out infinite}.racket{position:absolute;right:-5px;bottom:0;width:48px;height:62px;border:6px solid #155ac7;border-radius:50%;transform:rotate(30deg);color:transparent}.racket span{position:absolute;width:7px;height:38px;background:#155ac7;left:16px;bottom:-32px;border-radius:8px}.ball{position:absolute;left:2px;bottom:7px;width:24px;height:24px;background:var(--lime);border-radius:50%;color:transparent;box-shadow:inset -5px -4px #7fbc1b;animation:ballBounce 2.2s ease-in-out infinite}.content{padding:0 17px;margin-top:-35px;position:relative;z-index:3}.training-card{background:#fff;border-radius:26px;padding:17px;box-shadow:0 16px 38px #245d9c1a;border:1px solid #dfeeff}.card-head{display:flex;justify-content:space-between;align-items:center}.kicker{font-size:10px;font-weight:900;letter-spacing:1.1px;color:#5572a1}.group{background:#e8f5ff;color:#1461ca;border-radius:20px;padding:5px 9px;font-size:10px;font-weight:900}.session{justify-content:space-between;margin:13px 0 8px}.today{font-size:12px;font-weight:900;color:var(--blue)}.session h2{margin:0;font-size:24px;letter-spacing:-.7px}.session h2 span{color:#9ab0cd}.session p{font-size:12px;color:var(--muted);font-weight:700;margin:4px 0}.calendar{width:57px;padding:7px;border-radius:17px;background:#f0f8ff;text-align:center;box-shadow:inset 0 0 0 1px #e0effc}.calendar small,.calendar em{display:block;font-size:8px;font-style:normal;font-weight:900;color:#6d85aa}.calendar b{font-size:23px;line-height:23px}.question{font-size:12px;font-weight:900;margin:11px 0 7px}.attendance{gap:9px}.attendance button{flex:1;border:0;border-radius:15px;padding:12px 6px;font-weight:900;font-size:13px;transition:.18s transform}.attendance button:active{transform:scale(.96)}.yes{background:linear-gradient(180deg,#45df70,#24be55);color:#fff;box-shadow:0 8px 18px #24be5535}.no{background:#fff0f3;color:#e94d68}.attendance span{font-size:17px}.confirmed{display:none;gap:10px;padding:10px 12px;border-radius:16px;background:#ecfff2}.confirmed.show{display:flex;animation:pop .35s}.badge{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:#fff;font-weight:900}.confirmed b,.confirmed small{display:block}.confirmed small{font-size:10px;color:#548066}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:11px}.stats button{border:0;background:#fff;border-radius:20px;padding:12px 10px;gap:8px;text-align:left;color:var(--navy);box-shadow:0 8px 25px #245d9c12}.bubble{width:36px;height:36px;border-radius:13px;display:grid;place-items:center;font-size:20px}.tennis{background:#edffd1}.fire{background:#fff0dc}.stats strong{font-size:18px;line-height:15px}.stats b,.stats small{display:block;font-size:10px}.stats small{color:var(--muted)}.stats em{margin-left:auto;font-size:21px;font-style:normal}.challenge{margin-top:11px;background:linear-gradient(120deg,#143a89,#176ce7);border-radius:21px;padding:14px 15px;color:#fff;position:relative;overflow:hidden}.challenge:after{content:'★';position:absolute;font-size:90px;color:#ffffff10;right:-7px;top:-23px;transform:rotate(15deg)}.challenge .kicker{color:#aeeaff}.challenge h3{margin:2px 0 8px;font-size:16px}.score{position:absolute;right:15px;top:15px;background:var(--lime);color:#315500;border-radius:20px;padding:4px 9px;font-weight:900;font-size:11px}.track{height:7px;background:#ffffff2c;border-radius:10px;overflow:hidden}.track i{display:block;width:80%;height:100%;background:var(--lime);border-radius:10px}.challenge p{font-size:10px;margin:7px 0 0;color:#d8ebff;font-weight:700}.messages{margin-top:17px}.section-title{justify-content:space-between}.section-title h3{font-size:15px;margin:0 0 8px}.section-title button{border:0;background:none;color:var(--blue);font-size:10px;font-weight:900}.message{background:#fff;border-radius:18px;padding:11px;gap:9px;box-shadow:0 8px 22px #245d9c10}.avatar{width:38px;height:38px;border-radius:13px;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:900}.message b{font-size:11px}.message p{font-size:10px;color:var(--muted);margin:2px 0}.message time{margin-left:auto;font-size:9px;color:#8d9ab2}nav{height:78px;position:absolute;bottom:0;left:0;right:0;background:#fff;display:flex;justify-content:space-around;align-items:center;border-top:1px solid #e6edf6;z-index:10;padding-bottom:env(safe-area-inset-bottom)}nav button{border:0;background:none;color:#8492ac;display:grid;place-items:center;gap:2px;position:relative}nav b{font-size:19px}nav span{font-size:8px;font-weight:900}.active{color:var(--blue)!important}.recover b{width:38px;height:38px;margin-top:-21px;border-radius:50%;display:grid;place-items:center;background:var(--lime);box-shadow:0 6px 16px #75a81344;font-size:20px}.recover span{margin-top:-4px}nav i{right:0;top:-5px}.celebration{display:none;position:absolute;inset:0;background:linear-gradient(165deg,#4fd1ff,#c7f4ff 55%,#f7fdff);z-index:30;overflow:hidden}.celebration.play{display:block}.speed{position:absolute;height:3px;background:#fff9;border-radius:5px;left:-30%;transform:rotate(-13deg)}.speed.s1{width:75%;top:35%}.speed.s2{width:55%;top:45%}.speed.s3{width:90%;top:57%}.fly-ball{position:absolute;font-size:58px;left:-80px;top:62%;animation:serve .95s cubic-bezier(.15,.75,.25,1) forwards}.star{position:absolute;color:#ffd43b;font-size:35px;opacity:0}.play .a{left:18%;top:28%;animation:star .55s .55s forwards}.play .b{right:18%;top:32%;animation:star .55s .68s forwards}.play .c{right:30%;top:19%;animation:star .55s .75s forwards}.result{position:absolute;left:0;right:0;top:56%;text-align:center;opacity:0;transform:scale(.75)}.play .result{animation:result .45s .78s forwards}.result span{margin:auto auto 10px;width:50px;height:50px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-size:27px;font-weight:900;box-shadow:0 8px 0 #20a54c}.result b,.result small{display:block}.result b{font-size:23px}.result small{color:#43719c;font-weight:900}.toast{position:absolute;z-index:25;left:20px;right:20px;bottom:95px;background:#152a5c;color:#fff;padding:12px 15px;border-radius:15px;text-align:center;font-size:11px;font-weight:800;transform:translateY(140px);transition:.35s}.toast.show{transform:translateY(0)}@keyframes serve{0%{left:-80px;top:65%;transform:rotate(0) scale(.6)}50%{left:44%;top:20%;transform:rotate(300deg) scale(1.15)}100%{left:120%;top:44%;transform:rotate(760deg) scale(.65)}}@keyframes star{50%{opacity:1;transform:scale(1.5) rotate(20deg)}100%{opacity:0;transform:scale(.7) rotate(50deg)}}@keyframes result{to{opacity:1;transform:scale(1)}}@keyframes pop{0%{transform:scale(.94);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes bob{50%{transform:translateY(-5px) rotate(2deg)}}@keyframes ballBounce{50%{transform:translateY(-10px) rotate(30deg)}}@media(min-width:600px){body{padding:28px}.app{min-height:860px;border-radius:38px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}