/* ridlab base styles — 따뜻한 에디토리얼 (시안 v3). tokens.css 먼저 로드. */

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable;}
/* ↑ 스크롤바 공간을 항상 예약 — 짧은 페이지(스크롤바 없음)와 긴 페이지 간
   중앙정렬 콘텐츠·헤더가 좌우로 밀리는 현상(스크롤바 reflow) 방지 */

/* --- 접근성 --- */
:focus-visible{outline:2px solid var(--c-open);outline-offset:2px;border-radius:2px;}
main:focus{outline:none;}
.skip-link{
  position:absolute;left:8px;top:-48px;z-index:1000;
  background:var(--ink);color:#fff;padding:.6em 1em;border-radius:var(--r-sm);
  text-decoration:none;transition:top .15s ease;
}
.skip-link:focus{top:8px;}
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  font-size:17px;
  line-height:1.65;
  background-color:var(--paper);
  min-height:100dvh;   /* 모바일 주소창 축소를 따라간다(구 100vh는 항상 최대높이) */
  display:flex;flex-direction:column;
}
/* 색면 팔레트(2026-08-10) — 바탕은 순백 한 장. 구 라디얼 그라데이션 레이어는 걷어냈다.
   깊이는 그라데이션이 아니라 면(흰/민트/제이드)과 헤어라인이 만든다. */

/* --- 타이포 (색면: 명조 표제 + 거의 검정) ---
   구 산세리프 800/line-height 1.14는 색면 위에서 소리가 컸다. 명조 600으로 낮추고
   한글 받침이 눌리지 않게 줄간을 1.3으로 편다. */
h1,h2,h3,h4,.display{font-family:var(--serif);color:var(--ink);line-height:1.3;font-weight:600;letter-spacing:-.02em;}
/* 페이지 제목 = 제이드(2026-08-10 박사). 페이지마다 브랜드 색이 꼭 한 번 선다.
   h2 이하는 잉크로 두어 위계를 만든다 — 제목 아래가 다 제이드면 위계가 사라진다.
   ★ 크기·여백·색은 여기 한 곳에서만 정한다. 페이지별 h1 오버라이드를 다시 만들지 말 것
     (2026-08-10 정비 전엔 크기 6가지·상단 여백 7가지가 돌고 있었다).
   색면 위에 앉는 h1(홈 히어로)은 그 템플릿에서 흰색을 명시한다. */
h1{font-size:clamp(2rem,4.4vw,3.1rem);margin:0 0 .5em;color:var(--jade);}
h2{font-size:clamp(1.45rem,2.7vw,2rem);margin:0 0 .5em;}
h3{font-size:1.24rem;font-weight:600;margin:0 0 .4em;}
p{margin:0 0 1em;}
a{color:var(--violet);text-decoration:none;}
a:hover{text-decoration:underline;}
.muted{color:var(--muted);}
.lead{font-size:1.18rem;color:var(--ink-soft);}

/* --- 레이아웃 --- */
.container{width:100%;max-width:1120px;margin-inline:auto;padding-inline:24px;}
/* CC BY 공식 아이콘(텍스트 'CC BY 4.0' 대체) — 본문 글자 크기에 맞춰 스케일 */
.ccby{display:inline-flex;align-items:center;gap:2px;vertical-align:middle;line-height:0;}
.ccby img{display:block;height:1.05em;width:auto;}
.ccby:hover{opacity:.78;}
/* 표준 콘텐츠 폭(--w-content) — 페이지 간 전환 시 프레임이 출렁이지 않게 단일 폭.
   hub=허브·목록, page=안내·검색 등 일반 페이지. 홈·헤더·푸터 셸만 .container 원폭(1120). */
.container.hub,.container.page{max-width:var(--w-content);}
main{flex:1 0 auto;}
section{padding-block:clamp(2.5rem,6vw,4.5rem);}

/* --- 버튼 --- */
/* 색면 팔레트(2026-08-10) — 알약·그림자·들어올림을 걷고 직각 면으로. 반응은 색이 맡는다. */
.btn{
  display:inline-flex;align-items:center;gap:.5em;
  font-family:var(--sans);font-size:1rem;font-weight:700;line-height:1;
  padding:.9em 1.6em;border-radius:0;
  border:2px solid transparent;cursor:pointer;transition:background .16s ease,color .16s ease,border-color .16s ease;
  text-decoration:none;
}
.btn:hover{text-decoration:none;}
.btn:active{transform:scale(.99);}
.btn-primary{background:var(--jade);color:#fff;}
.btn-primary:hover{background:var(--ink);color:#fff;}
.btn-ghost{background:var(--surface);color:var(--jade);border-color:var(--jade);}
.btn-ghost:hover{background:var(--jade);color:#fff;border-color:var(--jade);}

/* --- 3계층 칩 --- */
.chip{
  display:inline-flex;align-items:center;gap:.4em;
  font-size:.78rem;font-weight:600;letter-spacing:.01em;
  padding:.28em .7em;border-radius:999px;line-height:1;
}
.chip-open{background:var(--c-open-bg);color:var(--c-open);}
.chip-part{background:var(--c-part-bg);color:var(--c-part);}
.chip-collab{background:var(--c-collab-bg);color:var(--c-collab);}
/* 진단 깊이(L0~L4) 뱃지 — 중립(서열 아님, §11). 색이 아닌 라벨로 단계만 표시. */
.chip-level{background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line);}

/* --- 헤더 / 전역 내비 (§8) --- */
.site-header{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.92);backdrop-filter:saturate(1.1) blur(8px);
  border-bottom:1px solid var(--line);  /* 굵은 잉크 선은 페이지를 탁하게 만든다(2026-08-10) — 경계는 얇게 */
}
.site-header__row{display:flex;align-items:center;gap:1.5rem;padding-block:.85rem;}
/* 로고 = 심볼 마크(이미지) + 워드마크(텍스트). 워드마크가 메뉴와 같은 텍스트 레이아웃이라
   '지역혁신데이터랩' 글자가 메뉴 글자와 자동으로 같은 높이에 정렬된다. 전체 로고 아트는 /ci/. */
.brand{display:inline-flex;align-items:center;gap:.45rem;white-space:nowrap;text-decoration:none;
  min-height:var(--tap);}
.brand:hover{text-decoration:none;}
.brand-sym{display:block;height:38px;width:auto;flex:none;}
.brand-wm{font-family:var(--sans);font-weight:800;font-size:1.16rem;letter-spacing:-.04em;line-height:1;}
/* 워드마크 — 뒷글자만 제이드. 로고 PNG 워드마크도 같은 배역으로 맞췄다(2026-08-10) */
.brand-wm .n{color:var(--ink);}
.brand-wm .c{color:var(--jade);}
/* 메뉴를 살짝 내려 로고 워드마크 글자줄(베이스라인)과 평행하게 맞춤 */
.nav{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 1.05rem;flex:1;transform:translateY(3px);}
@media(max-width:880px){.nav{transform:none;}}
.nav a{
  color:var(--ink-soft);font-size:.95rem;font-weight:500;padding:.25em 0;
  border-bottom:2px solid transparent;
}
.nav a:hover{text-decoration:none;color:var(--ink);}
/* 계층 의미를 하단 보더 색으로 (공개/참여/협력) */
.nav a[data-tier="open"]:hover{border-bottom-color:var(--c-open);}
.nav a[data-tier="part"]:hover{border-bottom-color:var(--c-part);}
.nav a[data-tier="collab"]:hover{border-bottom-color:var(--c-collab);}
/* 방법론 드롭다운 (혁신모델·자가진단·도구세트·원인) — CSS 전용, 키보드 접근 */
.nav-dd{position:relative;}
.nav-dd>.nav-dd-toggle{display:inline-flex;align-items:center;gap:.2em;}
.nav-dd-menu{
  display:none;position:absolute;top:100%;left:0;z-index:30;min-width:13rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--shadow-md);padding:.4rem;margin-top:.45rem;
}
/* 토글↔메뉴 사이 빈 틈을 투명 브리지로 이어 호버 끊김 방지(다른 메뉴 오선택 차단) */
.nav-dd-menu::before{content:"";position:absolute;left:0;right:0;top:-.55rem;height:.55rem;}
.nav-dd:hover>.nav-dd-menu,.nav-dd:focus-within>.nav-dd-menu{display:block;}
.nav-dd-menu a{display:block;padding:.45rem .6rem;border-radius:var(--r-sm);border-bottom:0;font-size:.9rem;}
.nav-dd-menu a:hover{background:var(--surface-2);color:var(--ink);}
/* 필요 중심 드롭다운(제목+부제) */
.nav-dd-menu--rich{min-width:16rem;}
.nav-dd-menu--rich a{padding:.5rem .7rem;}
.nav-dd-menu--rich a b{display:block;font-weight:700;color:var(--ink);font-size:.92rem;}
.nav-dd-menu--rich a small{display:block;color:var(--muted);font-size:.78rem;margin-top:.05rem;}
.nav-dd-menu--rich a:hover b{color:var(--violet);}
/* ③ 사례·자료 구획 소제목(근거/읽을거리) + 브론즈 구분선 */
.nav-dd-section{display:block;font-size:.72rem;font-weight:800;color:var(--brass);
  letter-spacing:.02em;padding:.45rem .7rem .2rem;}
.nav-dd-menu--rich .nav-dd-section:not(:first-child){
  border-top:1px solid var(--brass-tint);margin-top:.35rem;padding-top:.5rem;}

.nav-utility{display:flex;align-items:center;gap:.6rem;white-space:nowrap;}
.nav-utility a{font-size:.9rem;font-weight:600;color:var(--ink-soft);}
.nav-utility a:hover{text-decoration:none;color:var(--ink);}
.nav-utility .util-sep{color:var(--faint);font-weight:400;user-select:none;}
/* font-size는 --field-font(16px) 하한 — 이 미만이면 iOS가 포커스 시 페이지를 확대하고
   blur 후에도 원배율로 돌아오지 않는다. 데스크톱만 시각적으로 작게(≥881px). */
.nav-search input{
  font-family:var(--sans);font-size:var(--field-font);
  padding:.4em .8em;border:1px solid var(--line);border-radius:999px;
  background:var(--surface);color:var(--ink);width:8.5rem;max-width:38vw;
}
@media (min-width:881px){.nav-search input{font-size:.85rem;}}
.nav-search input:focus{outline:2px solid var(--c-open);outline-offset:1px;}

/* --- 모바일 메뉴 토글(햄버거, ≤880px) --- */
.nav-toggle{display:none;align-items:center;justify-content:center;
  width:var(--tap);height:var(--tap);flex:none;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer;}
.nav-toggle__bars,.nav-toggle__bars::before,.nav-toggle__bars::after{
  display:block;width:20px;height:2px;background:var(--ink);border-radius:2px;transition:transform .18s ease,background .18s ease;}
.nav-toggle__bars{position:relative;}
.nav-toggle__bars::before,.nav-toggle__bars::after{content:"";position:absolute;left:0;}
.nav-toggle__bars::before{top:-6px;}
.nav-toggle__bars::after{top:6px;}
.site-header.nav-open .nav-toggle__bars{background:transparent;}
.site-header.nav-open .nav-toggle__bars::before{top:0;transform:rotate(45deg);}
.site-header.nav-open .nav-toggle__bars::after{top:0;transform:rotate(-45deg);}
@media (max-width:880px){
  .site-header__row{flex-wrap:wrap;column-gap:.75rem;row-gap:.4rem;}
  .nav-toggle{display:inline-flex;margin-left:auto;}
  /* JS가 있으면 .nav/.nav-utility를 드로어(dialog#nav-sheet)로 옮기고 여기선 숨긴다.
     JS가 없으면(html:not(.js)) 헤더 아래에 그대로 펼쳐 둔다 — 구 코드는 무JS에서
     메뉴가 영영 열리지 않았다(토글이 JS 전용). */
  .js .site-header > .container > .nav,
  .js .site-header > .container > .nav-utility{display:none;}
  html:not(.js) .nav-toggle{display:none;}
  .nav{order:3;flex-basis:100%;flex-direction:column;align-items:stretch;gap:.1rem;
    border-top:1px solid var(--line);margin-top:.4rem;padding-top:.5rem;}
  .nav-utility{order:4;flex-basis:100%;flex-wrap:wrap;gap:.9rem;padding:.2rem 0 .5rem;}
  .nav-utility .util-sep{display:none;}  /* 모바일선 줄바꿈되므로 구분자 숨김 */
  .nav-dd{width:100%;}
  .nav-search{flex-basis:100%;}
  .nav-search input{width:100%;max-width:none;}

  /* 터치 타깃 — 주 내비 항목은 44px 이상 (구: .25em 패딩 ≈ 33px) */
  .nav > a,.nav-dd-toggle,.nav-utility > a{
    display:flex;align-items:center;min-height:var(--tap);padding-block:.55rem;
  }
  /* 하위 메뉴 = 아코디언. 구 코드는 ≤880에서 .nav-dd-menu{display:block}로 5개 그룹의
     하위 13개를 항상 펼쳐 메뉴 세로 길이가 1,050px를 넘었다. */
  .nav-dd-menu{position:static;box-shadow:none;border:0;padding:.1rem 0 .35rem .75rem;
    margin:0;min-width:0;display:none;}
  .nav-dd-menu::before{display:none;}
  .nav-dd:hover>.nav-dd-menu{display:none;}          /* 터치에서 hover 오작동 차단 */
  .nav-dd.is-open>.nav-dd-menu{display:block;}
  html:not(.js) .nav-dd-menu{display:block;}          /* 무JS: 전부 펼침(도달 가능성 우선) */
  .nav-dd-menu a{min-height:var(--tap);display:flex;flex-direction:column;justify-content:center;}
  /* 접기/펴기 버튼 — mobile.js가 토글 링크 뒤에 삽입 */
  .nav-dd{display:flex;flex-wrap:wrap;align-items:center;}
  .nav-dd>.nav-dd-toggle{flex:1;}
  .nav-dd-exp{flex:none;width:var(--tap);height:var(--tap);border:0;background:none;cursor:pointer;
    color:var(--muted);font-size:.85rem;line-height:1;display:flex;align-items:center;justify-content:center;}
  .nav-dd-exp::before{content:"▾";transition:rotate .18s ease;}
  .nav-dd.is-open .nav-dd-exp::before{rotate:180deg;}
  .nav-dd-menu{flex-basis:100%;}
}
/* 데스크톱에서는 ▾ 버튼을 쓰지 않는다(CSS 호버 드롭다운 유지) */
@media (min-width:881px){.nav-dd-exp{display:none;}}
.nav-dd-caret{font-style:normal;}
/* 모바일(JS 있음)에선 .nav-dd-exp 버튼이 캐럿 역할을 하므로 인라인 캐럿은 중복 */
@media (max-width:880px){.js .nav-dd-caret{display:none;}}

/* 섹션 헤더 (제목 + 전체보기) */
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;}
.section-head h2{margin-bottom:.5rem;}

/* 검색 폼(검색 결과 페이지) */
.search-form{display:flex;gap:.6rem;margin:1.25rem 0 2rem;max-width:560px;}
.search-form input{
  flex:1;font-family:var(--sans);font-size:1rem;
  padding:.7em 1em;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--surface);color:var(--ink);
}
.pagination{display:flex;gap:1rem;align-items:center;margin-top:2rem;}
.pagination a{display:inline-flex;align-items:center;min-height:var(--tap);padding-inline:.5rem;}
/* 검색 — 지역명 부분일치 안내(형태소 미지원 보완) */
.search-regions{margin:0 0 1.4rem;padding:.9rem 1.1rem;background:var(--c-open-bg);
  border:1px solid var(--line);border-radius:var(--r-md);}
.search-regions__label{margin:0 0 .5rem;font-size:.9rem;font-weight:600;color:var(--c-open);}
.search-regions__links{display:flex;flex-wrap:wrap;gap:.45rem .9rem;}
.search-regions__links a{font-size:.95rem;font-weight:600;color:var(--ink);text-decoration:none;
  border-bottom:1px solid var(--jade-soft);
  display:inline-flex;align-items:center;min-height:var(--tap);}
.search-regions__links a:hover{color:var(--jade-deep);}
.footer-links{margin-top:1.25rem;font-size:.85rem;}
.footer-links a{color:var(--ink-soft);}

/* --- 히어로 --- */
.hero{padding-block:clamp(3rem,7vw,5.5rem);}
.hero h1{max-width:18ch;}
.hero .lead{max-width:60ch;}
.hero__trust{
  max-width:60ch;color:var(--ink-soft);
  border-left:3px solid var(--brass-soft);padding-left:1rem;margin-top:1.5rem;
}
.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem;}

/* --- 카드 / placeholder --- */
.grid{display:grid;gap:1.25rem;}
/* 공통 카드 그리드(인덱스·목록) — 인라인 grid-template 중복 제거 */
.grid--cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));}
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:1.5rem;box-shadow:var(--shadow-sm);
}
/* 색면 팔레트(2026-08-10) — 카드는 뜨지 않는다. 반응은 테두리 색으로만. */
a.card{transition:border-color .16s ease;}
a.card:hover{text-decoration:none;}
@media (hover:hover) and (pointer:fine){
  a.card:hover{border-color:var(--jade);}
}
.placeholder{
  border:1px dashed var(--faint);border-radius:var(--r-lg);
  background:var(--surface-2);color:var(--muted);
  padding:2.5rem 1.5rem;text-align:center;
}

/* --- 푸터 (전 페이지 고정 §9) --- */
/* 색면 팔레트(2026-08-10) — 푸터가 제이드 색면으로 페이지를 닫는다(머리는 흰 면, 발은 색면). */
.site-footer{
  flex-shrink:0;margin-top:0;
  background:var(--jade);border-top:0;
  color:rgba(255,255,255,.88);font-size:.92rem;
}
.site-footer .container{padding-block:3rem;}
.site-footer a{color:#fff;border-bottom:1px solid rgba(255,255,255,.45);}
.site-footer a:hover{text-decoration:none;border-bottom-color:#fff;}
.site-footer .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55);}
.site-footer .btn-ghost:hover{background:#fff;color:var(--jade);border-color:#fff;}
.footer-notice{max-width:80ch;margin:0 0 1rem;}
.footer-license{color:rgba(255,255,255,.72);font-size:.85rem;max-width:80ch;}
.footer-links a{color:rgba(255,255,255,.88);}
.footer-short{
  font-family:var(--serif);font-size:1.12rem;color:#fff;
  margin:0;
}
.footer-cta{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1.5rem;}

/* --- 롱폼(소개·공개 선언) --- */
.longform__inner{max-width:var(--w-content);padding-block:clamp(2.5rem,6vw,4rem);}
.longform .report-body{font-size:1.08rem;line-height:1.8;}

/* --- 소개(About) — 에디토리얼 매거진: 지면 카드 위 리듬 --- */
/* 표준 콘텐츠 폭 통일(2026-07-02) — 구 760px 개별 폭 폐지 */
.about__inner{max-width:var(--w-content);margin-inline:auto;}

/* 헤드 — 제목만(eyebrow 제거) + 짧은 clay rule */
.about__head{margin:0 0 1.5rem;}
.about__head::after{
  content:"";display:block;width:2.5rem;height:3px;margin-top:1rem;
  background:var(--jade);border-radius:2px;
}

/* 본문 전체를 하나의 아이보리 지면 카드로 앵커링 — 빈 페이지에 뜨지 않게 */
.about__body{
  position:relative;overflow:hidden;
  background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-md);
  padding:clamp(1.6rem,4vw,2.75rem) clamp(1.4rem,4vw,2.75rem);
}
/* 좌측 제이드 세로 리본 — 편지지 여백선(브랜드) */
.about__body::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(var(--jade),var(--jade-soft));
}

/* 본문 톤 */
.about__body .md-report{
  font-size:1.05rem;line-height:1.8;color:var(--ink-soft);
  word-break:keep-all;   /* 한글 어절 단위 줄바꿈(단어 중간 끊김 방지) */
}
/* 규칙적 여백 리듬 엔진 — 형제 간 기본 간격을 촘촘히 통일(성김 제거) */
.about__body .md-report>*{margin:0;}
.about__body .md-report>*+*{margin-top:.9rem;}
.about__body .md-report>:first-child{margin-top:0;}
.about__body .md-report>:last-child{margin-bottom:0;}

/* 리드 — 첫 문장(개인 연구실 선언)을 대형 serif 헤드라인으로.
   본문이 [본문, (AI 동료), 맺음] 다중 블록이 되며 첫 블록(div:first-child)으로 스코프(2026-07-03) */
.about__body>div:first-child .md-report>p:first-child{
  font-family:var(--serif);font-weight:600;
  font-size:clamp(1.35rem,3.4vw,1.7rem);line-height:1.45;
  color:var(--ink);
}
.about__body>div:first-child .md-report>p:first-child::after{
  content:"";display:block;width:1.75rem;height:2px;margin-top:1.1rem;
  background:var(--jade-soft);border-radius:2px;
}
/* 리드 다음(자기소개 스탠자) 앞에 큰 여백 — 구조 전환은 '의도된 여백' */
.about__body>div:first-child .md-report>p:first-child+p{margin-top:1.6rem;}

/* 자기소개 스탠자(4행 br) — 제이드 틴트 배경 + 좌측 리본 인용 → '의도된 스탠자' */
.about__body>div:first-child .md-report>p:nth-child(2){
  color:var(--ink);line-height:1.7;
  background:var(--jade-tint);
  border-left:3px solid var(--jade);
  border-radius:0 var(--r-md) var(--r-md) 0;
  padding:1rem 1.25rem;
}
/* 스탠자 뒤 본문 복귀에도 전환 여백 */
.about__body>div:first-child .md-report>p:nth-child(2)+p{margin-top:1.6rem;}

/* 접근법 3단계 — 제이드 번호 카드(섹션 앵커) */
.about__body .md-report ol{
  list-style:none;counter-reset:step;padding:0;margin-top:1.5rem;
  display:grid;gap:.65rem;
}
.about__body .md-report ol+p{margin-top:1.5rem;}
.about__body .md-report ol>li{
  counter-increment:step;position:relative;margin:0;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--shadow-sm);
  padding:.9rem 1.1rem .9rem 3.5rem;
  color:var(--ink);line-height:1.55;
}
.about__body .md-report ol>li::before{
  content:counter(step);position:absolute;left:1rem;top:50%;transform:translateY(-50%);
  width:1.85rem;height:1.85rem;border-radius:50%;
  background:var(--jade);color:#fff;
  font-family:var(--serif);font-weight:700;font-size:1rem;
  display:flex;align-items:center;justify-content:center;
}

/* 마무리 핵심 문장(CC BY·오류제보) — hr 바로 앞 <p>를 풀쿼트로 승격.
   위치 대신 'hr 직전 형제' 특성으로 타깃 → 문단 추가 시 어긋남 완화 */
.about__body .md-report p:has(+hr){
  font-family:var(--serif);font-size:1.1rem;line-height:1.6;
  color:var(--ink);
  background:var(--jade-tint);
  border-radius:var(--r-md);
  padding:1.1rem 1.35rem;
  margin-top:1.75rem;
}

/* 하단 밴드 — 풀블리드 구분선 + 연락처 + 서명 */
.about__body .md-report hr{
  border:0;border-top:1px solid var(--line);
  margin:2rem calc(-1 * clamp(1.4rem,4vw,2.75rem)) 1.5rem;
}
.about__body .md-report ul{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:.4rem 2rem;font-size:.98rem;
}
.about__body .md-report ul>li{margin:0;color:var(--muted);}
.about__body .md-report ul>li a{font-weight:600;color:var(--jade-deep);text-underline-offset:2px;}
.about__body .md-report ul>li a:hover{color:var(--jade);}

/* 서명 — 우하단 정렬 + 얇은 상단 rule로 '편지 맺음' */
.about__body .md-report .about-sign{
  margin-top:1.6rem;padding-top:1.2rem;
  border-top:1px solid var(--line-soft);
  text-align:right;line-height:1.4;
}
.about__body .md-report .about-sign__name{
  display:block;font-family:var(--serif);font-weight:600;
  font-size:1.3rem;color:var(--ink);
}
.about__body .md-report .about-sign__role{
  display:block;font-size:.9rem;color:var(--muted);margin-top:.3rem;
}

/* 폴백 — :has() 미지원 브라우저에서도 마무리 문장이 무너지지 않게.
   마무리 문장은 맺음 블록(div:last-child)에 있으므로 그쪽으로 스코프(2026-07-03) */
@supports not selector(p:has(+hr)){
  .about__body>div:last-child .md-report>p:nth-last-of-type(1){
    font-family:var(--serif);font-size:1.1rem;line-height:1.6;color:var(--ink);
    background:var(--jade-tint);border-radius:var(--r-md);
    padding:1.1rem 1.35rem;margin-top:1.75rem;
  }
}

/* 모바일 — 좁은 폭 리듬 방어 */
@media (max-width:560px){
  .about__body .md-report>p:nth-child(2){padding:.9rem 1rem;}
  .about__body .md-report p:has(+hr){padding:1rem 1.1rem;}
  .about__body .md-report hr{margin-inline:calc(-1 * clamp(1.4rem,4vw,2.75rem));}
  .about__body .md-report ul{gap:.35rem 1.4rem;}
  .about__body .md-report .about-sign{text-align:left;}
}

/* --- 보고서 --- */
.report__inner{max-width:var(--w-report);margin-inline:auto;padding-block:clamp(2rem,5vw,3.5rem);}
/* ── 표지 판권면 (2026-09-02 박사) ────────────────────────────────────────
   ★ 알약 칩을 걷는다. 칩은 좌우 `.7em` 패딩을 가지므로 **글자 시작점이 칼럼 정렬선보다
   안으로 밀린다** — 패딩이 없는 아랫줄('작성규칙 G5')과 시작이 어긋나 보였다(박사 지적).
   여기는 태그·필터 UI가 아니라 표지의 판권면이다: 조용한 텍스트가 문법이고,
   구분은 배경이 아니라 **색과 굵기**가 맡는다(§6 — 라운드는 0, 경계는 조용히).
   구분선(세로 헤어라인)도 쓰지 않는다 — flex가 줄바꿈하면 둘째 줄 머리에 선이 남는다.

   세대 줄이 뒤따르면(`:has(+ .report-gen)`) 메타 아래 여백을 줄여 둘을 한 블록으로 세우고,
   큰 여백은 세대 줄 아래로 옮긴다. 두 줄은 한 덩어리다. */
/* 표지 메타 기본형 — 사례·에세이·언론보도·도구 페이지가 쓴다(칩은 태그라 배경을 유지). */
.report-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:2rem;}

.report-meta--colophon{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem 1rem;
  margin:0 0 2rem;line-height:1.5;font-size:.82rem;}
.report-meta--colophon:has(+ .report-gen){margin-bottom:.3rem;}
/* 칩 골격을 **판권면에서만** 무력화한다 — `.report-meta`는 사례·언론보도 페이지도 쓰는데
   거기 칩(토픽·언론사)은 태그라 배경이 제 일을 한다. 지역·버전을 다는 보고서·변천사 표지만
   `--colophon`을 단다. */
.report-meta--colophon .chip{
  background:none;padding:0;border:0;border-radius:0;
  font-size:inherit;font-weight:600;letter-spacing:0;line-height:inherit;
}
.report-meta--colophon .chip:first-of-type{color:var(--ink);}          /* 지역 = 이 페이지의 주체 */
.report-meta--colophon .chip ~ .chip{color:var(--jade);font-variant-numeric:tabular-nums;}  /* 버전 = 식별자 */
.report-meta__date{color:var(--muted);}

/* PREVIEW 알약 뱃지 */
.preview-badge{
  display:inline-block;font-family:var(--sans);font-weight:700;
  font-size:.72rem;letter-spacing:.08em;
  padding:.3em .8em;border-radius:999px;
  background:var(--brass-tint);color:var(--clay-deep);
  border:1px solid var(--brass-soft);
  text-transform:uppercase;
}
.preview-badge--sm{font-size:.62rem;padding:.22em .6em;margin-bottom:.5rem;}

/* 요약 콜아웃 (인용블록 톤) */
.report-summary{
  background:var(--surface-2);border:1px solid var(--line);
  border-left:4px solid var(--jade);border-radius:var(--r-md);
  padding:1.25rem 1.5rem;margin:0 0 1.4rem;
}
.report-summary__label{
  font-family:var(--sans);font-weight:700;font-size:.78rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--jade-deep);margin:0 0 .4rem;
}
.report-summary__body{margin:0;color:var(--ink-soft);}
/* 요약 + 매칭률·실행밀도 한 행(요약 좌 · 수치 우 1행 2열 강조, 2026-07-04) */
.report-summary-row{display:flex;flex-wrap:wrap;gap:.8rem;align-items:stretch;margin:0 0 2.25rem;}
.report-summary-row .report-summary{flex:1 1 24rem;margin:0;}
/* ★ 2026-09-02 정돈(박사 "엉성해 보인다"): 타일 셋을 **같은 폭 3열**로 세우고 칼럼 폭을 다 쓴다.
   구 `flex` + `min-width:9.5rem`은 라벨 길이에 따라 폭이 셋 다 달라졌고(8 / 88% / 46%),
   그 셋이 왼쪽에만 몰려 오른쪽 절반이 비었다 — 아래 카드 그리드와 시작선은 같은데 끝선이 어긋나
   블록 둘이 따로 놀았다. 3열 균등이면 카드 4열과 같은 격자 위에 선다. */
.report-summary-row__metrics{
  display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;align-items:stretch;flex:1 1 100%;
}
/* 타일 강조형(보고서 한정 오버라이드 — L0 공용 .rc-metric 기본형은 불변): 세로 스택 카드 + 큰 숫자 */
.report-summary-row__metrics .rc-metric{
  flex-direction:column;align-items:flex-start;justify-content:center;gap:.15rem;
  padding:1rem 1.15rem;min-width:0;
}
.report-summary-row__metrics .rc-metric b{font-size:2.1rem;line-height:1.05;}
.report-summary-row__metrics .rc-metric span{font-size:.85rem;font-weight:700;color:var(--ink);}
.report-summary-row__metrics .rc-metric em{
  display:block;font-style:normal;font-weight:400;font-size:.76rem;color:var(--muted);margin-top:.1rem;
}
/* 적용대상 타일(2026-08-09) — 옆 둘의 분모다. 단위가 %가 아니라 '건'이라 갈라 둔다(우열 아님).
   ★ 테두리는 다른 둘과 같은 --line으로 되돌린다: 배경(옅은 황동)과 테두리를 둘 다 올리면
   타일 셋의 무게가 어긋나 하나만 도드라진다(§6 '경계는 조용히'). 구분은 면이 맡는다. */
.report-summary-row__metrics .rc-metric--count{background:var(--brass-tint);}
.report-summary-row .rc-metrics__note{flex-basis:100%;margin:.15rem 0 0;font-size:.78rem;color:var(--muted);line-height:1.65;}

/* ── 선정 혁신모델 칩 줄 (2026-09-02 박사) ─────────────────────────────────
   매칭률·실행밀도 바로 아래에서 **그 분모가 무엇인지**를 이름으로 보인다.
   구 6기능군 6칸이 하던 '한눈에 훑기'를 모델 단위로 되돌린 자리다.
   색은 진행 현황(⑥ 기전충족)이며 §6 의미 색(--mark-*)을 쓴다 — 브랜드 색이 아니다.
   왼쪽 4px 띠 하나로만 상태를 말하고 배경은 옅게 둔다: 8~13칸이 통째로 칠해지면
   면이 탁해지고(§6 '농도로 가른다'), 붉은 칸이 늘어 낙제표처럼 읽힌다(§11). */
.rp-selected{flex-basis:100%;margin:1.6rem 0 0;padding:1.3rem 0 0;border-top:1px solid var(--line);}
/* 머리 = 제목(잉크·굵게) + 부연(한 단 아래). 한 줄에 섞여 있으면 어디까지가 이름인지 흐려진다. */
/* ── 현황판 머리 (2026-09-02 박사 "대시보드·현황판처럼") ─────────────────────
   §6 안에서 짓는다: 라운드 0 · 그림자 없음 · 경계는 1px 헤어라인 · 색은 의미 색(--mark-*)만.
   판이 어떻게 서 있는지를 **숫자 세 개와 막대 하나**로 먼저 보이고, 목록이 그 뒤를 잇는다. */
.rp-selected__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:.35rem 1.2rem;margin:0 0 .5rem;}
.rp-selected__label{margin:0;font-size:.95rem;font-weight:700;color:var(--ink);
  letter-spacing:-.01em;white-space:nowrap;}
.rp-selected__label b{font-family:var(--serif);font-size:1.2em;margin:0 .05em;}
.rp-selected__note{margin:.55rem 0 0;font-size:.8rem;color:var(--muted);}
.rp-selected__note b{color:var(--ink-soft);font-weight:600;}
/* 집계 세 칸 — 숫자가 먼저, 라벨은 뒤. 색 점 대신 숫자 자체에 의미 색을 준다. */
.rp-selected__tally{display:flex;gap:.9rem;margin:0;font-size:.78rem;color:var(--muted);
  white-space:nowrap;}
.rp-selected__tally .rp-t{display:inline-flex;align-items:baseline;gap:.22rem;}
.rp-selected__tally b{font-family:var(--serif);font-size:1.35rem;line-height:1;font-weight:700;
  font-variant-numeric:tabular-nums;}
.rp-t--have b{color:var(--mark-have);}
.rp-t--forming b{color:var(--mark-forming);}
.rp-t--open b{color:var(--mark-open);}
/* 진행현황 분포 막대 — 전국 집계(/data)의 같은 문법. 낮게 깔아 목록을 누르지 않는다. */
.rp-bar{display:flex;height:9px;margin:.55rem 0 0;background:var(--surface-2);
  border:1px solid var(--line);}
.rp-bar i{display:block;height:100%;}
/* 세 몫을 반올림하면 합이 99%가 되어 오른쪽 끝에 흰 조각이 남는다 — 마지막이 채운다. */
.rp-bar i:last-child{flex:1;}
.rp-bar--have{background:var(--mark-have);}
.rp-bar--forming{background:var(--mark-forming);}
.rp-bar--open{background:var(--mark-open);}
.rp-selected__grid{
  list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.6rem;
  /* 적용대상은 8~13이라 4열이면 2~4행에 담긴다(박사 '2행'). 이름이 길면 두 줄로 접히되
     칸 높이는 서로 맞춘다 — 들쭉날쭉하면 훑기가 안 된다. */
  grid-template-columns:repeat(auto-fill,minmax(min(100%,11.5rem),1fr));
  align-items:stretch;
}
.rp-chip{position:relative;display:flex;}
/* 카드 = 머리(M##+이름+핵심) / 진행현황 / 공백점수 세 줄. 머리에 flex:1을 줘 남는 높이를
   흡수시키면 아래 두 줄이 **카드 바닥에 붙어**, 이름이 한 줄이든 두 줄이든 같은 행에서
   눈높이가 맞는다(2026-09-02 박사). 행 높이는 grid의 align-items:stretch가 맞춘다. */
.rp-chip a{
  flex:1;display:flex;flex-direction:column;gap:.5rem;
  padding:.8rem .9rem .8rem 1rem;min-height:var(--tap);
  background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);
  color:var(--ink);text-decoration:none;
  transition:border-color .12s ease, background .12s ease;
}
@media (hover:hover) and (pointer:fine){
  .rp-chip a:hover{border-color:var(--jade-soft);border-left-color:var(--jade);background:var(--surface-2);}
}
.rp-chip__head{flex:1;display:flex;align-items:baseline;gap:.4rem;}
.rp-chip__code{flex:none;font-size:.74rem;font-weight:700;color:var(--muted);
  font-variant-numeric:tabular-nums;letter-spacing:.01em;}
.rp-chip__name{font-size:.9rem;font-weight:600;line-height:1.35;word-break:keep-all;}
/* 값 두 줄 — 라벨(em)은 고정 폭으로 왼쪽에 세워 값이 세로로 줄을 맞춘다. 라벨은 --muted다:
   --faint는 흰 면에서 2.4:1로 WCAG AA에 못 미친다(§6). */
/* 좁은 칸에서 「선례 없음」 라벨이 눈금 뒤에 붙으면 한 줄에 안 들어간다 — 넘치면 다음 줄로
   내리되 라벨(em) 폭은 고정이라 값 세로줄은 그대로 맞는다. */
.rp-chip__row{display:flex;align-items:baseline;flex-wrap:wrap;gap:.15rem .5rem;
  font-size:.76rem;line-height:1.4;}
.rp-chip__row em{flex:none;width:4.2em;font-style:normal;color:var(--muted);letter-spacing:-.01em;}
.rp-chip__state{color:var(--ink-soft);}
.rp-chip__state i{font-style:normal;font-weight:700;font-size:.85em;}
.rp-chip__sev{font-variant-numeric:tabular-nums;color:var(--ink-soft);}
.rp-chip__sev b{font-weight:700;color:var(--ink);}
/* 공백점수 눈금 — S점수 상한 8을 100%로 삼는 절대 눈금이라 지역끼리도 견줄 수 있다.
   **색을 갖지 않는다**: 진행현황(왼쪽 띠·기호)이 이미 의미 색을 나르는데 길이까지 칠하면
   붉은 막대가 늘어서 낙제표로 읽힌다(§11). 길이만으로 말한다. */
/* 폭을 고정한다 — flex로 남는 자리를 채우게 두면 「선례 없음」 라벨이 붙은 카드나 숫자
   자릿수에 따라 눈금 길이가 카드마다 달라져, 길이로 견주는 눈금이 되레 어긋나 보인다
   (2026-09-02 박사 "모양이 틀어진다"). */
.rp-gauge{flex:none;width:4.2rem;height:3px;margin-left:.3rem;
  background:var(--line);align-self:center;}
.rp-gauge i{display:block;height:100%;background:var(--ink-soft);}
/* 진행현황 3색 — ◎○ 갖춤(녹) · △ 부분(황동) · ✗ 미확인(코랄). 대비 3:1 이상(§6 --mark-*) */
.rp-chip--have    a{border-left-color:var(--mark-have);}
.rp-chip--forming a{border-left-color:var(--mark-forming);}
.rp-chip--open    a{border-left-color:var(--mark-open);}
.rp-chip--have    .rp-chip__state i{color:var(--mark-have);}
.rp-chip--forming .rp-chip__state i{color:var(--mark-forming);}
.rp-chip--open    .rp-chip__state i{color:var(--mark-open);}
/* 우선검토 3모델 — 테두리를 잉크로 올리지 않고 작은 라벨 하나로 표시(§6 굵은 잉크 선 금지).
   ★ 2026-09-02: `border-color` 한 줄이 왼쪽 띠까지 덮어 진행현황 색이 사라졌었다 —
   왼쪽은 건드리지 않고 나머지 세 변만 올린다. 배경 --jade-tint도 걷었다(--mark-have와 겹쳐
   '좋음'으로 읽힌다). 배지는 카드 밖으로 돌출시키지 않고 **머리 오른쪽 안**에 앉힌다:
   돌출 배지는 위 카드와 겹칠 여지가 있고, 카드 상단선을 뚫어 격자가 흐트러져 보였다. */
.rp-chip.is-core a{
  border-top-color:var(--jade-soft);
  border-right-color:var(--jade-soft);
  border-bottom-color:var(--jade-soft);
}
/* 배지는 머리 오른쪽 **끝**으로 민다 — 이름 바로 뒤에 붙이면 두 줄짜리 이름을 잘라 놓은 것처럼
   보인다(2026-09-02 실측). margin-left:auto + flex:none이면 이름이 줄바꿈해도 자리를 지킨다. */
/* 강조 제외 대상 — 공백점수 자리에 한 문장. 스티커(회색 배지)를 떼고 말로 적는다
   (2026-09-02 박사 "스티커 배치가 정상적이지 않다"). 라벨 자리는 비워 두어 위 줄과 세로줄이
   맞고, 잉크를 올리지 않는다 — 등급이 아니라 '왜 뒤에 있는지'를 밝히는 말이다(§11). */
.rp-chip__why{color:var(--muted);font-style:normal;}
.rp-chip.is-demoted a{border-left-color:var(--line);}
.rp-chip.is-demoted .rp-chip__state i{color:var(--muted);}
.rp-chip__core{
  flex:none;margin-left:auto;align-self:flex-start;padding:.08rem .3rem;
  font-size:.63rem;font-weight:700;letter-spacing:.02em;line-height:1.4;
  color:var(--jade-deep);background:var(--jade-tint);border:1px solid var(--jade-soft);
}
.rp-selected__key{
  display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.1rem;
  margin:1rem 0 0;padding-top:.85rem;border-top:1px solid var(--line-soft);
  font-size:.76rem;color:var(--ink-soft);
}
.rp-selected__key span{display:inline-flex;align-items:center;gap:.3rem;}
/* 설명 문장은 flex 항목이 아니라 제 줄 하나다 — inline-flex로 두면 안의 <b>가 flex 항목이 되어
   폭이 눌리고 '공백점/수'처럼 낱말이 쪼개진다(2026-09-02 실측). */
.rp-selected__key .muted{display:block;flex-basis:100%;margin-top:.15rem;}
.rp-selected__key .rp-k{width:10px;height:10px;flex:none;}
/* 범례의 기호는 어휘 뒤에 조용히 — 화면은 3단계로 말하고 ◎/○ 구분은 기호가 남긴다 */
.rp-selected__key .rp-k-sym{font-style:normal;color:var(--muted);letter-spacing:.05em;}
/* 범례 안 '핵심' 배지는 카드 위 절대배치가 아니라 흐름 안에 서는 견본이다 */
.rp-selected__key .rp-chip__core--key{position:static;top:auto;right:auto;margin:0;}
.rp-selected__key-why b{color:var(--ink-soft);font-weight:600;}
.rp-k--have{background:var(--mark-have);}
.rp-k--forming{background:var(--mark-forming);}
.rp-k--open{background:var(--mark-open);}
@media(max-width:680px){
  /* 타일 셋은 좁은 폭에서 2+1로 접힌다 — 3등분하면 '혁신모델 적용대상' 라벨이 한 글자씩
     흘러내린다(2026-09-02: flex→grid 전환에 맞춰 auto-fit로 다시 씀). */
  .report-summary-row__metrics{grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));}
  .report-summary-row__metrics .rc-metric{padding:.8rem .9rem;}
  .report-summary-row__metrics .rc-metric b{font-size:1.8rem;}
}

/* 읽는 법 + 용어 1분 가이드 — 딥링크 첫 방문자용 최소 서사(2026-07-02) */
.report-guide{margin:0 0 2rem;font-size:.9rem;}
.report-guide__how{
  margin:0 0 .5rem;color:var(--ink-soft);line-height:1.6;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.65rem .9rem;
}
.report-guide__how strong{color:var(--ink);}
.report-guide__terms{
  border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);padding:.4rem .8rem;
}
.report-guide__terms summary{
  cursor:pointer;font-weight:600;color:var(--ink-soft);font-size:.85rem;padding:.2rem 0;
}
.report-guide__terms ul{margin:.5rem 0 .3rem;padding-left:1.1rem;color:var(--ink-soft);font-size:.85rem;line-height:1.6;}
.report-guide__terms li{margin:.3rem 0;}
.report-guide__terms li b{color:var(--ink);}
.report-guide__more{margin:.3rem 0 .3rem;font-size:.85rem;}
/* 용어 1분 가이드 — 펼침 표시(2026-07-09): 접기 제거, 위 버전 블럭과 간격 */
.report-guide--open{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line);}
.report-guide__title{margin:0 0 .45rem;font-size:.9rem;color:var(--ink);}
.report-guide--open ul{margin:.4rem 0 .3rem;padding-left:1.1rem;color:var(--ink-soft);font-size:.85rem;line-height:1.6;}
.report-guide--open li{margin:.3rem 0;}
.report-guide--open li b{color:var(--ink);}
/* 이전 대비 갱신 내용 — 요약 미리보기 + 접어둔 diff */
.report-version__update{margin:.4rem 0 0;}
.report-version__summary{margin:0 0 .35rem;font-size:.88rem;color:var(--ink-soft);}
.report-version__summary strong{color:var(--ink);}

/* 현재 버전 + 변경 이력 (진단 깊이 사다리, Part Ⅴ §0-B) */
.report-version{
  margin:0 0 2rem;font-size:.9rem;
}
.report-version__current{
  margin:0 0 .4rem;color:var(--ink-soft);
}
.report-version__current strong{color:var(--ink);}
.report-version__history{
  border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);padding:.4rem .8rem;
}
.report-version__history summary{
  cursor:pointer;font-weight:600;color:var(--ink-soft);
  font-size:.85rem;padding:.2rem 0;
}
.report-version__history ul{
  margin:.5rem 0 .2rem;padding-left:1.1rem;color:var(--muted);font-size:.85rem;
}
.report-version__history li{margin:.25rem 0;}
.report-version__history li strong{color:var(--ink-soft);}
/* 이전 대비 갱신 내용 — 자동 텍스트 diff (Part Ⅴ §0-B) */
.report-version__diff{
  border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);padding:.4rem .8rem;margin-top:.5rem;
}
.report-version__diff summary{
  cursor:pointer;font-weight:600;color:var(--ink-soft);font-size:.85rem;padding:.2rem 0;
}
/* 버전 목록 펼침 + 버전별 diff (2026-07-09 박사): 각 버전을 펼치면 그 버전 변경 내용 */
.report-version__history-title{margin:0 0 .3rem;font-size:.85rem;color:var(--ink-soft);}
.report-version__list{list-style:none;margin:.3rem 0 .1rem;padding:0;}
.report-version__list > li{margin:.4rem 0;}
.report-version__entry summary{cursor:pointer;color:var(--ink-soft);font-size:.85rem;padding:.15rem 0;}
.report-version__entry summary strong{color:var(--ink);}
.report-version__entry[open] summary{margin-bottom:.3rem;}
.report-version__entry--first{margin:.4rem 0;font-size:.85rem;color:var(--muted);}
.report-version__entry--first strong{color:var(--ink-soft);}
.report-diff{
  margin:.5rem 0 .2rem;padding:.6rem .7rem;overflow-x:auto;
  font-size:.8rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;
  background:var(--paper-2);border-radius:var(--r-sm);
}
.report-diff__add{display:block;background:var(--c-part-bg);color:var(--c-part);}
.report-diff__del{display:block;background:var(--clay-tint);color:var(--clay-deep);}
.report-diff__meta{display:block;color:var(--muted);font-weight:600;}
.report-diff__ctx{display:block;color:var(--ink-soft);}

/* 지역 L0 진단 뷰 — 공개 카드(region_card)·보고서(ReportPage) 공용(_region_l0.html) */
.rc{max-width:var(--w-report);}
.rc-head{border-bottom:1px solid var(--line);padding-bottom:1rem;margin-bottom:1.4rem;}
.rc-head .meta{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:.5rem 0;}
.rc-head .muted{font-size:.9rem;}
.rc-metaline{font-size:.9rem;margin:.2rem 0 1rem;}
/* 보고서 최하단 데이터 기준·인구 — 얇은 구분선 위 각주(2026-07-03) */
.rc-metaline--foot{margin:2rem 0 0;padding-top:1rem;border-top:1px solid var(--line-soft);}
/* 강점 얼굴(89개의 가르침) — 자랑할 것. 참여 녹색으로 공백(clay)과 시각 대비 (§11) */
.rc-teaching{background:var(--c-part-bg);border:1px solid var(--line);border-left:4px solid var(--c-part);border-radius:var(--r-md);padding:.9rem 1.1rem;margin:0 0 1.1rem;}
.rc-teaching__label{font-size:.8rem;font-weight:600;color:var(--c-part);margin:0 0 .25rem;}
.rc-belt{display:inline-block;font-size:.72rem;font-weight:700;background:var(--c-part);color:#fff;border-radius:999px;padding:.06em .6em;margin-left:.3rem;}
.rc-teaching__title{font-family:var(--serif);font-size:1.3rem;font-weight:700;color:var(--ink);margin:0;}
.rc-teaching__concept{font-size:.92rem;color:var(--ink-soft);margin:.4rem 0 0;line-height:1.55;}
.rc-teaching__pride{font-size:.92rem;color:var(--ink-soft);margin:.4rem 0 0;font-style:italic;}
.rc-teaching__cases{margin:.7rem 0 0;border-top:1px solid var(--line-soft);padding-top:.55rem;}
.rc-teaching__caseslabel{font-size:.8rem;font-weight:700;color:var(--c-part);margin:0 0 .35rem;}
.rc-teaching__cases ul{list-style:none;margin:0;padding:0;}
.rc-teaching__cases li{margin:.25rem 0;line-height:1.5;}
.rc-teaching__cases a{color:var(--ink);}
.rc-casetier{font-size:.7rem;font-weight:700;color:var(--c-part);background:var(--surface);border:1px solid var(--c-part);border-radius:999px;padding:.04em .5em;margin-left:.25rem;white-space:nowrap;}
.rc-prov{font-size:.68rem;color:var(--muted);background:var(--paper-2);border-radius:999px;padding:.04em .5em;margin-left:.2rem;white-space:nowrap;}
/* 보고서 강점카드 — '대표 혁신사례'만(teaching_cases_only): 제목+요약+상세링크(2026-07-03) */
.rc-teaching--cases-only .rc-teaching__cases{border-top:0;margin-top:0;padding-top:0;}
.rc-teaching__cases li.rc-case{margin:.75rem 0;line-height:1.5;}
.rc-teaching__cases li.rc-case:first-child{margin-top:.35rem;}
.rc-case__summary{font-size:.86rem;color:var(--ink-soft);line-height:1.55;margin:.3rem 0 .25rem;}
.rc-case__more{display:inline-block;font-size:.8rem;font-weight:600;color:var(--c-part);}
.rc-case__more:hover{text-decoration:underline;}
/* 핵심 공백 영역 헤드라인(상단) — 어디가·왜 (C20) */
.rc-gaparea{background:var(--clay-tint);border:1px solid var(--line);border-left:4px solid var(--clay);border-radius:var(--r-md);padding:.9rem 1.1rem;margin:0 0 1.4rem;}
/* 우선 검토 모델 카드 — 실증 등급 배지(E3 제안형 강조, 2026-07-04 리뷰 반영) */
.gm-tier{display:inline-block;font-size:.7rem;font-weight:700;padding:.14em .5em;border-radius:999px;
  background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line);}
.gm-tier--e3{background:var(--brass-tint);color:var(--clay-deep);border-color:var(--brass-soft);}
/* 매칭률·실행밀도 스탯 — 본문에 묻힌 두 지표를 상단 강조(2026-07-03, 우열 아님 §11) */
.rc-metrics{display:flex;flex-wrap:wrap;gap:.7rem;margin:0 0 1.4rem;}
.rc-metric{display:flex;align-items:baseline;gap:.6rem;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);padding:.65rem 1rem;min-width:150px;}
.rc-metric b{font-family:var(--serif);font-size:1.45rem;line-height:1.1;color:var(--ink);}
.rc-metric span{font-size:.8rem;font-weight:700;color:var(--ink-soft);line-height:1.3;}
.rc-metric span em{display:block;font-style:normal;font-weight:400;color:var(--muted);font-size:.72rem;}
.rc-metrics__note{flex-basis:100%;margin:0;font-size:.78rem;color:var(--muted);}
.rc-gaparea__label{font-size:.8rem;font-weight:600;color:var(--clay-deep);margin:0 0 .25rem;}
.rc-gaparea__name{font-family:var(--serif);font-size:1.3rem;font-weight:700;color:var(--ink);margin:0;}
.rc-gaparea__sub{font-family:var(--sans);font-size:.85rem;font-weight:500;color:var(--muted);}
.rc-gaparea__gap{font-size:.85rem;color:var(--clay-deep);margin:.3rem 0 0;}
.rc-gaparea__why{font-size:.92rem;color:var(--ink-soft);margin:.5rem 0 0;line-height:1.55;}
.rc-gaparea__note{font-weight:400;}
.rc-gaparea__name a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line);}
.rc-gaparea__name a:hover{border-bottom-color:var(--clay);}
.rc-gaparea__name .rc-gaparea__sub{display:block;margin-top:.2rem;}
/* 6기능군 = 24모델의 상위 묶음(집계). 접어 두고 모델별 판정을 앞세운다(2026-07-10). */
.rc-axes-fold{border:1px solid var(--line-soft);border-radius:var(--r-md);padding:.6rem .9rem;background:var(--surface-2);}
.rc-axes-fold>summary{cursor:pointer;list-style:none;}
.rc-axes-fold>summary::-webkit-details-marker{display:none;}
.rc-axes-fold>summary h2{display:inline;font-size:1rem;}
.rc-axes-fold>summary::after{content:"▾";margin-left:.4rem;color:var(--muted);font-size:.85rem;}
.rc-axes-fold[open]>summary::after{content:"▴";}
.rc-axfold-note{margin:.5rem 0 .2rem;font-size:.82rem;color:var(--muted);line-height:1.5;}
.rc-sec{margin:1.6rem 0;}
.rc-sec h2{font-size:1.1rem;margin:0 0 .5rem;}
.rc-gaps{margin:.3rem 0 0;padding-left:1.1rem;}
.rc-gaps li{margin:.3rem 0;color:var(--ink-soft);}
/* 우선 검토할 혁신모델(=비어 있는 혁신모델) — '필수 기전(할 것) / 함정(하지 말 것)'을 한눈에 */
.rc-gm-intro{font-size:.86rem;color:var(--ink-soft);margin:.2rem 0 .75rem;line-height:1.55;}
.rc-gm-intro .gm-do-tag{color:var(--c-part);font-weight:700;white-space:nowrap;}
.rc-gm-intro .gm-dont-tag{color:var(--clay-deep);font-weight:700;white-space:nowrap;}
.rc-gapmodels{list-style:none;margin:.3rem 0 0;padding:0;display:grid;gap:.7rem;}
.rc-gapmodels .gm-card{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:.8rem .9rem;box-shadow:var(--shadow-sm);}
.rc-gapmodels .gm-card.is-primary{border-color:var(--clay-soft);box-shadow:var(--shadow-md);}
.rc-gapmodels .gm-head{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;}
.rc-gapmodels .gm-code{font-weight:700;color:var(--clay-deep);}
.rc-gapmodels .gm-name{font-weight:600;color:var(--ink);}
/* 머리의 코드·이름은 카탈로그로 가는 링크인데 표시가 없어 아무도 못 찾았다(2026-09-02 박사).
   조용한 밑줄로 링크임을 드러낸다 — 카드 끝의 「모델 자세히 보기」와 같은 곳으로 간다. */
.rc-gapmodels a.gm-code,.rc-gapmodels a.gm-name{
  text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;}
.rc-gapmodels a.gm-code:hover,.rc-gapmodels a.gm-name:hover{text-decoration-color:currentColor;}
/* 현황판 칩에서 건너온 자리 — 헤더에 가리지 않게 여백을 둔다 */
.rc-gapmodels .gm-card{scroll-margin-top:calc(var(--header-h, 72px) + 1.2rem);}
/* 칩 → 진단카드는 **미끄러져** 간다(2026-09-02 박사). 어디로 갔는지 눈이 따라가야
   그 카드가 목록의 어느 자리인지 남는다. 움직임을 줄이도록 설정한 분은 그대로 튄다. */
@media (prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth;}
}
.rc-gapmodels .gm-area{font-size:.74rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:.05rem .55rem;}
.rc-gapmodels .gm-compound{font-size:.72rem;color:var(--muted);}
.rc-gapmodels .gm-primary{font-size:.73rem;font-weight:700;color:var(--clay-deep);background:var(--clay-tint);border-radius:999px;padding:.05rem .55rem;}
.rc-gapmodels .gm-oneliner{font-size:.86rem;color:var(--ink-soft);margin:.4rem 0 0;line-height:1.5;}
/* ✓ 할 것 — 필수 기전 3 (강조: 더 이상 묻히지 않게) */
.rc-gapmodels .gm-do{margin:.6rem 0 0;border-left:3px solid var(--c-part);background:var(--c-part-bg);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:.5rem .7rem;}
.rc-gapmodels .gm-do-label{font-size:.8rem;font-weight:700;color:var(--c-part);margin:0 0 .35rem;}
.rc-gapmodels .gm-do-label .muted{font-weight:500;}
.rc-gapmodels .gm-mechs{list-style:none;margin:0;padding:0;display:grid;gap:.28rem;}
.rc-gapmodels .gm-mechs li{position:relative;padding-left:1.15rem;font-size:.9rem;color:var(--ink);line-height:1.45;}
.rc-gapmodels .gm-mechs li::before{content:"✓";position:absolute;left:0;top:0;color:var(--c-part);font-weight:700;}
/* ✕ 하지 말 것 — 필수 기전 바로 다음 줄에 */
/* 호버 설명 배지 — cursor:help + 점선 밑줄로 '설명 있음'을 알린다(native title 툴팁). */
.has-tip{cursor:help;text-decoration:underline dotted var(--faint);text-decoration-thickness:1px;text-underline-offset:.2em;}
.rc-gapmodels .gm-dont{margin:.45rem 0 0;font-size:.88rem;color:var(--ink-soft);line-height:1.5;background:var(--clay-tint);border-left:3px solid var(--clay);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:.45rem .7rem;}
.rc-gapmodels .gm-dont-label{font-weight:700;color:var(--clay-deep);margin-right:.3rem;white-space:nowrap;}
/* 자세히 보기 — 보강된 모델 상세(사례·시작 단계·전제 점검)로 진입. rc-case__more와 같은 톤 */
.rc-gapmodels .gm-more{margin:.55rem 0 0;padding-top:.5rem;border-top:1px solid var(--line-soft);}
.rc-gapmodels .gm-more a{display:inline-block;font-size:.83rem;font-weight:700;color:var(--clay-deep);}
.rc-gapmodels .gm-more a .muted{font-weight:500;}
.rc-gapmodels .gm-more a:hover{text-decoration:underline;}

/* 비교진단표를 화면에서 카드로 편 것(core.table_cards, 2026-08-09 박사).
   위 gm-* 를 그대로 물려받고, 표에만 있던 세 칸(⑥ 하는 중? · ⑦ 더 할 것 · ⑨ 참조)을 더한다.
   본문 안에 들어가므로 상단 컴포넌트보다 여백을 넉넉히 준다. */
.rc-gapmodels--matrix{gap:.9rem;margin:1rem 0 1.4rem;}
.rc-gapmodels--matrix .gm-card{padding:.95rem 1.05rem;}
.rc-gapmodels--matrix .gm-name{font-size:1.02rem;}
/* ⑥ 기전 충족 — 모양(기호)+색 이중 구분. ✗는 낙제가 아니라 '공개자료 미확인'이다(§11) */
.gm-state{font-size:.73rem;font-weight:700;border-radius:999px;padding:.05rem .55rem;
  border:1px solid var(--line);white-space:nowrap;}
.gm-state--strong{background:var(--c-part-bg);color:var(--c-part);border-color:var(--c-part);}
.gm-state--yes{background:var(--c-part-bg);color:var(--c-part);}
.gm-state--partial{background:var(--brass-tint);color:var(--clay-deep);border-color:var(--brass-soft);}
.gm-state--none{background:var(--surface-2);color:var(--muted);}
/* ⑥ 근거 — '지금 여기까지 와 있다'. 판단이 아니라 관찰이라 담백하게 둔다 */
.rc-gapmodels .gm-now{margin:.5rem 0 0;font-size:.9rem;color:var(--ink-soft);line-height:1.55;}
.rc-gapmodels .gm-now-label{font-weight:700;color:var(--muted);font-size:.78rem;margin-right:.35rem;}
/* ⑦ 더 할 것 — 권고. ✓할 것(기전)과 ✕하지 말 것 사이에 놓인다 */
.rc-gapmodels .gm-next{margin:.5rem 0 0;font-size:.9rem;color:var(--ink);line-height:1.55;
  border-left:3px solid var(--brass-soft);background:var(--brass-tint);
  border-radius:0 var(--r-sm) var(--r-sm) 0;padding:.45rem .7rem;}
.rc-gapmodels .gm-next-label{font-weight:700;color:var(--clay-deep);margin-right:.3rem;white-space:nowrap;}
/* ⑨ 참조 — 사례·근본원인·제도 링크 묶음 */
.rc-gapmodels .gm-refs{margin:.55rem 0 0;padding-top:.5rem;border-top:1px solid var(--line-soft);
  font-size:.82rem;color:var(--muted);line-height:1.6;}
.rc-gapmodels .gm-refs-label{font-weight:700;margin-right:.3rem;}
/* 카드 끝 — 그 모델로 가는 문(2026-09-02 박사). 머리의 코드·이름도 같은 곳으로 가지만
   잉크색이라 링크로 읽히지 않아, 갈 곳을 이름으로 한 번 더 밝힌다. */
.rc-gapmodels .gm-more{margin:.6rem 0 0;padding-top:.5rem;border-top:1px solid var(--line-soft);
  font-size:.82rem;}
.rc-gapmodels .gm-more a{display:inline-flex;align-items:center;gap:.3rem;min-height:24px;
  color:var(--jade);font-weight:600;text-decoration:underline;
  text-decoration-color:var(--jade-soft);text-underline-offset:3px;}
.rc-gapmodels .gm-more a:hover{text-decoration-color:var(--jade);}
.rc-gapmodels .gm-refs a{color:var(--clay-deep);font-weight:600;}

.rc-axes{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;margin:.4rem 0;}
.rc-ax{display:flex;align-items:center;gap:.55rem;border:1px solid var(--line);border-radius:var(--r-md);padding:.5rem .7rem;background:var(--surface);}
/* 상태 심볼 = 색 칩(갖춤=녹색·형성중=황동·개선기회=코랄), /gapmap/ 6기능군 표와 동일 팔레트·이중 구분(모양+색) */
.rc-ax .sym{font-size:1.05rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:1.75em;height:1.75em;border-radius:var(--r-sm);flex:none;}
.rc-ax.s-have .sym{color:var(--c-part);background:var(--c-part-bg);}
.rc-ax.s-forming .sym{color:var(--brass);background:var(--brass-tint);}
.rc-ax.s-open .sym{color:var(--clay-deep);background:var(--clay-tint);}
.rc-ax.s-na .sym{color:var(--faint);background:var(--surface-2);}
/* 상태 이름(갖춤/형성 중/비어 있는 기회)도 같은 색으로 강조 — 한눈 구분 */
.rc-ax.s-have .ax-sname{color:var(--c-part);font-weight:600;}
.rc-ax.s-forming .ax-sname{color:var(--brass);font-weight:600;}
.rc-ax.s-open .ax-sname{color:var(--clay-deep);font-weight:600;}
.rc-ax.is-gaparea{border-color:var(--clay);box-shadow:0 0 0 1px var(--clay);background:var(--clay-tint);}
.rc-ax .ax-name{font-weight:600;font-size:.9rem;}
.rc-ax .ax-state{font-size:.78rem;color:var(--muted);}
.rc-ax .ax-need{font-weight:600;}
.rc-ax .ax-need--high{color:var(--clay-deep);}
.rc-axhelp{font-size:.82rem;}
.rc-cta{display:flex;flex-wrap:wrap;gap:.6rem;margin:.6rem 0;}
.rc-disclaimer{margin-top:1.8rem;border-top:1px solid var(--line);padding-top:1rem;font-size:.85rem;color:var(--muted);}
.rc-source{font-size:.85rem;color:var(--muted);margin-top:.4rem;}
.rc-axgroup{margin:1rem 0;}
.rc-axgroup h3{font-size:.98rem;margin:0 0 .4rem;}
.rc-axgroup ul{list-style:none;margin:0;padding:0;}
.rc-axgroup li{padding:.45rem 0;border-bottom:1px solid var(--line-soft);display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;}
.rc-axgroup li a{font-weight:600;}
.rc-axgroup .reason{flex-basis:100%;font-size:.8rem;color:var(--muted);}
.tier-badge{font-size:.7rem;padding:.12em .5em;border-radius:999px;border:1px solid var(--line);color:var(--muted);}
.tier-badge.est{color:var(--clay-deep);border-color:var(--clay-soft);}
.badge-mention{font-size:.7rem;font-weight:700;padding:.12em .5em;border-radius:999px;background:var(--brass-tint);color:var(--clay-deep);}
.rc-modlist{list-style:none;margin:.5rem 0;padding:0;}
.rc-modlist li{padding:.4rem 0;border-bottom:1px solid var(--line-soft);display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;}
.rc-modbadge{display:inline-flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--paper-2);color:var(--ink-soft);font-weight:800;}

/* 본문 블록 */
.report-body{font-size:1.05rem;}
.report-body .body-heading{margin-top:2rem;}
.report-body .body-figure{margin:1.5rem 0;}
.report-body .body-figure img{max-width:100%;height:auto;border-radius:var(--r-md);}
.report-body .body-figure figcaption{font-size:.85rem;margin-top:.5rem;}
.report-body .body-quote{
  border-left:3px solid var(--brass-soft);padding-left:1rem;margin:1.5rem 0;
  font-family:var(--serif);font-size:1.15rem;color:var(--ink-soft);
}
.report-body .body-quote cite{display:block;font-size:.85rem;font-style:normal;margin-top:.4rem;}
.report-body .body-doc{margin:1.25rem 0;}

/* 콜아웃 블록 */
.callout{border-radius:var(--r-md);padding:1rem 1.25rem;margin:1.5rem 0;border:1px solid var(--line);}
.callout--info{background:var(--c-open-bg);border-color:var(--c-open);}
.callout--note{background:var(--surface-2);}
.callout--key{background:var(--brass-tint);border-color:var(--brass-soft);}
.callout__title{font-weight:700;margin:0 0 .35rem;}
.callout__body{margin:0;}
.callout__body p:last-child{margin-bottom:0;}

.report-pdf{margin:2rem 0;}
/* CTA 간격 공통화(인라인 style 제거) */
.report-cta{margin-top:2rem;}
/* 관련 사례 목록(에디토리얼) — raw <ul> 정리 */
.related-cases{margin-top:2rem;border-top:1px solid var(--line);padding-top:1.3rem;}
.related-cases h2{font-size:1.02rem;margin:0 0 .6rem;}
.related-cases ul{list-style:none;margin:0;padding:0;}
.related-cases li{padding:.5rem 0;border-bottom:1px solid var(--line-soft);}
.related-cases li a{font-weight:600;}
/* 이어서 볼 자료 — 본문 끝의 이동 링크(2026-09-01 박사 "가독성이 나쁘다").
   구 판은 회색 한 줄에 링크 둘을 가운뎃점으로 붙여 놓아, 화살표가 서로 반대쪽을
   가리키고 나서야 겨우 경계가 보였다. 링크마다 제 칸을 주고 무엇으로 가는 길인지
   윗줄에 밝힌다. §6 그대로 직각·1px 헤어라인·그림자 없음, 강조는 민트 면이 맡는다. */
.linkcards{
  display:grid;gap:.6rem;margin:2.2rem 0 0;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));
}
.linkcard{
  display:flex;flex-direction:column;justify-content:center;gap:.15rem;
  position:relative;min-height:var(--tap);
  padding:.8rem 2.4rem .8rem 1rem;
  border:1px solid var(--line);background:var(--paper);
  color:var(--ink);text-decoration:none;
}
.linkcard::after{
  content:"\2192";position:absolute;right:1rem;top:50%;transform:translateY(-50%);
  color:var(--jade);
}
.linkcard__kind{font-size:.78rem;color:var(--muted);line-height:1.4;}
.linkcard__title{font-weight:600;line-height:1.45;}
.linkcard__note{font-size:.85rem;color:var(--ink-soft);line-height:1.6;margin-top:.15rem;}
/* 앞세운 카드가 한 줄을 다 쓰면 나머지도 한 줄씩 — 반 칸짜리가 옆에 홀로 남지 않게. */
.linkcards--stack{grid-template-columns:1fr;}
/* 앞세우는 한 장 — 민트 면으로 세운다. 면이 대비를 만든다(§6), 그림자·라운드는 없다.
   자리도 한 칸이 아니라 한 줄을 통째로 쓴다. */
.linkcard--feature{
  grid-column:1/-1;background:var(--jade-tint);border-color:var(--jade);
  padding:1.05rem 2.6rem 1.05rem 1.15rem;
}
.linkcard--feature .linkcard__kind{color:var(--jade-deep);font-weight:600;}
.linkcard--feature .linkcard__title{font-size:1.08rem;}
.linkcard:hover,.linkcard:focus-visible{border-color:var(--jade);background:var(--jade-tint);}
.linkcard:hover{text-decoration:none;}
.linkcard:hover .linkcard__title{color:var(--jade-deep);}
.report-notice{
  margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);
  font-size:.85rem;color:var(--muted);
}
/* 보고서 하단 한 블록(안내→콜로폰→CTA) — 첫 안내문만 구분선, 이하는 이어진 문단 */
.report-next .report-notice--collab{margin-top:.8rem;padding-top:0;border-top:0;}
.report-next .report-cta{margin-top:1.4rem;display:flex;gap:.6rem;flex-wrap:wrap;}
/* AI 협업 표기 한 줄 — 정본(/about/#ai)으로 링크(2026-07-02) */
.report-ai-note{
  margin-top:1rem;font-size:.85rem;color:var(--muted);
}
/* 이해관계 고지 — 유상 협약이 있는 지역에서만 뜬다(§9-2 규칙 1). 각주 결을 지키되
   눈에 걸리게 왼쪽 선을 하나 세운다: 숨기지 않는다는 것이 이 문장의 존재 이유다. */
.report-interest{
  margin-top:1rem;padding:.7rem .9rem;font-size:.85rem;color:var(--ink-soft);
  background:var(--surface-2);border-left:2px solid var(--jade);line-height:1.8;
}
/* 권장 인용 — 페이지 안의 명시적 인용 형식(연구자·위키·AI attribution용) */
.report-cite{
  margin-top:1rem;font-size:.85rem;color:var(--muted);
  word-break:break-all; /* 긴 URL이 모바일 가로 오버플로를 내지 않게 */
}
/* 보고서 부록(최하단) — 읽는 법·용어 가이드 + 버전·변경 이력(2026-07-03 하단 이동) */
.report-appendix{
  margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);
}
.report-appendix .report-guide{margin-bottom:1rem;}
.report-appendix .report-version{margin-bottom:0;}
/* 소개 — AI 동료 소개 섹션(#ai). 편지 카드(about__body) 안, 맺음 블록 앞 배치 */
.about__ai{
  margin:2.25rem 0;padding-top:1.9rem;
  border-top:1px solid var(--line);
}
.about__ai h2{
  font-family:var(--serif);font-weight:600;font-size:1.45rem;
  color:var(--ink);margin:0 0 .35rem;
}
.about__ai h2::after{
  content:"";display:block;width:1.75rem;height:2px;margin-top:.8rem;
  background:var(--jade-soft);border-radius:2px;
}
.about__ai h3{
  font-size:1.02rem;font-weight:700;color:var(--ink);
  margin:1.7rem 0 .45rem;padding-left:.7rem;
  border-left:3px solid var(--jade-soft);
}
.about__ai p{margin:.4rem 0;font-size:.98rem;line-height:1.7;color:var(--ink-soft);word-break:keep-all;}
.about__ai p b{color:var(--ink);}
.about__ai a{color:var(--jade-deep);font-weight:600;text-underline-offset:2px;}
.about__ai a:hover{color:var(--jade);}
/* 소개 — 운영 공시(#epistemology·#funding). about__ai와 같은 시각 언어 유지(드리프트 시 둘 다 고칠 것) */
.about-principles{margin:2.25rem 0;padding-top:1.9rem;border-top:1px solid var(--line);}
.about-principles h2{font-family:var(--serif);font-weight:600;font-size:1.45rem;color:var(--ink);margin:0 0 .35rem;}
.about-principles h2::after{content:"";display:block;width:1.75rem;height:2px;margin-top:.8rem;background:var(--jade-soft);border-radius:2px;}
.about-principles p{margin:.4rem 0;font-size:.98rem;line-height:1.7;color:var(--ink-soft);word-break:keep-all;}
.about-principles p b{color:var(--ink);}
.about-principles ul{margin:.7rem 0 .9rem;padding-left:1.15rem;}
.about-principles li{margin:.5rem 0;font-size:.98rem;line-height:1.7;color:var(--ink-soft);word-break:keep-all;}

/* 보고서 목록 카드 */
.report-filters{display:flex;align-items:center;gap:.6rem;margin:1.25rem 0 1.75rem;}
.report-cards{margin-top:1rem;}
.report-card{display:block;transition:border-color .16s ease;}
.report-card:hover{text-decoration:none;}
@media (hover:hover) and (pointer:fine){
  .report-card:hover{border-color:var(--jade);}
}
.report-card h3{margin:.25rem 0 .6rem;}
.report-card__meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem;}

/* (구 @media max-width:720px 헤더 블록 삭제 — 위 880px 블록이 이미 같은 일을 하는 죽은 중복) */

/* --- 롱폼 문서(방법론 등) --- */
.doc-inner{max-width:var(--w-content);padding-block:clamp(2rem,5vw,3.5rem);}
.doc-summary{
  font-size:1.15rem;line-height:1.7;color:var(--ink-soft);
  border-left:4px solid var(--jade);background:var(--surface-2);
  padding:1rem 1.25rem;border-radius:var(--r-md);margin:1.25rem 0 2.25rem;
}
/* 섹션 리듬: 소제목 위 여백 */
.report-body .body-heading{margin-top:2.6rem;}
.report-body > *:first-child{margin-top:0;}
.report-body ol,.report-body ul{padding-left:1.25rem;}
.report-body ol li,.report-body ul li{margin:.45rem 0;}

/* --- 본문 표 --- */
.report-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem;}
.report-body th,.report-body td{
  border:1px solid var(--line);padding:.6em .8em;text-align:left;vertical-align:top;
}
.report-body thead th,.report-body table tr:first-child th{
  background:var(--surface-2);font-weight:700;color:var(--ink);
}

/* --- 스탯 카드(수치 시각화) --- */
.stat-cards{
  display:grid;grid-template-columns:repeat(var(--cols,4),1fr);
  gap:1rem;margin:1.75rem 0;
}
.stat-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:1.1rem 1.15rem;box-shadow:var(--shadow-sm);
  display:flex;flex-direction:column;gap:.35rem;
}
.stat-card__value{font-family:var(--serif);font-size:1.9rem;line-height:1.1;color:var(--jade-deep);}
.stat-card__label{font-weight:700;font-size:.95rem;color:var(--ink);}
.stat-card__desc{font-size:.85rem;color:var(--muted);line-height:1.5;}
@media (max-width:680px){
  .stat-cards{grid-template-columns:repeat(2,1fr)!important;}
}

/* 상시 '내 지역 진단' 진입 CTA (전역 내비) */
.nav-utility a.nav-diagnose{
  background:var(--jade);color:#fff;padding:.4em .8em;border-radius:999px;
  font-size:.85rem;box-shadow:var(--shadow-sm);
}
.nav-utility a.nav-diagnose:hover{background:var(--jade-deep);color:#fff;}

/* 동선(브레드크럼) — 진단·사례 흐름 페이지 공통 */
.crumbs{font-size:.85rem;color:var(--muted);margin:0 0 .6rem;}
.crumbs a{color:var(--muted);}
.crumbs a:hover{color:var(--ink);}
.crumbs .sep{margin:0 .35em;color:var(--faint);}
.crumbs .cur{color:var(--ink-soft);}
/* 전역 빵부스러기(base.html {% block breadcrumb %}) — main 상단, 홈 제외 전 페이지.
   ★ 민트 색면이다(2026-08-10 박사 "메인 외 페이지가 허전하다"). 홈은 색면으로 페이지를
   여닫는데(§7 리듬) 안쪽 페이지는 흰 바탕에 제목만 서 있어 시작하는 느낌이 없었다.
   여기 띠 하나로 '헤더(흰) → 민트 면 → 본문(흰)'을 만들어 같은 리듬을 준다.
   ※ 진한 제이드로 올리지 말 것 — 큰 색 면에 담기는 건 빵부스러기 서너 단어뿐이라
      면과 내용의 무게가 어긋난다. 강조는 색이 아니라 면적으로.
   ※ 글자는 --muted에서 --ink-soft로 올렸다. muted는 이 민트 면 위에서 3.8:1로
      WCAG AA(작은 글자 4.5:1)에 못 미친다(흰 바탕에서도 4.4:1로 이미 아슬아슬했다). */
.sitecrumbs{background:var(--jade-tint);border-bottom:1px solid var(--line);}
.sitecrumbs .crumbs{max-width:var(--w-content);margin-block:0;margin-inline:auto;
  padding-top:1.5rem;padding-bottom:1.4rem;color:var(--ink-soft);}
.sitecrumbs .crumbs a{color:var(--ink-soft);}
.sitecrumbs .crumbs a:hover{color:var(--jade);}
.sitecrumbs .crumbs .cur{color:var(--ink);}
.sitecrumbs .crumbs .sep{color:var(--muted);}
/* 페이지 머리 — 빵부스러기 아래부터 제목까지의 간격은 전 페이지 한 값이다(2026-08-10).
   ※ 구 규칙은 `.sitecrumbs + section`이었는데, 그 사이에 BreadcrumbList JSON-LD <script>가
      끼면서 **어느 페이지에서도 안 걸렸다**. 그래서 다들 일반 section의 padding(72px)으로
      떨어졌고, 페이지마다 제 padding을 덧대며 여백이 일곱 갈래로 갈렸다. script는 <nav>
      안으로 넣어 인접 관계를 되살렸다(playbook/templates/playbook/breadcrumb.html).
   ※ 여백은 **바깥 블록 한 곳에서만** 준다. 안쪽 .container가 또 얹으면 값이 두 번 더해진다.
      새 페이지의 content 첫머리에 <style>을 두면 이 인접 관계가 다시 끊긴다 — §6-1대로
      페이지 고유 규칙은 extra_head에. */
.sitecrumbs + :is(section,article,div){padding-top:var(--page-head-top);}
.sitecrumbs + :is(article,div) > .container{padding-top:0;}
/* 도구↔데이터셋 상호 안내(중복 혼선 정리) */
.xref-note{font-size:.85rem;color:var(--ink-soft);background:var(--surface-2);
  border-radius:var(--r-sm);padding:.5rem .8rem;margin:.2rem 0 1rem;}



/* 축 봉합 범례(axis_legend) — 입력 5축 → S점수 → 출력 6기능군 */
.axleg{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface-2);
  padding:1.1rem 1.2rem;margin:1.4rem 0;}
.axleg-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;}
.axleg-head h2{font-size:1.05rem;margin:0;}
.axleg-head a{color:var(--violet);font-weight:600;font-size:.85rem;}
.axleg-line{color:var(--ink-soft);font-size:.9rem;line-height:1.55;margin:.4rem 0 1rem;}
.axleg-line strong{color:var(--ink);}
.axleg-flow{list-style:none;display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:.7rem;padding:0;margin:0;}
@media (max-width:760px){.axleg-flow{grid-template-columns:1fr;}}
.axleg-stage{position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:.75rem .85rem;}
.axleg-stage--in{border-left:4px solid var(--brass);}
.axleg-stage--match{border-left:4px solid var(--violet);}
.axleg-stage--out{border-left:4px solid var(--clay);}
.axleg-role{display:inline-block;font-size:.68rem;font-weight:800;letter-spacing:.04em;
  color:var(--muted);text-transform:uppercase;}
.axleg-stage b{display:block;font-size:.92rem;color:var(--ink);margin:.1rem 0 .45rem;}
.axleg-items{display:flex;flex-wrap:wrap;gap:.3rem;}
.axleg-items>span{font-size:.76rem;border-radius:999px;padding:.18rem .5rem;
  background:var(--paper-2);color:var(--ink-soft);}
.axleg-items .func6{cursor:help;background:var(--surface-2);border:1px solid var(--line);}
.axleg-items .func6 i{font-style:normal;font-weight:800;color:var(--clay-deep);}
.axleg-stage small{display:block;color:var(--muted);font-size:.76rem;margin-top:.45rem;line-height:1.4;}
/* 진단 5축 칩(.diag5)은 data-axis 팝오버 없음 — 6기능군과 시각 분리 */
.axleg-items .diag5{background:var(--brass-tint);color:var(--ink-soft);}

/* 진단 보고서 인덱스 — 작동 필터 */
.report-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:1rem 0;}
.rf-field{display:inline-flex;align-items:center;gap:.4rem;}
.rf-lab{font-size:.82rem;color:var(--muted);font-weight:700;}
.rf-field select{padding:.4rem .6rem;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);color:var(--ink);font-size:var(--field-font);min-height:var(--tap);}
@media (min-width:881px){.rf-field select{font-size:.85rem;min-height:0;}}
.rf-depths{display:inline-flex;gap:.3rem;}
.rf-depth{border:1px solid var(--line);background:var(--surface);color:var(--muted);
  border-radius:999px;padding:.3rem .8rem;font-size:.82rem;cursor:pointer;}
.rf-depth.on{background:var(--violet);color:#fff;border-color:var(--violet);font-weight:700;}
.rf-count{font-size:.8rem;margin-left:auto;}

/* 사례 카드 역링크 — 이 사례를 근거로 쓰는 혁신모델(인덱스는 코드 칩, 상세는 링크) */
.cdb-models{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin:.4rem 0 0;}
.cdb-models .lab{font-size:.72rem;color:var(--muted);font-weight:700;}
.cdb-mchip{font-size:.72rem;padding:.08em .45em;border-radius:var(--r-sm);
  background:var(--c-open-bg);color:var(--c-open);font-weight:700;}
/* 문제유형 칩(사례 카드·상세) — '왜' 쪽이라 clay 톤 */
.cdb-prob{display:flex;flex-wrap:wrap;gap:.3rem;margin:.1rem 0 .45rem;}
.prob-chip{font-size:.72rem;padding:.12em .55em;border-radius:999px;
  background:var(--clay-tint);color:var(--clay-deep);font-weight:600;}


/* 보고서 전체 본문 인라인 (MarkdownBlock → core.markdownify) */
.md-report{font-size:.99rem;line-height:1.75;color:var(--ink-soft);}
.md-report>:first-child{margin-top:0;}
.md-report h2{font-family:var(--serif);font-size:1.5rem;color:var(--ink);
  margin:2.6rem 0 .8rem;padding-top:1.3rem;border-top:1px solid var(--line);}
.md-report h3{font-family:var(--serif);font-size:1.2rem;color:var(--ink);margin:1.9rem 0 .6rem;}
.md-report h4{font-size:1.03rem;color:var(--ink);margin:1.4rem 0 .5rem;}
.md-report p{margin:.7rem 0;}
.md-report ul,.md-report ol{margin:.7rem 0 .7rem 1.3rem;}
.md-report li{margin:.32rem 0;}
.md-report strong{color:var(--ink);}
.md-report blockquote{margin:1rem 0;padding:.85rem 1.1rem;background:var(--surface-2);
  border-left:3px solid var(--jade-soft);border-radius:0 var(--r-sm) var(--r-sm) 0;}
.md-report blockquote p{margin:.4rem 0;}
.md-report blockquote>:first-child{margin-top:0;}
.md-report blockquote>:last-child{margin-bottom:0;}
.md-report hr{border:0;border-top:1px solid var(--line);margin:2.2rem 0;}
/* 스크롤 컨테이너일 뿐 테두리를 갖지 않는다 — 셀(th·td)이 이미 1px --line으로 표의 바깥
   경계를 만들고 있어, 래퍼에도 선을 주면 표 둘레에 **테두리가 두 겹**으로 겹쳐 보였다
   (2026-09-02 박사 "의미 없는 테두리가 하나 더"). 모바일 카드 모드는 이미 border:0였다.
   table을 block으로 두는 이유 = inline 요소로 남으면 baseline 여백이 아래에 붙는다. */
.md-report .md-table-wrap{margin:1.4rem 0;overflow-x:auto;line-height:0;}
.md-report .md-table-wrap>table{line-height:1.55;}
.md-report table{border-collapse:collapse;width:100%;font-size:.8rem;line-height:1.55;table-layout:auto;}
/* 넓은 표(비교진단표 9열)만 본문 칼럼 밖으로 대칭 확장(브레이크아웃)해
   가로 스크롤 없이 한눈에 본다. 데스크톱은 스크롤 없음, 모바일만 fallback 스크롤. */
.md-report .md-table-wide{width:min(var(--w-report-table),94vw);
  margin-inline:calc((100% - min(var(--w-report-table),94vw)) / 2);}
.md-report .md-table-wide table{font-size:.78rem;}
.md-report th,.md-report td{border:1px solid var(--line);padding:.5rem .6rem;
  text-align:left;vertical-align:top;}
.md-report thead th{background:var(--surface-2);color:var(--ink);font-weight:600;white-space:nowrap;}
.md-report tbody tr:nth-child(even){background:var(--surface);}
.md-report code{background:var(--surface-2);padding:.1rem .35rem;border-radius:4px;font-size:.85em;}
/* 비교진단 카드는 글머리표 목록이 아니라 본문 폭을 그대로 쓰는 박스 더미다. 그런데 마크다운
   목록 들여쓰기(.md-report ul 1.3rem + .report-body ul 1.25rem)가 <ul>이라는 이유로 딸려
   들어와, 본문·표(l=157)보다 40px 안으로 밀려 있었다(2026-09-01 박사 지적 — 일부러 한 것이
   아니다). 줄을 맞춘다. 안쪽 .gm-mechs는 제 규칙이 더 세서 영향 없다. */
.md-report .rc-gapmodels,.report-body .rc-gapmodels{margin-left:0;padding-left:0;}

/* ── 보고서 본문 조판 (2026-09-02 박사 "가독성 낮은 텍스트가 많다") ────────────
   발행본 .md는 그대로 두고 조판만 손본다. 문단 나누기는 렌더 시점 후처리가 맡고
   (core_tags._split_long_paragraphs), 여기서는 한 줄 길이·간격·강조 위계를 잡는다.
   범위를 `.report-body`로 좁힌다 — 소개(.about__body)는 제 조판을 갖는다. */

/* ① 문단 첫 줄 들여쓰기 (2026-09-02 박사). 한국어 출판 관행대로 문단 머리를 한 글자 들인다 —
   문단 경계가 간격만이 아니라 형태로도 보여, 렌더가 나눈 조각들이 서로 다른 문단임이 드러난다.
   ★ 구 규칙(max-width:42em)은 폐기했다: 칼럼 오른쪽이 비어 글이 왼쪽으로 쏠렸다(박사 지적).
   한 줄 길이는 칼럼 폭(--w-content 920px)이 정한다 — 여기서 따로 줄이지 않는다. */
/* ★ 양쪽 정렬은 대 보고 되돌렸다(2026-09-02 박사 "막상 보니 이상하다") — CJK 분산
   방식(inter-character)은 강(river)은 없앴지만 늘어난 줄에서 숫자 자간이 드러났다. 왼쪽 정렬. */
/* ★ 1em = 한글 한 글자(2026-09-02 박사 "너무 들어간 것 같다"). 구 1.6em은 근거 없이
   잡은 값이었다 — 들여쓰기는 문단이 새로 선다는 표시면 되고, 그 이상은 왼쪽 선을 흔든다. */
.report-body .md-report>p{text-indent:1em;}
/* 들여쓰지 않는 곳
   ① 각주 첫 조각 — [주N]이 왼쪽에 서야 한다.
   ② **박스(인용) 안 전부**(2026-09-02 박사) — 박스는 테두리와 색면으로 이미 구획돼 있고
      폭이 좁아, 들여쓴 줄이 박스 왼쪽 선과 어긋나 보인다. 문단 경계는 간격이 맡는다.
   ★ 절의 첫 문단도 들여쓴다(2026-09-02 박사 2차). 한동안은 '첫 문단에는 이어짐 표시가
     필요 없다'고 보아 제외했는데, 그러면 절마다 첫 줄만 왼쪽으로 튀어나와 §2처럼 문단이
     여럿인 절에서 시작이 어긋나 보인다. 절 전체를 같은 조판으로 둔다. */
.report-body .md-report blockquote p,
.report-body .md-report li>p:first-child{text-indent:0;}

/* ② 문단 사이를 넓힌다. 후처리가 벽을 두세 조각으로 나눠도 간격이 좁으면 여전히 벽이다. */
.report-body .md-report p{margin:1.05rem 0;}
.report-body .md-report blockquote p{margin:.65rem 0;}

/* ③ ★ 절의 첫 문단을 키우지 않는다(2026-09-02 박사 "첫 문단만 강조되어 보인다").
   구 규칙은 1.06em + --ink로 첫 문단을 리드처럼 세웠는데, §2의 첫 문단은 절을 요약하는
   리드가 아니라 해설의 첫 대목이라 없던 위계가 생긴다. 본문은 한 크기·한 색이다. */

/* ④ 굵기 강조 — strong이 본문(ink-soft)과 구분되게 잉크 + 700. 숫자·기관명이 여기 붙는다. */
.report-body .md-report strong{color:var(--ink);font-weight:700;}
/* 밑줄 강조는 링크에만 쓴다(강조 수단을 둘로 나눠 서로 침범하지 않게). */
.report-body .md-report p a,
.report-body .md-report li a{text-underline-offset:3px;text-decoration-color:var(--jade-soft);}

/* ⑤ 인용 블록 위계 — 문서 머리의 성격 고지(연속 blockquote)는 큰 민트 면 하나로 뭉치고,
   본문 중간의 인용은 얇은 선만 남긴다. 다 칠하면 강조가 강조를 잃는다(§6). */
.report-body .md-report blockquote+blockquote{margin-top:-.4rem;border-top:0;}
.report-body .md-report h2~blockquote{background:transparent;border-left-width:2px;
  padding:.15rem 0 .15rem 1rem;}
.report-body .md-report h2~blockquote+blockquote{margin-top:.7rem;}

/* ⑥ 각주(산정 근거) — 참조용 밀집 텍스트라 본문과 다른 조판을 준다.
   내어쓰기로 [주N]이 왼쪽에 서고, 항목 사이를 벌려 어디서 끊기는지 보이게 한다. */
.report-body .md-report li:has(a[id^="ju"]){
  list-style:none;margin:1.1rem 0;padding-left:1.1rem;
  border-left:2px solid var(--line);font-size:.93em;
}
.report-body .md-report li:has(a[id^="ju"]) strong:first-of-type{
  color:var(--jade-deep);
}
.report-body .md-report li>p{margin:.7rem 0;}
.report-body .md-report li>p:first-child{margin-top:0;}
.report-body .md-report li>p:last-child{margin-bottom:0;}
/* 들여쓰기 — 목록 자체는 글머리표 자리만큼만 들이고 각주는 위 규칙이 따로 잡는다. */
.report-body .md-report ul:has(a[id^="ju"]){margin-left:0;padding-left:0;}

/* ⑦ 표 — 셀이 빽빽해 줄이 붙는다. 줄간과 세로 여백을 조금 준다. */
.report-body .md-report td{line-height:1.6;padding-top:.55rem;padding-bottom:.55rem;}

/* 전체 본문이 있을 때 보조 L0 뷰(6기능군·관련 사례) 구분선 */
/* 상단 보조뷰 — 요약과의 구분선 제거·간격 통일(2026-07-03 박사). 요약/강점/핵심공백 3블록 세로 간격 = 1.4rem */
.report-l0--sup{margin-top:1.4rem;}
.report-l0 .rc-teaching{margin-bottom:1.4rem;}

/* 작성규칙 세대 표시 (2026-08-26) — 자료가 어느 세대 규칙으로 만들어졌는지 있는 그대로 보인다.
   '구세대'라 부르지 않고 사실만 적는다(§11-1). 눈에 띄되 제목을 가리지 않는 크기. */
.report-gen{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;
  margin:0 0 2rem;font-size:.82rem;line-height:1.5;color:var(--ink-soft);}
/* 밑줄은 border가 아니라 text-decoration으로 — flex 항목이 되면 border는 항목 상자 바닥에
   붙어 글자에서 떨어진다(2026-09-02, gt-lead와 같은 함정). */
/* flex 항목이 되면서 링크 높이가 글자에 딱 맞아 20px가 됐다(터치 타깃 AA 24px 미달) —
   inline-flex + min-height로 되돌린다. 밑줄은 text-decoration이라 상자가 커져도 글자에 붙는다. */
/* 밑줄 색은 --line이면 거의 안 보여 링크인 줄 모른다 — 판권면답게 조용하되 눈에는 들도록
   --jade-soft로 한 단 올린다(2026-09-02). */
.report-gen a{color:var(--jade);text-decoration:underline;
  text-decoration-color:var(--jade-soft);text-underline-offset:3px;
  display:inline-flex;align-items:center;min-height:24px;}
.report-gen a:hover{text-decoration-color:var(--jade);}
/* '현행'은 상태 표시라 눈에 띄어야 하지만, 위가 텍스트가 된 뒤로는 알약 하나만 남으면 그것이
   튄다. §6대로 직각 + 얇은 테두리로 낮춘다. 줄 가운데에 있어 왼쪽 정렬에는 영향이 없다. */
.report-gen .gen-cur{margin-left:0;padding:.12em .45em;border:1px solid var(--jade-soft);
  border-radius:0;font-size:.72rem;font-weight:700;line-height:1.35;color:var(--jade-deep);
  background:var(--jade-tint);}
.report-gen .gen-note{display:inline;margin:0;}
@media (max-width:520px){.report-gen .gen-note{flex-basis:100%;}}
