:root{--bg: #ebe6dc;--bg2: #f4f0e8;--side: #0c0d10;--side2: #15171c;--ink: #f3eee4;--ink-dim: #9a9386;--accent: #b8956c;--accent2: #d4b48a;--accent-ink: #1a140c;--text: #1c1915;--muted: #7a7368;--line: #e4ddd0;--line2: #efe8db;--card: #fffdf8;--ok: #2f8a62;--bad: #c2453a;--warn: #b7791f;--shadow: 0 18px 40px rgba(28, 25, 21, .07);--shadow-sm: 0 8px 20px rgba(28, 25, 21, .05);--r: 16px;--font: "Outfit", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body,#app{margin:0;height:100%;font-family:var(--font);color:var(--text);background:var(--bg)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}::selection{background:#b8956c47}.layout{display:flex;height:100%;background:radial-gradient(900px 420px at 88% -8%,rgba(212,180,138,.22),transparent 55%),linear-gradient(180deg,#f3eee6,var(--bg))}.side{width:236px;background:radial-gradient(420px 280px at 20% -10%,rgba(184,149,108,.16),transparent 60%),linear-gradient(180deg,#12141a,var(--side));color:var(--ink);display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.05)}.brand{padding:22px 18px 18px;display:flex;gap:12px;align-items:center}.logo-mark{width:38px;height:38px;border-radius:12px;flex-shrink:0;object-fit:cover;background:#111;display:block;box-shadow:0 8px 18px #b8956c47}.brand-name{font-weight:700;letter-spacing:.04em;font-size:13px;line-height:1.3}.brand small{display:block;font-weight:400;color:var(--ink-dim);margin-top:3px;font-size:12px}.nav{padding:8px 12px;display:flex;flex-direction:column;gap:4px}.nav a{padding:10px 12px;border-radius:12px;color:#c9c2b6;display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:500;transition:background .18s,color .18s,transform .18s}.nav a:hover{background:#ffffff0d;color:#fff}.nav a.active{background:linear-gradient(90deg,#b8956c38,#ffffff0a);color:#f7efdf;box-shadow:inset 2px 0 0 var(--accent)}.nav-ico{width:18px;height:18px;display:grid;place-items:center;opacity:.9;flex-shrink:0}.nav-ico svg{width:18px;height:18px}.nav-badge{margin-left:auto;display:inline-flex;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#c2453a;color:#fff;font-size:11px;font-weight:700;align-items:center;justify-content:center}.red-dot{width:8px;height:8px;border-radius:50%;background:#e2554a;display:inline-block;box-shadow:0 0 0 2px #0c0d10e6;flex-shrink:0}.toast-wrap{position:fixed;right:18px;top:18px;z-index:50;display:flex;flex-direction:column;gap:8px;width:340px;pointer-events:none}.toast{pointer-events:auto;background:#101115eb;color:#fff;border-radius:14px;padding:13px 15px;box-shadow:0 16px 40px #00000047;cursor:pointer;border:1px solid rgba(212,180,138,.22);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.toast-t{font-weight:700;font-size:13px}.toast-s{color:#d7d0c4;font-size:12px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-foot{margin-top:auto;padding:16px;font-size:12px;color:var(--ink-dim);border-top:1px solid rgba(255,255,255,.05)}.expire{margin-bottom:10px;letter-spacing:.02em}.logout-btn{width:100%}.main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.top{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;color:#2a241c;font-weight:650;letter-spacing:.04em}.top-meta{color:var(--muted);font-size:12px;font-weight:500;background:#fffdf8b3;border:1px solid var(--line);padding:6px 10px;border-radius:999px}.page{padding:0 22px 22px;overflow:auto;flex:1;min-height:0}.page-fill{display:flex;flex-direction:column;padding:0 16px 16px}.page-fill .inbox{flex:1;min-height:0;height:auto}.card{background:var(--card);border:1px solid rgba(255,255,255,.7);border-radius:20px;padding:22px;box-shadow:var(--shadow)}.h1{font-size:20px;font-weight:700;margin:0 0 16px;letter-spacing:.02em}.sub{color:var(--muted);font-size:13px;line-height:1.7;margin:-6px 0 16px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}label{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.03em}input,select,textarea{border:1px solid var(--line);border-radius:12px;padding:10px 13px;font-size:14px;outline:none;background:#fffefb;color:var(--text);font-family:inherit;transition:border-color .16s,box-shadow .16s}input:focus,select:focus,textarea:focus{border-color:#c9a66b;box-shadow:0 0 0 4px #b8956c24}.btn{border:0;background:linear-gradient(180deg,#d4b48a,#b8956c);color:var(--accent-ink);border-radius:12px;padding:9px 15px;font-weight:700;letter-spacing:.02em;box-shadow:0 8px 16px #b8956c38}.btn:hover{filter:brightness(1.04)}.btn.ghost{background:#fffdf8;color:var(--text);border:1px solid var(--line);box-shadow:none;font-weight:600}.btn.ghost:hover{background:#f7f1e6}.btn.danger{background:linear-gradient(180deg,#d7685d,#c2453a);color:#fff;box-shadow:0 8px 16px #c2453a2e}.btn:disabled{opacity:.55;cursor:not-allowed;filter:none}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--muted);font-weight:650;padding:12px 10px;border-bottom:1px solid var(--line);letter-spacing:.04em;font-size:12px}.table td{padding:12px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}.table tr:hover td{background:#f3eee473}.tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 9px;border-radius:999px;font-weight:600}.tag.ok{background:#e8f6ee;color:var(--ok)}.tag.bad{background:#fbeceb;color:var(--bad)}.tag.warn{background:#f8efd8;color:var(--warn)}.login-wrap{min-height:100%;display:grid;place-items:center;background:radial-gradient(800px 360px at 18% 0%,rgba(212,180,138,.28),transparent 50%),radial-gradient(700px 380px at 90% 100%,rgba(28,25,21,.08),transparent 50%),#efe8db}.login-box{width:400px;background:#fffdf8eb;border-radius:22px;padding:32px;box-shadow:0 30px 70px #1c19151f;border:1px solid rgba(255,255,255,.8);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.login-mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;margin-bottom:14px;background:linear-gradient(145deg,#e8c99a,#9d7548);color:#1a140c;font-weight:800}.login-logo{width:92px;height:92px;border-radius:18px;object-fit:cover;display:block;margin-bottom:16px;background:#111;box-shadow:0 10px 24px #1c19152e}.inbox{display:grid;grid-template-columns:248px 300px minmax(0,1fr);height:100%;min-height:0;gap:12px}.pane{background:var(--card);border:1px solid rgba(255,255,255,.65);border-radius:18px;overflow:auto;box-shadow:var(--shadow-sm);min-height:0}.pane-hd{position:sticky;top:0;z-index:1;background:#fffdf8eb;padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-weight:700;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.item{padding:12px 14px;border-bottom:1px solid var(--line2);cursor:pointer;transition:background .15s}.item:hover{background:#f7f2e8}.item.active{background:linear-gradient(90deg,#f4ead6,#fffdf8);box-shadow:inset 2px 0 0 var(--accent)}.item .n{font-weight:650;display:flex;align-items:center;gap:6px}.item .s{color:var(--muted);font-size:12px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat{display:flex;flex-direction:column;height:100%;overflow:hidden}.chat-hd{padding:14px 16px;border-bottom:1px solid var(--line);font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0}.bubbles{flex:1;overflow:auto;padding:18px 16px;display:flex;flex-direction:column;gap:10px;background:radial-gradient(500px 220px at 100% 0%,rgba(212,180,138,.12),transparent 50%),#faf6ef}.b{max-width:72%;padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.5;box-shadow:0 6px 16px #1c19150d}.b.in{background:#fff;align-self:flex-start;border:1px solid var(--line);border-bottom-left-radius:6px}.b.out{background:linear-gradient(180deg,#2a2722,#1b1916);color:#f6efe4;align-self:flex-end;border-bottom-right-radius:6px}.day-sep{align-self:center;margin:6px 0 2px;padding:3px 10px;border-radius:999px;background:#1c19150f;color:#8a8378;font-size:11px;font-weight:600;letter-spacing:.02em}.b .tm{font-size:11px;margin-top:4px;color:#b7a894;font-weight:500}.b.out .tm{color:#cbbba3}.b.card-msg .tm{padding:4px 4px 0;color:#9a9386}.b.card-msg.out .tm{color:#8a6a42}.b .ar-tag{font-size:11px;font-weight:700;margin-bottom:4px;letter-spacing:.04em;color:#d4b48a}.b.card-msg .ar-tag{padding:4px 4px 0;color:#8a6a42}.b .dl{font-size:11px;margin-top:4px;font-weight:600;color:#d4b48a}.b .dl.bad{color:#f0b4ae}.b .mark-dl{padding:2px 8px;font-size:11px;margin-top:4px}.b.out .mark-dl{background:transparent;color:#d4b48a;border-color:#5a4c3a}.b.card-msg{background:transparent;box-shadow:none;padding:0;max-width:320px;border:0}.b.card-msg.out{background:transparent;color:var(--text)}.b.card-msg .dl{padding:4px 4px 0}.b.card-msg.out .dl{color:#8a6a42}.b.card-msg.out .dl.bad{color:#c2453a}.b.card-msg.out .mark-dl{color:#8a6a42;border-color:var(--line)}.im-card{display:flex;gap:10px;width:100%;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;box-shadow:0 10px 22px #1c19150f;color:var(--text)}.im-cover{width:72px;height:72px;border-radius:10px;overflow:hidden;background:#f3ead8;flex-shrink:0}.im-cover img{width:100%;height:100%;object-fit:cover;display:block}.im-ph{width:100%;height:100%;display:grid;place-items:center;color:#9a9386;font-size:12px}.im-body{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:4px}.im-title{font-weight:700;font-size:14px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.im-desc{color:#7a7368;font-size:12px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.im-link{color:#9a9386;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:#fffdf8;flex-shrink:0}.composer input{flex:1}.composer select{max-width:160px}.err{color:var(--bad);font-size:13px}.okmsg{color:var(--ok);font-size:13px}.qr{width:220px;height:220px;border-radius:16px;background:#faf6ef;object-fit:contain;border:1px solid var(--line)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#100f0d75;display:grid;place-items:center;z-index:20;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.modal{width:460px;background:#fffdf8;border-radius:20px;padding:22px;box-shadow:0 24px 60px #00000038;border:1px solid rgba(255,255,255,.7)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.on{background:#2f8a62;box-shadow:0 0 0 3px #2f8a6229}.dot.off{background:#c2453a;box-shadow:0 0 0 3px #c2453a1f}.acc-cell{display:flex;align-items:center;gap:10px;min-width:0}.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;background:#efe8db;flex-shrink:0}.avatar.ph{display:grid;place-items:center;font-size:13px;font-weight:700;color:#8a6a42;background:#f3ead8}.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{display:none}.switch i{width:42px;height:24px;border-radius:999px;background:#ddd6c8;position:relative;transition:.2s}.switch i:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #00000029;transition:.2s}.switch input:checked+i{background:linear-gradient(180deg,#d4b48a,#b8956c)}.switch input:checked+i:after{transform:translate(18px)}.admin-login-wrap{min-height:100%;display:grid;place-items:center;background:radial-gradient(700px 360px at 20% 0%,rgba(20,120,104,.28),transparent 50%),#070b0c}.admin-login-box{background:#101618;color:#e8efe9;box-shadow:none;border:1px solid #1d2a27}.admin-login-box input{background:#0b1112;color:#e8efe9;border-color:#2a3a36}.admin-login-box .h1{color:#e8efe9}.admin-btn{background:linear-gradient(180deg,#1aa08a,#0f766e);color:#fff;box-shadow:0 8px 16px #0f766e40}.admin-btn:hover{filter:brightness(1.06)}.admin-layout{background:#eceeea}.admin-layout .admin-side{background:radial-gradient(420px 260px at 10% -8%,rgba(20,120,104,.22),transparent 58%),linear-gradient(180deg,#0c1614,#08100f)}.admin-layout .nav a.active,.admin-layout .nav a:hover{background:linear-gradient(90deg,#0f766e47,#ffffff0a);box-shadow:inset 2px 0 #14b8a6}.admin-layout .logo-mark{box-shadow:0 8px 18px #0f766e47}.admin-layout .btn{background:linear-gradient(180deg,#1aa08a,#0f766e);color:#fff;box-shadow:0 8px 16px #0f766e33}.admin-layout .btn.ghost{background:#fff;color:var(--text);box-shadow:none}.admin-layout .btn.danger{background:linear-gradient(180deg,#d7685d,#c2453a)}.empty{color:var(--muted);font-size:13px;padding:28px 16px;text-align:center}
