* { box-sizing: border-box; } body { font-family: -apple-system, "Microsoft YaHei", sans-serif; margin: 0; background: #f4f6f8; color: #222; } .topbar { display: flex; justify-content: space-between; align-items: center; padding: 12px 20px; background: #1f2d3d; color: #fff; } .topbar h1 { font-size: 18px; margin: 0; } .topbar small { font-weight: normal; opacity: .6; font-size: 12px; } .auth { display: flex; align-items: center; gap: 10px; } .auth input { padding: 4px 6px; border-radius: 4px; border: none; } button { cursor: pointer; padding: 6px 12px; border: 1px solid #ccc; border-radius: 4px; background: #fff; font-size: 13px; } button:hover { background: #eef3fb; } .pill { padding: 3px 10px; border-radius: 12px; font-size: 12px; } .pill-off { background: #c0392b; color: #fff; } .pill-on { background: #27ae60; color: #fff; } .views { display: flex; gap: 4px; padding: 10px 20px 0; background: #fff; border-bottom: 1px solid #e0e0e0; } .views button { border-bottom: 2px solid transparent; border-radius: 4px 4px 0 0; } .views button.active { border-bottom-color: #2d6cdf; color: #2d6cdf; font-weight: bold; } main { padding: 16px 20px; } .toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 12px; } .meta { color: #888; font-size: 13px; } table { width: 100%; border-collapse: collapse; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.08); } th, td { padding: 9px 12px; text-align: left; border-bottom: 1px solid #eee; font-size: 13px; } th { background: #fafbfc; color: #555; } td.empty { text-align: center; color: #aaa; padding: 30px; } .status-1 { color: #e67e22; } .status-2 { color: #2d6cdf; } .status-3 { color: #8e44ad; } .status-4 { color: #7f8c8d; } .status-5 { color: #27ae60; } .modal { position: fixed; inset: 0; background: rgba(0,0,0,.4); display: flex; align-items: center; justify-content: center; } .modal.hidden, .hidden { display: none; } .modal-box { background: #fff; padding: 24px; border-radius: 8px; width: 420px; max-width: 90vw; } .modal-box h2 { margin-top: 0; } #newForm label { display: block; margin-bottom: 12px; font-size: 13px; color: #555; } #newForm input, #newForm select, #newForm textarea { width: 100%; padding: 7px; margin-top: 4px; border: 1px solid #ccc; border-radius: 4px; } .modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; } .msg { min-height: 18px; font-size: 13px; } .msg.err { color: #c0392b; } .msg.ok { color: #27ae60; } .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: #333; color: #fff; padding: 10px 18px; border-radius: 6px; font-size: 13px; }