@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";.login-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 24px 40px}.login-hero{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 0 40px}.login-hero h1{font-size:36px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.login-hero p{font-size:15px;color:var(--text-secondary);letter-spacing:.02em}.login-form{display:flex;flex-direction:column;gap:12px}.input-field{width:100%;padding:16px 20px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-size:16px;font-family:inherit;background:var(--bg-card);transition:all .2s;color:var(--text-primary)}.input-field:focus{outline:none;border-color:var(--accent-gold);background:#fff}.btn-primary{width:100%;padding:18px;background:var(--bg-dark);color:#f8f2ea;border:none;border-radius:var(--radius-sm);font-size:17px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit;margin-top:8px}.btn-primary:active{transform:scale(.98)}.btn-text{width:100%;padding:12px;background:none;color:var(--text-secondary);border:none;font-size:14px;cursor:pointer;font-family:inherit}.voice-section{padding:24px 20px;display:flex;flex-direction:column;align-items:center;gap:16px}.voice-button{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,var(--accent-gold),var(--accent-dark-gold));border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;box-shadow:var(--shadow-float);transition:all .3s cubic-bezier(.4,0,.2,1);color:#fff;font-size:40px}.voice-button:active{transform:scale(.95)}.voice-button.listening{animation:pulse-ring 1.5s infinite}@keyframes pulse-ring{0%{box-shadow:0 0 #c3976a66}50%{box-shadow:0 0 0 20px #c3976a00}to{box-shadow:0 0 #c3976a00}}.voice-hint{font-size:14px;color:var(--text-secondary);font-weight:500}.voice-transcript{padding:12px 18px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-primary);font-size:15px;max-width:100%}.manual-toggle{padding:10px 24px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.manual-toggle:active{transform:scale(.98);background:#0000000d}.manual-form{width:100%;display:flex;flex-direction:column;gap:12px}.form-row{display:flex;gap:12px}.manual-form input,.manual-form select{padding:12px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-size:15px;background:var(--bg-card)}.form-row select,.form-row input{flex:1}.form-actions{display:flex;gap:12px}.form-actions button{flex:1;padding:12px;border:none;border-radius:var(--radius-sm);font-size:15px;cursor:pointer;transition:all .2s}.submit-btn{background:linear-gradient(135deg,var(--accent-gold),var(--accent-dark-gold));color:#fff}.cancel-btn{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-secondary)}.form-actions button:active{transform:scale(.98)}.transaction-section{flex:1;background:#fff;border-radius:24px 24px 0 0;padding:24px 20px 0}.section-header h3{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:16px}.empty-state{text-align:center;padding:60px 20px;color:var(--text-secondary);font-size:14px}.transaction-list{display:flex;flex-direction:column;gap:10px}.transaction-item{display:flex;flex-direction:column;padding:14px 16px;background:var(--bg-page);border-radius:var(--radius-sm);gap:12px}.item-main{display:flex;justify-content:space-between;align-items:center;gap:16px;cursor:pointer}.item-left{flex:1;min-width:0}.item-category{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.item-note{font-size:13px;color:var(--text-secondary);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-date{font-size:12px;color:var(--text-light)}.item-amount{font-size:18px;font-weight:700;white-space:nowrap}.item-amount.expense{color:var(--expense-to)}.item-amount.income{color:var(--income-to)}.item-actions{display:flex;gap:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.05)}.item-actions button{flex:1;padding:8px 16px;border:none;border-radius:8px;font-size:14px;cursor:pointer;background:var(--bg-page);border:1px solid rgba(0,0,0,.1);transition:all .2s}.item-actions button:active{transform:scale(.98);background:#0000000d}.edit-form{display:flex;flex-direction:column;gap:8px;width:100%}.edit-form input,.edit-form select{padding:8px;border:1px solid #ddd;border-radius:8px;font-size:14px}.edit-form button{padding:8px 16px;border:none;border-radius:8px;font-size:14px;cursor:pointer;background:var(--accent);color:#fff}.edit-form button:last-child{background:#ccc}.page{min-height:100vh;min-height:100dvh;padding:0 0 90px;display:flex;flex-direction:column}.page-header{padding:20px 20px 16px;background:var(--bg-page)}.page-header h2{font-size:28px;font-weight:700;color:var(--text-primary)}.stats-content{padding:20px}.month-selector{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:18px;margin-bottom:18px}.month-label{font-size:12px;color:var(--text-secondary);margin-bottom:10px}.month-display{display:flex;justify-content:space-between;align-items:center}.month-text{font-size:24px;font-weight:650;color:var(--text-primary)}.month-nav{display:flex;gap:8px}.month-btn{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--bg-dark);color:#f8f2ea;border:none;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}.month-btn:active{transform:scale(.95)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.stat-card{border-radius:var(--radius-lg);padding:18px;color:#f5f6f3;min-height:146px;display:flex;flex-direction:column}.income-card{background:linear-gradient(135deg,var(--income-from),var(--income-to))}.expense-card{background:linear-gradient(135deg,var(--expense-from),var(--expense-to))}.stat-label{font-size:13px;opacity:.8;margin-bottom:auto}.stat-value{font-size:30px;font-weight:700;margin-top:34px}.balance-card{background:var(--bg-glass);border-radius:var(--radius-lg);padding:18px;border:1px solid var(--border-subtle)}.balance-row{display:flex;justify-content:space-between;font-size:14px;margin-bottom:10px;color:var(--text-primary)}.balance-row strong{font-weight:700}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#ffffffd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border-subtle);display:flex;padding:8px 16px calc(8px + env(safe-area-inset-bottom));z-index:100;gap:8px}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 12px;background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);font-family:inherit;color:var(--text-secondary)}.nav-item:active{transform:scale(.96)}.nav-item.active{background:var(--bg-dark);color:#f8f2ea}.nav-label{font-size:12px;font-weight:600;letter-spacing:.02em}@media (min-width: 768px){.bottom-nav{max-width:430px;left:50%;transform:translate(-50%)}}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--bg-page: #f6f1ea;--bg-card: rgba(255, 255, 255, .58);--bg-glass: rgba(255, 255, 255, .62);--bg-dark: #2f241d;--text-primary: #2a211b;--text-secondary: #8f7863;--text-light: rgba(143, 120, 99, .7);--accent-gold: #c3976a;--accent-dark-gold: #8b5f3c;--income-from: #1d473f;--income-to: #2f7a6d;--expense-from: #7f2230;--expense-to: #cb5f71;--border-subtle: rgba(90, 67, 47, .08);--border-light: rgba(90, 67, 47, .06);--radius-sm: 14px;--radius-md: 22px;--radius-lg: 24px;--radius-xl: 28px;--radius-pill: 999px;--shadow-card: 0 2px 12px rgba(90, 67, 47, .06);--shadow-float: 0 4px 20px rgba(90, 67, 47, .1);--spacing-xs: 8px;--spacing-sm: 12px;--spacing-md: 18px;--spacing-lg: 24px;--spacing-xl: 32px}html,body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg-page);color:var(--text-primary);line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,#root{min-height:100vh;min-height:100dvh}@media (min-width: 768px){body{display:flex;align-items:center;justify-content:center;background:#ebe5dc}#root{width:100%;max-width:430px;min-height:100vh;min-height:100dvh;background:var(--bg-page);box-shadow:0 0 60px #5a432f26;position:relative}}
