/* ==========================================================================
   syncwise.org
   개념: "한 본문, 세 교실, 한 식탁". 하나의 그림이 세 칸으로 나뉘었다가
   제자리로 맞춰지는 장면(싱크)이 사이트의 유일한 큰 연출이다.
   나머지는 조용하게: 밝은 종이 바탕, Pretendard 한 서체, 브랜드 시안은
   큰 면과 그래픽에만, 작은 글자에는 깊은 시안을 쓴다.
   ========================================================================== */

:root {
  color-scheme: light;

  /* 브랜드 원색 (브랜드 필름 소스 기준) */
  --brand-sync: #1CB8DD;   /* 로고 "sync" — 면·그래픽 전용 */
  --brand-wise: #9E9FA3;   /* 로고 "wise" — 장식 전용 */
  --brand-warm: #F2A65A;   /* 로고 점, 가정 */
  --brand-ink:  #2D3748;   /* 한글 로고 "교육목회 연구소" */

  /* 화면 토큰 */
  --paper: #FCFDFD;
  --mist: #EDF2F4;
  --mist-deep: #DFE7EB;
  --ink: var(--brand-ink);
  --ink-soft: #4A5566;     /* 본문 보조 (paper 위 7:1 이상) */
  --muted: #667180;        /* 캡션 (paper 위 4.8:1) */
  --rule: #D6DEE3;
  --sync-text: #0B7C9C;    /* 링크·작은 강조 (paper 위 4.9:1) */
  --sync-wash: #E3F5FA;
  --warm-text: #A85A17;    /* 주황 계열 글자 (4.9:1) */
  --warm-wash: #FDF1E4;

  /* 3년 스코프 영역색 */
  --area-1: #D2575A;  /* 구원의 역사 */
  --area-2: #7464B2;  /* 교회와 사명 */
  --area-3: #6F8A2E;  /* 하나님의 사람들 */
  --area-4: #2F8FA3;  /* 예수님의 가르침 */

  --nuri: #2E8A06;

  --font: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;

  /* 타입 스케일 (1.25 비율, 본문 17px) */
  --t-xs: 0.8125rem;
  --t-sm: 0.9375rem;
  --t-base: 1.0625rem;
  --t-lg: 1.25rem;
  --t-xl: clamp(1.375rem, 1.1rem + 0.9vw, 1.625rem);
  --t-2xl: clamp(1.75rem, 1.3rem + 1.8vw, 2.5rem);
  --t-3xl: clamp(2.25rem, 1.4rem + 3.4vw, 4.25rem);

  --gutter: clamp(20px, 5vw, 56px);
  --max: 1200px;
  --section: clamp(72px, 9vw, 128px);

  --radius-s: 6px;
  --radius-l: 20px;

  --ease-out: cubic-bezier(.22, 1, .36, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 88px; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font);
  font-size: var(--t-base);
  line-height: 1.7;
  word-break: keep-all;
  overflow-wrap: anywhere;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss06";
}
img { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 3px; }
:focus-visible { outline: 3px solid var(--sync-text); outline-offset: 3px; border-radius: 4px; }
button { font: inherit; }

.skip { position: absolute; left: -9999px; top: 8px; background: var(--ink); color: var(--paper); padding: 10px 16px; border-radius: var(--radius-s); z-index: 100; }
.skip:focus { left: 8px; }

.wrap { max-width: calc(var(--max) + var(--gutter) * 2); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--section); }
.band { background: var(--mist); }

/* ---------- 타이포 ---------- */
.h1 { font-size: var(--t-3xl); font-weight: 700; line-height: 1.16; letter-spacing: -0.035em; text-wrap: balance; }
.h2 { font-size: var(--t-2xl); font-weight: 700; line-height: 1.25; letter-spacing: -0.028em; text-wrap: balance; }
.h3 { font-size: var(--t-xl); font-weight: 700; line-height: 1.35; letter-spacing: -0.02em; }
.lede { font-size: var(--t-lg); color: var(--ink-soft); line-height: 1.65; max-width: 34em; }
.small { font-size: var(--t-sm); color: var(--muted); }
.measure { max-width: 38em; }

/* ---------- 헤더 ---------- */
.site-head {
  position: sticky; top: 0; z-index: 50;
  background: color-mix(in srgb, var(--paper) 94%, transparent);
  border-bottom: 1px solid transparent;
  transition: border-color .2s;
}
.site-head.is-scrolled { border-bottom-color: var(--rule); }
.site-head .wrap { display: flex; align-items: center; gap: 24px; min-height: 72px; }
.brand { display: block; flex: none; }
.brand img { height: 22px; width: auto; }
.nav { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.nav a {
  text-decoration: none; font-size: var(--t-sm); font-weight: 500;
  padding: 10px 14px; border-radius: 999px; color: var(--ink-soft);
}
.nav a:hover { color: var(--ink); background: var(--mist); }
.nav a[aria-current="page"] { color: var(--ink); font-weight: 700; }
.nav .store {
  margin-left: 8px; color: var(--paper); background: var(--ink);
  display: inline-flex; align-items: center; gap: 6px; font-weight: 600;
}
.nav .store:hover { background: #1F2733; color: var(--paper); }
.ext { width: 13px; height: 13px; flex: none; }
.menu-btn { display: none; margin-left: auto; width: 44px; height: 44px; border: 0; background: transparent; border-radius: 999px; cursor: pointer; color: var(--ink); }
.menu-btn svg { width: 22px; height: 22px; margin: auto; }

/* ---------- 버튼·링크 ---------- */
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 52px; padding: 0 26px; border-radius: 999px; border: 0;
  font-size: var(--t-base); font-weight: 600; text-decoration: none; cursor: pointer;
  background: var(--ink); color: var(--paper);
  transition: background .15s, transform .15s var(--ease-out);
}
.btn:hover { background: #1F2733; }
.btn:active { transform: scale(.98); }
.btn--sync { background: var(--brand-sync); color: #08323F; }
.btn--sync:hover { background: #12A6C9; }
.btn--nuri { background: var(--nuri); color: #fff; }
.btn--nuri:hover { background: #267405; }
.textlink { font-weight: 600; color: var(--sync-text); text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--sync-text) 35%, transparent); }
.textlink:hover { text-decoration-color: currentColor; }

.tag { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-xs); font-weight: 600; padding: 4px 10px; border-radius: var(--radius-s); width: max-content; }
.tag--new { background: #E8F4DF; color: #2A6E0B; }
.tag--live { background: var(--sync-wash); color: var(--sync-text); }
.tag--soon { background: var(--warm-wash); color: var(--warm-text); }

/* ==========================================================================
   홈 히어로: 한 그림, 세 교실, 한 식탁
   ========================================================================== */
.hero { padding-block: clamp(40px, 6vw, 88px) var(--section); }
.hero-copy { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 32px 56px; align-items: start; }
.hero-copy .h1 { max-width: 13em; }
.hero-copy .side { display: grid; gap: 28px; padding-top: 10px; }

.sync-stage { margin-top: clamp(40px, 6vw, 72px); }
.sync-caption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 20px; font-size: var(--t-sm); color: var(--muted); margin-bottom: 14px; }
.sync-caption strong { color: var(--ink); font-weight: 600; margin-right: 6px; }
.sync-caption #lsn-title { color: var(--ink); }
.sync-caption .ref { margin-left: 6px; color: var(--sync-text); font-weight: 600; font-variant-numeric: tabular-nums; }
.rooms { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(8px, 1.2vw, 16px); }
.room { display: grid; grid-template-rows: auto 1fr; gap: 14px; will-change: transform; }
.room-art {
  aspect-ratio: 4 / 5; border-radius: var(--radius-l); overflow: hidden;
  background-image: var(--art, url(/assets/img/weeks/w1.jpg)); background-size: 300% auto; background-repeat: no-repeat;
  background-color: var(--mist);
}
.room:nth-child(1) .room-art { background-position: 0% 50%; }
.room:nth-child(2) .room-art { background-position: 50% 50%; }
.room:nth-child(3) .room-art { background-position: 100% 50%; }
.room-meta { display: grid; grid-template-columns: auto 1fr; gap: 2px 12px; align-items: center; }
.room-meta img { grid-row: span 2; width: auto; height: 40px; max-width: 96px; object-fit: contain; }
.room-meta b { font-size: var(--t-base); }
.room-meta span { font-size: var(--t-sm); color: var(--muted); }
.room-q { grid-column: 1 / -1; margin-top: 8px; font-size: var(--t-lg); font-weight: 600; letter-spacing: -0.015em; line-height: 1.45; }

.table-row {
  margin-top: clamp(16px, 2vw, 24px);
  display: flex; align-items: center; gap: 14px;
  padding: 18px 24px; border-radius: var(--radius-l);
  background: var(--warm-wash); color: #5B3A16;
  font-size: var(--t-base);
}
.table-row::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--brand-warm); flex: none; }
.table-row b { font-weight: 700; }

/* 싱크 연출: JS가 .is-syncing을 붙였다가 뗀다 */
.js .rooms.is-offset .room:nth-child(1) { transform: translateY(56px); }
.js .rooms.is-offset .room:nth-child(2) { transform: translateY(20px); }
.js .rooms.is-offset .room:nth-child(3) { transform: translateY(84px); }
.js .rooms.is-offset + .table-row { opacity: 0; transform: translateY(12px); }
.js .rooms .room { transition: transform 1.1s var(--ease-out); }
.js .rooms .room:nth-child(2) { transition-delay: .08s; }
.js .rooms .room:nth-child(3) { transition-delay: .16s; }
.js .table-row { transition: opacity .6s .9s, transform .6s .9s var(--ease-out); }

/* ==========================================================================
   믿음 문장
   ========================================================================== */
.creed { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 32px 64px; align-items: start; }
.creed-lines { display: grid; gap: 4px; }
.creed-lines p { font-size: var(--t-2xl); font-weight: 700; letter-spacing: -0.028em; line-height: 1.3; }
.creed-lines p span { color: var(--muted); font-weight: 500; }
.creed aside { display: grid; gap: 20px; padding-top: 10px; }

/* ==========================================================================
   3년 과정
   ========================================================================== */
.section-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px 40px; align-items: end; margin-bottom: clamp(32px, 4vw, 52px); }
.section-head > div { display: grid; gap: 14px; }
.years { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 24px); }
.year { display: grid; gap: 14px; }
.year-art { aspect-ratio: 16 / 10; border-radius: var(--radius-l); overflow: hidden; background: var(--mist); }
.year-art img { width: 100%; height: 100%; object-fit: cover; }
.months { display: grid; grid-template-columns: repeat(12, 1fr); gap: 3px; }
.months i { height: 10px; border-radius: 2px; }
.a1 { background: var(--area-1); } .a2 { background: var(--area-2); } .a3 { background: var(--area-3); } .a4 { background: var(--area-4); }
.year h3 { display: flex; align-items: baseline; gap: 10px; }
.year h3 small { font-size: var(--t-sm); font-weight: 500; color: var(--muted); }
.year p { color: var(--ink-soft); font-size: var(--t-sm); }
.legend { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 28px; font-size: var(--t-sm); color: var(--ink-soft); }
.legend span { display: inline-flex; align-items: center; gap: 8px; }
.legend i { width: 14px; height: 10px; border-radius: 2px; }

/* ==========================================================================
   두 가지 방식
   ========================================================================== */
.formats { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--rule); }
.format { display: grid; gap: 20px; align-content: start; padding: clamp(28px, 4vw, 48px) clamp(0px, 4vw, 48px) 8px 0; }
.format + .format { border-left: 1px solid var(--rule); padding-left: clamp(24px, 4vw, 48px); padding-right: 0; }
.format-vis { height: 220px; display: grid; place-items: center start; }
.format ul { display: grid; gap: 10px; }
.format li { display: grid; grid-template-columns: 18px 1fr; gap: 10px; color: var(--ink-soft); }
.format li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--brand-sync); margin-top: .7em; }
.format .price { font-size: var(--t-sm); color: var(--muted); }
.format .price b { font-size: var(--t-lg); color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; }

/* 책 목업 */
.books { position: relative; width: 300px; max-width: 100%; aspect-ratio: 1.2 / 1; }
.book { position: absolute; overflow: hidden; border-radius: 2px 8px 8px 2px; background: #fff; box-shadow: 0 1px 2px rgba(45,55,72,.18), 0 22px 40px -22px rgba(45,55,72,.55); }
.book .cov { position: absolute; inset: 0; background: url(/assets/img/year1.jpg) center / cover; }
.book .spine { position: absolute; inset: 0 auto 0 0; width: 5%; background: linear-gradient(90deg, rgba(0,0,0,.18), transparent); }
.book .ttl { position: absolute; left: 10%; top: 9%; right: 10%; font-weight: 700; color: var(--ink); letter-spacing: -0.02em; line-height: 1.2; font-size: clamp(11px, 1.3vw, 15px); }
.book .ttl small { display: block; font-size: .7em; font-weight: 600; color: var(--ink-soft); margin-bottom: 2px; }
.book .seal { position: absolute; right: 8%; bottom: 7%; width: 24%; aspect-ratio: 1; border-radius: 50%; background: #fff; display: grid; place-items: center; box-shadow: 0 2px 6px rgba(0,0,0,.15); }
.book .seal img { width: 80%; }
.book--s { width: 50%; aspect-ratio: 188 / 257; right: 2%; top: 0; z-index: 2; }
.book--t { width: 64%; aspect-ratio: 257 / 188; left: 0; bottom: 4%; transform: rotate(-4deg); }
.book--t .cov { background-position: left 40%; }

.files { position: relative; width: 210px; height: 170px; }
.files span { position: absolute; width: 112px; height: 144px; border-radius: 10px; background: #fff; border: 1px solid var(--rule); box-shadow: 0 18px 30px -22px rgba(45,55,72,.6); display: grid; place-items: end start; padding: 14px; font-size: var(--t-sm); font-weight: 700; }
.files span::before { content: ""; position: absolute; left: 14px; right: 14px; top: 16px; height: 46px; border-radius: 4px; background: var(--c); opacity: .9; }
.files span:nth-child(1) { left: 0; top: 18px; transform: rotate(-7deg); --c: var(--area-1); }
.files span:nth-child(2) { left: 48px; top: 4px; --c: var(--brand-sync); }
.files span:nth-child(3) { left: 96px; top: 20px; transform: rotate(7deg); --c: var(--brand-warm); }

/* ==========================================================================
   훈련·칼럼
   ========================================================================== */
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 48px clamp(40px, 6vw, 96px); }
.split > div { display: grid; gap: 20px; align-content: start; }
.notes { border-top: 1px solid var(--rule); }
.notes a { display: grid; grid-template-columns: 1fr auto; gap: 4px 20px; padding-block: 22px; border-bottom: 1px solid var(--rule); text-decoration: none; }
.notes a:hover h3 { color: var(--sync-text); }
.notes h3 { font-size: var(--t-lg); font-weight: 600; letter-spacing: -0.015em; line-height: 1.45; transition: color .15s; }
.notes span { font-size: var(--t-sm); color: var(--muted); }
.notes svg { width: 20px; height: 20px; color: var(--sync-text); grid-row: span 2; align-self: center; }

/* ==========================================================================
   소식 받기
   ========================================================================== */
.signup { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px 64px; align-items: end; }
.signup form { display: grid; grid-template-columns: 1fr auto; gap: 10px; }
.field { display: grid; gap: 8px; }
.field label { font-size: var(--t-sm); font-weight: 600; }
.input {
  font: inherit; font-size: var(--t-base); min-height: 52px; padding: 0 18px;
  border: 1px solid var(--rule); border-radius: 12px; background: #fff; color: var(--ink); width: 100%;
}
.input:focus { outline: 3px solid color-mix(in srgb, var(--brand-sync) 45%, transparent); outline-offset: 0; border-color: var(--sync-text); }
.signup .field { grid-column: 1 / -1; }
.signup .hint { grid-column: 1 / -1; font-size: var(--t-xs); color: var(--muted); }
.hp { position: absolute; left: -9999px; }

/* ==========================================================================
   하위 페이지 공통
   ========================================================================== */
.page-hero { padding-block: clamp(48px, 7vw, 104px) clamp(40px, 5vw, 72px); }
.page-hero .wrap { display: grid; gap: 24px; }
.crumbs { font-size: var(--t-sm); color: var(--muted); }
.crumbs a { color: inherit; }

/* 소개: 이름 */
.name { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--rule); margin-top: 16px; }
.name > div { padding: 32px 32px 8px 0; display: grid; gap: 12px; }
.name > div + div { border-left: 1px solid var(--rule); padding-left: 32px; }
.name .word { font-size: clamp(3rem, 2rem + 4vw, 5.5rem); font-weight: 800; letter-spacing: -0.05em; line-height: 1; }
.name .word--sync { color: var(--brand-sync); }
.name .word--wise { color: var(--brand-wise); }

/* 소개: R.I.G.H.T */
.right-list { border-top: 1px solid var(--rule); }
.right-list > div { display: grid; grid-template-columns: 120px minmax(0, 1fr) minmax(0, 1.4fr); gap: 12px 32px; padding-block: 28px; border-bottom: 1px solid var(--rule); align-items: baseline; }
.right-list dt { display: contents; }
.right-list .letter { font-size: clamp(2.5rem, 2rem + 2vw, 3.75rem); font-weight: 800; color: var(--brand-sync); line-height: .9; letter-spacing: -0.04em; }
.right-list .ko { font-size: var(--t-xl); font-weight: 700; letter-spacing: -0.02em; }
.right-list .ko small { display: block; font-size: var(--t-sm); font-weight: 500; color: var(--muted); letter-spacing: 0; margin-top: 4px; }
.right-list dd { color: var(--ink-soft); }

/* 부서 */
.depts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.dept { display: grid; gap: 16px; align-content: start; padding-top: 24px; border-top: 3px solid var(--c, var(--brand-sync)); }
.dept-top { display: flex; align-items: center; gap: 14px; }
.dept-top img { width: auto; height: 56px; max-width: 132px; object-fit: contain; }
.dept-top b { font-size: var(--t-xl); display: block; letter-spacing: -0.02em; }
.dept-top span { font-size: var(--t-sm); color: var(--muted); }
.dept .axis { font-size: var(--t-2xl); font-weight: 700; letter-spacing: -0.03em; line-height: 1.2; }
.dept p { color: var(--ink-soft); }
.dept .points { display: flex; flex-wrap: wrap; gap: 6px; }
.dept .points span { font-size: var(--t-sm); padding: 4px 10px; border-radius: var(--radius-s); background: var(--mist); }
.dept .shop { font-size: var(--t-sm); }

/* 스코프 표 */
.scope-wrap { overflow-x: auto; margin-top: 28px; -webkit-overflow-scrolling: touch; }
.scope { border-collapse: separate; border-spacing: 3px; min-width: 980px; width: 100%; font-size: var(--t-xs); line-height: 1.4; }
.scope th { font-weight: 600; text-align: left; color: var(--muted); padding: 6px 4px; white-space: nowrap; }
.scope tbody th { color: var(--ink); font-size: var(--t-sm); padding-right: 12px; }
.scope td { padding: 10px 8px; border-radius: 4px; color: #fff; font-weight: 500; vertical-align: top; width: 7.6%; }
details.more > summary { cursor: pointer; font-weight: 600; color: var(--sync-text); list-style: none; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; }
details.more > summary::-webkit-details-marker { display: none; }
details.more > summary::after { content: "+"; font-size: 1.2em; font-weight: 400; }
details.more[open] > summary::after { content: "−"; }

/* 선택 도우미 */
.picker { margin-top: clamp(40px, 5vw, 64px); padding: clamp(24px, 4vw, 40px); border-radius: var(--radius-l); background: var(--mist); display: grid; gap: 4px; }
.picker .q { padding: 16px 0; border-top: 1px solid var(--mist-deep); display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px 24px; }
.picker .q p { font-weight: 500; }
@media (max-width: 560px) { .picker .q { grid-template-columns: 1fr; } }
.seg { display: inline-flex; background: #fff; border-radius: 999px; padding: 4px; border: 1px solid var(--rule); }
.seg label { position: relative; }
.seg input { position: absolute; opacity: 0; inset: 0; cursor: pointer; margin: 0; }
.seg span { display: block; min-width: 76px; text-align: center; padding: 9px 18px; border-radius: 999px; font-size: var(--t-sm); font-weight: 500; }
.seg input:checked + span { background: var(--ink); color: var(--paper); }
.seg input:focus-visible + span { outline: 3px solid var(--sync-text); outline-offset: 1px; }
.verdict { margin-top: 12px; font-size: var(--t-lg); font-weight: 600; min-height: 1.6em; }

/* 누리 교재 */
.book-hero { background: #EEF6E8; }
.book-hero .wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: center; }
.book-hero .books { width: min(460px, 100%); justify-self: center; }
.specs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid #CFE0C4; }
.specs > div { padding: 14px 0; border-bottom: 1px solid #CFE0C4; display: grid; gap: 2px; }
.specs dt { font-size: var(--t-xs); color: #4F6A43; }
.specs dd { font-weight: 600; }

.flow { display: flex; height: 76px; border-radius: 14px; overflow: hidden; color: #fff; }
.flow > div { display: grid; align-content: center; padding-inline: 16px; min-width: 0; }
.flow b { font-size: var(--t-lg); line-height: 1.2; }
.flow small { font-size: var(--t-xs); opacity: .92; white-space: nowrap; }
.flow .f-g { flex: 20; background: var(--nuri); }
.flow .f-b { flex: 15; background: #5AA82F; }
.flow .f-s { flex: 30; background: #F07A1A; }
.flow .f-p { flex: 5; background: var(--brand-warm); color: #4A2A08; padding-inline: 6px; }
.flow-scale { display: flex; justify-content: space-between; font-size: var(--t-xs); color: var(--muted); margin-top: 8px; font-variant-numeric: tabular-nums; }
.flow-key { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 24px; }
.flow-key div { display: grid; gap: 2px; font-size: var(--t-sm); color: var(--ink-soft); }
.flow-key b { color: var(--ink); font-size: var(--t-base); }

.spreads { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(16px, 2vw, 28px); align-items: start; }
.spreads img { border-radius: 10px; box-shadow: 0 1px 2px rgba(45,55,72,.12), 0 24px 48px -28px rgba(45,55,72,.55); }
.spreads figcaption { margin-top: 12px; font-size: var(--t-sm); color: var(--muted); }

.home-steps { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 32px clamp(32px, 6vw, 88px); align-items: center; }
.home-steps img { width: min(280px, 60vw); border-radius: 8px; box-shadow: 0 24px 48px -28px rgba(45,55,72,.55); }
.steps { counter-reset: s; display: grid; gap: 0; margin-top: 28px; border-top: 1px solid var(--rule); }
.steps li { counter-increment: s; display: grid; grid-template-columns: 48px 1fr; gap: 16px; padding-block: 18px; border-bottom: 1px solid var(--rule); align-items: baseline; }
.steps li::before { content: counter(s); font-size: var(--t-xl); font-weight: 800; color: var(--nuri); }

.order { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px clamp(40px, 6vw, 88px); }
.channels { display: grid; border-top: 1px solid var(--rule); }
.channels > div { display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; padding-block: 20px; border-bottom: 1px solid var(--rule); align-items: center; }
.channels b { font-size: var(--t-lg); }
.channels span { font-size: var(--t-sm); color: var(--muted); grid-column: 1; }
.channels .tag { grid-row: 1 / span 2; grid-column: 2; }
.qty { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-content: start; padding: clamp(24px, 3vw, 36px); border-radius: var(--radius-l); background: #fff; border: 1px solid var(--rule); }
.qty .full { grid-column: 1 / -1; }

.faq { border-top: 1px solid var(--rule); max-width: 820px; }
.faq details { border-bottom: 1px solid var(--rule); }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 16px; padding-block: 22px; font-weight: 600; font-size: var(--t-lg); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--muted); font-weight: 400; }
.faq details[open] summary::after { content: "−"; }
.faq details p { padding-bottom: 22px; color: var(--ink-soft); max-width: 40em; }

/* 사람들 */
.people { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 24px 64px; }
.people .names { font-size: var(--t-lg); line-height: 2; color: var(--ink-soft); }
.people .names b { color: var(--ink); }

/* ---------- 푸터 ---------- */
.site-foot { border-top: 1px solid var(--rule); padding-block: 56px 40px; font-size: var(--t-sm); color: var(--muted); }
.foot-top { display: grid; grid-template-columns: minmax(0, 1.3fr) repeat(3, minmax(0, 1fr)); gap: 32px; padding-bottom: 40px; }
.foot-top img { height: 28px; width: auto; }
.foot-top h2 { font-size: var(--t-sm); font-weight: 700; color: var(--ink); margin-bottom: 12px; }
.foot-top ul { display: grid; gap: 8px; }
.foot-top a { text-decoration: none; color: var(--ink-soft); }
.foot-top a:hover { color: var(--ink); text-decoration: underline; }
.foot-legal { border-top: 1px solid var(--rule); padding-top: 24px; display: grid; gap: 4px; font-size: var(--t-xs); }

/* ==========================================================================
   반응형
   ========================================================================== */
@media (max-width: 960px) {
  .hero-copy, .creed, .split, .signup, .book-hero .wrap, .order, .people, .home-steps { grid-template-columns: 1fr; }
  .section-head { grid-template-columns: 1fr; }
  .years { grid-template-columns: 1fr; gap: 40px; }
  .formats { grid-template-columns: 1fr; }
  .format, .format + .format { padding: 36px 0 8px; border-left: 0; }
  .format + .format { border-top: 1px solid var(--rule); }
  .depts { grid-template-columns: 1fr; gap: 48px; }
  .right-list > div { grid-template-columns: 72px minmax(0, 1fr); }
  .right-list dd { grid-column: 2; }
  .foot-top { grid-template-columns: 1fr 1fr; }
  .spreads { grid-template-columns: 1fr; }
  .book-hero .books { order: 2; max-width: 360px; }
}
@media (max-width: 760px) {
  .menu-btn { display: grid; }
  .nav { display: none; position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--gutter) 20px; background: var(--paper); border-bottom: 1px solid var(--rule); }
  .nav.is-open { display: flex; }
  .nav a { padding: 14px 4px; border-radius: 0; font-size: var(--t-base); border-bottom: 1px solid var(--mist); }
  .nav .store { margin: 12px 0 0; justify-content: center; border-radius: 999px; padding: 14px; border: 0; }
  .room-q { font-size: var(--t-sm); }
  .room-meta { grid-template-columns: 1fr; }
  .room-meta img { grid-row: auto; height: 32px; }
  .room-art { aspect-ratio: 3 / 5; }
  .table-row { padding: 14px 18px; font-size: var(--t-sm); }
  .name { grid-template-columns: 1fr; }
  .name > div + div { border-left: 0; border-top: 1px solid var(--rule); padding-left: 0; }
  .flow-key { grid-template-columns: 1fr 1fr; }
  .flow .f-p b, .flow .f-p small { display: none; }
  .signup form { grid-template-columns: 1fr; }
  .qty { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ==========================================================================
   훈련: 강의 목록과 요청서
   ========================================================================== */
.tracks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.track { display: grid; gap: 20px; align-content: start; padding-top: 22px; border-top: 3px solid var(--c); }
.track header { display: grid; gap: 4px; }
.track-no { font-size: var(--t-sm); font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
.track header p { font-size: var(--t-sm); color: var(--muted); }
.track ul { display: grid; gap: 6px; }
.lec {
  width: 100%; display: grid; grid-template-columns: 40px 1fr 20px; align-items: center; gap: 8px;
  min-height: 52px; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--rule);
  background: var(--paper); color: var(--ink); font-size: var(--t-base); font-weight: 500; text-align: left; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.lec span { font-size: var(--t-sm); color: var(--muted); font-variant-numeric: tabular-nums; align-self: start; padding-top: 1px; }
.lec b { font-weight: 600; display: grid; gap: 2px; line-height: 1.45; }
.lec small { font-size: var(--t-sm); font-weight: 400; color: var(--ink-soft); line-height: 1.5; }
.lec::after { content: "+"; color: var(--muted); font-size: 1.2em; justify-self: end; }
.lec:hover { border-color: var(--ink); }
.lec[aria-pressed="true"] { border-color: var(--c); background: color-mix(in srgb, var(--c) 10%, var(--paper)); }
.lec[aria-pressed="true"]::after { content: "✓"; color: var(--ink); }

.request { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 40px clamp(40px, 6vw, 88px); align-items: start; }
.request-side { display: grid; gap: 22px; position: sticky; top: 96px; }
.picked ul { display: grid; gap: 4px; margin-top: 8px; }
.picked li { font-size: var(--t-sm); }
.req { display: grid; gap: 24px; }
.lec-pick { border: 0; margin: 0; padding: 0; display: grid; gap: 12px; }
.lec-pick legend { font-weight: 600; font-size: var(--t-sm); padding: 0; margin-bottom: 12px; }
.lec-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 16px; }
.lec-grid label, .agree { display: flex; align-items: center; gap: 10px; min-height: 40px; font-size: var(--t-sm); cursor: pointer; }
.lec-grid .wide { grid-column: 1 / -1; }
.lec-grid input, .agree input { width: 18px; height: 18px; accent-color: var(--ink); flex: none; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 16px; }
.grid2 .full { grid-column: 1 / -1; }
.textarea { min-height: 140px; padding: 14px 18px; resize: vertical; line-height: 1.6; }
.req-mark { color: var(--warm-text); }
.err { font-size: var(--t-sm); color: #B42318; font-weight: 500; }
.input[aria-invalid="true"] { border-color: #B42318; }

@media (max-width: 960px) {
  .tracks, .request { grid-template-columns: 1fr; }
  .tracks { gap: 40px; }
  .request-side { position: static; }
}
@media (max-width: 560px) {
  .lec-grid, .grid2 { grid-template-columns: 1fr; }
}

/* 연구소: 대표 소개 */
.director { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 32px clamp(40px, 6vw, 88px); align-items: start; }
.director-head { display: grid; gap: 14px; position: sticky; top: 96px; }
.director-photo { width: 100%; max-width: 360px; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius-l); margin-bottom: 10px; background: var(--mist); }
.director-body { display: grid; gap: 40px; }
.cv { border-top: 1px solid var(--rule); }
.cv > div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 16px; padding-block: 18px; border-bottom: 1px solid var(--rule); }
.cv dt { font-size: var(--t-sm); font-weight: 600; color: var(--muted); padding-top: 2px; }
.cv dd { display: grid; gap: 4px; }
cite { font-style: normal; }
.cv cite::before, .book-quotes cite::before { content: "『"; }
.cv cite::after, .book-quotes cite::after { content: "』"; }
.book-quotes { display: grid; gap: 22px; padding: clamp(24px, 3vw, 36px); border-radius: var(--radius-l); background: var(--mist); }
.book-quotes figcaption { font-size: var(--t-sm); font-weight: 600; }
.book-quotes blockquote { margin: 0; display: grid; gap: 6px; padding-left: 16px; border-left: 3px solid var(--brand-sync); }
.book-quotes blockquote p { font-size: var(--t-lg); line-height: 1.6; letter-spacing: -0.01em; }
.book-quotes footer { font-size: var(--t-sm); color: var(--muted); }
@media (max-width: 960px) {
  .director { grid-template-columns: 1fr; }
  .director-head { position: static; }
}

/* 교재와 자료: 서가 */
.shelf-note { text-align: right; }
.shelf { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 40px); }
.shelf-year { display: grid; gap: 14px; align-content: start; }
.shelf-yhead { font-size: var(--t-sm); color: var(--muted); }
.shelf-yhead b { color: var(--ink); font-size: var(--t-base); margin-right: 6px; }
.shelf-grid { display: grid; grid-template-columns: 40px repeat(4, minmax(0, 1fr)); gap: 8px; align-items: center; }
.shelf-q { font-size: var(--t-xs); color: var(--muted); text-align: center; }
.shelf-dept { font-size: var(--t-sm); font-weight: 700; color: var(--ink); border-left: 3px solid var(--c); padding-left: 6px; line-height: 1.2; }
.tile { position: relative; display: block; aspect-ratio: 188 / 257; border-radius: 3px 6px 6px 3px; overflow: hidden; }
.tile--empty { border: 1.5px dashed #C3CED5; background: color-mix(in srgb, var(--paper) 60%, transparent); }
.tile--book { box-shadow: 0 1px 2px rgba(45,55,72,.2), 0 12px 20px -12px rgba(45,55,72,.55); transition: transform .2s var(--ease-out); }
.tile--book:hover { transform: translateY(-3px); }
.tile-cov { position: absolute; inset: 0; background-size: cover; background-position: center; }
.tile-cov::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 6%; background: linear-gradient(90deg, rgba(0,0,0,.2), transparent); }
.tile-st { position: absolute; left: 4px; right: 4px; bottom: 4px; font-size: 10px; font-weight: 700; text-align: center; color: #fff; background: var(--c); border-radius: 3px; padding: 2px 0; }
.next { display: grid; gap: 16px; justify-items: start; padding-top: 8px; border-top: 1px solid var(--rule); padding-block: 40px 0; }
@media (max-width: 960px) {
  .shelf { grid-template-columns: 1fr; gap: 32px; }
  .shelf-grid { max-width: 420px; }
  .shelf-note { text-align: left; }
}

/* 처음 오신 분께 (/start/) */
.st-hero { padding-block: clamp(48px, 7vw, 104px) var(--section); }
.st-hero-in { display: grid; gap: 28px; }
.st-hero .h1 { max-width: 15em; }
.st-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px clamp(32px, 5vw, 72px); align-items: start; }
.st-prose { display: grid; gap: 16px; color: var(--ink-soft); max-width: 38em; }
.st-quote { margin: 0; padding: clamp(24px, 3vw, 36px); border-radius: var(--radius-l); background: var(--mist); display: grid; gap: 14px; }
.st-quote blockquote { margin: 0; }
.st-quote blockquote p { font-size: var(--t-xl); font-weight: 600; line-height: 1.5; letter-spacing: -0.02em; color: var(--ink); }
.st-quote figcaption { font-size: var(--t-sm); color: var(--muted); }
.st-release { font-size: var(--t-2xl); font-weight: 700; letter-spacing: -0.028em; color: var(--sync-text); }
.st-feature { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 32px clamp(32px, 5vw, 72px); align-items: center; padding-block: clamp(32px, 4vw, 56px); border-top: 1px solid var(--rule); }
.st-feature-text { display: grid; gap: 14px; }
.st-feature-text p { color: var(--ink-soft); }
.st-feature--flip .st-feature-text { order: 2; }
.st-feature-vis { display: grid; place-items: center; min-height: 220px; }
.st-feature-vis img { border-radius: 10px; box-shadow: 0 1px 2px rgba(45,55,72,.12), 0 24px 48px -28px rgba(45,55,72,.55); }
.easel { display: grid; grid-template-columns: 1fr 14px 1fr; align-items: stretch; width: min(480px, 100%); }
.easel-side { display: grid; gap: 10px; justify-items: center; }
.easel-side b { font-size: var(--t-sm); font-weight: 600; color: var(--muted); }
.easel-art, .easel-lines { width: 100%; aspect-ratio: 257 / 188; border-radius: 6px; box-shadow: 0 18px 30px -20px rgba(45,55,72,.6); }
.easel-art { background: url(/assets/img/weeks/w1.jpg) center / cover; }
.easel-lines { background: #fff; border: 1px solid var(--rule); display: grid; align-content: center; gap: 9%; padding: 12%; }
.easel-lines i { display: block; height: 6px; border-radius: 3px; background: var(--mist-deep); }
.easel-lines i:nth-child(2n) { width: 80%; }
.easel-lines i:first-child { background: var(--nuri); width: 45%; }
.easel-spring { align-self: start; height: calc((100% - 30px)); margin-top: 0; background: repeating-linear-gradient(180deg, #8C96A0 0 4px, transparent 4px 10px); border-radius: 4px; }
.st-video { margin: clamp(32px, 4vw, 56px) 0 0; display: grid; gap: 10px; }
.st-video video { width: 100%; aspect-ratio: 16 / 9; border-radius: var(--radius-l); background: var(--ink); }
.st-video figcaption { font-size: var(--t-sm); color: var(--muted); }
.st-meal { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 32px clamp(40px, 6vw, 88px); }
.st-big { font-size: var(--t-2xl); font-weight: 700; letter-spacing: -0.028em; color: var(--ink); line-height: 1.3; }
.free { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 40px clamp(40px, 6vw, 88px); align-items: start; }
.free-side { display: grid; gap: 18px; }
.free-list { display: grid; gap: 8px; }
.free-list li { display: grid; grid-template-columns: 18px 1fr; gap: 10px; }
.free-list li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--brand-sync); margin-top: .7em; }
select.input { appearance: auto; }
.dl-list { display: grid; border-top: 1px solid var(--rule); margin-top: 24px; }
.dl-list a { display: flex; justify-content: space-between; gap: 16px; padding-block: 20px; border-bottom: 1px solid var(--rule); text-decoration: none; }
.dl-list a:hover b { color: var(--sync-text); }
.dl-list span { color: var(--muted); font-size: var(--t-sm); }
.start-band { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px 40px; align-items: center; padding: clamp(28px, 4vw, 44px); border-radius: var(--radius-l); background: var(--sync-wash); }
.start-band .h3 { font-size: var(--t-2xl); letter-spacing: -0.028em; }
.film { margin: 0; display: grid; gap: 10px; }
.film video { width: 100%; aspect-ratio: 16 / 9; border-radius: var(--radius-l); background: var(--ink); }
.film figcaption { font-size: var(--t-sm); color: var(--muted); }
@media (max-width: 960px) {
  .st-cols, .st-feature, .st-meal, .free, .start-band { grid-template-columns: 1fr; }
  .st-feature--flip .st-feature-text { order: 0; }
}

/* 3년 과정 카드: 모바일은 썸네일 + 글 가로 목록 */
@media (max-width: 760px) {
  .years { gap: 0; border-top: 1px solid var(--rule); }
  .year { grid-template-columns: 104px minmax(0, 1fr); column-gap: 16px; row-gap: 6px; align-items: center; padding-block: 16px; border-bottom: 1px solid var(--rule); }
  .year-art { grid-row: 1 / span 3; aspect-ratio: 1; border-radius: 12px; align-self: start; }
  .year .months { grid-column: 2; gap: 2px; }
  .year .months i { height: 6px; }
  .year h3 { grid-column: 2; font-size: var(--t-lg); }
  .year p { grid-column: 2; }
  .year:hover .year-art img { transform: none; }
  .year-art + h3:last-child { grid-row: 1 / span 3; align-self: center; }
}

/* 누리 교재: 필요한 것 두 가지 */
.needs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 2vw, 24px); }
.need { display: grid; gap: 20px; align-content: start; padding: clamp(22px, 3vw, 32px); border-radius: var(--radius-l); background: var(--paper); border-top: 4px solid var(--c); }
.need-top { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; }
.need-no { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; color: #fff; background: var(--c); }
.need-dl { display: grid; border-top: 1px solid var(--rule); }
.need-dl > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px; padding-block: 14px; border-bottom: 1px solid var(--rule); }
.need-dl dt { font-size: var(--t-sm); color: var(--muted); font-weight: 600; }
.need-dl dd { color: var(--ink); }
.need-example { margin-top: 20px; display: grid; gap: 10px; padding: clamp(20px, 3vw, 28px); border-radius: var(--radius-l); border: 1.5px dashed #C3CED5; }
.need-sum { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; font-size: var(--t-lg); }
.need-sum b { font-size: var(--t-xl); font-variant-numeric: tabular-nums; }
.need-sum > span[aria-hidden] { color: var(--muted); }
@media (max-width: 760px) {
  .needs { grid-template-columns: 1fr; }
  .need-dl > div { grid-template-columns: 1fr; gap: 2px; }
}

/* 헤드라인 강조: 브랜드 시안 계열, 큰 글씨 대비 3:1 이상 */
.hl { color: #0E9CC2; }

/* 홈 세 교실: 링크 */
a.room { text-decoration: none; color: inherit; border-radius: var(--radius-l); }
a.room .room-art { transition: transform .35s var(--ease-out), box-shadow .35s; }
a.room:hover .room-art { box-shadow: 0 18px 36px -20px rgba(45,55,72,.5); }
a.room:hover .room-q { color: var(--sync-text); }
a.room .room-q::after { content: " →"; color: var(--sync-text); opacity: 0; transition: opacity .2s; }
a.room:hover .room-q::after, a.room:focus-visible .room-q::after { opacity: 1; }
.dlink { text-decoration: none; }
.dlink:hover { color: var(--sync-text); text-decoration: underline; }

/* 부서 페이지 */
.dhero-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 40px clamp(32px, 5vw, 72px); align-items: center; }
.dhero-text { display: grid; gap: 18px; justify-items: start; }
.dlogo { height: clamp(64px, 8vw, 96px); width: auto; }
.dage { font-size: var(--t-sm); font-weight: 600; color: var(--c); }
.dhero .h1 { font-size: var(--t-2xl); max-width: 16em; }
.yt { display: grid; gap: 10px; }
.yt-btn, .yt iframe { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--radius-l); }
.yt-btn { position: relative; cursor: pointer; background: var(--ink) center / cover; display: grid; place-items: center; }
.yt-play { width: 76px; height: 54px; border-radius: 14px; background: rgba(0,0,0,.72); position: relative; transition: background .15s; }
.yt-play::after { content: ""; position: absolute; left: 31px; top: 16px; border-style: solid; border-width: 11px 0 11px 19px; border-color: transparent transparent transparent #fff; }
.yt-btn:hover .yt-play { background: #E52D27; }
.dknow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2vw, 22px); }
.dknow > div { background: var(--paper); border-radius: var(--radius-l); padding: clamp(20px, 3vw, 28px); display: grid; gap: 12px; align-content: start; border-top: 3px solid var(--c); }
.dknow h3 { font-size: var(--t-sm); color: var(--c); }
.dknow ul { display: grid; gap: 8px; }
.dknow li, .dknow p { color: var(--ink); line-height: 1.6; }
.dpoints { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(14px, 2vw, 22px); }
.dpoints article { display: grid; gap: 12px; padding: clamp(22px, 3vw, 32px); border-radius: var(--radius-l); background: var(--ink); color: var(--paper); }
.dpoints span { font-size: var(--t-sm); font-weight: 700; color: var(--brand-warm); }
.dpoints p { color: #C9D2DB; }
.dshelf { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 3vw, 36px); }
.dshelf-year { display: grid; gap: 10px; }
.dshelf-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.dothers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; max-width: 760px; }
.dother { display: flex; align-items: center; gap: 16px; padding: 18px 20px; border-radius: var(--radius-l); border: 1px solid var(--rule); text-decoration: none; transition: border-color .15s; }
.dother:hover { border-color: var(--c); }
.dother img { height: 40px; width: auto; max-width: 110px; object-fit: contain; }
.dother span { display: grid; font-size: var(--t-sm); color: var(--muted); }
.dother b { font-size: var(--t-lg); color: var(--ink); }
@media (max-width: 960px) {
  .dhero-in, .dknow, .dpoints, .dshelf { grid-template-columns: 1fr; }
  .dshelf-row { max-width: 360px; }
}
@media (max-width: 560px) { .dothers { grid-template-columns: 1fr; } }

/* G.B.S 한 줄 요약 */
.gbs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 8px; counter-reset: none; }
.gbs li { display: grid; grid-template-columns: 44px 1fr; gap: 12px; align-items: start; padding: 16px; border-radius: 14px; background: var(--mist); }
.gbs b { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: var(--t-lg); font-weight: 800; color: #fff; background: var(--nuri); }
.gbs li:nth-child(2) b { background: #4FA62A; }
.gbs li:nth-child(3) b { background: #F07A1A; }
.gbs span { display: grid; gap: 2px; font-size: var(--t-sm); color: var(--ink-soft); line-height: 1.5; }
.gbs strong { font-size: var(--t-base); color: var(--ink); }
@media (max-width: 760px) { .gbs { grid-template-columns: 1fr; } }

/* 새 표지 (누리 1년차 1분기) */
.book--s .cov { background-image: url(/assets/img/cover-nuri-1-1-student.jpg); background-position: center; }
.book--t .cov { background-image: url(/assets/img/cover-nuri-1-1-teacher.jpg); background-position: center; }
.book .ttl, .book .seal, .book .tag { display: none; }

/* 강의 요청: 시안 B (먹색 안내판) */
#request { background: var(--mist); }
#request .request-side { background: var(--ink); color: var(--paper); border-radius: var(--radius-l); padding: clamp(24px, 3vw, 36px); }
#request .request-side .h2 { color: #fff; }
#request .request-side .lede, #request .request-side .small, #request .request-side .picked li { color: #C9D2DB; }
#request .request-side .picked > .small { color: #fff; }
#request .req { background: #fff; border-radius: var(--radius-l); padding: clamp(22px, 3vw, 36px); box-shadow: 0 1px 2px rgba(45,55,72,.08), 0 18px 40px -28px rgba(45,55,72,.35); }

/* 칼럼 */
.col-filter { display: flex; flex-wrap: wrap; gap: 8px; }
.col-filter button { min-height: 40px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--rule); background: var(--paper); font-weight: 600; font-size: var(--t-sm); color: var(--ink-soft); cursor: pointer; }
.col-filter button[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.col-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.col-list li[hidden] { display: none; }
.col-list a { display: grid; gap: 10px; align-content: start; height: 100%; padding: clamp(20px, 3vw, 28px); border-radius: var(--radius-l); border: 1px solid var(--rule); text-decoration: none; transition: border-color .15s, box-shadow .15s; }
.col-list a:hover { border-color: var(--sync-text); box-shadow: 0 16px 32px -24px rgba(45,55,72,.45); }
.col-meta { display: flex; gap: 10px; align-items: center; font-size: var(--t-sm); color: var(--muted); }
.col-cat { font-weight: 700; color: var(--sync-text); }
li[data-cat="가정예배 자료"] .col-cat { color: var(--warm-text); }
.col-list h2 { font-size: var(--t-lg); font-weight: 700; letter-spacing: -0.015em; line-height: 1.45; }
.col-list p { color: var(--ink-soft); font-size: var(--t-sm); }
.col-go { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-sm); font-weight: 600; color: var(--sync-text); margin-top: 4px; }
.col-go svg { width: 16px; height: 16px; }
@media (max-width: 760px) { .col-list { grid-template-columns: 1fr; } }

.site-foot { padding-bottom: 96px; }

/* FAQ */
.faq-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.faq-nav a { min-height: 40px; display: inline-flex; align-items: center; padding: 0 16px; border-radius: 999px; border: 1px solid var(--rule); text-decoration: none; font-size: var(--t-sm); font-weight: 600; color: var(--ink-soft); }
.faq-nav a:hover { border-color: var(--ink); color: var(--ink); }
.faq-wrap { display: grid; gap: clamp(40px, 5vw, 64px); max-width: 880px; }
.faq-group { display: grid; gap: 12px; scroll-margin-top: 96px; }
.faq-group .faq { max-width: none; }
.tbd-tag { margin-left: auto; margin-right: 12px; font-size: var(--t-xs); font-weight: 700; color: var(--warm-text); background: var(--warm-wash); padding: 3px 9px; border-radius: 6px; white-space: nowrap; align-self: center; }
.faq details.tbd summary { color: var(--ink-soft); }
