*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#0d0d0d;--bg-secondary:#1a1a1a;--bg-surface:#242424;--bg-card:#2a2a2a;--bg-elevated:#333;--bg-input:#1a1a1a;--text-primary:#fff;--text-secondary:#aaa;--text-tertiary:#777;--text-muted:#555;--accent:#00e676;--accent-dim:#00e67626;--accent-glow:#00e67614;--accent-text:#00e676;--accent-deep:#00c96a;--accent-shadow:#00e6764d;--accent-ink:#06280f;--cal-ink:#ffffff73;--cal-ink-strong:#fff;--danger:#ff5252;--danger-dim:#ff525226;--warn:#ffb74d;--info:#4fc3f7;--border:#ffffff14;--border-active:#00e6764d;--border-focus:#00e67680;--nav-bg:#1a1a1ad9;--hover-subtle:#ffffff05;--hover-light:#ffffff08;--hover:#ffffff0a;--hover-strong:#ffffff0f;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--font-mono:"SF Mono", "Cascadia Code", "Fira Code", monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--nav-height:64px;--max-width:600px}.theme-light{--bg-primary:#f2f2f7;--bg-secondary:#fff;--bg-surface:#fff;--bg-card:#f8f8fa;--bg-elevated:#e5e5ea;--bg-input:#f2f2f7;--text-primary:#1c1c1e;--text-secondary:#636366;--text-tertiary:#8e8e93;--text-muted:#aeaeb2;--accent:#00c853;--accent-dim:#00c8531f;--accent-glow:#00c8530f;--accent-text:#00c853;--accent-deep:#00b865;--accent-shadow:#00c85340;--accent-ink:#06280f;--cal-ink:#00000080;--cal-ink-strong:#1c1c1e;--danger:#ff3b30;--danger-dim:#ff3b301a;--warn:#ff9500;--info:#007aff;--border:#00000014;--border-active:#00c85340;--border-focus:#00c85366;--nav-bg:#f2f2f7d9;--hover-subtle:#00000005;--hover-light:#00000008;--hover:#0000000a;--hover-strong:#0000000f}.theme-vibrant{--bg-primary:#f5f5f7;--bg-secondary:#fff;--bg-surface:#fff;--bg-card:#fff;--bg-elevated:#efeff4;--bg-input:#efeff4;--text-primary:#1c1c1e;--text-secondary:#636366;--text-tertiary:#8e8e93;--text-muted:#aeaeb2;--accent:#f5d547;--accent-text:#c9971b;--accent-deep:#e8c43a;--accent-dim:#f5d5472e;--accent-glow:#f5d5471a;--accent-shadow:#c9971b47;--accent-ink:#1c1c1e;--danger:#ff3b30;--danger-dim:#ff3b301a;--warn:#ff9500;--info:#007aff;--border:#0000001a;--border-active:#c9971b66;--border-focus:#c9971b8c;--nav-bg:#ffffffdb;--hover-subtle:#00000005;--hover-light:#00000008;--hover:#0000000a;--hover-strong:#0000000f;--cal-ink:#00000080;--cal-ink-strong:#1c1c1e}html,body,#root{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.6;overflow:hidden}input,select,button,textarea{font-family:inherit;font-size:inherit;color:inherit}.app-layout{height:100%;max-width:var(--max-width);flex-direction:column;margin:0 auto;display:flex;position:relative}.app-content{padding-bottom:calc(var(--nav-height) + 16px);-webkit-overflow-scrolling:touch;flex:1;overflow:hidden auto}.app-content::-webkit-scrollbar{width:4px}.app-content::-webkit-scrollbar-track{background:0 0}.app-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.bottom-nav{width:100%;max-width:var(--max-width);height:var(--nav-height);background:var(--nav-bg);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border);z-index:100;justify-content:space-around;align-items:center;padding:4px 8px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-md);white-space:nowrap;background:0 0;border:none;flex-direction:column;align-items:center;gap:3px;padding:6px 10px;font-size:11px;transition:color .2s,background .2s;display:flex}.nav-item svg{width:22px;height:22px;transition:stroke .2s}.nav-item:hover{color:var(--text-secondary);background:var(--hover)}.nav-item.active{color:var(--accent-text)}.nav-item.active svg{stroke:var(--accent-text)}.nav-left,.nav-right{flex:1;align-items:center;display:flex}.nav-left{justify-content:space-around;padding-right:28px}.nav-right{justify-content:space-around;padding-left:28px}.nav-center-btn{background:var(--accent);border:4px solid var(--bg-primary);color:#000;cursor:pointer;width:48px;height:48px;box-shadow:0 4px 16px var(--accent-shadow);border-radius:50%;justify-content:center;align-items:center;margin-top:-20px;transition:transform .2s,box-shadow .2s;display:flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.nav-center-btn:hover{box-shadow:0 6px 24px var(--accent-shadow);transform:translate(-50%)scale(1.08)}.nav-center-btn:active{transform:translate(-50%)scale(.96)}.nav-center-btn svg{stroke:#000}.modal-overlay{z-index:200;background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal-center{width:100%;max-width:var(--max-width)}.modal-card{background:var(--bg-secondary);border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:85vh;padding:24px 20px 32px;animation:.25s slideUp;overflow-y:auto}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header h3{font-size:18px;font-weight:600}.btn-close{background:var(--hover);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:flex}.btn-close:hover{background:var(--hover-strong)}.expense-modal{padding-bottom:40px}.expense-amount-row{justify-content:center;align-items:center;gap:4px;margin-bottom:16px;display:flex}.currency-sign{color:var(--text-secondary);margin-top:4px;font-size:32px;font-weight:300}.expense-amount-input{width:200px;font-size:40px;font-weight:700;font-family:var(--font-mono);border:none;border-bottom:2px solid var(--border);color:var(--text-primary);text-align:center;background:0 0;outline:none;padding:4px 8px;transition:border-color .2s}.expense-amount-input:focus{border-bottom-color:var(--accent)}.expense-amount-input::placeholder{color:var(--text-muted);font-weight:300}.quick-amounts{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:16px;display:flex}.quick-btn{border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;font-size:12px;font-family:var(--font-mono);border-radius:20px;padding:4px 12px;transition:background-color .15s,border-color .15s,color .15s}.quick-btn:hover{border-color:var(--accent);color:var(--accent-text)}.quick-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-text)}.form-row{gap:12px;display:flex}.form-group-half{flex:1}.category-chips{flex-wrap:wrap;gap:6px;display:flex}.category-chips .chip{border-radius:10px;flex-direction:column;gap:3px;width:54px;height:auto;min-height:58px;padding:6px 4px;font-size:20px}.category-chips .chip .chip-icon{font-size:20px;line-height:1}.category-chips .chip .chip-label{color:var(--text-muted);font-size:10px;line-height:1.2}.category-chips .chip.active .chip-label{color:var(--accent-text)}.chip{border:1px solid var(--border);background:var(--bg-surface);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:16px;transition:background-color .15s,border-color .15s;display:flex}.chip:hover{border-color:var(--accent);background:var(--accent-dim)}.chip.active{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 0 2px var(--accent-dim)}.type-chips{flex-wrap:wrap;gap:8px;display:flex}.type-chips .chip{width:auto;height:34px;color:var(--text-secondary);white-space:nowrap;border-radius:17px;padding:0 14px;font-size:13px}.type-chips .chip.active{color:var(--accent-text);background:var(--accent-dim);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent)}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#111;letter-spacing:.3px;cursor:pointer;box-shadow:0 4px 16px var(--accent-dim);border:none;border-radius:16px;padding:14px 24px;font-size:17px;font-weight:700;transition:transform .2s,box-shadow .2s,background-color .2s,color .2s;display:block}.btn-primary:hover{box-shadow:0 6px 24px var(--accent-shadow);transform:translateY(-1px)}.btn-primary:active{box-shadow:0 2px 8px var(--accent-dim);transform:translateY(0)}.btn-primary:disabled{background:var(--bg-surface);color:var(--text-muted);cursor:not-allowed;box-shadow:none;transform:none}.btn-full{width:100%;margin-top:20px}.expense-list-compact{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.expense-item-compact{background:var(--bg-surface);border-radius:var(--radius-md);justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex}.expense-left{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.expense-right{align-items:center;gap:8px;display:flex}.expense-time{font-family:var(--font-mono);color:var(--text-tertiary);min-width:40px;font-size:12px}.expense-cat{color:var(--text-secondary);background:var(--bg-card);border-radius:4px;padding:2px 6px;font-size:11px}.expense-note{min-width:0;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.expense-amount{font-family:var(--font-mono);color:var(--danger);text-align:right;min-width:70px;font-weight:600}.expense-delete{width:22px;height:22px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;transition:background .15s,color .15s;display:flex}.expense-delete:hover{background:var(--danger);color:#fff}.theme-vibrant .nav-center-btn,.theme-light .nav-center-btn{border-color:var(--bg-primary);box-shadow:0 4px 16px var(--accent-shadow)}.theme-light .nav-center-btn svg{stroke:#fff}.theme-vibrant .modal-overlay,.theme-light .modal-overlay{background:#0000004d}.page{padding:20px 16px}.page-title{margin-bottom:20px;font-size:24px;font-weight:600}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.page-header .page-title{margin-bottom:0}.income-clock{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:20px;padding:16px 20px;position:relative;overflow:hidden}.income-clock:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:.5;height:2px;position:absolute;top:0;left:0;right:0}.income-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.income-label{color:var(--text-tertiary);font-size:12px}.income-mode{color:var(--text-muted);background:var(--hover);border-radius:10px;padding:2px 8px;font-size:11px}.income-header .income-mode{margin-left:8px}.income-header .day-toggle{margin-left:auto}.day-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.day-toggle-track{background:color-mix(in srgb, var(--text-tertiary) 42%, transparent);border:1px solid color-mix(in srgb, var(--text-tertiary) 55%, transparent);border-radius:10px;width:38px;height:20px;transition:background .18s,border-color .18s;position:relative}.day-toggle-knob{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .18s cubic-bezier(.3,1.2,.5,1);position:absolute;top:1.5px;left:2px;box-shadow:0 1px 3px #0000004d}.day-toggle.on .day-toggle-track{background:#00c853;border-color:#00c853}.day-toggle.on .day-toggle-knob{transform:translate(18px)}.day-toggle-label{color:var(--text-muted);white-space:nowrap;font-size:11px}.day-toggle.on .day-toggle-label{color:#00c853}.day-toggle.busy{opacity:.55}.day-toggle.err .day-toggle-label{color:#ff3b30}.income-amount{font-family:var(--font-mono);align-items:baseline;gap:4px;margin-bottom:8px;font-size:36px;font-weight:700;line-height:1.2;display:flex}.income-amount.ticking{color:var(--accent-text);text-shadow:0 0 32px var(--accent-shadow)}.income-amount.paused{color:var(--text-secondary)}.income-amount .currency{font-size:20px;font-weight:500}.income-amount .value{letter-spacing:-.5px}.income-amount-list{color:var(--accent-text);font-size:15px;font-weight:700}.income-indicator{color:var(--text-muted);align-items:center;gap:6px;margin-bottom:12px;font-size:12px;display:flex}.dot{background:var(--text-muted);border-radius:50%;width:6px;height:6px}.dot-active{background:var(--accent);box-shadow:0 0 6px var(--accent);animation:1.5s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.income-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}.stat-item{text-align:center;background:var(--hover-light);border-radius:var(--radius-sm);padding:8px 4px}.stat-value{font-family:var(--font-mono);color:var(--text-primary);font-size:13px;font-weight:600;display:block}.stat-label{color:var(--text-muted);margin-top:2px;font-size:10px;display:block}.income-month{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:8px;display:flex}.month-label{color:var(--text-tertiary);font-size:12px}.month-value{font-family:var(--font-mono);font-size:16px;font-weight:600}.income-salary{text-align:center;color:var(--text-muted);margin-top:8px;font-size:11px}.income-oneoff-today{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);color:var(--accent-text);text-align:center;font-size:12px;font-family:var(--font-mono);margin-top:6px;padding:4px 10px}.income-oneoff-month{color:var(--accent-text);text-align:center;font-size:12px;font-family:var(--font-mono);margin-top:6px}.income-hero{text-align:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);margin-bottom:20px;padding:32px 20px;position:relative;overflow:hidden}.income-hero:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:.6;height:2px;position:absolute;top:0;left:0;right:0}.income-hero-label{color:var(--text-tertiary);margin-bottom:12px;font-size:14px}.income-hero-amount{font-family:var(--font-mono);margin-bottom:12px;font-size:48px;font-weight:700;line-height:1.2}.income-hero-amount.ticking{color:var(--accent-text);text-shadow:0 0 40px var(--accent-shadow)}.income-hero-amount.paused{color:var(--text-secondary)}.income-hero-amount .currency{font-size:24px;font-weight:500}.income-hero-status{color:var(--text-muted);justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.status-dot{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.status-dot.dot-active{background:var(--accent);box-shadow:0 0 8px var(--accent);animation:1.5s ease-in-out infinite pulse-dot}.breakdown-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px;display:grid}.breakdown-item{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;padding:14px 8px}.breakdown-item.highlight{border-color:var(--border-active);background:var(--accent-dim)}.bd-value{font-family:var(--font-mono);color:var(--text-primary);font-size:15px;font-weight:600;display:block}.bd-label{color:var(--text-tertiary);margin-top:4px;font-size:11px;display:block}.income-summary{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:16px}.summary-row{border-bottom:1px solid var(--border);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:8px 0;font-size:13px;display:flex}.summary-row:last-child{border-bottom:none}.summary-value{font-family:var(--font-mono);color:var(--text-primary);font-weight:500}.income-tip{color:var(--text-muted);background:var(--hover-subtle);border-radius:var(--radius-md);padding:12px;font-size:12px;line-height:1.8}.stats-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:24px;display:grid}.stats-grid-3{grid-template-columns:repeat(3,1fr)}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:12px 8px;display:flex}.stat-number{font-family:var(--font-mono);color:var(--accent-text);font-size:17px;font-weight:700;display:block}.stat-desc{color:var(--text-tertiary);margin-top:4px;font-size:11px;display:block}.stat-desc-main,.stat-desc-sub{display:block}.dashboard-section{margin-bottom:16px}.section-header{justify-content:space-between;align-items:center;margin-bottom:12px;font-size:14px;font-weight:600;display:flex}.section-total{color:var(--accent-text);font-size:12px;font-weight:400}.ranking-list{flex-direction:column;gap:4px;display:flex}.ranking-item{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);align-items:center;gap:12px;padding:10px 12px;transition:background .15s;display:flex}.ranking-item:hover{background:var(--bg-card)}.rank-num{background:var(--bg-elevated);width:24px;height:24px;color:var(--text-tertiary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.ranking-item:first-child .rank-num{color:var(--warn)}.ranking-item:nth-child(2) .rank-num{color:var(--text-secondary)}.ranking-item:nth-child(3) .rank-num{color:var(--warn);opacity:.6}.rank-info{flex:1;min-width:0}.rank-name{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;display:block;overflow:hidden}.rank-cat{color:var(--text-muted);font-size:11px;display:block}.rank-value{font-family:var(--font-mono);color:var(--accent-text);flex-shrink:0;font-size:14px;font-weight:600}.filter-bar{-webkit-overflow-scrolling:touch;gap:6px;margin-bottom:16px;padding-bottom:4px;display:flex;overflow-x:auto}.filter-bar::-webkit-scrollbar{display:none}.filter-btn{border:1px solid var(--border);color:var(--text-tertiary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:20px;align-items:center;gap:4px;padding:6px 14px;font-size:13px;transition:all .15s;display:flex}.filter-btn:hover{border-color:var(--border-active);color:var(--text-secondary)}.filter-active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-text);font-weight:500}.filter-count{opacity:.7;font-size:11px}.asset-list{flex-direction:column;gap:8px;display:flex}.asset-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;padding:14px 16px;transition:border-color .15s,background .15s}.asset-card:hover{border-color:var(--border-active);background:var(--bg-card)}.card-inactive{opacity:.6}.card-top{justify-content:space-between;align-items:flex-start;margin-bottom:8px;display:flex}.card-info{flex:1;min-width:0}.card-name{align-items:center;gap:8px;margin-bottom:2px;font-size:15px;font-weight:600;display:flex}.card-category{color:var(--text-muted);font-size:12px}.card-badge{border-radius:8px;padding:1px 6px;font-size:10px;font-weight:500}.badge-sold{color:var(--info);background:#4fc3f726}.badge-retired{color:var(--warn);background:#ffb74d26}.card-price{text-align:right;flex-shrink:0}.price-main{font-family:var(--font-mono);font-size:16px;font-weight:600;display:block}.price-daily{font-family:var(--font-mono);color:var(--accent-text);margin-top:2px;font-size:12px;display:block}.price-extras{font-family:var(--font-mono);color:var(--warn);margin-top:1px;font-size:11px;display:block}.card-progress{margin-top:4px}.progress-bar{background:var(--bg-elevated);border-radius:2px;height:4px;margin-bottom:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.progress-info{color:var(--text-muted);justify-content:space-between;font-size:11px;display:flex}.card-sell-info{color:var(--text-secondary);border-top:1px solid var(--border);justify-content:space-between;margin-top:8px;padding-top:8px;font-size:12px;display:flex}.profit{color:var(--accent-text)}.loss{color:var(--danger)}.card-actions{border-top:1px solid var(--border);gap:6px;margin-top:10px;padding-top:10px;display:flex}.btn-action{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;padding:4px 12px;font-size:12px;transition:all .15s}.btn-action:hover{background:var(--hover-strong)}.btn-warn:hover{color:var(--warn);border-color:#ffb74d4d}.btn-muted:hover{color:var(--text-tertiary)}.btn-danger:hover{color:var(--danger);border-color:#ff52524d}.btn-add{background:var(--accent);color:var(--bg-primary);cursor:pointer;border:none;border-radius:20px;padding:6px 16px;font-size:13px;font-weight:600;transition:opacity .15s}.btn-add:hover{opacity:.85}.btn-add:active{opacity:.7}.modal-overlay{z-index:200;background:#000000b3;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:var(--max-width);max-height:85vh;padding:24px 20px;animation:.25s slideUp;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h2{font-size:18px;font-weight:600}.modal-close{background:var(--bg-surface);width:32px;height:32px;color:var(--text-tertiary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:18px;transition:background-color .15s,color .15s;display:flex}.modal-close:hover{background:var(--bg-elevated);color:var(--text-primary)}.modal-footer{border-top:1px solid var(--border);gap:10px;margin-top:20px;padding-top:16px;display:flex}.btn-cancel{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;background:0 0;flex:1;padding:10px;font-size:14px;transition:background-color .15s,color .15s,border-color .15s}.btn-cancel:hover{background:var(--hover)}.btn-danger{border-radius:var(--radius-md);color:var(--danger);cursor:pointer;background:0 0;border:1px solid #ff52524d;padding:10px 14px;font-size:14px;transition:background-color .15s,color .15s,border-color .15s}.btn-danger:hover{border-color:var(--danger);background:#ff52521f}.btn-submit{border-radius:var(--radius-md);background:var(--accent);color:var(--bg-primary);cursor:pointer;border:none;flex:2;padding:10px;font-size:14px;font-weight:600;transition:opacity .15s}.btn-submit:hover{opacity:.85}.btn-submit:active{opacity:.7}.btn-save{width:100%;margin-top:16px;padding:12px;font-size:15px}.form-group{margin-bottom:14px}.form-group label{color:var(--text-tertiary);margin-bottom:6px;font-size:12px;display:block}.form-group input,.form-group select{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);outline:none;padding:10px 12px;font-size:14px;transition:border-color .15s}.form-group input:focus,.form-group select:focus{border-color:var(--accent)}.form-group input::placeholder{color:var(--text-muted)}.form-group select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%23777' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;padding-right:32px}.form-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-hint{color:var(--text-muted);margin-top:4px;font-size:11px;display:block}.form-check-row{margin-top:4px}.form-check-row .check-label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;color:var(--text-primary)!important;font-size:14px!important;display:flex!important}.form-check-row .check-label input[type=checkbox]{appearance:none;border:2px solid var(--border);background:var(--bg-input);cursor:pointer;border-radius:6px;flex-shrink:0;width:22px;height:22px;transition:background-color .15s,border-color .15s;position:relative}.form-check-row .check-label input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.form-check-row .check-label input[type=checkbox]:checked:after{content:"";border:2px solid #000;border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:2px;left:6px;transform:rotate(45deg)}.toggle-label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;color:var(--text-primary)!important;font-size:13px!important;display:flex!important}.toggle-switch{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;flex-shrink:0;width:42px;height:24px;transition:all .2s;position:relative}.toggle-knob{background:var(--text-muted);border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;top:2px;left:2px}.toggle-on{background:var(--accent-dim);border-color:var(--accent)}.toggle-on .toggle-knob{background:var(--accent);left:20px}.field-hint{color:var(--text-muted);margin-top:6px;margin-left:52px;font-size:11px;line-height:1.4;display:block}.daily-preview{text-align:center;background:var(--accent-dim);border-radius:var(--radius-md);color:var(--text-primary);margin-bottom:14px;padding:10px;font-size:14px}.daily-preview strong{color:var(--accent-text);font-family:var(--font-mono)}.time-derive-hint{text-align:center;color:var(--text-muted);background:var(--bg-tertiary);border-radius:var(--radius-sm);margin-top:2px;padding:6px 10px;font-size:12px}.time-derive-hint strong{color:var(--accent-text);font-family:var(--font-mono)}.category-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.cat-btn{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-tertiary);cursor:pointer;text-align:center;background:0 0;padding:8px 4px;font-size:12px;transition:all .15s}.cat-btn:hover{border-color:var(--border-active);color:var(--text-secondary)}.cat-active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent-text)}.sell-item-name{text-align:center;margin-bottom:4px;font-size:16px;font-weight:600}.sell-item-original{color:var(--text-tertiary);text-align:center;margin-bottom:16px;font-size:13px}.retire-tip{color:var(--text-secondary);text-align:center;margin:8px 0 16px;font-size:13px;line-height:1.6}.settings-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.section-title{margin-bottom:16px;font-size:16px;font-weight:600}.mode-selector{gap:6px;display:flex}.mode-btn{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-tertiary);cursor:pointer;background:0 0;flex:1;padding:8px 0;font-size:13px;transition:all .15s}.mode-btn:hover{border-color:var(--border-active);color:var(--text-secondary)}.mode-active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent-text)}.sub-settings{background:var(--hover-subtle);border-radius:var(--radius-md);margin-top:14px;padding:14px}.settings-preview{gap:10px;margin-top:14px;display:flex}.preview-item{text-align:center;background:var(--hover-light);border-radius:var(--radius-md);color:var(--text-tertiary);flex:1;padding:10px;font-size:12px}.preview-item strong{font-family:var(--font-mono);color:var(--accent-text);margin-top:4px;font-size:15px;display:block}.about-text{color:var(--text-tertiary);font-size:13px;line-height:1.8}.about-home-link{text-align:center;color:var(--accent-text);margin-top:14px;font-size:14px;text-decoration:none;transition:opacity .2s;display:block}.about-home-link:hover{opacity:.82;text-decoration:underline}.theme-picker{gap:10px;display:flex}.theme-box{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:10px;flex-direction:column;flex:1;align-items:center;padding:10px;font-family:inherit;transition:border-color .2s;display:flex}.theme-box.active{border:2px solid var(--accent);padding:9px}.theme-box-preview{box-sizing:border-box;border-radius:7px;flex-direction:column;justify-content:center;gap:4px;width:100%;height:48px;padding:7px;display:flex;position:relative;overflow:hidden}.tb-bar{border-radius:3.5px;width:70%;height:7px;box-shadow:0 0 0 1px #00000014}.tb-bar-short{width:45%}.tb-dot{border-radius:50%;width:10px;height:10px;position:absolute;bottom:7px;right:7px}.theme-box-label{color:var(--text-secondary);margin-top:7px;font-size:13px;font-weight:600}.theme-box.active .theme-box-label{color:var(--accent-text)}.empty-hint{text-align:center;color:var(--text-muted);padding:40px 20px;font-size:14px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--hover-strong)}button,a{touch-action:manipulation}.btn-back{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;background:0 0;align-items:center;gap:4px;padding:6px 12px;font-size:13px;transition:all .15s;display:inline-flex}.btn-back:hover{border-color:var(--border-active);color:var(--text-primary)}.detail-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.detail-hero{text-align:center;margin-bottom:8px;padding:12px 0 24px}.detail-hero-icon{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);justify-content:center;align-items:center;width:72px;height:72px;margin:0 auto 12px;font-size:36px;display:flex}.detail-hero-name{color:var(--text-primary);margin-bottom:8px;font-size:18px;font-weight:600}.detail-hero-daily{color:var(--text-primary);font-family:var(--font-mono);justify-content:center;align-items:baseline;gap:2px;margin-bottom:8px;display:inline-flex}.detail-hero-daily .daily-currency{font-size:20px;font-weight:600}.detail-hero-daily .daily-value{letter-spacing:-1px;font-size:42px;font-weight:700;line-height:1}.detail-hero-daily .daily-unit{color:var(--text-secondary);font-size:16px;font-weight:500}.detail-hero-meta{color:var(--text-tertiary);justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.detail-hero-meta .meta-divider{color:var(--border-active)}.detail-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.detail-name{margin-bottom:4px;font-size:20px;font-weight:700}.detail-category{color:var(--text-tertiary);margin-right:12px;font-size:13px;display:inline-block}.detail-date{color:var(--text-muted);font-size:12px}.detail-numbers{border-top:1px solid var(--border);grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;padding-top:14px;display:grid}.detail-num-item{text-align:center}.detail-num-value{font-family:var(--font-mono);font-size:17px;font-weight:700;display:block}.detail-num-value.accent{color:var(--accent-text)}.detail-num-label{color:var(--text-muted);margin-top:2px;font-size:11px;display:block}.detail-extras-summary{text-align:center;color:var(--text-tertiary);margin-top:10px;font-size:12px}.detail-extras-summary strong{color:var(--warn);font-family:var(--font-mono)}.detail-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:16px 18px}.detail-section.chart-section{padding:16px 12px 12px}.chart-header{margin-bottom:8px;padding:0 6px}.info-section{padding:0 18px}.info-list{flex-direction:column;display:flex}.info-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 0;font-size:14px;display:flex}.info-row:last-child{border-bottom:none}.info-label{color:var(--text-secondary)}.info-value{font-family:var(--font-mono);color:var(--text-primary);font-weight:500}.info-value.info-highlight{color:var(--warn)}.btn-detail-delete{border-radius:var(--radius-md);width:100%;color:var(--danger);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;gap:6px;margin:16px 0 6px;padding:12px;font-size:14px;font-weight:500;transition:background .15s;display:flex}.btn-detail-delete:hover{background:var(--danger-dim)}.extra-list{flex-direction:column;gap:4px;margin-bottom:14px;display:flex}.extra-item{background:var(--hover-light);border-radius:var(--radius-md);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.extra-info{flex:1;min-width:0}.extra-desc{font-size:13px;font-weight:500;display:block}.extra-date{color:var(--text-muted);margin-top:2px;font-size:11px;display:block}.extra-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.extra-amount{font-family:var(--font-mono);color:var(--warn);font-size:14px;font-weight:600}.extra-delete{border:1px solid var(--border);width:26px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .15s;display:flex}.extra-delete:hover{color:var(--danger);border-color:#ff52524d}.extra-form{border-top:1px solid var(--border);padding-top:12px}.extra-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);outline:none;margin-bottom:8px;padding:8px 10px;font-size:13px;transition:border-color .15s}.extra-input:focus{border-color:var(--accent)}.extra-input::placeholder{color:var(--text-muted)}.extra-form-row{gap:6px;display:flex}.extra-amount-input{flex-shrink:0;width:130px;margin-bottom:0}.extra-date-input{flex:1;margin-bottom:0}.btn-extra-add{border-radius:var(--radius-sm);background:var(--accent);color:var(--bg-primary);cursor:pointer;border:none;flex-shrink:0;padding:8px 14px;font-size:13px;font-weight:600;transition:opacity .15s}.btn-extra-add:hover{opacity:.85}.detail-actions{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:32px;display:grid}.btn-detail-action{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;text-align:center;background:0 0;padding:10px 4px;font-size:12px;transition:all .15s}.btn-detail-action:hover{background:var(--hover-strong)}.chart-container{width:100%;overflow-x:auto}.daily-cost-chart{width:100%;height:auto;display:block}.chart-legend{color:var(--text-muted);justify-content:center;gap:20px;margin-top:8px;font-size:11px;display:flex}.legend-item{align-items:center;gap:6px;display:flex}.legend-line{border-radius:1px;width:16px;height:2px;display:inline-block}.legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.chart-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:16px}.chart-section .chart-header{justify-content:space-between;align-items:center;margin-bottom:12px;padding:0;font-size:14px;font-weight:600;display:flex}.chart-section .chart-legend{color:var(--text-tertiary);gap:14px;font-size:11px;font-weight:400;display:flex}.chart-section .legend-item{align-items:center;gap:5px;display:flex}.chart-section .legend-item:before{content:"";border-radius:50%;width:10px;height:10px;display:inline-block}.legend-income:before{background:var(--accent)}.legend-cost:before{background:var(--warn)}.chart-wrap{width:100%;overflow:hidden}.chart-svg{width:100%;height:auto;display:block}.cal-heatmap{padding:2px 0 4px}.cal-week{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;display:grid}.cal-week-cell{text-align:center;color:var(--text-tertiary);font-size:12px}.cal-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-cell{aspect-ratio:1;border:1px solid #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-height:52px;padding:2px;transition:transform .1s;display:flex;position:relative}.cal-cell:hover{transform:scale(1.04)}.cal-today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cal-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);cursor:pointer}.cal-cell{cursor:pointer}.cal-day{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--cal-ink);line-height:1.1}.cal-net{font-size:10px;font-family:var(--font-mono);white-space:nowrap;color:var(--cal-ink-strong);margin-top:2px;font-weight:700}.cal-legend{flex-wrap:wrap;gap:16px;margin-top:12px;display:flex}.cal-legend-item{color:var(--text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.cal-dot{border-radius:3px;width:10px;height:10px;display:inline-block}.cal-pos{background:color-mix(in srgb, var(--accent) 78%, transparent)}.cal-neg{background:color-mix(in srgb, var(--danger) 78%, transparent)}.cal-zero{background:var(--border)}.cal-badge{pointer-events:none;border-radius:50%;width:7px;height:7px;position:absolute;top:3px;right:3px}.cal-badge-ot{background:#ff3b30;box-shadow:0 0 0 1.5px #ffffffa6}.cal-badge-leave{border:1.5px solid var(--text-tertiary,#8e8e93);background:0 0}.cal-dot.cal-badge-ot{box-shadow:none;background:#ff3b30;border:none;border-radius:50%;position:static}.cal-dot.cal-badge-leave{border:1.5px solid var(--text-tertiary,#8e8e93);background:0 0;border-radius:50%;position:static}.cal-summary{color:var(--text-tertiary);margin-top:8px;font-size:11px}.cal-summary b{color:var(--text-secondary);font-weight:700}.income-amount{color:var(--accent-text)}.chart-cross-hint{text-align:center;color:var(--text-muted);margin-top:8px;font-size:11px}@keyframes chartPulse{0%,to{opacity:1;r:5}50%{opacity:.35;r:7}}.chart-now-dot{transform-origin:50%;animation:2s ease-in-out infinite chartPulse}.chart-summary{background:var(--hover-subtle);border-radius:var(--radius-md);justify-content:center;align-items:center;gap:0;margin-top:14px;padding:10px 12px;display:flex}.chart-summary-item{text-align:center;flex:1}.chart-summary-label{color:var(--text-muted);margin-bottom:3px;font-size:10px;display:block}.chart-summary-value{font-family:var(--font-mono);font-size:14px;font-weight:700;display:block}.chart-summary-value.income{color:var(--accent-text)}.chart-summary-value.cost{color:var(--warn)}.chart-summary-divider{background:var(--border);width:1px;height:28px}.legend-item.legend-cross{color:var(--accent-text)}.legend-item.legend-cross:before{background:var(--accent)}.legend-item.legend-unreach{color:var(--danger)}.legend-item.legend-unreach:before{background:var(--danger)}.income-source-list{flex-direction:column;gap:8px;display:flex}.income-source-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;justify-content:space-between;align-items:center;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.income-source-card:hover{border-color:var(--border-active);background:var(--bg-card)}.isc-left{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.isc-icon{background:var(--bg-primary);border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;display:flex}.isc-info{flex-direction:column;min-width:0;display:flex}.isc-name{color:var(--text-primary);font-size:15px;font-weight:600}.isc-ended{color:var(--text-muted);border:1px solid var(--border);vertical-align:2px;white-space:nowrap;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:10px;font-style:normal;font-weight:400}.isc-tag.asset-sale-tag{color:#1a1205;background:var(--accent);vertical-align:2px;white-space:nowrap;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:10px;font-style:normal;font-weight:600}.expense-badge-asset{color:#1a1205;background:var(--accent);vertical-align:1px;white-space:nowrap;letter-spacing:.2px;border-radius:4px;margin-left:6px;padding:2px 5px;font-size:10px;font-weight:600;line-height:1;display:inline-block}.isc-mode{color:var(--text-muted);margin-top:2px;font-size:12px}.isc-right{text-align:right;flex-shrink:0;margin-left:12px}.isc-salary{color:var(--accent-text);font-size:16px;font-weight:700;font-family:var(--font-mono);display:block}.isc-daily{color:var(--text-tertiary);margin-top:2px;font-size:11px}.isc-daily.oneoff-daily,.summary-value.oneoff-value{color:var(--accent-text)}.btn-add-source{background:var(--bg-surface);border:1px dashed var(--border);border-radius:var(--radius-lg);width:100%;color:var(--text-secondary);font-size:14px;font-family:var(--font-sans);cursor:pointer;justify-content:center;align-items:center;gap:8px;margin-top:16px;padding:14px;transition:all .15s;display:flex}.btn-add-source:hover{border-color:var(--accent);color:var(--accent-text);background:var(--accent-dim)}.btn-add-source svg{flex-shrink:0}.section-count{color:var(--text-muted);font-size:12px;font-weight:400}.income-hint{margin-top:12px}.income-hint p{color:var(--text-muted);margin:0;font-size:11px;line-height:1.7}.login-page{background:radial-gradient(ellipse 80% 50% at 50% -10%, var(--accent-glow), transparent), var(--bg-primary);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-home-link{color:var(--text-secondary);border-radius:var(--radius-md);padding:6px 10px;font-size:13px;text-decoration:none;transition:color .15s,background .15s;position:absolute;top:18px;left:20px}.login-home-link:hover{color:var(--accent-text);background:var(--bg-surface)}.login-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:380px;padding:36px 28px 28px;box-shadow:0 20px 60px #00000059}.login-logo{text-align:center;margin-bottom:28px}.login-logo-icon{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#0d0d0d;width:56px;height:56px;box-shadow:0 8px 24px var(--accent-dim);border-radius:16px;justify-content:center;align-items:center;margin:0 auto 14px;font-size:28px;font-weight:800;display:flex}.login-logo h1{color:var(--text-primary);margin:0 0 6px;font-size:20px}.login-logo p{color:var(--text-tertiary);margin:0;font-size:12px}.login-tabs{background:var(--bg-surface);border-radius:var(--radius-md);gap:8px;margin-bottom:20px;padding:4px;display:flex}.login-tab{border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;flex:1;padding:9px 0;font-size:14px;transition:all .2s}.login-tab.active{background:var(--bg-elevated);color:var(--accent-text);font-weight:600}.login-sub-tabs{gap:12px;margin:-8px 0 14px;display:flex}.login-sub-tab{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 2px;font-size:13px;transition:all .2s}.login-sub-tab.active{color:var(--accent-text);border-bottom-color:var(--accent);font-weight:600}.login-switch{text-align:center;color:var(--text-tertiary);font-size:13px}.login-row-between{justify-content:space-between;align-items:center;gap:8px;display:flex}.login-link{color:var(--accent-text);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:13px}.login-link:hover{text-decoration:underline}.login-form{flex-direction:column;gap:12px;display:flex}.login-field input{box-sizing:border-box;border-radius:var(--radius-md);background:var(--bg-input);width:100%;color:var(--text-primary);border:1px solid #0000;outline:none;padding:13px 14px;font-size:15px;transition:border-color .2s}.login-field input:focus{border-color:var(--accent)}.login-field input::placeholder{color:var(--text-muted)}.login-code-row{gap:10px;display:flex}.login-code-row input{flex:1}.btn-code{border:1px solid var(--accent);border-radius:var(--radius-md);color:var(--accent-text);cursor:pointer;background:0 0;flex-shrink:0;padding:0 14px;font-size:13px;transition:all .2s}.btn-code:hover:not(:disabled){background:var(--accent-dim)}.btn-code:disabled{opacity:.5;cursor:not-allowed}.login-error{border-radius:var(--radius-sm);color:#ff5252;background:#ff52521a;padding:9px 12px;font-size:13px}.btn-login{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#0d0d0d;cursor:pointer;border:none;padding:13px 0;font-size:15px;font-weight:700;transition:all .2s}.btn-login:hover:not(:disabled){filter:brightness(1.1)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.login-tip{text-align:center;color:var(--text-muted);font-size:12px}.set-pwd-modal{border-radius:var(--radius-xl);align-self:center;width:360px;max-width:92vw;max-height:86vh;margin:auto;animation:.22s modalPop}.set-pwd-tip{color:var(--text-secondary);margin-bottom:16px;font-size:13px;line-height:1.7}.set-pwd-tip strong{color:var(--accent-text)}.btn-login-text{width:100%;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;margin-top:4px;padding:10px 0;font-size:13px;transition:color .2s}.btn-login-text:hover:not(:disabled){color:var(--text-secondary)}.btn-login-text:disabled{opacity:.5;cursor:not-allowed}.wechat-placeholder{text-align:center;padding:12px 0 4px}.wechat-placeholder #wechat-qr-box,.wechat-placeholder #wechat-delete-qr-box{width:225px;height:300px;margin:0 auto;position:relative}.wechat-placeholder #wechat-qr-box iframe,.wechat-placeholder #wechat-delete-qr-box iframe{transform-origin:0 0;position:absolute;top:0;left:0;transform:scale(.75);border:none!important;width:300px!important;height:400px!important}.wechat-qr-mock{border-radius:var(--radius-md);width:140px;height:140px;color:var(--text-primary);background:#0d0d0d;margin:0 auto 16px;overflow:hidden}.wechat-tip{color:var(--text-secondary);margin:0 0 6px;font-size:14px}.wechat-sub{color:var(--text-muted);margin:0;font-size:12px;line-height:1.7}.app-loading{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex}.app-loading-spinner{border:3px solid var(--bg-elevated);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.account-info{flex:1;min-width:0}.account-nickname{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.account-phone{color:var(--text-tertiary);margin-top:2px;font-size:12px}.account-phone-empty{color:var(--warn);font-weight:600}.btn-logout{border:1px solid var(--danger,#ff5252);border-radius:var(--radius-md);color:var(--danger,#ff5252);cursor:pointer;background:0 0;flex-shrink:0;padding:8px 14px;font-size:13px;transition:all .2s}.btn-logout:hover{background:#ff52521a}.account-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.account-head{align-items:center;gap:12px;padding:16px;display:flex}.account-avatar{background:var(--accent);color:#0d0d0d;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:20px;font-weight:800;display:flex}.account-avatar-img{object-fit:cover;background:var(--bg-elevated);border-radius:14px;flex-shrink:0;width:48px;height:48px}.account-badge{background:var(--accent);color:#0d0d0d;text-align:center;border-radius:999px;flex-shrink:0;height:26px;padding:0 12px;font-size:12px;font-weight:700;line-height:26px}.account-list{flex-direction:column;display:flex}.acct-row{border:none;border-top:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:52px;padding:0 16px;font-family:inherit;transition:background-color .15s;display:flex}.acct-row:hover{background:var(--hover-light)}.acct-row:active{background:var(--hover)}.acct-row-label{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;font-weight:600;overflow:hidden}.acct-row-label-danger{color:var(--danger)}.acct-row-hint{color:var(--text-tertiary);flex-shrink:0;font-size:12px}.acct-row-arrow{color:var(--text-tertiary);flex-shrink:0;font-size:18px;line-height:1}.account-actions{border-top:1px solid var(--border);gap:10px;margin-top:12px;padding-top:12px;display:flex}.btn-account-action{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;background:0 0;flex:1;padding:9px 0;font-size:13px;transition:all .2s}.btn-account-action:hover{border-color:var(--accent);color:var(--accent-text)}.btn-account-action.btn-danger{border-color:var(--danger,#ff5252);color:var(--danger,#ff5252)}.btn-account-action.btn-danger:hover{background:#ff52521a}.profile-modal{width:440px;max-width:92vw;max-height:86vh}.change-phone-modal{max-width:400px}.profile-avatar-section{flex-direction:column;align-items:center;gap:12px;margin-bottom:18px;display:flex}.profile-avatar-preview{width:76px;height:76px}.profile-avatar-preset{border-radius:50%;justify-content:center;align-items:center;width:76px;height:76px;font-size:40px;display:flex;box-shadow:0 4px 14px #00000040}.profile-avatar-img{object-fit:cover;background:var(--bg-elevated);border-radius:50%;width:76px;height:76px}.profile-avatar-tabs{background:var(--bg-surface);border-radius:var(--radius-md);gap:6px;padding:3px;display:flex}.profile-avatar-tab{border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;padding:6px 16px;font-size:13px;transition:all .2s}.profile-avatar-tab.active{background:var(--bg-elevated);color:var(--accent-text);font-weight:600}.profile-avatar-grid{grid-template-columns:repeat(6,1fr);gap:8px;width:100%;display:grid}.profile-avatar-item{aspect-ratio:1;cursor:pointer;border:2px solid #0000;border-radius:12px;justify-content:center;align-items:center;font-size:22px;transition:all .15s;display:flex}.profile-avatar-item:hover{transform:scale(1.08)}.profile-avatar-item.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.profile-url-input{box-sizing:border-box;border-radius:var(--radius-md);background:var(--bg-input);width:100%;color:var(--text-primary);border:1px solid #0000;outline:none;padding:11px 12px;font-size:13px;transition:border-color .2s}.profile-url-input:focus{border-color:var(--accent)}.profile-field{margin-bottom:14px}.profile-field label{color:var(--text-tertiary);margin-bottom:6px;font-size:12px;display:block}.profile-field input{box-sizing:border-box;border-radius:var(--radius-md);background:var(--bg-input);width:100%;color:var(--text-primary);border:1px solid #0000;outline:none;padding:12px 13px;font-size:14px;transition:border-color .2s}.profile-field input:focus{border-color:var(--accent)}.profile-error{border-radius:var(--radius-sm);color:#ff5252;background:#ff52521a;margin-bottom:12px;padding:9px 12px;font-size:13px}.change-phone-steps{align-items:center;gap:0;margin-bottom:20px;display:flex}.change-phone-step{flex-shrink:0;align-items:center;gap:6px;display:flex}.step-dot{background:var(--bg-elevated);width:22px;height:22px;color:var(--text-tertiary);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.change-phone-step.active .step-dot{background:var(--accent);color:#0d0d0d}.change-phone-step.done .step-dot{background:var(--accent-dim);color:var(--accent-text)}.step-label{color:var(--text-tertiary);white-space:nowrap;font-size:13px}.change-phone-step.active .step-label{color:var(--text-primary);font-weight:600}.step-line{background:var(--bg-elevated);border-radius:1px;flex:1;height:2px;margin:0 12px}.change-phone-tip{color:var(--text-muted);margin:0 0 14px;font-size:13px;line-height:1.6}.change-phone-tip b{color:var(--accent-text);font-family:var(--font-mono)}.month-bar{justify-content:center;align-items:center;gap:20px;margin:4px 0 16px;display:flex}.month-bar.month-bar-inset{margin:2px 0 10px}.month-label{text-align:center;min-width:96px;color:var(--text-primary);font-size:16px;font-weight:600}.month-arrow{border:1px solid var(--border);background:var(--bg-surface);width:34px;height:34px;color:var(--text-secondary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.month-arrow:hover:not(:disabled){background:var(--hover);color:var(--accent-text)}.month-arrow:disabled{opacity:.35;cursor:not-allowed}.expense-day-groups{flex-direction:column;gap:14px;display:flex}.expense-day-group{flex-direction:column;gap:6px;display:flex}.expense-day-header{color:var(--text-tertiary);justify-content:space-between;align-items:center;padding:0 4px;font-size:12px;display:flex}.expense-day-date{font-family:var(--font-mono);font-weight:600}.expense-day-total{color:var(--danger);font-family:var(--font-mono)}.expense-cat-bars{flex-direction:column;gap:8px;display:flex}.expense-cat-row{align-items:center;gap:8px;font-size:12px;display:flex}.expense-cat-icon{text-align:center;flex-shrink:0;width:22px}.expense-cat-name{color:var(--text-secondary);flex-shrink:0;min-width:34px}.expense-cat-track{background:var(--bg-elevated);border-radius:4px;flex:1;height:8px;overflow:hidden}.expense-cat-fill{background:linear-gradient(90deg, var(--warn), var(--danger));opacity:.85;border-radius:4px;height:100%}.expense-cat-pct{color:var(--text-tertiary);font-family:var(--font-mono);text-align:right;min-width:36px}.expense-cat-amount{color:var(--text-primary);font-family:var(--font-mono);text-align:right;min-width:64px}.pie-wrap{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=560px){.pie-wrap{grid-template-columns:1fr}}.pie-block{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px}.pie-title{color:var(--text-secondary);text-align:center;margin-bottom:8px;font-size:13px;font-weight:600}.pie-chart{flex-direction:column;align-items:center;gap:10px;display:flex}.pie-svg{width:150px;max-width:100%;height:150px}.pie-legend{flex-direction:column;gap:4px;width:100%;display:flex}.pie-legend-item{align-items:center;gap:6px;font-size:12px;display:flex}.pie-legend-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.pie-legend-label{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.pie-legend-pct{color:var(--text-tertiary);font-family:var(--font-mono);text-align:right;min-width:34px}.pie-legend-val{color:var(--text-primary);font-family:var(--font-mono);text-align:right;min-width:72px}.expense-recurring-groups{flex-direction:column;gap:8px;display:flex}.expense-recurring-item{background:var(--bg-elevated);border:1px solid var(--accent-glow);border-radius:10px;align-items:center;gap:8px;padding:10px 12px;display:flex}.expense-recurring-item.is-inactive{opacity:.45}.expense-rec-left{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.expense-rec-title{align-items:center;gap:6px;min-width:0;font-size:13px;display:flex}.expense-rec-title .expense-note{text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary);overflow:hidden}.expense-rec-badge{color:var(--accent-text);font-size:11px;font-family:var(--font-mono);background:var(--accent-glow);white-space:nowrap;border-radius:6px;flex-shrink:0;padding:1px 6px}.expense-rec-status{white-space:nowrap;border-radius:6px;flex-shrink:0;padding:1px 6px;font-size:10px}.expense-rec-status.st-ok{color:var(--accent-text);background:#00e67614}.expense-rec-status.st-off{color:var(--text-tertiary);background:var(--bg-card)}.expense-rec-period{color:var(--text-tertiary);font-size:11px;font-family:var(--font-mono);padding-left:28px}.expense-rec-right{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.expense-rec-amount{color:var(--danger);font-size:13px;font-family:var(--font-mono);font-weight:600}.expense-rec-sub{color:var(--text-tertiary);font-size:10px;font-family:var(--font-mono)}.expense-rec-right .expense-delete{margin-top:2px}.fab-add{right:calc(50% - min(300px,50vw) + 16px);bottom:calc(var(--nav-height) + 18px);background:var(--accent);color:#000;cursor:pointer;width:48px;height:48px;box-shadow:0 6px 24px var(--accent-shadow);z-index:90;border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,box-shadow .15s;display:flex;position:fixed}.fab-add:hover{transform:scale(1.08)}.fab-add:active{transform:scale(.96)}.fab-add svg{stroke:#000}.seg-tabs{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);gap:6px;width:100%;margin-bottom:16px;padding:4px;display:flex}.seg-tab{color:var(--text-tertiary);text-align:center;white-space:nowrap;border-radius:calc(var(--radius-md) - 2px);cursor:pointer;background:0 0;border:none;flex:1 1 0;padding:6px 4px;font-size:13px;transition:background .15s,color .15s}.seg-tab.active{background:var(--accent);color:#000;font-weight:600}.stat-positive{color:var(--accent-text)!important}.stat-negative{color:var(--danger)!important}.expire-reminder-toast{z-index:300;background:var(--bg-surface,#1c2333);border:1px solid var(--border,#2a3448);border-radius:12px;width:min(340px,100vw - 32px);padding:12px 14px;font-size:13px;position:fixed;top:16px;right:16px;box-shadow:0 8px 32px #00000073}.expire-reminder-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.expire-reminder-icon{font-size:16px}.expire-reminder-title{color:#ffb020;flex:1;font-weight:600}.expire-reminder-close{width:24px;height:24px;color:var(--text-tertiary,#8b9aab);cursor:pointer;background:0 0;border:none;border-radius:50%;font-size:16px;line-height:1}.expire-reminder-close:hover{background:var(--hover-strong)}.expire-reminder-row{border-top:1px solid var(--border);align-items:center;gap:8px;padding:6px 0;display:flex}.expire-reminder-info{color:var(--text-secondary,#b8c4d8);font-family:var(--font-mono);flex:1;font-size:12px}.expire-reminder-btn{border:1px solid var(--border,#2a3448);color:var(--accent-text);cursor:pointer;white-space:nowrap;background:0 0;border-radius:12px;padding:3px 10px;font-size:12px}.expire-reminder-btn:hover{background:var(--accent-dim)}.expire-reminder-tip{border-top:1px solid var(--border);color:var(--text-tertiary,#8b9aab);margin-top:8px;padding-top:8px;font-size:11px}.bind-guide{z-index:1000;pointer-events:none;justify-content:center;display:flex;position:fixed;top:0;left:0;right:0}.bind-guide-card{pointer-events:auto;background:var(--card-bg,#141b27);border:1px solid var(--border-active);border-radius:14px;width:min(440px,100vw - 32px);margin-top:12px;padding:16px 18px 18px;box-shadow:0 12px 40px #00000073}.bind-guide-close{color:var(--text-tertiary,#8b9aab);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1;position:absolute;top:8px;right:12px}.bind-guide-title{color:var(--text-primary,#eef3fb);margin-bottom:4px;font-size:15px;font-weight:600}.bind-guide-sub{color:var(--text-tertiary,#8b9aab);margin-bottom:12px;font-size:12px;line-height:1.5}.bind-guide-form{margin:0}.bind-guide-form .login-field{margin-bottom:10px}.login-tip-link{text-align:center;cursor:pointer;margin-top:10px}.login-tip-link:hover{color:var(--accent-text)}.bind-conflict-box{padding:4px 2px 2px}.bind-conflict-box .bind-guide-sub{color:var(--text-secondary,#c2cdda)}.bind-conflict-box .btn-login{margin-top:4px}.delete-account-modal{max-width:420px}.delete-warn{border-radius:var(--radius-md);color:var(--text-secondary);background:#ff525214;border:1px solid #ff525240;margin-bottom:16px;padding:14px 16px;font-size:13px;line-height:1.7}.delete-warn b{color:var(--danger,#ff5252)}.delete-warn ul{margin:8px 0 0;padding-left:18px}.delete-warn li{margin:2px 0}.delete-verify-title{color:var(--text-primary);margin:0 0 6px;font-size:14px;font-weight:600}.delete-label{color:var(--text-secondary);margin-bottom:8px;font-size:13px;display:block}.delete-label code{background:var(--bg-surface);color:var(--accent-text);word-break:break-all;border-radius:6px;margin-top:6px;padding:6px 8px;font-size:12px;display:block}.delete-input{box-sizing:border-box;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);outline:none;padding:10px 12px;font-size:13px}.delete-input:focus{border-color:var(--accent)}.delete-input:disabled{opacity:.6}.delete-err{color:var(--danger,#ff5252);margin-top:10px;font-size:12px}.btn-delete-confirm{border-radius:var(--radius-md);background:var(--danger,#ff5252);color:#fff;cursor:pointer;border:none;flex:1;padding:10px;font-size:14px;font-weight:600;transition:opacity .15s}.btn-delete-confirm:hover:not(:disabled){opacity:.9}.btn-delete-confirm:disabled{opacity:.4;cursor:not-allowed}.wechat-toast{z-index:999;color:#fff;text-align:center;border-radius:20px;max-width:90%;padding:10px 18px;font-size:13px;animation:.2s fadeIn;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000004d}.wechat-toast-success{background:#00b86b}.wechat-toast-error{background:#ff5252}.btn-wechat-bound{color:#07c160;border-color:#07c16080}.btn-wechat-bound:hover{background:#07c16014}.wechat-manage-body{flex-direction:column;gap:12px;padding:18px 20px 22px;display:flex}.wechat-bound-status{color:var(--text-secondary);background:var(--bg-surface);border-radius:var(--radius-md);align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.wechat-bound-dot{background:#07c160;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 3px #07c1602e}.wechat-unbind-confirm{flex-direction:column;gap:12px;display:flex}.wechat-unbind-tip{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.6}.checkin-bar{border-radius:var(--radius-lg);background:var(--accent-dim);border:1px solid var(--border-active);cursor:pointer;align-items:center;margin-bottom:14px;padding:12px 16px;transition:border-color .15s;display:flex}.checkin-bar-error{background:var(--bg-secondary);border:1px dashed var(--warn,var(--border))}.checkin-bar-error .checkin-bar-streak{color:var(--warn,var(--text-secondary));margin-left:auto;font-size:12.5px}.checkin-bar:hover{border-color:var(--accent-text)}.checkin-bar-left{align-items:center;display:flex}.checkin-bar-dot{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-right:8px}.checkin-bar-dot.on{background:var(--accent)}.checkin-bar-title{color:var(--text-primary);font-size:14px;font-weight:500}.checkin-bar-notice{color:var(--accent-text);white-space:nowrap;text-overflow:ellipsis;margin-left:10px;font-size:12px;overflow:hidden}.checkin-bar-streak{text-align:right;color:var(--accent-text);flex:1;margin-right:12px;font-size:12px}.checkin-bar-btn{background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;border-radius:999px;padding:5px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:opacity .15s}.checkin-bar-btn:hover:not(:disabled){opacity:.88}.checkin-bar-btn:disabled{opacity:.6;cursor:default}.checkin-bar-btn.done{background:var(--bg-elevated);color:var(--text-tertiary)}.checkin-overlay{align-items:flex-start}.checkin-modal{border-radius:var(--radius-xl);width:100%;max-width:380px;max-height:84vh;margin:8vh 0 0;padding:18px 18px 20px;animation:.36s cubic-bezier(.16,1,.3,1) checkinDropIn}@keyframes checkinDropIn{0%{opacity:0;transform:translateY(-64px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.checkin-modal{animation:none}}.checkin-modal .modal-header{margin-bottom:4px}.checkin-modal .modal-header h3{font-size:17px;font-weight:600}.checkin-stat{align-items:center;padding:12px 0 14px;display:flex}.checkin-stat-item{flex-direction:column;flex:1;align-items:center;display:flex}.checkin-stat-num{color:var(--accent-text);font-size:26px;font-weight:600;line-height:1.1}.checkin-stat-label{color:var(--text-tertiary);margin-top:4px;font-size:12px}.checkin-stat-divider{background:var(--border);width:1px;height:32px}.checkin-week{margin-bottom:6px;display:flex}.checkin-week-item{text-align:center;width:14.285%;color:var(--text-tertiary);font-size:11px}.checkin-cal{flex-wrap:wrap;display:flex}.checkin-cell{justify-content:center;align-items:center;width:14.285%;height:40px;display:flex}.checkin-cell-inner{box-sizing:border-box;width:34px;height:34px;color:var(--text-tertiary);border-radius:10px;justify-content:center;align-items:center;font-size:14px;display:flex}.checkin-cell-inner.checked{background:var(--accent);color:var(--accent-ink);font-weight:600}.checkin-cell-inner.today{border:1px solid var(--accent-text)}.checkin-cell-inner.today.checked{border:none}.checkin-sheet-progress{text-align:center;color:var(--text-tertiary);margin:8px 0 10px;font-size:12px;display:block}.checkin-sheet-btn{background:var(--accent);width:100%;height:44px;color:var(--accent-ink);cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:15px;font-weight:600;transition:opacity .15s;display:flex}.checkin-sheet-btn:hover:not(:disabled){opacity:.88}.checkin-sheet-btn:disabled{opacity:.6;cursor:default}.checkin-sheet-btn.done{height:64px;color:var(--text-secondary);background:0 0;gap:12px;padding:0 16px}.checkin-tip-icon{object-fit:contain;border-radius:10px;flex-shrink:0;width:44px;height:44px}.checkin-tip-emoji{flex-shrink:0;font-size:38px;line-height:1}.checkin-tip-text{color:inherit;white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.checkin-wallet{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border);margin-top:2px;padding:10px 12px}.checkin-wallet-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.checkin-wallet-title{color:var(--text-primary);font-size:13px;font-weight:500}.checkin-wallet-btn{border:1px solid var(--border-active);color:var(--accent-text);cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:background-color .15s,opacity .15s}.checkin-wallet-btn:hover:not(:disabled){background:var(--accent-dim)}.checkin-wallet-btn:disabled{opacity:.5;cursor:default}.checkin-wallet-chips{flex-wrap:wrap;gap:8px;display:flex}.checkin-chip{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-tertiary);border-radius:999px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:inline-flex}.checkin-chip b{font-weight:600}.checkin-chip.fix.on{background:var(--accent-dim);border-color:var(--border-active);color:var(--accent-text)}.checkin-chip.sub.on{background:color-mix(in srgb, var(--warn) 16%, transparent);border-color:color-mix(in srgb, var(--warn) 38%, transparent);color:var(--warn)}.checkin-progress{margin:10px 0 12px}.checkin-progress-head{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.checkin-progress-label{color:var(--text-secondary);font-size:12px}.checkin-progress-num{color:var(--accent-text);font-size:12px;font-weight:600}.checkin-progress-track{background:var(--bg-elevated);border-radius:999px;height:6px;overflow:hidden}.checkin-progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .3s}.checkin-cell-inner.fixed{background:var(--accent-dim);color:var(--accent-text);box-shadow:inset 0 0 0 1px var(--border-active);font-weight:600}.checkin-cell-inner.fixable{border:1px dashed var(--accent-text);color:var(--accent-text);cursor:pointer;transition:background-color .15s}.checkin-cell-inner.fixable:hover{background:var(--accent-dim)}.checkin-sheet-progress-sub{color:var(--text-muted)}.checkin-fix-hint{text-align:center;color:var(--text-tertiary);margin:-4px 0 10px;font-size:11px}.checkin-confirm{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-active);flex-direction:column;gap:8px;margin-bottom:10px;padding:10px 12px;display:flex}.checkin-confirm-text{color:var(--text-primary);font-size:13px;line-height:1.5}.checkin-confirm-actions{justify-content:flex-end;gap:8px;display:flex}.checkin-confirm-cancel{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-family:inherit;font-size:13px;transition:background-color .15s,opacity .15s}.checkin-confirm-cancel:hover:not(:disabled){background:var(--hover)}.checkin-confirm-ok{background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;border-radius:999px;padding:6px 16px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .15s}.checkin-confirm-ok:hover:not(:disabled){opacity:.88}.checkin-confirm-ok:disabled,.checkin-confirm-cancel:disabled{opacity:.6;cursor:default}.checkin-confirm-err{color:var(--danger);font-size:12px}.coupon-entry{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-family:inherit;transition:border-color .15s;display:flex}.coupon-entry:hover{border-color:var(--border-active)}.coupon-entry-cells{gap:28px;min-width:0;display:flex}.coupon-entry-cell{flex-direction:column;gap:4px;display:flex}.coupon-entry-cell-label{color:var(--text-secondary);font-size:12px}.coupon-entry-cell-num{color:var(--text-primary);font-size:18px;font-weight:600}.coupon-entry-more{white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}.coupon-entry-due{color:var(--warn)}.coupon-entry-view{color:var(--text-tertiary)}.coupon-modal{flex-direction:column;width:100%;max-width:460px;padding-bottom:20px;display:flex;overflow:hidden}.coupon-body{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:auto;min-height:0;overflow-y:auto}.coupon-body>:last-child{margin-bottom:0}.coupon-body::-webkit-scrollbar{width:6px}.coupon-body::-webkit-scrollbar-track{background:0 0}.coupon-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.coupon-body::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.coupon-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px;display:grid}.coupon-summary-cell{border-radius:var(--radius-md);background:var(--bg-card);padding:10px 12px}.coupon-summary-label{color:var(--text-secondary);font-size:12px}.coupon-summary-num{color:var(--text-primary);margin-top:4px;font-size:20px;font-weight:600}.coupon-summary-note{color:var(--text-tertiary);margin-top:2px;font-size:11px}.coupon-summary-note.tone-warn{color:var(--warn)}.coupon-group-title{color:var(--text-secondary);justify-content:space-between;align-items:center;gap:8px;margin:0 0 8px;font-size:12px;display:flex}.coupon-group-count{color:var(--text-tertiary);font-size:11px}.coupon-group{border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:14px;overflow:hidden}.coupon-row{justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.coupon-row+.coupon-row{border-top:1px solid var(--border)}.coupon-row-dim{opacity:.7}.coupon-row-main{min-width:0}.coupon-row-name{color:var(--text-primary);font-size:13px}.coupon-row-sub{color:var(--text-tertiary);margin-top:3px;font-size:11px}.coupon-row-state{white-space:nowrap;font-size:12px}.coupon-row-state.tone-ok{color:var(--accent-text)}.coupon-row-state.tone-warn{color:var(--warn)}.coupon-row-state.tone-muted{color:var(--text-muted)}.coupon-loading{text-align:center;color:var(--text-tertiary);padding:18px 0;font-size:13px}.coupon-empty{text-align:center;border:1px dashed var(--border);border-radius:var(--radius-md);padding:18px 14px}.coupon-empty-title{color:var(--text-primary);margin:0;font-size:13px}.coupon-empty-text{color:var(--text-tertiary);margin:6px 0 0;font-size:12px;line-height:1.7}.coupon-msg{color:var(--accent-text);margin-top:10px;font-size:12px}.coupon-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding-top:14px;display:flex}.coupon-foot-left{flex-direction:column;gap:2px;min-width:0;display:flex}.coupon-foot-points{color:var(--text-primary);font-size:13px}.coupon-foot-hint{color:var(--text-tertiary);font-size:11px}.coupon-exchange-btn{background:var(--accent);color:var(--accent-ink);white-space:nowrap;cursor:pointer;border:none;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .15s}.coupon-exchange-btn:hover:not(:disabled){opacity:.88}.coupon-exchange-btn:disabled{opacity:.45;cursor:default}
