/* 모든 페이지에서 마지막에 로드합니다.
   작은 화면에서는 글씨를 축소하는 대신 줄바꿈과 열 수를 조정합니다. */
:root {
  --page-gutter: clamp(1rem, 3.5vw, 3rem);
  --section-space: clamp(2.75rem, 6vw, 5.5rem);
  --body-size: clamp(1rem, .96rem + .2vw, 1.125rem);
  --section-title: clamp(1.5rem, 1.15rem + 1.5vw, 2.5rem);
  --anchor-offset: 8rem;
}
*, *::before, *::after { box-sizing: border-box; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-size: 1rem; line-height: 1.75; word-break: keep-all; overflow-wrap: anywhere; }
main, section, article, header, footer, figure, nav { min-width: 0; }
img { max-width: 100%; height: auto; }
button, input { font: inherit; }
[id] { scroll-margin-top: var(--anchor-offset); }
a:focus-visible, button:focus-visible { outline: 3px solid #715c22; outline-offset: 4px; }

/* 상단은 계속 고정하되, 휴대폰에서는 로고와 한 줄 메뉴로 높이를 줄입니다. */
.navbar { position: sticky; top: 0; height: auto; min-height: 6.5rem; gap: .75rem 2rem; padding: .75rem var(--page-gutter); flex-wrap: wrap; }
.logo { min-width: 0; flex: 0 1 auto; }
.logo a { display: flex; max-width: 100%; }
.logo img { width: auto; height: 4.5rem; max-width: 12rem; margin: 0; object-fit: contain; }
.nav-links {
  min-width: 0; width: auto; max-width: 100%; flex: 1 1 28rem;
  justify-content: flex-end; flex-wrap: wrap; gap: .25rem clamp(.25rem, 1.4vw, 1.5rem);
  margin: 0; font-size: 1rem; white-space: normal;
}
.nav-links a { display: inline-flex; align-items: center; justify-content: center; min-width: 0; min-height: 44px; padding: .4rem .55rem; text-align: center; }
.navbar .nav-links a.active, .navbar .nav-links a[style] { color: #42592b !important; }
.nav-links a:hover { color: #42592b; text-decoration: underline; text-underline-offset: .3em; }

/* 첫 화면과 연락처 */
.intro { min-height: 0; padding: var(--section-space) var(--page-gutter); }
.intro-title { width: min(100%, 44rem); margin: 0 0 1.5rem; line-height: 1; }
.intro-logo { display: block; width: 100%; max-width: 100%; height: auto; max-height: 15rem; margin: 0; object-fit: contain; }
.intro-subtitle { font-size: clamp(1.2rem, 1rem + .65vw, 1.65rem); line-height: 1.6; }
.intro-desc { max-width: 42rem; font-size: var(--body-size); line-height: 1.8; margin-bottom: 1.5rem; }
.intro-subtitle, .intro-desc { text-wrap: balance; }
.intro-desc-break { display: none; }
.intro-btns, .footer-btns { flex-wrap: wrap; max-width: 100%; }
.intro-btn, .footer-btn { min-height: 44px; max-width: 100%; margin-inline: 0; font-size: 1.0625rem; line-height: 1.6; }
.contact { container-type: normal; width: min(100%, 54rem); max-width: 100%; padding: 1.1rem; margin-top: 2rem; gap: .75rem; text-align: center; align-items: stretch; }
.contact .contact-row, .contact .contact-row:nth-child(n) {
  display: block; text-align: center;
  font-size: 1rem; line-height: 1.75; white-space: normal; text-wrap: wrap;
}
.contact .icon { display: inline-block; margin-inline-end: .4em; font-size: 1.1em; transform: none; }
/* 지정한 문구만 실제 표시 폭에 맞춰 한 줄로 유지합니다. */
[data-fit-line] { min-width: 0; }
.single-line-text { display: inline-block; white-space: nowrap; text-wrap: nowrap; }

/* 문장은 읽는 순서대로, 짧은 구절은 의미가 이어지도록 배치합니다. */
.reading-line { display: block; text-wrap: pretty; }
.reading-line + .reading-line { margin-top: .2em; }
.reading-phrase { display: inline-block; max-width: 100%; white-space: normal; text-wrap: wrap; }
.director-bio p, .program-descbox, .feature-desc, .step-content,
.personal-program-card-desc, .conditioning-feature-copy p, .conditioning-story-body p,
.conditioning-story-outro > p:not(.conditioning-eyebrow),
.news-activity-copy > p:not(.conditioning-eyebrow), .media-card-desc,
.media-preview-desc, .service-notice-text { text-wrap: pretty; }

/* 본문과 제목은 충분한 크기로 유지하고 확대 설정에서도 재배치합니다. */
.director-name, .certs-title, .program-main-title, .steps-title, .personal-programs-title {
  font-size: var(--section-title) !important; line-height: 1.45; white-space: normal; letter-spacing: -.035em; text-wrap: balance;
}
.program-quote, .steps-desc, .personal-programs-desc {
  font-size: var(--body-size) !important; line-height: 1.8; white-space: normal; color: #805e14;
}
.personal-programs-desc {
  max-width: 54rem; margin: 1.25rem auto 2.75rem;
  font-weight: 400; line-height: 1.9;
}
.personal-programs-desc-line { display: block; text-wrap: balance; }
.personal-programs-desc-line + .personal-programs-desc-line { margin-top: .25rem; }
.steps-desc::before { content: none; display: none; }
.program-descbox, .feature-desc, .step-content, .personal-program-card-desc,
.media-preview-desc, .conditioning-feature-copy p, .conditioning-story-body p,
.conditioning-story-outro > p:not(.conditioning-eyebrow), .conditioning-lead {
  font-size: var(--body-size); line-height: 1.85; white-space: normal;
}
.director, .certs, .program, .steps, .personal-programs, .conditioning-feature { padding: var(--section-space) var(--page-gutter); }
.director-list, .program-inner, .personal-programs-inner { width: 100%; max-width: 75rem; padding: 0; margin-inline: auto; }
.director-container { gap: clamp(1.5rem, 3vw, 3rem); min-width: 0; }
.director-info { min-width: 0; max-width: 44rem; }
.director-photo { width: min(42%, 32rem); max-width: 100%; height: auto; aspect-ratio: auto; object-fit: contain; }
.director-title { font-size: 1.0625rem !important; color: #805e14 !important; white-space: normal; line-height: 1.7; }
.director-bio > div { font-size: var(--body-size) !important; line-height: 1.85 !important; }
.director-bio p { font-size: inherit; line-height: inherit; }
.director-bio br, .program-descbox br, .feature-desc br, .step-content br { display: none; }

/* 자격과 경력 */
.certs-switcher { max-width: 64rem; --cert-base-size: 1rem; }
.cert-tabs { display: flex; width: fit-content; max-width: 100%; border-radius: 1.5rem; }
.cert-tab { min-width: 0; min-height: 44px; flex: 1 1 0; flex-wrap: wrap; gap: .2rem .5rem; padding: .75rem 1rem; }
.cert-tab-name { font-size: 1.0625rem; }
.cert-tab-role { font-size: .875rem; color: #526047; }
#cert-sohn:checked ~ .cert-tabs label[for="cert-sohn"] .cert-tab-role,
#cert-yun:checked ~ .cert-tabs label[for="cert-yun"] .cert-tab-role { color: #526b3a; }
#cert-sohn:focus-visible ~ .cert-tabs label[for="cert-sohn"],
#cert-yun:focus-visible ~ .cert-tabs label[for="cert-yun"] { outline: 3px solid #715c22; outline-offset: 2px; }
.cert-panel { padding: clamp(1rem, 3vw, 2rem); }
.cert-panel-head { flex-wrap: wrap; }
/* 경력 문구가 들어갈 폭을 확보한 뒤에만 두 열로 나눕니다. */
.cert-columns { grid-template-columns: repeat(auto-fit, minmax(min(100%, 27rem), 1fr)); gap: 2rem; }
.cert-column-title { font-size: 1.0625rem; color: #526b3a; }
.cert-list li {
  --cert-row-padding: .625rem; --cert-line-height: 1.8;
  font-size: var(--fit-font-size, var(--cert-base-size)); line-height: var(--cert-line-height);
  padding: var(--cert-row-padding) .25rem var(--cert-row-padding) 1.125rem;
}
.cert-list li::before {
  top: calc(var(--cert-row-padding) + .5em * var(--cert-line-height));
  transform: translateY(-50%);
}

/* 고정 폭/가로 스크롤 카드 대신 유동적인 격자 */
.program-descbox { padding: clamp(1.1rem, 3vw, 2rem); }
.program-features {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  width: 100%; max-width: 75rem; gap: 1.25rem; overflow: visible; align-items: stretch;
}
.feature-box { width: 100%; min-width: 0; min-height: 0; padding: 1.5rem; }
.feature-icon { width: 3.5rem; height: 3.5rem; object-fit: contain; }
.feature-title { font-size: 1.125rem; line-height: 1.65; margin-bottom: 1rem; }
.step-blocks { width: 100%; max-width: 60rem; gap: 1.25rem; }
.step-block { width: 100%; min-width: 0; padding: clamp(1rem, 3vw, 2rem); }
.step-header { flex-wrap: wrap; gap: .65rem 1rem; }
.step-num { flex-shrink: 0; padding: .4rem .8rem; color: #3d4f2b; font-size: 1rem; line-height: 1.5; }
.step-name { flex: 1 1 14rem; min-width: 0; font-size: 1.125rem; line-height: 1.65; }
.step-content { padding: 0; }
/* 빈 열도 유지하여 카드 수가 다른 분류끼리 너비가 같도록 합니다. */
.personal-program-grid, .personal-program-grid-two, .personal-program-grid-three { grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); gap: 1.25rem; }
.personal-program-card {
  display: grid;
  grid-template-rows:
    minmax(var(--program-title-height, 0px), auto)
    minmax(var(--program-desc-height, 0px), auto)
    minmax(var(--program-duration-height, 0px), auto)
    minmax(var(--program-trainers-height, 0px), auto);
  align-items: start; align-content: start; gap: 1rem;
  min-height: var(--program-card-height, 0px); padding: 1.5rem;
}
.personal-program-card > .personal-program-card-desc,
.personal-program-card > .personal-program-duration,
.personal-program-card > .personal-program-trainers { margin: 0; }
.personal-program-card > .personal-program-trainers { padding-top: 0; align-content: start; }
.personal-program-card-title { font-size: 1.125rem; line-height: 1.65; }
.personal-program-duration { flex-wrap: wrap; white-space: normal; font-size: .9375rem; line-height: 1.7; gap: .25rem .5rem; }
.personal-program-duration-label, .personal-program-label { color: #58644f; }
.personal-program-label { font-size: .875rem; }
.personal-program-trainer { min-height: 44px; max-width: 100%; border: 0; font-size: .9375rem; line-height: 1.6; white-space: normal; cursor: pointer; }
.media-preview { padding: 2rem var(--page-gutter); }
.media-preview-inner { max-width: 75rem; padding: clamp(1rem, 3vw, 2rem); flex-wrap: wrap; gap: 1.5rem; }
.media-preview-copy { flex: 1 1 28rem; }
.media-preview-title { font-size: clamp(1.25rem, 1.1rem + .6vw, 1.6rem); }
.media-preview-eyebrow, .media-preview-meta { font-size: .875rem; color: #59684a; }
.media-preview-button { min-width: 0; min-height: 44px; max-width: 100%; font-size: 1rem; }
.service-notice { padding: 1.5rem var(--page-gutter); }
.service-notice-inner { max-width: 75rem; padding: 1.25rem; flex-wrap: wrap; gap: .5rem 1.25rem; }
.service-notice-label { font-size: .9375rem; }
.service-notice-text { min-width: 0; flex: 1 1 30rem; font-size: 1rem; line-height: 1.85; }

/* 모든 하위 페이지의 공통 헤더 */
.media-hero, .review-hero { padding: var(--section-space) var(--page-gutter) 2.5rem; }
.media-hero-title, .review-hero-title { font-size: clamp(1.875rem, 1.5rem + 2vw, 3rem); line-height: 1.4; }
.media-hero-title, .review-hero-title, .media-hero-desc, .review-hero-desc,
.conditioning-feature h2, .conditioning-story-title, .news-activity-copy h3 { text-wrap: balance; }
.media-hero-desc, .review-hero-desc { max-width: 45rem; padding: 0; font-size: var(--body-size); line-height: 1.85; }
.media-hero-eyebrow, .review-hero-eyebrow { font-size: .875rem; color: #5b713f; }
.media-home-link, .review-home-link { min-height: 44px; font-size: .9375rem; padding: .65rem 1.25rem; }
.news-category-links { padding: 0 var(--page-gutter) 2.5rem; gap: .75rem; }
.news-category-links a { min-height: 44px; max-width: 100%; text-align: center; font-size: 1rem; padding: .7rem 1.4rem; }
.news-activities { width: 100%; max-width: 68rem; padding: 0 var(--page-gutter) 3rem; }
.news-section-title { font-size: 1.5rem; line-height: 1.6; }
.news-activity-card { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: clamp(1rem, 2.5vw, 1.5rem); gap: 1.75rem; }
.news-activity-copy h3 { font-size: clamp(1.25rem, 1.1rem + .4vw, 1.5rem); line-height: 1.65; }
.news-activity-copy > p:not(.conditioning-eyebrow) { font-size: var(--body-size); line-height: 1.85; }
.media-list-section, .review-list-section { padding: 1rem var(--page-gutter) var(--section-space); }
.media-list { max-width: 64rem; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); align-items: stretch; grid-auto-rows: 1fr; }
.media-list-section > .news-section-title { max-width: 64rem; }
.media-card { min-height: 0; padding: clamp(1.25rem, 3vw, 2rem); }
.media-card-top { flex-direction: row; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.media-date { font-size: .8125rem; color: #65705c; }
.media-card-title { font-size: 1.125rem; line-height: 1.6; }
.media-card-desc { font-size: .9375rem; line-height: 1.75; color: #56624d; }
.media-card-link { font-size: .9375rem; color: #4f683d; }

/* 원본 비율을 지켜 인물·서명·후기 문구가 잘리지 않도록 표시 */
.conditioning-feature-inner { gap: 0 2.5rem; }
.conditioning-feature h2 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2.1rem); line-height: 1.55; }
.conditioning-eyebrow { font-size: .9375rem; }
.conditioning-button, .conditioning-back { min-height: 44px; font-size: 1rem; }
.conditioning-story { padding: 1.5rem var(--page-gutter) var(--section-space); }
.conditioning-story .conditioning-story-title { font-size: clamp(1.5rem, 1.2rem + 1.25vw, 2.5rem); line-height: 1.55; }
.conditioning-story h2 { font-size: clamp(1.35rem, 1.15rem + .6vw, 1.85rem); line-height: 1.6; }
.conditioning-gallery { grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: 2rem; align-items: start; }
.conditioning-gallery img, .conditioning-gallery .conditioning-portrait { width: 100%; height: auto; aspect-ratio: auto; object-fit: contain; }
.conditioning-gallery .portrait-figure { grid-column: 1 / -1; width: min(100%, 32rem); justify-self: center; }
.conditioning-feature figcaption, .conditioning-story figcaption { font-size: .9375rem; line-height: 1.8; }
.conditioning-facts > div { grid-template-columns: 4rem minmax(0, 1fr); gap: 1rem; font-size: 1rem; }
.conditioning-photo-link { display: block; border-radius: 18px; }
.review-grid {
  max-width: 72rem; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(.5rem, 2vw, 1.5rem); align-items: start;
}
@media (min-width: 37.5rem) {
  .review-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.review-img-box {
  display: block; position: relative; width: 100%; aspect-ratio: 4 / 3;
  margin: 0; padding: 0; overflow: hidden; border: 1.5px solid #a8b99b;
  border-radius: .75rem; background: #fff; text-align: inherit; cursor: zoom-in;
}
.review-img-box img {
  position: absolute; inset: 0; width: 100%; height: 100%; max-height: 100%;
  object-fit: contain; object-position: center; border-radius: 0; background: #fff;
}
.review-more { width: 100%; max-width: 72rem; }
.review-more-link { width: auto; max-width: 100%; min-width: 0; min-height: 44px; padding: 1.1rem 1.5rem; }
.review-more-label { font-size: .875rem; color: #58644f; }
.review-more-title { font-size: 1rem; line-height: 1.7; }

/* 기본 보기는 사진 전체를 중앙에, 확대 보기는 스크롤 가능한 원본 비율로 표시합니다. */
.img-modal {
  position: fixed; inset: 0; display: none;
  width: calc(100% - 2rem); height: calc(100vh - 2rem); height: calc(100dvh - 2rem);
  max-width: 76rem; max-height: 64rem; margin: auto; padding: 1rem;
  border: 1px solid #57624f; border-radius: 1.25rem;
  background: #182015; color: #fff; overflow: hidden;
  flex-direction: column; gap: .75rem;
  align-items: stretch; justify-content: flex-start;
  box-sizing: border-box; min-width: 0; min-height: 0;
  box-shadow: 0 24px 80px rgba(0, 0, 0, .3);
}
.img-modal[open] { display: flex; }
.img-modal::backdrop { background: rgba(12, 17, 10, .8); }
.img-modal-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: .5rem; width: 100%; min-width: 0;
  flex: 0 0 auto; position: relative; z-index: 1; background: #182015;
}
.img-modal-toolbar:first-child { justify-content: space-between; }
/* Reserve space for navigation independently of image size and zoom. */
.img-modal-navigation {
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center; column-gap: .75rem;
  padding-top: .75rem; border-top: 1px solid #405039;
}
.img-modal-navigation .img-modal-arrow { width: 100%; max-width: 10rem; }
.img-modal-navigation #img-prev { justify-self: end; }
.img-modal-navigation #img-next { justify-self: start; }

.img-modal-close, .img-modal-arrow, .img-modal-zoom {
  position: static; inset: auto; transform: none; min-width: 44px; min-height: 44px;
  display: inline-flex; align-items: center; justify-content: center; white-space: nowrap;
  border: 1px solid #72846a; border-radius: .65rem; background: #293c21; color: #fff;
  padding: .5rem .8rem; font-size: .9375rem; line-height: 1.5;
  text-shadow: none; cursor: pointer; touch-action: manipulation;
}
.img-modal button:disabled { opacity: .6; cursor: default; }
@media (hover: hover) {
  .img-modal button:not(:disabled):hover { background: #405834; color: #fff; }
}
.img-modal button:focus-visible, .img-modal-viewport:focus-visible {
  outline: 2px solid #d5e5ba; outline-offset: 2px;
}
.img-modal-viewport {
  position: relative; flex: 1 1 0; width: 100%; max-width: 100%; height: 0; min-width: 0; min-height: 0;
  overflow: auto; overscroll-behavior: contain; border-radius: .65rem;
  background: #10170e;
}
/* Only the image handles pinch and pan; dialog controls keep their normal size. */
.img-modal-viewport { touch-action: none; }
.review-img-box, .review-img-box img, .img-modal-viewport, .img-modal-content {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}
.review-img-box img, .img-modal-content { -webkit-user-drag: none; }

.img-modal-canvas {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%; min-width: 100%; min-height: 100%;
}
.img-modal-content {
  display: block; flex: 0 0 auto; width: 100%; height: 100%;
  max-width: 100%; max-height: 100%; margin: 0; border-radius: 0;
  object-fit: contain; object-position: center; background: transparent; box-shadow: none;
}
.img-modal-viewport.is-zoomed .img-modal-canvas { width: max-content; height: auto; }
.img-modal-viewport.is-zoomed .img-modal-content {
  width: var(--review-zoom-width); height: auto; max-width: none; max-height: none;
}
.img-modal-viewport.is-loading .img-modal-content,
.img-modal-viewport.has-error .img-modal-content { visibility: hidden; }
.img-modal-status {
  position: absolute; inset: 0; display: grid; place-items: center;
  padding: 1rem; margin: 0; text-align: center; font-size: .9375rem; color: #e2e9dc;
}
.img-modal-status[hidden] { display: none; }
.img-modal-count { min-width: 4.5rem; text-align: center; font-size: .875rem; font-variant-numeric: tabular-nums; }
html.review-modal-open { overflow: hidden; }
@media (max-width: 600px), (max-height: 500px) {
  .img-modal {
    width: 100%; height: 100vh; height: 100dvh; max-width: none; max-height: none;
    border: 0; border-radius: 0; gap: .5rem;
    padding: max(.5rem, env(safe-area-inset-top)) max(.5rem, env(safe-area-inset-right)) max(.5rem, env(safe-area-inset-bottom)) max(.5rem, env(safe-area-inset-left));
  }
  .img-modal-close, .img-modal-arrow, .img-modal-zoom { font-size: .8125rem; padding: .5rem .65rem; }
}

.footer { padding: 3rem var(--page-gutter) 1.5rem; }
.footer-inner { max-width: 48rem; }
.footer-logo { width: auto; height: auto; max-height: 6rem; max-width: 100%; object-fit: contain; }
.footer-desc { font-size: 1.0625rem; }
.footer-copy { font-size: .875rem; }
@media (max-width: 68.75rem) {
  .director-container { flex-direction: column; }
  .director-container:nth-child(2) .director-photo { order: -1; }
  .director-photo { width: min(100%, 32rem); }
  .director-info { align-self: center; width: 100%; padding: clamp(1rem, 3vw, 2rem); }
}
@media (max-width: 56.25rem) {
  .conditioning-feature-inner { max-width: 44rem; grid-template-columns: 1fr; grid-template-areas: "heading" "photo" "copy"; gap: 1.5rem; }
}
@media (max-width: 48rem) {
  :root {
    --body-size: clamp(.875rem, .675rem + 1.1vw, 1rem);
    --section-space: clamp(2.25rem, 5vw, 3rem);
  }
  body { font-size: var(--body-size); line-height: 1.6; }
  .certs-switcher { --cert-base-size: var(--body-size); }
  .cert-list li { --cert-row-padding: .5rem; --cert-line-height: 1.55; }
  .cert-columns { gap: 1.5rem; }
  .cert-panel-head { margin-bottom: 1rem; padding-bottom: .75rem; }
  .director-bio li, .media-card-desc, .service-notice-text,
  .conditioning-facts > div, .footer-desc,
  .contact .contact-row, .contact .contact-row:nth-child(n) { font-size: var(--body-size); }
  .program-descbox, .feature-desc, .step-content, .personal-program-card-desc,
  .media-card-desc, .media-preview-desc, .conditioning-feature-copy p,
  .conditioning-story-body p, .service-notice-text,
  .conditioning-story-outro > p:not(.conditioning-eyebrow), .conditioning-lead,
  .media-hero-desc, .review-hero-desc,
  .news-activity-copy > p:not(.conditioning-eyebrow) { line-height: 1.6; }
  .reading-line + .reading-line { margin-top: .125em; }
  .director-bio > div { line-height: 1.65 !important; margin-bottom: 0 !important; }
  .director-bio p { margin-bottom: .5rem; }
  .program-quote, .steps-desc, .personal-programs-desc { line-height: 1.6; }
  .program-quote, .steps-desc { margin-bottom: 1.5rem; }
  .program-descbox { margin-bottom: 1.5rem; }
  .program-features, .step-blocks { gap: 1rem; }
  .feature-title { margin-bottom: .75rem; }
  .step-header { margin-bottom: .5rem; gap: .5rem .75rem; }
  .feature-title, .step-name, .personal-program-card-title, .media-card-title {
    font-size: clamp(1rem, .95rem + .35vw, 1.125rem); line-height: 1.6;
  }
  .director-title { font-size: var(--body-size) !important; margin-bottom: .75rem !important; }
  .personal-program-duration, .personal-program-trainer { font-size: .875rem; }
  .conditioning-feature figcaption, .conditioning-story figcaption,
  .media-date, .media-card-link { font-size: .8125rem; line-height: 1.5; }
  .footer-copy { font-size: .8125rem; }
  .navbar {
    flex-direction: column; flex-wrap: nowrap; min-height: 0; gap: .125rem;
    padding: .5rem clamp(.5rem, 2vw, .875rem) .25rem;
  }
  .logo img { width: clamp(9rem, 42vw, 11rem); height: auto; max-width: 100%; }
  .nav-links {
    display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
    width: 100%; max-width: 36rem; flex: 0 1 auto; gap: 0;
    font-size: clamp(.8125rem, 3.7vw, .9375rem); line-height: 1.4;
  }
  .nav-links a { padding: .5rem .125rem; letter-spacing: -.025em; border-radius: .5rem; }
  .nav-links a.active, .nav-links a[style] { background: rgba(66, 89, 43, .07); }
  .intro { padding: 2rem var(--page-gutter); }
  .intro-title { width: clamp(8.5rem, 38vw, 12rem); margin-bottom: 1rem; }
  .intro-logo { max-height: none; }
  .intro-subtitle { margin-bottom: .75rem; }
  .intro-desc { max-width: 24rem; margin-bottom: 1rem; line-height: 1.6; }
  .intro-btn { padding: .75rem 1.5rem; }
  .contact { margin-top: 1.25rem; padding: .875rem .75rem; gap: .5rem; }
  .contact .contact-row, .contact .contact-row:nth-child(n) { line-height: 1.5; }
  .director-list { gap: 2rem; }
  .director-container + .director-container { padding-top: 2rem; }
  .director-info { padding: 1.25rem; }
  .director-bio { text-align: left; }
  .director-photo { width: min(100%, 22rem); }
  .personal-programs-desc { margin: .875rem auto 1.5rem; }
  .personal-programs-desc-line + .personal-programs-desc-line { margin-top: .375rem; }
  .personal-program-group-title { font-size: 1.125rem; line-height: 1.5; margin-bottom: .75rem; }
  .personal-program-group + .personal-program-group { margin-top: 1.75rem; }
  .personal-program-grid { gap: 1rem; }
  .personal-program-card { border-radius: 1.125rem; gap: .75rem; }
  .personal-program-card-title { text-wrap: balance; }
  .program-quote, .steps-desc { max-width: 36rem; margin-inline: auto; text-wrap: balance; }
  .step-name { flex-basis: 12rem; }
  .news-activity-card { grid-template-columns: 1fr; gap: 1rem; }
  .media-hero, .review-hero { padding-bottom: 1.75rem; }
  .media-hero-desc, .review-hero-desc { margin-top: .75rem; }
  .news-category-links { padding-bottom: 1.75rem; }
  .news-activities { padding-bottom: 2rem; }
  .media-list { gap: 1rem; }
  .media-card-top { margin-bottom: 1rem; }
  .media-card-desc { margin-bottom: 1.25rem; }
  .media-card-link { padding-top: .875rem; }
  .conditioning-feature-inner { gap: 1.125rem; }
  .conditioning-feature-copy p { margin-bottom: .75rem; }
  .conditioning-story-header { margin-bottom: 1.25rem; }
  .conditioning-story-cover { margin-bottom: 1.75rem; }
  .conditioning-story h2 { margin-bottom: .875rem; }
  .conditioning-story-section { margin-top: 2rem; }
  .conditioning-facts { margin-top: 1.25rem; }
  .conditioning-facts > div { padding-block: .75rem; line-height: 1.6; }
  .conditioning-gallery { margin-block: 1.25rem 2rem; }
  .conditioning-feature figcaption, .conditioning-story figcaption { margin-top: .5rem; }
  .conditioning-story-outro { padding-top: 1.75rem; }
  .media-preview-copy { flex-basis: auto; }
  .media-preview-inner { align-items: stretch; gap: 1rem; }
  .service-notice { padding-block: 1.25rem; }
  .footer-desc { margin-bottom: .875rem; line-height: 1.6; }
  .footer-btns { margin-bottom: 1.25rem; }
  .media-hero-desc-break, .review-hero-desc-break { display: none; }
  .conditioning-feature h2 br, .conditioning-story-title br, .conditioning-lead br, .news-activity-copy h3 br { display: none; }
}
@media (max-width: 30rem) {
  :root { --page-gutter: 1rem; --section-space: 2.25rem; }
  .intro { padding-top: 1.5rem; }
  .intro-desc { max-width: 19rem; }
  .director-info { padding: 1rem; }
  .cert-tabs { width: 100%; }
  .cert-tab { flex-direction: column; align-items: center; padding: .65rem .5rem; }
  .cert-panel { padding: 1rem; }
  .cert-panel-head { gap: .25rem .65rem; }
  .feature-box, .personal-program-card, .media-card { padding: 1.125rem; }
  .step-block { padding: 1.25rem; }
  .step-name { flex-basis: 100%; }
  .news-category-links a { flex: 1 1 0; padding-inline: .75rem; }
  .conditioning-gallery { gap: 1.5rem; }
  .footer { padding-top: 2.5rem; }
  .footer-logo { width: min(100%, 14rem); }
}
@media (max-width: 24rem) {
  .conditioning-facts > div { grid-template-columns: 1fr; gap: .2rem; }
}
@media (max-height: 32rem) {
  .navbar { min-height: 0; padding-block: .25rem; }
  .logo img { width: auto; height: 2.5rem; }
  .intro { padding-block: 2rem; }
  .intro-logo { max-height: 7rem; }
}
@media (max-height: 32rem) and (max-width: 48rem) {
  .navbar { padding-block: .25rem; }
  .logo img { width: 7rem; height: auto; }
}
@media (max-height: 32rem) and (min-width: 40rem) and (max-width: 48rem) {
  .navbar { flex-direction: row; gap: .75rem; }
  .nav-links { flex: 1 1 0; width: auto; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* 기사 카드는 넓은 화면에서 두 열, 좁은 화면에서는 한 열로 표시합니다. */
@media (min-width: 768px) {
  .media-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .media-list { grid-template-columns: minmax(0, 1fr); grid-auto-rows: auto; }
}
