:root{--background:#f7f4ec;--surface:#ffffff;--surface-strong:#fff8df;--text:#1f2933;--muted:#667085;--line:#d9decf;--green:#276749;--green-soft:#d9f2df;--blue:#2f5f98;--gold:#b7791f;--red:#a43f3f;--shadow:0 14px 34px rgba(31,41,51,0.12)}*{box-sizing:border-box}html{background:var(--background);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body,html{min-height:100%}body{margin:0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f7f2e8}.login-panel{width:min(720px,100%);grid-gap:22px;gap:22px}.login-brand-stack,.login-panel{display:grid;justify-items:center}.login-brand-stack{grid-gap:16px;gap:16px}.login-app-icon{width:clamp(92px,18vw,142px);aspect-ratio:1;display:block;border-radius:26%;box-shadow:0 18px 38px rgba(45,38,26,.16);transform:rotate(-5deg)}.login-logo{width:min(230px,62vw);height:auto;display:block}.login-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.login-card{display:grid;grid-gap:12px;gap:12px;width:min(520px,100%);padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.login-card h1,.login-card h2{margin:0;font-size:1.25rem}.login-copy{margin:0;color:var(--muted);font-weight:700}.family-login-highlight{display:inline-block;padding:3px 8px;border:1px solid rgba(47,95,152,.2);border-radius:8px;background:#ddf4ff;color:#1f4f7e;font-weight:900}.qr-countdown{margin:0;color:var(--blue);font-size:.9rem;font-weight:900}.login-card input,.login-card select,.nested-login-card,.qr-approval-login-card{width:100%}.login-qr-placeholder{min-height:132px;display:grid;place-items:center;grid-gap:8px;gap:8px;border:2px dashed rgba(45,38,26,.18);border-radius:8px;color:#777777;font-size:.82rem;font-weight:900;text-transform:uppercase}.login-qr-placeholder span{width:64px;height:64px;display:block;border-radius:6px;background:linear-gradient(90deg,#1f2933 12px,transparent 12px 20px,#1f2933 20px 32px,transparent 32px),linear-gradient(#1f2933 12px,transparent 12px 20px,#1f2933 20px 32px,transparent 32px);background-size:32px 32px;opacity:.22}.login-qr-card{display:grid;justify-items:center;grid-gap:10px;gap:10px;padding:14px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.58)}.login-qr-card code{width:100%;overflow-wrap:anywhere;color:var(--muted);font-size:.72rem;text-align:center}.login-qr-card span{color:var(--muted);font-size:.84rem;font-weight:800}.login-qr-surface{width:min(320px,100%);aspect-ratio:1;display:grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:8px;background:#ffffff;overflow:hidden}.login-qr-surface:disabled{cursor:default;opacity:1}.login-qr-surface:disabled:hover{transform:none;box-shadow:none}.login-qr-image{width:100%;height:auto;display:block}.login-qr-expired{width:min(320px,100%);aspect-ratio:1;border:2px dashed rgba(164,63,63,.32);color:var(--red);background:#fff8f8}.login-qr-expired svg{width:58px;height:58px;fill:currentColor}.login-member-grid{display:grid;grid-gap:8px;gap:8px}.login-member-button{justify-content:flex-start;width:100%;text-align:left}.active-login-member{border-color:#84d8ff;background:#ddf4ff;color:#1cb0f6}.login-error{margin:0;color:#9a2f2f;font-weight:700}.member-admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:center}@media (max-width:720px){.login-grid,.member-admin-row{grid-template-columns:1fr}}button{min-height:42px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font:inherit;font-weight:700;padding:0 14px}button:hover{border-color:var(--green)}button:disabled,button[aria-disabled=true]{cursor:not-allowed;opacity:.62}input,select,textarea{min-height:42px;width:100%;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;padding:0 12px}input:focus,select:focus,textarea:focus{border-color:var(--green);outline:2px solid rgba(39,103,73,.16)}textarea{min-height:92px;padding:10px 12px;resize:vertical}.app-shell{width:min(1120px,100%);margin:0 auto;padding:18px}.hero{min-height:220px;display:grid;grid-template-columns:1fr;grid-gap:18px;gap:18px;align-items:end;padding:28px 0 18px}.eyebrow{color:var(--green);font-size:.78rem;font-weight:800;margin:0 0 8px;text-transform:uppercase}.eyebrow,h1,h2{letter-spacing:0}h1,h2{margin:0}h1{font-size:2.2rem;line-height:1.05;max-width:720px}h2{font-size:1.15rem;line-height:1.2}.intro{color:var(--muted);font-size:1rem;line-height:1.55;margin:14px 0 0;max-width:620px}.status-panel{width:-moz-fit-content;width:fit-content;display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);color:var(--muted);font-size:.9rem;padding:12px 14px}.status-dot{width:10px;height:10px;border-radius:999px;background:var(--green)}.backend-warning{position:fixed;top:20px;left:50%;z-index:70;width:min(520px,calc(100% - 32px));display:grid;grid-gap:14px;gap:14px;border:solid #ffc800;border-width:2px 2px 4px;border-radius:16px;background:#fff8df;color:#4b4b4b;box-shadow:0 18px 42px rgba(31,41,51,.18);padding:16px;transform:translateX(-50%)}.backend-warning strong{color:#8a4f00;font-size:1rem;font-weight:900}.backend-warning p{color:#777777;font-size:.9rem;font-weight:800;line-height:1.4;margin:6px 0 0}.backend-warning-actions{display:flex;flex-wrap:wrap;gap:8px}.push-click-warning{top:112px}.dashboard-grid{display:grid;grid-gap:16px;gap:16px;margin-top:16px}.dashboard-tile{min-height:112px;display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:14px;gap:14px;align-items:center;justify-content:start;border:solid transparent;border-width:2px 2px 4px;border-radius:16px;background:#2789c7;color:#ffffff;padding:18px;text-align:left;text-transform:none}.dashboard-tile:hover{border-color:rgba(0,0,0,.12);filter:brightness(.98)}.dashboard-tile .nav-icon{background:rgba(255,255,255,.32);box-shadow:inset 0 -4px rgba(0,0,0,.08)}.reward-tile{background:#d94b4f}.family-tile,.leaderboard-tile{background:#d98216}.dashboard-tile span:last-child{display:grid;grid-gap:5px;gap:5px}.dashboard-tile strong{font-size:1rem;font-weight:900}.dashboard-tile small{color:rgba(255,255,255,.86);font-size:.82rem;font-weight:800}.dashboard-widget{display:grid;grid-gap:14px;gap:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);padding:18px}.reward-claim-widget{grid-column:1/-1;border-top:5px solid #ffc800}.approval-widget{grid-column:1/-1;border-top:5px solid #1cb0f6}.progress-widget{grid-column:1/-1;border-top:5px solid var(--green)}.profile-settings-widget{grid-column:1/-1;border-top:5px solid #ce82ff}.profile-settings-layout{display:grid;grid-template-columns:minmax(148px,190px) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:center}.profile-settings-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px;align-items:end}.profile-settings-form label{display:grid;grid-gap:6px;gap:6px;min-width:0;color:var(--muted);font-size:.84rem;font-weight:800}.profile-settings-form button,.profile-settings-form input,.profile-settings-form select{min-width:0;width:100%}.profile-settings-form button{white-space:normal}.profile-settings-widget .avatar-stage{color:var(--ink)}.character-progress-widget{grid-column:1/-1;border-top:5px solid #1cb0f6}.title-progress-widget{grid-column:1/-1;border-top:5px solid var(--gold)}.mission-widget{grid-column:1/-1;border-top:5px solid #7ac70c}.area-progress-widget{grid-column:1/-1;border-top:5px solid #ff9600}.progress-stats-widget{grid-column:1/-1;border-top:5px solid #1cb0f6}.progress-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.progress-stat-card{display:grid;grid-gap:4px;gap:4px;border:2px solid #f0f0f0;border-radius:14px;background:#ffffff;padding:12px}.progress-stat-card span{color:#777777;font-size:.78rem;font-weight:900;text-transform:uppercase}.progress-stat-card strong{color:#4b4b4b;font-size:1.05rem;font-weight:900}.progress-stat-card small{color:#777777;font-size:.82rem;font-weight:800}.progress-mini-chart{min-height:146px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px;align-items:end;border:2px solid #f0f0f0;border-radius:14px;background:#fbfbfb;padding:12px}.progress-chart-column{min-width:0;display:grid;grid-template-rows:92px auto auto;grid-gap:5px;gap:5px;align-items:end;justify-items:center}.progress-chart-bar-track{width:100%;height:92px;display:flex;align-items:flex-end;border-radius:999px;background:#e5e5e5;overflow:hidden}.progress-chart-bar{width:100%;min-height:8px;border-radius:999px 999px 0 0;background:#58cc02}.progress-chart-column strong{color:#4b4b4b;font-size:.82rem;font-weight:900}.progress-chart-column span{color:#777777;font-size:.72rem;font-weight:900;text-transform:uppercase}.mission-progress-list{display:grid;grid-gap:14px;gap:14px}.mission-progress-row{display:grid;grid-gap:8px;gap:8px}.claim-list{display:grid;grid-gap:10px;gap:10px}.claim-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:10px;gap:10px;border-top:2px solid #f0f0f0;padding-top:10px}.claim-empty,.claim-row div{display:grid;grid-gap:4px;gap:4px}.claim-empty span,.claim-row span{color:var(--muted);font-size:.9rem}.claim-row button{min-height:40px;padding:0 12px}.approval-widget-row{grid-template-columns:minmax(0,1fr) auto}.approval-widget-actions{display:flex;gap:8px}.family-panel{display:grid;grid-gap:14px;gap:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);margin-top:16px;padding:18px}.family-copy{display:grid;grid-gap:4px;gap:4px}.family-copy span{color:var(--muted);font-size:.9rem}.family-controls{display:grid;grid-gap:8px;gap:8px}.family-controls label{color:var(--muted);font-size:.86rem;font-weight:800}.profile-list{display:flex;flex-wrap:wrap;gap:8px}.family-create-grid{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.qr-approval-card{align-items:start}.qr-approval-grid{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-gap:8px;gap:8px;align-items:center}.difficulty-defaults-grid{display:grid;grid-gap:8px;gap:8px;grid-column:1/-1;margin:0;padding:10px;border:1px solid #e6e1da;border-radius:8px}.difficulty-defaults-grid legend{color:var(--muted);font-size:.82rem;font-weight:900}.difficulty-default-row{display:grid;grid-template-columns:92px repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px;align-items:end}.difficulty-default-row>span{align-self:center;color:var(--ink);font-size:.9rem;font-weight:900}.mascot-editor-grid,.title-editor-grid,.xp-planner-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px;align-items:end}.mascot-editor-grid{grid-template-columns:minmax(120px,1fr) minmax(140px,1fr) minmax(160px,1fr) auto}.title-editor-grid{grid-template-columns:minmax(180px,1fr) auto}.cosmetic-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));grid-gap:8px;gap:8px;align-items:end}.cosmetic-editor-grid button,.cosmetic-editor-grid input,.cosmetic-editor-grid label,.cosmetic-editor-grid select{min-width:0;width:100%}.cosmetic-editor-grid button{white-space:normal;overflow-wrap:anywhere}.cosmetic-list{display:grid;grid-gap:10px;gap:10px}.cosmetic-section-card{gap:14px}.cosmetic-section-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.cosmetic-section-header strong{color:var(--ink);font-size:1rem;font-weight:900}.cosmetic-section-header span{color:var(--muted);font-size:.82rem;font-weight:900}.cosmetic-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));grid-gap:8px;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:10px}.cosmetic-debug-controls label,.cosmetic-row label{display:grid;grid-gap:6px;gap:6px;min-width:0;color:var(--muted);font-size:.82rem;font-weight:800}.cosmetic-row button,.cosmetic-row input,.cosmetic-row select{min-width:0;width:100%}.cosmetic-row button{white-space:normal;overflow-wrap:anywhere}.cosmetic-row .avatar-stage{width:118px;color:var(--ink);justify-self:start}.debug-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:8px;gap:8px;align-items:end}.debug-actions-grid button,.debug-actions-grid label{min-width:0}.debug-actions-grid button{width:100%;white-space:normal;overflow-wrap:anywhere}.push-debug-card{display:grid;grid-gap:10px;gap:10px}.push-debug-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:8px;gap:8px;align-items:end}.push-debug-grid label{display:grid;grid-gap:6px;gap:6px;min-width:0;color:var(--muted);font-size:.82rem;font-weight:800}.push-debug-grid input,.push-debug-grid select,.push-debug-grid textarea{min-width:0}.push-debug-message{grid-column:span 2}.push-debug-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,auto);grid-gap:10px;gap:10px;align-items:center}.push-debug-actions button{width:100%}.push-subscription-list{display:grid;grid-gap:8px;gap:8px}.push-subscription-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(132px,auto);grid-gap:10px;gap:10px;align-items:center;border:2px solid #f0f0f0;border-radius:8px;background:#fbfaf8;padding:10px}.push-subscription-row div{display:grid;grid-gap:3px;gap:3px;min-width:0}.push-subscription-row strong{color:var(--ink);font-size:.92rem;font-weight:900}.push-subscription-row small,.push-subscription-row span{min-width:0;color:var(--muted);font-size:.78rem;overflow-wrap:anywhere}.inactive-push{opacity:.62}.cosmetic-debug-layout{display:grid;grid-template-columns:minmax(128px,172px) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:center}.cosmetic-debug-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));grid-gap:8px;gap:8px;min-width:0}.cosmetic-debug-controls label,.cosmetic-debug-controls select{min-width:0;width:100%}.cosmetic-debug-strip{display:flex;flex-wrap:wrap;gap:6px}.cosmetic-debug-strip span{border:1px solid #d7ffb8;border-radius:999px;background:#f2ffe9;color:#58a700;font-size:.78rem;font-weight:900;padding:4px 8px}.level-xp-save-row{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:8px;gap:8px;align-items:end}.level-xp-save-row label{display:grid;grid-gap:6px;gap:6px}.level-xp-save-row button{min-width:140px}.admin-save-footer{position:fixed;right:24px;bottom:18px;left:auto;z-index:60;width:min(520px,calc(100vw - 48px));display:flex;align-items:center;justify-content:flex-end;gap:12px;border:solid #e5e5e5;border-width:2px 2px 4px;border-radius:8px;background:#ffffff;box-shadow:0 12px 28px rgba(31,41,51,.14);padding:10px 12px}.admin-save-footer span{color:var(--muted);font-size:.88rem;font-weight:900}.admin-save-footer button{min-width:150px}.mascot-milestone-list,.planner-summary{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--muted);font-size:.88rem}.planner-summary strong{color:var(--ink)}.mascot-milestone-row{display:grid;grid-template-columns:40px minmax(140px,auto) minmax(100px,1fr) auto;grid-gap:8px;gap:8px;align-items:center;width:100%;border-top:1px solid var(--line);padding-top:8px;cursor:-webkit-grab;cursor:grab}.mascot-milestone-row img{width:40px;height:40px;object-fit:contain}.mascot-milestone-row span,.mascot-milestone-row strong{min-width:0}.title-milestone-row{grid-template-columns:minmax(130px,auto) minmax(160px,1fr) auto}.title-milestone-row input{width:100%}.mascot-row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.mascot-row-actions button{min-width:72px}.family-select-grid,.family-select-grid label{display:grid;grid-gap:8px;gap:8px}.family-select-grid label{color:var(--muted);font-size:.86rem;font-weight:800}.profile-button{background:var(--surface)}.active-profile{border-color:var(--green);background:var(--green-soft);color:var(--green)}.panel{border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);padding:18px}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.coin-badge,.level-badge{flex:0 0 auto;border-radius:999px;font-size:.8rem;font-weight:800;padding:8px 10px}.level-badge{background:var(--green-soft);color:var(--green)}.coin-badge{background:#fff2bf;color:#754a10}.currency-amount,.currency-group,.currency-label,.currency-label-pair{display:inline-flex;align-items:center;gap:5px;vertical-align:middle}.currency-group{flex-wrap:wrap;gap:6px 10px}.currency-label-pair{flex-wrap:wrap}.currency-icon{width:1.35em;height:1.35em;flex:0 0 auto;object-fit:contain}.currency-label .currency-icon{width:1.2em;height:1.2em}.progress{display:grid;grid-gap:8px;gap:8px;color:var(--muted);font-size:.9rem;margin:22px 0}.progress-track{height:10px;overflow:hidden;background:#eef0e8}.progress-fill{width:50%;height:100%;background:var(--green);transform-origin:left center;animation:progress-fill-in .7s ease-out both}@keyframes progress-fill-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.progress-fill,.reward-level-burst,.reward-level-up-badge{animation:none}}.level-progress{display:grid;grid-gap:8px;gap:8px;margin:18px 0 8px;color:var(--muted);font-size:.9rem}.level-progress-copy{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.level-progress-copy span{color:var(--green);font-weight:800}.level-progress-copy strong{color:var(--ink);font-size:1rem}.level-progress-track{height:12px}.title-progress-body{display:grid;grid-gap:14px;gap:14px}.title-rank-row{display:flex;flex-wrap:wrap;gap:8px}.title-rank-chip{min-height:34px;display:inline-flex;align-items:center;border:2px solid var(--line);border-radius:999px;background:#ffffff;color:var(--muted);font-size:.8rem;font-weight:900;padding:6px 10px}.title-rank-chip.unlocked{border-color:var(--gold);background:#fff2bf;color:#754a10}.title-rank-chip.next{border-color:#1cb0f6;background:#ddf4ff;color:#0b72a7}.title-progress-complete{margin:0;color:var(--green);font-size:1rem;font-weight:900}.character-progress-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.character-progress-summary>span{min-width:0;display:grid;grid-gap:3px;gap:3px;border:1px solid var(--line);border-radius:8px;background:#ffffff;color:var(--muted);font-size:.82rem;font-weight:800;padding:10px}.character-progress-summary>span>strong{color:var(--ink);overflow-wrap:anywhere}.character-progress-summary .currency-amount{color:var(--ink);font-size:.95rem;font-weight:900}.character-map{position:relative;display:grid;grid-template-columns:minmax(88px,auto) minmax(20px,.25fr) minmax(0,1fr) minmax(20px,.25fr) minmax(88px,auto);align-items:center;grid-gap:12px;gap:12px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,rgba(28,176,246,.12),rgba(255,255,255,0)),#f8fcff;padding:16px}.character-map-complete{grid-template-columns:auto minmax(0,1fr)}.character-stage{min-width:0;max-width:108px;display:grid;grid-gap:5px;gap:5px;justify-items:center;text-align:center}.character-stage img{width:72px;height:72px;display:block;object-fit:contain;filter:drop-shadow(0 12px 16px rgba(31,41,51,.18))}.character-stage strong{max-width:140px;color:var(--ink);font-size:.95rem;font-weight:900;overflow-wrap:anywhere}.character-stage span{border-radius:999px;background:var(--green-soft);color:var(--green);font-size:.76rem;font-weight:900;padding:5px 8px}.character-stage.current img,.character-stage.goal img{border-radius:999px;background:#ffffff;padding:4px;box-shadow:0 0 0 4px #fff2bf}.character-path{height:5px;border-radius:999px;background:repeating-linear-gradient(90deg,#1cb0f6,#1cb0f6 12px,transparent 0,transparent 20px)}.character-level-points{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}.character-level-gap,.character-level-point{width:34px;height:34px;flex:0 0 auto;display:inline-grid;place-items:center;border:2px solid var(--line);border-radius:999px;background:#ffffff;color:var(--muted);font-size:.78rem;font-weight:900}.character-level-point.reached{border-color:var(--green);background:var(--green-soft);color:var(--green)}.character-level-point.current{width:42px;height:42px;border-color:var(--gold);background:#fff2bf;color:#754a10;box-shadow:0 0 0 4px rgba(255,200,0,.22)}.character-level-gap{border-style:dashed;background:transparent}.character-map-message{color:var(--green);font-size:1rem;font-weight:900}.approval-list,.task-list{display:grid;grid-gap:10px;gap:10px}.task-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:12px}.task-row div{display:grid;grid-gap:4px;gap:4px}.task-row small,.task-row span{color:var(--muted);font-size:.9rem}.task-row .task-summary{color:var(--text);font-weight:900}.approval-list{margin:14px 0 18px}.panel-controls{display:grid;grid-gap:8px;gap:8px;margin:20px 0 10px}.panel-controls label{color:var(--muted);font-size:.86rem;font-weight:800}.icon-button{width:42px;min-height:42px;display:inline-grid;place-items:center;padding:0}.icon-button svg{width:22px;height:22px;fill:currentColor}.input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px}.family-member-card .input-row{grid-template-columns:minmax(0,1fr) auto auto}.panel-status{min-height:22px;color:var(--muted);font-size:.9rem;margin-bottom:12px}.reward-celebration{position:fixed;inset:0;z-index:30;display:grid;grid-template-rows:minmax(260px,1fr) auto minmax(28px,.35fr);place-items:center;pointer-events:auto;overflow:hidden;padding:20px;background:radial-gradient(circle at 50% 44%,rgba(255,232,139,.42),transparent 34%),rgba(31,41,55,.34);animation:reward-dialog-enter .26s ease-out both}.reward-celebration-closing{animation:reward-dialog-dissolve .52s ease-in both}.reward-chest-scene{position:relative;z-index:1;width:min(465px,calc(100vw - 32px));min-height:0;border:0;border-radius:0;padding:0;aspect-ratio:465/449;align-self:end;overflow:visible;isolation:auto;background:transparent;cursor:pointer;outline:0;transform:none;transition:none;-webkit-tap-highlight-color:transparent}.reward-chest-scene:active,.reward-chest-scene:focus,.reward-chest-scene:focus-visible,.reward-chest-scene:hover{border-color:transparent;background:transparent;outline:0;transform:none}.reward-chest-shake{animation:reward-chest-shake .45s ease-in-out both}.reward-chest-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}.reward-chest-body{z-index:4}.reward-chest-gold{z-index:6;opacity:0}.reward-chest-lock{z-index:8;transform-origin:35% 50%}.reward-chest-shake .reward-chest-lock{animation:reward-lock-shake .45s ease-in-out both}.reward-chest-opening .reward-chest-lock{animation:reward-lock-fly-away .9s cubic-bezier(.2,.9,.3,1) both}.reward-chest-open .reward-chest-lock{animation:none;opacity:0;transform:translate(-135px,45px) rotate(-110deg) scale(.7)}.reward-chest-lid-closed{z-index:7}.reward-chest-opening .reward-chest-lid-closed{animation:reward-lid-closed-out .42s ease-in both}.reward-chest-open .reward-chest-lid-closed{opacity:0}.reward-chest-lid-open{z-index:5;opacity:0}.reward-chest-opening .reward-chest-lid-open{animation:reward-lid-open-in .55s cubic-bezier(.2,1.35,.3,1) .32s both}.reward-chest-open .reward-chest-lid-open{opacity:1;transform:translate(-8px,-22px) rotate(-5deg) scale(1.02)}.reward-chest-open .reward-chest-gold,.reward-chest-opening .reward-chest-gold{opacity:1}.reward-rays{position:absolute;left:50%;top:18%;z-index:1;width:60%;height:54%;background:conic-gradient(from 250deg at 50% 100%,transparent 0deg,rgba(255,235,120,.75) 8deg,transparent 16deg,transparent 30deg,rgba(255,235,120,.55) 40deg,transparent 50deg,transparent 65deg,rgba(255,235,120,.7) 76deg,transparent 88deg);-webkit-clip-path:polygon(50% 100%,0 0,100% 0);clip-path:polygon(50% 100%,0 0,100% 0);filter:blur(2px);opacity:0;transform:translateX(-50%) scaleY(.1);transform-origin:bottom center}.reward-chest-opening .reward-rays{animation:reward-rays-up .85s ease-out .25s both}.reward-glow{position:absolute;left:50%;top:32%;z-index:2;width:64%;height:36%;border-radius:50%;background:radial-gradient(circle,rgba(255,225,120,.9),rgba(255,190,0,.35),transparent 70%);opacity:0;transform:translateX(-50%) scale(.2)}.reward-chest-opening .reward-glow{animation:reward-glow-burst .85s ease-out .25s both}.reward-level-burst{position:absolute;left:50%;top:18%;z-index:10;width:min(260px,58vw);height:min(260px,58vw);pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.45)}.reward-level-burst span{position:absolute;left:50%;top:50%;width:18px;height:18px;background:#ffffff;-webkit-clip-path:polygon(50% 0,61% 34%,98% 35%,68% 56%,79% 91%,50% 70%,21% 91%,32% 56%,2% 35%,39% 34%);clip-path:polygon(50% 0,61% 34%,98% 35%,68% 56%,79% 91%,50% 70%,21% 91%,32% 56%,2% 35%,39% 34%);filter:drop-shadow(0 0 10px rgba(255,255,255,.9));transform:translate(-50%,-50%) rotate(calc(var(--star-index) * 45deg)) translateY(-84px)}.reward-level-burst span:first-child{--star-index:0}.reward-level-burst span:nth-child(2){--star-index:1}.reward-level-burst span:nth-child(3){--star-index:2}.reward-level-burst span:nth-child(4){--star-index:3}.reward-level-burst span:nth-child(5){--star-index:4}.reward-level-burst span:nth-child(6){--star-index:5}.reward-level-burst span:nth-child(7){--star-index:6}.reward-level-burst span:nth-child(8){--star-index:7}.reward-chest-open .reward-level-burst,.reward-chest-opening .reward-level-burst{animation:reward-level-burst .9s ease-out .28s both}.reward-impact-bg{position:fixed;inset:-25vmax;z-index:0;background:radial-gradient(circle at center,rgba(255,255,180,.95) 0,rgba(255,220,80,.75) 6%,rgba(255,120,0,.35) 14%,transparent 24%),repeating-conic-gradient(from 0deg,rgba(255,0,120,.18) 0deg 10deg,rgba(255,220,0,.16) 10deg 20deg,rgba(0,240,255,.18) 20deg 30deg,rgba(180,80,255,.18) 30deg 40deg);filter:blur(10px) saturate(1.8);mix-blend-mode:screen;opacity:0;transform:scale(.15) rotate(0deg)}.reward-chest-opening .reward-impact-bg{animation:reward-impact-bg 1.1s ease-out both}.reward-shockwave{position:fixed;left:50%;top:50%;z-index:2;width:140px;height:140px;border:14px solid rgba(255,245,180,.95);border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 70%);box-shadow:0 0 30px rgba(255,240,120,.95),0 0 80px rgba(255,180,0,.8),0 0 180px rgba(255,80,180,.7),inset 0 0 25px rgba(255,255,255,.75);filter:blur(1px) saturate(1.6);mix-blend-mode:screen;opacity:0;transform:translate(-50%,-50%) scale(.08)}.reward-chest-opening .reward-shockwave{animation:reward-shockwave 1s cubic-bezier(.12,.9,.2,1) both}.reward-coin{--coin-x:50%;--coin-y:50%;--coin-size:clamp(12px,3vw,22px);--coin-drift:0px;--coin-height:-120px;--coin-rotation:360deg;--coin-duration:900ms;--coin-delay:0s;position:absolute;left:var(--coin-x);top:var(--coin-y);z-index:9;width:var(--coin-size);height:var(--coin-size);background:url(/assets/currencies/coin.png) 50%/contain no-repeat;opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0deg)}.reward-chest-opening .reward-coin{animation:reward-coin-fly var(--coin-duration) cubic-bezier(.2,1.4,.4,1) var(--coin-delay) both}.reward-coin:nth-child(5n){background-image:url(/assets/currencies/diamond.png)}.reward-coin:nth-child(6){--coin-x:28%;--coin-y:49%;--coin-drift:-44px;--coin-height:-170px;--coin-rotation:520deg}.reward-coin:nth-child(7){--coin-x:36%;--coin-y:46%;--coin-drift:-22px;--coin-height:-215px;--coin-rotation:780deg;--coin-delay:360ms}.reward-coin:nth-child(8){--coin-x:44%;--coin-y:50%;--coin-drift:10px;--coin-height:-150px;--coin-rotation:430deg;--coin-duration:760ms}.reward-coin:nth-child(9){--coin-x:52%;--coin-y:47%;--coin-drift:38px;--coin-height:-228px;--coin-rotation:850deg;--coin-delay:390ms}.reward-coin:nth-child(10){--coin-x:60%;--coin-y:51%;--coin-drift:52px;--coin-height:-180px;--coin-rotation:650deg}.reward-coin:nth-child(11){--coin-x:68%;--coin-y:48%;--coin-drift:22px;--coin-height:-205px;--coin-rotation:720deg;--coin-duration:980ms}.reward-coin:nth-child(12){--coin-x:31%;--coin-y:55%;--coin-drift:-12px;--coin-height:-128px;--coin-rotation:390deg;--coin-delay:460ms}.reward-coin:nth-child(13){--coin-x:40%;--coin-y:53%;--coin-drift:-54px;--coin-height:-198px;--coin-rotation:820deg;--coin-duration:1050ms}.reward-coin:nth-child(14){--coin-x:48%;--coin-y:55%;--coin-drift:30px;--coin-height:-142px;--coin-rotation:570deg;--coin-delay:500ms}.reward-coin:nth-child(15){--coin-x:56%;--coin-y:53%;--coin-drift:-28px;--coin-height:-236px;--coin-rotation:880deg}.reward-coin:nth-child(16){--coin-x:64%;--coin-y:56%;--coin-drift:45px;--coin-height:-160px;--coin-rotation:610deg;--coin-delay:540ms}.reward-coin:nth-child(17){--coin-x:35%;--coin-y:50%;--coin-drift:-36px;--coin-height:-148px;--coin-rotation:460deg;--coin-duration:700ms}.reward-coin:nth-child(18){--coin-x:46%;--coin-y:48%;--coin-drift:18px;--coin-height:-220px;--coin-rotation:760deg;--coin-delay:590ms}.reward-coin:nth-child(19){--coin-x:58%;--coin-y:49%;--coin-drift:56px;--coin-height:-188px;--coin-rotation:690deg;--coin-duration:1120ms}.reward-coin:nth-child(20){--coin-x:66%;--coin-y:52%;--coin-drift:-8px;--coin-height:-132px;--coin-rotation:410deg;--coin-delay:630ms}.reward-coin:nth-child(21){--coin-x:42%;--coin-y:56%;--coin-drift:-48px;--coin-height:-172px;--coin-rotation:550deg}.reward-coin:nth-child(22){--coin-x:54%;--coin-y:56%;--coin-drift:34px;--coin-height:-214px;--coin-rotation:900deg;--coin-delay:680ms}.reward-celebration-card{position:relative;z-index:3;display:grid;grid-gap:10px;gap:10px;min-width:min(360px,calc(100vw - 40px));border:3px solid #58a700;border-radius:8px;padding:18px;background:#ffffff;color:#4b4b4b;text-align:center;box-shadow:0 16px 40px rgba(75,75,75,.18);opacity:0;transform:translateY(18px) scale(.88);transition:opacity .22s ease-out,transform .22s ease-out}.reward-celebration-card-visible{opacity:1;transform:translateY(0) scale(1);animation:reward-card-pop .7s ease-out both}.reward-celebration-card strong{font-size:1.2rem}.reward-level-up-badge{justify-self:center;border:2px solid #ffd36a;border-radius:999px;padding:6px 12px;background:#fff3b8;color:#8a4b00;font-size:.9rem;font-weight:900;box-shadow:0 8px 18px rgba(255,190,70,.28)}.reward-celebration-card-visible .reward-level-up-badge{animation:reward-level-badge-pop .52s ease-out .12s both}.reward-celebration-values{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.reward-celebration-values>.currency-amount{border:1px solid #ffe0a8;border-radius:8px;padding:6px 10px;background:#fff8df;color:#9a5b00;font-weight:900}@keyframes reward-card-pop{0%{opacity:0;transform:translateY(18px) scale(.88)}55%{opacity:1;transform:translateY(0) scale(1.04)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes reward-dialog-enter{0%{opacity:0;background:radial-gradient(circle at 50% 44%,rgba(255,232,139,0),transparent 34%),rgba(31,41,55,0)}to{opacity:1;background:radial-gradient(circle at 50% 44%,rgba(255,232,139,.42),transparent 34%),rgba(31,41,55,.34)}}@keyframes reward-chest-enter{0%{opacity:0;filter:blur(18px);transform:scale(.55)}70%{opacity:1;filter:blur(0);transform:scale(1.08)}to{opacity:1;filter:blur(0);transform:scale(1)}}@keyframes reward-dialog-dissolve{0%{opacity:1;filter:blur(0);transform:scale(1)}to{opacity:0;filter:blur(16px);transform:scale(1.45)}}@keyframes reward-chest-shake{0%{transform:translate(0) rotate(0deg)}20%{transform:translate(-6px) rotate(-3deg)}40%{transform:translate(6px) rotate(3deg)}60%{transform:translate(-4px) rotate(-2deg)}80%{transform:translate(4px) rotate(2deg)}to{transform:translate(0) rotate(0deg)}}@keyframes reward-lock-fly-away{0%{opacity:1;transform:translate(0) rotate(0deg) scale(1)}35%{opacity:1;transform:translate(-35px,-20px) rotate(-25deg) scale(1.05)}to{opacity:0;transform:translate(-135px,45px) rotate(-110deg) scale(.7)}}@keyframes reward-lock-shake{0%,to{transform:translate(0) rotate(0deg)}12%{transform:translate(-2px,1px) rotate(-10deg)}24%{transform:translate(2px) rotate(8deg)}38%{transform:translate(-3px,2px) rotate(-16deg)}52%{transform:translate(3px,1px) rotate(13deg)}68%{transform:translate(-2px) rotate(-8deg)}82%{transform:translate(1px) rotate(5deg)}}@keyframes reward-lid-closed-out{0%{opacity:1;transform:translate(0) rotate(0deg) scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-4px,-10px) rotate(-2deg) scale(1.01)}}@keyframes reward-lid-open-in{0%{opacity:0;transform:translate(-4px,-10px) rotate(-2deg) scale(1.01)}1%{opacity:1}70%{opacity:1;transform:translate(-11px,-28px) rotate(-8deg) scale(1.05)}to{opacity:1;transform:translate(-8px,-22px) rotate(-5deg) scale(1.02)}}@keyframes reward-rays-up{0%{opacity:0;transform:translateX(-50%) scaleY(.1)}30%{opacity:.85}to{opacity:0;transform:translateX(-50%) scaleY(1.15)}}@keyframes reward-glow-burst{0%{opacity:0;transform:translateX(-50%) scale(.2)}35%{opacity:1}to{opacity:0;transform:translateX(-50%) scale(1.45)}}@keyframes reward-impact-bg{0%{opacity:0;transform:scale(.2) rotate(0deg)}15%{opacity:1;transform:scale(1.15) rotate(35deg)}45%{opacity:.9;transform:scale(1.35) rotate(140deg)}to{opacity:0;transform:scale(1.8) rotate(280deg)}}@keyframes reward-shockwave{0%{opacity:0;transform:translate(-50%,-50%) scale(.1)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(5)}}@keyframes reward-level-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.45) rotate(-20deg)}35%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.35) rotate(18deg)}}@keyframes reward-level-badge-pop{0%{opacity:0;transform:translateY(6px) scale(.82)}70%{opacity:1;transform:translateY(0) scale(1.08)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes reward-coin-fly{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0deg)}15%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--coin-drift)),var(--coin-height)) scale(1) rotate(var(--coin-rotation))}}.approval-card{display:grid;grid-gap:12px;gap:12px;border-top:1px solid var(--line);padding-top:12px}.approval-card div:first-child{display:grid;grid-gap:4px;gap:4px}.approval-card small,.approval-card span{color:var(--muted);font-size:.9rem}.approval-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.danger-button{color:var(--red)}.danger-zone{display:flex;justify-content:flex-start}.danger-zone .danger-button{border-color:#ffc9c9;background:#fff5f5}.secondary-button{color:#1cb0f6}.compact-danger{border-color:#ffc9c9;background:#fff5f5}.button-row{display:flex;flex-wrap:wrap;gap:10px}@media (min-width:760px){.app-shell{padding:32px}.hero{grid-template-columns:1fr auto;min-height:260px}h1{font-size:3rem}.dashboard-grid{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr)}.family-panel{grid-template-columns:minmax(220px,.8fr) minmax(320px,1fr) minmax(320px,1fr);align-items:start}.profile-list{grid-column:1/-1}.family-create-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.family-select-grid{grid-column:1/-1;grid-template-columns:1fr 1fr}}@media (max-width:520px){.task-row{align-items:stretch;flex-direction:column}.approval-actions,.input-row{grid-template-columns:1fr}}body{background:#ffffff}.app-shell{width:100%;min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr) 360px;grid-gap:0;gap:0;padding:0}.mobile-icon-button,.mobile-nav-backdrop,.mobile-top-bar{display:none}.admin-shell{grid-template-columns:248px minmax(0,1fr)}.side-nav{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;border-right:2px solid #e5e5e5;background:#ffffff;padding:24px 16px;overflow:auto}.brand{color:#58cc02;font-size:1.9rem;font-weight:900;letter-spacing:0;margin:0 0 34px}.brand-logo{width:min(178px,100%);height:auto;margin:0 0 34px}.brand-logo,.side-nav-header{display:block}.side-nav-profile{display:grid;justify-items:center;grid-gap:8px;gap:8px;margin:-18px 0 18px;text-align:center}.side-nav-profile .avatar-stage{transform-origin:center}.side-nav-profile strong{color:#4b4b4b;font-size:.92rem;line-height:1.25}.nav-list{display:grid;grid-gap:8px;gap:8px;margin-top:24px}.sidebar-selectors{display:grid;grid-gap:12px;gap:12px;margin-top:0}.sidebar-selectors label{display:grid;grid-gap:6px;gap:6px;color:#777777;font-size:.78rem;font-weight:900;text-transform:uppercase}.sidebar-selectors select{min-height:40px;font-size:.86rem;text-transform:none}.nav-item{min-height:52px;display:flex;align-items:center;justify-content:flex-start;gap:14px;border:2px solid transparent;border-radius:14px;background:#ffffff;color:#777777;font-size:.94rem;font-weight:900;text-transform:uppercase}.admin-nav{width:100%}.push-panel{display:grid;grid-gap:8px;gap:8px;margin-top:auto;padding-top:18px;border-top:2px solid #f0f0f0}.push-panel strong{color:#4b4b4b;font-size:.86rem;font-weight:900}.push-panel p{margin:0;color:#777777;font-size:.82rem;line-height:1.35}.push-panel button{width:100%}.side-nav-bottom{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.active-nav{border-color:#84d8ff;background:#ddf4ff;color:#1cb0f6}.nav-icon{width:26px;height:26px;display:inline-block;border-radius:8px;background:#ffc800;box-shadow:inset 0 -4px rgba(0,0,0,.08)}.task-icon{background:#1cb0f6}.progress-icon{background:#58cc02}.trophy-icon{background:#ff9600}.shop-icon{background:#ff4b4b}.admin-icon{background:#c0c6cf}.logout-nav{color:#c94a4a}.logout-nav:hover{color:#b42323}.logout-icon{background:#c94a4a}.profile-icon{background:#ce82ff}.content-column{width:min(680px,100%);justify-self:center;padding:18px 24px 48px}.right-rail{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px;border-left:2px solid #f0f0f0;background:#ffffff;padding:28px 28px 24px;overflow:auto}.top-stats{display:flex;justify-content:space-between;color:#1cb0f6;font-size:.9rem;font-weight:900}.hero{min-height:232px;grid-template-columns:minmax(0,1fr) 150px;align-items:center;border-radius:18px;background:#8a63d2;margin-top:0;padding:34px 24px}.hero,.hero .eyebrow,.hero .intro,.hero h1{color:#ffffff}.hero h1{font-size:1.7rem}.mascot-card{position:relative;width:128px;display:grid;grid-gap:6px;gap:6px;place-items:center;text-align:center}.mascot-image{width:100%;height:112px;object-fit:contain;filter:drop-shadow(0 12px 18px rgba(31,41,51,.18))}.mascot-card span{max-width:100%;color:#ffffff;font-size:.82rem;font-weight:900;overflow-wrap:anywhere}.avatar-stage{position:relative;display:grid;grid-gap:7px;gap:7px;justify-items:center;width:172px}.avatar-stage-compact{width:128px}.avatar-stage-art{position:relative;width:100%;aspect-ratio:1}.avatar-stage-clip{position:absolute;inset:0;overflow:hidden;background:transparent}.avatar-stage-background,.avatar-stage-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.avatar-stage-frame{z-index:6;pointer-events:none}.avatar-stage-image{position:absolute;left:15%;top:15%;z-index:4;width:70%;height:70%;object-fit:contain;filter:drop-shadow(0 10px 12px rgba(31,41,51,.22))}.avatar-stage>span{max-width:100%;color:inherit;font-size:.82rem;font-weight:900;overflow-wrap:anywhere;text-align:center}.mascot-card .avatar-stage>span{color:#ffffff}.avatar-effect-glow{position:absolute;inset:20%;z-index:2;border-radius:999px;background:rgba(255,232,138,.48);filter:blur(10px);animation:avatar-glow 2.4s ease-in-out infinite}.avatar-effect-particles{position:absolute;inset:0;z-index:5;pointer-events:none}.avatar-effect-particles i{position:absolute;display:block;width:8px;height:8px;animation:avatar-particle-float 2.8s ease-in-out infinite}.avatar-effect-sparkles i{background:#ffe88a;-webkit-clip-path:polygon(50% 0,62% 37%,100% 50%,62% 63%,50% 100%,38% 63%,0 50%,38% 37%);clip-path:polygon(50% 0,62% 37%,100% 50%,62% 63%,50% 100%,38% 63%,0 50%,38% 37%)}.avatar-effect-leaves i{width:9px;height:14px;border-radius:999px 0 999px 0;background:#58cc02}.avatar-effect-rain i{width:2px;height:24px;border-radius:999px;background:linear-gradient(180deg,rgba(223,247,255,0),rgba(79,179,217,.95));animation:avatar-rain-fall .9s linear infinite}.avatar-effect-rain i:first-child{left:8%;top:-16%;animation-delay:0s}.avatar-effect-rain i:nth-child(2){left:18%;top:-30%;animation-delay:.18s}.avatar-effect-rain i:nth-child(3){left:28%;top:-10%;animation-delay:.06s}.avatar-effect-rain i:nth-child(4){left:39%;top:-26%;animation-delay:.28s}.avatar-effect-rain i:nth-child(5){left:49%;top:-18%;animation-delay:.12s}.avatar-effect-rain i:nth-child(6){left:59%;top:-34%;animation-delay:.34s}.avatar-effect-rain i:nth-child(7){left:69%;top:-12%;animation-delay:.2s}.avatar-effect-rain i:nth-child(8){left:80%;top:-28%;animation-delay:.42s}.avatar-effect-rain i:nth-child(9){left:90%;top:-20%;animation-delay:.1s}.avatar-effect-rain i:nth-child(10){left:14%;top:10%;animation-delay:.5s}.avatar-effect-rain i:nth-child(11){left:54%;top:6%;animation-delay:.58s}.avatar-effect-rain i:nth-child(12){left:84%;top:14%;animation-delay:.66s}.avatar-effect-fog{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}.avatar-effect-fog i{position:absolute;left:-28%;width:156%;height:24%;border-radius:999px;background:rgba(255,255,255,.58);filter:blur(9px);animation:avatar-fog-drift 5.6s ease-in-out infinite}.avatar-effect-fog i:first-child{top:22%;animation-delay:0s}.avatar-effect-fog i:nth-child(2){top:47%;opacity:.78;animation-delay:1.4s}.avatar-effect-fog i:nth-child(3){top:66%;opacity:.62;animation-delay:2.8s}.avatar-effect-fire i{bottom:9%;width:14px;height:28px;border-radius:999px 999px 999px 0;background:linear-gradient(180deg,#ffe88a,#ff9600 45%,#ff4b4b);transform-origin:50% 100%;animation:avatar-fire-flicker 1.05s ease-in-out infinite}.avatar-effect-fire i:first-child{left:25%;animation-delay:0s}.avatar-effect-fire i:nth-child(2){left:33%;height:34px;animation-delay:.12s}.avatar-effect-fire i:nth-child(3){left:42%;animation-delay:.24s}.avatar-effect-fire i:nth-child(4){left:50%;height:38px;animation-delay:.36s}.avatar-effect-fire i:nth-child(5){left:58%;animation-delay:.48s}.avatar-effect-fire i:nth-child(6){left:66%;height:32px;animation-delay:.6s}.avatar-effect-fire i:nth-child(7){left:38%;bottom:4%;transform:scale(.7);animation-delay:.72s}.avatar-effect-fire i:nth-child(8){left:60%;bottom:4%;transform:scale(.7);animation-delay:.84s}.avatar-effect-rays{position:absolute;inset:5%;z-index:1;border-radius:999px;background:conic-gradient(from 0deg,rgba(255,232,138,.72) 0deg,rgba(255,232,138,0) 18deg,rgba(255,232,138,0) 38deg,rgba(255,232,138,.56) 56deg,rgba(255,232,138,0) 74deg,rgba(255,232,138,0) 112deg,rgba(255,232,138,.5) 132deg,rgba(255,232,138,0) 152deg,rgba(255,232,138,0) 1turn);filter:blur(1px);opacity:.78;animation:avatar-rays-spin 5.2s linear infinite}.avatar-effect-rays:after{content:"";position:absolute;inset:28%;border-radius:inherit;background:rgba(255,255,255,.28)}.avatar-effect-particles i:first-child{left:18%;top:24%;animation-delay:0s}.avatar-effect-particles i:nth-child(2){left:76%;top:25%;animation-delay:.35s}.avatar-effect-particles i:nth-child(3){left:18%;top:70%;animation-delay:.7s}.avatar-effect-particles i:nth-child(4){left:78%;top:68%;animation-delay:1.05s}.avatar-effect-particles i:nth-child(5){left:48%;top:12%;animation-delay:1.4s}.avatar-effect-particles i:nth-child(6){left:50%;top:82%;animation-delay:1.75s}@keyframes avatar-glow{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:.9;transform:scale(1.08)}}@keyframes avatar-particle-float{0%,to{opacity:.35;transform:translateY(5px) scale(.8) rotate(0deg)}50%{opacity:1;transform:translateY(-7px) scale(1.12) rotate(18deg)}}@keyframes avatar-rain-fall{0%{opacity:0;transform:translate3d(10px,-18px,0) rotate(12deg) scaleX(-1)}15%{opacity:.9}to{opacity:0;transform:translate3d(-14px,160px,0) rotate(12deg) scaleX(-1)}}@keyframes avatar-fog-drift{0%,to{transform:translateX(-8%)}50%{transform:translateX(10%)}}@keyframes avatar-fire-flicker{0%,to{opacity:.72;transform:translateY(3px) scale(.78) rotate(-8deg)}35%{opacity:1;transform:translateY(-5px) scale(1.06) rotate(7deg)}70%{opacity:.9;transform:translateY(-1px) scale(.92) rotate(-3deg)}}@keyframes avatar-rays-spin{to{transform:rotate(1turn)}}.challenge-card,.family-panel,.panel{border:2px solid #e5e5e5;border-radius:16px;background:#ffffff;box-shadow:none}.family-panel{margin-top:18px;grid-template-columns:1fr;align-items:stretch;overflow:hidden}.admin-family-panel{border:0;background:transparent;box-shadow:none;padding:0}.admin-section-tabs{display:flex;flex-wrap:wrap;gap:8px}.admin-section-header{display:none}.admin-section-tab{min-height:40px;border-color:#e5e5e5;background:#ffffff;color:#777777;padding:0 14px}.active-admin-section{border-color:#58cc02;background:#d7ffb8;color:#58a700}.admin-card{border:2px solid #f0f0f0;border-radius:8px;background:#ffffff;padding:12px}.reward-settings-card,.rewards-settings-form{display:grid;grid-gap:12px;gap:12px}.reward-settings-card>.family-controls>label{color:var(--ink);font-size:.95rem;font-weight:900}.reward-settings-card .difficulty-defaults-grid{background:#fbfaf8}.reward-currency-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reward-settings-actions{display:flex;justify-content:flex-end;border:2px solid #f0f0f0;border-radius:8px;background:#ffffff;padding:12px}.reward-settings-actions button{min-width:160px}.family-member-card{display:grid;grid-gap:12px;gap:12px}.member-form-grid{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(0,1fr) minmax(0,1fr);grid-gap:8px;gap:8px;align-items:end}.member-form-grid label{display:grid;grid-gap:6px;gap:6px}.member-form-grid .checkbox-row{align-self:center}.member-action-row{display:grid;grid-gap:8px;gap:8px;grid-column:2/-1}.member-remove-button{grid-column:1/2}.family-panel .family-create-grid,.family-panel .input-row{width:100%}.family-panel .family-create-grid button,.family-panel .input-row button{white-space:nowrap}.family-select-grid{grid-column:auto}.dashboard-grid{grid-template-columns:1fr;margin-top:18px}.dashboard-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-overview-grid{grid-template-columns:1fr}.tab-bar{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-top:18px}.tab-button{color:#777777}.active-tab{border-color:#84d8ff;background:#ddf4ff;color:#1cb0f6}.challenge-card h2,.family-copy h2,.panel-header h2{color:#4b4b4b;font-size:1.25rem;font-weight:900}.eyebrow{color:#777777}button{border:solid #e5e5e5;border-width:2px 2px 4px;border-radius:14px;color:#1cb0f6;text-transform:uppercase}button:hover{border-color:#1cb0f6}input,select{border:2px solid #e5e5e5;border-radius:14px;background:#f7f7f7;font-weight:700}.progress-track{height:18px;border-radius:999px;background:#e5e5e5}.progress-fill{background:#58cc02}.overview-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px}.overview-stats span,.task-status{display:inline-grid;place-items:center;min-height:34px;border-radius:999px;background:#f0f8ff;color:#1cb0f6;font-size:.78rem;font-weight:900;text-align:center}.filter-panel{display:grid;grid-gap:10px;gap:10px;border:2px solid #f0f0f0;border-radius:14px;padding:10px}.member-filter,.segmented-control{display:flex;flex-wrap:wrap;gap:8px}.segmented-control button{min-height:36px;padding:0 12px}.segmented-control .active-filter{border-color:#58cc02;color:#58a700;background:#d7ffb8}.member-filter .checkbox-row{min-height:36px;border:2px solid #e5e5e5;border-radius:999px;padding:0 12px}.member-filter button{min-height:36px}.approval-card,.task-row{border-top:2px solid #f0f0f0}.parent-task-row{grid-template-columns:minmax(0,1fr) auto}.instance-actions{display:flex;align-items:center;gap:8px}.assignee-status-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.assignee-status{border-radius:999px;padding:5px 9px;font-size:.74rem;font-weight:900}.icon-danger{width:38px;min-height:38px;border-color:#d33f3f;background:#d33f3f;padding:0;color:#ffffff;font-size:1.25rem;line-height:1}.status-open{background:#fff4d8;color:#a76500}.status-submitted{background:#e7f4ff;color:#1cb0f6}.status-approved{background:#d7ffb8;color:#58a700}.status-rejected{background:#ffe1e1;color:#d33f3f}.status-expired{background:#efefef;color:#666666}.task-planner{display:grid;grid-gap:10px;gap:10px;border-top:2px solid #f0f0f0;padding-top:14px}.task-planner>label:first-child{color:#777777;font-size:.86rem;font-weight:900}.task-form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.task-form-grid label{display:grid;grid-gap:6px;gap:6px;color:#777777;font-size:.82rem;font-weight:900}.checkbox-row{display:flex;align-items:center;gap:8px;color:#4b4b4b;font-size:.9rem;font-weight:800}.checkbox-row input{min-height:auto;width:18px;height:18px;flex:0 0 auto}.task-action-row{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.assignee-picker{display:grid;grid-gap:8px;gap:8px;border:2px solid #f0f0f0;border-radius:14px;margin:0;padding:10px 12px}.assignee-picker legend{color:#777777;font-size:.78rem;font-weight:900;padding:0 6px;text-transform:uppercase}.reward-list,.routine-list{display:grid;grid-gap:8px;gap:8px;margin-bottom:18px}.reward-shop-tabs{margin-top:0;margin-bottom:16px}.cosmetic-shop{display:grid;grid-gap:18px;gap:18px}.cosmetic-shop-section{display:grid;grid-gap:10px;gap:10px;border-top:2px solid #f0f0f0;padding-top:12px}.cosmetic-shop-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.cosmetic-shop-heading strong{color:#4b4b4b;font-weight:900}.cosmetic-shop-heading span{color:#777777;font-size:.82rem;font-weight:900}.cosmetic-shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px}.cosmetic-shop-card{display:grid;grid-gap:9px;gap:9px;justify-items:center;border:2px solid #f0f0f0;border-radius:14px;padding:10px;text-align:center}.cosmetic-shop-card .avatar-stage{width:min(118px,100%)}.cosmetic-shop-card div{display:grid;grid-gap:3px;gap:3px}.cosmetic-shop-card strong{color:#4b4b4b;font-weight:900}.cosmetic-shop-card span{color:#777777;font-size:.78rem;font-weight:800}.cosmetic-shop-card button{width:100%;min-height:36px}.leaderboard-grid{gap:14px}.activity-list,.leaderboard-list{display:grid;grid-gap:8px;gap:8px}.activity-row,.leaderboard-row{display:grid;grid-template-columns:auto 74px minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;border-top:2px solid #f0f0f0;padding-top:10px}.activity-row{grid-template-columns:74px minmax(0,1fr) auto}.activity-row .avatar-stage,.leaderboard-row .avatar-stage{width:68px;color:var(--ink)}.activity-row .avatar-stage>span,.leaderboard-row .avatar-stage>span{font-size:.68rem}.rank-badge{display:inline-grid;width:36px;height:36px;place-items:center;border-radius:999px;background:#fff4cc;color:#ff9600;font-weight:900}.crown-rank{background:#ffc800;color:#8a4f00}.crown-icon{width:22px;height:22px;fill:currentColor}.activity-row div,.leaderboard-row div{display:grid;grid-gap:3px;gap:3px}.activity-row strong,.leaderboard-row strong{color:#4b4b4b;font-weight:900}.activity-row span,.leaderboard-row small{color:#777777;font-size:.82rem;font-weight:800}.leaderboard-score{text-align:right}.like-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:92px;min-height:38px;padding:0 10px;color:#777777;white-space:nowrap}.thumb-icon{width:18px;height:18px;fill:currentColor;flex:0 0 auto}.active-like{border-color:#58cc02;background:#d7ffb8;color:#58a700}.empty-state{border-top:2px solid #f0f0f0;padding-top:12px;color:#777777;font-weight:800}.reward-form{margin-bottom:16px}.routine-management{display:grid;grid-gap:10px;gap:10px;border:2px solid #f0f0f0;border-radius:14px;padding:10px}.routine-summary{color:#777777;font-size:.82rem;font-weight:900}.routine-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;border-top:2px solid #f0f0f0;padding-top:10px}.inactive-routine{opacity:.68}.routine-card div{display:grid;grid-gap:3px;gap:3px}.routine-card span{color:#777777;font-size:.86rem}.routine-card small{color:#777777;font-size:.78rem;font-weight:800}.routine-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.routine-actions button{min-height:36px;padding:0 10px}.approval-card strong,.routine-card strong,.task-row strong{color:#4b4b4b;font-weight:900}.level-badge{border-radius:999px;background:#d7ffb8;color:#58a700}.coin-badge{border-radius:999px;background:#fff4cc;color:#ff9600}.challenge-card{padding:22px}.challenge-card p{color:#777777;line-height:1.45}.coin-illustration{width:72px;height:72px;background:url(/assets/currencies/coin.png) 50%/contain no-repeat}.approval-card .currency-amount,.approval-card .currency-group,.claim-row .currency-amount,.claim-row .currency-group,.coin-badge .currency-amount,.coin-badge .currency-group,.level-badge .currency-amount,.overview-stats .currency-amount,.progress-stat-card .currency-amount,.progress-stat-card .currency-group,.routine-card .currency-amount,.routine-card .currency-group,.task-row .currency-amount,.task-row .currency-group,.top-stats .currency-amount{display:inline-flex;align-items:center;color:inherit;font-size:inherit;font-weight:inherit}.approval-card .currency-group,.claim-row .currency-group,.progress-stat-card .currency-group,.routine-card .currency-group,.task-row .currency-group{gap:6px 10px}.currency-amount>span,.currency-label-pair>span,.currency-label>span{color:inherit;font-size:inherit;font-weight:inherit}.api-chip{display:flex;align-items:center;gap:8px;color:#afafaf;font-size:.78rem;font-weight:800;margin-top:auto}@media (max-width:1080px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.side-nav{padding:18px 8px}.brand-logo{width:150px}.nav-item{justify-content:flex-start}.right-rail{grid-column:2;position:static;height:auto;border-left:0;padding:0 24px 48px}}@media (max-width:760px){.app-shell{display:block}.mobile-top-bar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:10px;min-height:64px;border-bottom:2px solid #e5e5e5;background:#ffffff;padding:10px 14px}.mobile-icon-button{width:42px;min-height:42px;display:grid;place-items:center;border:0;border-radius:0;background:transparent;color:#4b4b4b;padding:0}.mobile-icon-button:hover{border:0;color:#1cb0f6}.mobile-icon-button svg{width:26px;height:26px;fill:currentColor}.mobile-logo{display:block;width:126px;height:auto}.mobile-admin-menu-button{margin-left:auto}.mobile-nav-backdrop{position:fixed;inset:0;z-index:40;display:block;border:0;border-radius:0;background:rgba(31,41,51,.34);padding:0}.side-nav{position:fixed;inset:0 auto 0 0;z-index:50;width:min(84vw,320px);height:100vh;border-right:2px solid #e5e5e5;border-bottom:0;transform:translateX(-100%);transition:transform .16s ease}.side-nav-open{transform:translateX(0)}.admin-section-tabs{position:fixed;inset:0 0 0 auto;z-index:55;width:min(84vw,320px);height:100vh;display:grid;align-content:start;grid-gap:8px;gap:8px;border-left:2px solid #e5e5e5;background:#ffffff;padding:18px 14px;transform:translateX(100%);transition:transform .16s ease}.admin-section-tabs-open{transform:translateX(0)}.admin-section-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.admin-section-header strong{color:#4b4b4b;font-size:1rem;font-weight:900}.admin-section-tab{justify-content:flex-start;width:100%;min-height:48px}.side-nav-header{display:flex;align-items:center;justify-content:flex-start;gap:10px;margin-bottom:28px}.side-nav-header .brand-logo{width:150px;margin:0}.menu-close-button{flex:0 0 auto}.nav-list{display:grid;overflow:visible}.nav-item{min-width:0}.content-column,.right-rail{width:100%;padding:88px 16px 16px}.hero{grid-template-columns:1fr;min-height:auto}.mascot-card{width:96px;justify-self:end;margin-top:-16px}.mascot-image{height:82px}.dashboard-tiles{grid-template-columns:1fr}}@media (max-width:620px){.login-qr-card,.login-qr-expired,.login-qr-surface{width:100%}.cosmetic-debug-controls,.cosmetic-debug-layout,.debug-actions-grid,.family-member-card .input-row,.family-panel .family-create-grid,.family-panel .input-row,.family-select-grid,.member-form-grid,.overview-stats,.profile-settings-form,.profile-settings-layout,.progress-stat-grid,.push-debug-actions,.push-debug-grid,.push-subscription-row,.qr-approval-grid,.reward-currency-grid,.routine-card,.task-form-grid{grid-template-columns:1fr}.push-debug-message{grid-column:auto}.cosmetic-editor-grid,.cosmetic-row,.difficulty-default-row,.level-xp-save-row,.mascot-editor-grid,.mascot-milestone-row,.title-editor-grid,.title-milestone-row,.xp-planner-grid{grid-template-columns:1fr}.member-action-row,.member-remove-button{grid-column:auto}.character-progress-summary{grid-template-columns:1fr}.character-map,.character-map-complete{grid-template-columns:1fr;justify-items:center;gap:10px}.character-stage{min-width:0;max-width:96px}.character-stage img{width:64px;height:64px}.character-path{width:5px;height:22px;background:repeating-linear-gradient(180deg,#1cb0f6,#1cb0f6 12px,transparent 0,transparent 20px)}.character-level-points{flex-direction:column;gap:7px}}button{position:relative;overflow:hidden;isolation:isolate;transition:transform 80ms ease,border-color .15s ease,background .15s ease,color .15s ease}button:active:not(:disabled):not([aria-disabled=true]){transform:scale(.98)}.button-effect-ripple{position:absolute;z-index:0;border-radius:999px;background:rgba(255,255,255,.35);pointer-events:none;transform:translate(-50%,-50%) scale(0);animation:button-effect-ripple .52s ease-out forwards}.button-effect-flash,.button-effect-glow,.button-effect-scanline{position:fixed;inset:0;pointer-events:none;z-index:1200}.button-effect-flash{background:#ffffff;opacity:0;mix-blend-mode:screen}.button-effect-glow{left:50%;top:50%;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.28);filter:blur(28px);opacity:0;transform:translate(-50%,-50%) scale(0)}.button-effect-scanline{opacity:0;background:repeating-linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.045) 2px,transparent 0,transparent 5px)}.button-effect-flash-active{animation:button-effect-flash .26s ease-out}.button-effect-glow-active{animation:button-effect-glow .62s ease-out}.button-effect-scanline-active{animation:button-effect-scanline .22s linear}.button-effect-particle{position:fixed;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#facc15;pointer-events:none;z-index:1201;animation:button-effect-particle .62s ease-out forwards}.button-effect-particle-reverse{background:#ff4b4b;box-shadow:0 0 10px rgba(255,75,75,.5);animation-name:button-effect-particle-reverse}.button-effects-debug-card{margin-top:12px}.button-effect-assignment-grid{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.button-effect-assignment-grid label{display:grid;grid-gap:6px;gap:6px}.button-effects-debug-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));grid-gap:8px;gap:8px}.button-effect-assignment-grid select,.button-effects-debug-grid button{min-width:0;width:100%}.button-effects-debug-grid button{white-space:normal;overflow-wrap:anywhere}@media (min-width:760px){.button-effect-assignment-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.button-shake-light{animation:button-shake-light .13s linear}.button-shake-medium{animation:button-shake-medium .19s linear}.button-shake-heavy{animation:button-shake-heavy .28s linear}.button-zoom-hit{animation:button-zoom-hit .26s ease-out}.button-blur-hit{animation:button-blur-hit .19s ease-out}.button-tilt-hit{animation:button-tilt-hit .22s ease-out}.button-chromatic{animation:button-chromatic .18s linear}.button-freeze-hit{animation:button-freeze-hit 90ms steps(1)}@keyframes button-effect-ripple{to{opacity:0;transform:translate(-50%,-50%) scale(5)}}@keyframes button-effect-flash{0%{opacity:0}20%{opacity:.28}to{opacity:0}}@keyframes button-effect-glow{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}35%{opacity:1;transform:translate(-50%,-50%) scale(9)}to{opacity:0;transform:translate(-50%,-50%) scale(16)}}@keyframes button-effect-scanline{0%{opacity:0}25%{opacity:.55}to{opacity:0}}@keyframes button-effect-particle{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--button-particle-x)),calc(-50% + var(--button-particle-y))) scale(0)}}@keyframes button-effect-particle-reverse{0%{opacity:0;transform:translate(calc(-50% + var(--button-particle-x)),calc(-50% + var(--button-particle-y))) scale(0)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.15)}}@keyframes button-shake-light{0%{transform:translateX(0)}25%{transform:translateX(-2px)}50%{transform:translateX(2px)}to{transform:translateX(0)}}@keyframes button-shake-medium{0%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}to{transform:translateX(0)}}@keyframes button-shake-heavy{0%{transform:translateX(0)}15%{transform:translateX(-12px)}30%{transform:translateX(12px)}45%{transform:translateX(-8px)}60%{transform:translateX(8px)}80%{transform:translateX(-4px)}to{transform:translateX(0)}}@keyframes button-zoom-hit{0%{transform:scale(1)}35%{transform:scale(1.045)}to{transform:scale(1)}}@keyframes button-blur-hit{0%{filter:blur(0)}35%{filter:blur(2px)}to{filter:blur(0)}}@keyframes button-tilt-hit{0%{transform:rotate(0deg)}25%{transform:rotate(-1.5deg)}60%{transform:rotate(1.2deg)}to{transform:rotate(0deg)}}@keyframes button-chromatic{0%{filter:drop-shadow(-2px 0 rgba(255,0,0,.55)) drop-shadow(2px 0 rgba(0,255,255,.55))}to{filter:none}}@keyframes button-freeze-hit{0%{filter:contrast(1.45) brightness(1.2)}to{filter:none}}