:root{--brand:#2f6bff;--ink:#111827;--sub:#6b7280;--line:#e5e7eb;--bg:#f6f7fb;--card:#fff;--radius:14px;
/* 全站层级规范（前台）：改浮层 z-index 前先看这里，别再各写各的
   0~9   页面内小装饰（收藏 ★ 等）
   20    站内公告条 .ntbar
   30    页眉 .hd（sticky）—— 必须高于公告条，否则页眉里的下拉会被公告盖住
   40    页眉内下拉菜单（.sh-drop 等）
   700   页面左右两侧固定快捷栏 .sbm（top:120px）
   710   页眉折叠抽屉的展开态 .hd.hd-open —— 必须高于 .sbm，否则被侧栏压在抽屉上面
   900   区块内浮层：天气组件 15 天弹层 / 搜索建议
   940   公告详情弹窗 .nt-mask
   950   可视化编辑弹窗 .blk-modal
   990   右下角一次性提示气泡 .sh-tip
   1000  设为主页弹窗 .sh-modal
   9999  数据大屏水印（独立页）
   注意：fixed 元素只要还留在 .hd（sticky + z-index）等层叠上下文里，z-index 再大也出不去这一层，
        所以弹窗类一律挂到 body 末尾（app.js 里做了 relocate）。 */
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font:15px/1.6 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 18px}
.dim{color:var(--sub);font-weight:400}

/* 头部 */
.hd{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.hd-in{display:flex;align-items:center;justify-content:space-between;height:62px;gap:16px}
.logo{display:flex;align-items:baseline;gap:10px;font-size:19px;font-weight:700;color:var(--brand)}
.logo img{height:30px;width:auto;max-width:220px;object-fit:contain}
.logo-img{display:block;height:30px;width:auto;max-width:220px;object-fit:contain}
.slogan{font-size:12px;color:var(--sub);font-weight:400}
.hd-nav{display:flex;align-items:center;gap:16px;font-size:14px;color:var(--sub)}
.hd-nav a:hover{color:var(--brand)}
.btn-edit{padding:5px 12px;border:1px solid var(--brand);border-radius:20px;color:var(--brand);font-size:13px}
.btn-edit:hover{background:rgba(47,107,255,.08)}
.btn-edit.on{background:var(--brand);color:#fff}
.btn-edit.on:hover{filter:brightness(1.08)}

.main{padding:26px 18px 40px;min-height:50vh}

/* 搜索 */
.search-wrap{margin:34px auto 30px;max-width:660px}
.search-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 6px 24px rgba(17,24,39,.05)}
.engines{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.eng{font-size:13px;color:var(--sub);cursor:pointer;padding:4px 12px;border-radius:16px;border:1px solid transparent}
.eng input{display:none}
.eng.on span{color:var(--brand);font-weight:600}
.eng.on{background:#eef3ff;border-color:#dbe6ff}
.srow{display:flex;gap:8px}
.srow input{flex:1;height:44px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font-size:15px;outline:none}
.srow input:focus{border-color:var(--brand)}
.srow button{height:44px;padding:0 26px;border:0;border-radius:10px;background:var(--brand);color:#fff;font-size:15px;cursor:pointer}
.hot{margin-top:12px;display:flex;gap:10px;flex-wrap:wrap;font-size:13px}
.hot a{color:var(--sub)}
.hot a:hover{color:var(--brand)}
.sfoot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.sitetip{margin-top:12px;font-size:12.5px;color:var(--sub)}
.sitetip a{color:var(--brand);text-decoration:underline}
.sitetip .dim{color:#9aa3b2}
.eng-site span::before{content:"⌂ ";opacity:.6}

/* 区块 */
.blk{margin-bottom:26px}
.blk-title{margin:0 0 12px;font-size:16px}
.quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
.qitem{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 8px;text-align:center;transition:.18s}
.qitem:hover{transform:translateY(-3px);box-shadow:0 8px 22px rgba(17,24,39,.08);border-color:transparent}
.qico{display:block;width:40px;height:40px;line-height:40px;border-radius:12px;color:#fff;font-weight:700;margin:0 auto 8px;font-size:17px}
.qname{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.catnav{display:flex;flex-wrap:wrap;gap:10px}
.catnav a{background:#fff;border:1px solid var(--line);border-radius:22px;padding:7px 16px;font-size:14px;transition:.18s}
.catnav a:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.catnav em{font-style:normal;color:var(--sub);font-size:12px;margin-left:5px}
.catnav a:hover em{color:#dbe6ff}

.sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.site{display:flex;gap:11px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;transition:.18s}
.site:hover{border-color:transparent;box-shadow:0 8px 22px rgba(17,24,39,.08);transform:translateY(-2px)}
.sico{width:38px;height:38px;line-height:38px;text-align:center;border-radius:10px;color:#fff;font-weight:700;flex:0 0 38px}
.stxt{min-width:0}
.stxt b{display:block;font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stxt i{font-style:normal;font-size:12px;color:var(--sub);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blk-html{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}

/* 编辑模式 */
.editbar{display:flex;align-items:center;gap:12px;background:#fffbe9;border:1px solid #fde68a;border-radius:10px;padding:10px 14px;margin-bottom:20px;font-size:13px;flex-wrap:wrap}
.editbar b{color:#b45309}
.editbar span{color:#92400e}
.editbar button{padding:6px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer}
.editbar .primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.editbar .btn-exit{margin-left:auto;padding:6px 14px;border-radius:8px;border:1px solid #fca5a5;background:#fff1f2;color:#dc2626;cursor:pointer;text-decoration:none;font-weight:600}
.editbar .btn-exit:hover{background:#fee2e2}
.blk-editable{position:relative;border:1px dashed #c7d2fe;border-radius:12px;padding:12px}
.blk-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px}
.blk-bar .drag{cursor:grab;background:#eef2ff;color:#4338ca;padding:3px 10px;border-radius:6px}
.blk-bar .bt{color:var(--sub)}
.blk-bar button{padding:3px 10px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font-size:12px}
.blk-modal{position:fixed;inset:0;background:rgba(17,24,39,.45);display:flex;align-items:center;justify-content:center;z-index:950}
.blk-modal[hidden]{display:none}
.bm-box{background:#fff;border-radius:14px;padding:24px;width:420px;max-width:92vw}
.bm-box h4{margin:0 0 14px}
.bm-box label{display:block;margin:10px 0 5px;font-size:13px}
.bm-box input,.bm-box textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-family:inherit}
.bm-btns{margin-top:18px;display:flex;gap:10px;justify-content:flex-end}
.bm-btns button{padding:8px 18px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13.5px;transition:.15s}
.bm-btns button:hover{border-color:var(--brand);color:var(--brand)}
.bm-btns .primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.bm-btns .primary:hover{color:#fff;filter:brightness(1.08)}

/* 页脚 */
.ft{background:#fff;border-top:1px solid var(--line);padding:24px 0;margin-top:20px;color:var(--sub);font-size:13px;text-align:center}
.ft-line{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}

/* 表单 / 提示 */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;max-width:520px;margin:0 auto}
.form label{display:block;margin:12px 0 6px;font-size:14px}
.form input,.form textarea,.form select{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit}
.form button{margin-top:18px;width:100%;padding:11px;background:var(--brand);color:#fff;border:0;border-radius:10px;font-size:15px;cursor:pointer}
.alert{padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:14px}
.alert.success,.alert.ok{background:#ecfdf5;color:#065f46}
.alert.error{background:#fef2f2;color:#991b1b}
.empty{text-align:center;color:var(--sub);padding:26px}
.pager{display:flex;gap:6px;justify-content:center;margin:22px 0;flex-wrap:wrap}
.pg{padding:6px 12px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:14px}
.pg.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.pg.dots{border:0;background:none}

@media (max-width:640px){
  .logo{font-size:17px}
  .search-wrap{margin:20px auto}
  .sites{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .quick{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}
  .qico{width:34px;height:34px;line-height:34px;font-size:15px}
}

/* ===== 页眉：折叠菜单（≤1140px 收进汉堡抽屉）2026-10-06 =====
   背景：桌面上页眉一行平铺 10 项（首页/提交网址/设为主页 + 插件注入项 + 邮箱 + 登录），
   窄屏下 .hd-in 容不下，flex 又不换行 ⇒ 中文被逐字挤成竖排、并溢出到公告条上。
   断点取 1140px 的实测依据（2026-10-06 逐档截图）：1080px 仍断行（站点名折成两行、
   导航折成两行、「注册」被裁出屏幕），1140/1200/1260px 均正常 ⇒ 取 1140px 为界。
   做法：页眉保持「Logo + 汉堡」两栏；原 .hd-nav 在移动端变为整幅抽屉，
        内部各子组件（设为主页 / 聚合邮箱 / 账户 / 登录注册）改为整行静态块。
   注意：.hd 是 position:sticky（即定位元素），所以抽屉的 absolute 基准就是页眉本身。 */
.hd-menu{display:none;flex:0 0 auto;width:38px;height:38px;margin-left:auto;padding:0;
  align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);
  border-radius:10px;cursor:pointer;color:var(--sub);-webkit-tap-highlight-color:transparent}
.hd-menu:hover{color:var(--brand);border-color:#c9daff;background:#f3f6ff}
.hd-menu>i{position:relative;display:block;width:16px;height:2px;background:currentColor;
  border-radius:2px;transition:background .2s}
.hd-menu>i::before,.hd-menu>i::after{content:"";position:absolute;left:0;width:16px;height:2px;
  background:currentColor;border-radius:2px;transition:transform .22s,top .22s}
.hd-menu>i::before{top:-5px}
.hd-menu>i::after{top:5px}
.hd-menu.on>i{background:transparent}
.hd-menu.on>i::before{top:0;transform:rotate(45deg)}
.hd-menu.on>i::after{top:0;transform:rotate(-45deg)}
/* 抽屉展开时抬升整个页眉的层级：页面左右两侧的固定快捷栏 .sbm 是 z-index:700，
   不抬升就会被它压在抽屉上面（2026-10-06 实测发现）。类名由 layout.php 的 JS 切换。 */
.hd.hd-open{z-index:710}

@media (max-width:1140px){
  .hd-in{height:auto;min-height:56px;gap:10px;flex-wrap:nowrap}
  .logo{flex:0 1 auto;min-width:0;white-space:nowrap;font-size:17px}
  .logo-txt{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .logo img,.logo-img{height:26px}
  .slogan{display:none}
  .hd-menu{display:inline-flex}
  /* 抽屉本体 */
  .hd-nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;
    align-items:stretch;gap:0;background:#fff;border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);box-shadow:0 16px 34px rgba(15,23,42,.15);
    padding:2px 0 10px;font-size:15px;color:var(--ink);
    max-height:calc(100vh - 62px);overflow:auto;-webkit-overflow-scrolling:touch}
  .hd-nav.is-open{display:flex}
  .hd-nav>a{padding:13px 18px;border-bottom:1px solid #f4f6fa;white-space:nowrap;color:var(--ink)}
  .hd-nav>a:hover{color:var(--brand);background:#f8faff}
  /* 设为主页：整行按钮（其下拉由 app.js 固定定位挂到 body，不受抽屉影响） */
  .hd-nav .sh-nav{display:block;border-bottom:1px solid #f4f6fa}
  .hd-nav .sh-btn{display:block;width:100%;padding:13px 18px;border:0;border-radius:0;
    background:none;text-align:left;font-size:15px;color:var(--ink);white-space:nowrap}
  .hd-nav .sh-btn:hover{background:#f8faff;color:var(--brand)}
  /* 聚合邮箱：整行 + 内联展开 */
  .hd-nav .nd-mm{display:block;border-bottom:1px solid #f4f6fa}
  .hd-nav .nd-mm-btn{display:flex;width:100%;padding:13px 18px;gap:7px;align-items:center;
    text-align:left;font-size:15px;color:var(--ink)}
  .hd-nav .nd-mm-btn:hover{color:var(--brand)}
  .hd-nav .nd-mm-pop{position:static;width:auto;min-width:0;margin:0;padding:2px 10px 10px;
    border:0;border-radius:0;box-shadow:none;background:#fafbfd}
  .hd-nav .nd-mm-pop[hidden]{display:none}
  /* 登录 / 注册：并排两枚占满整行 */
  .hd-nav .nd-auth{display:flex;gap:10px;padding:13px 18px 4px}
  .hd-nav .nd-auth a{flex:1;padding:10px 0;text-align:center;font-size:14.5px}
  /* 账户菜单：整行 + 内联展开 */
  .hd-nav .nd-acct{display:block;border-top:1px solid #f4f6fa;margin-top:6px}
  .hd-nav .nd-acct-btn{display:flex;width:100%;padding:13px 18px;gap:7px;align-items:center;
    text-align:left;font-size:14.5px}
  .hd-nav .nd-acct-pop{position:static;min-width:0;margin:0;padding:2px 10px 10px;
    border:0;border-radius:0;box-shadow:none;background:#fafbfd}
  .hd-nav .nd-acct-pop[hidden]{display:none}
}

/* 收藏按钮 ★ */
.site,.qitem{position:relative}
.fav-btn{position:absolute;top:6px;right:6px;cursor:pointer;color:#d1d5db;font-size:15px;line-height:1;user-select:none;z-index:2}
.fav-btn:hover{color:#f59e0b}
.fav-btn.on{color:#f59e0b}
.fav-x{margin-left:auto;border:0;background:#f3f4f6;color:#6b7280;width:26px;height:26px;border-radius:50%;cursor:pointer;flex:0 0 auto;font-size:15px}
.fav-x:hover{background:#fee2e2;color:#ef4444}

/* 登录用户菜单 */
.u-menu{color:var(--brand);font-weight:600}

/* 用户中心 / 收藏夹 卡片 */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:20px}
.card h3{margin:0 0 14px;font-size:16px}
.blk-me{background:linear-gradient(135deg,#eef3ff,#f6f7fb);border:1px solid #dbe6ff;border-radius:var(--radius);padding:14px 16px;margin-bottom:22px}

.me-head{display:flex;align-items:center;gap:16px}
.me-head .avatar{width:56px;height:56px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;overflow:hidden;flex:0 0 56px}
.me-head .avatar img{width:100%;height:100%;object-fit:cover}
.me-head h2{margin:0;font-size:18px}
.me-head .btn{margin-left:auto}
.me-head .btn.ghost{margin-left:8px}

.btn{display:inline-block;padding:8px 16px;border-radius:10px;background:var(--brand);color:#fff;font-size:14px;cursor:pointer}
.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}

.bind-list{list-style:none;padding:0;margin:0}
.bind-list li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.bind-list li:last-child{border-bottom:0}
.b-name{width:56px;font-weight:600}
.b-val{flex:1;color:var(--sub)}
.link{color:var(--brand);cursor:pointer;background:none;border:0;font:inherit;padding:0}
.inline{display:inline-flex;align-items:center;gap:6px}
.inline input[name=phone]{border:1px solid var(--line);border-radius:8px;padding:5px 8px;width:140px}

/* 认证页 */
.auth-page{max-width:420px;margin:30px auto}
.auth-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px}
.auth-card h2{margin:0 0 6px}
.auth-card label{display:block;margin:14px 0 6px;font-size:14px}
.auth-card input{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;outline:none}
.auth-card input:focus{border-color:var(--brand)}
.auth-card .primary{margin-top:16px;width:100%;padding:11px;background:var(--brand);color:#fff;border:0;border-radius:10px;font-size:15px;cursor:pointer}
.auth-alt{margin-top:14px;text-align:center;font-size:13px;color:var(--sub)}
.oauth-row{margin-top:16px;display:flex;gap:10px}
.oauth-btn{flex:1;text-align:center;padding:9px;border-radius:10px;color:#fff;font-size:14px}
.oauth-btn.qq{background:#12b7f5}
.oauth-btn.wx{background:#07c160}

/* 自定义导航编辑 */
.nav-cur{list-style:none;padding:0;margin:10px 0;display:flex;flex-direction:column;gap:8px}
.nav-cur li{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 12px}
.nav-cur li span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-cur button{padding:3px 9px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer}
.nav-picker{margin-top:6px;border:1px solid var(--line);border-radius:10px;padding:8px;width:100%}
.nav-save{margin-top:10px}
.nav-saved-tip{margin-left:8px}

/* ---------- 收藏夹：站内 / 站外分区 ---------- */
.fav-tabs{display:flex;gap:6px;margin:0 0 14px}
.fav-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:9px;
  background:#fff;color:#4b5b74;font-size:14px;cursor:pointer;border:1px solid #e5e9f0;transition:.15s}
.fav-tab:hover{background:#f7f9fc;color:#2b3a55}
.fav-tab.on{background:#e8f0fe;color:#2f6bff;font-weight:600;border-color:#c7d9ff}
.fav-tab em{font-style:normal;font-size:12px;opacity:.7}

/* ---------- 站外收藏 ---------- */
.fe-box{display:block}
.fe-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.fe-form input[type=text]{flex:1 1 150px;min-width:120px;padding:8px 11px;border:1px solid #e0e5ee;border-radius:8px;font-size:13.5px;outline:none}
.fe-form input[type=text]:focus{border-color:#93b4ff;box-shadow:0 0 0 3px rgba(47,107,255,.1)}
.fe-form select{padding:8px 10px;border:1px solid #e0e5ee;border-radius:8px;font-size:13.5px;background:#fff;outline:none}
.fe-form .btn{padding:8px 18px}
.fe-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.fe-cat{padding:4px 12px;border-radius:14px;background:#f4f6fa;color:#5b6b85;font-size:12.5px;cursor:pointer}
.fe-cat:hover{background:#eaf0fb;color:#2b3a55}
.fe-cat.on{background:#e8f0fe;color:#2f6bff;font-weight:600}
.fe-list{list-style:none;margin:0;padding:0}
.fe-list li{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid #f1f4f9}
.fe-list li:last-child{border-bottom:0}
.fe-ico{flex:none;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:14px}
.fe-main{flex:1;min-width:0;display:flex;flex-direction:column;color:#1f2937}
.fe-main b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fe-main i{font-style:normal;font-size:12px;color:#8a94a6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fe-tag{flex:none;padding:3px 10px;border-radius:12px;background:#f1f5ff;color:#4b74d6;font-size:12px}
.fe-tag.dim{background:#f4f6fa;color:#98a2b3}
.fe-ops{flex:none;display:flex;align-items:center;gap:6px}
.fe-ops button{padding:5px 10px;border:1px solid #e0e5ee;background:#fff;border-radius:7px;color:#5b6b85;font-size:12.5px;cursor:pointer}
.fe-ops button:hover{border-color:#b9cdf5;color:#2f6bff;background:#f8faff}
.fe-ops .fe-rec{color:#2f6bff;border-color:#c7d9ff;background:#f3f7ff}
.fe-ops .fe-del:hover{color:#dc2626;border-color:#fecaca;background:#fef2f2}
.fe-done{font-size:12.5px;color:#16a34a}
.fe-tip{margin-bottom:10px;padding:7px 12px;border-radius:8px;font-size:13px}
.fe-tip.ok{background:#ecfdf5;color:#047857}
.fe-tip.err{background:#fef2f2;color:#b91c1c}
@media (max-width:640px){
  .fe-list li{flex-wrap:wrap}
  .fe-main{flex:1 1 100%}
  .fe-tag,.fe-ops{flex:none}
}

/* ---------- 用户中心：左侧导航 + 右侧面板 ---------- */
.me-layout{display:flex;align-items:flex-start;gap:16px;margin-top:16px}
.me-nav{position:sticky;top:14px;flex:none;width:170px;display:flex;flex-direction:column;gap:4px;
  background:#fff;border:1px solid #eef1f6;border-radius:14px;padding:8px}
.me-nav-it{display:block;width:100%;text-align:left;padding:10px 14px;border:0;background:transparent;
  border-radius:9px;color:#4b5b74;font:inherit;font-size:14px;cursor:pointer;transition:.14s}
.me-nav-it:hover{background:#f5f8fc;color:#2b3a55}
.me-nav-it.on{background:#e8f0fe;color:#2f6bff;font-weight:600}
.me-nav-it.me-nav-link{text-decoration:none;margin-top:10px;border-top:1px dashed #e3e8f0;border-radius:0 0 9px 9px;color:#64748b}
.me-nav-it.me-nav-link:hover{color:var(--brand)}
.me-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}
.me-panel{background:#fff;border:1px solid #eef1f6;border-radius:14px;padding:18px}
.me-panel[hidden]{display:none}
@media (max-width:720px){
  .me-layout{flex-direction:column}
  .me-nav{position:static;width:auto;flex-direction:row;flex-wrap:wrap;overflow-x:auto}
  .me-nav-it{flex:1 1 auto;white-space:nowrap}
}

/* ---------- 收藏「前台显示」切换 ---------- */
.fe-pub{border:1px solid #e3e8f0;background:#f8fafc;color:#8a97ad;border-radius:8px;padding:3px 9px;font-size:12px;cursor:pointer}
.fe-pub:hover{color:#2f6bff;border-color:#bcd2ff}
li[data-pub="1"]>.fe-ops .fe-pub, .fe-pub.on{background:#e8f0fe;border-color:#bcd2ff;color:#2f6bff}

/* ---------- 站外网址：灰显降饱和，提示保密级更高（登录可见，退出即不可见） ---------- */
.me-panel[data-panel="fav"] li[data-src="ext"] .fe-main b{color:#8a97ad;font-weight:600}
.me-panel[data-panel="fav"] li[data-src="ext"] .fe-ico{filter:grayscale(.45);opacity:.86}
.me-panel[data-panel="fav"] li[data-src="ext"] .fe-main i{color:#aab2c0}
.me-fav-tools{display:flex;align-items:center;gap:8px;margin:10px 0 8px}
.me-fav-search{flex:1;min-width:180px;max-width:420px;padding:8px 12px;border:1px solid #e3e8f0;border-radius:9px;font:inherit;font-size:13.5px;color:#2b3a55;background:#fff}
.me-fav-search:focus{outline:none;border-color:#bcd2ff;box-shadow:0 0 0 3px rgba(47,107,255,.12)}
.fe-lab{flex:none;font-size:12px;color:#98a2b3;padding-right:2px}
#meFavPurpose .fe-cat small{margin-left:4px;font-size:10.5px;background:#f1f4f9;color:#8a97ad;border-radius:8px;padding:0 5px}
.fe-purpose{width:92px;padding:3px 8px;border:1px solid #e3e8f0;border-radius:8px;font:inherit;font-size:12px;color:#5b6b85;background:#fbfcfe}
.fe-purpose:focus{outline:none;border-color:#bcd2ff;background:#fff}

/* ---------- 收藏列表：加宽 + 来源/分类 + 用途 两列对齐 ---------- */
.wrap.me-page{max-width:1340px}
.me-panel[data-panel="fav"] .fe-list li{display:grid;align-items:center;gap:12px;padding:10px 4px;
  grid-template-columns:32px minmax(0,1fr) 190px 116px auto}
.me-panel[data-panel="fav"] .fe-meta{display:flex;align-items:center;gap:8px;min-width:0}
.me-panel[data-panel="fav"] .fe-catnm{flex:1;min-width:0;font-size:12.5px;color:#6b7a94;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fe-tag-ext{background:#f4f6fa;color:#8a97ad}
.me-panel[data-panel="fav"] .fe-purpose{width:100%}
.me-panel[data-panel="fav"] .fe-ops{justify-content:flex-end}
@media (max-width:900px){
  .me-panel[data-panel="fav"] .fe-list li{grid-template-columns:32px minmax(0,1fr) auto;grid-auto-flow:row}
  .me-panel[data-panel="fav"] .fe-meta{grid-column:2}
  .me-panel[data-panel="fav"] .fe-purpose{grid-column:2;max-width:200px}
  .me-panel[data-panel="fav"] .fe-ops{grid-column:2}
}
.me-panel[data-panel="fav"] .fe-cols{display:grid;gap:12px;align-items:center;margin:8px 0 2px;padding:0 4px 6px;
  grid-template-columns:32px minmax(0,1fr) 190px 116px auto;border-bottom:1px solid #eef1f6;
  font-size:12px;color:#98a2b3}

/* ---------- 我的分类：新建/管理/下拉 ---------- */
.me-fav-scope{flex:none;padding:8px 10px;border:1px solid #e3e8f0;border-radius:9px;font:inherit;font-size:13px;color:#5b6b85;background:#fff}
.cat-add{display:inline-flex;align-items:center;gap:6px;margin-left:4px}
.cat-add input{padding:4px 8px;border:1px solid #e3e8f0;border-radius:8px;font:inherit;font-size:12.5px;width:96px}
.btn.small{padding:4px 10px;font-size:12.5px}
.cat-mgr{padding:8px 4px 4px;border-top:1px dashed #e9edf4;margin-top:2px}
.cat-chip{display:inline-flex;align-items:center;gap:4px;margin-right:8px}
.cat-chip input{padding:3px 8px;border:1px solid #e3e8f0;border-radius:8px;font:inherit;font-size:12.5px;width:90px;color:#5b6b85}
.cat-del{border:1px solid #fecaca;background:#fff5f5;color:#dc2626;border-radius:7px;width:22px;height:24px;cursor:pointer;line-height:1}
select.fe-purpose{width:100%;padding:4px 6px;border:1px solid #e3e8f0;border-radius:8px;font:inherit;font-size:12.5px;color:#5b6b85;background:#fbfcfe}
select.fe-purpose:focus{outline:none;border-color:#bcd2ff;background:#fff}

/* ---------- 我的分类：可折叠（分类多时收起成一行，右侧展开/收起） ---------- */
.fe-cat-head{align-items:center;margin-bottom:6px}
.fe-cat-head .cat-add{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.fe-cat-head .cat-toggle{margin-left:auto;flex:none}
.cat-chips{gap:6px}
.cat-chips.cat-folded{position:relative;max-height:32px;overflow:hidden;padding-right:24px}
.cat-chips.cat-folded::after{content:'';position:absolute;top:0;right:0;width:70px;height:100%;
  background:linear-gradient(to right,rgba(255,255,255,0),#fff 82%);pointer-events:none}

/* 可视化编辑：版式提示条 + 隐藏区块置灰 */
.edit-hint{background:#fff7ed;border:1px solid #fdba74;color:#9a3412;border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:18px}
.blk-editable.blk-off{opacity:.45;background:repeating-linear-gradient(45deg,#fafafa,#fafafa 8px,#f3f4f6 8px,#f3f4f6 16px)}
.blk-editable.blk-off .blk-bar .bt::after{content:'（已隐藏）';color:#dc2626;font-weight:600}
.cat-del-armed{background:#fee2e2!important;color:#dc2626!important;border-color:#fca5a5!important;font-weight:600}

/* 设为主页引导菜单 */
.sh-nav{position:relative;display:inline-flex;align-items:center}
.sh-btn{border:1px solid var(--line);background:#fff;color:var(--sub);font:inherit;font-size:14px;padding:5px 12px;border-radius:20px;cursor:pointer;line-height:1.5;white-space:nowrap}
.sh-btn:hover{color:var(--brand);border-color:var(--brand);background:#eef3ff}
.sh-btn i{font-style:normal;font-size:11px;margin-left:2px;opacity:.7}
/* 位置由 JS 按按钮定位；挂 body 末尾 + z-index 1000，保证浮在所有内容之上 */
.sh-drop{position:fixed;top:0;left:0;z-index:1000;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 12px 30px rgba(17,24,39,.12)}
.sh-drop[hidden]{display:none}
.sh-di{display:block;padding:9px 12px;border-radius:8px;font-size:13.5px;color:#374151}
.sh-di:hover{background:#f3f6fd;color:var(--brand)}
.sh-di-doc{border-top:1px solid var(--line);border-radius:0;margin-top:4px;padding-top:11px;color:var(--brand)}

.sh-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:18px}
.sh-modal[hidden]{display:none}
.sh-mask{position:absolute;inset:0;background:rgba(17,24,39,.45)}
.sh-box{position:relative;background:#fff;border-radius:16px;width:560px;max-width:96vw;max-height:88vh;overflow:auto;padding:22px 24px 18px;box-shadow:0 24px 60px rgba(17,24,39,.25)}
.sh-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.sh-head b{font-size:17px}
.sh-x{border:0;background:#f3f4f6;width:30px;height:30px;border-radius:50%;font-size:18px;color:#6b7280;cursor:pointer;line-height:1}
.sh-x:hover{background:#fee2e2;color:#ef4444}
.sh-url{display:flex;align-items:center;gap:8px;background:#f6f8fc;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13px;flex-wrap:wrap}
.sh-url span{color:var(--sub);flex:0 0 auto}
.sh-url code{flex:1;min-width:140px;word-break:break-all;color:#111827;font-size:13px}
.sh-url button{border:1px solid var(--brand);background:#fff;color:var(--brand);border-radius:8px;padding:4px 12px;font-size:12.5px;cursor:pointer;flex:0 0 auto}
.sh-url button:hover{background:var(--brand);color:#fff}
.sh-detect{margin:12px 0 8px;font-size:13px;color:#92400e;background:#fffbe9;border:1px solid #fde68a;border-radius:8px;padding:8px 12px}
.sh-body ol{margin:0;padding-left:20px;font-size:14px;line-height:1.9;color:#334155}
.sh-body .sh-gnote{margin:8px 0 0;font-size:13px;color:var(--sub)}
.sh-others{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px}
.sh-others button{border:1px solid var(--line);background:#fff;color:var(--sub);border-radius:16px;padding:4px 12px;font-size:12.5px;cursor:pointer}
.sh-others button:hover{border-color:var(--brand);color:var(--brand)}
.sh-others button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.sh-note{margin:14px 0 0;font-size:12.5px;color:var(--sub);line-height:1.7}
.sh-foot{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.sh-docbtn{color:var(--brand);font-size:13.5px}
.sh-foot .primary{border:0;background:var(--brand);color:#fff;border-radius:9px;padding:8px 20px;font-size:13.5px;cursor:pointer}

.sh-tip{position:fixed;right:18px;bottom:18px;z-index:990;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 34px rgba(17,24,39,.16);padding:16px 16px 14px;width:290px;max-width:88vw;font-size:13px;color:#374151;display:flex;flex-direction:column;gap:8px}
.sh-tip[hidden]{display:none}
.sh-tip b{font-size:14.5px;color:#111827;padding-right:16px}
.sh-tip-btns{display:flex;gap:8px}
.sh-tip-btns button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 14px;font-size:13px;cursor:pointer}
.sh-tip-btns button:first-child{background:var(--brand);border-color:var(--brand);color:#fff}
.sh-tip-x{position:absolute;right:10px;top:9px;font-style:normal;color:#9aa3b2;cursor:pointer;font-size:16px;line-height:1}
.sh-tip-x:hover{color:#ef4444}

@media (max-width:640px){
  .sh-btn{padding:4px 10px;font-size:13px}
  .sh-drop{max-width:calc(100vw - 24px)}
  .sh-box{padding:18px}
}

/* 用户中心：自定义分类管理收纳进「管理分类」面板 */
.cat-mgr{background:#f8fafc;border-radius:10px;padding:10px 12px;margin:2px 0 10px;border-top:1px dashed #e9edf4}
.cat-mgr .cat-add{margin-left:0}

/* 前台底部登录条（未登录时显示，登录/注册与快捷登录方式并排）
   ⚠️ 该条由 Hook('page.bottom') 追加在 </footer> 之后，是 <body> 的直属节点，
      不受 .wrap 约束 ⇒ 必须自带最大宽度并居中，否则电脑版会满屏铺开（2026-10-06 修复）。 */
.fl-bar{max-width:1144px;margin:26px auto 24px;padding:12px 16px;background:#fff;border:1px solid var(--line,#e6e9ef);border-radius:14px;box-shadow:0 2px 10px rgba(15,23,42,.04)}
@media(max-width:1200px){ .fl-bar{margin-left:16px;margin-right:16px} }
.fl-bar-in{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.fl-t{font-size:13.5px;color:#4b5563}
.fl-btns{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fl-btn{display:inline-block;padding:8px 18px;border-radius:10px;border:1px solid var(--brand,#2f6bff);color:var(--brand,#2f6bff);text-decoration:none;font-size:14px;font-weight:600;background:#fff}
.fl-btn:hover{background:#f2f6ff}
.fl-btn.primary{background:var(--brand,#2f6bff);color:#fff}
.fl-btn.primary:hover{filter:brightness(1.06)}
.fl-oauth{display:inline-flex;gap:8px;flex-wrap:wrap;margin-left:4px}
.fl-oauth .oauth-btn{margin:0}
/* 页脚登录条：其它方式登录横排区（2026-10-06 统一调用 nd_auth_grid 形态 B 后新增） */
.fl-oauth-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:12px;
  border-top:1px dashed #eef1f6}
.fl-oauth-lb{flex:none;font-size:12.5px;color:#94a3b8;line-height:1}
@media(max-width:560px){ .fl-oauth-row{align-items:flex-start;flex-direction:column;gap:8px} }
@media(max-width:560px){
  .fl-bar-in{flex-direction:column;align-items:stretch}
  .fl-btns{width:100%}
  .fl-btn{flex:1;text-align:center}
  .fl-oauth{width:100%;margin-left:0}
}

/* ==========================================================================
   手机版 UI 修正层（2026-10-06 手机版巡检发现，v1.18.1）
   --------------------------------------------------------------------------
   ① 站内公告条：单条 / 轮播模式(long 标题)在 390px 被硬裁且无省略提示
      ⇒ 改为「单行 + 省略号」；滚动模式(mode-roll)不动，它本就该横向流动。
   ② 「设为主页」一次性提示气泡 .sh-tip：原为右下角固定 290px 卡片，
      手机上会压住正文并与右下悬浮按钮重叠 ⇒ 窄屏改为贴底通栏。
   ③ 弹窗在矮屏加 max-height + 内部滚动，避免关闭按钮被顶出可视区。
   ========================================================================== */

/* ① 公告条可收缩 + 省略号 */
.ntbar-track{min-width:0}
.ntbar.mode-bar .ntbar-track{display:block;overflow:hidden}
.ntbar.mode-bar .ntbar-it{display:flex;max-width:100%;padding-right:0}
.ntbar.mode-fade .ntbar-it{max-width:100%}
.ntbar.mode-bar .ntbar-it > span,
.ntbar.mode-fade .ntbar-it > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ② 设为主页气泡：窄屏贴底通栏，不再覆盖正文 */
@media(max-width:560px){
  .sh-tip{left:10px;right:10px;bottom:10px;width:auto;max-width:none;padding:14px 14px 12px;border-radius:12px}
  .sh-tip b{font-size:14px}
  .sh-modal{padding:12px}
  .sh-box{max-height:calc(100vh - 24px);overflow:auto}
}

/* ③ 公告条窄屏紧凑化 */
@media(max-width:560px){
  .ntbar-in{min-height:32px;gap:8px}
  .ntbar-it{font-size:13px;padding-right:14px}
  .ntbar-x{font-size:18px;padding:2px 4px}
  .nt-panel-b{max-height:50vh}
}
