/* ============================================================
   case.css — 간호사례 페이지 전용 스타일
   ============================================================ */

/* ── Case Main ────────────────────────────────────────────── */
.case-main { background: var(--color-bg); padding-top: 88px; padding-bottom: 0; }
.case-intro {
  text-align: left;
  margin-bottom: 0;
}
.case-intro .section-sub {
  font-size: 1.125rem;
  max-width: 760px;
  margin: 0;
  line-height: 1.8;
}

/* ── Opening Story ───────────────────────────────────────── */
.case-opening { color: var(--color-text-main); padding: 0; }
.case-opening-hero {
  position: relative;
  padding: 0 clamp(48px, 6vw, 84px) clamp(48px, 6vw, 84px);
  color: var(--color-text-main);
}
.case-opening-label {
  display: block;
  margin-bottom: 18px;
  color: var(--color-primary-dark);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.case-opening-hero h2 {
  position: relative;
  z-index: 1;
  max-width: 850px;
  font-size: clamp(2.15rem, 5vw, 4.25rem);
  font-weight: 800;
  line-height: 1.24;
  letter-spacing: -.04em;
}
.case-opening-hero h2 em { color: var(--color-primary-dark); font-style: normal; }
.case-opening-lead {
  position: relative;
  z-index: 1;
  margin-top: 28px;
  color: var(--color-text-sub);
  font-size: clamp(1rem, 1.8vw, 1.25rem);
  line-height: 1.8;
}
.case-role {
  display: grid;
  grid-template-columns: minmax(260px, .75fr) minmax(0, 1.6fr);
  gap: clamp(48px, 8vw, 112px);
  padding: 0 clamp(0px, 3vw, 42px) 44px;
}
.case-role-heading h3,
.case-stories-heading h3 {
  margin-top: 12px;
  color: var(--color-text-main);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -.03em;
}
.case-stories-heading .section-tag { margin-bottom: 6px; }
.case-stories-heading h3 { margin-top: 2px; }
.case-role-copy { display: grid; gap: 20px; }
.case-role-copy p,
.case-stories-copy p {
  color: var(--color-text-sub);
  font-size: 1.0625rem;
  line-height: 1.9;
}
.case-care-icon {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #fff;
  color: var(--color-primary-dark);
  box-shadow: var(--shadow-xs);
}
.case-continuity {
  margin-top: -8px;
  padding: 0 clamp(12px, 4vw, 56px);
}
.case-care-flow {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  margin-top: 0;
}
.case-care-step {
  position: relative;
  min-width: 0;
  text-align: center;
}
.case-care-step:not(:last-child)::after {
  content: '';
  position: absolute;
  top: 24px;
  left: calc(50% + 38px);
  width: calc(100% - 76px);
  border-top: 1px solid var(--color-border);
}
.case-care-icon {
  width: 68px;
  height: 68px;
  margin: 0 auto 18px;
  border: 1px solid rgba(45, 95, 113, .12);
  box-shadow: 0 14px 30px rgba(27, 58, 92, .14), 0 4px 10px rgba(27, 58, 92, .08);
  transform: translateY(-10px);
}
.case-care-step span {
  display: block;
  color: var(--color-primary);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .1em;
}
.case-care-step strong {
  display: block;
  margin-top: 3px;
  color: var(--navy-dark);
  font-size: .9rem;
  line-height: 1.45;
}
.case-stories-intro {
  display: grid;
  grid-template-columns: minmax(260px, .75fr) minmax(0, 1.6fr);
  align-items: center;
  gap: clamp(48px, 8vw, 112px);
  margin-top: clamp(72px, 9vw, 120px);
  padding: clamp(38px, 5vw, 64px);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}
.case-stories-copy {
  display: grid;
  gap: 18px;
  margin-top: 28px;
}
.case-stories-copy strong { color: var(--navy-dark); font-weight: 800; }
.case-stories-photo-notice {
  grid-column: 1 / -1;
  margin: 28px 0 0;
  color: var(--color-text-muted);
  font-size: .8125rem;
  text-align: center;
}

/* ── Case List: Alternating Image / Text ─────────────────── */
.case-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 72px 0 96px;
}

.case-row {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 88px);
  align-items: start;
  padding: 56px 0;
  border-bottom: 1px solid var(--color-border);
}
.case-row:first-child { padding-top: 0; }
.case-row:last-child { border-bottom: 0; padding-bottom: 0; }
body[data-page="case"] .case-row:last-child {
  padding-bottom: calc(var(--space-section-medium) * 2);
}

/* 홀수/짝수 행마다 이미지·텍스트 좌우 교차 */
.case-row:nth-child(even) .case-row-media { order: 2; }
.case-row:nth-child(even) .case-row-content { order: 1; }

/* ── Case Media ───────────────────────────────────────────── */
.case-row-media {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: 20px;
  overflow: hidden;
  background: var(--color-surface-soft);
  border: 1px solid var(--color-border);
}
.case-row-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.case-row-media img.case-image-diabetic-foot {
  object-position: center 35%;
}
.case-img-fallback {
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--color-text-muted);
  height: 100%;
}
.case-img-fallback span { font-size: 1rem; font-weight: 600; }
.case-row-media.img-error img { display: none; }
.case-row-media.img-error .case-img-fallback { display: flex; }
.case-photo-note {
  position: absolute;
  right: 12px;
  bottom: 12px;
  left: 12px;
  z-index: 2;
  width: fit-content;
  max-width: calc(100% - 24px);
  margin: 0;
  padding: 0;
  background: transparent;
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.4;
}

/* ── Case Content ─────────────────────────────────────────── */
.case-row-content {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.case-index {
  font-size: 0.9rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-primary);
}
.case-tags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.case-tag {
  background: var(--color-primary-soft);
  color: var(--color-primary-dark);
  font-size: 0.82rem;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 9999px;
}
.case-row-content h3 {
  font-size: clamp(1.375rem, 2vw, 1.75rem);
  font-weight: 800;
  color: var(--color-text-main);
  line-height: 1.4;
  letter-spacing: -.02em;
}
.case-meta span {
  display: inline-block;
  font-size: 0.95rem;
  color: var(--color-text-muted);
  font-weight: 600;
}
.case-content {
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin-top: 6px;
}
.case-section h4 {
  font-size: 0.82rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0;
  color: var(--color-primary-dark);
  margin-bottom: 6px;
}
.case-section p {
  font-size: 1.0625rem;
  color: var(--color-text-sub);
  line-height: 1.8;
}
.case-section p + p { margin-top: 12px; }
.case-process-list {
  display: grid;
  gap: 9px;
  margin: 0;
  padding: 0;
}
.case-process-list li {
  position: relative;
  padding-left: 20px;
  color: var(--color-text-sub);
  font-size: 1.0625rem;
  line-height: 1.72;
}
.case-process-list li::before {
  content: '';
  position: absolute;
  top: .72em;
  left: 2px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
}
.case-process-image-item {
  margin-top: 10px;
}
.case-process-image {
  display: block;
  width: 67%;
  height: auto;
  margin: 0 auto;
  opacity: .95;
  border-radius: 14px;
  border: 1px solid var(--color-border);
}
.case-process-image-item + p {
  margin-top: 12px;
}
.case-takeaway {
  margin: 2px 0 0;
  padding: 16px 18px;
  border-left: 3px solid var(--color-primary);
  background: var(--color-primary-soft);
  color: var(--navy-dark);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.72;
}
.case-item-notice {
  margin: 2px 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--color-border);
  color: var(--color-text-muted);
  font-size: 0.78rem;
  line-height: 1.6;
}

/* ── Closing: continuous nursing flow ────────────────────── */
.case-closing {
  margin: 0 0 96px;
  padding: clamp(54px, 7vw, 88px) clamp(24px, 5vw, 72px);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}
.case-closing h2 {
  max-width: 920px;
  margin-top: 12px;
  color: var(--color-text-main);
  font-size: clamp(2rem, 3.8vw, 3.25rem);
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: -.035em;
}
.case-closing-lead {
  max-width: 900px;
  margin-top: 18px;
  color: var(--color-text-sub);
  font-size: 1.125rem;
  line-height: 1.8;
}
.case-closing-flow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 42px;
}
.case-closing-flow li {
  text-align: center;
  background: rgba(202, 240, 248, .35);
  border-radius: 20px;
  padding: 32px 24px;
  box-shadow: var(--shadow-xs);
}
.case-closing-num {
  display: flex;
  width: 68px;
  height: 68px;
  margin: 0 auto 18px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #fff;
  color: var(--color-primary-dark);
  box-shadow: var(--shadow-xs);
  font-size: 1.15rem;
  font-weight: 800;
  letter-spacing: .02em;
}
.case-closing-flow strong {
  display: block;
  margin-top: 3px;
  margin-bottom: 8px;
  color: var(--color-text-main);
  font-size: 1.0625rem;
  font-weight: 800;
}
.case-closing-flow p {
  margin: 0;
  color: var(--color-text-sub);
  font-size: 1rem;
  line-height: 1.72;
}
.case-closing-copy {
  display: grid;
  gap: 16px;
  max-width: 1040px;
  margin-top: 42px;
}
.case-closing-copy p {
  margin: 0;
  color: var(--color-text-sub);
  font-size: 1.0625rem;
  line-height: 1.85;
}
.case-closing-copy strong {
  color: var(--navy-dark);
  font-weight: 800;
}

/* ── Case information notice ──────────────────────────────── */
.case-disclaimer {
  position: relative;
  z-index: 1;
  background: transparent;
  border: 0;
  padding: 0 0 14px;
  margin-top: -34px;
}
.case-disclaimer .container {
  width: fit-content;
  max-width: calc(100% - var(--gutter));
  margin-left: auto;
  margin-right: clamp(32px, 6.25vw, 128px);
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--color-text-sub);
}
.case-disclaimer svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin-top: 0;
  color: var(--color-primary);
}
.case-disclaimer p {
  font-size: 0.75rem;
  line-height: 1.5;
  color: var(--color-text-muted);
  margin: 0;
  transform: scale(0.72);
  transform-origin: left center;
}

/* ── CTA Banner ──────────────────────────────────────────── */
.cta-banner-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 24px;
  padding: 34px;
}
.cta-banner-text h2 {
  color: var(--color-text-main);
  font-size: clamp(1.625rem, 2.4vw, 2.125rem);
  font-weight: 800;
  margin-bottom: 8px;
}
.cta-banner-text p {
  color: var(--color-text-sub);
  margin: 0;
  font-size: 1.0625rem;
}
.cta-banner-btns {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

/* 마지막 흰색 사례 영역의 독립된 하단 경계 그림자 */
body[data-page="case"] main.case-main {
  box-shadow: none;
}
body[data-page="case"] main.case-main::after {
  content: '';
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 48px;
  z-index: 0;
  pointer-events: none;
  transform: translateZ(0);
  backface-visibility: hidden;
  box-shadow: var(--edge-shadow-bottom);
}
body[data-page="case"] section.cta-banner {
  border-top: 0;
  border-bottom: 0;
  box-shadow: none;
}

/* 왼쪽 간호사례 빠른 선택 바 */
.case-quick-nav {
  position: fixed;
  top: 50%;
  left: 24px;
  z-index: 900;
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 20px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 14px 34px rgba(15, 23, 42, .12);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-50%) translate3d(0, 24px, 0);
  transition: opacity .82s cubic-bezier(.22, 1, .36, 1), visibility .82s cubic-bezier(.22, 1, .36, 1), transform .82s cubic-bezier(.22, 1, .36, 1);
}

.case-quick-nav.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(-50%) translate3d(0, 0, 0);
}

.case-quick-link {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border: 1px solid transparent;
  border-radius: 14px;
  color: var(--color-text-muted);
  background: transparent;
  transition: none;
}

.case-quick-link svg {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
}

.case-quick-link > span {
  position: absolute;
  left: calc(100% + 22px);
  top: 50%;
  min-width: max-content;
  padding: 8px 12px;
  border-radius: 8px;
  color: #fff;
  background: rgba(17, 24, 39, .68);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  font-size: 16px !important;
  line-height: 1.3 !important;
  font-weight: 700 !important;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-5px, -50%);
  transition: opacity .18s ease, visibility .18s ease, transform .18s ease;
}

.case-quick-link:hover,
.case-quick-link:focus-visible {
  color: var(--color-primary-dark);
  border-color: var(--color-sky);
  background: var(--color-primary-soft);
}

.case-quick-link:hover > span,
.case-quick-link:focus-visible > span {
  opacity: 1;
  visibility: visible;
  transform: translate(0, -50%);
}

.case-quick-link.is-active {
  color: #fff;
  border-color: var(--color-primary);
  background: var(--color-primary);
}

.case-quick-link.is-active > span {
  opacity: 1;
  visibility: visible;
  transform: translate(0, -50%);
}

/* 왼쪽 위 사례 네비게이션 안내 문구 */
.case-nav-hint {
  position: fixed;
  left: 24px;
  top: 112px;
  z-index: 900;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  max-width: min(380px, calc(100vw - 48px));
  padding: 0;
  border: none;
  background: none;
  box-shadow: none;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(0, 24px, 0);
  transition: opacity .82s cubic-bezier(.22, 1, .36, 1), visibility .82s cubic-bezier(.22, 1, .36, 1), transform .82s cubic-bezier(.22, 1, .36, 1);
}

.case-nav-hint.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate3d(0, 0, 0);
}

.case-nav-hint strong {
  flex: none;
  color: rgba(107, 114, 128, .75);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
}

.case-nav-hint p {
  flex: none;
  margin: 0;
  padding-left: 8px;
  border-left: 1px solid rgba(107, 114, 128, .25);
  color: rgba(107, 114, 128, .6);
  font-size: 10px;
  line-height: 1.3;
}

.case-row[id] { scroll-margin-top: 92px; }

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 1024px) {
  .case-row { gap: 40px; }
}

@media (max-width: 860px) {
  .case-role,
  .case-stories-intro { grid-template-columns: 1fr; gap: 28px; }
  .case-stories-intro { padding-inline: 16px; }
  .case-care-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 34px 0; }
  .case-care-step:nth-child(3)::after { display: none; }
  .case-row {
    grid-template-columns: 1fr;
    padding: 40px 0;
    gap: 28px;
  }
  .case-row:nth-child(even) .case-row-media,
  .case-row:nth-child(even) .case-row-content {
    order: 0;
  }
  .case-row-media { aspect-ratio: 3 / 4; }
  .case-list { padding: 44px 0 64px; }
  .case-main { padding-top: 56px; }
  .case-row-content h3 { font-size: 1.25rem; }
  .case-process-list li { font-size: 1rem; }
  .case-closing {
    margin-bottom: 64px;
    padding-inline: 16px;
  }
  .case-closing-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cta-banner-inner {
    flex-direction: column;
    align-items: flex-start;
    padding: 26px 22px;
  }
}

@media (max-width: 480px) {
  .case-opening-hero { padding: 0 24px 38px; }
  .case-opening-hero h2 { font-size: 2rem; }
  .desktop-only { display: none; }
  .case-role { padding-top: 0; }
  .case-continuity { margin-top: -4px; padding: 0; }
  .case-care-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 34px; }
  .case-care-step:nth-child(2)::after,
  .case-care-step:nth-child(4)::after { display: none; }
  .case-care-step:nth-child(3)::after { display: block; }
  .case-section p { font-size: 1rem; }
  .case-takeaway { padding: 15px 16px; font-size: .95rem; }
  .case-closing h2 { font-size: 2rem; }
  .case-closing-lead,
  .case-closing-copy p { font-size: 1rem; }
  .case-closing-flow { grid-template-columns: 1fr; gap: 28px; }
  .cta-banner-btns { width: 100%; }
  .cta-banner-btns .btn { flex: 1; }
}

@media (max-width: 1180px), (max-height: 620px) {
  .case-quick-nav { display: none; }
  .case-nav-hint { display: none; }
}

/* 모바일: 좌측 세로 바 대신, 헤더 바로 아래 고정된 자리에 가로 바를 배치.
   본문 위치와 무관하게 화면에 고정(position: fixed)되어 있다가, 사례 목록이 보이는
   동안에만 그 자리에서 아래로 펼쳐지듯 나타나고, 목록을 벗어나면 다시 사라짐.
   표시 여부는 IntersectionObserver로 판단(js/case.js) — 데스크탑 스크롤 계산 로직과는 분리. */
@media (max-width: 768px) {
  .case-quick-nav {
    display: flex;
    position: fixed;
    top: var(--mobile-header-height, 80px);
    left: 0;
    right: 0;
    bottom: auto;
    z-index: 90;
    flex-direction: row;
    justify-content: center;
    width: 100%;
    max-width: 100%;
    gap: 4px;
    padding: 6px 8px;
    margin: 0;
    border: none;
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 6px 16px rgba(15, 23, 42, .06);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform-origin: top;
    transform: scaleY(.4);
    transition: opacity .35s ease, visibility .35s ease, transform .35s ease;
  }
  .case-quick-nav::-webkit-scrollbar { display: none; }

  .case-quick-nav.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: scaleY(1);
  }

  .case-quick-link {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 8px;
  }

  .case-quick-link svg {
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
  }

  .case-quick-link > span { display: none; }

  .case-row[id] { scroll-margin-top: calc(var(--mobile-header-height, 80px) + 56px); }
}
