@import "https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700;900&family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400&display=swap";:root{--gold:gold;--purple:#c084fc;--green:#6bcb77;--bg-top:#1a1033;--bg-bottom:#0b1026;--glass:#ffffff12;--glass-border:#ffffff24;--text:#ece8f7;--text-dim:#b3abce}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{color:var(--text);background:linear-gradient(170deg, var(--bg-top) 0%, #241345 45%, var(--bg-bottom) 100%) fixed;font-family:DM Sans,sans-serif}#root{min-height:100vh}h1,h2,h3{margin:.2em 0;font-family:Cinzel Decorative,serif}h3{font-size:1.05rem}p{margin:.4em 0}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit}.shimmer{background:linear-gradient(90deg, var(--gold), #fff6c2, var(--purple), var(--gold));color:#0000;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:5s linear infinite shimmer}@keyframes shimmer{0%{background-position:0 0}to{background-position:300% 0}}.glass{background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);border-radius:18px;padding:16px;box-shadow:0 8px 28px #00000059}.glass-inner{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:14px;margin-top:10px;padding:12px}.floaters{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.floater{opacity:.18;animation:linear infinite floatUp;position:absolute;bottom:-60px}@keyframes floatUp{0%{opacity:0;transform:translateY(0)rotate(0)}10%{opacity:.22}90%{opacity:.15}to{opacity:0;transform:translateY(-115vh)rotate(25deg)}}.burst{z-index:50;pointer-events:none;position:fixed;top:40%;left:50%}.burst span{font-size:26px;animation:1s ease-out forwards burstOut;position:absolute}@keyframes burstOut{0%{transform:rotate(var(--angle)) translateX(0);opacity:1}to{transform:rotate(var(--angle)) translateX(130px);opacity:0}}.app{z-index:1;max-width:760px;margin:0 auto;padding:18px 14px 80px;position:relative}.header{text-align:center;margin-bottom:12px}.app-title{letter-spacing:2px;font-size:2.4rem;font-weight:900}.greeting{color:var(--text-dim);margin-top:-4px}.stats{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;display:flex}.stat{background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:5px 14px;font-weight:700}.tabs{-webkit-overflow-scrolling:touch;gap:6px;padding:4px 2px 10px;display:flex;overflow-x:auto}.tab-btn{background:var(--glass);border:1px solid var(--glass-border);color:var(--text-dim);border-radius:999px;flex-shrink:0;padding:8px 14px;font-size:.85rem;font-weight:700;transition:all .2s}.tab-btn.on{color:#1a1033;background:linear-gradient(135deg, var(--gold), #ffec8a);border-color:var(--gold)}.tab-body{flex-direction:column;gap:14px;display:flex}.section-head{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.section-sub{color:var(--text-dim);font-size:.78rem}.empty{color:var(--text-dim);font-size:.9rem;font-style:italic}.center{text-align:center}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wrap{flex-wrap:wrap}.btn-primary{background:linear-gradient(135deg, var(--gold), #ffb84d);color:#1a1033;border:none;border-radius:12px;padding:12px 22px;font-size:1rem;font-weight:700;transition:transform .15s;box-shadow:0 4px 18px #ffd70059}.btn-primary:hover{transform:translateY(-2px)}.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-secondary{color:var(--purple);border:1px solid var(--purple);background:#c084fc2e;border-radius:12px;padding:10px 16px;font-weight:700}.btn-ghost{color:var(--text-dim);background:0 0;border:none;padding:8px;text-decoration:underline}.btn-mini{background:var(--glass);border:1px solid var(--glass-border);color:var(--text);border-radius:8px;padding:5px 10px;font-size:.8rem;font-weight:600}.btn-mini.danger{color:#ff8a8a;border-color:#ff8a8a66}.btn-mini.gem{color:#7dd6ff;border-color:#7dd6ff80}.btn-checkin{background:linear-gradient(135deg, var(--green), #43a857);color:#fff;border:none;border-radius:16px;padding:18px 36px;font-size:1.25rem;font-weight:700;animation:2.2s ease-in-out infinite pulse;box-shadow:0 6px 24px #6bcb7773}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.checkin{text-align:center}.checkin.done{flex-direction:column;gap:4px;display:flex}.warn{color:#ffb84d;font-weight:700}.task{width:100%;color:var(--text);text-align:left;background:#ffffff0a;border:1px solid #ffffff17;border-radius:12px;align-items:center;gap:10px;margin-top:8px;padding:12px;font-size:.95rem;transition:all .2s;display:flex}.task:hover{border-color:var(--purple)}.task.done{opacity:.65}.task.done .task-name{text-decoration:line-through}.task-name{flex:1}.task-pts{color:var(--gold);font-size:.82rem;font-weight:700}.task-check{font-size:1.1rem}.rewards h3{margin-bottom:8px}.locked-menu{opacity:.75}.tier{margin-top:10px}.tier-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:6px;font-size:.75rem}.tier-items{flex-direction:column;gap:6px;display:flex}.reward-item{background:#ffffff0a;border:1px solid #ffffff17;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-weight:700;display:flex}.tier.locked .reward-item{opacity:.45;filter:grayscale(.7)}.reward-item.glow{border-color:var(--gold);box-shadow:0 0 16px #ffd7004d,inset 0 0 12px #ffd7000f}.reward-emoji{font-size:1.4rem}.reward-note{color:var(--text-dim);margin-left:auto;font-size:.72rem;font-weight:500}.event-row{background:#ffffff0a;border:1px solid #ffffff17;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;display:flex}.event-row.done{opacity:.65}.event-done{color:var(--green);font-size:.85rem;font-weight:700}.week-row{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.day-pill{background:var(--glass);border:1px solid var(--glass-border);color:var(--text-dim);border-radius:999px;padding:7px 13px;font-size:.82rem;font-weight:700}.day-pill.on{background:linear-gradient(135deg, var(--purple), #9c5bf5);border-color:var(--purple);color:#fff}.sched-row{background:#ffffff0a;border:1px solid #ffffff17;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;font-size:.92rem;display:flex}.badge-type{text-transform:uppercase;border-radius:6px;margin-left:8px;padding:2px 6px;font-size:.66rem;font-weight:800}.badge-type.mandatory{color:#ff9d9d;background:#ff636340}.badge-type.bonus{color:var(--gold);background:#ffd70033}.badge-type.daily{color:var(--green);background:#6bcb7733}.badge-pending{color:#ffb84d;margin-left:6px;font-size:.66rem}.copy-row{color:var(--text-dim);margin-top:14px;font-size:.85rem}.form{flex-direction:column;gap:8px;display:flex}.form input,.form select,.ob-input{border:1px solid var(--glass-border);color:var(--text);background:#ffffff12;border-radius:10px;outline:none;min-width:0;padding:10px 12px;font-size:.95rem}.form input:focus,.form select:focus,.ob-input:focus{border-color:var(--purple)}.form select option{background:var(--bg-top)}select{border:1px solid var(--glass-border);color:var(--text);background:#ffffff12;border-radius:10px;padding:7px 10px}select option{color:var(--text);background:#241345}.emoji-input{text-align:center;width:64px}.check-label{cursor:pointer;align-items:center;gap:7px;font-size:.9rem;display:flex}.check-label input{accent-color:var(--purple);width:17px;height:17px}.project-card{--proj-color:#c084fc}.project-head{width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:2px 0 8px;font-size:.97rem;font-weight:700;display:flex}.proj-dot{background:var(--proj-color);width:13px;height:13px;box-shadow:0 0 9px var(--proj-color);border-radius:50%;flex-shrink:0}.proj-count{color:var(--text-dim);font-size:.82rem;font-weight:600}.badge-status{text-transform:uppercase;border-radius:6px;padding:2px 7px;font-size:.66rem;font-weight:800}.badge-status.active{color:var(--green);background:#6bcb7738}.badge-status.paused{color:#ffb84d;background:#ffb84d33}.badge-status.completed{color:var(--purple);background:#c084fc38}.progress{background:#ffffff14;border-radius:999px;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--proj-color), var(--gold));border-radius:999px;height:100%;transition:width .4s}.proj-body{flex-direction:column;gap:7px;margin-top:10px;display:flex}.step .struck{opacity:.6;text-decoration:line-through}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:8px;display:grid}.badge-card{text-align:center;opacity:.45;filter:grayscale(.8);background:#ffffff0a;border:1px solid #ffffff17;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:14px 8px;display:flex}.badge-card.earned{opacity:1;filter:none;border-color:var(--gold);box-shadow:0 0 14px #ffd70040}.badge-emoji{font-size:1.9rem}.badge-desc{color:var(--text-dim);font-size:.72rem}.badge-state{color:var(--gold);letter-spacing:1px;font-size:.68rem;font-weight:800}.badge-card:not(.earned) .badge-state{color:var(--text-dim)}.rule{margin-top:12px}.rule b{color:var(--gold)}.rule p{color:var(--text-dim);margin-top:3px;font-size:.92rem}.onboarding{z-index:1;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative}.ob-card{text-align:center;width:100%;max-width:440px;padding:30px 24px}.ob-screen{flex-direction:column;align-items:center;gap:16px;display:flex}.ob-unicorn{font-size:5rem;animation:.8s bounceIn}.ob-burst-unicorn{animation:.8s bounceIn,1.6s ease-in-out .8s infinite pulse}@keyframes bounceIn{0%{transform:scale(0)}60%{transform:scale(1.25)}to{transform:scale(1)}}.ob-title{font-size:2.2rem;font-weight:900}.ob-sub{color:var(--text-dim)}.ob-input{text-align:center;width:100%;font-size:1.2rem}.ob-cal-options{flex-direction:column;gap:8px;width:100%;display:flex}.ob-cal-btn{border:1px solid var(--glass-border);color:var(--text);cursor:pointer;background:#ffffff12;border-radius:12px;padding:13px;font-size:.95rem;font-weight:700;text-decoration:none;display:block}.ob-cal-btn:hover{border-color:var(--purple)}.ob-rules{text-align:left;font-size:.92rem}.ob-agree{cursor:pointer;align-items:center;gap:8px;font-weight:700;display:flex}.ob-agree input{accent-color:var(--gold);width:19px;height:19px}.ob-dots{gap:7px;margin-top:16px;display:flex}.dot{background:#fff3;border-radius:50%;width:9px;height:9px}.dot.on{background:var(--gold)}@media (width<=540px){.app-title{font-size:1.8rem}.reward-note{width:100%;margin-left:34px}}
