.app-shell{min-height:100vh;padding-bottom:32px}.app-header{z-index:90;height:var(--header-h);background:var(--header-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:0 20px;display:flex;position:sticky;top:0}.app-logo{font-family:var(--font-serif);color:var(--text);align-items:center;gap:8px;font-size:22px;display:flex}.app-logo-mark{background:var(--accent);color:#0a0c0e;width:28px;height:28px;font-size:14px;font-weight:700;font-family:var(--font-mono);border-radius:7px;justify-content:center;align-items:center;display:flex}.app-signout{background:var(--surface2);border:1px solid var(--border2);color:var(--text2);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font-sans);border-radius:8px;padding:8px 14px;transition:all .15s}.app-signout:hover{border-color:var(--danger);color:var(--danger)}.app-main{max-width:520px;margin:0 auto;padding:16px}.app-loading{min-height:100vh;color:var(--text3);justify-content:center;align-items:center;font-size:14px;display:flex}.hero-box{background:linear-gradient(135deg, var(--surface) 0%, var(--surface2) 100%);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;padding:22px 20px 18px;position:relative;overflow:hidden}.hero-period-row{flex-wrap:wrap;gap:6px;margin-bottom:18px;display:flex}.period-btn{border:1px solid var(--border2);color:var(--text2);cursor:pointer;font-size:11px;font-weight:500;font-family:var(--font-sans);background:0 0;border-radius:20px;padding:5px 12px;transition:all .15s}.period-btn.active{background:var(--accent-dim2);border-color:var(--accent);color:var(--accent)}.hero-label{color:var(--text2);font-size:11px;font-weight:500;font-family:var(--font-mono);margin-bottom:6px}.hero-value{font-family:var(--font-serif);color:var(--text);margin-bottom:4px;font-size:42px;line-height:1}.hero-sub{color:var(--text3);font-size:12px;font-family:var(--font-mono)}.stat-grid-4{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;display:grid}@media (min-width:400px){.stat-grid-4{grid-template-columns:repeat(4,1fr)}}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 12px}.stat-lbl{letter-spacing:1px;text-transform:uppercase;color:var(--text3);font-size:10px;font-weight:500;font-family:var(--font-mono);margin-bottom:7px}.stat-val{font-family:var(--font-serif);color:var(--text);font-size:20px;line-height:1}.stat-val.accent{color:var(--accent)}.stat-val.warn{color:var(--warn)}.stat-val.danger{color:var(--danger)}.stat-val.blue{color:var(--blue)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;padding:18px}.card-label{letter-spacing:1.8px;text-transform:uppercase;color:var(--text3);font-size:10px;font-weight:600;font-family:var(--font-mono);margin-bottom:14px}.insight-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:11px 0;font-size:13px;display:flex}.insight-row:last-child{border-bottom:none}.insight-lbl{color:var(--text2)}.insight-val{font-weight:600;font-family:var(--font-mono)}.insight-val.accent{color:var(--accent)}.insight-val.warn{color:var(--warn)}.empty{text-align:center;padding:28px 16px}.empty-icon{margin-bottom:12px;font-size:36px}.empty-title{font-family:var(--font-serif);color:var(--text);margin-bottom:8px;font-size:18px}.empty-text{color:var(--text2);font-size:13px;line-height:1.6}.btn{font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn-full{width:100%}.btn-primary{background:var(--accent);color:#0a0c0e}.btn-primary:hover{background:var(--accent-dark)}.btn-ghost{background:var(--surface2);color:var(--text);border:1px solid var(--border2)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.auth-wrap{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:40px 24px;display:flex}.auth-card{width:100%;max-width:380px}.auth-logo{text-align:center;margin-bottom:32px}.auth-logo-mark{background:var(--accent);width:64px;height:64px;font-family:var(--font-mono);color:#0a0c0e;border-radius:18px;justify-content:center;align-items:center;margin:0 auto 14px;font-size:24px;font-weight:700;display:flex}.auth-logo-name{font-family:var(--font-serif);color:var(--text);font-size:28px}.auth-tagline{color:var(--text3);font-size:12px;font-family:var(--font-mono);margin-top:4px}.auth-title{font-family:var(--font-serif);color:var(--text);margin-bottom:20px;font-size:22px}.form-group{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.form-group label{letter-spacing:1.2px;text-transform:uppercase;color:var(--text3);font-size:10px;font-weight:600;font-family:var(--font-mono)}.form-group input{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);width:100%;padding:11px 14px;font-size:15px}.form-group input:focus{border-color:var(--accent);background:var(--surface);outline:none}.auth-error{background:var(--danger-dim);border:1px solid var(--danger);color:var(--danger);border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:13px}.auth-ok{background:var(--green-dim);border:1px solid var(--green);color:var(--green);border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:13px}.auth-switch{text-align:center;border-top:1px solid var(--border);color:var(--text2);margin-top:24px;padding-top:24px;font-size:13px}.auth-switch button{color:var(--accent);cursor:pointer;font-size:13px;font-weight:600;font-family:var(--font-sans);background:0 0;border:none}.page-title{font-family:var(--font-serif);color:var(--text);margin-bottom:16px;font-size:24px}.form-grid-2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-grid-3{grid-template-columns:1fr 1fr 1fr;gap:10px;display:grid}select,textarea{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);-webkit-appearance:none;width:100%;padding:11px 14px;font-size:15px}select:focus,textarea:focus{border-color:var(--accent);background:var(--surface);outline:none}textarea{resize:vertical;min-height:72px;font-size:14px}.form-msg{border-radius:8px;margin-top:12px;padding:10px 14px;font-size:13px}.form-msg.ok{background:var(--green-dim);border:1px solid var(--green);color:var(--green)}.form-msg.err{background:var(--danger-dim);border:1px solid var(--danger);color:var(--danger)}.btn-row{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.search-bar{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-sm);align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.search-bar input{color:var(--text);background:0 0;border:none;flex:1;padding:0;font-size:14px}.search-bar input:focus{outline:none}.chip-row{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.filter-chip{border:1px solid var(--border2);color:var(--text2);cursor:pointer;font-size:11px;font-weight:500;font-family:var(--font-sans);background:0 0;border-radius:20px;padding:5px 13px;transition:all .15s}.filter-chip.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.hist-count{color:var(--text3);margin-bottom:10px;font-size:12px}.entry-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:flex-start;gap:12px;margin-bottom:10px;padding:14px;display:flex}.entry-bar{border-radius:2px;flex-shrink:0;align-self:stretch;width:3px;min-height:40px}.entry-body{flex:1;min-width:0}.entry-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.entry-title{color:var(--text);font-size:14px;font-weight:600}.entry-amount{color:var(--accent);font-size:15px;font-weight:700;font-family:var(--font-mono);white-space:nowrap}.entry-net{color:var(--text3);text-align:right;margin-top:2px;font-size:11px}.entry-meta{color:var(--text2);flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.entry-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.entry-btn{border:1px solid var(--border2);color:var(--text3);cursor:pointer;font-size:11px;font-family:var(--font-sans);background:0 0;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;transition:all .15s;display:inline-flex}.entry-btn:hover{border-color:var(--accent);color:var(--accent)}.entry-btn.del:hover{border-color:var(--danger);color:var(--danger)}.badge{letter-spacing:.5px;font-size:10px;font-weight:600;font-family:var(--font-mono);border-radius:20px;padding:3px 9px;display:inline-block}.badge-paid{background:var(--green-dim);color:var(--green)}.badge-unpaid{background:var(--danger-dim);color:var(--danger)}.badge-stat{background:var(--warn-dim);color:var(--warn)}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:20px 20px 0 0;width:100%;max-width:520px;max-height:90vh;padding:24px 20px 36px;position:relative;overflow-y:auto}.modal-handle{background:var(--border2);border-radius:2px;width:36px;height:4px;margin:0 auto 20px}.modal-title{font-family:var(--font-serif);color:var(--text);margin-bottom:16px;font-size:20px}.modal-close{background:var(--surface2);border:1px solid var(--border2);cursor:pointer;width:32px;height:32px;color:var(--text2);border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:16px;right:16px}.toast{bottom:calc(var(--nav-h) + 16px);background:var(--surface2);border:1px solid var(--border2);color:var(--text);z-index:300;opacity:0;pointer-events:none;box-shadow:var(--shadow-lg);border-radius:10px;padding:12px 20px;font-size:13px;font-weight:500;transition:all .25s;position:fixed;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast.success{border-color:var(--accent);color:var(--accent)}.toast.error{border-color:var(--danger);color:var(--danger)}.app-shell{padding-bottom:calc(var(--nav-h) + 16px)}.bottom-nav{z-index:100;height:var(--nav-h);background:var(--nav-bg);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-top:1px solid var(--border);justify-content:space-around;align-items:center;padding:0 8px;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{cursor:pointer;color:var(--text3);font-family:var(--font-sans);letter-spacing:.4px;text-transform:uppercase;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 4px;font-size:9px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-item.active{color:var(--accent)}.nav-icon{border-radius:12px;justify-content:center;align-items:center;width:44px;height:32px;font-size:20px;transition:all .2s;display:flex}.nav-item.active .nav-icon{background:var(--accent-dim2);transform:translateY(-2px)}.more-overlay{z-index:150;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;position:fixed;inset:0}.more-sheet{z-index:151;background:var(--surface);border-top:1px solid var(--border);border-radius:24px 24px 0 0;max-width:520px;margin:0 auto;padding:16px 20px 40px;position:fixed;bottom:0;left:0;right:0}.more-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:6px;display:grid}.more-item{background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;text-decoration:none;transition:all .15s;display:flex}.more-item:hover{border-color:var(--accent);background:var(--accent-dim)}.more-item-label{color:var(--text2);text-align:center;font-size:11px;font-weight:600}.settings-section{margin-bottom:20px}.settings-label{letter-spacing:2px;text-transform:uppercase;color:var(--text3);font-size:10px;font-weight:600;font-family:var(--font-mono);margin-bottom:10px;padding:0 2px}.settings-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;margin-bottom:8px;padding:14px;display:flex}.settings-row-label{color:var(--text);font-size:14px;font-weight:500}.settings-row-sub{color:var(--text3);margin-top:2px;font-size:12px}.settings-right{align-items:center;gap:8px;display:flex}.settings-input{text-align:right;width:76px;padding:7px 10px;font-size:14px}.sw{background:var(--surface3);cursor:pointer;border:none;border-radius:12px;width:44px;height:24px;padding:0;transition:background .2s;position:relative}.sw.on{background:var(--accent)}.sw-dot{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3px;left:3px}.sw.on .sw-dot{transform:translate(20px)}.sig-pad{border:1px solid var(--border2);border-radius:var(--radius-sm);cursor:crosshair;background:#fff;width:100%;height:150px;display:block}.stop-num{background:var(--accent-dim2);width:26px;height:26px;color:var(--accent);font-size:12px;font-weight:700;font-family:var(--font-mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.stop-del{color:var(--text3);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:4px;font-size:20px;line-height:1}.stop-del:hover{color:var(--danger)}.stop-drag{color:var(--text3);cursor:grab;touch-action:none;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:2px;display:flex}.stop-drag:active{cursor:grabbing}.stop-drag:hover{color:var(--accent)}.addr-suggest{z-index:50;background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-height:240px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.addr-suggest-item{color:var(--text);cursor:pointer;border-bottom:1px solid var(--border);padding:10px 12px;font-size:13px;line-height:1.35}.addr-suggest-item:last-child{border-bottom:none}.addr-suggest-item:hover{background:var(--accent-dim);color:var(--accent)}.btn-danger{background:var(--danger-dim);color:var(--danger);border:1px solid #0000}.btn-danger:hover{border-color:var(--danger)}
