*{box-sizing:border-box}body{margin:0;background:#f5f5f7;color:#1d1d1f;font:14px "Microsoft YaHei","PingFang SC",sans-serif}aside{position:fixed;inset:0 auto 0 0;width:210px;background:#fff;border-right:1px solid #e5e5ea;padding:28px 14px;display:flex;flex-direction:column}aside h1{margin:0 14px 4px;font-size:24px}aside p{color:#86868b;margin:0 14px 28px;font-size:12px}nav{flex:1}nav a{display:block;padding:13px 18px;margin:4px 0;border-radius:11px;color:#3a3a3c;text-decoration:none}nav a.active,nav a:hover{background:#eaf3ff;color:#007aff;font-weight:700}.content{margin-left:210px;padding:28px 36px;max-width:1600px}header{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}h2{font-size:30px;margin:0 0 4px}header p{margin:0;color:#86868b}.card,.summary-card{background:#fff;border:1px solid #dedee3;border-radius:14px;margin-bottom:16px;overflow:hidden}.form-card{padding:16px}.grid-form,.settings-form,header form,.actions,.import-row form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.grid-form label,.settings-form label{min-width:150px;flex:1}.settings-form{max-width:760px}.settings-form label{flex-basis:45%}label{display:grid;gap:6px;color:#6e6e73;font-size:12px}input,select{height:42px;border:1px solid #8e8e93;border-radius:10px;background:#fff;padding:0 12px;font:inherit;min-width:0}input:focus,select:focus{outline:2px solid #007aff;border-color:#007aff}button,.button{height:40px;border:0;border-radius:10px;background:#007aff;color:#fff;padding:0 18px;font:600 14px inherit;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.secondary{background:#e8e8ed!important;color:#1d1d1f!important}.danger{color:#ff3b30!important}.link{background:none;color:#007aff;padding:0;height:auto}.actions form{display:inline-flex}table{width:100%;border-collapse:collapse}th{background:#f5f5f7;color:#6e6e73;font-weight:600}th,td{padding:12px 14px;border-bottom:1px solid #eeeeef;text-align:left}tr:last-child td{border-bottom:0}.table-input{width:130px;height:34px}.empty{text-align:center;color:#86868b;padding:44px}.summary-card{padding:16px}.summary-card>div:first-child{display:grid;gap:5px}.summary-card small{color:#86868b}.summary-card strong{color:#007aff;font-size:18px}.grid-pay-head,.save-grid{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px}.grid-pay-head>div{display:grid;gap:4px}.grid-meter-list{display:grid;gap:8px;margin-bottom:12px}.grid-meter-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(125px,1fr) minmax(135px,1fr) minmax(135px,1fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid #e5e5ea;border-radius:12px;background:#fafafa}.grid-unit-cost{background:#f1f6fc;color:#007aff;font-weight:700}.remove-grid{padding:0 14px}.save-grid{justify-content:flex-end;color:#007aff;font-weight:600}.summary-card table{border:1px solid #eeeeef;border-radius:10px;overflow:hidden}.flash{padding:12px 16px;border-radius:10px;background:#eaf8ee;color:#248a3d;margin-bottom:14px}.flash.error{background:#fff0ef;color:#c9342d}.status{display:inline-block;border-radius:999px;padding:4px 10px;background:#fff3df;color:#b56a00}.status.paid{background:#eaf8ee;color:#248a3d}.login-page{min-height:100vh;display:grid;place-items:center}.login-card{width:min(390px,calc(100% - 32px));background:#fff;border:1px solid #dedee3;border-radius:20px;padding:34px}.login-card h1{margin:0}.login-card p{color:#86868b}.login-card form{display:grid;gap:12px}.login-card button{width:100%}.import-row{padding:14px}@media(max-width:900px){aside{position:static;width:auto;height:auto;padding:14px}aside p{margin-bottom:10px}nav{display:flex;overflow:auto}nav a{white-space:nowrap}.content{margin:0;padding:18px}header{align-items:stretch;flex-direction:column}.grid-form>*{flex:1 1 140px}.grid-meter-row{grid-template-columns:1fr 1fr}.grid-meter-row label:first-child{grid-column:1/-1}.remove-grid{width:100%}.save-grid{align-items:stretch;flex-direction:column}.save-grid button{width:100%}table{min-width:720px}.card,.summary-card{overflow:auto}}
.brand{display:flex;align-items:center;gap:10px;margin:0 8px 24px}.brand img{width:48px;height:48px;border-radius:13px}.brand h1{margin:0}.brand p{margin:3px 0 0}.login-logo{display:block;width:88px;height:88px;border-radius:22px;margin:0 auto 18px}.login-card h1,.login-card>p{text-align:center}
.history-table{min-width:1280px}.history-input{height:34px;padding:0 9px;border-color:#d1d1d6;border-radius:8px}.history-date{width:145px}.history-remark{width:180px}.history-actions{white-space:nowrap}.history-actions .link{margin-right:12px}.history-actions .link:last-child{margin-right:0}.payment-status{min-width:180px}.payment-status small{display:block;margin-top:6px;color:#86868b;white-space:nowrap}.status{background:#fff0ef;color:#c9342d}.status.partial{background:#fff3df;color:#b56a00}.prepaid-label{color:#86868b;font-size:12px}
.bill-builder{max-width:900px;padding:28px;overflow:visible}.bill-step-title{display:flex;align-items:center;gap:12px;margin-bottom:16px}.bill-step-title>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#eaf3ff;color:#007aff;font-weight:700}.bill-step-title>div{display:grid;gap:3px}.bill-step-title b{font-size:16px}.bill-step-title small,.bill-download-row small{color:#86868b}.bill-builder label{gap:8px;color:#6e6e73;font-size:13px}.bill-builder select{height:48px;border:1px solid #d2d2d7;border-radius:12px;background-color:#fbfbfd;padding:0 14px;color:#1d1d1f;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.03);transition:border-color .16s,box-shadow .16s,background-color .16s}.bill-builder select:hover{border-color:#a9a9af;background-color:#fff}.bill-builder select:focus{outline:0;border-color:#007aff;background-color:#fff;box-shadow:0 0 0 3px rgba(0,122,255,.14)}.bill-user-form{display:grid;grid-template-columns:minmax(260px,560px) auto;gap:14px;align-items:end}.bill-user-form button{height:48px;min-width:116px}.bill-divider{height:1px;background:#eeeeef;margin:28px 0}.bill-range-form{display:grid;gap:20px}.bill-month-range{display:grid;grid-template-columns:minmax(200px,1fr) 30px minmax(200px,1fr);gap:14px;align-items:end;max-width:720px}.bill-month-range>span{text-align:center;color:#86868b;padding-bottom:15px}.bill-download-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:18px;border-top:1px solid #eeeeef}.bill-download-row button{min-width:160px}.bill-placeholder{margin-top:20px;padding:34px;border-radius:12px;background:#f7f7f9;color:#86868b;text-align:center}@media(max-width:700px){.bill-builder{padding:20px}.bill-user-form,.bill-month-range{grid-template-columns:1fr}.bill-month-range>span{padding:0;text-align:left}.bill-download-row{align-items:stretch;flex-direction:column}.bill-download-row button,.bill-user-form button{width:100%}}

/* Phone web app: iPhone safe areas + OPPO Find N fold/unfold layouts. */
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Roboto","Microsoft YaHei",sans-serif;-webkit-text-size-adjust:100%}button,.button,input,select{touch-action:manipulation}button,.button{-webkit-tap-highlight-color:transparent}
@media(max-width:900px){
  body:not(.login-page){padding-bottom:calc(76px + env(safe-area-inset-bottom));background:#f2f3f7}
  aside{position:sticky;inset:auto;top:0;z-index:30;width:100%;height:auto;min-height:58px;padding:calc(8px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));display:flex;flex-direction:row;align-items:center;justify-content:space-between;background:#fff;border:0;border-bottom:1px solid rgba(60,60,67,.16)}
  .brand{gap:9px;margin:0}.brand img{width:38px;height:38px;border-radius:11px}.brand h1{margin:0;font-size:18px;letter-spacing:-.3px}.brand p{display:none}aside>form{margin:0}aside>form .link{height:44px;padding:0 8px;font-size:13px}
  nav{position:fixed;z-index:40;left:0;right:0;bottom:0;height:calc(64px + env(safe-area-inset-bottom));padding:0 max(8px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(6,minmax(0,1fr));overflow:visible;background:rgba(255,255,255,.96);border-top:1px solid rgba(60,60,67,.18);box-shadow:0 -8px 26px rgba(17,28,45,.06);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px)}
  nav a{position:relative;display:grid;place-items:center;margin:0;padding:19px 2px 7px;border-radius:0;color:#777;font-size:0;line-height:1;text-align:center;white-space:nowrap}nav a::before{content:"";position:absolute;top:7px;width:20px;height:3px;border-radius:4px;background:transparent}nav a::after{content:attr(data-short);font-size:11px;font-weight:600;letter-spacing:.1px}nav a.active,nav a:hover{background:transparent;color:#007aff}nav a.active::before{background:#007aff}
  .content{max-width:none;margin:0;padding:20px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left))}
  header{align-items:stretch;flex-direction:column;gap:14px;margin-bottom:16px}h2{font-size:27px;line-height:1.2;letter-spacing:-.6px}header p{font-size:13px;line-height:1.5}header form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;width:100%}header>.actions{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%}header>.actions form{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%}header>.actions>.button{height:48px}
  input,select{height:48px;border-color:#c7c7cc;border-radius:12px;padding:0 13px;font-size:16px}button,.button{min-height:46px;border-radius:12px;padding:0 16px}.card,.summary-card{border-color:#dedfe5;border-radius:16px;margin-bottom:14px;box-shadow:0 1px 2px rgba(28,39,52,.03)}
  .form-card{padding:16px}.grid-form,.settings-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-form label,.settings-form label{min-width:0}.grid-form>button,.settings-form>button{grid-column:1/-1;width:100%;margin-top:2px}
  .mobile-list{overflow:visible;background:transparent;border:0;box-shadow:none}.mobile-list table,.history-table{display:block;min-width:0}.mobile-list thead{display:none}.mobile-list tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mobile-list tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;overflow:hidden;background:#fff;border:1px solid #dedfe5;border-radius:16px;box-shadow:0 2px 6px rgba(28,39,52,.035)}.mobile-list td{display:block;min-width:0;padding:11px 14px;border:0;border-bottom:1px solid #f0f0f2;line-height:1.35;overflow-wrap:anywhere}.mobile-list td::before,.mobile-summary td::before{content:attr(data-label);display:block;margin-bottom:5px;color:#86868b;font-size:11px;font-weight:500;line-height:1.2}.mobile-list td:first-child{font-size:16px;font-weight:700}.mobile-list td.actions,.mobile-list td.history-actions{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:20px;min-height:52px;border-bottom:0}.mobile-list td.actions::before,.mobile-list td.history-actions::before{display:none}.mobile-list td.actions a,.mobile-list td.actions button,.history-actions button{display:inline-flex;align-items:center;min-height:44px;padding:0 5px}.mobile-list .empty{grid-column:1/-1;padding:38px 18px;text-align:center;font-size:14px;font-weight:400}.mobile-list .empty::before{display:none}
  .reading-list tbody{align-items:start}.reading-list .reading-row td:nth-child(5),.reading-list .reading-row td:nth-child(6),.reading-list .reading-row td:nth-child(7),.reading-list .reading-row td:nth-child(8){background:#fbfbfd}.reading-list .reading-usage,.reading-list .reading-amount{color:#007aff;font-size:16px;font-weight:700}.table-input{width:100%;height:44px;padding:0 10px}.summary-card{padding:16px}.summary-card>div:first-child{padding:2px 2px 8px}.summary-card strong{font-size:18px;line-height:1.45}.grid-pay-head{align-items:center;margin:14px 0 12px}.grid-pay-head button{flex:none}.grid-meter-list{gap:12px}.grid-meter-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border-radius:14px;background:#f8f9fb}.grid-meter-row label:first-child,.grid-meter-row label:nth-child(4),.grid-meter-row .remove-grid{grid-column:1/-1}.grid-meter-row input{width:100%}.remove-grid{width:100%;height:44px}.save-grid{align-items:stretch;flex-direction:column;margin:16px 0}.save-grid span{padding:4px 2px;font-size:15px;text-align:right}.save-grid button{width:100%;height:50px}
  .mobile-summary{display:block;min-width:0;border:0!important}.mobile-summary thead{display:none}.mobile-summary tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mobile-summary tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;background:#f7f8fa;border:1px solid #e8e8ec;border-radius:13px}.mobile-summary td{display:block;padding:10px 12px;border:0;border-bottom:1px solid #ececf0}.mobile-summary td:nth-last-child(-n+2){border-bottom:0}.mobile-summary td:nth-child(3),.mobile-summary td:nth-child(4){font-weight:700}.mobile-summary td:nth-child(4){color:#007aff}
  .history-input,.history-date,.history-remark{width:100%;height:44px;font-size:16px}.payment-status{min-width:0}.payment-status small{white-space:normal;line-height:1.45}.prepaid-label{margin-right:auto}.history-actions{white-space:normal}.history-actions .link{margin:0}.import-row{padding:14px}.import-row form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.import-row input[type=file]{width:100%;padding:10px;height:auto;min-height:48px}
  .bill-builder{max-width:none;padding:20px}.bill-placeholder{padding:28px 18px}.settings-form{max-width:none}
}
@media(max-width:640px){
  .content{padding-top:17px}.grid-form,.settings-form{grid-template-columns:1fr}.mobile-list tbody,.mobile-summary tbody{grid-template-columns:1fr}.mobile-list tr{grid-template-columns:repeat(2,minmax(0,1fr))}header form,header>.actions,header>.actions form{grid-template-columns:1fr}header form button,header>.actions>.button{width:100%}.grid-pay-head{align-items:stretch;flex-direction:column}.grid-pay-head button{width:100%}.import-row form{grid-template-columns:1fr}.import-row button{width:100%}.bill-user-form,.bill-month-range{grid-template-columns:1fr}.login-card{padding:28px 22px}.login-card input{font-size:16px}
}
@media(min-width:641px) and (max-width:900px){
  .content{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}.reading-list tbody,.history-list tbody{grid-template-columns:repeat(2,minmax(0,1fr))}.bill-builder{padding:26px}
}
@media(orientation:landscape) and (max-height:540px) and (max-width:1000px){nav{height:calc(54px + env(safe-area-inset-bottom))}nav a{padding-top:15px}body:not(.login-page){padding-bottom:calc(64px + env(safe-area-inset-bottom))}aside{position:relative;padding-top:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
