/* ============ 我的 AI 工作台 · 样式 ============ */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;font-family:"Microsoft YaHei",system-ui,sans-serif;background:#04010f;color:#f0ecff}
input,textarea,select,button{font-family:inherit}

/* ---------- 粒子星云背景 ---------- */
#particleCanvas{position:fixed;inset:0;z-index:0;pointer-events:none}
#nebula{position:fixed;inset:0;z-index:0;pointer-events:none;background:
  radial-gradient(ellipse 60% 50% at 20% 25%, rgba(124,58,237,.16), transparent 60%),
  radial-gradient(ellipse 50% 45% at 82% 78%, rgba(236,72,153,.15), transparent 60%),
  radial-gradient(ellipse 40% 40% at 60% 10%, rgba(34,211,238,.10), transparent 60%);}

/* ---------- 中央核心导航 ---------- */
#hub{position:fixed;inset:0;z-index:5;display:flex;align-items:center;justify-content:center}
.hub-core{text-align:center;cursor:pointer;user-select:none;position:relative}
.hub-core .ring{position:absolute;inset:-60px;border-radius:50%;border:1px solid rgba(167,139,250,.25);animation:spin 22s linear infinite}
.hub-core .ring.r2{inset:-110px;border-color:rgba(236,72,153,.18);animation-duration:34s;animation-direction:reverse}
.hub-core .orb{width:150px;height:150px;border-radius:50%;margin:0 auto;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 32% 30%, rgba(167,139,250,.9), rgba(99,60,235,.65) 60%, rgba(40,20,90,.9));
  box-shadow:0 0 60px rgba(139,92,246,.55), inset 0 0 40px rgba(255,255,255,.18);
  animation:float 6s ease-in-out infinite;font-size:52px}
.hub-core h1{margin-top:20px;font-size:22px;font-weight:500;letter-spacing:3px;
  background:linear-gradient(90deg,#c4b5fd,#f9a8d4,#c4b5fd);background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;animation:gradientMove 6s linear infinite}
.hub-core p{margin-top:8px;font-size:13px;color:#94a3b8;letter-spacing:2px}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes gradientMove{0%{background-position:0%}100%{background-position:200%}}

/* ---------- 环绕模块节点 ---------- */
.module-node{position:absolute;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;user-select:none;
  transform:translate(-50%,-50%);transition:transform .25s,filter .25s}
.module-node:hover{transform:translate(-50%,-50%) scale(1.18);filter:brightness(1.25)}
.module-node .ico{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;
  background:radial-gradient(circle at 30% 28%, rgba(255,255,255,.22), rgba(90,50,190,.75) 70%);
  border:1px solid rgba(255,255,255,.28);box-shadow:0 0 30px rgba(139,92,246,.35);backdrop-filter:blur(6px)}
.module-node .nm{font-size:13px;color:#ddd6fe;text-shadow:0 1px 6px rgba(0,0,0,.8);letter-spacing:1px;font-weight:500}
.module-node .cnt{font-size:11px;color:#f9a8d4}

/* ---------- 顶部栏 ---------- */
.topbar{position:fixed;top:0;left:0;right:0;z-index:20;height:56px;display:flex;align-items:center;gap:10px;
  padding:0 16px;background:rgba(8,3,20,.55);backdrop-filter:blur(12px);border-bottom:1px solid rgba(167,139,250,.14)}
.topbar .logo{font-size:17px;font-weight:600;color:#e9d5ff;display:flex;align-items:center;gap:8px;cursor:pointer}
.topbar .logo .badge{width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#c4b5fd,#7c3aed);
  display:flex;align-items:center;justify-content:center;font-size:14px}
.topbar .spacer{flex:1}
.topbar .mode-tag{font-size:11px;padding:3px 10px;border-radius:999px;background:rgba(52,211,153,.15);color:#6ee7b7;border:1px solid rgba(52,211,153,.3)}
.topbar .mode-tag.local{background:rgba(148,163,184,.15);color:#cbd5e1;border-color:rgba(148,163,184,.3)}

/* ---------- 页面容器 ---------- */
.page{position:fixed;inset:0;z-index:10;display:none;padding:72px 20px 20px;overflow-y:auto}
.page.show{display:block;animation:pageIn .35s ease}
@keyframes pageIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.page-container{max-width:1200px;margin:0 auto}

/* 通用卡片 */
.card{background:linear-gradient(145deg,rgba(30,22,60,.8),rgba(45,32,80,.7));border:1px solid rgba(167,139,250,.18);
  border-radius:16px;padding:20px;margin-bottom:16px;backdrop-filter:blur(10px);box-shadow:0 0 30px rgba(139,92,246,.08)}
.card h2{font-size:18px;margin-bottom:14px;color:#e9d5ff;display:flex;align-items:center;gap:8px}
.card h2 .sub{font-size:12px;color:#94a3b8;font-weight:400}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.flex{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.flex-between{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}
.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mt-2{margin-top:8px}
.w-full{width:100%;display:block}
.text-xs{font-size:12px;color:#a5b4fc}.text-sm{font-size:13px;color:#94a3b8}
.text-pink{color:#f472b6}.text-green{color:#34d399}.text-red{color:#f87171}.text-orange{color:#fbbf24}

input,textarea,select{font-size:14px;padding:9px 12px;border-radius:10px;border:1px solid #3f2d6e;
  background:rgba(255,255,255,.06);color:#f0ecff;outline:none;margin:4px 0;width:100%}
input:focus,textarea:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.2)}
button{font-size:14px;padding:9px 16px;border-radius:10px;border:none;margin:4px;cursor:pointer;font-weight:500;
  background:linear-gradient(135deg,#8b5cf6,#d946ef);color:#fff;transition:.2s;box-shadow:0 0 16px rgba(139,92,246,.25)}
button:hover{transform:translateY(-1px);box-shadow:0 0 26px rgba(139,92,246,.4)}
button.ghost{background:transparent;color:#c4b5fd;border:1px solid rgba(167,139,250,.35);box-shadow:none}
button.danger{background:linear-gradient(135deg,#f87171,#ef4444);box-shadow:0 0 16px rgba(248,113,113,.25)}
button.mini{padding:5px 10px;font-size:12px;border-radius:8px;margin:2px}

/* 返回按钮 */
.back-btn{position:fixed;top:70px;left:16px;z-index:30;border-radius:999px;padding:7px 14px;font-size:13px;background:rgba(8,3,20,.6);border:1px solid rgba(167,139,250,.3);color:#c4b5fd}

/* ---------- 笔记 ---------- */
.note-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.note-card{background:linear-gradient(145deg,rgba(40,30,70,.8),rgba(50,40,85,.7));border:1px solid rgba(167,139,250,.2);
  border-radius:12px;padding:14px;cursor:pointer;transition:.2s;position:relative}
.note-card:hover{transform:translateY(-3px);box-shadow:0 8px 26px rgba(139,92,246,.25)}
.note-card h3{font-size:15px;color:#f0ecff;margin-bottom:6px;word-break:break-all}
.note-card .preview{font-size:12px;color:#94a3b8;max-height:54px;overflow:hidden;line-height:1.6}
.note-card .meta{font-size:11px;color:#6b7280;margin-top:8px}
.note-editor textarea{min-height:55vh;line-height:1.8;font-size:15px;resize:vertical}

/* ---------- 任务 ---------- */
.task-row{display:flex;align-items:center;gap:10px;padding:11px 12px;margin-bottom:8px;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px solid rgba(167,139,250,.12)}
.task-row.done .task-title{text-decoration:line-through;color:#94a3b8}
.task-check{width:22px;height:22px;border-radius:50%;border:2px solid #8b5cf6;cursor:pointer;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;background:transparent}
.task-check.checked{background:linear-gradient(135deg,#8b5cf6,#d946ef);border-color:transparent;color:#fff}
.task-title{flex:1;font-size:14px;word-break:break-all}
.task-tag{font-size:11px;padding:2px 8px;border-radius:999px}
.pri-high{background:rgba(248,113,113,.2);color:#fca5a5}.pri-mid{background:rgba(251,191,36,.15);color:#fcd34d}.pri-low{background:rgba(148,163,184,.18);color:#cbd5e1}
.task-due{font-size:11px;color:#94a3b8}

/* ---------- 日历 ---------- */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;background:rgba(255,255,255,.03);border-radius:14px;padding:10px}
.cal-dow{text-align:center;font-size:12px;color:#a5b4fc;padding:4px}
.cal-cell{min-height:74px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(167,139,250,.12);
  padding:4px;cursor:pointer;transition:.15s;position:relative}
.cal-cell:hover{background:rgba(139,92,246,.14)}
.cal-cell.other{opacity:.35}
.cal-cell.today{border-color:#d946ef;box-shadow:0 0 0 1px rgba(217,70,239,.5) inset}
.cal-daynum{font-size:12px;color:#c4b5fd;font-weight:500;margin-bottom:2px}
.cal-cell.today .cal-daynum{color:#f9a8d4}
.cal-ev{font-size:10px;background:linear-gradient(135deg,#8b5cf6,#d946ef);color:#fff;border-radius:5px;padding:1px 4px;margin:1px 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cal-ev.done{background:rgba(52,211,153,.85)}
.cal-head{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:14px}
.cal-head .ym{font-size:18px;color:#e9d5ff;min-width:140px;text-align:center}

/* ---------- 恋爱空间（iframe） ---------- */
.love-frame-wrap{position:fixed;inset:0;z-index:15;background:#050113;display:none;flex-direction:column}
.love-frame-wrap.show{display:flex}
.love-toolbar{height:52px;display:flex;align-items:center;gap:10px;padding:0 14px;background:rgba(8,3,20,.8);border-bottom:1px solid rgba(217,70,239,.2);z-index:2}
.love-toolbar .t{flex:1;font-size:14px;color:#f9a8d4;font-weight:500}
#loveFrame{flex:1;width:100%;border:none}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;background:rgba(6,2,16,.78);backdrop-filter:blur(8px);z-index:200;display:none;align-items:center;justify-content:center;padding:20px}
.modal.show{display:flex}
.modal-box{background:linear-gradient(145deg,rgba(34,24,68,.96),rgba(52,36,90,.94));border:1px solid rgba(167,139,250,.3);
  border-radius:18px;padding:26px;max-width:520px;width:100%;max-height:88vh;overflow-y:auto;box-shadow:0 0 50px rgba(139,92,246,.25)}

/* 提示条 */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);z-index:300;
  background:linear-gradient(135deg,#7c3aed,#d946ef);color:#fff;padding:11px 22px;border-radius:999px;font-size:14px;
  box-shadow:0 8px 30px rgba(139,92,246,.4);opacity:0;transition:.3s;pointer-events:none;white-space:nowrap}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 加载提示 */
#bootMsg{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;background:#04010f;font-size:15px;color:#c4b5fd;letter-spacing:1px}
#bootMsg.hide{display:none}

/* 响应式 */
@media(max-width:760px){
  .hub-core .orb{width:110px;height:110px;font-size:40px}
  .hub-core h1{font-size:18px}
  .module-node .ico{width:52px;height:52px;font-size:21px}
  .module-node .nm{font-size:12px}
  .cal-cell{min-height:56px}
}
