/* 喇叭花 · 通用基础：变量/重置/按钮/输入/弹窗/提示（原 style 基础+设置弹窗段） */
  /* ================= 基础 ================= */
  * { margin: 0; padding: 0; box-sizing: border-box;
      font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif; }
  :root {
    --b1: #2563eb; --b2: #7c3aed;
    --ink: #0b2a4a; --ink2: #48709f; --line: #dce5f0; --primary-soft: #eff6ff; --danger: #ef4444;
    --card: rgba(255, 255, 255, .78);
    /* 页面底色（仪表盘外壳 / 码块底 / 分隔线）。dashboard.css 里引用了 6 处 var(--bg)
       但一直没人定义过 —— 那些声明按"无效值"整条失效（例如 .code-btn 没有底色），
       补上设计稿的 bg token #eef2f9。 */
    --bg: #eef2f9;
    --ok: #10b981;
  }
  [hidden] { display: none !important; }
  body { min-height: 100vh; color: var(--ink);
         background: linear-gradient(145deg, #f5f0ff 0%, #e8f0fe 100%); }
  body.is-class { background: #04070d; overflow: hidden; }

  input[type=text], input[type=number], input[type=password] {
    border: 1.5px solid var(--line); border-radius: 999px; padding: 11px 16px;
    font-size: 1rem; background: #fff; color: var(--ink); outline: none; }
  input:focus { border-color: var(--b1); }
  textarea { width: 100%; border: 1.5px solid var(--line); border-radius: 14px;
             padding: 10px 12px; font-size: .95rem; resize: vertical; background: #fff; color: var(--ink); outline: none; }
  textarea:focus { border-color: var(--b1); }

  .btn { border-radius: 999px; padding: 10px 20px; font-weight: 600; cursor: pointer;
         border: 1.5px solid var(--line); background: #fff; color: var(--ink); font-size: .95rem; }
  .btn:active { transform: scale(.97); }
  .btn:disabled { opacity: .45; cursor: not-allowed; }
  .btn-primary { background: linear-gradient(135deg, var(--b1), var(--b2)); color: #fff; border: none; }
  .btn-ghost { background: transparent; }
  .btn-danger { background: #fee2e2; color: #b91c1c; border-color: #fecaca; }
  .linkbtn { background: none; border: none; color: var(--b1); cursor: pointer; font-weight: 600; font-size: .85rem; }
  /* 正文里的可点入口（如「教室电脑打开 /screen ↗」）：虚线下划线区别于普通链接，颜色随品牌 */
  .lnk { color: var(--b1); font-weight: 600; text-decoration: none; border-bottom: 1px dashed currentColor; }
  .lnk:hover { color: var(--b2); }
  .muted { color: var(--ink2); font-size: .9rem; }
  .row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 10px; }

  /* ================= 设置弹窗 / 提示 ================= */
  .modal-mask { position: fixed; inset: 0; background: rgba(8,20,40,.45); display: flex;
                align-items: center; justify-content: center; z-index: 50; padding: 16px; }
  .modal { background: #fff; border-radius: 20px; padding: 24px; max-width: 460px; width: 100%; text-align: left; }
  .modal h3 { margin-bottom: 4px; }
  .modal label { display: block; font-size: .85rem; color: var(--ink2); margin: 12px 0 6px; font-weight: 600; }
  .modal input { width: 100%; border: 1.5px solid var(--line); border-radius: 12px; padding: 10px 12px; font-size: 1rem; }

  @media (max-width: 860px) {
    .t-grid { grid-template-columns: 1fr; }
    .role-pick { grid-template-columns: 1fr; }
    .welcome-card { padding: 28px 20px; }
  }


/* 移动端输入体验：16px 防 iOS 聚焦缩放，触控热区 ≥44px */
@media (max-width: 640px) {
  input[type=text], input[type=number], input[type=password], textarea { font-size: 16px; }
  .btn { min-height: 44px; }
}
