:root{--bg:#f8f7fb;--card:#ffffff;--ink:#233043;--muted:#7c8797;--line:#e8e3ef;--a:#b8d8ff;--b:#ffd6e7;--c:#d8f5d2;--d:#fff1b8;--primary:#7c8cf8;--danger:#ff7d9d;--shadow:0 18px 45px rgba(71,84,103,.10)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,"Microsoft YaHei",sans-serif;color:var(--ink);background:linear-gradient(135deg,#fbf7ff,#f5fbff 48%,#fffaf4)}button,input{font:inherit}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:rgba(255,255,255,.86);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow);padding:34px}.brand-dot,.logo span{width:44px;height:44px;border-radius:16px;background:linear-gradient(135deg,var(--a),var(--b));display:block;box-shadow:0 8px 22px rgba(124,140,248,.22)}h1{margin:12px 0 4px;font-size:28px}p{color:var(--muted)}label{display:block;margin:16px 0 0;color:#4e5b6b}input,select{width:100%;border:1px solid var(--line);border-radius:16px;background:#fff;padding:12px 14px;outline:none}input:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(124,140,248,.12)}button{border:0;border-radius:16px;background:linear-gradient(135deg,#8b98ff,#aeb8ff);color:white;padding:12px 18px;cursor:pointer;box-shadow:0 10px 20px rgba(124,140,248,.20)}button:hover{filter:brightness(.98)}.alert{background:#fff1f4;color:#bb3158;border:1px solid #ffd4df;padding:12px;border-radius:16px;margin:12px 0}.app-page{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;background:rgba(255,255,255,.78);backdrop-filter:blur(14px);border-right:1px solid var(--line);padding:22px;display:flex;flex-direction:column;gap:10px}.logo{display:flex;align-items:center;gap:12px;font-size:22px;margin-bottom:18px}.side a,.ghost{display:block;text-align:left;text-decoration:none;color:#556273;background:transparent;border:1px solid transparent;border-radius:16px;padding:12px 14px;box-shadow:none}.side a.active,.side a:hover{background:#fff;border-color:var(--line);color:var(--ink);box-shadow:0 8px 20px rgba(71,84,103,.07)}.ghost{margin-top:auto;color:#ef607f}.main{padding:28px;min-width:0}.top{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:20px}.top h1{margin:0}.panel{display:none}.panel.active{display:block}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.card{background:rgba(255,255,255,.88);border:1px solid var(--line);border-radius:26px;padding:22px;box-shadow:var(--shadow)}.card b{font-size:34px;display:block}.card span{color:var(--muted)}.toolbar,.form-grid{display:grid;grid-template-columns:1fr auto;gap:12px;margin:12px 0 18px}.form-grid{grid-template-columns:1fr 1fr 1fr auto;background:#fff;border:1px solid var(--line);border-radius:22px;padding:14px}.table-wrap{overflow:auto;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:13px 14px;border-bottom:1px solid #f0edf5;text-align:left;font-size:14px;vertical-align:top}th{background:#faf8ff;color:#536173;white-space:nowrap}td{color:#2d3948}tr:hover td{background:#fcfbff}.notice{background:#fffaf0;border:1px solid #ffecb5;color:#8a6500;border-radius:18px;padding:13px}.danger{background:linear-gradient(135deg,#ff8aa5,#ffb0c1)}@media(max-width:860px){.app-page{grid-template-columns:1fr}.side{position:relative;height:auto;flex-direction:row;flex-wrap:wrap}.logo{width:100%}.main{padding:18px}.cards{grid-template-columns:repeat(2,1fr)}.toolbar,.form-grid{grid-template-columns:1fr}.top{align-items:flex-start;flex-direction:column}}@media(max-width:520px){.cards{grid-template-columns:1fr}.login-card{padding:24px;border-radius:22px}}
