
/* ============ Design tokens ============ */
/* 팔레트 기준: kna.io.kr (레퍼런스)
   흰 배경(#fff)이 주가 되고, 보조 띠는 아주 옅은 회색(#f5f6f8),
   본문은 회색(#808291)·제목은 차콜(#292d36). 고려대 정체성인 크림슨은
   액센트로 남긴다 — 레퍼런스의 오렌지(#dd6531)는 그 사이트가 쓴 상용
   컨설팅 템플릿의 기본색이지 KNA가 고른 색이 아니다. */
:root{
  --accent:#C00C2A;       /* 사이트 포인트 색상 — 이 한 줄만 바꾸면 전체 강조색이 함께 바뀐다 */
  --ink:#292d36;          /* 제목 — 검정이 아니라 차콜 */
  --ink-soft:#6b6e7d;     /* 본문 — 레퍼런스는 #808291 이지만 흰 배경에서 3.8:1 로 WCAG AA(4.5:1) 미달.
                             같은 회색 계열을 유지한 채 진하게 조정했다. 흰 배경 5.1:1 / 회색 띠 4.7:1 로
                             두 배경 모두에서 통과한다. 독자층이 장년이다. */
  --crimson:var(--accent);
  --crimson-deep:color-mix(in srgb,var(--accent) 82%,#000);
  --crimson-soft:color-mix(in srgb,var(--accent) 34%,#fff);
  --paper:#ffffff;        /* 본문 배경 — 순백 */
  --paper-2:#f5f6f8;      /* 교차 띠 — 레퍼런스의 #f7f7f7 계열 */
  /* --line(회색 경계선) 은 토큰째 삭제했다. 면과 여백으로 나누고 선을 긋지 않는다. */
  --white:#ffffff;
  --shadow: 0 18px 40px -22px rgba(41,45,54,.28);
  --sans:'Pretendard','Noto Sans KR',sans-serif;
  --serif:var(--sans);    /* 레퍼런스가 전면 sans라 세리프를 쓰지 않는다. 되돌리려면 이 줄만 'Noto Serif KR', serif 로 */
  --maxw:1180px;
  /* 좌우 여백. 헤더와 본문이 같은 선에 서야 하므로 .wrap 과 .header-inner 가 이 값 하나를 같이 쓴다.
     한쪽만 고치면 로고가 섹션 제목보다 바깥으로 튀어나간다 — 실제로 그렇게 어긋나 있었다. */
  --gutter:28px;
  --header-h:76px;
  /* 교우 활동 모드의 판 두 장 — 사이드 폭과 바닥 여백. 본문이 이 값만큼 물러난다 */
  --side-w:206px;
  --shell-x:clamp(20px,4.5vw,72px);
  --shell-y:26px}
@media(max-width:720px){ :root{--gutter:20px} }
/* 고정 헤더에 가려지지 않도록 모든 앵커 대상에 여백 */
[id]{scroll-margin-top:calc(var(--header-h) + 20px)}
*{box-sizing:border-box;margin:0;padding:0}
/* 브라우저 기본 <button> 은 `2px outset` 입체 테두리를 달고 나온다. 배경만 칠하고 테두리를
   끄는 걸 잊으면 90년대 회색 버튼이 그대로 남는다 — 관리 표에 105개가 그렇게 떠 있었다.
   회색 선을 긋지 않는다는 규칙이라 여기서 한 번에 끈다. 테두리가 필요한 버튼은 각자 다시 켠다. */
button{border:0;font-family:inherit}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  color:var(--ink-soft);       /* 본문 기본색을 회색으로 — 레퍼런스와 동일 */
  font-size:17px;              /* 레퍼런스 본문 17px */
  line-height:1.76;            /* 레퍼런스 17px/30px */
  -webkit-font-smoothing:antialiased;
  position:relative}
/* 종이 질감은 제거한다 — 크림색 배경에 깊이를 주려던 장치라
   순백 배경에서는 화면을 탁하게만 만든다. 되살리려면 이 블록을 복원하면 된다. */
::selection{background:var(--crimson);color:var(--white)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--paper-2)}
::-webkit-scrollbar-thumb{background:var(--crimson-soft);border:2px solid var(--paper-2);border-radius:var(--r-pill)}
::-webkit-scrollbar-thumb:hover{background:var(--crimson)}
html{scrollbar-color:var(--crimson-soft) var(--paper-2);scrollbar-width:thin}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--crimson);outline-offset:3px;border-radius:1px}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms !important;transition-duration:.001ms !important}}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
/* <b>·<strong> 은 브라우저 기본이 700 이라 본문 강조가 혼자 굵어진다 — 나머지와 같은 600 으로 */
b,strong{font-weight:600}
ul{list-style:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.eyebrow{
  font-family:var(--sans);
  font-size:12.5px;
  letter-spacing:.22em;
  font-weight:600;
  color:var(--crimson);
  text-transform:uppercase;
  display:inline-flex;align-items:center;gap:10px}
.eyebrow::before{content:'';width:24px;height:1px;background:var(--crimson)}
/* 레퍼런스 제목: weight 600, 자간을 음수로 좁게(-2px@55px ≒ -.036em) */
h1,h2,h3,h4,h5,h6{font-family:var(--serif);font-weight:600;letter-spacing:-.03em}
h1,h2,h3{color:var(--ink)}   /* h4~h6 은 어두운 푸터에도 쓰여 색을 각자 정한다 */
/* 폭은 720px 한 값만 쓴다. 페이지마다 640/680/760 으로 갈라져 제목 줄바꿈 위치가 달랐다. */
.section-head{max-width:720px;margin-bottom:44px;text-align:left}
.section-head h2{font-family:var(--sans);font-size:clamp(34px,4.2vw,52px);font-weight:600;letter-spacing:-.045em;line-height:1.16;margin:0}
.section-head p{color:var(--ink-soft);margin-top:14px;font-size:16px;line-height:1.76}
.section{padding:120px 0}
.section.alt{background:var(--paper-2)}
/* ============ 버튼 — 이 블록이 사이트의 모든 버튼이다 ============
   한때 여섯 벌이었다. 공개 화면 .btn / 관리자 로그인 / 모달 / 교우 로그인 /
   표 안 버튼이 각자 여백·글자·모서리를 따로 정했고 그중 둘은 `.btn` 이라는
   같은 이름을 덮어써서 `.btn` 이 어디 있느냐에 따라 다른 물건이 됐다.

   골격은 여기 하나다. 새 버튼이 필요하면 아래 변형에 줄을 더하지
   다른 곳에 .btn 을 다시 정의하지 않는다.

   평평하게 둔다 — 그림자로 띄우지 않고 hover 는 색만 바꾼다. 면과 여백으로
   나눈다는 규칙이 버튼에도 그대로 적용된다. */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 26px;border-radius:var(--r-pill);font-weight:600;font-size:14.5px;
  font-family:var(--sans);line-height:1.2;
  border:1px solid var(--crimson);cursor:pointer;
  transition:background .25s ease,border-color .25s ease,color .25s ease;
  white-space:nowrap}
.btn.primary{background:var(--crimson);color:var(--white)}
.btn.primary:hover{background:var(--crimson-deep);border-color:var(--crimson-deep)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{border-color:var(--ink);background:var(--ink);color:var(--white)}
.btn.on-dark{border-color:rgba(255,253,249,.6);color:var(--white)}
.btn.on-dark:hover{background:var(--white);color:var(--crimson-deep);border-color:var(--white)}

/* 전폭 — 로그인·가입·모달 제출처럼 칸을 꽉 채우는 자리 */
.btn.block{width:100%;padding:14px 26px}
/* 표 안 — 행 높이를 밀지 않을 만큼 작게. 테두리는 끈다(면으로 나눈다).
   면은 반투명 잉크다. --paper-2 로 칠하면 얼룩 행에서 배경과 같은 색이 돼 버튼이 사라진다. */
.btn.sm{padding:6px 12px;font-size:11.5px;gap:5px;border-color:transparent;
  background:rgba(41,45,54,.06);color:var(--ink-soft)}
.btn.sm:hover{background:var(--crimson);border-color:var(--crimson);color:var(--white)}
/* 표 안 상태 버튼 — 승인·해지는 글자가 아니라 색이 먼저 알린다 */
.btn.sm.on{background:#e3f1e5;color:#1f6b2c}
.btn.sm.on:hover{background:#1f6b2c;border-color:#1f6b2c;color:var(--white)}
.btn.sm.off{background:#e7e7e7;color:#555}
.btn.sm.off:hover{background:var(--accent);border-color:var(--accent);color:var(--white)}

/* ============ Header ============ */
header{
  position:sticky;top:0;z-index:100;
  /* 헤더가 레이아웃 자리를 차지하지 않게 해서 히어로가 화면 맨 위까지 올라오고
     헤더는 그 위에 얹힌다. position:fixed 대신 음수 마진을 쓰는 이유는
     페이지 내부의 sticky 요소들(회칙 목차·과정 탭바 등)이 top:var(--header-h) 로
     이 헤더에 붙어 있어서, sticky 를 유지해야 그 계산이 그대로 산다. */
  margin-bottom:calc(var(--header-h) * -1);
  background:rgba(255,255,255,.92);   /* 옛 크림색(247,243,234)이 하드코딩돼 있어 팔레트 교체를 따라오지 못했다 */
  backdrop-filter:blur(10px);
  transition:background .3s ease,box-shadow .3s ease,transform .38s cubic-bezier(.22,.7,.2,1);
  will-change:transform}
header.is-hidden{transform:translateY(calc(-100% - 22px))}
header.is-floating{background:transparent;backdrop-filter:none;box-shadow:none}
.header-inner{transition:height .3s ease,max-width .3s ease,margin .3s ease,background .3s ease,box-shadow .3s ease,border-radius .3s ease}
header.is-floating .header-inner{
  max-width:min(var(--maxw),calc(100% - 32px));height:64px;margin-top:12px;padding:0 var(--gutter);
  background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-radius:var(--r-flat);
  box-shadow:0 12px 34px -18px rgba(41,45,54,.42)}
header.at-top .header-inner{background:transparent;box-shadow:none;border-radius:0;margin-top:0}
/* 최상단에서는 히어로에 이어지도록 투명하게 둔다. 스크롤을 내리면 흰 헤더로 굳는다.
   글자색은 최상단 배경에 따라 둘로 갈린다 — 아래 .dark-top 주석을 함께 본다. */
header.at-top{
  background:transparent;
  backdrop-filter:none;
  box-shadow:none}
header.at-top nav.primary>a,
header.at-top .nav-dd>button,
header.at-top .related-dd>button{color:var(--crimson-deep)}
header.at-top .nav-dd .caret{color:var(--crimson)}
header.at-top .logo img.logo-dark{display:block}
header.at-top .logo img.logo-light{display:none}
/* 마크가 원형이라 바 높이가 그대로 천장이다. 맨 위(76px 바)에서는 크게 두고
   스크롤해 바가 64px 로 줄면 같이 줄인다. 인라인 style 로 박으면 이 규칙을 이겨서
   두 상태가 한 크기로 굳는다 — 그래서 크기는 여기서만 정한다. */
.logo img{height:48px;width:auto;transition:height .3s ease}
header.is-floating .logo img{height:40px}
header.at-top .burger span{background:var(--crimson-deep)}
/* 배경이 어두운 최상단(홈 히어로 사진 · 관리자 화면)에서만 흰 글자·흰 로고로 뒤집는다.
   .page-hero 는 흰 배경이라 여기에 끌어들이면 글자가 통째로 사라진다 — 가르는 것은
   updateHeaderTone() 이고 이 조합은 header.at-top.dark-top 하나뿐이다.
   그림자는 쓰지 않는다 — 읽힘은 히어로 스크림이 감당한다. */
header.at-top.dark-top nav.primary>a,
header.at-top.dark-top .nav-dd>button,
header.at-top.dark-top .related-dd>button{color:var(--white)}
header.at-top.dark-top .nav-dd .caret{color:rgba(255,253,249,.8)}
header.at-top.dark-top nav.primary>a::after,
header.at-top.dark-top .nav-dd>button::after{background:var(--white)}
header.at-top.dark-top .burger span{background:var(--white)}
header.at-top.dark-top .logo img.logo-dark{display:none}
header.at-top.dark-top .logo img.logo-light{display:block}
.logo img.logo-light{display:none}
.header-inner{
  max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);
  display:flex;align-items:center;justify-content:space-between;height:var(--header-h);gap:14px}
.logo{display:flex;align-items:center;margin-right:auto}
nav.primary{display:flex;gap:6px;flex:0 1 auto;justify-content:flex-end;align-items:center;margin-left:auto}
nav.primary a{
  height:40px;padding:0 14px;font-size:17px;font-weight:600;color:var(--ink);
  position:relative;white-space:nowrap;display:flex;align-items:center;line-height:1}
nav.primary a::after{
  content:'';position:absolute;left:16px;right:16px;bottom:4px;height:2px;background:var(--crimson);
  transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
nav.primary a:hover::after{transform:scaleX(1)}
.header-right{display:flex;align-items:center;gap:8px;margin-left:18px}
.nav-dd{position:relative}
.nav-dd>button{
  height:40px;padding:0 14px;font-size:17px;font-weight:600;color:var(--ink);line-height:1;
  background:transparent;border:none;cursor:pointer;font-family:var(--sans);
  display:flex;align-items:center;gap:4px;white-space:nowrap;position:relative}
.nav-dd>button::after{
  content:'';position:absolute;left:12px;right:12px;bottom:4px;height:2px;background:var(--crimson);
  transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.nav-dd>button:hover::after{transform:scaleX(1)}
.nav-dd.active>button::after{transform:scaleX(1)}
.nav-dd .caret{font-size:12px;color:var(--ink-soft);transition:transform .2s ease}
.nav-dd.open .caret{transform:rotate(180deg)}
.nav-dd .nav-dd-menu{
  position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-6px);
  background:var(--white);box-shadow:var(--shadow);min-width:170px;
  opacity:0;visibility:hidden;transition:all .2s ease;padding:0;border-radius:var(--r-card);overflow:hidden}
.nav-dd.open .nav-dd-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
/* 마우스가 있는 기기에서는 올리기만 해도 열린다.
   `@media(hover:hover)` 로 가르는 이유: 터치 기기에 hover 를 그대로 주면 «한 번 눌러 열고
   다시 눌러야 이동»이 되어 한 번에 못 간다. 손가락 기기는 클릭 방식을 그대로 쓴다.
   메뉴가 단추 바로 아래 붙어 있어야 마우스가 빠지지 않으므로 사이 간격은 padding 으로 잇는다. */
@media(hover:hover) and (pointer:fine){
  .nav-dd:hover .nav-dd-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
  .nav-dd::after{content:'';position:absolute;left:0;right:0;top:100%;height:14px}
}
.nav-dd-menu a{
  display:block;height:auto;padding:12px 16px;font-size:15.5px;font-weight:500;color:var(--ink);
  white-space:nowrap;line-height:1.4}
.nav-dd-menu a:last-child{border-bottom:none}
.nav-dd-menu a:hover{background:var(--paper);color:var(--crimson)}
.auth-dd .nav-dd-menu{left:auto;right:0;transform:translateY(-6px);min-width:150px}
.auth-dd.open .nav-dd-menu{transform:translateY(0)}
.login-menu>button{color:var(--crimson);padding-left:8px;padding-right:8px}
.related-dd{position:relative}
.related-dd>button{
  font-size:15px;font-weight:600;padding:9px 14px;background:transparent;
  display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--ink)}
.related-dd>button:hover{color:var(--crimson)}
/* 지구본은 인라인 SVG 다. 이모지(🌐)는 컬러라 크림슨↔흰색 반전을 못 따라오고
   글리프(◎)로 바꿨더니 지구본으로 안 읽혔다. currentColor 를 타는 선화라야 둘 다 산다. */
#langDd>button{width:42px;padding:0;justify-content:center;border:0}
#langDd .lbl{font-size:0;display:flex;align-items:center}
#langDd svg{display:block;width:22px;height:22px}
.related-menu{
  position:absolute;top:calc(100% + 8px);right:0;background:var(--white);box-shadow:var(--shadow);min-width:230px;
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:all .2s ease;border-radius:var(--r-card);overflow:hidden}
.related-dd.open .related-menu{opacity:1;visibility:visible;transform:translateY(0)}
.related-menu a{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;font-size:14.5px;font-weight:500}
.related-menu a:last-child{border-bottom:none}
.related-menu a:hover{background:var(--paper)}
.related-menu .ext{font-size:11px;color:var(--ink-soft)}

/* ===== 구글 번역 위젯 기본 UI 숨김 (커스텀 언어 드롭다운만 노출) ===== */
#google_translate_element{display:none !important}
/* 번역을 켜면 구글이 화면 맨 위에 자기 배너(iframe)를 fixed 로 얹고 body 를 아래로 민다.
   예전 클래스명(.goog-te-banner-frame)만 막아둬서 새 이름(VIpgJd-…)으로 바뀐 뒤로는
   배너가 그대로 떴다. 이름이 또 바뀌어도 살아남게 iframe.skiptranslate 로 막는다. */
iframe.skiptranslate,.goog-te-banner-frame.skiptranslate{display:none !important}
body{top:0 !important;position:static !important}
html body{top:0 !important}
.goog-te-gadget-icon,.goog-te-gadget-simple .goog-te-menu-value span{display:none !important}
#goog-gt-tt,.goog-te-balloon-frame,.goog-tooltip,.goog-tooltip:hover{display:none !important;visibility:hidden !important}
.goog-text-highlight{background:none !important;box-shadow:none !important}
.publish-banner{
  margin-top:14px;padding:12px 14px;background:#eef7ee;border-left:3px solid #1f6b2c;
  font-size:12.5px;color:#1f6b2c;line-height:1.7;display:none}
.publish-banner.show{display:block}
.my-posts{margin-top:26px;padding-top:18px;display:none}
.my-posts.show{display:block}
.my-posts h4{font-size:13px;color:var(--ink-soft);margin-bottom:10px}
.my-post-row{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:7px 0;font-size:12.5px}
.my-post-row .mp-title{flex:1;color:var(--ink);font-weight:600}
.my-post-row .mp-cat{color:var(--ink-soft);font-size:11px}
.burger{display:none;background:none;border:none;cursor:pointer;padding:6px}
.burger span{display:block;width:22px;height:2px;background:var(--ink);margin:5px 0}

/* ============ Hero — 풀스크린 슬라이더 ============ */
.hero{
  position:relative;overflow:hidden;
  /* 헤더(sticky)가 위에서 자리를 차지하므로 그만큼 빼야 하단 고지 바까지 한 화면에 들어온다 */
  min-height:100vh;    /* 폴백 — svh 미지원 브라우저. 헤더가 위에 얹히므로 빼지 않는다 */
  min-height:100svh;   /* 모바일 주소창 변동 대응 */
  display:flex;flex-direction:column;
  background:linear-gradient(160deg,var(--crimson-deep) 0%,var(--crimson) 62%,color-mix(in srgb,var(--accent) 70%,#000) 100%);
  color:var(--white);padding:0}
/* 배경 사진 무대 — 겹쳐 두고 페이드하면 두 장이 동시에 반투명해지는 순간
   .hero 의 적색 그라데이션이 비쳐 붉게 번쩍인다. 그래서 옆으로 밀어 넘긴다.
   슬라이드는 항상 불투명하므로 아래 배경이 드러날 틈이 없다. */
.hero-stage{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero-track{display:flex;height:100%;transition:transform 1s cubic-bezier(.65,.05,.25,1);will-change:transform}
/* overflow:hidden 필수 — 켄번즈가 사진을 1.08배로 키워 두기 때문에
   자르지 않으면 확대분이 옆 슬라이드 위로 삐져나와 가장자리에 겹쳐 보인다. */
.hero-slide{position:relative;flex:0 0 100%;height:100%;overflow:hidden}
.hero-slide img{
  width:100%;height:100%;object-fit:cover;object-position:center 38%;
  transform:scale(1.08)}
.hero-slide.is-on img{animation:heroKenBurns 9s ease-out forwards}
@keyframes heroKenBurns{from{transform:scale(1.08)}to{transform:scale(1)}}
/* 사진 위 어두운 층 — 글자 대비만 확보하고 사진을 가리지 않는다.
   이전에는 선형(.62/.58/.88) + 방사형(.42) 두 겹에 대각선 줄무늬(.hero::after)까지
   얹혀 사진이 거의 안 보였다. 레퍼런스처럼 한 겹으로 줄이고 위쪽은 열어 둔다. */
.hero-scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(18,16,15,.10) 0%, rgba(18,16,15,.34) 52%, rgba(18,16,15,.56) 100%)}
/* 본문 */
.hero-body{
  position:relative;z-index:2;flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  width:100%;max-width:var(--maxw);margin:0 auto;
  padding:calc(52px + var(--header-h)) 28px 92px;   /* 하단 인디케이터가 제목과 겹치지 않도록 여백 확보 */
}
.hero-copy{position:relative;width:100%;display:grid}
.hero-line{
  grid-area:1/1;opacity:0;visibility:hidden;transform:translateY(16px);
  transition:opacity .8s ease,transform .8s ease,visibility .8s}
.hero-line.is-on{opacity:1;visibility:visible;transform:none}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:12px;
  font-size:clamp(11px,1.3vw,13.5px);letter-spacing:.26em;font-weight:600;
  color:var(--crimson-soft);text-transform:uppercase;margin-bottom:clamp(18px,2.6vw,30px);
  text-shadow:0 1px 6px rgba(0,0,0,.34)}
.hero-title{
  font-family:var(--serif);
  font-size:clamp(38px,8.6vw,104px);
  line-height:1.06;letter-spacing:-.042em;font-weight:600;color:var(--white);
  text-shadow:0 2px 12px rgba(0,0,0,.32);
  text-wrap:balance}
.hero-title em{display:block;font-style:normal;font-weight:600;color:var(--white)}
.hero-sub{
  margin:clamp(20px,3vw,30px) auto 0;font-size:clamp(14.5px,1.7vw,17.5px);
  color:rgba(255,253,249,.86);max-width:52ch;line-height:1.85;
  text-shadow:0 1px 8px rgba(0,0,0,.30)}
.hero-actions{
  margin-top:clamp(28px,4vw,46px);display:flex;flex-wrap:wrap;gap:12px;justify-content:center;
  position:relative;z-index:3}
.hero-actions .btn{padding:15px 28px;font-size:15px;backdrop-filter:blur(3px)}
/* 히어로 하단의 미니멀 점 인디케이터 */
.hero-dots{
  position:absolute;z-index:4;left:50%;bottom:28px;transform:translateX(-50%);
  display:flex;gap:10px;align-items:center;justify-content:center}
.hero-dot{
  width:8px;height:8px;padding:0;border:1px solid rgba(255,255,255,.9);border-radius:var(--r-round);
  background:transparent;cursor:pointer;font-size:0;position:relative;
  transition:background .25s ease,transform .25s ease}
.hero-dot[aria-selected="true"]{background:var(--white);transform:scale(1.25)}
.hero-dot:hover{background:rgba(255,255,255,.7)}
/* 세로가 짧은 노트북(예: 1280x720)에서도 히어로가 한 화면에 들어오도록 */
@media(max-height:780px){
  .hero-title{font-size:clamp(32px,5.4vw,60px)}
  .hero-body{padding:34px 28px 72px}
  .hero-eyebrow{margin-bottom:16px}
  .hero-sub{margin-top:16px;font-size:14.5px;line-height:1.7}
  .hero-actions{margin-top:26px}
  .hero-actions .btn{padding:12px 20px;font-size:14px}
  .hero-dots{bottom:22px}
}
@media(prefers-reduced-motion:reduce){
  .hero-slide.is-on img{animation:none;transform:none}
  .hero-track{transition:none}
  .hero-line{transition:none}
}

/* ============ 인사말 카드 ============ */
.msg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,34px)}
.msg-card{background:var(--white);padding:34px 30px;display:flex;flex-direction:column;position:relative}
.msg-card:hover{z-index:3}
.msg-photo{
  width:100%;aspect-ratio:1/1;background:linear-gradient(150deg,var(--paper-2),var(--paper));margin-bottom:20px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;color:var(--crimson-soft)}
.msg-photo img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease,filter .6s ease;filter:grayscale(.1) contrast(1.02)}
.msg-card:hover .msg-photo img{transform:scale(1.05);filter:grayscale(0) contrast(1.05)}
.msg-card .name{font-family:var(--serif);font-size:19px;margin-top:6px}
.msg-card .title{font-size:12.5px;color:var(--ink-soft);margin-top:3px;line-height:1.6}
.msg-card .excerpt{margin-top:16px;font-size:14.5px;color:var(--ink-soft);line-height:1.85;flex:1}
.msg-card .more{margin-top:18px;font-size:13px;font-weight:600;color:var(--crimson);display:inline-flex;align-items:center;gap:6px}
.msg-card .quote{font-size:clamp(18px,2vw,24px);font-weight:600;color:var(--ink);line-height:1.55;letter-spacing:-.035em;margin-top:16px;flex:1}
.msg-card .quote::before{content:'“'}
.msg-card .quote::after{content:'”'}
#page-home>.section{background:var(--white)}

/* ============ 신뢰 지표 · 교우 구성 ============
   새 색·새 폰트를 만들지 않는다. 기존 토큰(--ink/--crimson/--paper-2)과
   본문 타이포 스케일만 조합한다. */
#page-home .band-actions{margin-top:30px}
/* 최종 CTA 버튼 두 개 — 같은 폭 2열로 세운다. 한쪽이 길어도 열이 어긋나지 않는다. */
#page-home .cta-duo{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:520px;margin-top:32px}
#page-home .cta-duo .btn{justify-content:center;padding:17px 24px}
@media(max-width:820px){
}

/* ============ 잠금·로그인 안내 카드 ============ */
/* 교우 마당(#loungeLocked)과 소식 페이지 하단이 같이 쓴다. 한쪽만 고치면 두 화면이 갈라진다. */
.lock-card{
  max-width:620px;margin:0 auto;text-align:center;
  background:var(--white);padding:clamp(34px,5vw,52px) clamp(22px,4vw,44px)}
.lock-ico{width:38px;height:38px;color:var(--ink-soft);margin-bottom:22px}
.lock-title{font-size:clamp(22px,2.6vw,29px);font-weight:600;letter-spacing:-.035em;line-height:1.3;margin:0}
.lock-sub{margin-top:12px;font-size:14.5px;color:var(--ink-soft);line-height:1.7}
.lock-actions{margin-top:28px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.lock-note{margin-top:18px;font-size:12.5px;color:var(--ink-soft)}
@media(max-width:520px){
  #page-home .cta-duo{grid-template-columns:1fr}
  .lock-actions .btn{width:100%;justify-content:center}
}

/* ============ 브랜드 마퀴 ============ */
.news-empty{font-size:14px;color:var(--ink-soft);padding:20px 0}
#page-home .brand-band{padding:64px 0}
#page-home .brand-marquee{overflow:hidden;position:relative}
/* 양 끝을 흰색으로 흐려 로고가 잘리는 단면을 감춘다 */
#page-home .brand-marquee::before,#page-home .brand-marquee::after{
  content:'';position:absolute;top:0;bottom:0;width:110px;z-index:2;pointer-events:none}
#page-home .brand-marquee::before{left:0;background:linear-gradient(90deg,var(--white),rgba(255,255,255,0))}
#page-home .brand-marquee::after{right:0;background:linear-gradient(270deg,var(--white),rgba(255,255,255,0))}
#page-home .brand-track{display:flex;width:max-content;animation:brandRoll 78s linear infinite}
#page-home .brand-marquee:hover .brand-track{animation-play-state:paused}
#page-home .brand-set{display:flex;align-items:center;list-style:none;margin:0;padding:0}
#page-home .brand-set li{flex:0 0 auto;padding:0 30px}
/* 파일이 이미 132×44 로 맞춰져 있다. 높이만 주면 줄이 고르게 선다 */
#page-home .brand-set img{display:block;height:44px;width:132px;opacity:.42;filter:grayscale(1)}
/* 규격 로고가 없는 곳은 우리 서체로 쓴 이름이 로고 자리를 대신한다. 칸을 132×44 로 똑같이
   잡아야 로고와 한 줄에 섞여도 줄이 고르다. 두 줄까지 접히므로 낱말이 잘리지 않게 keep-all.
   14px 이라 자간은 건드리지 않는다 — 한글은 작은 글자에서 자간을 좁히면 낱자가 붙는다. */
#page-home .brand-word{
  display:flex;align-items:center;justify-content:center;text-align:center;
  width:132px;height:44px;font-size:14px;font-weight:700;line-height:1.25;
  color:var(--ink);opacity:.42;word-break:keep-all}
/* 링크가 걸린 타일만 손이 닿을 때 또렷해진다. 나머지는 그대로 흐려 있다 */
#page-home .brand-set a{display:block;text-decoration:none;color:inherit}
#page-home .brand-set a img,#page-home .brand-set a .brand-word{transition:opacity .2s,filter .2s}
#page-home .brand-set a:hover img,#page-home .brand-set a:focus-visible img{opacity:.9;filter:grayscale(0)}
#page-home .brand-set a:hover .brand-word,#page-home .brand-set a:focus-visible .brand-word{opacity:1}
@keyframes brandRoll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){
  #page-home .brand-track{animation:none}
  #page-home .brand-marquee{overflow-x:auto}
}
@media(max-width:720px){
  .news-empty{font-size:14px;color:var(--ink-soft);padding:20px 0}
#page-home .brand-band{padding:46px 0}
  #page-home .brand-set li{padding:0 20px}
  #page-home .brand-set img{height:36px;width:108px}
  #page-home .brand-marquee::before,#page-home .brand-marquee::after{width:52px}
}

/* ============ 명사 캐러셀 ============
   가로 스크롤 + 스크롤 스냅으로 짠다. 모바일 스와이프가 브라우저 기본 동작으로
   따라오고, 화살표·자동회전은 scrollTo 로만 건드리면 되기 때문이다.
   한 화면에 3장이고 넘길 때도 3장씩 간다. 한 장씩 밀면 같은 분야가 끊겨서 지나간다.
   배지는 분야별로 색을 나누지 않는다. 7색이 되면 얼굴보다 배지가 먼저 읽힌다. */
#page-home .ppl{position:relative}
#page-home #notables .section-head{max-width:920px;margin:0 auto 72px;text-align:center}
#page-home #notables .section-head h2{max-width:none;margin:0 auto;font-size:36px!important;line-height:1.14;letter-spacing:-.055em}
#page-home #notables .section-head p{max-width:620px;margin:24px auto 0;color:var(--ink-soft);font-size:17px;line-height:1.7}
#page-home .ppl-viewport{
  overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none}
#page-home .ppl-viewport::-webkit-scrollbar{display:none}
#page-home .ppl-viewport:focus-visible{outline:2px solid var(--crimson);outline-offset:4px}
#page-home .ppl-track{display:flex;gap:28px;list-style:none;margin:0;padding:0}
#page-home .ppl-card{flex:0 0 calc((100% - 56px) / 3);min-width:0;scroll-snap-align:start}
/* 4:3 이다. 3장 격자에서 1:1 로 두면 사진 한 변이 350px 을 넘어 얼굴이 섹션을 잡아먹는다.
   트랙 폭은 .wrap 을 그대로 쓰고(양 끝이 제목선과 맞아야 한다) 높이만 비율로 눌러 잡는다. */
#page-home .ppl-photo{aspect-ratio:4/3;background:var(--paper-2);overflow:hidden}
/* 상반신 중앙 정렬 — 가로 사진이 들어와도 얼굴이 잘리지 않게 위쪽을 기준으로 잡는다 */
#page-home .ppl-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block}
/* 16명 중 사진이 있는 사람이 5명뿐이다. 빈 칸을 회색으로 채우면 그 덩어리가 먼저 읽힌다 — 실선만 남긴다 */
#page-home .ppl-photo.is-empty{background:none}
/* 배지는 테두리·바탕 없이 글자만 남긴다. 사진 아래 칩이 3개 이상 늘어서면 격자가 시끄러워진다 */
#page-home .ppl-badge{
  display:block;margin-top:16px;
  font-size:11px;font-weight:500;letter-spacing:.06em;line-height:1.4;color:var(--ink-soft)}
#page-home .ppl-name{margin-top:6px;font-size:15px;font-weight:500;color:var(--ink)}
#page-home .ppl-role{
  margin-top:4px;font-size:12px;line-height:1.5;color:var(--ink-soft);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:36px;   /* 12px * 1.5 * 2줄 — 직함 길이가 달라도 카드 높이가 어긋나지 않는다 */
}
/* 화살표는 사진 위에 얹지 않고 트랙 아래 오른쪽에 붙인다. 얼굴을 가리는 원형 버튼을 없앤다. */
#page-home .ppl-nav-row{display:flex;justify-content:flex-end;gap:6px;margin-top:24px}
#page-home .ppl-nav{
  width:34px;height:34px;padding:0;
  border:0;background:none;color:var(--ink-soft);
  font-size:22px;line-height:1;cursor:pointer;
  transition:color .2s ease,opacity .2s ease}
#page-home .ppl-nav:hover{color:var(--crimson)}
#page-home .ppl-nav[disabled]{opacity:.25;cursor:default}
#page-home .ppl-nav[disabled]:hover{color:var(--ink-soft)}
@media(max-width:980px){
  #page-home .ppl-track{gap:20px}
  #page-home .ppl-card{flex:0 0 calc((100% - 40px) / 3)}
}
@media(max-width:720px){
  /* 폰에서 3장은 얼굴이 안 보인다. 2장으로 줄이고 넘김도 2장 단위가 된다(JS 가 폭에서 계산). */
  #page-home .ppl-track{gap:14px}
  #page-home .ppl-card{flex:0 0 calc((100% - 14px) / 2)}
  #page-home .ppl-nav-row{display:none}
}

/* ============ 핵심가치 ============ */
.values{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,34px)}
.value-card{background:var(--white);padding:36px 26px}
.value-card h3{font-size:17px;margin-bottom:10px}
.value-card p{font-size:13.5px;color:var(--ink-soft);line-height:1.75}

/* ============ 에디토리얼 소식 ============ */
.editorial-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:42px}
.editorial-head .section-head{margin:0}
.news-tabs{display:flex;gap:22px;flex-wrap:wrap}
.news-tab{border:0;background:none;padding:6px 0;font:600 14px var(--sans);color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent}
.news-tab.active{color:var(--crimson);border-color:var(--crimson)}
.news-editorial{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:clamp(36px,5vw,72px);align-items:start}
.news-editorial.filtered{grid-template-columns:1fr}
.news-editorial.filtered .news-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.news-feature,.news-card{display:block;min-width:0}
.news-media{overflow:hidden;background:#d9dce1;aspect-ratio:16/10}
.news-feature .news-media{aspect-ratio:16/11}
.news-media img{width:100%;height:100%;object-fit:cover;transition:transform .65s cubic-bezier(.2,.65,.25,1),filter .4s ease}
.news-feature:hover img,.news-card:hover img{transform:scale(1.045);filter:saturate(1.06)}
.news-feature-copy{padding-top:20px}
.news-kicker{font-size:12px;font-weight:600;color:var(--crimson);margin-bottom:9px}
.news-feature h3{font-size:clamp(22px,2.8vw,34px);line-height:1.35;letter-spacing:-.04em}
.news-feature p{font-size:14.5px;color:var(--ink-soft);margin-top:11px;line-height:1.75}
.news-date{display:block;font-size:12px;color:var(--ink-soft);margin-top:13px}
.news-list{display:grid;grid-template-columns:1fr;gap:30px}
.news-card{display:grid;grid-template-columns:148px 1fr;grid-template-rows:auto auto 1fr;column-gap:20px}
.news-card .news-media{grid-row:1/4;aspect-ratio:4/3}
.news-card .news-kicker{margin:2px 0 5px}
.news-card h3{font-size:18px;line-height:1.45;margin:0;transition:color .25s ease}
.news-card .news-date{margin-top:9px;align-self:end}
.news-card:hover h3{color:var(--crimson)}
.news-card[hidden]{display:none}
.news-feature[hidden]{display:none}
/* 목록에서 상세로 넘어가는 자리. 카드 전체가 눌리지만 링크는 제목에만 건다 —
   제목이 진짜 <a> 라야 키보드로 넘어가고 새 탭으로도 열린다. */
.news-feature,.news-card{cursor:pointer}
.news-link{color:inherit;transition:color .25s ease}
.news-feature:hover .news-link,.news-card:hover .news-link{color:var(--crimson)}

/* ===== 소식 상세 ===== */
#page-news-detail .art-wrap{max-width:760px;margin:0 auto;padding:calc(46px + var(--header-h)) var(--gutter) 110px}
#page-news-detail .art-back{display:inline-block;font-size:13.5px;font-weight:600;color:var(--crimson);margin-bottom:34px}
#page-news-detail .art-kicker{font-size:12px;font-weight:600;color:var(--crimson)}
#page-news-detail .art-title{font-size:clamp(28px,4.2vw,46px);line-height:1.26;letter-spacing:-.04em;margin-top:12px;text-wrap:balance}
/* 날짜·행사·등재자 줄. 선으로 나누지 않고 가운뎃점과 여백으로 나눈다 */
#page-news-detail .art-meta{margin-top:20px;font-size:13px;color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:8px 16px}
#page-news-detail .art-meta b{color:var(--crimson-deep);font-weight:600}
#page-news-detail .art-photo{margin-top:40px;background:#d9dce1;aspect-ratio:16/9;overflow:hidden}
#page-news-detail .art-photo img{width:100%;height:100%;object-fit:cover;display:block}
#page-news-detail .art-body{margin-top:38px;font-size:16.5px;line-height:1.95}
#page-news-detail .art-body p{margin:0 0 22px}
#page-news-detail .art-body p:last-child{margin-bottom:0}
#page-news-detail .art-foot{margin-top:56px}
@media(max-width:720px){
  #page-news-detail .art-wrap{padding-top:calc(28px + var(--header-h));padding-bottom:76px}
  #page-news-detail .art-body{font-size:15.5px;line-height:1.85}
}

/* ============ KNA 과정 안내 ============ */
.program-band{
  background:var(--white);color:var(--ink);position:relative;overflow:hidden}
.program-layout{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:clamp(56px,8vw,112px);align-items:start}
/* sticky 를 쓰지 않는다. 스크롤하면 제목만 따라 내려와 목록 첫 줄보다 112px 아래에 서고
   그게 세로 가운데 정렬처럼 읽혔다. 제목은 목록 첫 줄과 같은 선에 고정한다. */
.program-intro{position:static}
.program-intro .section-head{margin-bottom:0}
/* 목록을 다 읽은 자리에 둔다. 왼쪽 칸의 검은 버튼은 목록보다 먼저 눈에 띄어서 걷어냈다. */
.program-more{margin-top:32px}
.program-more .btn,.scholar-more .btn{color:var(--ink-soft);font-weight:500}
.program-more .btn span,.scholar-more .btn span{color:var(--crimson);font-size:17px;line-height:1}
.program-more .btn:hover,.scholar-more .btn:hover{border-color:var(--ink);background:transparent;color:var(--ink);transform:none}

/* 석학과 전문가 — 이름 줄. 상자를 만들지 않는다 */
#page-home .scholar-line{list-style:none;display:flex;flex-wrap:wrap;gap:14px 34px;margin:0 0 34px;padding:0}
#page-home .scholar-line li{display:flex;align-items:baseline;gap:8px;min-width:0}
#page-home .scholar-line b{font-size:16px;font-weight:600;color:var(--ink)}
#page-home .scholar-line i{font-style:normal;font-size:13px;color:var(--ink-soft)}
.program-accordion .program-toggle{
  list-style:none;display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:26px 0;width:100%;cursor:pointer;color:var(--ink);font-size:clamp(19px,2vw,25px);font-weight:600;letter-spacing:-.03em;
  background:none;border:0;font-family:var(--sans);text-align:left}
.program-accordion .program-toggle::after{content:'+';font-size:30px;font-weight:400;line-height:1;color:var(--ink-soft)}
.program-accordion .program-item.open .program-toggle::after{content:'−'}
.program-accordion .program-detail{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease;color:var(--ink-soft);font-size:15px;line-height:1.85}
.program-accordion .program-detail-inner{overflow:hidden;padding-right:54px}
.program-accordion .program-item.open .program-detail{grid-template-rows:1fr}
.program-accordion .program-item.open .program-detail-inner{padding-bottom:28px}
.program-accordion .program-detail p{max-width:48ch;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
@media(max-width:820px){
  .program-layout{grid-template-columns:1fr;gap:36px}
}

/* ============ 기수별 활동 ============ */
.class-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.class-card{background:var(--white)}
.class-cover{
  aspect-ratio:16/10;background:linear-gradient(135deg,var(--paper-2),var(--white));display:flex;align-items:center;justify-content:center;
  position:relative;overflow:hidden}
.class-cover::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 75% 15%, rgba(163,58,75,.10), transparent 60%)}
.class-gi-mark{font-size:26px;font-weight:600;letter-spacing:-.03em;color:var(--ink-soft)}
.class-body{padding:20px}
.class-body .gi{font-size:11.5px;color:var(--ink-soft);letter-spacing:.05em}
.class-body h4{font-family:var(--serif);font-size:18px;margin:6px 0 10px}
.class-body p{font-size:13px;color:var(--ink-soft);line-height:1.6}

/* ============ 위원회 ============ */
.comm-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
/* 잠금 티저는 카드가 3장이라 5열 그리드를 쓰면 오른쪽 두 칸이 빈다 */
.comm-card{
  aspect-ratio:3/4;position:relative;overflow:hidden;
  background:linear-gradient(165deg,var(--crimson-deep),var(--crimson));
  color:var(--white);padding:20px;display:flex;flex-direction:column;justify-content:flex-end;
  transition:transform .4s ease}
.comm-card::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(circle at 30% 20%, rgba(255,253,249,.14), transparent 55%)}
.comm-card::after{
  content:'';position:absolute;left:20px;right:20px;bottom:0;height:2px;
  background:var(--crimson-soft);transform:scaleX(0);transform-origin:left;transition:transform .4s ease}
.comm-card:hover::after{transform:scaleX(1)}
.comm-card h4{font-size:14.5px;font-weight:600;position:relative;z-index:2;line-height:1.4}
.comm-card span{font-size:11px;color:rgba(255,253,249,.65);position:relative;z-index:2;margin-top:6px;display:block}

/* 홈 교우 마당 — 큰 활동 카드 */
#page-lounge .class-card{border:0}
#page-lounge .class-cover{border:0;background-size:cover;background-position:center}
#page-lounge .class-card:nth-child(1) .class-cover{background-image:linear-gradient(rgba(20,18,18,.14),rgba(20,18,18,.34)),url('images/hero-1.jpg')}
#page-lounge .class-card:nth-child(2) .class-cover{background-image:linear-gradient(rgba(20,18,18,.14),rgba(20,18,18,.34)),url('images/hero-21class.jpg')}
#page-lounge .class-card:nth-child(3) .class-cover{background-image:linear-gradient(rgba(20,18,18,.14),rgba(20,18,18,.34)),url('images/hero-2.jpg')}
#page-lounge .class-card:nth-child(4) .class-cover{background-image:linear-gradient(rgba(20,18,18,.14),rgba(20,18,18,.34)),url('images/hero-3.jpg')}
#page-lounge .comm-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
#page-lounge .comm-card{aspect-ratio:16/9;background-size:cover;background-position:center;padding:28px}
#page-lounge .comm-card:nth-child(1){background-image:linear-gradient(180deg,transparent,rgba(35,14,18,.82)),url('images/hero-3.jpg')}
#page-lounge .comm-card:nth-child(2){background-image:linear-gradient(180deg,transparent,rgba(35,14,18,.82)),url('images/hero-1.jpg')}
#page-lounge .comm-card:nth-child(3){background-image:linear-gradient(180deg,transparent,rgba(35,14,18,.82)),url('images/hero-2.jpg')}
#page-lounge .comm-card:nth-child(4){background-image:linear-gradient(180deg,transparent,rgba(35,14,18,.82)),url('images/hero-21class.jpg')}
#page-lounge .comm-card:nth-child(5){grid-column:1/-1;aspect-ratio:3/1;background-image:linear-gradient(180deg,transparent,rgba(35,14,18,.86)),url('images/hero-21class.jpg')}
#page-lounge .comm-card h4{font-size:clamp(20px,2.2vw,28px)}
#page-lounge .comm-card span{font-size:13px}
#page-lounge .network-inner h2{font-family:var(--sans);font-size:clamp(34px,4.2vw,52px);font-weight:600;letter-spacing:-.045em;line-height:1.16}

/* ============ 네트워크 검색 ============ */
.network-band{
  background:var(--paper-2)}
.network-inner{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}
.network-form{background:var(--white);padding:30px}
.network-form .row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.network-form select,.network-form input{
  width:100%;padding:12px 14px;border:0;background:var(--paper-2);
  font-family:var(--sans);font-size:13.5px;color:var(--ink)}
.network-form .btn{width:100%;justify-content:center;margin-top:6px}
.network-results{margin-top:18px;max-height:340px;overflow-y:auto}
.network-results .nr-empty{font-size:13px;color:var(--ink-soft);padding:14px 2px}
.network-results .nr-row{
  display:flex;align-items:center;gap:10px;padding:9px 4px;font-size:13px;
  flex-wrap:wrap;   /* 상세정보 줄이 다음 줄로 내려가도록 */
}
/* 기업 상세정보 — 한 줄을 통째로 차지한다 */
.network-results .nr-row .nr-detail{
  flex-basis:100%;font-size:12.5px;color:var(--ink-soft);line-height:1.7;
  padding-left:74px;margin-top:-2px}
.network-results .nr-row .nr-detail b{color:var(--ink);font-weight:600}
.network-results .nr-row .nr-desc{display:block;margin-top:3px}
@media(max-width:640px){ .network-results .nr-row .nr-detail{padding-left:0} }
.network-results .nr-row .nr-name{font-weight:600;color:var(--ink);min-width:64px}
.network-results .nr-row .nr-meta{color:var(--ink-soft);flex:1}
.network-results .nr-row .nr-tag{font-size:11px;color:var(--crimson);border:1px solid var(--crimson-soft);padding:2px 7px}
.network-results .nr-count{font-size:12px;color:var(--ink-soft);padding:4px 2px 8px}
/* 행사 일정 칩 */
.event-chip{
  display:inline-block;margin-left:8px;font-size:11.5px;font-weight:600;
  color:var(--crimson);background:var(--paper-2);
  padding:2px 8px;white-space:nowrap}

/* ============ Footer ============ */
footer{background:var(--ink);color:rgba(255,253,249,.7);padding:64px 0 28px}
.footer-top{display:grid;grid-template-columns:1.35fr .7fr 1.15fr;gap:clamp(40px,6vw,88px);padding-bottom:44px;border-bottom:1px solid rgba(255,253,249,.14)}
.footer-brand{display:flex;gap:14px}
.footer-brand b{font-family:var(--serif);font-size:17px;color:var(--white);display:block}
.footer-brand p{font-size:12.5px;margin-top:10px;line-height:1.8;max-width:280px;color:rgba(255,253,249,.55)}
/* 운영 주체 한 줄 — 브랜드 설명보다 한 단계 내려 읽히게 둔다 */
.footer-brand .footer-operator{font-size:11.5px;margin-top:12px;color:rgba(255,253,249,.42)}
.footer-brand .footer-operator a{color:rgba(255,253,249,.6)}
.footer-col h5{font-size:12.5px;color:rgba(255,253,249,.62);letter-spacing:.06em;margin-bottom:16px}
.footer-col a{display:block;font-size:13px;padding:6px 0;color:rgba(255,253,249,.68)}
.footer-col a:hover{color:var(--white)}
.footer-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;padding-top:26px;font-size:12px;color:rgba(255,253,249,.45)}
.footer-bottom a{color:rgba(255,253,249,.55)}

/* ============ Utility / reveal ============ */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ============ Responsive ============ */
@media(max-width:980px){
  .msg-grid,.values{grid-template-columns:1fr 1fr}
  .news-editorial{grid-template-columns:1fr}
  .news-editorial.filtered .news-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .class-grid{grid-template-columns:1fr 1fr}
  .comm-grid{grid-template-columns:repeat(3,1fr)}
  .network-inner{grid-template-columns:1fr;gap:30px}
  .footer-top{grid-template-columns:1fr 1fr}
}
/* 버거 메뉴 안에만 존재하는 언어·관련기관 묶음 */
.mobile-only-extra{display:none}
.mobile-only-extra a{padding:9px 12px;font-size:13.5px;font-weight:500;color:var(--ink);display:block}
.mobile-only-extra a:hover{color:var(--crimson)}
.mobile-only-extra .m-lang{
  font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink);
  background:var(--white);padding:7px 12px;cursor:pointer}
.mobile-only-extra .m-lang:hover{color:var(--crimson)}

@media(max-width:720px){
  .mobile-only-extra{display:block}
  nav.primary{display:none}
  .burger{display:block}
  #langDd,#relatedDd{display:none}
  .login-menu{white-space:nowrap;flex-shrink:0}
  .nav-dd .nav-dd-menu{position:static;transform:none;box-shadow:none;border:none;min-width:0;margin:0 0 4px 14px;display:none}
  .nav-dd.open .nav-dd-menu{display:block}
  .msg-grid,.values,.comm-grid,.class-grid{grid-template-columns:1fr 1fr}
  .related-logo{min-height:130px}
  .footer-top{grid-template-columns:1fr}
  .section{padding:84px 0}
  .editorial-head{align-items:flex-start;flex-direction:column;margin-bottom:30px}
  .news-list{grid-template-columns:1fr 1fr}
  #page-lounge .comm-grid{grid-template-columns:1fr}
  #page-lounge .comm-card:nth-child(5){grid-column:auto;aspect-ratio:16/9}
}
@media(max-width:480px){
  .msg-grid,.values,.comm-grid,.class-grid{grid-template-columns:1fr}
  .hero-body{padding:36px 20px 28px}
  .hero-actions .btn{width:100%;justify-content:center}
  .news-list{grid-template-columns:1fr}
  .news-card{grid-template-columns:112px 1fr;column-gap:14px}
  .news-editorial.filtered .news-list{grid-template-columns:1fr}
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
}
/* ============ 24기 모집공고 팝업 ============ */
.popup-backdrop{
  position:fixed;inset:0;background:rgba(28,21,18,.6);z-index:300;
  display:flex;align-items:center;justify-content:center;padding:20px;
  opacity:0;visibility:hidden;transition:opacity .25s ease}
.popup-backdrop.show{opacity:1;visibility:visible}
.popup-card{
  background:var(--white);max-width:460px;width:100%;padding:36px 34px 30px;
  position:relative;box-shadow:0 40px 80px -20px rgba(0,0,0,.5);
  border-top:4px solid var(--crimson);
  transform:translateY(10px);transition:transform .25s ease}
.popup-backdrop.show .popup-card{transform:translateY(0)}
.popup-close{
  position:absolute;top:14px;right:16px;background:none;border:none;font-size:18px;
  color:var(--ink-soft);cursor:pointer}
.popup-close:hover{color:var(--crimson)}
.popup-badge{
  display:inline-block;font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--white);
  background:var(--crimson);padding:5px 12px;margin-bottom:16px}
.popup-title{font-family:var(--serif);font-size:19px;line-height:1.5;margin-bottom:22px;color:var(--ink)}
.popup-body{padding-top:18px}
.popup-row{display:flex;gap:14px;padding:8px 0;font-size:13px;line-height:1.6}
.popup-row .k{flex:0 0 64px;font-weight:600;color:var(--crimson-deep)}
.popup-row .v{color:var(--ink-soft)}
.popup-actions{margin-top:24px;display:flex;flex-direction:column;gap:10px}
.popup-actions .btn{justify-content:center;width:100%}
.popup-hide-today{
  background:none;border:none;font-size:12.5px;color:var(--ink-soft);cursor:pointer;
  text-decoration:underline;padding:4px}
.popup-hide-today:hover{color:var(--crimson)}
@media(max-width:520px){
  .popup-card{padding:28px 22px 24px}
}


/* ============ 페이지 전환 ============ */
.page{display:none}
.page.active{display:block}
#page-admin{background:var(--ink);min-height:100vh;align-items:center;justify-content:center;padding:calc(60px + var(--header-h)) 24px 60px}
#page-admin.active{display:flex}

/* ===== 인사말 페이지 ===== */
#page-greetings .page-hero .eyebrow{color:var(--crimson)!important}
#page-greetings .page-hero h1{color:var(--ink);font-size:clamp(46px,7vw,82px);letter-spacing:-.06em;margin-top:0}
#page-greetings .jump{background:var(--white);position:sticky;top:var(--header-h);z-index:90}
#page-greetings .jump .wrap{display:flex;justify-content:center;gap:0}
#page-greetings .jump button{min-width:190px;padding:19px 24px;font:600 14px var(--sans);color:var(--ink-soft);border:0;border-bottom:3px solid transparent;background:transparent;cursor:pointer}
#page-greetings .jump button:hover{color:var(--crimson)}
#page-greetings .jump button.active{color:var(--crimson);border-bottom-color:var(--crimson)}
#page-greetings .status{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.04em;
  padding:5px 12px;border:1px solid var(--crimson);color:var(--crimson);text-transform:uppercase}
#page-greetings .status::before{content:'';width:6px;height:6px;border-radius:var(--r-round);background:var(--crimson)}
#page-greetings .greet{display:none;padding:120px 0;border-bottom:0;background:var(--white)}
#page-greetings .greet.active{display:block}
#page-greetings .greet.alt{background:var(--white)}
#page-greetings .greet-inner,#page-greetings .greet.reverse .greet-inner{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:clamp(56px,8vw,110px);align-items:start}
#page-greetings .greet.reverse .photo-col{order:0}
#page-greetings .greet.reverse .body-col{order:2}
#page-greetings .photo-col{position:sticky;top:calc(var(--header-h) + 94px)}
#page-greetings .photo{
  aspect-ratio:4/5;overflow:hidden;background:linear-gradient(150deg,var(--paper-2),var(--paper));
  display:flex;align-items:center;justify-content:center;margin-bottom:18px}
#page-greetings .photo img{width:100%;height:100%;object-fit:cover;object-position:center 22%}
#page-greetings .photo .placeholder{color:var(--crimson-soft);font-family:var(--serif);font-size:15px;text-align:center;padding:20px;line-height:1.7}
#page-greetings .photo .placeholder small{display:block;font-family:var(--sans);font-size:11.5px;color:var(--ink-soft);margin-top:10px}
#page-greetings .pc-role{font-size:12px;color:var(--crimson);font-weight:600;letter-spacing:.03em;margin-top:14px}
#page-greetings .body-col .status{margin-bottom:22px}
#page-greetings .greet-title{font-size:clamp(30px,3.6vw,46px);margin-bottom:38px;line-height:1.3;letter-spacing:-.045em}
#page-greetings .greet-text p{font-size:16px;color:var(--ink-soft);margin-bottom:24px;line-height:2}
#page-greetings .greet-text .sign{margin-top:34px;padding-top:4px;font-size:14.5px;color:var(--ink-soft)}
#page-greetings .greet-text .sign b{display:block;font-family:var(--serif);font-size:17px;color:var(--ink);margin-bottom:4px}
#page-greetings .confirm-note{
  margin-top:30px;background:var(--paper-2);border-left:3px solid var(--crimson);padding:14px 18px;font-size:12.5px;color:var(--ink-soft);line-height:1.8}
#page-greetings .confirm-note b{color:var(--crimson)}
#page-greetings footer{background:var(--ink);color:rgba(255,253,249,.6);padding:36px 0;text-align:center;font-size:12.5px}
#page-greetings footer a{color:rgba(255,253,249,.8)}
@media(max-width:900px){#page-greetings .greet-inner, #page-greetings .greet.reverse .greet-inner{grid-template-columns:1fr}
#page-greetings .greet.reverse .photo-col{order:0}
#page-greetings .photo-col{position:static;max-width:280px}
#page-greetings .jump{overflow-x:auto}
#page-greetings .jump .wrap{justify-content:flex-start;width:max-content;min-width:100%}
#page-greetings .jump button{padding:15px 18px;min-width:150px;white-space:nowrap}}
/* ===== 조직도 페이지 ===== */
/* 4개 페이지 공용 배너 (조직도 전용이었던 것을 전역화) */
/* 하위 페이지는 배너 없이 제목 텍스트만 둔다. 크림슨 배경 블록은 홈 히어로 전용이다. */
.page-hero{background:var(--white);color:var(--ink);padding:calc(64px + var(--header-h)) 0 20px}
.page-hero h1{color:var(--ink);font-size:clamp(30px,4vw,46px);letter-spacing:-.045em;line-height:1.15}
.page-hero .updated{margin-top:16px;font-size:12.5px;color:var(--ink-soft)}
#page-orgchart .section{padding:60px 0}
#page-orgchart .page-hero .eyebrow{color:var(--crimson)!important}
#page-orgchart .section-head{margin-bottom:32px}
#page-orgchart .section-head h2{font-size:22px;margin-top:8px}
#page-orgchart .section-head p{color:var(--ink-soft);margin-top:10px;font-size:14.5px}
#page-orgchart .notice{
  background:var(--white);border-left:3px solid var(--crimson);
  padding:16px 20px;font-size:13px;color:var(--ink-soft);line-height:1.8;margin-bottom:40px}
#page-orgchart .notice b{color:var(--crimson)}
#page-orgchart .section:first-of-type{background:#f5f5f9;padding:72px 0}
#page-orgchart .section:first-of-type>.wrap{max-width:var(--maxw)}
#page-orgchart .chart{display:flex;flex-direction:column;align-items:center;gap:0;background:var(--white);padding:64px 52px;min-height:640px;overflow:hidden}
#page-orgchart .tier{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;position:relative;padding:22px 0}
#page-orgchart .connector{width:1px;height:26px;margin:0 auto;background:linear-gradient(var(--crimson-soft),transparent)}
/* ── 조직도 상자 ─────────────────────────────────────────
   예전에는 노드마다 「KNA」 원형 배지가 붙어 열한 번 반복됐고, 상자 없이 글자만 있어서
   도표가 아니라 목록으로 읽혔다. 조직도는 **칸과 선**으로 읽는 그림이다 —
   배지를 걷고 상자를 준다. 직위는 위, 이름은 아래. 가운데 정렬이라 선과 축이 맞는다. */
#page-orgchart .node{
  background:var(--white);border:1px solid var(--line-soft,#e5e0dc);border-top:3px solid var(--crimson-soft,#e8c9cf);
  padding:14px 14px 15px;min-height:0;text-align:center;border-radius:var(--r-pill);
  cursor:default;transition:border-color .2s ease,box-shadow .2s ease;position:relative;
  box-shadow:0 1px 2px rgba(28,21,18,.04)}
#page-orgchart .node::before{content:none}          /* 「KNA」 배지 제거 */
#page-orgchart .node[data-clickable="1"]{cursor:pointer}
#page-orgchart .node[data-clickable="1"]:hover{border-color:var(--crimson);box-shadow:0 6px 16px -10px rgba(28,21,18,.4)}

/* 최상위 — 교우회장 */
#page-orgchart .node.hub{
  background:var(--crimson);border-color:var(--crimson);border-top-color:var(--crimson-deep,#7d0f1e);
  padding:18px 16px 19px;box-shadow:0 10px 24px -14px rgba(154,17,34,.6)}
#page-orgchart .node.hub .role{color:rgba(255,255,255,.82)}
#page-orgchart .node.hub .names{color:#fff;font-size:21px}

/* 줄기(수석부회장·사무총장) — 곁가지와 구분되게 테두리를 진하게 */
#page-orgchart .node.spine{border-top-color:var(--crimson)}

#page-orgchart .node .role{
  display:block;font-size:11px;color:var(--crimson);font-weight:700;letter-spacing:.06em}
#page-orgchart .node.chair .role{color:var(--crimson-deep)}
#page-orgchart .node .names{
  font-family:var(--serif);font-size:15.5px;margin-top:7px;line-height:1.55;color:var(--ink);word-break:keep-all}
#page-orgchart .node.compact .names{font-size:14px}
#page-orgchart .node .cnt{font-size:10.5px;color:var(--ink-soft);margin-top:4px}
#page-orgchart .branch-row{display:flex;justify-content:center;align-items:center;gap:22px;flex-wrap:wrap;width:100%}
#page-orgchart .branch{display:flex;flex-direction:column;align-items:center}
#page-orgchart .chart-grid{
  display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));
  column-gap:70px;row-gap:70px;align-items:center;justify-items:stretch;
  width:100%;max-width:980px;margin:0 auto;position:relative}
/* 칸을 꽉 채운다. `justify-items:start` 이면 노드 폭이 내용에 따라 제각각이라
   가지선이 어디서 끊길지 계산할 수 없었다 — 채우면 칸 사이 간격이 곧 70px 이고
   선 길이도 정확히 70px 로 맞는다. 보기에도 줄이 가지런해진다. */
#page-orgchart .chart-grid > .node,
#page-orgchart .chart-grid > .node-stack{width:100%;min-width:0}
#page-orgchart .chart-grid > .node-stack > .node{width:100%}

/* ── 위계선 ─────────────────────────────────────────────
   설계상 가운데 열이 줄기다 — 교우회장 → 수석부회장 → 사무총장(.spine).
   그런데 선이 하나도 안 그려져 있어서, 화면에는 **3열 목록**으로만 보였다.
   "조직도가 이상하다"의 실체가 이것이다.

   줄 높이가 내용에 따라 달라지므로 **격자에 절대좌표를 주지 않는다.**
   각 노드가 자기 기준으로 위쪽 한 칸(row-gap = 70px)만큼 선을 올린다 —
   줄이 늘어나도 선이 어긋나지 않는다. */
#page-orgchart .chart-grid > .node,
#page-orgchart .chart-grid > .node-stack{position:relative}

/* 줄기: 아래 두 칸이 위로 선을 올린다 (수석부회장·사무총장) */
#page-orgchart .node.spine::after{
  content:'';position:absolute;left:50%;bottom:100%;width:1px;height:70px;
  background:linear-gradient(var(--crimson-soft,#e8c9cf),var(--crimson-soft,#e8c9cf));
  opacity:.85;pointer-events:none}

/* 가지: 좌우 열이 가운데 줄기 쪽으로 가로선을 뻗는다 */
#page-orgchart .chart-grid > .node[data-col="1"]::after,
#page-orgchart .chart-grid > .node[data-col="3"]::after{
  content:'';position:absolute;top:50%;width:70px;height:1px;
  background:var(--crimson-soft,#e8c9cf);opacity:.7;pointer-events:none}
#page-orgchart .chart-grid > .node[data-col="1"]::after{left:100%}
#page-orgchart .chart-grid > .node[data-col="3"]::after{right:100%}

/* 회장 아래로 좌우가 갈라지는 자리 — 가로 연결자 */
#page-orgchart .chart-grid > .node-stack[data-col="1"]::after,
#page-orgchart .chart-grid > .node-stack[data-col="3"]::after{
  content:'';position:absolute;top:50%;width:70px;height:1px;
  background:var(--crimson-soft,#e8c9cf);opacity:.55;pointer-events:none}
#page-orgchart .chart-grid > .node-stack[data-col="1"]::after{left:100%}
#page-orgchart .chart-grid > .node-stack[data-col="3"]::after{right:100%}

/* 좁은 화면에서는 세로 한 줄로 쌓이므로 가로선을 걷는다 — 허공을 가리킨다 */
@media(max-width:700px){
  #page-orgchart .chart-grid > .node[data-col]::after,
  #page-orgchart .chart-grid > .node-stack[data-col]::after{display:none}
  #page-orgchart .node.spine::after{height:26px}
}
#page-orgchart .vp-tier{
  grid-column:1/-1;display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:6px}
#page-orgchart .node-stack{display:flex;flex-direction:column;gap:12px;align-items:center}
#page-orgchart .node.compact{padding:12px 12px 13px}
#page-orgchart .node.compact .role{font-size:10.5px}
#page-orgchart .node.compact .names{font-size:13.5px;margin-top:4px}
#page-orgchart .node.spine{padding:15px 14px 16px}
#page-orgchart .node.spine .names{font-size:17.5px}
#page-orgchart .node.spine .role{font-size:11.5px}
@media(max-width:700px){
  #page-orgchart .chart{padding:38px 20px}
  #page-orgchart .chart-grid{display:flex;flex-direction:column;align-items:center;grid-template-columns:none}
  #page-orgchart .chart-grid > .node{margin-top:0 !important}
}
/* 위원회·동호회 — 조직도에 매달린 하위 조직이 아니다. 잇는 선도 구분선도 두지 않고
   여백으로만 갈라 조직도 바로 아래에 늘어놓는다(사무국 검토 2026-08). */
#page-orgchart .org-sub{margin-top:52px}
/* 위원회 칸도 잠금 안내도 같은 면(#f2f2f2)이라 붙여 두면 한 덩어리로 읽힌다. 사이를 벌린다. */
#page-orgchart .gate-notice.show{margin-top:40px}
#page-orgchart .org-sub h3{font-size:19px;font-family:var(--serif);color:var(--ink)}
#page-orgchart .org-sub > p{font-size:13px;color:var(--ink-soft);margin-top:8px;line-height:1.8;max-width:720px}
#page-orgchart .comm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}
/* 흰 바탕 위의 흰 칸은 칸이 아니다. 임원 성명이 가려지면 이 칸에는 이름만 남으므로
   면(--paper-2)으로 세워야 네 칸이 네 칸으로 보인다. 테두리는 긋지 않는다. */
#page-orgchart .comm-node{background:var(--paper-2);padding:20px 18px;text-align:center;transition:.2s}
#page-orgchart .comm-node[data-clickable]{cursor:pointer}
#page-orgchart .comm-node[data-clickable]:hover{background:var(--white)}
#page-orgchart .comm-node h4{font-size:14.5px;font-family:var(--serif)}
#page-orgchart .comm-node p{font-size:12px;color:var(--ink-soft);margin-top:8px;line-height:1.7}
#page-orgchart .advisors{background:var(--white);padding:20px 24px;margin-top:26px}
#page-orgchart .advisors .role{font-size:11px;color:var(--crimson);font-weight:600}
#page-orgchart .advisors .list{font-size:13.5px;color:var(--ink-soft);margin-top:10px;line-height:2}
#page-orgchart .class-table-wrap{overflow-x:auto;background:var(--white)}
#page-orgchart table.class-table{border-collapse:collapse;width:100%;min-width:900px;font-size:12.5px}
#page-orgchart table.class-table tbody tr:nth-child(even){background:var(--paper-2)}
#page-orgchart table.class-table th, #page-orgchart table.class-table td{padding:9px 8px;text-align:center}
#page-orgchart table.class-table th{background:var(--crimson);color:var(--white);font-weight:600;font-size:12px}
#page-orgchart table.class-table td{color:var(--ink-soft)}
#page-orgchart .table-label{font-size:12.5px;font-weight:600;color:var(--crimson);padding:14px 0 6px}
/* 이 모달은 마크업이 #page-orgchart **밖으로** 옮겨졌는데 선택자는 안에 있는 채로 남아
   규칙이 하나도 안 걸렸다 — display:none 이 안 먹어 닫기 ✕ 가 문서 맨 아래에 찍혔다. */
.modal-backdrop{
  position:fixed;inset:0;background:rgba(28,21,18,.55);display:none;align-items:center;justify-content:center;
  z-index:200;padding:20px}
.modal-backdrop.open{display:flex}
.modal{background:var(--white);max-width:420px;width:100%;padding:30px;position:relative}
.modal .close{position:absolute;top:14px;right:16px;cursor:pointer;font-size:18px;color:var(--ink-soft);background:none;border:none}
.modal .role{font-size:12px;color:var(--crimson);font-weight:600;letter-spacing:.04em}
.modal .name{font-family:var(--serif);font-size:22px;margin:8px 0 12px}
.modal .desc{font-size:13.5px;color:var(--ink-soft);line-height:1.8;margin-top:14px}
#page-orgchart footer{background:var(--ink);color:rgba(255,253,249,.6);padding:36px 0;text-align:center;font-size:12.5px;margin-top:40px}
#page-orgchart footer a{color:rgba(255,253,249,.8)}
@media(max-width:900px){#page-orgchart .branch-row{gap:14px}
#page-orgchart .comm-grid{grid-template-columns:1fr 1fr}
#page-orgchart nav.primary{display:none}}
@media(max-width:520px){#page-orgchart .comm-grid{grid-template-columns:1fr}
  /* 배지를 걷어냈으므로 좁은 화면에서도 여백만 줄이면 된다. */
  #page-orgchart .node{min-width:0;padding:12px 12px 13px}
  #page-orgchart .node.hub{padding:15px 14px 16px}
  #page-orgchart .node .names{font-size:14.5px}}
/* ===== 회칙 페이지 ===== */
#page-bylaws .layout{max-width:var(--maxw);margin:0 auto;padding:0 28px 90px;display:grid;grid-template-columns:240px 1fr;gap:56px;align-items:start}
#page-bylaws .toc{position:sticky;top:calc(var(--header-h) + 20px);padding-left:20px}
#page-bylaws .toc .t{font-size:12px;font-weight:600;color:var(--crimson);letter-spacing:.06em;margin-bottom:14px}
#page-bylaws .toc a{display:block;font-size:13.5px;color:var(--ink-soft);padding:7px 0;border-left:2px solid transparent;margin-left:-22px;padding-left:20px}
#page-bylaws .toc a:hover, #page-bylaws .toc a.active{color:var(--crimson);border-left-color:var(--crimson)}
#page-bylaws .doc{background:var(--white)}
#page-bylaws .doc-cover{padding:40px 44px;display:flex;align-items:center;gap:20px}
#page-bylaws .doc-cover img{width:72px;height:72px}
#page-bylaws .doc-cover .t1{font-size:13px;color:var(--ink-soft)}
#page-bylaws .doc-cover .t2{font-family:var(--serif);font-size:22px;margin-top:4px}
#page-bylaws .doc-cover .t3{font-size:12.5px;color:var(--crimson);margin-top:6px;font-weight:600}
#page-bylaws .chapter{padding:40px 44px}
#page-bylaws .chapter h2{font-size:20px;display:flex;align-items:center;gap:12px;margin-bottom:22px}
#page-bylaws .chapter h2 .num{
  width:34px;height:34px;border:1px solid var(--crimson);border-radius:var(--r-round);
  display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--crimson);flex-shrink:0;font-family:var(--sans);font-weight:600}
#page-bylaws .article{margin-bottom:22px}
#page-bylaws .article h3{font-size:15.5px;font-weight:600;color:var(--crimson-deep);margin-bottom:8px}
#page-bylaws .article ol, #page-bylaws .article ul{margin-left:20px;color:var(--ink);font-size:14.5px}
#page-bylaws .article ol > li{margin-bottom:6px}
#page-bylaws .article ol ol{margin-top:6px;margin-bottom:6px}
#page-bylaws .article p{font-size:14.5px;color:var(--ink)}
#page-bylaws .article .sub{margin-left:18px;color:var(--ink-soft);font-size:14px;margin-top:4px}
#page-bylaws .appendix{background:var(--paper-2);padding:24px 44px;font-size:13.5px;color:var(--ink-soft);line-height:1.9}
#page-bylaws .appendix b{color:var(--crimson)}
#page-bylaws footer{background:var(--ink);color:rgba(255,253,249,.6);padding:36px 0;text-align:center;font-size:12.5px;margin-top:0}
#page-bylaws footer a{color:rgba(255,253,249,.8)}
@media(max-width:900px){#page-bylaws .layout{grid-template-columns:1fr;gap:24px}
#page-bylaws .toc{position:relative;top:0;border-left:none;padding-left:0;padding-top:16px}
#page-bylaws .toc a{margin-left:0}
#page-bylaws nav.primary{display:none}
#page-bylaws .chapter, #page-bylaws .doc-cover, #page-bylaws .appendix{padding:28px 22px}}
/* ===== 장학회 페이지 ===== */
#page-scholarship .section{padding:64px 0}
#page-scholarship .section.alt{background:var(--paper-2)}
#page-scholarship .section:last-of-type{border-bottom:none}
#page-scholarship .section-head{margin-bottom:36px}
#page-scholarship .section-head h2{font-size:24px;margin-top:8px;line-height:1.4}
#page-scholarship .section-head p{color:var(--ink-soft);margin-top:12px;font-size:14.5px;line-height:1.8}
#page-scholarship .notice{
  background:var(--paper-2);border-left:3px solid var(--crimson);padding:16px 20px;
  font-size:13px;color:var(--ink-soft);line-height:1.85;margin-bottom:40px}
#page-scholarship .notice b{color:var(--crimson)}

/* ===== KNA 교과과정 페이지 ===== */
#page-kna-program{background:var(--white)}
#page-kna-program .prog-status{display:inline-flex;margin-top:18px;padding:9px 14px;background:var(--crimson);color:var(--white);font-size:12px;font-weight:700;letter-spacing:.04em}
#page-kna-program .prog-facts{max-width:var(--maxw);margin:0 auto 120px;padding:0 var(--gutter);display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,40px)}
#page-kna-program .prog-fact{padding:30px 0}
#page-kna-program .prog-fact:last-child{border-right:0}
#page-kna-program .prog-fact b{display:block;font-size:clamp(25px,3vw,38px);letter-spacing:-.04em;color:var(--ink)}
#page-kna-program .prog-fact span{display:block;margin-top:9px;color:var(--ink-soft);font-size:13px;line-height:1.55}
#page-kna-program .prog-story{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter) 120px}
#page-kna-program .prog-benefits{display:grid;grid-template-columns:repeat(2,1fr);column-gap:clamp(28px,4vw,64px);row-gap:8px}
#page-kna-program .prog-benefit{display:grid;grid-template-columns:54px 1fr;gap:20px;padding:34px 28px 38px 0}
#page-kna-program .prog-benefit:nth-child(odd){padding-right:36px}
#page-kna-program .prog-benefit:nth-child(even){padding-left:36px}
#page-kna-program .prog-benefit .num{font-size:13px;color:var(--crimson);font-weight:700}
#page-kna-program .prog-benefit h3{font-size:22px;letter-spacing:-.035em;margin-bottom:10px}
#page-kna-program .prog-benefit p{font-size:14px;line-height:1.8;color:var(--ink-soft)}
#page-kna-program .prog-journey{background:var(--ink);color:var(--white);padding:120px var(--gutter)}
#page-kna-program .prog-journey-inner{max-width:var(--maxw);margin:0 auto}
#page-kna-program .prog-journey h2{font-size:clamp(34px,4.2vw,52px);font-weight:600;letter-spacing:-.045em;margin-bottom:58px}
#page-kna-program .journey-list{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid rgba(255,255,255,.25)}
#page-kna-program .journey-step{padding:26px 20px 8px 0;border-right:1px solid rgba(255,255,255,.16);min-height:150px}
#page-kna-program .journey-step:last-child{border-right:0}
#page-kna-program .journey-step span{font-size:12px;color:var(--crimson-soft)}
#page-kna-program .journey-step h3{font-size:18px;line-height:1.45;margin-top:36px;color:var(--white)}
#page-kna-program .curriculum-section{background:var(--paper-2);padding:120px 0;margin-bottom:120px}
#page-kna-program .curriculum-intro{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter) 42px}
#page-kna-program .curriculum-intro h2{font-size:clamp(34px,4.2vw,52px);font-weight:600;letter-spacing:-.045em}
#page-kna-program .curriculum-intro p{margin-top:14px;color:var(--ink-soft);font-size:15px;line-height:1.8}
#page-kna-program .prog-final-cta{max-width:var(--maxw);margin:30px auto 120px;padding:64px;display:flex;align-items:flex-end;justify-content:space-between;gap:36px;background:var(--crimson);color:var(--white)}
#page-kna-program .prog-final-cta span{font-size:13px;color:rgba(255,255,255,.72)}
#page-kna-program .prog-final-cta h2{font-size:clamp(32px,4.4vw,54px);line-height:1.12;letter-spacing:-.05em;margin-top:16px;color:var(--white)}
#page-kna-program .prog-final-cta .btn{flex-shrink:0;background:var(--white);border-color:var(--white);color:var(--crimson)}
#page-kna-program .curriculum-browser{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);display:block}
#page-kna-program .prog-tabbar{position:static;background:transparent;margin-bottom:46px}
#page-kna-program .prog-tabs{display:flex;flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap}
#page-kna-program .prog-tab{
  padding:9px 15px;border-radius:var(--r-flat);font-weight:600;font-size:13.5px;color:var(--ink-soft);cursor:pointer;background:var(--paper-2);white-space:nowrap}
#page-kna-program .prog-tab.active{color:var(--white);background:var(--crimson)}
#page-kna-program .prog-tab:hover{color:var(--crimson)}
#page-kna-program .prog-tab.active:hover{color:var(--white)}
#page-kna-program .prog-panel{display:none;min-width:0;padding:0}
#page-kna-program .prog-panel.active{display:block}
#page-kna-program .phase-block{margin:0}
#page-kna-program .phase-title{
  position:relative;font-family:var(--sans);font-size:clamp(19px,2.2vw,25px);color:var(--ink);font-weight:600;
  padding:27px 54px 27px 0;cursor:pointer;letter-spacing:-.035em;line-height:1.4}
#page-kna-program .phase-title::after{content:'+';position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:30px;font-weight:400;color:var(--ink-soft)}
#page-kna-program .phase-block.open .phase-title::after{content:'−'}
#page-kna-program .phase-title small{display:inline-block;font-family:var(--sans);font-size:12px;font-weight:500;color:var(--ink-soft);margin-left:12px;letter-spacing:0}
#page-kna-program .phase-block>.sched-table{margin-bottom:28px}
#page-kna-program .sched-table{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--white)}
#page-kna-program .sched-table tr:first-child{border-top:none}
/* 촘촘한 표는 행 구분이 있어야 읽힌다. 선 대신 옅은 면으로 나눈다. */
#page-kna-program .sched-table tr:nth-child(even){background:var(--paper-2)}
#page-kna-program .sched-table td{padding:14px 16px;vertical-align:top}
#page-kna-program .sched-table td.wk{width:135px;color:var(--crimson);font-weight:600;font-size:12px;letter-spacing:.02em}
#page-kna-program .sched-table td.wk span{display:block;color:var(--ink-soft);font-weight:500;margin-top:2px}
#page-kna-program .sched-table .lec{font-weight:600;color:var(--ink);line-height:1.6}
#page-kna-program .sched-table .lec .spk{font-weight:500;color:var(--ink-soft);font-size:12px;margin-left:2px}
#page-kna-program .sched-table .lec + .lec{margin-top:10px}
#page-kna-program .sched-table tr.removed td{opacity:.4;text-decoration:line-through}
#page-kna-program .sched-note{font-size:11.5px;color:var(--ink-soft);margin-top:10px;line-height:1.7}
#page-kna-program .scholar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
#page-kna-program .scholar-card{
  position:relative;background:linear-gradient(165deg,var(--white) 60%,var(--paper-2));padding:22px 20px 20px;overflow:hidden;
  display:flex;gap:14px;align-items:flex-start;
  transition:border-color .3s ease}
#page-kna-program .scholar-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--crimson-soft),var(--crimson) 50%,var(--crimson-soft));
  opacity:0;transition:opacity .3s ease}
#page-kna-program .scholar-card:hover{transform:none}
#page-kna-program .scholar-card:hover::before{opacity:1}
#page-kna-program .scholar-card .mono{
  flex-shrink:0;width:42px;height:42px;border-radius:var(--r-round);
  border:1.5px solid var(--crimson);
  background:var(--paper-2);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:600;font-size:15px;color:var(--crimson-deep)}
#page-kna-program .scholar-card .info{flex:1;min-width:0}
#page-kna-program .scholar-card .nm{font-family:var(--serif);font-size:16.5px;color:var(--ink);font-weight:600;letter-spacing:.01em}
#page-kna-program .scholar-card .ttl{font-size:11.5px;color:var(--ink-soft);margin-top:5px;line-height:1.65}
#page-kna-program .scholar-card .tag{
  display:inline-block;margin-top:9px;font-size:10px;font-weight:600;letter-spacing:.03em;
  color:var(--crimson-deep);background:linear-gradient(120deg,rgba(207,179,124,.22),rgba(207,179,124,.06));
  border:1px solid var(--crimson-soft);padding:3px 9px;border-radius:var(--r-pill)}
#page-kna-program .history-timeline{position:relative;padding-left:30px;border-left:2px solid var(--crimson-soft)}
#page-kna-program .hist-item{position:relative;margin-bottom:34px}
#page-kna-program .hist-item::before{content:'';position:absolute;left:-37px;top:5px;width:12px;height:12px;border-radius:var(--r-round);background:var(--crimson);border:2px solid var(--white);box-shadow:0 0 0 2px var(--crimson-soft)}
#page-kna-program .hist-item .yr{font-family:var(--serif);color:var(--crimson-deep);font-weight:600;font-size:15px}
#page-kna-program .hist-item h4{font-size:16.5px;margin:4px 0 8px;color:var(--ink)}
#page-kna-program .hist-item p{font-size:13.5px;color:var(--ink-soft);line-height:1.85}
@media(max-width:700px){
  #page-kna-program .curriculum-section{padding:84px 0;margin-bottom:84px}
  #page-kna-program .curriculum-browser{display:block}
  #page-kna-program .prog-tabbar{overflow-x:auto;margin-bottom:34px}
  #page-kna-program .prog-tabs{flex-direction:row;width:max-content}
  #page-kna-program .sched-table td.wk{width:90px;font-size:11px}
  #page-kna-program .prog-facts{grid-template-columns:1fr 1fr;margin-bottom:84px}
  #page-kna-program .prog-fact:nth-child(2){border-right:0}
  #page-kna-program .prog-fact:nth-child(-n+2){}
  #page-kna-program .prog-benefits{grid-template-columns:1fr}
  #page-kna-program .prog-benefit:nth-child(odd),#page-kna-program .prog-benefit:nth-child(even){border-right:0;padding-left:0;padding-right:0}
  #page-kna-program .prog-story{padding-bottom:84px}
  #page-kna-program .prog-journey{padding:84px 24px}
  #page-kna-program .journey-list{grid-template-columns:1fr}
  #page-kna-program .journey-step{border-right:0;border-bottom:1px solid rgba(255,255,255,.16);min-height:0;padding:22px 0;display:grid;grid-template-columns:48px 1fr;align-items:center}
  #page-kna-program .journey-step h3{margin-top:0}
  #page-kna-program .prog-final-cta{margin:20px 20px 84px;padding:42px 28px;align-items:flex-start;flex-direction:column}
}
#page-scholarship .fund-band{background:var(--ink);color:var(--white)}
#page-scholarship .fund-band h2{color:var(--white)}
#page-scholarship .fund-band .section-head p{color:rgba(255,253,249,.65)}
#page-scholarship .fund-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
#page-scholarship .fund-card{border:1px solid rgba(255,253,249,.18);padding:28px 24px}
#page-scholarship .fund-card .n{font-family:var(--serif);font-size:34px;color:var(--white)}
#page-scholarship .fund-card .l{font-size:13px;color:rgba(255,253,249,.7);margin-top:8px;line-height:1.7}
#page-scholarship .fund-note{margin-top:24px;font-size:12.5px;color:rgba(255,253,249,.5);border-top:1px solid rgba(255,253,249,.15);padding-top:16px;line-height:1.8}
#page-scholarship .lede{max-width:720px}
#page-scholarship .lede p{font-size:16px;line-height:1.9;color:var(--ink);margin-bottom:14px}
#page-scholarship .lede p:last-child{margin-bottom:0}
#page-scholarship .lede a{color:var(--crimson);text-decoration:underline;text-underline-offset:3px}
#page-scholarship .biz-row{
  display:grid;grid-template-columns:200px minmax(0,1fr) 96px;gap:22px;align-items:baseline;
  padding:22px 0}
#page-scholarship .biz-name{font-size:17px;font-weight:600;color:var(--ink)}
#page-scholarship .biz-desc{font-size:14.5px;line-height:1.8;color:var(--ink-soft)}
#page-scholarship .biz-state{font-size:12px;font-weight:600;color:var(--crimson);text-align:right}
@media(max-width:720px){
  #page-scholarship .biz-row{grid-template-columns:1fr;gap:6px}
  #page-scholarship .biz-state{text-align:left}
}
#page-scholarship .cta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
#page-scholarship .cta-card{background:var(--white);padding:26px 22px}
#page-scholarship .cta-card h4{font-size:15px;margin-bottom:10px}
#page-scholarship .cta-card p{font-size:13px;color:var(--ink-soft);line-height:1.7;margin-bottom:16px}
#page-scholarship .cta-card .btn{
  display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border:1px solid var(--crimson);
  color:var(--crimson);font-size:12.5px;font-weight:600}
#page-scholarship .cta-card .btn:hover{background:var(--crimson);color:var(--white)}
#page-scholarship footer{background:var(--ink);color:rgba(255,253,249,.6);padding:36px 0;text-align:center;font-size:12.5px}
#page-scholarship footer a{color:rgba(255,253,249,.8)}
@media(max-width:980px){
#page-scholarship .fund-grid, #page-scholarship .cta-grid{grid-template-columns:1fr}
#page-scholarship nav.primary{display:none}}
/* ===== 관리자 로그인 페이지 ===== */
#page-admin .card{
  width:100%;max-width:400px;background:var(--white);
  padding:44px 40px;box-shadow:0 30px 60px -20px rgba(0,0,0,.5)}
#page-admin .badge{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.06em;
  color:var(--crimson);border:1px solid var(--crimson);padding:5px 12px;text-transform:uppercase;margin-bottom:22px}
#page-admin .logo-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}
#page-admin .logo-row img{height:44px;width:auto}
#page-admin .logo-row b{font-family:var(--serif);font-size:16px;color:var(--crimson-deep)}
#page-admin h1{font-family:var(--serif);font-size:22px;margin-bottom:8px}
#page-admin .sub{font-size:13px;color:var(--ink-soft);margin-bottom:30px;line-height:1.7}
#page-admin label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;margin-top:18px}
#page-admin input{
  width:100%;padding:12px 14px;border:0;background:var(--paper-2);
  font-family:var(--sans);font-size:14px;color:var(--ink)}
#page-admin input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
/* 버튼 골격은 .btn 하나뿐이다 — 여기서 다시 정의하지 않고 여백만 잡는다 */
#page-admin .btn{margin-top:28px}
#page-admin .foot-links{display:flex;justify-content:space-between;margin-top:18px;font-size:12.5px;color:var(--ink-soft)}
#page-admin .foot-links a:hover{color:var(--crimson)}
#page-admin .notice{
  margin-top:28px;padding:14px 16px;background:var(--paper-2);border-left:3px solid var(--crimson);
  font-size:12px;color:var(--ink-soft);line-height:1.8}
#page-admin .notice b{color:var(--crimson)}
#page-admin .back{display:block;text-align:center;margin-top:22px;font-size:12.5px;color:var(--ink-soft)}
#page-admin .back:hover{color:var(--crimson)}
#page-admin .notice a{color:var(--crimson);font-weight:600}

/* ===== 모달 공통 (콘텐츠 등재 · 교우기업 등재) ===== */
.modal-overlay{
  display:none;position:fixed;inset:0;background:rgba(20,14,10,.72);z-index:900;
  align-items:center;justify-content:center;padding:24px}
.modal-overlay.open{display:flex}
.modal-box{
  width:100%;max-width:440px;max-height:88vh;overflow-y:auto;background:var(--white);padding:36px 34px;box-shadow:0 30px 60px -20px rgba(0,0,0,.5);position:relative}
.modal-box h2{font-family:var(--serif);font-size:20px;color:var(--crimson-deep);margin-bottom:6px}
.modal-box .modal-sub{font-size:12.5px;color:var(--ink-soft);margin-bottom:24px;line-height:1.7}
.modal-box label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;margin-top:16px}
.modal-box input,.modal-box select{
  width:100%;padding:11px 13px;border:0;background:var(--paper-2);
  font-family:var(--sans);font-size:13.5px;color:var(--ink)}
.modal-box input:focus,.modal-box select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.modal-close{position:absolute;top:16px;right:18px;font-size:20px;line-height:1;color:var(--ink-soft);cursor:pointer;background:none;border:none}
.modal-close:hover{color:var(--crimson)}
.modal-box .btn{margin-top:24px}
.modal-note{margin-top:10px;font-size:12px;color:var(--ink-soft);line-height:1.7}
.modal-note b{color:var(--ink)}
.file-chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.file-chip{
  display:inline-flex;align-items:center;gap:8px;padding:6px 10px;background:var(--paper-2);font-size:12px;color:var(--ink)}
.file-chip .rm{background:none;border:none;color:var(--crimson);cursor:pointer;font-size:13px;line-height:1;padding:0}
.contact-pill{font-size:11px;padding:2px 7px;color:var(--ink-soft);background:var(--paper-2);margin-left:6px}
.contact-pill.public{background:#e3f1e5;color:#1f6b2c}

/* ===== 조직도 공개범위 제한 (사무총장까지 공개, 이하 로그인한 교우부터) ===== */
.gated-region{display:contents}
.gated-region.locked{display:none}
.gate-notice{display:none}
/* 잠금 안내 — 테두리 대신 면으로 나눈다. 잠금 카드와 같은 자물쇠 그림을 쓴다 */
.gate-notice.show{
  display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;
  padding:44px 24px;background:var(--paper-2);color:var(--ink-soft);
  font-size:13.5px;line-height:1.8;margin:8px 0 32px}
.gate-notice .lock-ico{width:26px;height:26px;margin-bottom:0}
.gate-notice.show .btn{margin-top:2px}

/* ===== 콘텐츠 등재 모달 ===== */
.modal-box.wide{max-width:820px}
/* 넓게 쓰기 — 창을 새로 띄우지 않고 같은 모달을 화면 크기로 벌린다(폼 상태가 유지된다) */
.modal-box.wide.is-full{max-width:min(1240px,96vw);max-height:94vh}
.modal-box.wide.is-full .editor textarea{min-height:56vh}
.modal-box textarea{
  width:100%;padding:11px 13px;border:0;background:var(--paper-2);
  font-family:var(--sans);font-size:13.5px;color:var(--ink);resize:vertical;min-height:110px}
.modal-box textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.photo-drop{
  margin-top:8px;padding:16px;text-align:center;font-size:12.5px;color:var(--ink-soft);
  background:var(--paper-2);border:1px dashed var(--crimson-soft);cursor:pointer}
.photo-drop:hover{border-color:var(--crimson);color:var(--crimson-deep)}
.photo-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.photo-preview img{width:64px;height:64px;object-fit:cover}
.photo-thumb{position:relative}
.photo-thumb .rm{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:var(--r-round);background:var(--crimson);color:#fff;font-size:11px;line-height:18px;text-align:center;cursor:pointer;border:none}
.btn-row{display:flex;gap:10px;margin-top:24px}
.btn-row .btn{flex:1;margin-top:0}
/* 카카오 — 브랜드 색이라 크림슨 규칙에서 뺀다. 골격은 .btn 을 그대로 쓴다 */
.btn.kakao{background:#FEE500;color:#391B1B;border-color:#FEE500;font-size:13.5px}
.btn.kakao:hover{background:#f5d800;border-color:#f5d800;color:#391B1B}
.post-note{margin-top:14px;font-size:11.5px;color:var(--ink-soft);line-height:1.7}

/* ===== 글쓰기 에디터 =====
   색은 기존 토큰만 쓴다. 이 화면에서 바꾸는 것은 배치와 도구지 색이 아니다. */
/* 테두리를 긋지 않는다 — 도구줄은 조금 진한 면, 글칸은 옅은 면으로 갈린다 */
.editor{background:var(--paper-2);overflow:hidden}
.editor-bar{display:flex;align-items:center;gap:3px;padding:8px;background:var(--paper-2);flex-wrap:wrap}
.editor-bar button{
  min-width:32px;height:32px;padding:0 9px;border:0;
  background:transparent;color:var(--ink);font-size:12.5px;line-height:1;cursor:pointer;white-space:nowrap}
.editor-bar button:hover{background:var(--white);color:var(--crimson-deep)}
.editor-bar button:disabled{opacity:.5;cursor:default}
.editor-bar button:focus-visible{outline:2px solid var(--crimson);outline-offset:1px}
/* 도구 묶음 사이는 선이 아니라 여백으로 가른다 */
.editor-div{width:10px}
.editor-sp{flex:1}
#previewBtn,#wideBtn{font-weight:600;color:var(--crimson)}
.editor textarea{
  border:0!important;border-radius:0!important;margin:0!important;display:block;width:100%;
  min-height:300px;padding:20px 22px!important;background:var(--white)!important;
  font-size:15.5px!important;line-height:1.9}
.editor textarea:focus{box-shadow:none!important;outline:none}
.editor-hint{margin-top:8px;font-size:11.5px;color:var(--ink-soft);line-height:1.7}

/* 이모지 — 글자로 그대로 들어간다. 목록 하나가 전부라 외부 꾸러미를 붙이지 않는다 */
.emoji-pad{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:2px;
  padding:10px;background:var(--white);max-height:172px;overflow-y:auto}
.emoji-pad button{height:34px;border:0;background:transparent;font-size:19px;line-height:1;cursor:pointer}
.emoji-pad button:hover{background:var(--paper-2)}

/* 미리보기는 실제 소식 본문과 같은 서식으로 보여야 의미가 있다 */
.editor-preview{min-height:300px;padding:20px 22px;background:var(--white);
  font-size:15.5px;line-height:1.9;color:var(--ink)}
.editor-preview h2,.md-body h2{font-family:var(--serif);font-size:21px;margin:26px 0 10px;color:var(--crimson-deep)}
.editor-preview h3,.md-body h3{font-family:var(--serif);font-size:18px;margin:22px 0 8px}
.editor-preview h4,.md-body h4{font-size:15.5px;font-weight:700;margin:18px 0 6px}
.editor-preview>*:first-child,.md-body>*:first-child{margin-top:0}
.editor-preview p{margin:0 0 14px}
.editor-preview ul,.editor-preview ol{margin:0 0 14px;padding-left:22px}
.editor-preview li{margin:4px 0}
.editor-preview a{color:var(--crimson);text-decoration:underline}

/* 새 서식(인용·구분선·코드·사진)은 **미리보기와 실제 소식 본문이 같은 규칙**을 쓴다.
   두 곳에 따로 적으면 «미리보기와 다르게 나온다» 가 반드시 생긴다.
   테두리 대신 면과 색으로 나눈다 — 인용만 왼쪽에 크림슨 선을 둔다(선이 꼭 필요하면 크림슨이다). */
.editor-preview blockquote,#page-news-detail .art-body blockquote{
  margin:0 0 16px;padding:12px 18px;background:var(--paper-2);
  border-left:3px solid var(--crimson);color:var(--ink);font-style:normal}
.editor-preview hr,#page-news-detail .art-body hr{
  border:0;height:1px;background:var(--crimson-soft);margin:28px 0}
.editor-preview code,#page-news-detail .art-body code{
  background:var(--paper-2);padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}
.editor-preview del,#page-news-detail .art-body del{color:var(--ink-soft)}
.editor-preview strong,#page-news-detail .art-body strong{color:var(--ink)}

/* 본문에 끼운 사진 — 글 폭을 다 쓴다. 캡션은 사진 아래 작은 회색 글씨. */
.md-figure{margin:26px 0}
.md-figure img{width:100%;height:auto;display:block}
.md-figure figcaption{margin-top:8px;font-size:12.5px;color:var(--ink-soft);text-align:center}
.md-inline-img{max-width:100%;height:auto;vertical-align:middle}

/* 소식 상세도 새 서식을 받는다 — 제목·목록·번호목록이 예전에는 아예 없었다 */
#page-news-detail .art-body h2{font-family:var(--serif);font-size:24px;color:var(--crimson-deep);margin:38px 0 14px}
#page-news-detail .art-body h3{font-family:var(--serif);font-size:20px;margin:32px 0 12px}
#page-news-detail .art-body h4{font-size:17px;font-weight:700;margin:26px 0 10px}
#page-news-detail .art-body ul,#page-news-detail .art-body ol{margin:0 0 22px;padding-left:24px}
#page-news-detail .art-body li{margin:6px 0}
#page-news-detail .art-body a{color:var(--crimson);text-decoration:underline}

/* 분류는 접어 둔다 — 글 쓰러 온 사람이 분류부터 하게 만들지 않는다 */
/* 분류 묶음 — 접힌 서랍이 아니라 제목보다 먼저 보이는 첫 칸이다.
   회색 테두리는 긋지 않는다(디자인 규칙). 면으로만 세운다. */
.post-meta{border:0;border-radius:var(--r-card);margin-bottom:20px;background:var(--paper-2);padding:14px}
.post-meta .post-meta-head{
  display:flex;align-items:center;gap:8px;margin:0 0 12px;
  font-size:13px;font-weight:600;color:var(--ink)}
.post-meta .meta-now{margin-left:auto;font-weight:500;color:var(--ink-soft);font-size:12.5px}
.post-meta>*{padding-left:0;padding-right:0}

/* 등재 단추는 어느 화면에서든 손에 닿아야 한다.
   모달이 길어 안쪽에서 스크롤되는데, 단추가 맨 아래 있으면 다 쓰고 나서 또 내려가야 한다. */
#postModal .btn-row{
  position:sticky;bottom:0;z-index:2;background:var(--white);
  padding:14px 0 4px;margin-top:18px;
  box-shadow:0 -10px 16px -12px rgba(28,21,18,.35)}

/* 고른 사진들 — 첫 장이 대표다. 순서가 곧 대표 지정이라 따로 고르는 칸을 두지 않는다. */
.photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:10px}
.photo-thumb{position:relative;aspect-ratio:1;border-radius:var(--r-media);overflow:hidden;background:var(--paper-2)}
.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.photo-thumb .cover{position:absolute;left:6px;top:6px;padding:2px 7px;border-radius:var(--r-media);
  background:var(--crimson);color:#fff;font-size:11px;font-weight:600}
.photo-thumb .rm{position:absolute;right:4px;top:4px;width:24px;height:24px;border:0;border-radius:var(--r-round);
  background:rgba(0,0,0,.6);color:#fff;font-size:15px;line-height:1;cursor:pointer}
.photo-thumb .rm:hover{background:rgba(0,0,0,.82)}
.lbl-hint{font-weight:500;font-size:12px;color:var(--ink-soft);margin-left:6px}

/* 상세의 사진 격자 — 두 장 이상일 때만 쓴다 */
#page-news-detail .art-gallery{margin-top:40px;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
#page-news-detail .art-gallery .shot{display:block;aspect-ratio:4/3;overflow:hidden;background:#d9dce1}
#page-news-detail .art-gallery .shot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}
#page-news-detail .art-gallery .shot:hover img{transform:scale(1.03)}
@media(max-width:600px){#page-news-detail .art-gallery{grid-template-columns:1fr 1fr;gap:6px}}

/* 사진 — 실제로 끌어다 놓을 수 있다 */
.photo-drop.is-over{border-color:var(--crimson);background:rgba(154,17,34,.06);color:var(--crimson)}

/* ===== 모바일: 모달을 전체화면 시트로 =====
   모달 안에 선택칸·글칸·사진·내 등재목록이 다 들어 있어 세로로 매우 길다.
   좁은 화면에서는 테두리와 바깥 여백이 공간만 먹는다. */
@media (max-width:600px){
  #postModal .modal-box{
    width:100%;max-width:none;height:100dvh;max-height:none;
    border-radius:0;margin:0;display:flex;flex-direction:column;overflow-y:auto}
  #postModal .modal-box.wide{max-width:none}
  #postModal .btn-row{padding:12px 0;margin-top:8px;border-top:1px solid var(--line-soft,#e5e0dc)}
  #postModal .editor-bar{position:sticky;top:0;z-index:1}
  #postModal .my-posts{margin-top:20px}
  /* 좁은 화면은 이미 전체화면이라 [넓게] 가 할 일이 없다 */
  #postModal .modal-box.wide.is-full{max-width:none;max-height:none}
  #wideBtn{display:none}
  #postModal .editor textarea{min-height:38vh;padding:14px 15px!important;font-size:15px!important}
  #postModal .editor-preview{min-height:38vh;padding:14px 15px;font-size:15px}
  #postModal .editor-bar button{font-size:12px;padding:0 7px}
  .emoji-pad{grid-template-columns:repeat(auto-fill,minmax(34px,1fr));max-height:132px}
}

/* ===== 등재관리 탭(관리자 대시보드) ===== */
.sub-thumb-row{display:flex;gap:4px}
.sub-thumb-row img{width:34px;height:34px;object-fit:cover}
.status-pill.게시{background:#dcefdc;color:#1f6b2c}
.status-pill.반려{background:#e7e7e7;color:#555}

/* ===== 어드민 — 좁은 화면에서 쓸 수 있게 =====
   색은 손대지 않는다. 바꾸는 것은 배치뿐이다. */

/* 탭: 컨테이너에 overflow-x 는 이미 있었는데 **버튼이 눌려** 글자가 세로로 쪼개졌다.
   flex 자식은 기본으로 줄어든다 — 안 줄어들게 못박는다. */
.dash-tabs{scrollbar-width:none}
.dash-tabs::-webkit-scrollbar{display:none}
.dash-tab{flex:0 0 auto;white-space:nowrap}

/* 긴 안내문 접기 */
/* `-webkit-line-clamp` 을 쓰면 ::after 까지 같이 잘려 「자세히」가 안 보인다(실측).
   높이로 자르고 힌트는 아래에 따로 놓는다. */
/* 접기 — **안쪽 span 을 자르고 힌트는 바깥에 둔다.**
   바깥을 직접 자르면 두 가지가 생긴다: `-webkit-line-clamp` 는 ::after 까지 같이 잘라
   「자세히」가 안 보이고, 높이로 자르면 `border-box` 때문에 아래 여백이 본문 자리를 먹어
   줄 중간에서 잘린다. 둘 다 실제로 겪었다. */
.dash-sub.foldable{cursor:pointer;line-height:1.7}
.dash-sub-text{display:block}
.dash-sub.foldable:not(.open) .dash-sub-text{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dash-sub.foldable::after{
  content:'⌄ 자세히';display:block;margin-top:6px;
  font-size:12px;font-weight:600;color:var(--crimson)}
.dash-sub.foldable.open::after{content:'⌃ 접기'}

/* 검색·필터는 목록이 길어져도 손에 닿아야 한다 */
.dash-toolbar{position:sticky;top:0;z-index:3;background:var(--paper);padding:10px 0}

/* 아무것도 없을 때 — 조건 때문인지 데이터가 없는 건지 구분되게 */
.admin-table .empty-row td{
  text-align:center;color:var(--ink-soft);padding:26px 12px;white-space:normal}

@media(max-width:640px){
  /* 표를 카드로. 마지막 열이 대개 「삭제」인데 좁은 화면에서 잘려 **누를 수 없었다.** */
  .admin-table, .admin-table tbody, .admin-table tr, .admin-table td{display:block;width:auto}
  .admin-table thead{display:none}
  .admin-table{border-collapse:separate;background:none}
  .admin-table tbody tr{
    background:var(--white);border:1px solid var(--line-soft,#e5e0dc);border-radius:var(--r-card);
    padding:10px 12px;margin-bottom:10px}
  .admin-table tbody tr:nth-child(even){background:var(--white)}
  .admin-table tr:hover td{background:transparent}
  .admin-table td{
    padding:6px 0;border:0;white-space:normal;
    display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
  .admin-table td::before{
    content:attr(data-label);flex:0 0 auto;font-weight:600;font-size:12px;
    color:var(--ink-soft);padding-top:2px}
  .admin-table td:not([data-label])::before{content:''}
  .admin-table td.chk-col{width:auto;justify-content:flex-start}
  .admin-table td.chk-col::before{content:'선택'}
  .admin-table .empty-row{border:0;background:none}
  .admin-table .empty-row td{display:block}
  .admin-table .btn.sm{margin:0 4px 0 0}

  /* 일괄 작업은 표 위에 있고 선택은 표 안에서 한다 — 스크롤하면 단추가 사라졌다.
     고른 것이 있을 때만 아래에서 올라오게 한다. */
  .send-box{position:sticky;bottom:0;z-index:4;background:var(--white);
    border-top:1px solid var(--line-soft,#e5e0dc);padding:12px;margin:0 -24px;
    box-shadow:0 -12px 20px -16px rgba(28,21,18,.4)}

  .dash-form{gap:6px}
  .dash-form select,.dash-form input,.dash-form button{width:100%}
  .dash-toolbar input,.dash-toolbar select{width:100%}
}

/* ===== 관리자DB 문자/카카오톡 발송 ===== */
.send-box{background:var(--white);padding:18px 20px;margin-bottom:18px}
.send-box label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:8px}
.send-box textarea{
  width:100%;min-height:64px;padding:11px 13px;border:0;background:var(--paper-2);
  font-family:var(--sans);font-size:13.5px;color:var(--ink);resize:vertical}
.send-box textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.send-actions{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.send-actions .btn{margin-top:0;padding:11px 18px;font-size:13px}
.send-actions .btn{padding:11px 18px;font-size:13px}
.send-hint{font-size:12px;color:var(--ink-soft);margin-left:auto}
.send-limits{margin-top:10px;font-size:11.5px;color:var(--ink-soft);line-height:1.7}
.admin-table td.chk-col, .admin-table th.chk-col{padding-left:14px;padding-right:4px;width:30px}

/* ===== 교우 로그인 · 가입 (kuaa.or.kr 구성 착안, KNA 서체·색으로) ===== */
#page-login, #page-join, #page-social-join{background:var(--paper-2);min-height:100vh;padding:calc(56px + var(--header-h)) 24px 90px}
.auth-wrap{max-width:460px;margin:0 auto}
#page-join .auth-wrap{max-width:560px}
.auth-card{background:var(--white);border-top:3px solid var(--crimson);padding:40px 38px 34px;box-shadow:0 24px 50px -28px rgba(28,21,18,.3)}
.auth-head{text-align:center;margin-bottom:28px}
.auth-head h1{font-family:var(--serif);font-size:22px;color:var(--ink);margin-bottom:8px}
.auth-head p{font-size:13px;color:var(--ink-soft);line-height:1.75}
.auth-field{margin-bottom:14px}
.auth-field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.auth-field input{width:100%;padding:13px 14px;border:0;background:var(--paper-2);font-family:var(--sans);font-size:14px;color:var(--ink)}
.auth-field input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson);background:var(--white)}
.auth-field select{width:100%;padding:13px 14px;border:0;background:var(--paper-2);font-family:var(--sans);font-size:14px;color:var(--ink)}
.auth-field select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.auth-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#memberLoginForm .btn,#memberJoinForm .btn{margin-top:18px}
.auth-keep{display:flex;align-items:center;gap:7px;margin-top:14px;font-size:12.5px;color:var(--ink-soft)}
.auth-keep input{width:15px;height:15px;accent-color:var(--crimson);cursor:pointer}
.auth-links{display:flex;justify-content:center;gap:14px;margin-top:26px;font-size:12.5px;color:var(--ink-soft);flex-wrap:wrap}
.auth-links a{color:var(--ink-soft)}
.auth-links a:hover{color:var(--crimson)}
.auth-links .sep{color:var(--ink-soft);opacity:.5}
/* 간편 로그인 */
.auth-or{display:flex;align-items:center;justify-content:center;margin:26px 0 18px;font-size:11.5px;color:var(--ink-soft);letter-spacing:.06em}
.social-list{display:flex;flex-direction:column;gap:9px}
.social-btn{
  display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:13px;
  font-family:var(--sans);font-size:14px;font-weight:600;cursor:pointer;border-radius:var(--r-pill);border:1px solid transparent;
  transition:filter .2s ease}
.social-btn:hover{filter:brightness(.94)}
.social-btn .ico{width:18px;height:18px;flex-shrink:0}
.social-kakao{background:#FEE500;color:#191600}
.social-naver{background:#03C75A;color:#fff}
/* 흰 카드 위 흰 버튼은 보이지 않는다. 회색 선을 긋는 대신 면을 한 단 내린다 */
.social-google{background:var(--paper-2);color:#1f1f1f}
/* 앱 키가 없으면 아예 감춘다. 흐릿하게만 두면 눌러보고 안내창만 보게 된다 —
   교우에게는 고장으로 읽힌다. 지금은 세 제공자를 항상 보여 준다. */
.social-btn[data-ready="no"]{display:none}
/* 셋 다 감춰지면 「또는 간편 로그인」 줄만 덩그러니 남는다. 그 줄도 같이 감춘다.
   :has() 로 세려다 브라우저에 따라 안 먹었다 — 세는 일은 아래 초기화 코드가 한다. */
.auth-or.is-empty, .social-list.is-empty{display:none}
.auth-notice{margin-top:24px;padding:14px 16px;background:var(--paper-2);border-left:3px solid var(--crimson);font-size:11.5px;color:var(--ink-soft);line-height:1.8}
.auth-notice b{color:var(--crimson)}
.auth-error{margin-top:14px;padding:11px 14px;background:#ededed;border-left:3px solid var(--accent);font-size:12.5px;color:#222;line-height:1.7;display:none}
.auth-error.show{display:block}
.auth-ok{margin-top:14px;padding:11px 14px;background:#eef7ee;border-left:3px solid #1f6b2c;font-size:12.5px;color:#1f6b2c;line-height:1.7;display:none}
.auth-ok.show{display:block}
.consent-box{margin-top:6px;padding:12px 14px;background:var(--paper);max-height:96px;overflow-y:auto;font-size:11.5px;color:var(--ink-soft);line-height:1.75}
.consent-check{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:12.5px;color:var(--ink)}
.consent-check input{width:15px;height:15px;accent-color:var(--crimson);margin-top:3px;cursor:pointer;flex-shrink:0}
@media(max-width:520px){
  .auth-card{padding:30px 22px 26px}
  .auth-row2{grid-template-columns:1fr}
}

/* ===== 최고관리자 대시보드 ===== */
#page-admin-dashboard{background:var(--paper);min-height:100vh;padding:calc(48px + var(--header-h)) 24px 90px}
.dash-wrap{max-width:1100px;margin:0 auto}
.dash-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:8px}
.dash-head h1{font-family:var(--serif);font-size:26px;color:var(--crimson-deep)}
.dash-head .who{font-size:12.5px;color:var(--ink-soft)}
.dash-head .who a{color:var(--crimson);font-weight:600}
.dash-sub{font-size:13px;color:var(--ink-soft);margin-bottom:28px;line-height:1.7}
.dash-tabs{display:flex;gap:4px;margin-bottom:24px}
.dash-tab{padding:12px 20px;font-size:13.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;background:none;border-left:none;border-right:none;border-top:none}
.dash-tab.active{color:var(--crimson-deep);border-bottom-color:var(--crimson)}
.dash-panel{display:none}
.dash-panel.active{display:block}
/* 관리 화면 추가 입력줄 — 기존 .dash-toolbar 와 같은 모양이되 입력이 더 넓다 */
.dash-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.dash-form input,.dash-form select{padding:9px 12px;border:0;background:var(--paper-2);font-size:13px;font-family:var(--sans);min-width:150px}
.dash-form input:focus,.dash-form select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.dash-form input[type=text]{flex:1 1 160px}
.dash-form .btn{padding:10px 18px;font-size:13px}
.dash-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;align-items:center}


/* ── 지정된 관리자 카드 (승인관리 위쪽) ─────────────────────────
   여덟 칸짜리 표였다. 좁은 화면에서 옆으로 밀렸고, 정작 「몇 명이고 누구인가」가
   한눈에 안 들어왔다. 카드로 세운다. */
.adm-sec{margin-bottom:22px}
.adm-sec-head{display:flex;gap:10px;align-items:center;justify-content:space-between;
  flex-wrap:wrap;margin-bottom:12px}
.adm-sec-head h3{margin:0;font-family:var(--serif);font-size:17px;color:var(--ink)}
.adm-n{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--crimson);margin-left:6px}
.adm-sec-tools{display:flex;gap:8px;flex-wrap:wrap}
.adm-sec-tools input,.adm-sec-tools select{padding:8px 12px;border:0;background:var(--paper-2);
  font-size:13px;font-family:var(--sans);min-width:150px}
.adm-sec-tools input:focus,.adm-sec-tools select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}

.adm-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.adm-card{border:1px solid var(--line-soft,#e5e0dc);border-radius:var(--r-card);background:var(--paper);
  padding:14px 16px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.adm-card.off{opacity:.62;background:var(--paper-2)}
.adm-card-top{display:flex;gap:6px;align-items:center;justify-content:space-between}
.adm-role{font-size:10.5px;font-weight:800;letter-spacing:.04em;padding:3px 8px;border-radius:var(--r-pill);
  background:color-mix(in srgb,var(--crimson) 10%,#fff);color:var(--crimson)}
.adm-role.OWNER{background:var(--crimson);color:#fff}
.adm-name{font-family:var(--serif);font-size:17px;color:var(--ink);line-height:1.3}
.adm-name i{font-style:normal;font-family:var(--sans);font-size:12px;font-weight:500;color:var(--ink-soft)}
/* 아이디가 이메일인 계정이 있다 — 자르지 말고 끊어서 다음 줄로 넘긴다 */
.adm-id{font-size:12px;color:var(--ink-soft);overflow-wrap:anywhere;word-break:break-word;line-height:1.45}
.adm-scope{font-size:12px;font-weight:600;color:var(--crimson)}
.adm-meta{margin:4px 0 0;display:grid;gap:3px;font-size:12px}
.adm-meta div{display:flex;gap:8px}
.adm-meta dt{margin:0;color:var(--ink-soft);flex:0 0 46px}
.adm-meta dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.adm-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line-soft,#e5e0dc)}
.adm-empty{grid-column:1/-1;margin:0;padding:26px 14px;text-align:center;font-size:13.5px;
  color:var(--ink-soft);background:var(--paper-2);border-radius:var(--r-card)}

@media(max-width:640px){
  .adm-sec-tools{width:100%}
  .adm-sec-tools input,.adm-sec-tools select{flex:1;min-width:0}
  .adm-cards{grid-template-columns:1fr}
}

/* ── 관리자 지정 상자 (승인관리) ────────────────────────────────
   드롭다운 하나로 한 명씩 주던 것을 명부 목록에서 골라 담는 방식으로 바꿨다.
   기수 임원처럼 여러 명에게 같은 역할을 줄 때 같은 동작을 반복하지 않게 하려는 것이다. */
.grant-box{border:1px solid var(--line-soft,#e5e0dc);border-radius:var(--r-card);
  background:var(--paper);margin-bottom:18px;overflow:hidden}
.grant-head{display:flex;gap:10px;align-items:center;justify-content:space-between;
  flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line-soft,#e5e0dc)}
.grant-head b{font-size:13.5px;color:var(--ink)}
.grant-head input{padding:8px 12px;border:0;background:var(--paper-2);font-size:13px;
  font-family:var(--sans);min-width:170px;flex:1;max-width:260px}
.grant-head input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}

/* 목록은 스스로 스크롤한다 — 명부가 164명이라 그냥 펼치면 아래 표까지 밀려 내려간다 */
/* 한 사람당 한 줄. 여러 칸으로 흘리면 명부가 아니라 카드 벽처럼 보여서
   위아래로 훑으며 찾는 동작이 안 된다. */
.grant-list{max-height:320px;overflow-y:auto;padding:8px;
  display:flex;flex-direction:column;gap:4px;
  font-size:13px;color:var(--ink-soft)}
.grant-item{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--r-card);
  cursor:pointer;background:var(--paper-2);transition:background .15s,box-shadow .15s}
.grant-item:hover{background:color-mix(in srgb,var(--crimson) 6%,var(--paper-2))}
.grant-item.on{background:color-mix(in srgb,var(--crimson) 10%,#fff);
  box-shadow:inset 0 0 0 1.5px var(--crimson)}
.grant-item.no{opacity:.5;cursor:not-allowed}
.grant-item input{width:16px;height:16px;accent-color:var(--crimson);flex:0 0 auto;margin:0}
/* 한 줄 안에서 이름·아이디를 가로로 나란히. 폭이 넉넉해져서 이메일 아이디도 들어간다.
   min-width:0 이 없으면 flex 자식이 줄어들지 않아 긴 이메일이 줄을 밀어낸다. */
.grant-who{display:flex;align-items:baseline;gap:4px 12px;min-width:0;flex:1}
.grant-item b{font-size:13px;color:var(--ink);font-weight:600;line-height:1.35;
  flex:0 0 auto;min-width:104px}
.grant-item b i{font-style:normal;font-weight:500;font-size:11.5px;color:var(--ink-soft)}
.grant-id{font-size:11.5px;color:var(--ink-soft);line-height:1.35;
  overflow-wrap:anywhere;word-break:break-word}
.grant-badge{flex:0 0 auto;font-style:normal;font-size:10.5px;font-weight:700;
  padding:3px 7px;border-radius:var(--r-pill);background:var(--paper);color:var(--ink-soft);white-space:nowrap}
.grant-badge.on{background:color-mix(in srgb,var(--crimson) 12%,#fff);color:var(--crimson)}
.grant-empty{grid-column:1/-1;margin:0;padding:14px;text-align:center;font-size:13px}

/* 목록 위에 앉는다 — 아래 두면 명부가 스크롤되는 동안 보이지 않는다 */
.grant-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  padding:12px 14px;border-bottom:1px solid var(--line-soft,#e5e0dc);background:var(--paper-2)}
.grant-bar select{padding:9px 12px;border:0;background:var(--paper);font-size:13px;
  font-family:var(--sans);min-width:140px}
.grant-bar select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--crimson)}
.grant-bar select:disabled{opacity:.45}
.grant-count{font-size:12.5px;font-weight:700;color:var(--crimson);margin-right:auto}
#grantBtn:disabled{opacity:.45;cursor:not-allowed}

@media(max-width:640px){
  .grant-head input{max-width:none}
  /* 390px 에서는 이름 옆에 이메일이 못 들어간다 — 그때만 두 줄로 접는다 */
  .grant-who{flex-direction:column;align-items:flex-start;gap:1px}
  .grant-item b{min-width:0}
  .grant-list{max-height:260px}
  /* 셋을 한 줄에 넣으면 「중간관리자」가 「중간관리:」로 잘린다 — 버튼만 아래로 내린다 */
  .grant-bar select{flex:1;min-width:0}
  .grant-bar .btn{flex:1 0 100%;margin-top:8px}
  .grant-count{flex:1 0 100%;margin:0 0 4px}
}

.dash-toolbar input,.dash-toolbar select{padding:9px 12px;border:0;background:var(--paper-2);font-size:13px;font-family:var(--sans)}
.dash-count{font-size:12px;color:var(--ink-soft);margin-left:auto}
.admin-table{width:100%;border-collapse:collapse;background:var(--white);font-size:13px}
.admin-table th{
  text-align:left;padding:11px 12px;background:var(--ink);color:var(--white);font-weight:600;
  font-size:11.5px;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.admin-table tbody tr:nth-child(even){background:var(--paper-2)}
.admin-table td{padding:11px 12px;color:var(--ink);white-space:nowrap}
.admin-table tr:hover td{background:var(--paper-2)}
.status-pill{display:inline-block;padding:3px 10px;font-size:11px;font-weight:600;border-radius:var(--r-pill)}
.status-pill.대기{background:#ededed;color:#555}
.status-pill.활성{background:#dcefdc;color:#1f6b2c}
.status-pill.비활성{background:#e7e7e7;color:#555}
/* 표 안 버튼은 .btn.sm 이다 — 여기서는 줄 간격만 준다 */
.admin-table .btn.sm{margin-right:4px}
.table-scroll{overflow-x:auto}
.empty-row td{text-align:center;color:var(--ink-soft);padding:36px 12px}
.dash-logout{font-size:12.5px;color:var(--ink-soft);cursor:pointer;text-decoration:underline}
.dash-logout:hover{color:var(--crimson)}
/* ============ d·camp 레퍼런스 기반 비주얼 리프레시 ============ */
:root{--maxw:1240px;--header-h:88px;--ink:#0a0a0a;--ink-soft:#626262;--paper-2:#f2f2f2}
body{font-size:16px;line-height:1.65}
::-webkit-scrollbar-track{background:#ededed}
::-webkit-scrollbar-thumb{background:#111;border-color:#ededed}
::-webkit-scrollbar-thumb:hover{background:#555}
html{scrollbar-color:#111 #ededed}
.section{padding:150px 0}
.section-head{max-width:900px;margin-bottom:64px}
.section-head h2{font-size:clamp(42px,5.5vw,76px);font-weight:600;line-height:1.02;letter-spacing:-.055em}
.eyebrow::before{display:none}
.btn{border-radius:var(--r-pill);padding:14px 24px;border-color:currentColor}
header .header-inner{max-width:none;padding-left:clamp(24px,4.5vw,72px);padding-right:clamp(24px,4.5vw,72px)}
.logo img{height:52px}
nav.primary{gap:12px}
nav.primary a,.nav-dd>button{font-size:16px;font-weight:600}
header.is-floating .header-inner{max-width:calc(100% - 32px);border-radius:var(--r-flat)}
header.at-top.dark-top{background:#000}

/* 모달도 메인 화면과 같은 흑백 타이포 시스템을 쓴다. */
.popup-backdrop,.modal-overlay,.modal-backdrop{
  background:rgba(0,0,0,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.popup-card,.modal-box,.modal{
  background:#fff;color:#0a0a0a;border:0;border-radius:0;
  box-shadow:0 32px 100px rgba(0,0,0,.38)}
.popup-card{max-width:760px;padding:58px 60px 46px;transform:translateY(24px)}
.popup-backdrop.show .popup-card{transform:none}
.popup-badge{
  padding:0;margin:0 0 22px;background:none;color:var(--crimson);
  font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.popup-title{
  max-width:13ch;margin:0 0 42px;font-size:clamp(34px,4.2vw,54px);
  line-height:1.05;letter-spacing:-.055em;color:#0a0a0a}
.popup-body{padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 42px}
.popup-row{display:grid;grid-template-columns:82px 1fr;gap:16px;padding:15px 0;font-size:14px;line-height:1.55}
.popup-row:first-child{grid-column:1/-1}
.popup-row .k{flex:none;color:#0a0a0a;font-size:12px;font-weight:700;letter-spacing:.02em}
.popup-row .v{color:#666}
.popup-actions{margin-top:36px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px}
.popup-actions .btn{width:auto;margin:0;justify-self:start;background:#000;color:#fff;border-color:#000}
.popup-actions .btn:hover{background:var(--crimson);border-color:var(--crimson)}
.popup-hide-today{justify-self:end;text-decoration:none;color:#777;font-size:12px}
.popup-hide-today:hover{color:#000}
.popup-close,.modal-close,.modal .close{
  top:20px;right:20px;width:42px;height:42px;padding:0;border-radius:var(--r-round);
  display:grid;place-items:center;background:#f1f1f1;color:#111;font-size:22px;
  transition:background .2s ease,color .2s ease,transform .2s ease}
.popup-close:hover,.modal-close:hover,.modal .close:hover{
  background:#000;color:#fff;transform:rotate(90deg)}

.modal-overlay{padding:32px}
.modal-box{max-width:520px;max-height:calc(100svh - 64px);padding:58px 56px 52px}
.modal-box.wide{max-width:760px}
.modal-box h2{
  max-width:12ch;margin:0 0 16px;color:#0a0a0a;font-size:clamp(34px,4vw,50px);
  line-height:1.02;letter-spacing:-.055em}
.modal-box .modal-sub{max-width:58ch;margin-bottom:38px;color:#666;font-size:14px;line-height:1.7}
.modal-box .modal-sub b{color:#111}
.modal-box label{margin:20px 0 8px;color:#111;font-size:12px;font-weight:700;letter-spacing:.015em}
.modal-box input,.modal-box select,.modal-box textarea{
  min-height:50px;padding:14px 16px;background:#f2f2f2;color:#111;font-size:14px;border-radius:0}
.modal-box textarea{min-height:132px;line-height:1.65}
.modal-box input:focus,.modal-box select:focus,.modal-box textarea:focus{
  background:#fff;box-shadow:inset 0 0 0 2px #000}
.modal-box input[type="checkbox"]{min-height:0;accent-color:#000}
.modal-box .btn{margin-top:32px;min-height:50px}
.modal-box .btn.primary{background:#000;border-color:#000}
.modal-box .btn.primary:hover{background:var(--crimson);border-color:var(--crimson)}
.modal-box .btn.kakao{border-radius:var(--r-pill)}
.photo-drop{padding:26px 18px;background:#f2f2f2;border:0;color:#555}
.photo-drop::before{content:'+';display:block;margin-bottom:7px;color:#111;font-size:27px;line-height:1}
.photo-drop:hover{background:#e8e8e8;color:#111}
.file-chip{background:#eee;border-radius:var(--r-pill);padding:8px 12px}
.publish-banner{padding:16px 18px;background:#edf5ef;border:0;color:#1f6b2c}
.post-note{color:#777}

.modal{max-width:560px;padding:58px 56px}
.modal .role{color:var(--crimson);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.modal .name{max-width:11ch;margin:12px 0 24px;font-size:clamp(34px,4vw,50px);line-height:1.04;letter-spacing:-.055em}
.modal .desc{margin:0;color:#666;font-size:15px;line-height:1.8}

@media(max-width:640px){
  .popup-backdrop,.modal-overlay,.modal-backdrop{align-items:flex-end;padding:0}
  .popup-card,.modal-box,.modal-box.wide,.modal{
    width:100%;max-width:none;max-height:92svh;margin:0;padding:48px 22px 28px;
    overflow-y:auto;box-shadow:0 -24px 70px rgba(0,0,0,.28)}
  .popup-title,.modal-box h2{font-size:36px}
  .popup-title{margin-bottom:28px}
  .popup-body{grid-template-columns:1fr;gap:0}
  .popup-row:first-child{grid-column:auto}
  .popup-actions{grid-template-columns:1fr}
  .popup-actions .btn{width:100%;justify-self:stretch}
  .popup-hide-today{justify-self:center}
  .popup-close,.modal-close,.modal .close{top:12px;right:12px;width:38px;height:38px}
  .modal-box .modal-sub{margin-bottom:28px;padding-right:14px}
}

/* 레퍼런스 첫 화면의 검정 무대와 윤곽선 타이포를 KNA 카피로 재구성한다. */
.hero{min-height:100svh;background:#000;color:#fff}
.hero-stage{display:none}
.hero-body{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);grid-template-rows:1fr auto;align-items:end;text-align:left;max-width:none;padding:190px clamp(24px,4.5vw,72px) 54px;gap:56px 72px}
.hero-copy{align-self:end}
.hero-copy::before{content:'KNA  KNA  KNA';position:absolute;left:-1vw;top:-38vh;white-space:nowrap;font-size:clamp(96px,15vw,245px);line-height:.85;font-weight:700;letter-spacing:-.075em;color:transparent;-webkit-text-stroke:1px #303030;pointer-events:none}
.hero-copy::after{content:'LAW · LEADERSHIP';position:absolute;left:-18vw;top:-14vh;white-space:nowrap;font-size:clamp(76px,12vw,190px);line-height:.85;font-weight:700;letter-spacing:-.07em;color:transparent;-webkit-text-stroke:1px #303030;pointer-events:none}
.hero-line{display:contents}
.hero-title{font-size:clamp(38px,4.4vw,68px);line-height:1.06;letter-spacing:-.055em;text-shadow:none;max-width:10ch;position:relative;z-index:1}
.hero-sub{grid-column:2;grid-row:1;margin:0 0 4px;align-self:end;max-width:38ch;font-size:16px;line-height:1.75;color:#c9c9c9;text-shadow:none;position:relative;z-index:1}
.hero-actions{grid-column:1;grid-row:2;margin:0;justify-content:flex-start}
.hero-actions::before{content:none;display:none}
.hero-actions .btn{background:#fff;color:#000;border-color:#fff;backdrop-filter:none}
.hero-actions .btn:hover{background:var(--crimson);color:#fff;border-color:var(--crimson)}
.hero-dots{right:clamp(24px,4.5vw,72px);left:auto;bottom:58px;transform:none}
.hero-dot{width:28px;height:2px;border:0;border-radius:0;background:#555}
.hero-dot[aria-selected="true"]{background:#fff;transform:none}

#page-home .brand-band{padding:72px 0;background:#000!important}
#page-home .brand-set img{filter:grayscale(1) invert(1);opacity:.68}
#page-home .brand-marquee::before{background:linear-gradient(90deg,#000,transparent)}
#page-home .brand-marquee::after{background:linear-gradient(270deg,#000,transparent)}
#page-home #notables{background:#f2f2f2}
#page-home .ppl-track{gap:18px}
#page-home .ppl-card{flex-basis:calc((100% - 36px)/3)}
#page-home .ppl-photo{aspect-ratio:1/1}
#page-home .ppl-photo img{filter:grayscale(1);transition:filter .35s ease,transform .55s ease}
#page-home .ppl-card:hover img{filter:grayscale(0);transform:scale(1.025)}
#page-home .ppl-badge{margin-top:20px;text-transform:uppercase;letter-spacing:.11em}
#page-home .ppl-name{font-size:22px;font-weight:600;letter-spacing:-.04em}
.program-band{background:#000!important;color:#fff}
.program-band .section-head h2,.program-band .program-toggle{color:#fff}
.program-band .program-detail,.program-band .program-more .btn{color:#aaa}
.program-band .program-toggle::after{color:#fff}
#page-home #scholars{background:#fff}
#page-home .scholar-line{gap:18px 44px}
#page-home .scholar-line b{font-size:20px}
#page-home #news{background:#f2f2f2}
.news-media{background:#ddd}
.news-media img{filter:grayscale(.35)}
#page-home #recruit{background:#000!important;color:#fff}
#page-home #recruit h2{color:#fff;max-width:12ch}
#page-home #recruit p{color:#aaa}
#page-home #recruit .btn.primary{background:#fff;color:#000;border-color:#fff}
#page-home #recruit .btn.ghost{color:#fff;border-color:#666}
.page-hero{padding-top:calc(110px + var(--header-h));padding-bottom:80px}
.page-hero h1{font-size:clamp(48px,7vw,96px);line-height:.98;letter-spacing:-.065em}
footer{background:#000}

@media(max-width:820px){
  .hero-body{grid-template-columns:1fr;grid-template-rows:1fr auto auto;padding-top:150px;gap:26px}
  .hero-copy::before{top:-28vh}.hero-copy::after{top:-10vh}
  .hero-title{max-width:12ch}
  .hero-sub{grid-column:1;grid-row:2;margin:0;max-width:34ch}
  .hero-actions{grid-column:1;grid-row:3;width:100%}
  .hero-actions::before{font-size:13px}
  .hero-dots{display:none}
  .section{padding:104px 0}
}
@media(max-width:480px){
  :root{--header-h:72px}
  .logo img{height:42px}
  .hero-body{padding:130px 20px 36px}
  .hero-copy::before{font-size:88px;top:-24vh}.hero-copy::after{font-size:68px;top:-9vh}
  .hero-title{font-size:44px}
  .hero-actions .btn{width:auto}
  .section-head h2{font-size:42px}
}

/* ============ 서브페이지 전면 리디자인 ============ */
/* 화면 전환 자체가 하나의 장면처럼 느껴지도록 페이지와 패널에 짧은 진입 모션을 준다. */
.page.active{animation:pageIn .65s cubic-bezier(.2,.7,.2,1) both}
@keyframes pageIn{from{opacity:0}to{opacity:1}}
.prog-panel.active,.dash-panel.active,#page-greetings .greet.active{animation:panelIn .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes panelIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* 모든 공개 서브페이지가 같은 검정 오프닝 장면에서 시작한다. */
.page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero{
  position:relative;min-height:62svh;padding:calc(var(--header-h) + 120px) 0 72px;
  display:flex;align-items:flex-end;overflow:hidden;background:#000;color:#fff}
.page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero::before{
  content:'KNA  KNA  KNA';position:absolute;left:-2vw;top:25%;white-space:nowrap;
  color:transparent;-webkit-text-stroke:1px #292929;font-size:clamp(92px,15vw,230px);
  line-height:.8;font-weight:700;letter-spacing:-.075em;pointer-events:none}
.page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero::after{
  content:'LAW · NETWORK';position:absolute;right:-10vw;bottom:-.12em;white-space:nowrap;
  color:transparent;-webkit-text-stroke:1px #202020;font-size:clamp(70px,11vw,170px);
  line-height:.8;font-weight:700;letter-spacing:-.065em;pointer-events:none}
.page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero .wrap{position:relative;z-index:1;width:100%}
.page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero h1,
#page-greetings .page-hero h1{max-width:12ch;color:#fff;font-size:clamp(54px,8vw,112px);line-height:.9;letter-spacing:-.07em}
.page-hero .eyebrow,.page-hero .updated,#page-greetings .page-hero .eyebrow{color:#aaa!important}
.page-hero .updated{margin-top:24px;font-size:13px}

/* 기존 적색 밑줄 네비게이션을 검정 면이 이동하는 선택 상태로 교체한다. */
nav.primary a::after,.nav-dd>button::after{height:1px;background:currentColor;bottom:1px}
.news-tabs,#page-greetings .jump,#page-kna-program .prog-tabs,.dash-tabs{
  display:inline-flex;gap:4px;padding:5px;background:#ededed;border-radius:var(--r-flat);align-items:center;flex-wrap:wrap}
.news-tab,#page-greetings .jump button,#page-kna-program .prog-tab,.dash-tab{
  min-width:0;margin:0;padding:11px 19px;border:0!important;border-radius:var(--r-flat);background:transparent;
  color:#666;font-size:13px;font-weight:600;line-height:1.2;transition:background .3s ease,color .3s ease,transform .3s ease}
.news-tab:hover,#page-greetings .jump button:hover,#page-kna-program .prog-tab:hover,.dash-tab:hover{color:#000;transform:translateY(-1px)}
.news-tab.active,#page-greetings .jump button.active,#page-kna-program .prog-tab.active,.dash-tab.active{
  background:#000;color:#fff!important;box-shadow:none}

/* 인사말: 탭 아래 한 장씩 교체되는 에디토리얼 레이아웃. */
#page-greetings .jump{width:max-content;max-width:calc(100% - 40px);margin:36px auto 0;overflow-x:auto;flex-wrap:nowrap}
#page-greetings .jump button{min-width:max-content}
#page-greetings .greet{padding:150px 0;background:#fff}
#page-greetings .greet.alt{background:#f2f2f2}
#page-greetings .greet-inner{gap:clamp(54px,8vw,120px)}
#page-greetings .photo{filter:grayscale(1);transition:filter .5s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
#page-greetings .greet:hover .photo{filter:grayscale(0);transform:translateY(-8px)}
#page-greetings .status{border:0;padding:0;color:#777}
#page-greetings .status::before{background:#000}
#page-greetings .pc-role{color:#777}

/* 조직도: 적색 계층도를 흑백 데이터 맵으로 바꾼다. */
#page-orgchart .section:first-of-type{background:#f2f2f2;padding:120px 0}
#page-orgchart .node,#page-orgchart .advisors{
  background:#fff;color:#111;box-shadow:none;transition:background .3s ease,color .3s ease,transform .3s ease}
/* 위원회 칸만 면을 남긴다. 이 섹션 배경이 흰색이라 흰 칸으로 두면 칸이 사라진다 —
   임원 성명이 잠긴 상태에서는 이름 한 줄뿐이라 더 그렇다. */
#page-orgchart .comm-node{
  background:#f2f2f2;color:#111;box-shadow:none;transition:background .3s ease,color .3s ease,transform .3s ease}
#page-orgchart .node::before{background:#111;color:#fff;border:0}
#page-orgchart .node.hub{background:#000;color:#fff}
#page-orgchart .node.hub::before{background:#fff;color:#000}
#page-orgchart .node .role,#page-orgchart .node.chair .role,#page-orgchart .advisors .role{color:#777}
#page-orgchart .node:hover,#page-orgchart .comm-node:hover{background:#000;color:#fff;transform:translateY(-4px)}
#page-orgchart .node:hover .role,#page-orgchart .comm-node:hover p{color:#aaa}
#page-orgchart .org-sub h3{color:#111}
#page-orgchart .org-sub > p{color:#777}
#page-orgchart table.class-table th{background:#000;color:#fff}
#page-orgchart .table-label{color:#111;font-size:15px}

/* 회칙: 좌측 적색 라인을 없애고 선택 목차 자체가 검정 캡슐이 된다. */
#page-bylaws .layout{padding-top:100px;grid-template-columns:260px 1fr;gap:80px}
#page-bylaws .toc{padding:6px;background:#f0f0f0;border-radius:var(--r-card)}
#page-bylaws .toc .t{padding:14px 16px 8px;color:#777}
#page-bylaws .toc a{margin:0;padding:11px 16px;border:0;border-radius:var(--r-pill);color:#666;transition:.25s ease}
#page-bylaws .toc a:hover,#page-bylaws .toc a.active{background:#000;color:#fff}
#page-bylaws .doc-cover{padding:64px;background:#000;color:#fff}
#page-bylaws .doc-cover .t2{color:#fff;font-size:34px}
#page-bylaws .doc-cover .t3{color:#aaa}
#page-bylaws .chapter{padding:64px}
#page-bylaws .chapter h2{font-size:32px;letter-spacing:-.045em}
#page-bylaws .chapter h2 .num{width:auto;height:auto;color:#777;font-size:12px}
#page-bylaws .article h3{color:#111;font-size:17px}
#page-bylaws .appendix b{color:#111}

/* 과정: 숫자와 단계가 스크롤 장면처럼 크게 읽히게 하고 탭은 검정 캡슐로 통일한다. */
#page-kna-program .prog-status{background:#fff;color:#000;border-radius:var(--r-pill);padding:10px 16px}
#page-kna-program .prog-facts{margin-top:0;padding-top:100px}
#page-kna-program .prog-fact b{font-size:clamp(44px,5vw,72px);color:#000}
#page-kna-program .prog-benefit{transition:background .3s ease,transform .3s ease;padding:34px!important}
#page-kna-program .prog-benefit:hover{background:#f2f2f2;transform:translateY(-4px)}
#page-kna-program .prog-benefit .num{color:#777}
#page-kna-program .prog-journey{background:#000}
#page-kna-program .journey-step span{color:#aaa}
#page-kna-program .prog-final-cta{background:#000}
#page-kna-program .prog-final-cta .btn{color:#000}
#page-kna-program .prog-tabbar{margin-bottom:58px}
#page-kna-program .phase-title{transition:background .25s ease,padding .25s ease}
#page-kna-program .phase-title:hover{background:#f2f2f2;padding-left:18px;padding-right:18px}
#page-kna-program .sched-table td.wk{color:#111}
#page-kna-program .scholar-card{background:#f2f2f2;transition:background .3s ease,transform .3s ease}
#page-kna-program .scholar-card::before{display:none}
#page-kna-program .scholar-card:hover{background:#000;transform:translateY(-5px)}
#page-kna-program .scholar-card:hover .nm{color:#fff}
#page-kna-program .scholar-card:hover .ttl{color:#aaa}
#page-kna-program .scholar-card .mono{border:0;background:#000;color:#fff}
#page-kna-program .scholar-card .tag{border:0;border-radius:var(--r-pill);background:#ddd;color:#111}
#page-kna-program .history-timeline{border-left-color:#222}
#page-kna-program .hist-item::before{background:#000;border-color:#fff;box-shadow:0 0 0 2px #000}
#page-kna-program .hist-item .yr{color:#111}
#page-kna-program .prog-panel>h3[style]{color:#111!important;border:0!important;padding-bottom:0!important}
#page-kna-program .prog-panel>h3[style] span{background:#111!important}

/* 장학회·소식·교우마당의 카드도 선 대신 면과 움직임으로 구분한다. */
#page-scholarship .section,#page-news .section,#page-lounge .section{padding:130px 0}
#page-scholarship .biz-item,#page-scholarship .cta-card,.news-feature,.news-card,.class-card,.comm-card{
  transition:transform .45s cubic-bezier(.2,.7,.2,1),filter .35s ease,background .35s ease}
#page-scholarship .biz-item:hover,#page-scholarship .cta-card:hover,.news-feature:hover,.news-card:hover,.class-card:hover,.comm-card:hover{transform:translateY(-8px)}
.news-kicker,.news-card:hover h3,.news-feature:hover .news-link,.news-card:hover .news-link{color:#111}
.news-tab.active{border:0}
.network-results .nr-row .nr-tag{border:0;border-radius:var(--r-pill);background:#eee;color:#111;padding:5px 9px}

/* 로그인·가입·관리 화면도 별도 템플릿처럼 보이지 않게 동일한 검정 무대와 흰 패널을 쓴다. */
#page-login,#page-join,#page-social-join,#page-admin{background:#000}
.auth-card,#page-admin .admin-card{border-radius:0;box-shadow:0 30px 90px rgba(0,0,0,.35)}
.auth-card{border-top:0}
.auth-card h1,#page-admin h1{font-size:clamp(34px,4vw,48px);line-height:1;letter-spacing:-.055em;color:#111}
.auth-card input,#page-admin input{min-height:52px;background:#f1f1f1}
.auth-card input:focus,#page-admin input:focus{box-shadow:inset 0 0 0 2px #000}
.auth-card select:focus{box-shadow:inset 0 0 0 2px #000}
.auth-keep input,.consent-check input{accent-color:#000}
.auth-notice{border:0}
.auth-card .btn.primary,#page-admin .btn.primary{background:#000;border-color:#000}
.dash-head h1{color:#111;font-size:40px;letter-spacing:-.05em}
.admin-table th{background:#000;color:#fff}

@media(max-width:900px){
  .page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero{min-height:52svh;padding-top:calc(var(--header-h) + 84px)}
  #page-bylaws .layout{grid-template-columns:1fr;gap:36px;padding-top:54px}
  #page-bylaws .toc{position:relative;top:auto;display:flex;overflow-x:auto;border-radius:var(--r-card);white-space:nowrap}
  #page-bylaws .toc .t{display:none}
  #page-bylaws .toc a{min-width:max-content}
}
@media(max-width:640px){
  .page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero{min-height:56svh;padding-bottom:42px}
  .page:not(#page-home):not(#page-admin):not(#page-admin-dashboard)>.page-hero h1,#page-greetings .page-hero h1{font-size:58px}
  .news-tabs,#page-greetings .jump,#page-kna-program .prog-tabs,.dash-tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap}
  #page-greetings .greet{padding:96px 0}
  #page-bylaws .doc-cover,#page-bylaws .chapter{padding:36px 22px}
  #page-kna-program .prog-facts{padding-top:72px}
  #page-kna-program .prog-fact b{font-size:42px}
}

/* ============ Layout V2 — 기존 섹션 순서가 아니라 새 편집 구조 ============ */
/* KNA 과정: 숫자 띠 → 가로 카드 필름 → 검정 여정 → 좌측 인덱스/우측 본문 브라우저 */
#page-kna-program .page-hero{min-height:86svh!important;align-items:center;padding-bottom:110px}
#page-kna-program .page-hero::before{content:'24  24  24';font-size:clamp(150px,26vw,390px);top:22%;left:-4vw}
#page-kna-program .page-hero::after{content:'KNA PROGRAM';right:-4vw;bottom:.05em}
#page-kna-program .page-hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;align-items:end;gap:80px}
#page-kna-program .page-hero h1{font-size:clamp(72px,11vw,154px)}
#page-kna-program .prog-status{justify-self:end;margin:0 0 12px;background:#fff}
#page-kna-program .prog-facts{
  max-width:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#000;color:#fff}
#page-kna-program .prog-fact{min-height:280px;padding:48px clamp(24px,4vw,64px);display:flex;flex-direction:column;justify-content:space-between}
#page-kna-program .prog-fact:nth-child(even){background:#151515}
#page-kna-program .prog-fact b{color:#fff;font-size:clamp(54px,7vw,104px)}
#page-kna-program .prog-fact span{max-width:16ch;color:#aaa;font-size:14px}
#page-kna-program .prog-story{max-width:none;padding:160px 0;background:#f2f2f2;overflow:hidden}
#page-kna-program .prog-story>.section-head{max-width:var(--maxw);margin:0 auto 72px;padding:0 var(--gutter)}
#page-kna-program .prog-benefits{display:flex;gap:18px;overflow-x:auto;padding:0 max(var(--gutter),calc((100vw - var(--maxw))/2 + var(--gutter))) 22px;scroll-snap-type:x mandatory}
#page-kna-program .prog-benefit{flex:0 0 min(72vw,560px);min-height:460px;padding:42px!important;background:#fff;display:flex;flex-direction:column;justify-content:space-between;scroll-snap-align:start}
#page-kna-program .prog-benefit .num{font-size:14px}
#page-kna-program .prog-benefit h3{font-size:clamp(32px,4vw,54px);line-height:1.05;max-width:8ch}
#page-kna-program .prog-benefit p{max-width:34ch;font-size:15px}
/* 네 가지 경험 카드의 사진 띠. 색과 활자는 그대로 두고 사진만 얹는다.
   좌우 -42px 은 카드 padding(위 42px!important)을 되물려 사진만 카드 끝까지 채우기 위한 값이다
   — padding 을 고치면 이 값도 같이 고쳐야 한다. 넘치는 부분은 카드의 overflow:hidden 이 자른다.
   흑백에서 컬러로 도는 hover 는 기업 로고 띠·명사 카드와 같은 어법을 쓴다. */
#page-kna-program .benefit-media{
  margin:26px -42px 30px;height:190px;overflow:hidden;background:#e8e8e8;flex:0 0 auto}
#page-kna-program .benefit-media img{
  display:block;width:100%;height:100%;object-fit:cover;
  filter:grayscale(1);transform:scale(1.02);
  transition:filter .45s ease,transform .55s cubic-bezier(.2,.7,.2,1)}
#page-kna-program .prog-benefit:hover .benefit-media img{filter:grayscale(0);transform:scale(1.06)}
#page-kna-program .prog-journey{min-height:85svh;display:flex;align-items:center;padding:150px var(--gutter)}
#page-kna-program .journey-grid{grid-template-columns:repeat(4,1fr);gap:1px;background:#333}
#page-kna-program .journey-step{min-height:330px;padding:32px;background:#000;display:flex;flex-direction:column;justify-content:space-between}
#page-kna-program .curriculum-section{margin:0;padding:150px 0;background:#fff}
#page-kna-program .curriculum-browser{display:grid;grid-template-columns:260px minmax(0,1fr);gap:80px;align-items:start}
#page-kna-program .prog-tabbar{position:sticky;top:100px;margin:0}
#page-kna-program .prog-tabs{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;background:transparent;border-radius:0}
#page-kna-program .prog-tab{position:relative;width:100%;padding:18px 0;border-radius:0;text-align:left;color:#777;font-size:16px}
#page-kna-program .prog-tab::before{content:attr(data-tab);display:block;margin-bottom:5px;color:#aaa;font-size:10px;text-transform:uppercase;letter-spacing:.12em}
#page-kna-program .prog-tab.active{padding-left:22px;background:#000;color:#fff!important}
#page-kna-program .prog-panel{min-width:0}
#page-kna-program .phase-title{font-size:clamp(28px,3.4vw,44px);padding:34px 70px 34px 0}
#page-kna-program .sched-table td{padding:20px 18px}
#page-kna-program .prog-final-cta{max-width:none;margin:0;padding:120px max(var(--gutter),calc((100vw - var(--maxw))/2 + var(--gutter)))}

/* 인사말: 상단 탭을 없애고 좌측 세로 인덱스 + 우측 장면 교체로 재배치 */
#page-greetings{background:#f2f2f2}
#page-greetings .page-hero{min-height:48svh}
#page-greetings .page-hero::before{content:'VOICES  VOICES';top:34%}
#page-greetings .jump{position:sticky;top:88px;z-index:12;display:block;width:100%;max-width:none;margin:0;background:#f2f2f2;border-radius:0;padding:0}
#page-greetings .jump .wrap{display:grid;grid-template-columns:repeat(3,1fr);max-width:none;padding:0}
#page-greetings .jump button{border-radius:0;padding:24px clamp(18px,4vw,56px);text-align:left;background:#f2f2f2;color:#666}
#page-greetings .jump button::before{display:block;margin-bottom:9px;color:#999;font-size:11px;letter-spacing:.12em}
#page-greetings .jump button:nth-child(1)::before{content:'01'}
#page-greetings .jump button:nth-child(2)::before{content:'02'}
#page-greetings .jump button:nth-child(3)::before{content:'03'}
#page-greetings .jump button.active{background:#000;color:#fff!important}
#page-greetings .greet{min-height:82svh;padding:0;background:#fff}
#page-greetings .greet-inner{max-width:none;padding:0;display:grid;grid-template-columns:50vw 1fr;gap:0;align-items:stretch}
#page-greetings .photo-col{min-height:82svh}
#page-greetings .photo{height:100%;min-height:82svh}
#page-greetings .photo img{width:100%;height:100%;object-fit:cover}
#page-greetings .copy-col{padding:clamp(60px,8vw,130px);display:flex;flex-direction:column;justify-content:center}
#page-greetings .greet.reverse .photo-col{order:0}
#page-greetings .greet.reverse .copy-col{order:1}

/* 소식: 대표/보조 2열 대신 한 줄짜리 가로 에디토리얼 필름 */
#page-news .page-hero::before{content:'NEWS  NEWS  NEWS'}
#page-news>.section{padding:140px 0;overflow:hidden}
#page-news .editorial-head{align-items:flex-start}
#page-news .news-editorial{display:flex;gap:20px;overflow-x:auto;padding-bottom:24px;scroll-snap-type:x mandatory}
#page-news .news-feature,#page-news .news-card{display:block;flex:0 0 min(68vw,650px);scroll-snap-align:start}
#page-news .news-feature .news-media,#page-news .news-card .news-media{aspect-ratio:16/10}
#page-news .news-list{display:contents}
#page-news .news-card h3{font-size:clamp(24px,3vw,36px);margin-top:18px}

/* 장학회: 동일한 세로 섹션 반복을 번호가 붙은 좌우 교차 장면으로 변경 */
#page-scholarship .page-hero::before{content:'GIVE  GIVE  GIVE'}
#page-scholarship>.section>.wrap{display:grid;grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr);gap:clamp(50px,9vw,150px);align-items:start}
#page-scholarship>.section:nth-of-type(odd)>.wrap>*:first-child{grid-column:2}
#page-scholarship>.section:nth-of-type(odd)>.wrap>*:not(:first-child){grid-column:1;grid-row:1}
#page-scholarship .section-head{position:sticky;top:110px;margin:0}
#page-scholarship .section-head h2{font-size:clamp(42px,5vw,70px)}
#page-scholarship .fund-band>.wrap{display:block}

/* 교우마당: 카드 격자를 데스크톱에서도 가로 필름으로 바꾼다. */
#page-lounge .page-hero::before{content:'ALUMNI  ALUMNI'}
#page-lounge .class-grid,#page-lounge .comm-grid{display:flex;gap:18px;overflow-x:auto;padding-bottom:22px;scroll-snap-type:x mandatory}
#page-lounge .class-card{flex:0 0 min(70vw,520px);scroll-snap-align:start}
#page-lounge .comm-card{flex:0 0 min(46vw,360px);grid-column:auto!important;aspect-ratio:4/5!important;scroll-snap-align:start}
#page-lounge .network-inner{grid-template-columns:.7fr 1.3fr;gap:clamp(60px,9vw,140px)}

@media(max-width:820px){
  #page-kna-program .page-hero .wrap{grid-template-columns:1fr;gap:24px}
  #page-kna-program .prog-status{justify-self:start}
  #page-kna-program .prog-facts{grid-template-columns:1fr 1fr}
  #page-kna-program .prog-fact{min-height:210px}
  #page-kna-program .curriculum-browser{grid-template-columns:1fr;gap:38px}
  #page-kna-program .prog-tabbar{position:static;overflow-x:auto}
  #page-kna-program .prog-tabs{flex-direction:row;width:max-content}
  #page-kna-program .prog-tab{width:auto;min-width:150px;padding:15px 18px}
  #page-kna-program .prog-tab.active{padding-left:18px}
  #page-greetings .greet-inner{grid-template-columns:1fr}
  #page-greetings .photo-col,#page-greetings .photo{min-height:58svh;height:58svh}
  #page-greetings .copy-col{padding:70px var(--gutter)}
  #page-scholarship>.section>.wrap{grid-template-columns:1fr;gap:38px}
  #page-scholarship>.section:nth-of-type(odd)>.wrap>*{grid-column:1;grid-row:auto}
  #page-scholarship .section-head{position:static}
  #page-lounge .network-inner{grid-template-columns:1fr}
}
@media(max-width:560px){
  #page-kna-program .page-hero{min-height:72svh!important}
  #page-kna-program .prog-facts{grid-template-columns:1fr}
  #page-kna-program .prog-fact{min-height:180px}
  #page-kna-program .prog-story{padding:100px 0}
  #page-kna-program .prog-benefit{flex-basis:86vw;min-height:410px}
  #page-kna-program .benefit-media{margin:20px -42px 24px;height:150px}
  #page-kna-program .journey-grid{grid-template-columns:1fr}
  #page-greetings .jump button{padding:18px 14px;font-size:11px}
  #page-greetings .jump button::before{margin-bottom:5px}
  #page-news .news-feature,#page-news .news-card{flex-basis:84vw}
  #page-lounge .class-card,#page-lounge .comm-card{flex-basis:84vw}
}

/* ============ Stability layer ============
   레이아웃 안전 규칙. 큰 글자는 컨테이너를 넘지 않고 모든 페이지는 같은 타이포 척도를 쓴다. */
/* overflow-x 는 hidden 이 아니라 clip 이다. hidden 은 overflow-y 를 auto 로 밀어 올려
   body 를 스크롤 컨테이너로 만들고 그러면 **position:sticky 가 통째로 죽는다** —
   실제로 넓은 화면에서 헤더도 인사말 탭바도 회칙 목차도 붙지 않고 그냥 흘러갔다.
   좁은 화면(760px 이하)은 이미 clip 이라 거기서만 sticky 가 살아 있었다.
   clip 은 같은 것을 자르되 스크롤 컨테이너를 만들지 않는다. hidden 으로 되돌리지 않는다. */
html,body{overflow-x:clip}
h1,h2,h3,h4,p,li{word-break:keep-all;overflow-wrap:break-word}
.page{max-width:100%;overflow:visible}
.page.active{transform:none!important}
.page>.section,.page>.page-hero{max-width:100%;overflow-x:clip}
.popup-backdrop,.modal-overlay,.modal-backdrop{position:fixed!important;inset:0!important}
.section-head h2{font-size:clamp(34px,4.6vw,64px);line-height:1.08;max-width:14ch}
.nav-dd-menu a::after,.related-menu a::after{display:none!important}
.nav-dd-menu a:hover,.nav-dd-menu a.active{background:var(--paper-2);color:var(--accent)}
.nav-dd-menu a.active{font-weight:700}

/* 인사말 — 사진과 본문이 서로의 영역을 침범하지 않는 고정 2열 */
#page-greetings .jump{position:relative;top:auto;width:100%;overflow:visible}
#page-greetings .jump .wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:24px var(--gutter);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#page-greetings .jump button{width:100%;min-width:0;padding:16px 18px;border-radius:0;text-align:left;white-space:normal}
#page-greetings .greet{min-height:0;padding:96px 0}
#page-greetings .greet-inner,#page-greetings .greet.reverse .greet-inner{
  width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);
  display:grid;grid-template-columns:minmax(260px,380px) minmax(0,1fr);gap:clamp(48px,7vw,96px);align-items:start}
#page-greetings .photo-col{position:sticky;top:110px;min-height:0;width:100%;order:0!important}
#page-greetings .photo{width:100%;height:auto;min-height:0;aspect-ratio:4/5;margin:0;overflow:hidden}
#page-greetings .photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 20%}
#page-greetings .body-col{min-width:0;padding:0;order:1!important}
#page-greetings .greet-title{font-size:clamp(30px,3.6vw,48px);line-height:1.24;max-width:15ch}
#page-greetings .greet-text p{font-size:16px;line-height:1.9}

/* 장학회 — 모든 섹션을 안정적인 제목/내용 2열로 통일하고 교차 배치 규칙은 제거 */
#page-scholarship>.section{overflow:hidden;padding:110px 0}
#page-scholarship>.section>.wrap{
  width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);
  display:grid;grid-template-columns:minmax(220px,.62fr) minmax(0,1.38fr);gap:clamp(48px,8vw,110px);align-items:start}
#page-scholarship>.section>.wrap>*{grid-column:auto!important;grid-row:auto!important;min-width:0}
#page-scholarship .section-head{position:static;margin:0}
#page-scholarship .section-head h2{font-size:clamp(36px,4.2vw,58px);line-height:1.08;max-width:8ch}
#page-scholarship .fund-grid,#page-scholarship .cta-grid{min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
#page-scholarship .fund-card,#page-scholarship .cta-card{min-width:0;padding:28px 24px}
#page-scholarship .fund-card .n{font-size:clamp(28px,3vw,42px);line-height:1.1}
#page-scholarship .fund-note{grid-column:2}
#page-scholarship .cta-card p{font-size:14px;line-height:1.75}
#page-scholarship .cta-card .btn{color:var(--accent);border-color:var(--accent)}
#page-scholarship .cta-card .btn:hover{background:var(--accent);color:#fff}

/* KNA 과정 — 큰 숫자와 카드 안 글자가 겹치지 않도록 명시적 타이포 한계 설정 */
#page-kna-program .page-hero h1{font-size:clamp(62px,9vw,128px);line-height:.94}
#page-kna-program .prog-fact b{font-size:clamp(48px,6vw,88px);line-height:1}
#page-kna-program .prog-benefit{overflow:hidden}
#page-kna-program .prog-benefit h3{font-size:clamp(30px,3.5vw,48px);line-height:1.08;max-width:10ch}
#page-kna-program .prog-benefit p{font-size:15px;line-height:1.75}
#page-kna-program .prog-final-cta h2{font-size:clamp(34px,4.5vw,62px);max-width:13ch}

/* 공통 컨트롤은 모두 단일 포인트 토큰을 사용한다. */
.btn.primary,.news-tab.active,#page-greetings .jump button.active,#page-kna-program .prog-tab.active,.dash-tab.active{background:var(--accent);border-color:var(--accent);color:#fff!important}
input:focus,select:focus,textarea:focus{outline:none!important;box-shadow:inset 0 0 0 2px var(--accent)!important}
input[type="checkbox"],input[type="radio"]{accent-color:var(--accent)!important}

@media(max-width:980px){
  #page-scholarship .fund-grid,#page-scholarship .cta-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  #page-greetings .jump .wrap{padding:14px var(--gutter);gap:4px}
  #page-greetings .jump button{padding:13px 10px;font-size:12px}
  #page-greetings .greet{padding:72px 0}
  #page-greetings .greet-inner,#page-greetings .greet.reverse .greet-inner{grid-template-columns:1fr;gap:38px}
  #page-greetings .photo-col{position:static;max-width:360px}
  #page-greetings .body-col{padding:0}
  #page-scholarship>.section{padding:82px 0}
  #page-scholarship>.section>.wrap{grid-template-columns:1fr;gap:36px}
  #page-scholarship .section-head h2{max-width:12ch}
  #page-scholarship .fund-note{grid-column:1}
}

/* ===== 입학 안내 모집바 — 아래에서 올라오는 알약 =====
   헤더에 붙은 띠가 아니라 화면 아래에 떠 있는 판이다. 본문이 그 밑으로 흐른다.
   그림자를 쓰는 자리는 「떠 있는 판」 뿐이라는 규칙에 이 판이 들어간다 — 드롭다운·모달과 같은 부류다.
   면은 차콜이다. 지원 패널이 크림슨이라 알약까지 크림슨이면 두 판이 겹쳐 무거워진다 —
   크림슨은 알약 안의 D-day 칩과 지원 단추 둘만 든다.
   바깥 그릇은 클릭을 통과시킨다(pointer-events:none). 안 그러면 화면을 가로지르는 투명한 띠가
   본문 위에 깔려 그 줄의 글자를 못 고른다.
   #page-admission 의 첫 섹션을 가리키던 :first-child 규칙 일곱을 :first-of-type 으로 옮겼다.
   이 판이 페이지의 첫 자식이 되므로 그대로 두면 상단 여백이 통째로 풀린다. */
.adm-bar{
  position:fixed;left:0;right:0;bottom:calc(22px + env(safe-area-inset-bottom));z-index:95;
  display:flex;justify-content:center;padding:0 16px;pointer-events:none}
/* display:flex 가 브라우저 기본 [hidden] 을 이긴다 — 마감 뒤 숨기려면 여기서 다시 끈다 */
.adm-bar[hidden]{display:none}
.adm-bar-inner{
  pointer-events:auto;display:flex;align-items:center;gap:14px;
  min-height:68px;padding:12px 12px 12px 28px;border-radius:var(--r-pill);color:#fff;
  background:rgba(28,31,38,.94);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 20px 44px -18px rgba(20,22,28,.72);
  transition:opacity .3s ease,transform .34s cubic-bezier(.22,.7,.2,1);
  /* fill-mode 를 주지 않는다. both 로 두면 끝난 애니메이션이 마지막 키프레임을 계속 붙들고
     있어서 .is-tucked 의 opacity 를 이긴다 — 판이 푸터 위에 그대로 남는다. */
  animation:admBarUp .5s cubic-bezier(.2,.7,.2,1)}
@keyframes admBarUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
/* 바닥에 닿으면 판이 발치로 내려간다 — 사무국 연락처를 제 손으로 가리지 않는다 */
.adm-bar.is-tucked .adm-bar-inner{opacity:0;transform:translateY(26px);pointer-events:none}
@media(prefers-reduced-motion:reduce){
  .adm-bar-inner{animation:none;transition:opacity .2s ease}
  .adm-bar.is-tucked .adm-bar-inner{transform:none}
}
.adm-bar-inner>b{font-size:16px;font-weight:600;letter-spacing:-.02em;white-space:nowrap}
.adm-bar-line{font-size:15px;color:rgba(255,255,255,.72);letter-spacing:-.02em;white-space:nowrap}
.adm-bar-line em{font-style:normal;font-weight:600;color:#fff}
.adm-bar-dday{padding:5px 11px;border-radius:var(--r-pill);background:var(--accent);font-size:12.5px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}
.adm-bar-tel{margin-left:4px;color:rgba(255,255,255,.7);font-size:14.5px;letter-spacing:-.01em;white-space:nowrap;transition:color .2s ease}
.adm-bar-tel:hover{color:#fff}
.adm-bar-cta{
  display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 24px;border-radius:var(--r-pill);
  background:var(--accent);color:#fff;font-size:15.5px;font-weight:600;letter-spacing:-.02em;white-space:nowrap;
  transition:background .2s ease}
.adm-bar-cta:hover{background:var(--crimson-deep)}
.adm-bar-cta b{font-weight:400;font-size:17px}
/* 판이 흐름에서 빠졌다 — 마지막 문단이 판 밑에 깔리지 않도록 화면 끝에 그만큼 자리를 둔다.
   마감이 지나 판이 사라지면 renderRecruit() 가 .has-adm-bar 를 떼고 그 자리도 함께 돌아간다. */
#page-admission.has-adm-bar{padding-bottom:96px}
@media(max-width:760px){
  /* 좁은 화면에서는 알약이 좌우로 늘어나고 기수·마감 문장·전화를 접는다 */
  .adm-bar{bottom:calc(14px + env(safe-area-inset-bottom));padding:0 14px}
  .adm-bar-inner{width:100%;min-height:58px;justify-content:space-between;gap:10px;padding:8px 8px 8px 20px}
  .adm-bar-line,.adm-bar-tel{display:none}
  .adm-bar-cta{height:42px;padding:0 18px;font-size:14px}
  #page-admission.has-adm-bar{padding-bottom:80px}
}

/* ===== 입학 안내 · 지원 중심의 첫 화면 ===== */
#page-admission{background:#fff}
#page-admission>section.section:first-of-type{padding-top:52px!important;padding-bottom:96px;background:#fff}
#page-admission .adm-overview{max-width:1180px}
.adm-hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:clamp(44px,6vw,88px);align-items:stretch}
.adm-hero-copy{padding:8px 0 0}
.adm-hero-copy>h2{max-width:680px;margin:0;color:var(--ink);font-size:clamp(36px,3.45vw,48px);font-weight:600;line-height:1.15;letter-spacing:-.03em}
.adm-lead{max-width:650px;margin:22px 0 0;color:#555;font-size:17px;font-weight:500;line-height:1.75;letter-spacing:-.02em}
.adm-qualifications{margin-top:34px;padding-top:26px;border-top:1px solid #e5e5e5}
.adm-qualifications h3{margin:0 0 13px;color:var(--ink);font-size:18px;font-weight:600;letter-spacing:-.03em}
#page-admission .adm-qualifications .adm-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px;padding:0;list-style:none;font-size:14px;line-height:1.55}
#page-admission .adm-qualifications .adm-list li{position:relative;margin:0;padding-left:15px;color:#444}
#page-admission .adm-qualifications .adm-list li::before{content:'';position:absolute;left:0;top:.63em;width:5px;height:5px;border-radius:var(--r-round);background:var(--accent)}
.adm-apply-panel{min-height:390px;padding:34px;display:flex;flex-direction:column;align-items:flex-start;border-radius:var(--r-card);background:var(--accent);color:#fff;box-shadow:none}
.adm-apply-panel>span{padding:6px 10px;border:1px solid rgba(255,255,255,.45);border-radius:var(--r-card);font-size:14px;font-weight:500;letter-spacing:-.03em}
.adm-apply-panel h3{margin:26px 0 14px;color:#fff;font-size:29px;font-weight:600;line-height:1.28;letter-spacing:-.03em}
.adm-apply-panel p{margin:0;color:rgba(255,255,255,.78);font-size:14px;line-height:1.7}
.adm-apply-primary{width:100%;min-height:68px;margin-top:auto;padding:0 22px;display:flex;align-items:center;justify-content:space-between;border-radius:var(--r-card);background:#fff;color:var(--accent)!important;font-size:16px;font-weight:600;letter-spacing:-.03em;transition:background .2s ease}
.adm-apply-primary:hover{background:#fff3f5}
.adm-apply-primary b{font-size:24px;font-weight:400}
.adm-apply-panel small{margin-top:15px;color:rgba(255,255,255,.78);font-size:14px}
.adm-apply-action{display:flex;align-items:flex-start;justify-content:flex-end;padding-top:8px}
.adm-apply-action .btn{min-height:48px;padding-inline:22px}
#page-admission .adm-overview>.adm-h{margin:56px 0 22px;font-size:24px;font-weight:600;letter-spacing:-.03em}
#page-admission .adm-process-title::after{content:'5단계';margin-left:12px;color:var(--accent);font-size:14px;font-weight:500;letter-spacing:-.03em;vertical-align:middle}
#page-admission .adm-steps{position:relative;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
#page-admission .adm-steps::before{display:none}
#page-admission .adm-steps li{min-height:170px;padding:22px 18px 20px;display:flex;flex-direction:column;align-items:flex-start;border:0;border-radius:var(--r-card);background:#f5f6f7;box-shadow:none;counter-increment:none;z-index:1}
#page-admission .adm-steps li::before{display:none}
#page-admission .adm-steps em{margin:0 0 8px;color:var(--accent);font-size:14px;font-style:normal;font-weight:600;letter-spacing:-.03em}
#page-admission .adm-steps b{margin:0 0 10px;color:var(--ink);font-size:18px;font-weight:600;line-height:1.3;letter-spacing:-.03em}
#page-admission .adm-steps li>span:last-child{color:#666;font-size:13px;font-weight:500;line-height:1.6}
#page-admission>section.section:not(:first-of-type) .section-head h2{font-weight:600;letter-spacing:-.03em}
#page-admission .adm-h{font-weight:600;letter-spacing:-.03em}
#page-admission .adm-list,#page-admission .adm-facts{font-weight:500}

@media(max-width:960px){
  .adm-hero-grid{grid-template-columns:1fr;gap:30px}
  .adm-apply-action{justify-content:flex-start;padding-top:0}
  #page-admission .adm-steps{grid-template-columns:repeat(3,1fr)}
  #page-admission .adm-steps::before{display:none}
}
@media(max-width:760px){
  #page-admission>section.section:first-of-type{padding-top:34px!important;padding-bottom:72px}
  .adm-hero-copy>h2{font-size:34px}
  .adm-lead{margin-top:18px;font-size:15px}
  #page-admission .adm-qualifications .adm-list{grid-template-columns:1fr;gap:9px}
  #page-admission .adm-overview>.adm-h{margin:44px 0 18px;font-size:22px}
  #page-admission .adm-steps{grid-template-columns:1fr;gap:10px}
  #page-admission .adm-steps li{min-height:0;padding:18px;display:grid;grid-template-columns:38px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center}
  #page-admission .adm-steps em{grid-column:1;margin:0;font-size:14px}
  #page-admission .adm-steps b{grid-column:2;margin:0;font-size:16px}
  #page-admission .adm-steps li>span:last-child{grid-column:1/3;margin-top:6px;font-size:12px}
}
@media(max-width:460px){
  #page-greetings .jump .wrap{grid-template-columns:1fr}
  #page-greetings .jump button::before{display:inline;margin:0 8px 0 0}
  #page-kna-program .prog-fact{min-height:150px}
}

/* 소식 아카이브 — 가로 스크롤 없이 글이 계속 쌓이는 세로형 구조 */
#page-news .news-editorial{display:block;overflow:visible;padding:0}
#page-news .news-feature{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:clamp(32px,5vw,72px);align-items:end;margin-bottom:72px}
#page-news .news-feature .news-media{aspect-ratio:16/10}
#page-news .news-feature-copy{padding:0 0 10px}
#page-news .news-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:54px 22px}
#page-news .news-card{display:block;min-width:0}
#page-news .news-card .news-media{width:100%;aspect-ratio:4/3;margin:0 0 18px}
#page-news .news-card h3{font-size:20px;line-height:1.4;margin:0}
#page-news .news-card .news-date{margin-top:12px}
#page-news .news-editorial.filtered .news-list{grid-template-columns:repeat(3,minmax(0,1fr))}

/* 헤더 — 하위 메뉴 여부를 화살표로 표시하지 않는다. 로그인도 단일 진입점이다. */
.caret{display:none!important}
.login-link{height:40px;padding:0 10px;display:flex;align-items:center;font-size:16px;font-weight:600;color:var(--ink);white-space:nowrap}
header.at-top.dark-top .login-link{color:#fff}
.login-link:hover{opacity:.65}

/* 로그인 — 교우/관리자를 한 카드 안에서 전환한다. */
#page-admin{display:none!important}

@media(max-width:900px){
  #page-news .news-list,#page-news .news-editorial.filtered .news-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
  #page-news .news-feature{grid-template-columns:1fr;gap:22px;margin-bottom:54px}
  #page-news .news-list,#page-news .news-editorial.filtered .news-list{grid-template-columns:1fr}
  #page-news .news-card{display:grid;grid-template-columns:116px minmax(0,1fr);column-gap:16px;align-items:start}
  #page-news .news-card .news-media{grid-row:1/5;aspect-ratio:1/1;margin:0}
  #page-news .news-card .news-kicker{margin-top:0}
}

/* ============ Button variants ============
   형태와 색상 역할을 분리한다.
   --solid 및 명시적인 --accent 조합만 포인트 색상을 사용한다. */
.btn{
  --btn-fg:var(--ink);--btn-bg:transparent;--btn-border:transparent;
  min-height:46px;padding:12px 22px;border:1px solid var(--btn-border);border-radius:var(--r-pill);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--btn-bg);color:var(--btn-fg);font:600 14px/1.2 var(--sans);
  cursor:pointer;white-space:nowrap;box-shadow:none;
  transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease}
.btn:hover{transform:translateY(-1px)}

/* 과거 섹션별 버튼 규칙보다 variant 토큰을 우선한다. */
.btn[class*="btn--"]{background:var(--btn-bg)!important;color:var(--btn-fg)!important;border-color:var(--btn-border)!important}

/* 1. 배경과 외곽선이 없는 고스트 */
.btn--ghost{--btn-fg:var(--ink);--btn-bg:transparent;--btn-border:transparent}
.btn--ghost:hover{--btn-bg:var(--paper-2)}
/* 2. 중립색 외곽선 둥근 버튼 */
.btn--outline{--btn-fg:var(--ink);--btn-bg:transparent;--btn-border:currentColor}
.btn--outline:hover{--btn-bg:var(--ink);--btn-fg:#fff}
/* 포인트색 외곽선이 필요한 경우에만 명시적으로 추가 */
.btn--outline.btn--accent{--btn-fg:var(--accent)}
.btn--outline.btn--accent:hover{--btn-bg:var(--accent);--btn-fg:#fff}
/* 3. 포인트 배경 둥근 버튼 */
.btn--solid{--btn-fg:#fff;--btn-bg:var(--accent);--btn-border:var(--accent)}
.btn--solid:hover{--btn-bg:color-mix(in srgb,var(--accent) 82%,#000);--btn-border:var(--btn-bg)}
/* 포인트 색상과 무관한 중립 배경 둥근 버튼 */
.btn--solid-neutral{--btn-fg:#fff;--btn-bg:var(--ink);--btn-border:var(--ink)}
.btn--inverse{--btn-fg:#fff;--btn-bg:transparent;--btn-border:rgba(255,255,255,.65)}
.btn--inverse:hover{--btn-fg:#000;--btn-bg:#fff;--btn-border:#fff}
.btn--brand{border-radius:var(--r-pill)}
.btn--brand.kakao{--btn-fg:#391b1b;--btn-bg:#fee500;--btn-border:#fee500}
.btn--brand.kakao:hover{--btn-bg:#f5d800;--btn-border:#f5d800}

/* 크기 유틸리티 */
.btn--block{width:100%}
.btn--sm{min-height:30px;padding:6px 11px;font-size:11.5px}

/* 기존 저장 데이터와 JS 렌더 문자열을 위한 호환 별칭 */
.btn.primary{--btn-fg:#fff;--btn-bg:var(--accent);--btn-border:var(--accent)}
.btn.ghost{--btn-fg:var(--ink);--btn-bg:transparent;--btn-border:currentColor}
.btn.on-dark{--btn-fg:#fff;--btn-bg:transparent;--btn-border:rgba(255,255,255,.65)}
.btn.block{width:100%}
.btn.sm{min-height:30px;padding:6px 11px;font-size:11.5px}

/* 카테고리·페이지 전환 버튼은 고스트만 사용한다. 각진 배경 채움 변형은 폐기했다. */
.news-tabs,#page-greetings .jump,#page-kna-program .prog-tabs,.dash-tabs{background:transparent;border-radius:0;padding:0;gap:24px}
.news-tab,#page-greetings .jump button,#page-kna-program .prog-tab,.dash-tab{
  position:relative;background:transparent!important;border:0!important;border-radius:0!important;
  padding:12px 0;color:var(--ink-soft)!important;box-shadow:none!important;transform:none!important}
.news-tab::after,#page-greetings .jump button::after,#page-kna-program .prog-tab::after,.dash-tab::after{
  content:'';position:absolute;left:0;right:0;bottom:3px;height:2px;background:var(--ink);
  transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.news-tab:hover,#page-greetings .jump button:hover,#page-kna-program .prog-tab:hover,.dash-tab:hover{color:var(--ink)!important}
.news-tab.active,#page-greetings .jump button.active,#page-kna-program .prog-tab.active,.dash-tab.active{
  background:transparent!important;color:var(--ink)!important;padding-left:0;box-shadow:none!important}
.news-tab.active::after,#page-greetings .jump button.active::after,#page-kna-program .prog-tab.active::after,.dash-tab.active::after{transform:scaleX(1)}
#page-greetings .jump .wrap{gap:32px}
#page-greetings .jump button{width:auto;text-align:left}

/* 어두운 섹션의 전경색은 포인트 토큰과 분리한다. */
#page-kna-program .prog-journey h2,
#page-kna-program .prog-journey .journey-step h3{color:#fff!important}
#page-kna-program .prog-journey .journey-step span{color:#aaa!important}

/* ============ Typography hierarchy ============
   화면별 임의 크기 대신 역할별 스케일을 사용한다: Hero > Section > Content > Body > Meta. */
:root{
  --type-hero:clamp(58px,7.4vw,112px);
  --type-section:clamp(38px,4.5vw,64px);
  --type-content:clamp(28px,3vw,44px);
  --type-card:clamp(20px,2vw,28px);
  --type-body:clamp(16px,1.15vw,18px);
  --type-meta:13px;
}
.hero-title{font-size:var(--type-hero)!important;line-height:1.02!important;letter-spacing:-.065em!important}
.page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard)>.page-hero h1,
#page-greetings .page-hero h1,
#page-kna-program .page-hero h1{
  max-width:13ch;font-size:var(--type-hero)!important;line-height:1.02!important;letter-spacing:-.06em!important}
.section-head h2,
#page-orgchart .section-head h2,
#page-scholarship .section-head h2,
#page-kna-program .curriculum-intro h2,
#page-kna-program .prog-journey h2,
#page-kna-program .prog-final-cta h2{
  font-size:var(--type-section)!important;line-height:1.14!important;letter-spacing:-.045em!important}
.section-head p{font-size:var(--type-body);line-height:1.75}

/* 인사말은 작은 캡션까지 읽을 수 있는 최소 크기를 보장한다. */
#page-greetings .greet-title{font-size:var(--type-content)!important;line-height:1.18!important;letter-spacing:-.04em}
#page-greetings .greet-text p{font-size:var(--type-body)!important;line-height:1.85}
#page-greetings .status,#page-greetings .pc-role{font-size:var(--type-meta)!important;line-height:1.5}
#page-greetings .photo .placeholder{font-size:16px;line-height:1.65}
#page-greetings .photo .placeholder small{font-size:13px;line-height:1.55}
#page-greetings .greet-text .sign{font-size:14px;line-height:1.65}
#page-greetings .greet-text .sign b{font-size:18px}
#page-greetings .confirm-note{font-size:14px;line-height:1.7}
#page-greetings .jump button{font-size:14px!important;line-height:1.35}

/* ============ Viewport-safe modals ============
   모달 자체 높이는 화면을 넘지 않고, 콘텐츠만 내부에서 스크롤된다. */
.popup-backdrop,.modal-overlay,.modal-backdrop{
  overflow-y:auto!important;align-items:flex-start!important;padding:clamp(16px,4vh,40px)!important}
body:has(.popup-backdrop.show) > header,
body:has(.modal-overlay.open) > header,
body:has(.modal-backdrop.open) > header{
  opacity:.12!important;filter:grayscale(1) brightness(.4);pointer-events:none}
.popup-card,.modal-box,.modal-box.wide,.modal{
  width:min(100%,760px);max-height:calc(100dvh - clamp(32px,8vh,80px))!important;
  margin:auto!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
.modal-box{width:min(100%,520px)}
.modal-box.wide{width:min(100%,760px)}
.modal{width:min(100%,560px)}
.popup-close,.modal-close,.modal .close{
  position:sticky!important;top:0!important;right:0!important;z-index:4;float:right;
  margin:-38px -38px 4px 16px!important;flex:none}

@media(max-width:640px){
  :root{--type-hero:clamp(48px,14vw,68px);--type-section:clamp(34px,10vw,48px);--type-content:clamp(27px,8vw,38px)}
  .popup-backdrop,.modal-overlay,.modal-backdrop{align-items:flex-end!important;padding:0!important}
  .popup-card,.modal-box,.modal-box.wide,.modal{
    max-height:92dvh!important;margin:auto 0 0!important;scrollbar-gutter:auto}
  .popup-close,.modal-close,.modal .close{margin:-34px -8px 4px 12px!important}
  #page-greetings .jump button{font-size:13px!important}
}

@media(max-width:680px){
  .news-tabs,#page-greetings .jump,#page-kna-program .prog-tabs,.dash-tabs{gap:18px}
  #page-greetings .jump .wrap{display:flex;gap:20px;overflow-x:auto}
  #page-greetings .jump button{min-width:max-content}
}

/* ============ Home editorial flow — annotation pass ============ */
/* 기업 마퀴는 홈의 모든 본문을 읽은 뒤 만나는 마지막 섹션으로 배치한다. */
#page-home.active{display:flex;flex-direction:column}
#page-home .brand-band{order:100}

/* 히어로 하단은 행동 버튼만 남긴다. 슬라이드 상태 표시는 장면 전환만으로 전달한다. */
#page-home .hero-actions::before{content:none!important;display:none!important}
#page-home .hero-dots{display:none!important}
#page-home .hero-actions{gap:12px;justify-content:flex-start}

/* 각 섹션의 전체보기는 제목 바로 아래에 놓는 텍스트형 고스트 링크로 통일한다. */
#page-home .head-view-link{
  width:max-content;min-height:auto;margin-top:22px;padding:7px 0;border:0!important;
  border-radius:0;font-size:15px;justify-content:flex-start}
#page-home .head-view-link:hover{background:transparent!important;transform:translateX(4px)}
#page-home .program-band .head-view-link{color:#fff!important}

#page-home .brand-band{padding:82px 0 66px}
#page-home .brand-heading{margin-bottom:46px}
#page-home .brand-heading .section-head{margin:0}
#page-home .brand-heading h2{color:#fff;font-size:var(--type-content)!important}

/* 강사진은 이름 조각의 나열 대신, 번호와 구분선을 가진 편집형 디렉터리로 읽힌다. */
#page-home .scholar-line{
  counter-reset:scholar;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0!important;margin:0;padding:0;border-top:1px solid #111}
#page-home .scholar-line li{
  counter-increment:scholar;display:grid;grid-template-columns:44px minmax(100px,.65fr) minmax(0,1.35fr);
  align-items:center;gap:18px;padding:22px 0;border-bottom:1px solid #d6d6d6}
#page-home .scholar-line li:nth-child(odd){padding-right:34px;border-right:1px solid #d6d6d6}
#page-home .scholar-line li:nth-child(even){padding-left:34px}
#page-home .scholar-line li::before{
  content:counter(scholar,decimal-leading-zero);font-size:12px;letter-spacing:.08em;color:#888}
#page-home .scholar-line b{font-size:20px;line-height:1.3}
#page-home .scholar-line i{font-size:14px;line-height:1.55}

/* 홈 소식은 가로 카드가 아니라 스캔하기 쉬운 세로형 목록이다. */
#page-home .news-editorial{display:block}
#page-home .news-home-list{border-top:1px solid #111}
#page-home .news-home-row{
  display:grid;grid-template-columns:44px 156px minmax(0,1fr) 90px;gap:24px;align-items:center;
  padding:22px 0;border-bottom:1px solid #cfcfcf;cursor:pointer}
#page-home .news-home-index{font-size:12px;letter-spacing:.08em;color:#888}
#page-home .news-home-media{aspect-ratio:16/10;overflow:hidden;background:#ddd}
#page-home .news-home-media img{width:100%;height:100%;object-fit:cover;filter:grayscale(.25);transition:.45s ease}
#page-home .news-home-row:hover img{filter:grayscale(0);transform:scale(1.035)}
#page-home .news-home-copy .news-kicker{margin:0 0 7px}
#page-home .news-home-copy h3{font-size:clamp(19px,2vw,25px);line-height:1.35;letter-spacing:-.035em}
#page-home .news-home-copy p{margin-top:7px;color:var(--ink-soft);font-size:14px;line-height:1.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#page-home .news-home-row .news-date{margin:0;text-align:right;align-self:start;padding-top:4px}

/* 마지막 CTA는 카피와 두 개의 선택지를 한 줄의 2열 구조로 묶는다. */
#page-home #recruit .wrap{
  width:100%;max-width:none;padding-inline:clamp(28px,5.94vw,68px);
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);
  gap:clamp(42px,7vw,110px);align-items:end}
#page-home #recruit .section-head{margin:0}
#page-home #recruit .cta-duo{width:100%;max-width:none;margin:0;grid-template-columns:1fr 1fr}

@media(max-width:820px){
  #page-home .scholar-line{grid-template-columns:1fr}
  #page-home .scholar-line li:nth-child(n){padding:20px 0;border-right:0}
  #page-home .news-home-row{grid-template-columns:36px 112px minmax(0,1fr);gap:16px}
  #page-home .news-home-row .news-date{grid-column:3;text-align:left;padding:0}
  #page-home .news-home-copy p{display:none}
  #page-home #recruit .wrap{grid-template-columns:1fr;align-items:start}
  #page-home #recruit .cta-duo{max-width:560px}
}
@media(max-width:520px){
  #page-home .news-home-row{grid-template-columns:32px 86px minmax(0,1fr);gap:12px}
  #page-home .news-home-copy h3{font-size:17px}
  #page-home #recruit .cta-duo{grid-template-columns:1fr 1fr;gap:8px}
  #page-home #recruit .cta-duo .btn{padding:14px 10px;font-size:13px}
}

/* ============ Geometric framed home hero ============
   영상은 밝은 캔버스 위의 큰 라운드 프레임 안에만 두고 액션 패널은 하단 경계에 걸친다. */
#page-home .hero{
  /* 버튼은 컷아웃의 끝이 아니라 곡선 시작점까지만 늘어나며 안전 여백을 남긴다. */
  --hero-action-w:clamp(180px,calc(16.4vw - 27px),320px);--hero-notch-r:28px;
  height:100svh;min-height:680px;background:#fff;
  isolation:isolate;overflow:hidden}
#page-home .hero::before{
  content:none;display:none}
#page-home .hero::after{
  content:none;display:none}
#page-home .hero-stage{
  display:block;z-index:1;
  inset:72px clamp(8px,1vw,16px) 32px;
  border-radius:0;overflow:hidden;background:#151515;
  /* file://에서도 Chrome이 차단하지 않도록 프레임 마스크를 문서 안에 포함한다. */
  -webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201206%20700%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M0%2032C0%2014.3269%2014.3269%200%2032%200H1174C1191.67%200%201206%2014.3269%201206%2032V668C1206%20685.673%201191.67%20700%201174%20700H240C222.327%20700%20208%20685.673%20208%20668C208%20650.327%20193.673%20636%20176%20636H32C14.3269%20636%200%20621.673%200%20604V32Z%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201206%20700%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M0%2032C0%2014.3269%2014.3269%200%2032%200H1174C1191.67%200%201206%2014.3269%201206%2032V668C1206%20685.673%201191.67%20700%201174%20700H240C222.327%20700%20208%20685.673%20208%20668C208%20650.327%20193.673%20636%20176%20636H32C14.3269%20636%200%20621.673%200%20604V32Z%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E") center/100% 100% no-repeat}
#page-home .hero-stage::after{
  content:none;display:none}
#page-home .hero-video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;
  display:block;background:#151515}
#page-home .hero-slide img{filter:none;transform:scale(1.015)}
#page-home .hero-slide.is-on img{animation:heroBlankZoom 9s ease-out both}
@keyframes heroBlankZoom{from{transform:scale(1.08)}to{transform:scale(1.015)}}
#page-home .hero-scrim{
  z-index:2;background:linear-gradient(90deg,rgba(0,0,0,.42) 0%,rgba(0,0,0,.12) 52%,rgba(0,0,0,.06) 100%)}
#page-home .hero-scrim::after{
  content:none;display:none}
#page-home .hero-body{
  display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;
  max-width:none;padding:calc(var(--header-h) + 48px) clamp(46px,5.5vw,86px) 150px;
  gap:30px;text-align:left;color:#fff}
#page-home .hero-copy{
  display:block;position:absolute;left:clamp(46px,5.5vw,86px);right:clamp(46px,5.5vw,86px);
  bottom:150px}
#page-home .hero-copy::before,#page-home .hero-copy::after{content:none;display:none}
#page-home .hero-title{
  max-width:none!important;margin:0;color:#fff;font-size:clamp(52px,6vw,88px)!important;
  line-height:.88!important;letter-spacing:-.065em!important;font-weight:700;text-shadow:0 2px 22px rgba(0,0,0,.18)}
#page-home .hero-sub{display:none}
#page-home .hero-actions{
  position:absolute;left:calc(clamp(8px,1vw,16px) + 7px);
  bottom:32px;
  display:block;width:var(--hero-action-w);margin:0;padding:0;background:transparent}
#page-home .hero-actions .btn{
  width:100%;min-height:48px;padding:10px 20px;border:0!important;border-radius:var(--r-pill)!important;
  justify-content:space-between;align-items:center;background:var(--accent)!important;color:#fff!important;
  font-size:16px;font-weight:400;backdrop-filter:none;position:relative}
#page-home .hero-actions .hero-action-icon{flex:0 0 auto;margin-left:20px;font-size:1.1em;line-height:1}
#page-home .hero-actions .btn::after{content:none;display:none}
#page-home .hero-actions .btn:hover{background:#fff!important;color:#000!important;transform:none}
#page-home .hero-actions .btn.btn--outline{
  background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}
#page-home .hero-actions .btn.btn--outline:hover{background:#fff!important;color:#000!important}

/* 태블릿·좁은 노트북: 프레임 높이는 유지하고 내부 요소만 너비에 맞춰 축소한다. */
@media (min-width:721px) and (max-width:1100px){
  #page-home .hero-stage{inset:72px 10px 20px}
  #page-home .hero-copy{
    left:clamp(32px,5vw,54px);right:clamp(32px,5vw,54px);bottom:150px}
  #page-home .hero-actions{left:17px;bottom:31px}
}

@media(max-width:720px){
  #page-home .hero{min-height:720px;height:100svh}
  #page-home .hero::after{display:none}
  #page-home .hero-stage{
    inset:72px 10px 92px;border-radius:var(--r-media);
    -webkit-mask:none;mask:none}
  #page-home .hero-body{padding:calc(var(--header-h) + 40px) 28px 132px;gap:24px}
  #page-home .hero-copy{left:28px;right:28px;bottom:124px}
  #page-home .hero-title{font-size:clamp(40px,11.5vw,58px)!important;line-height:1.02!important}
  #page-home .hero-actions{left:12px;right:12px;bottom:24px;width:auto}
  #page-home .hero-actions .btn{min-height:52px;padding:10px 20px;font-size:16px}
}

/* ============ Expandable alumni portrait deck ============ */
:root{
  --header-h:72px;
  /* ── 모서리 6단 ─────────────────────────────────────────────
     한때 화면에 열여덟 종이 떠 있었다. 6·7px 처럼 «눈으로 구별되지 않는» 차이가
     값으로만 존재했고 같은 셀렉터에 모서리를 두 번 적어 놓은 자리가 32곳이었다.
     새 값을 만들고 싶어지면 단을 늘리지 말고 그 자리가 여섯 중 어디인지 먼저 정한다. */
  --r-flat:0;        /* 헤더 안쪽 · 밑줄 탭 줄 · 화면 끝까지 닿는 면 */
  --r-field:8px;     /* 입력칸 · 셀렉트 · 텍스트영역 */
  --r-card:12px;     /* 카드 · 명부 항목 · 패널 · 표 행 */
  --r-media:18px;    /* 사진 · 히어로 무대 · 모달 · 팝업 — 큰 면 */
  --r-pill:999px;    /* 단추 · 칩 · 상태 배지 · 조직도 노드 — 조작하는 것 */
  --r-round:50%;     /* 아바타 · 닫기 단추 · 순번 원 */
  /* 옛 이름은 6단을 가리키게 두었다 — 남은 참조가 조용히 어긋나지 않게 한다 */
  --radius-ui:var(--r-media);--radius-button:var(--r-pill);
  --radius-modal:var(--r-media);--radius-field:var(--r-field);
  --profile-bg-1:#b9d9d0;--profile-bg-2:#b8cbe0;--profile-bg-3:#d8c8df;
  --profile-bg-4:#dfd0b8;--profile-bg-5:#c8d7b8;--profile-bg-6:#d8bfc2}
#page-home #notables .ppl{
  position:relative;display:block}
/* 가만히 둬도 흐르는 줄이다. 스냅과 CSS 부드러운 스크롤은 둘 다 끈다 —
   프레임마다 scrollLeft 를 고쳐 쓰는 쪽과 싸워서 카드가 덜컥거린다.
   overflow 를 auto 로 여는 이유는 휠·트랙패드·터치가 공짜로 따라오기 때문이다. */
#page-home #notables .ppl-viewport{
  overflow-x:auto;overflow-y:hidden;scroll-behavior:auto;scroll-snap-type:none;
  cursor:grab;touch-action:pan-x;overscroll-behavior-x:contain}
#page-home #notables .ppl-viewport.is-dragging{cursor:grabbing}
/* 끌 때 카드 이름이 파랗게 잡히지 않도록 — 드래그 중에만 끈다 */
#page-home #notables .ppl-viewport.is-dragging *{user-select:none;-webkit-user-select:none}
#page-home #notables .ppl-track{width:max-content;gap:10px;animation:none!important;transform:none!important}
#page-home #notables .ppl-card{
  position:relative;flex:0 0 clamp(220px,calc((100vw - 200px)/3),360px);height:auto;aspect-ratio:3/4;overflow:hidden;
  border-radius:var(--r-media);background:#ddd;box-shadow:none!important;z-index:1;
  transition:flex-basis .45s cubic-bezier(.2,.75,.2,1)}
#page-home #notables .ppl-card:hover,
#page-home #notables .ppl-card:focus-within{flex-basis:clamp(250px,31vw,390px);z-index:2}
#page-home #notables .ppl-photo{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;background:transparent}
#page-home #notables .ppl-photo img{
  width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:none!important;
  transform:scale(1);transform-origin:center bottom;box-shadow:none!important;
  transition:transform .45s cubic-bezier(.2,.75,.2,1)}
#page-home #notables .ppl-card:hover .ppl-photo img{transform:scale(1.025)}
#page-home #notables .ppl-card::after{
  content:'';position:absolute;inset:42% 0 0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.72))}
#page-home #notables .ppl-card::before{
  content:attr(data-year) ' 수료';position:absolute;top:20px;right:20px;z-index:3;
  padding:0;border:0;background:transparent;color:#fff;font-size:12px;font-weight:500;
  line-height:1;letter-spacing:.035em;white-space:nowrap}
#page-home #notables .ppl-card:nth-child(6n+1){background:var(--profile-bg-1)}
#page-home #notables .ppl-card:nth-child(6n+2){background:var(--profile-bg-2)}
#page-home #notables .ppl-card:nth-child(6n+3){background:var(--profile-bg-3)}
#page-home #notables .ppl-card:nth-child(6n+4){background:var(--profile-bg-4)}
#page-home #notables .ppl-card:nth-child(6n+5){background:var(--profile-bg-5)}
#page-home #notables .ppl-card:nth-child(6n+6){background:var(--profile-bg-6)}
#page-home #notables .ppl-name,#page-home #notables .ppl-role{
  position:absolute;left:22px;right:18px;z-index:2;color:#fff!important;text-shadow:0 1px 10px rgba(0,0,0,.22)}
#page-home #notables .ppl-name{bottom:53px;margin:0;font-size:24px;white-space:nowrap}
#page-home #notables .ppl-role{bottom:21px;margin:0;font-size:16px!important;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#page-home #notables .ppl-arrow{
  position:absolute;top:50%;z-index:5;width:52px;height:72px;border:0;border-radius:0;
  background:transparent;color:rgba(255,255,255,.9);font:300 52px/1 var(--sans);
  cursor:pointer;transform:translateY(-50%);transition:color .2s ease,transform .2s ease,opacity .2s ease}
#page-home #notables .ppl-arrow--prev{left:8px}
#page-home #notables .ppl-arrow--next{right:8px}
#page-home #notables .ppl-arrow:hover{background:transparent;color:#fff;transform:translateY(-50%) scale(1.08)}
#page-home #notables .ppl-arrow:disabled{opacity:.22;cursor:default;transform:translateY(-50%);background:transparent;color:#fff}

/* 버튼 반경은 카드·모달과 분리된 단일 토큰으로 관리한다. */
.btn{border-radius:var(--r-pill)!important}
#page-home .hero-actions{border-radius:var(--r-media);overflow:visible}
#page-home .hero-actions .btn{border-radius:var(--r-pill)!important}

/* 교육과정 섹션은 흰 배경과 검정 타이포로 차분하게 통일한다. */
#page-home .program-band .section-head h2{color:var(--ink)!important}
#page-home .program-band .head-view-link{color:var(--ink)!important}
#page-home .program-band .section-head .btn--ghost{font-weight:400!important}
#page-home .program-band{background:#fff!important;color:var(--ink)!important}
#page-home .program-band .program-toggle{color:var(--ink)!important}
#page-home .program-band .program-detail{color:var(--ink-soft)!important}
#page-home .program-band .program-toggle::after{color:var(--ink)!important}
#page-home .program-band .program-item.open .program-toggle::after{color:var(--accent)!important}
#page-home .program-band .program-item{border-bottom:1px solid #d8d8d8}
#page-home .program-band .program-item:first-child{border-top:1px solid #d8d8d8}

/* 게시판 이미지도 카드와 같은 반경 토큰을 쓴다. */
.news-media,#page-home .news-home-media{border-radius:var(--r-media)}

#page-home #news{background:#fff!important}
#page-home .brand-band{background:#fff!important;color:var(--ink)!important}
#page-home .brand-band .section-head h2{color:var(--ink)!important}
#page-home .brand-set img{filter:grayscale(1)!important;opacity:.62}
#page-home .brand-marquee::before{background:linear-gradient(90deg,#fff,transparent)!important}
#page-home .brand-marquee::after{background:linear-gradient(270deg,#fff,transparent)!important}

/* 두 줄 히어로 카피: 긴 한국어 문장이 겹치지 않는 안정적인 행간. */
#page-home .hero-title{
  width:min(400px,100%);max-width:400px!important;padding-top:52px;
  font-size:clamp(38px,min(4.5vw,8vh),72px)!important;
  line-height:1.12!important;letter-spacing:-.045em!important;font-weight:500!important;
  white-space:nowrap;text-wrap:nowrap}

#page-home #notables{background:#fff!important}
.popup-card{border-radius:var(--r-media)!important}

#page-home .brand-heading .section-head{max-width:none;margin-inline:auto;text-align:center}

/* 히어로와 주요 콘텐츠 사이의 선언적 카피 섹션. */
#page-home .hero-bridge{
  display:grid;place-items:center;min-height:44svh;padding:clamp(96px,12vw,180px) var(--gutter);
  background:#fff;text-align:center}
#page-home .hero-bridge .section-head{max-width:none;margin:0;text-align:center}
#page-home .hero-bridge .section-head h2{max-width:12ch;margin:0 auto;text-wrap:balance}

/* 여러 줄 디스플레이 타이포는 페이지·모달 전반에서 최소 1.14 행간을 유지한다. */
.section-head h2,
.page-hero h1,
.popup-title,
.modal-box h2,
.modal .name,
.auth-card h1,
#page-admin h1,
#page-kna-program .prog-benefit h3,
#page-kna-program .prog-final-cta h2,
#page-home .hero-title{line-height:1.14!important}

/* 마지막 두 섹션은 기업 로고 → 모집 CTA 순서로 닫는다. */
#page-home .brand-band{order:99}
#page-home #recruit{
  order:100;
  background:
    linear-gradient(90deg,rgba(0,0,0,.76) 0%,rgba(0,0,0,.56) 48%,rgba(0,0,0,.34) 100%),
    url('images/hero-3.jpg') center center/cover no-repeat!important;
  color:#fff}
#page-home #recruit p{color:rgba(255,255,255,.76)}

/* 커리큘럼 — 단계가 내려가는 프로세스 바와 강의 정보 카드 */
#page-home .program-layout{grid-template-columns:1fr;gap:64px}
#page-home .program-intro .section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px}
#page-home .curriculum-process{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
#page-home .curriculum-step{min-width:0}
#page-home .curriculum-step-visual{
  position:relative;height:292px;border-left:1px solid #e2e2e2;border-right:1px solid #f2f2f2;
  background:linear-gradient(180deg,#fff 0%,#fdfdfd 100%)}
#page-home .curriculum-bar{
  position:absolute;left:0;right:0;top:calc(var(--step-level) * 45px);margin:0;padding:16px 18px;
  min-height:56px;display:flex;align-items:center;background:#141414;color:#fff;
  font-size:16px;line-height:1.35;font-weight:600;letter-spacing:-.025em}
#page-home .curriculum-number{
  position:absolute;left:0;right:0;bottom:18px;text-align:center;color:#777;
  font-size:12px;letter-spacing:.08em}
#page-home .curriculum-card{
  min-height:226px;margin-top:12px;padding:24px 20px;border-radius:var(--r-media);background:#f2f2f2;color:var(--ink)}
#page-home .curriculum-card p{margin:0;color:#555;font-size:14px;line-height:1.55;letter-spacing:-.02em}
#page-home .curriculum-card .curriculum-date{margin-bottom:12px;color:var(--ink);font-size:13px;font-weight:700;letter-spacing:.06em}
#page-home .curriculum-card h4{margin:0 0 9px;font-size:18px;line-height:1.35;letter-spacing:-.035em}
#page-home .curriculum-card .curriculum-second{margin-top:18px;padding-top:15px;border-top:1px solid #d6d6d6;color:#333}
#page-home .curriculum-card strong{font-weight:700;color:var(--ink)}

@media(max-width:820px){
  #page-home .program-intro .section-head{display:block}
  #page-home .curriculum-process{grid-template-columns:1fr 1fr}
  #page-home .curriculum-step-visual{height:230px}
  #page-home .curriculum-bar{top:calc(var(--step-level) * 25px)}
}
@media(max-width:520px){
  #page-home .program-layout{gap:38px}
  #page-home .curriculum-process{grid-template-columns:1fr;gap:18px}
  #page-home .curriculum-step-visual{height:auto;min-height:104px}
  #page-home .curriculum-bar{position:relative;top:auto;min-height:58px}
  #page-home .curriculum-number{left:auto;right:18px;bottom:14px}
  #page-home .curriculum-card{min-height:0;margin-top:8px}
}

/* 과정과 교우 섹션은 같은 좌우 그리드 선을 공유한다. */
#page-home .program-layout{
  width:100%;max-width:none;padding-inline:clamp(28px,5.94vw,68px)}

/* 데스크톱 교우 목록: 섹션이 화면 중앙에 닿으면 고정되고 세로 진행량이 가로 이동이 된다. */
@media(min-width:761px){
  #page-home #notables{
    height:var(--notables-pin-height,auto)!important;min-height:0;padding:0!important;overflow:visible}
  #page-home #notables>.wrap{
    position:sticky;top:var(--notables-pin-top,12vh);height:auto;overflow:hidden}
  #page-home #notables .ppl-viewport{overflow-x:hidden;scroll-behavior:auto}
}

/* 최종 카드 폭 규칙: 하단의 기존 정사각 카드 보정보다 뒤에서 실제 전체 너비를 사용한다. */
#page-home #notables .ppl{
  --ppl-edge:clamp(16px,2vw,28px);
  width:100vw!important;max-width:none!important;
  margin-left:calc(-1 * clamp(28px,5.94vw,68px))!important}
#page-home #notables .ppl-track{padding-inline:var(--ppl-edge)!important}
@media(min-width:761px){
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:calc((100vw - (2 * var(--ppl-edge)) - 30px) / 4)!important;
    flex:0 0 var(--ppl-card-size)!important;width:var(--ppl-card-size)!important}
}
@media(max-width:760px){
  #page-home #notables .ppl{--ppl-edge:20px;margin-left:calc(-1 * var(--gutter))!important}
}

/* 소개 카피, 커리큘럼 아이브로우와 단계 모눈 배경 최종 보정 */
#page-home .about-copy h2{font-size:40px}
#page-home .curriculum-card .curriculum-date{
  font-size:10px;font-weight:500;line-height:1.3;letter-spacing:.06em}
#page-home .curriculum-step-visual{
  background-color:#fff;
  background-image:
    linear-gradient(rgba(17,17,17,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(17,17,17,.055) 1px,transparent 1px);
  background-size:24px 24px;background-position:-1px -1px}
@media(max-width:760px){
  #page-home .about-copy h2{font-size:clamp(22px,6.4vw,30px)}
}

/* 모집 CTA는 페이지 끝의 풀블리드 띠가 아니라 본문 여백 안의 독립 카드로 닫는다. */
#page-home #recruit{
  width:auto;margin-inline:clamp(28px,5.94vw,68px);margin-bottom:clamp(28px,5.94vw,68px);
  border-radius:var(--r-card);overflow:hidden}

/* 커리큘럼 카드의 제목·설명·2교시 행을 고정해 모든 구분선이 같은 높이에 선다. */
#page-home .curriculum-step{display:flex;flex-direction:column}
#page-home .curriculum-card{
  width:100%;height:264px;min-height:264px;padding:24px 20px;
  display:grid;grid-template-rows:28px 52px 68px minmax(0,1fr);align-items:start}
#page-home .curriculum-card .curriculum-date{margin:0}
#page-home .curriculum-card h4{margin:0;padding-top:4px}
#page-home .curriculum-card>p:not(.curriculum-date):not(.curriculum-second){margin:0;padding-top:4px}
#page-home .curriculum-card .curriculum-second{
  align-self:stretch;margin:0;padding-top:15px;border-top:1px solid #d6d6d6}
#page-home .curriculum-step.is-current .curriculum-card{transform:none}

@media(max-width:760px){
  #page-home #recruit{margin-inline:20px;margin-bottom:20px}
}

/* 커리큘럼 Pin: 네 단계가 스크롤 순서에 맞춰 포인트 컬러로 채워진다. */
#page-home .program-intro .section-head h2{font-size:36px!important;line-height:1.35!important}
#page-home .curriculum-bar,
#page-home .curriculum-card,
#page-home .curriculum-number{transition:background-color .32s ease,color .32s ease,border-color .32s ease,transform .32s ease}
#page-home .curriculum-step.is-pointed .curriculum-bar{background:var(--accent);color:#fff}
#page-home .curriculum-step.is-pointed .curriculum-number{color:var(--accent);font-weight:700}
#page-home .curriculum-step.is-pointed .curriculum-card{border-color:rgba(198,12,48,.34)}
#page-home .curriculum-step.is-current .curriculum-card{
  background:#f8e9ec;border-color:var(--accent);transform:translateY(-4px)}

@media(min-width:761px){
  #page-home #program{
    position:relative;height:var(--program-pin-height,auto)!important;min-height:0;padding:0!important;overflow:visible!important}
  #page-home #program>.program-layout{position:relative!important;top:auto!important;overflow:hidden}
  #page-home #program.is-pin-active>.program-layout{
    position:fixed!important;left:0;right:0;top:var(--program-pin-top,24px)!important;width:100%;z-index:19}
  #page-home #program.is-pin-complete>.program-layout{
    position:absolute!important;left:0;right:0;top:auto!important;bottom:0;width:100%}
}

@media(prefers-reduced-motion:reduce){
  #page-home .curriculum-step .curriculum-bar{background:var(--accent)}
  #page-home .curriculum-step .curriculum-number{color:var(--accent)}
  #page-home .curriculum-step .curriculum-card{border-color:rgba(198,12,48,.34)}
}

/* 교우 카드 트랙은 본문 여백 밖으로 확장한다. 양끝 안전 여백은 트랙 내부에서만 확보한다. */
#page-home #notables .ppl{
  --ppl-edge:clamp(16px,2vw,28px);
  width:100vw!important;max-width:none;margin-left:calc(-1 * clamp(28px,5.94vw,68px))}
#page-home #notables .ppl-track{padding-inline:var(--ppl-edge)}
@media(min-width:761px){
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:calc((100vw - (2 * var(--ppl-edge)) - 30px) / 4);
    flex-basis:var(--ppl-card-size)!important;width:var(--ppl-card-size)!important}
}
@media(max-width:760px){
  #page-home #notables .ppl{--ppl-edge:20px;margin-left:calc(-1 * var(--gutter))}
}

@media(max-width:720px){
  #page-home #notables .ppl{grid-template-columns:1fr;gap:16px}
  /* 폰에서도 같은 줄이 흐른다. 스냅을 켜두면 자동 이동을 매번 되잡아 당겨 멀미가 난다. */
  #page-home #notables .ppl-viewport{overflow-x:auto;scroll-snap-type:none}
  #page-home #notables .ppl-track{gap:12px}
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover{flex-basis:min(78vw,320px);height:auto;aspect-ratio:3/4;scroll-snap-align:none}
  #page-home #notables .ppl-arrow{display:none}
  #page-home .hero-title{font-size:clamp(26px,7.8vw,40px)!important;line-height:1.1!important}
  #page-home .hero-bridge{min-height:38svh;padding:88px 24px}
}

/* ============ 전 페이지 헤더·모달·액션 반경 통합 ============ */
header,
header.at-top,
header.at-top.dark-top,
header.is-floating{
  background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  box-shadow:none!important}
header .header-inner,
header.at-top .header-inner,
header.is-floating .header-inner{
  width:100%;max-width:none!important;height:72px!important;margin-top:0!important;
  background:transparent!important;border-radius:0!important;box-shadow:none!important}
header nav.primary>a,
header .nav-dd>button,
header .related-dd>button,
header .login-link,
header.at-top.dark-top nav.primary>a,
header.at-top.dark-top .nav-dd>button,
header.at-top.dark-top .related-dd>button{
  color:var(--accent)!important}
header .logo img.logo-light,
header.at-top.dark-top .logo img.logo-light{display:none!important}
header .logo img.logo-dark,
header.at-top.dark-top .logo img.logo-dark{
  display:block!important;height:42px!important;
  filter:brightness(0) saturate(100%) invert(10%) sepia(73%) saturate(3720%) hue-rotate(342deg) brightness(70%) contrast(112%)}
header .burger span,header.at-top.dark-top .burger span{background:var(--accent)!important}
header .logo{margin-right:0!important}
header nav.primary{
  flex:0 1 auto!important;
  margin-left:clamp(18px,2.5vw,42px)!important;margin-right:0!important;
  justify-content:flex-start!important}
header .header-right{margin-left:auto!important;justify-content:flex-end!important}

.popup-card,
.modal-box,
.modal-box.wide,
.modal{
  border-radius:var(--r-media)!important;overflow:auto}
.modal-box input,
.modal-box select,
.modal-box textarea,
.auth-field input,
.auth-field select{border-radius:var(--r-field)!important}
.popup-close,
.modal-close,
.modal .close{
  display:grid;place-items:center;width:44px;height:44px;padding:0;
  border-radius:var(--r-round)!important;background:#f2f2f2!important}
.popup-backdrop,
.modal-overlay,
.modal-backdrop{
  align-items:center!important;padding:clamp(16px,4vh,40px)!important}
.popup-close,
.modal-close,
.modal .close{
  position:absolute!important;top:18px!important;right:18px!important;
  float:none!important;margin:0!important}
.social-btn{border-radius:var(--r-pill)!important}

/* 로그인·가입 화면과 회원 전용 잠금 안내는 같은 이미지 무대와 흰 카드로 통일한다. */
#page-login,
#page-join,
#page-social-join{
  min-height:100svh;
  background:
    linear-gradient(rgba(0,0,0,.38),rgba(0,0,0,.38)),
    url('images/hero-3.jpg') center/cover fixed no-repeat!important}
#page-login.active,
#page-join.active,
#page-social-join.active{
  display:grid!important;place-items:center;
  padding-top:calc(var(--header-h) + 40px)!important;padding-bottom:40px!important}
.auth-wrap{width:min(100%,560px)}
.auth-card{
  border:0!important;border-radius:var(--r-media)!important;
  box-shadow:0 28px 80px rgba(0,0,0,.28)!important;overflow:hidden}

#loungeLocked{
  min-height:70svh;
  background:
    linear-gradient(rgba(0,0,0,.42),rgba(0,0,0,.42)),
    url('images/hero-3.jpg') center/cover no-repeat!important}
#loungeLocked>.wrap{display:grid;place-items:center;min-height:calc(70svh - 240px)}
#loungeLocked .lock-card{
  width:min(100%,620px);
  border-radius:var(--r-media)!important;
  box-shadow:0 28px 80px rgba(0,0,0,.24);overflow:hidden}

/* 하위 페이지의 장식용 검은 인트로는 사용하지 않는다.
   공통 헤더 바로 아래에서 각 페이지의 실제 탐색/콘텐츠가 시작된다. */
#page-news,
#page-lounge,
#page-greetings,
#page-orgchart,
#page-bylaws,
#page-scholarship,
#page-kna-program{padding-top:var(--header-h)}

/* 소개 화면은 sticky 헤더가 문서 흐름을 차지하므로 별도 헤더 보정 여백이 필요 없다. */
#page-kna-program{padding-top:0}

/* ============ 하위 페이지 전수 교정 ============
   과거 흑백 시안의 #000 강조 규칙을 제거하고 --accent 한 값만 포인트로 쓴다. */
.page:not(#page-home) .section-head h2,
#page-greetings .section-head h2,
#page-orgchart .section-head h2,
#page-scholarship .section-head h2,
#page-kna-program .curriculum-intro h2,
#page-kna-program .prog-journey h2,
#page-kna-program .prog-final-cta h2,
#page-lounge .network-inner h2{
  font-size:var(--type-section)!important;line-height:1.14!important;
  letter-spacing:-.045em!important;font-weight:600!important;color:var(--ink)!important}
#page-bylaws .chapter h2,
#page-greetings .greet-title{
  font-size:var(--type-content)!important;line-height:1.2!important;
  letter-spacing:-.04em!important;color:var(--ink)!important}

/* 선택 상태와 폼 액션 */
.page:not(#page-home) .news-tab::after,
#page-greetings .jump button::after,
#page-kna-program .prog-tab::after,
.dash-tab::after{background:var(--accent)!important}
.popup-actions .btn,
.modal-box .btn.primary,
.auth-card .btn.primary,
#page-admin .btn.primary{
  background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
.popup-close:hover,.modal-close:hover,.modal .close:hover{
  background:var(--accent)!important;color:#fff!important}
.modal-box input:focus,.modal-box select:focus,.modal-box textarea:focus,
.auth-card input:focus,#page-admin input:focus,.auth-card select:focus{
  box-shadow:inset 0 0 0 2px var(--accent)!important}
.modal-box input[type="checkbox"],.auth-keep input,.consent-check input{accent-color:var(--accent)!important}

/* 조직도 */
#page-orgchart .node::before{background:var(--accent)!important;color:#fff!important}
#page-orgchart .node.hub{background:var(--accent)!important;color:#fff!important}
#page-orgchart .node.hub::before{background:#fff!important;color:var(--accent)!important}
#page-orgchart .node:hover,#page-orgchart .comm-node:hover{
  background:var(--accent)!important;color:#fff!important}
#page-orgchart table.class-table th{background:var(--accent)!important;color:#fff!important}

/* 회칙·규정: 검정 표지와 적색 로고의 충돌을 없애고 흰 문서 표지로 되돌린다. */
#page-bylaws .toc a:hover,#page-bylaws .toc a.active{
  background:var(--accent)!important;color:#fff!important}
#page-bylaws .doc-cover{
  background:#fff!important;color:var(--ink)!important;
  border:1px solid color-mix(in srgb,var(--accent) 16%,#fff);
  border-radius:var(--r-media)!important}
#page-bylaws .doc-cover img{filter:none!important;opacity:.78}
#page-bylaws .doc-cover .t2{
  color:var(--ink)!important;font-size:var(--type-content)!important;line-height:1.2!important}
#page-bylaws .doc-cover .t3{color:var(--ink-soft)!important}
#page-bylaws .chapter h2 .num{color:var(--accent)!important}

/* KNA 과정: 검정 숫자 띠·여정·CTA를 흰 면과 포인트 요소로 재구성한다. */
#page-kna-program .prog-facts{
  background:#fff!important;color:var(--ink)!important;
  border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7}
#page-kna-program .prog-fact,
#page-kna-program .prog-fact:nth-child(even){background:#fff!important;border-right:1px solid #e7e7e7}
#page-kna-program .prog-fact:last-child{border-right:0}
#page-kna-program .prog-fact b{color:var(--accent)!important}
#page-kna-program .prog-fact span{color:var(--ink-soft)!important}
#page-kna-program .prog-journey{background:#fff!important;color:var(--ink)!important}
#page-kna-program .journey-grid{gap:16px;background:transparent!important}
#page-kna-program .journey-step{
  background:var(--paper-2)!important;color:var(--ink)!important;border-radius:var(--r-media)!important}
#page-kna-program .prog-journey .journey-step h3{color:var(--ink)!important}
#page-kna-program .prog-journey .journey-step span{color:var(--accent)!important}
#page-kna-program .prog-final-cta{background:var(--paper-2)!important;color:var(--ink)!important}
#page-kna-program .prog-final-cta .btn{color:#fff!important;background:var(--accent)!important;border-color:var(--accent)!important}
#page-kna-program .scholar-card:hover{background:var(--accent)!important}
#page-kna-program .scholar-card:hover .ttl{color:rgba(255,255,255,.78)!important}
#page-kna-program .scholar-card .mono{background:var(--accent)!important;color:#fff!important}
#page-kna-program .history-timeline{border-left-color:color-mix(in srgb,var(--accent) 30%,#fff)!important}
#page-kna-program .hist-item::before{
  background:var(--accent)!important;border-color:#fff!important;
  box-shadow:0 0 0 2px var(--accent)!important}
#page-kna-program .prog-panel>h3[style] span{background:var(--accent)!important}

/* 인사말·소식·관리 표의 잔여 검정 포인트 */
#page-greetings .status::before{background:var(--accent)!important}
.news-kicker,.news-card:hover h3,.news-feature:hover .news-link,.news-card:hover .news-link{color:var(--accent)!important}
.admin-table th{background:var(--accent)!important;color:#fff!important}

@media(max-width:820px){
  #page-kna-program .prog-fact{border-right:0;border-bottom:1px solid #e7e7e7}
  #page-kna-program .prog-fact:last-child{border-bottom:0}
}
@media(max-width:720px){
  #page-login,#page-join,#page-social-join{background-attachment:scroll!important}
  #page-login.active,#page-join.active,#page-social-join.active{padding-top:calc(var(--header-h) + 24px)!important;padding-bottom:24px!important}
  .popup-backdrop,.modal-overlay,.modal-backdrop{
    align-items:flex-end!important;padding:0!important}
  .popup-close,.modal-close,.modal .close{
    top:12px!important;right:12px!important}
}

/* ===== 입학 안내 =====
   지원자가 찾는 것은 자격·비용·일정·접수처다. 장식보다 읽히는 것이 먼저다. */
.adm-h{font-family:var(--serif);font-size:19px;margin:38px 0 14px;color:var(--ink)}
.adm-h:first-of-type{margin-top:8px}
.adm-list{margin:0;padding-left:20px;font-size:14.5px;line-height:1.95;color:var(--ink)}
.adm-list li{margin:2px 0}
.adm-list b{font-weight:600}
.adm-note{margin-top:10px;font-size:13px;color:var(--ink-soft)}
.adm-note a{color:var(--crimson);text-decoration:underline}

/* 절차 — 번호가 곧 순서라 목록으로 둔다 */
.adm-steps{list-style:none;margin:0;padding:0;counter-reset:s;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}
.adm-steps li{counter-increment:s;position:relative;padding:18px 18px 18px 52px;
  background:var(--white);border:1px solid var(--line-soft,#e5e0dc);border-radius:var(--r-card)}
.adm-steps li::before{content:counter(s);position:absolute;left:16px;top:17px;
  width:24px;height:24px;border-radius:var(--r-round);background:var(--crimson);color:#fff;
  font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.adm-steps b{display:block;font-size:15px;margin-bottom:4px}
.adm-steps span{font-size:13px;color:var(--ink-soft);line-height:1.7}

/* 일정표 — 좁은 화면에서 잘리지 않게 가로로 민다 */
.adm-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.adm-table{width:100%;min-width:520px;border-collapse:collapse;font-size:14px;background:var(--white)}
.adm-table th{background:var(--ink);color:#fff;font-weight:600;padding:12px 14px;text-align:left;font-size:13px}
.adm-table td{padding:12px 14px;border-bottom:1px solid var(--line-soft,#e5e0dc)}
.adm-table tbody tr:last-child td{border-bottom:0}
.adm-table td:first-child{font-weight:600}

/* 수업·등록 사실 목록 */
.adm-facts{display:grid;grid-template-columns:150px 1fr;gap:0;margin:0;font-size:14.5px}
.adm-facts dt{font-weight:600;padding:13px 0;border-top:1px solid var(--line-soft,#e5e0dc);color:var(--ink)}
.adm-facts dd{margin:0;padding:13px 0;border-top:1px solid var(--line-soft,#e5e0dc);color:var(--ink-soft);line-height:1.7}
.adm-fact-benefits{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.adm-fact-benefits li{position:relative;padding-left:14px}
.adm-fact-benefits li::before{content:'·';position:absolute;left:2px;color:var(--crimson);font-weight:700}
.adm-fact-benefits b{color:var(--ink);font-weight:650}

.adm-cta{margin-top:40px;padding:26px;background:var(--paper-2);border-radius:var(--r-card);
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.adm-cta b{display:block;font-family:var(--serif);font-size:18px}
.adm-cta span{font-size:13px;color:var(--ink-soft)}
.adm-cta-links{display:flex;gap:8px;flex-wrap:wrap}

/* 자주 묻는 질문 — 펼침은 브라우저에 맡긴다. 스크립트가 필요 없다 */
.adm-faq details{border-bottom:1px solid var(--line-soft,#e5e0dc)}
.adm-faq summary{padding:16px 34px 16px 0;cursor:pointer;font-size:15px;font-weight:600;
  color:var(--ink);list-style:none;position:relative}
.adm-faq summary::-webkit-details-marker{display:none}
.adm-faq summary::after{content:'+';position:absolute;right:6px;top:14px;
  font-size:19px;font-weight:400;color:var(--crimson)}
.adm-faq details[open] summary::after{content:'−'}
.adm-faq p{margin:0;padding:0 0 18px;font-size:14px;line-height:1.85;color:var(--ink-soft)}

@media(max-width:600px){
  .adm-facts{grid-template-columns:1fr;gap:0}
  .adm-facts dt{padding-bottom:2px;border-top:1px solid var(--line-soft,#e5e0dc)}
  .adm-facts dd{padding-top:0;border-top:0;padding-bottom:14px}
  .adm-cta{flex-direction:column;align-items:flex-start}
  .adm-cta-links .btn{flex:1 1 auto}
}

/* 교우기업 디렉터리 — 필터, 추천, 전체 카드가 한 가지 시각 언어를 쓴다. */
#page-companies .co-directory-tools{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start;margin:34px 0 12px}
#page-companies .co-directory-tools .co-chips{gap:8px}
#page-companies .co-search{min-width:0;height:46px;border-radius:var(--r-pill);background:#f5f5f6}
#page-companies .co-chip{padding:9px 14px;border:1px solid #e8e8eb;border-radius:var(--r-pill);background:#fff;color:var(--ink-soft)}
#page-companies .co-chip.on{border-color:var(--crimson);background:var(--crimson);color:#fff}
#page-companies .co-chips--gi{max-height:42px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;scrollbar-width:none}
#page-companies .co-chips--gi::-webkit-scrollbar{display:none}
#page-companies .co-chips--gi .co-chip{flex:0 0 auto;padding:7px 12px}
#page-companies .co-actions{justify-content:flex-end;margin:16px 0 0}
#page-companies .section.alt{background:#f7f7f8}
#page-companies .co-list-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:24px}
#page-companies .co-list-head h2{margin-bottom:5px}
#page-companies .co-list-head .co-count{margin:0;white-space:nowrap}
#page-companies .co-sub{margin:30px 0 14px}
#page-companies .co-sub h3{margin:0;font-size:16px}
#page-companies .pl-grid--exec,#page-companies .pl-grid--biz{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
#page-companies .pl-card{min-height:190px;padding:22px;border:1px solid #ececef;border-radius:var(--r-card);background:#fff;transition:transform .18s,background .18s}
#page-companies a.pl-card:hover{transform:translateY(-2px);background:#fff}
#page-companies .pl-card.is-plain{background:#fff}
#page-companies .pl-slot{background:#f0f0f2}
#page-companies .pl-rank{letter-spacing:0}
#page-companies .pl-head{display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;align-items:center;margin-bottom:12px}
#page-companies .pl-head b{display:block;margin:0 0 4px;font-size:15px;line-height:1.35}
#page-companies .pl-head .pl-gi{display:block;line-height:1.45}
#page-companies .pl-avatar{display:grid;place-items:center;width:46px;height:46px;border-radius:var(--r-round);background:var(--crimson);color:#fff;font-size:15px;font-weight:700}
#page-companies .pl-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:12px}
#page-companies .pl-tags span{font-size:11px;color:var(--ink-soft)}
#page-companies .pl-go{font-weight:700}
#page-companies .co-block{margin-bottom:38px}
#page-companies .co-block>h2{margin-bottom:14px;font-size:18px}
#page-companies .co-entries{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
#page-companies .co-entry{display:flex;flex-direction:column;gap:16px;min-height:230px;padding:22px;border:1px solid #ececef;border-radius:var(--r-card);background:#fff}
#page-companies .co-card-head{display:grid;grid-template-columns:68px minmax(0,1fr) auto;gap:13px;align-items:center}
#page-companies .co-mark{display:grid;place-items:center;width:68px;height:52px;min-height:0;padding:7px;border-radius:12px;background:#f1f1f3;overflow:hidden}
#page-companies .co-mark img{width:100%;height:100%;object-fit:contain}
#page-companies .co-mark span{font-size:14px}
#page-companies .co-body h3{margin:0 0 4px;font-size:15px;line-height:1.4}
#page-companies .co-who{gap:5px;margin:0;font-size:12px}
#page-companies .co-who b{font-size:12px}
#page-companies .co-gi{font-size:11px}
#page-companies .co-visit{display:grid;place-items:center;width:30px;height:30px;border:1px solid #e3e3e6;border-radius:var(--r-pill);color:var(--crimson);text-decoration:none;font-weight:700}
#page-companies .co-job{margin:0 0 10px;padding:0;background:none;color:var(--ink);font-weight:600}
#page-companies .co-entry .co-desc{display:-webkit-box;min-height:47px;margin:0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:12.5px;line-height:1.85}
#page-companies .co-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:14px}
#page-companies .co-tags span{font-size:11px;color:var(--ink-soft)}
#page-companies .co-note{margin-top:10px;padding:7px 9px;border:0;border-radius:var(--r-card);background:#f5f5f6}
@media(max-width:1100px){
  #page-companies .pl-grid--exec,#page-companies .pl-grid--biz,#page-companies .co-entries{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:820px){
  #page-companies .co-directory-tools{grid-template-columns:1fr}
  #page-companies .pl-grid--exec,#page-companies .pl-grid--biz,#page-companies .co-entries{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  #page-companies .pl-grid--exec,#page-companies .pl-grid--biz,#page-companies .co-entries{grid-template-columns:1fr}
  #page-companies .co-list-head{align-items:flex-start;flex-direction:column;gap:8px}
}


/* ===== 비전 ===== */
.vision-slogan{font-family:var(--serif);font-size:clamp(28px,4vw,44px);line-height:1.25;
  color:var(--ink);margin:0 0 6px;letter-spacing:-.02em}
.vision-slogan span{display:inline-block;margin-top:8px;font-size:.5em;color:var(--crimson);letter-spacing:.04em}
.vision-values{list-style:none;margin:34px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.vision-values li{padding:22px;background:var(--white);border-radius:var(--r-card);border:1px solid var(--line-soft,#e5e0dc)}
.vision-values b{font-family:var(--serif);font-size:20px;margin-right:8px}
.vision-values span{font-size:12px;color:var(--crimson);font-weight:600;letter-spacing:.06em}
.vision-values p{margin:10px 0 0;font-size:14px;color:var(--ink-soft);line-height:1.75}

/* ===== 연혁 =====
   세로선 하나에 점을 찍는다. 장식보다 순서가 읽히는 것이 먼저다. */
.timeline{list-style:none;margin:0;padding:0;position:relative}
.timeline::before{content:'';position:absolute;left:7px;top:6px;bottom:6px;width:1px;
  background:linear-gradient(var(--crimson-soft,#e8c9cf),transparent)}
.timeline li{position:relative;padding:0 0 28px 34px}
.timeline li::before{content:'';position:absolute;left:0;top:5px;width:15px;height:15px;
  border-radius:var(--r-round);background:var(--white);border:3px solid var(--crimson-soft,#e8c9cf)}
.timeline li.now::before{border-color:var(--crimson);background:var(--crimson)}
.timeline .yr{display:block;font-size:12px;font-weight:700;color:var(--crimson);letter-spacing:.05em}
.timeline b{display:block;font-family:var(--serif);font-size:17px;margin:4px 0 8px;color:var(--ink)}
.timeline p{margin:0;font-size:14px;line-height:1.85;color:var(--ink-soft)}

/* ===== 교우기업 · 전문인 =====
   사무국 제작가이드는 회색 구분선(#E3E3E3)과 붉은색 두 벌(#8C1D40·#D0021B)을 쓰라고 했다.
   그 둘 다 이 사이트 규칙과 어긋나므로 «구성만» 따르고 색과 선은 우리 토큰으로 옮겼다 —
   선 대신 면(--paper-2)과 여백, 강조는 크림슨 하나. 로고 파일이 아직 없어 워드마크로 세운다. */

.co-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:26px}
.co-actions .btn{margin:0}
.co-search{flex:1;min-width:240px;display:flex;align-items:center;gap:10px;
  padding:0 16px;height:44px;background:var(--paper-2);border-radius:var(--r-pill);color:var(--ink-soft)}
.co-search svg{width:17px;height:17px;flex:none}
.co-search input{flex:1;border:0;background:none;font:inherit;font-size:14px;color:var(--ink);outline:none}
.co-search:focus-within{box-shadow:inset 0 0 0 2px var(--crimson)}

.co-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:2px;
  background:var(--paper-2);border-radius:var(--r-card);overflow:hidden}
.co-stats > div{padding:20px 18px;background:var(--paper-2);text-align:center}
.co-stats b{display:block;font-size:26px;font-weight:700;color:var(--crimson);line-height:1.2}
.co-stats span{display:block;margin-top:5px;font-size:12.5px;color:var(--ink-soft)}

/* 파워링크 — 회장단 5열 · 등재기업 3열. 카드는 면으로 서고 테두리를 두르지 않는다. */
.pl-grid{display:grid;gap:12px}
.pl-grid--exec{grid-template-columns:repeat(5,1fr)}
.pl-grid--biz{grid-template-columns:repeat(3,1fr)}
.pl-card{display:flex;flex-direction:column;gap:3px;padding:20px 18px;
  background:var(--white);border-radius:var(--r-card);text-align:left;color:var(--ink);text-decoration:none}
a.pl-card:hover{background:var(--paper-2)}
.pl-rank{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--crimson)}
.pl-mark{display:inline-block;margin:2px 0 8px;font-size:20px;font-weight:700;color:var(--crimson);line-height:1}
.pl-card b{margin-top:8px;font-size:16px;font-weight:700;color:var(--ink)}
.pl-gi{font-size:12px;color:var(--ink-soft)}
.pl-co{font-size:13px;color:var(--ink);margin-top:2px}
.pl-desc{font-size:12.5px;line-height:1.7;color:var(--ink-soft);margin-top:6px}
.pl-go{margin-top:auto;padding-top:10px;font-size:12px;font-weight:600;color:var(--crimson)}
.pl-biz{padding:26px 22px}
.pl-biz .pl-mark{font-size:22px;color:var(--crimson)}
/* 빈 슬롯은 «아직 아무도 없다» 를 보여야 한다. 흰 카드로 두면 등재된 곳처럼 읽힌다. */
.pl-slot{background:var(--paper-2);justify-content:center;align-items:center;text-align:center;
  min-height:150px;color:var(--ink-soft)}
.pl-slot b{color:var(--ink-soft);font-weight:600}
/* 홈페이지가 없어 링크가 아닌 카드. 회장단·등재기업 양쪽에 다 생긴다 */
.pl-card.is-plain{background:var(--paper-2)}
.co-sub{margin-top:44px}

/* 분류·기수 단추 */
.co-filters{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.co-chips{display:flex;flex-wrap:wrap;gap:6px}
.co-chip{padding:8px 15px;border-radius:var(--r-pill);background:var(--paper-2);
  color:var(--ink-soft);font-size:13px;cursor:pointer;transition:.16s}
.co-chip:hover{color:var(--crimson)}
.co-chip.on{background:var(--crimson);color:#fff;font-weight:600}
.co-chip--gi{font-size:12.5px;padding:6px 12px}
.co-count{margin:0 0 22px;font-size:13px;color:var(--ink-soft)}

/* 분류별 목록 */
.co-block{margin-bottom:44px}
.co-block h2{display:flex;align-items:baseline;gap:9px;margin:0 0 16px;
  font-size:19px;font-weight:700;color:var(--ink)}
.co-block h2 span{font-size:13px;font-weight:600;color:var(--crimson)}
.co-entries{display:grid;gap:10px}

.co-entry{display:grid;grid-template-columns:132px 1fr;gap:22px;
  padding:24px 24px;background:var(--paper-2);border-radius:var(--r-card)}
.co-mark{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;
  min-height:88px;padding:10px;background:var(--white);border-radius:var(--r-card);text-align:center}
.co-mark span{font-size:17px;font-weight:700;color:var(--ink);line-height:1.25;word-break:break-word}
.co-mark em{font-size:10px;font-style:normal;color:var(--ink-soft);line-height:1.4}
.co-body h3{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 8px;
  font-size:17px;font-weight:700;color:var(--ink)}
.co-dual{padding:2px 8px;font-size:11px;font-weight:600;border-radius:var(--r-card);
  background:var(--crimson);color:#fff}
.co-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin:0 0 8px;font-size:13.5px}
.co-gi{font-size:11.5px;font-weight:700;color:var(--crimson);letter-spacing:.04em}
.co-who b{font-size:14.5px;color:var(--ink)}
.co-who span{color:var(--ink-soft)}
.co-job{display:inline-block;margin:0 0 10px;padding:3px 9px;font-size:11.5px;
  background:var(--white);border-radius:var(--r-card);color:var(--ink-soft)}
.co-entry .co-desc{margin:0 0 12px;font-size:13.5px;line-height:1.8;color:var(--ink-soft)}
.co-meta{display:grid;grid-template-columns:62px 1fr;gap:5px 12px;margin:0;font-size:12.5px}
.co-meta dt{color:var(--ink-soft);font-weight:600}
.co-meta dd{margin:0;color:var(--ink);word-break:break-word}
.co-meta a{color:var(--crimson);text-decoration:none}
.co-meta a:hover{text-decoration:underline}
.co-priv{color:var(--ink-soft)}
/* 사무국 확인 대기 항목. 크림슨 한 줄로 «아직 확정 아님» 을 알린다 */
.co-note{margin:12px 0 0;padding:8px 12px;font-size:12px;line-height:1.65;
  background:var(--white);border-left:3px solid var(--crimson);color:var(--ink-soft)}
.co-empty{padding:48px 0;text-align:center;font-size:14px;color:var(--ink-soft)}

.co-cta{margin-top:34px;padding:24px 26px;background:var(--paper-2);border-radius:var(--r-card);
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.co-cta b{display:block;font-size:17px;font-weight:700;color:var(--ink)}
.co-cta span{font-size:13px;color:var(--ink-soft)}

@media(max-width:1000px){
  .pl-grid--exec{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:860px){
  .pl-grid--exec{grid-template-columns:repeat(2,1fr)}
  .pl-grid--biz{grid-template-columns:1fr}
  .co-entry{grid-template-columns:1fr;gap:14px}
  .co-mark{min-height:64px;align-items:flex-start;flex-direction:row;justify-content:flex-start;
    gap:10px;padding:12px 14px;text-align:left}
}
@media(max-width:600px){
  .co-actions{flex-direction:column;align-items:stretch}
  .co-actions .btn{width:100%;text-align:center}
  .co-cta{flex-direction:column;align-items:flex-start}.co-cta .btn{width:100%;text-align:center}
  .co-meta{grid-template-columns:1fr;gap:2px}
  .co-meta dt{margin-top:6px}
}

/* ===== 장학 · 나눔활동 =====
   사무국 시안(kna-scholarship-v4)의 구성을 따르고 색·선은 이 사이트 토큰으로 옮겼다.
   시안의 한자 원형 배지(奬·褒·承·同)와 회색 구분선은 쓰지 않는다 — 둘 다 걷어낸 것들이다.
   섹션마다 형태를 바꾼다 — 강령은 문장 · 절차는 번호 · 사업은 탭 · 준비 중은 목록 · 현황은 숫자. */

.sch-jump{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.sch-jump a{padding:8px 15px;border-radius:var(--r-card);background:var(--paper-2);
  font-size:13px;color:var(--ink-soft);text-decoration:none;transition:.16s}
.sch-jump a:hover{color:var(--crimson)}

.sch-creed{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.sch-creed > div{padding:26px 24px;background:var(--white);border-radius:var(--r-card)}
.sch-creed b{display:block;font-size:17px;font-weight:700;margin-bottom:10px;color:var(--ink)}
.sch-creed p{margin:0;font-size:13.5px;line-height:1.85;color:var(--ink-soft)}
.sch-basis{margin:22px 0 0;padding:20px 22px;background:var(--white);border-left:3px solid var(--crimson);
  font-size:13.5px;line-height:1.9;color:var(--ink-soft)}
.sch-basis b{color:var(--ink)}

/* 회장단 회의 → 공고 → 심의 → 수여. 번호가 곧 절차다 */
.sch-flow{list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.sch-flow li{padding:24px 22px;background:var(--paper-2);border-top:3px solid var(--crimson)}
.sch-flow .st{display:inline-block;font-size:11px;font-weight:700;color:var(--crimson);
  letter-spacing:.08em;margin-bottom:10px}
.sch-flow b{display:block;font-size:15.5px;margin-bottom:8px;color:var(--ink)}
.sch-flow p{margin:0;font-size:13px;line-height:1.8;color:var(--ink-soft)}
.sch-note{margin-top:18px;font-size:12.5px;color:var(--ink-soft);line-height:1.8}

/* 사업 안내 — 넷이 같은 절차라 카드 넷을 나란히 두지 않고 탭 하나로 겹친다 */
.sch-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.sch-tabs button{padding:10px 18px;border-radius:var(--r-card);background:var(--paper-2);
  font-size:13.5px;color:var(--ink-soft);cursor:pointer;transition:.16s}
.sch-tabs button:hover{color:var(--crimson)}
.sch-tabs button.on{background:var(--crimson);color:#fff;font-weight:600}
.sch-panel{display:none;padding:30px 28px;background:var(--white);border-radius:var(--r-card)}
.sch-panel.on{display:block}
.sch-cycle{display:inline-block;padding:4px 10px;margin-bottom:12px;border-radius:var(--r-card);
  background:var(--paper-2);font-size:11.5px;font-weight:700;color:var(--crimson);letter-spacing:.04em}
.sch-panel h3{margin:0 0 10px;font-size:19px;font-weight:700;color:var(--ink)}
.sch-panel > p{margin:0 0 20px;font-size:14px;line-height:1.9;color:var(--ink-soft)}
.sch-panel dl{display:grid;grid-template-columns:120px 1fr;gap:2px 18px;margin:0;font-size:13.5px}
.sch-panel dt{padding:10px 0;font-weight:600;color:var(--crimson)}
.sch-panel dd{padding:10px 0;margin:0;color:var(--ink-soft);line-height:1.8}
/* 촘촘한 표는 선이 아니라 얼룩으로 행을 나눈다 */
.sch-panel dt:nth-of-type(odd),.sch-panel dd:nth-of-type(odd){background:var(--paper-2)}
.sch-panel dt{padding-left:14px}
.sch-panel dd{padding-right:14px}

.sch-plan{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.sch-plan li{display:grid;grid-template-columns:1fr auto;gap:8px 20px;align-items:start;
  padding:22px 24px;background:var(--paper-2)}
.sch-plan b{grid-column:1;font-size:16.5px;font-weight:700;color:var(--ink)}
.sch-plan p{grid-column:1;margin:0;font-size:13.5px;line-height:1.8;color:var(--ink-soft)}
.sch-plan span{grid-column:2;grid-row:1;padding:4px 11px;border-radius:var(--r-card);
  background:var(--white);font-size:11.5px;font-weight:600;color:var(--crimson);white-space:nowrap}

.sch-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:2px}
.sch-stats > div{padding:30px 20px;background:var(--white);text-align:center}
.sch-stats b{display:block;font-size:34px;font-weight:700;color:var(--crimson);line-height:1}
.sch-stats span{display:block;margin-top:10px;font-size:13px;color:var(--ink-soft)}

.sch-join{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.sch-join li{display:flex;flex-direction:column;padding:26px 24px;background:var(--paper-2);border-radius:var(--r-card)}
.sch-join b{font-size:17px;font-weight:700;margin-bottom:10px;color:var(--ink)}
.sch-join p{margin:0 0 14px;font-size:13.5px;line-height:1.8;color:var(--ink-soft);flex:1}
.sch-join .how{font-size:12px;color:var(--crimson);font-weight:600}

/* ===== 장학 전용 게시판 ===== */
.sch-board-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin-bottom:18px}
/* 글쓰기 단추 — 요청서 1·2항. 연필 아이콘 옆에 «지금 보고 있는 분류» 를 우리말로 함께 적는다.
   ＋ 대신 연필이고, 아이콘만 두지 않는다. */
.board-write{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;border-radius:var(--r-pill);
  background:var(--crimson);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:.16s}
.board-write:hover{background:var(--crimson-deep)}
.board-write svg{width:19px;height:19px;flex:none}

.sch-posts{display:grid;gap:2px}
.sch-post{padding:24px 26px;background:var(--white)}
.sch-post-meta{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;font-size:11.5px}
.sch-post-meta span{font-weight:700;color:var(--crimson);letter-spacing:.04em}
.sch-post-meta time{color:var(--ink-soft)}
.sch-post h3{margin:0 0 8px;font-size:17px;font-weight:700}
.sch-post h3 a{color:var(--ink);text-decoration:none}
.sch-post h3 a:hover{color:var(--crimson)}
.sch-post p{margin:0;font-size:13.5px;line-height:1.8;color:var(--ink-soft)}
.sch-post-by{display:block;margin-top:10px;font-size:12px;color:var(--ink-soft)}
.sch-empty{padding:44px 24px;background:var(--white);text-align:center;
  font-size:13.5px;line-height:1.9;color:var(--ink-soft)}
.sch-cross{margin:20px 0 0;font-size:13px;color:var(--ink-soft)}
.sch-cross a{color:var(--crimson);font-weight:600;text-decoration:none}
.sch-cross a:hover{text-decoration:underline}

/* 명예의 전당 — 비공개 표시는 테두리가 아니라 배경 틴트와 글자색으로 알린다 */
.hall-lock{display:inline-flex;align-items:center;gap:5px;
  margin-left:10px;padding:4px 10px;border-radius:var(--r-pill);
  background:var(--crimson);color:#fff;font-size:11.5px;font-weight:700;vertical-align:middle}
.hall-rule{margin:0 0 16px;padding:16px 20px;background:var(--paper-2);
  font-size:12.5px;line-height:1.85;color:var(--ink-soft)}
.hall-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.hall-person{min-height:190px;padding:24px;border-radius:var(--r-card);background:#fff}
.hall-person-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.hall-person h3{margin:0;font-size:22px;letter-spacing:-.035em}
.hall-status{flex:0 0 auto;padding:5px 9px;border-radius:var(--r-pill);background:var(--paper-2);color:var(--ink-soft);font-size:11px;font-weight:700}
.hall-status.is-done{background:var(--crimson);color:#fff}
.hall-title{margin:0 0 12px;color:var(--ink);font-size:14px;font-weight:650;line-height:1.65}
.hall-note{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.8}
.hall-related-posts{margin-top:18px}
.sch-hall-panel{padding-top:22px}
.sch-hall-head{margin-bottom:26px}
.sch-hall-head h2{font-size:24px}
#schWrite[hidden]{display:none!important}

@media(max-width:600px){
  .hall-people{grid-template-columns:1fr}
  .sch-panel{padding:24px 20px}
  .sch-panel dl{grid-template-columns:1fr;gap:0}
  .sch-panel dt{padding:10px 14px 2px}
  .sch-panel dd{padding:2px 14px 10px}
  .sch-panel dt:nth-of-type(odd),.sch-panel dd:nth-of-type(odd){background:var(--paper-2)}
  .sch-plan li{grid-template-columns:1fr}
  .sch-plan span{grid-column:1;grid-row:auto;justify-self:start;margin-top:6px}
  .sch-board-bar{align-items:stretch}
  .board-write{justify-content:center}
}

/* ===== 온라인 입학지원서 =====
   학적 서류의 격식을 화면으로 옮긴다. 종이 서식이 그렇듯 **왼쪽에 항목, 오른쪽에 칸**을 두고
   가로줄로 끊는다. 칸을 흩어 놓으면 서식이 아니라 설문지로 읽힌다. */
.apply{max-width:900px}

/* 절 — 번호를 크림슨 원으로. 종이 서식의 「1. 인적사항」을 그대로 옮긴 것이다 */
.ap-sec{
  border:1px solid var(--line-soft,#e5e0dc);border-top:3px solid var(--crimson);
  background:var(--white);padding:0;margin:0 0 20px;counter-increment:apsec;
  box-shadow:0 1px 3px rgba(28,21,18,.05)}
.ap-sec > legend{
  float:left;width:100%;margin:0;padding:18px 26px 14px;
  font-family:var(--serif);font-size:17.5px;font-weight:600;color:var(--ink);
  border-bottom:1px solid var(--line-soft,#e5e0dc);letter-spacing:-.01em}
.ap-sec > legend + *{clear:both}

/* 한 줄 = 항목 하나. 왼쪽 라벨 칸은 종이 서식의 음영 칸에 해당한다 */
.ap-row{display:grid;grid-template-columns:132px 1fr;align-items:center;
  border-bottom:1px solid var(--line-soft,#e5e0dc)}
.ap-sec > .ap-row:last-of-type{border-bottom:0}
.ap-lb{
  align-self:stretch;display:flex;align-items:center;gap:4px;
  padding:0 18px;min-height:56px;background:var(--paper-2);
  font-size:13px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.ap-lb b{color:var(--crimson)}
.ap-in{display:grid;grid-template-columns:1fr;gap:0;padding:0}
.ap-in.cols-2{grid-template-columns:1fr 1fr}
.ap-in.cols-3{grid-template-columns:1fr 1fr 1fr}
.ap-in.cols-4{grid-template-columns:repeat(4,1fr)}

/* 칸 자체는 테두리를 지우고 **세로 실선으로만** 나눈다 — 서식의 표처럼 보이게 */
.ap-in input,.ap-in select{
  border:0;border-left:1px solid var(--line-soft,#e5e0dc);border-radius:0;
  padding:0 16px;min-height:56px;width:100%;
  font-size:14px;color:var(--ink);background:transparent;
  font-family:inherit}
.ap-in > :first-child{border-left:0}
.ap-in input::placeholder{color:var(--ink-soft);opacity:.75}
.ap-in input:focus,.ap-in select:focus{
  outline:none;background:color-mix(in srgb,var(--crimson) 4%,#fff);
  box-shadow:inset 0 -2px 0 var(--crimson)}
.ap-in input[hidden]{display:none}

/* 성별 등 선택칸 — 기본 화살표를 지우고 직접 그린다. 브라우저마다 모양이 달라진다 */
.ap-in select{
  appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--crimson) 50%),
                   linear-gradient(135deg,var(--crimson) 50%,transparent 50%);
  background-position:calc(100% - 20px) calc(50% - 2px),calc(100% - 15px) calc(50% - 2px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:40px}

/* 경력 — 머리글을 두어 어느 칸이 무엇인지 보이게 */
.ap-chead,.ap-career{display:grid;grid-template-columns:120px 1fr 150px 1fr 44px}
.ap-chead{border-bottom:1px solid var(--line-soft,#e5e0dc);background:var(--paper-2)}
.ap-chead span{padding:11px 16px;font-size:12px;font-weight:600;color:var(--ink-soft);
  border-left:1px solid var(--line-soft,#e5e0dc)}
.ap-chead span:first-child{border-left:0}
.ap-career{border-bottom:1px solid var(--line-soft,#e5e0dc)}
.ap-career input{
  border:0;border-left:1px solid var(--line-soft,#e5e0dc);border-radius:0;
  padding:0 16px;min-height:52px;font-size:13.5px;background:transparent;width:100%;font-family:inherit}
.ap-career input:first-child{border-left:0}
.ap-career input:focus{outline:none;background:color-mix(in srgb,var(--crimson) 4%,#fff);
  box-shadow:inset 0 -2px 0 var(--crimson)}
.ap-career .c-rm{border:0;border-left:1px solid var(--line-soft,#e5e0dc);background:transparent;
  color:var(--ink-soft);font-size:17px;cursor:pointer}
.ap-career .c-rm:hover{color:var(--crimson);background:var(--paper-2)}
.ap-sec .btn.sm{margin:14px 26px 18px}

.ap-note{margin:0;padding:14px 26px 18px;font-size:12.5px;color:var(--ink-soft);line-height:1.8}
.ap-note b{color:var(--ink)}

/* 동의란 — 종이 서식의 마지막 장에 해당한다 */
.ap-agree .ap-terms{margin:0;padding:20px 26px;background:var(--paper-2);
  border-bottom:1px solid var(--line-soft,#e5e0dc)}
.ap-agree .ap-terms p{margin:0 0 9px;font-size:13px;line-height:1.8;color:var(--ink-soft)}
.ap-agree .ap-terms p:last-child{margin-bottom:0}
.ap-agree .ap-terms b{color:var(--ink);display:inline-block;min-width:72px}
.ap-check{display:flex;align-items:flex-start;gap:10px;padding:18px 26px;
  font-size:14px;line-height:1.6;cursor:pointer}
.ap-check input{width:auto;min-height:0;margin-top:3px;accent-color:var(--crimson)}
.ap-check b{color:var(--crimson)}

.ap-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.ap-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}

@media(max-width:680px){
  .ap-row{grid-template-columns:1fr}
  .ap-lb{min-height:0;padding:11px 18px;border-bottom:1px solid var(--line-soft,#e5e0dc)}
  .ap-in.cols-3,.ap-in.cols-4{grid-template-columns:1fr 1fr}
  .ap-in input,.ap-in select{min-height:50px}
  /* 두 칸씩 접히므로 왼쪽 테두리를 줄마다 다시 정리한다 */
  .ap-in.cols-3 > :nth-child(odd),.ap-in.cols-4 > :nth-child(odd){border-left:0}
  .ap-in.cols-3 > :nth-child(n+3),.ap-in.cols-4 > :nth-child(n+3){border-top:1px solid var(--line-soft,#e5e0dc)}
  .ap-chead{display:none}
  .ap-career{grid-template-columns:1fr 1fr;border-bottom-width:2px}
  .ap-career input{min-height:46px}
  .ap-career input:nth-child(odd){border-left:0}
  .ap-career input:nth-child(n+3){border-top:1px solid var(--line-soft,#e5e0dc)}
  .ap-career .c-rm{grid-column:1/-1;border-left:0;border-top:1px solid var(--line-soft,#e5e0dc);height:40px}
  .ap-sec > legend{padding:16px 18px 12px;font-size:16px}
  .ap-agree .ap-terms,.ap-check,.ap-note{padding-left:18px;padding-right:18px}
  .ap-sec .btn.sm{margin:12px 18px 16px}
  .ap-actions .btn{flex:1 1 100%}
}

/* 성별 — 두 개뿐인 선택은 펼쳐 놓는 편이 빠르다. 목록을 열었다 닫는 동작이 없어진다.
   라디오를 감추고 라벨을 단추처럼 쓴다 — 키보드 이동과 스크린리더는 그대로 살아 있다. */
.ap-seg{display:flex;align-items:center;gap:0;padding:0 16px;min-height:56px}
.ap-seg .seg-lb{font-size:14px;color:var(--ink-soft);opacity:.75;margin-right:12px}
.ap-seg input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.ap-seg label{
  min-width:64px;padding:8px 18px;cursor:pointer;text-align:center;
  border:1px solid var(--line-soft,#e5e0dc);font-size:14px;color:var(--ink-soft);
  background:var(--white);transition:.15s ease;user-select:none}
.ap-seg label:first-of-type{border-radius:var(--r-pill) 0 0 var(--r-pill)}
.ap-seg label:last-of-type{border-radius:0 var(--r-pill) var(--r-pill) 0;border-left:0}
.ap-seg input:checked + label{
  background:var(--crimson);border-color:var(--crimson);color:#fff;font-weight:600}
.ap-seg input:focus-visible + label{outline:2px solid var(--crimson);outline-offset:2px}
.ap-seg label:hover{border-color:var(--crimson);color:var(--crimson)}
.ap-seg input:checked + label:hover{color:#fff}
@media(max-width:680px){ .ap-seg{min-height:50px} }

/* 생년월일 — 두 자리씩 세 칸. 「00 · 00 · 00」이 서식의 칸과 같은 모양이다 */
.ap-ymd{display:flex;align-items:center;gap:6px;padding:0 16px;min-height:56px}
.ap-ymd .seg-lb{font-size:14px;color:var(--ink-soft);opacity:.75;margin-right:8px}
.ap-ymd input{
  width:46px;min-height:38px;padding:0;text-align:center;border-radius:var(--r-field);
  border:1px solid var(--line-soft,#e5e0dc);background:var(--white);
  font-size:15px;letter-spacing:.08em;font-variant-numeric:tabular-nums}
.ap-ymd input:focus{outline:none;border-color:var(--crimson);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--crimson) 12%,transparent)}
.ap-ymd .sep{color:var(--ink-soft);opacity:.5;font-size:13px}
@media(max-width:680px){ .ap-ymd{min-height:50px} }

/* 생년월일이 자기 줄로 나오면서 라벨 칸이 필요 없어졌다 */
.ap-ymd .ymd-hint{margin-left:14px;font-size:12px;color:var(--ink-soft);opacity:.8}
@media(max-width:680px){ .ap-ymd .ymd-hint{display:none} }

/* ===== 로그인 칸을 한 줄로 =====
   라벨이 위, 입력칸이 아래라 항목 하나가 두 줄을 먹었다. 로그인 화면은 칸이 둘뿐이라
   나란히 놓는 편이 한눈에 들어온다. 라벨 폭은 「비밀번호」 네 글자에 맞춘다. */
#page-login .auth-field{
  display:grid;grid-template-columns:76px 1fr;align-items:center;gap:12px;margin-bottom:12px}
#page-login .auth-field label{margin:0;font-size:13.5px;font-weight:600;white-space:nowrap}
#page-login .auth-field input{margin:0}
/* 제목이 한 줄로 들어가게 — 카드 폭이 좁을 때 글자만 줄인다 */
#page-login .auth-head h1{white-space:nowrap;font-size:clamp(26px,3.4vw,40px)}
#page-login .auth-head{margin-bottom:22px}

@media(max-width:480px){
  /* 아주 좁은 화면에서는 나란히 두면 입력칸이 너무 짧아진다. 다시 위아래로 */
  #page-login .auth-field{grid-template-columns:1fr;gap:6px}
  #page-login .auth-field label{font-size:12.5px}
}

/* ===== 지원서 — 안 채운 필수 항목 =====
   아래쪽 오류 문구 한 줄만으로는 칸이 마흔 개인 서식에서 어디를 채워야 할지 못 찾는다.
   그 칸 자리에서 알린다. */
.ap-row.is-missing{position:relative;background:color-mix(in srgb,var(--crimson) 3%,#fff)}
.ap-row.is-missing > .ap-lb{background:color-mix(in srgb,var(--crimson) 9%,#fff);color:var(--crimson)}
.ap-row.is-missing .ap-in > input,
.ap-row.is-missing .ap-in > select{box-shadow:inset 0 -2px 0 var(--crimson)}
.ap-row.is-missing .ap-in > input::placeholder{color:var(--crimson);opacity:.55}

.ap-check.is-missing{background:color-mix(in srgb,var(--crimson) 5%,#fff);border-radius:var(--r-field)}
.ap-check.is-missing b{color:var(--crimson)}

/* 안내는 항목 아래에 붙인다. 별표는 「여기가 필수」라는 뜻이라 색을 맞춘다 */
.ap-tip{
  display:block;grid-column:1/-1;padding:0 18px 10px;
  font-size:12.5px;font-weight:600;color:var(--crimson);line-height:1.6}
.ap-tip::before{content:'* ';font-weight:700}
.ap-check .ap-tip{padding:6px 0 0 30px}
@media(max-width:680px){ .ap-tip{padding-left:18px} }

/* ===== 조직도 — 마우스오버 =====
   올리면 배경이 크림슨으로 바뀌는데(2638행) 이름 글자는 자기 색(--ink)을 갖고 있어
   어두운 채로 남았다. 부모의 흰색을 물려받지 못한 것이다 — 크림슨 위의 진회색은 안 읽힌다.
   이름은 흰색, 직위는 살짝 흐린 흰색으로 맞춘다. */
#page-orgchart .node:hover .names,
#page-orgchart .node:hover .role,
#page-orgchart .node:hover .cnt{color:#fff !important}
#page-orgchart .node:hover .role{color:rgba(255,255,255,.85) !important}
#page-orgchart .node:hover .cnt{color:rgba(255,255,255,.75) !important}
/* 교우회장 칸은 평소에도 크림슨이라 올려도 그대로 흰 글씨다 */
#page-orgchart .node.hub:hover .names{color:#fff !important}
/* 위원회 카드도 같은 문제 */
#page-orgchart .comm-node:hover,
#page-orgchart .comm-node:hover *{color:#fff !important}

/* 「아이디 저장」이 단추 위로 올라오면서 간격을 다시 잡는다 */
#page-login .auth-keep{display:flex;align-items:center;gap:8px;margin:2px 0 14px;font-size:13px;color:var(--ink-soft);cursor:pointer}
#page-login .auth-keep input{width:auto;margin:0;accent-color:var(--crimson)}

/* 두 줄에 다 들어가는 글은 접을 것이 없다 — 힌트를 감추고 손가락 커서도 끈다 */
.dash-sub.foldable.no-fold{cursor:default}
.dash-sub.foldable.no-fold::after{display:none}
.dash-sub.foldable.no-fold .dash-sub-text{-webkit-line-clamp:unset;display:block}

/* ===== 홈 재배치: 히어로 → 기업 한 줄 → 교우 2열 ===== */
/* flex 정렬에서 히어로와 기업 띠만 앞으로 당긴다. 나머지 섹션의 원래 순서는 유지된다. */
#page-home #top{order:-2}
#page-home .brand-band{
  order:-1;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;
  gap:clamp(28px,4vw,64px);width:100%;padding:28px var(--gutter)!important;
  border-bottom:1px solid #ececec;background:#fff!important}
#page-home .brand-heading{
  width:auto;max-width:none;margin:0!important;padding:0!important}
#page-home .brand-heading .section-head{margin:0!important;text-align:left!important}
#page-home .brand-heading h2{
  margin:0;max-width:none;white-space:nowrap;color:var(--ink)!important;
  font-size:clamp(20px,2vw,28px)!important;line-height:1.2!important;letter-spacing:-.035em}
#page-home .brand-marquee{min-width:0;width:100%}
#page-home .brand-set li{padding-inline:clamp(18px,2.2vw,34px)}
#page-home .brand-set img{height:52px;width:auto;max-width:none}
#page-home .brand-set .brand-word{height:52px;width:auto;max-width:170px;font-size:18px}

#page-home #notables{padding:clamp(90px,10vw,150px) 0!important}
#page-home #notables>.wrap{
  display:block}
#page-home #notables .section-head{
  max-width:920px;margin:0 auto clamp(52px,6vw,82px)!important;text-align:center!important}
#page-home #notables .section-head h2{
  max-width:none;margin:0!important;font-size:36px!important;text-align:center}
#page-home #notables .section-head p{
  max-width:620px;margin:24px auto 0!important;font-size:16px;text-align:center}
#page-home #notables .ppl{min-width:0;width:100%}
#page-home #notables .ppl-card{
  flex-basis:clamp(180px,20vw,250px);border-radius:var(--r-media)}
#page-home #notables .ppl-card:hover,
#page-home #notables .ppl-card:focus-within{flex-basis:clamp(200px,22vw,275px)}
#page-home #notables .ppl-name{font-size:21px}
#page-home #notables .ppl-role{font-size:14px!important}

@media(max-width:760px){
  #page-home .brand-band{grid-template-columns:max-content minmax(0,1fr);gap:18px;padding:22px 20px!important}
  #page-home .brand-heading h2{font-size:17px!important}
  #page-home .brand-set img{height:28px;max-width:92px}
  #page-home .brand-set .brand-word{height:28px;max-width:92px;font-size:12px}
  #page-home #notables .section-head{max-width:100%;margin-bottom:44px!important;text-align:center!important}
  #page-home #notables .section-head h2{max-width:none;font-size:36px!important;text-align:center}
  #page-home #notables .section-head p{text-align:center}
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover{flex-basis:min(68vw,260px)}
}

/* ===== 홈 히어로 단순화: 일반 라운드 프레임 안에 기업 마퀴까지 통합 ===== */
#page-home .hero-shell{
  position:relative;order:-2;width:100%;height:100svh;min-height:700px;
  overflow:hidden;background:#fff}
#page-home .hero-shell .hero{
  width:100%;height:100%;min-height:inherit;overflow:hidden;background:#fff}
#page-home .hero-shell .hero-stage{
  inset:6px;
  border-radius:var(--r-media);overflow:hidden;
  -webkit-mask:none!important;mask:none!important}
#page-home .hero-shell .hero-scrim{
  background:linear-gradient(180deg,rgba(0,0,0,.42) 0%,rgba(0,0,0,.08) 42%,rgba(0,0,0,.18) 61%,rgba(0,0,0,.74) 100%)}
#page-home .hero-shell .hero-copy{
  top:clamp(112px,15.5vh,150px);bottom:auto}
#page-home .hero-shell .hero-title{
  width:auto;max-width:min(1100px,90vw)!important;padding-top:0;
  font-size:70px!important;font-weight:600!important;
  line-height:1.16!important;letter-spacing:-.055em!important;white-space:normal;text-wrap:balance}
#page-home .hero-shell .hero-kicker{
  position:absolute;z-index:4;top:clamp(112px,15.5vh,150px);right:clamp(46px,5.5vw,86px);margin:0;
  color:#fff;font-size:14px;font-weight:500;letter-spacing:.035em;text-align:right}
#page-home .hero-shell .hero-actions{
  left:auto;right:clamp(34px,4.4vw,70px);bottom:112px;width:180px}
#page-home .hero-shell .hero-actions .btn{border-radius:var(--r-pill)!important}
#page-home .hero-shell .brand-band{
  position:absolute;z-index:6;left:clamp(34px,4.4vw,70px);right:clamp(34px,4.4vw,70px);bottom:34px;
  display:block;width:auto;height:108px;padding:0 16px!important;
  border:0;border-radius:0;
  background:transparent!important;color:#fff!important;
  backdrop-filter:none;-webkit-backdrop-filter:none;overflow:hidden;pointer-events:none}
#page-home .hero-shell .brand-heading{
  position:absolute;top:0;left:16px;right:16px;width:auto}
#page-home .hero-shell .brand-heading .section-head h2{
  color:#fff!important;font-size:14px!important;font-weight:500;line-height:1.18!important;letter-spacing:-.02em}
#page-home .hero-shell .brand-marquee::before{
  content:none!important;display:none!important}
#page-home .hero-shell .brand-marquee::after{
  content:none!important;display:none!important}
#page-home .hero-shell .brand-marquee{
  position:absolute;left:16px;right:16px;bottom:0;width:auto;overflow:hidden}
#page-home .hero-shell .brand-marquee:hover .brand-track{
  animation-play-state:running!important}
#page-home .hero-shell .brand-set{gap:0}
#page-home .hero-shell .brand-set li{padding-inline:22px}
#page-home .hero-shell .brand-set img{
  height:44px;max-width:none;filter:grayscale(1) brightness(0) invert(1)!important;
  opacity:.78;pointer-events:none;transform:none!important}
/* 규격 로고가 없는 곳은 흰 글자로 선다. 로고가 흰색 25px 이므로 여기서만 한 줄로 눕힌다 —
   히어로 띠는 높이가 108px 로 고정이라 두 줄이 되면 줄이 어긋난다. */
#page-home .hero-shell .brand-set .brand-word{
  height:44px;width:auto;max-width:none;
  font-size:18px;font-weight:500;white-space:nowrap;
  color:#fff!important;opacity:.78}
/* 띠 전체는 pointer-events:none 이라 히어로 조작을 가리지 않는다. 링크 타일만 되살린다.
   흐르는 표적은 누르기 어려우므로 «링크에 손이 닿을 때만» 멈춘다 — 빈 곳에 얹은 손은
   여전히 멈추지 않는다(히어로 마퀴는 계속 흐르기로 한 결정을 그대로 둔다). */
#page-home .hero-shell .brand-set a{pointer-events:auto}
#page-home .hero-shell .brand-marquee:has(a:hover) .brand-track{animation-play-state:paused!important}

@media(max-width:720px){
  #page-home .hero-shell{height:780px;min-height:780px}
  #page-home .hero-shell .hero-stage{inset:6px;border-radius:var(--r-media)}
  #page-home .hero-shell .hero-copy{left:24px;right:24px;top:106px;bottom:auto}
  #page-home .hero-shell .hero-title{
    font-size:clamp(38px,10vw,56px)!important;line-height:1.1!important}
  #page-home .hero-shell .hero-kicker{top:106px;right:24px;font-size:11px}
  #page-home .hero-shell .hero-actions{left:auto;right:24px;bottom:132px;width:180px}
  #page-home .hero-shell .brand-band{
    left:24px;right:24px;bottom:26px;height:98px;padding:0 12px!important;border-radius:0}
  #page-home .hero-shell .brand-heading{left:12px;right:12px}
  #page-home .hero-shell .brand-marquee{left:12px;right:12px}
  #page-home .hero-shell .brand-heading .section-head h2{font-size:12px!important}
  #page-home .hero-shell .brand-set li{padding-inline:16px}
  #page-home .hero-shell .brand-set img{height:34px;max-width:none}
  #page-home .hero-shell .brand-set .brand-word{height:34px;font-size:15px}
}

/* ===== About: 스크롤에 따라 문장이 차례로 들어오는 2열 소개 섹션 ===== */
#page-home .about-band{
  position:relative;min-height:330svh;padding:0;
  display:block;background:#fff;color:var(--ink);
  scroll-snap-align:none}
#page-home .about-layout{
  width:100%;max-width:none;padding:50px clamp(28px,5.94vw,68px)!important;
  display:grid;grid-template-columns:minmax(410px,.96fr) minmax(0,1.04fr);
  gap:clamp(44px,5.5vw,88px);align-items:start;
  position:absolute;inset:0 0 auto;height:86svh;overflow:hidden;background:#fff}
#page-home .about-layout.is-pinned{
  position:fixed;inset:7svh 0 auto;z-index:20}
#page-home .about-layout.is-complete{
  position:absolute;inset:auto 0 0}
#page-home .about-label{
  position:absolute;z-index:2;top:24px;left:24px;
  font-size:16px;font-weight:500;letter-spacing:-.02em;color:#000;
  text-shadow:none}
#page-home .about-label img{
  display:block;width:clamp(190px,22vw,280px);height:auto;max-width:calc(100% - 24px)}
#page-home .about-aside{position:relative;display:block;min-width:0}
#page-home .about-visual{
  position:relative;width:100%;margin:0;overflow:hidden;border-radius:var(--r-media);aspect-ratio:16/11;background:#eee}
#page-home .about-visual.reveal{transform:none}
#page-home .about-visual img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:center 48%;transform:none}
#page-home .about-copy{
  min-height:0;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:32px}
#page-home .about-intro{
  margin:0;color:#8a8a8a;font-size:21px;font-weight:400;
  line-height:1.65;letter-spacing:-.025em;
  opacity:0;transform:translateY(10px);transition:opacity .45s ease,transform .45s ease}
#page-home .about-copy h2{
  margin:0;max-width:none;font-size:36px;font-weight:600;
  line-height:1.5;letter-spacing:-.035em;text-wrap:pretty}
#page-home .about-action{
  width:auto;min-width:178px;margin:4px auto 0 0!important;align-self:flex-start!important;
  padding-inline:26px;background:var(--accent);color:#fff;
  justify-content:center;border-color:var(--accent);border-radius:var(--r-card)!important;
  opacity:0;transform:translateY(10px);pointer-events:none;
  transition:opacity .45s ease,transform .45s ease,background .25s ease}
#page-home .about-intro.is-read,#page-home .about-action.is-read{opacity:1;transform:none}
#page-home .about-action.is-read{pointer-events:auto}
#page-home .about-action:hover{background:var(--crimson-deep);border-color:var(--crimson-deep);color:#fff}
#page-home .about-reading-line{color:inherit}
#page-home .about-word{
  color:rgba(10,10,10,.18);transition:color .22s ease}
#page-home .about-word.is-read{color:var(--ink)}

@media(max-width:760px){
  #page-home .about-band{min-height:auto;padding:88px 0}
  #page-home .about-layout{grid-template-columns:1fr;gap:54px;position:relative;top:auto;height:auto;overflow:visible}
  #page-home .about-label{top:18px;left:18px}
  #page-home .about-visual{aspect-ratio:16/10}
  #page-home .about-copy{min-height:auto;gap:20px}
  #page-home .about-intro{font-size:16px;opacity:1;transform:none}
  #page-home .about-action{opacity:1;transform:none;pointer-events:auto}
  #page-home .about-copy h2{font-size:clamp(22px,6.4vw,30px);line-height:1.5}
  #page-home .about-reading-line{color:var(--ink)}
}

@media(min-width:761px) and (max-width:980px){
  #page-home .about-layout{
    grid-template-columns:minmax(320px,.9fr) minmax(0,1.1fr);gap:36px}
}

@media(min-width:761px) and (max-width:1200px){
  #page-home .about-copy h2{font-size:clamp(30px,3vw,36px);line-height:1.42}
}

@media(min-width:761px){
  #page-home .about-aside{height:min(72svh,700px)}
  #page-home .about-copy{height:min(72svh,700px)}
  #page-home .about-visual{height:100%;aspect-ratio:auto}
}

@media(prefers-reduced-motion:reduce){
  #page-home .about-word{color:var(--ink);transition:none}
}

/* ===== 명사: 세로 스크롤에 연결되는 정사각형 인물 갤러리 ===== */
:root{
  --profile-bg-1:#e4e2de;--profile-bg-2:#dfe2e1;--profile-bg-3:#e8e3dc;
  --profile-bg-4:#dde2e3;--profile-bg-5:#e5e1dc;--profile-bg-6:#dfe0e4;
  --profile-bg-7:#e8e6e1;--profile-bg-8:#dce2df}

@media(min-width:761px){
  #page-home #notables{
    height:auto;min-height:0;padding:clamp(88px,9vw,132px) 0 0!important;background:#fff}
  #page-home #notables>.wrap{
    position:relative;top:auto;height:auto;max-width:none;padding:0 clamp(28px,5.94vw,68px);
    display:flex;flex-direction:column;justify-content:center;overflow:hidden}
  #page-home #notables .section-head{
    width:100%;max-width:none;margin:0 0 clamp(38px,5vh,60px)!important;
    display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);
    align-items:start;gap:clamp(48px,8vw,128px);text-align:left!important}
  #page-home #notables .section-head h2{
    max-width:760px;margin:0!important;font-size:36px!important;
    line-height:1.35!important;text-align:left!important;text-wrap:balance}
  #page-home #notables .section-head p{
    max-width:440px;margin:0!important;padding-bottom:.35em;font-size:17px;
    line-height:1.75;text-align:left!important}
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:calc((100vw - (2 * clamp(28px,5.94vw,68px)) - 30px) / 4);
    flex:0 0 var(--ppl-card-size)!important;
    width:var(--ppl-card-size)!important;height:var(--ppl-card-size)!important;
    aspect-ratio:1/1!important;transform:none}
  #page-home #notables .ppl-arrow{display:none}
}

#page-home #notables .ppl-card:nth-child(8n+1){background:var(--profile-bg-1)!important}
#page-home #notables .ppl-card:nth-child(8n+2){background:var(--profile-bg-2)!important}
#page-home #notables .ppl-card:nth-child(8n+3){background:var(--profile-bg-3)!important}
#page-home #notables .ppl-card:nth-child(8n+4){background:var(--profile-bg-4)!important}
#page-home #notables .ppl-card:nth-child(8n+5){background:var(--profile-bg-5)!important}
#page-home #notables .ppl-card:nth-child(8n+6){background:var(--profile-bg-6)!important}
#page-home #notables .ppl-card:nth-child(8n+7){background:var(--profile-bg-7)!important}
#page-home #notables .ppl-card:nth-child(8n+8){background:var(--profile-bg-8)!important}

@media(min-width:761px){
  #page-home #notables .ppl-photo img{transform:scale(.88)}
  #page-home #notables .ppl-card:hover .ppl-photo img{transform:scale(.91)}
}

@media(max-width:760px){
  #page-home #notables{height:auto;min-height:0;padding:88px 0!important}
  #page-home #notables>.wrap{position:relative;height:auto;overflow:visible}
  #page-home #notables .ppl-viewport{scroll-snap-type:x mandatory}
  #page-home #notables .ppl-card{scroll-snap-align:start;scroll-snap-stop:always}
  #page-home #notables .section-head{
    display:grid;grid-template-columns:1fr;gap:22px;margin-bottom:42px!important;text-align:left!important}
  #page-home #notables .section-head h2,
  #page-home #notables .section-head p{margin:0!important;text-align:left!important}
  #page-home #notables .section-head p{font-size:15px;line-height:1.7}
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:min(78vw,330px);
    flex:0 0 var(--ppl-card-size)!important;
    width:var(--ppl-card-size)!important;height:var(--ppl-card-size)!important;
    aspect-ratio:1/1!important;transform:none}
}

/* notables의 최신 데스크톱 Pin 규칙은 위의 레이아웃 보정 뒤에 둬야 position이 유지된다. */
@media(min-width:761px){
  #page-home #notables{
    position:relative;height:var(--notables-pin-height,auto)!important;min-height:0;padding:0!important;overflow:visible!important}
  #page-home #notables>.wrap{
    position:relative!important;top:auto!important;height:auto!important;overflow:hidden!important}
  #page-home #notables.is-pin-active>.wrap{
    position:fixed!important;left:0;right:0;top:var(--notables-pin-top,12vh)!important;width:100%;z-index:20}
  #page-home #notables.is-pin-complete>.wrap{
    position:absolute!important;left:0;right:0;top:auto!important;bottom:0;width:100%}
  #page-home #notables .ppl-viewport{overflow-x:hidden;scroll-behavior:auto}
}

/* 카드 트랙은 화면 폭 전체를 쓰고, 양끝에는 잘림 방지용 최소 안전 여백만 둔다. */
#page-home #notables .ppl{
  --ppl-edge:clamp(16px,2vw,28px);
  width:100vw!important;max-width:none!important;
  margin-left:calc(-1 * clamp(28px,5.94vw,68px))!important}
#page-home #notables .ppl-track{padding-inline:var(--ppl-edge)!important}
@media(min-width:761px){
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:calc((100vw - (2 * var(--ppl-edge)) - 30px) / 4)!important;
    flex:0 0 var(--ppl-card-size)!important;width:var(--ppl-card-size)!important}
}
@media(max-width:760px){
  #page-home #notables .ppl{--ppl-edge:20px;margin-left:calc(-1 * var(--gutter))!important}
}

/* 최종 타이포·아이브로우·모눈 보정 */
#page-home .about-copy h2{font-size:40px}
@media(min-width:761px) and (max-width:1200px){
  #page-home .about-copy h2{
    font-size:clamp(30px,3vw,36px);
    line-height:1.42;
  }
}
#page-home .curriculum-card .curriculum-date{
  font-size:10px;font-weight:500;line-height:1.3;letter-spacing:.06em}
#page-home .curriculum-step-visual{
  background-color:#fff;
  background-image:
    linear-gradient(rgba(17,17,17,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(17,17,17,.055) 1px,transparent 1px);
  background-size:24px 24px;background-position:-1px -1px}
@media(max-width:760px){
  #page-home .about-copy h2{font-size:clamp(22px,6.4vw,30px)}
}

/* 섹션별 데스크톱 여백과 커리큘럼 진행 상태 최종 조정 */
#page-home{--wide-section-pad:clamp(32px,10.47vw,120px)}
#page-home .about-layout{padding:60px clamp(32px,8.73vw,100px)!important}
#page-home #notables>.wrap,
#page-home .program-layout{padding-left:var(--wide-section-pad);padding-right:var(--wide-section-pad)}
#page-home #notables .section-head{margin-bottom:30px!important}
#page-home #notables .ppl{margin-left:calc(-1 * var(--wide-section-pad))!important}
#page-home .hero-shell .hero-kicker{line-height:1.45}
#page-home .curriculum-step-visual{background-size:14px 14px,14px 14px}
#page-home .curriculum-step.is-pointed:not(.is-current) .curriculum-bar{background:#777;color:#fff}
#page-home .curriculum-step.is-pointed:not(.is-current) .curriculum-number{color:#777}
#page-home .curriculum-step.is-pointed:not(.is-current) .curriculum-card{
  background:#f2f2f2;border-color:#d6d6d6}
#page-home .curriculum-step.is-current .curriculum-bar{background:var(--accent);color:#fff}
#page-home .curriculum-step.is-current .curriculum-number{color:var(--accent)}

@media(max-width:760px){
  #page-home .about-layout{padding:50px 24px!important}
  #page-home #notables>.wrap,
  #page-home .program-layout{padding-left:24px;padding-right:24px}
  #page-home #notables .ppl{margin-left:-24px!important}
}

/* 홈 섹션 최종 간격·타이포·카드 스케일 조정 */
#page-home .about-layout{padding-top:80px!important;padding-bottom:80px!important}
#page-home #notables>.wrap,
#page-home .program-layout{padding-top:80px}
#page-home #news>.wrap{width:100%;max-width:none;padding-left:var(--wide-section-pad);padding-right:var(--wide-section-pad)}
#page-home #notables .section-head{margin-bottom:50px!important}
#page-home #notables .section-head h2{font-size:40px!important}
#page-home #notables .section-head p{font-size:21px!important}
#page-home #notables .ppl-card,
#page-home #notables .ppl-card:hover,
#page-home #notables .ppl-card:focus-within{
  --ppl-card-size:calc((100vw - (2 * var(--ppl-edge)) - 30px) / 4 - 14px)!important}
#page-home #notables .ppl-card::before{color:var(--accent);font-weight:700}
#page-home .about-label img{width:clamp(150px,17vw,210px)}

#page-home .program-intro .section-head{position:relative;display:block}
#page-home .program-intro .section-head h2{
  width:100%;max-width:none;margin:0;font-size:40px!important;line-height:1.35!important;letter-spacing:-.045em}
#page-home .program-intro .section-head h2 span{display:block;white-space:nowrap}
#page-home .program-intro .head-view-link{
  position:absolute;right:0;top:0;margin:0;color:var(--accent)!important;
  font-size:21px;font-weight:600}
#page-home .curriculum-card{
  height:220px;min-height:220px;grid-template-rows:28px 52px minmax(0,1fr)}

@media(max-width:760px){
  #page-home .about-layout{padding-top:64px!important;padding-bottom:64px!important}
  #page-home #notables>.wrap,
  #page-home .program-layout{padding-top:64px}
  #page-home #news>.wrap{padding-left:24px;padding-right:24px}
  #page-home #notables .section-head h2{font-size:34px!important}
  #page-home #notables .section-head p{font-size:17px!important}
  #page-home .program-intro .section-head h2{font-size:clamp(26px,7vw,34px)!important}
  #page-home .program-intro .section-head h2 span{white-space:normal}
  #page-home .program-intro .head-view-link{position:static;margin-top:20px;font-size:17px}
}

/* 홈 소식 헤더와 목록 하단 전체보기 액션 */
#page-home #news .section-head h2{font-size:40px!important;line-height:1.35!important;white-space:nowrap}
#page-home #news .section-head p{font-size:21px;line-height:1.7}
#page-home .news-more-link{
  width:100%;min-height:68px;margin-top:28px;padding:20px 0;
  display:flex;align-items:center;justify-content:space-between;
  border-top:1px solid #cfcfcf;border-bottom:1px solid #cfcfcf;
  color:var(--accent);font-size:18px;font-weight:600;letter-spacing:-.02em;
  transition:color .2s ease,padding .25s ease}
#page-home .news-more-link:hover{color:var(--crimson-deep);padding-left:8px;padding-right:8px}
#page-home .news-more-link span{font-size:24px;font-weight:400}

@media(max-width:760px){
  #page-home #news .section-head h2{font-size:34px!important;white-space:normal}
  #page-home #news .section-head p{font-size:17px}
}

/* KNA 소개 페이지 */
.kna-intro-page{background:#fff;color:var(--ink)}
.kna-intro-hero{position:relative;min-height:250px;padding:52px 64px 44px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:clamp(40px,5vw,72px);align-items:start;background:#fff;color:var(--ink)}
.kna-intro-hero__content{min-width:0}
.kna-intro-eyebrow{margin:0 0 22px;color:var(--accent);font-size:14px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.kna-intro-hero .kna-intro-eyebrow{color:var(--accent)}
.kna-intro-hero h1{margin:0;font-size:clamp(22px,2.35vw,34px);line-height:1.2;letter-spacing:-.045em;font-weight:600;white-space:nowrap}
.kna-intro-hero>p{max-width:520px;margin:0;font-size:19px;line-height:1.75;color:var(--ink-soft)}
.kna-intro-hero__content>p:last-child{max-width:720px;margin:32px 0 0;font-size:20px;line-height:1.75;color:var(--ink-soft)}
.kna-intro-hero__media{min-width:0;margin:0;aspect-ratio:3/2;max-height:560px;overflow:hidden;border-radius:var(--r-media);background:#e9eaeb}
.kna-intro-hero__media img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.kna-intro-hero__meta{position:absolute;right:120px;bottom:80px;display:flex;gap:28px;font-size:13px;color:var(--ink-soft)}
.kna-intro-section{padding:80px 120px clamp(100px,11vw,160px)}
.kna-intro-heading{margin-bottom:64px}
.kna-intro-heading h2,.kna-join h2{margin:0;font-size:40px;line-height:1.35;letter-spacing:-.045em}
.kna-intro-heading>p:last-child{max-width:600px;margin:26px 0 0;color:var(--ink-soft);font-size:19px;line-height:1.75}
.kna-intro-heading--split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:80px;align-items:end}
.kna-intro-heading--split>p:last-child{margin:0 0 4px}
.page>section.kna-history{height:auto;padding:0 80px;background:#fff;overflow:visible}
.kna-history__title{width:100%;min-height:0;display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-start;padding:0 0 20px}
.kna-history__title .kna-intro-eyebrow{margin:0 0 12px}
.kna-history__title h1{margin:0;font-size:40px;line-height:1.2;letter-spacing:-.05em;font-weight:600}
.kna-history__track{position:relative;height:var(--history-track-height,auto)}
.kna-history__pin{
  position:relative;height:calc(100vh - var(--header-h));padding:0;
  display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.kna-history__track.is-pin-active .kna-history__pin{
  position:fixed;z-index:4;top:var(--history-pin-top);left:var(--history-pin-left);
  width:var(--history-pin-width)}
.kna-history__track.is-pin-complete .kna-history__pin{
  position:absolute;top:var(--history-pin-distance);left:0;width:100%}
.kna-history__stage{width:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1.32fr) minmax(400px,.68fr);gap:clamp(36px,4vw,64px);align-items:start}
.kna-history__visual{position:relative;min-width:0;width:100%;margin:0;aspect-ratio:5/4;max-height:64vh;overflow:hidden;border-radius:var(--r-media);background:#dadcde}
.kna-history__visual img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transform:scale(1.04);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1)}
.kna-history__visual img.active{opacity:1;transform:scale(1)}
.kna-history__visual img[src$="kna-bottom-cta-white.png"]{object-fit:contain;background:#fff}
.kna-history__list{margin:0;padding:0;list-style:none;border-top:1px solid #c9cbcd}
.kna-history__list li{border-bottom:1px solid #c9cbcd}
.kna-history__list button{width:100%;padding:9px 0;display:grid;grid-template-columns:112px 1fr;gap:20px;align-items:center;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.kna-history__list .yr{color:var(--accent);font-size:18px;font-weight:700;line-height:1.2;letter-spacing:-.04em}
.kna-history__list b{font-size:19px;line-height:1.35}
.kna-history__list li>div{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .55s cubic-bezier(.22,1,.36,1),opacity .4s ease}
.kna-history__list li>div>p{min-height:0;overflow:hidden;margin:0;padding:0 0 0 132px;color:var(--ink-soft);font-size:12.5px;line-height:1.65;transition:padding .55s cubic-bezier(.22,1,.36,1)}
.kna-history__list li.active>div{grid-template-rows:1fr;opacity:1}
.kna-history__list li.active>div>p{padding-bottom:14px}
.kna-history__list li.active b{color:var(--accent)}
.kna-why{background:#fff}
.kna-why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.kna-why-grid article{min-height:320px;padding:28px;display:flex;flex-direction:column;border:1px solid #e0e1e2;border-radius:var(--r-card);background:#fff;transition:transform .25s ease,border-color .25s ease}
.kna-why-grid article:hover{transform:translateY(-6px);border-color:var(--accent)}
.kna-why-grid span{color:var(--accent);font-size:13px;font-weight:700}
.kna-why-grid h3{margin:auto 0 18px;font-size:24px;line-height:1.35;letter-spacing:-.035em}
.kna-why-grid p{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.7}
.kna-experience-visual{width:100%;margin:38px 0 64px;aspect-ratio:3.15/1;overflow:hidden;border-radius:var(--r-media);background:#e7e4df}
.kna-experience-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 53%}
.kna-experience-track{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:0;padding:42px 0 0;list-style:none;border-top:1px solid #cfd1d3}
.kna-experience-track li{position:relative;min-height:260px;padding:32px 28px 28px 0;border-right:1px solid #e1e2e3}
.kna-experience-track li:nth-child(4){margin-right:10px}
.kna-experience-track li::before{content:"";position:absolute;top:-48px;left:0;width:11px;height:11px;border-radius:var(--r-round);background:var(--accent);box-shadow:0 0 0 8px #fff}
.kna-experience-track span{color:var(--accent);font-size:13px;font-weight:700}
.kna-experience-track strong{display:block;margin:62px 0 16px;font-size:22px;line-height:1.35}
.kna-experience-track p{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.7}
.kna-curriculum{background:#fff}
.kna-phase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}
.kna-phase-grid article{min-height:230px;padding:28px;border-radius:var(--r-card);background:var(--crimson-deep);color:#fff;display:flex;flex-direction:column}
.kna-phase-grid article:nth-child(2){background:color-mix(in srgb,var(--accent) 88%,#000)}.kna-phase-grid article:nth-child(3){background:var(--accent)}
.kna-phase-grid span{color:#fff;font-size:13px;opacity:.72}.kna-phase-grid h3{margin:auto 0 10px;color:#fff;font-size:30px}.kna-phase-grid p{margin:0;max-width:320px;color:rgba(255,255,255,.82);line-height:1.65}
.kna-curriculum-details{border-top:1px solid #bbb}
.kna-curriculum-details details{border-bottom:1px solid #cfd0d1}
.kna-curriculum-details summary{min-height:82px;padding:0 4px;display:grid;grid-template-columns:60px 1fr auto;gap:20px;align-items:center;cursor:pointer;list-style:none}
.kna-curriculum-details summary::-webkit-details-marker{display:none}
.kna-curriculum-details summary span{color:var(--accent);font-size:13px;font-weight:700}.kna-curriculum-details summary strong{font-size:20px}.kna-curriculum-details summary em{color:var(--ink-soft);font-size:13px;font-style:normal}
.kna-curriculum-details details>div{padding:0 0 30px 84px;color:var(--ink-soft)}
.kna-curriculum-details details>div p{margin:9px 0;font-size:16px;line-height:1.55}
.kna-join{
  margin:0;
  min-height:clamp(430px,48vw,620px);
  padding:80px 120px clamp(90px,9vw,132px);
  background-color:#f7f7f5;
  background-image:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.02)),url("images/kna-bottom-cta-white.png");
  background-position:center bottom;
  background-size:cover;
  background-repeat:no-repeat;
  color:var(--ink);
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:32px;
  text-align:center
}
.kna-join>div>p:last-child{margin:24px 0 0;color:var(--ink-soft);font-size:18px}
.kna-join .kna-intro-eyebrow{text-align:center}
.kna-join__actions{display:flex;justify-content:center;gap:12px}.kna-join .btn{min-width:210px;min-height:58px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;font-weight:700}
.kna-join__secondary{border:1px solid var(--ink);color:var(--ink)}.kna-join__primary{background:var(--accent);color:#fff}
.kna-join .kna-join__primary{
  min-width:176px;
  min-height:46px;
  padding:8px 18px;
  font-size:16px;
  font-weight:500;
}

/* 공통 카테고리는 과한 볼드 대신 동일한 중간 굵기로 정돈한다. */
header nav.primary>a,
header .nav-dd>button{font-weight:500!important}
header .nav-dd-menu a,
header .nav-dd-menu a.active{font-weight:500!important}

@media(max-width:900px){
  .kna-intro-hero{grid-template-columns:1fr;gap:20px;padding:44px 48px 38px}
  .kna-intro-hero h1{white-space:normal}
  .kna-intro-hero__media{width:100%;max-height:none;aspect-ratio:16/10}
  .page>section.kna-history{height:auto;padding:0 48px 72px}.kna-history__title{min-height:0;padding:0 0 24px}.kna-history__track{height:auto}.kna-history__pin{position:static;height:auto;padding:0;display:block;overflow:visible}.kna-history__stage{grid-template-columns:1fr}.kna-history__visual{width:100%;max-height:none;aspect-ratio:16/10}.kna-history__list button{grid-template-columns:96px 1fr}.kna-history__list li>div>p{padding-left:116px}
  .kna-why-grid{grid-template-columns:repeat(2,1fr)}
  .kna-experience-visual{aspect-ratio:2.35/1;margin:32px 0 52px;border-radius:var(--r-media)}
  .kna-experience-track{grid-template-columns:repeat(3,1fr);row-gap:20px}
  .kna-phase-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .kna-intro-hero{min-height:0;padding:36px 24px 32px;gap:18px}.kna-intro-hero__content{width:100%}.kna-intro-hero h1{font-size:30px}
  .kna-intro-hero>p{font-size:17px}
  .kna-intro-hero__media{aspect-ratio:4/3}
  .kna-intro-hero__content>p:last-child{font-size:17px}.kna-intro-hero__meta{left:24px;right:auto;bottom:32px;gap:14px}
  .kna-intro-section{padding:88px 24px}.page>section.kna-history{padding:0 24px 64px}.kna-history__title{padding:0 0 20px}.kna-history__title h1{font-size:30px}.kna-history__pin{gap:32px}.kna-history__list button{grid-template-columns:92px 1fr;gap:12px}.kna-history__list .yr{font-size:16px}.kna-history__list b{font-size:16px}.kna-history__list li>div>p{padding-left:104px}.kna-intro-heading{margin-bottom:42px}.kna-intro-heading h2,.kna-join h2{font-size:34px}
  .kna-intro-heading--split{grid-template-columns:1fr;gap:24px}.kna-intro-heading--split>p:last-child{margin:0}
  .kna-experience-visual{aspect-ratio:1.8/1;margin:28px 0 44px;border-radius:var(--r-media)}.kna-experience-visual img{object-position:center 52%}
  .kna-why-grid,.kna-experience-track{grid-template-columns:1fr}.kna-why-grid article{min-height:240px}
  .kna-experience-track{border-top:0;padding-top:0}.kna-experience-track li{min-height:auto;padding:28px 0 28px 48px;border-right:0;border-top:1px solid #ddd}.kna-experience-track li:nth-child(4){margin-right:0}
  .kna-experience-track li::before{top:34px;left:4px;box-shadow:none}.kna-experience-track strong{margin:18px 0 10px}
  .kna-curriculum-details summary{grid-template-columns:42px 1fr}.kna-curriculum-details summary em{display:none}.kna-curriculum-details details>div{padding-left:62px}
  .kna-join{min-height:560px;padding:64px 24px 72px;display:flex;background-position:center bottom;background-size:auto 100%}.kna-join__actions{margin-top:0;flex-direction:column;width:100%}.kna-join .btn{width:100%}
}

/* 조직도: 흰 배경 위에서 좌우 가지가 중앙 집행부로 연결되는 플로우 다이어그램 */
#page-orgchart .section:first-of-type{
  padding:88px 0 104px;
  background:#fff;
}
#page-orgchart .section:first-of-type>.wrap{max-width:1180px}
#page-orgchart .section:first-of-type .section-head{
  display:grid;
  grid-template-columns:minmax(200px,.55fr) minmax(320px,1fr);
  gap:64px;
  align-items:end;
  margin-bottom:48px;
}
#page-orgchart .section:first-of-type .section-head h2{
  margin:0;
  font-size:clamp(38px,4.3vw,62px);
  line-height:1.05;
  letter-spacing:-.05em;
}
#page-orgchart .section:first-of-type .section-head p{
  max-width:560px;
  margin:0;
  font-size:17px;
  line-height:1.75;
}
#page-orgchart .chart{
  min-height:620px;
  padding:72px clamp(28px,5vw,72px);
  border:1px solid #ececee;
  border-radius:var(--r-media);
  background:#fff;
  overflow:visible;
}
#page-orgchart .chart-grid{
  grid-template-columns:minmax(170px,1fr) minmax(210px,1.08fr) minmax(170px,1fr);
  column-gap:clamp(54px,7vw,92px);
  row-gap:76px;
  max-width:980px;
}
#page-orgchart .chart-grid::before{
  content:'';
  position:absolute;
  z-index:0;
  top:44px;
  bottom:44px;
  left:50%;
  width:1px;
  background:#d8d8dc;
  transform:translateX(-50%);
  pointer-events:none;
}
#page-orgchart .node,
#page-orgchart .node.spine,
#page-orgchart .node.compact{
  z-index:1;
  min-height:72px;
  padding:14px 22px 15px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  border:1px solid #d9d9dd;
  border-radius:var(--r-pill);
  background:#fff;
  box-shadow:0 8px 30px rgba(17,17,17,.035);
}
#page-orgchart .node.hub{
  min-height:82px;
  border-color:var(--accent)!important;
  border-radius:var(--r-pill);
  background:var(--accent)!important;
  box-shadow:0 14px 36px rgba(199,20,48,.18);
}
#page-orgchart .node .role{
  color:#777;
  font-size:11px;
  letter-spacing:.04em;
}
#page-orgchart .node .names,
#page-orgchart .node.compact .names,
#page-orgchart .node.spine .names{
  margin-top:4px;
  font-family:var(--sans);
  font-size:15px;
  font-weight:600;
  line-height:1.35;
}
#page-orgchart .node.hub .names{font-size:19px}
#page-orgchart .node.spine::after{
  bottom:100%;
  height:76px;
  background:#d8d8dc;
}
#page-orgchart .chart-grid>.node[data-col="1"]::after,
#page-orgchart .chart-grid>.node[data-col="3"]::after,
#page-orgchart .chart-grid>.node-stack[data-col="1"]::after,
#page-orgchart .chart-grid>.node-stack[data-col="3"]::after{
  top:50%;
  width:clamp(54px,7vw,92px);
  background:#d8d8dc;
  opacity:1;
}
#page-orgchart .node-stack{gap:14px}
#page-orgchart .connector{height:38px;background:#d8d8dc}
#page-orgchart .branch-row{gap:16px}
#page-orgchart .branch-row .node{min-width:210px}

@media(max-width:900px){
  #page-orgchart .section:first-of-type{padding:64px 0 80px}
  #page-orgchart .section:first-of-type .section-head{grid-template-columns:1fr;gap:18px}
  #page-orgchart .chart{padding:48px 24px;overflow:hidden}
  #page-orgchart .chart-grid::before{display:none}
}

/* 공통 Header의 최종 계약: 라우트/스크롤 상태에 따른 과거 변형을 모두 상쇄한다. */
html body > header,
html body > header.at-top,
html body > header.at-top.dark-top,
html body > header.is-floating,
html body > header.is-hidden,
html body:has(.page.active) > header{
  position:sticky!important;
  inset:auto!important;
  top:0!important;
  width:100%!important;
  margin:0!important;
  background:#fff!important;
  color:var(--ink)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  box-shadow:none!important;
  transform:none!important;
}
html body > header .header-inner,
html body > header.at-top .header-inner,
html body > header.at-top.dark-top .header-inner,
html body > header.is-floating .header-inner,
html body:has(.page.active) > header .header-inner{
  width:100%!important;
  max-width:none!important;
  height:92px!important;
  margin:0!important;
  padding:20px clamp(24px,4.5vw,72px) 0!important;
  background:#fff!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body > header nav.primary{
  margin-left:clamp(18px,2.5vw,42px)!important;
  gap:6px!important;
}
html body > header nav.primary>a,
html body > header .nav-dd>button,
html body > header .related-dd>button,
html body > header .login-link{
  color:var(--ink)!important;
}
html body > header .logo img.logo-light{display:none!important}
html body > header .logo img.logo-dark{
  display:block!important;
  height:42px!important;
  filter:brightness(0) saturate(100%) invert(10%) sepia(73%) saturate(3720%) hue-rotate(342deg) brightness(70%) contrast(112%)!important;
}
html body > header .burger span{background:var(--ink)!important}

@media(max-width:760px){
  html body > header .header-inner,
  html body:has(.page.active) > header .header-inner{
    height:72px!important;
    padding:0 24px!important;
  }
}

/* ===== 홈에서만 헤더를 히어로 위에 얹는다 =====
   흰 헤더 계약(위 블록)의 예외는 이 한 곳뿐이다. 홈 최상단 배경이 히어로 영상이라
   헤더가 그 위에 뜨고 글자는 흰색으로 뒤집힌다. 다른 화면은 그대로 흰 헤더다. */
/* 히어로 위에 얹히지만 스크롤을 따라오지 않는다 — 히어로와 함께 위로 넘어간다 */
html body:has(#page-home.active) > header{
  position:absolute!important;
  top:0!important;
  background:transparent!important;
}
html body:has(#page-home.active) > header .header-inner{
  background:transparent!important;
}
html body:has(#page-home.active) > header nav.primary>a,
html body:has(#page-home.active) > header .nav-dd>button,
html body:has(#page-home.active) > header .related-dd>button,
html body:has(#page-home.active) > header .login-link{
  color:#fff!important;
}
html body:has(#page-home.active) > header .logo img.logo-dark{display:none!important}
html body:has(#page-home.active) > header .logo img.logo-light{
  display:block!important;
  height:42px!important;
  filter:none!important;
}
html body:has(#page-home.active) > header .burger span{background:#fff!important}
/* 드롭다운은 떠 있는 흰 판이라 글자색은 아래 드롭다운 블록이 정한다 */
/* 헤더가 흐름에서 빠지므로 히어로가 화면 맨 위까지 올라온다 */
html body:has(#page-home.active) #page-home .hero-shell{height:100svh}

/* ===== 하위 페이지 드롭다운 — 한 벌로 통일 =====
   흰 판 안에서 현재 위치와 hover를 크림슨 틴트 칩으로 표시한다. */
html body > header .nav-dd .nav-dd-menu,
html body > header .related-menu{
  padding:8px!important;
  border-radius:var(--r-card)!important;
  min-width:180px;
}
html body > header .nav-dd-menu a,
html body > header .related-menu a{
  padding:10px 12px!important;
  border-radius:var(--r-card)!important;
  line-height:1.4;
  color:#000!important;
  background:transparent!important;
}
html body > header .nav-dd-menu a{
  font-size:16px!important;
  font-weight:500!important;
}
html body > header .related-menu a{
  display:block!important;
  font-size:16px!important;
  font-weight:500!important;
}
html body > header .nav-dd-menu a:hover,
html body > header .nav-dd-menu a.active,
html body > header .related-menu a:hover{
  background:rgba(252,220,225,.7)!important;
  color:var(--accent)!important;
}

/* 로그인 화면도 홈처럼 배경 이미지 위에 투명 헤더를 겹친다. */
html body:has(#page-login.active) > header{
  position:absolute!important;
  top:0!important;
  background:transparent!important;
}
html body:has(#page-login.active) > header .header-inner{
  background:transparent!important;
}
html body:has(#page-login.active) > header nav.primary>a,
html body:has(#page-login.active) > header .nav-dd>button,
html body:has(#page-login.active) > header .related-dd>button,
html body:has(#page-login.active) > header .login-link{
  color:#fff!important;
}
html body:has(#page-login.active) > header .logo img.logo-dark{display:none!important}
html body:has(#page-login.active) > header .logo img.logo-light{
  display:block!important;
  height:42px!important;
  filter:none!important;
}
html body:has(#page-login.active) > header .burger span{background:#fff!important}

/* 로그인 화면의 헤더는 탐색 메뉴 대신 홈 복귀 경로 하나만 제공한다. */
.login-home-link{display:none}
html body:has(#page-login.active) > header .header-inner{
  justify-content:flex-start!important;
}
html body:has(#page-login.active) > header .logo{
  display:none!important;
}
html body:has(#page-login.active) > header nav.primary,
html body:has(#page-login.active) > header .header-right{
  display:none!important;
}
html body:has(#page-login.active) > header .login-home-link{
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:40px;
  margin-left:0;
  color:#fff;
  font-size:16px;
  font-weight:500;
  white-space:nowrap;
}
html body:has(#page-login.active) > header .login-home-link span{
  font-size:32px;
  font-weight:300;
  line-height:1;
  transform:translateY(-1px);
}
html body:has(#page-login.active) > header .login-home-link:hover{
  opacity:.72;
}

/* ===== 로그인 카드 — 첨부 시안의 단일 카드/스위치 구조 ===== */
#page-login .auth-wrap{width:min(100%,440px);max-width:440px}
#page-login .auth-card{
  padding:40px!important;
  border-radius:var(--r-media)!important;
  display:flex;
  flex-direction:column;
  gap:28px;
  align-items:stretch;
}
#page-login .auth-head{margin:0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:18px}
#page-login .auth-head img{width:54px;height:54px;object-fit:contain;filter:saturate(1.8) contrast(1.12)}
#page-login .auth-head h1{margin:0;font-size:32px;line-height:1.2;font-weight:600;letter-spacing:-.04em}
#page-login #memberLoginForm{display:flex;flex-direction:column}
#page-login .auth-field{display:flex;align-items:center;gap:12px;margin:0!important;border-bottom:1px solid #c8c8c8}
#page-login .auth-field>label:first-child{width:28px;font-size:0!important}
#page-login .auth-field>label:first-child::after{font-size:12px;font-weight:600;color:#a0a0a0}
#page-login .auth-field:first-child>label:first-child::after{content:'ID'}
#page-login .auth-field:nth-child(2)>label:first-child::after{content:'PW'}
#page-login .auth-field input{
  flex:1;min-width:0;padding:14px 0!important;background:transparent!important;
  border:0!important;border-radius:0!important;box-shadow:none!important;font-size:15px!important}
#page-login .auth-password-field{position:relative}
#page-login .auth-password-field input{padding-right:36px!important}
#page-login .password-toggle{
  position:relative;width:28px;height:36px;flex:0 0 28px;padding:0;background:transparent;cursor:pointer;color:#a0a0a0}
#page-login .password-toggle>svg{display:block;width:20px;height:20px;margin:auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#page-login .password-toggle[aria-pressed="true"]{color:var(--accent)}
#page-login .auth-options-row{
  display:flex;align-items:center;justify-content:center;gap:32px;margin:20px 0 26px}
#page-login .auth-keep{position:relative;flex:0 0 auto;width:auto!important;margin:0!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:12px!important;color:var(--ink-soft);cursor:pointer}
#page-login .auth-keep input{
  position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
}
#page-login .auth-toggle-track{
  position:relative;width:36px;height:20px;flex:0 0 36px;border-radius:var(--r-pill);background:#c8c8c8;
  transition:background .2s ease;
}
#page-login .auth-toggle-track>span{
  position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--r-round);background:#fff;
  box-shadow:0 1px 2px rgba(0,0,0,.12);transition:transform .2s ease;
}
#page-login .auth-keep input:checked + .auth-toggle-track{background:var(--accent)}
#page-login .auth-keep input:checked + .auth-toggle-track>span{transform:translateX(16px)}
#page-login .auth-keep input:focus-visible + .auth-toggle-track{outline:2px solid var(--accent);outline-offset:3px}
#page-login #memberLoginButton:disabled{
  background:#d3a7ad!important;border-color:#d3a7ad!important;color:#fff!important;cursor:not-allowed;opacity:1}
#page-login #memberLoginButton{font-size:16px}
#page-login #memberLoginForm>.social-list{margin-top:8px}
#page-login .auth-or{order:4;margin:0;font-size:12px;letter-spacing:0}
#page-login .auth-actions{order:5;width:100%;max-width:360px;align-self:center;display:flex;flex-direction:column;gap:8px}
#page-login .social-list{width:100%}
#page-login .social-btn{min-height:48px;padding:14px;border-radius:var(--r-pill)!important;font-size:16px}
#page-login .auth-links{
  order:6;width:min(100%,340px);align-self:center;margin:0;display:flex;flex-direction:column;gap:16px;font-size:13px}
#page-login .auth-signup-btn{
  display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:10px;
  border-radius:var(--r-pill);background:#eaeaea;color:#191919!important;font-size:16px;font-weight:600}
#page-login .auth-signup-btn:hover{background:#dedede;color:#191919!important}
#page-login .auth-find-link{text-align:center}
#page-login .auth-notice{order:7;margin:0}
#page-login .auth-error{order:8}
@media(max-width:520px){
  #page-login .auth-card{padding:32px 20px!important;gap:24px}
  #page-login .auth-head h1{font-size:28px}
}

/* ===== 교우 게시판 — 검색형 뉴스룸 카드 그리드 ===== */
#page-news>.section:first-child{padding:clamp(96px,11vw,150px) 0 120px!important;overflow:visible}
#page-news .news-board-wrap{width:min(1180px,calc(100% - 48px))}
#page-news .news-board-head{text-align:center;max-width:760px;margin:0 auto clamp(58px,7vw,84px)}
#page-news .news-board-eyebrow{margin:0 0 18px;color:var(--accent);font-size:13px;font-weight:700;letter-spacing:.14em}
#page-news .news-board-head h1{margin:0;font-size:clamp(42px,5vw,68px);line-height:1.12;letter-spacing:-.055em;font-weight:600}
#page-news .news-board-intro{margin:22px 0 0;color:#747474;font-size:17px;line-height:1.7}
#page-news .news-board-search{
  width:min(100%,580px);height:58px;margin:34px auto 0;padding:0 22px;display:flex;align-items:center;gap:12px;
  border:1px solid #dedede;border-radius:var(--r-pill);background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.035);transition:border-color .2s,box-shadow .2s}
#page-news .news-board-search:focus-within{border-color:var(--accent);box-shadow:0 8px 30px rgba(197,0,40,.08)}
#page-news .news-board-search svg{width:20px;height:20px;flex:0 0 20px;color:#222}
#page-news .news-board-search input{width:100%;padding:0;border:0!important;outline:0;background:transparent;font:inherit;font-size:15px;box-shadow:none!important}
#page-news .news-board-search input::placeholder{color:#aaa}
#page-news .news-board-toolbar{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:34px;border-bottom:1px solid #e0e0e0}
#page-news .news-tabs{display:flex;justify-content:center;gap:36px;margin:0!important;border:0!important}
#page-news .news-tab{position:relative;padding:0 2px 17px!important;border:0!important;border-radius:0!important;background:transparent!important;color:#777!important;font-size:15px!important;font-weight:500!important}
#page-news .news-tab::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent}
#page-news .news-tab.active{color:var(--accent)!important;font-weight:700!important}
#page-news .news-tab.active::after{background:var(--accent)}
/* 화면을 내려도 탭바와 함께 따라온다(요청서 1항). 배경을 깔지 않으면 카드가 비쳐 지나간다. */
#page-news .news-board-toolbar{position:sticky;top:var(--header-h);z-index:6;background:var(--paper);padding-top:10px}
/* 요청서 1항의 「붉은 원형 버튼」. **버튼 전체를 원형으로 만들지 않는다** —
   사이트 규칙이 「모서리는 2px 하나」라 알약을 하나 더 만들면 그 규칙이 깨진다.
   붉은 원은 «아이콘 판»이고 글자는 그 옆에 평범하게 선다. 둘 다 지켜진다.
   **세 게시판이 이 한 벌을 함께 쓴다** — 소식 · 교우 게시판 · 장학.
   여기에 자리(position)를 적지 않는다. 자리는 화면마다 다르고 모양은 같다. */
.news-board-write{display:inline-flex;align-items:center;gap:9px;padding:0;border:0;
  background:transparent;color:var(--ink);font-size:14px;font-weight:600;cursor:pointer}
.news-board-write .bw-ico{display:grid;place-items:center;width:30px;height:30px;
  border-radius:var(--r-round);background:var(--crimson);color:#fff}
.news-board-write .bw-ico svg{width:17px;height:17px}
.news-board-write:hover{color:var(--crimson)}
/* 소식 화면만 툴바가 가운데 정렬이라 단추를 오른쪽 끝에 띄워 앉힌다 */
#page-news .news-board-write{position:absolute;right:0;bottom:12px}
#page-news .news-board-status{margin:0 0 22px;color:#888;font-size:13px}
#page-news .news-editorial{display:block!important;overflow:visible!important;padding:0!important}
#page-news .news-board-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:64px 28px}
#page-news .news-board-card{min-width:0;display:flex;flex-direction:column;cursor:pointer}
#page-news .news-board-media{display:block;aspect-ratio:1.42/1;overflow:hidden;border-radius:var(--r-media);background:#f1f1f1}
#page-news .news-board-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
#page-news .news-board-card:hover .news-board-media img{transform:scale(1.035)}
#page-news .news-board-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 0 9px;font-size:12px}
#page-news .news-board-meta span{color:var(--accent);font-weight:700}
#page-news .news-board-meta time{color:#999;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
/* 제목 두 줄까지 보이고 그 뒤는 말줄임. word-break:keep-all 이 없으면 한글이 낱말 중간에서 끊긴다(요청서 3항) */
#page-news .news-board-card h2{margin:0;font-size:21px;line-height:1.42;letter-spacing:-.035em;font-weight:600;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all}
#page-news .news-board-card>p{word-break:keep-all}
#page-news .news-board-card .news-link{color:#111!important;text-decoration:none;transition:color .2s}
#page-news .news-board-card:hover .news-link{color:var(--accent)!important}
#page-news .news-board-card>p{margin:10px 0 0;color:#777;font-size:14px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#page-news .news-board-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
#page-news .news-board-tags span{padding:6px 9px;border-radius:var(--r-pill);background:#f4f4f4;color:#888;font-size:11px;line-height:1}
#page-news .news-board-empty{min-height:300px;padding:48px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--paper-2);color:#999;text-align:center}
#page-news .news-board-empty strong{color:#222;font-size:22px}
#page-news .news-board-join{border-radius:var(--r-card)}
#page-news .news-board-join .lock-ico{width:32px;height:32px;margin-bottom:8px;color:var(--ink-soft)}
#page-news .news-board-join>span{max-width:42em;line-height:1.7;color:var(--ink-soft)}
#page-news .news-board-join .btn{margin-top:16px}
#page-news .news-pagination{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:88px}
#page-news .news-page-numbers{display:flex;align-items:center;gap:8px}
#page-news .news-page-arrow,#page-news .news-page-number{width:40px;height:40px;display:grid;place-items:center;padding:0;border:1px solid #ddd;border-radius:var(--r-round);background:#fff;color:#555;font-size:15px;cursor:pointer;transition:.2s}
#page-news .news-page-arrow{font-size:25px;font-weight:300}
#page-news .news-page-number:hover,#page-news .news-page-arrow:hover:not(:disabled){border-color:#111;color:#111}
#page-news .news-page-number.active{border-color:#111;background:#111;color:#fff;font-weight:700}
#page-news .news-page-arrow:disabled{opacity:.28;cursor:default}
#page-news .news-page-ellipsis{width:30px;text-align:center;color:#aaa}

@media(max-width:900px){
  #page-news .news-board-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 22px}
  #page-news .news-board-write{position:static;margin-left:auto;margin-bottom:12px}
  #page-news .news-board-toolbar{justify-content:flex-start;gap:24px}
  #page-news .news-tabs{gap:24px}
}
@media(max-width:620px){
  #page-news>.section:first-child{padding:72px 0 80px!important}
  #page-news .news-board-wrap{width:min(100% - 32px,1180px)}
  #page-news .news-board-head{margin-bottom:46px}
  #page-news .news-board-head h1{font-size:38px}
  #page-news .news-board-intro{font-size:15px}
  #page-news .news-board-search{height:52px;margin-top:26px}
  #page-news .news-board-toolbar{display:block;overflow:visible}
  #page-news .news-tabs{justify-content:flex-start;gap:24px;overflow-x:auto}
  #page-news .news-board-write{margin:14px 0 10px auto}
  #page-news .news-board-status{margin-top:28px}
  #page-news .news-board-grid{grid-template-columns:1fr;gap:46px}
  #page-news .news-board-media{aspect-ratio:1.5/1}
  #page-news .news-board-card{display:flex!important}
  #page-news .news-board-card h2{font-size:20px}
  #page-news .news-pagination{gap:10px;margin-top:64px}
  #page-news .news-page-arrow,#page-news .news-page-number{width:36px;height:36px}
  #page-news .news-page-numbers{gap:5px}
}

/* ===== 하위 페이지 헤드 타이포·상단 리듬 최종 통일 =====
   sticky 헤더가 이미 흐름 안에 있으므로 페이지 자체에 헤더 높이를 다시 더하지 않는다. */
#page-news,#page-news-detail,#page-lounge,#page-greetings,#page-orgchart,#page-bylaws,
#page-admission,#page-apply,#page-companies,#page-scholarship,#page-kna-program,
#page-kna-curriculum,#page-kna-faculty{padding-top:0!important}

#page-news>.section:first-child,
#page-news-detail>.section:first-child,
#page-lounge>.section:first-child,
#page-orgchart>.section:first-child,
#page-admission>section.section:first-of-type,
#page-apply>.section:first-child,
#page-companies>.section:first-child,
#page-scholarship>.section:first-child,
#page-kna-curriculum>.section:first-child,
#page-kna-faculty>.section:first-child{padding-top:64px!important}
#page-bylaws>.layout{padding-top:56px!important}
#page-greetings .jump{margin-top:0!important}
#page-greetings .greet{padding-top:64px!important}

.page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .section-head h2,
.page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .page-hero h1,
#page-news .news-board-head h1,
#page-news-detail .art-title,
#page-greetings .greet-title,
#page-orgchart .section:first-of-type .section-head h2,
#page-kna-program .kna-history__title h1,
.kna-intro-heading h2,
.kna-join h2{
  /* 40px 을 직접 적지 않는다. 이 선택자는 :not(#id) 가 여섯이라 아이디 여섯 몫의
     특정도를 갖는다 — 페이지에서 이기려고 선택자를 늘리기 시작하면 끝이 없다.
     값을 변수로 열어 두면 정보 페이지가 --type-section-page 를 물려주는 것만으로 덮는다. */
  font-size:var(--type-section-page,40px)!important;
  line-height:var(--lh-title,1.28)!important;
  letter-spacing:-.045em!important;
  font-weight:600!important;
}

/* 교우마당 하위 페이지 — 비로그인 전용 교우 가입 CTA */
.community-join-cta{
  min-height:560px!important;
  padding:76px max(24px,var(--gutter)) 84px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  background-color:#fff!important;
}
.community-join-cta[hidden]{display:none!important}
.community-join-copy{display:flex;flex-direction:column;align-items:center}
.community-join-copy .kna-intro-eyebrow{margin:0 0 14px;color:var(--accent);font-size:13px;font-weight:700;letter-spacing:.14em}
.community-join-copy h2{margin:0;max-width:14ch;color:var(--ink)!important}
.community-join-copy>p:last-child{margin:20px 0 0;color:var(--ink-soft);font-size:17px;line-height:1.7}
.community-join-actions{display:flex;justify-content:center;gap:14px;margin-top:34px}
.community-join-actions .btn{min-width:190px;min-height:54px;display:inline-flex;align-items:center;justify-content:center;padding:10px 24px;border-radius:var(--r-pill);font-size:17px;font-weight:600}
.community-login-btn{background:var(--accent);border:1px solid var(--accent);color:#fff!important}
.community-signup-btn{background:#fff;border:1px solid var(--ink);color:var(--ink)!important}
.community-join-note{margin:24px 0 0!important;color:var(--ink-soft)!important;font-size:14px!important}

@media(max-width:760px){
  #page-news>.section:first-child,#page-news-detail>.section:first-child,#page-lounge>.section:first-child,
  #page-orgchart>.section:first-child,#page-admission>section.section:first-of-type,#page-apply>.section:first-child,
  #page-companies>.section:first-child,#page-scholarship>.section:first-child,
  #page-kna-curriculum>.section:first-child,#page-kna-faculty>.section:first-child{padding-top:40px!important}
  #page-bylaws>.layout{padding-top:32px!important}
  #page-greetings .greet{padding-top:44px!important}
  .page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .section-head h2,
  .page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .page-hero h1,
  #page-news .news-board-head h1,#page-news-detail .art-title,#page-greetings .greet-title,
  #page-orgchart .section:first-of-type .section-head h2,#page-kna-program .kna-history__title h1,
  .kna-intro-heading h2,.kna-join h2{font-size:var(--type-section-page,32px)!important;line-height:var(--lh-title,1.3)!important}
  .community-join-cta{min-height:500px!important;padding:56px 24px 64px!important}
  .community-join-copy>p:last-child{font-size:15px}
  .community-join-actions{width:100%;max-width:360px;flex-direction:column;gap:10px;margin-top:28px}
  .community-join-actions .btn{width:100%;min-width:0}
}

/* 회칙·규정도 다른 교우마당 하위 페이지와 같은 시작 간격을 쓴다. */
#page-bylaws>.layout{padding-top:40px!important}
#page-bylaws>.community-join-cta{margin-top:0!important}

/* ===== 헤더 계정 드롭다운 =====
   로그인하면 헤더 오른쪽에 서는 것은 이것 하나다. 알약 배지 두 벌(교우·관리자)을 걷어낸 자리다.
   골격은 언어 드롭다운(.related-dd)을 그대로 쓴다 — 새 컴포넌트를 만들지 않으므로 헤더 높이도
   글자 색 반전(홈·로그인 화면)도 이미 있는 규칙이 그대로 따라온다. */
html body>header .acct-dd>button{
  gap:6px;
  max-width:210px;
  font-size:15px;
  font-weight:600;
}
html body>header .acct-dd .lbl{display:inline-flex;align-items:center;gap:6px;min-width:0}
html body>header .acct-dd #acctLabel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 검수 대기가 있으면 이름 옆에 점 하나. 숫자는 열어야 나온다 —
   닫힌 헤더에 숫자를 적으면 담당 유무에 따라 사람마다 헤더 폭이 달라진다. */
html body>header .acct-dd .acct-dot{
  width:6px;height:6px;border-radius:var(--r-round);background:var(--accent);flex:0 0 auto}
html body:has(#page-home.active)>header .acct-dd .acct-dot{background:#fff}

/* 메뉴 첫 줄은 누구로 들어와 있는지다. 누르는 자리가 아니므로 링크와 다른 층으로 적는다. */
html body>header .related-menu .acct-who{
  padding:12px 12px 10px;
  font-size:13px;
  font-weight:600;
  color:var(--ink-soft);
  white-space:nowrap;
}
/* ===== 교우 활동 모드 =====
   사이트를 두 방으로 나눈다 — 읽는 곳(공개)과 활동하는 곳(교우).
   헤더 한 줄에 메뉴를 늘어놓던 방식은 걷어냈다. 다섯 개가 들어가자 자리가 없어 «교우 게시판과
   교우기업으로 가는 문» 이 아예 빠졌고 그래서 로그인한 교우가 게시판을 볼 수 없었다.
   길은 왼쪽 사이드 한 곳에 모은다 — 늘어도 세로로 늘어나므로 자리를 다투지 않는다.

   **활동 모드는 판 두 장이다.** 회색 바닥 위에 사이드 한 장 · 본문 한 장이 떠 있다.
   공개 화면이 «흰 종이에 인쇄한 것» 이라면 여기는 «책상 위의 서류» 다 — 읽는 곳과 일하는
   곳을 배경 하나로 가른다. 그림자를 쓰는 것은 이 둘이 «떠 있는 판» 이기 때문이다
   (버튼·카드·표에는 쓰지 않는다는 규칙은 그대로다).
   헤더는 그대로 92px 이고 로고 자리도 그대로다. */
.side-nav{display:none}
.member-title{display:none}
html body.member-mode>header nav.primary{display:none!important}
/* 메뉴가 사라진 자리에 여기가 어디인지 적는다. 헤더 폭 가운데에 절대 위치로 앉힌다 —
   흐름에 두면 로고·언어 단추 폭에 따라 가운데가 조금씩 어긋난다. */
html body.member-mode>header .member-title{
  display:block;position:absolute;left:50%;transform:translateX(-50%);
  font-size:15px;font-weight:600;color:#fff;white-space:nowrap;pointer-events:none}
html body.member-mode>header .member-title i{
  font-style:normal;margin:0 6px;color:rgba(255,253,249,.55)}
html body.member-mode>header .header-inner{position:relative}

html body.member-mode{--member-header-h:72px;min-height:100dvh;background:var(--paper-2)}
html body.member-mode .side-nav{
  display:flex;flex-direction:column;gap:22px;
  position:fixed;left:var(--shell-x);top:calc(var(--member-header-h) + var(--shell-y));
  width:var(--side-w);max-height:calc(100dvh - var(--member-header-h) - var(--shell-y) * 2);z-index:90;
  padding:0;
  background:transparent;border-radius:0;box-shadow:none;
  overflow-y:auto;overscroll-behavior:contain}
/* 본문도 한 장의 판이다. 사이드 폭 + 틈만큼 물러나고 나머지 세 변은 바닥 여백이다 */
html body.member-mode .page.active{
  min-height:calc(100dvh - var(--member-header-h) - var(--shell-y) * 2);
  margin:var(--shell-y) var(--shell-x) var(--shell-y)
         calc(var(--shell-x) + var(--side-w) + 24px);
  background:var(--white);border-radius:var(--r-card);box-shadow:var(--shadow);
  overflow:hidden}
/* 판 «안»에서는 섹션이 배경을 칠하지 않는다. 흰 판 위에 회색 띠가 겹치면 판이 둘로 보인다 */
html body.member-mode .page .section,
html body.member-mode .page .section.alt,
html body.member-mode .page .network-band{background:transparent}
/* 공개 화면의 150px 여백은 판 안에서 낭비다 */
html body.member-mode .page>.section{padding:44px 0}
/* 판 «안»의 좌우 여백. 선택자를 늘려 .wrap 을 이기려 하지 말고 변수를 물려준다 —
   28px 은 화면 끝에서 재는 값이라 판 안에서는 글이 모서리에 붙는다. */
html body.member-mode .page{--gutter:40px}
/* 활동 모드에는 푸터를 두지 않는다. 화면이 판 한 장으로 끝나고 사무국 안내는 공개 화면 몫이다 */
html body.member-mode>footer{display:none}
/* 대시보드가 혼자 서 있던 시절의 머리·발이다 — 로그인 이름·로그아웃·홈으로 돌아가기.
   사이드가 셋을 다 갖고 있으므로 판 안에서는 감춘다. 같은 것이 한 화면에 둘 서지 않는다. */
html body.member-mode #page-admin-dashboard .dash-head .who,
html body.member-mode #page-admin-dashboard>.back,
html body.member-mode #page-admin-dashboard .back{display:none}

.side-me{padding:24px 18px 20px;display:flex;flex-direction:column;align-items:center;
  background:var(--white);border-radius:var(--r-card);box-shadow:none;text-align:center}
.side-avatar{position:relative;order:1!important;width:58px;height:58px;aspect-ratio:1;margin:0 0 12px!important;border-radius:50%;overflow:hidden;background:#d8d8da}
.side-avatar::before{content:'';position:absolute;left:50%;top:12px;width:17px;height:17px;transform:translateX(-50%);border-radius:50%;background:#fff}
.side-avatar::after{content:'';position:absolute;left:50%;bottom:8px;width:34px;height:19px;transform:translateX(-50%);border-radius:20px 20px 9px 9px;background:#fff}
.side-me span{order:3;display:block;margin-top:3px;font-size:13px;color:var(--ink-soft);line-height:1.4}
.side-me b{order:2;display:block;font-size:16px;font-weight:700;color:var(--ink);line-height:1.35}
.side-me .side-admin-link{order:4;width:100%;justify-content:center;margin-top:18px;padding:10px 12px!important;background:#fff0f2;color:var(--crimson)!important;border-radius:12px!important;font-size:13px!important}
.side-me .side-admin-link:hover{background:#ffe5e9;color:var(--crimson-deep)!important}

.side-links{display:flex;flex-direction:column;gap:2px;padding:22px 18px;
  background:var(--white);border-radius:var(--r-card);box-shadow:none}
html body.member-mode .side-nav a{
  display:flex;align-items:center;gap:8px;
  padding:9px 10px;border-radius:var(--r-flat);
  font-size:15px;font-weight:600;color:var(--ink-soft);
  text-decoration:none;transition:color .16s ease}
html body.member-mode .side-nav a:hover{color:var(--ink)}
/* 아이콘은 «글자 옆»이라 em 이다. 15px 글자에 1.3em 은 커서 줄이 아이콘 줄로 읽힌다 —
   1.15em 으로 낮추고 면도 옅게 깐다. 그림이 글자를 앞서지 않게 하는 건
   빼는 것이 아니라 내리는 것이다. 지금 있는 줄과 손이 닿은 줄에서만 또렷해진다 */
html body.member-mode .side-nav a .act-ico{
  width:1.15em;height:1.15em;opacity:.5;transition:opacity .16s ease}
html body.member-mode .side-nav a:hover .act-ico,
html body.member-mode .side-nav a.active .act-ico{opacity:1}
/* 현재 위치는 크림슨 글자다. 떠 있는 흰 판 위라 면을 또 깔면 판이 둘이 된다 */
html body.member-mode .side-nav a.active{color:var(--accent)}
/* 검수 대기 수 — 헤더 계정 알약의 것과 같은 물건이다 */
.side-n{margin-left:auto;min-width:20px;padding:2px 7px;border-radius:var(--r-pill);
  background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;text-align:center}
/* 계정 알약은 공개 모드의 것이다. 활동 모드에서는 사이드가 같은 일을 하므로 둘이 겹치지 않는다 */
html body.member-mode>header .acct-dd{display:none!important}

/* 좁은 화면 — 판 두 장을 위아래로 쌓는다. 자리를 옮기는 것이지 항목을 줄이지 않는다 */
@media(max-width:900px){
  html body.member-mode .side-nav{
    position:fixed;left:0;right:0;top:var(--member-header-h);width:100%;height:64px;max-height:none;z-index:999;
    margin:0;padding:8px 16px;display:flex;flex-direction:row;align-items:center;gap:14px;overflow:hidden;
    background:var(--accent)}
  html body.member-mode .side-me{display:flex;flex:0 0 auto;flex-direction:row;align-items:center;gap:8px;padding:0;background:transparent;text-align:left}
  html body.member-mode .side-me .side-avatar{width:38px;height:38px;margin:0!important;background:rgba(255,255,255,.25)}
  html body.member-mode .side-me .side-avatar::before{top:8px;width:11px;height:11px}
  html body.member-mode .side-me .side-avatar::after{bottom:5px;width:23px;height:13px}
  html body.member-mode .side-me #sideName{order:2;color:#fff;font-size:15px;font-weight:800;white-space:nowrap}
  html body.member-mode .side-me #sideWho,
  html body.member-mode .side-me .side-admin-link{display:none!important}
  html body.member-mode .side-links{
    min-width:0;flex:1;flex-direction:row;flex-wrap:nowrap;gap:2px;padding:0;background:transparent;overflow-x:auto;scrollbar-width:none}
  html body.member-mode .side-links::-webkit-scrollbar{display:none}
  html body.member-mode .side-nav a{flex:0 0 auto;margin:0;padding:9px 10px;color:rgba(255,255,255,.82);font-weight:750;white-space:nowrap}
  html body.member-mode .side-nav a.active,
  html body.member-mode .side-nav a:hover{color:#fff}
  html body.member-mode .side-nav a .act-ico{opacity:.75;stroke:currentColor}
  html body.member-mode .page.active{
    min-height:0;margin:80px var(--shell-x) var(--shell-y)}
  html body.member-mode>header .member-title{display:none}
}

/* ===== 들어가는 문 =====
   공개 화면에서 「교우 페이지로 ›」 하나만 헤더에 선다. **나오는 문은 헤더에 없다** —
   활동 모드의 길은 전부 사이드에 모으기로 했고 사이드 맨 아래 「‹ 홈페이지로」가 그 일을 한다.
   골격은 .btn 을 그대로 쓴다(다른 곳에서 .btn 을 다시 정의하지 않는다) — 여기서 정하는 것은
   헤더 한 줄에 맞춘 높이와 자리뿐이다. */
.member-enter{display:none}
html body>header .member-enter{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:40px;
  padding:10px 18px;
  margin-right:2px;
  /* 헤더에서만 알약이다. 계정 알약·언어 단추와 한 줄에 서므로 모서리를 맞춘다 —
     본문 단추의 2px 규칙은 그대로다. */
  border-radius:var(--r-pill);
  font-size:14.5px;
  font-weight:600;
  line-height:1.2}
html body.member-mode>header .member-enter{display:none!important}

/* ===== 나오는 문과 로그아웃 =====
   활동 모드에서만 헤더 오른쪽에 선다. 알약(들어가는 문)과 달리 «글자» 다 —
   이미 찾고 있는 문이라 소리칠 이유가 없고 크림슨 면 위에서 알약 셋이 서면 띠가 시끄럽다. */
.member-exit,.member-logout{display:none}
html body.member-mode>header .member-exit,
html body.member-mode>header .member-logout{
  display:inline-flex;align-items:center;gap:4px;
  padding:8px 10px;font-size:14px;font-weight:600;
  color:rgba(255,253,249,.8);white-space:nowrap;transition:color .16s ease}
html body.member-mode>header .member-exit:hover,
html body.member-mode>header .member-logout:hover{color:#fff}

/* 계정 이름은 이름표처럼 보여서 눌러 볼 생각을 못 한다. 화살표로 «열리는 자리»임을 알린다 */
html body>header .acct-dd .acct-caret{
  width:16px;height:16px;flex:0 0 auto;opacity:.75;
  transition:transform .2s ease}
html body>header .acct-dd.open .acct-caret{transform:rotate(180deg);opacity:1}
/* 쉬고 있을 때도 누를 수 있는 자리로 보이게 옅은 면을 깐다 — 테두리를 긋지 않는 규칙 그대로다 */
html body>header .acct-dd>button{background:var(--paper-2);border-radius:var(--r-pill)}
html body>header .acct-dd>button:hover{background:#e6e6e6}
/* 홈은 헤더가 영상 위에 뜬다. 회색 면은 거기서 얼룩이 되므로 반투명 흰색으로 내린다 */
html body:has(#page-home.active)>header .acct-dd>button{background:rgba(255,255,255,.18)}
html body:has(#page-home.active)>header .acct-dd>button:hover{background:rgba(255,255,255,.3)}

/* ===== 활동 모드는 헤더를 «크림슨»으로 세운다 =====
   메뉴만 바꿔서는 두 방이 구분되지 않는다는 지적을 받은 자리다. 새 색은 만들지 않았다 —
   사이트의 강조색 `--accent` 그대로다.
   **크림슨 면 위에서는 크림슨이 강조로 못 쓰인다.** 그래서 이 헤더 안에서는 강조가 «흰색»으로
   뒤집힌다 — 현재 위치 밑줄도 · 나가는 문 테두리도 · 계정 알약도 전부 흰색 계열이다.
   어두운 배경에서 새 색을 만들지 말고 반투명 흰색으로 내리는 규칙 그대로다. */
html body.member-mode>header,
html body.member-mode>header .header-inner,
html body.member-mode:has(.page.active)>header,
html body.member-mode:has(.page.active)>header .header-inner{background:var(--accent)!important}
/* 흰 헤더 계약은 `padding:20px … 0` 을 쓴다 — 위가 20px 두껍고 아래가 0 이다.
   헤더가 흰색일 때는 면이 없어 안 보이던 어긋남인데 크림슨 면이 깔리자 그대로 드러났다.
   여기서는 위아래를 0 으로 두고 `align-items:center` 에 맡긴다 — 92px 안에서 정확히 가운데다.
   **공개 헤더는 건드리지 않았다.** 거기서 20px 을 걷으면 모든 화면에서 로고가 10px 올라간다. */
html body.member-mode>header .header-inner,
html body.member-mode:has(.page.active)>header .header-inner{
  height:72px!important;padding-top:0!important;padding-bottom:0!important}
/* 언어 단추를 먼저 내린다. 계정 알약은 «그 뒤»에 적는다 —
   .acct-dd 도 .related-dd 라 특정도가 같고 순서가 곧 승부다. 순서를 바꾸면 이름이 흐려진다. */
html body.member-mode>header .related-dd>button{color:rgba(255,253,249,.8)!important}
/* 계정 알약도 회색 면 대신 반투명 흰색이다 */
html body.member-mode>header .acct-dd>button{background:rgba(255,255,255,.18);color:#fff!important}
html body.member-mode>header .acct-dd>button:hover{background:rgba(255,255,255,.32)}
html body.member-mode>header .acct-dd .acct-dot{background:#fff}

/* 로고는 이미 흰 판(.logo-light)이 있다 — 홈이 쓰던 것을 그대로 쓴다 */
html body.member-mode>header .logo img.logo-dark{display:none!important}
html body.member-mode>header .logo img.logo-light{
  display:block!important;height:42px!important;filter:none!important}
html body.member-mode>header .burger span{background:#fff!important}


html body>header .related-menu .acct-hide{display:none!important}
/* 사이드의 대시보드 줄도 같은 열쇠로 감춘다 — 총관리자가 아니면 자리 자체가 없다 */
html body.member-mode .side-nav .acct-hide{display:none!important}
html body>header .related-menu .acct-out{color:var(--accent)!important}
html body>header .related-menu .acct-n{
  margin-left:10px;
  padding:1px 8px;
  border-radius:var(--r-pill);
  background:var(--accent);
  color:#fff;
  font-size:12px;
  font-weight:700;
}

@media(max-width:760px){
  #page-bylaws>.layout{padding-top:28px!important}
  html body>header .member-enter{min-height:38px;padding:9px 13px;font-size:13.5px}
  html body>header .acct-dd>button{max-width:150px;padding:9px 8px}
  html body>header .acct-dd #acctLabel{max-width:96px}
}

/* 게시판 상단 — 제목·검색만 남긴 컴팩트한 한 줄 헤더 */
#page-news>.section:first-child{padding-top:48px!important}
#page-news .news-board-head{max-width:1000px;margin-bottom:42px!important}
#page-news .news-board-eyebrow{margin-bottom:12px}
#page-news .news-board-head h1{
  font-size:40px!important;
  line-height:1.2!important;
  white-space:nowrap;
}
#page-news .news-board-search{
  width:min(100%,680px);
  height:54px;
  margin-top:24px;
  border:0;
  background:#f1f2f3;
  box-shadow:none;
}
#page-news .news-board-search:focus-within{border:0;background:#e9ebed;box-shadow:none}

/* 홈 소개 카피 — 넓은 화면에서도 읽기 좋은 세 줄 리듬을 유지한다. */
#page-home .about-copy h2{
  max-width:none;
  font-size:clamp(22px,2.05vw,36px);
  line-height:1.5;
  white-space:nowrap;
}

@media(max-width:760px){
  #page-news>.section:first-child{padding-top:36px!important}
  #page-news .news-board-head{margin-bottom:34px!important}
  #page-news .news-board-head h1{font-size:30px!important;white-space:normal}
  #page-news .news-board-search{height:50px;margin-top:20px}
  #page-home .about-copy h2{white-space:normal}
  #page-home .about-copy h2 br{display:none}
}

/* ===== Mobile compatibility contract ===== */
@media(max-width:760px){
  :root{--gutter:20px;--header-h:72px}
  html,body{max-width:100%;overflow-x:clip}
  body.mobile-nav-open{overflow:hidden}
  img,video,svg{max-width:100%}

  html body>header{z-index:1000!important}
  html body>header .header-inner,html body:has(.page.active)>header .header-inner{height:72px!important;padding:0 20px!important}
  html body>header .logo{position:relative;z-index:2}
  html body>header .logo img.logo-dark,html body:has(#page-home.active)>header .logo img.logo-light{height:38px!important;width:38px!important}
  html body>header .burger{display:grid!important;place-content:center;width:44px;height:44px;padding:10px;position:relative;z-index:1002}
  html body>header .burger span{display:block;width:22px;height:2px;margin:2.5px 0;transition:transform .2s ease,opacity .2s ease}
  html body>header .burger.active span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  html body>header .burger.active span:nth-child(2){opacity:0}
  html body>header .burger.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  html body>header .login-link{min-height:44px;display:inline-flex;align-items:center;padding:0 8px}
  html body>header .acct-dd>button{min-height:44px}
  /* 활동 모드에서는 버거가 열 것이 없다. 길이 헤더가 아니라 사이드에 있고
     사이드는 좁은 화면에서 헤더 아래 가로 띠로 눕는다 — 접었다 펴는 판이 아니다. */
  html body.member-mode>header .burger{display:none!important}

  html body>header nav.primary,html body:has(#page-home.active)>header nav.primary{
    display:none!important;position:fixed!important;inset:72px 0 0!important;width:100%!important;height:calc(100dvh - 72px)!important;
    margin:0!important;padding:24px 20px 40px!important;overflow-y:auto!important;overscroll-behavior:contain;
    flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:4px!important;
    background:#fff!important;color:var(--ink)!important;z-index:1001!important
  }
  html body>header nav.primary.mobile-open,
  html body:has(#page-home.active)>header nav.primary.mobile-open{display:flex!important}
  html body>header nav.primary .nav-dd{width:100%;border-bottom:1px solid #e6e6e6}
  html body>header nav.primary .nav-dd>button{width:100%;min-height:54px;padding:0 4px;display:flex;align-items:center;justify-content:space-between;color:var(--ink)!important;font-size:20px!important}
  html body>header nav.primary .nav-dd-menu{position:static!important;width:100%;min-width:0!important;margin:0!important;padding:0 0 10px 10px!important;transform:none!important;box-shadow:none!important;border:0!important;border-radius:0!important;background:#fff!important}
  html body>header nav.primary .nav-dd-menu a{min-height:44px;display:flex;align-items:center;padding:8px 12px!important;font-size:16px!important;color:var(--ink)!important}
  html body>header .mobile-only-extra{padding-top:14px}
  html body>header .mobile-only-extra a,html body>header .mobile-only-extra .m-lang{min-height:44px;display:inline-flex;align-items:center}

  .section,.kna-intro-section{padding-top:56px;padding-bottom:64px}
  .wrap,.kna-intro-section,.kna-history__pin{min-width:0}
  .page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .section-head h2,
  .page:not(#page-home):not(#page-login):not(#page-join):not(#page-social-join):not(#page-admin):not(#page-admin-dashboard) .page-hero h1,
  #page-news .news-board-head h1,#page-news-detail .art-title,#page-greetings .greet-title,
  #page-orgchart .section:first-of-type .section-head h2,#page-kna-program .kna-history__title h1,
  .kna-intro-heading h2,.kna-join h2{font-size:var(--type-section-page,clamp(28px,8.5vw,36px))!important;line-height:var(--lh-title,1.25)!important;overflow-wrap:anywhere}

  #page-home .hero-shell{min-height:100svh;height:100svh}
  #page-home .hero-shell .hero-copy{left:20px!important;right:20px!important;width:auto!important;max-width:calc(100vw - 40px)!important}
  #page-home .hero-title{font-size:clamp(38px,12vw,56px)!important;line-height:.98!important}
  #page-home .about-band{min-height:0!important}
  #page-home .about-inner{grid-template-columns:1fr!important;gap:34px!important;padding-inline:20px!important}
  #page-home .about-copy h2{font-size:clamp(25px,7.4vw,32px)!important;line-height:1.42!important;text-wrap:balance}
  #page-home #notables .ppl-viewport{width:100vw!important;margin-left:-20px!important;padding-inline:20px!important;overflow-x:auto!important;scroll-snap-type:x mandatory!important;scrollbar-width:none}
  #page-home #notables .ppl-track{padding-inline:0!important;gap:12px!important}
  #page-home #notables .ppl-card,#page-home #notables .ppl-card:hover,#page-home #notables .ppl-card:focus-within{--ppl-card-size:min(78vw,300px);flex:0 0 var(--ppl-card-size)!important;width:var(--ppl-card-size)!important;height:var(--ppl-card-size)!important}
  #page-home #program .program-layout{min-height:0!important;padding:64px 20px!important}

  #page-greetings .jump{max-width:100%;overflow:hidden!important}
  #page-greetings .jump .wrap{width:100%!important;padding:10px 20px!important;display:flex!important;gap:8px!important;overflow-x:auto!important;scrollbar-width:none;scroll-snap-type:x proximity}
  #page-greetings .jump button{flex:0 0 auto!important;min-width:max-content!important;min-height:44px!important;padding:10px 14px!important;scroll-snap-align:start}
  #page-bylaws .toc{margin-inline:20px;padding:4px!important;overflow-x:auto!important;scrollbar-width:none;scroll-snap-type:x proximity;border-radius:var(--r-card)!important}
  #page-bylaws .toc a{min-height:44px;display:flex!important;align-items:center;scroll-snap-align:start}
  #page-news .news-tabs{width:100%;padding:0 2px 8px!important;overflow-x:auto!important;scrollbar-width:none;scroll-snap-type:x proximity}
  #page-news .news-tabs::-webkit-scrollbar{display:none}
  #page-news .news-tab{flex:0 0 auto;min-width:56px;min-height:44px;scroll-snap-align:start}
  #page-news .news-board-search{width:100%}
  #page-news .news-page-arrow,#page-news .news-page-number{min-width:44px;width:44px;height:44px}

  .adm-table-wrap{position:relative;margin-inline:-20px;padding:0 20px 10px;overflow-x:auto;scrollbar-width:thin;scroll-snap-type:x proximity}
  .adm-table{min-width:500px}.adm-table th,.adm-table td{padding:12px 10px}
  .adm-table-wrap::after{content:'좌우로 밀어 전체 내용을 확인하세요';display:block;position:sticky;left:0;margin-top:8px;color:var(--ink-soft);font-size:12px}
  #page-companies .co-filter-row{overflow-x:auto;flex-wrap:nowrap!important;padding-bottom:8px;scrollbar-width:none}
  #page-companies .co-filter-row button{flex:0 0 auto;min-height:44px}
  #page-kna-program .kna-history__list button{min-height:52px;padding:10px 0}
  #page-orgchart .chart{padding:32px 16px!important}

  #page-login .auth-card{width:100%;max-width:calc(100vw - 32px);padding:30px 20px!important}
  #page-login .password-toggle{width:44px!important;height:44px!important;right:-8px!important}
  #page-join .back-link,#page-news-detail .art-back{min-height:44px;display:inline-flex;align-items:center;padding:8px 4px}
  footer .footer-col a,footer .footer-bottom a{min-height:44px;display:flex;align-items:center}
}

@media(max-width:360px){
  :root{--gutter:16px}
  html body>header .header-inner,html body:has(.page.active)>header .header-inner{padding-inline:16px!important}
  #page-home .hero-shell .hero-copy{left:16px!important;right:16px!important;max-width:calc(100vw - 32px)!important}
  #page-home .hero-title{font-size:36px!important}
  .community-join-cta{padding-inline:16px!important}
  .kna-intro-section,.page>section.kna-history{padding-left:16px!important;padding-right:16px!important}
}

/* 모바일 연혁: 이미지 스테이지만 고정하고 목록의 중앙 진입으로 내용을 전환한다. */
@media(max-width:900px){
  #page-kna-program .kna-history__stage{display:block!important}
  #page-kna-program .kna-history__visual{
    position:sticky!important;top:calc(var(--header-h) + 12px)!important;z-index:4;
    width:100%!important;height:auto!important;aspect-ratio:16/10!important;margin:0 0 18px!important;
    background:#e7e8e9;box-shadow:0 8px 24px rgba(17,17,17,.08)
  }
  #page-kna-program .kna-history__list{position:relative;z-index:3;background:#fff}
  #page-kna-program .kna-history__list li{min-height:32svh;display:flex;flex-direction:column;justify-content:center;background:#fff}
  #page-kna-program .kna-history__list button{flex:0 0 auto}
  #page-kna-program .kna-history__list li>div>p{background:#fff}
}

/* 모바일 교우 카드: 사진과 인물 정보를 분리한 caption 카드. */
@media(max-width:760px){
  #page-home #notables .ppl-card,
  #page-home #notables .ppl-card:hover,
  #page-home #notables .ppl-card:focus-within{
    --ppl-card-size:min(66vw,260px)!important;
    display:grid!important;grid-template-rows:var(--ppl-card-size) 40px 58px!important;
    flex:0 0 var(--ppl-card-size)!important;width:var(--ppl-card-size)!important;
    height:auto!important;aspect-ratio:auto!important;overflow:hidden!important;
    background:#fff!important;border:1px solid #e5e5e5!important;border-radius:var(--r-media)!important}
  #page-home #notables .ppl-photo{position:relative!important;inset:auto!important;width:100%!important;height:100%!important;aspect-ratio:auto!important;background:var(--profile-bg-2);overflow:hidden}
  #page-home #notables .ppl-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom}
  #page-home #notables .ppl-card::after{display:none!important}
  #page-home #notables .ppl-card::before{top:14px;right:14px;color:var(--accent)!important;text-shadow:none}
  #page-home #notables .ppl-name,#page-home #notables .ppl-role{
    position:static!important;left:auto!important;right:auto!important;bottom:auto!important;
    color:var(--ink)!important;text-shadow:none!important;white-space:normal!important
  }
  #page-home #notables .ppl-name{display:flex;align-items:end;padding:10px 14px 2px!important;font-size:16px!important;line-height:1.2!important;font-weight:600;overflow:hidden!important}
  #page-home #notables .ppl-role{display:-webkit-box!important;padding:5px 14px 12px!important;font-size:12px!important;line-height:1.35!important;color:var(--ink-soft)!important;overflow:hidden!important;-webkit-box-orient:vertical;-webkit-line-clamp:2}
}


/* ============ 글쓰기 에디터 — 리프레시 레이어 뒤에 세운다 ============
   앞쪽(1240줄대)에 같은 이름의 규칙이 있지만 그 뒤로 사이트 전체를 다시 칠한 층이 와서
   폭·높이가 되돌려진다. 그래서 **이 층 뒤에** 한 번 더 적는다 — !important 로 이기는 대신
   순서로 이긴다. 색은 리프레시 층의 것을 그대로 쓴다(입력칸 #f2f2f2 · 포커스 검정 안쪽선). */
/* 폭은 `max-width` 가 아니라 `width:min(100%,760px)` 로 잡혀 있다(2330줄).
   max-width 만 키우면 아무 일도 일어나지 않는다 — 같은 칸을 고쳐야 한다. */
.modal-box.wide{width:min(100%,920px);max-width:920px}
.modal-box.wide.is-full{width:min(96vw,1280px);max-width:none;max-height:94vh}

#postModal .editor{background:#f2f2f2;overflow:visible}
#postModal .editor-bar{
  display:flex;align-items:center;gap:2px;padding:10px;background:#f2f2f2;flex-wrap:wrap;
  position:sticky;top:0;z-index:2}
#postModal .editor-bar button{
  min-height:0;height:34px;padding:0 10px;border:0;background:transparent;color:#111;
  font-size:12.5px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;border-radius:0}
#postModal .editor-bar button:hover{background:#fff}
#postModal .editor-bar button:disabled{opacity:.45;cursor:default}
#postModal .editor-div{width:12px}
#postModal #previewBtn,#postModal #wideBtn{color:var(--crimson)}

#postModal .editor textarea{
  min-height:360px;padding:24px 26px;background:#fff;
  font-size:16px;line-height:1.9;color:#111;resize:vertical}
/* 포커스 안쪽선은 전역 규칙(2142줄, !important 크림슨)이 정한다 — 여기서 다시 칠하지 않는다.
   색을 지정해 봐야 죽은 줄이 되고, 나중에 «왜 안 먹지» 를 한 번 더 만든다. */
#postModal .editor textarea:focus{background:#fff}
/* **미리보기를 켜도 글칸이 그대로 남아 있었다.** `togglePostPreview()` 는 `hidden` 을 세우는데
   앞 층의 `.editor textarea{display:block}` 이 그걸 이겨서, 미리보기와 원문이 위아래로 같이
   떴다. `hidden` 을 세우는 쪽이 이기게 되돌린다 — 두 칸 다 같은 규칙을 받는다. */
#postModal .editor textarea[hidden],#postModal .editor-preview[hidden]{display:none!important}
.modal-box.wide.is-full #postModal .editor textarea,
#postModal .modal-box.is-full .editor textarea{min-height:60vh}
#postModal .editor-hint{margin-top:10px;color:#666;font-size:12px;line-height:1.7}

#postModal .emoji-pad{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:2px;
  padding:12px;background:#fff;max-height:180px;overflow-y:auto}
#postModal .emoji-pad button{
  min-height:0;height:36px;border:0;background:transparent;font-size:20px;line-height:1;cursor:pointer;border-radius:0}
#postModal .emoji-pad button:hover{background:#f2f2f2}

/* 미리보기 = 실제 게시 모습. 소식 상세와 같은 서식 규칙을 쓴다 */
#postModal .editor-preview{
  min-height:360px;padding:24px 26px;background:#fff;color:#111;font-size:16px;line-height:1.9}
#postModal .editor-preview h2{font-size:24px;font-weight:700;letter-spacing:-.03em;margin:28px 0 12px;color:#0a0a0a}
#postModal .editor-preview h3{font-size:19px;font-weight:700;margin:24px 0 10px;color:#111}
#postModal .editor-preview h4{font-size:16px;font-weight:700;margin:20px 0 8px}
#postModal .editor-preview>*:first-child{margin-top:0}
#postModal .editor-preview p{margin:0 0 16px}
/* 전역에서 `ul{list-style:none}` 이라 되살려 준다 — 글 안의 목록은 점이 있어야 목록으로 읽힌다 */
#postModal .editor-preview ul{list-style:disc}
#postModal .editor-preview ol{list-style:decimal}
#postModal .editor-preview ul,#postModal .editor-preview ol{margin:0 0 16px;padding-left:22px}
#page-news-detail .art-body ul{list-style:disc}
#page-news-detail .art-body ol{list-style:decimal}
#postModal .editor-preview li{margin:5px 0}
#postModal .editor-preview blockquote{margin:0 0 18px;padding:14px 20px;background:#f2f2f2;border-left:3px solid var(--crimson);color:#111}
#postModal .editor-preview hr{border:0;height:1px;background:#e2e2e2;margin:30px 0}
#postModal .editor-preview a{color:var(--crimson);text-decoration:underline}

@media (max-width:600px){
  #postModal .editor textarea,#postModal .editor-preview{min-height:44vh;padding:16px 16px;font-size:15.5px}
  #postModal .editor-bar{padding:8px 6px}
  #postModal .editor-bar button{padding:0 7px;font-size:12px}
  #postModal .emoji-pad{grid-template-columns:repeat(auto-fill,minmax(36px,1fr));max-height:140px}
  #wideBtn{display:none}
}

/* ======================================================================
   행사 · 참석 응답 · 방문 통계
   기존 토큰만 조합한다. 회색 경계선을 긋지 않고 면과 여백으로 나눈다.
   그림자는 떠 있는 판(응답 카드)에만 쓴다.
   ====================================================================== */

/* ── 교우가 보는 행사 목록 ── */
.event-list{display:flex;flex-direction:column;gap:14px}
.ev-card{background:var(--paper-2);border-radius:var(--r-card);padding:22px 24px}
.ev-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ev-head h3{margin:0;font-size:19px}
.ev-scope{background:var(--crimson-soft);color:var(--crimson-deep);
  font-size:12px;font-weight:700;padding:3px 9px;border-radius:var(--r-pill)}
.ev-when{margin:6px 0 0;color:var(--ink-soft);font-size:14px}
.ev-detail{margin:8px 0 0;font-size:15px}
.ev-count{margin:10px 0 0;font-weight:700;font-size:15px}
.ev-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}
.ev-mine{font-size:13px;color:var(--ink-soft)}
.ev-demo-label{padding:3px 8px;border-radius:var(--r-pill);background:var(--white);color:var(--ink-soft);
  font-size:11px;font-weight:600}
.ev-card-demo .btn:disabled{opacity:.48;cursor:not-allowed;transform:none}
.ev-closed{margin:12px 0 0;font-size:14px;color:var(--ink-soft)}
.empty-note{color:var(--ink-soft)}
.lock-note{background:var(--paper-2);border-radius:var(--r-card);padding:28px;text-align:center}
.lock-note p{margin:0 0 14px;color:var(--ink-soft)}

/* ── 문자로 받은 링크를 여는 화면 ──
   화면에 이것 하나뿐이라 가운데 세우고 넓이를 좁힌다. 장년 독자층이라
   글자를 키우고 버튼을 전폭으로 둔다 — 눌러야 할 것이 둘뿐이어야 한다. */
.rsvp-wrap{max-width:520px}
.rsvp-card{background:var(--paper);border-radius:var(--r-card);padding:34px 32px;box-shadow:var(--shadow)}
.rsvp-who{margin:0 0 6px;color:var(--crimson);font-weight:700;font-size:15px}
.rsvp-card h3{margin:0 0 10px;font-size:24px;line-height:1.35}
.rsvp-when{margin:0;color:var(--ink-soft);font-size:16px}
.rsvp-detail{margin:14px 0 0;font-size:15px}
.rsvp-mine{margin:14px 0 0;font-size:14px;color:var(--ink-soft)}
.rsvp-actions{display:flex;flex-direction:column;gap:10px;margin-top:22px}
.rsvp-actions .btn{font-size:17px;padding:15px 20px}
.rsvp-comp{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:18px;font-size:15px;font-weight:700}
.rsvp-comp select{background:var(--paper-2);border:0;border-radius:var(--r-field);
  padding:10px 12px;font:inherit;font-weight:600}
.rsvp-comp select:focus{outline:0;box-shadow:inset 0 0 0 2px var(--crimson)}
.rsvp-note{margin:16px 0 0;font-size:13px;color:var(--ink-soft)}
.rsvp-closed{margin:16px 0 0;font-weight:700;color:var(--crimson)}
.rsvp-loading{margin:0;color:var(--ink-soft)}

/* ── 사무국 화면 ── */
.event-form{display:flex;flex-direction:column;gap:10px;
  background:var(--paper-2);border-radius:var(--r-field);padding:20px 22px;margin-bottom:14px}
.event-form-row{display:flex;gap:10px;flex-wrap:wrap}
.event-form-row>*{flex:1;min-width:150px}
.event-form input,.event-form select{background:var(--paper);border:0;border-radius:var(--r-field);
  padding:11px 13px;font:inherit}
.event-form input:focus,.event-form select:focus{outline:0;box-shadow:inset 0 0 0 2px var(--crimson)}
.event-form .btn{align-self:flex-start}
.dash-hint{font-size:13px;color:var(--ink-soft);margin:0 0 14px}
.ev-admin-list{display:flex;flex-direction:column;gap:10px}
.ev-admin{display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;background:var(--paper-2);border-radius:var(--r-card);padding:16px 20px}
.ev-admin-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.ev-admin-main span{font-size:13px;color:var(--ink-soft)}
.ev-mint-out{margin-top:14px}

/* ── 방문 요약 넷 ── */
.visit-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:12px;margin-bottom:14px}
.visit-cell{background:var(--paper-2);border-radius:var(--r-card);padding:20px}
.visit-cell b{display:block;font-size:28px;line-height:1.2;font-variant-numeric:tabular-nums}
.visit-cell span{display:block;margin-top:4px;font-size:13px;color:var(--ink-soft)}


/* ============ 글쓰기 — 사진·통계·수정 ============ */
/* 글칸에 사진을 끌어오는 중 — 테두리 대신 안쪽 크림슨 선으로 «여기에 떨어진다» 를 말한다 */
#postModal .editor textarea.is-over{box-shadow:inset 0 0 0 2px var(--crimson)}
#postModal .photo-drop.is-busy{opacity:.6;cursor:progress}

/* 힌트와 글자수는 한 줄에서 좌우로 갈린다 — 줄을 하나 더 쓰지 않는다 */
#postModal .editor-foot{display:flex;align-items:baseline;gap:12px;margin-top:10px}
#postModal .editor-foot .editor-hint{margin:0;flex:1}
#postModal .post-stats{color:#666;font-size:12px;white-space:nowrap}

/* 이모지 — 최근/자주 두 묶음으로 나눈다 */
#postModal .emoji-pad{display:block;padding:12px}
#postModal .emoji-group + .emoji-group{margin-top:10px}
#postModal .emoji-label{display:block;margin-bottom:4px;color:#888;font-size:11px;font-weight:700;letter-spacing:.02em}
#postModal .emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:2px}

/* 고치는 중 안내 — 새 글과 헷갈리면 남의 글을 덮어쓴 줄 안다 */
#postModal .edit-note{background:#fff8e6;color:#7a5b00;padding:10px 12px;margin-top:10px}

/* 내 글 한 줄 — 단추가 둘로 늘었고 반려 사유가 아래 붙는다 */
.my-post-row{flex-wrap:wrap}
.my-post-row .mp-reason{
  flex:0 0 100%;margin:6px 0 0;padding:8px 10px;background:#f2f2f2;
  color:#111;font-size:12.5px;line-height:1.6}
.my-post-row .mp-reason b{color:var(--crimson)}
/* 등재관리 표 — 반려 사유가 있으면 상태 옆에 표시를 남긴다(마우스를 올리면 전문) */
.reason-chip{
  margin-left:6px;padding:1px 6px;background:#f2f2f2;color:#666;
  font-size:11px;cursor:help;vertical-align:middle}

/* ── 경조사 · 비둘기 · 소개 요청 ── */
.event-form textarea{background:var(--paper);border:0;border-radius:var(--r-field);
  padding:12px 13px;font:inherit;min-height:96px;resize:vertical;width:100%}
.event-form textarea:focus{outline:0;box-shadow:inset 0 0 0 2px var(--crimson)}

.pigeon-inbox-title{margin:34px 0 14px;font-size:18px}
.pigeon-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:24px;padding:5px;border-radius:14px;background:#f1f1f3}
.pigeon-tab{min-height:44px;padding:10px 14px;border:0;border-radius:10px;background:transparent;color:var(--ink-soft);font:600 13px var(--sans);cursor:pointer}
.pigeon-tab.active{background:#fff;color:var(--crimson);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.pigeon-panel{display:none}
.pigeon-panel.active{display:block}
.pigeon-panel .pigeon-inbox-title{margin-top:0}
.pigeon-panel[data-pigeon-panel="compose"] .event-form{margin-top:0}
.pigeon-anon{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}
.pigeon-replies{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.pigeon-reply{margin:0;background:var(--paper);border-radius:var(--r-card);padding:12px 14px;font-size:14px}
.pigeon-reply-input{flex:1;min-width:180px;background:var(--paper);border:0;border-radius:var(--r-field);
  padding:10px 12px;font:inherit;font-size:14px}
.pigeon-reply-input:focus{outline:0;box-shadow:inset 0 0 0 2px var(--crimson)}

/* 비둘기가 나는 자리. 새 색을 만들지 않고 크림슨 하나만 쓴다.
   그림자는 넣지 않는다 — 떠 있는 판이 아니다. */
.pigeon-sky{position:relative;height:150px;border-radius:var(--r-media);overflow:hidden;
  background:var(--paper-2);margin-bottom:14px}
.pigeon-bird{position:absolute;left:34px;bottom:34px;width:40px;height:30px;
  color:var(--crimson);opacity:0}
.pigeon-bird svg{width:100%;height:100%;display:block;overflow:visible}
.pigeon-wing{transform-origin:26px 20px}
.pigeon-sky.flying .pigeon-bird{animation:pigeon-fly 1.5s cubic-bezier(.4,0,.7,.4) forwards}
.pigeon-sky.flying .pigeon-wing{animation:pigeon-flap .26s ease-in-out infinite}
@keyframes pigeon-fly{
  0%{opacity:0;transform:translate(0,0) rotate(0) scale(.7)}
  12%{opacity:1;transform:translate(20px,-16px) rotate(-8deg) scale(.85)}
  55%{opacity:1;transform:translate(200px,-80px) rotate(-13deg) scale(1)}
  100%{opacity:0;transform:translate(460px,-140px) rotate(-16deg) scale(.72)}
}
@keyframes pigeon-flap{
  0%,100%{transform:rotate(0) scaleY(1)}
  50%{transform:rotate(-26deg) scaleY(.5)}
}
.pigeon-sent{position:absolute;left:34px;bottom:26px;margin:0;
  font-size:15px;font-weight:700;color:var(--crimson);opacity:0;transform:translateY(6px)}
.pigeon-sky.flying .pigeon-sent{animation:pigeon-sent-in .5s ease .95s forwards}
@keyframes pigeon-sent-in{to{opacity:1;transform:translateY(0)}}
/* 사이트 전역이 animation-duration 을 0 으로 눌러 두므로 그냥 두면 비둘기가
   순간이동 뒤 사라진다. 아예 감추고 결과 문구만 남긴다. */
@media(prefers-reduced-motion:reduce){
  .pigeon-bird{display:none}
  .pigeon-sky.flying .pigeon-sent{opacity:1;transform:none;animation:none}
}
.pigeon-reject{margin:10px 0 0;background:var(--paper);border-radius:var(--r-card);
  padding:11px 13px;font-size:14px;color:var(--crimson-deep)}
/* 입학 첫 화면은 공통 하위 페이지 여백보다 촘촘하게 시작한다. */
body #page-admission>section.section:first-of-type{padding-top:52px!important}
@media(max-width:760px){body #page-admission>section.section:first-of-type{padding-top:34px!important}}

/* ===== 입학 안내 타이포 최종 정렬 =====
   홈의 섹션 타이틀(40px/600)과 동일한 인상을 유지하되,
   정보 페이지는 40 > 24 > 18 > 16 > 14px의 명확한 위계로 제한한다. */
#page-admission{
  --adm-type-display:40px;
  --adm-type-section:40px;
  --adm-type-subsection:24px;
  --adm-type-component:18px;
  --adm-type-body:16px;
  --adm-type-meta:14px;
}
#page-admission>.section{padding-top:96px;padding-bottom:96px}
#page-admission>.section>.wrap{
  width:100%;
  max-width:none;
  padding-left:80px;
  padding-right:80px;
}
#page-admission>section.section:first-of-type>.adm-overview{max-width:none}
#page-admission .adm-hero-copy>h2{
  font-family:var(--sans);
  font-size:var(--adm-type-display)!important;
  font-weight:600;
  line-height:1.28;
  letter-spacing:-.045em;
}
#page-admission .adm-lead,
#page-admission>section.section:not(:first-of-type) .section-head p{
  font-size:var(--adm-type-body);
  font-weight:400;
  line-height:1.75;
  letter-spacing:-.03em;
}
#page-admission>section.section:not(:first-of-type) .section-head h2{
  max-width:none;
  font-family:var(--sans);
  font-size:var(--adm-type-section)!important;
  font-weight:600!important;
  line-height:1.28!important;
  letter-spacing:-.045em!important;
}
#page-admission .adm-overview>.adm-h,
#page-admission .adm-h{
  margin-top:48px;
  font-family:var(--sans);
  font-size:var(--adm-type-subsection)!important;
  font-weight:600;
  line-height:1.35;
  letter-spacing:-.03em;
}
#page-admission .adm-qualifications h3,
#page-admission .adm-steps b,
#page-admission .adm-cta b,
#page-admission .adm-faq summary{
  font-family:var(--sans);
  font-size:var(--adm-type-component);
  font-weight:600;
  line-height:1.45;
  letter-spacing:-.03em;
}
#page-admission .adm-apply-panel h3{
  font-family:var(--sans);
  font-size:var(--adm-type-subsection);
  font-weight:600;
  line-height:1.35;
  letter-spacing:-.03em;
}
#page-admission .adm-list,
#page-admission .adm-facts,
#page-admission .adm-table,
#page-admission .adm-faq p{
  font-size:var(--adm-type-body);
  font-weight:400;
  line-height:1.75;
  letter-spacing:-.03em;
}
#page-admission .adm-qualifications .adm-list,
#page-admission .adm-steps em,
#page-admission .adm-steps li>span:last-child,
#page-admission .adm-apply-panel>span,
#page-admission .adm-apply-panel p,
#page-admission .adm-apply-panel small,
#page-admission .adm-note,
#page-admission .adm-cta span{
  font-size:var(--adm-type-meta);
  letter-spacing:-.03em;
}

@media(max-width:760px){
  #page-admission{
    --adm-type-display:32px;
    --adm-type-section:32px;
    --adm-type-subsection:22px;
    --adm-type-component:17px;
    --adm-type-body:15px;
    --adm-type-meta:13px;
  }
  #page-admission>.section{padding-top:64px;padding-bottom:64px}
  #page-admission>.section>.wrap{padding-left:24px;padding-right:24px}
  #page-admission .adm-overview>.adm-h,
  #page-admission .adm-h{margin-top:40px}
}

@media(min-width:761px) and (max-width:900px){
  #page-admission>.section>.wrap{padding-left:48px;padding-right:48px}
}

@media(max-width:360px){
  #page-admission>.section>.wrap{padding-left:16px;padding-right:16px}
}

/* ============ KNA 과정 · 최고의 석학과 전문가 ============
   66줄짜리 촘촘한 표다. 격자선을 긋지 않고 얼룩(--paper-2)으로 행을 나눈다.
   좁은 화면에서는 표만 가로로 흐르게 두고 본문은 절대 밀지 않는다. */
.kna-faculty-list{padding-top:0}
.faculty-meta{margin:0 0 14px;font-size:12.5px;color:var(--ink-soft);letter-spacing:.02em}
.faculty-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.faculty-table{border-collapse:collapse;width:100%;min-width:680px;font-size:14px}
table.faculty-table th{
  padding:12px 14px;text-align:left;background:var(--crimson);color:var(--white);
  font-size:12.5px;font-weight:600;letter-spacing:.02em;white-space:nowrap}
table.faculty-table td{padding:12px 14px;vertical-align:middle;line-height:1.6}
table.faculty-table tbody tr:nth-child(even){background:var(--paper-2)}
.faculty-table .fc-name{white-space:nowrap}
.faculty-table .fc-name b{font-weight:600;color:var(--ink)}
.faculty-table .fc-org{color:var(--ink-soft);font-size:13px}
.faculty-table .fc-lec{color:var(--ink)}
.faculty-source{margin-top:16px;font-size:12px;color:var(--ink-soft);line-height:1.8}
@media(max-width:700px){
  table.faculty-table{font-size:13px}
}

/* ============ 입학지원서 양식 내려받기 ============
   파일이 있으면 내려받기 · 없으면 사무국 요청. 없는 단추를 죽은 채로 두지 않는다. */
.apply-forms{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 6px}
.apply-forms .apply-form{display:inline-flex;align-items:center;gap:10px}
.apply-forms .af-state{
  padding:3px 8px;border-radius:var(--r-pill);background:var(--paper-2);color:var(--ink-soft);
  font-size:11.5px;font-weight:600;letter-spacing:.02em}
.apply-forms .apply-form.is-missing{opacity:.85}
.apply-forms .apply-form.is-missing .af-state{background:var(--crimson);color:var(--white)}

/* ===== 작성창 — 클릭 세 번을 한 번으로 (개발요청서 v3 1~4항) ===== */

/* 분류는 가로 한 줄 버튼이다. select 는 값 그릇으로만 남아 화면에서 빠진다 —
   required 검사는 늘 값이 들어 있어 통과한다(첫 선택지가 기본값이다). */
select.is-model{display:none}
.cat-btns{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.cat-btn{padding:9px 15px;border-radius:var(--r-pill);background:var(--paper-2);
  font-size:13px;color:var(--ink-soft);cursor:pointer;transition:.16s}
.cat-btn:hover{color:var(--crimson)}
.cat-btn.on{background:var(--crimson);color:#fff;font-weight:600}

/* 제목 글자수 — 잘리기 전에 알린다 */
.title-count{margin-left:8px;font-size:11.5px;font-weight:600;color:var(--ink-soft)}
.title-count.near{color:var(--crimson)}

/* 미리보기 위에 얹는 「목록 카드」 모습 */
.pv-card{margin:0 0 18px;padding:16px 18px;background:var(--paper-2);border-radius:var(--r-card)}
.pv-tag{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--crimson)}
.pv-card-body{padding:16px 18px;background:var(--white);border-radius:var(--r-card)}
.pv-meta{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;font-size:11.5px;color:var(--ink-soft)}
.pv-meta span{font-weight:700;color:var(--crimson)}
.pv-card-body h4{margin:0 0 6px;font-size:16px;font-weight:700;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all}
.pv-card-body p{margin:0;font-size:13px;line-height:1.75;color:var(--ink-soft);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all}

/* ============================================================
   아이콘 한 벌 — 개발요청서 v3 2항
   «아이콘 크기는 글자보다 약 1.3배 · 버튼 안에서는 글자 왼쪽에 붙인다»
   가 요구다. 그 둘을 여기 한 곳에서 정하고 심볼은 index.html 의 스프라이트가
   갖는다. 아이콘만 있는 단추를 만들지 않는다 — 뒤에 반드시 우리말이 붙는다.
   ============================================================ */
.ico-sprite{position:absolute;width:0;height:0;overflow:hidden}
.act-ico{
  width:1.3em;height:1.3em;flex:0 0 auto;
  fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;
}
/* 아이콘을 품은 단추·라벨은 글자와 세로 가운데를 맞춘다.
   inline-flex 라 아이콘이 글줄을 밀어 올리지 않는다. */
.editor-bar button,
.btn-row .btn,
.news-board-write,
.board-write,
.sch-write,
.hall-lock,
#eventField label{
  display:inline-flex;align-items:center;gap:6px;
}
.btn-row .btn{justify-content:center}
/* 표 안 작은 단추에서는 아이콘도 같이 줄어든다 — em 기준이라 따로 적을 것이 없다 */

/* 명예의 전당 자물쇠는 제목 옆 배지다. 글자보다 커지면 제목을 눌러 버린다 */
.hall-lock .act-ico{width:1.1em;height:1.1em}

/* ============================================================
   제21기 수료식 단체사진 — 개발요청서 v3 9항
   «인물이 잘리지 않도록 노출». 원본(904×560)에서 사람은 세로 30~96% 에 서 있고
   그 위는 현수막과 빈 천장이다. object-position 을 아래로 내리면 잘리는 쪽이
   사람이 아니라 천장이 된다. 값을 바꿀 때는 파일을 직접 열어 사람의 위아래
   끝을 다시 재고 정한다 — 사진을 갈아끼우면 이 값도 같이 갈아야 한다.
   ============================================================ */
/* 연혁 상단 비주얼 — 세로 9% 만 넘치므로 아래를 붙이면 앞줄 발끝까지 산다 */
.kna-history__visual img[src$="hero-21class.jpg"]{object-position:50% 88%}
/* .benefit-media 는 <template id="legacy-kna-program"> 안에 든 사문화 마크업이라
   화면에 뜨지 않는다. 그 자리를 되살리면 여기에도 같은 값을 줘야 한다. */
/* 교우 마당 카드 배경도 같은 사진이다. 얼굴대에 맞춘다 */
#page-lounge .class-card:nth-child(2) .class-cover,
#page-lounge .comm-card:nth-child(4),
#page-lounge .comm-card:nth-child(5){background-position:50% 38%}

/* ============================================================
   인사말 — 왼쪽 목차 · 오른쪽 사진
   목차 세 칸을 누르면 오른쪽 사진과 아래 본문이 함께 바뀐다. 세 조각을 grid-area 로
   앉히는 이유는 좁은 화면에서 순서를 «목차 → 사진 → 본문» 으로 다시 세우기 위해서다.
   마크업 순서를 그 순서에 맞춰 두었으므로 좁은 화면에서는 배치 규칙을 지우기만 하면 된다.

   사진에 grayscale 을 걸지 않는다. 정면 상반신 흑백은 영정 사진으로 읽힌다.
   고르지 않은 사람은 사진을 죽이는 대신 «목차 글자»를 옅게 내려 표시한다.
   ============================================================ */
/* 64px 는 하위 페이지 첫 섹션의 상단 여백이고 44px 는 .section-head 가 본문과 두는 거리다.
   이 화면만 다른 숫자를 쓰면 다른 페이지와 첫 화면 높이가 갈린다 */
.voices-head{padding:64px 0 44px;background:var(--paper)}
.voices-head .vh-eyebrow{
  display:block;margin-bottom:14px;color:var(--accent);
  font-size:12px;font-weight:700;letter-spacing:.18em}
.voices-head h1{font-size:clamp(34px,4.4vw,52px);line-height:1.1;letter-spacing:-.045em;color:var(--ink)}

.voices{
  display:grid;align-items:start;
  grid-template-columns:minmax(0,1fr) clamp(360px,35vw,520px);
  grid-template-rows:auto minmax(0,1fr);
  grid-template-areas:"index photo" "body photo";
  column-gap:clamp(40px,5vw,80px);
  min-height:min(66svh,640px);
  background:var(--paper);
  /* 왼쪽 여백은 «.wrap 이 서는 자리»와 같아야 한다. 오른쪽은 비워 사진을 화면 끝까지 내보낸다.
     기준을 100vw 가 아니라 100% 로 잡는 것이 중요하다 — 100vw 는 세로 스크롤바 폭까지 세어
     .wrap 보다 5px 바깥에 선다. 100% 는 스크롤바를 뺀 실제 폭이라 로고·제목과 정확히 맞는다 */
  padding-left:max(var(--gutter),calc((100% - var(--maxw))/2 + var(--gutter)))}

/* 목차 — 세 칸이 한 줄로 선다 */
.voices-index{
  grid-area:index;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(8px,1.6vw,22px);padding-bottom:44px}
.vx{
  /* grid 자식이라 높이가 저절로 같아진다 — 직함 길이가 달라도 크림슨 밑줄이 한 선에 선다 */
  padding:0 0 16px;background:transparent;text-align:left;cursor:pointer;
  transition:color .3s ease}
/* 고르지 않은 칸도 --ink-soft 까지만 내린다. 더 옅게 하면 흰 배경에서 AA 미달이다 —
   이 사이트 독자층은 장년이라 «옅게 보이는 것»보다 읽히는 것이 먼저다.
   상태는 색 하나가 아니라 번호 색 · 이름 농도 · 크림슨 밑줄 셋이 함께 알린다 */
.vx em{
  display:block;margin-bottom:10px;font-style:normal;
  font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--ink-soft);
  transition:color .3s ease}
.vx b{
  display:block;font-size:clamp(22px,2.3vw,30px);font-weight:600;letter-spacing:-.035em;
  line-height:1.2;color:var(--ink-soft);transition:color .3s ease}
.vx i{
  display:block;margin-top:8px;font-style:normal;font-size:12.5px;line-height:1.45;
  color:var(--ink-soft);transition:color .3s ease}
.vx:hover b{color:var(--ink)}
/* 고른 칸 — 글자를 살리고 크림슨 밑줄을 깐다. 회색 선은 긋지 않는다 */
.vx.active{box-shadow:inset 0 -2px 0 var(--accent)}
.vx.active em{color:var(--accent)}
.vx.active b{color:var(--ink)}

/* 사진 — 세 장을 겹쳐 두고 고른 한 장만 켠다. 겹쳐야 바뀌는 순간에 자리가 흔들리지 않는다 */
.voices-photo{
  grid-area:photo;position:relative;align-self:stretch;
  min-height:min(66svh,640px);background:var(--paper-2);overflow:hidden}
.voices-photo .vp{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:50% 16%;
  opacity:0;transform:scale(1.03);
  transition:opacity .6s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.voices-photo .vp.active{opacity:1;transform:none}

/* 본문 — 고른 한 사람만 선다 */
/* 아래 «KNA 비전»은 .section 이라 자기 몫 120px 을 따로 갖는다. 여기서도 같은 값을 쓴다 */
.voices-body{grid-area:body;padding-bottom:120px}
.vb{display:none}
.vb.active{display:block;animation:vbIn .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes vbIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.vb-title{
  margin-bottom:28px;
  font-size:clamp(23px,2.1vw,31px);line-height:1.35;letter-spacing:-.04em;
  font-weight:600;color:var(--ink)}
.vb-text p{margin-bottom:20px;font-size:16px;line-height:1.9;color:var(--ink-soft)}
.vb-text .sign{margin-top:30px;font-size:14px;color:var(--ink-soft)}
.vb-text .sign b{display:block;margin-bottom:4px;font-size:18px;font-weight:600;color:var(--ink)}

/* 좁은 화면 — 배치를 풀면 마크업 순서 그대로 목차 → 사진 → 본문 이 된다 */
@media(max-width:900px){
  /* 세로로 세우면 사진이 화면 폭을 다 쓴다. 왼쪽 여백은 무대에서 떼어 두 조각에 각각 준다 */
  .voices{display:block;min-height:0;padding-left:0}
  .voices-index,.voices-body{padding-inline:var(--gutter)}
  .voices-index{gap:6px;padding-bottom:34px}
  .voices-body{padding-bottom:96px}
  .vx b{font-size:19px}
  .vx i{font-size:11.5px}
  .voices-photo{min-height:0;height:52svh;margin-bottom:40px}
}
/* 760px 은 다른 하위 페이지가 첫 섹션 여백을 40px 로 줄이는 지점이다. 같은 자리에서 같이 줄인다 */
@media(max-width:760px){
  .voices-head{padding:40px 0 32px}
  .voices-index{padding-bottom:32px}
  .voices-body{padding-bottom:80px}
}
@media(max-width:560px){
  .vx em{margin-bottom:7px;font-size:10px}
  .vx b{font-size:17px}
  .vx i{margin-top:6px;font-size:10.5px;line-height:1.4}
  .voices-photo{height:46svh}
}

/* ============================================================
   정보 페이지 타이포 계약
   ============================================================
   대상 여섯 — 입학 안내 · 장학 · 교우기업 · 커리큘럼 · 강사진 · 회칙.
   읽으러 오는 화면들이다. 홈·인사말처럼 보러 오는 화면은 여기 넣지 않는다.

   왜 세우는가. 여섯 화면을 재 보니 본문 크기가 열일곱 벌이었다 —
   11.5 12 12.5 13 13.5 14 14.5 15 16 16.56 17 18 19 24 30 40 43.2px.
   행간은 열두 벌(1.20~1.90) 이고 본문 회색은 다섯 벌(#0a0a0a #111 #444 #555 #626262)이었다.
   같은 층의 정보가 중요도가 아니라 「어느 규칙에 걸렸느냐」로 크기와 색을 받고 있었다.

   회칙 화면만 읽을 만했다 — 크기 두 벌 · 행간 한 벌 · 한 줄 49자. 그 상태를 여섯으로 넓힌다.

   ---- 크기 여섯 단 ----
   display  화면의 첫 제목. 화면당 하나다
   section  섹션 제목(h2)
   sub      섹션 안 소제목(h3). 예전에 18과 24 두 벌이던 것을 한 벌로 접었다
   body     읽는 글 — 본문 · 목록 · 정의
   data     표와 명부처럼 촘촘한 자료. 읽는 글이 아니라 훑는 자료다
   meta     주석 · 출처 · 꼬리표

   17px 이 본문이다. 사이트 기본(16px)보다 한 단 크다 — 독자층이 장년이라
   본문색을 #808291 에서 #626262 로 진하게 조정한 것과 같은 이유다.

   ---- 행간 넷 ----
   제목 1.25 · 소제목 1.45 · 본문 1.75 · 자료 1.6. 넷 말고는 쓰지 않는다.

   ---- 줄 길이 ----
   --measure 는 em 이다. 글자 크기를 따라 늘고 줄어야 44자가 계속 44자다.
   한글 본문은 40~50자가 한계인데 재 보니 강사진 출처가 99자 · 교우기업 소개가 82자 ·
   입학 FAQ 답이 79자였다. 눈이 다음 줄 첫 글자를 못 찾는다.
   표와 카드 격자는 읽는 덩어리가 아니므로 여기서 뺀다.

   ---- 자간 ----
   24px 이상만 조인다. 한글은 작은 글자에서 자간을 좁히면 낱자가 서로 붙는다.
   지금은 -0.03em 이 14px 주석까지 걸려 있었다.

   ---- 색 ----
   두 벌이다. --ink 는 제목과 강조 · --ink-soft 는 본문. #444 #555 #111 은 지운다.

   새 크기를 만들고 싶어지면 여기 단을 늘리지 말고 그 자리가 여섯 중 어디인지 먼저 정한다.
   ============================================================ */
#page-admission,#page-scholarship,#page-companies,
#page-kna-curriculum,#page-kna-faculty,#page-bylaws{
  --t-display:48px;
  --t-section:32px;
  --t-sub:20px;
  --t-body:17px;
  --t-data:15px;
  --t-meta:14px;
  --lh-title:1.25;
  --lh-sub:1.45;
  --lh-body:1.75;
  --lh-data:1.6;
  --measure:44em;
}
@media(max-width:760px){
  #page-admission,#page-scholarship,#page-companies,
  #page-kna-curriculum,#page-kna-faculty,#page-bylaws{
    --t-display:32px;
    --t-section:26px;
    --t-sub:18px;
    --t-body:16px;
    --t-data:14px;
    --t-meta:13px;
  }
}

/* ===== 계약을 입학 안내에 적용한다 =====
   이 화면은 이미 --adm-type-* 라는 제 토큰을 갖고 있었다. 그 토큰이 쓰인 자리가
   여남은 곳이라 자리마다 찾아 고치지 않고 토큰을 계약에 연결한다. */
#page-admission{
  --adm-type-display:var(--t-display);
  --adm-type-section:var(--t-section);
  --adm-type-subsection:var(--t-sub);
  --adm-type-component:var(--t-sub);   /* 18과 24 두 벌이던 소제목을 한 벌로 접는다 */
  --adm-type-body:var(--t-body);
  --adm-type-meta:var(--t-meta);
}
/* 지원자격은 이 화면에 온 사람이 가장 먼저 확인하는 정보다. 그런데 14px · #444 · 행간 1.55 로
   본문보다 작고 촘촘하고 흐렸다 — meta 무리에 섞여 있었던 탓이다. 본문 규격으로 올린다.
   2열 격자는 그대로 둔다. 한 줄이 짧아 오히려 읽기 좋다. */
#page-admission .adm-qualifications .adm-list{
  font-size:var(--t-body)!important;line-height:var(--lh-body)!important}
#page-admission .adm-qualifications .adm-list li{color:var(--ink-soft)}
/* 읽는 덩어리에만 줄 길이 상한을 건다. 표와 5단계 카드는 훑는 자료라 뺀다. */
#page-admission .adm-lead,
#page-admission .adm-note,
#page-admission .adm-faq p,
#page-admission .adm-facts dd,
#page-admission .section-head p{max-width:var(--measure)}
#page-admission .adm-overview>.adm-list li{max-width:var(--measure)}
/* 행간 넷 · 색 둘로 접는다 */
#page-admission .adm-lead{color:var(--ink-soft);font-weight:400;line-height:var(--lh-body)}
#page-admission .adm-list,
#page-admission .adm-facts,
#page-admission .adm-faq p{line-height:var(--lh-body)}
#page-admission .adm-overview>.adm-list li{color:var(--ink-soft)}
#page-admission .adm-steps li>span:last-child{
  font-size:var(--t-data);font-weight:400;line-height:var(--lh-data);color:var(--ink-soft)}
#page-admission .adm-cta b{color:var(--ink)}
/* 표 — 머리글이 13px 로 계약 밖에 있었고 굵기가 날짜 쪽에 붙어 있었다.
   읽는 순서는 「언제」 가 아니라 「무엇을」 이다. 강조를 내용 칸으로 옮긴다. */
#page-admission .adm-table{font-size:var(--t-data);line-height:var(--lh-data)}
#page-admission .adm-table th{font-size:var(--t-meta);letter-spacing:normal}
#page-admission .adm-table td{color:var(--ink-soft);font-weight:400}
#page-admission .adm-table td:last-child{color:var(--ink);font-weight:600}
/* 자간은 24px 이상만 조인다. 작은 글자에서 한글 낱자가 붙는다. */
#page-admission .adm-lead,
#page-admission .adm-list,
#page-admission .adm-facts,
#page-admission .adm-table,
#page-admission .adm-note,
#page-admission .adm-faq p,
#page-admission .adm-faq summary,
#page-admission .adm-steps li>span:last-child,
#page-admission .section-head p{letter-spacing:normal}

/* 하위 페이지 공통 규칙이 섹션 제목을 40px 로 못박고 있었다. 그 값을 변수로 열어 뒀으니
   정보 페이지는 여기서 제 단(--t-section)을 물려준다. 선택자 싸움을 하지 않는다. */
#page-admission,#page-scholarship,#page-companies,
#page-kna-curriculum,#page-kna-faculty,#page-bylaws{
  --type-section-page:var(--t-section);
}
/* 소제목 행간이 자리마다 1.35 · 1.45 로 갈려 있었다. 계약의 --lh-sub 하나로 모은다. */
#page-admission .adm-h,
#page-admission .adm-overview>.adm-h,
#page-admission .adm-apply-panel h3{line-height:var(--lh-sub)}
/* 지원자격 목록은 선택자가 한 겹 더 깊어 위의 자간 규칙에 안 걸린다 */
#page-admission .adm-qualifications .adm-list,
#page-admission .adm-qualifications .adm-list li{letter-spacing:normal}
/* 정의 목록과 주석의 행간도 계약으로 되돌린다 (1.70 · 1.65 로 갈려 있었다) */
#page-admission .adm-facts dd,
#page-admission .adm-facts dt,
#page-admission .adm-note{line-height:var(--lh-body)}

/* ===== 계약에서 새던 자리를 막는다 =====
   여섯 단·행간 넷·자간 한 규칙으로 다시 재서 어긋난 곳만 모았다.
   화살표(→)와 절차 아이콘(✦)은 글자가 아니라 그림이라 크기 계약에서 뺀다. */
#page-admission .adm-hero-copy>h2{line-height:var(--lh-title)}
/* 자간은 24px 이상만. 20px 소제목이 -0.03em 으로 조여 있었다 */
#page-admission .adm-qualifications h3,
#page-admission .adm-h,
#page-admission .adm-overview>.adm-h,
#page-admission .adm-steps b,
#page-admission .adm-cta b,
#page-admission .adm-apply-panel h3{letter-spacing:normal}
#page-admission>section.section:not(:first-of-type) .section-head p{letter-spacing:normal}
/* 지원 패널 — 크림슨 판 안이라고 규격이 달라질 이유가 없다 */
#page-admission .adm-apply-panel>span,
#page-admission .adm-apply-panel p,
#page-admission .adm-apply-panel small{
  font-size:var(--t-meta);line-height:var(--lh-body);letter-spacing:normal}
#page-admission .adm-apply-primary{
  font-size:var(--t-body);line-height:var(--lh-sub);letter-spacing:normal}
/* 5단계 카드 — 그릇의 글자 규격을 본문에 맞춰 두면 안쪽 요소가 물려받는다 */
#page-admission .adm-steps li{font-size:var(--t-body);line-height:var(--lh-body)}
#page-admission .adm-steps em{letter-spacing:normal}
#page-admission .adm-cta span{line-height:var(--lh-body);letter-spacing:normal}

/* ===== 계약이 다루지 않는 것 =====
   글자처럼 보여도 글이 아닌 것 셋은 크기 여섯 단에서 뺀다. 늘리기 시작하면 계약이 아니게 된다.
   1) 그림 — 화살표(→) · 절차 아이콘(✦) 처럼 뜻이 모양에 있는 글리프
   2) 눈금 라벨 — .kna-intro-eyebrow 같은 로마자 대문자 꼬리표. 여기서는 자간을 넓히는 게 맞다
   3) 숫자 타일 — 교우기업 집계처럼 읽는 글이 아니라 한눈에 세는 숫자
   나머지는 전부 계약을 따른다. */

/* ===== 장학 · 나눔활동 ===== */
#page-scholarship .section-head p,
#page-scholarship .sch-steps li,
#page-scholarship>.section p:not([class]){
  font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}
#page-scholarship .sch-basis,
#page-scholarship .sch-note,
#page-scholarship .sch-empty,
#page-scholarship .sch-cross{
  font-size:var(--t-meta);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}
#page-scholarship h3{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}
#page-scholarship dt{font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal}
#page-scholarship dd{font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}

/* ===== 교우기업 =====
   139건짜리 명부다. 읽는 글이 아니라 훑는 자료라 본문(17px)이 아니라 data(15px) 를 기준으로 쓴다.
   그래도 11.5~13.5px 다섯 벌로 흩어져 있던 것을 data 와 meta 두 벌로 접는다. */
#page-companies .section-head p{
  font-size:var(--t-body);line-height:var(--lh-body);max-width:var(--measure)}
#page-companies .co-group-title,
#page-companies .co-body h3{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}
#page-companies .co-who,
#page-companies .co-desc{
  font-size:var(--t-data);line-height:var(--lh-data);letter-spacing:normal;max-width:var(--measure)}
#page-companies .co-job,
#page-companies .co-note,
#page-companies .co-count,
#page-companies .co-meta dt,
#page-companies .co-meta dd{
  font-size:var(--t-meta);line-height:var(--lh-data);letter-spacing:normal}

/* ===== KNA 커리큘럼 ===== */
#page-kna-curriculum .kna-intro-copy p,
#page-kna-curriculum .curr-detail p,
#page-kna-curriculum details p{
  font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}
#page-kna-curriculum h3,
#page-kna-curriculum summary{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}

/* ===== KNA 강사진 =====
   66줄짜리 표다. 표는 data · 출처와 머리글은 meta. */
#page-kna-faculty .kna-intro-copy p,
#page-kna-faculty>.section p:not([class]){
  font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}
#page-kna-faculty h3{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}
table.faculty-table{font-size:var(--t-data)}
table.faculty-table td{line-height:var(--lh-data)}
.faculty-table .fc-org{font-size:var(--t-data)}
table.faculty-table th{font-size:var(--t-meta)}
.faculty-meta{font-size:var(--t-meta);line-height:var(--lh-body);letter-spacing:normal}
.faculty-source{
  font-size:var(--t-meta);line-height:var(--lh-body);letter-spacing:normal;max-width:var(--measure)}

/* ===== 회칙 =====
   여섯 화면 중 유일하게 읽을 만했던 화면이다 — 한 줄 49자에 크기 두 벌.
   그 상태를 계약의 이름으로 다시 적는다. 장 제목만 43.2px 로 혼자 떠 있었다. */
#page-bylaws .law-chapter h2,
#page-bylaws h2{font-size:var(--t-section);line-height:var(--lh-title)}
#page-bylaws h3{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}
#page-bylaws p,
#page-bylaws li{font-size:var(--t-body);line-height:var(--lh-body);letter-spacing:normal}
#page-bylaws b{font-size:var(--t-meta);line-height:var(--lh-body)}

/* ===== 계약에서 새던 자리 · 두 번째 =====
   각 화면을 다시 재서 남은 자리만 짚는다. 선택자가 짐작이 아니라 실제 구조를 가리켜야
   한 번에 끝난다 — 처음에 .sch-steps · .co-group-title 처럼 없는 이름을 짚어 헛돌았다. */
/* 장학 — 사업 흐름과 계획 목록 */
#page-scholarship .sch-flow li,
#page-scholarship .sch-plan li{font-size:var(--t-body);line-height:var(--lh-body)}
#page-scholarship .sch-flow li b,
#page-scholarship .sch-plan li b{font-size:var(--t-body);line-height:var(--lh-sub)}
#page-scholarship .sch-cta b{font-size:var(--t-sub);line-height:var(--lh-sub)}
/* 교우기업 — 분류 블록 제목과 카드 안 굵은 글자 */
#page-companies .co-block>h2{font-size:var(--t-sub);line-height:var(--lh-sub);letter-spacing:normal}
#page-companies .co-entry b,
#page-companies .co-body b{font-size:inherit;line-height:inherit}
#page-companies .co-meta dd,
#page-companies .co-note{max-width:var(--measure)}
/* 커리큘럼 — 도입 문단과 단계 카드 */
#page-kna-curriculum .kna-intro-heading p,
#page-kna-curriculum .kna-phase-grid article p{
  font-size:var(--t-body);line-height:var(--lh-body);max-width:var(--measure)}
/* 강사진 — 도입 문단과 이유 카드 · 표 머리글 */
#page-kna-faculty .kna-intro-heading p,
#page-kna-faculty .kna-why-grid article p{
  font-size:var(--t-body);line-height:var(--lh-body);max-width:var(--measure)}
#page-kna-faculty table.faculty-table th{letter-spacing:normal}
/* 회칙 — 장 제목이 43.2px 로 혼자 떠 있었고 조문 본문이 14.5px 였다 */
#page-bylaws .doc .chapter>h2{font-size:var(--t-section);line-height:var(--lh-title)}
#page-bylaws .doc .article p,
#page-bylaws .doc .article li,
#page-bylaws .doc p,
#page-bylaws .doc li{font-size:var(--t-body);line-height:var(--lh-body)}
/* 장학 — 참여 방법 목록 */
#page-scholarship .sch-join li{font-size:var(--t-body);line-height:var(--lh-body)}
#page-scholarship .sch-join li b{font-size:var(--t-body);line-height:var(--lh-sub)}
/* 강사진 — 표 머리글 행간 */
#page-kna-faculty table.faculty-table th{line-height:var(--lh-data)}
/* 회칙 장 제목 — 앞선 규칙이 !important 로 --type-content(43.2px)를 박아 뒀다.
   그 변수는 표지 제목(.doc-cover .t2)도 함께 쓰므로 변수를 갈지 않고 이 자리만 덮는다. */
#page-bylaws .doc .chapter h2{
  font-size:var(--t-section)!important;line-height:var(--lh-title)!important}
/* 장 번호 — 원래 34×34 크림슨 원 안의 숫자였는데 뒤 규칙이 width·height 만 auto 로 풀고
   테두리를 남겨서 숫자 하나를 감싼 6px 짜리 실선 타원이 돼 있었다. 테두리를 걷는다. */
#page-bylaws .doc .chapter h2 .num{border:0;width:auto;height:auto}
/* 회칙 조문 제목이 17px 로 본문과 같아 위계가 없었다. 앞 규칙이 더 깊어 계약을 이긴다 */
#page-bylaws .doc .article h3{font-size:var(--t-sub);line-height:var(--lh-sub)}

/* ===== 교우 게시판 (활동 모드) — #page-board =====
   공개 게시판(#page-news)의 사진 격자와 «완전히 다른 모양»이다. 저기는 훑는 화면이고
   여기는 새 글이 위로 쌓이는 흐름이다. 글은 한 벌이고 갈라지는 것은 이 규칙뿐이다.
   선을 긋지 않는다 — 글과 글은 2px 틈과 흰 면으로 나뉜다. */
.feed-wrap{max-width:860px}
.feed-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin-bottom:22px}
.feed-head h2{font-size:32px;line-height:1.25;font-weight:700;color:var(--ink)}
.feed-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px}
/* 분류는 알약이다. 공개 게시판의 밑줄 탭과 모양이 갈려야 두 화면이 헷갈리지 않는다 */
.feed-tab{padding:8px 14px;border-radius:var(--r-pill);background:var(--paper-2);
  font:600 13.5px var(--sans);color:var(--ink-soft);cursor:pointer;transition:.16s}
.feed-tab:hover{background:#e8e9ec;color:var(--ink)}
.feed-tab.on{background:var(--accent);color:#fff}

.feed-list{display:grid;gap:0}
.feed-post{position:relative;padding:24px 26px;background:var(--white)}
.feed-post+.feed-post::before{content:'';position:absolute;top:0;left:26px;right:26px;height:1px;background:rgba(20,20,20,.08)}
.feed-post-top{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:12.5px}
/* 교우 사진은 받은 적이 없다. 빈 원 대신 이름 첫 글자를 세운다 */
.feed-ava{display:grid;place-content:center;width:34px;height:34px;border-radius:var(--r-pill);
  background:var(--crimson-soft);color:var(--accent);font-size:14px;font-weight:700}
.feed-by{font-size:14px;font-weight:700;color:var(--ink)}
.feed-cat{padding:3px 9px;border-radius:var(--r-pill);background:var(--paper-2);
  font-size:11.5px;font-weight:600;color:var(--ink-soft)}
.feed-post-top time{margin-left:auto;color:var(--ink-soft)}
.feed-post-body{display:flex;align-items:flex-start;gap:20px}
.feed-post-copy{flex:1 1 auto;min-width:0}
.feed-post h3{margin:0 0 8px;font-size:18px;font-weight:700;line-height:1.45}
.feed-post h3 a{color:var(--ink);text-decoration:none}
.feed-post h3 a:hover{color:var(--accent)}
.feed-post p{margin:0;font-size:14.5px;line-height:1.75;color:var(--ink-soft)}
.feed-post-thumb{display:block;flex:0 0 132px;overflow:hidden;border-radius:var(--r-media)}
.feed-post-thumb img{display:block;width:132px;height:92px;object-fit:cover}
.feed-empty{padding:56px 24px;background:var(--white);text-align:center;
  font-size:14px;line-height:1.9;color:var(--ink-soft)}

/* 활동 화면은 읽는 화면이 아니라 쓰는 화면이다. 공개 화면의 150px 여백은 여기서 낭비다 */
#page-board>.section,#page-scholar>.section,#page-network>.section{padding:56px 0}
#page-board>.section:first-child{padding-top:44px}

@media(max-width:760px){
  .feed-head h2{font-size:26px}
  .feed-post{padding:20px}
  .feed-post+.feed-post::before{left:20px;right:20px}
  .feed-post-body{flex-direction:column-reverse;gap:14px}
  .feed-post-thumb{flex:none;width:100%}
  .feed-post-thumb img{width:100%;height:180px}
}

/* 교우 마당 — 랜딩에 남은 «문». 잠금 카드와 짝이라 생김새를 맞춘다 */
.lounge-open{max-width:520px;margin:0 auto;padding:56px 40px;background:var(--white);text-align:center}
.lounge-open h2{font-size:24px;font-weight:700;line-height:1.35;color:var(--ink)}
.lounge-open p{margin:14px 0 26px;font-size:14.5px;line-height:1.85;color:var(--ink-soft)}

/* ===== 교우 게시판 갈래 — 전체 글 · 내 글 관리 =====
   분류 알약과 «다른 물건»이라 모양도 다르다. 저쪽은 「무엇에 관한 글이냐」이고 이쪽은
   「누구의 글이냐」다. 한 줄에 섞으면 «내 글»이 열두 번째 분류로 읽힌다.
   현재 갈래는 면이 아니라 크림슨 글자와 밑줄로 알린다. */
.board-views{display:flex;gap:22px;margin-bottom:20px}
.board-view{display:inline-flex;align-items:center;gap:7px;padding:8px 0;
  font:700 16px var(--sans);color:var(--ink-soft);cursor:pointer;
  background:transparent;border-bottom:2px solid transparent;transition:color .16s ease}
.board-view:hover{color:var(--ink)}
.board-view.on{color:var(--accent);border-bottom-color:var(--accent)}
.board-n{min-width:20px;padding:2px 7px;border-radius:var(--r-pill);
  background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;text-align:center}
/* 새 글을 쓰는 일은 «전체 글» 갈래의 것이다. 내 글을 고치는 자리에서는 감춘다 */
#page-board[data-view="mine"] #feedWrite{display:none!important}
.mine-lead{margin:0 0 18px;font-size:14px;line-height:1.8;color:var(--ink-soft)}
.mine-sub{margin:44px 0 8px;font-size:20px;font-weight:700;color:var(--ink)}

/* 검수 대기 — 신청 두 건이 한 문단처럼 붙지 않도록 업무 단위별 카드로 나눈다. */
#pendingSection{margin-top:40px;padding:26px;background:var(--paper-2);border-radius:var(--r-card)}
#pendingSection .mine-sub{display:flex;align-items:center;gap:10px;margin:0;font-size:20px}
#pendingSection .pending-count{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;
  border-radius:var(--r-pill);background:var(--accent);color:#fff;font-size:12px;font-weight:700}
#pendingSection>.mine-lead{margin:8px 0 0}
#pendingList{margin-top:20px}
#pendingList .mp-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
#pendingList .mp-row{min-width:0;min-height:210px;padding:20px;display:flex;flex-direction:column;
  background:var(--white);border-radius:var(--r-card)}
#pendingList .mp-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
#pendingList .mp-board,#pendingList .mp-cat,#pendingList .status-pill{
  display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:var(--r-pill);
  background:var(--paper-2);color:var(--ink-soft);font-size:11.5px;font-weight:600}
#pendingList .status-pill{background:color-mix(in srgb,var(--accent) 10%,#fff);color:var(--accent)}
#pendingList .mp-date{margin-left:auto;color:var(--ink-soft);font-size:12px;white-space:nowrap}
#pendingList .mp-title{margin:16px 0 6px;color:var(--ink);font-size:17px;font-weight:700;line-height:1.5}
#pendingList .mp-by{margin:0;color:var(--ink-soft);font-size:13px}
#pendingList .mp-acts{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:18px}
#pendingList .mp-empty{grid-column:1/-1;margin:0;padding:28px;text-align:center;color:var(--ink-soft)}

@media(max-width:760px){
  #pendingSection{padding:20px}
  #pendingList .mp-list{grid-template-columns:1fr}
  #pendingList .mp-row{min-height:0}
  #pendingList .mp-date{flex-basis:100%;margin-left:0}
}

/* ===== 교우 활동 하위 페이지 공통 정렬 =====
   사이드 옆 본문은 페이지 종류와 상관없이 같은 좌우선과 제목 규격을 쓴다.
   게시판에만 남아 있던 860px 제한을 풀고, network의 별도 제목 구조도 공통 규격에 맞춘다. */
html body.member-mode .page.active > .section > .wrap,
html body.member-mode .page.active > .section > .wrap.feed-wrap{
  width:100%;max-width:none;padding-inline:var(--gutter)}
/* 오래된 전역 제목 규칙들이 !important 로 각기 다른 변수를 읽는다.
   활동 화면에서는 두 변수를 같은 값으로 잠가 실제 계산값까지 한 벌로 만든다. */
html body.member-mode .page.active{
  --type-section:32px!important;
  --type-section-page:32px!important;
  --lh-title:1.25!important;
  --gutter:64px}
html body.member-mode .page.active > .section{padding-block:64px!important}
html body.member-mode #page-companies > .section:first-of-type{padding-top:64px!important}
html body.member-mode .member-page-title{
  max-width:none;margin:0 0 44px;text-align:left}
html body.member-mode .member-page-title h2{
  margin:0;font-family:var(--sans);font-size:32px!important;line-height:1.25!important;
  font-weight:600!important;letter-spacing:-.045em!important;color:var(--ink)!important}
html body.member-mode .member-page-title p{
  margin-top:14px!important;font-size:17px!important;line-height:1.75!important;color:var(--ink-soft)!important}
html body.member-mode #page-board .feed-head{margin-bottom:44px}
html body.member-mode #page-board .feed-head .section-head{margin-bottom:0}
html body.member-mode #page-admin-dashboard{
  padding:64px var(--gutter);background:var(--white)}
html body.member-mode #page-admin-dashboard .dash-wrap{width:100%;max-width:none}
html body.member-mode #page-admin-dashboard .dash-head{align-items:flex-start;margin-bottom:44px}
html body.member-mode #page-admin-dashboard .dash-head .section-head{flex:1 1 640px}
html body.member-mode #page-admin-dashboard .dash-head .member-page-title{padding-bottom:20px}
html body.member-mode #page-admin-dashboard .member-page-title h2{line-height:1.25!important}
html body.member-mode #page-admin-dashboard .dash-sub{margin-bottom:0}
html body.member-mode #page-admin-dashboard .dash-tab{font-size:15px;padding-block:14px}

@media(max-width:760px){
  html body.member-mode .page.active{
    --type-section:26px!important;
    --type-section-page:26px!important;
    --gutter:24px}
  html body.member-mode .page.active > .section{padding-block:40px!important}
  html body.member-mode #page-admin-dashboard{padding-block:40px}
  html body.member-mode .member-page-title h2{font-size:26px!important}
}

/* 교우기업 화면의 개별 브라우저 주석 반영.
   공통 활동 페이지의 section 패딩보다 이 추천 영역만 예외로 붙여 배치한다. */
#page-companies .co-search{border-radius:var(--r-pill)}
html body.member-mode #page-companies > .section.alt,
#page-companies > .section.alt{padding-top:0!important;padding-bottom:0!important}

/* ============================================================
   아이콘 체계 적용 — 개발요청서 v3 2항 표
   심볼 한 벌(#ic-*)과 .act-ico 규격은 진작 있었는데 «붙는 자리»가 작성창 둘레에만
   있었다. 헤더 · 상태칸 · 사진 썸네일 · 검색창이 비어 있었고 ic-bell 과 ic-clipboard
   는 만들어 놓고 한 번도 안 쓰였다. 여기서 그 자리들을 채운다.
   **아이콘만 있는 단추를 만들지 않는다** — 썸네일 둘만 예외이고 그 자리는 그림 위라
   글자를 얹을 데가 없어 aria-label 과 title 로 이름을 준다.
   ============================================================ */

/* 헤더 계정 드롭다운 — 전역 규칙이 `display:block!important` 라 그대로 두면
   아이콘이 글자 위로 떨어진다. 아이콘이 붙은 이 메뉴만 다시 flex 로 세운다. */
html body > header .acct-dd .related-menu a{
  display:flex!important;align-items:center;gap:8px;white-space:nowrap;
  /* 기존 규칙이 space-between 이라 그대로 두면 «글자가 오른쪽 끝»으로 밀린다.
     아이콘은 글자 왼쪽에 붙어야 한다(2항). 배지만 margin-left:auto 로 끝에 보낸다. */
  justify-content:flex-start!important}
/* 아이콘 한 칸과 배지가 더 붙었으니 판도 그만큼 넓어져야 한다.
   좁으면 「내 글 관리」가 두 줄로 접힌다 — 실제로 접혔다. */
html body > header .acct-dd .related-menu{min-width:220px}
/* 배지는 글자 바로 뒤가 아니라 «줄 끝»에 붙는다 — 세 줄의 오른쪽 끝이 한 선에 선다 */
html body>header .related-menu .acct-n{margin-left:auto}
/* 🔔 은 숫자와 한 몸이다 — 배지가 숨으면 종도 같이 숨는다 */
html body>header .related-menu .acct-n{
  display:inline-flex;align-items:center;gap:4px}
html body>header .related-menu .acct-n .act-ico{width:1.05em;height:1.05em;stroke-width:2}

/* 로그인 — 2항 표의 「교우 로그인」 자리. 크기는 .act-ico 규격(1.3배) 그대로 둔다 */
.login-link{gap:7px}

/* 작성창 라벨 — 📌 제목 · ✍ 내용 · 🗓 행사 날짜 · 📷 대표 사진 */
#postForm label[for="postTitle"],
#postForm label[for="postContent"],
#postForm label[for="postEventDate"],
#postForm label[for="postPhoto"]{display:flex;align-items:center;gap:7px}
/* 크기는 .act-ico 의 1.3배를 그대로 쓴다 — 여기서 줄이면 2항 규격이 깨진다.
   색만 본문보다 한 단 내려 글자가 먼저 읽히게 한다. */
#postForm label .act-ico{color:var(--ink-soft)}

/* 글 상태칸 — ● 게시중 · ○ 검수 대기. 점은 글자색을 따라간다.
   **여기만 1.3배를 안 쓴다.** 이건 기능 글리프가 아니라 «상태 표»라 11px 글자 옆에서
   1.3배면 점이 글자를 눌러 버린다. 뜻이 모양에 있는 자리는 규격 밖이다. */
.status-pill{display:inline-flex;align-items:center;gap:5px}
.status-pill .act-ico{width:.85em;height:.85em;stroke-width:2.2}
.status-pill.게시{background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent)}

/* 사진 썸네일 — 🗑 빼기 · ⭐ 대표. 사진 위에 앉는 단추라 면을 어둡게 깔아 대비를 준다 */
.photo-thumb .cover{display:inline-flex;align-items:center;gap:4px}
.photo-thumb .cover .act-ico{width:.95em;height:.95em;fill:currentColor;stroke:none}
.photo-thumb .rm,
.photo-thumb .mk-cover{display:inline-flex;align-items:center;justify-content:center;
  position:absolute;top:4px;width:24px;height:24px;border:0;border-radius:var(--r-round);
  background:rgba(0,0,0,.6);color:#fff;cursor:pointer;padding:0}
.photo-thumb .rm{right:4px}
.photo-thumb .mk-cover{left:4px}
.photo-thumb .rm:hover{background:rgba(0,0,0,.82)}
.photo-thumb .mk-cover:hover{background:var(--crimson)}
.photo-thumb .rm .act-ico,
.photo-thumb .mk-cover .act-ico{width:14px;height:14px}
.photo-thumb .mk-cover .act-ico{fill:currentColor;stroke:none;opacity:.75}
.photo-thumb .mk-cover:hover .act-ico{opacity:1}

/* ── 아이콘 크기는 두 규칙뿐이다 ───────────────────────────────
   1) 글자 «옆»에 서는 아이콘은 em 이다 — .act-ico 의 1.3em 이 글자를 따라 커진다.
   2) 글자가 «없는» 아이콘 전용 단추는 px 다 — 단추 크기가 px 로 고정돼 있어서
      물려받는 글자 크기가 무엇이든 상관이 없다.
   새 아이콘을 붙일 때 «글자가 옆에 있나»만 보면 어느 쪽인지 정해진다. */
.popup-close .act-ico,
.modal-close .act-ico,
.modal .close .act-ico{width:18px;height:18px;stroke-width:2}
@media(max-width:640px){
  .popup-close .act-ico,
  .modal-close .act-ico,
  .modal .close .act-ico{width:16px;height:16px}
}
.ap-career .c-rm .act-ico{width:15px;height:15px;stroke-width:2}
/* 행사 날짜 칩 — 한때 이모지였다. 이모지는 컬러라 크림슨 글자와 색이 갈렸다 */
.event-chip{display:inline-flex;align-items:center;gap:5px}
.event-chip .act-ico{width:1.15em;height:1.15em;stroke-width:1.9}

/* 좁은 화면에서는 썸네일 단추를 키운다 — 10항 확인 기준 「손가락으로 누를 만큼 크다」.
   24px 는 마우스에는 맞지만 엄지에는 작다. 썸네일이 101px 라 32px 둘이 들어간다. */
@media(max-width:760px){
  .photo-thumb .rm,
  .photo-thumb .mk-cover{width:32px;height:32px;top:5px}
  .photo-thumb .rm{right:5px}
  .photo-thumb .mk-cover{left:5px}
  .photo-thumb .rm .act-ico,
  .photo-thumb .mk-cover .act-ico{width:17px;height:17px}
}

/* ===== 게시판 탭바 — 화면을 내려도 따라온다 (요청서 1항) =====
   「버튼은 화면을 내려도 탭바와 함께 상단에 붙어 있어야 한다」. 소식 화면(#page-news)은
   진작 그랬는데 교우 게시판과 장학 게시판은 안 그랬다. 셋이 같은 규칙을 쓰게 한다.

   **배경을 반드시 깐다.** 투명하면 지나가는 카드가 탭 글자 뒤로 비친다 —
   소식 화면 주석이 이미 그 이유를 적어 두었다.
   z-index 6 도 그쪽과 맞춘다. 더 낮으면 카드가 탭 위로 지나간다. */
.board-toolbar,
.sch-board-bar{
  position:sticky;top:var(--header-h);z-index:6;
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-bottom:24px;padding-top:10px;background:var(--paper)}
/* 활동 모드는 흰 판 위다 — 종이색을 깔면 판 안에 다른 색 띠가 생긴다 */
html body.member-mode .board-toolbar,
html body.member-mode .sch-board-bar{background:var(--white)}
/* 탭 줄은 남는 폭을 다 쓰고 단추는 오른쪽 끝에 선다 */
.board-toolbar .feed-filters{flex:1;min-width:0;margin-bottom:0}
.sch-board-bar .news-tabs{flex:1;min-width:0}

/* ===== 2026-08-31 브라우저 주석 복구 ===== */
/* 장학 · 나눔활동 — 설명을 줄이고 실제 사진이 위계를 만든다. */
#page-scholarship .sch-hero-layout{display:grid;grid-template-columns:minmax(0,.78fr) minmax(440px,1.22fr);gap:clamp(48px,7vw,110px);align-items:center}
#page-scholarship .sch-hero-copy{margin:0;position:static}
#page-scholarship .sch-eyebrow{margin:0 0 18px!important;color:var(--crimson)!important;font-size:12px!important;font-weight:700;letter-spacing:.14em!important}
#page-scholarship .sch-hero-copy h2{max-width:12ch!important;font-size:clamp(42px,4.6vw,68px)!important;line-height:1.12!important}
#page-scholarship .sch-hero-copy .btn{margin-top:28px}
#page-scholarship .sch-hero-photo{min-height:560px;margin:0;overflow:hidden;border-radius:var(--r-media)}
#page-scholarship .sch-hero-photo img{width:100%;height:100%;min-height:560px;object-fit:cover;object-position:center}
#page-scholarship .sch-impact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
#page-scholarship .sch-impact-grid article{position:relative;min-height:440px;overflow:hidden;border-radius:var(--r-media);background:#20181a;color:#fff}
#page-scholarship .sch-impact-grid img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .45s ease}
#page-scholarship .sch-impact-grid article::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(26,8,12,.9))}
#page-scholarship .sch-impact-grid article>div{position:absolute;z-index:1;left:26px;right:26px;bottom:24px}
#page-scholarship .sch-impact-grid b{font-size:22px}
#page-scholarship .sch-impact-grid p{margin:9px 0 0;color:rgba(255,255,255,.78);font-size:14px;line-height:1.65}
#page-scholarship .sch-impact-grid article:hover img{transform:scale(1.025)}
/* 입학 */
#page-admission .adm-apply-panel{
  position:relative;isolation:isolate;overflow:hidden;
  min-height:420px;padding:34px;
  background:
    linear-gradient(180deg,rgba(25,12,15,.18),rgba(60,5,18,.88)),
    url('images/hero-21class-enhanced.png') center/cover no-repeat;
  color:#fff;
}
#page-admission .adm-apply-panel::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(135deg,rgba(200,16,46,.16),transparent 58%);
}
#page-admission .adm-apply-panel>span,
#page-admission .adm-apply-panel h3,
#page-admission .adm-apply-panel p,
#page-admission .adm-apply-panel small,
#page-admission .adm-apply-panel .adm-apply-primary{position:relative;z-index:1}
#page-admission .adm-apply-panel h3{margin-top:auto;padding-top:72px;color:#fff}
#page-admission .adm-apply-panel p{color:rgba(255,255,255,.84)}
#page-admission .adm-apply-panel small{color:rgba(255,255,255,.78)}
#page-admission .adm-process-title{margin-top:58px;font-family:var(--sans);font-size:32px!important;font-weight:600!important;line-height:1.28!important;letter-spacing:-.045em!important}
#page-admission .adm-class-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:52px;align-items:stretch}
#page-admission .adm-class-photo{min-height:100%;margin:0;border-radius:20px;overflow:hidden}
#page-admission .adm-class-photo img{width:100%;height:100%;min-height:440px;object-fit:cover;object-position:center}

/* 소식 글쓰기 — 검색창 오른쪽 */
#page-news .news-board-head{position:relative}
#page-news .news-board-head .news-board-search{padding-right:120px}
#page-news .news-board-head>.news-board-write{position:absolute;right:0;bottom:0}
#page-news .news-board-toolbar>.news-board-write{display:none!important}

/* KNA 과정 */
#page-kna-program .kna-experience-track li{padding-left:28px;padding-right:28px}
#page-kna-program .kna-experience-track li:first-child{padding-left:0}
#page-kna-program .kna-join{min-height:clamp(520px,48vw,760px);background-size:cover;background-position:center bottom}

/* 관리자 */
#page-admin-dashboard .dash-head{margin-bottom:0!important;gap:0!important}
#page-admin-dashboard .dash-head .member-page-title{margin-bottom:0!important;padding-bottom:20px}
#page-admin-dashboard .dash-tabs{width:max-content;max-width:100%;margin-bottom:24px;padding:0 30px;overflow-x:auto;background:#fff5f5!important;border-radius:2999px!important;gap:24px}
#page-admin-dashboard #dashPanel-posts .dash-toolbar{gap:10px;padding:10px 0;background:transparent}
#page-admin-dashboard #dashPanel-posts .dash-toolbar input,
#page-admin-dashboard #dashPanel-posts .dash-toolbar select{min-height:42px;padding:0 16px;border:1px solid #eadfe1;border-radius:var(--r-field);background:#fff;color:var(--ink);font-size:13px;box-shadow:none}
#page-admin-dashboard #dashPanel-posts .dash-toolbar input:focus,
#page-admin-dashboard #dashPanel-posts .dash-toolbar select:focus{border-color:var(--crimson);outline:none;box-shadow:0 0 0 3px rgba(200,16,46,.08)}
#page-admin-dashboard .grant-table-box{background:#fff}
#page-admin-dashboard .grant-admin-table{table-layout:fixed}
#page-admin-dashboard .grant-admin-table th:nth-child(1){width:54px}
#page-admin-dashboard .grant-admin-table th:nth-child(2){width:14%}
#page-admin-dashboard .grant-admin-table th:nth-child(3){width:9%}
#page-admin-dashboard .grant-admin-table th:nth-child(4){width:23%}
#page-admin-dashboard .grant-admin-table th:nth-child(5){width:18%}
#page-admin-dashboard .grant-admin-table th:nth-child(6){width:14%}
#page-admin-dashboard .grant-admin-table th:nth-child(7){width:15%}
#page-admin-dashboard .grant-admin-table th,
#page-admin-dashboard .grant-admin-table td{vertical-align:middle}
#page-admin-dashboard .grant-admin-table td{overflow-wrap:anywhere}
#page-admin-dashboard #grantPicker input[type="checkbox"]{display:block;width:16px;height:16px;margin:0 auto;vertical-align:middle}
#page-admin-dashboard .grant-admin-table tr.is-picked td{background:#fff5f5}
#page-admin-dashboard .status-pill.일반{background:#f0f1f2;color:#555}

/* 관리자 메뉴 — 큰 분류 세 개를 먼저 고르고 그 아래에서 세부 업무를 고른다. */
#page-admin-dashboard .dash-tabs{
  display:flex!important;
  flex-direction:column;
  width:100%;
  padding:0;
  overflow:visible;
  border-radius:0!important;
  gap:12px;
  align-items:stretch!important;
  background:transparent!important;
}
#page-admin-dashboard .dash-menu-primary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:8px;border-radius:18px;background:#fff5f5}
#page-admin-dashboard .dash-group-tab{
  min-height:46px;padding:10px 14px;border:0;border-radius:12px;background:transparent;
  color:#775e64;font:700 14px var(--sans);cursor:pointer
}
#page-admin-dashboard .dash-group-tab.active{background:var(--crimson);color:#fff}
#page-admin-dashboard .dash-menu-secondary{padding:8px 31px;border-radius:14px;background:#fff5f5}
#page-admin-dashboard .dash-tab-list{display:none;flex-wrap:wrap;gap:5px}
#page-admin-dashboard .dash-tab-list.active{display:flex}
#page-admin-dashboard .dash-tab{padding:9px 12px;border-radius:10px;font-size:12.5px}
#page-admin-dashboard .dash-tab.active{background:#fff;color:var(--crimson)!important;box-shadow:inset 0 0 0 1px rgba(200,16,46,.28)}

#page-admin-dashboard .dash-event-calendar{margin-bottom:16px;padding:18px;border:1px solid #eadfe1;border-radius:18px;background:#fff}
#page-admin-dashboard .dash-event-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
#page-admin-dashboard .dash-event-cal-head h3{margin:0;font-size:18px;letter-spacing:-.03em}
#page-admin-dashboard .dash-cal-nav{width:36px;height:36px;border:0;border-radius:50%;background:#f5f1f2;color:var(--ink);cursor:pointer}
#page-admin-dashboard .dash-event-cal-week,#page-admin-dashboard .dash-event-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
#page-admin-dashboard .dash-event-cal-week span{padding:7px;text-align:center;color:var(--ink-soft);font-size:12px}
#page-admin-dashboard .dash-cal-day{min-height:86px;padding:8px;border-top:1px solid #eee;border-left:1px solid #eee;background:#fff;overflow:hidden}
#page-admin-dashboard .dash-cal-day:nth-child(7n){border-right:1px solid #eee}
#page-admin-dashboard .dash-cal-day b{display:block;margin-bottom:5px;font-size:12px;font-weight:600}
#page-admin-dashboard .dash-cal-day span{display:block;margin-top:3px;padding:4px 6px;border-radius:6px;background:#fff0f2;color:var(--crimson);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#page-admin-dashboard .dash-cal-day.is-today b{display:inline-grid;place-items:center;width:24px;height:24px;margin-top:-4px;border-radius:50%;background:var(--crimson);color:#fff}
#page-admin-dashboard .dash-cal-day.is-empty{background:#fafafa}

@media(max-width:640px){
  #page-admin-dashboard{padding-left:16px;padding-right:16px}
  #page-admin-dashboard .dash-group-tab{padding:9px 6px;font-size:13px}
  #page-admin-dashboard .dash-menu-secondary{padding-left:8px;padding-right:8px}
  #page-admin-dashboard .dash-tab-list.active{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  #page-admin-dashboard .dash-tab{width:100%;padding:10px 8px;white-space:normal;text-align:center}
  #page-admin-dashboard .dash-event-calendar{padding:12px;overflow-x:auto}
  #page-admin-dashboard .dash-event-cal-week,#page-admin-dashboard .dash-event-cal-grid{min-width:630px}
  .pigeon-tabs{grid-template-columns:1fr}
}
@media(max-width:380px){#page-admin-dashboard .dash-tab-list.active{grid-template-columns:1fr}}

/* 등재 검수 — 필터와 표의 모서리·제목 동작을 한 체계로 맞춘다. */
#page-admin-dashboard #dashPanel-posts .dash-toolbar{border-radius:14px}
#page-admin-dashboard #dashPanel-posts .dash-toolbar input,
#page-admin-dashboard #dashPanel-posts .dash-toolbar select{border-radius:var(--r-field)!important}
#page-admin-dashboard #dashPanel-posts .table-scroll{border-radius:14px;overflow:auto}
.post-title-preview{
  padding:0;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:650;
  line-height:1.5;text-align:left;text-decoration:underline;text-decoration-color:rgba(200,16,46,.25);
  text-underline-offset:3px;cursor:pointer
}
.post-title-preview:hover{color:var(--crimson);text-decoration-color:currentColor}

/* 글쓰기·수정 모달 — 분류와 대상은 나란한 드롭다운, 본문 입력은 같은 타이포 체계다. */
#postModal .post-meta{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;
  padding:0;margin-bottom:20px;background:#fff;border-radius:0
}
#postModal #postCategory,
#postModal .post-meta select,
#postModal .post-meta input[type="text"],
#postModal #postTitle{
  width:100%;min-height:48px;padding:0 15px;border:0;border-radius:var(--r-field)!important;
  background:#f2f2f2;color:var(--ink);font:500 15px/1.4 var(--sans)
}
#postModal #postCategory:focus,
#postModal .post-meta select:focus,
#postModal .post-meta input[type="text"]:focus,
#postModal #postTitle:focus{outline:0;box-shadow:inset 0 0 0 2px var(--crimson)}
#postModal .post-meta label{margin:0 0 7px;color:var(--ink-soft);font-size:12px;font-weight:650}
#postModal .post-category-field{min-width:0}
#postModal .post-category-field>label{display:block}
#postModal #eventField{grid-column:1 / -1}
#postModal label[for="postTitle"],#postModal label[for="postContent"],#postModal label[for="postPhoto"]{
  margin:16px 0 8px;font-size:13px;font-weight:700;line-height:1.4
}
#postModal #postModalTitle{font-family:var(--sans);font-weight:600}
#postModal .editor-bar{gap:0;padding:5px 6px}
#postModal .editor-bar button{height:28px;padding:0 5px;font-family:var(--sans)}
#postModal .editor-div{width:4px}
#postModal .btn-row{padding:0;margin-top:0;border-top:0;box-shadow:none}
#postModal .btn.kakao:disabled{opacity:.38;filter:grayscale(.55);cursor:not-allowed;transform:none}
#postModal .editor-foot{justify-content:flex-end}

@media(max-width:640px){
  #postModal .post-meta{grid-template-columns:1fr}
  #postModal #eventField{grid-column:auto}
  #postModal .editor-bar{position:sticky;top:0;display:flex;flex-wrap:nowrap;gap:0;padding:6px 4px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:none}
  #postModal .editor-bar::-webkit-scrollbar{display:none}
  #postModal .editor-bar button{flex:0 0 auto;height:30px;padding:0 7px;font-size:11.5px}
  #postModal .editor-div{display:none}
  #postModal .editor-sp{display:none}
  #postModal #postContent,#postModal .editor-preview{min-height:280px!important;height:34vh;padding:14px!important;font-size:15px!important;line-height:1.7}
  #postModal .btn-row{padding:0;margin-top:0;border:0;box-shadow:none}
}

/* 검수 대기 표 */
#pendingSection{padding:26px;background:#fff;border:1px solid var(--line-soft,#e5e0dc);border-radius:var(--r-card)}
#pendingList .pending-table{table-layout:fixed;margin-top:2px}
#pendingList .pending-table td{vertical-align:middle;overflow-wrap:anywhere}
#pendingList .pending-table .pending-title{font-weight:700;color:var(--ink);line-height:1.5}
#pendingList .pending-table-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.my-post-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.my-post-toolbar b{font-size:16px}
.my-post-toolbar select{min-height:40px;margin-left:auto;padding:0 38px 0 14px;border:1px solid #eadfe1;border-radius:var(--r-field);background:#fff;font:13px var(--sans)}
.my-post-toolbar>span{font-size:12px;color:var(--ink-soft)}
.my-posts-table{table-layout:fixed}
.my-posts-table th:nth-child(1){width:12%}.my-posts-table th:nth-child(2){width:16%}.my-posts-table th:nth-child(3){width:30%}.my-posts-table th:nth-child(4){width:12%}.my-posts-table th:nth-child(5){width:13%}.my-posts-table th:nth-child(6){width:17%}
.my-posts-table td{vertical-align:middle;overflow-wrap:anywhere}
.my-post-title small{display:block;margin-top:5px;color:var(--crimson);font-size:11.5px;font-weight:400}
.my-post-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}

/* 행사 — 달력 2/3, 일정 목록 1/3 */
#page-events .events-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:28px;align-items:start}
#page-events .events-calendar{padding:26px;border:1px solid var(--line-soft,#e5e0dc);border-radius:20px;background:#fff}
#page-events .event-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
#page-events .event-cal-head h3{margin:0;font-size:26px;letter-spacing:-.04em}
#page-events .event-cal-year{appearance:none;padding:4px 28px 4px 8px;border:1px solid transparent;border-radius:8px;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23c8102e' stroke-width='2.2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 7px center;color:var(--ink);font:inherit;font-weight:inherit;cursor:pointer}
#page-events .event-cal-head button{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:50%;background:#fff5f5;color:var(--crimson);font-size:18px;cursor:pointer}
#page-events .event-cal-week,#page-events .event-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
#page-events .event-cal-week{padding-bottom:10px;color:var(--ink-soft);font-size:12px;text-align:center}
#page-events .event-cal-day{min-height:104px;padding:10px;border-top:1px solid var(--line-soft,#e5e0dc);border-right:1px solid var(--line-soft,#e5e0dc);background:#fff}
#page-events .event-cal-day:nth-child(7n){border-right:0}
#page-events .event-cal-day>span{font-size:13px;font-weight:600}
#page-events .event-cal-day.outside>span{color:#bbb}
#page-events .event-cal-day.has-event{background:#fffafa}
#page-events .event-cal-day b{display:block;margin-top:7px;padding:5px 6px;border-radius:6px;background:var(--crimson);color:#fff;font-size:10.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#page-events .event-cal-day em{display:block;margin-top:4px;color:var(--crimson);font-size:10px;font-style:normal}
#page-events .events-agenda{padding:24px;border-radius:20px;background:#fff5f5}
#page-events .events-agenda>h3{margin:0 0 18px;font-size:22px}
#page-events .events-agenda .ev-card{background:#fff;padding:20px}
#page-events .events-agenda .ev-head h3{font-size:17px}
#page-events .events-agenda .ev-when{margin-bottom:16px}
#page-events .events-agenda .ev-register{width:100%;min-height:42px}
#page-events .events-agenda .ev-actions[hidden]{display:none}

/* 글쓰기 모달 */
#postModal .modal-box.wide{width:min(2080px,calc(100vw - 64px));max-width:none;max-height:calc(100dvh - 64px);overflow-y:auto;border-radius:24px;clip-path:inset(0 round 24px);scrollbar-gutter:stable;overscroll-behavior:contain}
#postModal #postModalTitle{font-size:36px!important;line-height:1.2;letter-spacing:-.045em}
#postModal #postContent{border:1px solid #c9c9c9!important;border-radius:10px;box-shadow:none!important}
#postModal #postContent:focus{border-color:var(--crimson)!important;box-shadow:0 0 0 1px var(--crimson)!important;outline:none}

@media(max-width:700px){
  #page-scholarship .sch-hero-layout{grid-template-columns:1fr;gap:30px}
  #page-scholarship .sch-hero-photo,#page-scholarship .sch-hero-photo img{min-height:360px}
  #page-scholarship .sch-impact-grid{grid-template-columns:1fr}
  #page-scholarship .sch-impact-grid article{min-height:360px}
  #page-admission .adm-apply-panel{min-height:340px;padding:26px 22px}
  #page-admission .adm-apply-panel h3{padding-top:48px}
  #page-admission .adm-class-grid{grid-template-columns:1fr;gap:28px}
  #page-admission .adm-class-photo img{min-height:280px}
  #page-news .news-board-head .news-board-search{padding-right:16px}
  #page-news .news-board-head>.news-board-write{position:static;margin:16px 0 0 auto}
  #page-events .events-layout{grid-template-columns:1fr}
  #page-events .events-calendar{padding:16px;overflow-x:auto}
  #page-events .event-cal-week,#page-events .event-cal-grid{min-width:650px}
  #postModal .modal-box.wide{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:18px;clip-path:inset(0 round 18px)}
  #postModal #postModalTitle{font-size:30px!important}
}

@media(max-width:760px){
  /* 좁은 화면에서는 탭이 여러 줄이 되어 띠가 화면 절반을 먹는다. 붙이지 않는다 */
  .board-toolbar,
  .sch-board-bar{position:static;padding-top:0}
}

/* ============================================================
   입학 안내 — 지원 배너와 항목 세 줄
   이 화면에 온 사람이 하려는 일은 «지원» 하나다. 그래서 지원 배너가 가장 위에
   폭을 다 쓰고 서고, 그 아래 제목 · 그 아래 항목 셋이 온다.
   한때 오른쪽 세로 패널이었는데 제목·자격과 자리를 다투느라 둘 다 좁았다.
   ============================================================ */
.adm-apply-banner{
  position:relative;display:flex;align-items:center;
  min-height:230px;padding:34px 38px;margin-bottom:64px;
  border-radius:var(--r-media);overflow:hidden;
  background:linear-gradient(90deg,rgba(12,10,11,.62),rgba(12,10,11,.24) 62%,rgba(12,10,11,.14)),
             url('images/hero-2.jpg') center 42%/cover no-repeat;
  color:#fff;text-decoration:none}
/* 눈금 — 어두운 사진 위라 면은 반투명 잉크다. 크림슨을 쓰면 단추와 강조가 둘이 된다 */
.adm-banner-badge{
  position:absolute;top:26px;left:38px;
  display:inline-flex;align-items:center;gap:5px;
  padding:7px 14px;border-radius:var(--r-pill);
  background:#d81818;
  font-size:13px;font-weight:600;letter-spacing:-.01em;color:#fff}
.adm-banner-badge b{font-weight:700}
.adm-banner-title{
  max-width:16ch;margin-top:26px;
  font-size:clamp(30px,3.4vw,42px);font-weight:700;line-height:1.25;letter-spacing:-.045em;
  text-shadow:0 2px 14px rgba(0,0,0,.28)}
/* 단추는 흰 알약이고 «화살표만» 크림슨 원이다 — 어두운 사진 위에서 크림슨 알약은 묻힌다 */
.adm-banner-cta{
  position:absolute;right:38px;bottom:50%;transform:translateY(50%);
  display:inline-flex;align-items:center;gap:14px;
  min-height:56px;padding:8px 8px 8px 26px;border-radius:var(--r-pill);
  background:#fff;color:var(--ink);font-size:17px;font-weight:600;letter-spacing:-.02em;
  transition:background .2s ease,color .2s ease}
.adm-banner-cta i{
  display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;
  border-radius:var(--r-round);background:var(--accent);color:#fff}
.adm-banner-cta i .act-ico{width:18px;height:18px;stroke-width:2}
.adm-apply-banner:hover .adm-banner-cta{background:var(--accent);color:#fff}
.adm-apply-banner:hover .adm-banner-cta i{background:#fff;color:var(--accent)}

/* 제목 — 배너 아래 혼자 선다. 계약의 display 단이다 */
#page-admission .adm-title{
  margin:0 0 46px;
  font-family:var(--sans);font-size:var(--t-display)!important;
  font-weight:600;line-height:var(--lh-title);letter-spacing:-.045em;color:var(--ink)}

/* 항목 세 줄 — 「이름 + 내용 두 칸」이 한 줄이다.
   **선은 줄과 줄 사이에만 긋는다.** 칸마다 두르면 표가 되고 이건 표가 아니다. */
.adm-rows{margin:0 0 8px}
.adm-row{
  display:grid;grid-template-columns:120px minmax(0,1fr) minmax(0,1fr);
  gap:0 44px;align-items:start;padding:30px 0;border-top:1px solid #e5e5e5}
.adm-row:last-child{border-bottom:1px solid #e5e5e5}
.adm-row dt{
  font-size:var(--t-body);font-weight:600;line-height:var(--lh-body);color:var(--ink)}
.adm-row dd{margin:0;min-width:0}
.adm-row dd p{
  margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);
  color:var(--ink-soft);letter-spacing:normal}
.adm-row dd p:last-child{margin-bottom:0}
.adm-row dd b{color:var(--ink);font-weight:600;margin-right:6px}
.adm-row dd a{color:var(--ink);text-decoration:none;font-weight:600}
.adm-row dd a:hover{color:var(--accent)}
.adm-row .apply-forms{margin:14px 0 0}

@media(max-width:900px){
  .adm-row{grid-template-columns:110px minmax(0,1fr);gap:0 28px}
  /* 두 칸이 한 칸으로 접히면 두 번째 내용은 이름 칸 아래가 아니라 «첫 칸 아래»로 간다 */
  .adm-row dd:nth-of-type(2){grid-column:2;margin-top:10px}
}
@media(max-width:760px){
  .adm-apply-banner{
    min-height:0;flex-direction:column;align-items:flex-start;
    padding:64px 22px 22px;margin-bottom:44px}
  .adm-banner-badge{top:20px;left:22px;font-size:12px;padding:6px 12px}
  .adm-banner-title{margin-top:0;font-size:26px}
  .adm-banner-cta{
    position:static;transform:none;width:100%;justify-content:space-between;
    margin-top:22px;min-height:52px;font-size:16px}
  #page-admission .adm-title{margin-bottom:34px}
  .adm-row{grid-template-columns:1fr;gap:0;padding:22px 0}
  .adm-row dt{margin-bottom:12px}
  .adm-row dd:nth-of-type(2){grid-column:1;margin-top:10px}
}

/* ============================================================
   장학 · 나눔활동 — 사업 안내 벤토
   넷을 탭으로 겹쳐 두던 자리다. 한 번에 하나만 보이면 「네 가지 실천」이
   화면에서 증명되지 않는다. 넷을 한눈에 펴되 **크기와 면을 다르게** 준다 —
   장학금 지원이 가장 크고(회칙 제4조가 첫머리에 두는 사업) 나머지가 옆에 붙는다.
   ============================================================ */
#page-scholarship .sch-bento{
  display:grid;
  grid-template-columns:minmax(0,1.12fr) minmax(0,.8fr) minmax(0,.8fr);
  grid-template-rows:repeat(2,minmax(210px,1fr));
  gap:14px}
/* 큰 칸은 왼쪽 한 줄을 통째로 쓴다 */
#page-scholarship .sch-bento .sb--lead{grid-row:1/3}

#page-scholarship .sb{
  position:relative;display:flex;overflow:hidden;
  border-radius:var(--r-card);min-width:0}
#page-scholarship .sb-body{
  position:relative;z-index:1;display:flex;flex-direction:column;
  width:100%;padding:24px 24px 22px}
/* 꼬리표는 맨 위 · 제목과 설명이 가운데 · 마지막 줄은 바닥에 붙는다.
   넷의 바닥 줄이 한 선에 서야 격자가 격자로 읽힌다. */
#page-scholarship .sb-tags{
  margin:0 0 auto;font-size:12px;font-weight:600;letter-spacing:.01em;
  color:var(--ink-soft);line-height:1.5}
#page-scholarship .sb h3{
  margin:18px 0 0;font-size:23px;font-weight:600;
  line-height:1.3;letter-spacing:-.035em;color:var(--ink)}
#page-scholarship .sb-desc{
  margin:10px 0 0;font-size:var(--t-data);line-height:var(--lh-body);
  letter-spacing:normal;color:var(--ink-soft);max-width:26em}
#page-scholarship .sb-foot{
  margin:22px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}

/* 크림슨 면 — 그 안에서는 강조가 흰색으로 뒤집힌다(어두운 배경 규칙 그대로) */
#page-scholarship .sb--fill{background:var(--accent)}
#page-scholarship .sb--fill h3{color:#fff}
#page-scholarship .sb--fill .sb-tags,
#page-scholarship .sb--fill .sb-desc,
#page-scholarship .sb--fill .sb-foot{color:rgba(255,255,255,.82)}

/* 옅은 크림슨 — 같은 색을 농도만 내려 쓴다. 새 색을 만들지 않는다 */
#page-scholarship .sb--tint{background:color-mix(in srgb,var(--accent) 11%,#fff)}
#page-scholarship .sb--tint .sb-tags{color:color-mix(in srgb,var(--accent) 72%,#000)}

/* 흰 판 — 흰 배경 위 흰 칸은 칸이 아니다. 회색 선 대신 옅은 면 테두리로 세운다 */
#page-scholarship .sb--plain{background:#fff;box-shadow:inset 0 0 0 1px #ececef}

/* 사진 칸 — 글자가 사진 위에 앉으므로 아래쪽에 스크림을 깐다 */
#page-scholarship .sb--photo{background:#20181a}
#page-scholarship .sb--photo img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform .5s cubic-bezier(.2,.7,.2,1)}
/* 두 사진 다 밝고 얼굴이 들어 있다. 위는 열어 두고 «글자가 앉는 아래쪽»만 확실히 눌러야
   사진도 살고 글도 읽힌다 — 한 겹으로 균일하게 덮으면 사진이 통째로 어두워진다. */
#page-scholarship .sb--photo::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,
    rgba(20,14,16,.04) 22%,
    rgba(20,14,16,.42) 52%,
    rgba(20,14,16,.88) 100%)}
/* 작은 사진 칸은 글자가 앉을 자리가 좁아 한 단 더 누른다 */
#page-scholarship .sb--photo:not(.sb--lead)::after{
  background:linear-gradient(180deg,
    rgba(20,14,16,.10) 12%,
    rgba(20,14,16,.58) 44%,
    rgba(20,14,16,.92) 100%)}
#page-scholarship .sb--photo .sb-body{justify-content:flex-end}
#page-scholarship .sb--photo .sb-tags{margin:0}
#page-scholarship .sb--photo h3,
#page-scholarship .sb--photo .sb-desc,
#page-scholarship .sb--photo .sb-foot{color:#fff}
#page-scholarship .sb--photo .sb-tags,
#page-scholarship .sb--photo .sb-desc,
#page-scholarship .sb--photo .sb-foot{color:rgba(255,255,255,.88)}
#page-scholarship .sb--photo .sb-body>*{text-shadow:0 1px 10px rgba(0,0,0,.35)}
#page-scholarship .sb--photo:hover img{transform:scale(1.03)}
/* 큰 칸은 글자도 한 단 크다 — 크기 차이가 곧 무게 차이다 */
#page-scholarship .sb--lead .sb-body{padding:30px}
#page-scholarship .sb--lead h3{font-size:clamp(30px,3vw,40px);margin-top:14px}
#page-scholarship .sb--lead .sb-desc{font-size:var(--t-body)}

/* 이 섹션만 「제목/내용 2열」 규칙에서 뺀다 — 격자가 폭을 다 써야 한다 */
#page-scholarship>.section#programs>.wrap{display:block}
#page-scholarship #programs .section-head{margin-bottom:38px;max-width:none}
#page-scholarship #programs .sch-note{margin-top:22px}

/* 운영 원칙 STEP 칸도 같은 모서리를 쓴다. 크림슨 윗줄은 걷는다 —
   네 칸이 순서일 뿐 상태가 아니라 선으로 강조할 이유가 없다 */
/* 이 섹션은 «.section.alt»(회색 면)다. 칸까지 --paper-2 로 두면 배경과 같은 색이라
   네 칸이 통째로 사라진다 — 흰 면으로 세운다. 카드가 카드로 보이는 최소 조건이다. */
#page-scholarship .sch-flow li{border-top:0;border-radius:var(--r-card);background:var(--white)}

@media(max-width:1000px){
  #page-scholarship .sch-bento{
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-rows:repeat(3,minmax(200px,auto))}
  #page-scholarship .sch-bento .sb--lead{grid-row:1;grid-column:1/-1;min-height:300px}
}
@media(max-width:700px){
  #page-scholarship .sch-bento{grid-template-columns:1fr;grid-template-rows:none}
  #page-scholarship .sch-bento .sb{min-height:240px}
  #page-scholarship .sch-bento .sb--lead{grid-column:auto;min-height:320px}
  #page-scholarship .sb-body,
  #page-scholarship .sb--lead .sb-body{padding:22px}
  #page-scholarship .sb--lead h3{font-size:28px}
}
