/* ============================================================
 * noransom.net（舍末无勒 SheMo Noransom）皮肤 —— 与官网 https://noransom.net/ 视觉对齐
 *
 * 三段结构：
 *   1) :root token（官网设计 token：brand 深海军蓝 / accent 橙 / slate 中性色）
 *   2) 共享皮肤层（只消费 token，不写死站点专属颜色）
 *   3) :root.dark + .dark 覆盖（处理 style.css 里写死颜色的深色规则）
 *
 * 加载顺序：style.css -> skin.css -> noransom.css（品牌层，见 partials/site.php 的 extra_css）。
 * 页头 / 页脚 / 公告栏 / 侧栏应急部件等"官网专属结构"在 noransom.css 里，本文件只做通用皮肤。
 * ============================================================ */

/* ---------- 字体：官网同款 Inter 可变字体（本地 woff2，不走 Google Fonts） ----------
   unicode-range 限定 Latin，中文永远落到系统中文字体，避免 Inter 的 CJK 回退拖慢首屏。 */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url(fonts/inter-latin-wght-normal.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  /* --- 官网调色板（src/app/globals.css @theme） --- */
  --once-brand-950:#070b14;
  --once-brand-900:#0b1220;
  --once-brand-800:#111a2e;
  --once-brand-700:#1a2540;
  --once-brand-500:#34497f;
  --once-accent-700:#b8400a;
  --once-accent-600:#d9500f;
  --once-accent-500:#f26522;
  --once-accent-400:#ff7f45;
  --once-accent-300:#ffa477;
  --once-accent-100:#ffe6d9;
  --once-slate-900:#0f172a;
  --once-slate-700:#334155;
  --once-slate-600:#475569;
  --once-slate-500:#64748b;
  --once-slate-400:#94a3b8;
  --once-slate-300:#cbd5e1;
  --once-slate-200:#e2e8f0;
  --once-slate-100:#f1f5f9;
  --once-slate-50:#f8fafc;
  --once-emerald-600:#059669;

  /* --- 语义 token --- */
  --once-brand:var(--once-accent-500);
  --once-brand-hover:var(--once-accent-600);
  --once-brand-active:var(--once-accent-700);
  --once-brand-soft:var(--once-accent-300);
  --once-brand-faint:var(--once-accent-100);
  --once-brand-gradient:linear-gradient(to top,var(--once-accent-400),var(--once-accent-500));
  --once-on-brand:#ffffff;

  --once-bg:var(--once-slate-50);
  --once-surface:#ffffff;
  --once-subtle:var(--once-slate-50);
  --once-border:var(--once-slate-200);
  --once-text:var(--once-slate-900);
  --once-heading:var(--once-brand-900);
  --once-muted:var(--once-slate-600);
  --once-faint:var(--once-slate-500);
  --once-link:var(--once-accent-600);
  --once-link-hover:var(--once-accent-700);
  --once-link-underline:var(--once-accent-300);

  --once-font:'Inter',ui-sans-serif,system-ui,-apple-system,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans CJK SC','Source Han Sans SC',sans-serif;
  --once-font-mono:ui-monospace,'SFMono-Regular','JetBrains Mono',Menlo,Consolas,monospace;
  --once-line-height:1.75;
  --once-line-height-cjk:1.8;

  --once-radius:12px;
  --once-radius-sm:8px;
  --once-radius-pill:999px;
  --once-btn-radius:6px;
  --once-shadow:0 1px 2px rgba(7,11,20,.04),0 1px 3px rgba(7,11,20,.06);
  --once-shadow-lg:0 10px 15px -3px rgba(7,11,20,.05),0 4px 6px -4px rgba(7,11,20,.05);
  --once-shadow-panel:0 24px 48px -12px rgba(7,11,20,.35),0 0 0 1px rgba(7,11,20,.06);
  --once-btn-shadow:none;

  /* --- 页头（官网页头恒为深色，与页面明暗无关） --- */
  --once-header-bg:rgba(7,11,20,.85);
  --once-header-solid:var(--once-brand-950);
  --once-header-text:#ffffff;
  --once-header-muted:rgba(255,255,255,.8);
  --once-header-faint:rgba(255,255,255,.55);
  --once-header-border:rgba(255,255,255,.1);
  --once-header-hover:rgba(255,255,255,.08);
  --once-header-chip:rgba(255,255,255,.1);
  --once-header-shadow:none;
  --once-header-height:72px;
  --once-header-pad:0px;
  --once-logo-size:17px;

  /* --- 页脚（同样恒为深色） --- */
  --once-footer-bg:var(--once-brand-950);
  --once-footer-band-bg:var(--once-brand-900);
  --once-footer-text:var(--once-slate-300);
  --once-footer-muted:var(--once-slate-500);
  --once-footer-border:rgba(255,255,255,.1);
  --once-footer-link-hover:#ffffff;

  /* --- 深色区块（内页首屏、侧栏应急卡、公告栏）--- */
  --once-dark-bg:var(--once-brand-950);
  --once-dark-text:var(--once-slate-300);
  --once-dark-border:rgba(255,255,255,.1);
  --once-announcement-bg:var(--once-brand-800);
  --once-grid-line:rgba(255,255,255,.05);
  --once-grid-size:56px;
}

:root.dark{
  --once-brand:var(--once-accent-400);
  --once-brand-hover:var(--once-accent-500);
  --once-brand-soft:var(--once-accent-300);
  --once-brand-faint:rgba(242,101,34,.18);
  --once-on-brand:#ffffff;

  --once-bg:var(--once-brand-950);
  --once-surface:var(--once-brand-900);
  --once-subtle:var(--once-brand-800);
  --once-border:rgba(255,255,255,.1);
  --once-text:var(--once-slate-300);
  --once-heading:#f1f5f9;
  --once-muted:var(--once-slate-400);
  --once-faint:var(--once-slate-500);
  --once-link:var(--once-accent-400);
  --once-link-hover:var(--once-accent-300);
  --once-link-underline:rgba(255,127,69,.5);

  --once-shadow:0 1px 2px rgba(0,0,0,.5);
  --once-shadow-lg:0 10px 20px -8px rgba(0,0,0,.6);
  --once-shadow-panel:0 24px 48px -12px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.06);

  --once-header-bg:rgba(7,11,20,.92);
  --once-dark-bg:#04070d;
}

/* ============================================================
 * 共享皮肤层：只消费上面的 CSS 变量。
 * 加载顺序 style.css -> skin.css，故同特异性下本层生效。
 * ============================================================ */

/* ---------- 基础 ---------- */
body{
  font-family:var(--once-font);
  color:var(--once-text);
  background-color:var(--once-bg);
  background-image:none;
  background-blend-mode:normal;
  font-size:14px;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:var(--once-text);}
a:hover{color:var(--once-brand);}
:lang(zh-CN) body{line-height:var(--once-line-height-cjk);}
::selection{background:rgba(242,101,34,.25);}
::-webkit-scrollbar{background:var(--once-border);}
::-webkit-scrollbar-thumb{background:var(--once-slate-400);}
:focus-visible{outline:2px solid var(--once-accent-400);outline-offset:2px;}
@media (forced-colors:active){:focus-visible{outline:2px solid CanvasText;}}
/* style.css:13-16 的 textarea:focus/button:focus/input:focus{outline:0} 特异性是 (0,1,1)，
   压过上面 (0,1,0) 的 :focus-visible，导致所有按钮与输入框没有焦点环（WCAG 2.4.7）。
   这里用同特异性 + 后加载取回。不要去改 style.css（上游文件）。
   同时补一圈 box-shadow 光晕：Chrome 对保留原生外观的表单控件（评论框的 input /
   textarea / submit）会用系统主题自己的焦点环盖掉作者 outline 的宽度与颜色，
   box-shadow 不受那条路径影响，两者叠加保证任何控件都有一圈橙色。
   style.css:13-16 里同组选择器的 box-shadow:none 是 (0,1,1)，与本条同权重且更早，
   所以这里能取回。 */
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--once-accent-400);outline-offset:2px;box-shadow:0 0 0 3px rgba(242,101,34,.45);}
@media (forced-colors:active){button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid CanvasText;}}
/* 深浅色切换从 <div onclick> 换成了真 <button>，清掉 UA 默认按钮样式；
   写成 button.theme-switch 以免影响 <a class="theme-switch mobile-language-switch">。 */
button.theme-switch{border:none;padding:0;cursor:pointer;font:inherit;}

/* ---------- 顶部：官网页头恒为深色毛玻璃，72px 高 ---------- */
.header{
  background:var(--once-header-bg);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--once-header-border);
  box-shadow:var(--once-header-shadow);
  padding:var(--once-header-pad) 0;
  color:var(--once-header-text);
}
.top{min-height:var(--once-header-height);gap:16px;}
/* 站名在博客首页是 <h1>、其余页面是 <div>（保证每页只有一个 h1）。h1 自带上外边距
   而 div 没有，logo 又是 align-items:center 的 flex 项，不显式清零的话首页和内页的
   头部会差出几个像素。 */
.top .top_l .logo{font-size:var(--once-logo-size);margin-top:0;margin-bottom:0;margin-right:20px;min-height:0;font-weight:400;line-height:1;}
.top .top_l .logo a{color:var(--once-header-text);text-decoration:none;}
.top .top_l .logo a:hover{color:var(--once-header-text);}
/* 兼容旧标记（现在页头不再输出 <img class="site-logo"> 与站点标题 <b>） */
.top .top_l .logo a b{color:var(--once-header-text);font-weight:700;letter-spacing:.02em;}
.top .top_l .logo a img{background-color:transparent;border-radius:var(--once-radius-sm);}

.header-menu .header-menu-ul li a,
.header-menu .header-menu-ul li button{
  display:flex;align-items:center;
  height:40px;padding:0 14px;
  border-radius:var(--once-btn-radius);
  font-size:15px;font-weight:500;
  color:var(--once-header-muted);
  white-space:nowrap;
  transition:background-color .15s ease,color .15s ease;
}
.header-menu .header-menu-ul li a i,
.header-menu .header-menu-ul li button i{opacity:.55;font-size:13px;}
.header-menu .header-menu-ul li a:hover,
.header-menu .header-menu-ul li button:hover,
.header-menu .header-menu-ul li a:focus-visible,
.header-menu .header-menu-ul li a.current{
  color:var(--once-header-text);
  background:var(--once-header-hover);
}
.header-menu .header-menu-ul li a.current i{opacity:1;color:var(--once-accent-400);}
/* 有子菜单的项要给右侧箭头留位置（箭头相对 li 定位，见 style.css） */
.header-menu .header-menu-ul li.menu-item-has-children>a,
.header-menu .header-menu-ul li.menu-item-has-children>button{padding-right:26px;}
.header-menu .header-menu-ul li.menu-item-has-children>a:after,
.header-menu .header-menu-ul li.menu-item-has-children>button:after{
  right:10px;top:50%;transform:translateY(-50%) scale(.75);color:var(--once-header-faint);
}
/* 下拉面板是浅色卡片（同官网 mega menu），内部文字必须回到深色 */
.header-menu .header-menu-ul li .sub-menu{
  top:52px;
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-radius:var(--once-radius);
  box-shadow:var(--once-shadow-panel);
  padding:10px;
  width:210px;
}
.header-menu .header-menu-ul li .sub-menu li a,
.header-menu .header-menu-ul li .sub-menu li button{
  height:auto;padding:8px 10px;font-size:14px;font-weight:500;
  color:var(--once-text);border-radius:var(--once-radius-sm);
}
.header-menu .header-menu-ul li .sub-menu li a i{opacity:.6;color:var(--once-accent-500);}
.header-menu .header-menu-ul li .sub-menu li a:hover,
.header-menu .header-menu-ul li .sub-menu li button:hover{
  background:var(--once-slate-50);color:var(--once-accent-600);
}

.top .top_r{display:flex;align-items:center;gap:10px;}
.top .top_r .top_r_an{
  width:32px;height:32px;line-height:32px;
  color:var(--once-header-muted);background:none;
  transition:background-color .15s ease,color .15s ease;
}
.top .top_r .top_r_an.theme-switch{background:var(--once-header-chip);color:var(--once-header-text);}
.top .top_r .top_r_an:hover,
.top .top_r .top_r_an:focus-visible{background:var(--once-header-hover);color:var(--once-header-text);}
/* 模板里 theme-switch 带 bootstrap 的 .me-4（!important），必须同等权重清掉 */
.top .top_r .top_r_an.theme-switch{margin-right:0 !important;}
/* 语言切换做成胶囊，和官网页头的语言切换气质一致 */
.top .top_r .top_r_an.language-switch{
  width:auto;height:32px;padding:0 10px;gap:4px;
  border:1px solid var(--once-header-border);
  border-radius:var(--once-radius-pill);
  color:var(--once-header-muted);font-size:12px;
}
.top .top_r .top_r_an.language-switch span{font-size:11px;font-weight:600;letter-spacing:.04em;}
.top .top_r .top_r_an.language-switch:hover{background:var(--once-header-hover);border-color:rgba(255,255,255,.3);}
.mobile_an{color:var(--once-header-text);width:36px;height:36px;line-height:36px;border-radius:var(--once-btn-radius);}
.mobile_an:hover{background:var(--once-header-hover);}

/* 返回官网按钮（模板同时带 .btn-accent，noransom.css 里做最终微调） */
.back-to-site{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:40px;padding:0 16px;
  border-radius:var(--once-btn-radius);
  background:var(--once-brand);
  color:var(--once-on-brand) !important;
  font-size:14px;font-weight:600;line-height:1;
  white-space:nowrap;
  border:1px solid transparent;
  box-shadow:var(--once-btn-shadow);
  transition:background-color .15s ease;
}
.back-to-site:hover{background:var(--once-brand-hover);color:var(--once-on-brand) !important;}
.back-to-site:active{background:var(--once-brand-active);}
.back-to-site i{font-size:13px;}
#mobile_right_nav .menu-zk li.menu-item-back-to-site a{
  background:var(--once-brand);
  color:var(--once-on-brand);
  font-weight:600;
}
#mobile_right_nav .menu-zk li.menu-item-back-to-site a:hover{background:var(--once-brand-hover);color:var(--once-on-brand);}

/* ---------- 移动端抽屉：跟随深色页头 ---------- */
#mobile_right_nav{background:var(--once-brand-950);color:var(--once-header-text);}
#mobile_right_nav .mobile_head{background:var(--once-brand-900);color:var(--once-header-text);align-items:center;gap:10px;border-bottom:1px solid var(--once-header-border);}
#mobile_right_nav .mobile_head .mobile_head_logo{color:var(--once-header-text);}
#mobile_right_nav .mobile_head .mobile_head_logo a{color:var(--once-header-text);}
#mobile_right_nav .mobile_head .mobile_head_logo b{color:var(--once-header-text);}
#mobile_right_nav .mobile_head .mobile_head_logo img{background-color:transparent;}
#mobile_right_nav .mobile_head .theme-switch{background:var(--once-header-chip);color:var(--once-header-text);flex-shrink:0;}
#mobile_right_nav .mobile_head .btn-close{filter:invert(1) grayscale(1);opacity:.7;}
#mobile_right_nav .menu-zk{
  background:var(--once-brand-900);
  border:1px solid var(--once-header-border);
  border-radius:var(--once-radius);
}
#mobile_right_nav .menu-zk li a,
#mobile_right_nav .menu-zk li button{color:var(--once-header-muted);border-bottom:1px solid var(--once-header-border);}
#mobile_right_nav .menu-zk li a:hover,
#mobile_right_nav .menu-zk li button:hover{color:var(--once-header-text);background:var(--once-header-hover);}
#mobile_right_nav .menu-zk .sub-menu{background:var(--once-brand-800);}
#mobile_right_nav .menu-zk .sub-menu li a{color:var(--once-header-muted);}
#mobile_right_nav .menu-zk .menu-item-has-children .czxjcdbs:before{background:var(--once-header-chip);color:var(--once-header-text);}

/* ---------- 搜索 ---------- */
#c_sousuo{background:var(--once-surface);}
#c_sousuo .search_box .ss_a{border:2px solid var(--once-border);border-radius:var(--once-radius);}
#c_sousuo .search_box .ss_a input{color:var(--once-text);font-size:14px;}
#c_sousuo .search_box .ss_a button{color:var(--once-brand);}

/* ---------- 卡片 ---------- */
.post_def,
.post_gallery,
.widget,
.cat_info_top,
.post_related,
.author_show_box,
.links-page-item{
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-radius:var(--once-radius);
  box-shadow:none;
  transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.post_def:hover,
.post_gallery:hover,
.links-page-item:hover{
  transform:translateY(-2px);
  border-color:var(--once-accent-300);
  box-shadow:var(--once-shadow-lg);
}
/* 文章页标题区 + 正文体是一张连体卡；noransom.css 会把标题区换成官网 PageHero 的深色版 */
.post_container_title{
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-bottom:1px solid var(--once-border);
  border-radius:var(--once-radius) var(--once-radius) 0 0;
}
.post_container{
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-top:none;
  border-radius:0 0 var(--once-radius) var(--once-radius);
}
.post_author{
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-top:1px solid var(--once-border);
  border-radius:var(--once-radius);
}
.post_comment,#comments{border-radius:var(--once-radius);}
#comments{background:var(--once-surface);border:1px solid var(--once-border);}
.post_def .post_def_left img,
.post_def img,
.post_gallery .post_gallery_head img,
.widget_hot_post .widget_hot_li img,
.author_post li img{border-radius:var(--once-radius-sm);}
.post_def .post_def_right .post_def_title h2{font-weight:700;letter-spacing:-.01em;line-height:1.45;}
.post_def .post_def_right .post_def_title h2 a{color:var(--once-heading);}
.post_def:hover .post_def_right .post_def_title h2 a{color:var(--once-link);}
.post_def .post_def_right .post_def_title p{color:var(--once-muted);font-weight:400;}
.post_info,
.post_info .post_info_l span a,
.post_info .post_info_r em,
.post_info .post_info_r em a{color:var(--once-faint);}
.post_info .post_info_l span a:hover{color:var(--once-link);}

/* ---------- 品牌强调 ---------- */
.widget-title{color:var(--once-heading);font-weight:700;letter-spacing:.01em;text-transform:none;}
.widget-title:before,
.cat_info_top h1:before,
.cat_info_top h2:before{background:var(--once-brand);background:var(--once-brand-gradient);}
.widget-title:after{background:var(--once-border);}
.wznrys h3:before{background:var(--once-brand-gradient);}
.wznrys h4:before{background:var(--once-brand-soft);}
#banner .banlist i,
.index_banner .index_banner_center .zt_list b,
.index_banner .gglb b{background:var(--once-brand);color:var(--once-on-brand);border-radius:0 0 var(--once-radius-sm) 0;}
#banner .carousel-control-prev i:hover,
#banner .carousel-control-next i:hover{background:var(--once-brand);color:var(--once-on-brand);}
#banner,
.index_banner .index_banner_center .zt_list,
.index_banner .gglb,
.post_images{border-radius:var(--once-radius);}
.widget_hot_tags .tagcloud a{background-color:var(--once-slate-100);color:var(--once-muted);border-radius:var(--once-radius-pill);}
.widget_hot_tags .tagcloud a:hover{background:var(--once-brand);color:var(--once-on-brand);}
.widget_hot_tags .tagcloud a.hot:before{background:var(--once-brand);border-color:var(--once-surface);}
.widget_recent_entries ul li{border-left:2px solid var(--once-border);}
.widget_recent_entries ul li:before{background-color:var(--once-surface);}
.widget_recent_entries ul li:after{background-color:var(--once-brand);border-color:var(--once-surface);}
.widget_recent_entries ul li:hover:after{background-color:var(--once-brand-hover);}
.widget_recent_entries ul li span{color:var(--once-faint);}
.widget_search #s{background:var(--once-slate-100);color:var(--once-text);border-radius:var(--once-radius-sm);}
.widget_search #searchsubmit{background:var(--once-brand);color:var(--once-on-brand);border-radius:0 var(--once-radius-sm) var(--once-radius-sm) 0;}
.widget_search #searchsubmit:hover{background:var(--once-brand-hover);}
.widget_comment_ul li{border-bottom:1px solid var(--once-border);}
.widget_comment_ul li .widget_comment_info span,
.widget_hot_post .widget_hot_li .hot_post_info p,
.author_post li .author_title p,
.author_show_box .author_show_info,
.links-page-desc,
.tags-page .tagcloud a .tag-count{color:var(--once-faint);}
.author_post{border-top:1px solid var(--once-border);}
.post_author_r .post_author_tag em{background:var(--once-slate-100);border-radius:var(--once-radius-pill);color:var(--once-muted);}
.post_author_r .post_author_tag em:hover{background:var(--once-brand);color:var(--once-on-brand);}
.post_author_r .post_author_tag em:hover a{color:var(--once-on-brand);}
.post_author_icon a{background:var(--once-brand);color:var(--once-on-brand);border-radius:var(--once-btn-radius);}
.post_author_icon a:hover{background:var(--once-brand-hover);color:var(--once-on-brand);}
.post-read-more a{
  background:var(--once-surface);
  border:1px solid var(--once-border);
  border-radius:var(--once-btn-radius);
  color:var(--once-muted);
  font-weight:600;
}
.post-read-more a:hover{border-color:var(--once-brand);color:var(--once-brand);}
.post-read-more a.loading{background:var(--once-brand);color:var(--once-on-brand);border-color:var(--once-brand);}
.posts-nav .page-numbers{background:var(--once-surface);border:1px solid var(--once-border);border-radius:var(--once-radius-sm);color:var(--once-muted);}
.posts-nav .page-numbers:hover,
.posts-nav .page-numbers.current{background:var(--once-brand);border-color:var(--once-brand);color:var(--once-on-brand);}
.scrollToTopBtn{background-color:var(--once-brand-950);color:#ffffff;}
.scrollToTopBtn:hover{background:var(--once-brand);color:var(--once-on-brand);}
.post_related_list a{color:var(--once-text);}
.post_related_list a:hover{color:var(--once-link);}
.post_related_list a:before{background-color:var(--once-brand-soft);}
.cat_info_top p{color:var(--once-muted);}
.nopic_des a{background:var(--once-brand);color:var(--once-on-brand);border-radius:var(--once-btn-radius);}

/* ---------- 正文 ---------- */
/* text-align:left 覆盖 style.css:454 的 justify：官网 prose 是默认左对齐，
   两端对齐在中英混排时会拉开拉丁词间距，还会被 pre / table 继承。 */
.wznrys{color:var(--once-slate-700);font-size:16px;line-height:var(--once-line-height);text-align:left;}
.wznrys p,
.wznrys ol li,
.wznrys ul li{line-height:var(--once-line-height);}
:lang(zh-CN) .wznrys p,
:lang(zh-CN) .wznrys ol li,
:lang(zh-CN) .wznrys ul li,
:lang(zh-CN) .wznrys td,
:lang(zh-CN) .wznrys th,
:lang(zh-CN) .wznrys blockquote{line-height:var(--once-line-height-cjk);}
.wznrys h1,.wznrys h2,.wznrys h3,.wznrys h4,.wznrys h5,.wznrys h6{color:var(--once-heading);font-weight:700;letter-spacing:-.01em;}
.wznrys h2{border-bottom:1px solid var(--once-border);}
.wznrys h5{color:var(--once-heading);}
.wznrys h6{color:var(--once-faint);}
/* 表格 / 定义列表里的链接原本落到 a{color:var(--once-text)}，既不是橙色也没有下划线，
   读者看不出可点——安全类文章的 IOC 表、参考来源表正是高频场景。
   blockquote / figcaption 里的链接已被 `.wznrys p a` 覆盖。标题锚点不上色，勿加 h1..h6 a。 */
.wznrys p a,
.wznrys ol li a,
.wznrys ul li a,
.wznrys td a,
.wznrys th a,
.wznrys caption a,
.wznrys dd a,
.wznrys dt a{
  color:var(--once-link);
  font-weight:500;
  border-bottom:none;
  text-decoration:underline;
  text-decoration-color:var(--once-link-underline);
  text-decoration-thickness:1px;
  text-underline-offset:2px;
  margin:0;
}
.wznrys p a:hover,
.wznrys ol li a:hover,
.wznrys ul li a:hover,
.wznrys td a:hover,
.wznrys th a:hover,
.wznrys caption a:hover,
.wznrys dd a:hover,
.wznrys dt a:hover{color:var(--once-link-hover);text-decoration-color:var(--once-brand);}
.wznrys blockquote{
  border-left:4px solid var(--once-brand);
  background-color:var(--once-slate-50);
  border-radius:var(--once-radius-sm);
}
/* 官网 prose 的 blockquote 明确 not-italic font-normal；保留显式 400 以免被上游规则回退。
   引用内的 <strong> 仍由 .wznrys strong 保持粗体，强调对比因此恢复。 */
.wznrys blockquote p{font-weight:400;}
.wznrys blockquote cite{color:var(--once-faint);}
.wznrys hr:after{background-color:var(--once-border);}
.wznrys hr:before{background-color:var(--once-slate-400);}
.wznrys pre,
.comment-content pre{border:1px solid var(--once-border);border-radius:var(--once-radius);box-shadow:none;}
.wznrys :not(pre)>code,
.comment-content :not(pre)>code{
  background:var(--once-slate-100);
  border:1px solid var(--once-border);
  border-radius:var(--once-radius-sm);
  color:var(--once-heading);
  font-family:var(--once-font-mono);
}
.wznrys table thead th,
.wznrys table.table thead th{
  background:var(--once-slate-50);
  color:var(--once-heading);
  border-bottom:1px solid var(--once-border);
}
.wznrys table table{border-color:var(--once-border);}
.wznrys table table tr,
.wznrys table table tr td,
.wznrys table table tr th{border-color:var(--once-border);}
.wznrys .wp-caption p.wp-caption-text,
.wznrys figcaption{color:var(--once-faint);}

/* ---------- 评论 ---------- */
#comments .comments-title{border-bottom:2px solid var(--once-border);color:var(--once-heading);}
#comments .comment-list li .comment-body{border-bottom:1px solid var(--once-border);}
#comments form.comment-form .comment-form-comment textarea,
#comments form.comment-form p input{
  background:var(--once-slate-50);
  color:var(--once-text);
  border:1px solid var(--once-border);
  border-radius:var(--once-radius-sm);
}
#comments form.comment-form .form-submit .submit{
  background:var(--once-brand);
  color:var(--once-on-brand);
  border:none;
  border-radius:var(--once-btn-radius);
  font-weight:600;
}
#comments form.comment-form .form-submit .submit:hover{background:var(--once-brand-hover);color:var(--once-on-brand);}
.butterBar-message{background:var(--once-brand);color:var(--once-on-brand);}

/* ---------- 页脚（结构性样式在 noransom.css） ---------- */
.links{background:var(--once-footer-bg);border-top:1px solid var(--once-footer-border);}
.footbox{background:var(--once-footer-bg);border-top:none;}
.links a,.links span,
.foot a,.foot .copyright p,.foot .copyright p a,
.foot .foot_nav .dbdh ul li a,
.foot .foot_nav .beian{color:var(--once-footer-text);}
.links a:hover,
.foot .foot_nav .dbdh ul li a:hover,
.foot .copyright p a:hover{color:var(--once-footer-link-hover);}

/* ---------- 语言提示弹窗 ---------- */
.once-lang-prompt-box{border-radius:var(--once-radius);}
.once-lang-prompt-primary{background:var(--once-brand);border-radius:var(--once-btn-radius);}
.once-lang-prompt-primary:hover{background:var(--once-brand-hover);}

/* ============================================================
 * 深色模式：变量已在 :root.dark 覆盖，这里只处理 style.css 里
 * 写死颜色的 .dark 规则。页头 / 页脚本来就是深色，不需要再变。
 * ============================================================ */
.dark body{background-color:var(--once-bg);color:var(--once-text);background-blend-mode:normal;}
.dark a{color:var(--once-text);}
.dark a:hover{color:var(--once-brand);}
.dark .header{background:var(--once-header-bg);border-bottom:1px solid var(--once-header-border);}
.dark .top .top_l .logo a b{color:var(--once-header-text);}
.dark .top .top_l .logo a img,
.dark #mobile_right_nav .mobile_head .mobile_head_logo img{background-color:transparent;}
.dark .top .top_r .top_r_an{color:var(--once-header-muted);}
.dark .top .top_r .top_r_an.theme-switch{background:var(--once-header-chip);color:var(--once-accent-400);}
.dark .top .top_r .top_r_an:hover{background:var(--once-header-hover);color:var(--once-header-text);}
.dark .mobile_an{color:var(--once-header-text);}
.dark .header-menu .header-menu-ul li a,
.dark .header-menu .header-menu-ul li button{color:var(--once-header-muted);}
.dark .header-menu .header-menu-ul li a:hover,
.dark .header-menu .header-menu-ul li button:hover,
.dark .header-menu .header-menu-ul li a.current{color:var(--once-header-text);background:var(--once-header-hover);}
.dark .header-menu .header-menu-ul li .sub-menu{background:var(--once-surface);border:1px solid var(--once-border);}
.dark .header-menu .header-menu-ul li .sub-menu li a,
.dark .header-menu .header-menu-ul li .sub-menu li button{color:var(--once-text);}
.dark .header-menu .header-menu-ul li .sub-menu li a:hover,
.dark .header-menu .header-menu-ul li .sub-menu li button:hover{background:var(--once-subtle);color:var(--once-brand);}
.dark #mobile_right_nav{background:var(--once-brand-950);}
.dark #mobile_right_nav .mobile_head{background:var(--once-brand-900);}
.dark #mobile_right_nav .mobile_head .mobile_head_logo b{color:var(--once-header-text);}
.dark #mobile_right_nav .mobile_head .theme-switch{background:var(--once-header-chip);color:var(--once-accent-400);}
.dark #mobile_right_nav .menu-zk{background:var(--once-brand-900);}
.dark #mobile_right_nav .menu-zk li a,
.dark #mobile_right_nav .menu-zk li button{color:var(--once-header-muted);border-bottom:1px solid var(--once-header-border);}
.dark #mobile_right_nav .menu-zk .sub-menu{background:var(--once-brand-800);}
.dark #mobile_right_nav .menu-zk li.menu-item-back-to-site a{color:var(--once-on-brand);}
.dark #mobile_right_nav .menu-zk .menu-item-has-children .czxjcdbs:before{background:var(--once-header-chip);}
.dark .post_def,
.dark .post_gallery,
.dark .widget,
.dark .cat_info_top,
.dark .post_container_title,
.dark .post_container,
.dark .post_author,
.dark .post_related,
.dark .author_show_box,
.dark .links-page-item,
.dark #comments{background:var(--once-surface);border-color:var(--once-border);}
.dark .post_container_title{border-bottom-color:var(--once-border);}
.dark .post_author{border-top-color:var(--once-border);}
.dark .post_def .post_def_right .post_def_title h2 a{color:var(--once-heading);}
.dark .post_def:hover .post_def_right .post_def_title h2 a{color:var(--once-brand);}
.dark .post_def .post_def_right .post_def_title p{color:var(--once-muted);}
.dark .post_info,
.dark .post_info .post_info_l span a,
.dark .post_info .post_info_r em,
.dark .post_info .post_info_r em a,
.dark .links-page-desc,
.dark .tags-page .tagcloud a .tag-count{color:var(--once-faint);}
.dark .widget-title{color:var(--once-heading);}
.dark .widget-title:after{background:var(--once-border);}
.dark .widget_hot_tags .tagcloud a{background-color:var(--once-subtle);color:var(--once-muted);}
.dark .widget_hot_tags .tagcloud a:hover{background:var(--once-brand);color:var(--once-on-brand);}
.dark .widget_hot_tags .tagcloud a.hot:before{background:var(--once-brand);border-color:var(--once-surface);}
.dark .widget_comment_ul li{border-bottom:1px solid var(--once-border);}
.dark .widget_recent_entries ul li{border-left:2px solid var(--once-border);}
.dark .widget_recent_entries ul li:before{background-color:var(--once-surface);}
.dark .widget_recent_entries ul li:after{border-color:var(--once-surface);background-color:var(--once-brand);}
.dark .widget_search #s{background:var(--once-subtle);color:var(--once-text);}
.dark .post_container_title h1,
.dark .wznrys h1,.dark .wznrys h2,.dark .wznrys h3,
.dark .wznrys h4,.dark .wznrys h5,.dark .wznrys h6{color:var(--once-heading);}
.dark .wznrys{color:var(--once-text);font-size:16px;}
.dark .wznrys h2{border-bottom:1px solid var(--once-border);}
.dark .wznrys h6{color:var(--once-faint);}
.dark .wznrys h4:before{background:var(--once-brand-soft);}
.dark .wznrys p a,
.dark .wznrys ol li a,
.dark .wznrys ul li a,
.dark .wznrys td a,
.dark .wznrys th a,
.dark .wznrys caption a,
.dark .wznrys dd a,
.dark .wznrys dt a{color:var(--once-link);text-decoration-color:var(--once-link-underline);}
.dark .wznrys p a:hover,
.dark .wznrys ol li a:hover,
.dark .wznrys ul li a:hover,
.dark .wznrys td a:hover,
.dark .wznrys th a:hover,
.dark .wznrys caption a:hover,
.dark .wznrys dd a:hover,
.dark .wznrys dt a:hover{color:var(--once-link-hover);}
.dark .wznrys blockquote,
.dark .comment-content blockquote{border-left:4px solid var(--once-brand);background-color:var(--once-subtle);}
.dark .wznrys blockquote p,
.dark .comment-content blockquote p{color:var(--once-heading);}
.dark .wznrys blockquote cite,
.dark .comment-content blockquote cite{color:var(--once-faint);}
.dark .wznrys :not(pre)>code,
.dark .comment-content :not(pre)>code{background:var(--once-subtle);border-color:var(--once-border);color:var(--once-heading);}
.dark .wznrys pre,
.dark .comment-content pre{background:var(--once-brand-950);border-color:var(--once-border);}
.dark .wznrys table table,
.dark .wznrys table table tr,
.dark .wznrys table table tr td,
.dark .wznrys table table tr th{border-color:var(--once-border);}
.dark .wznrys table table{background:var(--once-surface);color:var(--once-text);}
.dark .wznrys table thead th,
.dark .wznrys table table thead th,
.dark .wznrys table.table thead th{background:var(--once-subtle);color:var(--once-heading);}
.dark .post_related_list a{color:var(--once-text);}
.dark .post_related_list a:hover{color:var(--once-brand);}
.dark .post_author_r .post_author_tag em{background:var(--once-subtle);color:var(--once-muted);}
/* border-radius 取回 style.css:69 的 4px（那条特异性 (0,2,1) 压过浅色的 skin.css 规则），
   否则同一个「加载更多」按钮浅色 6px、深色 4px。 */
.dark .post-read-more a{background:var(--once-surface);color:var(--once-muted);border-color:var(--once-border);border-radius:var(--once-btn-radius);}
.dark .post-read-more a:hover{background:var(--once-surface);border-color:var(--once-brand);color:var(--once-brand);}
.dark .post-read-more a.loading{background:var(--once-brand);color:var(--once-on-brand);}
.dark .posts-nav .page-numbers{background:var(--once-surface);color:var(--once-muted);border-color:var(--once-border);}
.dark .posts-nav .page-numbers:hover,
.dark .posts-nav .current{background:var(--once-brand);color:var(--once-on-brand);border-color:var(--once-brand);}
.dark #comments .comments-title{border-bottom:2px solid var(--once-border);color:var(--once-heading);}
.dark #comments .comment-list li .comment-body{border-bottom:1px solid var(--once-border);}
.dark #comments form.comment-form .comment-form-comment textarea,
.dark #comments form.comment-form p input{background:var(--once-subtle);color:var(--once-text);border-color:var(--once-border);}
.dark #comments form.comment-form .form-submit .submit{background:var(--once-brand);color:var(--once-on-brand);}
.dark #c_sousuo{background:var(--once-surface);}
.dark #c_sousuo .search_box .ss_a{border:2px solid var(--once-border);}
/* bootstrap 的 .btn-close 背景图是写死的黑色 × SVG，压在深色面板上几乎看不见。
   移动抽屉那个（skin.css 上方）已经这么处理，搜索面板漏了。用 .dark 前缀，
   不能改用 .btn-close-white：那会让浅色下白 × 压白底。 */
.dark #c_sousuo .btn-close{filter:invert(1) grayscale(1);opacity:.7;}
.dark #c_sousuo .btn-close:hover{opacity:1;}
.dark .author_post{border-top:1px solid var(--once-border);}
.dark .links,
.dark .footbox{background:var(--once-footer-bg);border-top:none;}
.dark .links a,
.dark .foot .foot_nav .beian,
.dark .foot a,
.dark .foot .copyright p,
.dark .foot .copyright p a,
.dark .foot .foot_nav .dbdh ul li a{color:var(--once-footer-text);}
.dark .scrollToTopBtn{background-color:var(--once-subtle);color:var(--once-text);}
.dark .scrollToTopBtn:hover{background:var(--once-brand);color:var(--once-on-brand);}
