.monthly-report{background:#ffffff0d;border-radius:16px;padding:20px;margin-top:20px;overflow-x:hidden}.report-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:10px}.report-title{font-size:1.1rem;font-weight:600}.report-tabs{display:flex;gap:8px}.report-tab{padding:8px 16px;border-radius:8px;border:1px solid var(--border-primary);background:var(--bg-secondary);font-size:14px;cursor:pointer}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}.summary-grid .card{text-align:center}.breakdown-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}.breakdown-wrap>div{background:var(--bg-secondary);padding:12px;border-radius:12px;border:1px solid var(--border-primary)}.daily-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:8px}.pill{padding:6px 12px;border-radius:999px;border:1px solid var(--border-primary);background:var(--bg-secondary);font-size:13px;cursor:pointer}.pill.is-active{background:var(--accent-primary);color:#fff}.daily-list{max-height:600px;overflow-y:auto}.day-card{margin-bottom:16px;border:1px solid var(--border-primary);border-radius:12px;overflow:hidden;background:var(--bg-secondary)}.day-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-primary)}.day-total.income{color:#22c55e}.day-total.expense{color:var(--error)}.tx-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-primary)}.tx-left{display:flex;gap:10px;align-items:center}.tx-icon{font-size:18px}.tx-title{font-weight:600}.tx-cat{font-size:12px;opacity:.7;text-transform:capitalize}.tx-amt.income{color:#22c55e;font-weight:700}.tx-amt.expense{color:var(--error);font-weight:700}.report-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.report-tabs{display:flex;gap:10px}.report-tab{padding:8px 16px;border-radius:8px;border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:14px}.report-tab.is-active{background:var(--accent-primary);color:#fff}@media (max-width: 600px){.report-header{flex-direction:column;gap:12px;align-items:flex-start}.report-tabs{flex-wrap:wrap;gap:6px}.report-tab{flex:1;min-width:120px;text-align:center}}.mr-breakdown-grid{display:grid!important;grid-template-columns:1fr 1fr!important;gap:20px!important;max-width:100%!important}.mr-breakdown-col{background:#ffffff0a!important;border:1px solid var(--border-primary)!important;border-radius:14px!important;padding:16px!important}.mr-breakdown-col>h5{margin:4px 0 12px!important;opacity:.9!important;font-weight:700!important}.mr-breakdown-list{display:flex!important;flex-direction:column!important;gap:14px!important}.mr-breakdown-item{display:flex!important;justify-content:space-between!important;align-items:center!important;padding:14px 16px!important;border-radius:12px!important;background:var(--bg-secondary)!important;border:1px solid var(--border-primary)!important;box-shadow:0 3px 10px var(--shadow-light)!important}.mr-breakdown-left{display:flex!important;align-items:center!important;gap:12px!important}.mr-breakdown-left .mr-icon{font-size:20px!important}.mr-breakdown-left .mr-title{font-weight:700!important;font-size:1.1rem!important;text-transform:capitalize!important}.mr-breakdown-left .mr-meta{font-size:12px!important;opacity:.75!important;margin-top:2px!important}.mr-amount{font-weight:800!important;letter-spacing:.2px!important}.mr-breakdown-col.expenses .mr-amount{color:var(--error)!important}.mr-breakdown-col.income .mr-amount{color:#22c55e!important}@media (max-width: 768px){.mr-breakdown-grid{grid-template-columns:1fr!important}}@media (max-width: 480px){.monthly-report{padding:12px;border-radius:12px}.report-title{font-size:1rem}.summary-grid,.breakdown-wrap{grid-template-columns:1fr}.report-tabs{width:100%;justify-content:space-around}.daily-controls{flex-direction:column;align-items:flex-start}.day-head{flex-direction:column;align-items:flex-start;gap:6px}.tx-row{flex-direction:column;align-items:flex-start;gap:4px}}.category-manager{width:min(100%,1080px);margin:0 auto;color:var(--text-primary)}.category-header{margin-bottom:var(--space-8)}.header-content{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.header-content h2{margin:0;font-size:clamp(var(--text-xl),2vw,var(--text-3xl));letter-spacing:-.025em;text-wrap:balance}.back-button,.add-button,.close-button,.action-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;font:inherit;cursor:pointer;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base),transform var(--transition-base)}.back-button{padding:var(--space-2) var(--space-3);color:var(--text-secondary);background:transparent;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-weight-semibold)}.back-button:hover{color:var(--text-primary);background:var(--bg-secondary)}.add-button{min-height:40px;padding:var(--space-2) var(--space-4);color:var(--text-inverse);background:var(--accent);border-color:var(--accent);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-xs)}.add-button:hover{background:var(--accent-strong);border-color:var(--accent-strong);transform:translateY(-1px)}.category-content{display:grid;gap:var(--space-6)}.category-stats{padding:0}.stats-card{padding:var(--space-5) var(--space-6);background:var(--bg-elevated);border:1px solid var(--border-primary);border-radius:var(--radius-lg)}.stats-card h3{margin:0 0 var(--space-4);font-size:var(--text-base);font-weight:var(--font-weight-semibold);letter-spacing:-.01em}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.stat-item{display:grid;gap:var(--space-1)}.stat-label{color:var(--text-secondary);font-size:var(--text-sm)}.stat-value{color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-xl);font-weight:var(--font-weight-semibold)}.category-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-3)}.category-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:96px;padding:var(--space-4);background:var(--bg-elevated);border:1px solid var(--border-primary);border-radius:var(--radius-lg);animation:categoryItemIn var(--transition-slow) both;transition:border-color var(--transition-base),background-color var(--transition-base),transform var(--transition-base)}.category-item:hover{background:var(--bg-secondary);border-color:var(--border-secondary);transform:translateY(-1px)}.category-info{display:flex;align-items:center;gap:var(--space-3);min-width:0}.category-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex:0 0 44px;border-radius:var(--radius-md);font-size:21px;line-height:1;box-shadow:inset 0 0 0 1px #ffffff47}.category-details{min-width:0}.category-details h4{margin:0 0 var(--space-1);color:var(--text-primary);font-size:var(--text-base);font-weight:var(--font-weight-semibold);text-transform:capitalize}.category-details p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--line-height-normal)}.category-actions{display:inline-flex;gap:var(--space-2);flex-shrink:0}.action-button,.close-button{width:36px;height:36px;padding:0;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary)}.action-button:hover,.close-button:hover{transform:translateY(-1px)}.edit-button:hover{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-soft)}.delete-button:hover:not(:disabled){color:var(--expense);background:var(--expense-soft);border-color:var(--expense-soft)}.delete-button:disabled{color:var(--text-disabled);cursor:not-allowed;opacity:.65}.empty-state{grid-column:1 / -1;display:grid;justify-items:center;gap:var(--space-3);padding:var(--space-12) var(--space-6);text-align:center;background:var(--bg-elevated);border:1px dashed var(--border-secondary);border-radius:var(--radius-lg)}.empty-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;color:var(--accent);background:var(--accent-soft);border-radius:var(--radius-md)}.empty-state h3,.empty-state p{margin:0}.empty-state h3{font-size:var(--text-lg)}.empty-state p{max-width:42ch;color:var(--text-secondary);font-size:var(--text-sm)}.loading-container{display:grid;justify-items:center;gap:var(--space-3);min-height:220px;padding:var(--space-12);color:var(--text-secondary)}.loading-container p{margin:0}.spinner{width:32px;height:32px;border:3px solid var(--border-primary);border-top-color:var(--accent);border-radius:var(--radius-full);animation:categorySpin .8s linear infinite}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal-backdrop);display:grid;place-items:center;padding:var(--space-4);background:var(--bg-overlay);animation:fadeIn var(--transition-base)}.modal-content{width:min(100%,520px);max-height:min(720px,calc(100vh - 32px));overflow-y:auto;padding:var(--space-6);background:var(--bg-elevated);border:1px solid var(--border-secondary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);animation:scaleIn var(--transition-base)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border-primary)}.modal-header h3{margin:0;font-size:var(--text-xl);letter-spacing:-.02em}.modal-form{padding-top:var(--space-5)}.modal-form .form-group{margin-bottom:var(--space-5)}.modal-form label{display:block;margin-bottom:var(--space-2);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-weight-semibold)}.modal-form input{width:100%;padding:var(--space-3) var(--space-4);color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-md);font:inherit}.modal-form input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-soft)}.form-errors{margin-bottom:var(--space-5);padding:var(--space-3) var(--space-4);color:var(--expense);background:var(--expense-soft);border:1px solid color-mix(in oklch,var(--expense) 35%,var(--border-primary));border-radius:var(--radius-md)}.error-message{margin:var(--space-1) 0;font-size:var(--text-sm)}.icon-selector,.color-selector{display:flex;flex-wrap:wrap;gap:var(--space-2)}.icon-option{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-md);font:inherit;font-size:20px;cursor:pointer;transition:background-color var(--transition-base),border-color var(--transition-base),transform var(--transition-base)}.icon-option:hover,.icon-option.selected{background:var(--accent-soft);border-color:var(--accent);transform:translateY(-1px)}.color-option{position:relative;width:36px;height:36px;padding:0;border:3px solid transparent;border-radius:var(--radius-full);cursor:pointer;box-shadow:inset 0 0 0 1px #00000024;transition:transform var(--transition-base),border-color var(--transition-base)}.color-option:hover,.color-option.selected{border-color:var(--text-primary);transform:scale(1.08)}.checkmark{color:#fff;font-size:var(--text-sm);font-weight:var(--font-weight-bold);text-shadow:0 1px 2px rgba(0,0,0,.4)}.preview-section{margin:var(--space-6) 0 0;padding:var(--space-4);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-md)}.preview-section h4{margin:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:.08em;text-transform:uppercase}.category-preview{display:flex;align-items:center;gap:var(--space-3)}.category-preview span{color:var(--text-primary);font-weight:var(--font-weight-semibold);text-transform:capitalize}.modal-actions{display:flex;gap:var(--space-3);margin-top:var(--space-6)}.modal-actions .btn{flex:1;width:auto}@keyframes categoryItemIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes categorySpin{to{transform:rotate(360deg)}}@media (max-width: 640px){.header-content{align-items:flex-start;flex-direction:column}.add-button{width:100%}.stats-grid,.category-list{grid-template-columns:1fr}.modal-content{padding:var(--space-4)}}.admin-page{min-height:100vh;padding:clamp(var(--space-4),3vw,var(--space-8));background:var(--bg-primary);color:var(--text-primary)}.admin-back{display:inline-flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-8);padding:var(--space-2) var(--space-3);color:var(--text-secondary);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background-color var(--transition-base),color var(--transition-base),border-color var(--transition-base)}.admin-back:hover{color:var(--text-primary);background:var(--bg-secondary);border-color:var(--border-primary)}.admin-hero{max-width:760px;margin:0 auto var(--space-8);text-align:center}.admin-hero h1{margin:0;color:var(--text-primary);font-size:clamp(var(--text-3xl),5vw,var(--text-5xl));font-weight:var(--font-weight-extrabold);letter-spacing:-.04em;text-wrap:balance}.admin-hero p{margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:var(--text-base)}.admin-tabs{display:flex;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-8)}.admin-tab{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:42px;padding:var(--space-2) var(--space-4);color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-primary);border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base),transform var(--transition-base)}.admin-tab:hover{color:var(--text-primary);border-color:var(--border-secondary);transform:translateY(-1px)}.admin-tab.active{color:var(--text-inverse);background:var(--accent);border-color:var(--accent)}.admin-tab svg{color:var(--accent)}.admin-tab.active svg{color:var(--accent-mint)}.admin-content{width:min(100%,1200px);margin:0 auto}.admin-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4);margin-bottom:var(--space-8)}.admin-stat-card{min-height:156px;padding:var(--space-5);background:var(--bg-elevated);border:1px solid var(--border-primary);border-radius:var(--radius-lg);text-align:left;transition:border-color var(--transition-base),transform var(--transition-base)}.admin-stat-card:hover{border-color:var(--border-secondary);transform:translateY(-2px)}.admin-stat-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;margin-bottom:var(--space-4);border-radius:var(--radius-md)}.admin-stat-value{margin-bottom:var(--space-1);color:var(--text-primary);font-family:var(--font-mono);font-size:clamp(var(--text-xl),2.5vw,var(--text-2xl));font-weight:var(--font-weight-bold);overflow-wrap:anywhere}.admin-stat-label{color:var(--text-secondary);font-size:var(--text-sm)}.tone-info .admin-stat-icon{color:var(--transport);background:var(--transport-soft)}.tone-success .admin-stat-icon{color:var(--income);background:var(--income-soft)}.tone-warning .admin-stat-icon{color:var(--expense);background:var(--expense-soft)}.tone-accent .admin-stat-icon{color:var(--accent);background:var(--accent-soft)}.tone-danger .admin-stat-icon{color:var(--entertainment);background:var(--entertainment-soft)}.tone-neutral .admin-stat-icon{color:var(--text-secondary);background:var(--bg-tertiary)}.admin-page table th{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase}.admin-page table td,.admin-page table th{border-color:var(--border-primary)}@media (max-width: 640px){.admin-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.admin-tab{padding-inline:var(--space-2);font-size:var(--text-xs)}}:root{--bg-primary: oklch(98.2% .004 95);--bg-secondary: oklch(96.3% .006 95);--bg-tertiary: oklch(93% .008 95);--bg-elevated: oklch(99.4% .002 95);--bg-overlay: rgba(24, 20, 18, .45);--text-primary: oklch(21% .012 95);--text-secondary: oklch(46% .01 95);--text-tertiary: oklch(64% .008 95);--text-disabled: oklch(80% .006 95);--text-inverse: #ffffff;--border-primary: oklch(90% .006 95);--border-secondary: oklch(83% .008 95);--accent: oklch(38% .09 165);--accent-strong: oklch(30% .09 165);--accent-soft: oklch(93% .035 165);--accent-mint: oklch(72% .13 165);--border-focus: var(--accent);--ink: oklch(18% .012 95);--ink-text-dim: oklch(58% .012 95);--ink-border: oklch(28% .012 95);--income: oklch(53% .13 155);--income-soft: oklch(94% .045 155);--expense: oklch(52% .135 40);--expense-soft: oklch(94.5% .04 40);--food: oklch(55% .13 55);--food-soft: oklch(94% .045 55);--transport: oklch(50% .09 250);--transport-soft: oklch(94% .03 250);--shopping: oklch(52% .12 320);--shopping-soft: oklch(94% .035 320);--bills: oklch(52% .1 200);--bills-soft: oklch(94% .03 200);--entertainment: oklch(55% .13 10);--entertainment-soft: oklch(94% .04 10);--other: oklch(60% .01 95);--other-soft: oklch(94% .006 95);--color-primary-50: var(--accent-soft);--color-primary-100: oklch(88% .05 165);--color-primary-200: oklch(80% .07 165);--color-primary-300: oklch(70% .09 165);--color-primary-400: oklch(58% .1 165);--color-primary-500: oklch(45% .095 165);--color-primary-600: var(--accent);--color-primary-700: var(--accent-strong);--color-primary-800: oklch(25% .07 165);--color-primary-900: oklch(18% .05 165);--color-success-50: var(--income-soft);--color-success-500: var(--income);--color-success-600: oklch(47% .13 155);--color-success-700: oklch(40% .12 155);--color-error-50: var(--expense-soft);--color-error-500: var(--expense);--color-error-600: oklch(46% .135 40);--color-error-700: oklch(39% .13 40);--color-warning-50: oklch(96% .04 80);--color-warning-500: oklch(58% .14 75);--color-warning-600: oklch(50% .13 75);--color-info-50: oklch(96% .02 220);--color-info-500: oklch(55% .09 220);--color-info-600: oklch(47% .09 220);--accent-primary: var(--accent);--accent-secondary: var(--accent-strong);--success: var(--income);--error: var(--expense);--warning: var(--color-warning-500);--shadow-light: rgba(24, 20, 15, .08);--shadow-medium: rgba(24, 20, 15, .14);--shadow-xs: 0 1px 2px 0 rgba(24, 20, 15, .05);--shadow-sm: 0 1px 3px 0 rgba(24, 20, 15, .08), 0 1px 2px -1px rgba(24, 20, 15, .06);--shadow-md: 0 4px 6px -1px rgba(24, 20, 15, .08), 0 2px 4px -2px rgba(24, 20, 15, .06);--shadow-lg: 0 10px 15px -3px rgba(24, 20, 15, .09), 0 4px 6px -4px rgba(24, 20, 15, .06);--shadow-xl: 0 20px 25px -5px rgba(24, 20, 15, .1), 0 8px 10px -6px rgba(24, 20, 15, .06);--shadow-2xl: 0 25px 50px -12px rgba(24, 20, 15, .22);--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;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--font-sans: "Instrument Sans", ui-sans-serif, -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--transition-slower: .5s cubic-bezier(.4, 0, .2, 1);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080}[data-theme=dark]{--bg-primary: oklch(18% .012 95);--bg-secondary: oklch(22% .012 95);--bg-tertiary: oklch(27% .012 95);--bg-elevated: oklch(22% .012 95);--bg-overlay: rgba(0, 0, 0, .6);--text-primary: oklch(96% .006 95);--text-secondary: oklch(80% .008 95);--text-tertiary: oklch(62% .01 95);--text-disabled: oklch(45% .01 95);--text-inverse: oklch(18% .012 95);--border-primary: oklch(30% .012 95);--border-secondary: oklch(38% .012 95);--ink: oklch(12% .012 95);--ink-border: oklch(24% .012 95);--income-soft: oklch(30% .06 155);--expense-soft: oklch(30% .06 40);--food-soft: oklch(30% .06 55);--transport-soft: oklch(30% .05 250);--shopping-soft: oklch(30% .055 320);--bills-soft: oklch(30% .05 200);--entertainment-soft: oklch(30% .06 10);--other-soft: oklch(30% .01 95);--accent-soft: oklch(28% .05 165);--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .4), 0 1px 2px -1px rgba(0, 0, 0, .4);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 8px 10px -6px rgba(0, 0, 0, .5);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .6);--shadow-light: rgba(0, 0, 0, .3);--shadow-medium: rgba(0, 0, 0, .4)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--line-height-normal);color:var(--text-primary);background-color:var(--bg-primary);transition:background-color var(--transition-base),color var(--transition-base);overflow-x:hidden}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.text-5xl{font-size:var(--text-5xl)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.font-extrabold{font-weight:var(--font-weight-extrabold)}.m-0{margin:0}.m-1{margin:var(--space-1)}.m-2{margin:var(--space-2)}.m-3{margin:var(--space-3)}.m-4{margin:var(--space-4)}.m-6{margin:var(--space-6)}.m-8{margin:var(--space-8)}.p-0{padding:0}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.card{background:var(--bg-elevated);border:1px solid var(--border-primary);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--border-secondary)}.card-header{margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border-primary)}.card-title{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0}.card-description{font-size:var(--text-sm);color:var(--text-secondary);margin-top:var(--space-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:1;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);text-decoration:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);color:var(--text-inverse);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-primary)}.btn-secondary:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--border-secondary)}.btn-danger{background:var(--color-error-500);color:var(--text-inverse)}.btn-danger:hover:not(:disabled){background:var(--color-error-600)}.btn-ghost{background:transparent;color:var(--text-primary);border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--border-primary)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);gap:var(--space-1)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:40px;padding:var(--space-2) var(--space-4);border:1px solid var(--border-secondary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.theme-toggle:hover{background:var(--bg-tertiary);border-color:var(--accent)}.theme-toggle svg{color:var(--accent)}.category-icon-picker{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-2)}.category-icon-option{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:40px;padding:var(--space-2);border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.category-icon-option:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.category-icon-option.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.category-icon-option:disabled{cursor:not-allowed;opacity:.55;transform:none}@media (max-width: 480px){.category-icon-picker{grid-template-columns:repeat(6,minmax(0,1fr))}}.form-group{margin-bottom:var(--space-5)}.form-label{display:block;font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);margin-bottom:var(--space-2)}.form-input,.form-select,.form-textarea{width:100%;padding:var(--space-3) var(--space-4);font-size:var(--text-base);font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-md);transition:all var(--transition-base);-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #3b82f61a;background:var(--bg-primary)}.form-input::placeholder{color:var(--text-tertiary)}.form-select{background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:40px}[data-theme=dark] .form-select{background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e")}@media (max-width: 640px){.form-input,.form-select,.form-textarea{font-size:16px}}.form-error{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--color-error-500)}.form-help{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);white-space:nowrap}.badge-primary{background:var(--color-primary-100);color:var(--color-primary-700)}[data-theme=dark] .badge-primary{background:var(--color-primary-900);color:var(--color-primary-200)}.badge-success{background:var(--color-success-50);color:var(--color-success-700)}[data-theme=dark] .badge-success{background:var(--color-success-900);color:var(--color-success-200)}.badge-error{background:var(--color-error-50);color:var(--color-error-700)}[data-theme=dark] .badge-error{background:var(--color-error-900);color:var(--color-error-200)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fadeIn var(--transition-base)}.animate-slide-up{animation:slideUp var(--transition-slow)}.animate-scale-in{animation:scaleIn var(--transition-base)}@media (max-width: 640px){.container{padding:0 var(--space-4)}.card{padding:var(--space-4);border-radius:var(--radius-lg)}.btn{width:100%;justify-content:center}}*:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}button:focus-visible,a:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}body{background:var(--bg-primary);min-height:100vh;line-height:1.6;color:var(--text-primary);overflow-x:hidden;transition:background-color .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:radial-gradient(circle at 25% 25%,var(--shadow-light) 0%,transparent 50%),radial-gradient(circle at 75% 75%,var(--shadow-light) 0%,transparent 50%);pointer-events:none;z-index:-1;transition:background-image .3s ease}.app{min-height:100vh;padding-top:80px}@media (max-width: 768px){.app{padding-top:60px}}.container{max-width:1200px;margin:0 auto;padding:20px}@media (max-width: 768px){.container{padding:16px}}@media (max-width: 480px){.container{padding:12px}}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;flex-wrap:wrap;gap:15px}.header-buttons{display:flex;gap:10px;flex-wrap:wrap}.header-button{padding:8px 16px;border-radius:12px;border:none;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease;white-space:nowrap}.admin-btn{background:var(--accent);color:var(--text-inverse)}.logout-btn{background:var(--expense);color:var(--text-inverse)}.floating-add-button{position:fixed;bottom:30px;right:30px;z-index:1000}.fab{width:60px;height:60px;border-radius:50%;background:var(--accent);border:none;color:#fff;font-size:24px;font-weight:700;cursor:pointer;box-shadow:0 4px 20px var(--shadow-medium);transition:all .3s ease;display:flex;align-items:center;justify-content:center}.fab:hover{transform:translateY(-2px);box-shadow:0 6px 25px var(--shadow-medium);background:var(--accent-strong)}.fab:active{transform:translateY(0);box-shadow:0 2px 15px var(--shadow-medium)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .2s ease-out}.modal-content{background:var(--bg-secondary);border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 30px;border-bottom:1px solid var(--border-primary)}.modal-header h2{margin:0;color:var(--text-primary);font-size:1.5rem;font-weight:600}.modal-close-btn{background:none;border:none;font-size:24px;color:var(--text-secondary);cursor:pointer;padding:5px;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.modal-close-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.container{padding:15px}.header{flex-direction:column;text-align:center;gap:15px;margin-bottom:20px}.header-buttons{justify-content:center;width:100%}.header-button{padding:10px 20px;font-size:.85rem;min-width:120px}.floating-add-button{bottom:20px;right:20px}.fab{width:56px;height:56px;font-size:22px}.modal-overlay{padding:10px}.modal-content{max-width:100%;margin:0}.modal-header{padding:15px 20px}.modal-header h2{font-size:1.25rem}}@media (max-width: 480px){.container{padding:10px}.header{margin-bottom:15px}.header-buttons{flex-direction:column;width:100%;gap:8px}.header-button{width:100%;max-width:200px;margin:0 auto;padding:12px 20px;font-size:.9rem}.floating-add-button{bottom:15px;right:15px}.fab{width:52px;height:52px;font-size:20px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}.form-group input:disabled,.form-group select:disabled{opacity:.6;cursor:not-allowed}.card>div::-webkit-scrollbar{width:6px}.card>div::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.card>div::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.card>div::-webkit-scrollbar-thumb:hover{background:#ffffff80}.btn,.action-btn,.header-button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}@media (max-width: 768px){.btn,.action-btn,.header-button{min-height:44px;display:flex;align-items:center;justify-content:center}}@media (max-width: 768px){.header-buttons>div{font-size:.8rem!important;padding:6px 12px!important;text-align:center;max-width:250px;margin:0 auto}.header-buttons>div span:first-child{display:none}}@media (max-width: 480px){.header-buttons{gap:10px!important}.header-buttons>div{font-size:.75rem!important;padding:8px 12px!important}}input[type=date]::-webkit-calendar-picker-indicator{background:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3e%3c/rect%3e%3cline x1='16' y1='2' x2='16' y2='6'%3e%3c/line%3e%3cline x1='8' y1='2' x2='8' y2='6'%3e%3c/line%3e%3cline x1='3' y1='10' x2='21' y2='10'%3e%3c/line%3e%3c/svg%3e") no-repeat;background-size:18px;width:18px;height:18px;cursor:pointer;opacity:.7;transition:opacity .2s ease}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{background:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3e%3c/rect%3e%3cline x1='16' y1='2' x2='16' y2='6'%3e%3c/line%3e%3cline x1='8' y1='2' x2='8' y2='6'%3e%3c/line%3e%3cline x1='3' y1='10' x2='21' y2='10'%3e%3c/line%3e%3c/svg%3e") no-repeat;background-size:18px}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1;transform:scale(1.1)}input[type=date]::-webkit-datetime-edit{color:var(--text-primary);padding:0}input[type=date]::-webkit-datetime-edit-fields-wrapper{padding:0}input[type=date]::-webkit-datetime-edit-text{color:var(--text-secondary);padding:0 2px}input[type=date]::-webkit-datetime-edit-month-field,input[type=date]::-webkit-datetime-edit-day-field,input[type=date]::-webkit-datetime-edit-year-field{color:var(--text-primary);background:transparent;border:none;padding:2px;border-radius:4px;transition:background-color .2s ease}input[type=date]::-webkit-datetime-edit-month-field:focus,input[type=date]::-webkit-datetime-edit-day-field:focus,input[type=date]::-webkit-datetime-edit-year-field:focus{background:var(--bg-tertiary);outline:none}input[type=date]{position:relative;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:12px 16px;color:var(--text-primary);font-size:16px;outline:none;width:100%;transition:all .2s ease;cursor:pointer}input[type=date]:hover{border-color:var(--accent-primary);box-shadow:0 0 0 3px #3b82f61a}input[type=date]:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #3b82f633}input[type=date]:disabled{opacity:.6;cursor:not-allowed;background:var(--bg-tertiary)}@media (max-width: 768px){input[type=date]{padding:14px 16px;font-size:16px}input[type=date]::-webkit-calendar-picker-indicator{background-size:20px;width:20px;height:20px}}.toast{position:fixed;top:20px;right:20px;padding:12px 16px;border-radius:8px;color:#fff;font-weight:500;box-shadow:0 4px 12px #00000026;z-index:1000;display:flex;align-items:center;justify-content:space-between;min-width:300px;animation:slideIn .3s ease-out}.toast-success{background-color:var(--success)}.toast-error{background-color:var(--error)}.toast-warning{background-color:var(--warning)}.toast-info{background-color:var(--accent-primary)}.toast-close{background:none;border:none;color:#fff;font-size:18px;font-weight:700;cursor:pointer;margin-left:12px;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.toast-close:hover{opacity:.8}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.category-dropdown{position:relative}@media (max-width: 768px){.category-dropdown>div:last-child{left:-10px!important;right:-10px!important;max-width:calc(100vw - 40px)!important}}@media (max-width: 480px){.category-dropdown>div:last-child{left:-15px!important;right:-15px!important;max-width:calc(100vw - 30px)!important}}
