:root{--green: #5B6CF8;--green-dark: #4455E8;--green-light: #EEF0FE;--orange: #FF7043;--orange-light: #FFF0ED;--red: #EF4444;--blue: #38BDF8;--gray: #E8ECF4;--gray-dark: #A0AAB8;--text: #1A1A2E;--text-light: #6B7280;--bg: #F4F6FB;--white: #FFFFFF;--card-shadow: 0 2px 12px rgba(91, 108, 248, .08);--btn-shadow: 0 4px 0 rgba(0, 0, 0, .15);--radius: 18px;--radius-sm: 12px;--nav-height: 64px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}[data-theme=emerald]{--green: #10B981;--green-dark: #059669;--green-light: #D1FAE5;--card-shadow: 0 2px 12px rgba(16, 185, 129, .1)}[data-theme=emerald] body{background:linear-gradient(-45deg,#d1fae5,#ecfdf5,#f0fdf4,#dcfce7);background-size:400% 400%;animation:bgWave 14s ease infinite}[data-theme=sky]{--green: #0EA5E9;--green-dark: #0284C7;--green-light: #E0F2FE;--card-shadow: 0 2px 12px rgba(14, 165, 233, .1)}[data-theme=sky] body{background:linear-gradient(-45deg,#e0f2fe,#f0f9ff,#dbeafe,#e0f2fe);background-size:400% 400%;animation:bgWave 14s ease infinite}[data-theme=purple]{--green: #8B5CF6;--green-dark: #7C3AED;--green-light: #EDE9FE;--card-shadow: 0 2px 12px rgba(139, 92, 246, .1)}[data-theme=purple] body{background:linear-gradient(-45deg,#ede9fe,#fdf4ff,#f5f3ff,#ede9fe);background-size:400% 400%;animation:bgWave 14s ease infinite}[data-theme=rose]{--green: #F43F5E;--green-dark: #E11D48;--green-light: #FFE4E6;--card-shadow: 0 2px 12px rgba(244, 63, 94, .1)}[data-theme=rose] body{background:linear-gradient(-45deg,#ffe4e6,#fce7f3,#fff1f2,#fce7f3);background-size:400% 400%;animation:bgWave 14s ease infinite}[data-theme=dark]{--green: #818CF8;--green-dark: #6366F1;--green-light: #1E1B4B;--bg: #0F0F1A;--white: #1A1A2E;--text: #E2E8F0;--text-light: #94A3B8;--gray: #252540;--gray-dark: #4A4A68;--card-shadow: 0 2px 12px rgba(0, 0, 0, .5);--btn-shadow: 0 4px 0 rgba(0, 0, 0, .4)}[data-theme=dark] body{background:linear-gradient(-45deg,#1a1a2e,#16213e,#1a1a2e,#0f172a);background-size:400% 400%;animation:bgWave 14s ease infinite}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(-45deg,#e8eafe,#fce8e4,#e8f4fe,#f0e8fe);background-size:400% 400%;animation:bgWave 14s ease infinite;color:var(--text);max-width:480px;margin:0 auto;min-height:100vh;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{cursor:pointer;border:none;background:none;font-family:inherit}input{font-family:inherit}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.content{flex:1;overflow-y:auto;padding-top:var(--safe-top);padding-bottom:calc(var(--nav-height) + var(--safe-bottom) + 8px)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--white);border-top:2px solid var(--gray);display:flex;z-index:100}.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px;color:var(--gray-dark);transition:color .15s}.nav-btn.active{color:var(--green)}.nav-icon{font-size:22px;line-height:1}.nav-label{font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.auth-screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:max(32px,calc(var(--safe-top) + 16px)) 24px 32px;background:linear-gradient(160deg,#e8eafe,#f4f6fb 55%)}.auth-logo{font-size:64px;margin-bottom:8px;animation:bounce 2s ease-in-out infinite}.auth-title{font-size:28px;font-weight:900;color:var(--text);margin-bottom:4px;letter-spacing:-.5px}.auth-subtitle{font-size:15px;color:var(--text-light);margin-bottom:32px;text-align:center}.auth-card{width:100%;background:var(--white);border-radius:var(--radius);padding:28px 24px;box-shadow:var(--card-shadow)}.auth-tabs{display:flex;border-radius:var(--radius-sm);background:var(--gray);padding:3px;margin-bottom:24px}.auth-tab{flex:1;padding:8px;border-radius:8px;font-size:14px;font-weight:700;color:var(--text-light);transition:all .15s}.auth-tab.active{background:var(--white);color:var(--text);box-shadow:0 1px 4px #0000001a}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-label{font-size:13px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.05em}.form-input{width:100%;padding:14px 16px;border:2px solid var(--gray);border-radius:var(--radius-sm);font-size:16px;color:var(--text);background:var(--white);transition:border-color .15s;outline:none}.form-input:focus{border-color:var(--green)}.form-error{font-size:13px;color:var(--red);font-weight:600;margin-top:-8px;margin-bottom:8px}.btn-primary{width:100%;padding:16px;background:var(--green);color:#fff;font-size:16px;font-weight:800;border-radius:var(--radius-sm);box-shadow:var(--btn-shadow);transition:all .1s;letter-spacing:.02em}.btn-primary:active{transform:translateY(2px);box-shadow:0 2px #00000026}.btn-primary:disabled{opacity:.6;transform:none}.btn-secondary{width:100%;padding:14px;background:var(--white);color:var(--text-light);font-size:14px;font-weight:700;border-radius:var(--radius-sm);border:2px solid var(--gray);transition:all .1s}.btn-secondary:active{background:var(--gray)}.btn-danger{padding:8px 16px;background:transparent;color:var(--text-light);font-size:13px;font-weight:600;border-radius:var(--radius-sm);transition:color .15s}.btn-danger:hover{color:var(--red)}.dashboard{padding:20px 20px 0}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.dashboard-greeting{font-size:20px;font-weight:900;color:var(--text)}.dashboard-username{color:var(--green)}.streak-card{background:var(--white);border-radius:var(--radius);padding:28px 24px;box-shadow:var(--card-shadow);text-align:center;margin-bottom:16px;position:relative;overflow:hidden}.streak-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--orange),var(--green))}.streak-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text-light);margin-bottom:8px}.streak-display{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:4px}.streak-flame{font-size:52px;line-height:1;display:inline-block;animation:flame 2s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(255,100,0,.3))}.streak-flame.zero{filter:grayscale(1);animation:none;opacity:.4}.streak-number{font-size:72px;font-weight:900;color:var(--text);line-height:1;letter-spacing:-3px}.streak-unit{font-size:14px;color:var(--text-light);font-weight:700;margin-top:2px}.points-row{display:flex;gap:12px;margin-bottom:16px}.points-card{flex:1;background:var(--white);border-radius:var(--radius);padding:18px 16px;box-shadow:var(--card-shadow);text-align:center}.points-card-value{font-size:32px;font-weight:900;color:var(--text);line-height:1}.points-card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-light);margin-top:4px}.action-section{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.btn-log-chore{width:100%;padding:20px;background:var(--green);color:#fff;font-size:18px;font-weight:900;border-radius:var(--radius);box-shadow:0 5px 0 var(--green-dark);transition:all .1s;letter-spacing:.02em;position:relative;overflow:hidden}.btn-log-chore:active{transform:translateY(3px);box-shadow:0 2px 0 var(--green-dark)}.btn-log-chore:disabled{opacity:.5;transform:none;box-shadow:0 5px 0 var(--green-dark)}.btn-log-chore.excused{background:var(--gray);color:var(--gray-dark);box-shadow:0 5px #c8c8c8}.btn-log-chore .ripple{position:absolute;border-radius:50%;background:#fff6;transform:scale(0);animation:ripple .5s linear;pointer-events:none}.btn-moms-house{width:100%;padding:14px;border-radius:var(--radius);border:2px solid var(--gray);background:var(--white);font-size:15px;font-weight:700;color:var(--text-light);transition:all .15s;display:flex;align-items:center;justify-content:center;gap:8px}.btn-moms-house:hover{border-color:var(--gray-dark)}.btn-moms-house.active{border-color:var(--orange);color:var(--orange);background:var(--orange-light)}.excused-banner{background:var(--orange-light);border:2px solid var(--orange);border-radius:var(--radius);padding:16px 20px;margin-bottom:16px;display:flex;align-items:center;gap:12px}.excused-icon{font-size:28px}.excused-text{flex:1}.excused-title{font-weight:800;font-size:15px;color:var(--text)}.excused-sub{font-size:13px;color:var(--text-light);margin-top:2px}.timer-card{background:var(--white);border-radius:var(--radius);padding:24px 20px;box-shadow:var(--card-shadow);text-align:center;margin-bottom:16px;border:2px solid var(--green)}.timer-label{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--green);margin-bottom:12px}.btn-cancel-timer{margin-top:14px;padding:10px 24px;border-radius:var(--radius-sm);border:2px solid var(--gray);background:var(--white);color:var(--text-light);font-size:14px;font-weight:700;transition:all .15s}.btn-cancel-timer:hover{border-color:var(--red);color:var(--red)}.coupon-card{background:var(--white);border-radius:var(--radius);padding:20px;box-shadow:var(--card-shadow);margin-bottom:16px}.coupon-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.coupon-active{text-align:center;padding:16px 0 8px}.coupon-amount{font-size:56px;font-weight:900;color:var(--green);line-height:1;letter-spacing:-2px}.coupon-sub{font-size:14px;color:var(--text-light);margin-top:4px;margin-bottom:16px}.btn-payment-received{width:100%;padding:14px;background:var(--green);color:#fff;font-size:15px;font-weight:800;border-radius:var(--radius-sm);box-shadow:var(--btn-shadow);transition:all .1s}.btn-payment-received:active{transform:translateY(2px)}.btn-redeem{width:100%;margin-top:12px;padding:14px;background:linear-gradient(135deg,#ff7043,#e64a19);color:#fff;font-size:15px;font-weight:800;border-radius:var(--radius-sm);box-shadow:0 4px #bf360c;transition:all .1s}.btn-redeem:active{transform:translateY(2px);box-shadow:0 2px #bf360c}.btn-redeem:disabled{opacity:.6}@keyframes doneFlash{0%{background:var(--bg)}20%{background:#d4ffa0}to{background:var(--bg)}}.done-flash{animation:doneFlash 1.2s ease-out}.float-point{position:fixed;font-size:28px;font-weight:900;color:var(--green);pointer-events:none;z-index:999;animation:floatUp .8s ease-out forwards}.leaderboard{padding:20px}.leaderboard-header{font-size:22px;font-weight:900;margin-bottom:20px;color:var(--text)}.leaderboard-list{display:flex;flex-direction:column;gap:10px}.leaderboard-item{display:flex;align-items:center;gap:14px;background:var(--white);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--card-shadow);border:2px solid transparent;transition:border-color .15s}.leaderboard-item.me{border-color:var(--green);background:linear-gradient(135deg,#f0f1fe,#fff)}.leaderboard-rank{font-size:22px;width:32px;text-align:center;flex-shrink:0}.leaderboard-avatar{width:40px;height:40px;border-radius:50%;background:var(--green-light);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--green-dark);flex-shrink:0}.leaderboard-info{flex:1;min-width:0}.leaderboard-name{font-weight:800;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaderboard-you{font-size:11px;color:var(--green);font-weight:700;margin-left:6px}.leaderboard-pts{font-size:12px;color:var(--text-light);font-weight:600;margin-top:2px}.leaderboard-streak{display:flex;align-items:center;gap:4px;font-size:18px;font-weight:900;color:var(--text);flex-shrink:0}.leaderboard-streak span:last-child{font-size:22px}.loading{display:flex;align-items:center;justify-content:center;min-height:200px;font-size:32px;animation:spin 1s linear infinite}.skeleton{background:linear-gradient(90deg,var(--gray) 25%,#ececec 50%,var(--gray) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}@keyframes flame{0%,to{transform:scale(1) rotate(-3deg)}50%{transform:scale(1.08) rotate(3deg)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes floatUp{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-80px) scale(1.4)}}@keyframes ripple{to{transform:scale(4);opacity:0}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bgWave{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes pop{0%{transform:scale(.8);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}.pop{animation:pop .3s cubic-bezier(.34,1.56,.64,1) both}
