/* AI 网络工具箱 — 纯白卡片 × 亮/暗切换 */
:root{
  --bg:#FFFFFF; --card:#FFFFFF; --ink:#1B1B1B; --dim:#666666; --faint:#9A9A9A;
  --line:#E9E9E6; --accent:#C15F3C; --accent-soft:#FBEDE3;
  --green:#1F7A44; --amber:#9A6410; --red:#C0392B;
  --shadow:0 1px 3px rgba(0,0,0,.07), 0 4px 14px rgba(0,0,0,.04);
  --sk1:#EFEFEc; --sk2:#F7F7F5;
  --input-bg:#FFFFFF;
}
[data-theme="dark"]{
  --bg:#141416; --card:#1D1D20; --ink:#ECECEC; --dim:#A9A9A9; --faint:#6F6F6F;
  --line:#2B2B2F; --accent:#E08A5F; --accent-soft:#3A241A;
  --green:#4CC38A; --amber:#E0A83E; --red:#E06C5B;
  --shadow:0 1px 3px rgba(0,0,0,.5);
  --sk1:#26262A; --sk2:#1D1D20;
  --input-bg:#1D1D20;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html{scroll-behavior:smooth;}
body{margin:0; background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;}
.serif{font-family:Georgia,"Times New Roman","Songti SC","STSong",serif;}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
.wrap{max-width:1080px; margin:0 auto; padding:0 20px 60px;}
.hidden{display:none !important;}

/* 顶栏 */
.topnav{position:sticky; top:0; z-index:40; background:var(--bg); border-bottom:1px solid var(--line);}
.topnav .in{max-width:1080px; margin:0 auto; padding:0 20px; display:flex;
  align-items:center; gap:2px; overflow-x:auto; scrollbar-width:none; height:52px;}
.topnav .in::-webkit-scrollbar{display:none;}
.topnav a.nl{flex:none; font-size:14.5px; font-weight:600; color:var(--dim);
  text-decoration:none; padding:8px 10px; position:relative; white-space:nowrap;}
.topnav a.nl.on{color:var(--ink);}
.topnav a.nl.on::after{content:""; position:absolute; left:10px; right:10px; bottom:2px;
  height:2.5px; border-radius:2px; background:var(--accent);}
.theme-btn{flex:none; margin-left:auto; border:1px solid var(--line); background:var(--card);
  color:var(--dim); width:34px; height:34px; border-radius:50%; cursor:pointer; font-size:16px;
  display:flex; align-items:center; justify-content:center;}
.more{position:relative; flex:none;}
.more>button{border:0; background:none; font-size:14.5px; font-weight:600; color:var(--dim);
  padding:8px 10px; cursor:pointer; font-family:inherit;}
.more .menu{position:absolute; right:0; top:110%; min-width:150px; background:var(--card);
  border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow);
  padding:6px; display:none; z-index:50;}
.more.open .menu{display:block;}
.more .menu a{display:block; font-size:14px; color:var(--ink); text-decoration:none;
  padding:9px 12px; border-radius:8px;}
.more .menu a:hover{background:var(--line);}

/* 标题区 */
.pagehead{padding:22px 0 4px;}
.pagehead h1{font-size:26px; margin:0 0 8px; letter-spacing:.5px;}
.pagehead .desc{font-size:13.5px; color:var(--dim); line-height:1.8; margin:0;}
.warnbar{margin-top:12px; background:var(--accent-soft); border:1px solid var(--line);
  color:var(--ink); font-size:12.5px; line-height:1.7; border-radius:10px; padding:10px 14px;}
.warnbar a{color:var(--accent); font-weight:700;}
.maskrow{display:flex; align-items:center; gap:8px; margin-top:12px; font-size:13px; color:var(--dim);}
.maskrow input{width:16px; height:16px; accent-color:var(--accent);}

/* 卡片 */
.card{background:var(--card); border:1px solid var(--line); border-radius:12px;
  box-shadow:var(--shadow); padding:16px 18px; margin-top:14px;}
.card-title{display:flex; align-items:center; justify-content:space-between; gap:10px;
  font-size:11.5px; font-weight:700; letter-spacing:1.8px; color:var(--faint); margin-bottom:4px;}
.card-title .t{display:flex; align-items:center; gap:8px;}
/* 卡片内分节 */
.ipsec{padding:10px 0; border-bottom:1px solid var(--line);}
.ipsec:last-child{border-bottom:0; padding-bottom:2px;}
.ipsec:first-child{padding-top:2px;}
.ipsec .lab{font-size:11px; font-weight:700; letter-spacing:1.8px; color:var(--faint); margin-bottom:4px;}

/* 网格 */
.cards{display:block;}
@media (min-width:900px){
  .cards{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; align-items:start;}
  .cards .card{margin-top:14px;}
}
.cols2{display:grid; grid-template-columns:1fr; gap:0;}
@media (min-width:700px){
  .cols2{grid-template-columns:1fr 1fr; gap:14px; align-items:start;}
  .cols2 .card{margin-top:14px;}
}
@media (min-width:900px){
  .rows2{display:grid; grid-template-columns:1fr 1fr; column-gap:32px;}
}

/* IP 大字 */
.ip-hero{padding:2px 0;}
.ip-addr{font-size:23px; font-weight:700; letter-spacing:.5px; word-break:break-all;}
.ip-geo{font-size:12.5px; color:var(--dim); margin-top:5px; line-height:1.7;}

/* 行 */
.row{display:flex; align-items:baseline; justify-content:space-between; gap:12px;
  padding:8px 0; border-bottom:1px solid var(--line); font-size:13.5px;}
.row:last-child{border-bottom:0;}
.row .k{color:var(--dim); flex:none;}
.row .v{text-align:right; word-break:break-all; line-height:1.65;}
.row .v.dim{color:var(--faint);}

/* 徽章 */
.badge{display:inline-block; font-size:12px; font-weight:600; padding:3px 11px;
  border-radius:99px; white-space:nowrap;}
.b-green{background:color-mix(in srgb, var(--green) 13%, transparent); color:var(--green);}
.b-amber{background:color-mix(in srgb, var(--amber) 14%, transparent); color:var(--amber);}
.b-red{background:color-mix(in srgb, var(--red) 12%, transparent); color:var(--red);}
.b-gray{background:color-mix(in srgb, var(--dim) 12%, transparent); color:var(--dim);}

/* 仪表 */
.gauge-wrap{padding:6px 0 0; text-align:center;}
.gauge-score{font-size:44px; font-weight:700; font-variant-numeric:tabular-nums;}
.gauge-score small{font-size:14px; color:var(--faint); font-weight:400;}
.gauge{position:relative; height:12px; border-radius:99px; margin:12px 4px 3px;
  background:linear-gradient(90deg,#C0392B 0%,#E67E22 35%,#F1C40F 55%,#7FB069 75%,#2F9E5F 100%);}
.gauge .ptr{position:absolute; top:-6px; width:4px; height:24px; background:var(--ink);
  border-radius:2px; transform:translateX(-50%); transition:left 1s cubic-bezier(.2,.8,.2,1);}
.gauge-labels{display:flex; justify-content:space-between; font-size:11px; color:var(--faint); margin:0 2px;}
.gauge-note{font-size:12.5px; color:var(--dim); line-height:1.75; margin-top:8px;}
.gauge-note b{color:var(--ink);}

/* 骨架 */
.sk{border-radius:6px; background:linear-gradient(90deg,var(--sk1),var(--sk2),var(--sk1));
  background-size:200% 100%; animation:sk 1.2s infinite; color:transparent !important;}
@keyframes sk{to{background-position:-200% 0;}}

/* 按钮 */
.btn-s{flex:none; font-size:12.5px; font-weight:600; color:var(--dim);
  background:var(--card); border:1px solid var(--line); border-radius:8px;
  padding:5px 12px; cursor:pointer; font-family:inherit; white-space:nowrap;}
.btn-s:hover{color:var(--accent); border-color:var(--accent);}
.btn-p{width:100%; margin-top:14px; padding:14px; font-size:15.5px; font-weight:700;
  color:#fff; background:var(--accent); border:0; border-radius:10px; cursor:pointer; font-family:inherit;}
.btn-p:disabled{opacity:.6;}

/* 表格 */
table.plain{width:100%; border-collapse:collapse; font-size:13.5px; margin-top:8px;}
table.plain th{font-size:12px; color:var(--faint); font-weight:600; text-align:left;
  padding:8px 6px; border-bottom:1px solid var(--line);}
table.plain td{padding:10px 6px; border-bottom:1px solid var(--line); word-break:break-all;}
table.plain tr:last-child td{border-bottom:0;}

/* 输入 */
.inputrow{display:flex; gap:10px; margin-top:12px;}
.inputrow input{flex:1; min-width:0; font-size:15px; padding:12px 14px; color:var(--ink);
  border:1px solid var(--line); border-radius:10px; outline:none; background:var(--input-bg); font-family:inherit;}
.inputrow input:focus{border-color:var(--accent);}
.inputrow button{flex:none; padding:0 22px; font-size:14.5px; font-weight:700; color:#fff;
  border:0; border-radius:10px; cursor:pointer; background:var(--accent); font-family:inherit;}

/* 文字链矩阵 */
.reading-grid{display:grid; grid-template-columns:1fr;}
@media (min-width:700px){ .reading-grid{grid-template-columns:repeat(3,1fr); column-gap:32px;} }
.rlink{display:block; text-decoration:none; padding:10px 2px; border-bottom:1px solid var(--line); color:var(--ink);}
.rlink b{font-size:13.5px; font-weight:600; display:flex; justify-content:space-between; align-items:center; gap:8px;}
.rlink b::after{content:"›"; color:var(--faint); font-weight:400; flex:none;}
.rlink small{font-size:12px; color:var(--faint); display:block; margin-top:2px; line-height:1.5;}
.rlink:hover b{color:var(--accent);}

/* 推广 */
.spon{font-size:10.5px; letter-spacing:2px; color:var(--faint);}
.aff{display:block; text-decoration:none; color:var(--ink); padding:12px 2px;
  border-bottom:1px solid var(--line);}
.aff:last-child{border-bottom:0;}
.aff b{font-size:14px;}
.aff .go{float:right; color:var(--accent); font-weight:700;}
.aff p{font-size:12.5px; color:var(--dim); margin:5px 0 0; line-height:1.7;}
.aff .badge{margin-left:8px;}

/* FAQ */
.faq{margin-top:30px;}
.faq h2{font-size:20px; margin:0 0 6px;}
.faq .card{padding:6px 18px;}
details{border-bottom:1px solid var(--line); padding:13px 0;}
details:last-child{border-bottom:0;}
summary{font-size:14.5px; font-weight:700; cursor:pointer; list-style:none;
  display:flex; justify-content:space-between; align-items:center; gap:10px;}
summary::-webkit-details-marker{display:none;}
summary::after{content:"+"; color:var(--accent); font-size:19px; flex:none;}
details[open] summary::after{content:"–";}
details .a{font-size:13.5px; color:var(--dim); line-height:1.95; margin:10px 0 2px;}
details .a b{color:var(--ink);}

/* 文章 */
.crumb{display:inline-block; font-size:13px; color:var(--dim); text-decoration:none; margin-bottom:10px;}
.crumb:hover{color:var(--accent);}
.article{font-size:14px; line-height:2; color:var(--ink);}
.article h2{font-size:17px; margin:20px 0 8px; padding-top:14px; border-top:1px solid var(--line);}
.article h2:first-child{border-top:0; padding-top:0; margin-top:0;}
.article p{margin:8px 0; color:var(--ink); opacity:.92;}
.article ul, .article ol{margin:8px 0; padding-left:20px;}
.article li{margin:5px 0;}
.article code{font-family:ui-monospace,Menlo,monospace; font-size:12.5px;
  background:color-mix(in srgb, var(--dim) 10%, transparent);
  padding:2px 7px; border-radius:6px; word-break:break-all;}
.article pre{background:#26221c; color:#e8e0d0; font-size:12.5px; line-height:1.8;
  padding:14px; border-radius:10px; overflow-x:auto;}
.article pre code{background:none; padding:0; color:inherit;}
.article a{color:var(--accent); text-decoration:underline; text-underline-offset:3px;}
.article .tip{background:var(--accent-soft); border:1px solid var(--line); border-radius:10px;
  padding:10px 14px; font-size:13px; margin:12px 0;}

/* news */
.news-item{display:block; text-decoration:none; color:var(--ink); padding:14px 0;
  border-bottom:1px solid var(--line);}
.news-item:last-child{border-bottom:0;}
.news-item .d{font-size:12px; color:var(--faint); letter-spacing:1px;}
.news-item h3{font-size:15.5px; margin:6px 0;}
.news-item p{font-size:13px; color:var(--dim); margin:0; line-height:1.8;}

footer{margin-top:34px; font-size:12px; color:var(--faint); line-height:2.1; text-align:center;}
footer .flinks{margin-bottom:8px;}
footer .flinks a{color:var(--dim); text-decoration:none; margin:0 8px; font-size:12.5px;}

.spin{display:inline-block; width:16px; height:16px; border:2.5px solid var(--line);
  border-top-color:var(--accent); border-radius:50%; animation:sp .8s linear infinite; vertical-align:-3px;}
@keyframes sp{to{transform:rotate(360deg);}}
