html,body{margin:0;padding:0;height:100%;overflow:hidden}:root{--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--touch-target-min: 44px}:root{--bg-page: #ffffff;--bg-secondary: #f5f5f5;--bg-tertiary: #fafafa;--bg-card: #ffffff;--bg-hover: #e8e8e8;--bg-input: #ffffff;--text-primary: #333333;--text-secondary: #555555;--text-muted: #666666;--text-faint: #767676;--border-primary: #dddddd;--border-secondary: #cccccc;--border-light: #eeeeee;--shadow-color: rgba(0, 0, 0, .1);--shadow-heavy: rgba(0, 0, 0, .15);--shadow-card: 0 2px 8px rgba(0, 0, 0, .1);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .15);--shadow-modal: 0 4px 24px rgba(0, 0, 0, .2);--shadow-focus-ring: 0 0 0 2px rgba(25, 118, 210, .2);--overlay-bg: rgba(0, 0, 0, .5);--bg-approval: #fffbeb;--bg-missed: #fef2f2;--bg-streak: #fff7ed;--bg-leaderboard: #fefce8;--bg-bonus: #fff8e1;--bg-savings: #e3f2fd;--bg-savings-achievable: #e8f5e9;--bg-success: #e8f5e9;--bg-success-light: #f0fdf4;--bg-error: #ffebee;--bg-error-light: #fef2f2;--bg-warning: #fff3e0;--bg-info-selected: #e3f2fd;--bg-avatar-selected: #eef2ff;--border-approval: #f59e0b;--border-missed: #ef4444;--border-streak: #fed7aa;--border-leaderboard: #fde68a;--border-bonus: #ffe082;--border-savings: #90caf9;--border-savings-achievable: #66bb6a;--border-success: #a5d6a7;--border-success-strong: #bbf7d0;--border-error: #ef9a9a;--border-warning: #ffcc80;--text-success: #2e7d32;--text-error: #c62828;--text-warning: #d97706;--text-danger: #dc2626;--text-approval-heading: #d97706;--text-approval-badge-bg: #fef3c7;--text-approval-badge: #92400e;--color-earned: #22c55e;--color-spent: #ef4444;--color-chore: #22c55e;--color-reward: #a855f7;--color-bonus: #ff9800;--bg-category: #f0f0f0;--text-category: #595959;--accent-primary: #1976d2;--accent-primary-hover: #1565c0;--accent-primary-text: #ffffff;--link-color: #1976d2;--link-hover: #1256a1}:root.dark-theme{--bg-page: #1a1a2e;--bg-secondary: #16213e;--bg-tertiary: #1e2a45;--bg-card: #1e2a45;--bg-hover: #2a3a5c;--bg-input: #16213e;--text-primary: #e0e0e0;--text-secondary: #b0b0b0;--text-muted: #9a9a9a;--text-faint: #8a8a8a;--border-primary: #2a3a5c;--border-secondary: #3a4a6c;--border-light: #222e48;--shadow-color: rgba(0, 0, 0, .3);--shadow-heavy: rgba(0, 0, 0, .4);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .4);--shadow-modal: 0 4px 24px rgba(0, 0, 0, .4);--shadow-focus-ring: 0 0 0 2px rgba(66, 165, 245, .3);--overlay-bg: rgba(0, 0, 0, .7);--bg-approval: #332b1a;--bg-missed: #331a1a;--bg-streak: #33281a;--bg-leaderboard: #33311a;--bg-bonus: #33291a;--bg-savings: #1a2533;--bg-savings-achievable: #1a331e;--bg-success: #1a331e;--bg-success-light: #1a2d1e;--bg-error: #331a1e;--bg-error-light: #2d1a1e;--bg-warning: #33281a;--bg-info-selected: #1a2533;--bg-avatar-selected: #1e2145;--border-approval: #b37400;--border-missed: #b33030;--border-streak: #b38050;--border-leaderboard: #b3a040;--border-bonus: #b39040;--border-savings: #4080b3;--border-savings-achievable: #40804a;--border-success: #40804a;--border-success-strong: #50905a;--border-error: #b34050;--border-warning: #b38040;--text-success: #66bb6a;--text-error: #ef5350;--text-warning: #ffb74d;--text-danger: #ef5350;--text-approval-heading: #ffb74d;--text-approval-badge-bg: #332b1a;--text-approval-badge: #ffb74d;--color-earned: #4ade80;--color-spent: #f87171;--color-chore: #4ade80;--color-reward: #c084fc;--color-bonus: #ffb74d;--bg-category: #2a3a5c;--text-category: #b0b0b0;--accent-primary: #64b5f6;--accent-primary-hover: #90caf9;--accent-primary-text: #1a1a2e;--link-color: #90caf9;--link-hover: #bbdefb}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-page);color:var(--text-primary);transition:background .2s,color .2s}h1{font-size:var(--font-size-2xl);font-weight:700;color:var(--text-primary);line-height:1.3}h2{font-size:var(--font-size-xl);font-weight:600;color:var(--text-primary);line-height:1.3}h3{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);line-height:1.3}h4{font-size:var(--font-size-md);font-weight:600;color:var(--text-primary);line-height:1.3}input,select,textarea{background:var(--bg-input);color:var(--text-primary)}input::placeholder,textarea::placeholder{color:var(--text-muted)}.content>:not(router-outlet){flex:1;min-height:0;display:flex;flex-direction:column}:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px}:root{--focus-ring-color: #005fcc}:root.dark-theme{--focus-ring-color: #7cc4ff}:focus:not(:focus-visible){outline:none}button:focus-visible,[role=button]:focus-visible,input[type=submit]:focus-visible,input[type=button]:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:0;border-color:var(--focus-ring-color)}a:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{position:absolute;top:-40px;left:0;background:var(--bg-card);color:var(--text-primary);padding:.5rem 1rem;z-index:10000;text-decoration:none;font-weight:600;border:2px solid var(--focus-ring-color);border-radius:var(--radius-sm);transition:top .2s}.skip-link:focus{top:.5rem;left:.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);min-height:var(--touch-target-min);border:1px solid transparent;border-radius:var(--radius-sm);font-family:inherit;font-size:var(--font-size-sm);font-weight:500;line-height:1.25;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,color .15s,opacity .15s,transform .1s;box-sizing:border-box}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-primary);color:var(--accent-primary-text);border-color:var(--accent-primary)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover);border-color:var(--accent-primary-hover)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border-color:var(--border-secondary)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-ghost{background:transparent;color:var(--text-primary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-hover)}.btn-destructive{background:var(--text-danger);color:#fff;border-color:var(--text-danger)}.btn-destructive:hover:not(:disabled){opacity:.9}.btn-success{background:var(--color-earned);color:#fff;border-color:var(--color-earned)}.btn-success:hover:not(:disabled){opacity:.9}.btn-outline{background:transparent;color:var(--accent-primary);border:2px solid var(--accent-primary);font-weight:600}.btn-outline:hover:not(:disabled){background:var(--accent-primary);color:var(--accent-primary-text)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);min-height:32px}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base);font-weight:600}.btn-block{width:100%}.btn-loading{position:relative;pointer-events:none}.btn-loading:before{content:"";display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btn-spin .6s linear infinite;margin-right:var(--space-2);vertical-align:middle;opacity:.8}.btn-sm.btn-loading:before{width:12px;height:12px;border-width:1.5px}@keyframes btn-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.btn-loading:before{animation-duration:1.5s}}.required-mark{color:var(--text-error);margin-left:2px}.checkbox-label{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-weight:400;margin-bottom:0}.checkbox-label input[type=checkbox]{width:auto;margin:0;cursor:pointer}.validation-msg{display:block;font-size:var(--font-size-xs);color:var(--text-error);margin-top:var(--space-1)}.field-error input,.field-error select,.field-error textarea{border-color:var(--border-error)}.field-valid input,.field-valid select,.field-valid textarea{border-color:var(--border-success-strong)}.input-wrapper{position:relative;display:flex;flex-direction:column}.input-wrapper input,.input-wrapper select,.input-wrapper textarea{padding-right:2.25rem}.input-icon{position:absolute;right:var(--space-3);top:50%;transform:translateY(-50%);font-size:var(--font-size-sm);pointer-events:none;line-height:1}.input-icon.valid{color:var(--text-success)}.input-icon.invalid{color:var(--text-error)}.password-strength{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.strength-bar{flex:1;height:4px;background:var(--border-primary);border-radius:var(--radius-full);overflow:hidden}.strength-fill{height:100%;border-radius:var(--radius-full);transition:width .2s ease,background-color .2s ease}.strength-fill.weak{width:25%;background:var(--text-error)}.strength-fill.fair{width:50%;background:var(--text-warning)}.strength-fill.good{width:75%;background:#2196f3}.strength-fill.strong{width:100%;background:var(--text-success)}.strength-label{font-size:var(--font-size-xs);min-width:3.5rem}.strength-label.weak{color:var(--text-error)}.strength-label.fair{color:var(--text-warning)}.strength-label.good{color:#2196f3}.strength-label.strong{color:var(--text-success)}.char-count{font-size:var(--font-size-xs);color:var(--text-faint);text-align:right;margin-top:var(--space-1)}.char-count.near-limit{color:var(--text-warning)}.char-count.at-limit{color:var(--text-error)}.field-hint{font-size:var(--font-size-xs);color:var(--text-faint);margin-top:var(--space-1)}.empty-state-block{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-4);color:var(--text-muted)}.empty-state-block .empty-icon{font-size:var(--font-size-4xl);line-height:1;margin-bottom:var(--space-3)}.empty-state-block .empty-title{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);margin:0 0 var(--space-2)}.empty-state-block .empty-description{font-size:var(--font-size-sm);color:var(--text-muted);margin:0 0 var(--space-4);max-width:320px;line-height:1.5}.empty-state-block .btn{margin-top:var(--space-2)}.empty-state-inline{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-4) var(--space-3);color:var(--text-muted)}.empty-state-inline .empty-icon{font-size:var(--font-size-2xl);line-height:1;margin-bottom:var(--space-2)}.empty-state-inline .empty-title{font-size:var(--font-size-base);font-weight:500;color:var(--text-primary);margin:0 0 var(--space-1)}.empty-state-inline .empty-description{font-size:var(--font-size-xs);color:var(--text-muted);margin:0;line-height:1.4}.focus-trap-container{position:relative}.focus-trap-sentinel{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes list-item-enter{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.animate-list-item{animation:list-item-enter .2s ease-out both}@keyframes tab-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-tab-content{animation:tab-fade-in .2s ease-out}@media(prefers-reduced-motion:reduce){.btn:active:not(:disabled){transform:none}.animate-list-item,.animate-tab-content{animation:none}}
