:root{--accent:#6d3fc8;--accent-d:#5530a3;--bg:#f6f4fb;--card:#fff;--line:#e4e0ef;--text:#1f1b2e;--muted:#6b6780;--ok:#1d8a4e;--warn:#b7791f;--bad:#c0392b}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}a{color:var(--accent);text-decoration:none}h1{margin:0 0 16px;font-size:1.5rem}h2{margin:0 0 12px;font-size:1.1rem}.muted{color:var(--muted)}.center-msg{text-align:center;padding:48px 16px}.shell{min-height:100vh;display:flex}.sidebar{color:#fff;background:#2a1f4d;flex-shrink:0;width:230px;padding:16px 0}.sidebar .brand{padding:0 20px 16px;font-size:1.05rem;font-weight:700}.sidebar a{color:#d9d0f2;padding:10px 20px;display:block}.sidebar a.active,.sidebar a:hover{color:#fff;background:#ffffff1f}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 16px;display:flex}.topbar .sp{flex:1}.menu-btn{display:none}.content{width:100%;max-width:1100px;padding:20px 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px}.grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}.stat .l{color:var(--muted);font-size:.8rem}.stat .v{margin-top:4px;font-size:1.4rem;font-weight:700}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}th{color:var(--muted);white-space:nowrap;font-weight:600}button,.btn{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:9px 16px;display:inline-block}button:hover,.btn:hover{background:var(--accent-d)}button:disabled{opacity:.55;cursor:not-allowed}button.sec{color:var(--accent);border:1px solid var(--accent);background:#fff}button.danger{background:var(--bad)}button.small{padding:4px 10px;font-size:.85rem}input,select,textarea{font:inherit;border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:8px;padding:8px 10px}input[type=checkbox],input[type=radio]{width:auto}textarea{resize:vertical;min-height:80px}label{color:var(--muted);margin-bottom:4px;font-size:.85rem;display:block}.field{margin-bottom:12px}.row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inline label{color:var(--text);margin:0;display:inline}.badge{color:var(--accent-d);background:#ece7f8;border-radius:999px;padding:2px 8px;font-size:.78rem;display:inline-block}.badge.hot{color:#b3361f;background:#fde4df}.badge.warm{color:#8a5a0a;background:#fdf1d6}.badge.cold{color:#1c6b9c;background:#dff0fb}.badge.human{color:#fff;background:#2a1f4d}.error{color:var(--bad);background:#fde8e6;border-radius:8px;margin-bottom:12px;padding:10px 12px}.okmsg{color:var(--ok);background:#e3f5ea;border-radius:8px;margin-bottom:12px;padding:10px 12px}.filters{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.filters>div{min-width:160px}.thread{background:#e9e3f6;border-radius:10px;flex-direction:column;gap:6px;max-height:520px;padding:12px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;word-break:break-word;border-radius:10px;max-width:80%;padding:8px 12px;box-shadow:0 1px 1px #00000014}.msg.in{background:#fff;align-self:flex-start}.msg.out{background:#dcf8c6;align-self:flex-end}.msg .meta{color:var(--muted);margin-top:4px;font-size:.72rem}.listrow{border:1px solid var(--line);background:#fcfbff;border-radius:8px;margin-bottom:8px;padding:10px}.login{max-width:380px;margin:12vh auto;padding:0 16px}.sticky-save{background:var(--bg);align-items:center;gap:12px;padding:12px 0;display:flex;position:sticky;bottom:0}@media (max-width:800px){.sidebar{z-index:20;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.open{transform:none}.menu-btn{padding:6px 12px;display:inline-block}.msg{max-width:92%}}
