:root{--bg:#f5f0eb;--surface:#fff;--accent:#b088c8;--accent-strong:#8b5ea8;--text:#3a3a3a;--muted:#7a7a7a;--border:#e0d8d0;--success:#6aab73;--warning:#e8a87c;--danger:#d46868;--radius:12px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}.container{max-width:960px;margin:0 auto;padding:24px 16px}.header{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid var(--border);margin-bottom:32px}.header h1{font-size:20px;font-weight:700}.header nav{display:flex;gap:16px}.card{background:var(--surface);border-radius:var(--radius);padding:24px;box-shadow:0 1px 3px rgba(0,0,0,.05)}.card,.card h2{margin-bottom:16px}.card h2{font-size:18px}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:16px;gap:16px}.tab-row{display:flex;gap:0;margin-bottom:20px;border-bottom:2px solid var(--border)}.tab{flex:1 1;padding:10px 0;background:none;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.tab-active{color:var(--accent-strong);border-bottom-color:var(--accent-strong)}.login-page{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:16px}.login-card{background:var(--surface);border-radius:var(--radius);padding:40px 32px;width:100%;max-width:400px;box-shadow:0 2px 8px rgba(0,0,0,.08)}.login-card h1{font-size:24px;margin-bottom:4px}.login-card .subtitle{color:var(--muted);margin-bottom:24px;font-size:14px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:var(--muted)}.form-group input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:15px;background:var(--surface);color:var(--text)}.form-group input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(176,136,200,.2)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;border-radius:8px;font-size:15px;font-weight:600;border:none;cursor:pointer;text-decoration:none;transition:opacity .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-strong)}.btn-block{width:100%}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{padding:6px 12px;font-size:13px}.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:600}.badge-success{background:rgba(106,171,115,.15);color:var(--success)}.badge-warning{background:hsla(24,70%,70%,.15);color:var(--warning)}.progress-bar{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin:8px 0 4px}.progress-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .3s}.progress-fill.done{background:var(--success)}.achievement-card{padding:12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px}.achievement-card.unlocked{border-color:var(--success);background:rgba(106,171,115,.04)}.achievement-card .ach-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.achievement-card .ach-head strong{font-size:14px}.achievement-card .ach-cat{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.achievement-card .ach-progress{font-size:12px;color:var(--muted);margin-top:4px}.checkin-bars{display:flex;gap:6px;align-items:flex-end;height:80px}.checkin-bar{flex:1 1;background:var(--accent);border-radius:3px 3px 0 0;opacity:.6;min-height:4px}.checkin-bar.filled{opacity:1}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:12px;gap:12px}.stat{text-align:center}.stat .value{font-size:24px;font-weight:700;color:var(--accent-strong)}.stat .label{font-size:12px;color:var(--muted);margin-top:2px}.alert{padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:14px}.alert-error{background:hsla(0,56%,62%,.1);color:var(--danger);border:1px solid hsla(0,56%,62%,.3)}.muted{color:var(--muted);font-size:14px}.spacer{height:8px}.loading{text-align:center;padding:40px 0;color:var(--muted)}.apk-download{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--accent);color:#fff;border-radius:8px;text-decoration:none;font-weight:600;font-size:14px}.apk-download:hover{background:var(--accent-strong)}