*{box-sizing:border-box} body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,"Microsoft YaHei",sans-serif;background:#f4f7fb;color:#111827}.app{display:flex;min-height:100vh}.sidebar{width:240px;background:#0f172a;color:#fff;padding:24px 16px;position:fixed;inset:0 auto 0 0;z-index:5}.brand{font-size:22px;font-weight:800;margin-bottom:24px}.nav{width:100%;display:block;margin:8px 0;padding:12px 14px;border:0;border-radius:10px;background:transparent;color:#cbd5e1;text-align:left;cursor:pointer;font-size:15px}.nav:hover,.nav.active{background:#1d4ed8;color:white}.nav.danger{margin-top:32px;color:#fecaca}.main{margin-left:240px;width:calc(100% - 240px);padding:32px;transition:.2s}.main.login-mode{margin-left:0;width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,#0f172a,#1e3a8a)}.login-card{width:100%;max-width:420px;background:white;border-radius:22px;padding:34px;box-shadow:0 24px 80px rgba(15,23,42,.25)}.login-card h1{margin:0 0 8px}.login-card p{color:#64748b;margin:0 0 18px}.login-card input,.form-control,input,textarea,select{width:100%;padding:12px 14px;border:1px solid #d1d5db;border-radius:10px;margin:8px 0;font-size:14px;background:white}.login-card button,.topbar button,.btn,.smallbtn{border:0;border-radius:10px;padding:11px 16px;background:#2563eb;color:#fff;cursor:pointer}.btn.ghost{background:#eef2ff;color:#1d4ed8}.btn.danger,.smallbtn.danger{background:#fee2e2;color:#991b1b}.btn.ok,.smallbtn.ok{background:#dcfce7;color:#166534}.hidden{display:none!important}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.toolbar .tip{color:#64748b;font-size:13px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.card{background:#fff;border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(15,23,42,.06)}.card .num{font-size:30px;font-weight:800;margin-top:8px}.table-wrap{background:#fff;border-radius:16px;overflow:auto;box-shadow:0 8px 24px rgba(15,23,42,.06)}table{width:100%;border-collapse:collapse;min-width:900px}th,td{padding:12px;border-bottom:1px solid #e5e7eb;text-align:left;white-space:nowrap;font-size:13px}th{background:#f8fafc;color:#475569}.msg{margin-top:12px;color:#dc2626}.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#e0e7ff;color:#3730a3}.badge.active{background:#dcfce7;color:#166534}.badge.disabled,.badge.expired{background:#fee2e2;color:#991b1b}.actions{display:inline-flex;gap:6px;align-items:center}.actions button,.smallbtn{padding:6px 10px;border-radius:8px;border:0;background:#e5e7eb;cursor:pointer;color:#111827}.field{margin-bottom:10px}.field label{display:block;font-size:13px;color:#334155;margin:0 0 4px 2px}.field .help{font-size:12px;color:#64748b;margin:2px 0 0 2px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox-row{display:flex;gap:14px;flex-wrap:wrap}.checkbox-row label{display:flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:9px 10px}.checkbox-row input{width:auto;margin:0}.modal{position:fixed;inset:0;z-index:1000}.modal-mask{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px)}.modal-card{position:relative;width:min(720px,calc(100vw - 32px));max-height:90vh;overflow:auto;margin:5vh auto;background:white;border-radius:18px;box-shadow:0 24px 80px rgba(15,23,42,.35)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #e5e7eb}.modal-head h3{margin:0;font-size:18px}.icon-btn{width:34px;height:34px;border:0;border-radius:999px;background:#f1f5f9;font-size:24px;line-height:1;cursor:pointer}.modal-body{padding:18px 22px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid #e5e7eb;background:#f8fafc;border-radius:0 0 18px 18px}.empty{padding:28px;color:#64748b;text-align:center}@media(max-width:900px){.sidebar{position:static;width:100%}.app{display:block}.main{margin-left:0;width:100%;padding:16px}.main.login-mode{padding:16px}.field-row{grid-template-columns:1fr}.modal-card{margin:3vh auto}.toolbar{align-items:flex-start;flex-direction:column}}.btn.full{width:100%;height:42px;margin-top:8px}.field textarea{min-height:92px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.table-wrap td{vertical-align:top}.table-wrap td:nth-child(10),.table-wrap td:nth-child(11){max-width:260px;overflow:hidden;text-overflow:ellipsis}
.limit-head,.limit-row{display:grid;grid-template-columns:1.1fr 1.1fr .8fr 1fr 1.2fr auto;gap:8px;align-items:center;margin:8px 0}.limit-head{font-size:12px;color:#64748b;padding:0 2px}.limit-row input,.limit-row select{margin:0;padding:9px 10px}.limit-row button{white-space:nowrap}@media(max-width:900px){.limit-head{display:none}.limit-row{grid-template-columns:1fr}.limit-row input,.limit-row select{width:100%}}


.doc-card pre{background:#0f172a;color:#e5e7eb;border-radius:10px;padding:14px;overflow:auto;line-height:1.55;font-size:13px;}
.doc-card code{background:#eef2ff;color:#1e3a8a;border-radius:6px;padding:2px 6px;}
.doc-card h4{margin-top:18px;margin-bottom:8px;}
.doc-card table{margin-top:8px;}


/* v1.0.11 UI polish */
body{background:linear-gradient(180deg,#f6f8fc 0%,#eef3fb 100%);color:#0f172a}.sidebar{background:linear-gradient(180deg,#0b1220,#111827);box-shadow:8px 0 28px rgba(15,23,42,.18)}.brand{letter-spacing:.2px}.nav{transition:.18s ease;border:1px solid transparent}.nav:hover{transform:translateX(2px);background:#1e293b}.nav.active{background:linear-gradient(135deg,#2563eb,#3b82f6);box-shadow:0 10px 24px rgba(37,99,235,.32)}.topbar{background:rgba(255,255,255,.78);backdrop-filter:blur(10px);border:1px solid #e8eef8;border-radius:18px;padding:14px 16px;box-shadow:0 10px 28px rgba(15,23,42,.05)}.topbar h2{margin:0}.card,.table-wrap{border:1px solid #e8eef8;box-shadow:0 14px 34px rgba(15,23,42,.07)}.toolbar{background:white;border:1px solid #e8eef8;border-radius:16px;padding:12px 14px;box-shadow:0 12px 26px rgba(15,23,42,.05)}button,.btn,.smallbtn{transition:.18s ease;font-weight:650;box-shadow:none}.btn.primary,.login-card button,.topbar button{background:linear-gradient(135deg,#2563eb,#3b82f6);box-shadow:0 8px 20px rgba(37,99,235,.2)}.btn.primary:hover,.topbar button:hover,.login-card button:hover{filter:brightness(.98);transform:translateY(-1px)}.btn.ghost{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.actions button,.smallbtn{border:1px solid #dbe3ef;background:#f8fafc}.actions button:hover,.smallbtn:hover{background:#eef6ff;border-color:#bfdbfe;color:#1d4ed8}.actions .danger,.smallbtn.danger{background:#fff1f2;border-color:#fecdd3;color:#be123c}.actions .ok,.smallbtn.ok{background:#ecfdf5;border-color:#bbf7d0;color:#047857}button:disabled,.smallbtn:disabled{opacity:.45;cursor:not-allowed;transform:none}.table-wrap{overflow:auto}table{border-collapse:separate;border-spacing:0}th{position:sticky;top:0;z-index:1;background:#f8fbff;color:#334155;font-weight:700}td,th{border-bottom:1px solid #edf2f7}tbody tr:hover td{background:#fbfdff}.modal-mask{background:rgba(2,6,23,.56);backdrop-filter:blur(5px)}.modal-card{border:1px solid rgba(255,255,255,.8);border-radius:22px;box-shadow:0 30px 90px rgba(2,6,23,.34)}.modal-head{background:linear-gradient(180deg,#ffffff,#f8fbff);border-radius:22px 22px 0 0}.modal-head h3{font-size:20px}.modal-body{background:#fff}.modal-actions{background:#f8fbff}.field input,.field textarea,.field select,.login-card input,.form-control,input,textarea,select{border:1px solid #d8e1ee;border-radius:12px;background:#fbfdff;outline:none}.field input:focus,.field textarea:focus,.field select:focus,.login-card input:focus,input:focus,textarea:focus,select:focus{border-color:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.18);background:#fff}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 4px;padding:12px 14px;background:#fff;border:1px solid #e8eef8;border-radius:14px;box-shadow:0 10px 24px rgba(15,23,42,.05)}.pager-info{color:#64748b;font-size:13px}.pager-info b{color:#0f172a}.pager-actions{display:flex;align-items:center;gap:8px}.pager-actions select{width:auto;margin:0;padding:8px 10px}.copy-token{border:0;background:#eef6ff;color:#1d4ed8;border-radius:999px;padding:6px 10px;cursor:pointer;font-weight:700;white-space:nowrap}.copy-token:hover{background:#dbeafe}.doc-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#eff6ff,#f8fbff);border:1px solid #dbeafe;border-radius:16px;padding:16px;margin-bottom:12px}.doc-hero h3{margin:0 0 6px}.doc-hero p{margin:0;color:#64748b}@media(max-width:900px){.pager{align-items:flex-start;flex-direction:column}.pager-actions{width:100%;justify-content:space-between}.modal-card{width:min(96vw,720px)}}
