/* 乡账通 样式 */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --primary:#0F6E56;
  --primary-light:#E1F5EE;
  --primary-dark:#085041;
  --income:#0F6E56;
  --expense:#D85A30;
  --bg:#F5F6F3;
  --card:#FFFFFF;
  --text:#2C2C2A;
  --text-2:#888780;
  --text-3:#B4B2A9;
  --border:#E8E8E2;
  --radius:12px;
  --radius-sm:8px;
  --shadow:0 1px 3px rgba(0,0,0,.06);
  --maxw:480px;
}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:16px;color:var(--text);background:var(--card)}
input::placeholder,textarea::placeholder{color:var(--text-3)}

/* 布局 */
#app{max-width:var(--maxw);margin:0 auto;min-height:100vh;background:var(--bg);position:relative}
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,#0F6E56 0%,#085041 100%)}
.login-card{background:var(--card);border-radius:20px;padding:36px 28px;width:100%;max-width:380px;box-shadow:0 8px 32px rgba(0,0,0,.15)}
.login-logo{text-align:center;margin-bottom:12px}
.login-card h1{font-size:24px;font-weight:600;text-align:center;color:var(--text)}
.login-sub{text-align:center;color:var(--text-2);font-size:14px;margin:4px 0 28px}

/* 表单 */
.form-group{margin-bottom:18px}
.form-group label{display:block;font-size:14px;color:var(--text-2);margin-bottom:6px;font-weight:500}
.form-group .req{color:var(--expense)}
.form-row{display:flex;gap:12px}
.form-row .form-group{flex:1}
input,select,textarea{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color .2s}
input:focus,select:focus,textarea:focus{border-color:var(--primary)}
textarea{resize:vertical}
.form-group.total-display{background:var(--primary-light);border-radius:var(--radius-sm);padding:14px 16px}
.total-value{font-size:28px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 20px;border-radius:var(--radius-sm);font-size:15px;font-weight:500;transition:opacity .2s,background .2s}
.btn:active{opacity:.75}
.btn-primary{background:var(--primary);color:#fff}
.btn-block{width:100%;padding:14px}
.btn-outline{border:1px solid var(--border);color:var(--text)}
.btn-danger{background:#FCEBEB;color:var(--expense)}
.btn-sm{padding:8px 14px;font-size:13px}
.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--text-2)}
.icon-btn:active{background:var(--border)}

/* 主应用 */
#main-app{display:flex;flex-direction:column;min-height:100vh}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--primary);color:#fff}
.topbar-left{display:flex;align-items:center;gap:8px}
.org-name{font-size:17px;font-weight:600}
.period-badge{background:rgba(255,255,255,.2);padding:2px 8px;border-radius:10px;font-size:12px}
.topbar-right{display:flex;align-items:center;gap:4px}
.user-chip{font-size:13px;background:rgba(255,255,255,.18);padding:4px 10px;border-radius:12px;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar-right .icon-btn{color:#fff}

#content{flex:1;padding:16px 16px 84px;overflow-y:auto}

/* 看板 */
.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.summary-card{background:var(--card);border-radius:var(--radius);padding:18px 16px;box-shadow:var(--shadow)}
.summary-card .summary-label{display:block;font-size:13px;color:var(--text-2);margin-bottom:8px}
.summary-card .summary-amount{display:block;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}
.summary-card.income .summary-amount{color:var(--income)}
.summary-card.expense .summary-amount{color:var(--expense)}
.balance-card{background:var(--card);border-radius:var(--radius);padding:18px 16px;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.balance-label{font-size:14px;color:var(--text-2)}
.balance-amount{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--primary)}
.balance-left{display:flex;flex-direction:column;gap:4px}
.carryin-line{font-size:12px;color:var(--text-3)}

.section-title{font-size:15px;font-weight:600;color:var(--text);margin:20px 0 12px}
.quick-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.quick-btn{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--primary);font-size:12px;font-weight:500}
.quick-btn span{color:var(--text)}
.quick-btn:active{background:var(--primary-light)}
.chart-wrap{background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);height:240px;position:relative}
.empty-hint{text-align:center;color:var(--text-3);font-size:14px;padding:32px 16px}

/* 记账 */
.record-tabs{display:flex;background:var(--card);border-radius:var(--radius);padding:4px;margin-bottom:16px;box-shadow:var(--shadow)}
.record-tab{flex:1;padding:10px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--text-2);transition:all .2s}
.record-tab.active{background:var(--primary);color:#fff}
.record-form{background:var(--card);border-radius:var(--radius);padding:20px 16px;box-shadow:var(--shadow)}

/* 明细 */
.filter-bar{margin-bottom:12px}
.filter-bar select{background:var(--card);border:1px solid var(--border)}
.ledger-list{display:flex;flex-direction:column;gap:10px}
.ledger-item{background:var(--card);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:flex-start;gap:12px}
.ledger-item .li-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px}
.ledger-item.expense .li-icon{background:#FAECE7;color:var(--expense)}
.ledger-item.income .li-icon{background:var(--primary-light);color:var(--income)}
.ledger-item .li-body{flex:1;min-width:0}
.ledger-item .li-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.ledger-item .li-cat{font-size:15px;font-weight:500}
.ledger-item .li-amount{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.ledger-item.income .li-amount{color:var(--income)}
.ledger-item.expense .li-amount{color:var(--expense)}
.ledger-item .li-meta{font-size:12px;color:var(--text-3);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}
.ledger-item .li-remark{font-size:13px;color:var(--text-2);margin-top:4px;padding:5px 8px;background:var(--bg);border-radius:6px}
.ledger-item .li-actions{display:flex;gap:6px;margin-top:8px}
.ledger-item .li-actions .btn-sm{padding:4px 10px;font-size:12px}

/* 更多 */
.menu-list{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;overflow:hidden}
.menu-item{display:flex;align-items:center;gap:14px;padding:16px;color:var(--text-2);border-bottom:1px solid var(--border);width:100%;text-align:left}
.menu-item:last-child{border-bottom:none}
.menu-item span{flex:1;color:var(--text);font-size:15px}
.menu-item .chev{color:var(--text-3)}
.menu-item:active{background:var(--bg)}
.about-box{text-align:center;padding:24px 16px;color:var(--text-2);font-size:13px}
.about-box .muted{color:var(--text-3);font-size:12px;margin-top:4px}

/* 底部导航 */
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:var(--maxw);display:flex;background:var(--card);border-top:1px solid var(--border);z-index:30;padding-bottom:env(safe-area-inset-bottom)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 10px;color:var(--text-3);font-size:11px}
.tab.active{color:var(--primary)}
.tab svg{transition:transform .2s}
.tab.active svg{transform:translateY(-1px)}

/* 模态框 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.modal-box{background:var(--card);width:100%;max-width:var(--maxw);border-radius:20px 20px 0 0;max-height:85vh;display:flex;flex-direction:column;animation:slideUp .25s ease}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}
.modal-header h3{font-size:17px;font-weight:600}
.modal-body{padding:18px;overflow-y:auto}

/* Toast */
.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.8);color:#fff;padding:12px 24px;border-radius:10px;font-size:14px;z-index:100;max-width:80%;text-align:center;animation:fadeIn .2s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* 归档列表 */
.archive-month{background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:12px}
.archive-month .am-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.archive-month .am-title{font-size:16px;font-weight:600}
.archive-month .am-stats{display:flex;gap:16px;font-size:13px}
.archive-month .am-stats .income{color:var(--income)}
.archive-month .am-stats .expense{color:var(--expense)}

/* 成员列表 */
.member-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}
.member-item:last-child{border-bottom:none}
.member-avatar{width:40px;height:40px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;flex-shrink:0}
.member-info{flex:1}
.member-info .mi-name{font-size:15px;font-weight:500}
.member-info .mi-role{font-size:12px;color:var(--text-3)}
.role-tag{font-size:11px;padding:2px 8px;border-radius:8px}
.role-tag.admin{background:var(--primary-light);color:var(--primary)}
.role-tag.member{background:#F1EFE8;color:var(--text-2)}

/* 设置 */
.setting-section{margin-bottom:20px}
.setting-section h4{font-size:14px;color:var(--text-2);margin-bottom:10px}
.sync-status{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--bg);font-size:13px;margin-bottom:12px}
.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3)}
.sync-dot.online{background:var(--income)}
.note-box{background:var(--primary-light);border-radius:var(--radius-sm);padding:14px;font-size:13px;color:var(--primary-dark);line-height:1.7}
.note-box code{background:rgba(15,110,86,.12);padding:1px 5px;border-radius:3px;font-size:12px}
