@charset "UTF-8";
/* ==========================================================================
   콘텐츠 / 약관 페이지 (content.css)
   대상: /about, /about/apple, /about/location, /cheongsong/*, /policy/*
   - 토큰과 공통 클래스는 site.css 에 정의되어 있다. 여기서는 확장만 한다.
   - 모바일 퍼스트, 브레이크포인트 640px / 1024px
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 리드 문구 (원본에 없던 텍스트 — SEO/접근성 확보용)
   -------------------------------------------------------------------------- */
.content-lead {
    margin-bottom: var(--space-6);
    padding: var(--space-4) var(--space-5);
    background: var(--color-primary-light);
    border-left: 4px solid var(--color-primary);
    border-radius: 0 var(--radius) var(--radius) 0;
    font-size: var(--font-size-md);
    line-height: var(--line-height-base);
    color: var(--color-text);
}

/* --------------------------------------------------------------------------
   2. 본문 이미지 (레거시 원본 이미지)
   -------------------------------------------------------------------------- */
.content-figures {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-8);
}

.content-figure {
    margin: 0;
    width: 100%;
    text-align: center;
}

/* site.css 의 .content-image 를 페이지 맥락에 맞게 보완 */
.content-figure .content-image {
    border-radius: var(--radius-sm);
}

/* --------------------------------------------------------------------------
   3. 본문 타이포그래피
   -------------------------------------------------------------------------- */
.content-page__body {
    margin-bottom: var(--space-8);
}

.content-section__title {
    margin: var(--space-8) 0 var(--space-3);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--color-border);
    font-size: var(--font-size-lg);
    color: var(--color-primary-dark);
}

.content-section__title:first-child {
    margin-top: 0;
}

/* 구조화 본문의 문단 블록 (관리자가 편집하는 청송소개 2종).
   각 섹션의 h2 가 저마다 :first-child 라 위 규칙으로 margin-top 이 0 이 된다.
   섹션 사이 간격은 여기서 준다 — 안 그러면 문단이 전부 붙어 버린다. */
.content-section + .content-section {
    margin-top: var(--space-8);
}

.content-section__text {
    margin-bottom: var(--space-5);
    line-height: var(--line-height-base);
    /* ★ white-space:pre-line 을 걷어 냈다 (2026-09-21).
       본문이 이제 편집기가 만든 HTML 이고 줄바꿈은 마크업이 맡는다.
       둘을 같이 두면 태그 사이의 들여쓰기 줄바꿈까지 살아나 한 줄이 두 줄로 벌어진다.
       옛 평문 글의 줄바꿈은 RichText.toHtml 이 <br> 로 바꿔 주므로 예전 그대로 보인다.
       점·표·인용 같은 꾸밈은 site.css 의 .rich-text 블록이 함께 건다. */
}

.content-section__text:last-child {
    margin-bottom: 0;
}

/* ---------------------------------------------------------------- 문단 사진
   관리자가 문단마다 붙이는 사진(SectionLayout). 배치는 클래스 이름으로만 들어온다.

   ★ aspect-ratio 로 자리를 <미리> 잡는다.
     관리자가 올린 파일이라 원본 픽셀 크기를 모른다 → img 에 width/height 를 못 박을 수가 없다.
     그대로 두면 사진이 도착하는 순간 아래 본문이 통째로 밀려 내려가고, 어르신이 읽던 줄을 놓친다.
     비율을 정해 두고 object-fit 으로 채우면 어떤 크기의 사진이 와도 자리가 흔들리지 않는다.

   ★★ 자르기는 <옆에 붙는 작은 사진>에서만 한다. 아래를 보라. */
.content-section__figure {
    margin: 0 0 var(--space-5);
}

/*
  기본값: 사진을 <자르지 않는다>.

  ★ 왜 3:2 강제를 걷었나 — 농원 사진은 대개 세로다.
    실측에서 apple-02.jpg 가 810x1440(세로)인데 3:2 상자에 cover 로 넣으니
    원본 높이의 3분의 1만 남고 위아래가 통째로 잘렸다. 사진만 있는 문단에서는
    <사진이 곧 본문>이라, 자르는 순간 관리자가 올린 내용이 사라진다.
    게다가 관리 화면에는 잘린 모습을 미리 볼 방법이 없어서 왜 그렇게 나오는지도 알 수 없다.

  ★★ 대신 높이에 상한을 둔다. 세로 사진 한 장이 화면 두 개 분량을 차지하면
    그 아래 글까지 내려가는 데만 한참 걸린다 — 어르신이 읽다가 길을 잃는 자리다.

  ★★★ 남은 숙제(의도적): 지금은 사진이 도착할 때 아래 글이 조금 밀린다.
    올린 파일의 원본 크기를 모르기 때문이다. 제대로 고치려면 업로드 때 가로·세로를 재서
    같이 저장하고 img 에 width/height 를 찍어야 한다 — 레거시 이미지는 이미 그렇게 한다
    (ContentImage 의 width/height 와 content/page.html 의 th:width/th:height).
    그 길은 컬럼 추가가 필요해 여기서는 <자르지 않는 쪽>을 먼저 택했다.
    밀리는 것은 되돌릴 수 있고, 잘린 사진은 관리자가 손쓸 방법이 없다.
*/
.content-section__image {
    display: block;
    width: 100%;
    /* 자리를 <미리> 잡는다. 사진이 도착할 때 아래 글이 밀려 내려가지 않게 하는 유일한 방법이다
       — 올린 파일의 원본 크기를 모르기 때문에 비율을 우리가 정해 줄 수밖에 없다. */
    aspect-ratio: 3 / 2;
    /* ★ cover 가 아니라 contain 이다. 상자에 맞춰 <자르는> 대신 상자 안에 <넣는다>.
       세로 사진은 양옆에 옅은 띠가 생기지만, 잘려 나가는 것보다 낫다 —
       띠는 보기에 아쉬울 뿐이고, 잘린 사진은 관리자가 올린 내용이 사라진 것이다. */
    object-fit: contain;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-tint);
}

/*
  ☐ 남은 숙제 — 업로드할 때 사진의 가로·세로를 재서 같이 저장하면 이 타협이 통째로 사라진다.
    img 에 width/height 를 찍을 수 있게 되어 자리도 정확히 잡히고 띠도 안 생긴다.
    레거시 이미지는 이미 그렇게 하고 있다 — ContentImage 의 width/height 와
    content/page.html 의 th:width/th:height 가 바로 그 장치다.
    content_section 에 image_width/image_height 두 칸을 더하면 같은 길로 갈 수 있다.
*/

/* 사진과 글을 나란히 놓는 배치(IMAGE_LEFT / IMAGE_RIGHT).
   ★ 마크업 순서는 언제나 <사진 → 글> 이다. 오른쪽 배치는 order 로만 뒤집는다 —
     DOM 순서를 바꾸면 화면낭독기와 키보드 순서가 눈에 보이는 순서와 어긋난다. */
.content-section--split {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: var(--space-6);
    align-items: start;
}

.content-section--split .content-section__figure {
    margin-bottom: 0;
}

/*
  ★ 2단 배치에서만 3:2 로 자른다.
    여기서는 사진이 <글 옆에 붙는 삽화>고, 칸 높이는 어차피 글이 정한다.
    비율을 고정하지 않으면 세로 사진 한 장 때문에 왼쪽 칸만 길게 늘어나
    오른쪽 글과 짝이 맞지 않는 판이 된다. 자른 부분은 alt 가 대신 말한다.
*/
.content-section--split .content-section__image {
    /* 2단에서는 자른다. 여기 사진은 <글 옆에 붙는 삽화>고 칸 높이는 글이 정하므로,
       비율을 안 맞추면 왼쪽 칸만 길어져 오른쪽 글과 짝이 안 맞는 판이 된다.
       잘린 부분은 alt 가 대신 말한다 — 그래서 편집 화면이 alt 를 따로 받는다. */
    object-fit: cover;
}

/* ★ grid 자식의 기본 min-width 는 auto 다. 띄어쓰기 없는 긴 문자열(주소·품종명 나열)이
   들어오면 칸이 그 길이만큼 벌어져 판이 가로로 삐져나간다. 0 으로 눕혀 줄바꿈에 맡긴다.
   판이 아니라 <글>이 접히게 하는 것이 목적이다. */
.content-section__text-col {
    min-width: 0;
}

.content-section--image-right .content-section__figure {
    order: 2;
}

/* 2단이 성립하려면 글 칸에 최소한의 폭이 있어야 한다. 좁아지면 한 줄에 서너 글자만 남아
   읽기가 더 어려워지므로, 그 전에 위아래로 눕힌다.
   ★ 이 값은 .page__layout 의 사이드바를 뺀 실제 본문 폭 기준이다. */
@media (max-width: 900px) {
    .content-section--split {
        grid-template-columns: 1fr;
        gap: var(--space-4);
    }
    /* 눕고 나면 <사진이 먼저>가 언제나 자연스럽다. order 를 풀어 마크업 순서로 되돌린다. */
    .content-section--image-right .content-section__figure {
        order: 0;
    }
}

/* 불릿 목록: 제목 강조 + 설명 형태 */
.bullet-list {
    margin: 0 0 var(--space-5);
    padding: 0;
    list-style: none;
}

.bullet-list > li {
    position: relative;
    padding-left: var(--space-5);
    margin-bottom: var(--space-2);
    line-height: var(--line-height-base);
}

.bullet-list > li::before {
    content: "";
    position: absolute;
    top: .7em;
    left: 4px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--color-accent);
}

.bullet-list > li > strong {
    display: inline-block;
    margin-right: var(--space-2);
    color: var(--color-primary-dark);
}

/* 정보 목록 (주소/연락처 등) */
.info-list {
    margin: 0 0 var(--space-5);
    border-top: 1px solid var(--color-border);
}

.info-list__row {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-1);
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--color-border);
}

.info-list__row > dt {
    font-weight: 700;
    color: var(--color-primary-dark);
    font-size: var(--font-size-sm);
}

.info-list__row > dd {
    margin: 0;
    min-width: 0;
}

/* 품종 목록 (사과종류 및 특징) */
.variety-list {
    margin: 0 0 var(--space-5);
}

.variety-list__row {
    padding: var(--space-4);
    margin-bottom: var(--space-3);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
}

.variety-list__row > dt {
    margin-bottom: var(--space-1);
    font-weight: 700;
    color: var(--color-accent);
}

.variety-list__row > dd {
    margin: 0;
    color: var(--color-text);
}

/* 지도 링크 (iframe 임베드 대신 외부 검색 링크) */
.map-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-bottom: var(--space-6);
}

.content-page__help {
    margin-top: var(--space-6);
}

.content-page__help a {
    color: var(--color-primary);
    text-decoration: underline;
}

/* --------------------------------------------------------------------------
   4. 약관/방침 페이지
   -------------------------------------------------------------------------- */
.policy {
    max-width: 860px;
}

/* 초안 안내 박스 */
.policy-notice {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    margin-bottom: var(--space-6);
    padding: var(--space-4) var(--space-5);
    background: var(--color-accent-light);
    border: 1px solid rgba(153, 31, 30, .28);
    border-left: 4px solid var(--color-accent);
    border-radius: 0 var(--radius) var(--radius) 0;
}

.policy-notice__title {
    font-weight: 700;
    color: var(--color-accent);
    font-size: var(--font-size-base);
}

.policy-notice__text {
    margin: 0;
    font-size: var(--font-size-sm);
    color: var(--color-text);
}

.policy__doc {
    margin-bottom: var(--space-8);
}

.policy__doc > p {
    margin-bottom: var(--space-4);
}

/* 이메일무단수집거부 대표 문장 */
.policy__statement {
    padding: var(--space-5);
    margin-bottom: var(--space-6);
    background: var(--color-tint);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-size: var(--font-size-md);
    font-weight: 700;
    line-height: var(--line-height-base);
}

.policy__date {
    margin-bottom: var(--space-5);
    text-align: right;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.policy__nav {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding-top: var(--space-5);
    border-top: 1px solid var(--color-border);
}

/* --------------------------------------------------------------------------
   5. 태블릿 이상
   -------------------------------------------------------------------------- */
@media (min-width: 640px) {
    .content-lead {
        font-size: var(--font-size-lg);
        padding: var(--space-5) var(--space-6);
    }

    .content-figures {
        gap: var(--space-4);
        margin-bottom: var(--space-10);
    }

    .content-section__title {
        font-size: var(--font-size-xl);
    }

    .info-list__row {
        grid-template-columns: 140px 1fr;
        gap: var(--space-4);
        align-items: baseline;
    }

    .info-list__row > dt {
        font-size: var(--font-size-base);
    }

    .variety-list__row {
        display: grid;
        grid-template-columns: 180px 1fr;
        gap: var(--space-4);
        align-items: baseline;
    }

    .variety-list__row > dt {
        margin-bottom: 0;
    }
}
