/* ============================================================
   算算命 · 人格测试样式（personality-dev 维护）· 知乎风
   规范见 DESIGN.md：浅灰底 + 白卡片、15px 正文、4px 圆角、
   轻阴影、实线分隔、品牌红 #d51921、链接蓝 #175199。
   变量名沿用 base.css 旧名（--green = 品牌红，语义绿用 --ok）。
   统一前缀 .pe-。
   ============================================================ */

/* 模块说明（人工修改前先读）
 * 模块：public/styles/personality.css
 * 职责：人格测试与结果页样式。
 * 修改边界：只改人格模块。
 */

.pe-wrap {
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink, #121212);
}

/* ------------------------------------------------------------ 顶部 tab */

.pe-tabs {
  display: flex;
  border-bottom: 1px solid var(--line, #ebebeb);
  margin-bottom: 16px;
}

.pe-tab {
  padding: 10px 16px;
  margin-bottom: -1px;
  font-size: 14px;
  color: var(--ink-2, #444444);
  border-bottom: 3px solid transparent;
  background: none;
  transition: color 0.15s ease;
}

.pe-tab:hover { color: var(--ink, #121212); }

.pe-tab.active {
  color: var(--green-dark, #b31219);
  border-bottom-color: var(--green, #d51921);
  font-weight: 700;
}

/* ------------------------------------------------------------ 说明页 */

.pe-kicker {
  font-size: 13px;
  color: var(--muted, #8590a6);
  margin: 0 0 4px;
}

.pe-title {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--ink, #121212);
  margin: 0 0 10px;
}

.pe-lead {
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink-2, #444444);
  margin: 0 0 16px;
}

.pe-recent {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 16px;
  padding: 16px 20px;
  margin-bottom: 12px;
  background: var(--card, #ffffff);
  border-radius: 4px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-recent-main { min-width: 0; }

.pe-recent-label {
  font-size: 13px;
  color: var(--muted, #8590a6);
}

.pe-recent-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin-top: 2px;
}

.pe-recent-code {
  font-size: 13px;
  font-weight: 400;
  color: var(--green-dark, #b31219);
  margin-left: 6px;
}

.pe-recent-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.pe-recent-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid var(--line-strong, #d3d3d3);
  border-radius: 4px;
  background: var(--card, #ffffff);
  color: var(--ink-2, #444444);
  font-size: 13px;
}

.pe-recent-btn:hover {
  border-color: var(--green, #d51921);
  color: var(--green-dark, #b31219);
  text-decoration: none;
}

.pe-recent-primary {
  background: var(--green, #d51921);
  border-color: var(--green, #d51921);
  color: #fff;
  font-weight: 600;
}

.pe-recent-primary:hover {
  background: var(--green-dark, #b31219);
  border-color: var(--green-dark, #b31219);
  color: #fff;
}

.pe-dim-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 16px;
}

.pe-dim-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 20px;
  background: var(--card, #ffffff);
  border-radius: 4px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-dim-emoji {
  flex: none;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  font-size: 16px;
  border-radius: 4px;
  background: var(--bg-soft, #f6f6f6);
}

.pe-dim-body { min-width: 0; }

.pe-dim-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink, #121212);
}

.pe-dim-desc {
  font-size: 14px;
  line-height: 1.6;
  color: var(--muted, #8590a6);
  margin-top: 2px;
}

.pe-note {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  background: var(--bg-soft, #f6f6f6);
  border-radius: 4px;
  padding: 12px 16px;
  margin: 0 0 16px;
}

.pe-start { width: 100%; margin-bottom: 6px; }

.pe-foot {
  font-size: 13px;
  color: var(--muted, #8590a6);
  text-align: center;
  line-height: 1.7;
  margin-top: 16px;
}

/* ------------------------------------------------------------ 错误态 */

.pe-error {
  text-align: center;
  padding: 40px 20px;
  background: var(--card, #ffffff);
  border-radius: 4px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-error-icon { font-size: 34px; margin-bottom: 10px; }

.pe-error-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin-bottom: 6px;
}

.pe-error-desc {
  font-size: 14px;
  color: var(--muted, #8590a6);
  line-height: 1.7;
  margin-bottom: 16px;
  word-break: break-word;
}

.pe-error-actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
}

/* ------------------------------------------------------------ 逐题页 */

.pe-quiz { padding-top: 2px; }

.pe-quiz-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 0 2px 8px;
}

.pe-progress-text {
  font-size: 13px;
  color: var(--muted, #8590a6);
}

.pe-progress-text b {
  font-size: 15px;
  color: var(--ink, #121212);
}

.pe-reset {
  font-size: 13px;
  color: var(--blue, #175199);
  padding: 2px 0;
}

.pe-reset:hover { text-decoration: underline; }

.pe-progress {
  height: 4px;
  border-radius: 2px;
  background: var(--track, #ebebeb);
  overflow: hidden;
  margin-bottom: 16px;
}

.pe-progress-fill {
  height: 100%;
  border-radius: 2px;
  background: var(--green, #d51921);
  transition: width 0.28s ease;
}

.pe-qcard {
  padding: 20px;
  background: var(--card, #ffffff);
  border-radius: 4px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
  min-height: 260px;
  display: flex;
  flex-direction: column;
}

.pe-qhint {
  font-size: 13px;
  color: var(--muted, #8590a6);
  margin-bottom: 8px;
}

.pe-qtext {
  font-size: 17px;
  font-weight: 600;
  line-height: 1.6;
  color: var(--ink, #121212);
  margin-bottom: 16px;
}

.pe-options {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: auto;
}

.pe-opt {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  text-align: left;
  padding: 12px 14px;
  border-radius: 4px;
  background: var(--card, #ffffff);
  border: 1px solid var(--line-strong, #d3d3d3);
  color: var(--ink, #121212);
  font-size: 15px;
  line-height: 1.6;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.pe-opt:hover { border-color: var(--green, #d51921); }

.pe-opt.picked {
  border-color: var(--green, #d51921);
  background: var(--green-soft, #fdecee);
  color: var(--ink, #121212);
}

.pe-opt-key {
  flex: none;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  display: grid;
  place-items: center;
  border-radius: 4px;
  border: 1px solid var(--line-strong, #d3d3d3);
  font-size: 12px;
  color: var(--muted, #8590a6);
  background: var(--bg-soft, #f6f6f6);
}

.pe-opt.picked .pe-opt-key {
  background: var(--green, #d51921);
  border-color: var(--green, #d51921);
  color: #fff;
}

.pe-opt-text { flex: 1; min-width: 0; }

.pe-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 14px;
}

.pe-prev { color: var(--ink-2, #444444); }

.pe-nav-tip {
  font-size: 13px;
  color: var(--muted, #8590a6);
}

/* ------------------------------------------------------------ 结果页 */

.pe-result { padding-top: 2px; }

.pe-type-card {
  padding: 20px;
  background: var(--card, #ffffff);
  border-radius: 4px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-type-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.pe-type-symbol {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 4px;
  background: var(--bg-soft, #f6f6f6);
  font-size: 24px;
  line-height: 1;
}

.pe-type-code {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--green-dark, #b31219);
}

.pe-type-name {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--ink, #121212);
  margin: 4px 0 4px;
}

.pe-type-tag {
  font-size: 14px;
  color: var(--ink-2, #444444);
  line-height: 1.7;
  margin-bottom: 10px;
}

.pe-type-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.pe-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--ink-2, #444444);
  background: var(--bg-soft, #f6f6f6);
  border-radius: 4px;
  padding: 2px 8px;
}

.pe-type-summary {
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink, #121212);
}

.pe-percent-note {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  padding: 10px 2px 0;
}

/* ------------------------------------------------ 四维条 */

.pe-card {
  background: var(--card, #ffffff);
  border-radius: 4px;
  padding: 20px;
  margin-top: 10px;
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-sec-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin-bottom: 12px;
}

.pe-dims-card { padding-bottom: 16px; }

.pe-dims {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.pe-dim-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
}

.pe-dim-side {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: 13px;
  color: var(--ink-2, #444444);
  flex: 1;
  min-width: 0;
}

.pe-dim-side b {
  font-weight: 400;
  color: var(--ink-2, #444444);
  white-space: nowrap;
}

.pe-dim-side span {
  font-size: 13px;
  color: var(--ink-2, #444444);
}

.pe-dim-side.right {
  justify-content: flex-end;
  text-align: right;
}

.pe-dim-side.dom b,
.pe-dim-side.dom span {
  color: var(--green-dark, #b31219);
}

.pe-dim-side.dom b { font-weight: 700; }

.pe-dim-label {
  flex: none;
  font-size: 13px;
  color: var(--muted, #8590a6);
}

.pe-dim-track {
  position: relative;
  height: 4px;
  border-radius: 2px;
  background: var(--track, #ebebeb);
  overflow: hidden;
}

.pe-dim-fill {
  height: 100%;
  border-radius: 2px;
  background: var(--green, #d51921);
  transition: width 0.5s ease;
}

.pe-dim-marker {
  position: absolute;
  top: 0;
  width: 1px;
  height: 4px;
  background: var(--line-strong, #d3d3d3);
}

.pe-dims-tip {
  font-size: 13px;
  color: var(--muted, #8590a6);
  margin-top: 12px;
  line-height: 1.7;
}

/* ------------------------------------------------ 优势 / 盲点 */

.pe-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}

.pe-mini { margin-top: 10px; }

.pe-list { display: flex; flex-direction: column; gap: 6px; }

.pe-list li {
  position: relative;
  padding-left: 16px;
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink-2, #444444);
}

.pe-list li::before {
  position: absolute;
  left: 0;
  top: 0;
  font-size: 12px;
}

.pe-list-good li::before {
  content: "·";
  color: var(--ok, #00a651);
  font-weight: 700;
}

.pe-list-watch li::before {
  content: "·";
  color: var(--red, #cc3333);
  font-weight: 700;
}

/* ------------------------------------------------ 解读段落 */

.pe-read p {
  font-size: 15px;
  line-height: 1.85;
  color: var(--ink-2, #444444);
}

/* ------------------------------------------------ 合拍类型 */

.pe-match-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.pe-match-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: 4px;
  background: var(--bg-soft, #f6f6f6);
}

a.pe-match-chip:hover { text-decoration: none; }

.pe-match-name {
  font-size: 14px;
  color: var(--ink, #121212);
}

.pe-match-code {
  font-size: 13px;
  font-weight: 400;
  color: var(--muted, #8590a6);
}

.pe-match-tip {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  margin-top: 10px;
}

/* ------------------------------------------------ 分区入口 */

.pe-cluster-link {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
  padding: 16px 20px;
  border-radius: 4px;
  background: var(--card, #ffffff);
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-cluster-link:hover {
  text-decoration: none;
}

.pe-cluster-link:hover .pe-cluster-name { text-decoration: underline; }

.pe-cluster-icon {
  flex: none;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 4px;
  font-size: 18px;
  background: var(--bg-soft, #f6f6f6);
}

.pe-cluster-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.pe-cluster-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--blue, #175199);
}

.pe-cluster-desc {
  font-size: 13px;
  line-height: 1.6;
  color: var(--muted, #8590a6);
}

.pe-cluster-arrow {
  flex: none;
  font-size: 16px;
  color: var(--blue, #175199);
}

/* 类型详情页底部：一键进自己的圈子 */
.pe-circle-btn {
  display: flex;
  width: 100%;
  margin-top: 16px;
  font-size: 14px;
}

/* MBTI 16 型图鉴：和心格图鉴共用卡片样式，只多留一点上边距 */
.pe-mbti-gallery { margin-top: 28px; }

/* ------------------------------------------------ 类型码释义（详情页） */

.pe-poles {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

.pe-pole {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 5px;
  padding: 8px 10px;
  border-radius: 4px;
  background: var(--bg-soft, #f6f6f6);
  font-size: 14px;
  color: var(--ink-2, #444444);
}

.pe-pole b {
  font-size: 16px;
  font-weight: 700;
  color: var(--green-dark, #b31219);
  line-height: 1;
}

.pe-pole-dim {
  font-size: 13px;
  color: var(--muted, #8590a6);
  margin-right: 2px;
}

/* ------------------------------------------------ 保存卡片 */

.pe-save-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin-bottom: 6px;
}

.pe-save-desc {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  margin-bottom: 12px;
}

.pe-save .btn { width: 100%; }

/* ------------------------------------------------ 底部动作 */

.pe-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
}

.pe-actions .btn { flex: 1; }

.pe-disclaim {
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  text-align: center;
  margin: 20px 4px 6px;
}

/* ------------------------------------------------------------ 十六型图鉴 */

.pe-gallery { margin-top: 28px; }

.pe-gallery-head { padding: 0 2px; }

.pe-gallery-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin: 0;
}

.pe-gallery-sub {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  margin-top: 6px;
}

.pe-gallery-body { margin-top: 12px; }

.pe-gallery-loading .loading-wrap { padding: 20px 0; }

.pe-gallery-error {
  text-align: center;
  padding: 16px;
  border-radius: 4px;
  background: var(--card, #ffffff);
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
}

.pe-gallery-error-text {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  margin-bottom: 12px;
}

.pe-group { margin-bottom: 20px; }

.pe-group:last-child { margin-bottom: 10px; }

.pe-group-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.pe-group-icon { font-size: 16px; }

.pe-group-name {
  font-size: 16px;
  font-weight: 700;
  color: var(--ink, #121212);
}

.pe-group-count {
  margin-left: auto;
  font-size: 13px;
  color: var(--muted, #8590a6);
}

.pe-group-desc {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted, #8590a6);
  margin: 4px 0 10px;
}

.pe-type-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.pe-type-mini {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-height: 112px;
  padding: 16px;
  border-radius: 4px;
  background: var(--card, #ffffff);
  box-shadow: var(--shadow, 0 1px 3px rgba(18, 18, 18, 0.08));
  transition: box-shadow 0.15s ease;
}

.pe-type-mini:hover { text-decoration: none; }

.pe-mini-symbol { font-size: 18px; line-height: 1.3; }

.pe-mini-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink, #121212);
  margin-top: 2px;
}

.pe-mini-tag {
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted, #8590a6);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.pe-mini-code {
  margin-top: auto;
  padding-top: 6px;
  font-size: 13px;
  color: var(--green-dark, #b31219);
}

/* ------------------------------------------------------------ 类型详情页 */

.pe-detail { padding-top: 2px; }

.pe-back {
  display: inline-block;
  font-size: 14px;
  color: var(--blue, #175199);
  padding: 0 0 12px;
}

.pe-back:hover { text-decoration: underline; }

/* ------------------------------------------------------------ 小屏 / 大屏 */

@media (max-width: 600px) {
  .pe-recent,
  .pe-dim-item,
  .pe-qcard,
  .pe-type-card,
  .pe-card,
  .pe-cluster-link,
  .pe-type-mini { padding: 14px; }
  .pe-error { padding: 32px 14px; }
  .pe-dims-card { padding-bottom: 10px; }
}

@media (min-width: 720px) {
  .pe-grid {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .pe-grid .pe-mini { margin-top: 10px; }
}

@media (max-width: 360px) {
  .pe-title { font-size: 20px; }
  .pe-type-name { font-size: 20px; }
  .pe-qtext { font-size: 16px; }
}
