/* ============================================================
   梦灵山·灵盾 · 交易记录核验（像素 / 蓝图风格）
   ============================================================ */

/* 自托管字体：数字与英文固定用 Rubik，不跟随用户系统字体变化。
   仅取 latin 子集（各约 18KB），汉字继续走系统字体，后续可按需补中文子集。 */
@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/font/Rubik-Regular.woff2") format("woff2");
}
@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../assets/font/Rubik-Medium.woff2") format("woff2");
}
@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../assets/font/Rubik-SemiBold.woff2") format("woff2");
}
@font-face {
  font-family: "Rubik";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../assets/font/Rubik-Bold.woff2") format("woff2");
}

.shield-site {
  --sky: #edf5ff;
  --surface: #fff;
  --ink: #294b7a;
  --blue: #3975c6;
  --soft: #dceaff;
  --line: #b3cbee;
  --muted: #536f92;
  --yellow: #f6d888;
  --shadow: #c3d7f2;
  /* 窗口硬阴影的偏移量。阴影层与切角都用它换算，改一处即可。 */
  --win-shadow: 7px;
  /* 窗口外壳：边框宽度、切角尺寸、边框色、硬阴影色。
     有记录时由 .window[data-state] 覆盖后两者（避雷橙 / 违规红）。 */
  --win-border: 3px;
  --win-notch: 4px;
  --win-edge: #456c9e;
  --win-shadow-color: var(--shadow);
  --danger: #a25553;
  --danger-bg: #f7e3e2;
  --warn: #8a6a28;
  --warn-bg: #fbeccb;
  --safe: #3f7a63;
  --safe-bg: #dcefe4;
}

.shield-site * {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  background: #edf5ff;
}

.shield-site {
  min-height: 100svh;
  color: var(--ink);
  background: var(--sky);
  /* Rubik 排在前面负责数字与英文（不随系统变化），
     汉字没有子集，自动回退到后面的系统中文字体。 */
  font-family: "Rubik", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", system-ui, sans-serif;
  font-size: 14px;
}

.shield-site a {
  color: inherit;
  text-decoration: none;
}

.shield-site button,
.shield-site input,
.shield-site select {
  font: inherit;
  color: inherit;
}

.shield-site button {
  cursor: pointer;
}

.shield-site button,
.shield-site a,
.shield-site input,
.shield-site select {
  -webkit-tap-highlight-color: transparent;
}

.shield-site button:focus-visible,
.shield-site a:focus-visible,
.shield-site input:focus-visible,
.shield-site select:focus-visible {
  outline-offset: 4px;
  outline: 3px solid #2d6dbb;
}

.shield-site .wrap {
  width: calc(100% - 120px);
  max-width: 1360px;
  margin-inline: auto;
}

.shield-site .sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.shield-site .icon {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2px;
  stroke-linecap: square;
  stroke-linejoin: miter;
  shape-rendering: crispEdges;
}

/* ---------------- 顶栏 ---------------- */

.shield-site .topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100px;
  border-bottom: 2px solid #d7e6f8;
}

.shield-site .brand {
  display: flex;
  align-items: center;
  gap: 13px;
}

.shield-site .brand-seal {
  position: relative;
  display: grid;
  place-items: center;
  width: 49px;
  height: 49px;
  color: var(--blue);
  background: #dbeaff;
  border: 2px solid #456d9f;
  box-shadow: 3px 3px #c1d7f3;
}

/* 开放式徽章：logo 放大后溢出方框居中展示，不受框体束缚 */
.shield-site .brand-seal .seal-mark {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 64px;
  height: 64px;
  transform: translate(-50%, -50%);
}

.shield-site .brand-name {
  display: block;
  font-size: 28px;
  font-weight: 900;
  letter-spacing: 3px;
}

.shield-site .brand-desc {
  display: block;
  margin-top: 4px;
  color: #7791b1;
  font-size: 10px;
  letter-spacing: 1px;
}

.shield-site .nav {
  display: flex;
  align-items: center;
  gap: 31px;
}

.shield-site .nav a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  color: #57749b;
  font-size: 13px;
}

.shield-site .nav a:hover {
  color: var(--blue);
}

.shield-site .nav .icon {
  width: 17px;
  height: 17px;
}

.shield-site .nav a.nav-feature {
  padding: 10px 14px;
  background: #f8fbff;
  border: 2px solid #a7c2e6;
  box-shadow: 3px 3px #d5e4f7;
}

/* ---------------- 主区域 ---------------- */

.shield-site .main {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 460px;
  align-items: center;
  gap: 44px 56px;
  padding-block: 49px 34px;
}

/* 列位置交给自动排布：桌面两列（hero 左 / 查询卡 右），
   窄屏退化为单列时不会因写死列号而生成隐式列。 */
.shield-site .hero {
  min-width: 0;
}

.shield-site .query-col {
  min-width: 0;
}

.shield-site .hero-note {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 17px;
  color: #5d81ae;
  font-size: 12px;
  font-weight: 600;
}

.shield-site .hero-note .icon {
  width: 16px;
  height: 16px;
  color: #6e9edb;
}

.shield-site h1 {
  margin: 0 0 16px;
  line-height: 1;
}

.shield-site .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}

/* 像素风大标题（AI 生成位图，保持点阵锐利） */
.shield-site .pixel-title {
  display: block;
  width: 100%;
  max-width: 640px;
  height: auto;
  image-rendering: pixelated;
}

.shield-site .intro {
  margin: 0 0 26px;
  color: #6a84a7;
  font-size: 14px;
  line-height: 1.9;
}

/* ---------------- 窗口外壳 ---------------- */

/* 照抄 xianyu-pixel-nav-button 的结构：本体只挂 filter，
   ::before / ::after 两层 clip-path 缺角色块分别当描边和填充（都在 z-1），
   drop-shadow 跟随缺角轮廓，右下角随缺口自然收口。
   缺角保持本站原有设计：左上 + 右下对角，右上 / 左下为直角。 */
.shield-site .window {
  position: relative;
  border: 0;
  background: transparent;
  box-shadow: none;
  /* padding 顶替原边框占位：子元素位置不变，也不会盖住外圈描边 */
  padding: var(--win-border);
  isolation: isolate;
  filter: drop-shadow(var(--win-shadow) var(--win-shadow) 0 var(--win-shadow-color));
}

.shield-site .window::before,
.shield-site .window::after {
  content: "";
  position: absolute;
  z-index: -1;
  pointer-events: none;
  clip-path: polygon(
    var(--win-notch) 0,
    100% 0,
    100% calc(100% - var(--win-notch)),
    calc(100% - var(--win-notch)) calc(100% - var(--win-notch)),
    calc(100% - var(--win-notch)) 100%,
    0 100%,
    0 var(--win-notch),
    var(--win-notch) var(--win-notch)
  );
}

/* 描边层（inset 0，同 xianyu 的 --pixel-edge 层） */
.shield-site .window::before { inset: 0; background: var(--win-edge); }
/* 填充层：整体 inset 一层即得边框厚度，缺角台阶自动对齐（同 --pixel-fill 层） */
.shield-site .window::after { inset: var(--win-border); background: var(--surface); }

.shield-site .window-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 21px;
  color: #5b7ca8;
  font-size: 11px;
  background: #d9e9ff;
  border-bottom: 2px solid #91b2de;
  /* 标题栏有背景（参考按钮没有），左上角裁掉与填充层相同的缺口，
     缺角台阶的折弯才不会被标题栏背景盖住 */
  clip-path: polygon(
    var(--win-notch) 0,
    100% 0,
    100% 100%,
    0 100%,
    0 var(--win-notch),
    var(--win-notch) var(--win-notch)
  );
}

.shield-site .window-name {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
}

.shield-site .window-name .icon {
  width: 15px;
  height: 15px;
}

.shield-site .window-pips {
  display: flex;
  gap: 5px;
}

.shield-site .window-pips span {
  display: block;
  width: 5px;
  height: 5px;
  background: #80a9db;
}

.shield-site .window-pips span:last-child {
  background: #f1cc7e;
}

/* 标题栏右侧的「下载卡片」按钮：与「查看」同族的淡蓝描边胶囊 */
.shield-site .window-action {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  color: #2b5d96;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.6;
  background: #f2f8ff;
  border: 1px solid #8fbbeb;
  border-radius: 999px;
  cursor: pointer;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}

.shield-site .window-action .icon {
  width: 12px;
  height: 12px;
}

.shield-site .window-action:not([disabled]):hover {
  color: #fff;
  background: #4a86c8;
  border-color: #3d6fa8;
}

.shield-site .window-action:not([disabled]):active {
  transform: scale(.95);
}

.shield-site .window-action[disabled] {
  opacity: .55;
  cursor: default;
  transform: none;
}

.shield-site .window-body {
  padding: 25px 30px;
}

/* ---------------- 查询台 ---------------- */

.shield-site .query-form {
  display: grid;
  gap: 22px;
}

/* 查询方式切换：复用登录页 .tabs 的像素按钮样式，仅收紧下边距 */
.shield-site .query-modes {
  margin-bottom: 18px;
}

.shield-site .query-modes .tab {
  cursor: pointer;
}

/* 批量输入框：多行文本，与单行输入框同款描边 */
.shield-site .input-wrap.is-textarea {
  height: auto;
  padding: 11px 13px;
  align-items: stretch;
}

.shield-site .input-wrap textarea {
  width: 100%;
  min-width: 0;
  color: var(--ink);
  font: inherit;
  font-size: 12px;
  line-height: 1.7;
  background: 0 0;
  border: 0;
  outline: none !important;
  resize: vertical;
}

.shield-site .input-wrap textarea::placeholder {
  color: #9db2cd;
}

.shield-site .query-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

/* 只有一个查询字段时，宽度交给容器决定 */
.shield-site .query-fields.is-single {
  grid-template-columns: minmax(0, 1fr);
}

.shield-site .fields-loading {
  grid-column: 1 / -1;
  margin: 0;
  padding: 22px 0;
  color: #8198b6;
  font-size: 12px;
  text-align: center;
}

/* 未登录配额提示：说明匿名限速与登录后的提升，登录入口用主题蓝强调 */
.shield-site .query-quota {
  margin: -6px 0 0;
  color: #6a84a7;
  font-size: 12px;
  line-height: 1.7;
}

.shield-site .query-quota a {
  color: var(--blue);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.shield-site .field {
  display: grid;
  gap: 9px;
  min-width: 0;
}

.shield-site .field.span-2 {
  grid-column: 1 / -1;
}

.shield-site .label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
}

.shield-site .label .optional {
  color: #93a7c3;
  font-size: 10px;
  font-weight: 400;
}

.shield-site .text-action {
  padding: 0;
  color: #536f92;
  font-size: 11px;
  font-weight: 400;
  background: 0 0;
  border: 0;
}

.shield-site .text-action:hover {
  text-decoration: underline;
}

.shield-site .input-wrap {
  display: flex;
  align-items: center;
  gap: 11px;
  height: 49px;
  padding-inline: 13px;
  background: #f5f9ff;
  border: 2px solid #b6cceb;
  box-shadow: inset 3px 3px #e9f1fc;
}

.shield-site .input-wrap:focus-within {
  border-color: #528bce;
  box-shadow: inset 3px 3px #e3effe, 3px 3px #dceaff;
}

.shield-site .input-wrap .icon {
  width: 17px;
  height: 17px;
  color: #84a1c5;
}

.shield-site .input-wrap input,
.shield-site .input-wrap select {
  width: 100%;
  min-width: 0;
  height: 43px;
  color: var(--ink);
  font-size: 12px;
  background: 0 0;
  border: 0;
  outline: none !important;
}

.shield-site .input-wrap select {
  appearance: none;
  cursor: pointer;
}

.shield-site .input-wrap input::placeholder {
  color: #9aaec8;
}

.shield-site .input-wrap.is-invalid {
  border-color: #b96965;
  box-shadow: inset 3px 3px #f7e3e2;
}

.shield-site .eye {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 31px;
  height: 38px;
  padding: 0;
  color: #84a1c5;
  background: 0 0;
  border: 0;
}

.shield-site .eye[aria-pressed="true"] {
  color: var(--blue);
}

.shield-site .error {
  margin: 0;
  color: var(--danger);
  font-size: 11px;
  line-height: 1.6;
}

.shield-site .fields-hint {
  grid-column: 1 / -1;
  margin: -4px 0 0;
  color: #8198b6;
  font-size: 11px;
}

.shield-site .input-wrap.has-select::after {
  content: "";
  flex-shrink: 0;
  width: 0;
  height: 0;
  border-top: 6px solid #84a1c5;
  border-right: 5px solid transparent;
  border-left: 5px solid transparent;
}

.shield-site .query-actions {
  display: flex;
  align-items: stretch;
  gap: 12px;
}

.shield-site .query-actions .submit {
  flex: 1;
  min-width: 0;
}

.shield-site .submit {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  height: 51px;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  background: var(--blue);
  border: 2px solid #2c578d;
  box-shadow: 4px 4px #9cbbe7;
  transition: transform 0.12s, box-shadow 0.12s, background 0.12s;
}

.shield-site .submit .icon {
  width: 20px;
  height: 20px;
  color: #ffdf92;
}

.shield-site .submit:hover:not([disabled]) {
  background: #2e68b8;
  transform: translate(-1px, -1px);
  box-shadow: 5px 5px #9cbbe7;
}

.shield-site .submit:active:not([disabled]) {
  transform: translate(3px, 3px);
  box-shadow: 1px 1px #9cbbe7;
}

.shield-site .submit[disabled] {
  cursor: progress;
  opacity: 0.78;
}

.shield-site .ghost-btn {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding-inline: 22px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 600;
  background: #fff;
  border: 2px solid #b5cceb;
  box-shadow: 2px 2px #e0ebf9;
}

.shield-site .ghost-btn:hover {
  background: #eef6ff;
}

.shield-site .ghost-btn .icon {
  width: 15px;
  height: 15px;
  color: #6e9edb;
}

/* ---------------- 账号档案 ---------------- */

.shield-site .profile-window {
  grid-column: 1 / -1;
  margin-top: 0;
}

/* ---------------- 批量查询结果 ---------------- */

.shield-site .batch-window {
  grid-column: 1 / -1;
  margin-top: 0;
}

.shield-site .batch-body {
  padding: 20px 30px 6px;
}

.shield-site .batch-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 16px;
}

.shield-site .batch-chip {
  padding: 5px 11px;
  font-size: 12px;
  font-weight: 700;
  border: 2px solid;
}

.shield-site .batch-chip.is-yh {
  color: var(--danger);
  background: var(--danger-bg);
  border-color: #c88784;
}

.shield-site .batch-chip.is-bl {
  color: #b26a12;
  background: #fff6e8;
  border-color: #e8b96a;
}

.shield-site .batch-chip.is-ok {
  color: var(--safe);
  background: var(--safe-bg);
  border-color: #8fbfa9;
}

.shield-site .batch-chip.is-unknown {
  color: var(--muted);
  background: #f2f6fc;
  border-color: #c3d5ea;
}

.shield-site .batch-list {
  display: grid;
  gap: 0;
  border-top: 2px solid #e2ecf8;
}

.shield-site .batch-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 11px 2px;
  border-bottom: 2px solid #eef4fc;
}

.shield-site .batch-qq {
  font-family: "Rubik", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
  font-variant-numeric: tabular-nums;
  font-size: 14px;
  font-weight: 700;
  word-break: break-all;
}

.shield-site .batch-label {
  padding: 2px 9px;
  font-size: 11px;
  font-weight: 700;
  border: 2px solid;
}

.shield-site .batch-item.is-yh .batch-qq { color: var(--danger); }
.shield-site .batch-item.is-yh .batch-label {
  color: var(--danger);
  background: var(--danger-bg);
  border-color: #c88784;
}

.shield-site .batch-item.is-bl .batch-qq { color: #b26a12; }
.shield-site .batch-item.is-bl .batch-label {
  color: #b26a12;
  background: #fff6e8;
  border-color: #e8b96a;
}

.shield-site .batch-item.is-ok .batch-qq { color: var(--safe); }
.shield-site .batch-item.is-ok .batch-label {
  color: var(--safe);
  background: var(--safe-bg);
  border-color: #8fbfa9;
}

.shield-site .batch-item.is-unknown .batch-label {
  color: var(--muted);
  background: #f2f6fc;
  border-color: #c3d5ea;
}

.shield-site .batch-body .profile-foot {
  padding: 14px 0 18px;
}

.shield-site .profile-head {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 24px 30px;
  border-bottom: 2px solid #e2ecf8;
}

.shield-site .profile-avatar {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 64px;
  height: 64px;
  background: #e8f2ff;
  border: 2px solid #b3cbee;
  box-shadow: 3px 3px #dceaff;
}

.shield-site .profile-avatar img {
  width: 56px;
  height: 56px;
  image-rendering: pixelated;
}

.shield-site .profile-main {
  display: grid;
  flex: 1;
  gap: 10px;
  min-width: 0;
}

.shield-site .profile-qq {
  margin: 0;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: 1px;
  word-break: break-all;
}

.shield-site .profile-score {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 13px;
}

.shield-site .profile-score .score-label {
  color: var(--muted);
}

.shield-site .profile-score .score-value {
  font-size: 20px;
  font-weight: 800;
  letter-spacing: 0.5px;
}

.shield-site .profile-score .score-unit {
  margin-left: -2px;
  color: var(--muted);
  font-size: 12px;
}

.shield-site .profile-side {
  display: grid;
  flex-shrink: 0;
  gap: 10px;
  max-width: 320px;
  text-align: right;
}

.shield-site .profile-sub {
  display: grid;
  gap: 4px;
}

.shield-site .profile-sub .sub-label {
  color: #8ba4c4;
  font-size: 11px;
}

.shield-site .profile-sub .sub-item {
  color: var(--muted);
  font-size: 12px;
  word-break: break-all;
}

.shield-site .profile-blacklist {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  justify-self: end;
  margin: 0;
  padding: 7px 10px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.6;
  border: 2px solid;
}

.shield-site .profile-blacklist .icon {
  width: 14px;
  height: 14px;
}

.shield-site .profile-blacklist.is-ok {
  color: var(--safe);
  background: var(--safe-bg);
  border-color: #8fbfa9;
}

.shield-site .profile-blacklist.is-bad {
  color: var(--danger);
  background: var(--danger-bg);
  border-color: #c88784;
}

/* 档案分栏 */
.shield-site .profile-sections {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  padding: 22px 30px 6px;
}

.shield-site .profile-section {
  min-width: 0;
  padding: 16px 18px 18px;
  background: #f7fbff;
  border: 2px solid #dbe7f7;
}

.shield-site .section-title {
  margin: 0 0 16px;
  padding-bottom: 10px;
  color: var(--blue);
  font-size: 13px;
  font-weight: 700;
  border-bottom: 2px solid #e2ecf8;
}

.shield-site .info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 18px;
}

/* 字段数为奇数时，最后一项占满整行，避免落单 */
.shield-site .info-item:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}

.shield-site .info-item {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.shield-site .info-label {
  color: #8198b6;
  font-size: 11px;
}

.shield-site .info-value {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.5;
  word-break: break-all;
}

/* 认证状态的绿/红/橙发光配色统一在 spirit.css 定义，此处不再重复 */

.shield-site .info-value .info-text {
  min-width: 0;
  word-break: break-all;
}

.shield-site .info-note {
  color: #93a7c3;
  font-size: 11px;
}

/* 带操作按钮的标题行：标签与按钮同行，按钮紧跟在标签右侧 */
.shield-site .info-head {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

/* 「查看」按钮：淡蓝描边胶囊，克制不抢眼，与标签行自然融合 */
.shield-site .info-item .text-action {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex-shrink: 0;
  padding: 0 9px;
  color: #2b5d96;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.6;
  background: #eaf4ff;
  border: 1px solid #8fbbeb;
  border-radius: 999px;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}

/* 跳转箭头：稍小一点，与文字同色 */
.shield-site .info-item .text-action .action-arrow {
  font-size: 10px;
  line-height: 1;
  opacity: .85;
}

.shield-site .info-item .text-action:hover {
  color: #fff;
  background: #4a86c8;
  border-color: #3d6fa8;
  text-decoration: none;
}

.shield-site .info-item .text-action:hover .action-arrow {
  opacity: 1;
}

/* 按下时轻微内缩，代替硬阴影的位移手感 */
.shield-site .info-item .text-action:active {
  transform: scale(.95);
}

/* 评级徽章 */
.shield-site .rating-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 7px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.4px;
  white-space: nowrap;
  border: 2px solid;
}

.shield-site .rating-badge .rating-star {
  font-size: 10px;
  line-height: 1;
}

.shield-site .rating-badge.tier-gold {
  color: #8a6a28;
  background: #fbeccb;
  border-color: #c9a765;
}

.shield-site .rating-badge.tier-blue {
  color: #2f5f9e;
  background: #e2edfb;
  border-color: #9cbbe7;
}

.shield-site .rating-badge.tier-teal {
  color: #3f7a63;
  background: var(--safe-bg);
  border-color: #8fbfa9;
}

.shield-site .rating-badge.tier-gray {
  color: #6b7f99;
  background: #eef2f7;
  border-color: #c3d0e0;
}

/* 星级 */
.shield-site .stars {
  display: inline-flex;
  gap: 2px;
}

.shield-site .stars .star {
  color: #c9d8ea;
  font-size: 14px;
  line-height: 1;
}

.shield-site .stars .star.is-on {
  color: #e8b84b;
}

/* 半星：底色灰星 + 左半覆盖金星，对齐旧版的做法 */
.shield-site .stars .star.is-half {
  position: relative;
  color: #c9d8ea;
}

.shield-site .stars .star.is-half::after {
  content: "★";
  position: absolute;
  left: 0;
  top: 0;
  width: 50%;
  overflow: hidden;
  color: #e8b84b;
}

/* 评分 >=4 泛金光，<=3 泛红光，对齐旧版的 text-shadow 处理 */
.shield-site .stars.is-bright .star.is-on,
.shield-site .stars.is-bright .star.is-half::after {
  text-shadow: 0 0 3px rgba(255, 215, 0, .5);
}

.shield-site .stars.is-dim .star.is-on,
.shield-site .stars.is-dim .star.is-half::after {
  text-shadow: 0 0 3px rgba(255, 0, 0, .5);
}

/* 标签 */
.shield-site .tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.shield-site .tag {
  padding: 5px 10px;
  color: #3f6ea9;
  font-size: 11px;
  font-weight: 600;
  background: #e8f2ff;
  border: 2px solid #b3cbee;
}

/* 雷达图 */
.shield-site .radar {
  display: grid;
  place-items: center;
  padding: 4px 0 8px;
}

.shield-site .radar-svg {
  width: 100%;
  max-width: 240px;
  height: auto;
}

.shield-site .radar-ring {
  fill: none;
  stroke: #dbe7f7;
  stroke-width: 1;
}

.shield-site .radar-axis {
  stroke: #e2ecf8;
  stroke-width: 1;
}

.shield-site .radar-shape {
  fill: rgba(57, 117, 198, 0.28);
  stroke: var(--blue);
  stroke-width: 2;
  stroke-linejoin: miter;
}

.shield-site .radar-dot {
  fill: var(--blue);
}

.shield-site .radar-label {
  fill: #7b93b3;
  font-size: 10px;
}

.shield-site .profile-foot {
  margin: 0;
  padding: 14px 30px 20px;
  color: #93a7c3;
  font-size: 11px;
  text-align: center;
}

/* ---------------- 登录卡片 ---------------- */

.shield-site .login-col {
  min-width: 0;
}

/* 登录页：桌面左右分栏（左侧像素标题，右侧登录卡片），
   窄屏在 responsive.css 里退化为上下堆叠。 */
.shield-site .main-narrow {
  grid-template-columns: minmax(0, 1fr) 460px;
}

/* 登录页顶部的像素标题（与首页同款 banner） */
.shield-site .login-hero h1 {
  margin: 0;
}

.shield-site .login-standalone {
  width: 100%;
}

.shield-site .greeting {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 22px;
}

.shield-site .card-title {
  margin: 0 0 9px;
  font-size: 26px;
  font-weight: 800;
  line-height: 1.4;
  letter-spacing: 0.4px;
}

.shield-site .card-desc {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.7;
}

.shield-site .greeting-badge {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 52px;
  height: 48px;
  color: var(--blue);
  background: #e8f2ff;
  border: 1px solid #c2d9f5;
  box-shadow: 2px 2px #e1ebf9;
}

.shield-site .greeting-badge .seal-mark {
  width: 32px;
  height: 32px;
}

.shield-site .tabs {
  display: flex;
  gap: 0;
  width: 100%;
  margin-bottom: 23px;
  padding: 4px;
  background: #eef5ff;
  border: 2px solid #b3cbed;
}

.shield-site .tab {
  display: inline-flex;
  flex: 1;
  align-items: center;
  justify-content: center;
  height: 40px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  background: 0 0;
  border: 2px solid transparent;
}

.shield-site .tab[aria-selected="true"] {
  color: #fff;
  background: var(--blue);
  border-color: #37639a;
  box-shadow: 2px 2px #b5ccef;
}

.shield-site .auth-form {
  display: grid;
  gap: 19px;
}

.shield-site .consent {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 11px 13px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
  background: #f5f9ff;
  border: 2px solid #b6cceb;
  cursor: pointer;
}

.shield-site .consent input {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 15px;
  height: 15px;
  margin: 1px 0 0;
  appearance: none;
  background: #fff;
  border: 2px solid #8baad1;
}

.shield-site .consent input:checked {
  background: var(--blue);
  border-color: #3b659a;
}

.shield-site .consent input:checked::before {
  content: "";
  width: 7px;
  height: 3px;
  border-bottom: 2px solid #fff;
  border-left: 2px solid #fff;
  transform: translateY(-1px) rotate(-45deg);
}

.shield-site .consent a {
  color: #3f6ea9;
  border-bottom: 1px solid #a4bcda;
}

.shield-site .agreement {
  margin: 0;
  color: #9baac0;
  font-size: 10px;
  line-height: 1.8;
  text-align: center;
}

.shield-site .agreement a {
  color: #7292ba;
  border-bottom: 1px solid #a4bcda;
}

/* 注册引导：跳转趣绮梦开放平台 */
.shield-site .signup-guide {
  align-content: start;
}

.shield-site .guide-text {
  margin: 0;
  padding: 13px 15px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.9;
  background: #f5f9ff;
  border: 2px solid #b6cceb;
}

.shield-site .guide-text strong {
  color: #3f6ea9;
  font-weight: 700;
}

.shield-site a.guide-btn {
  text-decoration: none;
}

.shield-site a.guide-btn .icon {
  color: #ffdf92;
}

.shield-site .login-note {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  margin-top: 22px;
  color: #8198b6;
  font-size: 11px;
  text-align: center;
}

.shield-site .login-note .icon {
  width: 13px;
  height: 13px;
}

/* ---------------- 底部特性 ---------------- */

/* 整行铺开的三栏特性条 */
.shield-site .perks {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  padding-top: 24px;
  border-top: 2px solid #dbe7f7;
}

.shield-site .perk {
  display: flex;
  align-items: center;
  gap: 12px;
}

.shield-site .perk-icon {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 35px;
  height: 35px;
  color: #4976ae;
  background: #dfeaff;
  border: 1px solid #a8c3e7;
  box-shadow: 2px 2px #c9ddf6;
}

.shield-site .perk-title {
  display: block;
  font-size: 12px;
  font-weight: 700;
}

.shield-site .perk small {
  display: block;
  margin-top: 5px;
  color: #8298b5;
  font-size: 10px;
}

/* ---------------- 页脚 ---------------- */

.shield-site .footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 23px 0 26px;
  color: #93a7c3;
  font-size: 10px;
  border-top: 2px solid #d7e6f8;
}

.shield-site .footer-left,
.shield-site .footer-right {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* 左侧竖排：品牌 + 标语同一行，两条备案信息依次排在下方 */
.shield-site .footer-left {
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.shield-site .footer-brand-row {
  display: inline-flex;
  align-items: center;
  gap: 16px;
}

.shield-site .footer-icp a {
  color: #93a7c3;
  font-size: 10px;
}

.shield-site .footer-icp a:hover {
  color: var(--blue);
}

.shield-site .footer-logo {
  color: #6787b0;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 2px;
}

.shield-site .footer-right a {
  color: #839cbb;
  font-size: 10px;
}

.shield-site .footer-right a:hover {
  color: var(--blue);
}

/* ---------------- 提示条 ---------------- */

.shield-site .toast {
  position: fixed;
  bottom: 30px;
  left: 50%;
  z-index: 20;
  max-width: 90vw;
  padding: 15px 22px;
  font-size: 13px;
  line-height: 1.7;
  background: #fff;
  border: 2px solid #456c9e;
  box-shadow: 4px 4px var(--shadow);
  transform: translate(-50%);
}

.shield-site [hidden] {
  display: none !important;
}
