:root{--pink: #E6007A;--pink-dark: #B80062;--pink-light: #FF3DA0;--pink-bg: #FFF0F7;--pink-grad: linear-gradient(135deg, #E6007A 0%, #A3005C 100%);--gold: #F5A623;--ink: #1A1023;--ink-2: #4A3D57;--ink-3: #8B7F99;--bg: #F7F5FA;--card: #FFFFFF;--line: #EEE8F4;--green: #12B76A;--red: #F04438;--orange: #F79009;--radius: 20px;--radius-sm: 14px;--shadow: 0 4px 24px rgba(26, 16, 35, .07);--shadow-lg: 0 12px 40px rgba(230, 0, 122, .16);--bronze: #B08D57;--silver: #8E9AAF;--gold-lvl: #E9A820;--diamond: #7B61FF}*{margin:0;padding:0;box-sizing:border-box}html,body{font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;width:100%}body{min-height:100vh;min-height:100dvh}#root{width:100%;max-width:100vw;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit}.page{width:100%;max-width:480px;margin:0 auto;padding:20px 16px calc(84px + env(safe-area-inset-bottom));animation:fadeUp .35s ease backwards}@media (min-width: 900px){.page{max-width:720px;padding-bottom:40px}}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes pulse-soft{0%,to{box-shadow:0 0 #e6007a59}50%{box-shadow:0 0 0 10px #e6007a00}}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.hero{background:var(--pink-grad);color:#fff;border-radius:var(--radius);padding:24px 20px;margin-bottom:16px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;top:-60px;right:-60px;width:180px;height:180px;border-radius:50%;background:#ffffff14}.hero:before{content:"";position:absolute;bottom:-80px;left:-40px;width:160px;height:160px;border-radius:50%;background:#ffffff0f}.progress-track{background:#ffffff40;border-radius:99px;height:10px;overflow:hidden}.progress-track.on-card{background:var(--pink-bg)}.progress-fill{height:100%;border-radius:99px;background:#fff;transition:width .8s cubic-bezier(.22,1,.36,1)}.progress-fill.pink{background:var(--pink-grad)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:99px;padding:13px 22px;font-size:15px;font-weight:700;transition:transform .12s ease,box-shadow .2s ease,opacity .2s;width:100%}.btn:active{transform:scale(.97)}.btn-primary{background:var(--pink-grad);color:#fff;box-shadow:0 6px 18px #e6007a4d}.btn-primary:disabled{background:#d9cfe3;color:#fff;box-shadow:none;cursor:not-allowed}.btn-ghost{background:var(--pink-bg);color:var(--pink)}.btn-white{background:#fff;color:var(--pink)}.btn-sm{padding:9px 16px;font-size:13px;width:auto}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}.field input{width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:13px 16px;font-size:16px;background:#fff;outline:none;transition:border-color .2s}.field input:focus{border-color:var(--pink)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;width:100%;background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 16px #1a10230f;display:flex;flex-wrap:nowrap;justify-content:space-around;align-items:flex-start;padding:8px 4px;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:50}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;font-weight:600;color:var(--ink-3);padding:4px 10px;border-radius:12px;transition:color .15s;position:relative}.bottom-nav a.active{color:var(--pink)}.bottom-nav a .nav-icon{font-size:21px;line-height:1}.nav-badge{position:absolute;top:0;right:2px;background:var(--red);color:#fff;font-size:9px;font-weight:800;border-radius:99px;min-width:15px;height:15px;display:flex;align-items:center;justify-content:center;padding:0 3px}.tag{display:inline-flex;align-items:center;gap:4px;border-radius:99px;padding:4px 10px;font-size:12px;font-weight:700}.tag-green{background:#e8f8f0;color:var(--green)}.tag-orange{background:#fef2e3;color:var(--orange)}.tag-red{background:#feecea;color:var(--red)}.tag-pink{background:var(--pink-bg);color:var(--pink)}.tag-gray{background:#f0edf5;color:var(--ink-3)}.tag-bronze{background:#f5ebdd;color:var(--bronze)}.tag-silver{background:#edf0f5;color:var(--silver)}.tag-gold{background:#fbf1d9;color:var(--gold-lvl)}.tag-diamond{background:#efebff;color:var(--diamond)}.row-item{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer}.row-item:last-child{border-bottom:none}.row-icon{width:44px;height:44px;border-radius:14px;background:var(--pink-bg);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.row-body{flex:1;min-width:0}.row-title{font-size:14px;font-weight:700}.row-sub{font-size:12px;color:var(--ink-3);margin-top:1px}.row-end{text-align:right;flex-shrink:0}.empty{text-align:center;padding:36px 20px}.empty .empty-art{font-size:56px;margin-bottom:12px;animation:pop .5s ease both}.empty .empty-title{font-weight:800;font-size:16px;margin-bottom:6px}.empty .empty-sub{font-size:13.5px;color:var(--ink-3);margin-bottom:18px}.modal-overlay{position:fixed;top:0;left:0;right:0;height:100vh;height:100dvh;background:#1a10238c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:fadeUp .2s ease both}@media (min-width: 900px){.modal-overlay{align-items:center}}.modal{background:#fff;border-radius:24px 24px 0 0;width:100%;max-width:480px;max-height:80vh;max-height:85dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:24px 20px;padding-bottom:calc(44px + env(safe-area-inset-bottom));animation:fadeUp .3s ease both}@media (min-width: 900px){.modal{border-radius:24px}}.modal-handle{width:44px;height:5px;background:var(--line);border-radius:99px;margin:-8px auto 16px}.skeleton{background:linear-gradient(90deg,#efeaf5 25%,#f8f5fc,#efeaf5 75%);background-size:800px 100%;animation:shimmer 1.4s infinite linear;border-radius:var(--radius-sm)}.prize-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media (min-width: 900px){.prize-grid{grid-template-columns:repeat(3,1fr)}}.prize-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:transform .15s ease}.prize-card:active{transform:scale(.98)}.prize-img{width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--pink-bg);display:flex;align-items:center;justify-content:center;font-size:40px}.prize-body{padding:12px 14px 14px;display:flex;flex-direction:column;flex:1;gap:4px}.prize-name{font-size:13.5px;font-weight:800;line-height:1.25}.prize-pts{color:var(--pink);font-weight:800;font-size:15px}.code-box{background:var(--pink-bg);border:2px dashed var(--pink);border-radius:var(--radius-sm);padding:14px;text-align:center;font-size:24px;font-weight:900;letter-spacing:3px;color:var(--pink);animation:pulse-soft 2s infinite}.page-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}.page-head h1{font-size:20px;font-weight:800;flex:1}.back-btn{width:38px;height:38px;border-radius:12px;background:#fff;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;font-size:18px}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;border-radius:99px;padding:12px 20px;font-size:14px;font-weight:600;z-index:200;box-shadow:var(--shadow-lg);animation:fadeUp .25s ease both;max-width:90vw;text-align:center}.toast.error{background:var(--red)}.toast.success{background:var(--green)}.ach-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ach{background:var(--card);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:14px 8px;text-align:center}.ach.locked{opacity:.45;filter:grayscale(1)}.ach .ach-icon{font-size:30px}.ach .ach-name{font-size:11px;font-weight:700;margin-top:6px;line-height:1.2}.ach .ach-pts{font-size:10px;color:var(--pink);font-weight:800;margin-top:2px}.level-row{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--radius-sm);border:2px solid var(--line);margin-bottom:10px}.level-row.current{border-color:var(--pink);background:var(--pink-bg)}.level-badge{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
