/* ==========================================================================
   CROWNNA · assets/css/support.css  v1.0
   지원사업소식 게시판 전용 스타일

   support.html · support-detail.html · support-write.html 에서만 로드한다.
   공지(notice.html) CSS 를 복제하지 않은 독립 스타일이다.
   색·폰트는 사이트 V2 톤(header.css 의 --hd-* 와 같은 값)을 따른다.

   ⚠ 모든 클래스는 sp- 접두사. 헤더(.nav / .mobile-menu)는 건드리지 않는다.
   ========================================================================== */

:root {
  --sp-bg      : #F5F4FF;   /* 페이지 배경 */
  --sp-ink     : #1E1A2B;   /* 본문 글자 */
  --sp-muted   : #8A85A0;   /* 보조 글자 */
  --sp-faint   : #B3AFC4;   /* 더 옅은 글자 */
  --sp-line    : #EBE8F2;   /* 테두리 */
  --sp-soft    : #EEEDFF;   /* 옅은 포인트 배경 */
  --sp-point   : #6C63FF;   /* 포인트 */
  --sp-point-d : #4B3BFF;   /* 포인트 hover */
  --sp-danger  : #E4576B;
  --sp-danger-s: #FBE3EC;
  --sp-white   : #fff;
  --sp-radius  : 16px;
  --sp-font    : 'Pretendard','Pretendard Variable',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
}

/* ── 페이지 기본 ──────────────────────────────────────────────────────── */
body.sp-body {
  margin: 0;
  font-family: var(--sp-font);
  background: var(--sp-bg);
  color: var(--sp-ink);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}
.sp-wrap          { max-width: 860px; margin: 0 auto; padding: 2.5rem 1.25rem 5rem; box-sizing: border-box; }
.sp-wrap *        { box-sizing: border-box; }
/* hidden 속성이 display:flex 등에 덮이지 않도록 — 숨김은 항상 숨김 */
.sp-wrap [hidden], .sp-body [hidden] { display: none !important; }
.sp-wrap--narrow  { max-width: 760px; }

/* ── 페이지 머리 ──────────────────────────────────────────────────────── */
.sp-head          { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.sp-title         { margin: 0 0 .4rem; font-size: 26px; font-weight: 800; letter-spacing: -.02em; color: var(--sp-ink); }
.sp-sub           { margin: 0; font-size: 14px; color: var(--sp-muted); }

/* ── 버튼 ─────────────────────────────────────────────────────────────── */
.sp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 11px 20px; border-radius: 10px; border: 1px solid transparent;
  font: 600 14px/1.2 var(--sp-font); cursor: pointer; text-decoration: none;
  white-space: nowrap; transition: background .15s, color .15s, border-color .15s;
}
.sp-btn:disabled               { opacity: .55; cursor: not-allowed; }
.sp-btn--primary               { background: var(--sp-point); color: var(--sp-white); }
.sp-btn--primary:hover:not(:disabled) { background: var(--sp-point-d); }
.sp-btn--ghost                 { background: var(--sp-white); color: var(--sp-ink); border-color: var(--sp-line); }
.sp-btn--ghost:hover:not(:disabled)   { border-color: var(--sp-point); color: var(--sp-point); }
.sp-btn--danger                { background: var(--sp-white); color: var(--sp-danger); border-color: #F3B8C4; }
.sp-btn--danger:hover:not(:disabled)  { background: var(--sp-danger-s); }
.sp-btn[hidden]                { display: none !important; }

/* ── 목록 (No. | 제목 | 글쓴이) ───────────────────────────────────────── */
.sp-board {
  background: var(--sp-white); border: 1px solid var(--sp-line);
  border-radius: var(--sp-radius); overflow: hidden;
}
.sp-board-row {
  display: grid; grid-template-columns: 72px 1fr 96px; align-items: center;
  border-bottom: 1px solid var(--sp-line);
}
.sp-board-row:last-child          { border-bottom: none; }
.sp-board-row > *                 { padding: 1rem .75rem; }
.sp-board-row--head               { background: #FAFAFE; font-size: 13px; font-weight: 700; color: var(--sp-muted); }
.sp-board-row--head > *           { padding-top: .8rem; padding-bottom: .8rem; }
.sp-board-row--item               { cursor: pointer; transition: background .15s; }
.sp-board-row--item:hover         { background: var(--sp-bg); }
.sp-col-no                        { text-align: center; font-size: 13px; color: var(--sp-muted); font-variant-numeric: tabular-nums; }
.sp-col-author                    { text-align: center; font-size: 13px; color: var(--sp-muted); }
.sp-col-title                     { min-width: 0; }
.sp-board-row--head .sp-col-title { padding-left: .75rem; }

.sp-item-link {
  display: block; color: var(--sp-ink); text-decoration: none;
  font-size: 15px; font-weight: 600; line-height: 1.45; word-break: keep-all; overflow-wrap: anywhere;
}
.sp-board-row--item:hover .sp-item-link { color: var(--sp-point-d); }
.sp-item-link:focus-visible       { outline: 2px solid var(--sp-point); outline-offset: 2px; border-radius: 4px; }
.sp-item-period                   { margin-top: 4px; font-size: 12px; color: var(--sp-muted); font-variant-numeric: tabular-nums; }

/* 빈 목록 · 로딩 · 오류 */
.sp-state                         { padding: 3.5rem 1rem; text-align: center; color: var(--sp-muted); font-size: 14px; line-height: 1.6; }
.sp-state strong                  { display: block; margin-bottom: 4px; color: var(--sp-ink); font-size: 15px; }
.sp-state a                       { color: var(--sp-point); font-weight: 600; }

/* ── 상세 ─────────────────────────────────────────────────────────────── */
.sp-back {
  display: inline-flex; align-items: center; gap: 6px; margin-bottom: 1.25rem;
  font: 600 13.5px var(--sp-font); color: var(--sp-muted); text-decoration: none;
}
.sp-back:hover                    { color: var(--sp-point-d); }

.sp-card {
  background: var(--sp-white); border: 1px solid var(--sp-line);
  border-radius: 20px; padding: 2rem; box-shadow: 0 2px 12px rgba(30,26,43,.05);
}
.sp-badge {
  display: inline-block; padding: 4px 12px; border-radius: 999px;
  background: var(--sp-soft); color: var(--sp-point-d); font-size: 12px; font-weight: 700;
}
.sp-detail-title {
  margin: 14px 0 12px; font-size: 24px; font-weight: 800; line-height: 1.4;
  letter-spacing: -.02em; word-break: keep-all; overflow-wrap: anywhere;
}
.sp-meta                          { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; color: var(--sp-muted); }
.sp-meta-dot                      { width: 3px; height: 3px; border-radius: 50%; background: var(--sp-faint); }
.sp-period {
  display: flex; align-items: center; gap: 10px; margin-top: 14px;
  padding: 12px 16px; border-radius: 12px; background: var(--sp-bg);
  font-size: 14px; font-variant-numeric: tabular-nums;
}
.sp-period-label                  { font-weight: 700; color: var(--sp-point-d); flex-shrink: 0; }
.sp-divider                       { height: 1px; background: var(--sp-line); margin: 1.5rem 0; border: 0; }
.sp-content {
  font-size: 15.5px; line-height: 1.85; color: var(--sp-ink);
  white-space: pre-wrap; word-break: keep-all; overflow-wrap: anywhere;
}
.sp-inline-link                   { color: var(--sp-point); text-decoration: underline; text-underline-offset: 2px; word-break: break-all; }
.sp-inline-link:hover             { color: var(--sp-point-d); }

/* 본문 이미지 (https 이미지 주소 → 자동 표시) */
.sp-img-link                      { display: block; margin: 10px 0; line-height: 0; }
.sp-inline-img {
  display: block; max-width: 100%; height: auto; margin: 0 auto;
  border-radius: 12px; border: 1px solid var(--sp-line); background: var(--sp-bg);
}
.sp-img-link:hover .sp-inline-img { border-color: var(--sp-point); }

.sp-source                        { margin-top: 1.75rem; }
.sp-source .sp-btn                { width: 100%; padding: 14px 20px; font-size: 15px; }

/* 공감 하트 */
.sp-like-wrap                     { display: flex; justify-content: center; margin-top: 2rem; }
.sp-like {
  display: inline-flex; align-items: center; gap: 8px; padding: 10px 22px;
  border-radius: 999px; border: 1px solid var(--sp-line); background: var(--sp-white);
  font: 700 15px var(--sp-font); color: var(--sp-muted); cursor: pointer;
  transition: border-color .15s, color .15s, background .15s, transform .1s;
}
.sp-like:hover:not(:disabled)     { border-color: #F3B8C4; color: var(--sp-danger); }
.sp-like:active:not(:disabled)    { transform: scale(.96); }
.sp-like:disabled                 { opacity: .6; cursor: wait; }
.sp-like-icon                     { font-size: 18px; line-height: 1; }
.sp-like.is-liked                 { border-color: #F3B8C4; background: var(--sp-danger-s); color: var(--sp-danger); }
.sp-like-count                    { font-variant-numeric: tabular-nums; }

/* 하단 버튼 줄 */
.sp-actions                       { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 1.75rem; }
.sp-actions-admin                 { display: flex; gap: 8px; }

/* ── 등록 · 수정 폼 ───────────────────────────────────────────────────── */
.sp-form                          { display: flex; flex-direction: column; gap: 1.25rem; }
.sp-field                         { display: flex; flex-direction: column; gap: 6px; }
.sp-label                         { font-size: 14px; font-weight: 700; color: var(--sp-ink); }
.sp-label .sp-req                 { color: var(--sp-danger); margin-left: 2px; }
.sp-hint                          { font-size: 12px; color: var(--sp-muted); }
.sp-input, .sp-textarea {
  width: 100%; padding: 12px 14px; border: 1px solid var(--sp-line); border-radius: 10px;
  background: var(--sp-white); color: var(--sp-ink); font: 400 15px/1.5 var(--sp-font);
  transition: border-color .15s, box-shadow .15s;
}
.sp-input:focus, .sp-textarea:focus { outline: none; border-color: var(--sp-point); box-shadow: 0 0 0 3px rgba(108,99,255,.15); }
.sp-textarea                      { min-height: 320px; resize: vertical; line-height: 1.75; }
.sp-row-2                         { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.sp-counter                       { align-self: flex-end; font-size: 12px; color: var(--sp-muted); font-variant-numeric: tabular-nums; }
.sp-error {
  padding: 12px 14px; border-radius: 10px; background: var(--sp-danger-s);
  border: 1px solid #F3B8C4; color: #C0334A; font-size: 13.5px; font-weight: 600;
}
.sp-error[hidden]                 { display: none; }
.sp-form-actions                  { display: flex; justify-content: flex-end; gap: 8px; margin-top: .5rem; }

/* ── 수집함 (support-review.html · 운영자 전용) ───────────────────────── */
.sp-review-tabs {
  display: flex; gap: 6px; margin-bottom: 1.25rem; flex-wrap: wrap;
  border-bottom: 1px solid var(--sp-line); padding-bottom: .75rem;
}
.sp-review-tab {
  padding: 8px 16px; border-radius: 999px; border: 1px solid var(--sp-line);
  background: var(--sp-white); color: var(--sp-muted);
  font: 600 13.5px var(--sp-font); cursor: pointer; white-space: nowrap;
}
.sp-review-tab:hover        { border-color: var(--sp-point); color: var(--sp-point); }
.sp-review-tab.is-on        { background: var(--sp-point); border-color: var(--sp-point); color: var(--sp-white); }
.sp-review-tab .sp-review-n { margin-left: 6px; font-variant-numeric: tabular-nums; opacity: .85; }

.sp-review-list             { display: flex; flex-direction: column; gap: 12px; }
.sp-review-card {
  background: var(--sp-white); border: 1px solid var(--sp-line);
  border-radius: 14px; padding: 1.1rem 1.25rem;
}
.sp-review-card.is-busy     { opacity: .55; pointer-events: none; }
.sp-review-top              { display: flex; align-items: flex-start; gap: 10px; justify-content: space-between; }
.sp-review-title {
  font-size: 16px; font-weight: 700; line-height: 1.45; color: var(--sp-ink);
  word-break: keep-all; overflow-wrap: anywhere; margin: 0;
}
.sp-review-tag {
  flex-shrink: 0; padding: 3px 10px; border-radius: 999px;
  font-size: 11.5px; font-weight: 700; background: var(--sp-soft); color: var(--sp-point-d);
}
.sp-review-tag.is-women     { background: #FBE3EC; color: #C0334A; }
.sp-review-meta {
  margin-top: 8px; display: flex; flex-wrap: wrap; gap: 4px 10px;
  font-size: 12.5px; color: var(--sp-muted); font-variant-numeric: tabular-nums;
}
.sp-review-dday {
  font-weight: 700; color: var(--sp-danger);
}
.sp-review-excerpt {
  margin-top: 10px; font-size: 13.5px; line-height: 1.7; color: #55506B;
  white-space: pre-wrap; max-height: 5.2em; overflow: hidden;
}
.sp-review-card.is-open .sp-review-excerpt { max-height: none; }
.sp-review-more {
  margin-top: 6px; background: none; border: none; padding: 0; cursor: pointer;
  font: 600 12.5px var(--sp-font); color: var(--sp-point);
}
.sp-review-actions {
  margin-top: 14px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
}
.sp-review-actions .sp-btn  { padding: 9px 16px; font-size: 13.5px; }
.sp-review-actions .sp-spacer { margin-left: auto; }

@media (max-width: 640px) {
  .sp-review-card           { padding: 1rem; }
  .sp-review-actions        { flex-direction: column; align-items: stretch; }
  .sp-review-actions .sp-btn { width: 100%; }
  .sp-review-actions .sp-spacer { margin-left: 0; }
}

/* ── 토스트 ───────────────────────────────────────────────────────────── */
.sp-toast {
  position: fixed; left: 50%; bottom: 2rem; transform: translateX(-50%) translateY(8px);
  max-width: calc(100% - 32px); padding: 12px 22px; border-radius: 10px;
  background: var(--sp-ink); color: var(--sp-soft); font: 500 14px var(--sp-font);
  opacity: 0; pointer-events: none; z-index: 999; transition: opacity .2s, transform .2s;
}
.sp-toast.show                    { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ── 모바일 ───────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  .sp-wrap                        { padding: 1.75rem 16px 4rem; }
  .sp-title                       { font-size: 22px; }
  .sp-head .sp-btn                { width: 100%; }

  /* 목록: No. 좁게, 글쓴이는 제목 아래로 */
  .sp-board-row                   { grid-template-columns: 48px 1fr; }
  .sp-board-row--head .sp-col-author { display: none; }
  .sp-board-row--item .sp-col-author {
    grid-column: 2; padding-top: 0; text-align: left; font-size: 12px; color: var(--sp-faint);
  }
  .sp-board-row--item .sp-col-title  { padding-bottom: 4px; }
  .sp-board-row > *               { padding-left: .6rem; padding-right: .6rem; }

  .sp-card                        { padding: 1.4rem 1.1rem; border-radius: 16px; }
  .sp-detail-title                { font-size: 20px; }
  .sp-content                     { font-size: 15px; }
  .sp-period                      { flex-direction: column; align-items: flex-start; gap: 2px; }
  .sp-row-2                       { grid-template-columns: 1fr; }
  .sp-actions                     { flex-direction: column-reverse; align-items: stretch; }
  .sp-actions .sp-btn             { width: 100%; }
  .sp-actions-admin               { width: 100%; }
  .sp-actions-admin .sp-btn       { flex: 1; }
  .sp-form-actions                { flex-direction: column-reverse; }
  .sp-form-actions .sp-btn        { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .sp-toast, .sp-like, .sp-btn, .sp-board-row--item { transition: none; }
}
