:root{--bg:#f5f7fa;--panel:#fff;--ink:#17202a;--muted:#657384;--line:#dbe2ea;--brand:#117865;--brand-dark:#0d5f51;--accent:#b7791f;--ok:#147a42;--shadow:0 16px 44px rgba(18,32,48,.08);font-family:Arial,"Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,.btn{border:0;background:var(--brand);color:#fff;border-radius:6px;padding:10px 14px;cursor:pointer;font-weight:700;min-height:40px;line-height:1.35;white-space:normal;overflow-wrap:anywhere;text-align:center}button:hover,.btn:hover{background:var(--brand-dark)}button.secondary{background:#e8eef3;color:var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;max-width:100%;text-decoration:none}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:6px;padding:10px;background:#fff}textarea{min-height:96px}.auth{min-height:100vh;display:grid;place-items:center;padding:24px}.card,.panel{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:18px}.card{width:min(460px,100%)}.form{display:grid;gap:14px}.msg{margin:12px 0;padding:10px;background:#fff4df;border-left:4px solid var(--accent)}.shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr}aside{background:#15212c;color:#fff;padding:22px 18px}.nav{display:grid;gap:8px}.nav button{background:transparent;text-align:left;color:#d8e0e8}.nav button.active,.nav button:hover{background:rgba(255,255,255,.12)}main{padding:24px}.topbar{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.span-12{grid-column:span 12}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.muted{color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left}.actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:900px){.shell{grid-template-columns:1fr}.span-4,.span-6,.span-12{grid-column:span 12}}
.qr-box{display:grid;justify-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:14px;background:#f8fafc}.qr-box img{width:220px;height:220px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px}.qr-box p{margin:0;text-align:center;word-break:break-all}
.modal{position:fixed;inset:0;background:rgba(15,23,42,.42);display:grid;place-items:center;padding:20px;z-index:20}.modal.hidden{display:none}.modal-box{width:min(460px,100%);background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:18px}.notice-box p{margin:8px 0 16px;line-height:1.6;word-break:break-word}
.upload-row{display:grid;grid-template-columns:minmax(240px,1.4fr) minmax(180px,.8fr) minmax(220px,1fr) auto;gap:12px;align-items:end}.upload-row label{display:grid;gap:6px}.upload-row button{height:42px;white-space:nowrap}@media(max-width:900px){.upload-row{grid-template-columns:1fr}}
.captcha-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}.captcha-row strong{min-width:86px;padding:10px;border:1px solid var(--line);border-radius:6px;background:#f8fafc;text-align:center}.captcha-row button{white-space:nowrap}@media(max-width:520px){.captcha-row{grid-template-columns:1fr}.captcha-row strong{text-align:left}}
.auth{position:relative;overflow:hidden;background:#07181f;background-image:radial-gradient(circle at 18% 20%,rgba(26,188,156,.28),transparent 28%),radial-gradient(circle at 82% 76%,rgba(50,160,220,.24),transparent 30%),linear-gradient(135deg,#07181f 0%,#0d2b33 45%,#102238 100%)}
.auth::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(104,220,205,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(104,220,205,.12) 1px,transparent 1px),radial-gradient(circle,rgba(144,244,229,.55) 0 2px,transparent 3px);background-size:58px 58px,58px 58px,116px 116px;background-position:center;opacity:.78}
.auth::after{content:"";position:absolute;inset:-15%;background:linear-gradient(115deg,transparent 8%,rgba(80,220,205,.16) 8.4%,transparent 8.8%,transparent 22%,rgba(120,190,255,.13) 22.4%,transparent 22.8%,transparent 45%,rgba(80,220,205,.12) 45.4%,transparent 45.8%,transparent 68%,rgba(120,190,255,.12) 68.4%,transparent 68.8%);filter:drop-shadow(0 0 18px rgba(72,220,205,.35));opacity:.9}
.auth .card{position:relative;z-index:1;background:rgba(255,255,255,.94);border-color:rgba(174,217,225,.72);box-shadow:0 28px 80px rgba(0,0,0,.32),0 0 0 1px rgba(118,222,215,.16)}
