:root{--bg:#f4f5f7;--card:#ffffff;--card-border:#e6e8eb;--text:#1a1d21;--text-muted:#6b7280;--accent:#6366f1;--accent-soft:#eef2ff;--shadow:0 1px 3px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.05);--radius:16px}@media (prefers-color-scheme:dark){:root{--bg:#0d0f12;--card:#16191d;--card-border:#262b31;--text:#e8eaed;--text-muted:#9aa2ac;--accent:#818cf8;--accent-soft:#1e2130;--shadow:0 1px 3px rgba(0,0,0,0.4),0 8px 24px rgba(0,0,0,0.35)}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5}.page{max-width:1240px;margin:0 auto;padding:32px 24px 64px}.header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px;flex-wrap:wrap}.header h1{font-size:26px;font-weight:700;margin:0;letter-spacing:-.02em}.header .subtitle{color:var(--text-muted);font-size:14px;margin-top:2px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-soft);border:1px solid var(--card-border);padding:6px 12px;border-radius:999px}.dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}.grid{display:grid;grid-template-columns:1fr 1.2fr 1fr;grid-gap:20px;gap:20px;align-items:start}@media (max-width:980px){.grid{grid-template-columns:1fr}}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column}.card-title{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;margin:0 0 16px}.card-title .ico{font-size:18px}.link-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.link-item a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;text-decoration:none;color:var(--text);border:1px solid transparent;transition:background .15s,border-color .15s}.link-item a:hover{background:var(--accent-soft);border-color:var(--card-border)}.link-item .link-ico{font-size:18px;width:22px;text-align:center}.link-item .link-meta{display:flex;flex-direction:column;min-width:0}.link-item .link-title{font-weight:600;font-size:14px}.link-item .link-url{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.add-row{display:flex;gap:8px;margin-top:14px}.input{flex:1 1;min-width:0;background:var(--bg);border:1px solid var(--card-border);color:var(--text);padding:10px 12px;border-radius:10px;font-size:14px;outline:none}.input:focus{border-color:var(--accent)}.btn{background:var(--accent);color:#fff;border:none;padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;transition:opacity .15s}.btn:hover{opacity:.9}.btn:disabled{opacity:.5;cursor:not-allowed}.cal-day{font-size:13px;color:var(--text-muted);margin-bottom:14px}.cal-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.cal-event{display:flex;gap:12px;padding:12px 14px;border-radius:12px;background:var(--bg);border:1px solid var(--card-border)}.cal-event .bar{width:4px;border-radius:4px;flex:0 0 4px}.cal-event .cal-time{font-size:12px;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-event .cal-name{font-weight:600;font-size:14px}.cal-event .cal-loc{font-size:12px;color:var(--text-muted)}.cal-empty{color:var(--text-muted);font-size:14px;padding:16px 0}.chat{min-height:320px}.chat-scroll{flex:1 1;gap:10px;max-height:380px;overflow-y:auto;padding-right:4px;margin-bottom:14px}.chat-scroll,.msg{display:flex;flex-direction:column}.msg{gap:2px;padding:10px 12px;border-radius:12px;background:var(--bg);border:1px solid var(--card-border);max-width:92%}.msg.self{align-self:flex-end;background:var(--accent-soft)}.msg .msg-head{display:flex;gap:8px;align-items:baseline}.msg .msg-author{font-weight:700;font-size:12px}.msg .msg-time{font-size:11px;color:var(--text-muted)}.msg .msg-body{font-size:14px}.footer-note{margin-top:12px;font-size:12px;color:var(--text-muted)}