:root{--blue: #1b4fbf;--blue-2: #2740a8;--blue-dark: #163f99;--green: #2db54b;--green-dark: #249a3f;--white: #ffffff;--gray-bg: #e7edf6;--surface: #ffffff;--surface-tint: #f4f7fc;--text: #1c2b3a;--text-muted: #5b6b7c;--border: #d6dee9;--danger: #c0392b;--radius: 14px;--shadow: 0 1px 2px rgba(20, 35, 58, .06), 0 10px 24px rgba(20, 35, 58, .08);--shadow-sm: 0 1px 2px rgba(20, 35, 58, .08);--maxw: 760px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;color:var(--text);background:var(--gray-bg);background-image:linear-gradient(180deg,#dbe6f6,#e7edf6 340px,#e7edf6);background-attachment:fixed;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--blue)}.nav{position:sticky;top:0;z-index:20;background:linear-gradient(120deg,var(--blue) 0%,var(--blue-2) 100%);border-bottom:3px solid var(--green);box-shadow:0 6px 20px #14233a2e}.nav-inner{max-width:var(--maxw);margin:0 auto;padding:12px 16px;display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap}.nav-brand{display:inline-flex;align-items:center;background:var(--white);padding:6px 12px;border-radius:12px;box-shadow:var(--shadow-sm);text-decoration:none;margin-right:auto}.nav-links{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px}.nav a.nav-link,.nav button.nav-link{color:#ffffffd9;text-decoration:none;font-size:.95rem;padding:6px 4px;border-bottom:2px solid transparent}.nav a.nav-link:hover{color:#fff}.nav a.nav-link.active{color:#fff;font-weight:600;border-bottom-color:var(--green)}.nav a.nav-cta{background:var(--green);color:#fff;border-radius:999px;padding:6px 14px;font-weight:700}.nav-points{background:var(--green);color:var(--white);border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:800;box-shadow:var(--shadow-sm)}.app-shell{max-width:var(--maxw);margin:0 auto;padding:28px 16px 72px}.page-title{font-size:1.6rem;margin:8px 0 4px;padding-left:12px;border-left:5px solid var(--green)}.page-subtitle{color:var(--text-muted);margin:0 0 22px;padding-left:17px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.event-title{font-size:1.1rem;font-weight:700;color:var(--blue);margin:0 0 8px}.event-meta{color:var(--text-muted);font-size:.9rem;display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:10px}.event-desc{margin:0 0 14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:9px;padding:9px 16px;font-size:.95rem;font-weight:600;cursor:pointer;background:var(--blue);color:var(--white);box-shadow:var(--shadow-sm)}.btn:hover{background:var(--blue-dark)}.btn.btn-green{background:var(--green)}.btn.btn-green:hover{background:var(--green-dark)}.btn.btn-outline{background:transparent;color:var(--blue);border-color:var(--blue);box-shadow:none}.btn:disabled{opacity:.5;cursor:default}.pill{display:inline-block;font-size:.8rem;font-weight:700;border-radius:999px;padding:3px 10px;background:#2db54b24;color:var(--green-dark)}.field{display:block;margin-bottom:14px}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.field input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:9px;font-size:1rem;background:var(--surface-tint)}.field input:focus{outline:2px solid var(--blue);border-color:var(--blue);background:#fff}.pw-wrap{position:relative}.pw-wrap input{width:100%;padding:10px 64px 10px 12px;border:1px solid var(--border);border-radius:9px;font-size:1rem;background:var(--surface-tint)}.pw-wrap input:focus{outline:2px solid var(--blue);border-color:var(--blue);background:#fff}.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:none;color:var(--blue);font-size:.85rem;font-weight:600;cursor:pointer;padding:4px 8px}.form-card{max-width:440px;margin:48px auto}.error-text{color:var(--danger);font-size:.9rem;margin:0 0 12px}.muted{color:var(--text-muted)}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.badge{border:1px solid var(--border);border-radius:var(--radius);padding:14px;text-align:center;background:var(--surface-tint);opacity:.55}.badge.earned{opacity:1;background:linear-gradient(180deg,#fff,#f2fbf4);border-color:var(--green)}.badge-dot{width:36px;height:36px;border-radius:50%;margin:0 auto 8px;background:var(--border)}.badge.earned .badge-dot{background:var(--green)}.badge-name{font-weight:700;font-size:.9rem}.badge-desc{font-size:.78rem;color:var(--text-muted);margin-top:4px}.progress{height:12px;background:#dbe3ee;border-radius:999px;overflow:hidden;margin:8px 0}.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--green),#46c862)}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.stat{flex:1 1 120px;background:linear-gradient(180deg,#ffffff,var(--surface-tint));border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm)}.stat .n{font-size:1.7rem;font-weight:800;color:var(--blue)}.stat .l{font-size:.82rem;color:var(--text-muted)}.center{text-align:center}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.reward-cost{font-size:1.3rem;font-weight:800;color:var(--green-dark)}table.board{width:100%;border-collapse:collapse;font-size:.95rem}table.board th,table.board td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}table.board th{color:var(--text-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}table.board tr.me{background:#2db54b1f}.rank{font-weight:800;color:var(--blue)}.qr-wrap{margin-top:12px;padding:12px;background:var(--white);border:1px solid var(--border);border-radius:var(--radius);max-width:220px}.qr-wrap img{width:100%;display:block}.task{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.task:last-child{border-bottom:none}.task input{width:18px;height:18px;accent-color:var(--green)}.task.done label{color:var(--text-muted);text-decoration:line-through}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.banner{background:linear-gradient(180deg,#f2fbf4,#e7f7ec);border:1px solid var(--green);color:var(--green-dark);border-radius:var(--radius);padding:12px 14px;margin-bottom:14px;font-weight:600}.app-footer{background:linear-gradient(120deg,var(--blue) 0%,var(--blue-2) 100%);color:#ffffffe6;text-align:center;padding:22px 16px;font-size:.88rem}
