:root{--bg: #f5f6f8;--card: #ffffff;--border: #e3e6ea;--text: #1a1d21;--muted: #6b7280;--accent: #2b6cb0;--accent-soft: #e8f0fb}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text)}.center{min-height:100vh;display:grid;place-items:center;padding:16px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:28px;width:100%;max-width:420px;box-shadow:0 1px 3px #0000000d}h1{font-size:20px;margin:0 0 4px}.sub{color:var(--muted);font-size:13px;margin:0 0 20px}.user-btn{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 14px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font-size:14px;text-align:left}.user-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.tag{font-size:11px;padding:2px 8px;border-radius:999px;background:#eef1f4;color:var(--muted)}.tag.admin{background:var(--accent-soft);color:var(--accent)}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border)}.container{max-width:960px;margin:0 auto;padding:24px 20px}.muted{color:var(--muted)}.link{background:none;border:none;color:var(--accent);cursor:pointer;font-size:13px}.err{color:#c0392b;font-size:13px;margin-top:8px}.pill{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px}h2.section-h{font-size:15px;margin:24px 0 10px}.tabs{display:flex;gap:4px;padding:0 20px;background:#fff;border-bottom:1px solid var(--border)}.tab{border:none;background:none;cursor:pointer;padding:12px 14px;font-size:14px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.scope{border:1px solid var(--border);border-radius:10px;background:#fff;overflow:hidden;max-width:560px}.scope-row{display:flex;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid var(--border);font-size:14px}.scope-row:first-child{border-top:none}.scope-k{width:130px;color:var(--muted);flex:none;font-size:13px}.grid{width:100%;border-collapse:collapse;margin-top:16px;font-size:14px}.grid th,.grid td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}.grid th{color:var(--muted);font-weight:500;font-size:13px}.grid tr:hover td{background:#fafbfc}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:grid;place-items:center;padding:16px;z-index:50}.modal{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:520px;max-height:88vh;overflow-y:auto;box-shadow:0 10px 40px #0003}.modal h2{font-size:16px;margin:0 0 16px}.field{display:block;margin-bottom:18px}.field>span{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:8px}.field select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:#fff}.inline-check{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);cursor:pointer}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--border);background:#fff;cursor:pointer;padding:6px 12px;border-radius:999px;font-size:13px;color:var(--text)}.chip:hover{border-color:var(--accent)}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.modal-actions{display:flex;justify-content:flex-end;gap:12px;align-items:center;margin-top:8px}.btn{background:var(--accent);color:#fff;border:none;cursor:pointer;padding:9px 18px;border-radius:8px;font-size:14px}.btn:disabled{opacity:.6;cursor:default}.page-head{display:flex;justify-content:space-between;align-items:center}.toolbar{display:flex;gap:10px;align-items:center;margin:16px 0 4px}.input{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:#fff;color:var(--text)}.toolbar .input{min-width:180px}.row-actions{display:flex;gap:12px;white-space:nowrap}.link.danger{color:#c0392b}.link:disabled{color:var(--muted);cursor:default;opacity:.6}.ext{text-decoration:none;margin-left:6px}.pager{display:flex;gap:14px;align-items:center;justify-content:center;margin-top:16px}.field-row{display:flex;gap:12px}.field-row .field{flex:1}.modal .field .input,.modal .field select{width:100%}.tag.warn-tag{background:#fdf0e3;color:#b26a00}.tag.danger-tag{background:#fdecea;color:#c0392b}.reminder-row{display:flex;gap:8px;align-items:center;margin-top:8px}.reminder-row .input:first-child{flex:none;width:150px}.reminder-row .input:nth-child(2){flex:1}.user-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto;margin-bottom:16px}.user-pick{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font-size:14px;text-align:left}.user-pick:hover{border-color:var(--accent)}.user-pick.on{border-color:var(--accent);background:var(--accent-soft)}.brand{display:flex;align-items:center;gap:14px}.link.back{font-size:13px}.portal-body{max-width:1040px;margin:0 auto;padding:32px 20px}.hero{margin-bottom:24px}.hero h1{font-size:24px;margin:0 0 6px}.svc-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.svc-card{position:relative;background:#fff;border:1px solid var(--border);border-radius:14px;padding:20px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.svc-card:not(.disabled):hover{border-color:var(--accent);box-shadow:0 6px 20px #2b6cb01f;transform:translateY(-2px)}.svc-card.disabled{cursor:default;opacity:.7}.svc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.svc-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--accent-soft);font-size:22px}.svc-card h3{font-size:16px;margin:0 0 6px}.svc-card p{font-size:13px;margin:0;line-height:1.5}.svc-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.svc-stat{display:inline-flex;align-items:baseline;gap:4px;padding:4px 10px;border-radius:8px;background:#f3f5f8;font-size:12px;color:var(--muted)}.svc-stat b{font-size:15px;color:var(--text)}.svc-enter{display:inline-block;margin-top:14px;color:var(--accent);font-size:13px}
