/* 招聘模块样式：申请页、成功页、邀约页、岗位详情申请区块。由各招聘模板通过 extra_css 引入。 */

/* ===== Recruiting: interview invite page ===== */
.invite-page { margin: 0 auto; padding: 96px var(--container-padding) var(--section-padding-y); }
.invite-hero { text-align: center; }
.invite-page .invite-meta { margin-top: var(--space-4); flex-wrap: wrap; justify-content: center; }
.invite-page .invite-lead { text-align: center; margin: var(--space-6) 0 0; max-width: none; }
.invite-page .invite-lead strong { color: var(--text); }
/* 已预约：约到的时间 + 会议 / 改期 / 取消链接 */
.invite-page .invite-booking-time { margin: 0; }
.invite-page .invite-booking-links { margin: var(--space-3) 0 0; display: flex; flex-wrap: wrap; gap: var(--space-4); }
.invite-page .invite-booking-links a { color: inherit; font-weight: 600; text-decoration: underline; }
.invite-frame { margin-top: var(--space-8); }
/* 直邀链接页：居中的窄表单（姓名 + 邮箱） */
.open-invite-form { max-width: 640px; margin: var(--space-8) auto 0; }
.apply-form.open-invite-form .btn-primary { justify-self: center; }
.open-invite-form .form-group.job-choice { grid-column: 1 / -1; }
/* 题目区的包装层不参与布局：里面的字段直接落在表单的网格里 */
.open-invite-questions { display: contents; }
.open-invite-questions.is-loading > * { opacity: .5; transition: opacity .15s; }
/* 选中岗位后的「岗位要求」卡片：占满一行，放在岗位下拉 / 姓名邮箱与题目之间 */
.open-invite-job { grid-column: 1 / -1; padding: var(--space-5); border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--color-bg-input); }
/* 视觉顺序：提示条 → 应聘岗位 → 岗位要求 → 姓名 / 邮箱 → 题目（要求卡片在 DOM 里和题目同属动态加载的那一块） */
.open-invite-form .form-alert { order: -3; }
.open-invite-form .form-group.job-choice { order: -2; }
.open-invite-form .open-invite-job { order: -1; }
.open-invite-job-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2) var(--space-3); }
.open-invite-job-title { font-size: var(--text-md); color: var(--text); }
.open-invite-job-meta { font-size: var(--text-sm); color: var(--muted); }
.open-invite-job-body { margin-top: var(--space-3); }
.open-invite-job-label { font-size: var(--text-xs); letter-spacing: .08em; color: var(--muted); }
/* 长描述：页面脚本就绪后默认只露出一段预览（底部渐隐），点「展开全部」显示完整内容 */
.open-invite-form.js-ready .open-invite-job-req.is-clamped { max-height: 190px; overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 55%, transparent); mask-image: linear-gradient(#000 55%, transparent); }
.open-invite-job-toggle { margin-top: var(--space-2); padding: var(--space-2) 0; min-height: 36px; border: 0; background: none; color: var(--primary-2); font: inherit; font-size: var(--text-sm); font-weight: var(--weight-semibold); cursor: pointer; }
.open-invite-job-toggle:hover { text-decoration: underline; }
.open-invite-job-toggle[hidden] { display: none; }
.open-invite-job-link { margin-left: 0; }
/* 岗位描述是后台富文本：在卡片里收紧字号和间距 */
.open-invite-job-req { margin-top: var(--space-2); font-size: var(--text-sm); line-height: 1.7; color: var(--text); overflow-wrap: anywhere; }
.open-invite-job-req > :first-child { margin-top: 0; }
.open-invite-job-req > :last-child { margin-bottom: 0; }
.open-invite-job-req p { margin: 0 0 var(--space-2); }
.open-invite-job-req h1, .open-invite-job-req h2, .open-invite-job-req h3, .open-invite-job-req h4 { font-size: var(--text-base); margin: var(--space-3) 0 var(--space-1); color: var(--text); }
.open-invite-job-req ul, .open-invite-job-req ol { margin: 0 0 var(--space-2); padding-left: 1.4em; }
.open-invite-job-req img, .open-invite-job-req table { max-width: 100%; height: auto; }
.open-invite-job-link { display: inline-block; margin-top: var(--space-2); font-size: var(--text-sm); color: var(--primary-2); text-decoration: none; }
.open-invite-job-link:hover { text-decoration: underline; }
.apply-form.open-invite-form .form-note { text-align: center; }
.form-alert { padding: var(--space-4) var(--space-5); border: 1px solid var(--border); border-radius: var(--radius-md); margin: var(--space-8) 0 0; font-size: var(--text-base); line-height: 1.6; }
.form-alert-error { border-color: rgba(239, 68, 68, 0.45); background: rgba(239, 68, 68, 0.10); color: var(--color-danger); }
.form-alert-success { border-color: rgba(34, 197, 94, 0.45); background: rgba(34, 197, 94, 0.10); color: var(--color-success); }
@media (max-width: 640px) {
  .invite-page { padding-top: 88px; }
}

/* ===== Recruiting: apply page ===== */
.apply-layout { grid-template-columns: minmax(0, 1fr) 320px; }
.apply-main { min-width: 0; }
.job-detail-actions { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-8); }
.job-detail-actions-hint { color: var(--muted); font-size: var(--text-sm); max-width: 420px; text-align: left; }
.job-apply-section .job-apply-lead { text-align: left; margin: 0 0 var(--space-6); max-width: none; }
.job-apply-cta { margin: 0 0 var(--space-6); }
.job-apply-section .scheduler-fallback { text-align: left; margin: 0; }
/* 岗位卡片头部：标题占满剩余宽度、标签靠右且不折行；窄屏下标题独占一行，标签换到下一行 */
.job-header { flex-wrap: wrap; justify-content: flex-start; gap: var(--space-2); }
.job-header .job-title { flex: 1 1 auto; min-width: 0; }
.job-header .job-tag { flex: none; white-space: nowrap; }
@media (max-width: 640px) {
  .job-header { margin-bottom: var(--space-3); }
  .job-header .job-title { flex-basis: 100%; }
  .job-header .job-tag { padding: var(--space-1) var(--space-3); min-height: 28px; display: inline-flex; align-items: center; }
  .job-item { padding: var(--space-5); }
  .job-item .job-cta { display: block; text-align: center; }
}
.job-tag-open { background: rgba(124, 255, 178, 0.12); color: var(--color-success); border-color: rgba(124, 255, 178, 0.35); text-decoration: none; }
.job-tag-open:hover { background: rgba(124, 255, 178, 0.2); }
.apply-form { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); }
.apply-fieldset { display: contents; border: 0; margin: 0; padding: 0; min-width: 0; }
.form-section-title { grid-column: 1 / -1; font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); padding-bottom: var(--space-2); border-bottom: 1px solid var(--border); margin-top: var(--space-2); }
.apply-form .form-group.full-width, .apply-form .btn-primary, .apply-form .form-note, .apply-form .form-alert { grid-column: 1 / -1; }
.apply-form .form-alert { margin: 0; }
.apply-form input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.apply-form textarea,
.apply-form select {
  width: 100%; padding: var(--btn-padding-y) var(--space-4); border-radius: var(--radius-md);
  border: 1px solid var(--border); background: var(--color-bg-input); color: var(--text);
  outline: none; transition: var(--transition-default); font-size: var(--btn-font-size); font-family: inherit;
}
.apply-form input:focus, .apply-form textarea:focus, .apply-form select:focus { border-color: var(--primary-2); box-shadow: 0 0 0 4px rgba(123, 92, 255, 0.15); }
.apply-form input[type="date"], .apply-form select { color-scheme: dark; }
.apply-form select { appearance: none; -webkit-appearance: none; padding-right: var(--space-10); cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2216%22 height=%2216%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23a3a8b8%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpolyline points=%226 9 12 15 18 9%22/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right var(--space-4) center; }
.apply-form .form-group.is-required > label::after, .apply-form .form-group.is-required > .form-label::after { content: " *"; color: var(--color-danger); }
.apply-form .form-label { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text); }
.apply-form .form-help { font-size: var(--text-xs); color: var(--muted); }
.apply-form .form-group.has-error select, .apply-form .form-group.has-error .file-drop { border-color: var(--color-danger); box-shadow: 0 0 0 4px rgba(255, 92, 92, 0.1); }
.choice-group { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }
.choice { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); min-height: 44px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--color-bg-input); color: var(--text); cursor: pointer; font-size: var(--text-base); font-weight: 400; transition: var(--transition-default); }
.choice:hover { border-color: var(--primary-2); }
.choice input { width: 18px; height: 18px; margin: 0; accent-color: var(--primary-1); cursor: pointer; }
.choice-single { justify-content: flex-start; }
.file-drop { position: relative; display: flex; align-items: center; gap: var(--space-4); padding: var(--space-4); border: 1px dashed var(--border); border-radius: var(--radius-md); background: var(--color-bg-input); transition: var(--transition-default); }
.file-drop:focus-within, .file-drop:hover { border-color: var(--primary-2); }
.file-drop input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.file-drop-cta { flex-shrink: 0; padding: var(--space-2) var(--space-4); border-radius: var(--radius-pill); border: 1px solid var(--primary-2); color: var(--primary-2); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.file-name { color: var(--muted); font-size: var(--text-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-name.is-set { color: var(--text); }
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.apply-form .btn-primary { justify-self: start; min-width: 200px; margin-top: var(--space-2); }
.apply-form .form-note { color: var(--muted); font-size: var(--text-xs); margin: 0; }
.apply-aside { min-width: 0; }
.apply-summary { position: sticky; top: 120px; padding: var(--space-6); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--color-bg-input); }
.apply-summary-title { font-size: var(--text-sm); letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin: 0 0 var(--space-3); }
.apply-summary-list + .apply-summary-title { margin-top: var(--space-6); }
.apply-summary-list { display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-4); margin: 0; font-size: var(--text-sm); }
.apply-summary-list dt { color: var(--muted); }
.apply-summary-list dd { margin: 0; color: var(--text); word-break: break-all; }
.apply-summary-list a { color: var(--primary-2); text-decoration: none; }
.apply-steps { list-style: none; counter-reset: step; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.apply-steps li { counter-increment: step; position: relative; padding-left: 36px; color: var(--muted); font-size: var(--text-sm); line-height: 1.6; }
.apply-steps li::before { content: counter(step); position: absolute; left: 0; top: 0; width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-1), var(--primary-2)); color: #fff; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.recruit-section { padding-top: 120px; }
.recruit-card { max-width: 640px; margin: 0 auto; padding: var(--space-10); border-radius: var(--radius-lg); text-align: center; }
.recruit-icon { width: 64px; height: 64px; margin: 0 auto var(--space-5); border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(124, 255, 178, 0.14); color: var(--color-success); }
.recruit-title { font-size: var(--text-xl); margin: 0 0 var(--space-3); }
.recruit-lead { color: var(--muted); margin: 0 0 var(--space-4); line-height: 1.7; }
.recruit-lead strong { color: var(--text); }
.recruit-ref-row { color: var(--muted); font-size: var(--text-sm); margin: 0 0 var(--space-8); }
.recruit-ref { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--primary-2); font-weight: 600; letter-spacing: 0.04em; }
.recruit-subtitle { font-size: var(--text-md); margin: 0 0 var(--space-4); }
.recruit-steps { text-align: left; max-width: 420px; margin: 0 auto var(--space-8); }
.recruit-actions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--space-4); }
[data-theme="light"] .apply-form input[type="date"], [data-theme="light"] .apply-form select { color-scheme: light; }
[data-theme="light"] .job-tag-open, [data-theme="light"] .recruit-icon, [data-theme="light"] .form-alert-success { color: #1d7a4a; }
/* 结果页的「提示」图标（重复提交）：用主色而不是成功的绿色 */
.recruit-icon.recruit-icon-info { background: rgba(59, 211, 255, 0.12); color: var(--primary-2); }
[data-theme="light"] .recruit-icon.recruit-icon-info { color: #0e7fa8; }
.recruit-steps a { color: var(--primary-2); text-decoration: none; }
@media (max-width: 960px) {
  .apply-layout { grid-template-columns: 1fr; }
  .apply-summary { position: static; }
}
@media (max-width: 640px) {
  .apply-form { grid-template-columns: 1fr; }
  .apply-form input, .apply-form textarea, .apply-form select { font-size: 16px; }
  .apply-form .btn-primary { justify-self: stretch; }
  .recruit-section { padding-top: 96px; }
  .recruit-card { padding: var(--space-6); }
}
