:root {
  --brand-lime: #fff6ab;
  --brand-lime-alt: #fff6ab;
  --brand-yellow: #ffe45c;
  --action: #111111;
  --heading: #191919;
  --ink-soft: #181818;
  --text: #36393f;
  --text-muted: #5b6068;
  --text-faint: #8a9099;
  --canvas: #ffffff;
  --surface: #f2f5fa;
  --surface-alt: #fafafa;
  --line: #e5e7eb;
  --blue: #466cf3;
  --link: #005fcc;
  --red: #b42318;
  --red-bg: #fff1f0;
  --red-line: #f7c5c1;
  --orange: #a84d00;
  --orange-bg: #fff6e8;
  --orange-line: #f3d19b;
  --yellow: #806000;
  --yellow-bg: #fffbe6;
  --yellow-line: #ebdc8d;
  --green: #137a45;
  --green-bg: #eef9f2;
  --green-line: #b7dfc8;
  --consult: #6654a8;
  --consult-bg: #f5f2ff;
  --consult-line: #d8cff5;
  --starter: #9a6226;
  --starter-bg: #fff7eb;
  --starter-line: #f0d6ae;
  --function: #316e9f;
  --function-bg: #eef7fc;
  --function-line: #bedbea;
  --fitness: #19724a;
  --fitness-bg: #eef9f2;
  --fitness-line: #b7dfc8;
  --radius-control: 12px;
  --radius-card: 16px;
  --radius-pill: 999px;
  --container: 1120px;
  --reading: 720px;
  color-scheme: light;
  font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  min-width: 320px;
  background: var(--canvas);
  color: var(--text);
  font-size: 17px;
  line-height: 1.65;
}

button,
input {
  font: inherit;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

button {
  color: inherit;
}

svg {
  width: 1.2em;
  height: 1.2em;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1,
h2,
h3 {
  color: var(--heading);
  letter-spacing: -0.035em;
}

p {
  margin-bottom: 0;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 1000;
  transform: translateY(-160%);
  background: var(--action);
  color: white;
  padding: 10px 16px;
  border-radius: var(--radius-control);
}

.skip-link:focus {
  transform: translateY(0);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.container {
  width: min(100% - 40px, var(--container));
  margin-inline: auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 1px solid var(--line);
}

.header-inner {
  width: min(100% - 40px, var(--container));
  min-height: 68px;
  margin-inline: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.brand-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--action);
  font-weight: 700;
  cursor: pointer;
}

.brand-mark {
  width: 38px;
  height: 38px;
  display: inline-grid;
  place-items: center;
  background: var(--brand-lime);
  color: var(--action);
  border-radius: 12px;
}

.brand-mark svg {
  width: 23px;
  height: 23px;
}

.header-badge,
.lime-badge,
.dark-chip,
.result-badge,
.level-name,
.eyebrow,
.question-count {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.header-badge {
  background: var(--surface);
  color: var(--text-muted);
  padding: 6px 12px;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.header-dashboard-button {
  min-height: 42px;
  padding: 9px 15px;
  font-size: 14px;
}

.lime-badge {
  padding: 7px 15px;
  background: var(--brand-lime-alt);
  color: #000;
}

.dark-chip {
  padding: 8px 16px;
  background: var(--ink-soft);
  color: white;
}

.remede-journey-band,
.review-band {
  padding: 96px 0;
  background: var(--surface-alt);
}

.journey-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-top: 40px;
}

.journey-card {
  display: flex;
  min-height: 265px;
  flex-direction: column;
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: white;
}

.journey-card-featured {
  border-color: var(--action);
  box-shadow: 0 18px 40px rgba(17, 17, 17, 0.1);
}

.journey-step {
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 700;
}

.journey-card h3 {
  margin: 22px 0 10px;
  font-size: 23px;
}

.journey-card p {
  color: var(--text-muted);
  font-size: 15px;
  line-height: 1.7;
}

.journey-meta {
  width: fit-content;
  margin-top: auto;
  padding: 6px 10px;
  border-radius: var(--radius-pill);
  background: var(--brand-lime-alt);
  color: var(--action);
  font-size: 12px;
  font-weight: 700;
}

.member-brand-home {
  background: white;
}

.member-brand-home[hidden] {
  display: none;
}

.member-portal-hero {
  padding: 92px 0;
  background: var(--action);
  color: white;
}

.member-portal-hero-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
  gap: 48px;
  align-items: center;
}

.member-portal-hero h1 {
  margin: 20px 0;
  max-width: 750px;
  color: white;
  font-size: clamp(44px, 6vw, 70px);
  line-height: 1.08;
}

.member-portal-hero p {
  max-width: 690px;
  color: #cfd2d7;
}

.video-operation-card {
  padding: 28px;
  border: 1px solid #3b3b3b;
  border-radius: 22px;
  background: #1c1c1c;
}

.video-operation-card span,
.video-operation-card strong {
  display: block;
}

.video-operation-card span {
  color: var(--brand-lime);
  font-size: 12px;
  font-weight: 800;
}

.video-operation-card strong {
  margin: 12px 0 8px;
  color: white;
  font-size: 22px;
}

.video-operation-card p {
  font-size: 14px;
}

.video-operation-card a {
  display: inline-block;
  margin-top: 20px;
  color: white;
  font-weight: 800;
}

.movement-check-band {
  padding: 96px 0;
  background: white;
}

.capture-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 36px;
}

.capture-choice-guide {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  margin-top: 32px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface-alt);
}

.capture-choice-guide div {
  padding: 15px 18px;
  border-radius: 15px;
  background: white;
}

.capture-choice-guide span,
.capture-choice-guide strong,
.capture-choice-guide small {
  display: block;
}

.capture-choice-guide span {
  color: var(--function);
  font-size: 11px;
  font-weight: 800;
}

.capture-choice-guide strong {
  margin-top: 3px;
  color: var(--heading);
}

.capture-choice-guide small {
  margin-top: 2px;
  color: var(--text-muted);
}

.capture-choice-guide > b {
  color: var(--text-muted);
  font-size: 12px;
}

.capture-choice-guide > p {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--text-muted);
  font-size: 12px;
  text-align: center;
}

.monthly-assessment-gate {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  margin-top: 34px;
  padding: 22px 24px;
  border: 1px solid var(--green-line);
  border-radius: 22px;
  background: var(--green-bg);
}

.assessment-cycle-icon {
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--action);
  color: var(--brand-lime);
  font-weight: 900;
}

.monthly-assessment-gate span,
.monthly-assessment-gate small {
  display: block;
}

.monthly-assessment-gate span {
  color: var(--green);
  font-size: 11px;
  font-weight: 900;
}

.monthly-assessment-gate h3 {
  margin: 4px 0 5px;
  font-size: 21px;
}

.monthly-assessment-gate p,
.monthly-assessment-gate small {
  color: var(--text-muted);
}

.monthly-assessment-gate small { margin-top: 5px; }
.monthly-assessment-gate.is-locked { border-color: var(--line); background: var(--surface-alt); }
.monthly-assessment-gate.is-locked .assessment-cycle-icon { background: #dfe4e7; color: var(--text-muted); }

.overhead-video-guide {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) 1.2fr;
  gap: 28px;
  align-items: center;
  margin-top: 18px;
  padding: 24px 28px;
  border-radius: 22px;
  background: var(--action);
  color: white;
}

.overhead-squat-posture { width: 100%; min-height: 150px; color: white; }
.posture-frame circle,
.posture-frame path { fill: none; stroke: currentColor; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; }
.posture-frame.posture-focus { color: var(--brand-lime); }
.posture-frame .posture-guide-line { stroke-width: 2; stroke-dasharray: 4 5; opacity: .55; }
.posture-arrow { fill: none; stroke: #8e9ba4; stroke-width: 2; stroke-linecap: round; }
.overhead-squat-posture text { fill: #b9c3c9; font-size: 10px; font-weight: 700; text-anchor: middle; }
.overhead-video-guide span { color: var(--brand-lime); font-size: 12px; font-weight: 800; }
.overhead-video-guide h3 { margin: 5px 0 8px; color: white; font-size: 25px; }
.overhead-video-guide p { color: #d5dade; font-size: 14px; line-height: 1.65; }
.overhead-video-guide small { display: block; margin-top: 9px; color: #aeb8be; font-size: 11px; }

.overhead-demo-stage {
  display: grid;
  gap: 12px;
}

.overhead-demo-stage video {
  width: 100%;
  max-height: 330px;
  border-radius: 16px;
  background: #080d10;
}

.overhead-demo-stage video[hidden],
.overhead-demo-placeholder[hidden] { display: none; }

.overhead-demo-placeholder {
  min-height: 150px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 5px;
  padding: 20px;
  border: 1px dashed rgba(255, 255, 255, .34);
  border-radius: 16px;
  background: rgba(5, 10, 12, .3);
  text-align: center;
}

.overhead-demo-placeholder > span {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--brand-lime);
  color: var(--action);
  font-size: 17px;
}

.overhead-demo-placeholder strong { color: white; }
.overhead-demo-placeholder small { max-width: 250px; margin: 0; }

.capture-card {
  min-height: 250px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface-alt);
  text-align: center;
  cursor: pointer;
  transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}

.capture-card:hover,
.capture-card:focus-within {
  transform: translateY(-3px);
  border-color: var(--heading);
  background: white;
}

.capture-card input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
}

.capture-icon {
  width: 82px;
  height: 82px;
  display: grid;
  place-items: center;
  margin-bottom: 18px;
  border-radius: 50%;
  background: white;
  color: var(--heading);
  font-size: 23px;
  font-weight: 900;
  box-shadow: inset 0 0 0 1px var(--line);
}

.capture-card-video .capture-icon {
  background: var(--brand-lime-alt);
}

.capture-type {
  color: var(--function);
  font-size: 12px;
  font-weight: 800;
}

.capture-card strong {
  margin: 4px 0;
  color: var(--heading);
  font-size: 20px;
}

.capture-card small {
  color: var(--text-muted);
}

.capture-card.has-file {
  border-color: var(--green);
  background: var(--green-bg);
}

.capture-card-analysis {
  color: inherit;
  text-decoration: none;
}

.full-posture-analysis {
  margin-top: 24px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: #202b34;
}

.full-posture-analysis-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
  padding: 24px 26px;
  color: white;
}

.full-posture-analysis-head span {
  color: var(--brand-lime);
  font-size: 11px;
  font-weight: 800;
}

.full-posture-analysis-head h3 {
  margin: 5px 0;
  color: white;
  font-size: 24px;
}

.full-posture-analysis-head p {
  color: #c8d0d4;
  font-size: 13px;
}

.full-posture-analysis-head a {
  flex: 0 0 auto;
  padding: 11px 15px;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 999px;
  color: white;
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}

.full-posture-analysis iframe {
  width: 100%;
  height: 980px;
  display: block;
  border: 0;
  background: #202b34;
}

.full-posture-analysis iframe[hidden] { display: none; }

.assessment-lock-overlay {
  min-height: 340px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  padding: 30px;
  border-top: 1px solid rgba(255, 255, 255, .1);
  background: radial-gradient(circle at 50% 0, #34444f, #172127 70%);
  color: white;
  text-align: center;
}

.assessment-lock-overlay[hidden] { display: none; }
.assessment-lock-overlay > span { color: var(--brand-lime); font-size: 34px; }
.assessment-lock-overlay strong { font-size: 21px; }
.assessment-lock-overlay p { max-width: 560px; color: #b8c2c8; }

.assessment-report {
  margin-top: 18px;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: white;
}

.assessment-report-head,
.assessment-report-actions {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
}

.assessment-report-head span {
  color: var(--function);
  font-size: 11px;
  font-weight: 900;
}

.assessment-report-head h3 { margin: 4px 0; font-size: 24px; }
.assessment-report-head p,
.assessment-report-actions p { color: var(--text-muted); font-size: 13px; }

.assessment-comparison-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 20px 0;
}

.assessment-comparison-grid article {
  min-height: 140px;
  padding: 18px;
  border-radius: 16px;
  background: var(--surface-alt);
}

.assessment-comparison-grid span,
.assessment-comparison-grid strong { display: block; }
.assessment-comparison-grid span { color: var(--function); font-size: 11px; font-weight: 900; }
.assessment-comparison-grid strong { margin-top: 5px; }
.assessment-comparison-grid p { margin-top: 18px; color: var(--text-muted); font-size: 13px; }
.assessment-comparison-grid article.is-improved { background: var(--green-bg); }
.assessment-comparison-grid article.is-watch { background: #fff6e7; }
/* [카메라이동 2026-08-05] 지난달과 비교하지 않은 칸. 회색으로 비워 둔다.
   "변화 없음"처럼 보이면 안 되므로 색을 주지 않는다. */
.assessment-comparison-grid article.is-blank { background: #f5f6f8; border-style: dashed; }
.assessment-comparison-grid article.is-blank p { color: var(--text-faint); }
.assessment-report-actions { padding-top: 18px; border-top: 1px solid var(--line); }

.movement-analysis-bar {
  display: flex;
  justify-content: space-between;
  gap: 22px;
  align-items: center;
  margin-top: 18px;
  padding: 20px 22px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--surface);
}

.movement-analysis-bar strong,
.movement-analysis-bar span {
  display: block;
}

.movement-analysis-bar span {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 12px;
}

.movement-analysis-preview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 18px;
  padding: 22px;
  border: 1px solid var(--green-line);
  border-radius: 18px;
  background: var(--green-bg);
}

.posture-visual-card {
  grid-column: 1 / -1;
  position: relative;
  padding: 0 !important;
  overflow: hidden;
  background: #101718 !important;
}

.posture-visual-card[hidden] {
  display: none;
}

.posture-visual-card canvas {
  width: 100%;
  max-height: 520px;
  display: block;
  object-fit: contain;
}

.posture-visual-card > span {
  position: absolute;
  left: 14px;
  bottom: 14px;
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(10, 18, 18, 0.82);
  color: white;
  font-size: 11px;
  font-weight: 800;
}

.posture-recommendation-card {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 4px 18px;
}

.posture-recommendation-card span,
.posture-recommendation-card strong {
  grid-column: 1;
}

.posture-recommendation-card .button {
  grid-column: 2;
  grid-row: 1 / span 2;
}

.movement-analysis-preview[hidden] {
  display: none;
}

.movement-analysis-preview div {
  padding: 16px;
  border-radius: 14px;
  background: white;
}

.movement-analysis-preview span,
.movement-analysis-preview strong {
  display: block;
}

.movement-analysis-preview span {
  color: var(--text-muted);
  font-size: 12px;
}

.movement-analysis-preview strong {
  margin-top: 5px;
  color: var(--heading);
}

.movement-analysis-preview > p {
  grid-column: 1 / -1;
  color: var(--text-muted);
  font-size: 13px;
}

.member-hero-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 32px;
}

.member-hero-actions a {
  text-decoration: none;
}

.button-on-dark {
  border-color: #6a6a6a;
  background: transparent;
  color: white;
}

.auth-container {
  max-width: 650px;
}

.auth-card {
  padding: 42px;
}

.auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
  margin: 28px 0 22px;
  padding: 5px;
  border-radius: var(--radius-pill);
  background: var(--surface);
}

.auth-tab {
  min-height: 44px;
  border: 0;
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--text-muted);
  font-weight: 700;
  cursor: pointer;
}

.auth-tab.is-selected {
  background: white;
  color: var(--heading);
  box-shadow: 0 3px 12px rgba(17, 17, 17, 0.08);
}

.auth-form {
  display: grid;
  gap: 16px;
}

.auth-form > label:not(.auth-consent-row) {
  display: grid;
  gap: 7px;
  color: var(--heading);
  font-size: 14px;
  font-weight: 700;
}

.auth-form input[type="email"],
.auth-form input[type="password"] {
  min-height: 52px;
  padding: 0 15px;
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  background: white;
  color: var(--heading);
}

.auth-form input:focus-visible {
  outline: 3px solid rgba(70, 108, 243, 0.2);
  border-color: var(--blue);
}

.auth-consent-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  color: var(--text-muted);
  font-size: 13px;
  cursor: pointer;
}

.auth-consent-row[hidden] {
  display: none;
}

.auth-consent-row input {
  margin-top: 5px;
}

.auth-status {
  min-height: 46px;
  margin: 14px 0 8px;
  padding: 12px 14px;
  border-radius: var(--radius-control);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 13px;
}

.member-session-actions {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  margin-bottom: 20px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  background: white;
  color: var(--text-muted);
  font-size: 13px;
}

.footer-business {
  margin-top: 7px;
  font-size: 12px;
}

.footer-links {
  display: flex;
  max-width: 500px;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px 16px;
  text-align: right;
}

.footer-links a {
  color: inherit;
  font-size: 13px;
}

.footer-links p {
  width: 100%;
}

.view[hidden] {
  display: none !important;
}

.hero {
  position: relative;
  min-height: 650px;
  display: grid;
  place-items: center;
  overflow: hidden;
  isolation: isolate;
}

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 850px;
  padding: 96px 0 110px;
  text-align: center;
}

.hero h1 {
  margin: 28px 0 24px;
  font-size: clamp(42px, 6vw, 68px);
  line-height: 1.12;
  font-weight: 700;
  word-break: keep-all;
}

.hero-profile-tags {
  justify-content: center;
  margin: 16px 0 0;
}

.hero-copy {
  max-width: 680px;
  margin: 0 auto;
  color: var(--text-muted);
  font-size: 20px;
  line-height: 1.7;
  word-break: keep-all;
}

.hero-quote {
  display: block;
  margin-bottom: 6px;
  color: var(--heading);
  font-weight: 700;
}

.hero-actions {
  margin-top: 36px;
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

.hero-blob {
  position: absolute;
  z-index: 0;
  border-radius: 47% 53% 55% 45%;
  opacity: 0.78;
  pointer-events: none;
  animation: blob-drift 7s ease-in-out infinite alternate;
}

.hero-blob-one {
  width: 360px;
  height: 360px;
  left: -80px;
  top: 80px;
  background: var(--brand-lime);
}

.hero-blob-two {
  width: 260px;
  height: 260px;
  right: -35px;
  bottom: 70px;
  background: linear-gradient(145deg, var(--brand-lime), var(--brand-yellow));
  animation-delay: -2s;
}

.button {
  min-height: 50px;
  padding: 13px 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  transition: transform 120ms ease, background-color 120ms ease, border-color 120ms ease, opacity 120ms ease;
}

.button:hover:not(:disabled) {
  transform: translateY(-1px);
}

.button:active:not(:disabled) {
  transform: scale(0.985);
}

.button:focus-visible,
.brand-button:focus-visible,
.text-back:focus-visible,
.answer-option:focus-within,
.consent-check:focus-within {
  outline: 3px solid rgba(70, 108, 243, 0.34);
  outline-offset: 3px;
}

.button:disabled {
  cursor: not-allowed;
  opacity: 0.42;
}

.button-primary {
  background: var(--action);
  color: white;
}

.button-primary:hover:not(:disabled) {
  background: #2b2b2b;
}

.button-outline {
  background: transparent;
  color: var(--action);
  border-color: var(--action);
}

.button-outline:hover:not(:disabled) {
  background: var(--surface);
}

.button-ghost {
  background: transparent;
  color: var(--text-muted);
}

.button-danger {
  background: var(--red);
  color: white;
}

.button-full {
  width: 100%;
}

.section-band {
  padding: 104px 0;
  background: var(--surface);
}

.section-heading {
  max-width: 760px;
  margin-bottom: 44px;
}

.eyebrow {
  color: var(--blue);
  padding: 0;
  margin-bottom: 14px;
  text-transform: uppercase;
}

.section-heading h2,
.safety-layout h2,
.final-cta-content h2 {
  margin-bottom: 18px;
  font-size: clamp(32px, 4.5vw, 48px);
  line-height: 1.22;
}

.section-heading p,
.final-cta-content p {
  color: var(--text-muted);
  font-size: 18px;
}

.level-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.level-card {
  min-height: 250px;
  padding: 28px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.level-dot {
  width: 14px;
  height: 14px;
  margin-bottom: 34px;
  border-radius: 50%;
  background: currentColor;
}

.level-name {
  margin-bottom: 12px;
  padding: 4px 10px;
  background: currentColor;
}

.level-name::first-line {
  color: white;
}

.level-card h3 {
  margin-bottom: 9px;
  font-size: 21px;
}

.level-card p {
  color: var(--text-muted);
  font-size: 15px;
  line-height: 1.6;
}

.level-consult { color: var(--consult); }
.level-starter { color: var(--starter); }
.level-function { color: var(--function); }
.level-fitness { color: var(--fitness); }
.level-card .level-name { color: white; }
.level-consult .level-name { background: var(--consult); }
.level-starter .level-name { background: var(--starter); }
.level-function .level-name { background: var(--function); }
.level-fitness .level-name { background: var(--fitness); }

.safety-band {
  padding: 112px 0;
  background: white;
}

.safety-layout {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: 90px;
  align-items: start;
}

.safety-layout h2 {
  margin-top: 24px;
}

.safety-intro {
  max-width: 390px;
  margin-top: 20px;
  color: var(--text-muted);
  line-height: 1.75;
}

.safety-list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--line);
}

.safety-item {
  padding: 26px 0;
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 18px;
  border-bottom: 1px solid var(--line);
}

.safety-item h3 {
  margin-bottom: 4px;
  font-size: 19px;
}

.safety-item p {
  color: var(--text-muted);
  font-size: 15px;
}

.icon-circle {
  width: 46px;
  height: 46px;
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--brand-lime-alt);
  color: var(--action);
}

.icon-circle svg {
  width: 23px;
  height: 23px;
}

.final-cta-band {
  padding: 110px 0;
  background: var(--surface-alt);
  text-align: center;
}

.final-cta-content {
  max-width: 780px;
}

.final-cta-content h2 {
  margin-top: 24px;
}

.final-cta-content .button {
  margin-top: 32px;
}

.flow-view,
.result-view {
  min-height: calc(100vh - 68px);
  padding: 48px 0 88px;
  background: var(--surface-alt);
}

.flow-container,
.question-shell,
.result-container {
  width: min(100% - 40px, var(--reading));
  margin-inline: auto;
}

.text-back {
  min-height: 48px;
  margin-bottom: 18px;
  padding: 8px 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font-weight: 600;
  cursor: pointer;
}

.flow-card,
.question-card {
  padding: 46px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.flow-card h1 {
  margin: 24px 0 16px;
  font-size: clamp(34px, 5vw, 46px);
  line-height: 1.22;
}

.lead-copy {
  color: var(--text-muted);
  font-size: 18px;
  line-height: 1.7;
}

.info-panel,
.danger-panel {
  margin-top: 24px;
  padding: 22px;
  display: flex;
  gap: 16px;
  align-items: flex-start;
  border-radius: var(--radius-card);
}

.info-panel {
  background: var(--surface);
}

.danger-panel {
  background: var(--red-bg);
  border: 1px solid var(--red-line);
}

.danger-panel .icon-circle {
  background: white;
  color: var(--red);
}

.info-panel strong,
.danger-panel strong {
  display: block;
  margin-bottom: 6px;
  color: var(--heading);
  font-size: 17px;
}

.info-panel p,
.danger-panel p {
  color: var(--text-muted);
  font-size: 15px;
  line-height: 1.65;
}

.consent-check {
  margin-top: 26px;
  padding: 20px;
  display: grid;
  grid-template-columns: 26px 1fr;
  align-items: start;
  gap: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}

.consent-check:hover {
  background: var(--surface-alt);
}

.consent-check input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.check-ui {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border: 2px solid var(--text-faint);
  border-radius: 8px;
  color: transparent;
}

.consent-check input:checked + .check-ui {
  border-color: var(--action);
  background: var(--action);
  color: white;
}

.flow-actions {
  margin-top: 28px;
  display: grid;
  gap: 10px;
}

.fine-print {
  margin-top: 14px;
  color: var(--text-faint);
  font-size: 13px;
  text-align: center;
}

.profile-fieldset {
  margin: 30px 0 0;
  padding: 0;
  border: 0;
}

.profile-fieldset legend {
  margin-bottom: 12px;
  color: var(--heading);
  font-weight: 700;
}

.height-field {
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: 190px;
}

.height-input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: 1.05rem;
  font-weight: 600;
  padding: 12px 14px;
  border: 1px solid var(--line, #e5e7eb);
  border-radius: 12px;
  background: #fff;
  color: inherit;
}

.height-input:focus {
  outline: none;
  border-color: #d8c65a;
  box-shadow: 0 0 0 3px rgba(255, 228, 92, 0.35);
}

.height-unit {
  font-size: 0.95rem;
  color: #6b7280;
  font-weight: 600;
}

.legend-optional {
  margin-left: 6px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #6b7280;
  background: #f2f4f7;
  border-radius: 20px;
  padding: 2px 8px;
  vertical-align: 2px;
}

.field-help {
  margin: -6px 0 14px;
  color: var(--text-muted);
  font-size: 14px;
}

.profile-option-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.profile-option {
  position: relative;
  min-height: 56px;
  padding: 14px 12px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  background: white;
  color: var(--heading);
  font-weight: 600;
  text-align: center;
  cursor: pointer;
}

.profile-option input {
  position: absolute;
  opacity: 0;
}

.profile-option:hover {
  background: var(--surface-alt);
}

.profile-option:has(input:checked) {
  border: 2px solid var(--action);
  background: rgba(249, 255, 145, 0.3);
}

.profile-preview {
  min-height: 48px;
  margin-top: 24px;
  padding: 14px 16px;
  border-radius: var(--radius-control);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 14px;
}

.question-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 10px;
}

.question-tags:empty {
  display: none;
}

.profile-tag {
  padding: 5px 10px;
  border-radius: var(--radius-pill);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 700;
}

.profile-tag-woman {
  background: #fff0f6;
  color: #a13c69;
}

.profile-tag-senior {
  background: #eef7fc;
  color: #316e9f;
}

.pain-fieldset {
  margin: 30px 0 0;
  padding: 0;
  border: 0;
}

.pain-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

/* [2026-08-23] 부위 칸에 몸 그림을 왼쪽에 둔다 (8월 3일 인포그래픽 시안에서 빼낸 그림) */
.pain-art {
  width: 56px;
  height: 56px;
  border-radius: 12px;
  background: var(--band, #f2f5fa);
  display: grid;
  place-items: center;
  overflow: hidden;
}
.pain-art img { width: 88%; height: 88%; object-fit: contain; display: block; }
.pain-option:has(input:checked) .pain-art { background: var(--lime, #eaf7dc); }
.pain-option.has-art { grid-template-columns: 26px 56px 1fr; }
.pain-option.pain-none { grid-column: 1 / -1; min-height: 0; }

.pain-option {
  position: relative;
  min-height: 86px;
  padding: 17px 18px;
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}

.pain-option:last-child {
  grid-column: 1 / -1;
}

.pain-option:hover {
  border-color: var(--text-faint);
  background: var(--surface-alt);
}

.pain-option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.pain-check {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border: 2px solid var(--text-faint);
  border-radius: 8px;
  color: transparent;
}

.pain-option strong,
.pain-option small {
  display: block;
}

.pain-option strong {
  color: var(--heading);
  font-size: 17px;
}

.pain-option small {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.45;
}

.pain-option:has(input:checked) {
  padding: 16px 17px;
  border: 2px solid var(--action);
  background: rgba(249, 255, 145, 0.28);
}

.pain-option input:checked + .pain-check {
  border-color: var(--action);
  background: var(--action);
  color: white;
}

.pain-info {
  margin-top: 18px;
}

.question-shell {
  max-width: 760px;
}

.question-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.question-topline .text-back {
  margin-bottom: 0;
}

.question-count {
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  justify-content: flex-end;
  text-align: right;
  line-height: 1.4;
}

.progress-track {
  height: 6px;
  margin: 12px 0 28px;
  overflow: hidden;
  border-radius: var(--radius-pill);
  background: var(--line);
}

.progress-bar {
  width: 6.67%;
  height: 100%;
  border-radius: inherit;
  background: var(--action);
  transition: width 200ms cubic-bezier(0.25, 0.1, 0.25, 1);
}

.question-card h1 {
  margin: 22px 0 14px;
  font-size: clamp(26px, 4.5vw, 34px);
  line-height: 1.42;
}

.question-help {
  color: var(--text-muted);
}

.question-alert {
  margin-top: 20px;
  padding: 16px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
  border: 1px solid var(--red-line);
  border-radius: var(--radius-control);
  background: var(--red-bg);
  color: var(--red);
  font-size: 15px;
  font-weight: 600;
}

.question-alert[hidden] {
  display: none !important;
}

.question-alert svg {
  flex: 0 0 auto;
  margin-top: 2px;
}

.answer-fieldset {
  margin: 28px 0 0;
  padding: 0;
  border: 0;
}

.answer-options {
  display: grid;
  gap: 10px;
}

.answer-option {
  position: relative;
  min-height: 64px;
  padding: 18px 20px;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
  color: var(--heading);
  font-weight: 600;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}

.answer-copy {
  min-width: 0;
  text-align: left;
}

.answer-copy strong,
.answer-copy small {
  display: block;
}

.answer-option:hover {
  border-color: var(--text-faint);
  background: var(--surface-alt);
}

.answer-option input {
  position: absolute;
  opacity: 0;
}

.answer-radio {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  border: 2px solid var(--text-faint);
  border-radius: 50%;
}

.answer-option:has(input:checked) {
  border: 2px solid var(--action);
  background: rgba(249, 255, 145, 0.28);
  padding: 17px 19px;
}

.answer-option input:checked + .answer-radio {
  border: 7px solid var(--action);
  background: white;
}

.question-actions {
  margin-top: 18px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
}

.question-actions .button-primary {
  justify-self: stretch;
}

.result-container {
  width: min(100% - 40px, var(--container));
}

.result-hero {
  padding: 42px;
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 24px;
  align-items: start;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.result-icon {
  width: 72px;
  height: 72px;
  display: grid;
  place-items: center;
  border-radius: 50%;
}

.result-icon svg {
  width: 34px;
  height: 34px;
}

.result-badge {
  padding: 6px 12px;
}

.result-hero h1 {
  margin: 16px 0 10px;
  font-size: clamp(34px, 5vw, 50px);
  line-height: 1.2;
}

.result-summary {
  max-width: 740px;
  color: var(--text-muted);
  font-size: 18px;
}

.result-pain-summary {
  width: fit-content;
  margin-top: 16px;
  padding: 8px 12px;
  border: 1px solid currentColor;
  border-radius: var(--radius-pill);
  color: var(--heading);
  background: rgba(255, 255, 255, 0.72);
  font-size: 14px;
  font-weight: 700;
}

.result-profile-tags {
  margin-top: 14px;
}

.result-score-summary {
  margin-top: 12px;
  color: var(--heading);
  font-weight: 700;
}

.result-consult {
  background: var(--consult-bg);
  border-color: var(--consult-line);
}
.result-consult .result-icon,
.result-consult .result-badge { background: white; color: var(--consult); }

.result-starter {
  background: var(--starter-bg);
  border-color: var(--starter-line);
}
.result-starter .result-icon,
.result-starter .result-badge { background: white; color: var(--starter); }

.result-function {
  background: var(--function-bg);
  border-color: var(--function-line);
}
.result-function .result-icon,
.result-function .result-badge { background: white; color: var(--function); }

.result-fitness {
  background: var(--fitness-bg);
  border-color: var(--fitness-line);
}
.result-fitness .result-icon,
.result-fitness .result-badge { background: white; color: var(--fitness); }

.emergency-box {
  margin-top: 16px;
  padding: 22px 24px;
  border: 1px solid var(--red-line);
  border-radius: var(--radius-card);
  background: var(--red);
  color: white;
}

.emergency-box strong {
  display: block;
  margin-bottom: 4px;
  font-size: 20px;
}

.emergency-box p {
  opacity: 0.9;
}

.result-content-grid {
  margin-top: 18px;
  display: grid;
  grid-template-columns: 1.35fr 0.65fr;
  gap: 18px;
  align-items: start;
}

.result-main,
.result-side {
  display: grid;
  gap: 18px;
}

.result-section,
.disclaimer-box {
  padding: 25px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.result-section h2 {
  margin: 5px 0 16px;
  font-size: 23px;
}

.action-list {
  display: grid;
  gap: 10px;
}

.action-item {
  min-height: 56px;
  padding: 13px 15px;
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 14px;
  align-items: center;
  border-radius: var(--radius-control);
  background: var(--surface);
}

.action-number {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--action);
  color: white;
  font-size: 14px;
  font-weight: 700;
}

.plain-list {
  margin: 0;
  padding-left: 22px;
  color: var(--text-muted);
}

.plain-list li + li {
  margin-top: 10px;
}

.disclaimer-box {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  background: var(--surface-alt);
}

.disclaimer-box p {
  color: var(--text-muted);
  font-size: 15px;
  line-height: 1.7;
}

.disclaimer-box strong {
  color: var(--heading);
}

.result-ctas {
  display: grid;
  gap: 10px;
}

.result-posture-step {
  margin-top: 18px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: #202b34;
}

.result-posture-step[hidden] { display: none; }

.result-posture-head {
  padding: 26px 28px;
  display: flex;
  justify-content: space-between;
  gap: 22px;
  align-items: center;
  color: white;
}

.result-posture-head h2 {
  margin: 5px 0;
  color: white;
  font-size: 28px;
}

.result-posture-head p {
  max-width: 720px;
  color: #c8d0d4;
}

.result-posture-status {
  flex: 0 0 auto;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .1);
  color: var(--brand-lime);
  font-size: 12px;
  font-weight: 900;
}

/* [전체화면 촬영 2026-08-06] 촬영 중에는 이 칸이 화면 전체가 된다 */
.result-posture-step iframe.is-capture-full,
.full-posture-analysis iframe.is-capture-full {
  position: fixed; inset: 0; width: 100vw; height: 100vh; height: 100dvh;
  z-index: 9999; border-radius: 0; margin: 0; max-width: none;
}
body.capture-fullscreen { overflow: hidden; }

.result-posture-step iframe {
  width: 100%;
  height: 900px;
  display: block;
  border: 0;
  background: #202b34;
}

.muscle-guidance {
  margin: 0;
  padding: 24px 28px 28px;
  background: white;
}

.muscle-guidance[hidden] { display: none; }

.muscle-guidance-head span {
  color: var(--function);
  font-size: 11px;
  font-weight: 900;
}

.muscle-guidance-head h3 {
  margin: 4px 0;
  font-size: 23px;
}

.muscle-guidance-head p {
  color: var(--text-muted);
  font-size: 13px;
}

.muscle-guidance-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.muscle-guidance-grid article {
  padding: 17px;
  border-radius: 15px;
  background: var(--surface-alt);
}

.muscle-guidance-grid span,
.muscle-guidance-grid strong,
.muscle-guidance-grid small { display: block; }
.muscle-guidance-grid span { color: var(--function); font-size: 11px; font-weight: 900; }
.muscle-guidance-grid strong { margin: 5px 0; color: var(--heading); }
.muscle-guidance-grid small { color: var(--text-muted); line-height: 1.5; }
.muscle-guidance-member { margin: 18px 0 0; padding: 20px; border-radius: 18px; background: var(--green-bg); }

.exercise-program {
  margin-top: 18px;
  padding: 34px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.exercise-program[hidden] {
  display: none;
}

.exercise-program-head {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: flex-start;
  margin-bottom: 24px;
}

.exercise-program-head h2 {
  margin: 6px 0 8px;
  font-size: 30px;
}

.exercise-program-head p,
.exercise-source-note {
  color: var(--text-muted);
}

.program-symbol-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.program-symbol-card {
  position: relative;
  min-height: 225px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface-alt);
  text-align: center;
}

.program-symbol-card.is-recommended {
  border: 2px solid var(--action);
  background: var(--brand-lime-alt);
  transform: translateY(-4px);
  box-shadow: 0 14px 28px rgba(17, 17, 17, 0.1);
}

.program-symbol-icon {
  width: 86px;
  height: 86px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: white;
  font-size: 44px;
  line-height: 1;
  box-shadow: inset 0 0 0 1px rgba(17, 17, 17, 0.06);
}

.program-symbol-badge {
  margin-top: 14px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
}

.program-symbol-card.is-recommended .program-symbol-badge {
  color: var(--action);
}

.program-symbol-card h3 {
  margin: 5px 0 2px;
  font-size: 22px;
}

.program-symbol-card p {
  color: var(--text-muted);
  font-size: 13px;
}

.exercise-details {
  margin-top: 16px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.exercise-details[hidden] {
  display: none;
}

.dashboard-view {
  min-height: calc(100vh - 72px);
  padding: 0 0 80px;
  background: var(--surface);
}

.dashboard-container {
  width: min(100% - 40px, 1180px);
  margin: 0 auto;
  padding-top: 40px;
}

.dashboard-heading {
  margin: 22px 0 24px;
  display: flex;
  justify-content: space-between;
  gap: 32px;
  align-items: flex-end;
}

.dashboard-heading h1 {
  margin: 16px 0 8px;
  max-width: 700px;
  font-size: clamp(34px, 5vw, 52px);
  line-height: 1.16;
}

.dashboard-heading p {
  color: var(--text-muted);
}

.backend-status {
  padding: 12px 16px;
  display: flex;
  gap: 9px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  background: white;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 700;
}

.status-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--function);
  box-shadow: 0 0 0 4px rgba(47, 107, 154, 0.12);
}

.role-preview-tabs {
  width: fit-content;
  margin-bottom: 18px;
  padding: 5px;
  display: flex;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius-pill);
  background: white;
}

.role-tab {
  padding: 10px 18px;
  border: 0;
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.role-tab.is-selected {
  background: var(--heading);
  color: white;
}

.dashboard-panel[hidden] {
  display: none;
}

.dashboard-summary-grid {
  display: grid;
  grid-template-columns: 1.35fr 0.8fr 1fr;
  gap: 12px;
}

.dashboard-stat,
.dashboard-card,
.membership-ladder {
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
}

.dashboard-stat {
  min-height: 160px;
  padding: 24px;
}

.dashboard-stat span,
.class-meta-grid span {
  display: block;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 700;
}

.dashboard-stat strong {
  display: block;
  margin: 14px 0 8px;
  color: var(--heading);
  font-size: 24px;
}

.dashboard-stat p {
  color: var(--text-muted);
  font-size: 14px;
}

.dashboard-stat-primary {
  border-color: var(--function-line);
  background: var(--function-bg);
}

.dashboard-main-grid {
  margin-top: 12px;
  display: grid;
  grid-template-columns: 1.35fr 0.65fr;
  gap: 12px;
}

.dashboard-card,
.membership-ladder {
  padding: 28px;
}

.dashboard-card-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: flex-start;
}

.dashboard-card-head h2 {
  margin-top: 5px;
  font-size: 25px;
}

.class-status {
  padding: 6px 10px;
  border-radius: var(--radius-pill);
  background: var(--fitness-bg);
  color: var(--fitness);
  font-size: 12px;
  font-weight: 800;
}

.class-meta-grid {
  margin: 24px 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.class-meta-grid strong {
  display: block;
  margin-top: 5px;
  color: var(--heading);
  font-size: 15px;
}

.secure-link-note {
  margin-top: 12px;
  color: var(--text-faint);
  font-size: 12px;
  line-height: 1.55;
}

.schedule-list {
  margin: 18px 0;
  display: grid;
  gap: 8px;
}

.schedule-list article {
  padding: 14px;
  display: grid;
  grid-template-columns: 82px 1fr;
  gap: 12px;
  border-radius: var(--radius-control);
  background: var(--surface);
}

.schedule-list time {
  color: var(--function);
  font-weight: 800;
}

.schedule-list strong,
.schedule-list span {
  display: block;
}

.schedule-list span {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 12px;
}

.membership-ladder {
  margin-top: 12px;
}

.membership-card-grid {
  margin-top: 20px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.membership-card-grid article {
  min-height: 160px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface-alt);
}

.membership-card-grid span {
  color: var(--function);
  font-size: 12px;
  font-weight: 800;
}

.membership-card-grid h3 {
  margin: 10px 0 7px;
  font-size: 19px;
}

.membership-card-grid p {
  color: var(--text-muted);
  font-size: 14px;
}

.membership-card-grid .membership-featured {
  border: 2px solid var(--action);
  background: rgba(249, 255, 145, 0.28);
}

.instructor-action-list {
  margin-top: 22px;
  display: grid;
  gap: 8px;
}

.instructor-action-list button,
.instructor-action-list a {
  padding: 17px;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border: 0;
  border-radius: var(--radius-control);
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  cursor: pointer;
  text-decoration: none;
}

.instructor-action-list button:hover,
.instructor-action-list a:hover {
  background: var(--surface-alt);
}

.instructor-action-list strong {
  color: var(--heading);
}

.temporary-video-badge,
.exercise-type-badge {
  flex: 0 0 auto;
  padding: 6px 10px;
  border-radius: var(--radius-pill);
  background: #fff6d9;
  color: #7a5700;
  font-size: 12px;
  font-weight: 700;
}

.exercise-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.exercise-card {
  min-height: 195px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface-alt);
}

.exercise-card-top {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.exercise-order {
  color: var(--function);
  font-size: 13px;
  font-weight: 800;
}

.exercise-card h3 {
  margin: 18px 0 5px;
  font-size: 21px;
}

.exercise-duration {
  color: var(--heading);
  font-size: 14px;
  font-weight: 700;
}

.exercise-link {
  margin-top: auto;
  color: var(--action);
  font-weight: 800;
  text-decoration: none;
}

.exercise-link:hover {
  text-decoration: underline;
}

.exercise-source {
  margin-top: 8px;
  color: var(--text-faint);
  font-size: 12px;
}

.alternatives-toggle {
  width: auto;
  margin-top: 18px;
}

.alternative-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 12px;
}

.exercise-source-note {
  margin-top: 20px;
  font-size: 13px;
  line-height: 1.6;
}

.action-card .lead-copy {
  margin-bottom: 28px;
}

.action-detail-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

.action-detail {
  padding: 20px;
  border-radius: var(--radius-card);
  background: var(--surface);
}

.action-detail strong {
  display: block;
  margin-bottom: 6px;
  color: var(--heading);
}

.action-detail p {
  color: var(--text-muted);
  font-size: 15px;
}

.action-warning {
  margin-top: 22px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  background: var(--surface-alt);
  color: var(--text-muted);
  font-size: 15px;
}

.toast {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 100;
  max-width: min(420px, calc(100% - 40px));
  padding: 16px 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--action);
  color: white;
  font-size: 15px;
}

.site-footer {
  padding: 40px 0;
  border-top: 1px solid var(--line);
  background: var(--ink-soft);
  color: white;
}

.footer-inner {
  display: flex;
  justify-content: space-between;
  gap: 30px;
  align-items: flex-start;
}

.footer-inner strong {
  display: block;
  margin-bottom: 5px;
}

.footer-inner p {
  color: #c8cbd1;
  font-size: 14px;
}

@keyframes blob-drift {
  from { transform: translate3d(0, 0, 0) rotate(-3deg); }
  to { transform: translate3d(18px, -12px, 0) rotate(5deg); }
}

@media (max-width: 900px) {
  .member-portal-hero-layout {
    grid-template-columns: 1fr;
  }

  .capture-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .program-symbol-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .journey-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .level-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .safety-layout,
  .result-content-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .action-detail-grid {
    grid-template-columns: 1fr;
  }

  .exercise-card-grid {
    grid-template-columns: 1fr;
  }

  .alternative-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .dashboard-summary-grid,
  .dashboard-main-grid {
    grid-template-columns: 1fr;
  }

  .membership-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .member-portal-hero {
    padding: 76px 0;
  }

  .member-portal-hero h1 {
    font-size: 42px;
  }

  .capture-grid,
  .movement-analysis-preview {
    grid-template-columns: 1fr;
  }

  .monthly-assessment-gate {
    grid-template-columns: auto 1fr;
    align-items: start;
    padding: 18px;
  }

  .monthly-assessment-gate .button {
    grid-column: 1 / -1;
    width: 100%;
  }

  .capture-choice-guide {
    grid-template-columns: 1fr;
  }

  .overhead-video-guide {
    grid-template-columns: 1fr;
    padding: 20px;
  }

  .capture-choice-guide > b {
    text-align: center;
  }

  .capture-choice-guide > p,
  .posture-visual-card,
  .posture-recommendation-card {
    grid-column: auto;
  }

  .posture-recommendation-card {
    grid-template-columns: 1fr;
  }

  .posture-recommendation-card span,
  .posture-recommendation-card strong,
  .posture-recommendation-card .button {
    grid-column: 1;
    grid-row: auto;
  }

  .posture-recommendation-card .button {
    margin-top: 12px;
  }

  .capture-card {
    min-height: 210px;
  }

  .full-posture-analysis-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .full-posture-analysis iframe {
    height: 820px;
  }

  .movement-analysis-bar {
    align-items: stretch;
    flex-direction: column;
  }

  .movement-analysis-preview > p {
    grid-column: auto;
  }

  .result-posture-head {
    align-items: flex-start;
    flex-direction: column;
    padding: 20px;
  }

  .result-posture-step iframe { height: 820px; }
  .muscle-guidance { padding: 20px; }
  .muscle-guidance-grid { grid-template-columns: 1fr; }

  .assessment-report-head,
  .assessment-report-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .assessment-comparison-grid {
    grid-template-columns: 1fr;
  }
  body {
    font-size: 16px;
  }

  .container,
  .header-inner,
  .flow-container,
  .question-shell,
  .result-container {
    width: min(100% - 32px, var(--container));
  }

  .site-header {
    position: static;
  }

  .header-inner {
    min-height: 62px;
  }

  .brand-button {
    font-size: 15px;
  }

  .brand-mark {
    width: 34px;
    height: 34px;
  }

  .header-badge {
    display: none;
  }

  .header-dashboard-button {
    padding-inline: 11px;
    font-size: 12px;
  }

  .hero {
    min-height: auto;
  }

  .hero-content {
    padding: 78px 0 86px;
  }

  .hero h1 {
    margin-top: 22px;
    font-size: 42px;
    line-height: 1.16;
  }

  .hero-copy {
    font-size: 17px;
  }

  .hero-actions {
    display: grid;
  }

  .hero-actions .button {
    width: 100%;
  }

  .hero-blob-one {
    width: 220px;
    height: 220px;
    left: -130px;
    top: 48px;
  }

  .hero-blob-two {
    width: 170px;
    height: 170px;
    right: -90px;
    bottom: 54px;
  }

  .section-band,
  .safety-band,
  .final-cta-band,
  .remede-journey-band,
  .remede-trust-band,
  .review-band {
    padding: 76px 0;
  }

  .journey-grid {
    grid-template-columns: 1fr;
  }

  .journey-card {
    min-height: 230px;
  }

  .journey-actions .button {
    width: 100%;
  }

  .member-hero-actions {
    display: grid;
  }

  .member-hero-actions .button {
    width: 100%;
  }

  .auth-card {
    padding: 26px;
  }

  .member-session-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .level-grid {
    grid-template-columns: 1fr;
  }

  .level-card {
    min-height: auto;
  }

  .level-dot {
    margin-bottom: 22px;
  }

  .safety-layout {
    gap: 38px;
  }

  .flow-view,
  .result-view {
    min-height: calc(100vh - 62px);
    padding: 24px 0 60px;
  }

  .flow-card,
  .question-card,
  .result-hero,
  .result-section,
  .disclaimer-box,
  .exercise-program {
    padding: 24px;
  }

  .exercise-program-head {
    display: grid;
  }

  .program-symbol-card {
    min-height: 195px;
    padding: 16px;
  }

  .program-symbol-icon {
    width: 72px;
    height: 72px;
    font-size: 36px;
  }

  .alternative-grid {
    grid-template-columns: 1fr;
  }

  .dashboard-heading {
    display: grid;
    align-items: start;
  }

  .backend-status {
    width: fit-content;
  }

  .membership-card-grid,
  .class-meta-grid {
    grid-template-columns: 1fr;
  }

  .flow-card h1,
  .result-hero h1 {
    font-size: 34px;
  }

  .info-panel,
  .danger-panel {
    display: grid;
  }

  .question-card h1 {
    font-size: 27px;
  }

  .pain-grid {
    grid-template-columns: 1fr;
  }

  .profile-option-grid,
  .profile-option-grid-four {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pain-option:last-child {
    grid-column: auto;
  }

  .question-count {
    max-width: 72%;
    font-size: 11px;
  }

  .question-actions {
    position: sticky;
    bottom: 0;
    margin-inline: -16px;
    padding: 14px 16px;
    background: white;
    border-top: 1px solid var(--line);
  }

  .question-actions .button {
    padding-inline: 20px;
  }

  .result-hero {
    grid-template-columns: 1fr;
  }

  .result-icon {
    width: 60px;
    height: 60px;
  }

  .footer-inner {
    display: grid;
  }

  .footer-links {
    justify-content: flex-start;
    text-align: left;
  }
}

@media print {
  body * { visibility: hidden; }
  #assessment-report,
  #assessment-report * { visibility: visible; }
  #assessment-report {
    position: absolute;
    inset: 0;
    margin: 0;
    border: 0;
  }
  #assessment-print-button,
  #assessment-complete-button { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ── 정렬 리포트 (A4 한 장) 2026-08-05 ─────────────────────────────
   숫자를 쓰지 않고 세 칸으로만 말한다. 무료 상태에서는 아래쪽 '이번 달 순서'를
   흐리게 가린다 — 없는 것을 가리는 게 아니라 실제로 계산해 둔 것을 가린다. */
/* [A4 한 장 2026-08-06] 종이 한 장에 다 들어가게 잡는다.
   A4 세로 = 794 × 1123px(96dpi). 화면에서도 그 비율 그대로 보여준다. */
.result-report{margin-top:22px;display:flex;justify-content:center}
.rp-sheet{width:794px;max-width:100%;min-height:1123px;display:flex;flex-direction:column}
.rp-body{flex:1;padding:14px 26px 16px;display:grid;gap:11px;align-content:start}
.rp-top{display:grid;grid-template-columns:1fr 196px;gap:14px;align-items:start}
.rp-side .rp-lead{font-size:17px;line-height:1.35}
.rp-side .rp-stage{margin-top:9px}
.rp-side .rp-why{margin-top:9px;font-size:11.5px}
.rp-side .rp-qc{margin-top:10px;padding:10px 11px}
.rp-mid{display:block}
.rp-views{gap:9px}
@media(max-width:780px){
  .result-report{display:block}
  .rp-sheet{width:auto;min-height:0}
  .rp-top{grid-template-columns:1fr}
  .rp-mcards{grid-template-columns:1fr} /* [근육으로 보면 2026-08-26] 폰에서는 한 줄에 한 카드 */
  .rp-body{padding:16px 16px 18px}
}
@page{size:A4;margin:0}

.rp-sheet{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
color:var(--text);line-height:1.6;word-break:keep-all}
/* [2026-08-06] 헤더를 네이비 띠로. 검사 리포트는 머리띠 한 줄로 격이 결정된다. */
.rp-hd{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;
padding:18px 24px 16px;background:#1b2a44;flex-wrap:wrap}
.rp-k{font-size:11px;font-weight:800;letter-spacing:.16em;color:#8fa6c8;display:flex;gap:8px;align-items:baseline}
.rp-k i{font-style:italic;font-weight:500;letter-spacing:.02em;color:#6f88ad;font-size:11px}
.rp-hd h3{font-size:21px;font-weight:800;color:#fff;letter-spacing:-.5px;margin:6px 0 0}
.rp-r{font-size:12px;color:#b9c8dd;text-align:right;line-height:1.7}
.rp-r b{color:#fff;font-weight:700}
.rp-r span{color:#8fa6c8}
/* 섹션 바 — 어디부터 어디까지가 한 덩어리인지 눈으로 끊어 준다 */
.rp-sec{margin:2px 0 -4px;padding:7px 14px;background:#1b2a44;color:#fff;border-radius:6px;
font-size:12px;font-weight:800;letter-spacing:.02em}
.rp-body{padding:20px 24px 22px;display:grid;gap:18px}
.rp-views{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.rp-views figure{margin:0;background:var(--surface);border-radius:12px;padding:12px 8px 10px;text-align:center}
.rp-views svg{width:100%;max-width:120px;height:auto}
.rp-views figcaption{font-size:11.5px;color:var(--text-muted);margin-top:6px}
.rp-views figcaption b{color:var(--heading);font-weight:700}

/* [X-ray 판 2026-08-06] 리포트 그림 세 장을 어두운 판 위 골격으로 — 최종 분석 화면과 같은 결.
   흰 종이에 회색 선으로 그렸더니 클립아트가 됐다. 판을 어둡게 두어야 뼈가 산다. */
.rp-views figure.rp-xray{background:#1b2733;padding:0;border-radius:10px;overflow:hidden;
border:1px solid #cdd3db}
.rp-views figure.rp-xray svg{display:block;width:100%;max-width:none;aspect-ratio:3/4;height:auto} /* [비율통일 2026-08-26] 세 장이 같은 3:4 틀 — 촬영이 저장하는 비율 그대로 */
.rp-xray .xbg{fill:#1b2733}
.rp-xray .xg{filter:drop-shadow(0 0 2.4px rgba(150,215,255,.55))}
.rp-xray .xb{stroke:rgba(228,246,255,.94);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
.rp-xray .xr{stroke:rgba(212,238,252,.66);stroke-width:1.15;stroke-linecap:round}
.rp-xray .xf{fill:rgba(206,234,250,.26);stroke:rgba(228,246,255,.9);stroke-width:1.5;stroke-linejoin:round}
.rp-xray .xv{fill:rgba(206,234,250,.42);stroke:rgba(228,246,255,.78);stroke-width:.8}
.rp-xray .xh{fill:rgba(12,22,32,.72);stroke:none}
.rp-xray .xref path{stroke:#f1d642;stroke-width:1.4;stroke-dasharray:5 5;fill:none;opacity:.92}
.rp-xray .xmid{stroke:#1698ff;stroke-width:1.6;fill:none;opacity:.85}
.rp-xray .xact path{stroke-width:2.6;stroke-linecap:round;fill:none}
.rp-xray .xact circle,.rp-xray .xact ellipse{stroke-width:2.2}
.rp-xray .xrl{fill:#ff6b73;font:800 9px var(--mono,ui-monospace,monospace);letter-spacing:.06em}
.rp-xray .xrl-r{text-anchor:end}

/* [본인 사진 2026-08-06] 사진판 — 사진 위에 기준선을 겹친다.
   좌표는 촬영 이미지의 정규화 좌표 그대로라 사진과 선이 정확히 맞는다. */
.rp-shotfig .pmid{stroke:#1698ff;stroke-width:2.2;fill:none;opacity:.9}
.rp-shotfig .pref{stroke:#f1d642;stroke-width:2;stroke-dasharray:9 7;fill:none;opacity:.95}
.rp-shotfig .pact{stroke-width:3.4;stroke-linecap:round;fill:none}
.rp-shotfig .pdot{stroke:rgba(10,16,22,.85);stroke-width:1.6}
.rp-shotfig .prl{font-weight:800;letter-spacing:.06em}
.rp-shotfig .prl-r{text-anchor:end}
.rp-shotfig image{filter:saturate(.94) contrast(1.04)}
/* 사진판은 사진 비율 그대로 — 높이를 고정하면 양옆에 검은 띠가 생긴다 */
.rp-views figure.rp-shotfig svg{height:auto}
.rp-views figure.rp-xray figcaption{margin:0;padding:8px 10px;background:#fff;
border-top:1px solid #e3e7ec;font-size:11.5px;color:var(--text-muted);text-align:left}
.rp-views figure.rp-xray figcaption b{display:block;font-size:12.5px;color:var(--heading)}
.rp-views figure.rp-xray figcaption span{display:block;margin-top:1px;font-size:11px;color:var(--text-faint)}
/* [본보기 사진 2026-08-26] 본인 사진이 없을 때 보여주는 인물 본보기 */
.rp-views figure.rp-samplefig{background:#fff;padding:0;position:relative}
.rp-views figure.rp-samplefig img{display:block;width:100%;aspect-ratio:3/4;height:auto;object-fit:cover;background:#eceff3}
.rp-sample-tag{position:absolute;top:8px;left:8px;font-size:10.5px;font-weight:700;background:rgba(22,50,79,.72);color:#fff;padding:3px 9px;border-radius:999px}
.rp-samplefig.rp-sample-miss img{visibility:hidden}
.rp-views figure.rp-samplefig figcaption{margin:0;padding:8px 10px;background:#fff;border-top:1px solid var(--line,#e5e7eb)}
.rp-views figure.rp-samplefig figcaption b{display:block;font-size:12.5px;color:var(--heading)}
.rp-views figure.rp-samplefig figcaption span{display:block;margin-top:1px;font-size:11px;color:var(--text-faint)}
/* [근육으로 보면 2026-08-26 은정님 — 시안 7-1] 스켈레톤 그림 + 근육 표시 카드 */
.rp-mleg{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--text-muted);margin:2px 0 10px}
.rp-mleg i{display:inline-block;width:13px;height:13px;border-radius:4px;vertical-align:-2px;margin-right:6px}
.rp-mleg i.r{background:rgba(192,57,43,.5);outline:1px solid #c0392b}
.rp-mleg i.b{background:rgba(43,108,176,.45);outline:1px solid #2b6cb0}
/* [칸 맞추기 2026-09-04 은정님] 세 카드의 높이를 맞춘다 */
.rp-mcards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:stretch}
.rp-mcard{display:flex;flex-direction:column}
.rp-mcard .rp-minfo{flex:1}
.rp-mcard{background:var(--surface);border-radius:12px;overflow:hidden;border:1px solid var(--line,#e5e7eb)}
.rp-mcard h4{margin:0;font-size:12.5px;font-weight:700;color:var(--heading);background:var(--surface-2,#f4f6f8);padding:8px 12px;border-bottom:1px solid var(--line,#e5e7eb);text-align:center}
.rp-mbone{position:relative;background:#fbfcfd}
.rp-mbone img{width:100%;display:block;aspect-ratio:3/4;object-fit:cover}
.rp-mbone svg{position:absolute;inset:0;width:100%;height:100%}
.rp-mbone .el-r{fill:rgba(192,57,43,.5);stroke:rgba(192,57,43,.9);stroke-width:.4}
.rp-mbone .el-b{fill:rgba(43,108,176,.45);stroke:rgba(43,108,176,.9);stroke-width:.4}
.rp-mbone .rp-mline{stroke:#b42318;stroke-width:1;vector-effect:non-scaling-stroke;stroke-width:4px;stroke-linecap:round}
/* [점이 검게 보이던 것 2026-09-07 저녁] svg 가 물려받은 어두운 테두리(stroke #36393f 2px)가
   작은 점을 통째로 덮어 검은 덩어리로 보였다. 테두리를 끈다. */
.rp-mbone .rp-mpt{fill:#b42318;stroke:none}
/* [후면 근육 2026-08-27] 척추 선 — 등뼈 줄기가 옆으로 휜 모양을 점선 곡선으로 */
.rp-mbone .rp-mspine{fill:none;stroke:#b42318;vector-effect:non-scaling-stroke;stroke-width:3px;stroke-dasharray:7 5;stroke-linecap:round;opacity:.88}
.rp-mlab{position:absolute;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:5px;color:#fff;line-height:1.3;max-width:46%;word-break:keep-all}
.rp-mlab.r{background:#c0392b}
.rp-mlab.b{background:#2b6cb0}
/* [좋아진 곳 2026-09-04 은정님 "후면도 좋아진 부분을 넣어줬으면"] 지난 달에 표시됐던 자리가 이번엔 고르게 나왔을 때 */
.rp-mbone .el-g{fill:rgba(17,138,94,.38);stroke:rgba(17,138,94,.92);stroke-width:.4}
/* [기울기 정밀하게 2026-09-07] 보통 칸도 보이게 — .55 는 «전혀 반영되어 보이지 않아» 였다 */
.rp-mbone .mild{opacity:.78}
.rp-mtilts{position:absolute;left:0;right:0;bottom:6px;display:flex;flex-direction:column;align-items:center;gap:3px;pointer-events:none}
.rp-mtilt{font-size:10.5px;font-weight:700;color:#b42318;background:rgba(255,255,255,.9);border:1px solid rgba(180,35,24,.35);padding:1px 7px;border-radius:5px;line-height:1.35;word-break:keep-all}
.rp-mtilt.g{color:#118a5e;border-color:rgba(17,138,94,.4)}
/* [격자 시험 2026-09-07] 뼈 그림 위 격자·모서리 글자 — render({boneGrid:true}) 일 때만 */
.rp-mbone .rp-grid{stroke:rgba(30,50,80,.13);stroke-width:1px;vector-effect:non-scaling-stroke}
.rp-mbone .rp-grid.mid{stroke:rgba(30,50,80,.32)}
.rp-mcorner{position:absolute;top:4px;font-size:13px;font-weight:800;letter-spacing:.06em;color:#ff6b73;line-height:1}
.rp-mcorner.l{left:7px}.rp-mcorner.r{right:7px}
.rp-shotfig .pgrid{stroke:rgba(255,255,255,.34);stroke-width:1px;vector-effect:non-scaling-stroke;fill:none}
/* [정면 중앙선 2026-09-07 은정님] 코·귀뼈·흉선·배꼽을 잇는 가운데 자 */
.rp-mbone .rp-mcenter{stroke:#1f5fa8;stroke-width:1.4px;vector-effect:non-scaling-stroke;stroke-dasharray:6 5;opacity:.8}
.rp-mbone .rp-msternum{stroke:#1f5fa8;stroke-width:2.4px;vector-effect:non-scaling-stroke;opacity:.9;stroke-linecap:round}
.rp-mbone .rp-mear,.rp-mbone .rp-mrib{stroke:#1f5fa8;stroke-width:1.8px;vector-effect:non-scaling-stroke;stroke-linecap:round;opacity:.9}
.rp-mbone .rp-mbonept{fill:#1f5fa8;stroke:#fff;stroke-width:.8px;vector-effect:non-scaling-stroke}
.rp-mbone .rp-mnose{fill:#fff;stroke:#1f5fa8;stroke-width:2px;vector-effect:non-scaling-stroke}
.rp-mbone .rp-mnose.off{fill:#b42318;stroke:#fff}
.rp-mtilt.c{color:#1f5fa8;border-color:rgba(31,95,168,.35);font-weight:600}
.rp-mbone .rp-mline.good{stroke:#118a5e}
.rp-mbone .rp-mpt.good{fill:#118a5e;stroke:none}
.rp-mbone .rp-mspine.good{stroke:#118a5e}
.rp-mlab.g{background:#118a5e}
.rp-mleg i.g{background:#118a5e}
.rp-minfo{padding:10px 12px 12px}
.rp-mitem{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px}
.rp-mitem:first-child{margin-top:0}
.rp-mitem span{font-size:13px;font-weight:700;color:var(--heading)}
.rp-mcopy{margin:4px 0 0;font-size:12px;line-height:1.55;color:var(--text-muted)}
.rp-mdelta{margin-top:4px;font-size:11.5px;color:var(--text-faint)}
.rp-mrest{margin:12px 0 0;background:var(--surface);border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:11px 14px;font-size:12.5px;line-height:1.6;color:var(--text-muted)}
.rp-mrest b{color:var(--heading)}
.rp-mnote{margin:10px 0 0;font-size:11px;color:var(--text-faint)}
.rp-mid{display:grid;grid-template-columns:minmax(210px,.85fr) 1.15fr;gap:18px;align-items:start}
.rp-lead{font-size:19px;font-weight:800;color:var(--heading);letter-spacing:-.5px;line-height:1.4}
.rp-stage{margin-top:12px;display:grid;gap:5px}
.rp-stage div{font-size:12px;color:var(--text-faint);background:var(--surface);border-radius:8px;padding:7px 11px}
.rp-stage div.hit{background:var(--brand-lime);color:var(--heading);font-weight:700}
.rp-why{margin-top:12px;font-size:12.5px;color:var(--text-muted)}
.rp-qc{margin-top:14px;border:1px solid var(--line);border-radius:11px;padding:12px 13px}
.rp-qh{font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--text-faint);margin-bottom:8px}
.rp-qr{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--text-muted);margin-top:5px}
.rp-qr b{font-size:16px;font-weight:800;color:var(--heading)}
.rp-qr i{font-style:normal;font-size:11px;color:var(--text-faint);font-weight:600}
.rp-qbar{height:5px;border-radius:3px;background:var(--surface);overflow:hidden;margin:6px 0 2px}
.rp-qbar span{display:block;height:100%;background:var(--brand-yellow)}
.rp-table{width:100%;border-collapse:collapse;font-size:12.5px}
.rp-table th{text-align:left;font-size:10.5px;font-weight:800;letter-spacing:.08em;color:var(--text-faint);
padding:0 8px 7px;border-bottom:1px solid var(--line)}
.rp-table th.rp-c,.rp-table td.rp-c{width:118px}
.rp-table th.rp-g,.rp-table td.rp-g{width:92px;text-align:right}
.rp-table td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.rp-table tr:last-child td{border-bottom:0}
.rp-nm{font-weight:700;color:var(--heading)}
.rp-nm span{display:block;font-weight:500;font-size:11.5px;color:var(--text-muted);margin-top:2px}
.rp-seg{display:inline-flex;gap:3px;vertical-align:middle}
.rp-seg i{width:16px;height:7px;border-radius:2px;background:#e8ebef;display:block}
/* [세 칸 방향 2026-09-07 은정님 "양호 표시는 3개 칸을 다 채워주고, 주의는 1칸만 채워 주고 붉은색 — 처음 봤을때 이해안됐어"]
   칸이 많이 찰수록 좋은 것으로 읽힌다. 양호 = 세 칸 초록 · 보통 = 두 칸 노랑 · 주의 = 한 칸 빨강. (옛날엔 반대였다) */
.rp-seg.l1 i{background:#7d9a6a}
.rp-seg.l2 i:nth-child(1),.rp-seg.l2 i:nth-child(2){background:#e0b13d}
.rp-seg.l3 i:nth-child(1){background:#d8564d}
.rp-lvl{display:inline-block;margin-left:7px;font-size:11.5px;font-weight:700;color:var(--text-muted)}
.rp-g{color:var(--text-muted)}
.rp-better{color:#4e7a3c;font-weight:800}
.rp-worse{color:#a84d00;font-weight:800}
.rp-blank{color:var(--text-faint)}
.rp-unmeasured .rp-nm{color:var(--text-faint)}
.rp-plan{position:relative;border-radius:14px;overflow:hidden;background:var(--surface)}
.rp-inner{padding:16px 18px}
.rp-plan .rp-t{font-size:15px;font-weight:800;color:var(--heading);letter-spacing:-.3px}
.rp-plan .rp-d{font-size:12.5px;color:var(--text-muted);margin-top:4px}
.rp-plan ol{margin:12px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;counter-reset:rp}
.rp-plan li{counter-increment:rp;background:#fff;border:1px solid var(--line);border-radius:10px;
padding:10px 11px;font-size:12px;font-weight:700;color:var(--heading);line-height:1.5}
.rp-plan li::before{content:counter(rp);display:block;font-size:10.5px;font-weight:800;color:var(--text-faint);margin-bottom:4px}
.rp-by{margin-top:11px;font-size:12px;color:var(--text-muted)}
.rp-by b{color:var(--heading)}
.rp-plan.is-locked .rp-inner{filter:blur(6px);opacity:.75;user-select:none;pointer-events:none}
.rp-veil{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
text-align:center;padding:16px;background:linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,.72))}
.rp-vk{font-size:15px;font-weight:800;color:var(--heading);letter-spacing:-.3px}
.rp-vs{font-size:12.5px;color:var(--text-muted);margin-top:5px}
.rp-shoot{border:1px dashed var(--line);border-radius:12px;padding:14px 16px}
.rp-shoot .rp-t{font-size:13.5px;font-weight:800;color:var(--heading);display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.rp-shoot .rp-t span{font-size:11.5px;font-weight:600;color:var(--text-faint)}
.rp-shoot ul{margin:9px 0 0;padding-left:16px;font-size:12px;color:var(--text-muted);line-height:1.75}
.rp-shoot ul b{color:var(--heading)}
.rp-ft{padding:14px 24px 18px;border-top:1px solid var(--line);font-size:11px;color:var(--text-faint);line-height:1.7}
.rp-ft b{color:var(--text-muted)}
@media(max-width:760px){
  .rp-mid{grid-template-columns:1fr}
  .rp-plan ol{grid-template-columns:1fr 1fr}
  .rp-views{gap:8px}
  .rp-table th.rp-g,.rp-table td.rp-g{width:74px}
}
@media print{
  .rp-sheet{border:0;border-radius:0}
  .rp-plan.is-locked .rp-inner{filter:none;opacity:1}
  .rp-veil{display:none}
}

/* ── 연락처 화면 (퍼널의 유일한 문) 2026-08-05 ─────────────────────
   동의는 네 개를 따로 둔다. '전체 동의'는 보조 수단이며, 개별 체크가 항상 함께 보인다.
   선택 동의는 진입 조건이 아니다 — 체크하지 않아도 제출된다. */
.lead-card{max-width:560px}
.lead-form{margin-top:20px;display:grid;gap:12px}
.lead-field{display:grid;gap:6px}
.lead-field span{font-size:13.5px;font-weight:700;color:var(--heading)}
.lead-field input{height:52px;border:1.5px solid var(--line);border-radius:12px;padding:0 15px;
font-size:16px;font-family:inherit;color:var(--text);background:#fff}
.lead-field input:focus{outline:none;border-color:var(--heading)}
.lead-field input.is-bad{border-color:var(--red);background:var(--red-bg)}
.lead-consent{border:1px solid var(--line);border-radius:14px;padding:6px 4px;margin:6px 0 0}
.lead-consent legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.lead-check{display:grid;grid-template-columns:22px 1fr;gap:11px;align-items:start;
padding:12px 13px;cursor:pointer;border-radius:10px}
.lead-check:hover{background:var(--surface-alt)}
.lead-check input{width:20px;height:20px;margin:1px 0 0;accent-color:var(--action);cursor:pointer}
.lead-check b{display:block;font-size:13.5px;font-weight:700;color:var(--heading)}
.lead-check em{display:block;font-style:normal;font-size:12px;color:var(--text-muted);
line-height:1.6;margin-top:3px}
.lead-check-all{background:var(--brand-lime);margin:2px 4px 6px;border-radius:10px}
.lead-check-all:hover{background:var(--brand-yellow)}
.lead-check-all em{color:#5c5300}
.lead-error{margin:2px 0 0;font-size:13px;color:var(--red);background:var(--red-bg);
border:1px solid var(--red-line);border-radius:10px;padding:10px 12px}
.lead-error[hidden]{display:none}
.lead-alt{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13px;color:var(--text-muted)}
.lead-alt a{font-weight:700;color:var(--link)}
.lead-note{margin-top:10px;font-size:11.5px;color:var(--text-faint)}

/* ── 얕은 추천 2026-08-05 ──────────────────────────────────────────
   무엇을(열림) / 어떻게·얼마나(잠김). 잠긴 쪽도 실제로 만들어 둔 내용을 가린다. */
.shallow-reco{margin-top:26px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 24px 20px}
.shallow-reco[hidden]{display:none}
.sr-head h2{font-size:20px;font-weight:800;color:var(--heading);letter-spacing:-.4px;margin:6px 0 0}
.sr-head p{font-size:13.5px;color:var(--text-muted);margin:5px 0 0}
.sr-open{margin-top:16px;display:grid;gap:10px}
.sr-line{background:var(--surface);border-radius:12px;padding:13px 15px}
.sr-line b{display:block;font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--text-faint);margin-bottom:5px}
.sr-line strong{font-size:15px;font-weight:800;color:var(--heading);display:block;letter-spacing:-.3px}
.sr-line span{display:block;font-size:13px;color:var(--text-muted);margin-top:4px}
.sr-moves{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sr-move{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.sr-move strong{font-size:14.5px;font-weight:800;color:var(--heading);display:block}
.sr-move span{display:block;font-size:12.5px;color:var(--text-muted);margin-top:4px}
.sr-video{display:flex;gap:12px;align-items:center;background:var(--surface);border-radius:12px;padding:13px 15px}
.sr-video i{width:44px;height:44px;border-radius:11px;background:var(--brand-lime);display:grid;place-items:center;flex:none}
.sr-video i svg{width:18px;height:18px;fill:var(--heading)}
.sr-video div strong{font-size:14px;font-weight:800;color:var(--heading);display:block}
.sr-video div span{font-size:12.5px;color:var(--text-muted)}
.sr-locked{position:relative;margin-top:14px;border-radius:14px;overflow:hidden;background:var(--surface)}
.sr-locked-inner{padding:16px 18px;filter:blur(6px);opacity:.75;user-select:none;pointer-events:none}
.sr-locked-inner table{width:100%;border-collapse:collapse;font-size:13px}
.sr-locked-inner td{padding:7px 6px;border-bottom:1px solid var(--line);color:var(--heading)}
.sr-locked-inner td:last-child{text-align:right;font-weight:700}
.sr-veil{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
text-align:center;gap:6px;padding:18px;background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,.8))}
.sr-veil b{font-size:15.5px;font-weight:800;color:var(--heading);letter-spacing:-.3px}
.sr-veil span{font-size:12.5px;color:var(--text-muted);max-width:380px}
.sr-cta{margin-top:8px;display:inline-flex;align-items:center;min-height:46px;padding:12px 26px;border-radius:999px;
background:var(--action);color:#fff;font-size:14.5px;font-weight:700;text-decoration:none}
.sr-note{margin:14px 0 0;font-size:11.5px;color:var(--text-faint)}
@media(max-width:600px){.sr-moves{grid-template-columns:1fr}.shallow-reco{padding:18px 16px 16px}}

/* [A4 한 장 2026-08-06] 종이 한 장에 맞추기 위한 압축.
   뒤에 오는 규칙에 밀리지 않도록 파일 끝에 둔다. */
.rp-sheet{width:794px;max-width:100%;min-height:1123px;display:flex;flex-direction:column}
.rp-body{flex:1;padding:11px 22px 12px;display:grid;gap:7px;align-content:start}
.rp-hd{padding:12px 22px 10px}
.rp-hd h3{font-size:19px;margin:5px 0 0}
.rp-sec{margin:0;padding:4px 12px;font-size:11px}
.rp-top{display:grid;grid-template-columns:1fr 238px;gap:11px;align-items:start}
.rp-views{gap:8px}
.rp-side .rp-lead{font-size:16.5px;line-height:1.34}
.rp-side .rp-stage{margin-top:8px;gap:4px}
.rp-side .rp-stage div{font-size:11px;padding:5px 9px}
.rp-side .rp-why{margin-top:8px;font-size:11px;line-height:1.55}
.rp-side .rp-qc{margin-top:9px;padding:9px 10px;border-radius:9px}
.rp-side .rp-qh{margin-bottom:5px}
.rp-side .rp-qr{font-size:11.5px;margin-top:3px}
.rp-side .rp-qr b{font-size:14px}
.rp-views figure.rp-shotfig figcaption,.rp-views figure.rp-xray figcaption{padding:5px 8px}
.rp-views figure.rp-xray figcaption b{font-size:11.5px}
.rp-views figure.rp-xray figcaption span{font-size:10px}
/* 표는 한 줄짜리로 — 이름과 설명을 같은 줄에 둔다. 두 줄이면 종이를 넘긴다. */
.rp-table{font-size:11.5px}
.rp-table td{padding:3px 7px}
.rp-table th{padding:0 7px 4px;font-size:10px}
/* td 에 display:flex 를 주면 표의 열 너비 계산이 깨져 글자가 3줄로 접힌다.
   셀은 셀로 두고 설명만 같은 줄에 붙인다. */
.rp-nm span{display:inline;font-size:10.5px;margin:0 0 0 8px;color:var(--text-muted)}
.rp-seg i{width:13px;height:6px}
.rp-lvl{margin-left:6px;font-size:11px}
.rp-table th.rp-c,.rp-table td.rp-c{width:104px}
.rp-table th.rp-g,.rp-table td.rp-g{width:82px}
.rp-plan .rp-inner{padding:8px 11px}
.rp-plan .rp-t{font-size:13.5px}
.rp-plan .rp-d{font-size:11.5px}
.rp-plan ol{margin-top:7px;gap:6px}
.rp-plan li{padding:6px 8px;font-size:10.5px;line-height:1.4}
.rp-by{margin-top:6px;font-size:10.5px}
/* '다음에 잴 때' 는 가로 한 줄로 — 세로로 쌓으면 종이를 넘긴다 */
.rp-shoot{padding:7px 11px;display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.rp-shoot .rp-t{font-size:12px}
.rp-shoot ul{margin:0;padding:0;list-style:none;display:flex;gap:12px;flex-wrap:wrap;font-size:11px}
.rp-shoot li{position:relative;padding-left:9px}
.rp-shoot li::before{content:"";position:absolute;left:0;top:7px;width:3px;height:3px;border-radius:50%;background:#b8bec6}
.rp-ft{padding:8px 22px 10px;font-size:9.5px;line-height:1.55}
@media(max-width:780px){
  .rp-sheet{width:auto;min-height:0}
  .rp-top{grid-template-columns:1fr}
  .rp-body{padding:14px 14px 16px}
  .rp-shoot{display:block}
  .rp-shoot ul{display:block;margin-top:7px}
}
@page{size:A4;margin:0}
/* 표는 이제 단독이라 2단 그리드가 아니다 — 원래 규칙이 뒤에 있어 폭이 300px로 눌렸었다 */
.rp-mid{display:block}
.rp-mid > table{width:100%}
@page{size:A4;margin:0}

/* [흐림 2026-08-06] 연락처 전 결과지 — 있는 것을 흐리게 덮는다. 없는 것을 가리는 척하지 않는다. */
.rp-sheet.is-teaser{position:relative}
.rp-sheet.is-teaser .rp-body,.rp-sheet.is-teaser .rp-ft{filter:blur(7px);opacity:.72;user-select:none;pointer-events:none}
.rp-lock{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;
padding:24px;background:linear-gradient(180deg,rgba(255,255,255,.34) 0%,rgba(255,255,255,.72) 34%,rgba(255,255,255,.86) 100%)}
.rp-lock-in{text-align:center;max-width:340px}
.rp-lock-k{font-size:11.5px;font-weight:800;letter-spacing:.12em;color:var(--text-faint)}
.rp-lock-t{margin-top:10px;font-size:22px;font-weight:800;color:var(--heading);letter-spacing:-.6px;line-height:1.36}
.rp-lock-d{margin-top:12px;font-size:13px;color:var(--text-muted);line-height:1.68}
.rp-lock-b{margin-top:18px;height:46px;padding:0 26px;border:0;border-radius:23px;cursor:pointer;
background:#1b2a44;color:#fff;font-size:14px;font-weight:800;letter-spacing:-.2px}
.rp-lock-b:hover{background:#25375a}
@media print{.rp-sheet.is-teaser .rp-body,.rp-sheet.is-teaser .rp-ft{filter:none;opacity:1}.rp-lock{display:none}}

/* [추천 두 갈래 2026-08-06] 왼쪽=원하시는 것 · 오른쪽=재보고 권하는 것 */
.rp-two{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.rp-pc{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 11px}
.rp-pc--care{border-color:#c8d3e6;background:#f7f9fd}
.rp-pc-h{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.rp-pc-h b{font-size:12.5px;font-weight:800;color:var(--heading)}
.rp-pc--care .rp-pc-h b{color:#1b2a44}
.rp-pc-h span{font-size:10px;color:var(--text-faint)}
.rp-pc-a{margin-top:6px;font-size:14px;font-weight:800;color:var(--heading);letter-spacing:-.3px}
.rp-pc--care .rp-pc-a{color:#1b2a44}
.rp-pc-m{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px;counter-reset:pm}
.rp-pc-m li{counter-increment:pm;position:relative;padding-left:16px;font-size:11.5px;line-height:1.45}
.rp-pc-m li::before{content:counter(pm);position:absolute;left:0;top:0;width:12px;height:12px;
border-radius:50%;background:var(--surface);color:var(--text-faint);font-size:8px;font-weight:800;
display:flex;align-items:center;justify-content:center}
.rp-pc--care .rp-pc-m li::before{background:#e3eaf6;color:#3d5478}
.rp-pc-m strong{display:block;font-weight:700;color:var(--heading)}
.rp-pc-m span{display:block;color:var(--text-muted);font-size:10.5px;margin-top:1px}
.rp-pc-d{margin-top:8px;padding-top:7px;border-top:1px dashed var(--line);font-size:11px;
font-weight:700;color:var(--text-muted)}
.rp-same{margin-top:8px;font-size:11px;color:var(--text-muted)}
@media(max-width:780px){.rp-two{grid-template-columns:1fr}}

/* 위쪽 .rp-plan ol / .rp-plan li 규칙(4단 카드)이 이 목록에도 걸려 글자가 세로로 접혔다.
   두 갈래 카드 안의 목록은 그 규칙에서 빼낸다. */
.rp-plan .rp-pc-m{display:grid;grid-template-columns:1fr;gap:6px;margin:8px 0 0;padding:0;counter-reset:pm}
.rp-plan .rp-pc-m li{counter-increment:pm;background:transparent;border:0;border-radius:0;
padding:0 0 0 17px;font-size:11.5px;font-weight:400;line-height:1.45;color:var(--text-muted)}
.rp-plan .rp-pc-m li::before{content:counter(pm);position:absolute;left:0;top:1px;margin:0;
width:13px;height:13px;border-radius:50%;background:var(--surface);color:var(--text-faint);
font-size:8.5px;font-weight:800;display:flex;align-items:center;justify-content:center}
.rp-plan .rp-pc--care .rp-pc-m li::before{background:#e3eaf6;color:#3d5478}
.rp-plan .rp-pc-m strong{display:block;font-weight:700;font-size:12px;color:var(--heading)}
.rp-plan .rp-pc-m span{display:block;color:var(--text-muted);font-size:10.5px;margin-top:1px}

/* [보고서 구성 2026-08-06] 설문 요약 — 한 줄에 훑고 지나가는 칸 */
.rp-survey{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.rp-survey > div{background:var(--surface);border-radius:8px;padding:7px 9px;min-width:0}
.rp-survey span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.06em;color:var(--text-faint)}
.rp-survey b{display:block;margin-top:2px;font-size:11.5px;font-weight:700;color:var(--heading);
line-height:1.35;word-break:keep-all}
@media(max-width:780px){.rp-survey{grid-template-columns:1fr 1fr}}

/* [운동 추천 별지 2026-08-06] 보고서 아래 — 이모지 대신 이미지 자리를 크게.
   글은 팩트만(동작 이름 + 횟수). 코칭 문장은 수업에서 한다. */
.shallow-reco{margin-top:18px;padding:0;background:none;border:0}
.ex-wrap{position:relative;width:794px;max-width:100%;margin:0 auto;background:#fff;
border:1px solid var(--line);border-radius:16px;padding:20px 24px 22px}
.ex-head h3{margin:0;font-size:19px;font-weight:800;color:var(--heading);letter-spacing:-.4px}
.ex-grid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ex-card{border:1px solid var(--line);border-radius:13px;padding:14px 15px 15px;background:#fff}
.ex-card--care{background:#f7f9fd;border-color:#c8d3e6}
.ex-top{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.ex-top b{font-size:13.5px;font-weight:800;color:var(--heading)}
.ex-card--care .ex-top b{color:#1b2a44}
.ex-top span{font-size:11px;color:var(--text-faint)}
.ex-area{margin-top:6px;font-size:19px;font-weight:800;color:var(--heading);letter-spacing:-.4px}
.ex-card--care .ex-area{color:#1b2a44}
/* 이미지 자리 — 4:5 세로. 동작 사진은 세로가 잘 맞는다 */
/* [운동 사진 2026-08-26 은정님] 운동 사진은 가로로 누운 자세다. 세로 틀에 담으면
   얼굴과 발이 잘린다 — 사진 원래 비율(3:2)로 두고 한 줄에 하나씩 크게 본다. */
.ex-shots{margin-top:12px;display:grid;grid-template-columns:1fr;gap:12px}
.ex-shot{margin:0}
.ex-shot-img{position:relative;aspect-ratio:3/2;border-radius:10px;overflow:hidden;
background:#eef1f5;border:1px solid var(--line)}
.ex-card--care .ex-shot-img{background:#e9eef7;border-color:#cfd8e8}
.ex-shot-img img{width:100%;height:100%;object-fit:cover;display:block}
.ex-shot-ph{display:none}
.ex-shot.is-empty .ex-shot-ph{position:absolute;inset:0;display:flex;flex-direction:column;
align-items:center;justify-content:center;gap:5px;text-align:center;padding:8px;
border:1px dashed #b9c2cf;border-radius:10px}
.ex-shot-ph b{font-size:11.5px;font-weight:800;color:#8b95a3}
.ex-shot-ph i{font-style:normal;font-size:10px;color:#a5aeba;word-break:break-all}
.ex-shot figcaption{margin-top:8px}
.ex-shot figcaption strong{display:block;font-size:13.5px;font-weight:700;color:var(--heading);
line-height:1.35;word-break:keep-all}
.ex-shot figcaption span{display:block;margin-top:3px;font-size:12px;font-weight:700;color:var(--text-muted)}
.ex-dose{margin-top:13px;padding-top:11px;border-top:1px dashed var(--line);
font-size:12.5px;font-weight:700;color:var(--text-muted)}
.ex-by{margin-top:14px;font-size:12.5px;color:var(--text-muted)}
.ex-by b{color:var(--heading)}
/* [가리는 모양 2026-09-09 은정님] 통째로 흐리게 하던 것을 바꾼다 —
   **양쪽 칸의 첫 운동 하나는 사진·이름·횟수까지 그대로 보여준다(표지).**
   나머지 운동과 처방 시간만 흐리게. 「무엇이 들어 있는지」는 보이고, 나머지를 궁금하게 한다.
   가리는 띠(ex-veil)도 화면 전체가 아니라 **아래쪽 띠**로 내려야 첫 운동이 안 가려진다. */
.ex-wrap.is-locked .ex-grid{filter:none;opacity:1}
.ex-wrap.is-locked .ex-shot:nth-child(n+2){filter:blur(7px);opacity:.7;user-select:none;pointer-events:none}
.ex-wrap.is-locked .ex-dose{filter:blur(5px);opacity:.7;user-select:none;pointer-events:none}
.ex-veil{position:absolute;left:0;right:0;bottom:0;top:auto;height:132px;display:flex;flex-direction:column;
align-items:center;justify-content:flex-end;text-align:center;padding:20px;border-radius:0 0 16px 16px;
background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.86) 42%,rgba(255,255,255,.97))}
.ex-veil-k{font-size:19px;font-weight:800;color:var(--heading);letter-spacing:-.4px}
.ex-veil-d{margin-top:6px;font-size:13px;color:var(--text-muted)}
@media(max-width:780px){.ex-wrap{width:auto;padding:16px 16px 18px}.ex-grid{grid-template-columns:1fr}}

/* [A4 여백 2026-08-06] 운동 추천을 별지로 빼면서 아래가 비었다.
   사진을 조금 키우고 남은 여백은 구간마다 고르게 나눈다 — 한쪽에 몰리면 미완성처럼 보인다. */
.rp-body{align-content:stretch;grid-template-rows:auto auto auto auto auto auto 1fr}
.rp-top{grid-template-columns:1fr 216px}
.rp-views figure.rp-shotfig figcaption,.rp-views figure.rp-xray figcaption{padding:7px 9px}
.rp-shoot{align-self:end}

/* [사진 크게 2026-08-06] 요약을 오른쪽 칸에서 사진 아래 가로 띠로 내리고
   사진 세 장이 폭을 다 쓰게 한다. 사진이 이 보고서의 주인공이다. */
.rp-top{display:block}
.rp-views{grid-template-columns:repeat(3,1fr);gap:10px}
.rp-side{margin-top:10px;display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:12px;align-items:start}
.rp-side .rp-lead{font-size:17px;line-height:1.34}
.rp-side .rp-stage{margin-top:0}
.rp-side .rp-why{margin-top:0;grid-column:1;font-size:11px}
.rp-side .rp-qc{margin-top:0}
@media(max-width:780px){.rp-side{grid-template-columns:1fr}}
.rp-side{grid-template-columns:1.25fr 1fr 1fr 1.1fr}
.rp-side .rp-why{grid-column:auto}
/* A4 한 장에 딱 맞추기 위한 마지막 조정 */
.rp-views{max-width:700px;margin:0 auto}
.rp-body{gap:6px}
/* 사진마다 잘린 높이가 달라 아래에 어두운 띠가 남았다 — 칸을 늘리지 말고 각자 크기대로 둔다 */
.rp-views{align-items:start}
.rp-views figure.rp-shotfig{background:#fff}

/* [사진 2026-08-09] 결과지 아래 한 줄 — 지금 사진을 어떻게 하고 있는지와 지우는 길 */
.photo-note { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
  margin: 14px auto 0; max-width: 794px; padding: 13px 16px;
  border: 1px solid var(--line, #dbe2e8); border-radius: 12px; background: var(--surface-alt, #f6f8fa); }
.photo-note span { font-size: 14px; line-height: 1.7; color: var(--text-muted, #5b6068); }
.photo-note button { min-height: 40px; padding: 0 16px; border: 1px solid var(--line, #dbe2e8);
  border-radius: 20px; background: #fff; color: #33475b; font: 700 14px/1 inherit; cursor: pointer; }
.photo-note button:active { background: #eef2f5; }

/* [2026-08-23 은정님] 남긴 정보를 보거나 지우고 싶을 때 말할 곳 — 동의 바로 아래에 둔다. */
.lead-consent-contact{margin:10px 0 0;font-size:13px;line-height:1.7;color:#5c6773}
.lead-consent-contact a{color:#2f6b12;font-weight:700;text-decoration:underline}

/* [저장 실패 알림 2026-08-23] 연락처가 저장되지 않았을 때 회원에게 조용히, 그러나 분명히 알린다. */
#lead-hold-notice{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:9999;
  max-width:min(560px,92vw);display:flex;gap:12px;align-items:flex-start;
  background:#2b2113;border:1px solid #6b5320;border-radius:12px;padding:12px 14px;
  color:#f2e2c2;font-size:13.5px;line-height:1.6;box-shadow:0 8px 28px rgba(0,0,0,.35)}
#lead-hold-notice a{color:#9fe870;font-weight:700}
#lead-hold-notice button{flex:none;border:0;border-radius:8px;padding:6px 10px;cursor:pointer;
  background:#4a3c1e;color:#f2e2c2;font:700 12px/1 inherit}

/* [2026-08-23 은정님] 수술·시술 한 줄 적는 칸 */
.surgery-note { margin-top: 14px; }
.surgery-note label {
  display: block;
  font-weight: 700;
  font-size: 0.95rem;
  margin-bottom: 8px;
}
.surgery-note input {
  width: 100%;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: white;
  font: inherit;
  font-size: 0.95rem;
}
.surgery-note input:focus-visible {
  outline: 2px solid var(--ink, #141a21);
  outline-offset: 1px;
}
.surgery-hint {
  margin: 8px 2px 0;
  font-size: 0.8rem;
  line-height: 1.6;
  color: var(--muted, #6f7a86);
}

/* [미리보기 열쇠 2026-08-26 은정님] 은정님이 ?open=1 로 열어 둔 동안만 뜨는 표.
   회원 화면에는 절대 나오지 않는다 — 이 표가 보이면 «내가 지금 문을 열어 둔 상태» 라는 뜻이다. */
.preview-open-mark{position:fixed;left:12px;bottom:12px;z-index:9999;
font-size:11px;font-weight:700;letter-spacing:-.2px;color:#fff;
background:rgba(27,42,68,.82);border-radius:999px;padding:6px 12px;
box-shadow:0 2px 10px rgba(20,26,38,.22);pointer-events:none;user-select:none}
@media print{.preview-open-mark{display:none}}

/* ── 결과 화면 요금 칸 2026-09-14 은정님 «나+다로 수정해보자» ─────────────
   랜딩 첫 화면에서 「요금 보기」를 뺀 대신, 돈 이야기를 결과 화면 맨 끝으로 옮겼다.
   랜딩 `.plans` 와 **같은 세 가지**를 같은 순서·같은 값으로 둔다 — 두 곳이 다르면 신뢰가 깨진다.
   ⚠️ 「운동보다 확인이 먼저예요」 결과에는 뜨지 않는다 (app.js 에서 hidden 을 유지한다). */
.result-plans{margin-top:22px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 24px 20px}
.result-plans[hidden]{display:none}
.rpl-head h2{font-size:20px;font-weight:800;color:var(--heading);letter-spacing:-.4px;margin:6px 0 0}
.rpl-head p{font-size:13.5px;color:var(--text-muted);margin:6px 0 0;word-break:keep-all}
.rpl-grid{margin-top:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.rpl-card{position:relative;border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;background:#fff}
.rpl-card--main{border:2px solid var(--heading);background:var(--surface)}
.rpl-flag{position:absolute;top:-10px;left:18px;font-size:11px;font-weight:800;letter-spacing:.02em;
background:var(--heading);color:#fff;border-radius:999px;padding:3px 10px}
.rpl-card h3{margin:0;font-size:15.5px;font-weight:800;color:var(--heading);letter-spacing:-.3px}
.rpl-price{margin-top:8px;font-size:23px;font-weight:800;color:var(--heading);letter-spacing:-.6px;
font-variant-numeric:tabular-nums}
.rpl-price i{font-style:normal;font-size:13px;font-weight:700;color:var(--text-muted);margin-left:2px}
.rpl-per{margin-top:3px;font-size:12.5px;color:var(--text-muted)}
.rpl-card ul{margin:13px 0 0;padding:0;list-style:none;display:grid;gap:7px}
.rpl-card li{position:relative;padding-left:15px;font-size:13px;color:var(--heading);line-height:1.55;word-break:keep-all}
.rpl-card li::before{content:"";position:absolute;left:2px;top:8px;width:5px;height:5px;border-radius:50%;
background:var(--text-faint)}
.rpl-card--main li::before{background:var(--heading)}
.rpl-cta{margin-top:18px;display:inline-flex;align-items:center;justify-content:center;min-height:48px;
padding:12px 28px;border-radius:999px;background:var(--action);color:#fff;font-size:15px;font-weight:700;
text-decoration:none}
.rpl-note{margin:12px 0 0;font-size:11.5px;color:var(--text-faint);line-height:1.65;word-break:keep-all}
.rpl-note + .rpl-note{margin-top:5px}
@media(max-width:760px){
  .rpl-grid{grid-template-columns:1fr;gap:16px}
  .result-plans{padding:20px 16px 18px}
  .rpl-cta{display:flex;width:100%}
}


/* [2026-09-15 은정님 «길을 이어줘»] 운동 라이브러리 길 밑의 작은 알림.
   ⚠️ 이 한 줄이 없으면 회원이 눌러 들어갔다가 「준비 중」만 보고 실망한다. */
.library-note{display:block;margin-top:8px;font-size:12.5px;line-height:1.5;color:#6b7280;text-align:center}
.library-note b{color:#374151;font-weight:700}
