/**
 * 파일명: bugo-template.css
 * 파일경로: /home/freebugocokr/public_html/css/bugo-template.css
 * 기능: 부고장 템플릿 선택 화면 전용 스타일 정의
 * 작성일: 2026-05-09
 * 수정일: 2026-05-09
 *
 * @version   1.1.0
 * @updated   2026-10-23
 * @shared    복제사이트 공용 파일 - 여기서 고치면 다른 사이트에도 이식해야 한다
 * @changelog
 *   1.1.0 (2026-10-23) 제목 아래 안내 한 줄(.template-header__note) - template.php 1.4.0 과 짝. 색은 테마를 따른다.
 *   1.0.0 (2026-07-22) 부고 계열 공용 - 버전 헤더 도입 시점 상태
 */

.template-page{
    max-width:1180px;
    margin:0 auto;
    padding:32px 18px 48px;
}

.template-header{
    text-align:center;
    margin-bottom:22px;
}

.template-header h1{
    font-size:30px;
    margin:0;
}

/* [상주 안내] 이미 만든 부고장은 고칠 수 있다는 한 줄. 글자색은 물려받아 어두운 테마에서도 읽힌다 */
.template-header__note{
    margin:10px auto 0;
    max-width:560px;
    font-size:15px;
    line-height:1.6;
    opacity:.85;
    word-break:keep-all;
}

.template-header__note a{
    color:var(--color-primary, currentColor);
    font-weight:700;
    text-decoration:underline;
    text-underline-offset:3px;
}

.template-layout{
    display:grid;
    grid-template-columns:1fr;
    gap:18px;
    align-items:start;
}

.template-picker{
    display:grid;
    grid-template-columns:1fr;
    gap:16px;
}

.picker-card,
.preview-card{
    background:#fff;
    border:1px solid var(--color-border);
    border-radius:18px;
    padding:18px;
    box-shadow:0 8px 24px rgba(0,0,0,.06);
}

.picker-card h2{
    font-size:17px;
    margin:0 0 14px;
}

.compact-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)); /* [템플릿 선택] 프로필/텍스트 이미지를 한 줄에 4개씩 표시 */
    gap:10px;
}

.compact-grid .select-card{
    padding:8px;
    border-color:transparent;
    background:#fff;
}

.compact-grid .title,
.compact-grid .check{
    display:none;
}

.compact-grid .thumb{
    border:0;
    background:#fff;
}

.compact-grid .select-card:hover{
    border-color:var(--color-primary);
    transform:none;
}

.compact-grid .select-card.is-selected{
    border-color:var(--color-primary);
    background:var(--color-primary-soft);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--color-primary) 14%, transparent);
}

.preview-panel{
    position:relative;
}

.preview-card{
    position:sticky;
    top:20px;
}

.preview-label{
    margin:0 0 18px;
    color:var(--color-primary);
    font-weight:900;
}

.bugo-preview{
    min-height:520px; /* [템플릿 선택] 미리보기 영역을 크게 보여주기 위해 높이 확대 */
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    border:1px solid var(--color-border-light);
    border-radius:18px;
    background:#fff;
    padding:44px 24px;
}

.preview-symbols{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:30px; /* [템플릿 선택] 프로필 이미지와 텍스트 이미지 사이 간격 확대 */
    margin-bottom:34px;
}

.preview-sample-note{
    margin:-18px 0 0;
    color:var(--color-text-light);
    font-size:11px;
    line-height:1.6;
}

.preview-sample-note__badge{
    display:inline-block;
    padding:2px 8px;
    border:1px solid var(--color-primary-soft-border);
    border-radius:50px;
    background:var(--color-primary-soft);
    color:var(--color-primary);
    font-size:11px;
    font-weight:700;
}

.preview-sample-note__help{
    display:block;
    margin-top:5px;
}

.preview-profile{
    max-width:170px; /* [템플릿 선택] 프로필 이미지 미리보기 크기 확대 */
    max-height:170px;
    object-fit:contain;
}

.preview-text{
    max-width:250px; /* [템플릿 선택] 부고/근조 텍스트 이미지 크기 확대 */
    max-height:140px;
    object-fit:contain;
}

.preview-copy{
    font-size:17px; /* [템플릿 선택] 미리보기 문구 가독성 확대 */
    line-height:1.9;
}

.sample-name{
    font-weight:900;
    font-size:18px; /* [템플릿 선택] 고인명 예시 강조 */
}

.next-button{
    width:100%;
    height:52px;
    margin-top:16px;
    border:1.5px solid var(--bugo-btn-border);
    border-radius:14px;
    background:var(--bugo-btn-bg);
    color:var(--bugo-btn-color);
    font-size:16px;
    font-weight:600;
    cursor:pointer;
}
.next-button:hover{background:var(--bugo-btn-bg-hover)}

@media (min-width:900px){
    .template-layout{
        grid-template-columns:520px 1fr;
        /* 두 칸이 같은 행 높이를 갖도록 — 기본값 start 를 덮는다 */
        align-items:stretch;
    }

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

    .preview-panel{
        display:flex;
    }

    /**
     * 미리보기 카드를 왼쪽 칸 높이에 맞춘다.
     *
     * 다만 화면 높이를 넘기면 카드가 화면 밖으로 나가 sticky 가 무의미해지므로
     * min() 으로 둘 중 작은 값을 쓴다. 화면이 넉넉하면 좌우 높이가 딱 맞고,
     * 화면이 짧으면 원래 높이를 유지하며 sticky 로 따라다닌다.
     */
    .preview-card{
        display:flex;
        flex-direction:column;
        width:100%;
        align-self:flex-start;
        /* border-box 가 아니면 패딩·테두리(38px)만큼 좌측보다 커진다 */
        box-sizing:border-box;
        min-height:min(100%, calc(100vh - 40px));
    }

    /* 남는 높이는 미리보기 영역이 흡수한다 (내용은 이미 가운데 정렬돼 있다) */
    .preview-card .bugo-preview{
        flex:1;
    }
}


/**
 * [템플릿 선택] 모바일에서는 이미지 선택 카드가 너무 작아지지 않도록 3열/2열로 조정
 */
@media (max-width: 719px){
    .compact-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}

@media (max-width: 420px){
    .compact-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

/**
 * [템플릿 선택] 모바일에서는 미리보기 영역이 과도하게 길어지지 않도록 보정
 */
@media (max-width:719px){
    .bugo-preview{
        min-height:460px;
        padding:36px 18px;
    }

    .preview-profile{
        max-width:140px;
        max-height:140px;
    }

    .preview-text{
        max-width:220px;
        max-height:120px;
    }

    .preview-copy{
        font-size:16px;
    }
}
/* ── [영정사진] STEP 1 업로드 카드 ─────────────────────────────────────────── */
.picker-optional{
    margin-left:6px;
    padding:2px 8px;
    border:1px solid var(--color-primary-soft-border);
    border-radius:50px;
    background:var(--color-primary-soft);
    color:var(--color-primary);
    font-size:11px;
    font-weight:700;
    vertical-align:middle;
}

.tpl-photo{
    display:flex;
    align-items:flex-start;
    gap:16px;
}

/* 실제 저장 비율(증명사진 3:4)과 같게 두어 어디가 잘리는지 미리 보이게 한다 */
.tpl-photo__thumb{
    position:relative;
    flex:none;
    width:90px;
    height:120px;
    display:flex;
    align-items:center;
    justify-content:center;
    border:1px dashed var(--color-border);
    border-radius:8px;
    background:#fff;
    overflow:hidden;
}

.tpl-photo__thumb img{ width:100%; height:100%; object-fit:cover; }
.tpl-photo__thumb span{ position:absolute; color:var(--color-text-light); font-size:12px; }
.tpl-photo__thumb[data-empty="0"] span{ display:none; }
.tpl-photo__thumb[data-empty="1"] img{ display:none; }

.tpl-photo__control{ flex:1; min-width:0; }
.tpl-photo__control input[type="file"]{ width:100%; max-width:100%; font-size:13px; }

.tpl-photo__help,
.tpl-photo__note{
    margin:8px 0 0;
    color:var(--color-text-light);
    font-size:12.5px;
    line-height:1.6;
}

.tpl-photo__help b{ color:var(--color-primary); }

.tpl-photo__note{
    padding-left:10px;
    border-left:2px solid var(--color-primary-soft-border);
}

.tpl-photo__status{
    margin:10px 0 0;
    padding:8px 10px;
    border-radius:6px;
    background:var(--color-primary-soft);
    color:var(--color-primary);
    font-size:12.5px;
    line-height:1.55;
}

.tpl-photo__status[data-error="1"]{ background:#f8d7da; color:#721c24; }

.tpl-photo__remove{
    margin-top:10px;
    padding:6px 12px;
    border:1px solid var(--color-border);
    border-radius:6px;
    background:#fff;
    color:var(--color-text-light);
    font-size:12.5px;
    cursor:pointer;
}

.tpl-photo__remove:hover{ border-color:var(--color-danger); color:var(--color-danger); }

/* 미리보기 패널의 영정사진 — 실제 부고장과 똑같은 화환 액자.
   위치 %값의 근거는 bugo-public.css 의 .public-bugo-portrait 주석 참고. */
.preview-portrait{
    position:relative;
    margin:0;
    width:260px;
    max-width:100%;
    aspect-ratio:1 / 1;
    background:url('/assets/images/goin_frame_01.webp') center / contain no-repeat;
    /* 프레임 배경 사각형이 드러나지 않도록 바깥을 부드럽게 지운다 */
    -webkit-mask-image:radial-gradient(closest-side, #000 88%, transparent 100%);
    mask-image:radial-gradient(closest-side, #000 88%, transparent 100%);
}

.preview-portrait img{
    position:absolute;
    left:49.6%;
    top:42.5%;
    width:45%;
    height:60%;
    transform:translate(-50%,-50%);
    border-radius:50%;
    object-fit:cover;
}

/* [액자 미리보기] 금색 액자를 고르면 배치까지 갈아끼운다.
   국화 화환은 사진을 액자 '위에' 얹고, 금색 액자는 가운데가 뚫려 있어 사진이 '뒤에' 깔린다.
   공개 화면(bugo-public.css 의 .public-bugo-portrait.is-gold)과 같은 값이다 —
   한쪽만 고치면 미리보기와 실제 부고장이 달라지므로 함께 고칠 것. */
.preview-portrait.is-gold{
    /* 폭은 국화 화환 미리보기(260px * 45% = 117px)와 사진 크기를 맞춘 값이다. */
    aspect-ratio:751 / 896;
    width:134px;
    background:none;
    -webkit-mask-image:none;
    mask-image:none;
}
.preview-portrait.is-gold::after{
    content:"";
    position:absolute;
    inset:0;
    background:url('/assets/images/goin_frame_02.webp') center / contain no-repeat;
    pointer-events:none;
}
.preview-portrait.is-gold img{
    left:6.26%;
    top:5.02%;
    width:87.22%;
    height:89.96%;
    transform:none;
    border-radius:0;
}

/* 리본 SVG 창 (150,130,300,400) / 600x760. 공개 화면 .is-ribbon과 같은 좌표.
   미리보기 사진 폭 260*45%=117px -> 컨테이너 117/0.5=234px. */
.preview-portrait.is-ribbon{
    width:min(234px, 78vw);
    aspect-ratio:600 / 760;
    background:none;
    -webkit-mask-image:none;
    mask-image:none;
}
.preview-portrait.is-ribbon::after{
    content:"";
    position:absolute;
    inset:0;
    background:url('/assets/images/goin_frame_03.svg') center / contain no-repeat;
    pointer-events:none;
}
.preview-portrait.is-ribbon img{
    left:25%;
    top:17.105263%;
    width:50%;
    height:52.631579%;
    transform:none;
    border-radius:0;
    object-fit:cover;
}

@media (max-width:560px){
    .tpl-photo{ flex-direction:column; align-items:center; text-align:center; }
    .tpl-photo__note{ text-align:left; }
}
