:root{--bg1: #0a0720;--bg2: #1b1042;--cyan: #38e1ff;--green: #7dff9a;--amber: #ffc857;--pink: #ff6b9d;--purple: #b388ff;--text: #f6f3ff;--muted: #a9a3d1;--glass: rgba(255, 255, 255, .08);--glass-border: rgba(255, 255, 255, .16);--font: "Fredoka", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:linear-gradient(160deg,var(--bg1),var(--bg2));color:var(--text);font-family:var(--font);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#app{position:relative;z-index:1;height:100%}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.bg i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;animation:drift 14s ease-in-out infinite}.bg i:nth-child(1){width:46vmax;height:46vmax;left:-12vmax;top:-14vmax;background:#5b2bd6}.bg i:nth-child(2){width:38vmax;height:38vmax;right:-10vmax;top:8vmax;background:#0aa5c8;animation-delay:-5s;animation-duration:18s}.bg i:nth-child(3){width:34vmax;height:34vmax;left:20vmax;bottom:-18vmax;background:#c2287a;animation-delay:-9s;animation-duration:16s}@keyframes drift{0%,to{transform:translate(0) scale(1)}50%{transform:translate(6vmax,-4vmax) scale(1.15)}}button{font:inherit;color:inherit;cursor:pointer;border:0;border-radius:18px;transition:transform .18s cubic-bezier(.2,1.4,.4,1),box-shadow .2s,background .2s}button:active{transform:scale(.95)!important}button.ghost{background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:12px 22px;font-size:1.1rem;font-weight:500}button.ghost:hover{background:#ffffff29;transform:translateY(-2px)}button.primary{background:linear-gradient(135deg,var(--cyan),var(--purple));color:#0a0720;padding:16px 34px;font-size:1.5rem;font-weight:700;margin-top:24px;box-shadow:0 10px 30px #38e1ff59}button.primary:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 14px 38px #b388ff80}button.primary.small{padding:10px 26px;font-size:1.2rem;margin-top:0}@keyframes rise{0%{opacity:0;transform:translateY(28px) scale(.94)}to{opacity:1;transform:none}}.home>*{animation:rise .55s cubic-bezier(.2,1.2,.4,1) both}.home>*:nth-child(2){animation-delay:.08s}.home>*:nth-child(3){animation-delay:.16s}.home>*:nth-child(4){animation-delay:.24s}.home{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:16px;text-align:center;overflow-y:auto}.home h1{font-size:clamp(2.6rem,8vw,5.4rem);margin:0;font-weight:700;letter-spacing:1px;background:linear-gradient(90deg,var(--cyan),var(--purple),var(--pink),var(--amber),var(--cyan));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rise .55s cubic-bezier(.2,1.2,.4,1) both,shimmer 7s linear infinite}@keyframes shimmer{to{background-position:300% 0}}.sub{color:var(--muted);font-size:1.3rem;margin:0}.tiles{display:flex;gap:26px;flex-wrap:wrap;justify-content:center}.tile{background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:38px 54px;min-width:280px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 16px 40px #0000004d;animation:rise .6s calc(.15s + var(--i, 0) * .1s) cubic-bezier(.2,1.2,.4,1) both}.tile:hover,.tile:focus-visible{transform:translateY(-8px) rotate(-1.5deg) scale(1.05);border-color:var(--cyan);box-shadow:0 22px 50px #38e1ff59}.tile .icon{font-size:4.6rem;line-height:1;animation:bob 2.4s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-12px) rotate(6deg)}}.tile .tname{font-size:2.4rem;font-weight:700}.tile .tdesc{color:var(--muted);font-size:1.1rem}.people{display:flex;gap:22px;flex-wrap:wrap;justify-content:center}.person{background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:26px 40px;min-width:230px;display:flex;flex-direction:column;align-items:center;gap:8px;box-shadow:0 14px 34px #00000047;animation:rise .55s calc(.1s + var(--i, 0) * .1s) cubic-bezier(.2,1.2,.4,1) both}.person:hover,.person:focus-visible{transform:translateY(-7px) scale(1.05);border-color:var(--cyan);box-shadow:0 20px 44px #38e1ff4d}.avatar{width:92px;height:92px;border-radius:50%;display:grid;place-items:center;font-size:2.8rem;font-weight:700;color:#fff;background:linear-gradient(135deg,hsl(var(--h, 200) 90% 62%),hsl(calc(var(--h, 200) + 50) 90% 52%));box-shadow:0 8px 24px hsl(var(--h, 200) 90% 50% / .5),inset 0 -6px 12px #0000002e;transition:transform .3s cubic-bezier(.2,1.6,.4,1)}.person:hover .avatar{transform:scale(1.12) rotate(-6deg)}.person .name{font-size:2.2rem;font-weight:700}.person .status{color:var(--amber);font-size:1.1rem;background:#ffc8571f;padding:4px 14px;border-radius:999px}.person .status.ok{color:var(--green);background:#7dff9a24}.streak{font-size:1.15rem;min-height:1.4em}.person .streak:not(:empty){animation:flicker 1.6s ease-in-out infinite}@keyframes flicker{0%,to{transform:scale(1)}50%{transform:scale(1.1) rotate(-2deg)}}.pwrap{position:relative;display:flex;animation:rise .55s calc(.1s + var(--i, 0) * .1s) cubic-bezier(.2,1.2,.4,1) both}.pwrap .person{animation:none;width:100%}.pencil{position:absolute;top:10px;right:10px;width:42px;height:42px;padding:0;border-radius:50%;font-size:1.1rem;background:var(--glass);border:1.5px solid var(--glass-border);opacity:.55;z-index:2}.pwrap:hover .pencil,.pencil:focus-visible{opacity:1}.pencil:hover{transform:rotate(-12deg) scale(1.12);background:#fff3}button.danger{color:#ff9bb4;font-size:.95rem;padding:8px 16px}.person.add{border-style:dashed;justify-content:center}.person.add .name{color:var(--cyan);font-size:3.4rem;line-height:1;transition:transform .3s cubic-bezier(.2,1.6,.4,1)}.person.add:hover .name{transform:rotate(90deg) scale(1.2)}.person.add .status{color:var(--muted);background:transparent}.add-form{align-items:center;justify-content:center}.person .meta,.meta{font-size:.8rem;opacity:.75}.tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:6px 0 14px}.tab{font:inherit;padding:8px 16px;border-radius:999px;border:2px solid rgba(255,255,255,.2);background:transparent;color:var(--text);cursor:pointer}.tab.on{background:var(--cyan);color:#0a0720;border-color:var(--cyan)}.panel{background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:20px;padding:16px;margin:12px auto;max-width:560px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form{display:flex;flex-direction:column;gap:10px}.form input,.form select{font:inherit;font-size:1.05rem;padding:10px 14px;border-radius:14px;border:2px solid rgba(255,255,255,.25);background:#0a0720b3;color:var(--text);outline:none;-webkit-user-select:text;user-select:text}.form input:focus,.form select:focus{border-color:var(--cyan)}.fam-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:14px;max-width:980px;margin:0 auto}.fam-card{background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:20px;padding:14px;text-align:left;display:flex;flex-direction:column;gap:10px}.fam-head{display:flex;align-items:center;gap:10px}.fam-name{display:flex;flex-direction:column;flex:1;min-width:0}.avatar.small{width:44px;height:44px;font-size:1.4rem;flex:none}.fam-stats{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.95rem}.fam-actions{display:flex;gap:8px;flex-wrap:wrap}.dev{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0}.invite{display:flex;flex-direction:column;align-items:center;gap:8px}.invite img{background:#fff;border-radius:12px;padding:6px}.code{font-size:2rem;letter-spacing:.15em;font-weight:700;color:var(--cyan)}.notice{color:#ffd166}.health{text-align:left;border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:8px 12px;width:100%}.health summary{cursor:pointer;font-size:1rem}.health label{display:flex;flex-direction:column;gap:4px;margin:8px 0;font-size:.95rem}.health .check{flex-direction:row;align-items:center;gap:8px;margin:4px 0}.health .check input{width:auto;flex:none}.health input[type=text],.health input:not([type]),.health select{font-size:1rem;width:100%;box-sizing:border-box}.conds{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 12px}.blocked{font-size:1.3rem;line-height:1.5}.add-form input[type=number]{font-size:1.1rem;padding:8px 12px}.add-form select{font:inherit;font-size:1.1rem;width:100%;padding:8px 12px;border-radius:14px;border:2px solid rgba(255,255,255,.25);background:#0a0720b3;color:var(--text);text-align:center;outline:none}.add-form input{font:inherit;font-size:1.6rem;width:100%;padding:12px 14px;border-radius:14px;border:2px solid var(--cyan);background:#0a0720b3;color:var(--text);text-align:center;-webkit-user-select:text;user-select:text;outline:none;box-shadow:0 0 0 4px #38e1ff2e}.form-error{color:var(--amber);min-height:1.3em;font-size:1rem}.form-actions{display:flex;gap:10px;align-items:center}.nav-row{display:flex;gap:12px}.dash-row{width:min(680px,100%);background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:22px;padding:18px 22px;text-align:left;font-size:1.3rem}.cells{display:flex;gap:6px;margin-top:12px}.cell{flex:1;height:30px;border-radius:8px;background:#ffffff1a;animation:cellIn .4s calc(var(--i, 0) * 35ms + .3s) cubic-bezier(.2,1.6,.4,1) both}.cell.ok{background:linear-gradient(135deg,var(--green),var(--cyan));box-shadow:0 0 12px #7dff9a80}@keyframes cellIn{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:none}}.coach{position:relative;height:100%;display:flex;flex-direction:column;animation:fade .4s both}@keyframes fade{0%{opacity:0}to{opacity:1}}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 26px;font-size:1.4rem;color:var(--muted)}.topbar #who{color:var(--text);font-weight:700;background:var(--glass);border:1.5px solid var(--glass-border);padding:6px 18px;border-radius:999px}.topbar #progress{background:var(--glass);padding:6px 18px;border-radius:999px}.stage{flex:1;min-height:0;display:grid;grid-template-columns:1.1fr 1fr .7fr;gap:18px;padding:0 26px 26px}.demo-wrap,.cam-wrap{animation:rise .6s cubic-bezier(.2,1.2,.4,1) both}.demo-wrap{position:relative;background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:28px;min-height:0;display:flex;flex-direction:column;align-items:center;overflow:hidden;animation:rise .6s cubic-bezier(.2,1.2,.4,1) both,glowPulse 3.6s ease-in-out infinite}@keyframes glowPulse{0%,to{box-shadow:0 0 24px #38e1ff29}50%{box-shadow:0 0 56px #38e1ff6b}}.demo-wrap canvas{flex:1;min-height:0;width:100%;object-fit:contain}.cue{padding:12px 18px 20px;font-size:clamp(1rem,2.2vw,1.9rem);text-align:center}.count-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-width:0}.setlabel{font-size:clamp(1.2rem,3vw,2.4rem);color:var(--muted);background:var(--glass);padding:4px 22px;border-radius:999px}.count{font-size:clamp(5rem,18vw,16rem);font-weight:700;line-height:1;color:var(--cyan);text-shadow:0 0 40px rgba(56,225,255,.6);font-variant-numeric:tabular-nums}.count #reps{display:inline-block}.count .of{font-size:.4em;color:var(--muted);text-shadow:none}.pop{animation:pop .5s cubic-bezier(.2,1.8,.4,1)}@keyframes pop{0%{transform:scale(.5)}55%{transform:scale(1.35);color:var(--green)}to{transform:scale(1)}}.bar{width:80%;height:22px;background:#ffffff1f;border-radius:11px;overflow:hidden}#bar-fill{height:100%;width:0;border-radius:11px;background:repeating-linear-gradient(45deg,var(--green),var(--green) 12px,var(--cyan) 12px,var(--cyan) 24px);background-size:34px 34px;animation:stripes .8s linear infinite;box-shadow:0 0 16px #7dff9ab3;transition:width 80ms linear}@keyframes stripes{to{background-position:34px 0}}.msg{min-height:1.6em;font-size:clamp(1.6rem,4vw,3.2rem);font-weight:700;color:var(--green);text-align:center;text-shadow:0 0 24px rgba(125,255,154,.55)}.msg.warn{color:var(--amber);text-shadow:0 0 24px rgba(255,200,87,.5)}.msg.pop{animation:msgPop .45s cubic-bezier(.2,1.8,.4,1)}@keyframes msgPop{0%{transform:scale(.4) rotate(-6deg);opacity:0}to{transform:none;opacity:1}}.manual{display:flex;gap:10px;opacity:.55}.cam-wrap{position:relative;background:#000;border:3px solid var(--cyan);border-radius:28px;overflow:hidden;align-self:center;aspect-ratio:9 / 12;width:100%;max-height:100%;animation:rise .6s .1s cubic-bezier(.2,1.2,.4,1) both,ring 2.4s ease-in-out infinite}@keyframes ring{0%,to{box-shadow:0 0 #38e1ff73}50%{box-shadow:0 0 0 10px #38e1ff00}}.cam-wrap:after{content:"";position:absolute;top:14px;left:14px;width:14px;height:14px;border-radius:50%;background:#ff3b5c;box-shadow:0 0 10px #ff3b5c;animation:blink 1.2s ease-in-out infinite}@keyframes blink{50%{opacity:.25}}.cam-wrap video,.cam-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.talk{min-height:5.2rem;padding:0 26px 22px;display:flex;justify-content:center;align-items:center}.bubble{display:inline-flex;align-items:center;gap:14px;max-width:1100px;background:var(--glass);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:28px;padding:10px 26px 10px 12px;font-size:clamp(1.05rem,2.3vw,2rem);line-height:1.25;box-shadow:0 10px 30px #00000040;animation:bubbleIn .5s cubic-bezier(.2,1.5,.4,1);transition:opacity .7s}.bubble.out{opacity:0}.coach-av{flex:none;width:2.4em;height:2.4em;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--amber),var(--pink));box-shadow:0 0 18px #ffc85780;animation:bob 2.4s ease-in-out infinite}@keyframes bubbleIn{0%{opacity:0;transform:translateY(18px) scale(.9)}to{opacity:1;transform:none}}.cover-sub{font-size:.42em;font-weight:500;color:var(--muted);margin-top:18px;max-width:760px;margin-inline:auto;line-height:1.3}.debug{position:absolute;left:26px;bottom:4px;font:14px monospace;color:var(--amber);z-index:6}.cover{position:absolute;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;background:#0a0720c7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;text-align:center;padding:24px}.cover.show{display:flex}.cover-text{font-size:clamp(1.6rem,5vw,4rem);font-weight:700;max-width:900px;animation:msgPop .5s cubic-bezier(.2,1.6,.4,1)}.bignum{font-size:clamp(5rem,22vw,16rem);color:var(--cyan);line-height:1;margin-top:12px;text-shadow:0 0 50px rgba(56,225,255,.7);animation:tick 1s ease-out}@keyframes tick{0%{transform:scale(1.5);opacity:.3}40%{transform:scale(1);opacity:1}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;overflow:hidden}.confetti i{position:absolute;top:-6vh;left:var(--x);border-radius:2px;animation:fall var(--d) var(--delay) cubic-bezier(.3,.6,.5,1) both}@keyframes fall{to{transform:translate(var(--dx),112vh) rotate(var(--r))}}@media (max-width: 820px) and (orientation: portrait){.topbar{font-size:1rem;padding:10px 16px;gap:8px}.topbar #who,.topbar #progress{white-space:nowrap;padding:4px 12px}.stage{grid-template-columns:1fr;grid-template-rows:minmax(0,1.3fr) minmax(0,1fr) minmax(0,.8fr);gap:10px;padding:0 16px 12px}.cam-wrap{aspect-ratio:auto;height:100%}.count{font-size:clamp(3.5rem,16vw,7rem)}.count-wrap{gap:8px}.setlabel{font-size:1.1rem}.msg{font-size:1.4rem}.cue{font-size:1rem;padding:6px 12px 10px}.talk{min-height:4.4rem;padding:0 16px 14px}.bubble{font-size:1rem;padding:8px 18px 8px 10px}.tile{min-width:220px;padding:28px 34px}.person{min-width:190px;padding:20px 28px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.review{text-align:left;border-top:1px solid rgba(255,255,255,.15);padding:10px 0;display:flex;flex-direction:column;gap:6px}.review:first-of-type{border-top:none}.reviews{max-width:760px}.pwrap{position:relative}.notes-btn{position:absolute;right:10px;bottom:10px;width:38px;height:38px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);background:#0a072099;font-size:1.1rem;cursor:pointer}.feel{display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:14px}.feel .cover-sub{width:100%}.chip{font-size:.85rem;padding:4px 10px;border-radius:999px;background:#ffffff1f}.chip.on{background:#7dff9a40;color:#7dff9a}.chip:empty{display:none}.tv{min-height:100vh;display:flex;flex-direction:column;padding:2.5vh 3vw;box-sizing:border-box}.tv-center{align-items:center;justify-content:center;text-align:center;gap:2vh}.tv h1{font-size:clamp(3rem,7vw,7rem);margin:0}.tv-sub{font-size:clamp(1.4rem,2.6vw,2.8rem);opacity:.9;margin:0}.tv-sound{font-size:clamp(1.4rem,2.4vw,2.4rem);margin-top:3vh}.tv-pair{flex-direction:row;align-items:center;justify-content:center;gap:5vw}.tv-pair-text{display:flex;flex-direction:column;gap:2vh}.tv-steps{font-size:clamp(1.3rem,2.4vw,2.6rem);line-height:1.5;padding-left:1.4em;margin:0}.tv-code{font-size:clamp(3.5rem,8vw,9rem);font-weight:700;letter-spacing:.12em;color:var(--cyan)}.tv-qr{width:clamp(220px,24vw,460px);height:auto;background:#fff;border-radius:16px;padding:10px}.tv-top{display:flex;justify-content:space-between;font-size:clamp(1.4rem,2.6vw,2.8rem);opacity:.9}.tv-stage{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:3vw;align-items:center;min-height:0}.tv-demo{height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;gap:1vh}.tv-demo canvas{height:62vh;width:auto;max-width:100%}.tv-cue{font-size:clamp(1.2rem,2.2vw,2.4rem);text-align:center;opacity:.9}.tv-count{display:flex;flex-direction:column;align-items:center;gap:2vh}.tv-set{font-size:clamp(1.6rem,3vw,3.2rem);opacity:.9}.tv-reps{font-size:clamp(7rem,20vw,22rem);font-weight:700;line-height:1;color:var(--cyan)}.tv-reps .of{font-size:.4em;opacity:.7}.tv-reps .pop{display:inline-block;animation:popnum .45s ease}@keyframes popnum{0%{transform:scale(1.5)}to{transform:scale(1)}}.tv-flash{min-height:1.4em;font-size:clamp(2rem,4vw,4.4rem);font-weight:700;color:#7dff9a}.tv-flash.warn{color:#ffd166}.tv-bubble{min-height:7vh;font-size:clamp(1.3rem,2.2vw,2.4rem);text-align:center;opacity:0;transition:opacity .4s;padding:1vh 2vw;background:#ffffff1a;border-radius:24px}.tv-bubble.show{opacity:1}.tv-cover{position:fixed;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;text-align:center;background:#0a0720e6;padding:4vw}.tv-cover.show{display:flex}.tv-cover-title{font-size:clamp(2.4rem,5vw,5.4rem);font-weight:700;margin-bottom:2vh}#tv-cover-text .bignum{font-size:clamp(8rem,22vw,24rem);font-weight:700;color:var(--cyan);line-height:1}@media (max-aspect-ratio: 1/1){.tv-pair{flex-direction:column}.tv-stage{grid-template-columns:1fr}}body.workout .bg{background:radial-gradient(circle at 12% 8%,rgba(91,43,214,.45),transparent 55%),radial-gradient(circle at 92% 25%,rgba(10,165,200,.35),transparent 50%),radial-gradient(circle at 40% 105%,rgba(194,40,122,.3),transparent 55%)}body.workout .bg i{display:none}body.workout *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}body.workout .demo-wrap,body.workout .cam-wrap,body.workout .cam-wrap:after,body.workout #bar-fill{animation:none!important}
