/* ============================================================
   AIMedOne 增强样式层  v20261003
   内容：设计 token / 统一基础组件 / 注册卡片化 / 密码强度 /
        研究热点雷达 / 后台表格与来源标签
   说明：本文件为独立增强层，不改动原 styles.css；变量提供 fallback。
   风格：学术简约（teal 主色），适配文献阅读与科研场景。
   ============================================================ */

:root{
  --brand:#0f766e;
  --brand-600:#0d9488;
  --brand-700:#0f766e;
  --brand-soft:#ccfbf1;
  --brand-ink:#134e4a;
  --ink-2:#18181b;
  --muted-2:#71717a;
  --faint:#a1a1aa;
  --border-2:#e7e9ec;
  --bg-soft:#f6f8f8;
  --paper:#ffffff;
  --danger-2:#dc2626;
  --danger-soft:#fef2f2;
  --warn-2:#d97706;
  --warn-soft:#fffbeb;
  --success-2:#16a34a;
  --success-soft:#f0fdf4;
  --r:12px;
  --r-sm:9px;
  --r-lg:16px;
  --sh-1:0 1px 2px rgba(15,23,42,.05);
  --sh-2:0 6px 22px rgba(15,23,42,.08);
  --sh-3:0 22px 60px rgba(15,23,42,.16);
  --font-ui:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

/* ============================================================
   一、统一基础组件（供本页与未来插件复用）
   ============================================================ */
.ui-btn,.auth-card .primary,.radar-run{
  font-family:var(--font-ui);font-size:13px;font-weight:600;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:11px 18px;border-radius:var(--r-sm);border:1px solid transparent;
  cursor:pointer;transition:transform .06s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease;
  text-decoration:none;white-space:nowrap;user-select:none;
}
.ui-btn-primary,.auth-card .primary,.radar-run{
  background:var(--brand);color:#fff;box-shadow:0 4px 14px rgba(15,118,110,.22);
}
.ui-btn-primary:hover,.auth-card .primary:hover,.radar-run:hover{background:var(--brand-600)}
.ui-btn-primary:active,.auth-card .primary:active,.radar-run:active{transform:translateY(1px)}
.ui-btn-ghost{background:#fff;color:var(--ink-2);border-color:var(--border-2)}
.ui-btn-ghost:hover{background:#f4f4f5}
.ui-btn-danger{background:#fff;color:var(--danger-2);border-color:#fecaca}
.ui-btn-danger:hover{background:var(--danger-soft)}
.ui-btn:disabled,.auth-card .primary:disabled,.radar-run:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}
.ui-btn.is-loading,.auth-card .primary.is-loading{position:relative;color:transparent!important;pointer-events:none}
.ui-btn.is-loading::after,.auth-card .primary.is-loading::after{
  content:"";position:absolute;width:15px;height:15px;border-radius:50%;
  border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:uispin .7s linear infinite;
}
@keyframes uispin{to{transform:rotate(360deg)}}

.ui-input-wrap{position:relative;display:block}
.ui-input-wrap .ui-input-icon{
  position:absolute;left:12px;top:50%;transform:translateY(-50%);
  width:15px;height:15px;color:var(--faint);pointer-events:none;
}
.ui-input,.auth-card input{
  font-family:var(--font-ui);font-size:13px;color:var(--ink-2);
  width:100%;padding:11px 13px;border:1px solid var(--border-2);border-radius:var(--r-sm);
  background:#fff;transition:border-color .15s ease,box-shadow .15s ease;box-sizing:border-box;
}
.ui-input::placeholder,.auth-card input::placeholder{color:var(--faint)}
.ui-input:focus,.auth-card input:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);
}
.ui-input.is-invalid,.auth-card input.is-invalid{border-color:#fca5a5;box-shadow:0 0 0 3px var(--danger-soft)}
.ui-input.is-valid,.auth-card input.is-valid{border-color:#86efac}

.ui-toast{
  font-family:var(--font-ui);font-size:13px;line-height:1.5;
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);
  background:#18181b;color:#fff;padding:11px 18px;border-radius:10px;
  box-shadow:var(--sh-3);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease;
  z-index:9999;max-width:88vw;
}
.ui-toast.show{opacity:1;transform:translate(-50%,0)}
.ui-toast.success{background:#14532d}
.ui-toast.error{background:#7f1d1d}

.ui-modal{border:1px solid var(--border-2);border-radius:var(--r-lg);box-shadow:var(--sh-3);padding:24px}
.ui-modal::backdrop{background:rgba(15,23,42,.45);backdrop-filter:blur(2px)}

/* ============================================================
   二、注册 / 登录卡片化（未登录页）
   ============================================================ */
.public-page .auth-hero{
  position:relative;gap:40px;flex-wrap:wrap;
  padding:56px 24px;
}
.public-page .auth-hero::before{
  content:"";position:absolute;inset0;z-index:-1;
  background:
    radial-gradient(900px 420px at 12% -10%,rgba(15,118,110,.10),transparent 60%),
    radial-gradient(700px 380px at 100% 0%,rgba(13,148,136,.08),transparent 55%),
    var(--bg-soft);
}
.public-page .hero{flex:1 1 380px;min-width:300px}
.auth-card{
  flex:0 1 430px;width:100%;box-sizing:border-box;
  padding:30px 28px;border:1px solid var(--border-2);border-radius:var(--r-lg);
  background:rgba(255,255,255,.92);backdrop-filter:blur(6px);
  box-shadow:var(--sh-3);
}
.auth-heading{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.auth-heading h2{margin:0;font-size:19px}
.auth-heading p{margin:2px 0 0;font-size:12px;color:var(--muted-2)}
.mini-mark{
  width:36px;height:36px;border-radius:10px;flex:none;display:grid;place-items:center;
  background:var(--brand);color:#fff;font-weight:700;font-size:13px;box-shadow:0 4px 12px rgba(15,118,110,.25);
}
.auth-card .tabs{display:flex;gap:6px;background:#f1f5f4;border-radius:10px;padding:4px;margin-bottom:14px}
.auth-card .tabs button{
  flex:1;border:0;background:none;padding:9px;border-radius:7px;font-size:13px;
  color:var(--muted-2);cursor:pointer;font-weight:600;transition:background .15s,color .15s;
}
.auth-card .tabs button.active{background:#fff;color:var(--brand-ink);box-shadow:var(--sh-1)}
.login-methods{display:flex;gap:6px;margin-bottom:14px}
.login-methods button{
  flex:1;border:1px solid var(--border-2);background:#fff;padding:8px;border-radius:8px;
  font-size:12px;color:var(--muted-2);cursor:pointer;
}
.login-methods button.active{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}

#auth-form label{
  position:relative;display:block;font-size:12px;font-weight:600;color:var(--ink-2);
  margin-bottom:13px;
}
#auth-form input{margin-top:6px;padding-left:38px}
#auth-form .code-input{display:flex;gap:8px;margin-top:6px}
#auth-form .code-input input{margin-top:0;padding-left:13px}
#auth-form .code-input button{
  flex:none;border:1px solid var(--brand);background:#fff;color:var(--brand);
  border-radius:var(--r-sm);padding:0 14px;font-size:12px;cursor:pointer;white-space:nowrap;
}
#auth-form .code-input button:disabled{opacity:.6;cursor:not-allowed}

/* 输入框前置图标 */
#auth-form .field-ico{
  position:absolute;left:12px;width:15px;height:15px;color:var(--faint);pointer-events:none;
}
#display-name{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center}
#email{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center}
#password{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='9' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center}
#password.has-toggle{padding-right:42px}

/* 密码显示 / 隐藏 */
#password-toggle{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  border:0;background:none;width:28px;height:28px;border-radius:7px;cursor:pointer;
  color:var(--faint);display:grid;place-items:center;
}
#password-toggle:hover{color:var(--brand);background:var(--brand-soft)}

/* 密码强度 */
#password-strength{margin:-4px 0 14px;display:none}
#password-strength.show{display:block}
.pw-track{display:flex;gap:5px;margin:2px 0 4px}
.pw-seg{height:5px;flex:1;border-radius:99px;background:#e7e9ec;transition:background .2s}
.pw-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--muted-2)}
#password-strength.level-1 .pw-seg:nth-child(1){background:#ef4444}
#password-strength.level-2 .pw-seg:nth-child(-n+2){background:#f59e0b}
#password-strength.level-3 .pw-seg:nth-child(-n+3){background:#16a34a}
#password-strength.level-4 .pw-seg{background:#16a34a}

/* 隐私协议 */
.agree-row{display:flex;align-items:flex-start;gap:8px;margin:2px 0 14px;font-size:11.5px;color:var(--muted-2);line-height:1.5}
.agree-row input{width:auto;margin:2px 0 0;flex:none}
.agree-row a{color:var(--brand);cursor:pointer;text-decoration:none}
.agree-row a:hover{text-decoration:underline}

#auth-form .primary{width:100%;margin-top:2px;padding:13px}
.forgot-password{
  width:100%;border:0;background:none;color:var(--muted-2);font-size:12px;
  margin-top:10px;cursor:pointer;text-decoration:underline;
}
.forgot-password:hover{color:var(--brand)}
#auth-form .error{
  min-height:0;font-size:12px;color:var(--danger-2);background:var(--danger-soft);
  border-radius:var(--r-sm);padding:0;margin-top:8px;line-height:1.6;
}
#auth-form .error:not(:empty){padding:8px 11px}
.beta-notice{font-size:11px;color:var(--muted-2);line-height:1.7;margin:16px 0 0}
.academic-benefit{
  font-size:12px;color:var(--brand-ink);background:var(--brand-soft);
  border-radius:var(--r-sm);padding:9px 12px;margin:0 0 12px;
}

/* hero 上的雷达入口 */
#hero-radar{
  display:inline-flex;align-items:center;gap:8px;margin-top:18px;border:1px solid var(--brand);
  background:#fff;color:var(--brand);border-radius:99px;padding:10px 18px;font-size:13px;
  font-weight:600;cursor:pointer;transition:background .15s,color .15s;
}
#hero-radar:hover{background:var(--brand);color:#fff}

/* ============================================================
   三、研究热点 / 选题雷达
   ============================================================ */
#radar-view{max-width:1180px}
.radar-back{margin-bottom:12px}
.radar-hero{
  background:linear-gradient(120deg,#134e4a,#0f766e 60%,#0d9488);
  color:#fff;border-radius:var(--r-lg);padding:26px 28px;margin-bottom:18px;
}
.radar-hero .eyebrow{color:#99f6e4}
.radar-hero h2{margin:6px 0 6px;font-size:23px}
.radar-hero p{margin:0;color:#d1fae5;font-size:13px;line-height:1.7;max-width:760px}
.radar-input-card{padding:18px;margin-bottom:18px}
.radar-form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.radar-form .rf-field{flex:1;min-width:240px}
.radar-form label{display:block;font-size:12px;font-weight:600;margin-bottom:6px}
.radar-form input,.radar-form select{
  width:100%;padding:11px 13px;border:1px solid var(--border-2);border-radius:var(--r-sm);
  font-size:13px;box-sizing:border-box;background:#fff;
}
.radar-form input:focus,.radar-form select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.radar-form .radar-run{padding:12px 24px}
.radar-hint{font-size:11.5px;color:var(--muted-2);margin-top:10px;line-height:1.7}

.radar-loading{
  display:none;flex-direction:column;gap:12px;padding:30px 0;
}
.radar-loading.show{display:flex}
.radar-skeleton{
  height:60px;border-radius:var(--r-sm);
  background:linear-gradient(90deg,#eef2f2 25%,#f7faf9 37%,#eef2f2 63%);
  background-size:400% 100%;animation:shimmer 1.4s ease infinite;
}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}

#radar-result{display:none}
#radar-result.show{display:block}
.radar-summary{
  border:1px solid var(--brand-soft);background:var(--brand-soft);color:var(--brand-ink);
  border-radius:var(--r);padding:15px 18px;font-size:13px;line-height:1.8;margin-bottom:18px;
}
.radar-section-title{display:flex;align-items:center;gap:8px;font-size:14px;margin:22px 0 12px}
.radar-section-title .rst-tag{
  font-size:10px;font-weight:700;background:#18181b;color:#fff;border-radius:6px;padding:2px 7px;
}

/* 趋势（纯 CSS 柱状图） */
.radar-trend{
  display:flex;align-items:flex-end;gap:14px;height:170px;padding:16px 18px 8px;
  border:1px solid var(--border-2);border-radius:var(--r);background:#fff;
}
.trend-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.trend-bar{
  width:60%;max-width:46px;border-radius:6px 6px 0 0;
  background:linear-gradient(180deg,#14b8a6,#0f766e);min-height:3px;position:relative;
  transition:height .5s ease;
}
.trend-bar.bump{background:linear-gradient(180deg,#f59e0b,#d97706)}
.trend-val{font-size:10.5px;color:var(--muted-2)}
.trend-year{font-size:11px;color:var(--ink-2);font-weight:600}
.trend-note{font-size:11.5px;color:var(--muted-2);margin-top:8px;line-height:1.6}

.radar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:12px}
.hotspot-card{
  border:1px solid var(--border-2);border-radius:var(--r);padding:14px;background:#fff;
  transition:box-shadow .18s,transform .18s;
}
.hotspot-card:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.hotspot-card .hs-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.hotspot-card h4{margin:0;font-size:13.5px;flex:1}
.hotspot-card p{margin:0;font-size:12px;color:var(--muted-2);line-height:1.7}
.hs-heat{
  font-size:10px;font-weight:700;border-radius:99px;padding:3px 9px;flex:none;
}
.hs-heat.high{background:var(--danger-soft);color:#b91c1c}
.hs-heat.mid{background:var(--warn-soft);color:#b45309}
.hs-heat.low{background:#f4f4f5;color:#71717a}

.radar-tags{display:flex;flex-wrap:wrap;gap:8px}
.radar-tag{
  font-size:12px;border-radius:99px;padding:6px 13px;border:1px solid var(--border-2);
  background:#fff;color:var(--ink-2);display:inline-flex;align-items:center;gap:6px;
}
.radar-tag.emerging{background:var(--success-soft);color:#15803d;border-color:#bbf7d0}
.radar-tag.declining{background:#f4f4f5;color:#71717a}
.radar-tag .rt-why{font-size:10.5px;opacity:.8}

.idea-card{
  border:1px solid var(--border-2);border-radius:var(--r);padding:16px;background:#fff;margin-bottom:12px;
}
.idea-card .idea-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
.idea-no{
  width:24px;height:24px;border-radius:8px;background:var(--brand);color:#fff;font-size:12px;
  font-weight:700;display:grid;place-items:center;flex:none;
}
.idea-card h4{margin:0;font-size:14px;line-height:1.5;flex:1}
.idea-card p{margin:0 0 6px;font-size:12px;color:var(--muted-2);line-height:1.7}
.idea-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.idea-chip{font-size:10.5px;border-radius:6px;padding:3px 8px;background:#f4f4f5;color:#52525b}
.idea-chip.design{background:var(--brand-soft);color:var(--brand-ink)}
.idea-chip.hard-hard{background:var(--warn-soft);color:#b45309}
.idea-chip.hard-mid{background:#eff6ff;color:#1d4ed8}
.idea-chip.hard-easy{background:var(--success-soft);color:#15803d}
.radar-footnote{font-size:11px;color:var(--faint);margin-top:14px;line-height:1.7}

/* ============================================================
   四、后台：来源标签 / 表格 hover / 搜索
   ============================================================ */
.admin-table-wrap{overflow-x:auto;border-radius:var(--r-sm)}
.admin-table-wrap table tbody tr{transition:background .12s}
.admin-table-wrap table tbody tr:hover{background:var(--bg-soft)}
.source-badge{
  display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;
  border-radius:6px;padding:2px 7px;margin-top:5px;
}
.source-badge.portal{background:#eef2ff;color:#4338ca}
.source-badge.api{background:#fff7ed;color:#c2410c}
#admin-user-search{
  padding:8px 12px;border:1px solid var(--border-2);border-radius:var(--r-sm);
  font-size:12px;min-width:200px;
}
#admin-user-search:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}

/* ============================================================
   五、响应式
   ============================================================ */
@media(max-width:640px){
  .public-page .auth-hero{padding:32px 14px}
  .auth-card{padding:24px 18px}
  .radar-hero{padding:20px}
  .radar-form .radar-run{width:100%}
  .radar-trend{gap:6px}
}

/* ============================================================
   六、主页工作台美化（学术简约：白卡片 / 细边框 / teal 图标 / hover 上浮）
   用 #dashboard-module-groups 作用域，压过旧样式且不影响其他页面
   ============================================================ */
#overview-view .welcome-panel{
  background:linear-gradient(135deg,#ffffff 0%,#f0fdfa 100%);
  border:1px solid var(--border-2);border-radius:var(--r);
  box-shadow:var(--sh-1);padding:22px 26px;margin-bottom:22px;
}
#overview-view .welcome-panel h2{margin:6px 0;font-size:21px;color:#134e4a}
#overview-view .welcome-panel p{margin:0;color:var(--muted-2);font-size:13px}

#dashboard-module-groups .capability-group{
  background:#fff;border:1px solid var(--border-2);border-radius:var(--r);
  box-shadow:var(--sh-1);padding:20px 22px;margin-bottom:18px;
}
#dashboard-module-groups .capability-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;
}
#dashboard-module-groups .capability-head h3{margin:4px 0;font-size:16px;color:#18181b}
#dashboard-module-groups .capability-head p{margin:0;font-size:12px;color:var(--muted-2)}
#dashboard-module-groups .capability-head .eyebrow{color:var(--brand);font-weight:700}
#dashboard-module-groups .capability-head > span{
  font-size:11px;color:var(--muted-2);background:#f4f4f5;border:1px solid var(--border-2);
  padding:3px 10px;border-radius:999px;white-space:nowrap;
}
#dashboard-module-groups .module-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;
}

/* 卡片：统一去掉彩虹顶边，白底细边框 */
#dashboard-module-groups .module-card{
  position:relative;background:#fff;border:1px solid var(--border-2);border-radius:12px;
  padding:18px 18px 16px;box-shadow:none;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
  cursor:pointer;overflow:hidden;
}
#dashboard-module-groups .module-card.live{border-top:1px solid var(--border-2)}
#dashboard-module-groups .module-card:hover{
  transform:translateY(-3px);box-shadow:var(--sh-2);border-color:#99f6e4;
}
#dashboard-module-groups .module-card h4{
  margin:10px 0 6px;font-size:14px;font-weight:700;color:#18181b;line-height:1.4;
}
#dashboard-module-groups .module-card p{
  margin:0;font-size:12px;color:var(--muted-2);line-height:1.6;min-height:38px;
}
#dashboard-module-groups .module-kicker{
  display:block;font-size:10.5px;font-weight:600;letter-spacing:.4px;color:var(--brand);
  text-transform:uppercase;
}
#dashboard-module-groups .module-icon{
  width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:var(--brand-soft);color:var(--brand);font-size:19px;
}
#dashboard-module-groups .module-link{
  display:inline-block;margin-top:12px;font-size:12px;font-weight:600;color:var(--brand);
  transition:transform .18s ease;
}
#dashboard-module-groups .module-card:hover .module-link{transform:translateX(3px)}

/* 徽章：可用 / 维护 */
#dashboard-module-groups .module-badge{
  position:absolute;top:14px;right:14px;font-size:10px;font-weight:600;
  background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;
  padding:2px 8px;border-radius:999px;
}
#dashboard-module-groups .module-badge.maintenance{
  background:#f4f4f5;color:#71717a;border-color:#e4e4e7;
}
@media(max-width:900px){
  #dashboard-module-groups .module-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
}
/* （注：内容由AI生成） */
