/* AI Hive 羊毛站：车站翻牌时刻表 */

/* D-DIN Condensed Bold（Datto Inc.，SIL OFL 1.1，许可见 /assets/fonts/OFL-1.1.txt），原样自托管，只覆盖拉丁字符；中文仍用系统黑体 */
@font-face {
  font-family: "D-DIN Condensed";
  src: url("/assets/fonts/D-DINCondensed-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+20AC;
}

:root {
  --ground: #0c0c0d;
  --frame: #1b1b1c;
  --panel: #222223;
  --panel-2: #29292b;
  --rule: #2e2e30;
  --rule-2: #3d3d40;
  --ink: #efeadf;
  --ink-2: #b4b8bf;
  --ink-3: #929294;
  --flap-t: #333335;
  --flap-b: #2a2a2c;
  --flap-ink: #f3eee2;
  --amber: #f2a900;
  --amber-ink: #f6c24a;
  --red: #e5574c;
  --red-ink: #ff8f85;
  --green: #45c486;
  --green-ink: #82dcb0;
  --blue: #6aa8d8;
  --red-deep: #b3392f;
  --num: "D-DIN Condensed", "DIN Condensed", "Bahnschrift", "Roboto Condensed", "Arial Narrow", sans-serif;
  --sans: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;
  --r: 6px;
  --r-sm: 4px;
  color-scheme: dark;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scrollbar-color: var(--rule-2) var(--ground); }
body { margin: 0; background: var(--ground); color: var(--ink); font: 15px/1.6 var(--sans); -webkit-font-smoothing: antialiased; caret-color: var(--ink); }
/* 背景：车站大厅。顶灯光晕 + LED 点阵面板（越往下越淡）+ 缓慢的点阵刷新扫描带 */
body::before, body::after {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
}
body::before {
  background:
    radial-gradient(ellipse 75% 50% at 50% -12%, rgba(239, 234, 223, .15), rgba(239, 234, 223, .045) 45%, transparent 72%),
    radial-gradient(circle at 1px 1px, rgba(239, 234, 223, .28) 1px, transparent 1.5px) 0 0 / 7px 7px,
    radial-gradient(circle at 1px 1px, rgba(239, 234, 223, .10) 1px, transparent 1.5px) 3.5px 3.5px / 7px 7px;
  -webkit-mask-image: linear-gradient(to bottom, #efeadf 0, rgba(239, 234, 223, .55) 40%, rgba(239, 234, 223, .18) 100%);
  mask-image: linear-gradient(to bottom, #efeadf 0, rgba(239, 234, 223, .55) 40%, rgba(239, 234, 223, .18) 100%);
}
body::after {
  background: radial-gradient(circle at 1px 1px, rgba(239, 234, 223, .6) 1.1px, transparent 1.7px) 0 0 / 7px 7px;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #efeadf 50%, transparent);
  mask-image: linear-gradient(to bottom, transparent, #efeadf 50%, transparent);
  -webkit-mask-size: 100% 220px; mask-size: 100% 220px;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: 0 -220px; mask-position: 0 -220px;
  opacity: .85;
  animation: led-scan 9s cubic-bezier(.4, 0, .6, 1) infinite;
}
@keyframes led-scan {
  0% { -webkit-mask-position: 0 -220px; mask-position: 0 -220px; }
  70%, 100% { -webkit-mask-position: 0 calc(100vh + 220px); mask-position: 0 calc(100vh + 220px); }
}

::selection { background: var(--ink); color: #121212; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--ground); }
::-webkit-scrollbar-thumb { background: var(--rule-2); border-radius: 5px; border: 2px solid var(--ground); }
a { color: inherit; text-underline-offset: 3px; text-decoration-thickness: 1px; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: 2px; }
h1, h2, h3 { margin: 0; line-height: 1.25; letter-spacing: -0.01em; }
p { margin: 0; }
.sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: 12px; top: -48px; background: var(--ink); color: #111; padding: 8px 12px; border-radius: var(--r); z-index: 20; }
.skip:focus { top: 8px; }
.ic { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- 顶栏 ---------- */
.top { position: sticky; top: 0; z-index: 10; background: rgba(12, 12, 13, .94); border-bottom: 1px solid var(--rule); backdrop-filter: saturate(140%) blur(8px); }
.top-in, .foot-in, main > * { width: min(1180px, 100% - 32px); margin-inline: auto; }
.top-in { display: flex; align-items: center; gap: 24px; height: 60px; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; font-weight: 700; font-size: 16px; white-space: nowrap; }
.brand-name { display: flex; align-items: center; gap: 10px; }
.f-brand { font-size: 17px; }
.f-brand .fc-sp { width: .3em; box-shadow: none; }
.f-brand .fc-sp .h { background: transparent; }
.brand b { color: var(--ink-2); font-weight: 700; }
.nav { display: flex; gap: 4px; margin-left: auto; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.nav a { padding: 8px 12px; border-radius: var(--r); text-decoration: none; color: var(--ink-2); white-space: nowrap; transition: color .15s, background .15s; }
.nav a:hover { color: var(--ink); background: var(--panel); }
.nav a[aria-current="page"] { color: var(--ink); background: var(--panel-2); box-shadow: inset 0 -2px 0 var(--ink); }

/* ---------- 翻牌 ---------- */
.flaps { display: inline-flex; gap: 2px; font-family: var(--num); font-weight: 700; font-stretch: condensed; font-variant-numeric: tabular-nums; line-height: 1; color: var(--flap-ink); vertical-align: middle; }
.flaps:not(.is-live) { letter-spacing: .08em; }
.flaps .cells { display: inline-flex; gap: 2px; }
.fc { position: relative; display: inline-block; width: .68em; height: 1.32em; perspective: 260px; border-radius: 3px; box-shadow: 0 1px 0 rgba(0, 0, 0, .7), 0 2px 4px rgba(0, 0, 0, .35); }
.fc-w { width: 1.18em; font-family: var(--sans); font-weight: 700; font-size: .86em; height: 1.535em; }
.fc-p { width: .4em; }
.fc .h { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; border-radius: 3px; backface-visibility: hidden; transform-origin: 50% 50%; overflow: hidden; }
.fc .t { background: var(--flap-t); clip-path: inset(0 0 50% 0); }
.fc .b { background: var(--flap-b); clip-path: inset(50% 0 0 0); }
.fc::after { content: ""; position: absolute; left: 0; right: 0; top: calc(50% - .5px); height: 1px; background: rgba(4, 5, 6, .9); box-shadow: 0 1px 0 rgba(255, 255, 255, .05); z-index: 3; pointer-events: none; }
.fc .leaf { z-index: 2; }
.fc .t.leaf { background: var(--flap-t); }
.fc .b.leaf { background: var(--flap-b); }
.fc-sp .h { color: transparent; }
.f-dim { color: var(--ink-3); }
.f-calm { color: var(--flap-ink); }

/* ---------- 页头 ---------- */
main { padding-bottom: 72px; }
.board-head { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 14px 24px; padding: 34px 0 20px; }
.board-head h1 { font-size: 30px; font-weight: 800; }
.sign { justify-self: start; display: inline-grid; gap: 6px; padding: 14px 22px 12px; background: #101011 radial-gradient(circle at 1.5px 1.5px, rgba(239, 234, 223, .09) 1px, transparent 1.4px) 0 0 / 3px 3px; border: 1px solid #070707; border-radius: 6px; box-shadow: 0 0 0 1px var(--rule-2), 0 14px 30px -16px rgba(0, 0, 0, .9); }
.sign-zh { margin: 0; line-height: 1; }
.led { display: inline-block; font-size: 44px; font-weight: 900; letter-spacing: .06em; line-height: 1.1; color: var(--ink);
  -webkit-mask: radial-gradient(circle at 1.5px 1.5px, #efeadf 1.15px, transparent 1.45px) 0 0 / 3px 3px;
  mask: radial-gradient(circle at 1.5px 1.5px, #efeadf 1.15px, transparent 1.45px) 0 0 / 3px 3px; }
.sign-en { font-family: var(--num); font-weight: 700; font-size: 13px; letter-spacing: .34em; color: var(--ink-3); }
.board-head h1 .flaps { font-size: 64px; }
.lede { grid-column: 1 / -1; max-width: 62ch; color: var(--ink-2); }
.clock { display: flex; align-items: center; gap: 10px; color: var(--ink-3); font-size: 13px; }
.f-clock { font-size: 26px; }

/* ---------- 筛选 ---------- */
.filters { display: grid; gap: 12px; padding: 14px; background: var(--frame); border: 1px solid var(--rule); border-radius: 10px; }
.search { display: flex; align-items: center; gap: 10px; height: 46px; padding: 0 14px; background: var(--ground); border: 1px solid var(--rule-2); border-radius: var(--r); color: var(--ink-3); transition: border-color .15s; }
.search:focus-within { border-color: var(--ink-3); }
.search input { flex: 1; min-width: 0; height: 100%; background: none; border: 0; outline: 0; color: var(--ink); font: inherit; font-size: 16px; }
.search input::placeholder { color: var(--ink-3); }
.f-top { display: flex; gap: 8px; }
.f-top .search { flex: 1; }
.btn.f-toggle { display: none; height: 46px; }
.f-n:not(:empty) { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--ink); color: #121212; font-size: 12px; }
.f-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.sel { display: flex; align-items: center; gap: 8px; white-space: nowrap; height: 38px; padding-left: 12px; background: var(--panel); border: 1px solid var(--rule-2); border-radius: var(--r); color: var(--ink-3); font-size: 13px; }
.sel select { height: 100%; padding: 0 32px 0 2px; appearance: none; background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b4b8bf' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 10px center / 14px; border: 0; color: var(--ink); font: inherit; font-size: 14px; cursor: pointer; }
.sel select option { background: var(--panel); color: var(--ink); }
.sel:focus-within { border-color: var(--ink-3); }
.tgl, .seg label { position: relative; display: inline-flex; }
.tgl input, .seg input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.tgl span, .seg span { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 14px; border: 1px solid var(--rule-2); border-radius: var(--r); background: var(--panel); color: var(--ink-2); font-size: 14px; white-space: nowrap; transition: background .15s, border-color .15s, color .15s; }
.tgl span::before { content: ""; width: 14px; height: 14px; border: 1.5px solid var(--ink-3); border-radius: 3px; transition: .15s; }
.tgl input:checked + span { color: var(--ink); border-color: var(--green); background: rgba(69, 196, 134, .1); }
.tgl input:checked + span::before { background: var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101112' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7'/%3E%3C/svg%3E") center / 11px no-repeat; border-color: var(--green); }
.tgl input:focus-visible + span, .seg input:focus-visible + span { outline: 2px solid var(--ink); outline-offset: 2px; }
.tgl:hover span, .seg label:hover span { color: var(--ink); }
.seg { display: inline-flex; margin: 0; padding: 0; border: 0; }
.seg label + label span { margin-left: -1px; }
.seg label:first-of-type span { border-radius: var(--r) 0 0 var(--r); }
.seg label:last-of-type span { border-radius: 0 var(--r) var(--r) 0; }
.seg label:not(:first-of-type):not(:last-of-type) span { border-radius: 0; }
.seg input:checked + span { position: relative; z-index: 1; color: var(--flap-ink); background: linear-gradient(var(--flap-t) 50%, var(--flap-b) 50%); border-color: var(--ink-3); font-weight: 700; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .5); }
.f-row2 { justify-content: flex-start; }
.count { margin-left: auto; color: var(--ink-3); font-size: 13px; font-variant-numeric: tabular-nums; }
.local-note { color: var(--ink-3); font-size: 12.5px; }

/* ---------- 时刻表 ---------- */
.board { margin-top: 18px; background: var(--frame); border: 1px solid #070707; border-radius: 6px; overflow: hidden; box-shadow: 0 0 0 1px var(--rule-2), 0 18px 40px -18px rgba(0, 0, 0, .8); }
.board-cols, .row { display: grid; grid-template-columns: 148px minmax(0, 1fr) 272px 118px 88px; gap: 0 20px; padding: 0 20px; }
.board-cols { height: 40px; align-items: center; background: #141415; border-bottom: 2px solid #070707; color: var(--ink-2); font-size: 13px; font-weight: 700; letter-spacing: .18em; }
.rows { list-style: none; margin: 0; padding: 0; }
.row { position: relative; padding-block: 18px; border-bottom: 1px solid var(--rule); transition: background .15s; }
.row:last-child { border-bottom: 0; }
.row:hover { background: #212122; }
.row[data-status="ended"], .row[data-status="invalid"] { opacity: .72; }
.row[data-status="ended"] .f-status, .row[data-status="invalid"] .f-status { color: var(--red-ink); }
.row[data-soon] .f-status { color: var(--amber-ink); }
.c-dl .flaps { font-size: 30px; }
.dl-sub { margin-top: 8px; color: var(--ink-3); font-size: 12.5px; line-height: 1.4; }
.dl-left { margin-top: 2px; color: var(--ink-2); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.row[data-soon] .dl-left { color: var(--amber-ink); }
.row[data-status="ended"] .dl-left { color: var(--red-ink); }
.benefit { display: block; font-size: 17px; font-weight: 700; line-height: 1.45; text-decoration: none; }
.benefit::after { content: ""; position: absolute; inset: 0; z-index: 0; }
.benefit:hover { color: #fff; text-decoration: underline; }
.title { margin-top: 4px; color: var(--ink-2); font-size: 14px; }
.meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 6px; color: var(--ink-3); font-size: 12.5px; }
.tag-ref { color: var(--amber-ink); }
.tag-new { color: var(--green); font-weight: 700; }
.tag-auto { padding: 0 5px; border: 1px dashed var(--rule-2); border-radius: var(--r-sm); color: var(--ink-3); }
.last-up { display: block; margin-top: 6px; color: var(--ink-3); font-size: 13px; }
.elig { display: flex; gap: 6px; align-items: flex-start; margin-top: 8px; color: var(--ink-2); font-size: 13px; line-height: 1.5; }
.elig .ic { width: 15px; height: 15px; margin-top: 2px; color: var(--ink-3); }
.c-cond { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 6px; list-style: none; margin: 0; padding: 0; }
.chip { display: inline-flex; align-items: center; gap: 4px; height: 26px; padding: 0 8px; border-radius: var(--r-sm); font-size: 12.5px; border: 1px solid; white-space: nowrap; }
.chip .ic { width: 13px; height: 13px; stroke-width: 2.2; }
.chip-yi { color: var(--green-ink); border-color: rgba(69, 196, 134, .42); background: rgba(69, 196, 134, .07); }
.chip-ji { color: var(--amber-ink); border-color: rgba(242, 169, 0, .45); background: rgba(242, 169, 0, .07); }
.chip-unk { color: var(--ink-3); border-color: var(--rule-2); border-style: dashed; }
.c-st { display: flex; align-items: flex-start; gap: 8px; }
.f-status { font-size: 17px; }
.f-status .fc-w { font-size: .92em; width: 1.2em; height: 1.55em; font-weight: 600; }
.lamp { flex: none; width: 7px; height: 22px; border-radius: 2px; background: #2a2e34; margin-top: 1px; }
.lamp-go { background: var(--green); }
.lamp-warn { background: var(--amber); animation: blink 1.6s steps(1, end) infinite; }
.lamp-wait { background: var(--blue); }
.lamp-stop { background: var(--red-deep); }
.lamp-idle { background: #2a2e34; }
@keyframes blink { 50% { opacity: .35; } }
.c-act { position: relative; z-index: 1; display: flex; gap: 6px; justify-content: flex-end; align-items: flex-start; }
.tg { display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--r); border: 1px solid var(--rule-2); background: var(--panel); color: var(--ink-3); cursor: pointer; transition: color .15s, border-color .15s, background .15s, transform .1s; }
.tg:hover { color: var(--ink); border-color: var(--ink-3); }
.tg:active { transform: translateY(1px); }
.tg-fav[aria-pressed="true"] { color: var(--ink); border-color: var(--ink); }
.tg-fav[aria-pressed="true"] .ic { fill: var(--ink); }
.tg-got[aria-pressed="true"] { color: var(--green); border-color: var(--green); }
.empty { padding: 48px 24px; text-align: center; color: var(--ink-2); }
.empty-t { margin-bottom: 14px; }
.empty-t .flaps { font-size: 34px; }
.empty .btn { margin-top: 18px; }

/* ---------- 按钮 ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 42px; padding: 0 18px; border-radius: var(--r); border: 1px solid var(--rule-2); background: var(--panel-2); color: var(--ink); font: inherit; font-size: 14px; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s, transform .1s; }
.btn:hover { border-color: var(--ink-3); background: #303032; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn-go { height: 50px; padding: 0 24px; font-size: 16px; color: #141414; background: var(--ink); border-color: var(--ink); }
.btn-go:hover { background: #fff; border-color: #fff; }
.btn-q { height: 38px; padding: 0 12px; font-weight: 500; color: var(--ink-2); }
.btn-q[aria-pressed="true"].tg-fav { color: var(--ink); border-color: var(--ink); }
.btn-q[aria-pressed="true"].tg-fav .ic { fill: var(--ink); }
.btn-q[aria-pressed="true"].tg-got { color: var(--green); border-color: var(--green); }
.btn-danger { color: var(--red-ink); border-color: rgba(229, 87, 76, .5); }

/* ---------- 详情 ---------- */
.banner { display: flex; gap: 10px; align-items: flex-start; margin-top: 20px; padding: 12px 16px; border-radius: var(--r); border: 1px solid; }
.banner-ended { color: var(--red-ink); border-color: rgba(229, 87, 76, .5); background: rgba(229, 87, 76, .08); }
.banner-ended b { color: var(--ink); }
.banner-relay { color: var(--amber-ink); border-color: rgba(242, 169, 0, .4); background: rgba(242, 169, 0, .06); }
.banner-relay b { color: var(--ink); }
.banner-auto { color: var(--ink-2); border-color: var(--rule-2); border-style: dashed; background: var(--panel); }
.banner-auto b { color: var(--ink); }
.banner-preview { color: #9fd0f5; border-color: rgba(106, 168, 216, .5); background: rgba(106, 168, 216, .08); }
.detail { padding-top: 22px; }
.back { display: inline-flex; align-items: center; gap: 6px; color: var(--ink-3); text-decoration: none; font-size: 14px; }
.back:hover { color: var(--ink); }
.d-head { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 28px; margin-top: 16px; align-items: start; }
.d-board { position: sticky; top: 80px; padding: 22px; background: var(--frame); border: 1px solid var(--rule); border-radius: 10px; }
.d-lab { color: var(--ink-3); font-size: 13px; }
.d-date { margin-top: 8px; }
.f-big { font-size: 64px; }
.f-big .fc-w { font-size: .62em; }
.d-sub { margin-top: 10px; color: var(--ink-2); font-size: 13.5px; }
.d-cd { margin-top: 14px; }
.f-cd { font-size: 26px; }
.d-st { display: flex; align-items: center; gap: 10px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--rule); }
.d-prod { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 4px 14px; color: var(--ink-3); font-size: 13.5px; }
.d-prod a { color: var(--ink-2); }
.d-title h1 { margin-top: 10px; font-size: 26px; font-weight: 800; text-wrap: balance; }
.d-benefit { margin-top: 14px; font-size: 21px; font-weight: 700; color: var(--ink); line-height: 1.45; }
.d-summary { margin-top: 12px; max-width: 68ch; color: var(--ink-2); }
.d-cond { margin-top: 16px; }
.d-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 24px; }
.dest { color: var(--ink-3); font-size: 13.5px; }
.dest b { color: var(--ink); font-weight: 600; }
.d-tools { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.d-title .local-note { margin-top: 10px; }
/* 详情下半：一张连续的规则表，和时刻表同一块牌面 */
.ledger { margin-top: 28px; background: var(--frame); border: 1px solid #070707; border-radius: 6px; box-shadow: 0 0 0 1px var(--rule-2); overflow: hidden; }
.ledger-h { padding: 0 22px; height: 40px; display: flex; align-items: center; background: #141415; border-bottom: 2px solid #070707; color: var(--ink-2); font-size: 13px; font-weight: 700; letter-spacing: .18em; }
.ledger-rows { margin: 0; }
.lr { display: grid; grid-template-columns: 9em minmax(0, 1fr); gap: 20px; padding: 18px 22px; border-bottom: 1px solid var(--rule); }
.lr:last-child { border-bottom: 0; }
.lr > dt { color: var(--ink-2); font-weight: 700; font-size: 14px; display: flex; gap: 6px; align-items: flex-start; }
.lr > dd { margin: 0; min-width: 0; }
.lr-sub { display: grid; gap: 0; }
.lr-sub > div { display: grid; grid-template-columns: 7em 1fr; gap: 12px; padding: 7px 0; border-top: 1px solid var(--rule); }
.lr-sub > div:first-child { border-top: 0; padding-top: 0; }
.lr-sub dt { color: var(--ink-3); font-size: 13.5px; }
.lr-sub dd { margin: 0; display: flex; gap: 6px; align-items: flex-start; }
.lr-sub dd .ic { width: 16px; height: 16px; margin-top: 3px; }
.lr-warn { background: rgba(242, 169, 0, .05); }
.lr-warn > dt { color: var(--amber-ink); }
.lr-warn > dt .ic { width: 16px; height: 16px; margin-top: 2px; }
.lr .steps li:first-child { padding-top: 0; }
.lr .steps li:first-child::before { top: -1px; }
.panel { padding: 20px 22px; background: var(--frame); border: 1px solid var(--rule); border-radius: 10px; }
.panel h2 { font-size: 16px; font-weight: 700; margin-bottom: 12px; }
.panel-warn { border-color: rgba(242, 169, 0, .4); }
.panel-warn h2 { color: var(--amber-ink); }
.kv { display: grid; grid-template-columns: 7em 1fr; gap: 12px; padding: 9px 0; border-top: 1px solid var(--rule); }
.kv:first-child { border-top: 0; padding-top: 0; }
.kv dt { color: var(--ink-3); font-size: 13.5px; }
.kv dd { margin: 0; display: flex; gap: 6px; align-items: flex-start; }
dl { margin: 0; }
.tone-yi { color: var(--green-ink); }
.tone-ji { color: var(--amber-ink); }
.tone-unk, .tone-na { color: var(--ink-2); }
.kv dd .ic { width: 16px; height: 16px; margin-top: 3px; }
.note, .hint { margin-top: 12px; color: var(--ink-3); font-size: 13px; }
.prose { max-width: 68ch; color: var(--ink-2); }
.prose + .prose { margin-top: 8px; }
.prose b { color: var(--ink); }
.muted { color: var(--ink-3); }
.steps { margin: 0; padding: 0; list-style: none; counter-reset: s; }
.steps li { position: relative; padding: 8px 0 8px 40px; color: var(--ink-2); counter-increment: s; }
.steps li::before { content: counter(s); position: absolute; left: 0; top: 7px; width: 26px; height: 28px; display: grid; place-items: center; border-radius: 3px; background: linear-gradient(var(--flap-t) 50%, var(--flap-b) 50%); color: var(--flap-ink); font: 700 16px/1 var(--num); font-stretch: condensed; }
.sources { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sources li { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.sources a { display: inline-flex; gap: 4px; align-items: center; color: var(--ink); }
.sources a .ic { width: 14px; height: 14px; color: var(--ink-3); }
.sources span { color: var(--ink-3); font-size: 12.5px; }
.verified { display: flex; gap: 6px; align-items: center; margin-top: 14px; color: var(--green-ink); font-size: 14px; }
.verified b { color: var(--ink); }

/* ---------- 网络检测 ---------- */
.check { display: grid; gap: 16px; }
.ipcards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ipcard h2, .purity h2 { color: var(--ink-2); font-size: 14px; font-weight: 600; }
.ip-big { margin-top: 12px; min-height: 40px; }
.f-ip { font-size: 30px; }
.ip-plain { font: 700 20px/1.3 var(--num); word-break: break-all; }
.ip-kv { margin-top: 12px; }
.ip-kv .kv dt { font-size: 13px; }
.pur-level { margin-top: 10px; display: flex; gap: 10px; align-items: center; }
.pur-reasons { margin: 12px 0 0; padding-left: 18px; color: var(--ink-2); }
.svc-h { margin-top: 12px; font-size: 18px; }
.svcs { list-style: none; margin: 0; padding: 0; background: var(--frame); border: 1px solid var(--rule); border-radius: 10px; }
.svc { display: grid; grid-template-columns: 150px 160px minmax(0, 1fr); gap: 8px 20px; padding: 18px 20px; border-bottom: 1px solid var(--rule); }
.svc:last-child { border-bottom: 0; }
.svc-name b { display: block; font-size: 17px; }
.svc-name span { color: var(--ink-3); font-size: 13px; }
.svc-st { display: flex; gap: 8px; align-items: flex-start; }
.svc-text { color: var(--ink); }
.svc-net, .svc-src { grid-column: 3; color: var(--ink-3); font-size: 13px; }
.svc-src a { color: var(--ink-2); }
.unk { color: var(--amber-ink); font-weight: 600; }
.check-foot { margin-top: 4px; }

/* ---------- 后台 ---------- */
.admin { padding-top: 28px; }
.adm-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.adm-bar h1 { font-size: 24px; margin-right: auto; }
.adm-table { width: 100%; border-collapse: collapse; background: var(--frame); border: 1px solid var(--rule); border-radius: 10px; overflow: hidden; font-size: 14px; }
.adm-table th, .adm-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--rule); vertical-align: top; }
.adm-table th { color: var(--ink-3); font-weight: 500; background: var(--panel); font-size: 12.5px; }
.adm-table tr:last-child td { border-bottom: 0; }
.adm-table td small { display: block; color: var(--ink-3); }
.pill { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: var(--r-sm); font-size: 12px; border: 1px solid var(--rule-2); color: var(--ink-2); white-space: nowrap; }
.pill-published { color: var(--green-ink); border-color: rgba(69, 196, 134, .45); }
.pill-draft { color: var(--ink-2); }
.pill-unpublished { color: var(--red-ink); border-color: rgba(229, 87, 76, .45); }
.form { display: grid; gap: 18px; }
.fs { margin: 0; padding: 18px 20px; border: 1px solid var(--rule); border-radius: 10px; background: var(--frame); display: grid; gap: 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fs legend { padding: 0 6px; color: var(--ink-2); font-weight: 600; }
.fld { display: grid; gap: 6px; align-content: start; }
.fld.wide { grid-column: 1 / -1; }
.fld > span { color: var(--ink-2); font-size: 13.5px; }
.fld input[type=text], .fld input[type=url], .fld input[type=date], .fld input[type=time], .fld input[type=password], .fld select, .fld textarea {
  width: 100%; min-height: 40px; padding: 8px 10px; background: var(--ground); border: 1px solid var(--rule-2); border-radius: var(--r); color: var(--ink); font: inherit; font-size: 14px;
}
.fld textarea { min-height: 84px; resize: vertical; }
.fld input:focus, .fld select:focus, .fld textarea:focus { outline: 0; border-color: var(--ink-3); }
.fld small { color: var(--ink-3); font-size: 12.5px; }
.fld .err { color: var(--red-ink); font-size: 12.5px; }
.fld.has-err input, .fld.has-err select, .fld.has-err textarea { border-color: var(--red); }
.chk { display: flex; gap: 8px; align-items: center; color: var(--ink-2); }
.chk input { width: 16px; height: 16px; accent-color: var(--ink); }
.trio { display: flex; gap: 10px; }
.trio .fld { flex: 1; }
.list-edit { display: grid; gap: 8px; }
.list-edit .li { display: flex; gap: 8px; }
.list-edit .li input { flex: 1; }
.adm-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; position: sticky; bottom: 0; padding: 12px 0; background: var(--ground); border-top: 1px solid var(--rule); }
.msg { padding: 10px 14px; border-radius: var(--r); border: 1px solid var(--rule-2); color: var(--ink-2); }
.msg-err { color: var(--red-ink); border-color: rgba(229, 87, 76, .5); }
.msg-ok { color: var(--green-ink); border-color: rgba(69, 196, 134, .45); }
.login { max-width: 380px; margin: 40px auto; display: grid; gap: 14px; }
.audit { margin: 0; padding-left: 18px; color: var(--ink-3); font-size: 13px; }

/* ---------- 页脚 ---------- */
.foot { border-top: 1px solid var(--rule); background: var(--frame); }
.foot-in { padding: 24px 0 36px; display: grid; gap: 6px; color: var(--ink-3); font-size: 13px; }
.foot-in b { color: var(--ink-2); }
.foot-in a { color: var(--ink-2); }

/* ---------- 响应式 ---------- */
@media (max-width: 980px) {
  .board-cols, .row { grid-template-columns: 128px minmax(0, 1fr) 210px 88px; }
  .board-cols span:nth-child(4) { display: none; }
  .c-st { grid-column: 4; grid-row: 1; }
  .c-act { grid-column: 4; grid-row: 1; align-self: end; }
  .board-cols span:last-child { display: none; }
}
@media (max-width: 760px) {
  body { font-size: 15px; }
  .top-in { gap: 8px; height: 56px; }
  .brand-name { font-size: 15px; }
  .nav a { padding: 8px 10px; font-size: 14px; }
  .nav .nl { display: none; }
  .board-head { grid-template-columns: 1fr; padding: 22px 0 14px; }
  .board-head h1 { font-size: 24px; }
  .sign { padding: 12px 16px 10px; }
  .led { font-size: 32px; }
  .sign-en { font-size: 11px; letter-spacing: .26em; }
  .f-brand { font-size: 15px; }
  .clock { order: -1; }
  .f-clock { font-size: 20px; }
  .filters { padding: 12px; gap: 10px; }
  .btn.f-toggle { display: inline-flex; }
  .filters:not(.open) .f-extra { display: none; }
  .lede { font-size: 14px; }
  .f-row2 .seg span { padding: 0 11px; }
  .f-row { gap: 8px; }
  .sel { flex: 1 1 calc(50% - 4px); }
  .sel select { flex: 1; }
  .count { width: 100%; margin-left: 0; }
  .board-cols { display: none; }
  .row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "dl st" "main main" "cond act"; gap: 12px; align-items: start; padding: 16px; }
  .c-dl { grid-area: dl; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
  .c-dl .flaps { font-size: 24px; }
  .dl-sub, .dl-left { margin: 0; }
  .c-st { grid-area: st; justify-self: end; }
  .c-act { grid-area: act; align-self: end; }
  .c-main { grid-area: main; }
  .c-cond { grid-area: cond; }
  .tg { width: 36px; height: 36px; }
  .d-head { grid-template-columns: 1fr; gap: 18px; }
  .d-board { position: static; display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; padding: 16px; }
  .d-board .d-lab, .d-board .d-date, .d-board .d-sub, .d-board .d-cd { grid-column: 1; }
  .d-board .d-st { grid-column: 2; grid-row: 1 / span 3; margin: 0; padding: 0; border: 0; align-self: center; }
  .f-big { font-size: 46px; }
  .d-title h1 { font-size: 22px; }
  .d-benefit { font-size: 18px; }
  .d-actions .btn-go { width: 100%; }
  .ipcards { grid-template-columns: 1fr; }
  .lr { grid-template-columns: 1fr; gap: 8px; padding: 16px; }
  .ledger-h { padding: 0 16px; }
  .svc { grid-template-columns: 1fr auto; }
  .svc-text, .svc-net, .svc-src { grid-column: 1 / -1; }
  .fs { grid-template-columns: 1fr; }
  .adm-table { display: block; overflow-x: auto; }
}
@media (max-width: 380px) {
  .nav a { padding: 6px; font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
.h-gap { margin-top: 16px; }

/* ---------- 国内 / 国外 ---------- */
.mkt-tabs { display: flex; margin: 0 0 2px; padding: 0; border: 0; }
.mkt-tabs label { position: relative; display: inline-flex; }
.mkt-tabs input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.mkt-tabs span { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 22px; border: 1px solid var(--rule-2); background: var(--panel); color: var(--ink-2); font-size: 16px; font-weight: 700; white-space: nowrap; transition: background .15s, color .15s, border-color .15s; }
.mkt-tabs label + label span { margin-left: -1px; }
.mkt-tabs label:first-of-type span { border-radius: var(--r) 0 0 var(--r); }
.mkt-tabs label:last-of-type span { border-radius: 0 var(--r) var(--r) 0; }
.mkt-tabs small { min-width: 22px; padding: 2px 6px; border-radius: 3px; background: var(--ground); color: var(--ink-3); font: 700 14px/1 var(--num); text-align: center; font-variant-numeric: tabular-nums; }
.mkt-tabs label:hover span { color: var(--ink); }
.mkt-tabs input:checked + span { position: relative; z-index: 1; color: var(--flap-ink); background: linear-gradient(var(--flap-t) 50%, var(--flap-b) 50%); border-color: var(--ink-3); }
.mkt-tabs input:checked + span small { color: var(--flap-ink); }
.mkt-tabs input:focus-visible + span { outline: 2px solid var(--ink); outline-offset: 2px; }
.mkt.mkt-relay { color: var(--amber-ink); border-color: rgba(242, 169, 0, .45); }
.mkt { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border: 1px solid var(--rule-2); border-radius: var(--r-sm); color: var(--ink-2); font-size: 12.5px; font-weight: 700; }
@media (max-width: 760px) {
  .mkt-tabs label { flex: 1; }
  .mkt-tabs span { width: 100%; justify-content: center; padding: 0 8px; font-size: 15px; }
}

/* ---------- 后台浏览统计 ---------- */
.stats { margin-bottom: 18px; }
.stat-row { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin: 0 0 16px; }
.stat-row div { padding: 14px 16px; background: #141415; border: 1px solid var(--rule); border-radius: var(--r); }
.stat-row dt { color: var(--ink-3); font-size: 13px; }
.stat-row dd { margin: 10px 0 0; }
.f-stat { font-size: 30px; }
.stat-days { margin-top: 4px; }
.stat-days td { padding-block: 6px; }
.num { font-family: var(--num); font-weight: 700; font-size: 16px; font-variant-numeric: tabular-nums; }
.bar { display: block; height: 8px; width: var(--w, 0%); min-width: 2px; border-radius: 2px; background: var(--ink-3); }
.bar[data-w="0"] { display: none; }
@media (max-width: 760px) {
  .stat-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- 最近结束 ---------- */
.board-ended { margin-top: 28px; }
.recent-head { padding: 16px 20px 14px; background: #141415; border-bottom: 2px solid #070707; }
.recent-head h2 { font-size: 16px; font-weight: 700; color: var(--red-ink); letter-spacing: .04em; }
.recent-head p { margin-top: 4px; color: var(--ink-3); font-size: 13px; }
@media (max-width: 760px) { .recent-head { padding: 14px 16px 12px; } }
