/* 用户端 v1007：墨蓝 + 香槟金，瓷白底。
   只作用于带 .u-page（登录 / 注册 / 设备确认 / 我的导图）和 .u-reader（阅读页顶栏）的页面；
   导图节点、连线、展开钮的尺寸和颜色一律不在这里改动。 */
:root{--u-ink:#14213d;--u-pri:#24407a;--u-pri-2:#1b3263;--u-gold:#b8925a;--u-text:#2b3445;
  --u-sub:#6b7486;--u-line:#e3e6ec;--u-bg:#f3f4f7}

/* ================= 登录 / 注册 / 设备确认 ================= */
body.u-page{background:var(--u-bg);color:var(--u-text)}
body.u-auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px;
  background:radial-gradient(900px 500px at 15% 10%,#e6eaf3,transparent),var(--u-bg)}
body.u-auth.has-bg::before{content:"";position:fixed;inset:0;z-index:0}
.auth-shell{display:flex;width:100%;max-width:720px;min-height:440px;border-radius:18px;overflow:hidden;
  box-shadow:0 30px 80px rgba(20,33,61,.18),0 2px 6px rgba(20,33,61,.06);position:relative;z-index:1}
/* 后台上传了背景图时登录框半透明（固定值）：左侧墨蓝约 88%，右侧白色约 78%；没有背景图时为不透明 */
.auth-brand{flex:0 0 38%;color:#e9ecf3;padding:36px 30px;position:relative;
  background:linear-gradient(165deg,#1b2d55 0%,#14213d 60%,#0f1a31 100%)}
.has-bg .auth-brand{background:linear-gradient(165deg,rgba(27,45,85,.86) 0%,rgba(20,33,61,.88) 60%,rgba(15,26,49,.90) 100%)}
.auth-brand::after{content:"";position:absolute;inset:18px;border:1px solid rgba(184,146,90,.38);border-radius:10px;pointer-events:none}
.b-title{font-family:"Songti SC","STSong","Noto Serif SC","Noto Serif CJK SC","SimSun",serif;font-size:28px;line-height:1.35;
  letter-spacing:.12em;font-weight:700;color:#fff}
.b-rule{width:44px;height:2px;background:var(--u-gold);margin:16px 0}
.b-sub{font-size:14px;color:#b9c2d6;letter-spacing:.06em}
.u-auth .auth-shell .auth-card{flex:1;max-width:none;margin:0;border:none;border-radius:0;box-shadow:none;
  background:#fff;padding:34px 36px;display:flex;flex-direction:column;justify-content:center}
.u-auth .auth-card .brand{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:20px;
  color:var(--u-ink);font-weight:700;letter-spacing:.02em}
.u-auth .auth-card .sub{color:var(--u-sub);margin:.3em 0 1em;font-size:.9rem}
.u-auth.has-bg .auth-shell .auth-card{background:rgba(255,255,255,.78)}
.u-auth label{color:var(--u-sub);font-size:13px;margin:.7em 0 .25em}
.u-auth input:not([type=checkbox]){border:1px solid var(--u-line);border-radius:10px;height:42px;background:rgba(255,255,255,.88)}
.u-auth input:not([type=checkbox]):focus{outline:2px solid rgba(36,64,122,.35);outline-offset:0;border-color:var(--u-pri);background:#fff}
.u-auth button,.u-auth .u-btn2{display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;
  height:42px;padding:0 16px;border-radius:10px;font-size:15px;font-weight:600;letter-spacing:.08em;cursor:pointer;
  text-decoration:none;margin:12px 0 0}
.u-auth button{background:var(--u-pri);color:#fff;border:1px solid var(--u-pri);box-shadow:0 6px 16px rgba(36,64,122,.22)}
.u-auth button:hover{background:var(--u-pri-2)}
.u-auth button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
/* 第二个按钮（注册 / 返回登录 / 放弃）：与主按钮同尺寸，白底描边 */
.u-auth .u-btn2{background:#fff;color:var(--u-pri);border:1px solid #c9d1e1;margin-top:10px}
.u-auth .u-btn2:hover{background:#f5f7fb;border-color:var(--u-pri)}
.u-auth .agree-row{color:var(--u-text);font-size:12.5px;margin:12px 0 0}
.u-auth .agree-row input{width:auto;height:auto;margin:3px 0 0}
.u-auth .tip-seal{color:inherit;font-weight:inherit}
.u-auth .link-inline{color:inherit;font-weight:600}
.u-auth .err{border-radius:10px}
.u-auth .bind-tip{background:#f5f7fb;border-color:#dfe5ef;color:#2b3a5a}
.u-auth .bind-copyright{color:var(--u-text)}
.u-auth .bind-btns{display:flex;gap:10px;margin-top:16px}
.u-auth .bind-btns button,.u-auth .bind-btns .u-btn2{flex:1;margin:0}
.u-auth .field-hint{font-size:12px;color:var(--u-sub);margin-top:4px}
/* 隐私声明弹窗沿用原样式，只调按钮颜色 */
.u-auth .modal-foot button{width:auto;height:40px;margin:0;padding:0 22px}

@media (max-width:760px){
  body.u-auth{padding:16px;align-items:flex-start}
  .auth-shell{flex-direction:column;min-height:0}
  .auth-brand{flex:none;padding:26px 26px 22px}
  .auth-brand::after{inset:10px}
  .b-title{font-size:24px}
  .b-title br{display:none}
  .b-rule{margin:12px 0}
  .u-auth .auth-shell .auth-card{padding:26px 22px 28px}
}

/* ================= 我的导图 ================= */
.u-page .top{background:#fff;border-bottom:1px solid var(--u-line);padding:0 32px;height:60px;box-shadow:none}
.u-page .brand-sm{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--u-ink);
  font-weight:700;letter-spacing:.04em;display:flex;align-items:center;gap:10px}
.u-page .brand-sm::before{content:"";width:4px;height:18px;background:var(--u-gold);border-radius:2px}
.u-page .who{color:var(--u-sub);display:flex;align-items:center;gap:36px;font-size:14px}   /* v1011：间距 22→36px */
.u-page .nav-buy{color:var(--u-ink);font-weight:600;cursor:pointer;padding:7px 14px;border:1px solid rgba(184,146,90,.6);
  border-radius:999px;background:#fbf8f2;font-size:14px;line-height:1.2;width:auto;margin:0;font-family:inherit;white-space:nowrap}
.u-page .nav-buy:hover{background:#f6efe2}
.u-page .logout{color:var(--u-sub);margin-left:0;font-weight:500}
.u-page .logout:hover{color:var(--u-ink)}
.u-page .wrap{max-width:1040px;padding:40px 32px 80px}
.u-page h1{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:26px;color:var(--u-ink);
  letter-spacing:.04em;margin:0 0 24px}
.u-page .cards{gap:20px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.u-page .card{background:#fff;border:1px solid var(--u-line);border-radius:14px;box-shadow:0 1px 2px rgba(20,33,61,.04);
  padding:24px 24px 20px}
.u-page .card::before{left:24px;right:auto;top:0;bottom:auto;width:28px;height:3px;background:var(--u-gold);border-radius:0 0 2px 2px}
.u-page .card:hover{transform:none;box-shadow:0 12px 30px rgba(20,33,61,.10);border-color:#d3d9e4}
.u-page .card-title{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:18px;color:var(--u-ink);margin:6px 0 8px}
.u-page .card-meta{color:var(--u-sub);font-size:13px}
.u-page .card-go{margin-top:20px}            /* 「开始学习」保持原来的红色 */
.u-page .empty{background:#fff;border:1px dashed #d3d9e4;color:var(--u-sub)}

/* 拼团卡片 */
.gb-card{background:#fff;border:1px solid var(--u-line);border-radius:14px;padding:22px 24px;margin-bottom:16px;
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;position:relative;overflow:hidden}
.gb-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--u-gold)}
.gb-main{flex:1;min-width:220px}
.gb-title{font-size:17px;font-weight:700;color:var(--u-ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gb-badge{font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;background:#fbf3e6;color:#8a6a35;border:1px solid rgba(184,146,90,.45)}
.gb-desc{color:var(--u-text);font-size:14px;line-height:1.7;margin-top:6px;white-space:pre-line}
.gb-meta{color:var(--u-sub);font-size:13px;margin-top:6px}
.gb-state{font-size:14px;font-weight:600;margin-top:8px}
/* v1013：「我的导图」按导图库分组显示，每组一个小标题 */
.u-page .lib-group{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:16px;font-weight:700;color:var(--u-ink);
  margin:26px 0 12px;padding:0;border:none;display:flex;align-items:center;gap:8px;letter-spacing:.02em}
.u-page .lib-group::before{content:"";width:3px;height:15px;background:var(--u-gold);border-radius:2px}
.u-page .lib-head + .lib-group,.u-page .gb-card + .lib-group,.u-page .gb-notice + .lib-group{margin-top:4px}
/* v1011：报名结果提示（如「该团已满」） */
.gb-notice{background:#fbf3e6;border:1px solid rgba(184,146,90,.45);color:#7a5a25;border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:14px;font-weight:600}
.gb-state.ok{color:#1f7a4a}.gb-state.ing{color:var(--u-pri)}.gb-state.fail{color:var(--u-sub)}
.gb-act button,.gb-act .gb-btn{width:140px;margin:0;height:42px;padding:0;text-align:center;border-radius:10px;background:var(--u-pri);color:#fff;
  font-size:15px;font-weight:600;border:none;cursor:pointer;letter-spacing:.04em;white-space:nowrap}
.gb-act button:hover{background:var(--u-pri-2)}
.gb-act button:disabled,.gb-act button:disabled:hover{background:var(--u-pri);cursor:default}

/* 售后二维码弹窗 */
.qr-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);display:none;align-items:center;justify-content:center;z-index:100;padding:16px}
.qr-mask.on{display:flex}
.qr-box{background:#fff;border-radius:16px;padding:26px 28px 24px;text-align:center;width:100%;max-width:300px;box-shadow:0 12px 40px rgba(0,0,0,.2)}
.qr-box b{font-size:16px;color:var(--u-ink)}
.qr-box img{display:block;width:200px;height:200px;object-fit:contain;margin:14px auto 10px;border:1px solid var(--u-line);border-radius:8px;padding:6px;background:#fff}
.qr-box .qr-tip{color:var(--u-sub);font-size:14px}
/* 后台未上传二维码时的占位（与二维码同尺寸，弹窗大小不变） */
.qr-box .qr-empty{width:200px;height:200px;margin:14px auto 10px;border:1px dashed #c9d1e1;border-radius:8px;background:#f5f7fb;
  display:flex;align-items:center;justify-content:center;color:var(--u-sub);font-size:14px;box-sizing:border-box}
.qr-box button{margin:16px 0 0;height:42px;border-radius:10px;background:var(--u-ink);color:#fff;width:100%}

@media (max-width:600px){
  .u-page .top{padding:0 14px}
  .u-page .who{gap:20px;font-size:13px}   /* v1011：间距 12→20px */
  .u-page .who .who-name{display:none}
  .u-page .nav-buy{padding:6px 10px;font-size:13px}
  .u-page .wrap{padding:24px 16px 60px}
}

/* ================= 阅读页：只改顶部工具栏 ================= */
.u-reader .mm-top{background:#fff;border-bottom:1px solid var(--u-line)}
.u-reader .mm-top .doc-title{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--u-ink)}
.u-reader .copyright-tag{color:var(--u-text);font-weight:500}           /* 版权字样：黑色 */
.u-reader .mm-top .back{color:var(--u-sub)}
/* 主题按钮、搜索框、工具按钮统一 38px 高 */
.u-reader .mm-top .tools input{height:38px;border-radius:8px;border-color:var(--u-line);background:#fafbfc}
.u-reader .th-opt,.u-reader .mm-top .tools button:not(.th-opt){height:38px;min-height:38px;border-radius:8px;background:#fff;color:var(--u-text);
  border:1px solid var(--u-line);box-shadow:none}
.u-reader .mm-top .tools button:not(.th-opt){min-width:46px;padding:0 14px;font-size:15px;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;line-height:1}
.u-reader .mm-top .tools button.t-sym{font-size:19px;font-weight:700}   /* ＋ － */
.u-reader .mm-top .tools button.t-key{font-size:19px}                   /* ⌨ */
.u-reader .th-opt:hover,.u-reader .mm-top .tools button:not(.th-opt):hover{background:#f5f7fb;color:var(--u-ink);border-color:#c9d1e1}
.u-reader .th-opt.on{background:var(--u-ink);color:#fff;border-color:var(--u-ink)}
@media (max-width:820px){
  .u-reader .th-opt{height:40px}
}
/* v1011：快捷键面板里的按键图标放大（原 .82em 约 12px → 16px） */
.u-reader #keys kbd{font-size:16px;padding:4px 10px;min-width:26px;text-align:center}
.u-reader #keys .keytbl td:first-child{width:170px}

/* ---------- 本地批注 ---------- */
/* 节点右上角的小标记：绝对定位、不参与排版，节点尺寸不变 */
.mm-anno{position:absolute;right:-5px;top:-5px;width:12px;height:12px;border-radius:50%;
  background:var(--u-gold);border:1.5px solid #fff;box-shadow:0 1px 2px rgba(0,0,0,.25);pointer-events:none;z-index:1}
.anno-pop{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:60;display:none;align-items:center;justify-content:center;padding:16px}
.anno-pop.on{display:flex}
.anno-card{background:#fff;border-radius:14px;padding:20px 22px;width:100%;max-width:440px;box-shadow:0 12px 40px rgba(0,0,0,.2)}
.anno-card h3{margin:0 0 4px;font-size:16px;color:var(--u-ink)}
.anno-node{color:var(--u-sub);font-size:13px;margin-bottom:10px;max-height:3.2em;overflow:hidden;line-height:1.6}
.anno-card textarea{width:100%;box-sizing:border-box;min-height:120px;border:1px solid var(--u-line);border-radius:10px;padding:10px 12px;
  font-size:15px;line-height:1.6;font-family:inherit;resize:vertical;-webkit-user-select:text;user-select:text;color:var(--u-text)}
.anno-card textarea:focus{outline:2px solid rgba(36,64,122,.3);border-color:var(--u-pri)}
.anno-tip{font-size:12px;color:var(--u-sub);margin-top:8px;line-height:1.6}
.anno-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.anno-acts button{width:auto;margin:0;height:38px;padding:0 18px;border-radius:8px;font-size:14px;font-weight:600}
.anno-acts .a-save{background:var(--u-pri);color:#fff;border:1px solid var(--u-pri)}
.anno-acts .a-del{background:#fff;color:#b4372f;border:1px solid #ecc6c2;margin-right:auto}
.anno-acts .a-cancel{background:#fff;color:var(--u-text);border:1px solid var(--u-line)}
.anno-empty{color:var(--u-sub);font-size:14px;padding:6px 0 2px}

/* ================= v1011：登录 / 注册 / 设备确认恢复 v1006 样式（.v6-auth） =================
   卡片、背景、输入框沿用 style.css 里 v1006 的原样式；只保留 v1007 已确认的改动：
   「进入」改「登录」、增加「注册」按钮（与登录按钮同尺寸、不同颜色）、红字改黑字、删除「账号由老师提供」 */
.v6-auth .tip-seal,.v6-auth .link-inline,.v6-auth .bind-copyright{color:var(--ink)}
.v6-auth form>button,.v6-auth .v6-btn2{display:flex;align-items:center;justify-content:center;box-sizing:border-box;
  width:100%;height:46px;padding:0 16px;line-height:1}
.v6-auth .v6-btn2{margin-top:10px;background:#efe9dc;color:var(--ink);border:1px solid var(--line);border-radius:9px;
  font-size:15px;font-weight:600;text-decoration:none}
.v6-auth .v6-btn2:hover{background:#e6dfd0}
