/* ── 성격의 발견 — 스타일 ──────────────────────────────── */
:root {
  --brand: #6d28d9;
  --brand-2: #8b5cf6;
  --brand-dark: #5b21b6;
  --ink: #1e1b2e;
}
body {
  font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, 'Malgun Gothic', sans-serif;
  color: var(--ink);
  background: #faf9fd;
}
[data-bs-theme="dark"] body { background: #17151f; color: #e9e6f0; }

a { text-decoration: none; }

/* Navbar */
.app-navbar {
  background: linear-gradient(90deg, var(--brand-dark), var(--brand));
}
.app-navbar .navbar-brand,
.app-navbar .nav-link { color: rgba(255,255,255,.92) !important; }
.app-navbar .nav-link.active,
.app-navbar .nav-link:hover { color: #fff !important; }
.app-navbar .navbar-brand { font-size: 1.15rem; letter-spacing: -.3px; }
.btn-nav-icon { color: #fff; border: 1px solid rgba(255,255,255,.4); }
.btn-nav-icon:hover { background: rgba(255,255,255,.15); color: #fff; }
.navbar-toggler { border-color: rgba(255,255,255,.4); }
.navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255,255,255,0.85)' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

/* Buttons */
.btn-hero {
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  border: none; color: #fff; font-weight: 700;
  padding: .7rem 2rem; border-radius: 999px;
  box-shadow: 0 8px 22px rgba(109,40,217,.32);
  transition: transform .12s, box-shadow .12s;
}
.btn-hero:hover { color: #fff; transform: translateY(-2px); box-shadow: 0 12px 28px rgba(109,40,217,.4); }

/* Hero */
.hero {
  padding: 4.5rem 0 3.5rem;
  background: radial-gradient(1200px 400px at 50% -10%, rgba(139,92,246,.20), transparent),
              linear-gradient(180deg, #f3efff, #faf9fd);
}
[data-bs-theme="dark"] .hero {
  background: radial-gradient(1200px 400px at 50% -10%, rgba(139,92,246,.22), transparent),
              linear-gradient(180deg, #201c2e, #17151f);
}
.hero-badge { background: rgba(109,40,217,.12); color: var(--brand); font-weight: 600; padding: .45rem .9rem; border-radius: 999px; }
.hero-title { font-size: clamp(1.8rem, 5vw, 3rem); font-weight: 800; letter-spacing: -1px; line-height: 1.25; }
.hero-sub { font-size: 1.08rem; color: #6b6580; margin: 1rem 0 1.5rem; }
[data-bs-theme="dark"] .hero-sub { color: #b7b1c9; }
.hero-note { font-size: .85rem; color: #8a84a0; }

/* Sections */
.section { padding: 3rem 0; }
.section-title { font-weight: 800; letter-spacing: -.5px; text-align: center; }
.section-lead { text-align: center; color: #7c7690; margin-bottom: 2rem; }
[data-bs-theme="dark"] .section-lead { color: #a9a3bd; }

.feature-icon {
  width: 64px; height: 64px; margin: 0 auto 1rem; border-radius: 18px;
  display: flex; align-items: center; justify-content: center; font-size: 1.7rem;
  color: var(--brand); background: rgba(109,40,217,.1);
}

/* Axis cards */
.axis-card {
  background: #fff; border: 1px solid #eee7fb; border-radius: 16px;
  padding: 1.3rem 1rem; text-align: center; height: 100%;
}
[data-bs-theme="dark"] .axis-card { background: #211d2e; border-color: #322b45; }
.axis-pair { font-size: 1.5rem; font-weight: 800; color: var(--brand); display: flex; align-items: center; justify-content: center; gap: .6rem; }
.axis-pair i { font-size: .9rem; color: #b9aee0; }
.axis-name { font-weight: 700; margin-top: .5rem; }
.axis-desc { font-size: .85rem; color: #8a84a0; }

/* Group blocks */
.group-block { margin-bottom: 2.4rem; }
.group-head { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; padding-bottom: .6rem; border-bottom: 2px solid var(--gc); }
.group-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--gc); }
.group-name { font-weight: 800; font-size: 1.15rem; color: var(--gc); }
.group-desc { font-size: .85rem; color: #8a84a0; }

/* Type mini (grid on home/related) */
.type-mini {
  display: block; text-align: center; padding: 1rem .5rem; border-radius: 14px;
  background: #fff; border: 1px solid #eceaf3; color: var(--ink);
  transition: transform .12s, box-shadow .12s, border-color .12s;
}
[data-bs-theme="dark"] .type-mini { background: #211d2e; border-color: #322b45; color: #e9e6f0; }
.type-mini:hover { transform: translateY(-3px); border-color: var(--gc); box-shadow: 0 8px 20px rgba(0,0,0,.08); color: var(--ink); }
[data-bs-theme="dark"] .type-mini:hover { color: #fff; }
.type-mini-code { font-weight: 800; font-size: 1.15rem; color: var(--gc); letter-spacing: .5px; }
.type-mini-name { font-size: .85rem; color: #7c7690; margin-top: .15rem; }
[data-bs-theme="dark"] .type-mini-name { color: #b7b1c9; }

/* Type card (types page) */
.type-card {
  display: block; height: 100%; padding: 1.4rem; border-radius: 18px;
  background: #fff; border: 1px solid #eceaf3; color: var(--ink);
  border-top: 4px solid var(--gc);
  transition: transform .12s, box-shadow .12s;
}
[data-bs-theme="dark"] .type-card { background: #211d2e; border-color: #322b45; border-top-color: var(--gc); color: #e9e6f0; }
.type-card:hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(0,0,0,.1); color: var(--ink); }
[data-bs-theme="dark"] .type-card:hover { color: #fff; }
.type-card-code { font-weight: 800; font-size: 1.5rem; color: var(--gc); letter-spacing: 1px; }
.type-card-name { font-weight: 700; margin: .2rem 0 .4rem; }
.type-card-tag { font-size: .85rem; color: #7c7690; line-height: 1.4; }
[data-bs-theme="dark"] .type-card-tag { color: #b7b1c9; }

/* CTA band */
.cta-band {
  margin-top: 1rem; padding: 3rem 0;
  background: linear-gradient(90deg, var(--brand-dark), var(--brand));
  color: #fff;
}
.cta-band .btn-hero { background: #fff; color: var(--brand); box-shadow: 0 8px 22px rgba(0,0,0,.2); }
.cta-band .btn-hero:hover { color: var(--brand-dark); }

/* Footer */
.app-footer { padding: 2rem 0; border-top: 1px solid #eee7fb; color: #7c7690; margin-top: 2rem; }
[data-bs-theme="dark"] .app-footer { border-color: #2c2640; color: #a9a3bd; }

/* Page head */
.page-head { padding: 2.5rem 0 1rem; }
.page-title { font-weight: 800; letter-spacing: -.5px; }
.page-sub { color: #7c7690; }
[data-bs-theme="dark"] .page-sub { color: #a9a3bd; }

/* ── 검사 페이지 ───────────────────────────────────────── */
.test-wrap { padding: 2rem 0 4rem; }
.test-progress-bar {
  position: sticky; top: 64px; z-index: 5;
  height: 8px; background: #eae5f6; border-radius: 999px; overflow: hidden;
}
[data-bs-theme="dark"] .test-progress-bar { background: #2c2640; }
.test-progress-fill { height: 100%; width: 0; background: linear-gradient(90deg, var(--brand), var(--brand-2)); transition: width .25s; }
.test-progress-label { text-align: center; font-size: .85rem; color: #8a84a0; margin: .5rem 0 1.5rem; }

.q-card {
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px;
  padding: 1.4rem 1.2rem; margin-bottom: 1rem; scroll-margin-top: 90px;
  transition: border-color .2s, box-shadow .2s;
}
[data-bs-theme="dark"] .q-card { background: #211d2e; border-color: #322b45; }
.q-card.answered { border-color: var(--brand-2); }
.q-num { font-size: .78rem; font-weight: 700; color: var(--brand); }
.q-text { font-size: 1.1rem; font-weight: 600; margin: .3rem 0 1.1rem; line-height: 1.5; }

.q-scale { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.q-pole { font-size: .8rem; font-weight: 600; white-space: nowrap; }
.q-pole-agree { color: #16a34a; }
.q-pole-disagree { color: #d24; }
.q-dots { display: flex; align-items: center; gap: clamp(.4rem, 2.5vw, 1rem); }
.q-dot { cursor: pointer; margin: 0; }
.q-dot input { position: absolute; opacity: 0; width: 0; height: 0; }
.q-dot .dot {
  display: block; border-radius: 50%; border: 2px solid #c9c0e4;
  transition: all .12s; background: transparent;
}
/* dot sizes: big at ends, small in middle */
.q-dot.v3 .dot, .q-dot.v-3 .dot { width: 34px; height: 34px; }
.q-dot.v2 .dot, .q-dot.v-2 .dot { width: 28px; height: 28px; }
.q-dot.v1 .dot, .q-dot.v-1 .dot { width: 22px; height: 22px; }
.q-dot.v0 .dot { width: 18px; height: 18px; }
.q-dot.v3 .dot, .q-dot.v2 .dot, .q-dot.v1 .dot { border-color: #16a34a; }
.q-dot.v-3 .dot, .q-dot.v-2 .dot, .q-dot.v-1 .dot { border-color: #d24; }
.q-dot:hover .dot { transform: scale(1.1); }
.q-dot input:checked + .dot { background: currentColor; box-shadow: 0 0 0 3px rgba(0,0,0,.06); }
.q-dot.v3 input:checked + .dot, .q-dot.v2 input:checked + .dot, .q-dot.v1 input:checked + .dot { color: #16a34a; }
.q-dot.v0 input:checked + .dot { color: #9a93b0; border-color: #9a93b0; }
.q-dot.v-3 input:checked + .dot, .q-dot.v-2 input:checked + .dot, .q-dot.v-1 input:checked + .dot { color: #d24; }

.submit-band { margin-top: 2rem; text-align: center; }

/* ── 유형 상세 ─────────────────────────────────────────── */
.type-hero {
  padding: 3.5rem 0 2.5rem; text-align: center; color: #fff;
  background: linear-gradient(135deg, var(--gc), #000000aa), var(--gc);
}
.result-tag { font-weight: 700; opacity: .95; }
.type-hero-code { font-size: clamp(2.6rem, 9vw, 4.5rem); font-weight: 800; letter-spacing: 4px; line-height: 1; }
.type-hero-name { font-size: 1.8rem; font-weight: 800; margin-top: .3rem; }
.type-hero-tag { opacity: .95; margin-top: .3rem; }
.type-hero-group { display: inline-block; margin-top: .8rem; padding: .35rem 1rem; border-radius: 999px; background: rgba(255,255,255,.2); font-size: .85rem; font-weight: 600; }

.type-summary { font-size: 1.12rem; line-height: 1.8; text-align: center; margin: 1.5rem 0 2rem; }

.letters-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: .75rem; margin-bottom: 2rem; }
.letter-chip { text-align: center; background: #fff; border: 1px solid #eceaf3; border-radius: 14px; padding: 1rem .3rem; }
[data-bs-theme="dark"] .letter-chip { background: #211d2e; border-color: #322b45; }
.letter-big { font-size: 1.8rem; font-weight: 800; color: var(--brand); }
.letter-label { font-size: .8rem; font-weight: 600; margin-top: .2rem; }
.letter-sub { font-size: .72rem; color: #8a84a0; }

.info-box { border-radius: 16px; padding: 1.4rem; height: 100%; }
.info-box h5 { font-weight: 800; margin-bottom: .9rem; }
.info-box ul { margin: 0; padding-left: 1.1rem; }
.info-box li { margin-bottom: .5rem; line-height: 1.5; }
.info-strength { background: #ecfdf3; }
.info-strength h5 { color: #15803d; }
.info-growth { background: #fef6ec; }
.info-growth h5 { color: #c2680c; }
[data-bs-theme="dark"] .info-strength { background: #14251b; }
[data-bs-theme="dark"] .info-growth { background: #2a2113; }

.fit-box {
  margin-top: 1.5rem; padding: 1rem 1.3rem; border-radius: 14px;
  background: #f4f0fd; display: flex; align-items: center; flex-wrap: wrap; gap: .5rem;
}
[data-bs-theme="dark"] .fit-box { background: #241f33; }
.fit-box span { color: #6b6580; }
[data-bs-theme="dark"] .fit-box span { color: #b7b1c9; }

.related-block { margin-top: 2.5rem; }
.related-title { font-weight: 800; margin-bottom: 1rem; }

/* Error */
.err-code { font-size: 5rem; font-weight: 800; color: var(--brand); line-height: 1; }

@media (max-width: 575px) {
  .letters-row { grid-template-columns: repeat(2, 1fr); }
  .q-text { font-size: 1rem; }
}

/* ── 팀 평가 ───────────────────────────────────────────── */
.team-panel {
  background: #fff; border: 1px solid #eceaf3; border-radius: 18px;
  padding: 1.8rem; height: 100%; text-align: center;
}
[data-bs-theme="dark"] .team-panel { background: #211d2e; border-color: #322b45; }
.team-panel-icon {
  width: 60px; height: 60px; margin: 0 auto 1rem; border-radius: 16px;
  display: flex; align-items: center; justify-content: center; font-size: 1.6rem;
}
.step-badge {
  width: 44px; height: 44px; margin: 0 auto .8rem; border-radius: 50%;
  background: linear-gradient(135deg, var(--brand), var(--brand-2)); color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.2rem;
}
.team-test-banner {
  background: rgba(109,40,217,.1); color: var(--brand); border-radius: 12px;
  padding: .8rem 1rem; margin-bottom: 1.2rem; text-align: center; font-size: .95rem;
}
[data-bs-theme="dark"] .team-test-banner { background: rgba(139,92,246,.16); color: #c4b5fd; }
.team-return-band {
  background: #f4f0fd; border-radius: 14px; padding: 1.3rem;
}
[data-bs-theme="dark"] .team-return-band { background: #241f33; }

/* Team hero */
.team-hero {
  padding: 2.5rem 0; color: #fff;
  background: linear-gradient(120deg, var(--brand-dark), var(--brand-2));
}
.team-hero-label { font-weight: 600; opacity: .9; }
.team-hero-name { font-weight: 800; font-size: 1.9rem; margin: .1rem 0; }
.team-hero-meta { opacity: .92; }
.team-code-box { background: rgba(255,255,255,.16); border-radius: 14px; padding: .7rem 1.3rem; text-align: center; }
.team-code-box .small { opacity: .85; }
.team-code { font-size: 1.6rem; font-weight: 800; letter-spacing: .28em; padding-left: .28em; }

/* Share card */
.share-card {
  display: flex; flex-wrap: wrap; gap: 1.2rem; align-items: center;
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px;
  padding: 1.3rem 1.5rem; margin-bottom: 2rem;
}
[data-bs-theme="dark"] .share-card { background: #211d2e; border-color: #322b45; }

/* Empty state */
.empty-state { padding: 3rem 1rem; }
.empty-icon { font-size: 3rem; color: #c9c0e4; margin-bottom: 1rem; }

/* Board */
.board-title { font-weight: 800; margin: 1.5rem 0 1rem; }
.board-card {
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px; padding: 1.4rem;
}
[data-bs-theme="dark"] .board-card { background: #211d2e; border-color: #322b45; }
.board-card-title { font-weight: 800; margin-bottom: 1rem; }
.board-card-sub { font-size: .82rem; color: #8a84a0; margin-top: -.5rem; margin-bottom: 1rem; }

/* Member cards */
.member-card {
  display: block; text-align: center; padding: 1rem .5rem; border-radius: 14px;
  background: #fff; border: 1px solid #eceaf3; border-left: 4px solid var(--gc); color: var(--ink);
  transition: transform .12s, box-shadow .12s;
}
[data-bs-theme="dark"] .member-card { background: #211d2e; border-color: #322b45; border-left-color: var(--gc); color: #e9e6f0; }
.member-card:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0,0,0,.08); color: var(--ink); }
[data-bs-theme="dark"] .member-card:hover { color: #fff; }
.member-name { font-weight: 700; }
.member-type { font-weight: 800; color: var(--gc); letter-spacing: 1px; }
.member-nick { font-size: .8rem; color: #8a84a0; }

/* Distribution bars (groups) */
.dist-row { display: flex; align-items: center; gap: .8rem; margin-bottom: .9rem; }
.dist-label { width: 74px; font-weight: 600; font-size: .9rem; flex-shrink: 0; }
.dist-bar { flex-grow: 1; height: 14px; background: #eee7fb; border-radius: 999px; overflow: hidden; }
[data-bs-theme="dark"] .dist-bar { background: #2c2640; }
.dist-fill { height: 100%; border-radius: 999px; transition: width .4s; }
.dist-val { width: 96px; text-align: right; font-size: .82rem; color: #8a84a0; flex-shrink: 0; }

/* Axis distribution */
.axis-dist { margin-bottom: 1.1rem; }
.axis-dist-head { display: flex; justify-content: space-between; font-size: .8rem; margin-bottom: .35rem; }
.axis-dist-left { color: #16a34a; font-weight: 600; }
.axis-dist-right { color: #d24; font-weight: 600; }
.axis-dist-mid { color: #8a84a0; }
.axis-track {
  position: relative; height: 10px; border-radius: 999px;
  background: linear-gradient(90deg, rgba(22,163,74,.18), rgba(221,68,68,.18));
}
.axis-track-fill {
  position: absolute; left: 0; top: 0; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, #16a34a, #86c9a0); transition: width .4s;
}
.axis-track-marker {
  position: absolute; top: 50%; width: 16px; height: 16px; border-radius: 50%;
  background: #fff; border: 3px solid var(--brand); transform: translate(-50%, -50%);
  box-shadow: 0 1px 4px rgba(0,0,0,.2);
}

/* Communication styles */
.comm-card { background: #fff; border: 1px solid #eceaf3; border-radius: 16px; padding: 1.2rem; height: 100%; }
[data-bs-theme="dark"] .comm-card { background: #211d2e; border-color: #322b45; }
.comm-icon { font-size: 1.5rem; color: var(--brand); margin-bottom: .4rem; }
.comm-title { font-weight: 800; }
.comm-desc { font-size: .84rem; color: #7c7690; margin: .3rem 0 .7rem; line-height: 1.5; }
[data-bs-theme="dark"] .comm-desc { color: #b7b1c9; }
.comm-chip {
  display: inline-block; background: rgba(109,40,217,.1); color: var(--brand);
  border-radius: 999px; padding: .15rem .6rem; font-size: .78rem; margin: .15rem .15rem 0 0; font-weight: 600;
}
[data-bs-theme="dark"] .comm-chip { background: rgba(139,92,246,.18); color: #c4b5fd; }

/* Similarity matrix */
.matrix-wrap { overflow-x: auto; }
.sim-matrix { border-collapse: separate; border-spacing: 3px; font-size: .82rem; }
.sim-matrix th { font-weight: 700; padding: .3rem .5rem; text-align: center; white-space: nowrap; }
.sim-matrix .mtx-rowhead { text-align: right; }
.mtx-name { writing-mode: vertical-rl; text-orientation: mixed; }
.sim-cell {
  width: 34px; height: 34px; text-align: center; border-radius: 8px;
  font-weight: 700; color: #4b3f6b;
}
.sim-cell.s0 { background: #f1eefb; }
.sim-cell.s1 { background: #e3dbf7; }
.sim-cell.s2 { background: #c9b8ef; }
.sim-cell.s3 { background: #a888e4; color: #fff; }
.sim-cell.s4 { background: #7c4fd6; color: #fff; }
.sim-cell.sim-self { background: #2c2640; color: #fff; }
[data-bs-theme="dark"] .sim-cell { color: #e9e6f0; }
[data-bs-theme="dark"] .sim-cell.s0 { background: #2a2540; }
[data-bs-theme="dark"] .sim-cell.s1 { background: #362d52; }
[data-bs-theme="dark"] .sim-cell.s2 { background: #4a3b74; }

/* ── 보조 검사 (개인 허브 / Big Five) ─────────────────── */
.assess-card {
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px;
  padding: 1.3rem; height: 100%;
}
[data-bs-theme="dark"] .assess-card { background: #211d2e; border-color: #322b45; }
.assess-card.done { background: #fbfaff; }
[data-bs-theme="dark"] .assess-card.done { background: #1d1a29; }
.assess-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .7rem; }
.assess-icon {
  width: 44px; height: 44px; border-radius: 12px; font-size: 1.3rem;
  display: flex; align-items: center; justify-content: center;
}
.assess-badge {
  font-size: .72rem; font-weight: 700; padding: .2rem .6rem; border-radius: 999px;
  background: #eee7fb; color: var(--brand);
}
.assess-badge.done { background: #ecfdf3; color: #15803d; }
[data-bs-theme="dark"] .assess-badge { background: #2c2640; color: #c4b5fd; }
[data-bs-theme="dark"] .assess-badge.done { background: #14251b; color: #6ee7a0; }
.assess-title { font-weight: 800; margin-bottom: .3rem; }
.assess-desc { font-size: .84rem; color: #7c7690; line-height: 1.5; margin-bottom: .9rem; }
[data-bs-theme="dark"] .assess-desc { color: #b7b1c9; }

/* Big Five bars */
.bf-row { margin-bottom: 1.1rem; }
.bf-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .35rem; }
.bf-name { font-weight: 700; }
.bf-pct { font-weight: 800; font-size: 1.05rem; }
.bf-bar { height: 12px; background: #eee7fb; border-radius: 999px; overflow: hidden; }
[data-bs-theme="dark"] .bf-bar { background: #2c2640; }
.bf-fill { height: 100%; border-radius: 999px; transition: width .5s; }
.bf-desc { font-size: .82rem; color: #7c7690; margin-top: .35rem; line-height: 1.5; }
[data-bs-theme="dark"] .bf-desc { color: #b7b1c9; }
.bf-hint {
  background: rgba(219,39,119,.08); border: 1px dashed #e6a3c6; border-radius: 14px;
  padding: 1rem 1.2rem; font-size: .9rem; color: #9d174d;
}
[data-bs-theme="dark"] .bf-hint { background: rgba(219,39,119,.12); border-color: #7a3556; color: #f0a9c9; }

/* Likert scale */
.likert { display: flex; justify-content: space-between; gap: .4rem; }
.likert-opt {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: .4rem;
  cursor: pointer; text-align: center;
}
.likert-opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.likert-dot {
  width: 26px; height: 26px; border-radius: 50%; border: 2px solid #c9c0e4;
  transition: all .12s; background: transparent;
}
.likert-opt:hover .likert-dot { transform: scale(1.12); border-color: var(--brand-2); }
.likert-opt input:checked + .likert-dot {
  background: var(--brand); border-color: var(--brand);
  box-shadow: 0 0 0 4px rgba(109,40,217,.15);
}
.likert-label { font-size: .72rem; color: #8a84a0; line-height: 1.2; }
.likert-opt input:checked ~ .likert-label { color: var(--brand); font-weight: 700; }

@media (max-width: 420px) {
  .likert-label { display: none; }
  .likert-dot { width: 30px; height: 30px; }
}

/* 상위 요인 강조 (ranked 결과) */
.bf-row.rank-top .bf-name { font-weight: 800; }
.bf-row.rank-top { background: rgba(109,40,217,.04); border-radius: 10px; padding: .5rem .6rem; margin-left: -.6rem; margin-right: -.6rem; }
[data-bs-theme="dark"] .bf-row.rank-top { background: rgba(139,92,246,.1); }

/* ── 동료 평가(360°) ───────────────────────────────────── */
.review-row {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  background: #fff; border: 1px solid #eceaf3; border-radius: 14px;
  padding: .9rem 1.1rem; margin-bottom: .7rem;
}
[data-bs-theme="dark"] .review-row { background: #211d2e; border-color: #322b45; }
.review-row.done { background: #fbfaff; }
[data-bs-theme="dark"] .review-row.done { background: #1d1a29; }
.review-info { display: flex; align-items: center; gap: .8rem; min-width: 0; }
.review-avatar {
  width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; color: #fff; background: var(--gc, #6d28d9);
}
.review-avatar.self { background: var(--brand); }
.review-name { font-weight: 700; }
.review-sub { font-size: .8rem; color: #8a84a0; }

/* 형용사 선택 칩 */
.adj-grid { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }
.adj-chip { cursor: pointer; margin: 0; }
.adj-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.adj-chip span {
  display: inline-block; padding: .55rem 1.1rem; border-radius: 999px;
  border: 2px solid #dcd5f0; background: #fff; font-weight: 600; color: #4b3f6b;
  transition: all .12s;
}
[data-bs-theme="dark"] .adj-chip span { background: #211d2e; border-color: #3a3252; color: #d7cfe8; }
.adj-chip:hover span { border-color: var(--brand-2); }
.adj-chip input:checked + span {
  background: var(--brand); border-color: var(--brand); color: #fff;
  box-shadow: 0 3px 10px rgba(109,40,217,.28);
}

/* 조하리 창 */
.johari { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.johari-cell { border-radius: 14px; padding: .9rem; min-height: 110px; border: 1px solid #eceaf3; }
[data-bs-theme="dark"] .johari-cell { border-color: #322b45; }
.johari-cell.open   { background: #ecfdf3; }
.johari-cell.blind  { background: #fff4ed; }
.johari-cell.hidden { background: #eef4ff; }
.johari-cell.unknown{ background: #f6f5f8; }
[data-bs-theme="dark"] .johari-cell.open   { background: #14251b; }
[data-bs-theme="dark"] .johari-cell.blind  { background: #2a1e14; }
[data-bs-theme="dark"] .johari-cell.hidden { background: #16203a; }
[data-bs-theme="dark"] .johari-cell.unknown{ background: #201d2b; }
.johari-head { font-weight: 800; font-size: .92rem; margin-bottom: .55rem; }
.johari-head small { display: block; font-weight: 500; font-size: .72rem; color: #8a84a0; }
.johari-body { display: flex; flex-wrap: wrap; gap: .35rem; }
.jchip {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: .2rem .6rem; border-radius: 999px; font-size: .82rem; font-weight: 600;
  background: #fff; border: 1px solid rgba(0,0,0,.06);
}
[data-bs-theme="dark"] .jchip { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.1); color: #e9e6f0; }
.jchip b { font-size: .72rem; opacity: .7; }
.jchip.open { color: #15803d; }
.jchip.blind { color: #c2680c; }
.jchip.hidden { color: #1d4ed8; }
.jchip.unknown { color: #8a84a0; }
.jempty { font-size: .8rem; color: #a9a3bd; }

/* 대시보드 동료 강점 */
.peer-top { display: flex; flex-wrap: wrap; gap: .5rem; }
.peer-chip {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .35rem .8rem; border-radius: 999px; font-weight: 600; font-size: .88rem;
  background: rgba(37,99,235,.1); color: #2563eb;
}
[data-bs-theme="dark"] .peer-chip { background: rgba(37,99,235,.2); color: #93b4fb; }
.peer-chip b { font-size: .75rem; opacity: .75; }

@media (max-width: 520px) {
  .johari { grid-template-columns: 1fr; }
}

/* ── 정체성(A/T) & 대시보드 심화 ────────────────────────── */
.type-hero-id { opacity: .8; font-weight: 700; }
.identity-box {
  display: flex; align-items: center; gap: 1rem;
  background: #f4f0fd; border-radius: 14px; padding: 1rem 1.3rem; margin-bottom: 1.5rem;
}
[data-bs-theme="dark"] .identity-box { background: #241f33; }
.identity-badge {
  flex-shrink: 0; width: 46px; height: 46px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 1.2rem; color: #fff;
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
}
.identity-name { font-weight: 800; }
.identity-desc { font-size: .88rem; color: #6b6580; line-height: 1.5; }
[data-bs-theme="dark"] .identity-desc { color: #b7b1c9; }

/* 궁합 짝 */
.pair-row { display: flex; flex-direction: column; gap: .3rem; padding: .7rem 0; border-bottom: 1px dashed #eceaf3; }
.pair-row:last-child { border-bottom: none; }
[data-bs-theme="dark"] .pair-row { border-color: #322b45; }
.pair-tag {
  align-self: flex-start; font-size: .76rem; font-weight: 700; padding: .2rem .6rem; border-radius: 999px;
}
.pair-tag.similar { background: #ecfdf3; color: #15803d; }
.pair-tag.complement { background: #eef4ff; color: #1d4ed8; }
[data-bs-theme="dark"] .pair-tag.similar { background: #14251b; color: #6ee7a0; }
[data-bs-theme="dark"] .pair-tag.complement { background: #16203a; color: #93b4fb; }
.pair-body { font-size: .95rem; }

/* 팀 공백 */
.gap-row { display: flex; align-items: center; gap: .7rem; padding: .5rem 0; }
.gap-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--gc); flex-shrink: 0; opacity: .5; }

/* ── 명단 선택(참여) & 진행 현황 ───────────────────────── */
.roster-pick { display: flex; flex-direction: column; gap: .6rem; margin-bottom: 1.2rem; }
.pick-row {
  display: flex; align-items: center; gap: .9rem;
  background: #fff; border: 1px solid #eceaf3; border-radius: 14px;
  padding: .8rem 1.1rem; color: var(--ink); transition: transform .12s, box-shadow .12s, border-color .12s;
}
[data-bs-theme="dark"] .pick-row { background: #211d2e; border-color: #322b45; color: #e9e6f0; }
.pick-row:hover { transform: translateY(-2px); border-color: var(--brand-2); box-shadow: 0 6px 16px rgba(0,0,0,.08); color: var(--ink); }
[data-bs-theme="dark"] .pick-row:hover { color: #fff; }
.pick-row.done { background: #fbfaff; }
[data-bs-theme="dark"] .pick-row.done { background: #1d1a29; }
.pick-avatar {
  width: 42px; height: 42px; border-radius: 50%; flex-shrink: 0; color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 800;
  background: var(--gc);
}
.pick-info { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; }
.pick-name { font-weight: 700; }
.pick-status { font-size: .8rem; color: #8a84a0; }
.pick-arrow { color: #c9c0e4; }

.add-me {
  background: #f7f5fc; border: 1px dashed #d9cff0; border-radius: 14px; padding: 1rem 1.2rem;
}
[data-bs-theme="dark"] .add-me { background: #201d2b; border-color: #3a3252; }
.add-me-title { font-weight: 600; font-size: .9rem; margin-bottom: .6rem; }
.add-members-form { background: #f7f5fc; border-radius: 12px; padding: 1rem; }
[data-bs-theme="dark"] .add-members-form { background: #201d2b; }

/* 팀원 카드 진행 배지 / 검사 전 상태 */
.member-card.pending { border-style: dashed; opacity: .85; }
.member-card .pending-label { color: #adb5bd; font-weight: 700; }
.member-progress {
  display: flex; justify-content: center; gap: .7rem; margin-top: .4rem;
  font-size: .74rem; color: #8a84a0;
}
.member-progress i { opacity: .8; }

/* ── 로그인 ────────────────────────────────────────────── */
.login-wrap { display: flex; justify-content: center; align-items: flex-start; padding: 3rem 1rem 5rem; }
.login-card {
  width: 100%; max-width: 400px; background: #fff; border: 1px solid #eceaf3;
  border-radius: 20px; padding: 2.2rem; box-shadow: 0 12px 40px rgba(0,0,0,.06);
}
[data-bs-theme="dark"] .login-card { background: #211d2e; border-color: #322b45; }
.login-logo {
  width: 60px; height: 60px; margin: 0 auto .8rem; border-radius: 18px;
  display: flex; align-items: center; justify-content: center; font-size: 1.7rem;
  color: #fff; background: linear-gradient(135deg, var(--brand), var(--brand-2));
}
.login-title { font-weight: 800; font-size: 1.4rem; }

/* ── 관리자 ────────────────────────────────────────────── */
.admin-nav { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
.admin-nav a {
  padding: .5rem 1rem; border-radius: 999px; font-weight: 600; font-size: .9rem;
  background: #fff; border: 1px solid #eceaf3; color: #6b6580;
}
[data-bs-theme="dark"] .admin-nav a { background: #211d2e; border-color: #322b45; color: #b7b1c9; }
.admin-nav a.active { background: var(--brand); border-color: var(--brand); color: #fff; }
.admin-nav a:hover:not(.active) { border-color: var(--brand-2); color: var(--brand); }

.stat-tile {
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px; padding: 1.2rem; text-align: center;
}
[data-bs-theme="dark"] .stat-tile { background: #211d2e; border-color: #322b45; }
.stat-n { font-size: 2rem; font-weight: 800; color: var(--brand); line-height: 1; }
.stat-l { font-size: .82rem; color: #8a84a0; margin-top: .3rem; }

.log-mini { list-style: none; padding: 0; margin: 0; }
.log-mini li { padding: .4rem 0; border-bottom: 1px dashed #eceaf3; font-size: .86rem; }
[data-bs-theme="dark"] .log-mini li { border-color: #322b45; }
.log-mini li:last-child { border-bottom: none; }
.log-act, .log-time { font-size: .78rem; }
.log-act {
  display: inline-block; background: rgba(109,40,217,.1); color: var(--brand);
  padding: .1rem .5rem; border-radius: 6px; font-weight: 700;
}
[data-bs-theme="dark"] .log-act { background: rgba(139,92,246,.18); color: #c4b5fd; }
.log-time { color: #a9a3bd; float: right; }

/* ── 팀 목록 카드 / 팀원 계정 선택 ─────────────────────── */
.team-list-card {
  display: block; height: 100%; padding: 1.2rem; border-radius: 16px;
  background: #fff; border: 1px solid #eceaf3; border-left: 4px solid var(--brand);
  color: var(--ink); transition: transform .12s, box-shadow .12s;
}
[data-bs-theme="dark"] .team-list-card { background: #211d2e; border-color: #322b45; border-left-color: var(--brand); color: #e9e6f0; }
.team-list-card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(0,0,0,.1); color: var(--ink); }
[data-bs-theme="dark"] .team-list-card:hover { color: #fff; }
.team-list-name { font-weight: 800; font-size: 1.1rem; }
.team-list-code { font-size: .75rem; font-weight: 700; color: var(--brand); background: rgba(109,40,217,.1); padding: .1rem .5rem; border-radius: 6px; }
.team-list-meta { font-size: .82rem; color: #8a84a0; margin-top: .6rem; }

.avail-grid { display: flex; flex-wrap: wrap; gap: .5rem; }
.avail-chip { cursor: pointer; margin: 0; }
.avail-chip input { position: absolute; opacity: 0; }
.avail-chip span {
  display: inline-block; padding: .4rem .8rem; border-radius: 999px;
  border: 2px solid #dcd5f0; background: #fff; font-size: .88rem; color: #4b3f6b; transition: all .12s;
}
[data-bs-theme="dark"] .avail-chip span { background: #211d2e; border-color: #3a3252; color: #d7cfe8; }
.avail-chip input:checked + span { background: var(--brand); border-color: var(--brand); color: #fff; }
.avail-chip input:checked + span small { color: rgba(255,255,255,.75) !important; }

/* ── 결과 리포트 ───────────────────────────────────────── */
.report-head { padding: 2rem 0 1rem; border-bottom: 3px solid var(--brand); margin-bottom: 1rem; }
.report-label { font-weight: 700; color: var(--brand); }
.report-title { font-weight: 800; letter-spacing: -.5px; margin: .1rem 0; }
.report-meta { color: #7c7690; }
[data-bs-theme="dark"] .report-meta { color: #a9a3bd; }
.report-actions { display: flex; gap: .5rem; }
.report-member {
  display: flex; align-items: center; justify-content: space-between; gap: .4rem;
  background: #fff; border: 1px solid #eceaf3; border-left: 4px solid var(--gc);
  border-radius: 10px; padding: .5rem .8rem;
}
[data-bs-theme="dark"] .report-member { background: #211d2e; border-color: #322b45; border-left-color: var(--gc); }
.report-member-name { font-weight: 700; font-size: .9rem; }
.report-member-type { font-weight: 800; color: var(--gc); font-size: .85rem; }

/* 팀 목록 카드: 메인 링크 + 액션 */
.team-list-card { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.team-list-main { display: block; padding: 1.2rem 1.2rem .9rem; color: inherit; }
.team-list-main:hover { color: inherit; }
.team-list-actions { display: flex; border-top: 1px solid #eceaf3; }
[data-bs-theme="dark"] .team-list-actions { border-color: #322b45; }
.team-list-actions a {
  flex: 1; text-align: center; padding: .55rem; font-size: .82rem; font-weight: 600;
  color: #7c7690;
}
.team-list-actions a:first-child { border-right: 1px solid #eceaf3; color: var(--brand); }
[data-bs-theme="dark"] .team-list-actions a:first-child { border-color: #322b45; color: #c4b5fd; }
.team-list-actions a:hover { background: rgba(109,40,217,.06); }

/* 팀원 카드 결과 보기 힌트 */
.member-view { font-size: .78rem; font-weight: 700; color: var(--gc); margin-top: .35rem; }

/* 인쇄 */
@media print {
  .app-navbar, .app-footer, .no-print, .report-actions { display: none !important; }
  .report-head { border-color: #6d28d9; }
  body { background: #fff !important; }
  .board-card, .info-box, .comm-card, .report-member { break-inside: avoid; }
}

/* ── 개선 기능 (요약·궁합·비교·이력·백업) ──────────────── */
.quick-link { color: var(--brand); font-weight: 600; }
.progress-summary {
  background: #fff8ec; border: 1px dashed #ecc789; border-radius: 14px;
  padding: 1rem 1.2rem; font-size: .9rem;
}
[data-bs-theme="dark"] .progress-summary { background: #2a2113; border-color: #6b5527; }
.ps-row { margin-top: .35rem; }
.ps-tag {
  display: inline-block; font-size: .74rem; font-weight: 700; padding: .12rem .55rem;
  border-radius: 999px; margin-right: .4rem;
}
.ps-tag.miss { background: #fee2e2; color: #b91c1c; }
.ps-tag.part { background: #fef3c7; color: #92400e; }
[data-bs-theme="dark"] .ps-tag.miss { background: #3a1919; color: #f19999; }
[data-bs-theme="dark"] .ps-tag.part { background: #3a2f13; color: #ecc789; }

.gauge-card {
  max-width: 480px; margin: 0 auto 1rem;
  background: #fff; border: 1px solid #eceaf3; border-radius: 12px; padding: .8rem 1rem;
}
[data-bs-theme="dark"] .gauge-card { background: #211d2e; border-color: #322b45; }

.history-list { list-style: none; padding: 0; margin: 0; }
.history-list li { padding: .45rem 0; border-bottom: 1px dashed #eceaf3; font-size: .9rem; }
.history-list li:last-child { border-bottom: none; }
[data-bs-theme="dark"] .history-list li { border-color: #322b45; }
.history-date { color: #8a84a0; font-size: .8rem; margin-right: .5rem; }

/* 1:1 궁합 */
.pair-person {
  text-align: center; background: #fff; border: 1px solid #eceaf3;
  border-top: 4px solid var(--gc); border-radius: 16px; padding: 1.2rem;
}
[data-bs-theme="dark"] .pair-person { background: #211d2e; border-color: #322b45; border-top-color: var(--gc); }
.pair-person-name { font-weight: 800; font-size: 1.1rem; }
.pair-person-type { font-weight: 800; color: var(--gc); letter-spacing: 1px; }
.pair-person-nick { font-size: .85rem; color: #8a84a0; }
.pair-score-band {
  background: #f4f0fd; border-radius: 12px; padding: .9rem 1.2rem; text-align: center;
}
[data-bs-theme="dark"] .pair-score-band { background: #241f33; }
.pair-axis { padding: .8rem 0; border-bottom: 1px dashed #eceaf3; }
.pair-axis:last-child { border-bottom: none; }
[data-bs-theme="dark"] .pair-axis { border-color: #322b45; }
.pair-axis-head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .3rem; }
.pair-axis-label { font-weight: 700; }
.pair-axis-letters b { color: var(--brand); }
.pair-axis-tip { font-size: .86rem; color: #7c7690; margin-top: .3rem; line-height: 1.5; }
[data-bs-theme="dark"] .pair-axis-tip { color: #b7b1c9; }
.pair-bar { height: 9px; }

/* 팀 비교 */
.compare-table th { font-size: .82rem; white-space: nowrap; }
.cmp-group {
  display: inline-block; font-size: .8rem; font-weight: 700; padding: .2rem .6rem;
  border-radius: 999px; background: color-mix(in srgb, var(--gc) 14%, transparent); color: var(--gc);
}
.cmp-bar { height: 10px; background: #eee7fb; border-radius: 999px; overflow: hidden; }
[data-bs-theme="dark"] .cmp-bar { background: #2c2640; }
.cmp-fill { height: 100%; background: linear-gradient(90deg, var(--brand), var(--brand-2)); border-radius: 999px; }

/* 백업 목록 */
.backup-list { list-style: none; padding: 0; margin: 0; font-size: .8rem; max-height: 160px; overflow-y: auto; }
.backup-list li { padding: .15rem 0; display: flex; justify-content: space-between; gap: .5rem; }

/* ── 워크숍·통계·가이드·델타 ───────────────────────────── */
.ws-step { display: flex; gap: 1rem; padding: 1.2rem 0; border-bottom: 1px dashed #eceaf3; }
.ws-step:last-child { border-bottom: none; }
[data-bs-theme="dark"] .ws-step { border-color: #322b45; }
.ws-step-num {
  flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; color: #fff; background: linear-gradient(135deg, var(--brand), var(--brand-2));
}
.ws-step-body { flex-grow: 1; min-width: 0; }
.ws-list li { margin-bottom: .4rem; line-height: 1.5; }
.ws-tip { background: #f7f5fc; border-radius: 10px; padding: .6rem .8rem; height: 100%; }
[data-bs-theme="dark"] .ws-tip { background: #241f33; }

.heat-cell {
  text-align: center; font-weight: 600; font-size: .85rem; border-radius: 6px;
  background: rgba(109, 40, 217, calc(var(--h) * 0.55));
}
[data-bs-theme="dark"] .heat-cell { background: rgba(139, 92, 246, calc(var(--h) * 0.55)); }

.guide-card {
  background: linear-gradient(120deg, rgba(109,40,217,.06), rgba(139,92,246,.1));
  border: 1px dashed #c9b8ef; border-radius: 16px; padding: 1.3rem 1.5rem;
}
[data-bs-theme="dark"] .guide-card { border-color: #4a3b74; }
.guide-card ol { padding-left: 1.2rem; }
.guide-card li { margin-bottom: .3rem; }

.delta-block { margin-top: .8rem; padding-top: .8rem; border-top: 1px dashed #eceaf3; }
[data-bs-theme="dark"] .delta-block { border-color: #322b45; }
.delta-grid { display: flex; flex-wrap: wrap; gap: .4rem; }
.delta-chip {
  font-size: .8rem; padding: .25rem .6rem; border-radius: 999px;
  background: color-mix(in srgb, var(--dc) 10%, transparent); color: var(--dc); font-weight: 600;
}
.delta-chip b.up { color: #16a34a; }
.delta-chip b.down { color: #dc2626; }
.delta-chip b.flat { color: #8a84a0; }

.kb-hint { font-size: .75rem; color: #a9a3bd; margin-top: .2rem; }
.btn-xs { padding: .1rem .45rem; font-size: .75rem; }

/* ── 원페이저·개인 묶음·안내문 ─────────────────────────── */
.onepager {
  background: #fff; border: 1px solid #eceaf3; border-radius: 16px; padding: 1.6rem 1.8rem;
}
[data-bs-theme="dark"] .onepager { background: #211d2e; border-color: #322b45; }
.op-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem;
  border-bottom: 3px solid var(--brand); padding-bottom: .7rem; }
.op-label { font-weight: 700; color: var(--brand); font-size: .85rem; }
.op-title { font-weight: 800; font-size: 1.5rem; margin: 0; letter-spacing: -.5px; }
.op-meta { font-size: .78rem; color: #8a84a0; text-align: right; }
.op-members { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .8rem; }
.op-member {
  font-size: .78rem; padding: .2rem .6rem; border-radius: 999px;
  background: color-mix(in srgb, var(--gc) 12%, transparent);
}
.op-member b { color: var(--gc); }
.op-box { border: 1px solid #eceaf3; border-radius: 12px; padding: .8rem 1rem; height: 100%; }
[data-bs-theme="dark"] .op-box { border-color: #322b45; }
.op-box-title { font-weight: 800; font-size: .88rem; margin-bottom: .5rem; }
.op-list { padding-left: 1.1rem; margin: 0; font-size: .84rem; }
.op-list li { margin-bottom: .25rem; line-height: 1.45; }
.op-good { background: #f4fdf7; }
.op-warn { background: #fffaf2; }
[data-bs-theme="dark"] .op-good { background: #16231b; }
[data-bs-theme="dark"] .op-warn { background: #262013; }
.op-foot { text-align: center; font-size: .72rem; color: #a9a3bd; margin-top: 1rem; }

/* 개인 묶음 */
.booklet-person { padding: 1rem 0 2rem; }
.page-break { break-after: page; }
.booklet-hero {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem;
  border-left: 6px solid var(--gc); background: color-mix(in srgb, var(--gc) 7%, transparent);
  border-radius: 12px; padding: 1rem 1.3rem;
}
.booklet-name { font-weight: 800; font-size: 1.4rem; }
.booklet-type { font-weight: 700; color: var(--gc); }
.booklet-tag { font-size: .88rem; color: #7c7690; }
[data-bs-theme="dark"] .booklet-tag { color: #b7b1c9; }
.booklet-group {
  flex-shrink: 0; font-size: .78rem; font-weight: 700; padding: .25rem .7rem;
  border-radius: 999px; background: var(--gc); color: #fff;
}

@media print {
  .onepager { border: none; padding: 0; }
  .booklet-person { padding-top: 0; }
}
