:root{--ink:#0c1b36;--muted:#63738d;--blue:#2862f4;--cyan:#4ac9e7;--line:rgba(51,86,145,.16);--glass:rgba(245,249,255,.76);--danger:#d93958;--success:#15956e;--shadow:0 28px 80px rgba(33,62,112,.18)}
*{box-sizing:border-box}body{margin:0;min-width:1040px;color:var(--ink);font:14px/1.5 Inter,"PingFang SC","Microsoft YaHei",sans-serif;background:#dfeaf6}.admin-wallpaper{position:fixed;inset:0;overflow:hidden;background:#dfeaf6;z-index:-1}.admin-wallpaper i{position:absolute;border-radius:50%;filter:blur(2px);opacity:.6}.admin-wallpaper i:first-child{width:55vw;height:55vw;left:-14vw;top:-25vw;background:#fff8d5}.admin-wallpaper i:last-child{width:48vw;height:48vw;right:-14vw;bottom:-26vw;background:#b9d9ff}.admin-shell{width:min(1540px,calc(100% - 32px));margin:16px auto 34px}.glass{border:1px solid rgba(255,255,255,.78);background:var(--glass);box-shadow:var(--shadow);backdrop-filter:blur(24px) saturate(135%);-webkit-backdrop-filter:blur(24px) saturate(135%)}.admin-menubar{height:72px;border-radius:24px;padding:0 18px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.admin-brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none}.admin-brand>span{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;color:#fff;background:var(--blue);font-size:22px}.admin-brand div,.admin-identity div{display:grid}.admin-brand small,.admin-identity small{font-size:9px;letter-spacing:.13em;color:var(--muted)}.admin-menubar nav{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.48)}.admin-menubar nav a{min-width:94px;padding:8px 14px;border-radius:999px;color:var(--muted);text-align:center;text-decoration:none;font-weight:750}.admin-menubar nav a.is-active{color:#fff;background:var(--blue)}.admin-identity{justify-self:end;display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:14px;background:rgba(255,255,255,.52)}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--success);box-shadow:0 0 0 5px rgba(21,149,110,.12)}.admin-hero{margin-top:14px;padding:26px 30px;border-radius:28px;display:flex;align-items:center;justify-content:space-between}.kicker{margin:0 0 4px;color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.18em}.admin-hero h1,.section-head h2{margin:0;letter-spacing:-.045em}.admin-hero h1{font-size:34px}.admin-hero p:last-child{max-width:760px;margin:7px 0 0;color:var(--muted)}button{font:inherit}#refreshUsers,.primary{border:0;border-radius:13px;padding:11px 18px;color:#fff;background:var(--blue);font-weight:800;cursor:pointer}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}.stat-grid article{padding:18px 20px;border-radius:22px;display:grid;gap:4px}.stat-grid span,.stat-grid small{color:var(--muted)}.stat-grid strong{font-size:28px;letter-spacing:-.04em}.admin-workspace{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:12px;margin-top:12px}.user-panel,.ledger-panel{border-radius:28px;overflow:hidden}.section-head{padding:20px 22px;border-bottom:1px solid var(--line);display:flex;align-items:end;justify-content:space-between}.section-head h2{font-size:22px}.filters{display:flex;gap:8px}.filters label{display:grid;gap:3px;color:var(--muted);font-size:10px}.filters input,.filters select{height:36px;border:1px solid var(--line);border-radius:11px;padding:0 11px;color:var(--ink);background:rgba(255,255,255,.66);outline:none}.filters input{width:220px}.user-table-wrap{min-height:440px;overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:13px 14px;border-bottom:1px solid rgba(52,82,133,.09);text-align:left}th{position:sticky;top:0;z-index:1;color:var(--muted);background:rgba(238,245,255,.96);font-size:10px;letter-spacing:.04em}td strong,td small{display:block}td small{color:var(--muted);font-size:11px}.user-status{display:inline-flex!important;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;color:var(--success);background:rgba(21,149,110,.1);font-size:11px}.user-status.disabled,.user-status.deleted{color:var(--danger);background:rgba(217,57,88,.09)}.quota-meter{width:120px;height:4px;margin-top:6px;border-radius:99px;background:rgba(44,79,135,.1);overflow:hidden}.quota-meter i{display:block;height:100%;background:var(--blue)}.row-action{border:1px solid var(--line);border-radius:10px;padding:6px 10px;color:var(--blue);background:rgba(255,255,255,.58);cursor:pointer}.empty-state{min-height:330px;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-state strong{color:var(--ink)}.ledger-list{max-height:640px;padding:12px;overflow:auto}.ledger-item{padding:12px;border-radius:16px;background:rgba(255,255,255,.52)}.ledger-item+.ledger-item{margin-top:8px}.ledger-item header{display:flex;justify-content:space-between;gap:10px}.ledger-item strong{font-size:12px}.ledger-item b{color:var(--danger)}.ledger-item.is-refund b{color:var(--success)}.ledger-item p{margin:5px 0;color:var(--muted);font-size:11px}.ledger-item small{color:#8794a8;font-size:10px}dialog{width:min(620px,calc(100% - 32px));padding:0;border:0;border-radius:28px;background:transparent}dialog::backdrop{background:rgba(8,19,38,.5);backdrop-filter:blur(8px)}.dialog-card{position:relative;padding:28px;border:1px solid rgba(255,255,255,.85);border-radius:28px;background:#f4f8ff;box-shadow:0 40px 100px rgba(9,28,60,.35)}.dialog-card h2{margin:0;font-size:27px}.dialog-owner{margin:3px 0 20px;color:var(--muted)}.dialog-close{position:absolute;right:18px;top:18px;width:38px;height:38px;border:0;border-radius:12px;background:#e5edf8;font-size:22px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{display:grid;gap:5px;color:var(--muted);font-size:12px}.form-grid input,.form-grid select{height:44px;border:1px solid var(--line);border-radius:13px;padding:0 12px;color:var(--ink);background:#fff}.check-row{margin-top:14px;padding:11px 12px;border-radius:14px;display:flex;gap:10px;align-items:center;background:rgba(40,98,244,.05)}.check-row span{display:grid}.check-row small{color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.dialog-actions button{border:1px solid var(--line);border-radius:12px;padding:10px 16px;background:#fff;cursor:pointer}.dialog-actions .primary{border-color:var(--blue);background:var(--blue)}hr{margin:24px 0;border:0;border-top:1px solid var(--line)}.danger-zone{display:grid;gap:10px;padding:15px;border:1px solid rgba(217,57,88,.18);border-radius:18px;background:rgba(217,57,88,.04)}.danger-zone div{display:grid}.danger-zone small{color:var(--muted)}#deleteUser{justify-self:start;border:0;border-radius:11px;padding:9px 13px;color:#fff;background:var(--danger);cursor:pointer}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,14px);padding:10px 16px;border-radius:14px;color:#fff;background:#10213d;box-shadow:0 18px 45px rgba(9,25,50,.25);opacity:0;pointer-events:none;transition:.2s}.toast.is-visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:1180px){.admin-workspace{grid-template-columns:1fr}.ledger-panel{display:none}.admin-menubar{grid-template-columns:1fr auto}.admin-menubar nav{display:none}}
.security-zone{margin-top:14px;padding:15px;border:1px solid rgba(47,109,255,.16);border-radius:18px;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.8fr) auto;align-items:end;gap:12px;background:rgba(239,246,255,.62)}.security-zone>div{display:grid;gap:3px}.security-zone small{color:#63728a}.security-zone label{display:grid;gap:5px;color:#53627a;font-size:12px}.security-zone input{min-height:42px;border:1px solid rgba(58,91,147,.16);border-radius:12px;padding:0 12px;background:rgba(255,255,255,.82)}.security-zone button{min-height:42px;border:0;border-radius:12px;padding:0 15px;color:#2056d9;background:rgba(47,109,255,.12);font-weight:800;cursor:pointer}@media(max-width:760px){.security-zone{grid-template-columns:1fr}}

/* 2026-08-26 modal viewport and feedback fix */
dialog{max-height:calc(100dvh - 32px);margin:auto;overflow:hidden}.dialog-card{max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.dialog-feedback{min-height:0;margin:0;padding:0;border-radius:12px;color:#2056d9;background:transparent;font-size:12px;opacity:0;transform:translateY(-4px);transition:.18s}.dialog-feedback.is-visible{min-height:38px;margin-top:14px;padding:9px 12px;opacity:1;transform:none;background:rgba(47,109,255,.09)}.dialog-feedback.is-error{color:#a4233d;background:rgba(217,57,88,.09)}.dialog-feedback.is-success{color:#087a56;background:rgba(21,149,110,.1)}.toast{z-index:1000}.toast.is-error{background:#9c2440}.toast.is-success{background:#087a56}

/* 2026-08-26 in-dialog password confirmation and visible feedback */
.dialog-confirm-panel{position:relative;z-index:3;margin-top:12px;padding:13px 14px;border:1px solid rgba(47,109,255,.22);border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;color:#17335f;background:#eef4ff;box-shadow:0 12px 30px rgba(30,65,118,.12);animation:dialog-confirm-in .18s ease-out}.dialog-confirm-panel[hidden]{display:none!important}.dialog-confirm-panel>div:first-child{display:grid;gap:2px}.dialog-confirm-panel small{color:#5a6f90}.dialog-confirm-actions{display:flex;flex:0 0 auto;gap:7px}.dialog-confirm-actions button{min-height:38px;border:1px solid rgba(47,109,255,.18);border-radius:11px;padding:0 13px;color:#294c88;background:#fff;font-weight:800;cursor:pointer}.dialog-confirm-actions .primary{border-color:var(--blue);color:#fff;background:var(--blue)}.dialog-confirm-actions button:disabled{opacity:.6;cursor:wait}.dialog-feedback{position:sticky;bottom:0;z-index:4;border:1px solid transparent;box-shadow:0 10px 26px rgba(30,65,118,.1)}.dialog-feedback.is-visible{border-color:rgba(47,109,255,.12);background:#e9f1ff}.dialog-feedback.is-error{border-color:rgba(217,57,88,.15);background:#fff0f3}.dialog-feedback.is-success{border-color:rgba(21,149,110,.16);background:#eaf9f3}.toast{max-width:min(420px,calc(100vw - 32px));font-weight:750}
@keyframes dialog-confirm-in{from{transform:translateY(-5px) scale(.99)}to{transform:none}}
@media(max-width:760px){.dialog-confirm-panel{align-items:stretch;flex-direction:column}.dialog-confirm-actions{justify-content:flex-end}}
@media(prefers-reduced-motion:reduce){.dialog-confirm-panel{animation:none}}
