*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,Helvetica Neue,Hiragino Sans,Hiragino Kaku Gothic ProN,Yu Gothic UI,Noto Sans JP,Segoe UI,sans-serif;background:#ececec;color:#1d1d1f;-webkit-font-smoothing:antialiased}:root{--primary: #0071e3;--primary-hover: #0077ed;--danger: #ff3b30;--success: #34c759;--warning: #ff9500;--bg: rgba(246, 246, 246, .92);--card-bg: rgba(255, 255, 255, .75);--border: rgba(0, 0, 0, .1);--text: #1d1d1f;--text-secondary: #6e6e73;--text-muted: #86868b;--sidebar-width: 220px;--header-height: 48px;--radius: 10px;--radius-sm: 7px}#app{height:100%}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}.login-card{width:100%;max-width:400px;background:var(--card-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:var(--radius);border:.5px solid var(--border);box-shadow:0 2px 8px #00000014,0 12px 40px #0000000f;padding:32px 24px;text-align:center}.login-card h1{font-size:1.5rem;font-weight:700;margin-bottom:4px}.login-card .subtitle{color:var(--text-muted);font-size:.9rem;margin-bottom:24px}.app-layout{display:flex;flex-direction:column;height:100vh}.app-header{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#fff9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:.5px solid var(--border);flex-shrink:0;z-index:100}.header-left{display:flex;align-items:center;gap:12px}.header-right{display:flex;align-items:center}.lang-switcher{display:flex;gap:2px}.lang-btn{background:none;border:none;cursor:pointer;font-size:.78rem;padding:3px 8px;border-radius:4px;color:var(--text-secondary);transition:background .15s,color .15s}.lang-btn:hover{background:#0000000f;color:var(--text)}.lang-btn.active{background:var(--accent);color:#fff;font-weight:600}.menu-toggle{display:none;background:none;border:none;font-size:1.3rem;cursor:pointer;padding:4px 8px;border-radius:6px;color:var(--text)}.brand{display:flex;align-items:center;gap:10px}.brand .dot{width:12px;height:12px;border-radius:50%;background:var(--success);box-shadow:-18px 0 #ff5f57,-9px 0 #febc2e;margin-left:18px}.brand h1{font-size:1.1rem;font-weight:600}.app-main{display:flex;flex:1;overflow:hidden;min-height:0}.sidebar{width:var(--sidebar-width);background:#fff6;border-right:.5px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.sidebar-nav{padding:8px;flex:1}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);font-size:.9rem;color:var(--text);cursor:pointer;text-decoration:none;transition:background .15s;border:none;background:none;width:100%;text-align:left}.nav-item:hover{background:#0000000a}.nav-item.active,.nav-item.router-link-active{background:var(--primary);color:#fff}.sidebar-user{padding:12px;border-top:.5px solid var(--border);display:flex;align-items:center;gap:10px;font-size:.85rem}.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:.8rem}.content{flex:1;padding:16px;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.card{background:var(--card-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius);border:.5px solid rgba(0,0,0,.06);box-shadow:0 1px 3px #0000000a;padding:16px;margin-bottom:16px}.card h2{font-size:1.05rem;font-weight:600;margin-bottom:12px}.card-hint{font-size:.82rem;color:var(--text-muted);margin-bottom:12px}.field-hint{font-size:.78rem;color:var(--text-muted);margin:4px 0 0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.stat-card{background:var(--card-bg);border-radius:var(--radius);padding:16px;border:.5px solid rgba(0,0,0,.06)}.stat-card .label{font-size:.82rem;color:var(--text-muted)}.stat-card .value{font-size:1.3rem;font-weight:700;margin-top:4px}.stat-card .value.income{color:var(--success)}.stat-card .value.expense{color:var(--danger)}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field label{font-size:.82rem;font-weight:500;color:var(--text-secondary)}.field input,.field select,.field textarea{border:.5px solid rgba(0,0,0,.15);border-radius:var(--radius-sm);padding:8px 10px;font-size:.9rem;background:#fffc;color:var(--text);outline:none;transition:border-color .2s,box-shadow .2s;width:100%}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0071e326}.form-row{display:flex;gap:12px}.form-row .field{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:var(--radius-sm);padding:8px 16px;font-size:.85rem;font-weight:500;color:#fff;background:var(--primary);cursor:pointer;transition:background .15s,box-shadow .15s;white-space:nowrap}.btn:hover{background:var(--primary-hover);box-shadow:0 1px 4px #0071e340}.btn:active{background:#006edb}.btn-secondary{background:#0000000a;color:var(--text);border:.5px solid rgba(0,0,0,.12)}.btn-secondary:hover{background:#00000014;box-shadow:none}.btn-danger{background:var(--danger)}.btn-danger:hover{background:#e0342b}.btn-success{background:var(--success)}.btn-sm{padding:4px 10px;font-size:.8rem}.btn-group{display:flex;gap:8px;flex-wrap:wrap}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:8px 10px;text-align:left;border-bottom:.5px solid rgba(0,0,0,.06);white-space:nowrap}th{font-weight:600;color:var(--text-secondary);font-size:.8rem}tr:hover td{background:#00000005}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:16px;overflow-x:auto}.tab{padding:8px 16px;font-size:.85rem;color:var(--text-secondary);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background:#fff;border-radius:var(--radius);box-shadow:0 8px 32px #0000002e;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;padding:24px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h3{font-size:1.1rem;font-weight:600}.modal-close{background:none;border:none;font-size:1.3rem;cursor:pointer;color:var(--text-muted);padding:4px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.tag-list{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:.78rem;background:#0071e314;color:var(--primary)}.tag.active{background:var(--primary);color:#fff}.progress{height:8px;border-radius:4px;background:#0000000f;overflow:hidden}.progress-bar{height:100%;border-radius:4px;transition:width .3s}.progress-bar.green{background:var(--success)}.progress-bar.orange{background:var(--warning)}.progress-bar.red{background:var(--danger)}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:8px 20px;border-radius:20px;font-size:.85rem;z-index:9999;animation:toastIn .3s ease-out}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.finder-layout{display:flex;gap:0;border:.5px solid rgba(0,0,0,.06);border-radius:var(--radius);overflow:hidden;background:var(--card-bg);min-height:0;flex:1}.finder-sidebar{width:220px;background:#ffffff80;border-right:.5px solid var(--border);overflow-y:auto;flex-shrink:0}.finder-sidebar .item{padding:7px 12px 7px 24px;font-size:.85rem;cursor:pointer;transition:background .15s;display:flex;align-items:center;gap:4px}.finder-sidebar .item .acct-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finder-sidebar .item .acct-balance{flex-shrink:0;font-size:.78rem;color:var(--text-muted)}.finder-sidebar .item.active .acct-balance{color:#fffc}.finder-sidebar .item:hover{background:#0000000a}.finder-sidebar .item.active{background:var(--primary);color:#fff}.finder-sidebar .group-label{padding:10px 12px 5px;font-size:.82rem;font-weight:700;color:var(--text);letter-spacing:.02em;background:linear-gradient(to bottom,#0000000a,#00000004);border-bottom:1px solid rgba(0,0,0,.06);border-top:1px solid rgba(0,0,0,.04);display:flex;align-items:center;gap:4px}.finder-sidebar .group-label .group-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finder-sidebar .group-label .group-balance{flex-shrink:0;font-weight:400;font-size:.78rem}.finder-sidebar .group-label:first-child{border-top:none}.finder-sidebar .group-label .group-collapse-icon{flex-shrink:0;font-size:.6rem;color:var(--text-muted);width:10px;text-align:center}.finder-sidebar .item.top-item{padding-left:12px;font-weight:600}.finder-main{flex:1;overflow-y:auto;padding:12px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;font-size:.78rem;text-align:center}.calendar-grid .day-header{font-weight:600;color:var(--text-muted);padding:4px}.calendar-grid .day{padding:4px;border-radius:4px;min-height:36px}.calendar-grid .day.has-income{color:var(--success);font-weight:600}.calendar-grid .day.has-expense{color:var(--danger);font-weight:600}.calendar-grid .day.today{background:var(--primary);color:#fff;border-radius:50%}.empty{text-align:center;padding:32px;color:var(--text-muted);font-size:.9rem}.danger-zone{border:1px solid var(--danger);border-radius:var(--radius);padding:16px;margin-top:16px}.danger-zone h3{color:var(--danger);margin-bottom:8px}@media(max-width:768px){.menu-toggle{display:block}.brand .dot{display:none}.sidebar{position:fixed;left:0;top:var(--header-height);bottom:0;z-index:200;background:#f6f6f6fa;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transform:translate(-100%);transition:transform .25s ease;width:260px}.sidebar.open{transform:translate(0)}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;top:var(--header-height);background:#0000004d;z-index:199}.content{padding:12px}.login-page{padding:0;align-items:flex-start}.login-card{max-width:100%;min-height:100dvh;border-radius:0;box-shadow:none;padding:52px 24px 32px;display:flex;flex-direction:column}.login-card h1{font-size:2rem}.login-card .field input{height:48px;font-size:1rem}.login-card .btn{height:48px;font-size:1rem;border-radius:12px}.login-card .btn-group{flex-direction:column!important;gap:12px}.login-card .btn-group .btn{width:100%}.card-grid{grid-template-columns:1fr 1fr}.stat-card .value{font-size:1.1rem}.finder-layout{flex-direction:column;min-height:auto}.finder-sidebar{width:100%;border-right:none;border-bottom:.5px solid var(--border);max-height:200px}.finder-main{min-height:300px}table{min-width:600px}.form-row{flex-direction:column;gap:0}.modal-content{max-width:100%;margin:0;border-radius:var(--radius) var(--radius) 0 0}.modal-overlay{align-items:flex-end;padding:0}}@media(max-width:480px){.card-grid{grid-template-columns:1fr}.btn-group{flex-direction:column}.tabs{gap:0}.tab{padding:8px 10px;font-size:.8rem}}@media(min-width:769px)and (max-width:1024px){:root{--sidebar-width: 180px}.finder-sidebar{width:180px}}
