﻿.join-page {
  padding: 36px 0 72px;
}

.join-head {
  margin-bottom: 26px;
}

.join-title {
  margin: 0;
  font-size: clamp(2.1rem, 1.9vw + 1.3rem, 3.2rem);
  line-height: 1.08;
  color: var(--color-primary);
}

.join-submit-notice {
  margin: -6px 0 14px;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, #2f82ff 42%, var(--border-default) 58%);
  border-left-width: 3px;
  border-radius: 4px;
  background: color-mix(in srgb, #2f82ff 10%, var(--bg-card) 90%);
  color: var(--text-primary);
  font-size: 0.9rem;
  line-height: 1.5;
}

.join-info-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  align-items: start;
}

.join-info-main,
.join-info-side {
  min-width: 0;
}

.join-panel-title {
  margin: 0 0 12px;
  font-size: clamp(1.35rem, 0.9vw + 1.1rem, 2.05rem);
  line-height: 1.1;
  color: var(--color-primary);
  font-weight: 800;
  letter-spacing: 0.01em;
}

.join-news-strip {
  margin: 0;
  padding: 0;
}

.join-news-strip-track {
  display: grid;
  gap: 0;
}

.join-news-item {
  padding: 12px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--border-default) 84%, transparent);
}

.join-news-item:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

.join-news-item-title {
  margin: 0;
  font-size: 0.94rem;
  line-height: 1.38;
  font-weight: 700;
}

.join-news-item-title a {
  color: var(--text-primary);
  text-decoration: none;
}

.join-news-item-title a:hover,
.join-news-item-title a:focus-visible {
  color: var(--color-primary);
}

.join-news-item-meta {
  margin: 6px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-size: 0.76rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-secondary) 86%, var(--text-primary) 14%);
}

.join-news-item-meta-author,
.join-news-item-meta-time {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}

.join-news-item-excerpt {
  margin: 8px 0 0;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.58;
}

.join-news-strip-empty {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.55;
}

.join-hero {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 34px;
}

.join-canvas-shell {
  position: relative;
  height: clamp(380px, 35vw, 600px);
  border-radius: 18px;
  overflow: hidden;
  background: color-mix(in srgb, var(--bg-card) 94%, transparent);
  box-shadow: var(--shadow-sm);
}

.join-stage-photo-frame {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.join-stage-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.join-wave-layer {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin-top: 0;
  z-index: 2;
}

.join-progress-canvas {
  display: block;
  width: 100%;
  height: clamp(56px, 5.8vw, 82px);
}

.join-wave-progress {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}

.join-wave-track {
  position: relative;
  position: absolute;
  left: clamp(18px, 2.2vw, 30px);
  right: clamp(18px, 2.2vw, 30px);
  top: 68%;
  height: 4px;
  border-radius: 999px;
  transform: translateY(-50%);
  background: color-mix(in srgb, var(--text-secondary) 26%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border-default) 60%, transparent);
}

.join-wave-fill {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 0;
  border-radius: inherit;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--color-primary) 56%, transparent) 0%,
    color-mix(in srgb, var(--color-primary) 82%, #7ed7ff 18%) 100%
  );
  box-shadow: 0 0 10px color-mix(in srgb, var(--color-primary) 35%, transparent);
}

.join-wave-marks {
  position: absolute;
  inset: 0;
  overflow: visible;
}

.join-wave-mark {
  --mark-wave-offset: 0px;
  --mark-tilt: 0deg;
  position: absolute;
  top: 50%;
  width: clamp(20px, 1.9vw, 27px);
  transform: translate(-50%, calc(-58% + var(--mark-wave-offset))) rotate(var(--mark-tilt));
  transform-origin: 50% 78%;
  filter: drop-shadow(0 2px 6px color-mix(in srgb, #00142b 50%, transparent));
  will-change: transform;
}

.join-wave-mark.is-lighthouse {
  width: clamp(54px, 5.1vw, 81px);
  transform: translate(-50%, -82%);
  transform-origin: 50% 96%;
}

.join-wave-mark.is-lighthouse.is-docked {
  top: auto;
  bottom: -1px;
  left: auto;
  transform: translate(-50%, 0);
}

.join-wave-mark.is-active {
  filter: drop-shadow(0 0 10px color-mix(in srgb, var(--color-primary) 36%, transparent));
}

.join-wave-mark-icon {
  display: block;
  width: 100%;
  height: auto;
  transform-origin: 50% 80%;
  will-change: transform, opacity;
}

.join-wave-mark svg {
  display: block;
  width: 100%;
  height: auto;
}

.join-wave-mark .marker-buoy-ring {
  fill: color-mix(in srgb, #5fa0df 72%, #8ec8ff 28%);
}

.join-wave-mark .marker-buoy-base {
  fill: color-mix(in srgb, #fbfdff 92%, #d5e9ff 8%);
}

.join-wave-mark .marker-buoy-stripe {
  fill: color-mix(in srgb, #f6814c 70%, #ec4d44 30%);
}

.join-wave-mark .marker-buoy-cap {
  fill: color-mix(in srgb, #29497d 74%, #1c2e57 26%);
}

.join-wave-mark .marker-buoy-light {
  fill: color-mix(in srgb, #ffe083 72%, #ffc74a 28%);
}

.join-wave-mark .marker-buoy-gloss {
  fill: color-mix(in srgb, #ffffff 88%, transparent);
}

.join-wave-mark .marker-lh-base {
  fill: color-mix(in srgb, var(--color-primary) 70%, #0d2e62 30%);
}

.join-wave-mark .marker-lh-tower {
  fill: color-mix(in srgb, #f6fbff 88%, var(--color-primary) 12%);
}

.join-wave-mark .marker-lh-top {
  fill: color-mix(in srgb, #d44545 72%, #a52f2f 28%);
}

.join-wave-mark .marker-lh-beam {
  fill: color-mix(in srgb, #ffef9f 64%, transparent);
  opacity: 0.28;
}

.join-wave-mark .marker-reef-rock {
  fill: color-mix(in srgb, #365a7f 72%, #2a4868 28%);
}

.join-wave-mark .marker-reef-highlight {
  fill: color-mix(in srgb, #5f82a6 64%, #486a8e 36%);
}

.join-wave-boat {
  --boat-wave-offset: 0px;
  --boat-tilt: 0deg;
  --boat-waterline-adjust: -4px;
  position: absolute;
  top: 50%;
  left: 0;
  width: clamp(42px, 4.4vw, 58px);
  transform: translate(-50%, calc(-62% + var(--boat-waterline-adjust) + var(--boat-wave-offset))) rotate(var(--boat-tilt));
  color: color-mix(in srgb, var(--color-primary) 78%, #8ed5ff 22%);
  filter: drop-shadow(0 3px 8px color-mix(in srgb, #00132f 60%, transparent));
  will-change: transform, left;
}

.join-wave-boat-icon {
  display: block;
  transform-origin: 50% 60%;
}

.join-wave-boat svg {
  display: block;
  width: 100%;
  height: auto;
}

.join-wave-boat .boat-hull {
  fill: color-mix(in srgb, var(--color-primary) 64%, #102e5f 36%);
}

.join-wave-boat .boat-sail-main {
  fill: color-mix(in srgb, #f2f9ff 90%, var(--color-primary) 10%);
}

.join-wave-boat .boat-sail-side {
  fill: color-mix(in srgb, #cbe6ff 80%, var(--color-primary) 20%);
}

.join-wave-boat .boat-mast {
  fill: color-mix(in srgb, var(--text-primary) 75%, #294b7a 25%);
}

.join-wave-boat .boat-porthole {
  fill: color-mix(in srgb, #eef6ff 85%, var(--color-primary) 15%);
}

.join-canvas-overlay {
  position: absolute;
  top: 16px;
  left: 0;
  right: auto;
  width: min(44vw, 360px);
  z-index: 3;
  isolation: isolate;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 22px 12px 24px;
  border-radius: 0;
  border: 0;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--bg-body) 78%, transparent) 0%,
    color-mix(in srgb, var(--bg-body) 78%, transparent) 34%,
    color-mix(in srgb, var(--bg-body) 48%, transparent) 50%,
    color-mix(in srgb, var(--bg-body) 16%, transparent) 64%,
    rgba(0, 0, 0, 0) 78%,
    rgba(0, 0, 0, 0) 100%
  );
}

.join-canvas-overlay.is-enter-animate {
  animation: join-overlay-slide-in 720ms cubic-bezier(0.2, 0.78, 0.18, 1) both;
  will-change: transform, opacity;
}

@keyframes join-overlay-slide-in {
  from {
    transform: translateX(-112%);
    opacity: 0.24;
  }

  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.join-canvas-overlay::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.88;
  mix-blend-mode: soft-light;
  background:
    linear-gradient(
      90deg,
      rgba(255, 255, 255, 0.12) 0%,
      rgba(255, 255, 255, 0.06) 42%,
      rgba(255, 255, 255, 0.03) 60%,
      rgba(255, 255, 255, 0) 100%
    ),
    repeating-linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.05) 0 1px,
      rgba(255, 255, 255, 0) 1px 3px
    ),
    repeating-linear-gradient(
      45deg,
      rgba(0, 0, 0, 0.03) 0 1px,
      rgba(0, 0, 0, 0) 1px 4px
    );
  backdrop-filter: blur(9px) saturate(130%);
  -webkit-backdrop-filter: blur(9px) saturate(130%);
  -webkit-mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 56%,
    rgba(0, 0, 0, 0.6) 66%,
    rgba(0, 0, 0, 0) 78%,
    rgba(0, 0, 0, 0) 100%
  );
  mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 56%,
    rgba(0, 0, 0, 0.6) 66%,
    rgba(0, 0, 0, 0) 78%,
    rgba(0, 0, 0, 0) 100%
  );
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}

.join-canvas-overlay > * {
  position: relative;
  z-index: 1;
}

@media (prefers-reduced-motion: reduce) {
  .join-canvas-overlay.is-enter-animate {
    animation: none;
    transform: none;
    opacity: 1;
  }
}

.join-current-label {
  margin: 0;
  font-size: 0.84rem;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
}

.join-current-stage {
  margin: 4px 0 0;
  font-size: clamp(1.2rem, 0.9vw + 1rem, 1.7rem);
  line-height: 1.25;
  color: var(--text-primary);
}

.join-current-range {
  margin: 6px 0 0;
  font-size: 0.92rem;
  color: var(--text-secondary);
}

.join-current-location {
  margin: 4px 0 0;
  font-size: 0.88rem;
  color: color-mix(in srgb, var(--text-primary) 84%, var(--text-secondary) 16%);
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.join-stage-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.join-stage-item {
  position: relative;
  border: 1px solid color-mix(in srgb, var(--border-default) 90%, transparent);
  border-radius: 4px;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--bg-card) 90%, transparent) 0%,
    color-mix(in srgb, var(--bg-card) 97%, transparent) 100%
  );
  padding: 11px 12px;
  min-height: 98px;
  overflow: hidden;
  transition: border-color 0.22s ease, background 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
}

.join-stage-item::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 2px;
  background: color-mix(in srgb, var(--border-default) 75%, transparent);
  opacity: 0.86;
}

.join-stage-item.is-active,
.join-stage-item.is-current {
  border-color: color-mix(in srgb, var(--color-primary) 52%, var(--border-default) 48%);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--color-primary) 10%, var(--bg-card) 90%) 0%,
    color-mix(in srgb, var(--bg-card) 96%, transparent) 100%
  );
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--color-primary) 20%, transparent),
    0 12px 22px -18px color-mix(in srgb, var(--color-primary) 46%, transparent);
  transform: translateY(-1px);
}

.join-stage-item.is-active::before,
.join-stage-item.is-current::before {
  height: 3px;
  opacity: 1;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--color-primary) 84%, #7ed7ff 16%) 0%,
    color-mix(in srgb, var(--color-primary) 52%, #7ed7ff 48%) 100%
  );
}

.join-stage-item.is-completed .join-stage-status {
  color: #0f8a4f;
}

.join-stage-item .join-stage-status.is-query-ready {
  color: var(--color-primary);
}

.join-stage-item .join-stage-status.is-waiting-notice {
  color: #e5484d;
}

.join-stage-item.is-waiting-notice {
  border-color: color-mix(in srgb, #e5484d 62%, var(--border-default) 38%);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, #e5484d 7%, var(--bg-card) 93%) 0%,
    color-mix(in srgb, var(--bg-card) 97%, transparent) 100%
  );
  box-shadow:
    0 0 0 1px color-mix(in srgb, #e5484d 24%, transparent),
    0 10px 20px -18px color-mix(in srgb, #e5484d 48%, transparent);
}

.join-stage-item.is-waiting-notice::before {
  background: color-mix(in srgb, #e5484d 70%, transparent);
  opacity: 1;
}

.join-stage-item.is-waiting-notice .join-stage-status {
  color: #e5484d;
}

.join-stage-item.is-completed {
  border-color: color-mix(in srgb, #0f8a4f 48%, var(--border-default) 52%);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, #0f8a4f 7%, var(--bg-card) 93%) 0%,
    color-mix(in srgb, var(--bg-card) 96%, transparent) 100%
  );
}

.join-stage-item.is-completed::before {
  background: color-mix(in srgb, #0f8a4f 65%, transparent);
}

.join-stage-item.is-active .join-stage-status {
  color: var(--color-primary);
}

.join-stage-item.is-waiting-notice.is-active .join-stage-status,
.join-stage-item.is-waiting-notice.is-current .join-stage-status {
  color: #e5484d;
}

.join-stage-item.is-upcoming .join-stage-status,
.join-stage-item.is-pending .join-stage-status {
  color: var(--text-secondary);
}

.join-stage-item.is-upcoming,
.join-stage-item.is-pending {
  border-color: color-mix(in srgb, var(--border-default) 88%, transparent);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--bg-card) 95%, transparent) 0%,
    color-mix(in srgb, var(--bg-card) 99%, transparent) 100%
  );
}

.join-stage-item.is-upcoming::after,
.join-stage-item.is-pending::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 24px;
  background:
    repeating-linear-gradient(
      -45deg,
      transparent 0 10px,
      color-mix(in srgb, var(--border-default) 35%, transparent) 10px 12px
    );
  opacity: 0.2;
  pointer-events: none;
}

.join-stage-title-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  column-gap: 8px;
  row-gap: 4px;
}

.join-stage-name {
  margin: 0;
  min-width: 0;
  color: var(--text-primary);
  font-size: 0.94rem;
  line-height: 1.3;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.join-stage-status {
  flex-shrink: 0;
  white-space: nowrap;
  align-self: start;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.join-stage-time {
  margin: 8px 0 0;
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.45;
}

.join-stage-location {
  margin: 4px 0 0;
  color: color-mix(in srgb, var(--text-primary) 88%, var(--text-secondary) 12%);
  font-size: 0.76rem;
  line-height: 1.42;
  overflow-wrap: anywhere;
}

/* =========================================
   招新报名表单与 Formidable Forms 样式全面重构
   ========================================= */

.join-form-card {
  position: relative;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--color-primary) 32%, var(--border-default) 68%);
  border-radius: 12px;
  background:
    radial-gradient(
      120% 90% at 100% 0%,
      color-mix(in srgb, var(--color-primary) 12%, transparent) 0%,
      transparent 55%
    ),
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--bg-card) 92%, #0d1117 8%) 0%,
      color-mix(in srgb, var(--bg-card) 98%, transparent) 100%
    );
  padding: 24px;
  box-shadow:
    0 16px 36px -20px color-mix(in srgb, #000000 70%, transparent),
    inset 0 1px 0 color-mix(in srgb, #9bc9ff 16%, transparent);
}

.join-form-card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    repeating-linear-gradient(
      0deg,
      color-mix(in srgb, var(--color-primary) 6%, transparent) 0 1px,
      transparent 1px 16px
    ),
    repeating-linear-gradient(
      90deg,
      color-mix(in srgb, var(--color-primary) 5%, transparent) 0 1px,
      transparent 1px 20px
    );
  opacity: 0.22;
}

.join-form-card::after {
  content: "";
  position: absolute;
  inset: 12px;
  pointer-events: none;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--color-primary) 70%, transparent), transparent)
      top left / 80px 1px no-repeat,
    linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 70%, transparent), transparent)
      top left / 1px 40px no-repeat,
    linear-gradient(270deg, color-mix(in srgb, var(--color-primary) 50%, transparent), transparent)
      bottom right / 60px 1px no-repeat,
    linear-gradient(0deg, color-mix(in srgb, var(--color-primary) 50%, transparent), transparent)
      bottom right / 1px 30px no-repeat;
  opacity: 0.6;
}

.join-form-card > * {
  position: relative;
  z-index: 1;
}

.join-form-card + .join-panel-title {
  margin-top: 20px;
}

.join-form-card-placeholder {
  min-height: 132px;
  display: flex;
  align-items: center;
}

.join-form-content {
  margin-top: 10px;
}

.join-form-content form {
  margin: 0;
}

/* --- 录取进度查询表单 --- */
.join-progress-query-form {
  display: grid;
  gap: 12px;
}

.join-progress-query-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
}

.join-progress-query-field {
  display: grid;
  gap: 5px;
}

.join-progress-query-field span {
  font-size: 0.82rem;
  color: color-mix(in srgb, var(--text-primary) 85%, var(--text-secondary) 15%);
}

.join-progress-query-field input {
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid color-mix(in srgb, var(--border-default) 86%, transparent) !important;
  border-radius: 8px;
  background: color-mix(in srgb, var(--bg-card) 90%, transparent) !important;
  color: var(--text-primary) !important;
  padding: 10px 12px;
  line-height: 1.3;
  transition: border-color var(--duration-fast), box-shadow var(--duration-fast), background-color var(--duration-fast);
}

.join-progress-query-field input::placeholder {
  color: color-mix(in srgb, var(--text-secondary) 78%, var(--text-primary) 22%);
  opacity: 1;
}

.join-progress-query-field input:hover {
  border-color: color-mix(in srgb, var(--color-primary) 42%, var(--border-default) 58%) !important;
}

.join-progress-query-field input:focus {
  outline: none;
  border-color: var(--color-primary) !important;
  background: color-mix(in srgb, var(--bg-card) 95%, transparent) !important;
  color: var(--text-primary) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 22%, transparent) !important;
}

.join-progress-query-field input:-webkit-autofill,
.join-progress-query-field input:-webkit-autofill:hover,
.join-progress-query-field input:-webkit-autofill:focus,
.join-progress-query-field input:autofill {
  -webkit-text-fill-color: var(--text-primary) !important;
  -webkit-box-shadow: 0 0 0 1000px color-mix(in srgb, var(--bg-card) 90%, transparent) inset !important;
  box-shadow: 0 0 0 1000px color-mix(in srgb, var(--bg-card) 90%, transparent) inset !important;
  background: color-mix(in srgb, var(--bg-card) 90%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--border-default) 86%, transparent) !important;
  caret-color: var(--text-primary) !important;
  transition: background-color 9999s ease-out 0s !important;
}

[data-theme="dark"] .join-progress-query-form,
[data-theme="dark"] .join-progress-query-field input {
  color-scheme: dark;
}

[data-theme="light"] .join-progress-query-form,
[data-theme="light"] .join-progress-query-field input {
  color-scheme: light;
}

.join-progress-query-actions {
  display: flex;
  justify-content: flex-start;
}

.join-progress-query-submit {
  border: 1px solid color-mix(in srgb, var(--color-primary) 48%, var(--border-default) 52%);
  border-radius: 8px;
  background: color-mix(in srgb, var(--color-primary) 18%, var(--bg-card) 82%);
  color: var(--text-primary);
  padding: 10px 18px;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.join-progress-query-submit:hover {
  background: color-mix(in srgb, var(--color-primary) 28%, var(--bg-card) 72%);
  transform: translateY(-1px);
}

.join-progress-query-feedback {
  margin: 8px 0 0;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--border-default) 80%, transparent);
  background: color-mix(in srgb, var(--bg-card) 90%, transparent);
  color: var(--text-primary);
  font-size: 0.88rem;
  line-height: 1.55;
}

.join-progress-query-feedback.is-success {
  border-color: color-mix(in srgb, #0f8a4f 58%, var(--border-default) 42%);
  background: color-mix(in srgb, #0f8a4f 14%, var(--bg-card) 86%);
}

.join-progress-query-feedback.is-warning {
  border-color: color-mix(in srgb, #d89a1b 58%, var(--border-default) 42%);
  background: color-mix(in srgb, #d89a1b 14%, var(--bg-card) 86%);
}

.join-progress-query-feedback.is-info {
  border-color: color-mix(in srgb, var(--color-primary) 52%, var(--border-default) 48%);
  background: color-mix(in srgb, var(--color-primary) 14%, var(--bg-card) 86%);
}

.join-progress-query-feedback.is-error {
  border-color: color-mix(in srgb, #c34646 58%, var(--border-default) 42%);
  background: color-mix(in srgb, #c34646 14%, var(--bg-card) 86%);
}

/* --- Formidable 表单字段容器与排版 --- */
.join-form-content .frm_forms,
.join-form-content .frm_form_fields {
  margin: 0;
  max-width: none;
}

.join-form-content .frm_fields_container {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.join-form-content .frm_form_field,
.join-form-content .form-field {
  margin-bottom: 0 !important;
  display: flex;
  flex-direction: column;
}

.join-form-content .frm_primary_label,
.join-form-content label.frm_primary_label,
.join-form-content .frm_section_heading h3,
.join-form-content .frm_inline_box label {
  color: var(--text-primary) !important;
  font-size: 0.92rem !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
  letter-spacing: 0.01em !important;
  margin-bottom: 7px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 3px !important;
  opacity: 1 !important;
}

.join-form-content .frm_required {
  color: #f85149 !important;
  font-weight: 700 !important;
  font-size: 1em !important;
  margin-left: 2px !important;
}

/* --- 顶部全局错误/提示横幅 (Modern Alert Banner) --- */
.join-form-content .frm_error_style,
.join-form-content .frm_message.frm_error_style,
.join-form-content div.frm_error_style,
.join-form-content .frm_error {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 12px 16px 12px 42px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(248, 81, 73, 0.4) !important;
  border-left: 4px solid #f85149 !important;
  background: linear-gradient(135deg, rgba(248, 81, 73, 0.16) 0%, rgba(248, 81, 73, 0.06) 100%) !important;
  color: #ff7b72 !important;
  font-size: 0.9rem !important;
  font-weight: 500 !important;
  line-height: 1.45 !important;
  margin: 8px 0 18px 0 !important;
  box-shadow: 0 4px 12px rgba(248, 81, 73, 0.1) !important;
}

.join-form-content .frm_error_style::before,
.join-form-content .frm_message.frm_error_style::before,
.join-form-content .frm_error::before {
  content: "" !important;
  position: absolute !important;
  left: 14px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 18px !important;
  height: 18px !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f85149' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-size: contain !important;
}

/* --- 成功提示 (Success Message) --- */
.join-form-content .frm_message,
.join-form-content .frm_success_style,
.join-form-content .frm_success {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 12px 16px 12px 42px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(63, 185, 80, 0.4) !important;
  border-left: 4px solid #3fb950 !important;
  background: linear-gradient(135deg, rgba(63, 185, 80, 0.16) 0%, rgba(63, 185, 80, 0.06) 100%) !important;
  color: #7ee787 !important;
  font-size: 0.9rem !important;
  font-weight: 500 !important;
  line-height: 1.45 !important;
  margin-bottom: 18px !important;
}

.join-form-content .frm_message::before,
.join-form-content .frm_success_style::before,
.join-form-content .frm_success::before {
  content: "" !important;
  position: absolute !important;
  left: 14px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 18px !important;
  height: 18px !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233fb950' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'%3E%3C/path%3E%3Cpolyline points='22 4 12 14.01 9 11.01'%3E%3C/polyline%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-size: contain !important;
}

.join-form-content .frm_description {
  color: var(--text-secondary) !important;
  font-size: 0.82rem !important;
  line-height: 1.45 !important;
  margin-top: 4px !important;
}

/* --- 输入框统一质感 (Text, Email, Tel, Number, Select, Textarea) --- */
.join-form-content input[type="text"],
.join-form-content input[type="email"],
.join-form-content input[type="number"],
.join-form-content input[type="tel"],
.join-form-content input[type="password"],
.join-form-content input[type="date"],
.join-form-content input[type="datetime-local"],
.join-form-content textarea,
.join-form-content select {
  display: block !important;
  width: 100% !important;
  min-height: 44px !important;
  padding: 10px 14px !important;
  font-size: 0.94rem !important;
  line-height: 1.4 !important;
  font-family: inherit !important;
  color: #f0f6fc !important;
  background: rgba(13, 17, 23, 0.72) !important;
  border: 1px solid rgba(240, 246, 252, 0.14) !important;
  border-radius: 8px !important;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25) !important;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-sizing: border-box !important;
}

.join-form-content input[type="text"]:hover,
.join-form-content input[type="email"]:hover,
.join-form-content input[type="number"]:hover,
.join-form-content input[type="tel"]:hover,
.join-form-content input[type="password"]:hover,
.join-form-content input[type="date"]:hover,
.join-form-content input[type="datetime-local"]:hover,
.join-form-content textarea:hover,
.join-form-content select:hover {
  border-color: rgba(88, 166, 255, 0.45) !important;
  background: rgba(22, 27, 34, 0.85) !important;
}

.join-form-content input[type="text"]:focus,
.join-form-content input[type="email"]:focus,
.join-form-content input[type="number"]:focus,
.join-form-content input[type="tel"]:focus,
.join-form-content input[type="password"]:focus,
.join-form-content input[type="date"]:focus,
.join-form-content input[type="datetime-local"]:focus,
.join-form-content textarea:focus,
.join-form-content select:focus {
  border-color: #58a6ff !important;
  background: rgba(22, 27, 34, 0.95) !important;
  color: #ffffff !important;
  box-shadow: 0 0 0 3px rgba(56, 139, 253, 0.28), inset 0 1px 2px rgba(0, 0, 0, 0.2) !important;
  outline: none !important;
}

.join-form-content input::placeholder,
.join-form-content textarea::placeholder {
  color: #6d737c !important;
  opacity: 1 !important;
}

.join-form-content textarea {
  min-height: 96px !important;
  resize: vertical;
}

/* --- 自动填充处理 --- */
.join-form-content input:-webkit-autofill,
.join-form-content input:-webkit-autofill:hover,
.join-form-content input:-webkit-autofill:focus,
.join-form-content textarea:-webkit-autofill,
.join-form-content textarea:-webkit-autofill:hover,
.join-form-content textarea:-webkit-autofill:focus,
.join-form-content select:-webkit-autofill,
.join-form-content select:-webkit-autofill:hover,
.join-form-content select:-webkit-autofill:focus {
  -webkit-text-fill-color: #f0f6fc !important;
  -webkit-box-shadow: 0 0 0 1000px #161b22 inset !important;
  box-shadow: 0 0 0 1000px #161b22 inset !important;
  caret-color: #f0f6fc !important;
  transition: background-color 9999s ease-out 0s !important;
}

/* --- 国际电话组件 (iti) --- */
.join-form-content .iti {
  width: 100% !important;
}

.join-form-content .iti input[type="tel"] {
  padding-right: 12px !important;
  padding-left: calc(var(--iti-selected-country-arrow-padding, 64px) + 4px) !important;
}

.join-form-content .iti__selected-country {
  border-top-left-radius: 8px;
  border-bottom-left-radius: 8px;
}

.join-form-content .iti__dropdown-content,
.frm_forms.with_frm_style .iti__dropdown-content {
  background: #161b22 !important;
  border: 1px solid rgba(56, 139, 253, 0.4) !important;
  color: #f0f6fc !important;
  box-shadow: 0 18px 36px -16px rgba(0, 0, 0, 0.75);
  border-radius: 8px;
}

.join-form-content .iti__search-input,
.frm_forms.with_frm_style .iti__search-input {
  border: 1px solid rgba(240, 246, 252, 0.2) !important;
  background: #0d1117 !important;
  color: #f0f6fc !important;
  min-height: 38px !important;
  border-radius: 6px;
}

.join-form-content .iti__country,
.frm_forms.with_frm_style .iti__country {
  color: #c9d1d9 !important;
}

.join-form-content .iti__country.iti__highlight,
.join-form-content .iti__country:hover,
.frm_forms.with_frm_style .iti__country.iti__highlight,
.frm_forms.with_frm_style .iti__country:hover {
  background: rgba(56, 139, 253, 0.2) !important;
  color: #ffffff !important;
}

.join-form-content .iti__divider,
.frm_forms.with_frm_style .iti__divider {
  border-bottom-color: rgba(240, 246, 252, 0.1) !important;
}

/* --- 选项卡片化重构 (Checkbox & Radio Chips) --- */
.join-form-content .frm_opt_container {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px 12px !important;
  margin-top: 6px !important;
}

.join-form-content .frm_checkbox,
.join-form-content .frm_radio {
  margin: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
}

.join-form-content .frm_checkbox label,
.join-form-content .frm_radio label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 8px 14px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(240, 246, 252, 0.12) !important;
  background: rgba(22, 27, 34, 0.6) !important;
  color: var(--text-primary) !important;
  font-size: 0.92rem !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  cursor: pointer !important;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
  user-select: none !important;
}

.join-form-content .frm_checkbox label:hover,
.join-form-content .frm_radio label:hover {
  border-color: rgba(88, 166, 255, 0.45) !important;
  background: rgba(56, 139, 253, 0.1) !important;
  transform: translateY(-1px);
}

.join-form-content .frm_checkbox input[type="checkbox"],
.join-form-content .frm_radio input[type="radio"] {
  width: 16px !important;
  min-height: auto !important;
  height: 16px !important;
  margin: 0 !important;
  padding: 0 !important;
  accent-color: var(--color-primary) !important;
  cursor: pointer !important;
}

/* --- 提交与操作按钮 (Submit & Actions) --- */
.join-form-content .frm_submit {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  align-items: center !important;
  margin-top: 24px !important;
  padding-top: 14px !important;
  border-top: 1px solid rgba(240, 246, 252, 0.08) !important;
  max-width: none !important;
}

.join-form-content input[type="submit"],
.join-form-content button.frm_button_submit {
  min-height: 46px !important;
  padding: 0 28px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.16) !important;
  background: linear-gradient(135deg, #1f6feb 0%, #1158c7 100%) !important;
  color: #ffffff !important;
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  cursor: pointer !important;
  box-shadow: 0 3px 12px rgba(31, 111, 235, 0.35) !important;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
  user-select: none !important;
}

.join-form-content input[type="submit"]:hover,
.join-form-content button.frm_button_submit:hover {
  transform: translateY(-1px) !important;
  filter: brightness(1.08) !important;
  box-shadow: 0 6px 18px rgba(31, 111, 235, 0.45) !important;
}

.join-form-content input[type="submit"]:active,
.join-form-content button.frm_button_submit:active {
  transform: translateY(0) !important;
  filter: brightness(0.96) !important;
}

.join-form-content .frm_save_draft,
.join-form-content button[name*="draft"],
.join-form-content input[name*="draft"],
.join-form-content button[value*="草稿"],
.join-form-content input[value*="草稿"],
.join-form-content button[value*="Draft"],
.join-form-content input[value*="Draft"] {
  min-height: 46px !important;
  padding: 0 22px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(240, 246, 252, 0.16) !important;
  background: rgba(22, 27, 34, 0.6) !important;
  color: var(--text-primary) !important;
  font-size: 0.92rem !important;
  font-weight: 500 !important;
  cursor: pointer !important;
  box-shadow: none !important;
  transition: all 0.2s ease !important;
}

.join-form-content .frm_save_draft:hover,
.join-form-content button[name*="draft"]:hover,
.join-form-content input[name*="draft"]:hover {
  border-color: var(--color-primary) !important;
  background: rgba(56, 139, 253, 0.1) !important;
  color: var(--color-primary) !important;
}

/* =========================================
   浅色模式适配 (Light Theme)
   ========================================= */

[data-theme="light"] .join-form-card {
  border-color: color-mix(in srgb, #8bbcff 52%, var(--border-default) 48%);
  background:
    radial-gradient(
      140% 90% at 100% 0%,
      color-mix(in srgb, #dbe9ff 48%, transparent) 0%,
      transparent 54%
    ),
    linear-gradient(
      180deg,
      color-mix(in srgb, #ffffff 94%, #edf5ff 6%) 0%,
      color-mix(in srgb, #ffffff 98%, #edf5ff 2%) 100%
    );
  box-shadow:
    0 18px 34px -26px rgba(92, 126, 172, 0.34),
    inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

[data-theme="light"] .join-form-content input[type="text"],
[data-theme="light"] .join-form-content input[type="email"],
[data-theme="light"] .join-form-content input[type="number"],
[data-theme="light"] .join-form-content input[type="tel"],
[data-theme="light"] .join-form-content input[type="password"],
[data-theme="light"] .join-form-content input[type="date"],
[data-theme="light"] .join-form-content input[type="datetime-local"],
[data-theme="light"] .join-form-content textarea,
[data-theme="light"] .join-form-content select {
  background: #ffffff !important;
  border: 1px solid #d0d7de !important;
  color: #1f2328 !important;
  box-shadow: inset 0 1px 2px rgba(31, 35, 40, 0.04) !important;
}

[data-theme="light"] .join-form-content input[type="text"]:hover,
[data-theme="light"] .join-form-content input[type="email"]:hover,
[data-theme="light"] .join-form-content input[type="number"]:hover,
[data-theme="light"] .join-form-content input[type="tel"]:hover,
[data-theme="light"] .join-form-content input[type="password"]:hover,
[data-theme="light"] .join-form-content input[type="date"]:hover,
[data-theme="light"] .join-form-content input[type="datetime-local"]:hover,
[data-theme="light"] .join-form-content textarea:hover,
[data-theme="light"] .join-form-content select:hover {
  border-color: #0969da !important;
}

[data-theme="light"] .join-form-content input[type="text"]:focus,
[data-theme="light"] .join-form-content input[type="email"]:focus,
[data-theme="light"] .join-form-content input[type="number"]:focus,
[data-theme="light"] .join-form-content input[type="tel"]:focus,
[data-theme="light"] .join-form-content input[type="password"]:focus,
[data-theme="light"] .join-form-content input[type="date"]:focus,
[data-theme="light"] .join-form-content input[type="datetime-local"]:focus,
[data-theme="light"] .join-form-content textarea:focus,
[data-theme="light"] .join-form-content select:focus {
  border-color: #0969da !important;
  background: #ffffff !important;
  color: #1f2328 !important;
  box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.2), inset 0 1px 2px rgba(31, 35, 40, 0.04) !important;
}

[data-theme="light"] .join-form-content input::placeholder,
[data-theme="light"] .join-form-content textarea::placeholder {
  color: #8c959f !important;
}

[data-theme="light"] .join-form-content input:-webkit-autofill,
[data-theme="light"] .join-form-content input:-webkit-autofill:hover,
[data-theme="light"] .join-form-content input:-webkit-autofill:focus,
[data-theme="light"] .join-form-content textarea:-webkit-autofill,
[data-theme="light"] .join-form-content textarea:-webkit-autofill:hover,
[data-theme="light"] .join-form-content textarea:-webkit-autofill:focus,
[data-theme="light"] .join-form-content select:-webkit-autofill,
[data-theme="light"] .join-form-content select:-webkit-autofill:hover,
[data-theme="light"] .join-form-content select:-webkit-autofill:focus {
  -webkit-text-fill-color: #1f2328 !important;
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset !important;
  box-shadow: 0 0 0 1000px #ffffff inset !important;
}

[data-theme="light"] .join-form-content .frm_error_style,
[data-theme="light"] .join-form-content .frm_message.frm_error_style,
[data-theme="light"] .join-form-content .frm_error {
  background: #ffebe9 !important;
  border: 1px solid rgba(207, 34, 46, 0.3) !important;
  border-left: 4px solid #cf222e !important;
  color: #a40e26 !important;
}

[data-theme="light"] .join-form-content .frm_error_style::before,
[data-theme="light"] .join-form-content .frm_message.frm_error_style::before,
[data-theme="light"] .join-form-content .frm_error::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cf222e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E") !important;
}

[data-theme="light"] .join-form-content .frm_message,
[data-theme="light"] .join-form-content .frm_success_style,
[data-theme="light"] .join-form-content .frm_success {
  background: #dafbe1 !important;
  border: 1px solid rgba(31, 136, 61, 0.3) !important;
  border-left: 4px solid #1f883d !important;
  color: #1a7f37 !important;
}

[data-theme="light"] .join-form-content .frm_message::before,
[data-theme="light"] .join-form-content .frm_success_style::before,
[data-theme="light"] .join-form-content .frm_success::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a7f37' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'%3E%3C/path%3E%3Cpolyline points='22 4 12 14.01 9 11.01'%3E%3C/polyline%3E%3C/svg%3E") !important;
}

[data-theme="light"] .join-form-content .frm_checkbox label,
[data-theme="light"] .join-form-content .frm_radio label {
  border: 1px solid #d0d7de !important;
  background: #f6f8fa !important;
}

[data-theme="light"] .join-form-content .frm_checkbox label:hover,
[data-theme="light"] .join-form-content .frm_radio label:hover {
  border-color: #0969da !important;
  background: rgba(9, 105, 218, 0.06) !important;
}

[data-theme="light"] .join-form-content input[type="submit"],
[data-theme="light"] .join-form-content button.frm_button_submit {
  background: linear-gradient(135deg, #0969da 0%, #0550ae 100%) !important;
  box-shadow: 0 3px 12px rgba(9, 105, 218, 0.28) !important;
}

[data-theme="light"] .join-form-content input[type="submit"]:hover,
[data-theme="light"] .join-form-content button.frm_button_submit:hover {
  box-shadow: 0 6px 18px rgba(9, 105, 218, 0.38) !important;
}

[data-theme="light"] .join-form-content .frm_save_draft,
[data-theme="light"] .join-form-content button[name*="draft"],
[data-theme="light"] .join-form-content input[name*="draft"] {
  border: 1px solid #d0d7de !important;
  background: #f6f8fa !important;
  color: #1f2328 !important;
}

[data-theme="light"] .join-form-content .frm_save_draft:hover,
[data-theme="light"] .join-form-content button[name*="draft"]:hover,
[data-theme="light"] .join-form-content input[name*="draft"]:hover {
  border-color: #0969da !important;
  background: rgba(9, 105, 218, 0.06) !important;
  color: #0969da !important;
}

.join-form-tip {
  margin: 0;
  padding: 14px;
  border-radius: 10px;
  border: 1px dashed var(--border-default);
  color: var(--text-secondary);
  font-size: 0.92rem;
  line-height: 1.65;
}

.join-form-footnote {
  margin-top: 12px;
  color: var(--text-secondary);
  font-size: 0.82rem;
}

@media (max-width: 1080px) {
  .join-stage-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .join-page {
    padding: 30px 0 60px;
  }

  .join-info-layout {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .join-news-item {
    padding: 10px 0;
  }

  .join-stage-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .join-head {
    margin-bottom: 22px;
  }

  .join-hero {
    margin-bottom: 24px;
  }

  .join-canvas-overlay {
    top: 12px;
    left: 0;
    right: auto;
    width: min(86vw, 272px);
    padding: 10px 16px 10px 18px;
  }

  .join-canvas-shell {
    height: 272px;
  }

  .join-current-stage {
    margin-top: 2px;
    font-size: 1.1rem;
  }

  .join-current-range {
    margin-top: 5px;
    font-size: 0.82rem;
  }

  .join-stage-list {
    grid-template-columns: 1fr;
  }

  .join-stage-item {
    min-height: 0;
  }

  .join-progress-query-grid {
    grid-template-columns: 1fr;
  }
}
