@font-face {
  font-family: "BHS Sans";
  src: local("Noto Sans SC"), local("Noto Sans CJK SC"), local("Source Han Sans SC"), local("Microsoft YaHei UI");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "BHS Serif";
  src: local("Noto Serif SC"), local("Source Han Serif SC"), local("Songti SC"), local("STZhongsong");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --color-ink: #253c37;
  --color-ink-soft: #425d56;
  --color-muted: #70867f;
  --color-mint-700: #218961;
  --color-mint-500: #45b982;
  --color-mint-300: #94d9b7;
  --color-mint-100: #def5e9;
  --color-pink-500: #ee7896;
  --color-pink-100: #fff0f4;
  --color-lavender-500: #8d70d6;
  --color-lavender-100: #f0ebfc;
  --color-cream: #fffdf8;
  --color-surface: #ffffff;
  --color-surface-soft: #f7faf8;
  --color-line: #dfe9e5;
  --color-danger: #d85d65;
  --radius-sm: 12px;
  --radius-md: 18px;
  --radius-lg: 28px;
  --radius-pill: 999px;
  --shadow-card: 0 18px 50px rgba(42, 76, 66, .11);
  --shadow-soft: 0 8px 24px rgba(42, 76, 66, .08);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  font-family: "BHS Sans", "Noto Sans SC", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; background: var(--color-cream); }
body { margin: 0; color: var(--color-ink); background: var(--color-cream); font-family: "BHS Sans", "Noto Sans SC", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif !important; font-weight: 420; letter-spacing: .01em; }
button, input, select, textarea { font-family: "BHS Sans", "Noto Sans SC", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif !important; font-weight: 450; }
h1, h2, h3, .bhs-page-title { font-family: "BHS Serif", "Noto Serif SC", "Songti SC", "STZhongsong", serif !important; font-weight: 650; letter-spacing: .035em; }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
img { max-width: 100%; }

.bhs-icon {
  width: 1.15em;
  height: 1.15em;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.bhs-card {
  border: 1px solid var(--color-line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, .98);
  box-shadow: var(--shadow-soft);
}

.bhs-field {
  min-height: 46px;
  width: 100%;
  border: 1px solid var(--color-line);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--color-ink);
  transition: border-color .18s ease, box-shadow .18s ease;
}

.bhs-field::placeholder { color: #9badA7; }
.bhs-field:focus { border-color: var(--color-mint-500); box-shadow: 0 0 0 4px rgba(69, 185, 130, .12); outline: 0; }

.bhs-btn {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}

.bhs-btn:hover { transform: translateY(-1px); }
.bhs-btn:active { transform: translateY(0); }
.bhs-btn:disabled { cursor: not-allowed; opacity: .58; transform: none; }
.bhs-btn--primary { color: #fff; background: linear-gradient(135deg, var(--color-mint-500), #63c994); box-shadow: 0 9px 22px rgba(69,185,130,.23); }
.bhs-btn--secondary { color: var(--color-mint-700); background: var(--color-mint-100); }
.bhs-btn--danger { color: #fff; background: var(--color-danger); }
.bhs-btn:focus-visible, .bhs-field:focus-visible, a:focus-visible { outline: 3px solid rgba(69,185,130,.22); outline-offset: 2px; }

.bhs-modal { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 20px; background: rgba(28, 47, 42, .48); backdrop-filter: blur(6px); }
.bhs-modal__panel { width: min(100%, 440px); padding: 24px; border: 1px solid rgba(255,255,255,.7); border-radius: var(--radius-lg); background: #fff; box-shadow: var(--shadow-card); }
.bhs-empty, .bhs-loading { padding: 32px 18px; text-align: center; color: var(--color-muted); }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

.bhs-page {
  min-height: 100vh;
  min-height: 100dvh;
  background:
    radial-gradient(circle at 8% 8%, rgba(222, 245, 233, .72), transparent 28%),
    radial-gradient(circle at 92% 16%, rgba(255, 240, 244, .75), transparent 30%),
    var(--color-cream);
}
.bhs-page__inner { width: min(calc(100% - 32px), 1120px); max-width: 1120px; margin-inline: auto; }
.bhs-page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.bhs-page-title { margin: 0; font-size: clamp(1.35rem, 4vw, 2rem); letter-spacing: .02em; }
.bhs-page-copy { margin: 8px 0 0; color: var(--color-muted); line-height: 1.75; }
.bhs-section { margin-block: 24px; }
.bhs-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.bhs-actions > * { min-width: 0; }
.bhs-status { padding: 14px 16px; border: 1px solid var(--color-line); border-radius: var(--radius-sm); background: rgba(255,255,255,.86); color: var(--color-ink-soft); }
.bhs-status--error { color: var(--color-danger); border-color: rgba(216,93,101,.22); background: #fff4f4; }
.bhs-status--success { color: var(--color-mint-700); border-color: rgba(69,185,130,.24); background: #f2fbf6; }
.bhs-back { color: var(--color-ink-soft); text-decoration: none; }

@supports (padding: max(0px)) {
  .bhs-safe-bottom { padding-bottom: max(16px, env(safe-area-inset-bottom)); }
}

@media (max-width: 520px) {
  .bhs-page__inner { width: min(calc(100% - 24px), 1120px); }
  .bhs-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bhs-actions > :only-child, .bhs-actions > .bhs-action-wide { grid-column: 1 / -1; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
