@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@500;700;900&family=IBM+Plex+Mono:wght@500;600&display=swap');

/* ============ 디자인 토큰 ============ */
:root{
  --ink:      #17293a;   /* 짙은 네이비 잉크 - 본문/헤드라인 */
  --ink-soft: #45596b;   /* 보조 텍스트 */
  --paper:    #f5f6f1;   /* 따뜻한 오프화이트 (크림 아님, 살짝 그린 언더톤) */
  --paper-2:  #ffffff;
  --pine:     #2f5d50;   /* 짙은 파인그린 - 브랜드 프라이머리 */
  --pine-dark:#213f37;
  --ochre:    #c9860f;   /* 따뜻한 오커골드 - 숫자/강조 */
  --ochre-soft:#f2e3c2;
  --card:     #ece6d3;   /* 카드 배경 */
  --line:     #d8d2bd;   /* 헤어라인 */
  --danger:   #a13d2c;

  --serif: 'Noto Serif KR', serif;
  --sans:  'Pretendard', -apple-system, BlinkMacSystemFont, 'Malgun Gothic', sans-serif;
  --mono:  'IBM Plex Mono', monospace;

  --radius: 14px;
  --max: 1080px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:18px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
h1,h2,h3{ font-family:var(--serif); line-height:1.35; margin:0 0 .5em; letter-spacing:-0.01em; word-break:keep-all; overflow-wrap:break-word; }
p{ margin:0 0 1em; word-break:keep-all; overflow-wrap:break-word; }
.wrap{ max-width:var(--max); margin:0 auto; padding:0 24px; }

/* 접근성: 포커스 표시 */
a:focus-visible, button:focus-visible, input:focus-visible{
  outline:3px solid var(--ochre);
  outline-offset:2px;
}
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}

/* ============ 헤더 ============ */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(245,246,241,0.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.site-header .wrap{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:16px; padding-bottom:16px;
  gap:16px; flex-wrap:wrap;
}
.brand{
  font-family:var(--serif); font-weight:900; font-size:22px;
  color:var(--pine-dark); text-decoration:none;
  display:flex; align-items:center; gap:8px;
}
.brand .mark{
  width:30px; height:30px; border-radius:50%;
  background:var(--pine); color:var(--paper);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:16px; font-weight:900;
  flex-shrink:0;
}
nav.main-nav{ display:flex; gap:4px; flex-wrap:wrap; }
nav.main-nav a{
  text-decoration:none; font-size:16px; font-weight:600;
  color:var(--ink-soft); padding:8px 12px; border-radius:8px;
}
nav.main-nav a:hover, nav.main-nav a[aria-current="page"]{
  color:var(--pine-dark); background:var(--card);
}

/* ============ 히어로 ============ */
.hero{ padding:56px 0 24px; }
.hero .eyebrow{
  font-family:var(--mono); font-size:14px; letter-spacing:.12em;
  color:var(--pine); font-weight:600; margin-bottom:14px;
}
.hero h1{
  font-size:clamp(32px, 5vw, 52px); color:var(--ink);
}
.hero h1.short{ max-width:16ch; }
.hero h1 .accent{ color:var(--ochre); }
.hero .lede{
  font-size:19px; color:var(--ink-soft); max-width:52ch; margin-bottom:0;
}

/* ============ 계산기 (시그니처 요소) ============ */
.calc{
  margin:36px 0 8px;
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:20px;
  padding:28px;
  box-shadow: 0 18px 40px -28px rgba(23,41,58,0.35);
}
.calc-title{
  font-family:var(--serif); font-weight:700; font-size:22px;
  margin-bottom:4px;
}
.calc-sub{ color:var(--ink-soft); font-size:15px; margin-bottom:20px; }
.calc-row{ margin-bottom:18px; }
.calc-label{ display:block; font-weight:700; font-size:15px; margin-bottom:8px; }
.seg{ display:inline-flex; background:var(--paper); border:1px solid var(--line); border-radius:10px; padding:4px; }
.seg button{
  border:none; background:transparent; padding:10px 20px; font-size:16px;
  font-weight:700; border-radius:7px; cursor:pointer; color:var(--ink-soft);
  font-family:var(--sans);
}
.seg button[aria-pressed="true"]{ background:var(--pine); color:#fff; }
.calc input[type="range"]{ width:100%; accent-color:var(--pine); }
.calc-amount{
  font-family:var(--mono); font-size:26px; font-weight:600; color:var(--pine-dark);
  margin-top:8px;
}
.calc-result{
  margin-top:20px; padding:18px 20px; border-radius:12px;
  font-weight:700; font-size:17px; display:flex; gap:12px; align-items:flex-start;
}
.calc-result.pass{ background:#e7efe6; color:var(--pine-dark); border:1px solid #bcd3bd; }
.calc-result.fail{ background:#f6ece7; color:var(--danger); border:1px solid #e3c6ba; }
.calc-result .num{ font-family:var(--mono); }
.calc-note{ font-size:13px; color:var(--ink-soft); margin-top:14px; }

/* ============ 버튼 ============ */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--pine); color:#fff; text-decoration:none;
  padding:13px 22px; border-radius:10px; font-weight:700; font-size:16px;
  border:none; cursor:pointer; font-family:var(--sans);
}
.btn:hover{ background:var(--pine-dark); }
.btn.outline{
  background:transparent; color:var(--pine-dark); border:1.5px solid var(--pine);
}

/* ============ 섹션 공통 ============ */
section{ padding:52px 0; }
.section-head{ margin-bottom:32px; }
.section-head .eyebrow{
  font-family:var(--mono); font-size:13px; letter-spacing:.12em;
  color:var(--pine); font-weight:600; margin-bottom:10px;
}
.section-head h2{ font-size:clamp(24px,3vw,32px); }

/* 숫자 카드 (2026년 변경사항) */
.stat-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.stat-card{
  background:var(--card); border-radius:16px; padding:24px;
  border:1px solid var(--line);
}
.stat-card .num{
  font-family:var(--mono); font-size:30px; font-weight:600; color:var(--ochre);
  display:block; margin-bottom:8px;
}
.stat-card .label{ font-weight:700; margin-bottom:4px; }
.stat-card .desc{ font-size:15px; color:var(--ink-soft); margin:0; }

/* 카테고리 카드 그리드 */
.card-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(210px,1fr)); gap:16px; }
.cat-card{
  display:block; text-decoration:none; color:var(--ink);
  background:var(--paper-2); border:1px solid var(--line); border-radius:16px;
  padding:24px; transition:transform .15s ease, box-shadow .15s ease;
}
.cat-card:hover{ transform:translateY(-3px); box-shadow:0 14px 30px -22px rgba(23,41,58,0.4); }
.cat-card .idx{ font-family:var(--mono); color:var(--pine); font-size:13px; margin-bottom:10px; display:block;}
.cat-card h3{ font-size:19px; margin-bottom:6px; }
.cat-card p{ font-size:15px; color:var(--ink-soft); margin:0; }

/* 상담사 신뢰 섹션 */
.trust{
  background:var(--pine-dark); color:var(--paper);
  border-radius:24px; padding:44px;
  display:grid; grid-template-columns:1.2fr 1fr; gap:32px; align-items:center;
}
.trust h2{ color:#fff; font-size:26px; }
.trust p{ color:#d8e2dd; }
.trust .quote{
  font-family:var(--serif); font-size:20px; font-style:italic; color:#fff;
  border-left:3px solid var(--ochre); padding-left:18px;
}

/* 본문 페이지 공통 */
.content-page article{ max-width:72ch; }
.content-page h2{ font-size:26px; margin-top:2em; }
.content-page h3{ font-size:20px; margin-top:1.6em; }
.table-scroll{ overflow-x:auto; margin:20px 0; -webkit-overflow-scrolling:touch; }
.content-page table{ width:100%; min-width:420px; border-collapse:collapse; margin:0; font-size:16px; }
.content-page th, .content-page td{
  text-align:left; padding:12px 14px; border-bottom:1px solid var(--line);
}
.content-page th{ background:var(--card); font-family:var(--sans); }
.content-page td.num, .content-page th.num{ font-family:var(--mono); }
.callout{
  background:var(--ochre-soft); border-left:4px solid var(--ochre);
  padding:18px 22px; border-radius:0 12px 12px 0; margin:24px 0;
}
.callout strong{ display:block; margin-bottom:4px; }

.formula{
  background:var(--ink); color:#eef2ef; font-family:var(--mono);
  padding:18px 20px; border-radius:12px; margin:18px 0; font-size:15px;
  line-height:1.8; overflow-x:auto;
}
.formula .op{ color:var(--ochre); }
.formula .result, .example .formula .result{ color:var(--ochre) !important; font-weight:700; }

.example{
  border:1px solid var(--line); border-radius:12px; padding:18px 20px; margin:18px 0;
  background:var(--paper-2);
}
.example .ex-label{
  font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--pine);
  font-weight:700; margin-bottom:8px; display:block;
}
.example ol{ margin:8px 0 0; padding-left:20px; }
.example li{ margin-bottom:6px; }
.example .result{ font-weight:700; color:var(--pine-dark); }
.steps{ list-style:none; margin:0; padding:0; counter-reset:step; }
.steps li{
  counter-increment:step; position:relative; padding:0 0 0 52px; margin-bottom:28px;
}
.steps li::before{
  content:counter(step); position:absolute; left:0; top:0;
  width:36px; height:36px; border-radius:50%; background:var(--pine); color:#fff;
  font-family:var(--mono); font-weight:600; display:flex; align-items:center; justify-content:center;
}
.steps h3{ margin-top:0; }

/* FAQ */
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item summary{
  cursor:pointer; font-weight:700; font-size:17px; padding:20px 4px;
  list-style:none; display:flex; justify-content:space-between; gap:16px;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:'+'; font-family:var(--mono); color:var(--pine); font-size:22px; }
.faq-item[open] summary::after{ content:'–'; }
.faq-item .a{ padding:0 4px 22px; color:var(--ink-soft); }

/* 푸터 */
footer.site-footer{
  border-top:1px solid var(--line); margin-top:40px; padding:40px 0;
}
footer.site-footer .disclaimer{
  font-size:13.5px; color:var(--ink-soft); line-height:1.6;
  background:var(--card); padding:18px 20px; border-radius:12px; margin-bottom:20px;
}
footer.site-footer nav{ display:flex; gap:18px; flex-wrap:wrap; font-size:14px; margin-bottom:12px; }
footer.site-footer nav a{ text-decoration:none; color:var(--ink-soft); }
footer.site-footer .copy{ font-size:13px; color:var(--ink-soft); }

/* 반응형 */
@media (max-width: 860px){
  .stat-grid{ grid-template-columns:1fr; }
  .card-grid{ grid-template-columns:1fr 1fr; }
  .trust{ grid-template-columns:1fr; padding:28px; }
  nav.main-nav{ gap:0; }
}
@media (max-width: 560px){
  body{ font-size:17px; }
  .card-grid{ grid-template-columns:1fr; }
  .calc{ padding:20px; }
  .trust{ padding:22px; }
}

/* ============ 광고 슬롯 ============ */
.ad-slot{ margin:36px 0; }
.ad-slot-label{
  font-family:var(--mono); font-size:11px; letter-spacing:.08em; color:var(--ink-soft);
  text-align:center; margin-bottom:6px;
}
.ad-slot-placeholder{
  min-height:100px; display:flex; align-items:center; justify-content:center;
  border:1.5px dashed var(--line); border-radius:12px;
  color:var(--ink-soft); font-size:13px; background:var(--paper-2);
}

/* ============ 게시판 ============ */
.post-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.post-row{
  display:flex; align-items:baseline; gap:14px; flex-wrap:wrap;
  padding:18px 4px; border-bottom:1px solid var(--line); text-decoration:none; color:var(--ink);
}
.post-row:hover .post-row-title{ color:var(--pine-dark); }
.post-row .cat-tag{
  font-family:var(--mono); font-size:12px; color:var(--pine); background:var(--card);
  padding:3px 8px; border-radius:6px; flex-shrink:0;
}
.post-row-title{ font-weight:700; flex:1 1 240px; min-width:0; word-break:keep-all; overflow-wrap:break-word; }
.post-row-meta{ font-size:13px; color:var(--ink-soft); font-family:var(--mono); flex-shrink:0; white-space:nowrap; }

@media (max-width: 640px){
  .post-row{ flex-direction:column; align-items:flex-start; gap:6px; }
  .post-row-title{ flex:0 0 auto; width:100%; }
  .post-row-meta{ white-space:normal; }
}

.pagination{ display:flex; gap:6px; justify-content:center; margin:32px 0; flex-wrap:wrap; }
.pagination a, .pagination span{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:36px; height:36px; border-radius:8px; text-decoration:none;
  font-family:var(--mono); font-size:14px; color:var(--ink-soft); border:1px solid var(--line);
}
.pagination a:hover{ background:var(--card); }
.pagination .current{ background:var(--pine); color:#fff; border-color:var(--pine); }

.post-view-head{ border-bottom:1px solid var(--line); padding-bottom:20px; margin-bottom:24px; }
.post-view-meta{ font-size:14px; color:var(--ink-soft); font-family:var(--mono); }
.post-view-body{ line-height:1.9; font-size:17px; }

.form-row{ margin-bottom:18px; }
.form-row label{ display:block; font-weight:700; margin-bottom:8px; }
.form-row input[type="text"],
.form-row input[type="password"],
.form-row select,
.form-row textarea{
  width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:10px;
  font-family:var(--sans); font-size:16px; background:var(--paper-2); color:var(--ink);
}
.form-row textarea{ min-height:220px; resize:vertical; line-height:1.7; }
.form-error{
  background:#f6ece7; color:var(--danger); border:1px solid #e3c6ba;
  padding:12px 16px; border-radius:10px; margin-bottom:18px; font-size:14px;
}

/* ============ 관리자 모드 (사이드바 레이아웃) ============ */
.admin-shell{ display:flex; min-height:100vh; }
.admin-topbar{
  position:fixed; top:0; left:0; right:0; height:56px; z-index:100;
  background:var(--ink); color:#fff; display:flex; align-items:center;
  justify-content:space-between; padding:0 20px;
}
.admin-topbar .brand{ font-family:var(--serif); font-weight:700; font-size:16px; color:#fff; display:flex; align-items:center; gap:8px; }
.admin-topbar .brand .dot{ width:8px; height:8px; border-radius:50%; background:var(--ochre); }
.admin-topbar .user-area{ display:flex; align-items:center; gap:14px; font-size:13px; color:#c7d0d9; }
.admin-topbar .user-area a{ color:#c7d0d9; text-decoration:none; }
.admin-topbar .user-area a:hover{ color:#fff; }

.admin-sidebar{
  position:fixed; top:56px; left:0; bottom:0; width:220px;
  background:#fbfaf7; border-right:1px solid var(--line); padding:20px 0; overflow-y:auto;
}
.admin-sidebar .group-label{
  font-family:var(--mono); font-size:11px; letter-spacing:.08em; color:var(--ink-soft);
  padding:10px 20px 6px; text-transform:uppercase;
}
.admin-sidebar a{
  display:flex; align-items:center; gap:10px; padding:10px 20px; font-size:14px; font-weight:600;
  color:var(--ink-soft); text-decoration:none; border-left:3px solid transparent;
}
.admin-sidebar a:hover{ background:var(--card); color:var(--ink); }
.admin-sidebar a.active{ background:var(--card); color:var(--pine-dark); border-left-color:var(--pine); }

.admin-main{ margin-left:220px; margin-top:56px; padding:32px; flex:1; width:100%; }

.admin-card{
  background:var(--paper-2); border:1px solid var(--line); border-radius:14px;
  padding:24px; margin-bottom:20px;
}
.admin-card h2{ font-size:17px; margin-bottom:16px; }
.admin-stat-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:24px; }
.admin-stat{
  background:var(--paper-2); border:1px solid var(--line); border-radius:14px; padding:20px;
}
.admin-stat .label{ font-size:13px; color:var(--ink-soft); margin-bottom:8px; }
.admin-stat .value{ font-family:var(--mono); font-size:26px; font-weight:600; color:var(--pine-dark); }
.admin-stat .value.accent{ color:var(--ochre); }

.status-dot{ display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--pine-dark); font-weight:600; }
.status-dot::before{ content:''; width:8px; height:8px; border-radius:50%; background:var(--pine); display:inline-block; }

/* 관리자 목록용 카드형 반응형 테이블 */
.admin-table{ width:100%; border-collapse:collapse; margin:0; font-size:15px; }
.admin-table th, .admin-table td{ text-align:left; padding:12px 14px; border-bottom:1px solid var(--line); }
.admin-table th{ background:var(--card); font-size:13px; }

@media (max-width: 860px){
  .admin-topbar{ height:auto; flex-wrap:wrap; padding:10px 16px; }
  .admin-topbar .user-area{ font-size:12px; gap:10px; flex-wrap:wrap; }

  /* 사이드바: 고정 좌측 배치 대신 상단 가로 스크롤 탭으로 전환 */
  .admin-sidebar{
    position:static; width:100%; height:auto;
    display:flex; overflow-x:auto; white-space:nowrap;
    padding:8px 10px; border-right:none; border-bottom:1px solid var(--line);
    -webkit-overflow-scrolling:touch;
  }
  .admin-sidebar .group-label{ display:none; }
  .admin-sidebar a{
    flex-shrink:0; border-left:none; border-bottom:3px solid transparent;
    padding:8px 12px; font-size:13px;
  }
  .admin-sidebar a.active{ border-left-color:transparent; border-bottom-color:var(--pine); }

  .admin-main{ margin-left:0; margin-top:0; padding:20px 16px; }

  /* 관리자 목록 테이블 -> 카드형으로 전환 */
  .admin-table thead{ display:none; }
  .admin-table, .admin-table tbody, .admin-table tr, .admin-table td{ display:block; width:100%; }
  .admin-table tr{
    border:1px solid var(--line); border-radius:12px; padding:6px 0; margin-bottom:14px;
    background:var(--paper-2);
  }
  .admin-table td{
    display:flex; justify-content:space-between; align-items:center; gap:12px;
    border-bottom:1px solid var(--line); padding:10px 14px; text-align:right;
  }
  .admin-table td:last-child{ border-bottom:none; }
  .admin-table td::before{
    content:attr(data-label); font-weight:700; color:var(--ink-soft); font-size:12px;
    text-align:left; flex-shrink:0;
  }
  .admin-table td[data-label="제목"]{ text-align:left; }
  .admin-table td[data-label="제목"] a{ text-align:right; flex:1; }
}

@media (max-width: 860px){
  .admin-stat-row{ grid-template-columns:1fr 1fr; }
}
