:root{--ink:#17231f;--muted:#6f7d77;--paper:#f4f7f2;--card:#fff;--line:#dde6df;--green:#225b45;--mint:#cfe8d9;--lime:#dff15d}
*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;color:var(--ink);background:radial-gradient(circle at 85% 0%,rgba(223,241,93,.24),transparent 28rem),var(--paper);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}button,input,select{font:inherit}button{cursor:pointer}main{min-height:100vh;padding-bottom:72px}[hidden]{display:none!important}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 70% 15%,rgba(223,241,93,.36),transparent 24rem),var(--green)}.login-card{width:min(100%,420px);padding:38px;border-radius:26px;background:#fbfcfa;box-shadow:0 30px 90px rgba(6,24,17,.35)}.login-card .brand-mark{margin-bottom:28px}.login-card h1{margin:0;font:700 34px Georgia,"Songti SC",serif}.login-card p{margin:10px 0 25px;color:var(--muted)}.login-card label{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:800}.login-card input{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:12px;outline:none;margin-bottom:15px}.form-error{min-height:20px;margin-top:10px;color:#a43f31;font-size:12px;text-align:center}
.topbar{height:76px;padding:0 clamp(20px,4vw,64px);display:flex;align-items:center;gap:13px;border-bottom:1px solid rgba(34,91,69,.12);background:rgba(244,247,242,.86);backdrop-filter:blur(16px);position:sticky;top:0;z-index:20}.brand-mark{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;color:#fff;background:var(--green);font-weight:800;box-shadow:0 8px 18px rgba(34,91,69,.18)}.brand-copy{display:flex;flex-direction:column;gap:2px}.brand-copy strong{font-size:15px}.brand-copy span{color:var(--muted);font-size:11px}.header-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.button{border:0;border-radius:12px;padding:11px 17px;font-weight:700;transition:.2s ease}.button:hover{transform:translateY(-1px)}.button.primary{color:#fff;background:var(--green);box-shadow:0 10px 22px rgba(34,91,69,.16)}.button.secondary{color:var(--green);background:#fff;border:1px solid var(--line)}.button.full{width:100%;padding:14px}.button:disabled{opacity:.55;cursor:wait}.logout-button{padding:8px;border:0;background:none;color:var(--muted);font-size:12px}
.platform-tabs{max-width:1180px;margin:0 auto 22px;padding:0 24px;display:flex;gap:8px}.platform-tabs button{min-width:92px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:rgba(255,255,255,.76);font-weight:800}.platform-tabs button.active{color:#fff;border-color:var(--green);background:var(--green);box-shadow:0 8px 20px rgba(34,91,69,.16)}
.hero{max-width:1180px;margin:0 auto;padding:70px 24px 44px;display:flex;align-items:center;justify-content:space-between;gap:32px}.eyebrow{display:block;color:var(--green);font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px}.hero h1{margin:0;max-width:700px;font:700 clamp(38px,5vw,66px)/1.08 Georgia,"Songti SC",serif;letter-spacing:-.045em}.hero p{margin:18px 0 0;color:var(--muted);font-size:16px}.hero-orbit{flex:0 0 auto;width:132px;height:132px;display:grid;place-content:center;text-align:center;border-radius:50%;background:var(--lime);box-shadow:0 22px 48px rgba(106,126,44,.18);transform:rotate(5deg)}.hero-orbit span{font:700 48px/.95 Georgia,serif}.hero-orbit small{font-weight:700;margin-top:6px}
.summary-grid{max-width:1180px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:14px}.summary-card{min-height:142px;padding:25px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.86);display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 10px 32px rgba(30,56,45,.04)}.summary-card.featured{color:#fff;border-color:var(--green);background:var(--green);position:relative;overflow:hidden}.summary-card.featured:after{content:"";position:absolute;width:150px;height:150px;right:-52px;top:-58px;border:26px solid rgba(223,241,93,.15);border-radius:50%}.summary-card span{font-size:13px;font-weight:700;opacity:.75}.summary-card strong{font:700 38px Georgia,serif;letter-spacing:-.03em}.summary-card small{color:var(--muted)}.summary-card.featured small{color:rgba(255,255,255,.64)}
.section-block{max-width:1180px;margin:55px auto 0;padding:0 24px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:18px}.section-heading .eyebrow{margin-bottom:4px}.section-heading h2{margin:0;font:700 30px Georgia,"Songti SC",serif;letter-spacing:-.03em}.legend{color:var(--muted);font-size:12px}.legend i{display:inline-block;width:8px;height:8px;margin-right:5px;background:var(--green);border-radius:50%}.account-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.account-card{padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:0 10px 28px rgba(31,59,48,.035)}.account-top{display:flex;align-items:center;gap:11px}.account-icon{width:39px;height:39px;display:grid;place-items:center;border-radius:12px;background:#eef3ee;color:var(--green);font-size:11px;font-weight:800}.account-top h3{margin:0 0 3px;font-size:14px}.account-top p{margin:0;color:var(--muted);font-size:11px}.status-pill{margin-left:auto;padding:5px 8px;border-radius:999px;color:var(--green);background:#e7f2eb;font-size:10px;font-weight:800}.status-pill.warning{color:#a85c25;background:#fff0e4}.credit-row{margin-top:24px;display:flex;align-items:baseline;gap:5px}.credit-row strong{font:700 27px Georgia,serif}.credit-row span{color:var(--muted);font-size:11px}.progress{height:6px;margin-top:10px;overflow:hidden;border-radius:99px;background:#e9eee9}.progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),#5b997b)}.account-meta{margin-top:14px;color:var(--muted);display:flex;justify-content:space-between;font-size:11px}
.platform-badge{display:inline-flex;margin-bottom:3px;padding:2px 6px;border-radius:999px;color:var(--green);background:#e7f2eb;font-size:9px;font-weight:800;letter-spacing:.04em}
.history-block{margin-top:64px}.text-button{padding:0;border:0;background:none;color:var(--green);font-weight:800}.history-table{overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff}.history-row{min-height:70px;padding:12px 18px;display:grid;grid-template-columns:40px 1fr 120px 100px 50px;align-items:center;gap:12px;border-bottom:1px solid #edf1ed}.history-row:last-child{border-bottom:0}.employee-avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:var(--mint);color:var(--green);font-weight:800}.history-main{display:flex;flex-direction:column;gap:3px}.history-main strong{font-size:13px}.history-main span,.history-time{color:var(--muted);font-size:11px}.history-amount{text-align:right;font:700 18px Georgia,serif}.undo-button{border:0;background:none;color:#9baaa3;font-size:11px}.empty-state,.loading-card{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--muted);border:1px solid var(--line);border-radius:18px;background:#fff}.empty-state strong{color:var(--ink)}.error-banner{max-width:1132px;margin:0 auto 18px;padding:12px 16px;border-radius:12px;color:#973d2e;background:#ffebe7}
dialog.modal{width:min(calc(100% - 32px),470px);max-height:90vh;overflow:auto;padding:30px;border:0;border-radius:24px;background:#fbfcfa;box-shadow:0 30px 80px rgba(15,35,27,.28)}dialog.modal::backdrop{background:rgba(18,35,29,.5);backdrop-filter:blur(6px)}dialog.modal.wide{width:min(calc(100% - 32px),720px)}dialog.modal.compact{width:min(calc(100% - 32px),440px)}.modal-close{position:absolute;right:18px;top:16px;width:34px;height:34px;border:0;border-radius:50%;background:#edf1ed;color:var(--muted);font-size:22px}.modal h2{margin:0;font:700 30px Georgia,"Songti SC",serif}.modal-intro{margin:9px 0 22px;color:var(--muted);font-size:13px}.form-stack{display:flex;flex-direction:column;gap:15px}.form-stack label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:800}.form-stack input,.form-stack select{width:100%;height:46px;padding:0 13px;color:var(--ink);border:1px solid var(--line);border-radius:11px;outline:none;background:#fff}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.remaining-preview{padding:13px 15px;border-radius:12px;background:#edf4ef;color:var(--muted);font-size:12px}.remaining-preview strong{color:var(--green);font-size:18px;margin-left:4px}.settings-section{margin-top:24px}.settings-section h3{margin:0;font-size:12px;color:var(--muted)}.settings-section-head{min-height:32px;margin-bottom:11px;display:flex;align-items:center;justify-content:space-between}.add-button{padding:7px 10px;border:1px solid #bed3c5;border-radius:9px;color:var(--green);background:#eef6f1;font-size:11px;font-weight:800}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip-list button{padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:700}.chip-list button span{margin-left:9px;color:#97a59f;font-size:10px}.settings-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.settings-account-row{min-width:0;padding:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff}.settings-account-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.settings-account-copy strong{font-size:12px}.settings-account-copy small{overflow:hidden;color:var(--muted);white-space:nowrap;text-overflow:ellipsis}.settings-account-actions{display:flex;gap:5px;flex:0 0 auto}.settings-account-actions button{padding:6px 8px;border:1px solid #bed3c5;border-radius:8px;color:var(--green);background:#eef6f1;font-size:10px;font-weight:800}.settings-account-actions .delete-account-button{color:#b93627;border-color:#efb1a8;background:#fff0ed}.toast{position:fixed;left:50%;bottom:25px;z-index:100;transform:translate(-50%,20px);padding:11px 16px;border-radius:12px;color:#fff;background:#173c2e;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:850px){.account-grid{grid-template-columns:repeat(2,1fr)}.summary-grid{grid-template-columns:1fr 1fr}.summary-card.featured{grid-column:1/-1}}
@media(max-width:620px){main{padding-bottom:40px}.topbar{height:auto;padding:12px 16px;flex-wrap:wrap}.brand-copy{flex:1}.header-actions{width:100%;margin:0}.header-actions .button{flex:1}.hero{padding:45px 18px 30px}.hero-orbit{display:none}.hero h1{font-size:40px}.platform-tabs{padding:0 16px;overflow-x:auto}.summary-grid,.section-block{padding-left:16px;padding-right:16px}.summary-grid{grid-template-columns:1fr 1fr}.summary-card{min-height:125px;padding:19px}.summary-card strong{font-size:30px}.summary-card.featured{grid-column:1/-1}.account-grid{grid-template-columns:1fr}.history-row{grid-template-columns:36px 1fr auto}.history-time{display:none}.history-amount{grid-column:3;grid-row:1}.undo-button{grid-column:3;grid-row:2;text-align:right}.settings-list{grid-template-columns:1fr}dialog.modal{padding:26px 20px}.logout-button{display:none}}

/* v1.1 充值日醒目提醒 */
.reset-summary{border-width:2px}.reset-summary.urgent{border-color:#e95745;background:#fff6f3;box-shadow:0 12px 34px rgba(207,69,48,.12)}.reset-summary.urgent span,.reset-summary.urgent strong{color:#b93627}.reset-summary.soon{border-color:#e7ad3b;background:#fffaf0}.reset-summary.soon span,.reset-summary.soon strong{color:#8b5c00}
.recharge-reminder{max-width:1132px;margin:18px auto 0;padding:18px 20px;display:flex;align-items:center;gap:22px;border:2px solid #e7ad3b;border-radius:18px;background:#fff9eb;box-shadow:0 12px 34px rgba(142,92,0,.09)}.recharge-reminder.urgent{border-color:#e95745;background:#fff3f0;box-shadow:0 12px 34px rgba(207,69,48,.12)}.reminder-heading{min-width:265px;display:flex;align-items:center;gap:12px}.reminder-heading>div{display:flex;flex-direction:column;gap:3px}.reminder-heading strong{font-size:16px}.reminder-heading small{color:var(--muted);font-size:11px}.reminder-icon{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;color:#fff;background:#d89418;font-weight:900;font-size:18px}.recharge-reminder.urgent .reminder-icon{background:#dd4937}.reminder-list{display:flex;flex:1;gap:8px;overflow-x:auto;padding-bottom:2px}.reminder-item{min-width:150px;padding:9px 12px;display:grid;grid-template-columns:1fr auto;gap:2px 10px;border-radius:12px;background:#fff;border:1px solid rgba(217,148,24,.28)}.reminder-item span{grid-column:1/-1;font-size:11px;color:var(--muted);white-space:nowrap}.reminder-item strong{color:#8b5c00;font-size:13px;white-space:nowrap}.reminder-item small{color:var(--muted);font-size:10px;text-align:right}.reminder-item.urgent{border-color:rgba(221,73,55,.32)}.reminder-item.urgent strong{color:#bd3424}
.account-card{transition:.2s ease}.account-card.urgent{border-color:#eda398;box-shadow:0 10px 30px rgba(207,69,48,.09)}.account-card.soon{border-color:#ebcd8f}.recharge-panel{margin-top:16px;padding:12px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:12px;background:#edf5f0;border:1px solid #d7e7dc}.recharge-panel>div:first-child{display:flex;flex-direction:column;gap:2px}.recharge-panel span{color:var(--muted);font-size:10px;font-weight:700}.recharge-panel strong{color:var(--green);font-size:15px}.recharge-date{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.recharge-date b{font-size:12px}.recharge-date small{color:var(--muted);font-size:10px}.recharge-panel.soon{background:#fff8e8;border-color:#eed49d}.recharge-panel.soon strong{color:#9a6300}.recharge-panel.urgent{background:#fff0ed;border-color:#efb1a8}.recharge-panel.urgent strong{color:#bd3424;font-size:16px}
@media(max-width:850px){.recharge-reminder{margin-left:24px;margin-right:24px;align-items:flex-start;flex-direction:column;gap:13px}.reminder-heading{min-width:0}}
@media(max-width:620px){.recharge-reminder{margin-left:16px;margin-right:16px;padding:15px}.reminder-list{width:100%}.reminder-item{min-width:142px}.recharge-panel strong{font-size:14px}}

/* v1.3 管理员/员工权限、完整手机号和账号申请 */
.role-badge{padding:7px 10px;border-radius:999px;color:#72580b;background:#fff2bf;font-size:11px;font-weight:800;white-space:nowrap}.role-badge.admin{color:#fff;background:var(--green)}
.account-phone{color:#284d3f!important;font-weight:800;letter-spacing:.04em}.history-table.employee-view .history-row{grid-template-columns:40px 1fr 120px 100px}
.form-stack textarea{width:100%;min-height:105px;padding:12px 13px;resize:vertical;color:var(--ink);border:1px solid var(--line);border-radius:11px;outline:none;background:#fff;line-height:1.55;font:inherit}
.request-block{margin-top:64px}.request-list{display:grid;gap:10px}.request-card{padding:17px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;border:1px solid var(--line);border-radius:16px;background:#fff}.request-card.pending{border-color:#e7c875;background:#fffdf5}.request-main{min-width:0;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px 9px}.request-main .platform-badge{margin:0}.request-main strong{font-size:14px}.request-main p,.request-main small{grid-column:1/-1;margin:0}.request-main p{color:#3d4c46;font-size:12px}.request-main small{color:var(--muted);font-size:10px}.request-status{padding:6px 9px;border-radius:999px;color:#7b5b00;background:#fff0bc;font-size:10px;font-weight:800;white-space:nowrap}.request-card.approved .request-status{color:#1d684c;background:#ddf2e6}.request-card.rejected .request-status{color:#984438;background:#fde5e1}.request-actions{display:flex;gap:7px}.request-actions button{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:800}.request-actions .request-approve{color:#fff;border-color:var(--green);background:var(--green)}.request-actions .request-reject{color:#9b4033;border-color:#e9c0ba;background:#fff7f5}
@media(max-width:760px){.role-badge{order:-1}.request-card{grid-template-columns:1fr auto}.request-actions{grid-column:1/-1}.history-table.employee-view .history-row{grid-template-columns:36px 1fr auto}.history-table.employee-view .history-amount{grid-column:3;grid-row:1}}
