/* =========================================================================
   fresh 手机模板 · 独立样式文件（全屏白底 + 顶部应用栏布局）
   仅在本模板加载（view/template/fresh/page_view.html 引用），不影响其它模板。
   组件样式（弹窗/链接卡/徽章/锁定层等）从 default 模板移植，便于独立维护；
   顶部应用栏、关注/点赞/催更/分享按钮、悬浮菜单改为白底主题。
   ========================================================================= */

/* ===== 全屏白底容器 ===== */
.fresh { background: #fff; min-height: 100vh; }
.fresh .page-container {
  background: #fff;
  border-radius: 0;
  box-shadow: none;
  max-width: 560px;
  width: 100%;
  margin: 0 auto;
  overflow: visible;
  min-height: 100vh;
}
.fresh-wrap { display: flex; flex-direction: column; min-height: 100vh; background: #fff; }

/* ===== 顶部应用栏（app-bar）：左 Logo+文字，右 菜单 ===== */
.fresh-appbar {
  position: sticky;
  top: 0;
  z-index: 120;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 14px;
  background: #fff;
  border-bottom: 1px solid var(--border-light, rgba(0,0,0,0.06));
  box-shadow: 0 1px 6px rgba(0,0,0,0.03);
}
.fresh-appbar .ab-left { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1; }
.fresh-appbar .ab-logo {
  width: 38px; height: 38px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
  background: var(--primary-bg, #EEF0FF); display: flex; align-items: center; justify-content: center; font-size: 1.2rem;
}
.fresh-appbar .ab-logo img { width: 100%; height: 100%; object-fit: cover; }
.fresh-appbar .ab-name {
  font-size: 1rem; font-weight: 800; color: var(--text, #1f2937);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fresh-bio { text-align: center; font-size: 0.8rem; color: var(--text-muted, #6b7280); padding: 10px 22px 0; line-height: 1.6; }

/* ===== 悬浮菜单（pv-fab 复用为 app-bar 右侧菜单） ===== */
.fresh .pv-fab { position: relative; display: inline-flex; top: auto; right: auto; z-index: 130; }
.fresh .pv-fab.dragging .pv-fab-btn { transform: none; opacity: 1; }
.fresh .pv-fab-btn {
  display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px;
  border-radius: 999px; background: var(--primary-bg, #EEF0FF);
  border: 1.5px solid var(--primary, #6C5CE7); color: var(--primary, #6C5CE7);
  font-size: 0.82rem; font-weight: 700; text-decoration: none; cursor: pointer;
  box-shadow: 0 1px 4px rgba(108,92,231,0.12); transition: all 0.2s; min-height: 38px;
  user-select: none; -webkit-user-select: none; touch-action: manipulation;
}
.fresh .pv-fab-btn:hover { background: var(--primary, #6C5CE7); color: #fff; }
.fresh .pv-fab-panel {
  position: absolute; top: calc(100% + 10px); right: 0; width: 240px;
  background: var(--surface, #ffffff); border: 1px solid var(--border-light, rgba(0,0,0,0.08));
  border-radius: 14px; box-shadow: 0 8px 30px rgba(0,0,0,0.16); overflow: hidden;
  color: var(--text, #1f2937); text-align: left;
}
.fresh .pv-fab-panel.open { display: block; animation: pvPanelIn 0.18s ease-out; }

/* ===== 关注/点赞/催更/分享 操作按钮（白底主题） ===== */
.fresh .page-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 14px; padding: 0 10px; }
.fresh .page-actions .follow-btn,
.fresh .page-actions .like-btn,
.fresh .page-actions .nudge-btn,
.fresh .page-actions .share-btn {
  margin: 0; min-width: 0; flex: 1 1 auto; height: 38px; padding: 0 8px; box-sizing: border-box;
  justify-content: center; gap: 4px; white-space: nowrap;
  background: #fff; border: 1.5px solid var(--border, #e5e7eb); color: var(--text, #1f2937);
  font-size: 0.8rem; font-weight: 600; cursor: pointer;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04); transition: all 0.2s; border-radius: 999px;
}
.fresh .page-actions .like-count { font-size: 0.7rem; opacity: 0.85; }
.fresh .page-actions .follow-btn:hover { background: var(--primary-bg, #EEF0FF); border-color: var(--primary, #6C5CE7); }
.fresh .page-actions .follow-btn.followed { background: var(--primary, #6C5CE7); border-color: var(--primary, #6C5CE7); color: #fff; }
.fresh .page-actions .like-btn:hover { background: #ffe9ef; border-color: #FF8FA3; }
.fresh .page-actions .like-btn.liked { background: #ffe4ea; border-color: #FF8FA3; color: #e23e57; }
.fresh .page-actions .nudge-btn {
  background: #FFF4E6; border-color: #FFB74D; color: #E8590C;
  animation: nudgePulseFresh 2.2s ease-in-out infinite;
}
.fresh .page-actions .nudge-btn:hover { background: #FFE0B2; }
.fresh .page-actions .nudge-btn:disabled { opacity: 0.75; cursor: default; animation: none; }
.fresh .page-actions .nudge-btn .nudge-bell { display: inline-block; transform-origin: 50% 12%; animation: nudgeBell 1.8s ease-in-out infinite; }
.fresh .page-actions .nudge-btn.nudged { background: #f1f3f5; border-color: #ced4da; color: #868e96; animation: none; }
.fresh .page-actions .nudge-btn.nudged .nudge-bell { animation: none; }
.fresh .page-actions .share-btn { background: var(--primary-bg, #EEF0FF); border-color: var(--primary, #6C5CE7); color: var(--primary, #6C5CE7); }
.fresh .page-actions .share-btn:hover { background: var(--primary, #6C5CE7); color: #fff; }
@media (prefers-reduced-motion: reduce) {
  .fresh .page-actions .nudge-btn, .fresh .page-actions .nudge-btn .nudge-bell { animation: none; }
  .lt-text.scrollable .lt-text-inner { animation: none; }
}
@keyframes nudgePulseFresh { 0%,100% { box-shadow: 0 0 0 0 rgba(255,183,77,0.55); } 55% { box-shadow: 0 0 0 9px rgba(255,183,77,0); } }

/* =========================================================================
   以下组件样式从 default 模板移植（弹窗 / 链接卡 / 徽章 / 锁定层 / 广告等）
   ========================================================================= */

/* Copy button */
.copy-btn { display:inline-flex; align-items:center; gap:4px; padding:4px 10px; border-radius:var(--radius-xs); font-size:0.72rem; font-weight:600; border:1px solid var(--border); background:var(--surface-alt); color:var(--primary); cursor:pointer; transition:all 0.2s; white-space:nowrap; flex-shrink:0; }
.copy-btn:hover { background:var(--primary-bg); }
.copy-btn.copied { background:var(--success-bg); color:var(--success); border-color:var(--success); }

/* App scheme reminder */
.app-reminder { font-size:0.68rem; color:var(--warning); margin-top:2px; display:flex; align-items:center; gap:3px; }

/* Click indicator */
.click-indicator { font-size:0.65rem; color:var(--text-muted); margin-right:4px; display:inline-flex; align-items:center; gap:2px; }
.click-indicator .click-dot { width:5px; height:5px; border-radius:50%; background:var(--primary); display:inline-block; }

/* ===== 链接卡（白底） ===== */
.fresh .link-card, .link-card {
  display:flex; align-items:center; gap:12px; padding:14px 16px; margin-bottom:12px;
  background:var(--surface, #fff); border:1px solid var(--border-light, rgba(0,0,0,0.08));
  border-radius:var(--radius-lg, 16px); box-shadow:0 1px 4px rgba(0,0,0,0.04);
  cursor:pointer; transition:transform 0.15s, box-shadow 0.15s, border-color 0.15s; text-decoration:none; color:var(--text, #1f2937);
}
.fresh .link-card:hover, .link-card:hover { transform:translateY(-1px); box-shadow:0 4px 14px rgba(0,0,0,0.08); border-color:var(--primary, #6C5CE7); }
.link-icon { width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:1.3rem; flex-shrink:0; }
.link-info { flex:1; min-width:0; }
/* 链接标题与标签同一行：标题可横向滚动，标签固定在右侧 */
.link-title { display:flex; align-items:center; gap:6px; width:100%; font-size:0.92rem; font-weight:700; color:var(--text, #1f2937); white-space:nowrap; overflow:hidden; }
.lt-text { flex:1 1 auto; min-width:0; overflow:hidden; }
.lt-text-inner { display:inline-block; white-space:nowrap; vertical-align:middle; }
.lt-text.scrollable .lt-text-inner { animation: ltMarquee 9s linear infinite; }
@keyframes ltMarquee {
  0%   { transform: translateX(0); }
  12%  { transform: translateX(0); }
  88%  { transform: translateX(var(--lt-scroll, -120px)); }
  100% { transform: translateX(var(--lt-scroll, -120px)); }
}
.lt-badges { flex:0 0 auto; display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.lt-badges > * { margin-left:0; }
.link-url { display:flex; align-items:center; font-size:0.76rem; color:var(--text-muted, #6b7280); margin-top:3px; white-space:nowrap; overflow:hidden; }
.link-url .url-text { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* ===== 解锁链接样式 ===== */
.link-card.locked { opacity:0.4; filter:grayscale(0.6); pointer-events:none; cursor:not-allowed; background:var(--surface-alt); }
.link-card.locked .link-title, .link-card.locked .link-url { color:var(--text-muted); }
.link-card.unlock-highlight { border-color:var(--accent, #FD79A8); background:#FFF0F6; animation: unlockPulse 2s infinite; }
@keyframes unlockPulse { 0%,100%{box-shadow:0 0 0 0 rgba(253,121,168,0.3);} 50%{box-shadow:0 0 0 6px rgba(253,121,168,0);} }
.unlock-badge-view { display:inline-block; font-size:0.62rem; padding:2px 6px; border-radius:6px; background:var(--accent, #FD79A8); color:white; margin-left:6px; vertical-align:middle; font-weight:600; }

/* #338 最新更新标记 1/2/3 */
.new-badge { display:inline-block; min-width:16px; height:16px; line-height:16px; padding:0 5px; margin-left:6px; border-radius:999px; font-size:0.62rem; font-weight:700; color:#fff; text-align:center; vertical-align:middle; }
.new-badge.nb-1 { background:linear-gradient(135deg,#f59e0b,#ef4444); box-shadow:0 1px 4px rgba(239,68,68,.35); }
.new-badge.nb-2 { background:linear-gradient(135deg,#6366f1,#8b5cf6); }
.new-badge.nb-3 { background:linear-gradient(135deg,#10b981,#14b8a6); }
/* #596 返场徽标：暖红渐变，区别于 NEW 三色；优先级高于 NEW（二者互斥） */
.return-badge { display:inline-block; min-width:16px; height:16px; line-height:16px; padding:0 6px; margin-left:6px; border-radius:999px; font-size:.62rem; font-weight:700; color:#fff; text-align:center; vertical-align:middle; background:linear-gradient(135deg,#ff6b6b,#ee0979); box-shadow:0 1px 4px rgba(238,9,121,.35); }
    .pin-badge { display:inline-block; min-width:16px; height:16px; line-height:16px; padding:0 6px; margin-left:6px; border-radius:999px; font-size:0.62rem; font-weight:700; color:#fff; text-align:center; vertical-align:middle; background:linear-gradient(135deg,#f7971e,#ffb347); box-shadow:0 1px 4px rgba(247,151,30,.35); }
.new-legend { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:0.72rem; color:var(--text-muted); background:var(--surface-alt); border:1px solid var(--border-light); border-radius:var(--radius-sm); padding:6px 10px; margin-bottom:12px; }

/* ===== 链接密码保护样式 ===== */
.link-card.pwd-locked { opacity:0.55; filter:grayscale(0.5); cursor:pointer; background:var(--surface-alt); }
.link-card.pwd-locked .link-title, .link-card.pwd-locked .link-url { color:var(--text-muted); }
.pwd-badge-view { display:inline-block; font-size:0.62rem; padding:2px 6px; border-radius:6px; background:var(--warning); color:white; margin-left:6px; vertical-align:middle; font-weight:600; }

/* 「点击解锁/密码保护」徽标移至链接网址行尾靠右 */
.url-badges { flex:0 0 auto; order:2; display:inline-flex; align-items:center; gap:4px; margin-left:6px; flex-shrink:0; }
.score-badge-view { display:inline-block; font-size:0.62rem; padding:2px 6px; border-radius:6px; background:var(--primary); color:white; margin-left:6px; vertical-align:middle; font-weight:600; }
.pwd-tip-box { font-size:0.78rem; color:var(--text-muted); background:var(--surface-alt); border:1px dashed var(--border); border-radius:var(--radius-sm); padding:8px 10px; margin-bottom:12px; line-height:1.6; }
.pwd-input { width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:0.9rem; background:var(--surface); color:var(--text); outline:none; box-sizing:border-box; }
.pwd-input:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(108,92,231,0.12); }
.pwd-error { color:var(--danger); font-size:0.78rem; margin-top:8px; font-weight:600; }
.pwd-get-btn { display:inline-flex; align-items:center; justify-content:center; gap:4px; width:100%; margin-top:12px; padding:9px 12px; border-radius:var(--radius-sm); background:var(--primary-bg); color:var(--primary); font-size:0.82rem; font-weight:600; text-decoration:none; box-sizing:border-box; }
.pwd-get-btn:hover { background:var(--primary); color:white; }

/* ===== 弹窗 ===== */
.pv-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.65); z-index:9999; align-items:center; justify-content:center; padding:20px; }
.pv-overlay.active { display:flex; }
.pv-modal { background:var(--surface, #fff); border-radius:var(--radius-lg, 16px); max-width:90vw; max-height:85vh; overflow-y:auto; box-shadow:var(--shadow-xl); animation:pvFadeIn 0.25s ease; }
@keyframes pvFadeIn { from{opacity:0;transform:scale(0.9);} to{opacity:1;transform:scale(1);} }
.pv-modal-header { display:flex; align-items:center; justify-content:space-between; padding:16px 20px; border-bottom:1px solid var(--border-light); }
.pv-modal-header h3 { font-size:1rem; margin:0; }
.pv-modal-close { width:36px; height:36px; border-radius:50%; border:none; background:var(--surface-alt); cursor:pointer; font-size:1rem; color:var(--text-muted); display:flex; align-items:center; justify-content:center; min-height:44px; min-width:44px; }
.pv-modal-close:hover { background:var(--danger-bg); color:var(--danger); }
.pv-modal-body { padding:20px; }
.pv-modal-body img { max-width:100%; border-radius:var(--radius-sm); display:block; margin:0 auto; }
.pv-modal-body .text-content { font-size:0.9rem; line-height:1.8; color:var(--text); white-space:pre-wrap; word-break:break-word; }
.pv-modal-body .qr-img { max-width:260px; margin:0 auto; display:block; }
.pv-modal-body .qr-tip { text-align:center; font-size:0.78rem; color:var(--text-muted); margin-top:12px; }

/* ===== 锁定层通用样式（v35 访问分门槛） ===== */
.acc-mask { position:fixed; inset:0; background:rgba(10,12,20,0.72); z-index:10000; display:flex; align-items:center; justify-content:center; padding:20px; backdrop-filter:blur(2px); }
.acc-mask .acc-box { background:var(--surface, #fff); border-radius:var(--radius-lg, 16px); max-width:420px; width:100%; padding:26px 24px; box-shadow:var(--shadow-xl); animation:pvFadeIn 0.25s ease; text-align:center; }
.acc-mask .acc-icon { font-size:2.2rem; margin-bottom:10px; }
.acc-mask .acc-title { font-size:1.05rem; font-weight:800; color:var(--text); margin-bottom:6px; }
.acc-mask .acc-desc { font-size:0.82rem; line-height:1.8; color:var(--text-muted); margin-bottom:16px; }
.acc-mask .acc-desc b { color:var(--primary); }
.acc-mask .acc-btn-row { display:flex; gap:10px; }
.acc-mask .acc-btn-row .btn { flex:1; min-height:44px; }
.acc-mask .acc-tip { font-size:0.72rem; color:var(--text-muted); margin-top:10px; line-height:1.7; }
.acc-mask .acc-tip a { color:var(--primary); text-decoration:underline; cursor:pointer; }
.acc-mask .acc-status-box { background:var(--surface-alt); border:1px solid var(--border-light); border-radius:var(--radius-sm); padding:12px; margin-bottom:14px; font-size:0.82rem; line-height:1.7; color:var(--text-secondary); text-align:left; }
.acc-mask .acc-status-box.acc-err { background:var(--danger-bg); border-color:var(--danger); color:var(--danger); }
.acc-mask .acc-status-box.acc-ok { background:#e3f6e8; border-color:#1e8e3e; color:#14532d; }

/* ===== 分享主页弹窗 ===== */
.share-qr-box { display:flex; justify-content:center; padding:4px 0; }
.share-qr-box canvas, .share-qr-box img { border-radius:var(--radius-sm); max-width:100%; }
.share-url-box { margin-top:14px; padding:10px 12px; background:var(--surface-alt); border:1px solid var(--border-light); border-radius:var(--radius-sm); font-size:0.78rem; color:var(--text); word-break:break-all; line-height:1.6; }
.share-tip { text-align:center; font-size:0.72rem; color:var(--text-muted); margin-top:8px; }

/* Custom Ad */
.pm-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.6); z-index:9998; align-items:center; justify-content:center; }
.pm-overlay.active { display:flex; }
.pm-popup { position:relative; background:var(--surface, #fff); border-radius:var(--radius-lg, 16px); overflow:hidden; box-shadow:var(--shadow-2xl); animation:pvFadeIn 0.3s ease; max-width:92vw; max-height:80vh; }
.pm-popup img { width:100%; height:100%; object-fit:contain; display:block; cursor:pointer; }
.pm-close { position:absolute; top:8px; right:8px; width:28px; height:28px; border-radius:50%; background:rgba(0,0,0,0.5); color:white; border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:0.85rem; z-index:2; }
.pm-close:hover { background:rgba(0,0,0,0.7); }
.pm-timer { position:absolute; bottom:8px; right:8px; background:rgba(0,0,0,0.5); color:white; padding:2px 8px; border-radius:var(--radius-xs); font-size:0.75rem; }
.pm-popup.shake { animation:pmShake 0.4s ease; }
@keyframes pmShake { 0%,100%{transform:translateX(0);} 20%{transform:translateX(-8px);} 40%{transform:translateX(8px);} 60%{transform:translateX(-5px);} 80%{transform:translateX(5px);} }

/* ===== 顶部解锁提示条 ===== */
.unlock-tip { background:linear-gradient(135deg,var(--accent,#FD79A8),#FDCB6E); color:white; text-align:center; padding:8px 12px; font-size:0.78rem; font-weight:600; display:none; margin-top:14px; }
.unlock-tip.show { display:block; animation:unlockPulse 2s infinite; }

/* ===== 深度链接高亮 ===== */
.link-card.deep-link-highlight { border-color:var(--primary, #6C5CE7); box-shadow:0 0 0 3px rgba(108,92,231,0.25); animation:deepLinkGlow 2s ease-in-out 3; }
@keyframes deepLinkGlow { 0%,100%{box-shadow:0 0 0 3px rgba(108,92,231,0.25);} 50%{box-shadow:0 0 0 8px rgba(108,92,231,0.08);} }

/* #309 徽章 + 操作按钮横排（兼容默认 .page-actions 容器） */
.page-badge { display:inline-block; background:rgba(108,92,231,0.12); border-radius:999px; font-size:.72rem; padding:3px 12px; margin-top:8px; color:var(--primary, #6C5CE7); }
.page-actions .like-count { min-width:14px; text-align:center; display:inline-block; }

/* 悬浮球（默认浮动，fresh 下已改为应用栏菜单，下方保留通用面板样式） */
.pv-fab { position:fixed; top:16px; right:16px; z-index:2147483647; display:inline-flex; flex-direction:column; align-items:flex-end; touch-action:none; }
.pv-fab-btn { display:inline-flex; align-items:center; gap:6px; padding:9px 16px; border-radius:999px; background:rgba(255,255,255,0.22); border:1px solid rgba(255,255,255,0.45); color:#fff; font-size:0.8rem; font-weight:600; text-decoration:none; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); box-shadow:0 2px 10px rgba(0,0,0,0.12); transition:all 0.2s; cursor:grab; user-select:none; -webkit-user-select:none; touch-action:none; min-height:40px; }
.pv-fab-btn:hover { background:rgba(255,255,255,0.35); transform:translateY(-1px); }
.pv-fab.dragging .pv-fab-btn { cursor:grabbing; transition:none; transform:none; opacity:0.85; }
.pv-fab-panel { display:none; margin-top:8px; width:252px; background:var(--surface,#ffffff); border:1px solid var(--border-light,rgba(0,0,0,0.08)); border-radius:14px; box-shadow:0 8px 30px rgba(0,0,0,0.18); overflow:hidden; color:var(--text,#1f2937); text-align:left; }
.pv-fab-panel.open { display:block; animation:pvPanelIn 0.18s ease-out; }
@keyframes pvPanelIn { from{opacity:0;transform:translateY(-6px);} to{opacity:1;transform:translateY(0);} }
.pv-panel-head { padding:11px 14px 7px; font-size:0.74rem; font-weight:700; color:var(--text-muted,#6b7280); border-bottom:1px solid var(--border-light,rgba(0,0,0,0.06)); }
.pv-panel-item { display:flex; align-items:center; gap:10px; padding:11px 14px; text-decoration:none; color:var(--text,#1f2937); transition:background 0.15s; cursor:pointer; border:none; background:transparent; width:100%; box-sizing:border-box; text-align:left; }
.pv-panel-item:hover { background:var(--surface-alt,rgba(0,0,0,0.04)); }
.pv-panel-item .pi-icon { width:34px; height:34px; border-radius:10px; background:var(--primary-bg,#EEF0FF); color:var(--primary,#6C5CE7); display:flex; align-items:center; justify-content:center; font-size:1rem; flex-shrink:0; }
.pv-panel-item .pi-main { flex:1; min-width:0; }
.pv-panel-item .pi-title { font-size:0.88rem; font-weight:700; }
.pv-panel-item .pi-desc { font-size:0.73rem; color:var(--text-muted,#6b7280); margin-top:2px; line-height:1.5; }
.pv-panel-item .pi-arrow { color:var(--text-muted,#9ca3af); font-size:0.85rem; flex-shrink:0; }

/* #165 登录/注册弹窗 */
.auth-modal-title { font-size:1.05rem; font-weight:800; margin:0 0 2px; color:var(--text); }
.auth-modal-sub { font-size:0.78rem; color:var(--text-muted); margin:0 0 14px; line-height:1.6; }
.auth-tabs { display:flex; background:var(--surface-alt); border-radius:999px; padding:4px; margin-bottom:16px; }
.auth-tab { flex:1; text-align:center; padding:8px 0; font-size:0.85rem; font-weight:700; color:var(--text-muted); cursor:pointer; border-radius:999px; transition:all 0.2s; border:none; background:transparent; min-height:40px; }
.auth-tab.active { background:var(--surface); color:var(--primary); box-shadow:0 1px 4px rgba(0,0,0,0.08); }
.auth-panel { display:none; }
.auth-panel.active { display:block; }
.auth-field { margin-bottom:12px; }
.auth-field label { display:block; font-size:0.76rem; color:var(--text-secondary); font-weight:600; margin-bottom:5px; }
.auth-field input { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:0.88rem; color:var(--text); background:var(--surface); min-height:44px; }
.auth-field input:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(108,92,231,0.12); }
.auth-error { display:none; background:var(--danger-bg); color:var(--danger); font-size:0.78rem; padding:8px 10px; border-radius:var(--radius-xs); margin-bottom:10px; }
.auth-tip { font-size:0.72rem; color:var(--text-muted); margin-top:10px; line-height:1.6; background:var(--surface-alt); border-radius:var(--radius-xs); padding:8px 10px; }

/* #340 链接区 tab 切换 */
.nav-tab-bar { display:flex; background:var(--surface-alt); border-radius:999px; padding:4px; margin:14px 16px 0; }
.nav-tab-btn { flex:1; text-align:center; padding:8px 0; font-size:0.85rem; font-weight:700; color:var(--text-muted); cursor:pointer; border-radius:999px; transition:all 0.2s; border:none; background:transparent; min-height:40px; }
.nav-tab-btn.active { background:var(--surface); color:var(--primary); box-shadow:0 1px 4px rgba(0,0,0,0.08); }
.nav-tag-tip { display:inline-block; font-size:0.72rem; font-weight:600; color:var(--primary); background:var(--primary-bg,#EEF0FF); border-radius:999px; padding:4px 12px; margin-bottom:10px; }
.nav-group-title { font-size:0.74rem; font-weight:700; color:var(--text-muted); margin:12px 2px 8px; display:flex; align-items:center; gap:6px; }

/* ===== 分类横条：tab 与链接列表之间，单行横向滚动，点击本地过滤（无请求） ===== */
.fresh-cat-bar {
  display: flex; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
  gap: 8px; padding: 12px 16px 0; scrollbar-width: none;
}
.fresh-cat-bar::-webkit-scrollbar { display: none; }
.fresh-cat-chip {
  flex-shrink: 0; padding: 6px 14px; border-radius: 999px; min-height: 32px; box-sizing: border-box;
  border: none; background: transparent; color: var(--text, #1f2937);
  font-size: 0.78rem; font-weight: 600; line-height: 1.4; white-space: nowrap; cursor: pointer;
  transition: all 0.15s; user-select: none; -webkit-user-select: none; touch-action: manipulation;
}
.fresh-cat-chip:hover { color: var(--primary, #6C5CE7); }
.fresh-cat-chip.active { background: var(--primary-bg, #EEF0FF); border: none; color: var(--primary, #6C5CE7); }
.fresh-cat-empty { text-align: center; color: var(--text-muted, #6b7280); font-size: 0.8rem; padding: 26px 0 10px; display: none; }
.nav-group-title::before { content:''; width:3px; height:12px; border-radius:2px; background:var(--primary); flex-shrink:0; }
.nav-login-tip { text-align:center; padding:36px 20px; }
.nav-login-tip .nav-login-icon { font-size:2rem; margin-bottom:8px; }
.nav-login-tip p { font-size:0.85rem; color:var(--text-muted); margin:0 0 16px; line-height:1.6; }

.powered-by { text-align:center; padding:12px; font-size:0.78rem; color:var(--text-muted); }
.powered-by a { color:var(--primary); font-weight:600; }

/* #485 链接有效期标记与已过期分组 */
.exp-badge{display:inline-block;margin-left:6px;padding:0 7px;font-size:0.66rem;font-weight:600;line-height:1.5;border-radius:99px;background:#fff4e6;color:#e8590c;vertical-align:middle;}
.exp-badge.expired{background:#f1f3f5;color:#868e96;}
.exp-section{margin-top:18px;padding-top:14px;border-top:1px dashed var(--border-light);}
.exp-section-title{font-size:0.8rem;font-weight:700;color:#868e96;margin-bottom:10px;padding-left:4px;}
.expired-link{opacity:0.62;filter:grayscale(0.4);}
.expired-link .lt-text{text-decoration:line-through;text-decoration-color:#ced4da;}
.expired-link .ws-btn{margin-left:8px;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:999px;padding:4px 11px;font-size:0.72rem;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;}
.expired-link .ws-btn b{font-weight:800;}
.expired-link .ws-btn:hover{border-color:var(--primary);color:var(--primary);}
.expired-link .ws-btn.done{background:var(--primary-bg);border-color:var(--primary);color:var(--primary);}
.expired-link .ws-btn:disabled{opacity:.6;cursor:default;}

/* #261 免责声明栏 + #260 投诉弹窗 */
.pv-disclaimer { margin-top:14px; padding:10px 16px; background:var(--surface-alt); border:1px solid var(--border-light); border-radius:10px; font-size:0.74rem; line-height:1.7; color:var(--text-muted); text-align:center; }
.pv-disclaimer a { color:var(--primary); text-decoration:underline; cursor:pointer; }
.cmp-type-row { display:flex; gap:8px; margin-bottom:12px; }
.cmp-type-chip { flex:1; text-align:center; padding:9px 0; border:1px solid var(--border-color,#ddd); border-radius:999px; font-size:0.82rem; font-weight:600; color:var(--text-muted); cursor:pointer; background:none; transition:all 0.15s; }
.cmp-type-chip.active { background:var(--primary,#6C5CE7); color:#fff; border-color:var(--primary,#6C5CE7); }
.cmp-field { margin-bottom:12px; text-align:left; }
.cmp-field label { display:block; font-size:0.76rem; color:var(--text-secondary); font-weight:600; margin-bottom:5px; }
.cmp-field input, .cmp-field textarea { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:0.88rem; color:var(--text); background:var(--surface); min-height:44px; }
.cmp-field textarea { min-height:96px; resize:vertical; }
.cmp-field input[readonly] { background:var(--surface-alt,#f8f8f8); color:var(--text-muted); }

.page-body { padding: 16px; }
.fresh .page-body { padding: 16px; }
